PN LAYOUT ; Fertig am 12.10.'91, ; mit ANLAY 29.12.'91 ZANF: EQU 00800H ALAY: EQU 00C00H BMEM: EQU 01000H LOAD: EQU 0E003H SAVE: EQU 0E006H PDR: EQU 050H PFL: EQU 052H ; ORG 00100H ; START: LD SP,090H XOR A OUT 018H LD (BTX),A LD (MVZ),A INC A LD (PIX),A LD HL,07C7CH LD (ALSP),HL LD HL,0EE00H LD (DPOS),HL RST 020H DB 2 DB 12 DB ' ' DB 'Layoutmaker' DB ' I.' DB 13 DB ' ' DB '***********' DB '*****' DB 13 DB 13 DB ' A - LINE' DB '-Anfang' DB 13 DB 13 DB ' E - LINE' DB '-Ende' DB 13 DB 13 DB ' Z - Zeich' DB 'nen/Löschen' DB 13 DB 13 DB ' K/k - kle' DB 'ines Loch' DB 13 DB 13 DB ' G/g - gro' DB 'ßes Loch' DB 13 DB 13 DB ' M/m - Punkt' DB 13 DB 13 DB ' V - Voll' DB 'grafik' DB 13 DB 13 DB ' W/w - Besch' DB 'riften' DB 13 DB 13 DB ' L - Lay' DB 'out laden' DB 13 DB 13 DB ' S - Lay' DB 'out saven' DB 13 DB 13 DB ' * - CLS' DB 13 DB 13 DB ' P/p - Hard' DB 'copy' DB 13 DB 13 DB ' N - Nach' DB 'bearbeitung' DB 08DH LD A,17 LD (XPS),A LD (YPS),A GETT: XOR A LD (BTX),A OUT 018H GET: LD A,(BTX) OR A CAZ GPOS CANZ CPOS RST 020H DB 1 PUSH AF LD A,(BTX) OR A CANZ CPOS POP AF IKOR: AND 07FH LD C,A CMP 060H JRC IGR-# AND 05FH IGR: LD B,A LD HL,CDTAB LD DE,UPTAB FNXT: LD A,M CMP 128 JRZ GETT-# CMP B JRZ STUP-# INC HL INC DE INC DE JR FNXT-# STUP: EX DE,HL LD E,M INC HL LD H,M LD L,E LD DE,GETB PUSH DE PUSH HL RET GETB: LD A,8 LD (BTX),A JR GET-# CDTAB: DB 'A','E','Z' DB 'K','G','M' DB 'V','W','*' DB 'L','S','P' DB 8,9,10,11,3 DB 'N' DA 128 UPTAB: DA ALIN DA ELIN DA ZEI DA KLEIN DA GROSS DA LOCH DA VOLL DA SCHR DA CLS DA PLOAD DA PSAVE DA PRSC DA LINK DA RECH DA DOWN DA BUP DA END DA ALAY LINK: LD HL,PPOS LD A,(MVZ) OR A JRNZ GLI-# LD A,(XPS) OR A JRZ OK4-# DEC A JRNC OK1-# OK4: LD A,35 OK1: LD (XPS),A RET RECH: LD HL,PPOS LD A,(MVZ) OR A JRNZ GRE-# LD A,(XPS) INC A CMP 36 JRC OK1-# XOR A JR OK1-# DOWN: LD HL,YPOS LD A,(MVZ) OR A JRNZ GLI-# LD A,(YPS) OR A JRZ OK3-# DEC A JR OK2-# OK3: LD A,35 OK2: LD (YPS),A RET BUP: LD HL,YPOS LD A,(MVZ) OR A JRNZ GRE-# LD A,(YPS) INC A CMP 36 JRC OK2-# XOR A JR OK2-# GLI: DEC M RET GRE: INC M RET END: LD A,0 OUT 018H RST 020H DB 2,08CH RST 038H ALIN: LD HL,(PPOS) LD (ALSP),HL RET ELIN: LD HL,(ALSP) LD (LANF),HL LD HL,(PPOS) LD (ALSP),HL LD (LEND),HL CALL LINE LD (PPOS),HL RET ZEI: LD A,(PIX) XOR 1 LD (PIX),A RET KLEIN: PUSH BC LD B,5 LD DE,KLS SSYM: CALL SYMB LD HL,PIX LD A,M LD M,0 CALL PIXEL LD M,A NPS: POP BC BIT 5,C JPZ RECH JMP DOWN GROSS: PUSH BC LD B,11 LD DE,GRS JR SSYM-# LOCH: PUSH BC CALL PIXEL JR NPS-# VOLL: LD A,(MVZ) XOR 1 LD (MVZ),A RET SCHR: LD HL,(DPOS) LD (02BH),HL LD A,C LD (LEND),A LD A,15 OUT 018H SCH2: RST 020H DB 1 CMP 01AH JRZ SZEI-# CMP 3 JRNZ GOPR-# LD HL,(02BH) LD (DPOS),HL LD HL,0EBFFH LD (02BH),HL RET SZEI: CALL ZEI JR SCH2-# GOPR: CALL PRINT JR SCH2-# PLOAD: LD HL,0EE80H CALL STS JMP BLOAD PSAVE: LD HL,0EEC0H CALL STS JMP BSAVE STS: LD (02BH),HL XOR A OUT 018H STS2: LD M,0 INC HL LD A,H CMP 0F0H RNC JR STS2-# PRSC: LD A,(PIX) PUSH AF LD A,1 BIT 5,C JRNZ KHC-# INC A KHC: LD (PIX),A CALL HCPY POP AF LD (PIX),A RET GPOS: PUSH AF LD HL,0EFE3H LD (02BH),HL RST 020H DB 2 DB 'Position: x' DB 0BDH LD A,(MVZ) OR A JRZ RAST-# LD A,(PPOS) RST 020H DB 6 RST 020H DB 2 DB 'H / y' DB 0BDH LD A,(YPOS) RST 020H DB 6 RST 020H DB 2,0C8H JR PFTG-# RAST: LD A,(XPS) CALL PDEZ RST 020H DB 2 DB ' / y' DB 0BDH LD A,(YPS) CALL PDEZ PFTG: LD HL,0EBFFH LD (02BH),HL POP AF RET PDEZ: LD B,A INC B XOR A KDAA: INC A DAA DJNZ KDAA-# RST 020H DB 6 RST 020H DB 2,0D2H RET CPOS: LD A,(MVZ) OR A CAZ CPSG LD B,9 LD DE,MSYM LD A,(PIX) PUSH AF LD A,2 LD (PIX),A CALL SYMB POP AF LD (PIX),A RET SYMB: LD A,(DE) INC DE LD (LANF),A CALL NPSET DJNZ SYMB-# RET CPSG: LD A,(XPS) CALL MPS LD (PPOS),A LD A,(YPS) CALL MPS LD (YPOS),A RET MPS: PUSH BC LD B,A LD C,0 DIV: INC C SUB 5 JRNC DIV-# DEC C LD A,B ADD A ADD A ADD A SUB B ADD C ADD 2 POP BC RET ; PIXEL: PUSH HL PUSH DE PUSH BC PUSH AF LD DE,(PPOS) CALL PIX1 POP AF POP BC POP DE POP HL RET PIX1: CALL ARG PRVG: PUSH AF LD A,(PIX) OR A JRZ PRES-# DEC A JRZ PSET-# PINV: POP AF XOR M LD M,A RET PRES: POP AF CPL AND M LD M,A RET PSET: POP AF OR M LD M,A RET ; HEX XX => 0x+x-y+y-....B NPSET: PUSH HL PUSH AF LD HL,(PPOS) LD A,(LANF) EPS: SLA A JRNC XNA-# INC L XNA: SLA A JRNC XNS-# DEC L XNS: SLA A JRNC YNA-# INC H YNA: SLA A JRNC YNS-# DEC H YNS: LD (PPOS),HL CALL PIXEL OR A JRNZ EPS-# POP AF POP HL RET ARG: LD A,E AND 7 LD B,A INC B SRL E SRL E SRL E LD L,E LD A,D CPL LD D,A AND 7 OR 8 OUT 018H LD A,D LD H,03BH RLA RL H RLA RL H AND 0E0H OR L LD L,A XOR A SCF BIT: RRA DJNZ BIT-# RET LINE: PUSH HL PUSH DE PUSH BC PUSH AF LD A,(YANF) LD L,A LD A,(YEND) LD E,A XOR A LD H,A LD D,A EXX LD H,A LD D,A LD A,(LANF) LD L,A LD A,(LEND) LD E,A LCHP: XOR A SBC HL,DE JRNC LMA1-# ADD HL,DE EX DE,HL EXX EX DE,HL EXX JR LCHP-# LMA1: EXX PUSH DE LRTG: SBC HL,DE JRNC LMA3-# ADD HL,DE EX DE,HL OR 1 JR LRTG-# LMA3: PUSH HL EXX POP BC PUSH HL SBC HL,BC POP HL PUSH BC JRNC LMA5-# EX (SP),HL OR 2 LMA5: PUSH HL LD B,H LD C,L EXX POP BC POP DE LD H,B LD L,C SRL H RR L EXX POP HL EX DE,HL DRAW: LD H,E LD (PPOS),HL LD H,D CALL PIXEL EXX AND A SBC HL,DE JRNC LMA6-# ADD HL,BC LMA6: EXX BIT 1,A JRNZ LMA7-# INC HL JRNC LMA8-# OR A LMA7: BIT 0,A INC DE JRZ LMA9-# DEC DE DEC DE LMA9: JRNC LMA8-# INC HL LMA8: EXAF LD A,B OR C JRZ LRET-# DEC BC EXAF JR DRAW-# LRET: POP AF POP BC POP DE POP HL RET CLS: LD A,8 CLS1: OUT 018H LD HL,0EC00H LD DE,0EC01H LD BC,00400H LD M,0 LDIR INC A CMP 010H JRC CLS1-# RET BSAVE: CALL READ XOR A OUT 018H LD HL,BMEM LD (01BH),HL LD DE,01FFFH ADD HL,DE LD (01DH),HL LD IY,0 LD (023H),IY CALL SAVE JMP START READ: LD HL,0EC00H LD DE,BMEM RE1: LD A,8 RE2: OUT 018H LD BC,32 PUSH HL LDIR POP HL INC A CMP 16 JRC RE2-# LD BC,32 ADD HL,BC LD A,H CMP 0F0H JRC RE1-# RET BLOAD: XOR A OUT 018H LD HL,BMEM LD (01BH),HL LD IY,0 LD A,'N' CALL LOAD CALL WRIT JMP START WRIT: LD HL,BMEM LD DE,0EC00H WR1: LD A,8 WR2: OUT 018H LD BC,32 PUSH DE LDIR POP DE INC A CMP 16 JRC WR2-# EX DE,HL LD BC,32 ADD HL,BC EX DE,HL LD A,D CMP 0F0H JRC WR1-# RET HCPY: LD A,(PIX) OR A RZ CMP 3 RNC LD HL,0EC00H LD A,15 OUT PDR+1 LD B,5 LD DE,DINI CALL INGT JR PRST-# NEXT: CALL OUTZ INC HL INC C LD A,(PIX) CMP 2 LD A,C JRNZ HCN-# CMP 64 JRZ PRST-# CMP 32 JRNZ NEXT-# LD DE,32 SBC HL,DE JR PRS2-# HCN: CMP 32 JRC NEXT-# PRST: LD C,0 PRS2: LD B,6 LD DE,ITAB LD A,H CMP 0F0H JRNC BRKS-# RST 020H DB 4 CMP 3 JRZ BRKS-# CALL INGT LD A,(PIX) CALL OUT JR NEXT-# BRKS: LD B,2 JR INGT-# OUTZ: LD E,C PUSH BC LD C,1 IGET: LD B,8 PDK3: LD A,16 SUB B OUT 018H PUSH BC LD A,M PDK2: RLA DEC C JRNZ PDK2-# RL D POP BC DJNZ PDK3-# LD A,(PIX) CMP 2 JRNZ PDN-# LD A,E CMP 32 JRNC UTHA-# SRL D SRL D SRL D SRL D UTHA: LD B,4 UT2: RRC D RRA RLC D RRA SRL D DJNZ UT2-# LD D,A CALL OUT PDN: LD A,D CALL OUT INC C LD A,C CMP 9 JRC IGET-# POP BC RET INGT: LD A,(DE) CALL OUT INC DE DJNZ INGT-# RET OUT: PUSH AF WAIT: IN PFL BIT 0,A JRNZ WAIT-# POP AF OUT PDR RET PRINT: PUSH HL PUSH DE PUSH BC PUSH AF AND 07FH CMP 14 CANC PRCA LD HL,(02BH) LD BC,32 SUB 8 JRNZ PN9-# DEC HL PREX: LD (02BH),HL LD A,H CMP 0F0H JRNC KK1-# CMP 0ECH JRC KK2-# PNE: POP AF POP BC POP DE POP HL RET KK1: LD H,0ECH JR PREX-# KK2: LD H,0EFH JR PREX-# PN9: DEC A JRNZ PNA-# INC HL JR PREX-# PNA: DEC A JRNZ PNB-# PNA2: ADD HL,BC JR PREX-# PNB: DEC A JRNZ PNC-# SBC HL,BC JR PREX-# PNC: DEC A JRZ PREX-# PND: DEC A JRNZ PNE-# LD A,L AND 0E0H LD L,A JR PNA2-# PRCA: LD HL,ZANF LD B,0 SLA A RL B RLA RL B RLA RL B LD C,A ADD HL,BC EX DE,HL LD HL,(02BH) LD C,8 NSVS: LD A,C CMP 16 JRC NS3-# LD A,(LEND) BIT 5,A LD A,9 RZ INC A RET NS3: OUT 018H LD A,(DE) CALL PRVG INC DE INC C JR NSVS-# DINI: DB 27,'3',24 DB 27,'O' ITAB: DB 10,13 IT2: DB 27,'*',5,0 MSYM: HEX 44,8A,21,98 HEX 45,12,6A,94 HEX 12 KLS: HEX 42,88,11,42 HEX 5A GRS: HEX 44,28,28,81 HEX 81,14,14,46 HEX 88,A4,21 MP1: DB ' ' MP2: DB ' ' DB ' ' DB ' ' PIX: DB 0 PPOS: DB 0 YPOS: DB 0 LANF: DB 0 YANF: DB 0 LEND: DB 0 YEND: DB 0 XPS: DB 0 YPS: DB 0 DPOS: DA 0 BTX: DB 0 MVZ: DB 0 ALSP: DA 0 END ; END