TITLE ZAPPLE SUBTTL Technical Design Labs' Zapple monitor .Z80 .PHASE 0F34BH SCRRAM EQU 0FBDCH RST7 EQU 38H BS EQU 8 ESC EQU 27 CR EQU 0DH LF EQU 0AH CLR EQU 0CH EXT SPEED,CURSOR,BOOT1,CONST,CONIN,CONINP,CONOUT EXT ENTER,UPFLAG ZAPPLE::LD HL,SCRRAM LD SP,HL EX DE,HL LD BC,23H LD HL,TE7A8 LDIR XOR A LD (UPFLAG),A DEC A LD (SPEED),A EX DE,HL LD BC,-5FH ADD HL,BC PUSH HL LD HL,0 LD B,10 AE05A: PUSH HL DJNZ AE05A AE05D: LD B,12 LD HL,TE021 AE440: LD C,(HL) INC HL CALL CONOTS DJNZ AE440 AE062: LD DE,AE062 PUSH DE CALL AE504 LD C,">" CALL CONOTS AE06E: CALL AE736 SUB "A" RET M CP "Z"-"A"+1 RET NC ADD A,A LD B,0 LD C,A LD HL,TE08A ADD HL,BC LD E,(HL) INC HL LD D,(HL) EX DE,HL LD C,2 JP (HL) TE021: DEFB CLR,"Zapple V1.2" TE08A: DEFW ERROR,BOOT1,ERROR,AE15D,ERROR,AE190,AE19D,AE571 DEFW ERROR,AE1EB,ERROR,ERROR,AE209,ERROR,ERROR,AE11D DEFW AE757,ERROR,AE2CD,AE2F6,ERROR,AE782,0,AE39E DEFW AE316,ERROR AE11D: CALL AE533 CALL AE504 POP HL AE124: CALL AE613 CP ESC JR Z,ABORT CP BS JR Z,AE138 LD (HL),A LD C,A INC HL CALL CONOTS JR AE124 ABORT: CALL AE504 JP AE473 AE138: DEC HL LD C,A CALL CONOTS PUSH HL LD HL,(CURSOR) LD (HL),0A0H POP HL JR AE124 AE14B: LD B,A CALL AE473 LD A,(HL) CALL PACC CALL AE476 LD A,B CALL PACC JP CRLF1 AE15D: CALL AE4FF AE160: CALL AE470 AE163: CALL AE476 LD A,(HL) CALL PACC CALL AE561 LD A,L AND 0FH JR NZ,AE163 JR AE160 AE190: CALL AE528 EX DE,HL OR A SBC HL,DE EX DE,HL LD (HL),C RET Z LD B,D LD C,E LD D,H LD E,L INC DE LDIR RET AE19D: CALL AE604 JR C,AE1E2 JR Z,AE1B4 CALL AE55A POP DE LD HL,34H ADD HL,SP LD (HL),D DEC HL LD (HL),E LD A,B CP CR JR Z,AE1E2 AE1B4: LD D,2 LD HL,35H ADD HL,SP AE1BA: PUSH HL CALL AE533 LD E,B POP BC POP HL LD A,B OR C JR Z,AE1CF LD (HL),C INC HL LD (HL),B INC HL LD A,(BC) LD (HL),A INC HL LD A,0FFH LD (BC),A AE1CF: LD A,E CP CR JR Z,AE1D7 DEC D JR NZ,AE1BA AE1D7: LD A,0C3H LD (RST7),A LD HL,AE6BE LD (RST7+1),HL AE1E2: CALL AE504 POP DE LD HL,22 ADD HL,SP JP (HL) AE1EB: CALL AE4FF AE1EE: LD A,(HL) LD B,A CPL LD (HL),A XOR (HL) JR Z,AE203 PUSH DE LD D,B LD E,A CALL AE473 CALL AE769 CALL CRLF1 LD B,D POP DE AE203: LD (HL),B CALL AE561 JR AE1EE AE209: CALL AE528 PUSH DE EX DE,HL OR A SBC HL,DE INC HL PUSH HL EX DE,HL PUSH HL OR A SBC HL,BC POP HL JR NC,BKWARD POP HL PUSH HL DEC HL ADD HL,BC POP BC LD D,H LD E,L POP HL LDDR RET BKWARD: LD D,B LD E,C POP BC LDIR POP HL RET AE2CD: CALL AE533 POP HL CALL AE504 AE2D1: LD A,(HL) CALL PACC CALL AE5FF RET C JR Z,AE2EA CP BS JR Z,AE2F3 PUSH HL CALL AE55A POP DE POP HL LD (HL),E LD A,B CP CR RET Z AE2EA: INC HL AE2EB: LD A,L AND 7 CALL Z,AE470 JR AE2D1 AE2F3: DEC HL JR AE2EB AE2F6: CALL AE4FF AE2F9: CALL AE470 LD B,48 AE2FE: LD A,(HL) PUSH HL PUSH DE PUSH BC LD HL,(CURSOR) CALL ENTER SET 7,(HL) LD (CURSOR),HL POP BC POP DE POP HL CALL AE561 DJNZ AE2FE JR AE2F9 AE316: LD D,0 AE318: CALL AE533 POP HL LD H,L PUSH HL INC SP INC D LD A,B SUB CR JR NZ,AE318 LD B,A LD C,A LD H,A LD L,D DEC L ADD HL,SP PUSH HL PUSH BC AE32D: PUSH BC CALL CRLF1 POP BC AE332: POP HL POP IX LD E,D LD A,(IX+0) CPIR JP PO,AE359 PUSH IX PUSH HL AE341: DEC E JR Z,AE34F LD A,(IX-1) CP (HL) JR NZ,AE332 INC HL DEC IX JR AE341 AE34F: POP HL PUSH HL DEC HL PUSH BC CALL AE57D POP BC JR AE32D AE359: INC SP DEC E JR NZ,AE359 RET AE39E: CALL AE736 LD HL,TE7CB CP CR JR Z,AE402 CP "'" JR NZ,AE3B6 LD HL,TE7E7 CALL AE736 CP CR JR Z,AE402 AE3B6: CP (HL) JR Z,AE3C2 BIT 7,(HL) JP NZ,ERROR INC HL INC HL JR AE3B6 AE3C2: CALL AE476 AE3C5: INC HL LD A,(HL) LD B,A AND 3FH EX DE,HL LD L,A LD H,0 ADD HL,SP EX DE,HL INC HL LD A,(DE) CALL PACC BIT 7,B JR Z,AE3DE DEC DE LD A,(DE) CALL PACC AE3DE: CALL AE5FF RET C JR Z,AE3FD PUSH HL PUSH BC CALL AE55A POP HL POP AF PUSH BC PUSH AF LD A,L LD (DE),A POP BC BIT 7,B JR Z,AE3F7 INC DE LD A,H LD (DE),A AE3F7: POP BC POP HL LD A,B CP CR RET Z AE3FD: BIT 7,(HL) RET NZ JR AE3C5 AE402: CALL AE504 AE405: CALL AE476 LD A,(HL) INC HL OR A RET M LD C,A CALL CONOTS LD C,"=" CALL CONOTS LD A,(HL) LD B,A AND 3FH INC HL EX DE,HL LD L,A LD H,0 ADD HL,SP EX DE,HL BIT 6,B JR NZ,AE433 LD A,(DE) CALL PACC BIT 7,B JR Z,AE405 DEC DE LD A,(DE) AE42E: CALL PACC JR AE405 AE433: PUSH HL LD A,(DE) LD H,A DEC DE LD A,(DE) LD L,A LD A,(HL) POP HL JR AE42E ERROR: LD SP,SCRRAM-22 LD C,"*" CALL CONOTS JP AE062 AE470: CALL CRLF1 AE473: CALL AE57D AE476: LD C," " CONOTS::PUSH HL PUSH DE PUSH BC CALL CONOUT POP BC POP DE POP HL RET AE4FF: CALL AE535 POP DE POP HL AE504: LD C,CR CALL CONOTS LD C,LF JP CONOTS CRLF1: CALL AE504 CALL CONINP CP ESC RET NZ JR ERROR AE528: INC C CALL AE535 CALL AE504 POP BC POP DE POP HL RET AE533: LD C,1 AE535: LD HL,0 AE538: CALL AE736 AE53B: LD B,A CALL AE5D3 JR C,AE549 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL OR L LD L,A JR AE538 AE549: EX (SP),HL PUSH HL LD A,B CALL AE607 JR NC,AE553 DEC C RET Z AE553: JP NZ,ERROR DEC C JR NZ,AE535 RET AE55A: LD C,1 LD HL,0 JR AE53B AE561: CALL AE567 RET NC POP DE RET AE567: INC HL LD A,H OR L SCF RET Z LD A,E SUB L LD A,D SBC A,H RET AE571: CALL AE4FF PUSH HL ADD HL,DE CALL AE473 POP HL OR A SBC HL,DE AE57D: LD A,H CALL PACC LD A,L PACC:: PUSH AF RRCA RRCA RRCA RRCA CALL PRVAL POP AF PRVAL: AND 0FH ADD A,90H DAA ADC A,40H DAA LD C,A JP CONOTS AE5D3: SUB "0" RET C CP "G"-"0" CCF RET C CP 10 CCF RET NC SUB "A"-"9"-1 CP 0AH RET AE5FF: LD C,"-" CALL CONOTS AE604: CALL AE736 AE607: CP " " RET Z CP "," RET Z CP CR SCF RET Z CCF RET AE613: PUSH HL PUSH BC CALL CONIN POP BC POP HL RET AE6BE: PUSH HL PUSH DE PUSH BC PUSH AF LD HL,0AH ADD HL,SP LD B,4 EX DE,HL LD HL,SCRRAM AE6CD: DEC HL LD (HL),D DEC HL LD (HL),E POP DE DJNZ AE6CD POP BC DEC BC LD SP,HL LD HL,25H ADD HL,SP LD A,(HL) SUB C INC HL JR NZ,AE6E4 LD A,(HL) SUB B JR Z,AE6F0 AE6E4: INC HL INC HL LD A,(HL) SUB C JR NZ,AE6EF INC HL LD A,(HL) SUB B JR Z,AE6F0 AE6EF: INC BC AE6F0: LD HL,20H ADD HL,SP LD (HL),E INC HL LD (HL),D INC HL INC HL LD (HL),C INC HL LD (HL),B PUSH BC LD C,"@" CALL CONOTS POP HL CALL AE57D LD HL,25H ADD HL,SP LD BC,200H AE70D: LD E,(HL) LD (HL),C INC HL LD D,(HL) LD (HL),C INC HL LD A,E OR D JR Z,AE719 LD A,(HL) LD (DE),A AE719: INC HL DJNZ AE70D EX AF,AF' EXX PUSH HL PUSH DE PUSH BC PUSH AF PUSH IX PUSH IY LD A,I LD B,A LD A,R LD C,A PUSH BC JP AE062 AE736: CALL AE613 CP CR RET Z CP BS RET Z PUSH BC LD C,A CALL CONOTS LD A,C POP BC CP "A" RET C CP "z"+1 RET NC AE754: AND 5FH RET AE757: CALL AE736 CP "O" JR Z,AE77A CP "I" JP NZ,ERROR CALL AE533 POP BC IN E,(C) AE769: LD B,8 CALL AE476 AE76E: SLA E LD A,"0" SHR 1 ADC A,A LD C,A CALL CONOTS DJNZ AE76E RET AE77A: CALL AE535 POP DE POP BC OUT (C),E RET AE782: CALL AE528 AE785: LD A,(BC) CP (HL) JR Z,AE78E PUSH BC CALL AE14B POP BC AE78E: INC BC CALL AE561 JR AE785 TE7A8: POP BC LD A,C LD R,A LD A,B LD I,A POP IY POP IX POP AF POP BC POP DE POP HL EX AF,AF' EXX POP DE POP BC POP AF POP HL LD SP,HL NOP LD HL,0 JP 0 DEFW 0 DEFB 0 DEFW 0 DEFB 0 TE7CB: DEFB "A",15H,"B",13H,"C",12H,"D",11H,"E",10H,"F",14H DEFB "H",31H,"L",30H,"M",0F1H,"P",0B4H,"S",97H,"I",3 DEFB 80H TE7E7: DEFB "A",9,"B",0BH,"C",0AH,"D",0DH,"E",0CH,"F",8 DEFB "H",0FH,"L",0EH,"M",0CFH,"X",87H,"Y",85H,"R",2 DEFB 80H .DEPHASE END ZAPPLE