PN VOLLGRAFIK ORG 0E000H DEMO: CALL CLS LD HL,08080H LD (LANF),HL LD HL,03070H LD (LEND),HL CALL ELLY RST 038H ; TEILE: JMP PIXEL JMP NPSET JMP PTEST JMP LINE JMP ELLY ; JMP CLS JMP PRINT JMP PRST7 ; JMP LINK JMP RECH JMP TIEF JMP HOCH JMP FSL JMP FSR JMP FSD JMP FSU ; JMP MIRR JMP DREH JMP DOPP JMP JOYST JMP MAUS ; JMP HCPY JMP READ JMP WRIT JMP BSAVE JMP BLOAD PIX: DB 1 PPOS: DB 0 YPOS: DB 0 LANF: DB 0 YANF: DB 0 LEND: DB 0 YEND: DB 0 BMEM: DA 08000H ZANF: DA 0A000H ; 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 0XXH => 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 PTEST: CALL ARG LD C,M PM3: RLA JRC PM2-# RLC C JR PM3-# PM2: RLC C 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 ; ELLY: PUSH HL PUSH DE PUSH BC PUSH AF LD HL,(LANF) LD DE,(LEND) LD A,E EXX LD C,A ZUG: LD A,C CALL QUAD EX DE,HL EXX LD A,E EXX CALL QUAD OR A SBC HL,DE CALL SQR LD H,0 LD L,A EXX LD A,D EXX LD D,H LD E,A CALL MULT EXX LD A,E EXX LD D,0 LD E,A CALL DIV LD B,L EXX PUSH HL EXX POP HL ; LD D,B LD E,C ADD HL,DE LD (PPOS),HL ; CALL PIXEL OR A SBC HL,DE OR A SBC HL,DE LD (PPOS),HL ; CALL PIXEL LD D,0 ADD HL,DE ADD HL,DE LD (PPOS),HL ; CALL PIXEL OR A SBC HL,DE OR A SBC HL,DE LD D,B LD E,0 ADD HL,DE ADD HL,DE LD (PPOS),HL ; CALL PIXEL LD A,C SUB 1 LD C,A JRNC ZUG-# POP AF POP BC POP DE POP HL RET MULT: PUSH DE PUSH BC PUSH AF LD B,H LD C,L LD HL,0 MADD: LD A,D OR E JRZ MEX-# ADD HL,BC DEC DE JR MADD-# MEX: POP AF POP BC POP DE RET DIV: PUSH BC LD BC,0 DSUB: OR A SBC HL,DE JRC DEX-# INC BC JR DSUB-# DEX: ADD HL,DE SLA L RL H SBC HL,DE JRC DEX2-# INC BC DEX2: LD H,B LD L,C POP BC RET QUAD: PUSH DE PUSH BC LD B,A LD DE,1 LD HL,0 QADD: ADD HL,DE INC DE INC DE DJNZ QADD-# POP BC POP DE RET SQR: PUSH HL PUSH DE PUSH BC LD DE,1 LD C,0FFH SQS: INC C XOR A SBC HL,DE INC DE INC DE JRNC SQS-# ADD HL,DE DEC HL SLA L RL H SBC HL,DE JRC SQ2-# INC C SQ2: LD A,C POP BC POP DE POP HL 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 LINK: LD A,8 LS2: LD HL,0EC01H LD DE,0EC00H LD B,32 OUT 018H LS3: PUSH BC LD BC,31 LDIR DEC HL LD M,0 INC HL INC HL INC DE POP BC DJNZ LS3-# INC A CMP 010H JRC LS2-# RET RECH: LD A,8 RS2: LD HL,0EFFEH LD DE,0EFFFH LD B,32 OUT 018H RS3: PUSH BC LD BC,31 LDDR INC HL LD M,0 DEC HL DEC HL DEC DE POP BC DJNZ RS3-# INC A CMP 010H JRC RS2-# RET HOCH: LD A,8 HO2: OUT 018H LD HL,0EC20H LD DE,0EC00H LD BC,003E0H LDIR EX DE,HL LD B,32 DLZ: LD M,0 INC HL DJNZ DLZ-# INC A CMP 010H JRC HO2-# RET TIEF: LD A,8 TI2: OUT 018H LD HL,0EFDFH LD DE,0EFFFH LD BC,003E0H LDDR EX DE,HL LD B,32 DEZ: LD M,0 DEC HL DJNZ DEZ-# INC A CMP 010H JRC TI2-# RET MIRR: LD HL,0EC00H LD DE,0EFE0H CZEI: LD B,8 MZEI: LD A,7 ADD B PUSH AF OUT 018H LD A,(DE) LD C,A LD A,16 SUB B OUT 018H LD A,M LD M,C LD C,A POP AF OUT 018H LD A,C LD (DE),A INC HL INC DE LD A,L AND 01FH JRNZ MZEI-# PUSH BC LD BC,32 SBC HL,BC EX DE,HL SBC HL,BC EX DE,HL POP BC DJNZ MZEI-# LD BC,32 ADD HL,BC EX DE,HL SBC HL,BC EX DE,HL LD A,H CMP 0EEH JRC CZEI-# RET READ: LD DE,(BMEM) LD A,8 RE2: OUT 018H LD HL,0EC00H LD BC,00400H LDIR INC A CMP 16 JRC RE2-# RET WRIT: LD HL,(BMEM) LD A,8 WR2: OUT 018H LD DE,0EC00H LD BC,00400H LDIR INC A CMP 16 JRC WR2-# 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 JMP 0FFF4H BLOAD: LD IY,0 LD HL,(BMEM) LD (01BH),HL XOR A OUT 018H LD A,'N' CALL 0FFF1H JR WRIT-# DREH: LD HL,0 AT1: LD DE,MP1 LD B,H LD A,31 SUB H SUB L LD C,A CALL PUSH AT2: LD DE,MP2 LD A,H ADD L LD B,A LD C,H PUSH BC CALL PUSH AT3: LD DE,MP1 POP BC PUSH DE CALL DGET AT4: POP DE LD A,31 SUB H LD B,A LD A,H ADD L LD C,A PUSH BC CALL PUSH AT5: LD DE,MP2 POP BC PUSH DE CALL DGET AT6: POP DE LD A,31 SUB H LD C,A SUB L LD B,A PUSH BC CALL PUSH AT7: LD DE,MP1 POP BC CALL DGET AT8: LD DE,MP2 LD B,H LD A,31 SUB H SUB L LD C,A CALL DGET LOOP: INC L LD A,31 SUB H SUB H CMP L JRNZ AT1-# INC H LD L,0 LD A,H CMP 16 JRNZ AT1-# RET ZELL: PUSH DE LD HL,0EBE0H LD DE,32 INC B ZADD: ADD HL,DE DJNZ ZADD-# ADD HL,BC POP DE RET PUSH: PUSH HL CALL ZELL LD A,8 PUW: OUT 018H PUSH AF LD A,M LD (DE),A INC DE POP AF INC A CMP 16 JRC PUW-# POP HL RET DGET: PUSH HL CALL ZELL LD C,1 DG2: PUSH HL PUSH DE PUSH BC CALL DKV LD A,H POP BC POP DE POP HL PUSH AF LD A,16 SUB C OUT 018H POP AF LD M,A INC C LD A,C CMP 9 JRNZ DG2-# POP HL RET DKV: LD B,8 DK3: PUSH BC LD A,(DE) INC DE DK2: RLA DEC C JRNZ DK2-# RL H POP BC DJNZ DK3-# RET HCPY: LD A,(PIX) OR A RZ CMP 3 RNC LD HL,0EC00H LD A,15 OUT 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 2 BIT 4,A JRNZ WAIT-# POP AF OUT 0 RET DOPP: LD A,8 DO2: OUT 018H LD HL,0EC00H LD DE,0EE00H LD BC,00200H LDIR INC A CMP 010H JRC DO2-# RET FSL: LD C,8 FSL2: LD HL,0EC01H LD DE,0EC00H LD A,C CMP 16 RNC OUT 018H LD B,32 SCBL: PUSH BC CALL SCL POP BC DJNZ SCBL-# INC C JR FSL2-# SCL: LD B,31 SCL2: LD A,(DE) LD C,M RL C RLA LD (DE),A INC HL INC DE DJNZ SCL2-# LD A,(DE) RLA AND 0FEH LD (DE),A INC HL INC DE RET FSR: LD C,8 FSR2: LD HL,0EFFEH LD DE,0EFFFH LD A,C CMP 16 RNC OUT 018H LD B,32 SCBR: PUSH BC CALL SCR POP BC DJNZ SCBR-# INC C JR FSR2-# SCR: LD B,31 SCR2: LD A,(DE) LD C,M RR C RRA LD (DE),A DEC HL DEC DE DJNZ SCR2-# LD A,(DE) RRA AND 07FH LD (DE),A DEC HL DEC DE RET FSU: LD HL,0EC00H LD B,32 NZT: LD C,9 GZT: PUSH HL PUSH BC CALL STHI POP BC POP HL INC C LD A,C CMP 17 JRC GZT-# LD DE,32 ADD HL,DE DJNZ NZT-# SBC HL,DE CLZ2: LD B,32 CLZ: LD M,0 INC HL DJNZ CLZ-# RET STHI: LD A,C PUSH HL CMP 16 JRNZ GLZ-# LD DE,32 ADD HL,DE LD A,8 GLZ: CALL STZ POP DE DEC A CMP 7 JRNZ POPZ-# LD A,15 POPZ: LD HL,MP1 JR STPZ-# STZ: LD DE,MP1 STPZ: OUT 018H LD BC,32 LDIR RET FSD: LD HL,0EFE0H LD B,32 NZTD: LD C,14 GZTD: PUSH HL PUSH BC CALL STLO POP BC POP HL DEC C LD A,C CMP 6 JRNZ GZTD-# LD DE,32 SBC HL,DE DJNZ NZTD-# ADD HL,DE JR CLZ2-# STLO: LD A,C PUSH HL CMP 7 JRNZ GLZD-# LD DE,32 SBC HL,DE LD A,15 GLZD: CALL STZ POP DE INC A CMP 16 JRC POPZ-# LD A,8 JR POPZ-# PRST7: LD A,M AND 07FH CALL PRINT LD A,M INC HL OR A RZ CMP 080H RNC JR PRST7-# PRINT: PUSH HL PUSH DE PUSH BC PUSH AF CMP 14 CANC PRCA LD HL,(02BH) LD BC,32 SUB 8 JRNZ PN9-# DEC HL PREX: LD (02BH),HL PNE: POP AF POP BC POP DE POP HL RET 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 JRNZ PND-# CALL CLS LD HL,0EC00H JR 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,9 RET NS3: OUT 018H LD A,(DE) CALL PRVG INC DE INC C JR NSVS-# JOYST: PUSH HL PUSH BC LD HL,02500H CALL MJGET LD B,01FH NJOY: XOR A OUT 0 LD A,C CPL AND B POP BC POP HL RET MJGET: LD A,0CFH OUT 1 LD A,07FH OUT 1 CPL OUT 0 MJG2: IN 0 LD C,A WJG: IN 0 LD B,A CMP C RNZ DEC HL LD A,H OR L RZ JR WJG-# MAUS: PUSH HL PUSH BC LD HL,02000H CALL MJGET JRNZ MBW-# FTB: LD A,B AND 070H LD C,A JR NJOY-# MBW: LD A,C AND 01FH LD C,A LD A,B AND 01FH CMP C JRZ FTB-# JR FTB-# DINI: DB 27,'3',24 DB 27,'O' ITAB: DB 10,13 IT2: DB 27,'*',5,0 MP1: DB ' ' MP2: DB ' ' DB ' ' DB ' ' END ; END