; .Z80 .RADIX 16 PUAL: LD (GI9),HL POP HL PUSH AF PUSH BC PUSH DE PUSH IX PUSH IY EXX EX AF,AF' PUSH AF PUSH BC PUSH DE PUSH HL EX AF,AF' EXX PUSH HL LD HL,POAL EX (SP),HL PUSH HL LD HL,(GI9) RET POAL: EXX POP HL POP DE POP BC POP AF EXX EX AF,AF' POP IY POP IX POP DE POP BC POP AF RET GI9: DEFW 0 CALC: LD HL,(STKBOT) LD (STKEND),HL LD D,H LD E,L LD BC,0FFFB ADD HL,BC EXX EX (SP),HL EXX CALC1: LD (STKEND),DE EXX GI2: LD A,(HL) INC HL PUSH HL OR A JR Z,GI3 EXX LD BC,0FFFB LD D,H LD E,L ADD HL,BC EXX GI3: RLCA LD L,A LD DE,CATAB LD H,0 ADD HL,DE LD E,(HL) INC HL LD D,(HL) LD HL,CALC1 EX (SP),HL PUSH DE EXX CADEL: RET CATAB: DEFW CAZDV DEFW CAZAM DEFW CADEL DEFW L300F DEFW L30CA DEFW L31AF DEFW L3014 DEFW CAKON DEFW IPFP DEFW IFP DEFW RFP DEFW FPR DEFW FPBC DEFW SGN CAZDV: LD BC,5 LDIR RET CAZAM: LD B,5 GI4: LD A,(DE) LD C,(HL) EX DE,HL LD (DE),A LD (HL),C INC HL INC DE DJNZ GI4 EX DE,HL RET CAKON: POP AF OR A EXX GI5: EX (SP),HL EXX RET GI7: EXX LD E,(HL) INC HL LD D,(HL) INC HL PUSH DE EXX POP HL LD BC,5 EX DE,HL ADD HL,BC EX DE,HL RET SGN: EX DE,HL LD DE,1 INC HL RL (HL) DEC HL SBC A,A LD C,A CALL L2D8E EX DE,HL LD HL,5 ADD HL,DE EX DE,HL RET IFP: CALL GI7 LD A,(HL) INC HL LD H,(HL) LD L,A GI8: EX DE,HL LD (HL),0 INC HL LD A,D ADD A,A SBC A,A LD (HL),A INC HL LD (HL),E INC HL LD (HL),D INC HL LD (HL),0 INC HL LD D,H LD E,L OR A SBC HL,BC RET RFP: CALL GI7 LDIR GI16: LD HL,0FFFB ADD HL,DE RET IPFP: CALL GI7 JR GI8 FPR: CALL GI7 EX DE,HL OR A SBC HL,BC LDIR EX DE,HL JR GI16 FPBC: EX DE,HL CALL GIVE PUSH DE EXX POP BC EXX LD DE,(STKEND) JR GI16 GIVE: LD A,(HL) OR A JR Z,L2D7F SUB 081 LD DE,0 RET C INC A LD B,A INC HL LD D,(HL) INC HL LD E,(HL) LD A,D SET 7,D LD HL,0 GI1: EX DE,HL ADD HL,HL EX DE,HL ADC HL,HL DJNZ GI1 EX DE,HL RLA SBC A,A LD C,A OR A RET L346E: CALL L34E9 RET C LD B,0 LD A,(HL) AND A JR Z,L3483 INC HL LD A,B AND 080 OR (HL) RLA CCF RRA LD (HL),A DEC HL RET L3483: PUSH DE PUSH HL CALL L2D7F POP HL LD A,B OR C CPL LD C,A CALL L2D8E POP DE RET L34E9: PUSH HL PUSH BC LD B,A LD A,(HL) INC HL OR (HL) INC HL OR (HL) INC HL OR (HL) LD A,B POP BC POP HL RET NZ SCF RET L2D7F: INC HL LD C,(HL) INC HL LD A,(HL) XOR C SUB C LD E,A INC HL LD A,(HL) ADC A,C XOR C LD D,A RET L2D8E: PUSH HL LD (HL),0 INC HL LD (HL),C INC HL LD A,E XOR C L2D96: SUB C LD (HL),A INC HL LD A,D ADC A,C XOR C LD (HL),A L2D9D: INC HL LD (HL),0 POP HL RET ; L2F9B: LD A,(HL) LD (HL),0 AND A RET Z INC HL BIT 7,(HL) SET 7,(HL) DEC HL RET Z PUSH BC LD BC,5 ADD HL,BC LD B,C LD C,A SCF L2FAF: DEC HL LD A,(HL) CPL ADC A,0 LD (HL),A DJNZ L2FAF LD A,C POP BC RET L2FBA: PUSH HL PUSH AF LD C,(HL) INC HL LD B,(HL) LD (HL),A INC HL LD A,C LD C,(HL) PUSH BC INC HL LD C,(HL) INC HL LD B,(HL) EX DE,HL LD D,A LD E,(HL) PUSH DE INC HL LD D,(HL) INC HL LD E,(HL) PUSH DE EXX POP DE POP HL POP BC EXX INC HL LD D,(HL) INC HL LD E,(HL) POP AF POP HL RET L2FDD: AND A RET Z CP 021 JR NC,L2FF9 PUSH BC LD B,A L2FE5: EXX SRA L RR D RR E EXX RR D RR E DJNZ L2FE5 POP BC RET NC CALL L3004 RET NZ L2FF9: EXX XOR A L2FFB: LD L,0 LD D,A LD E,L EXX LD DE,0 RET L3004: INC E RET NZ INC D RET NZ EXX INC E JR NZ,L300D INC D L300D: EXX RET L300F: EX DE,HL CALL L346E EX DE,HL L3014: LD A,(DE) OR (HL) JR NZ,L303E PUSH DE INC HL PUSH HL INC HL LD E,(HL) INC HL LD D,(HL) INC HL INC HL INC HL LD A,(HL) INC HL LD C,(HL) INC HL LD B,(HL) POP HL EX DE,HL ADD HL,BC EX DE,HL ADC A,(HL) RRCA ADC A,0 JR NZ,L303C SBC A,A LD (HL),A INC HL LD (HL),E INC HL LD (HL),D DEC HL DEC HL DEC HL POP DE RET L303C: DEC HL POP DE L303E: CALL L3293 EXX PUSH HL EXX PUSH DE PUSH HL CALL L2F9B LD B,A EX DE,HL CALL L2F9B LD C,A CP B JR NC,L3055 LD A,B LD B,C EX DE,HL L3055: PUSH AF SUB B CALL L2FBA CALL L2FDD POP AF POP HL LD (HL),A PUSH HL LD L,B LD H,C ADD HL,DE EXX EX DE,HL ADC HL,BC EX DE,HL LD A,H ADC A,L LD L,A RRA XOR L EXX EX DE,HL POP HL RRA JR NC,L307C LD A,1 CALL L2FDD INC (HL) JR Z,L309F L307C: EXX LD A,L AND 080 EXX INC HL LD (HL),A DEC HL JR Z,L30A5 LD A,E NEG CCF LD E,A LD A,D CPL ADC A,0 LD D,A EXX LD A,E CPL ADC A,0 LD E,A LD A,D CPL ADC A,0 JR NC,L30A3 RRA EXX INC (HL) L309F: JP Z,L31AD EXX L30A3: LD D,A EXX L30A5: XOR A JP L3155 L30A9: PUSH BC LD B,010 LD A,H LD C,L LD HL,0 L30B1: ADD HL,HL JR C,L30BE RL C RLA JR NC,L30BC ADD HL,DE JR C,L30BE L30BC: DJNZ L30B1 L30BE: POP BC RET L30C0: CALL L34E9 RET C INC HL XOR (HL) SET 7,(HL) DEC HL RET L30CA: LD A,(DE) OR (HL) JR NZ,L30F0 PUSH DE PUSH HL PUSH DE CALL L2D7F EX DE,HL EX (SP),HL LD B,C CALL L2D7F LD A,B XOR C LD C,A POP HL CALL L30A9 EX DE,HL POP HL JR C,L30EF LD A,D OR E JR NZ,L30EA LD C,A L30EA: CALL L2D8E POP DE RET L30EF: POP DE L30F0: CALL L3293 XOR A CALL L30C0 RET C EXX PUSH HL EXX PUSH DE EX DE,HL CALL L30C0 EX DE,HL JR C,L315D PUSH HL CALL L2FBA LD A,B AND A SBC HL,HL EXX PUSH HL SBC HL,HL EXX LD B,021 JR L3125 L3114: JR NC,L311B ADD HL,DE EXX ADC HL,DE EXX L311B: EXX RR H RR L EXX RR H RR L L3125: EXX RR B RR C EXX RR C RRA DJNZ L3114 EX DE,HL EXX EX DE,HL EXX POP BC POP HL LD A,B ADD A,C JR NZ,L313B AND A L313B: DEC A CCF L313D: RLA CCF RRA JP P,L3146 JR NC,L31AD AND A L3146: INC A JR NZ,L3151 JR C,L3151 EXX BIT 7,D EXX JR NZ,L31AD L3151: LD (HL),A EXX LD A,B EXX L3155: JR NC,L316C LD A,(HL) AND A L3159: LD A,080 JR Z,L315E L315D: XOR A L315E: EXX AND D CALL L2FFB RLCA LD (HL),A JR C,L3195 INC HL LD (HL),A DEC HL JR L3195 L316C: LD B,020 L316E: EXX BIT 7,D EXX JR NZ,L3186 RLCA RL E RL D EXX RL E RL D EXX DEC (HL) JR Z,L3159 DJNZ L316E JR L315D L3186: RLA JR NC,L3195 CALL L3004 JR NZ,L3195 EXX LD D,080 EXX INC (HL) JR Z,L31AD L3195: PUSH HL INC HL EXX PUSH DE EXX POP BC LD A,B RLA RL (HL) RRA LD (HL),A INC HL LD (HL),C INC HL LD (HL),D INC HL LD (HL),E POP HL POP DE EXX POP HL EXX RET L31AD: JP CACHYB L31AF: CALL L3293 EX DE,HL XOR A CALL L30C0 JR C,L31AD EX DE,HL CALL L30C0 RET C EXX PUSH HL EXX PUSH DE PUSH HL CALL L2FBA EXX PUSH HL LD H,B LD L,C EXX LD H,C LD L,B XOR A LD B,0DF JR L31E2 L31D2: RLA RL C EXX RL C RL B EXX ADD HL,HL EXX ADC HL,HL EXX JR C,L31F2 L31E2: SBC HL,DE EXX SBC HL,DE EXX JR NC,L31F9 ADD HL,DE EXX ADC HL,DE EXX AND A JR L31FA L31F2: AND A SBC HL,DE EXX SBC HL,DE EXX L31F9: SCF L31FA: INC B JP M,L31D2 PUSH AF JR Z,L31E2 LD E,A LD D,C EXX LD E,C LD D,B POP AF RR B POP AF RR B EXX POP BC POP HL LD A,B SUB C JP L313D L3214: LD A,(HL) AND A RET Z CP 081 JR NC,L3221 LD (HL),0 LD A,020 JR L3272 L3221: CP 091 L323F: JR NC,L326D PUSH DE CPL ADD A,091 INC HL LD D,(HL) INC HL LD E,(HL) DEC HL DEC HL LD C,0 BIT 7,D JR Z,L3252 DEC C L3252: SET 7,D LD B,8 SUB B ADD A,B JR C,L325E LD E,D LD D,0 SUB B L325E: JR Z,L3267 LD B,A L3261: SRL D RR E DJNZ L3261 L3267: CALL L2D8E POP DE RET L326C: LD A,(HL) L326D: SUB 0A0 RET P NEG L3272: PUSH DE EX DE,HL DEC HL LD B,A SRL B SRL B SRL B JR Z,L3283 L327E: LD (HL),0 DEC HL DJNZ L327E L3283: AND 7 JR Z,L3290 LD B,A LD A,0FF L328A: SLA A DJNZ L328A AND (HL) LD (HL),A L3290: EX DE,HL POP DE RET L3293: CALL L3296 L3296: EX DE,HL L3297: LD A,(HL) AND A RET NZ PUSH DE CALL L2D7F XOR A INC HL LD (HL),A DEC HL LD (HL),A LD B,091 LD A,D AND A JR NZ,L32B1 OR E LD B,D JR Z,L32BD LD D,E LD E,B LD B,089 L32B1: EX DE,HL L32B2: DEC B ADD HL,HL JR NC,L32B2 RRC C RR H RR L EX DE,HL L32BD: DEC HL LD (HL),E DEC HL LD (HL),D DEC HL LD (HL),B POP DE RET EXPD: CALL PUAL PUSH HL LD DE,CC1 LD BC,8 LDIR CALL CALC DEFB 9 DEFW CC2 DEFB 9 DEFW CT1 DEFB 4 DEFB 9 DEFW CC1 DEFB 9 DEFW CT2 DEFB 4 DEFB 3 DEFB 9 DEFW CC1 DEFB 0 DEFB 4 DEFB 9 DEFW CT2 DEFB 4 DEFB 9 DEFW CC2 DEFB 0 DEFB 4 DEFB 9 DEFW CT1 DEFB 4 DEFB 3 DEFB 5 DEFB 0B DEFW CCB DEFB 9 DEFW CC1 DEFB 0 DEFB 4 DEFB 9 DEFW CT2 DEFB 4 DEFB 9 DEFW CC2 DEFB 0 DEFB 4 DEFB 9 DEFW CT1 DEFB 4 DEFB 3 DEFB 0 DEFB 4 DEFB 4 DEFB 9 DEFW CC1 DEFB 0 DEFB 4 DEFB 9 DEFW CC2 DEFB 0 DEFB 4 DEFB 4 DEFB 9 DEFW CT1 DEFB 8 DEFW 1 DEFB 9 DEFW CC2 DEFB 9 DEFW CC1 DEFB 5 DEFB 3 DEFB 4 DEFB 9 DEFW CT2 DEFB 8 DEFW 1 DEFB 9 DEFW CC1 DEFB 9 DEFW CC2 DEFB 5 DEFB 3 DEFB 4 DEFB 6 DEFB 4 DEFB 5 DEFB 0B DEFW CCA DEFB 7 POP HL RET CNTTIM: CALL PUAL LD (GI17),HL CALL CALC DEFB 8 GI17: DEFW 0 DEFB 0 DEFB 0 DEFB 4 DEFB 0A DEFW CCB DEFB 4 DEFB 6 DEFB 0A DEFW CCA DEFB 4 DEFB 0C DEFB 7 EXX PUSH BC EXX POP HL RET TIMCNT: CALL PUAL LD (GI18),HL CALL CALC DEFB 8 GI18: DEFW 0 DEFB 0A DEFW CCA DEFB 0A DEFW CCB DEFB 4 DEFB 5 DEFB 8 DEFW 1 DEFB 8 DEFW 4 DEFB 5 DEFB 0A DEFW CCB DEFB 0 DEFB 4 DEFB 5 DEFB 6 DEFB 0B DEFW GIOD DEFB 7 LD HL,0 LD (HR1),HL LD HL,07FFF GI14: LD (HR2),HL GI11: LD HL,(HR1) LD DE,(HR2) OR A INC HL SBC HL,DE ADD HL,DE JR Z,GI19 SCF SBC HL,DE ADD HL,DE JR Z,GI19 ADD HL,DE RR H RR L LD (GI12),HL CALL CALC DEFB 8 GI12: DEFW 0 DEFB 0 DEFB 4 DEFB 0A DEFW GIOD DEFB 3 DEFB 7 INC DE LD A,(DE) RLCA LD HL,(GI12) JR NC,GI14 LD (HR1),HL JR GI11 GI19: LD (GI13),HL CALL CALC DEFB 0A DEFW CCB DEFB 0D DEFB 8 GI13: DEFW 0 DEFB 4 DEFB 8 DEFW 1 DEFB 8 DEFW 2 DEFB 5 DEFB 0A DEFW CCB DEFB 5 DEFB 3 DEFB 0C DEFB 7 EXX PUSH BC EXX POP HL RET GIOD: DEFS 5 HR1: DEFW 0 HR2: DEFW 0 CC1: DEFW 0 CT1: DEFW 0 CC2: DEFW 0 CT2: DEFW 0 CCA: DEFS 5 CCB: DEFS 5 LSOF: DEFW 0 SW: DEFB 073 SSA: DEFB 0A SEA: DEFB 07D CPOSH: DEFW 0 KANAL: DEFB 1 POCSUB: DEFB 0 ACT: DEFB 0 ACT1: DEFB 0 PTYP: DEFB 0 ASC: AND 0F ADD A,090 DAA ADC A,040 DAA RET PHLHEX: LD A,H CALL PAHEX LD A,L PAHEX: PUSH AF RRCA RRCA RRCA RRCA CALL PBHEX POP AF PBHEX: CALL ASC PRNTC: PUSH HL LD HL,KANAL PUSH AF BIT 0,(HL) CALL NZ,PRNT POP AF BIT 2,(HL) CALL NZ,PMEM OR A BIT 1,(HL) CALL NZ,LP POP HL RET PRNTS: LD A,020 JR PRNTC BRKEY: LD A,0F8 OUT (0D0),A IN A,(0D1) AND 081 SCF RET Z OR A RET LP: PUSH BC LD C,A LD A,(PTYP) OR A JR NZ,A58 LD A,C CP 0A JR Z,A34 A58: XOR A OUT (0FE),A A33: CALL BRKEY JR C,A34 IN A,(0FE) RRCA JR C,A33 LD A,(PTYP) OR A LD A,C JR NZ,A57 CALL SM A57: OUT (0FF),A LD A,080 OUT (0FE),A A35: CALL BRKEY JR C,A34 IN A,(0FE) RRCA JR NC,A35 OR A A34: LD A,0 OUT (0FE),A LD A,C POP BC RET PMEM: LD (IX+0),A INC IX RET LETNL: PUSH HL LD HL,CPOSH JR A7 PRNT: CP 0D JR Z,LETNL CP 020 RET C CALL AVRAM CRIGHT: PUSH HL LD HL,CPOSH LD A,(HL) CP 04F JR NZ,A4 A7: LD (HL),0 INC HL LD A,(HL) CP 018 JR Z,A5 A4: INC (HL) POP HL RET AVRAM: PUSH BC PUSH DE PUSH HL LD HL,TBAD LD E,A LD D,0 ADD HL,DE LD L,(HL) LD H,2 ADD HL,HL ADD HL,HL ADD HL,HL EX DE,HL LD HL,(CPOSH) XOR A LD C,A LD A,H RRA RR C ADD A,H ADD A,H LD B,A LD H,080 ADD HL,BC IN A,(0E0) LD BC,0850 A3: LD A,(DE) LD (HL),A INC DE LD A,C ADD A,L LD L,A JR NC,A2 INC H A2: DJNZ A3 IN A,(0E1) POP HL POP DE POP BC RET A5: PUSH BC PUSH DE LD A,0F6 OUT (0D0),A A48: IN A,(0D1) AND 010 JR Z,A48 LD A,0F7 OUT (0D0),A IN A,(0D1) AND 020 JR NZ,A51 A49: CALL INKEY JR NZ,A49 A50: CALL INKEY JR Z,A50 A51: LD A,0F8 OUT (0D0),A LD HL,08500 LD DE,08501 LD BC,027F A8: IN A,(0CE) AND 040 JR Z,A8 A9: IN A,(0CE) AND 040 JR NZ,A9 IN A,(0E0) LD (HL),0 LDIR IN A,(0E1) LD HL,(LSOF) LD DE,00028 ADD HL,DE LD A,H CP 3 JR NZ,A6 LD A,L CP 098 JR NZ,A6 LD H,D LD L,D A6: LD (LSOF),HL A24: LD BC,06CF LD HL,SEA OTDR POP DE POP BC POP HL RET CLS: PUSH HL PUSH BC LD HL,0 LD (CPOSH),HL LD HL,08000 LD BC,03E7F A23: PUSH DE PUSH AF LD D,H LD E,L INC DE IN A,(0E0) LD (HL),L LDIR IN A,(0E1) LD (LSOF),BC POP AF JR A24 CLS2: PUSH HL PUSH BC LD HL,0200 LD (CPOSH),HL LD HL,08500 LD BC,0397F JR A23 SPRI: EX (SP),HL CALL SPR EX (SP),HL RET SPR: LD A,(HL) INC HL OR A RET Z CALL PRNTC JR SPR SPRD: LD A,(HL) INC HL CP 0D RET Z CALL PRNTC JR SPRD INKEY: PUSH BC PUSH DE PUSH HL LD B,7 A12: DEC C JR NZ,A12 DJNZ A12 LD C,0D0 LD DE,0F000 A13: OUT (C),D LD B,8 IN A,(0D1) A14: RRCA JR NC,A15 INC E DJNZ A14 INC D BIT 3,D JR Z,A13 A15: LD A,0F8 OUT (0D0),A IN A,(0D1) AND 081 JR Z,A16 BIT 6,E JR NZ,A18 RRCA JR C,A17 SET 6,E A17: LD D,0 LD HL,KBD ADD HL,DE LD A,(HL) JR A19 A18: XOR A A19: OR A POP HL POP DE POP BC RET A16: LD A,01B JR A19 CURON: PUSH AF LD A,040 LD (A25),A OUT (0D0),A CPL OUT (0D0),A POP AF BLIKC: PUSH AF PUSH HL IN A,(0D2) AND 040 L060B: LD HL,A25 XOR (HL) JR Z,L062C XOR (HL) LD (HL),A LD A,021 OUT (0CC),A LD A,0C8 CALL AVRAM LD A,081 OUT (0CC),A L062C: POP HL POP AF RET CUROF: PUSH AF PUSH HL LD A,040 JR L060B A25: DEFB 0 A27: DEFB 0,0 INP: PUSH HL CALL CURON L063A: LD HL,A27 CALL INKEY CALL BLIKC JR Z,L0676 CP (HL) JR NZ,L067E INC HL DEC (HL) JR NZ,L063A LD (HL),7 L064E: OR A CALL CUROF POP HL RET L0676: CALL INKEY CALL BLIKC JR Z,L0676 L067E: LD (HL),A INC HL LD (HL),02B JR L064E INL: OR A RET Z PUSH BC PUSH DE PUSH HL PUSH IX PUSH HL POP IX LD B,A LD C,0 LD A,5 LD (KANAL),A A41: CALL INP CP 0D JR Z,A44 CP 01B JR Z,A43 CP 017 JR NZ,A42 LD A,C OR A JR Z,A41 DEC C INC B DEC IX LD HL,CPOSH DEC (HL) LD A,020 CALL AVRAM JR A41 A42: CP 020 JR C,A41 INC B DEC B JR Z,A41 CALL PRNTC INC C DEC B JR A41 A43: SCF A44: LD (IX+0),0D LD A,1 LD (KANAL),A POP IX POP HL POP DE POP BC RET KBD: DEFB 0D,":",";",01C DEFB 013,0FC,01A,0 DEFB 0,0,0 DEFM "][@ZY" DEFM "XWVUTSRQ" DEFM "PONMLKJI" DEFM "HGFEDCBA" DEFM "87654321" DEFM ".,90 -^\" DEFM "/?" DEFB 014,013,011,012 DEFB 017,018 ; DEFB 0D,"*","+",01C DEFB 019,0FB,01A,0 DEFB 0,0,0,07D DEFB 07B,060,07A,079 DEFB 078,077,076,075 DEFB 074,073,072,071 DEFB 070,06F,06E,06D DEFB 06C,06B,06A,069 DEFB 068,067,066,065 DEFB 064,063,062,061 DEFM "('&%$#" DEFM '"!' DEFM "><)" DEFB 0FF DEFM " =" DEFB 07E,07C DEFM "_" DEFB 0C6 DEFB 014,013,011,012 DEFB 017,018 TBAD: DEFB 0F0,0F0,0F0,0F3 DEFB 0F0,0F5,0F0,0F0 DEFB 0F0,0F0,0F0,0F0 DEFB 0F0,0F0,0F0,0F0 DEFB 0F0,0C1,0C2,0C3 DEFB 0C4,0C5,0C6,0F0 DEFB 0F0,0F0,0F0,0F0 DEFB 0F0,0F0,0F0,0F0 DEFB 0,061,062,063 DEFB 064,065,066,067 DEFB 068,069,06B,06A DEFB 02F,02A,02E,02D DEFB 020,021,022,023 DEFB 024,025,026,027 DEFB 028,029,04F,02C DEFB 051,02B,057,049 DEFB 055,1,2,3 DEFB 4,5,6,7 DEFB 8,9,00A,00B DEFB 00C,00D,00E,00F DEFB 010,011,012,013 DEFB 014,015,016,017 DEFB 018,019,01A,052 DEFB 059,054,050,045 DEFB 0A4,081,082,083 DEFB 084,085,086,087 DEFB 088,089,08A,08B DEFB 08C,08D,08E,08F DEFB 090,091,092,093 DEFB 094,095,096,097 DEFB 098,099,09A,0BC DEFB 080,040,0A5,0C0 DEFB 040,0BD,09D,0B1 DEFB 0B5,0B9,0B4,09E DEFB 0B2,0B6,0BA,0BE DEFB 09F,0B3,0B7,0BB DEFB 0BF,0A3,085,0A4 DEFB 0A5,0A6,094,087 DEFB 088,09C,082,098 DEFB 084,092,090,083 DEFB 091,081,09A,097 DEFB 093,095,089,0A1 DEFB 0AF,08B,086,096 DEFB 0A2,0AB,0AA,08A DEFB 08E,0B0,0AD,08D DEFB 0A7,0A8,0A9,08F DEFB 08C,0AE,0AC,09B DEFB 0A0,099,0BC,0B8 DEFB 080,03B,03A,070 DEFB 03C,071,05A,03D DEFB 043,056,03F,01E DEFB 04A,01C,05D,03E DEFB 05C,01F,05F,05E DEFB 037,07B,07F,036 DEFB 07A,07E,033,04B DEFB 04C,01D,06C,05B DEFB 078,041,035,034 DEFB 074,030,038,075 DEFB 039,04D,06F,06E DEFB 032,077,076,072 DEFB 073,047,07C,053 DEFB 031,04E,06D,048 DEFB 046,07D,044,01B DEFB 058,079,042,060 ; TIMST: DI PUSH AF PUSH BC PUSH DE EX DE,HL LD C,0D7 LD HL,0A8C0 XOR A SBC HL,DE LD DE,0B074 OUT (C),E OUT (C),D DEC C OUT (C),L OUT (C),H DEC C LD DE,0A OUT (C),E OUT (C),D LD A,080 OUT (0D7),A INC C A28: IN E,(C) IN A,(C) CP H JR NZ,A28 LD A,E CP L JR NZ,A28 DEC C LD DE,03CFB OUT (C),E OUT (C),D POP DE POP BC POP AF EI RET TIMRD: DI PUSH AF PUSH DE LD A,080 OUT (0D7),A IN A,(0D6) LD E,A IN A,(0D6) LD D,A LD HL,0A8C0 OR A SBC HL,DE POP DE POP AF EI RET TBSM: DEFB 093,0A1,09A,09F DEFB 09C,092,0AA,097 DEFB 098,0A6,0AF,0A9 DEFB 0B8,0B3,0B0,0B7 DEFB 09E,0A0,09D,0A4 DEFB 096,0A5,0AB,0A3 DEFB 09B,0BD,0A2,0BE DEFB 0C0,080,094 SM: CP 060 RET C CP 07F JR C,A29 LD A,020 RET A29: PUSH HL LD HL,TBSM-060 ADD A,L LD L,A JR NC,A30 INC H A30: LD A,(HL) POP HL RET MS: PUSH BC PUSH DE PUSH HL LD HL,TBSM LD D,H LD E,L LD BC,SM-TBSM CPIR JR NZ,A31 SCF SBC HL,DE LD A,L ADD A,060 A31: CP 07F JR C,A32 LD A,020 A32: POP HL POP DE POP BC RET ; PHLD3: PUSH AF PUSH BC PUSH DE PUSH HL LD BC,0230 PUSH HL LD HL,TABDK+4 JR L08B2 PHLDEK: PUSH AF PUSH BC PUSH DE PUSH HL LD BC,0420 PUSH HL LD HL,TABDK L08B2: LD E,(HL) INC HL LD D,(HL) INC HL EX (SP),HL XOR A L08B8: SBC HL,DE INC A JR NC,L08B8 ADD HL,DE DEC A JR Z,L08C3 LD C,030 L08C3: ADD A,C CALL PRNTC EX (SP),HL DJNZ L08B2 POP HL LD A,L ADD A,030 CALL PRNTC POP HL POP DE POP BC POP AF RET TABDK: DEFW 02710 DEFW 03E8 DEFW 064 DEFW 0A ADRSUB: PUSH BC PUSH DE LD B,A LD A,(POCSUB) CP B LD A,B JR C,A45 LD HL,BUFFER INC B A46: DEC B JR Z,A45 LD DE,011 ADD HL,DE LD E,(HL) INC HL LD D,(HL) INC HL ADD HL,DE JR A46 A45: POP DE POP BC RET POCFLS: PUSH AF PUSH BC PUSH HL LD DE,011 ADD HL,DE LD C,(HL) INC HL LD B,(HL) INC HL LD A,B OR C LD E,D JR Z,A73 DEC DE LD A,0D A47: CPIR INC DE JP PE,A47 A73: POP HL POP BC POP AF RET MEMFRE: PUSH DE PUSH AF LD A,(POCSUB) CALL ADRSUB EX DE,HL LD HL,STACK SBC HL,DE POP AF POP DE RET HEX: SUB 030 RET C CP 0A CCF RET NC SUB 7 CP 010 CCF RET C CP 0A RET HLK10: PUSH DE LD D,H LD E,L ADD HL,HL ADD HL,HL ADD HL,DE ADD HL,HL POP DE RET INDEK: PUSH BC PUSH DE LD HL,PBUF LD A,3 CALL INL JR C,A52 EX DE,HL LD BC,0 LD H,B LD L,C A53: LD A,(DE) INC DE CP 0D JR Z,A52 CALL HEX JR C,A53 CALL HLK10 LD C,A ADD HL,BC JR A53 A52: POP DE POP BC RET RMD: DEFB 0 BLM: DEFB 1 SPEED: DEFW 0 OLD: DEFW 0 UADR: DEFW 0 URBUF: DEFM "TU JE VOLNE MIES" DEFM "TO PRE ZAKODOVAN" DEFM "IE ADRESY KUPUJU" DEFM "CEHO ALEBO LUBOV" DEFM "OLNE INE POUZITI" DEFM "DLZKA#005A" RHD: PUSH BC PUSH DE PUSH HL LD HL,CLER0 LD (F47+1),HL LD (F45+1),HL LD (F73+1),HL LD (F100+1),HL LD (H55+1),HL POP HL PUSH HL LD DE,0CC UR64: LD A,1 LD (BLM),A CALL RBL UR70: DEC A JR Z,UR64 INC A JR C,UR72 LD A,(RMD) OR A JP NZ,UR66 LD A,(HL) CP 0BB LD DE,012 JR Z,UR67 ADD HL,DE LD DE,URTT LD B,0D PUSH HL UR69: LD A,(DE) CP (HL) JR NZ,UR68 INC HL INC DE DJNZ UR69 LD HL,URBUF LD BC,05A LD DE,053 CALL RBL POP HL JR NC,UR71 POP HL PUSH HL LD DE,0CC JR UR70 UR71: LD A,3 LD (RMD),A LD DE,URBUF+04B LD A,(DE) SUB 5 INC DE CALL RDEL LD BC,0D EX DE,HL LD A,(HL) INC HL LD (BLM),A LDIR UR73: XOR A UR72: LD HL,CREATE LD (F47+1),HL LD HL,CLER LD (F45+1),HL LD (F73+1),HL LD (F100+1),HL LD (H55+1),HL POP HL POP DE POP BC RET UR68: POP HL JR UR73 UR67: LD A,4 LD (RMD),A LD (HL),1 ADD HL,DE LD D,H LD E,L LD BC,6 ADD HL,BC INC HL INC HL LDIR LD A,(DE) LD (BLM),A INC DE LD A,(DE) DEC DE CALL RDEL UR74: LD H,D LD L,E INC DE LD BC,067 LD (HL),B LDIR JR UR73 UR66: DEC A JR NZ,UR73 LD BC,0B ADD HL,BC LD D,H LD E,L LD BC,7 ADD HL,BC EX DE,HL DEC BC LDI DEC HL LD (HL),0D INC HL LDIR JR UR74 RDEL: PUSH DE PUSH HL ADD A,0E LD C,A LD B,0 LD A,011 LD HL,0CD1B CALL DEL POP HL POP DE RET DEL: LD DE,0 ADD HL,HL F74: EX DE,HL ADC HL,HL SBC HL,BC JR NC,F75 ADD HL,BC F75: CCF EX DE,HL ADC HL,HL DEC A JR NZ,F74 LD (SPEED),HL RET URTT: DEFB 05A,0,0,0D4 DEFB 0,0D4,05B,096 DEFB 0A5,09D,09A,0B7 DEFB 05D ;************************ MGF: PUSH AF F14: LD HL,0BE7F LD DE,0FFB0 LD B,0C8 IN A,(0E0) UR84: LD (HL),0 ADD HL,DE DJNZ UR84 IN A,(0E1) LD BC,06CF DEFB 0ED,071 IN A,(0D2) AND 010 JR Z,UL5 LD A,B OUT (0D3),A INC A OUT (0D3),A UL5: POP AF RET MGN: PUSH BC LD C,A LD A,0F8 OUT (0D0),A LD B,A UL6: IN A,(0D2) AND 010 JR NZ,UL7 LD A,6 OUT (0D3),A INC A OUT (0D3),A DJNZ UL6 CALL SPRI DEFB 0D,"P" DEFB 09D,092,0A4,0A4 DEFB " ",0 LD A,C OR A JR Z,UL8 CALL SPRI DEFM "PLAY!" DEFB 0D,0 JR UL9 UL8: CALL SPRI DEFM "RECORD!" DEFB 0D,0 UL9: IN A,(0D1) AND 081 JP Z,BRK IN A,(0D2) AND 010 JR Z,UL9 UL7: LD B,080 UL12: PUSH HL POP HL DEC C JR NZ,UL12 DJNZ UL12 POP BC RET CREATE: PUSH BC PUSH DE PUSH HL PUSH AF F15: LD HL,0BE7F LD DE,0FFB0 LD A,0C5 CP B JR NC,UR80 LD B,A UR80: INC B INC B IN A,(0E0) LD (HL),0FF UR81: ADD HL,DE LD (HL),099 DJNZ UR81 LD (HL),0FF IN A,(0E1) LD (UADR),HL POP AF POP HL POP DE POP BC RET CLER: PUSH AF PUSH HL LD A,0C5 CP B JR C,UR87 INC C DEC C LD A,5 JR NZ,UR85 LD HL,(UADR) F16: LD A,050 ADD A,L LD L,A JR NC,UR88 INC H UR88: LD (UADR),HL IN A,(0E0) LD (HL),081 IN A,(0E1) UR86: POP HL POP AF RET CLER0: PUSH AF PUSH HL PUSH HL POP HL UR87: LD A,6 UR85: DEC A JR NZ,UR85 JR UR86 FM4: CALL FM2;62/77 RET Z PUSH HL INC HL POP HL SUB 5 LD B,A FM2: CALL FM1;45/77 RET Z SUB 4 LD B,(HL) LD B,A NOP FM1: CALL F54;28/77 LD A,(HL) XOR 8 LD (HL),A LD A,B LD B,6 OUT (C),E INC E OR A RET F54: IN A,(0D2) AND D F56: RET Z DJNZ F54 RET RBIT: EXX ;53/106 LD B,C CALL FM1 JR Z,F61 LD B,0FB PUSH HL POP HL NOP NOP CALL FM1 EXX F5: CP 0 INC A DEC A RET F61: PUSH AF CALL FM1 POP AF EXX RET RBYTE: CALL RBYTE1 PUSH AF CALL RBIT IN A,(0D1) AND 081 JP Z,BRK POP AF RET RBYTE1: PUSH BC LD B,0FE F6: CALL RBIT JR NC,F7 INC IY F7: RL B JR C,F6 OR A LD A,B F8: POP BC RET FMERZ: EXX LD B,0FF CALL FM2 LD BC,0FCCF CALL FM1 EXX RET Z LD H,A EXX LD A,(HL) LD B,0FB JR F62 F62: CALL FM1 EXX RET Z LD E,A SUB L LD L,E JR NC,F63 NEG F63: CP 6 CCF RET C ADD IY,DE LD A,H LD E,A SUB C LD C,E JR NC,F64 NEG F64: CP 6 CCF RET C ADD IX,DE IN A,(0D1) AND 081 JP Z,BRK DJNZ FMERZ RET FLOA: LD (HL),A DEFB 0,0,0 CP (HL) JP NZ,CHR DEFB 0,0,0,0 RBL: DI EXX PUSH BC PUSH DE PUSH HL LD C,0CF LD D,020 LD HL,F56 EXX LD A,E CP 0CC JR NZ,F11 LD BC,080 F11: PUSH IX PUSH IY PUSH BC PUSH HL PUSH DE LD (OLD),SP LD A,B OR C JP Z,FOK LD A,D SUB 3 CALL MGN F47: CALL CREATE LD A,D CP 3 JP Z,SBL ADD A,A ADD A,A LD HL,FLOA LD BC,4 LD E,A LD D,B ADD HL,DE PUSH HL LD DE,MLOA LDIR POP HL PUSH HL LD DE,SLOA LD C,4 LDIR POP HL LD DE,CLOA LD C,4 LDIR W10: CALL W100 F65: LD HL,0 LD D,0FF IN A,(0D1) AND 081 JR Z,F96 F110: LD B,083 EXX LD B,0FF CALL FM2 LD BC,0FBCF CALL FM4 EXX JR Z,F91 LD E,A LD A,0FA F92: EXX JR F94 F94: LD B,A CALL FM4 EXX JR Z,F91 LD C,A SUB E LD E,C JR NC,F93 NEG F93: CP 6 JR NC,F65 ADD HL,DE IN A,(0D1) AND 081 F96: JP Z,BRK LD A,(HL) LD A,0F7 NOP DJNZ F92 LD (DIV+1),HL XOR A RL L ADC A,H NEG LD (F77+1),A LD (F112+1),A JP CPM F91: LD IX,0 LD IY,0 LD D,0FF EXX LD B,0FF CALL FM2 LD BC,0FCCF CALL FM1 PUSH AF LD B,0FC CALL FM1 EXX LD L,A POP AF LD C,A LD B,097 CALL FMERZ F97: JR C,F65 F95: JR Z,W10 LD B,L PUSH IX POP HL PUSH IY POP DE ADD HL,DE LD (DIV+1),HL XOR A RL L ADC A,H LD (FKZ+1),A LD L,B LD D,0FF LD B,0E9 CALL FMERZ JR C,F97 JR Z,F95 PUSH IX POP HL PUSH IY POP DE LD A,(FKZ+1) LD C,A EXX LD B,0FF CALL FM2 LD BC,0FCCF F66: CALL FM1 EXX JR Z,F95 CP H JR C,SHARP RLA CP C JP NC,SINCL EX DE,HL IN A,(0D1) AND 081 JP Z,BRK EXX LD B,0F9 ;231/33 LD A,(HL) LD A,(HL) JR F66 SHARP: XOR A LD (RMD),A RL L ADC A,H ZDSHP: LD (F5+1),A POP DE PUSH DE LD HL,01414 LD A,0CC CP E JR NZ,F67 ADD HL,HL F67: DEC H JP M,F65 F68: CALL RBIT JR C,F67 INC H DEC H JP NZ,F65 DEC L JR NZ,F68 POP DE POP HL POP BC PUSH BC PUSH HL PUSH DE CALL RBIT LD A,(BLM) LD E,A CALL RBIT F52: LD IY,0 F38: CALL RBYTE JR Z,CH F45: CALL CLER;184 MLOA: LD (HL),A DEFB 0,0,0 INC HL DEC BC LD A,B OR C JR NZ,F38 PUSH IY POP BC CALL RBYTE CP B JR NZ,CH CALL RBYTE1 CP C JR NZ,CH INC D DEC D F39: JR Z,F76 DEC E JR Z,F39 F40: LD A,E POP DE POP HL POP BC PUSH BC PUSH HL PUSH DE LD E,A CALL CREATE PUSH BC F41: EXX CALL F59 F42: LD B,010 F43: CALL RBIT JR Z,F41 JR C,F42 DJNZ F43 F44: CALL RBIT JR Z,F41 JR NC,F44 POP BC JR F52 CH: INC D DEC D JR NZ,CHR DEC E JR NZ,F40 CHR: LD A,1 JR F20 F76: LD HL,08DE7 LD D,018 DIV: LD BC,0000 LD A,B CPL LD B,A LD A,C CPL LD C,A INC BC LD A,D CALL DEL FOK: XOR A JR F17 BRK: LD A,2 F20: SCF F17: LD SP,(OLD) CALL MGF POP DE POP HL POP BC POP IY POP IX EXX POP HL POP DE POP BC EXX EI RET W100: EXX LD (HL),0C0 F59: IN A,(0D1) AND 081 JR Z,BRK IN A,(0D2) AND D JR Z,F59 F60: IN A,(0D1) AND 081 JR Z,BRK IN A,(0D2) AND D JR NZ,F60 LD E,A EXX RET SINCL: POP DE POP HL POP BC PUSH BC PUSH HL PUSH DE XOR A LD D,A INC A LD (RMD),A LD A,E CP 0CC SCF JR NZ,F72 LD BC,011 OR A F72: SBC A,A DEFB 0FD LD H,A EXX LD B,C CALL FM1 EXX JP Z,W10 LD A,0FA NOP CALL ZRBYTE DEFB 0FD CP H JP NZ,F65 LD A,0F7 F71: CALL ZRBYTE F73: CALL CLER SLOA: LD (HL),A DEFB 0,0,0 INC HL DEC BC LD A,B OR C LD A,0F0 JP NZ,F71 CALL ZRBYTE JP NZ,CHR LD HL,0D151 LD D,019 JP DIV ZRBYTE: LD E,1;77/178 F70: EXX LD B,A CALL FM2 EXX JP Z,CHR FKZ: CP 0 RL E LD A,0FA NOP JR NC,F70 IN A,(0D1) AND 081 JP Z,BRK LD A,E XOR D LD D,A LD A,E RET CRBIT: EXX ;21/61 F77: ADD A,0 LD B,A F78: DJNZ F78 IN A,(0D2) AND D LD B,A RLCA RLCA RLCA XOR E RRCA JR C,F80 LD A,B LD B,6 OUT (C),E INC E LD B,A F80: IN A,(0D2) AND D SUB B JR NZ,F81 IN A,(0D1) AND 081 JR NZ,F80 JP BRK F81: LD B,6 OUT (C),E INC E EXX F83: NOP RET CRBYTE: LD DE,07F;31/107 F111: EXX ;21 F112: ADD A,0 LD B,A F113: DJNZ F113 IN A,(0D2) AND D LD B,A RLCA RLCA RLCA XOR E RRCA JR C,F114 LD A,B LD B,6 OUT (C),E INC E LD B,A F114: IN A,(0D2) AND D SUB B JP NZ,F115 IN A,(0D1) AND 081 JP Z,BRK DEC C JP NZ,F114 JP CHR F115: LD BC,06CF OUT (C),E INC E EXX F116: NOP RR E LD A,0F8 NOP JR C,F111 ADD IY,DE LD A,E RET CPM: XOR A LD (F83),A LD (F116),A LD A,2 LD (RMD),A CALL CRBIT XOR A CALL CRBIT LD B,3 LD D,0 JP F84 F84: LD A,0F6 CALL CRBIT JR NC,F85 INC D F85: DJNZ F84 DEC D JR Z,F86 DEC D JP NZ,F91 LD A,0F3 JR F90 F86: LD A,03F LD (F83),A LD (F116),A LD A,0F2 F90: LD B,3 F87: CALL CRBIT JR NC,F88 LD A,0F6 NOP DJNZ F87 F89: JP F91 F88: LD A,0F7 CALL CRBIT JR NC,F89 LD A,0F7 NOP CALL CRBIT JR NC,F89 LD A,0F7 NOP CALL CRBIT JR NC,F88 POP DE POP HL POP BC PUSH BC PUSH HL PUSH DE LD A,0CC SUB E JR Z,F98 LD A,1 F98: DEFB 0DD LD H,A LD A,0EF NOP CALL CRBYTE;31+107 DEFB 0DD SUB H JP NZ,F91 LD IY,0 LD A,0F1 F99: CALL CRBYTE;31+107 F100: CALL CLER;184 CLOA: LD (HL),A DEFB 0,0,0 INC HL DEC BC LD A,B OR C LD A,0E0 NOP JP NZ,F99 PUSH IY POP BC LD A,0DD CALL CRBYTE;31+107 CP C F101: JP NZ,CHR LD A,(HL) LD A,0F2 CALL CRBYTE;31+107 CP B JR NZ,F101 LD HL,09F1F LD D,01A JP DIV ; CRT: RET ; WBIT: EXX ;88/52 PUSH AF HS1: ADD A,041 LD B,A H1: DJNZ H1 POP AF PUSH AF JR NC,H2 HS2: LD B,03F H3: DJNZ H3 NOP H2: LD A,B OUT (0D3),A INC A INC A OUT (0D3),A LD B,6 OUT (C),E INC E HS3: LD A,047 ADD A,0F6 LD B,A H4: DJNZ H4 POP AF PUSH AF LD A,B INC A JR NC,H5 HS4: LD B,03F H6: DJNZ H6 NOP H5: LD B,6 OUT (C),E INC E OUT (0D3),A INC A INC A OUT (0D3),A IN A,(0D1) AND 081 JP Z,BRK POP AF EXX RET WBYTE: SCF ;109/109 CALL WBIT LD A,0F3 DEC A H7: RL D RET Z CALL WBIT LD A,(HL) LD A,0F0 JR H8 H8: JR NC,H7 INC IY SUB 2 JR H7 SBL: PUSH HL LD HL,0157C LD A,0CC CP E JR NZ,H50 ADD HL,HL H50: LD A,0F1 CALL WBIT DEC HL LD A,H OR L JR NZ,H50 LD HL,01414 LD A,0CC XOR E JR NZ,H51 ADD HL,HL H51: LD A,0EF H54: CCF H52: CALL WBIT DEC H LD A,0F2 JR NZ,H52 LD H,L JR C,H54 CALL WBIT POP HL LD IY,0 LD A,0EF H53: LD D,(HL) CALL WBYTE H55: CALL CLER INC HL DEC BC LD A,B OR C LD A,0DB JR NZ,H53 PUSH IY POP BC LD A,0D9 LD D,B CALL WBYTE LD A,0ED LD D,C CALL WBYTE SCF LD A,0EF CALL WBIT JP FOK