; ; Rev. assem. of Plus2 ROMs 2/18/90 ; cr equ 13 lf equ 10 msbon equ 128 squote equ 27h ; ORG 0 ; JP 0054H JP 0429H ; diskint JP 0648H JP 03F3H JP 0889H ; home JP 08A6H ; seldisk JP 088BH ; settrk JP 0890H ; setsec JP 089EH ; setdma JP 0ADDH ; read JP 0B23H ; write JP 0895H ; sectran JP 0CC2H JP 0CF3H JP 04B7H ; const JP 04D8H ; conin JP 0724H JP 0629H JP 0637H JP 063FH JP 0647H JP 0647H JP 0631H JP 065BH ; conout JP 0DDFH JP 0625H ; getdt JP 05B3H JP 0BCAH ; clear buffer ; (for fergio??) DI XOR A DEC A JR NZ,56H LD BC,1000H LD H,A LD L,A LD D,A LD A,D ADD A,(HL) LD D,A INC HL DEC BC LD A,B OR C JR NZ,5FH OR D JR Z,0A9H LD HL,0434H JR 73H ; display 'ROM Err' LD HL,043BH ; display 'RAM Err' EXX LD A,17H OUT (14H),A LD HL,3000H ; blank out screen LD DE,3001H ; memory?? LD (HL),20H LD BC,0BFFH LDIR EXX LD BC,7 LD DE,3000H LDIR LD A,4FH OUT (1DH),A LD A,0E0H OUT (1CH),A LD A,0CFH OUT (1DH),A LD A,8 OUT (1DH),A LD D,9 DEC BC LD A,C ; stall 9x complete OR B ; decrement of BC JR NZ,0A0H DEC D JR NZ,0A0H RST 0 ; LD HL,0FFFFH LD (HL),0CH LD (HL),1DH LD (HL),2EH LD (HL),0FFH LD C,0ACH SCF EX AF,AF' LD HL,0F001H DEC L EX AF,AF' RL C EX AF,AF' LD (HL),C LD A,(HL) SUB C JR NZ,70H INC L INC L JR NZ,0BBH LD DE,0F001H LD BC,0FFEH LD (HL),0FFH LDIR INC (HL) JR NZ,70H LD HL,0F000H LD DE,0F001H LD BC,0FFEH LD (HL),L LDIR OR (HL) JR NZ,70H LD SP,0FFF0H LD HL,0DEBH LD DE,0F500H LD BC,0C7H LDIR CALL 03F3H CALL 0648H IN A,(1EH) EI XOR A LD C,A LD (0FF7AH),A OR 81H OUT (1CH),A CALL 28AH ; display (c) notice ADD A,C XOR A LD (0FF7AH),A LD HL,0BB8H LD B,2 CALL 0CDBH LD A,0 JP P,305H CALL 4B7H JR Z,109H CALL 4D8H ;wait for key entry CALL 28AH ;print menu here ; DB 'Boot ',1 DB 'Dump [adr]',1 DB 'Go ',1 DB 'Modify ',1 DB 'Port ',1 DB 'Xtnded mem tes' DB 't '+msbon ; LD SP,0FFF0H CALL 0CF3H CALL 2ADH DB 1,1,'*',' '+msbon CALL 2CDH ; get input LD HL,1AEH LD BC,7 CPIR JR NZ,1A1H CALL 4C7H ADD HL,BC ADD HL,BC ADD HL,BC LD E,(HL) INC HL LD D,(HL) EX DE,HL CALL 0FDF3H JR NC,178H CALL 2ADH DB 1,7,' what','?'+msbon JR 178H ; DB 'XPM?' DB 'GDB' ; DW 2FBH ;B DW 1C3H ;D DW 0F500H ;G DW 122H ;? DW 0F50CH ;M DW 2DBH ;P DW 0F52BH ;X ; CALL 02CDH ;D here LD DE,(0FFFCH) CP 0DH CALL NZ,023BH EX DE,HL LD D,10H CALL 02C7H PUSH HL CALL 04BFH CALL 04C7H LD B,10H CALL 0F5BDH INC HL CALL 04C4H LD A,B CP 09H CALL Z,04C7H DJNZ 01DEH POP HL CALL 04C7H LD B,10H CALL 0F5BDH INC HL RES 7,A CP 20H JR C,0201H CP 7FH JR C,0203H LD A,2EH CALL 04C9H DJNZ 01F3H LD (0FFFCH),HL DEC D JR NZ,01D2H RET CALL 04C4H CALL 02CDH CP 20H SCF RET Z CP 0DH JR Z,0227H CP 2BH JR Z,0227H CP 2DH JR NZ,022AH DEC HL DEC HL INC HL SCF RET CP 27H JR NZ,023BH CALL 04D8H LD E,A CALL 0650H XOR A LD D,A RET CALL 02CDH PUSH HL LD HL,0000H LD D,H LD C,A CALL 0266H JR C,0257H LD B,04H ADD HL,HL JR C,024FH DJNZ 0248H LD E,A ADD HL,DE JP C,01A1H CALL 02CDH JR 0240H EX DE,HL POP HL LD A,C CP 20H RET Z CP 0DH RET Z CP 2CH RET Z JP 0178H SUB 30H RET C CP 0AH CCF RET NC SUB 07H CP 0AH RET C CP 10H CCF RET PUSH AF RRCA RRCA RRCA RRCA CALL 027FH POP AF AND 0FH ADD A,90H DAA ADC A,40H DAA JP 04C9H CALL 02ADH DB lf,1,'Plus2 0.0' DB '1 ',1fh,1ch DB ' 1985 MICROCode' DB 1,81h EX (SP),HL LD A,(HL) AND 7FH PUSH AF CALL 0650H POP AF DEC A CALL Z,02C1H BIT 7,(HL) INC HL EX (SP),HL RET NZ JR 02ADH CALL 02ADH DB cr,lf+msbon RET CALL 02ADH DB 1,' '+msbon RET CALL 04D8H PUSH AF CALL 0650H POP AF CP 61H RET C SUB 20H RET CALL 0238H ;P here LD A,D ADD A,0FFH RET C LD L,E CALL 02C7H LD A,L CALL 04C4H LD C,L IN A,(C) CALL 020FH JR C,02E3H LD A,D OR A SCF RET NZ LD C,L OUT (C),E JR 02E3H CALL 02CDH ;B here SUB 41H RET C CP 04H CCF RET C LD HL,0178H PUSH HL LD C,A LD HL,0FF6CH LD (HL),C LD B,00H ADD HL,BC LD C,B LD (HL),C CALL 08A3H RLCA JR C,0313H JR NZ,0357H CALL 0889H LD HL,0FD00H LD (0FE71H),HL CALL 0890H CALL 0ADDH JR Z,033FH AND 10H JR Z,0357H LD A,13H LD (IX+25H),A CALL 08A3H LD C,01H CALL 088BH JR 0327H LD A,(IX+25H) RLCA AND (IX+21H) JR Z,034CH LD A,33H JR 0332H LD HL,(0FD00H) LD DE,0FE18H OR A SBC HL,DE JR Z,0376H CALL 02ADH DB 1,7,'< System? ','>'+msbon LD B,04H LD HL,0FF6FH LD (HL),B DEC (HL) DEC HL DJNZ 036CH LD (IX+25H),03H RET LD HL,0FD10H LD A,(HL) CP 0B7H JR NZ,0357H INC HL LD DE,0FF5DH LD BC,0007H LDIR LD E,70H LD C,08H LDIR LD E,7DH INC C LDI LD DE,0F867H LD C,0BFH LD A,04H LDI INC C EX DE,HL SBC HL,BC EX DE,HL DEC A JR NZ,0399H CALL 08A3H LD HL,(0FD02H) LD DE,(0FD06H) LD BC,0001H LD A,(IX+21H) XOR 20H RRCA AND (IX+25H) JR Z,03BCH INC B LD (0FF87H),BC LD (0FE71H),HL PUSH DE PUSH HL CALL 0ADDH POP HL LD DE,0080H ADD HL,DE POP DE DEC DE OR A JR NZ,0357H LD A,D OR E JR Z,03ECH LD BC,(0FF87H) INC C LD A,C SUB (IX+10H) JR C,03BCH INC B LD C,A OR (IX+21H) JR NZ,03BCH LD C,10H JR 03BCH LD HL,(0FD04H) PUSH HL JP 0FD8EH LD A,0FFH LD I,A IM 2 LD HL,0EB2H LD DE,0FD80H LD BC,014CH LDIR LD HL,0442H LD C,(HL) INC HL LD E,(HL) INC HL LD D,(HL) INC HL LDIR BIT 7,(HL) JR Z,0407H INC HL LD B,(HL) INC HL LD C,(HL) INC HL OTIR BIT 7,(HL) JR Z,0414H LD HL,0F8FFH LD DE,0F841H LD BC,023AH LDDR XOR A LD (0FF8EH),A LD (0FF90H),A LD (0FF8FH),A RET DB 'ROM Err' DB 'RAM Err' ; ldir strings: n,aaaa,b(1),b(2),....,b(n) DB 2 DW 0FF1Ah DB 0C5h,0FDh DB 2 DW 0FF16h DB 0D2h,0FDh DB 12 DW 0FF6Ch DB 0,1,2,3,10,5,3,10 DB 0,10,64,6 DB 6 DW 0FF5Dh DB 127,0,158,155,136,1 DB 2 DW 0FF7Dh DB 2,0 DB 2 DW 0F84Ah DB 0,253 DB 9 DW 0F861h DB 1,0,32,0,128,0,3,255,0 DB 0FFh ; e. o. l. ; otir strings: n,port,b(1),b(2), ... ,b(n) DB 1 DB 29 DB 79 DB 1 DB 28 DB 192 DB 3 DB 29 DB 207,8,3 DB 3 DB 31 DB 79,26,131 DB 2 DB 24 DB 3,16 DB 1 DB 25 DB 3 DB 2 DB 26 DB 27h,7Dh DB 2 DB 27 DB 0C7h,7Dh DB 10 DB 7 DB 4,45h,1,4,3 DB 41h,5,0AAh,2,0 DB 1 DB 12 DB 7 DB 8 DB 6 DB 4,44h DB 1,0,3,0c1h,5,0eah DB 1 DB 0 DB 7 DB 0FFh ; e. o. l. LD A,(0FF5CH) ; console status OR A RET Z OR 0FFH RET LD A,H CALL 0276H LD A,L CALL 0276H LD A,20H CALL 0650H CALL 04B7H RET Z CALL 04D8H CP 20H JP NZ,0178H CALL 04B7H ; console input JR Z,04D8H PUSH HL CALL 04E7H LD HL,0FF5DH AND (HL) POP HL RET LD HL,0FF5CH DEC (HL) LD L,5BH INC (HL) RES 4,(HL) LD A,(HL) ADD A,4AH LD L,A LD A,(HL) RET LD HL,0FF7AH DEC (HL) CALL Z,0CF3H LD HL,(0FF64H) INC HL LD (0FF64H),HL LD HL,0FF6BH LD DE,0559H LD B,03H INC (HL) LD A,(DE) SUB (HL) JR NC,0535H LD (HL),00H DEC HL INC DE DJNZ 050CH LD HL,0FF66H INC (HL) LD A,(HL) INC HL LD C,(HL) LD DE,055BH EX DE,HL ADD HL,BC CP (HL) JR C,0535H EX DE,HL DEC HL LD (HL),01H INC HL INC (HL) LD A,(HL) CP 0DH JR C,0535H LD (HL),01H INC HL INC (HL) LD A,(0FF63H) RRA RET NC LD A,(0FF85H) CALL 0603H LD A,46H OR L LD L,A LD DE,0FF69H LD (HL),20H CALL 0614H LD (HL),3AH CALL 0614H LD (HL),3AH CALL 0614H LD (HL),20H RET DEC SP DEC SP RLA JR NZ,057BH JR NZ,057FH JR NZ,0581H JR NZ,0584H RRA JR NZ,0586H JR NZ,0544H LD E,2FH LD HL,0FF5FH CP (HL) JR Z,05B0H INC HL CP (HL) JR Z,058EH INC HL CP (HL) JR Z,0589H LD C,A LD L,5CH LD A,(HL) INC A CP 10H RET NC LD (HL),A LD L,5AH CALL 04EDH LD (HL),C RET LD HL,0FF63H DEC (HL) RET LD HL,0FD80H PUSH HL LD HL,0004H ADD HL,SP LD DE,0FFBAH LD BC,000CH LDIR LD HL,(0FDE4H) LD (0FE15H),HL POP DE LD SP,0FFBAH LD HL,0FE0AH PUSH HL PUSH DE JP 0FDE6H CALL 0592H DI LD HL,0FDFFH LD (0FF1AH),HL LD HL,0000H ADD HL,SP LD (0FF96H),HL LD HL,(0FF7FH) LD A,(HL) LD (0FF86H),A LD (HL),80H EI LD A,(0FF85H) LD (0FF95H),A CALL 0FD97H LD E,18H LD B,50H LD HL,0FF95H LD A,(HL) INC (HL) CALL 0603H LD C,(HL) RES 7,C CALL 0FD9EH INC HL DJNZ 05E0H CALL 0FD97H DEC E JR NZ,05D6H DI LD HL,0FDC5H LD (0FF1AH),HL LD A,(0FF86H) LD HL,(0FF7FH) LD (HL),A LD SP,(0FF96H) EI RET INC A CP 18H JR C,060AH SUB 18H SRL A LD L,00H RR L OR 30H LD H,A RET INC HL LD A,(DE) INC DE LD C,2FH INC C SUB 0AH JR NC,0619H LD (HL),C INC HL ADD A,3AH LD (HL),A INC HL RET LD HL,0FF66H ; getdt RET IN A,(7) AND 01H RET Z OR 0FFH RET IN A,(7) AND 04H JR 062DH CALL 0629H JR Z,0637H IN A,(5) RET CALL 0631H JR Z,063FH LD A,C OUT (5),A RET XOR A LD (0FF7EH),A LD (0FF81H),A RET PUSH HL PUSH DE PUSH BC LD C,A CALL 065BH POP BC POP DE POP HL RET DI ; console output LD HL,(0FF7FH) LD A,(0FF83H) LD (HL),A CALL 067CH LD A,(HL) LD (0FF83H),A AND 7FH CP 20H LD A,(0FF7DH) JR Z,0676H LD A,(HL) XOR 80H LD (HL),A LD (0FF7FH),HL EI RET RES 7,C LD DE,0FF81H LD A,(DE) OR A JP NZ,078AH LD A,C CP 20H JR C,06BAH LD A,(0FF7EH) OR C LD C,A LD (HL),C INC L LD A,L AND 7FH CP 50H RET C LD A,80H AND L LD L,A LD A,L RLA LD A,H RLA AND 1FH LD C,A CALL 077BH LD A,(0FF85H) CP C RET NZ PUSH HL CALL 073EH ADD HL,HL LD A,H AND 1FH LD (0FF85H),A OUT (14H),A POP HL RET PUSH HL LD HL,06CDH LD BC,0FH CPIR ADD HL,BC ADD HL,BC ADD HL,BC LD C,(HL) INC HL LD B,(HL) POP HL RET NZ PUSH BC RET DB 1Fh,1Eh,1Bh,1Ah,18h,17h DB 11h,0Dh,0Ch,0Bh,0Ah,09h DB 08h,07h,05h DW 6FEh DW 724h DW 706h DW 714h DW 69Ch DW 770h DW 70Ch DW 72Fh DW 755h DW 755h DW 734h DW 74Bh DW 6FAh DW 786h DW 702h LD A,1 LD (DE),A RET LD A,4 LD (DE),A RET LD A,5 LD (DE),A RET LD A,L AND 7FH RET Z DEC L RET LD A,L AND 7FH CP 4FH RET NC INC L RET LD DE,8 LD A,L AND 78H ADD A,E CP 50H RET NC LD A,L AND 0F8H LD L,A ADD HL,DE RET IN A,(1CH) OR 10H OUT (1CH),A AND 0EFH OUT (1CH),A RET LD A,L AND 80H LD L,A RET LD A,0D0H SUB L AND 7FH LD B,A RET Z LD A,L JR 0744H LD A,L AND 80H LD L,A LD B,50H LD (HL),20H INC L DJNZ 0744H LD L,A RET LD HL,3000H LD A,17H LD (0FF85H),A OUT (14H),A CALL 0734H PUSH HL LD A,(0FF85H) LD C,A LD A,L RLA LD A,H RLA AND 1FH CP C JR Z,076EH CALL 077BH CALL 073EH JR 075DH POP HL RET LD DE,0FF80H ADD HL,DE LD A,H CP 30H RET NC LD H,3BH RET LD DE,0080H ADD HL,DE LD A,H CP 3CH RET C LD H,30H RET LD C,20H JR 07A2H EX DE,HL LD (HL),0 EX DE,HL DEC A JR NZ,079CH PUSH HL LD HL,07D0H LD A,C LD BC,000EH JP 06C1H DEC A JR NZ,07B8H LD A,3 LD (DE),A LD A,(0FF85H) ADD A,C SUB 1FH SUB 18H JR NC,07A8H ADD A,18H OR 60H LD H,A LD L,0 SRL H RR L RET DEC A JR NZ,07C7H LD A,C SUB 20H SUB 50H JR NC,07BEH ADD A,50H OR L LD L,A RET DEC A JP NZ,0690H LD A,C LD (0FF7DH),A RET DB 29h,28h,30h,31h,34h,37h DB 3Dh,45h,51h,52h,57h DB 2Ah,54h,59h DW 0755h DW 0734h DW 074Bh DW 0818h DW 0843h DW 0827h DW 083Fh DW 07FAh DW 080Ch DW 080Ch DW 07FEh DW 07FEh DW 0805h DW 0805h LD A,02H LD (DE),A RET RRCA OR 7FH LD (0FF5DH),A RET RRCA AND 80H LD (0FF7EH),A RET RRCA IN A,(1CH) RES 3,A JR C,0815H OR 08H OUT (1CH),A RET PUSH HL CALL 0836H JR Z,0823H LD D,H LD E,L INC L LDIR LD (HL),20H POP HL RET PUSH HL CALL 0836H ADD HL,BC JR Z,0823H LD E,L LD D,H DEC L LDDR EX DE,HL JR 0823H LD A,0CFH SUB L AND 7FH LD C,A LD B,0 RET LD A,0FFH JR 0845H LD A,1 LD (0FF82H),A LD B,A PUSH HL ADD HL,HL LD A,(0FF85H) ADD A,61H LD C,A LD A,H SUB C JR NC,0857H ADD A,18H POP HL PUSH HL CP 17H JR NZ,0862H CALL 073EH POP HL RET ADD A,20H LD C,A LD A,37H SUB C BIT 7,B LD B,A JR Z,0872H LD C,37H CALL 07A2H EX DE,HL LD A,(0FF82H) ADD A,C LD C,A CALL 07A2H PUSH HL PUSH BC LD BC,50H LDIR POP BC POP HL DJNZ 0872H JP 085DH LD C,0 ; home disk LD HL,0FF88H ; set trk LD (HL),C RET LD HL,0FF87H ; set sector LD (HL),C RET LD H,B ; sector transl. LD L,C LD A,E OR D RET Z ADD HL,DE LD L,(HL) LD H,B RET LD (0FE71H),BC ; setdma RET LD C,0 LD E,C LD A,(0FF72H) ;select drive CP C JR C,08B3H LD B,0 LD HL,0FF6CH ADD HL,BC CP (HL) JR C,091FH LD A,(HL) LD (0FF89H),A INC A LD HL,0F900H LD BC,0BEH SBC HL,BC DEC A JR NZ,08C0H LD (0FF78H),HL PUSH HL POP IX BIT 0,E RET NZ BIT 6,(IX+25H) RET NZ CALL 0BCAH LD A,(IX+25H) AND 0B3H LD (IX+25H),A LD A,2 LD (0FF88H),A CALL 0C4EH CALL Z,0D7FH JR Z,090FH IN A,(12H) LD B,(IX+25H) DEC A JR NZ,0900H LD A,B AND 90H JR NZ,091FH LD A,80H OR B LD (IX+25H),A JR 08DEH CP 3 JR NZ,091FH BIT 7,B LD C,1 JP Z,0A26H LD A,8 JR 08FAH LD A,0C4H LD HL,0FFF0H LD (IX+24H),0 LD (IX+23H),6 CALL 0C06H LD C,0 JP NZ,0A26H BIT 5,(IX+25H) JR NZ,095DH IN A,(1CH) OR 4 OUT (1CH),A LD B,5 CALL 0DDFH LD HL,0FFF6H LD (0FE4DH),HL CALL 0D2EH CALL Z,0C2DH JR NZ,095DH LD C,(IX+25H) SET 2,C LD A,(0FFF8H) CP 14H LD A,C JR C,095AH OR (IX+21H) AND 30H LD A,C JR NZ,095AH OR 88H LD (IX+25H),A LD A,(0FFF3H) AND 3 LD C,A LD HL,80H LD B,H JR Z,0970H ADD HL,HL SCF RL B DEC A JR NZ,0969H LD (IX+22H),B LD (IX+23H),L LD (IX+24H),H LD A,(0FFF1H) AND 0FEH JR Z,0982H SET 6,C LD A,(IX+25H) AND 1CH OR C OR (IX+21H) LD HL,0A2AH LD BC,013H CPIR LD H,B LD L,C LD C,2 JP NZ,091FH ADD HL,HL ; HL*8 ADD HL,HL ADD HL,HL LD DE,0A3DH ADD HL,DE PUSH HL LD HL,(0FF78H) LD C,0FH ADD HL,BC LD D,H LD E,L INC DE LD (IX+0AH),E LD (IX+0BH),D PUSH DE LD (HL),B LDIR LD C,0AH ADD HL,BC LD (IX+0EH),L LD (IX+0FH),H LD C,56H ADD HL,BC LD (IX+0CH),L LD (IX+0DH),H POP DE POP HL LDI INC DE LD A,(HL) AND 0F8H RRCA RRCA PUSH HL LD HL,0AD5H LD C,A ADD HL,BC LD A,(HL) LD (IX+0),A INC HL LD A,(HL) LD (IX+1),A POP HL LD A,(HL) AND 7 LD (DE),A INC HL LD B,A INC DE XOR A ADD A,A INC A DJNZ 09E9H LD (DE),A INC DE RRCA RRCA RRCA AND 1FH LD (DE),A INC DE LDI LD A,(HL) LDI OR A JR Z,0A02H SRL (IX+14H) LD A,(HL) LDI INC DE LDI INC DE SRL A SRL A INC A LD (DE),A INC DE INC DE LDI INC DE LD A,(HL) LD (IX+27H),A AND 1 LD (DE),A INC DE LD A,(HL) RRA AND 3FH LD (DE),A LD HL,(0FF78H) XOR A RET LD HL,0 RET DB 57h,17h,16h,53h,13h,12h DB 15h,11h,34h,30h,03h,0Eh DB 06h,02h,05h,01h,21h,24h DB 20h DB 12h,0Bh,52h,00h,1Fh,80h,03h,01h DB 12h,0Bh,0ACh,00h,1Fh,80h,03h,81h DB 14h,1Ch,2Dh,00h,3Fh,80h,03h,01h DB 22h,03h,9Ch,00h,3Fh,0C0h,03h,01h DB 22h,04h,0A2h,00h,3Fh,0C0h,03h,81h DB 28h,03h,0C2h,00h,3Fh,0F0h,01h,00h DB 28h,04h,0C4h,00h,3Fh,0C0h,01h,14h DB 28h,05h,0C4h,00h,5Fh,080h,02h,28h DB 28h,03h,0B8h,00h,3Fh,0C0h,03h,01h DB 1Ah,13h,0F2h,00h,3Fh,0C0h,02h,01h DB 1Ah,14h,0F6h,00h,7Fh,0C0h,02h,81h DB 34h,04h,0F2h,00h,7Fh,0C0h,02h,01h DB 34h,05h,0F6h,00h,7Fh,0C0h,02h,81h DB 40h,04h,2Bh,01h,7Fh,0C0h,02h,01h DB 40h,04h,2Bh,01h,7Fh,0C0h,02h,01h DB 48h,04h,50h,01h,7Fh,0C0h,02h,01h DB 40h,05h,2Fh,01h,7Fh,80h,02h,21h DB 40h,04h,56h,02h,0FFh,0F0h,04h,01h DB 48h,04h,0A2h,02h,0FFh,0F0h,04h,01h DB 00h,00h,0A6h,0FEh,8Ch,0FEh,0B8h,0FEh LD IX,(0FF78H) ; disk read XOR A LD (0FE74H),A OR (IX+22H) JP Z,0BF1H CALL 0B92H LD A,(0FF8EH) OR A JR Z,0AFDH CALL 0BB6H JR Z,0B0FH CALL 0BCAH RET NZ CALL 0BA0H LD HL,0F900H XOR A CALL 0BFFH JR Z,0B0FH LD HL,0FF8EH LD (HL),0 RET LD A,(0FF87H) AND (IX+22H) LD H,A LD L,0 SRL H RR L LD BC,0F900H ADD HL,BC JP 0FE70H LD IX,(0FF78H) ; disk write LD A,1 LD (0FE74H),A LD A,(IX+22H) OR A JP Z,0BF0H CALL 0B92H LD A,C DEC A JR Z,0B56H DEC A JR Z,0B65H LD HL,0FF90H LD A,(HL) OR A JR Z,0AEEH DEC (HL) LD DE,(0FF91H) LD HL,(0FF87H) XOR A SBC HL,DE JR Z,0B73H LD (0FF90H),A JR 0AEEH CALL 0AEEH RET NZ LD HL,0F900H XOR A LD (0FF8FH),A INC A JP 0BFFH LD A,(IX+13H) LD (0FF90H),A LD HL,(0FF87H) LD (0FF91H),HL JR 0B78H CALL 0BB6H JR Z,0B7FH CALL 0BCAH RET NZ CALL 0BA0H CALL 0B0FH LD HL,0FF91H INC (HL) LD A,(HL) SUB (IX+10H) JR C,0B90H LD (HL),0 INC L INC (HL) XOR A RET LD B,A LD A,(0FF87H) SRL A SRL B JR NZ,0B96H LD (0FF8AH),A RET LD A,(0FF8AH) LD HL,0FF8BH LD (HL),A LD A,(0FF88H) INC L LD (HL),A LD A,(0FF89H) INC L LD (HL),A INC A LD (0FF8EH),A RET LD HL,0FF8BH LD A,(0FF8AH) CP (HL) RET NZ INC L LD A,(0FF88H) CP (HL) RET NZ INC L LD A,(0FF89H) CP (HL) RET XOR A LD (0FF8EH),A LD (0FF90H),A LD A,(0FF8FH) OR A RET Z PUSH IX LD HL,(0FF88H) PUSH HL LD HL,(0FF8CH) LD (0FF88H),HL LD IX,(0FF93H) CALL 0B5AH POP HL LD (0FF88H),HL POP IX RET INC A PUSH AF CALL 0BCAH LD A,(0FF87H) LD (0FF8BH),A POP AF LD HL,(0FE71H) OR A LD A,88H JR Z,0C06H LD A,0A8H LD (0FE4DH),HL LD (0FE50H),A AND 20H OR 0DCH LD (0FF7CH),A CALL 0C4EH RET NZ AND 20H JR NZ,0C20H LD HL,0FE50H SET 2,(HL) LD A,(IX+26H) LD HL,0FE3CH CP (HL) JR Z,0C2DH CALL 0D7FH RET NZ LD A,(0FF71H) LD (0FF7BH),A CALL 0FE18H CALL 0D4EH LD HL,0FF7CH AND (HL) RET Z PUSH AF CALL 0D55H POP BC JR NZ,0C4BH LD HL,0FF7BH DEC (HL) JR NZ,0C33H LD A,B OR A RET LD A,(0FF89H) INC A CP 3 JR C,0C59H CPL AND 3 OR (IX+21H) LD C,A BIT 2,(IX+25H) LD A,(0FF88H) JR Z,0C82H BIT 7,(IX+27H) JR Z,0C7CH LD E,4DH BIT 4,(IX+25H) JR NZ,0C76H LD E,28H CP E JR C,0C82H SUB E JR 0C80H SRL A JR NC,0C82H SET 2,C DI LD (0FE3CH),A IN A,(1CH) LD E,A AND 27H XOR C PUSH AF LD A,E AND 0D8H OR C OUT (1CH),A EI CALL 0CC2H POP BC JR NZ,0CB7H BIT 6,C JR NZ,0CB8H LD A,B AND 3 JR Z,0CAFH LD HL,0FF74H BIT 4,(IX+25H) JR Z,0CADH INC L LD A,(HL) OR A LD B,5 CALL Z,0DDFH CALL NZ,0CD6H RET M LD A,0D0H CALL 0DD7H IN A,(10H) BIT 7,A RET DI LD A,(0FF70H) LD (0FF7AH),A IN A,(1CH) BIT 6,A RES 6,A OUT (1CH),A EI RET Z LD A,(0FF73H) LD B,A LD HL,0A000H LD C,L CALL 0CB8H XOR C AND 2 JR Z,0CEBH DEC HL LD A,H OR L JR NZ,0CDBH OR 80H RET LD A,2 XOR C LD C,A DJNZ 0CDBH INC A RET IN A,(1CH) OR 40H OUT (1CH),A RET CALL 0CB8H LD A,(IX+25H) AND 3 OR 8 CALL 0D4BH XOR 4 AND 84H LD (IX+26H),A RET CALL 0D2EH RET Z CALL 0D17H RET Z LD A,(IX+21H) XOR 20H LD (IX+21H),A DI LD C,A IN A,(1CH) AND 0DFH OR C OUT (1CH),A EI LD B,3 CALL 0DDFH LD A,0C4H CALL 0DD7H LD BC,0 IN A,(10H) BIT 0,A JR Z,0D43H DEC BC LD A,B OR C JR NZ,0D36H OR 10H PUSH AF CALL 0CB8H POP AF AND 98H RET CALL 0DD7H IN A,(10H) BIT 0,A JR NZ,0D4EH RET PUSH AF CALL 0CB8H POP AF BIT 4,A JR NZ,0D6EH BIT 3,A JR NZ,0D64H OR A RET LD HL,0FF7BH LD A,(0FF71H) SUB (HL) RET Z JR 0D7AH CALL 0D0FH JR NZ,0D7AH IN A,(12H) LD HL,0FE3CH SUB (HL) RET Z LD A,0FFH LD (IX+26H),A LD B,3 LD A,(IX+26H) CP 0FFH JR NZ,0D92H PUSH BC CALL 0CC2H CALL 0CFAH POP BC JR NZ,0DCFH LD D,A LD A,(0FE3CH) BIT 7,(IX+25H) JR Z,0DA5H BIT 3,(IX+25H) JR NZ,0DA5H SLA D ADD A,A PUSH BC OUT (13H),A LD A,D OUT (11H),A LD A,(IX+25H) AND 3 OR 18H CALL 0D4BH LD B,5 CALL 0DDFH CALL 0D0FH POP BC JR NZ,0DCDH IN A,(12H) LD HL,0FE3CH CP (HL) JR NZ,0DCDH LD (IX+26H),A XOR A RET DJNZ 0D88H LD A,0FFH LD (IX+26H),A AND 10H RET OUT (10H),A LD A,14H DEC A JR NZ,0DDBH RET LD DE,(0FF76H) DEC DE LD A,D OR E JR NZ,0DE3H DJNZ 0DDFH RET CALL 0238H CALL 0FD8EH LD HL,0FD85H PUSH HL EX DE,HL JP (HL) CALL 0238H EX DE,HL CALL 02C7H CALL 04BFH CALL 0F5BDH CALL 020FH JR C,0DFBH LD A,D OR A SCF RET NZ CALL 0FD8EH LD (HL),E OUT (1CH),A INC HL JR 0DFBH CALL 0238H EX DE,HL CP 0DH CALL Z,02C7H CALL 0238H LD A,H ADD A,10H RET C LD A,D ADD A,10H RET C PUSH HL SBC HL,DE POP HL CCF RET C CALL 02C7H PUSH HL LD C,0ACH EX AF,AF' RL C EX AF,AF' CALL 0FD8EH LD (HL),C LD B,(HL) OUT (1CH),A LD A,B CP C JR Z,0E5EH CALL 04BFH LD A,B CALL 04C4H CALL 02ADH DB 'should=',' '+msbon LD A,C CALL 04C4H CALL 02C7H PUSH HL OR A SBC HL,DE POP HL INC HL JR C,0E36H POP HL EX DE,HL SBC HL,DE LD B,H LD C,L PUSH BC LD H,D LD L,E INC DE PUSH HL PUSH DE CALL 0FD8EH LD (HL),0FFH LDIR INC (HL) OUT (1CH),A POP DE POP HL POP BC JR Z,0E8DH CALL 02ADH DB 1,'1',squote,'s fai','l'+msbon CALL 0FD8EH LD (HL),0 LDIR LD L,(HL) OUT (1CH),A LD A,L OR A RET Z CALL 02ADH DB 1,'0',squote,'s fai','l'+msbon OR A RET CALL 0FD8EH PUSH BC LD C,(HL) OUT (1CH),A LD A,C POP BC RET DI ; from here to end gets LD HL,0E5H ; copied to FD80 PUSH HL IN A,(1CH) PUSH AF OR 80H OUT (1CH),A POP AF RET IN A,(1CH) PUSH AF AND 7FH OUT (1CH),A POP AF RET LD C,0DH CALL 0FD9EH LD C,0AH PUSH HL PUSH DE CALL 0FD8EH LD HL,(1) LD DE,0CH ADD HL,DE LD A,(HL) CP 0C3H JR NZ,0EEEH PUSH IX PUSH BC CALL 0FDF3H POP BC POP IX POP DE POP HL JR 0EB7H CALL 0FD85H POP DE POP HL LD A,C JP 063FH LD (0FDE4H),SP LD SP,0FF4AH PUSH HL LD HL,0568H JR 0F0FH LD (0FDE4H),SP LD SP,0FF4AH PUSH HL LD HL,04F6H PUSH AF CALL 0FDE9H POP AF POP HL LD SP,0 EI RETI PUSH DE PUSH BC CALL 0FD85H PUSH AF LD DE,0FDF4H PUSH DE JP (HL) LD C,A POP AF RLCA CALL NC,0FD8EH LD A,C OR A POP BC POP DE RET LD HL,05EFH EX (SP),HL IN A,(1EH) CALL 0FD85H JR 0F18H POP AF RLCA CALL NC,0FD8EH POP BC POP DE POP HL POP AF POP HL LD SP,0 RET LD A,(0FF70H) LD (0FF7AH),A LD B,(IX+23H) LD E,(IX+24H) LD A,E OR A JR NZ,0F5BH INC E DI CALL 0FD8EH PUSH AF AND 4 LD C,13H LD HL,66H LD A,(HL) LD (0FE67H),A LD (HL),0C9H LD A,7FH OUT (11H),A LD A,(0FF8BH) JR Z,0F79H ADD A,(IX+20H) ADD A,(IX+1FH) OUT (12H),A LD HL,0 LD A,0 OUT (10H),A AND 20H LD A,0A2H JR Z,0F8CH INC A LD (0FE5FH),A HALT INI JR NZ,0F8FH DEC E JP NZ,0FE5DH LD A,0 LD (66H),A POP AF OUT (1CH),A EI RET LD DE,0 LD A,0 OR A JR Z,0FB2H LD (0FF8FH),A EX DE,HL LD (0FF93H),IX LD BC,80H CALL 0FD8EH LDIR OUT (1CH),A XOR A RET NOP LD B,0CH LD (DE),A JR 0FC8H LD A,(BC) DJNZ 0FDDH LD (BC),A EX AF,AF' LD C,14H LD BC,0D07H INC DE ADD HL,DE DEC B DEC BC LD DE,0317H ADD HL,BC RRCA DEC D NOP DEC B LD A,(BC) RRCA LD (BC),A RLCA INC C LD DE,0904H LD C,1 LD B,0BH DJNZ 0FEBH EX AF,AF' DEC C NOP LD BC,0504H EX AF,AF' ADD HL,BC INC C DEC C DJNZ 0F05H LD (BC),A INC BC LD B,7 LD A,(BC) DEC BC LD C,0FH LD (DE),A INC DE db 0ddh,0ffh END