; ; Reverse enginner of the Kaypro 2 81-292 EPROM ; Feb. 2006 rzh ; cr equ 0dh lf equ 0ah esc equ 1bh bel equ 7 bs equ 8 JP 4BH JP 244H JP 6DAH JP 13CH JP 296H JP 272H JP 28AH JP 279H JP 285H JP 2AAH JP 2C5H JP 536H JP 563H JP 572H JP 14FH JP 159H JP 164H JP 1A8H JP 1AEH JP 1B6H JP 1C6H JP 1D0H JP 1C0H JP 77DH JP 579H DI LD SP,0FFFFH LD B,0AH CALL 579H CALL 13CH CALL 6DAH CALL 244H JR 67H db 0c4h,24h,0ch db 0c2h,3ah,2bh db 7eh,0c9h CALL 0A80H db esc,'=*?*' db ' KAYPRO ' db '*',esc,'=-4' db ' Please place your' db ' diskette into Drive A' db bs,0 LD C,0 CALL 272H LD BC,0 CALL 28AH LD C,0 CALL 279H LD BC,0FA00H CALL 285H CALL 2AAH DI OR A JR NZ,10AH LD BC,(0FA02H) LD (0FB14H),BC LD BC,(0FA04H) PUSH BC LD BC,(0FA06H) LD B,C LD C,1 PUSH BC CALL 279H CALL 2AAH DI POP BC OR A JR NZ,10AH LD HL,(0FB14H) LD DE,80H ADD HL,DE LD (0FB14H),HL DEC B RET Z INC C LD A,'(' CP C JR NZ,0E0H LD C,10H PUSH BC LD BC,1 CALL 28AH POP BC JR 0E0H CALL 0A80H db cr,lf,lf,bel db 'I cannot read your' db ' diskette.',0 CALL 572H JR 131H db 18H,4,44H,3,0C1H,5 db 0E8H,1,0 LD A,0DFH OUT (14H),A LD C,7 CALL 147H LD C,0EH LD HL,133H LD B,9 OTIR RET IN A,(7) AND 1 LD A,0 RET Z LD A,0FFH RET CALL 14FH JR Z,159H IN A,(5) CALL 16EH RET IN A,(7) AND 4 JR Z,164H LD A,C OUT (5),A RET LD HL,183H LD BC,13H CPIR RET NZ LD DE,183H OR A SBC HL,DE LD DE,195H ADD HL,DE LD A,(HL) RET db 0F1H,0F2H,0F3H,0F4H db 0B1H,0C0H,0C1H,0C2H db 0D0H,0D1H,0D2H,0E1H db 0E2H,0E3H,0E4H,0D3H db 0C3H,0B2H,0FFH db 80H,81H,82H,83H db 84H,85H,86H,87H db 88H,89H,8AH,8BH db 8CH,8DH,8EH,8FH db 90H,91H IN A,(0EH) AND 1 JR 53H CALL 1A8H JR Z,1AEH IN A,(0CH) RET IN A,(0EH) AND 4 JR Z,1B6H LD A,C OUT (0CH),A RET IN A,(0FH) AND 4 JR 153H IN A,(14H) BIT 6,A LD A,0 RET NZ LD A,0FFH RET CALL 1C6H JR NZ,1D0H LD A,C OUT (18H),A IN A,(14H) RES 3,A OUT (14H),A SET 3,A OUT (14H),A RET dw 0,0,0,0 dw 0FE81H,0FDBEH dw 0FD20H,0FD30H db 0 dw 0,0,0,0 dw 0FE81H,0FDBEH dw 0FD4AH,0FD5AH db 0 dw 18 db 3 db 7 db 0 dw 82 dw 31 db 80H db 0 dw 8 dw 3 dw 40 db 3 db 7 db 0 dw 194 dw 63 db 0F0H db 0 dw 16 dw 1 db 1,6,11,16,3,8,13,18 db 5,10,15,2,7,12,17,4 db 9,14 dw 40 db 4 db 15 db 1 dw 196 dw 63 db 0C0H db 0 dw 16 dw 1 LD HL,61AH LD DE,0FDE5H LD BC,87H LDIR LD HL,1E3H LD DE,0FD8DH LD BC,52H LDIR XOR A LD (0FB09H),A LD (0FB0BH),A LD A,0 LD (0FD18H),A LD A,0FFH LD (0FD16H),A LD (0FD1AH),A LD (0FD1DH),A RET LD A,C LD (0FB00H),A JP 3DBH LD A,C LD (0FB03H),A LD A,(0FD18H) OR A JP NZ,528H RET LD (0FB14H),BC RET LD (0FB01H),BC LD A,(0FD18H) OR A JP NZ,503H RET LD A,(0FD18H) OR A JP NZ,4EDH LD A,(0FB0AH) OR A JP NZ,2A7H LD (0FB09H),A JP 4EDH LD A,(0FD18H) OR A JP NZ,0FDF4H XOR A LD (0FB0BH),A LD A,1 LD (0FB12H),A LD (0FB11H),A LD A,2 LD (0FB13H),A JP 337H LD A,(0FD18H) OR A JP NZ,0FE05H XOR A LD (0FB12H),A LD A,C LD (0FB13H),A CP 2 JP NZ,2F0H LD A,8 LD (0FB0BH),A LD A,(0FB00H) LD (0FB0CH),A LD HL,(0FB01H) LD (0FB0DH),HL LD A,(0FB03H) LD (0FB0FH),A LD A,(0FB0BH) OR A JP Z,32FH DEC A LD (0FB0BH),A LD A,(0FB00H) LD HL,0FB0CH CP (HL) JP NZ,32FH LD HL,0FB0DH CALL 3CFH JP NZ,32FH LD A,(0FB03H) LD HL,0FB0FH CP (HL) JP NZ,32FH INC (HL) LD A,(HL) CP '(' JP C,328H LD (HL),0 LD HL,(0FB0DH) INC HL LD (0FB0DH),HL XOR A LD (0FB11H),A JP 337H XOR A LD (0FB0BH),A INC A LD (0FB11H),A XOR A LD (0FB10H),A LD A,(0FB03H) OR A RRA OR A RRA LD (0FB08H),A LD HL,0FB09H LD A,(HL) LD (HL),1 OR A JP Z,373H LD A,(0FB00H) LD HL,0FB04H CP (HL) JP NZ,36CH LD HL,0FB05H CALL 3CFH JP NZ,36CH LD A,(0FB08H) LD HL,0FB07H CP (HL) JP Z,390H LD A,(0FB0AH) OR A CALL NZ,58DH LD A,(0FB00H) LD (0FB04H),A LD HL,(0FB01H) LD (0FB05H),HL LD A,(0FB08H) LD (0FB07H),A LD A,(0FB11H) OR A CALL NZ,5D5H XOR A LD (0FB0AH),A LD A,(0FB03H) AND 3 LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,0FB16H ADD HL,DE LD DE,(0FB14H) LD BC,80H LD A,(0FB12H) OR A JR NZ,3B6H LD A,1 LD (0FB0AH),A EX DE,HL CALL 0FDE5H LD A,(0FB13H) CP 1 LD A,(0FB10H) RET NZ OR A RET NZ XOR A LD (0FB0AH),A CALL 58DH LD A,(0FB10H) RET EX DE,HL LD HL,0FB01H LD A,(DE) CP (HL) RET NZ INC DE INC HL LD A,(DE) CP (HL) RET LD HL,0 LD A,C CP 2 RET NC OR A LD HL,0FD8DH JR Z,3EBH LD HL,0FD9EH LD A,(0FD16H) CP C RET Z LD A,C LD (0FD16H),A OR A PUSH HL LD HL,0FD17H LD DE,0FD1DH JR Z,401H LD DE,0FD1AH LD A,(DE) CP 0FFH JR Z,40DH PUSH BC LD BC,3 LDIR POP BC LD DE,0FD17H LD A,C OR A LD HL,0FD1AH JR Z,41AH LD HL,0FD1DH LD A,(HL) CP 0FFH JR Z,43FH LD BC,3 LDIR LD BC,0FH LD DE,0FDBEH LD HL,214H LD A,(0FD19H) OR A JR Z,436H LD HL,235H LDIR LD A,(0FD17H) OUT (11H),A POP HL RET POP HL LD A,0 LD (0FD18H),A CALL 541H CALL 296H CALL 4D4H JR Z,45EH LD A,20H LD (0FD18H),A CALL 541H CALL 4D4H RET NZ JR 4A5H PUSH HL PUSH DE LD DE,0 LD (HL),E INC HL LD (HL),D LD DE,9 ADD HL,DE LD DE,0FDBEH LD (HL),E INC HL LD (HL),D IN A,(14H) AND 0FBH OR 0 OUT (14H),A CALL 4D4H LD BC,0FH LD DE,0FDBEH LD HL,214H LD A,0 JR NZ,496H LD A,(0FDE1H) CP 0AH LD A,0 JR C,496H LD HL,235H LD A,0FFH LDIR LD (0FD19H),A IN A,(14H) AND 0FBH OR 4 OUT (14H),A JR 4BBH PUSH HL PUSH DE LD DE,0FDCDH LD (HL),E INC HL LD (HL),D LD DE,9 ADD HL,DE LD DE,0FDAFH LD (HL),E INC HL LD (HL),D LD A,0 JR 498H LD HL,0FD17H LD DE,0FD1AH LD A,(0FD16H) OR A JR Z,4CAH LD DE,0FD1DH PUSH BC LD BC,3 LDIR POP BC POP DE POP HL RET PUSH HL PUSH BC LD HL,0FDDFH LD BC,613H LD A,0C4H OUT (10H),A HALT INI JR NZ,4E0H CALL 585H BIT 4,A POP BC POP HL RET CALL 541H IN A,(14H) AND 0FBH OR 4 OUT (14H),A XOR A LD (0FD17H),A LD A,0 OUT (10H),A JP 585H CALL 541H LD B,4 LD A,(0FD19H) OR A JR Z,515H LD A,C RRA LD C,A JR NC,515H LD B,0 IN A,(14H) AND 0FBH OR B OUT (14H),A LD A,C LD (0FD17H),A OUT (13H),A LD A,10H OUT (10H),A JR 585H IN A,(14H) AND 4 CP 4 LD A,C JR Z,533H ADD A,0AH OUT (12H),A RET LD A,D OR E LD H,B LD L,C RET Z EX DE,HL ADD HL,BC LD L,(HL) LD H,0 RET PUSH HL PUSH DE PUSH BC LD A,0D0H OUT (10H),A CALL 563H LD A,(0FD16H) OR A JR NZ,553H LD A,2 LD E,A IN A,(14H) AND 0DCH OR E LD HL,0FD18H OR (HL) OUT (14H),A POP BC POP DE POP HL RET IN A,(14H) BIT 4,A RET NZ SET 4,A OUT (14H),A LD B,'2' CALL 579H RET IN A,(14H) RES 4,A OUT (14H),A RET LD DE,686H DEC DE LD A,D OR E JP NZ,57CH DJNZ 579H RET HALT IN A,(10H) BIT 0,A JR NZ,586H RET LD DE,40FH PUSH HL PUSH DE CALL 5F5H CALL 0FE0CH POP DE POP HL JR Z,5AEH DEC E JR Z,5A4H CALL 60BH JR 590H DEC D JR Z,5CCH CALL 4EDH LD E,0FH JR 590H LD L,3 LD B,0 LD A,88H OUT (10H),A HALT IN A,(13H) DJNZ 5B6H HALT IN A,(13H) DJNZ 5BBH CALL 585H AND 9CH JR Z,5CCH CALL 60BH XOR A DEC A LD (0FB10H),A RET Z DEC L JR NZ,5B0H JR 59CH LD DE,40FH PUSH DE CALL 5F5H CALL 0FDFBH LD (0FB10H),A POP DE RET Z DEC E JR Z,5ECH CALL 60BH JR 5D8H DEC D RET Z CALL 4EDH LD E,0FH JR 5D8H LD A,(0FB04H) LD C,A CALL 3DBH LD BC,(0FB05H) CALL 503H LD A,(0FB07H) LD C,A CALL 528H RET LD A,'~' OUT (10H),A CALL 585H LD A,'^' OUT (10H),A CALL 585H RET ; relocate to FDE5H (up to 6A1H) IN A,(14H) RES 7,A OUT (14H),A LDIR IN A,(14H) SET 7,A OUT (14H),A RET LD HL,(0FB14H) LD B,1 JR 635H LD HL,0FB16H LD B,4 LD DE,9C88H JR 649H LD HL,(0FB14H) LD B,1 JR 646H LD HL,0FB16H LD B,4 LD DE,0FCACH CALL 541H DI IN A,(14H) RES 7,A OUT (14H),A PUSH HL LD HL,66H LD A,(HL) EX AF,AF' LD (HL),0C9H POP HL LD A,B LD BC,8013H BIT 0,A JR NZ,666H LD B,0 CP 1 PUSH AF LD A,E CP 0ACH JR Z,67FH OUT (10H),A POP AF JR Z,678H HALT INI JR NZ,673H HALT INI JR NZ,678H JR 68EH OUT (10H),A POP AF JR Z,689H HALT OUTI JR NZ,684H HALT OUTI JR NZ,689H EX AF,AF' LD (66H),A IN A,(14H) SET 7,A OUT (14H),A EI CALL 585H AND D RET Z LD A,1 RET ; end of relocation CALL 6CAH JR 711H LD C,17H LD A,(0FD77H) AND 20H JR NZ,6B0H INC C LD A,(0FD75H) SUB C JR NC,6A1H NEG LD B,A LD DE,50H LD HL,0 ADD HL,DE DJNZ 6BFH PUSH HL CALL 6CAH POP BC ADD HL,BC JR 711H LD HL,50H LD DE,(0FD78H) LD A,(0FD76H) LD C,A XOR A LD B,A SBC HL,BC RET LD HL,0FD74H LD B,0CH XOR A LD (HL),A INC HL DJNZ 6E0H LD HL,76DH LD BC,101DH XOR A DEC C OUT (C),A INC A INC C OUTI JR NZ,6EBH LD A,1FH OUT (1CH),A CALL 75FH LD A,(0FD77H) AND 0F0H LD (0FD77H),A LD DE,(0FD78H) LD HL,7D0H AND 20H JR Z,711H LD HL,780H LD BC,1213H IN A,(1CH) OR A JP P,714H LD A,B OUT (1CH),A LD A,D AND 7 LD D,A OUT (1DH),A LD A,C OUT (1CH),A LD A,E OUT (1DH),A LD A,1FH OUT (1CH),A IN A,(1CH) OR A JP P,72DH LD A,20H OUT (1FH),A INC DE IN A,(1CH) OR A JP P,738H LD A,B OUT (1CH),A LD A,D OR 8 OUT (1DH),A LD A,C OUT (1CH),A LD A,E OUT (1DH),A LD A,1FH OUT (1CH),A IN A,(1CH) OR A JP P,750H XOR A OUT (1FH),A DEC HL LD A,H OR L JR NZ,714H RET XOR A LD (0FD76H),A LD (0FD75H),A LD HL,(0FD7AH) EX DE,HL JP 815H db 6AH,50H,56H,99H,19H,0AH db 19H,19H,78H,0FH,60H,0FH db 0,0,0,0 LD A,(0FD74H) OR A JP NZ,9CBH LD A,C OR A RET Z JP M,7AEH CP ' ' JP C,0A44H LD A,C LD DE,(0FD78H) CALL 998H CALL 9A4H LD A,(0FD76H) INC A CP 'P' JP NC,7F7H LD (0FD76H),A LD DE,(0FD78H) INC DE JP 815H LD A,(0FD77H) AND 10H JR Z,78FH LD A,(0FD8CH) AND '@' JR Z,7C3H LD A,C AND 1 LD (0FD8CH),A RET LD A,(0FD8CH) OR A LD A,C JR Z,7CBH CPL OR 80H LD DE,(0FD78H) CALL 998H LD A,(0FD8CH) LD C,A LD A,(0FD77H) OR C CALL 9A7H LD A,'@' LD (0FD8CH),A JR 79AH LD HL,(0FD78H) LD A,(0FD76H) LD E,A XOR A LD D,A LD (0FD76H),A SBC HL,DE EX DE,HL JR 815H CALL 7E6H LD A,(0FD75H) CP 17H JR C,809H CP 18H RET Z CALL 88AH JR 80DH INC A LD (0FD75H),A LD HL,(0FD78H) LD DE,50H ADD HL,DE EX DE,HL LD A,D AND 7 LD D,A EX DE,HL LD (0FD78H),HL LD BC,(0FD7AH) SBC HL,BC JR NC,829H LD DE,800H ADD HL,DE ADD HL,BC EX DE,HL LD BC,0E1CH JP 981H LD A,(0FD75H) CP 18H RET Z OR A RET Z DEC A LD (0FD75H),A LD HL,(0FD78H) LD DE,50H SBC HL,DE EX DE,HL JR 815H LD A,(0FD76H) OR A JR NZ,85DH LD A,(0FD75H) OR A RET Z CP 18H JR Z,868H DEC A LD (0FD75H),A LD A,50H DEC A LD (0FD76H),A LD DE,(0FD78H) DEC DE JR 815H LD A,4FH LD (0FD76H),A LD HL,(0FD78H) LD DE,4FH ADD HL,DE EX DE,HL JR 815H LD A,(0FD76H) CP 4FH JP NC,7F7H LD DE,(0FD78H) INC DE INC A LD (0FD76H),A JR 815H JP 0A8CH LD HL,0FD77H LD A,C SUB '0' JR Z,8ABH DEC A JR Z,8B0H DEC A JR Z,8B5H DEC A JR Z,8BAH DEC A JR Z,8BFH DEC A JR Z,8C9H DEC A JR Z,8D7H DEC A JR Z,8DEH RET LD A,(HL) OR 1 LD (HL),A RET LD A,(HL) OR 2 LD (HL),A RET LD A,(HL) OR 4 LD (HL),A RET LD A,(HL) OR 8 LD (HL),A RET LD C,60H LD A,0AH OUT (1CH),A LD A,C OUT (1FH),A RET LD A,(0FD77H) OR 10H LD (0FD77H),A LD A,40H LD (0FD8CH),A RET LD HL,(0FD75H) LD (0FD7DH),HL RET LD A,(0FD77H) OR 20H LD (0FD77H),A RET LD HL,0FD77H LD A,C SUB '0' JR Z,905H DEC A JR Z,90AH DEC A JR Z,90FH DEC A JR Z,914H DEC A JR Z,919H DEC A JR Z,91DH DEC A JR Z,922H DEC A JR Z,934H RET LD A,(HL) AND 0FEH LD (HL),A RET LD A,(HL) AND 0FDH LD (HL),A RET LD A,(HL) AND 0FBH LD (HL),A RET LD A,(HL) AND 0F7H LD (HL),A RET LD C,20H JR 8C1H LD A,(HL) AND 0EFH LD (HL),A RET LD HL,(0FD7DH) LD A,H ADD A,20H LD (0FD7FH),A LD A,L ADD A,20H LD (0FD81H),A JP 93DH LD A,(0FD77H) AND 0DFH LD (0FD77H),A RET LD HL,0 LD C,L LD A,(0FD81H) SUB 20H RET C LD B,A JR Z,953H CP 19H RET NC LD DE,50H ADD HL,DE DJNZ 950H LD E,A LD A,(0FD7FH) SUB 20H RET C CP 50H RET NC LD C,A LD (0FD76H),A LD A,E LD (0FD75H),A ADD HL,BC LD DE,(0FD7AH) ADD HL,DE EX DE,HL JP 815H LD BC,121CH CALL 981H DEC C LD A,1FH OUT (C),A IN A,(C) OR A JP P,97AH RET OUT (C),B INC C OUT (C),D DEC C INC B OUT (C),B INC C OUT (C),E RET ; unref'd LD A,D AND 7 LD D,A CALL 96FH IN A,(1FH) RET ; end unref'd PUSH AF LD A,D AND 7 LD D,A CALL 96FH POP AF OUT (1FH),A RET LD A,(0FD77H) PUSH HL PUSH AF CALL 9BFH CALL 96FH POP AF OUT (1FH),A EX DE,HL POP HL RET ; unref'd code PUSH HL CALL 9BFH CALL 992H EX DE,HL POP HL RET ; end unref'd LD HL,801H ADD HL,DE LD A,H AND 7 OR 8 LD H,A EX DE,HL RET LD HL,0FD74H LD (HL),0 CP 1 JR NZ,9EDH LD A,C AND 7FH CP 'R' JP Z,0C06H CP 'E' JP Z,0C9DH CP 'A' RET Z CP 'G' RET Z LD (0FD7CH),A LD (HL),2 RET CP 2 JR NZ,0A05H LD A,(0FD7CH) CP 'B' JP Z,88DH CP 'C' JP Z,8E7H LD A,C LD (0FD81H),A LD (HL),3 RET CP 3 JR NZ,0A22H LD A,C LD (0FD7FH),A LD A,(0FD7CH) CP '=' JP Z,93DH CP '*' JP Z,0DA1H CP ' ' JP Z,0DA8H LD (HL),4 RET CP 4 JR NZ,0A2DH LD A,C LD (0FD82H),A LD (HL),5 RET LD A,C LD (0FD80H),A LD A,(0FD7CH) CP 'L' JP Z,0F41H CP 'D' JP Z,0F48H RET LD C,4 JP 164H CP cr JP Z,7E6H CP lf JP Z,7FAH CP bel JR Z,0A3FH CP 18H JP Z,6A1H CP 17H JP Z,6A6H CP 1AH JP Z,6F8H CP bs JP Z,848H CP 0CH JP Z,877H CP 0BH JP Z,831H CP 1EH JP Z,75FH CP esc JP NZ,78FH LD A,1 LD (0FD74H),A RET POP HL ;prt msg. LD A,(HL) INC HL PUSH HL OR A RET Z LD C,A CALL 77DH JR 0A80H LD A,(0FD77H) AND 20H JR Z,0AC9H LD HL,(0FD7AH) LD DE,780H LD BC,50H ADD HL,DE LD A,H AND 7 LD H,A LD D,H LD E,L ADD HL,BC LD A,H AND 7 LD H,A EX DE,HL PUSH HL CALL 0AF0H POP DE LD HL,50H CALL 711H LD HL,(0FD7AH) LD DE,50H ADD HL,DE LD A,H AND 7 LD H,A LD (0FD7AH),HL EX DE,HL LD BC,0C1CH JP 981H LD HL,(0FD7AH) LD DE,50H ADD HL,DE LD A,H AND 7 LD H,A LD (0FD7AH),HL EX DE,HL LD BC,0C1CH CALL 981H LD HL,(0FD7AH) LD DE,780H ADD HL,DE LD A,H AND 7 LD H,A EX DE,HL LD HL,50H JP 711H LD A,B AND 7 OR C RET Z PUSH BC IN A,(1CH) OR A JP P,0AF6H LD BC,1213H LD A,B OUT (1CH),A LD A,H OUT (1DH),A LD A,C OUT (1CH),A LD A,L OUT (1DH),A LD A,1FH OUT (1CH),A IN A,(1CH) OR A JP P,0B0FH IN A,(1FH) EX AF,AF' LD A,B OUT (1CH),A LD A,D OUT (1DH),A LD A,C OUT (1CH),A LD A,E OUT (1DH),A LD A,1FH OUT (1CH),A EX AF,AF' OUT (1FH),A INC DE INC HL LD A,D AND 7 LD D,A LD A,H AND 7 LD H,A IN A,(1CH) OR A JP P,0B35H LD A,B OUT (1CH),A LD A,H OR 8 OUT (1DH),A LD A,C OUT (1CH),A LD A,L OUT (1DH),A LD A,1FH OUT (1CH),A IN A,(1CH) OR A JP P,0B4DH IN A,(1FH) EX AF,AF' LD A,B OUT (1CH),A LD A,D OR 8 OUT (1DH),A LD A,C OUT (1CH),A LD A,E OUT (1DH),A LD A,1FH OUT (1CH),A EX AF,AF' OUT (1FH),A POP BC DEC BC LD A,B OR C JP NZ,0AF5H JP 0BFFH LD A,B AND 7 OR C RET Z PUSH BC IN A,(1CH) OR A JP P,0B7BH LD BC,1213H LD A,B OUT (1CH),A LD A,H AND 7 OUT (1DH),A LD A,C OUT (1CH),A LD A,L OUT (1DH),A LD A,1FH OUT (1CH),A IN A,(1CH) OR A JP P,0B96H IN A,(1FH) EX AF,AF' LD A,B OUT (1CH),A LD A,D AND 7 OUT (1DH),A LD A,C OUT (1CH),A LD A,E OUT (1DH),A LD A,1FH OUT (1CH),A EX AF,AF' OUT (1FH),A INC DE INC HL LD A,D AND 7 LD D,A LD A,H AND 7 LD H,A IN A,(1CH) OR A JP P,0BBEH LD A,B OUT (1CH),A LD A,H OR 8 OUT (1DH),A LD A,C OUT (1CH),A LD A,L OUT (1DH),A LD A,1FH OUT (1CH),A IN A,(1CH) OR A JP P,0BD6H IN A,(1FH) EX AF,AF' LD A,B OUT (1CH),A LD A,D OR 8 OUT (1DH),A LD A,C OUT (1CH),A LD A,E OUT (1DH),A LD A,1FH OUT (1CH),A EX AF,AF' OUT (1FH),A POP BC DEC HL DEC HL DEC DE DEC DE DEC BC LD A,B OR C JP NZ,0B7AH IN A,(1CH) OR A JP P,0BFFH RET CALL 7E6H LD A,(0FD75H) OR A JP Z,0C4FH LD DE,(0FD78H) LD HL,50H CP 17H JP NC,711H CP 0BH JR NC,0C64H EX DE,HL LD BC,4FH ADD HL,BC LD A,H AND 7 LD H,A LD B,H LD C,L SBC HL,DE LD A,H AND 7 LD H,A PUSH HL LD DE,(0FD7AH) SBC HL,DE JR NC,0C5DH LD HL,800H OR A SBC HL,DE POP DE ADD HL,DE LD A,H AND 7 LD H,B LD B,A LD A,L LD L,C LD C,A EX DE,HL INC BC CALL 0B75H CALL 0A93H LD HL,(0FD78H) LD DE,50H ADD HL,DE EX DE,HL JP 815H LD D,B LD E,C LD B,H LD C,L POP HL JR 0C4BH ADD HL,DE LD A,H AND 7 LD D,A LD E,L LD HL,(0FD7AH) LD BC,780H ADD HL,BC LD A,H AND 7 LD H,A LD B,A LD C,L SBC HL,DE JR NC,0C82H LD HL,800H OR A SBC HL,DE ADD HL,BC LD B,H LD C,L LD HL,(0FD78H) EX DE,HL CALL 0AF0H LD HL,(0FD7AH) LD DE,730H ADD HL,DE LD A,H AND 7 LD D,A LD E,L LD HL,50H JP 711H LD A,(0FD75H) CP 0CH JP NC,0D4EH LD HL,(0FD7AH) LD DE,50H OR A SBC HL,DE LD A,H AND 7 LD H,A EX DE,HL LD BC,0C1CH CALL 981H LD HL,(0FD78H) LD BC,(0FD7AH) OR A SBC HL,BC JR NC,0CD4H LD HL,800H OR A SBC HL,BC LD A,H AND 7 LD H,A LD BC,(0FD78H) ADD HL,BC LD A,H AND 7 LD B,A LD C,L LD HL,80H ADD HL,BC LD A,H AND 7 LD B,A LD C,L LD HL,(0FD7AH) LD DE,730H ADD HL,DE LD A,H AND 7 LD H,A EX DE,HL LD HL,50H ADD HL,DE LD A,H AND 7 LD H,A CALL 0AF0H LD HL,(0FD78H) LD BC,50H OR A SBC HL,BC LD A,H AND 7 LD H,A EX DE,HL LD A,(0FD76H) LD C,A LD B,0 LD HL,50H SBC HL,BC PUSH DE PUSH HL CALL 711H POP BC PUSH BC LD HL,(0FD78H) LD A,(0FD76H) LD E,A LD D,0 OR A SBC HL,DE LD A,H AND 7 LD D,A LD E,L LD HL,(0FD78H) CALL 0AF0H POP BC LD HL,50H OR A SBC HL,BC CALL NZ,711H LD HL,(0FD7AH) LD BC,50H OR A SBC HL,BC LD A,H AND 7 LD H,A LD (0FD7AH),HL POP DE JP 815H SUB 16H JR Z,0D7CH JP NC,6A1H NEG PUSH AF LD HL,(0FD7AH) LD DE,72FH LD BC,50H ADD HL,DE LD A,H AND 7 LD D,A LD E,L ADD HL,BC LD A,H AND 7 LD H,A EX DE,HL POP AF PUSH HL LD HL,0 ADD HL,BC DEC A JR NZ,0D72H LD B,H LD C,L POP HL CALL 0B75H LD HL,(0FD78H) LD D,H LD E,L LD A,(0FD76H) LD C,A LD A,'P' SUB C LD C,A LD B,0 ADD HL,BC LD A,H AND 7 LD H,A EX DE,HL CALL 0AF0H LD A,(0FD76H) LD L,A LD H,0 OR A CALL NZ,711H JP 6A1H LD A,0 LD (0FD83H),A JR 0DADH LD A,0FFH LD (0FD83H),A LD A,(0FD7FH) SUB 20H LD E,A LD A,(0FD81H) SUB 20H LD D,A LD A,D CP 'd' RET NC AND 3 LD B,A LD A,D RRA RRA AND 3FH LD D,A LD A,E CP 0A0H RET NC RRCA LD E,A LD A,1 JR C,0DD1H ADD A,A INC B DEC B JR Z,0DDAH ADD A,A ADD A,A DEC B JR NZ,0DD5H LD (0FD85H),A LD A,E AND 7FH LD E,A LD HL,(0FD7AH) LD B,D LD C,E LD DE,50H INC B JR 0DEDH ADD HL,DE DJNZ 0DECH LD D,0 LD E,C ADD HL,DE LD A,H AND 7 LD D,A LD E,L LD (0FD86H),DE CALL 0E93H OR A JP M,0E08H CP ' ' RET NZ LD A,80H LD (0FD84H),A LD A,(0FD85H) OR A JP P,0E4AH LD DE,(0FD86H) CALL 0ED9H LD (0FD7CH),A AND 1 JR Z,0E37H LD A,(0FD83H) OR A RET Z LD A,(0FD7CH) AND 0FEH LD DE,(0FD86H) CALL 0ECBH LD A,(0FD84H) CPL JR 0E6EH LD A,(0FD83H) OR A RET NZ LD A,(0FD7CH) OR 1 CALL 0ECBH LD A,(0FD84H) CPL JR 0E6EH LD DE,(0FD86H) CALL 0ED9H AND 1 JR NZ,0E78H LD A,(0FD83H) OR A JR Z,0E66H LD A,(0FD85H) CPL LD B,A LD A,(0FD84H) AND B JR 0E6EH LD A,(0FD84H) LD B,A LD A,(0FD85H) OR B OR 80H LD DE,(0FD86H) CALL 0E9DH RET LD A,(0FD83H) OR A JR Z,0E88H LD A,(0FD85H) LD B,A LD A,(0FD84H) OR B JR 0E6EH LD A,(0FD85H) CPL LD B,A LD A,(0FD84H) AND B JR 0E6EH LD A,D AND 7 LD D,A CALL 0EA9H IN A,(1FH) RET PUSH AF LD A,D AND 7 LD D,A CALL 0EA9H POP AF OUT (1FH),A RET LD BC,121CH CALL 0EBBH DEC C LD A,1FH OUT (C),A IN A,(C) OR A JP P,0EB4H RET OUT (C),B INC C OUT (C),D DEC C INC B OUT (C),B INC C OUT (C),E RET LD A,(0FD77H) ;unref'd PUSH HL PUSH AF CALL 0EE3H CALL 0EA9H POP AF OUT (1FH),A EX DE,HL POP HL RET PUSH HL CALL 0EE3H CALL 0E97H EX DE,HL POP HL RET LD HL,801H ADD HL,DE LD A,H AND 7 OR 8 LD H,A EX DE,HL RET dw 0 LD A,E SUB 20H LD E,A LD A,D SUB 20H LD D,A SUB E RET Z JR NC,0EFFH NEG INC A RET LD HL,0 LD A,D OR A RET Z LD A,E OR A RET Z INC HL CP D JR C,0F10H LD A,D LD D,E LD E,0 LD B,H LD C,L ADD A,A JR NC,0F18H INC E ADD HL,BC JR C,0F2FH SUB D JR NC,0F2CH PUSH AF LD A,E OR A JR Z,0F28H POP AF LD E,0 JR 0F2CH POP AF ADD A,D JR 0F12H INC HL JR 0F12H SUB D JR NC,0F35H LD A,E OR A RET Z INC HL RET PUSH HL PUSH DE PUSH BC CALL 0DB9H POP BC POP DE POP HL RET LD A,0 LD (0FD83H),A JR 0F4FH LD A,0FFH LD (0FD83H),A JR 0F4FH LD DE,(0FD81H) CALL 0EF1H LD (0FD81H),DE LD (0FD8AH),A LD DE,(0FD7FH) CALL 0EF1H LD (0FD7FH),DE LD (0FD8BH),A LD D,A LD A,(0FD8AH) LD E,A CALL 0F01H LD A,(0FD81H) LD D,A LD A,(0FD82H) CP D LD A,0FFH JR C,0F81H LD A,1 LD (0FD88H),A LD A,(0FD7FH) LD E,A LD A,(0FD80H) CP E LD A,0FFH JR C,0F92H LD A,1 LD (0FD89H),A LD A,(0FD8AH) LD C,A LD A,(0FD8BH) CP C LD B,H LD C,L LD HL,0 JR C,0FBDH JR Z,0FD4H CALL 0F37H LD A,(0FD80H) CP E RET Z LD A,(0FD89H) ADD A,E LD E,A ADD HL,BC JR NC,0FA6H LD A,(0FD88H) ADD A,D LD D,A JR 0FA6H ; unref'd code CALL 0F37H LD A,(0FD82H) CP D RET Z LD A,(0FD88H) ADD A,D LD D,A ADD HL,BC JR NC,0FBDH LD A,(0FD89H) ADD A,E LD E,A JR 0FBDH ; end unref'd code CALL 0F37H LD A,(0FD82H) CP D RET Z LD A,(0FD88H) ADD A,D LD D,A LD A,(0FD89H) ADD A,E LD E,A JR 0FD4H db 0,0 db 0FFH,0FFH,0FFH,0FFH db 0FFH,0FFH,0FFH,0FFH db 0FFH,0FFH,0FFH,0FFH db 0FFH,0FFH,0FFH,0FFH db 0FFH,0FFH,0FFH,0FFH db 0FFH,0FFH END