; Disassembly of the file "mz2z009e.bin" ; ; CPU Type: Z80 ; ; Created with dZ80 2.1 ; ; on Tuesday, 17 of March 2026 at 05:57 PM ; LSWF EQU 0CCH LSRF EQU 0CDH LSDMD EQU 0CEH LSSCR EQU 0CFH LSD0 EQU 0D0H LSD1 EQU 0D1H LSD2 EQU 0D2H LSD3 EQU 0D3H LSE0 EQU 0E0H LSE1 EQU 0E1H LSE2 EQU 0E2H LSE3 EQU 0E3H LSE4 EQU 0E4H LSE5 EQU 0E5H LSE6 EQU 0E6H EM_P0 EQU 0EAH EM_P1 EQU 0EBH LSPAL EQU 0F0H QDPA EQU 0F2H QDPB EQU 0F3H QDPC EQU 0F4H QDPD EQU 0F5H FDPA EQU 0F8H FDPB EQU 0F9H FDPC EQU 0FAH FDPD EQU 0FBH LSFC EQU 0FCH ELMD EQU 01000H ELMD1 EQU 01001H ELMD18 EQU 01012H ELMD20 EQU 01014H ELMD22 EQU 01016H ELMD24 EQU 01018H ELMD26 EQU 0101AH ELMD30 EQU 0101EH ELMD32 EQU 01020H ZTOP EQU 01040H ZLOG EQU 01042H ZRWX EQU 01043H ZEQT EQU 01044H ZCH EQU 01046H ZEOF EQU 01047H ZWRK1 EQU 01048H ZWRK2 EQU 01049H ZNXT EQU 0104AH ZDEVNM EQU 0104CH ZFLAG1 EQU 01050H ZFLAG2 EQU 01051H ZDIRMX EQU 01052H ZINIT EQU 01053H ZRO EQU 01055H ZWO EQU 01057H ZCL EQU 01059H ZKL EQU 0105BH ZINP EQU 0105DH ZOUT EQU 0105FH ZDELT EQU 01061H ZWDIR EQU 01063H ZFREE EQU 01065H DCHAN EQU 01069H DDEV EQU 0106AH .$CRT EQU 0106CH .$LPT EQU 0106EH TEXTST EQU 01070H TEXTED EQU 01072H VARST EQU 01074H STRST EQU 01076H VARED EQU 01078H TMPEND EQU 0107AH INTFAC EQU 0107CH MEMLMT EQU 0107EH MEMMAX EQU 01080H CURXY EQU 01082H POSADR EQU 01084H BITADR EQU 01086H POINTX EQU 01088H POINTY EQU 0108AH CURFLG EQU 0108CH CURMAK EQU 0108DH CMTMSG EQU 0108EH INPFLG EQU 0108FH DISPX EQU 01090H FILOUT EQU 01091H PSEL EQU 01092H PCRLF EQU 01093H LPT_TM EQU 01094H LPOSB EQU 01095H PSMAL EQU 01096H PNMODE EQU 01097H DMD EQU 01098H MEMOP EQU 01099H PWMODE EQU 0109AH CMODE EQU 0109BH CPLANE EQU 0109CH MAXCF EQU 0109DH PMASK EQU 0109EH GMODE EQU 0109FH TMCNT EQU 01195H SUMDT EQU 01197H CSMDT EQU 01199H TEMPW EQU 0119EH KEYBM1 EQU 011A3H KEYBUF EQU 011A4H KEY262 EQU 012AAH KEY264 EQU 012ACH KEY266 EQU 012AEH FUNBUF EQU 012B2H INBUFC EQU 01352H INBUFL EQU 01353H INBUF EQU 01354H LINLIM EQU 01364H KEYDAT EQU 01365H AMPM EQU 01366H SECD EQU 01367H XS EQU 01369H XE EQU 0136AH CWIDTH EQU 0136BH CSIZE EQU 0136DH YS EQU 0136FH YE EQU 01370H YW EQU 01371H SOF EQU 01372H SW EQU 01374H SSA EQU 01375H SEA EQU 01376H SSW EQU 01377H CRTMD1 EQU 01379H CRTMD2 EQU 0137AH SELCOL EQU 0137BH PAIWED EQU 0137CH PALBK EQU 0137EH PALAD EQU 0137FH PALTBL EQU 01381H PAL2T EQU 01385H PAL4T EQU 01389H PAL16T EQU 0138DH CURDT1 EQU 01391H CURDT2 EQU 01399H CURDT3 EQU 013A1H SCRNT0 EQU 013A9H EMFLG EQU 013C3H EMPTR EQU 013C4H EMWP0 EQU 013C6H EMWP1 EQU 013C8H PBCN EQU 013CEH HERRF EQU 013D9H CTABLE EQU 013DAH FONTBF EQU 01000H TEXTBF EQU 02000H BITBUF EQU 08000H IBUFE EQU 010F0H ERRTXT EQU 0FDA0H PRGSTART EQU 00000H ; =========================================================================== ; Build configuration — set these flags to select the build variant: ; ; BUILD_RFS=0, BUILD_TAPE=0 : Original BASIC (FD boot BIN) ; BUILD_RFS=0, BUILD_TAPE=1 : Original BASIC (Tape/CMT/RFS ROM boot) ; BUILD_RFS=1, BUILD_TAPE=0 : RFS Enhanced BASIC (FD boot BIN) ; BUILD_RFS=1, BUILD_TAPE=1 : RFS Enhanced BASIC (Tape/CMT/RFS ROM boot) ; =========================================================================== ;BUILD_RFS EQU 1 ; 0 = original BASIC, 1 = RFS enhancements ;BUILD_TAPE EQU 0 ; 0 = FD/BIN, 1 = Tape/CMT/RFS ROM boot ; Tape/CMT boot constants ATRB EQU 010F0H ; MZF header location (= ELMD area) TAPECOPY EQU 01200H ; Load address for tape bootstrap TIMST EQU 00033H ; Timer stop routine in Monitor ROM HDRLEN EQU 00040H ; MZF header length (64 bytes) ; RFS (ROM Filing System) hardware registers and constants PORT_LODRAM EQU 0E0H ; OUT: map 0000-0FFF to DRAM PORT_DRAM EQU 0E1H ; OUT: map D000-FFFF to DRAM PORT_LOROM EQU 0E2H ; OUT: map 0000-0FFF to Monitor ROM PORT_MMIO EQU 0E3H ; OUT: map D000-FFFF to VRAM/MMIO/ROM BNKCTRLRST EQU 0EFF8H ; RFS bank control reset register BNKCTRL EQU 0EFFFH ; Bank Control register (CS, CLK bits) HWSPIDATA EQU 0EFFBH ; Hardware SPI Data register (read/write) HWSPISTART EQU 0EFFCH ; Start SPI transfer register SDCS_ACT EQU 001H ; BNKCTRL: CS LOW (active), BBCLK enable SDCS_DEACT EQU 003H ; BNKCTRL: CS HIGH (inactive), BBCLK enable L8CA0 EQU 08CA0H ; Color attribute buffer address (was DS padding) ; --------------------------------------------------------------------------- ; MZF tape header (only for BUILD_TAPE=1) ; --------------------------------------------------------------------------- IF BUILD_TAPE = 1 ORG ATRB BOOTATRB: DB 001H ; File type: 01 = Machine Code IF BUILD_RFS = 1 BOOTNAME: DB "BASIC 2Z-009ERFS", 00DH ; Title (17 bytes + CR) ELSE BOOTNAME: DB "BASIC 2Z-009E ", 00DH ; Title (17 bytes + CR) ENDIF BOOTSIZE: DW BASICEND - L0000 ; Size of program BOOTDTADR: DW TAPECOPY ; Load address BOOTEXADR: DW EXECSTART + TAPECOPY ; Exec address (relocated) BOOTCOMNT: DS 104 ; Comment area (unused) ENDIF ORG PRGSTART L0000: JP L0CAF ; Cold start entry - JP to initialization L0003: JP L028C L0006: JP L05EC JP L05E8 L000C: JP L0BFD L000F: JP L05F1 L0012: JP L0BFF L0015: JP L0BEE SVC_ENTRY: JP SVC_DISP ; RST 18H - SVC (Supervisor Call) dispatcher JP L041C BRKCHK: JP L05C1 JP L30CB JP L30D2 L0027: JP L3114 JP L311B JP L3153 L0030: JP L14BC JP L0955 L0036: LD B,B NOP RST38: JP BREAKZ ; RST 38H - Interrupt handler JP L098F L003E: JP L0D3F L0041: JP L0D30 JP L0D05 JP L0D20 JP L028C L004D: DB 000H ; System status / work area L004E: DB 000H L004F: DB 0FFH L0050: DB 000H L0051: JP L0BEE ; Jump vector (dynamic) L0054: DS 2, 000H L0056: DB 000H L0057: DB 018H L0058: JP 0038AH ; Jump vector (dynamic) L005B: DB 000H DB 027H L005D: DB 071H DB 000H L005F: DB 000H L0060: DB 0EFH DB 0C3H DB 037H DB 00AH L0064: DB 000H L0065: DB 000H L0066: DB 000H L0067: DB LSE5 DB 000H DB LSE5 DB 000H DB LSE5 DB 000H DB 0ADH DB 007H DB 0F1H DB 008H L0071: DB 015H DB 008H DB 012H DB 008H DB LSE5 DB 000H DB LSE5 DB 000H DB LSE5 DB 000H DB LSE5 DB 000H DB LSE5 DB 000H DB LSE5 L0080: DB 000H L0081: DB 0ADH DB 007H DB LSE5 DB 000H DB LSE5 DB 000H DB 01EH DB 008H DB LSWF DB 007H DB LSPAL DB 007H DB LSD1 DB 007H DB QDPD DB 007H DB 054H DB 007H DB 074H DB 007H DB 018H DB 008H DB 0BAH DB 008H DB 012H DB 008H DB LSE5 DB 000H DB 0ADH DB 007H DB LSE5 L00A0: DB 000H DB LSE5 DB 000H DB LSE5 DB 000H DB LSE5 .NOP: DB 000H .HL: DS 11, 000H .RET: DS 8, 000H PUSHRA: DS 6, 000H L00C0: DS 7, 000H PUSHR: DS 18, 000H L00D9: DB 000H L00DA: DI LD SP,L0000 IM 1 OUT (LSE1),A JP L1800 BREAKZ: RET BREAKX: DI OUT (LSE3),A L00E9: LD A,(HL) OUT (LSE1),A EI ERRORJ: RET POPRA: DI OUT (LSE3),A LD (HL),A OUT (LSE1),A EI RET JP L026A L00F9: NOP L00FA: JP (HL) IOOUT: EX (SP),IX PUSH HL PUSH BC PUSH DE L0100: PUSH AF PUSH HL LD HL,L0114 EX (SP),HL JP (IX) SKPDE: EX (SP),IX PUSH HL PUSH BC PUSH DE DEVASC: PUSH HL LD HL,L0115 EX (SP),HL JP (IX) L0114: POP AF L0115: POP DE POP BC POP HL POP IX RET CHKACC: EX (SP),HL PUSH BC LD B,(HL) L011E: INC HL CP (HL) JR Z,L0127 ; (+005H) DJNZ L011E ; (-006H) INC HL JR L012A ; (+003H) L0127: INC HL DJNZ L0127 ; (-003H) L012A: POP BC EX (SP),HL RET LDDEMI: LD E,(HL) INC HL LD D,(HL) INC HL RET LDDEMD: LD E,(HL) INC HL LD D,(HL) DEC HL RET ?CLRHL: XOR A ?SETHL: LD (HL),A INC HL DJNZ ?SETHL ; (-004H) RET ?CLRDE: XOR A ?SETDE: LD (DE),A INC DE L0140: DJNZ ?SETDE ; (-004H) RET LDDEHL: LD A,(HL) LD (DE),A INC HL INC DE DJNZ LDDEHL ; (-006H) RET LDHLDE: LD A,(DE) LD (HL),A INC HL INC DE DJNZ LDHLDE ; (-006H) RET INDRCT: PUSH AF LD A,(HL) INC HL LD H,(HL) LD L,A POP AF RET ADDHLA: ADD A,L LD L,A RET NC INC H RET INCHLF: INC HL HLFTCH: LD A,(HL) CP 020H JR Z,INCHLF ; (-006H) RET TEST1: CALL HLFTCH EX (SP),HL L0168: CP (HL) INC HL EX (SP),HL RET NZ INC HL RET TESTX: CALL HLFTCH EX (SP),HL CP (HL) INC HL EX (SP),HL INC HL RET Z LD A,001H JR L0182 ; (+007H) L017B: XOR A LD HL,0803EH LD HL,L80F6 L0182: PUSH AF JP RFS_ERR_HOOK ; Hook BEFORE L0D20 (Monitor ROM overlay at 0000-0FFF) POP AF ; Dead code — original bytes for Monitor ROM compatibility JP L0000 ; Dead code — original warm restart target ; --------------------------------------------------------------------------- ; SVC Dispatch Table — 80 entries (#00-#4F), each a 16-bit handler address. ; RST 018H reads the SVC number (byte after RST), looks up handler[SVC*2]. ; --------------------------------------------------------------------------- L018A: DW 03D7CH ; SVC #00 DW 005ECH ; SVC #01 DW 005E8H ; SVC #02 DW 00BFFH ; SVC #03 DW 00C43H ; SVC #04 DW 00908H ; SVC #05 DW 00FA9H ; SVC #06 DW 00F3EH ; SVC #07 DW 00BC8H ; SVC #08 DW 00BCAH ; SVC #09 DW 00BD8H ; SVC #0A DW 00BE6H ; SVC #0B DW 0028CH ; SVC #0C DW 0038AH ; SVC #0D DW 005C1H ; SVC #0E DW 014A0H ; SVC #0F DW 00A87H ; SVC #10 DW 00A89H ; SVC #11 DW 00A37H ; SVC #12 DW 01446H ; SVC #13 DW 01476H ; SVC #14 DW 01491H ; SVC #15 DW 01406H ; SVC #16 DW 0025CH ; SVC #17 DW 00CE1H ; SVC #18 DW 00CE8H ; SVC #19 DW 00CEFH ; SVC #1A DW 014E5H ; SVC #1B DW 013A4H ; SVC #1C DW 01372H ; SVC #1D DW 0064BH ; SVC #1E DW 000E5H ; SVC #1F DW 00D3EH ; SVC #20 DW 00030H ; SVC #21 DW 000E5H ; SVC #22 DW 000E5H ; SVC #23 DW 000E5H ; SVC #24 DW 0098FH ; SVC #25 DW 00955H ; SVC #26 DW 000E5H ; SVC #27 DW 01BE8H ; SVC #28 DW 01EDBH ; SVC #29 DW 01F1DH ; SVC #2A L01E0: DW 01EF1H ; SVC #2B DW 01A3DH ; SVC #2C DW 01AB8H ; SVC #2D DW 019E0H ; SVC #2E DW 01B71H ; SVC #2F DW 01CB4H ; SVC #30 DW 01CD8H ; SVC #31 DW 01CC9H ; SVC #32 DW 01AE1H ; SVC #33 DW 018D0H ; SVC #34 DW 018E4H ; SVC #35 DW 0194CH ; SVC #36 DW 0180FH ; SVC #37 DW 01BA7H ; SVC #38 DW 01D1BH ; SVC #39 DW 014DDH ; SVC #3A L0200: DW 000E5H ; SVC #3B DW 01E58H ; SVC #3C DW 02C67H ; SVC #3D DW 02CB6H ; SVC #3E DW 02C46H ; SVC #3F DW 02900H ; SVC #40 DW 02A9DH ; SVC #41 DW 02925H ; SVC #42 DW 01FABH ; SVC #43 DW 02AFCH ; SVC #44 DW 00774H ; SVC #45 DW 000E5H ; SVC #46 (BREAKZ) DW 000E5H ; SVC #47 DW 000E5H ; SVC #48 DW 000E5H ; SVC #49 DW 000E5H ; SVC #4A DW 000E5H ; SVC #4B DW 000E5H ; SVC #4C DW 000E5H ; SVC #4D DW 000E5H ; SVC #4E DW 000E5H ; SVC #4F SVC_DISP: EX (SP),HL PUSH AF LD A,(HL) INC HL PUSH HL LD HL,L018A ADD A,A ADD A,L JR NC,L0237 ; (+001H) INC H L0237: LD L,A LD A,(HL) INC HL LD H,(HL) LD L,A LD (00243H),HL POP HL POP AF EX (SP),HL JP L0000 IOCALL: PUSH HL PUSH DE LD (00251H),IX LD IX,00180H OR A CALL L0000 POP DE POP HL RET NC OR A SCF L0258: RET Z JP 00180H PUSH DE LD B,000H L025F: LD A,(DE) OR A JR Z,L0268 ; (+005H) INC DE INC B JR NZ,L025F ; (-008H) DEC B L0268: POP DE RET L026A: PUSH HL LD HL,(L0054) PUSH HL PUSH DE CALL PUSHW POP DE LD (HL),000H POP HL CALL L028C JR C,L028A ; (+00eH) LD A,(L005B) SUB L JR NC,L028A ; (+008H) NEG LD L,A LD H,000H ADD HL,DE EX DE,HL OR A L028A: POP HL RET L028C: PUSH BC PUSH HL PUSH DE L028F: CALL L0391 CP 00DH JP Z,L0311 CP 01BH JR Z,L02E8 ; (+04dH) PUSH AF CP 020H DEASC: JR C,L02CD ; (+02dH) JR L02C8 ; (+026H) L02A2: LD A,(L004D) OR A JR NZ,L02C8 ; (+020H) LD A,(00B18H) RRCA JR C,L02C8 ; (+01aH) LD A,(L004E) OR A JR NZ,L02C8 ; (+014H) POP AF LD HL,L06C1 CP 011H JR Z,L02C3 ; (+007H) LD HL,L06E7 CP 012H JR NZ,L02C9 ; (+006H) L02C3: CALL L00FA JR L028F ; (-039H) L02C8: POP AF L02C9: RST 018H DB 003H JR L028F ; (-03eH) L02CD: LD A,(L0060) CP 0FFH JR NZ,L02A2 ; (-032H) POP AF CP 017H JR NC,L02C9 ; (-010H) CP 011H JR C,L02C9 ; (-014H) LD HL,(00B18H) BIT 6,L JR Z,L02C9 ; (-01bH) RST 018H DB 004H JR L028F ; (-059H) L02E8: SCF CKHEX: PUSH AF LD A,00DH RST 018H DB 003H POP AF POP DE POP HL POP BC RET L02F3: CALL PUSHW L02F6: LD A,(HL) OR A MHALT: RET Z DEC HL DEC E LD A,(L0056) CP E JR C,L02F6 ; (-00bH) RET L0302: CALL PUSHW L0305: INC E INC HL LD A,(HL) OR A RET Z LD A,(L0057) CP E JR NC,L0305 ; (-00bH) RET L0311: LD HL,(L0054) SETDFL: CALL L02F3 LD D,E CALL L0305 LD A,(L005B) LD L,A LD A,E SUB D LD E,A LD H,D ADDP1: LD D,L RST 018H DB 01EH LD A,(0005CH) SUB D ADDP2: INC A LD D,A POP BC PUSH BC EXX PUSH HL LD HL,(L004F) EXX L0334: PUSH DE PUSH HL L0336: CALL BREAKX RST 018H DB 01CH INC HL LD (BC),A INC BC L033E: EXX DEC L ERRX: JR Z,L0354 ; (+012H) EXX DEC D JR NZ,L0336 ; (-010H) POP HL PUSH BC LD BC,00028H ADD HL,BC POP BC POP DE DEC E JR NZ,L0334 ; (-01dH) PUSH DE PUSH HL EXX L0354: EXX POP HL POP DE EXX POP HL EXX XOR A LD (BC),A LD L,C LD H,B POP DE PUSH DE PUSH HL OR A SBC HL,DE LD B,L POP HL LD A,020H LD D,A JP Z,CKHEX DEC HL L036D: LD A,(HL) OR A JR Z,L0376 ; (+005H) CP D JR NZ,L037D ; (+009H) LD (HL),000H L0376: DEC HL DJNZ L036D ; (-00cH) OR A JP CKHEX L037D: LD A,(HL) OR A JR NZ,L0383 ; (+002H) LD (HL),020H L0383: DEC HL DJNZ L037D ; (-009H) OR A JP CKHEX INC A JR Z,L0406 ; (+079H) DEC A JP Z,L041C L0391: CALL L0426 CALL SKPDE SETDNM: CALL L0648 CALL BREAKX LD D,A LD A,(L0060) LD E,A CALL POPRA XOR A DI OUT (LSE3),A LD (0E000H),A CPL LD (0E000H),A OUT (LSE1),A EI LD C,000H EX AF,AF' PUSH AF CALL L0459 LD A,000H L03BC: EX AF,AF' L03BD: LD B,010H L03BF: CALL L043C CALL L0459 BIT 1,A JR NZ,L03BD ; (-00cH) DJNZ L03BF ; (-00cH) BIT 0,A JR Z,L03DB ; (+00cH) BIT 2,A JR NZ,L03EC ; (+019H) EX AF,AF' DEC A JR NZ,L03BC ; (-01bH) LD A,006H JR L03EE ; (+013H) L03DB: PUSH HL PUSH DE PUSH BC LD HL,INKEY1 LD DE,L0B17 LD BC,0000AH L03E7: LDIR POP BC POP DE POP HL L03EC: LD A,040H L03EE: LD (003BBH),A L03F1: CALL L043C CALL L0494 OR A JR Z,L03F1 ; (-009H) LD (L005F),A LD C,A LD A,D CALL POPRA POP AF EX AF,AF' LD A,C RET L0406: CALL L0426 PUSH HL CALL L0494 LD HL,L005F OR A JR Z,L0419 ; (+006H) CP (HL) JR NZ,L0419 ; (+003H) POP HL XOR A RET L0419: LD (HL),A POP HL RET L041C: CALL L0426 CALL L0494 LD (L005F),A RET L0426: PUSH HL LD HL,(L1360) LD A,L CP H POP HL RET Z EX (SP),HL INC A LD (L1360),A LD HL,L1361 CALL ADDHLA LD A,(HL) POP HL RET L043C: DI OUT (LSE3),A LD A,(0E002H) OUT (LSE1),A EI RLCA RLCA LD A,C JR C,L0451 ; (+007H) OR A RET Z LD C,000H LD A,D DPALBK: JR L0456 ; (+005H) L0451: DEC A RET Z LD C,001H LD A,E L0456: JP POPRA L0459: CALL SKPDE LD DE,INKEY1 LD HL,L0B17 LD BC,L0A00 DI OUT (LSE3),A L0468: LD A,B ADD A,0EFH LD (0E000H),A CP FDPA LD A,(0E001H) JR NZ,L0477 ; (+002H) OR 07FH L0477: CP 0FFH JR Z,L047D ; (+002H) SET 0,C L047D: EX DE,HL CP (HL) LD (HL),A EX DE,HL JR Z,L0485 ; (+002H) SET 1,C L0485: CPL AND (HL) JR Z,L048B ; (+002H) SET 2,C L048B: INC HL INC DE DJNZ L0468 ; (-027H) LD A,C L0490: OUT (LSE1),A EI DGCOL: RET L0494: CALL SKPDE LD HL,L0B17 LD DE,INKEY1 PUSH HL PUSH DE LD BC,0000AH LDIR POP HL POP DE LD BC,L0AF9 DI OUT (LSE3),A LD A,C LD (0E000H),A NOP LD A,(0E001H) LD (DE),A L04B5: LD A,C LD (0E000H),A CP FDPA LD A,(0E001H) LD (DE),A JR Z,L04E4 ; (+023H) CPL AND (HL) L04C3: LD (HL),A INC DE INC HL DEC C DJNZ L04B5 ; (-014H) OUT (LSE1),A EI LD BC,L0A00 L04CF: DEC HL LD A,(HL) OR A JR NZ,L0507 ; (+033H) INC C DJNZ L04CF ; (-008H) LD B,00AH L04D9: DEC DE LD A,(DE) CP 0FFH JR NZ,L04E7 ; (+008H) L04DF: DJNZ L04D9 ; (-008H) L04E1: XOR A JR L0490 ; (-054H) L04E4: XOR A JR L04C3 ; (-024H) L04E7: LD A,B CP 002H JR NZ,L04F5 ; (+009H) L04EC: LD A,(DE) AND 081H DWIDTH: JR NZ,L04DF ; (-012H) LD A,01BH JR L0490 ; (-065H) L04F5: CP 001H JR Z,L04E1 ; (-018H) CP 000H JR NZ,L04DF ; (-01eH) LD A,(DE) AND 001H JR NZ,L04DF ; (-023H) LD A,(L005F) JR L0490 ; (-077H) L0507: PUSH AF LD A,B LD (004FAH),A LD A,(HL) LD (004FFH),A POP AF DEC B JR NZ,L054A ; (+036H) CALL L05B7 LD A,(00B18H) BIT 6,A JR Z,L04E1 ; (-03dH) BIT 0,A LD A,B JR NZ,L0525 ; (+002H) ADD A,005H L0525: CP 00AH JR NC,L04E1 ; (-048H) LD L,A LD H,000H ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD BC,L12C0 ADD HL,BC LD A,(HL) OR A JR Z,L04E1 ; (-057H) LD DE,L1360 LD A,001H LD (DE),A L053E: INC DE LD BC,00010H LDIR LD A,(01362H) JP L0490 L054A: CALL L05B7 LD A,C ADD A,A ADD A,A ADD A,A ADD A,B LD L,A LD H,000H LD A,(00B18H) BIT 6,A LD BC,L0B2B JR Z,L058E ; (+02fH) PUSH AF LD A,(L0060) CP 043H JR NZ,L056B ; (+004H) POP AF XOR 001H PUSH AF L056B: POP AF BIT 0,A JR NZ,L0573 ; (+003H) LD BC,L0B3D L0573: LD A,(L0060) CP 0FFH JR NZ,L0587 ; (+00dH) LD BC,L0B4F LD A,(00B18H) BIT 0,A JR Z,L0587 ; (+003H) LD BC,L0B61 L0587: CALL L13E0 LD A,C JP L0490 L058E: CALL L13E0 LD A,C CP 020H JP C,L0490 LD HL,L0B73 LD B,005H L059C: CP (HL) JR Z,L05B1 ; (+012H) INC HL DJNZ L059C ; (-006H) CP 040H JP C,L04E1 CP 05BH JP NC,L04E1 SUB 040H JP L0490 L05B1: LD A,020H SUB B JP L0490 L05B7: LD B,008H L05B9: RRCA JR C,L05BF ; (+003H) DJNZ L05B9 ; (-005H) RET L05BF: DEC B RET L05C1: LD A,0E8H DI OUT (LSE3),A LD (0E000H),A NOP LD A,(0E001H) OUT (LSE1),A EI AND 081H RET Z RLCA RET C JR L05C1 ; (-016H) L05D7: CALL SKPDE LD HL,(L0054) LD A,(L005B) CP L RET C CALL PUSHW LD A,(HL) OR A RET L05E8: CALL L05D7 RET Z L05EC: LD A,00DH JP L0BFF L05F1: CALL L0BFD LD A,(L0054) L05F7: SUB 00AH LBOUND: JR NC,L05F7 ; (-004H) ADD A,00AH RET Z JR L05F1 ; (-00fH) L0600: CALL IOOUT LD HL,(L0054) PUSH HL PUSH AF RST 018H DB 01EH POP AF RST 018H DB 01DH CALL POPRA SET 3,H LD DE,(0005DH) LD A,E OR D CALL POPRA POP HL INC L HCLSW: LD A,(0005CH) CP L JP NC,L07EC L0624: LD A,(L005B) LD L,A INC H PUSH HL CALL PUSHW LD (HL),001H POP HL LD A,(L0057) CP H JP NC,L07EC LD H,A PUSH HL CALL L0730 POP HL JP L07EC PUSHW: LD E,H LD D,000H LD HL,.HL ADD HL,DE RET L0648: LD HL,(L0054) PUSH DE PUSH AF LD D,LSD0 LD E,L LD A,H ADD A,A HCLS: ADD A,A ADD A,H LD L,A LD H,000H ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,DE L065B: POP AF POP DE RET L065E: ADD A,A LD HL,L0067 CALL ADDHLA CALL INDRCT JP (HL) L0669: LD B,D LD C,E L066B: LD DE,00028H EX DE,HL ADD HL,DE DEC B JR Z,L067E ; (+00bH) PUSH HL PUSH BC LD B,000H CALL L069E POP BC POP HL JR L066B ; (-013H) L067E: EX DE,HL LD E,C L0680: LD A,(L005D) LD D,A LD A,(0005EH) OR D LD D,A L0689: DI OUT (LSE3),A LD (HL),000H SET 3,H LD (HL),D RES 3,H OUT (LSE1),A EI INC HL DEC E JR NZ,L0689 ; (-011H) RET L069B: LD BC,00028H L069E: LD A,0B0H JR L06A4 ; (+002H) L06A2: LD A,0B8H L06A4: LD (006BCH),A PUSH HL PUSH DE PUSH BC RES 3,H RES 3,D CALL L06B8 POP BC POP DE POP HL SET 3,H SET 3,D L06B8: DI OUT (LSE3),A LDIR OUT (LSE1),A EI RET L06C1: LD HL,0D000H LD DE,0D7D0H CALL L069B LD HL,0D028H LD DE,0D000H LD B,032H L06D2: PUSH BC CALL L069B POP BC DJNZ L06D2 ; (-007H) LD HL,.HL LD D,H LD E,L LD A,(HL) INC HL LD BC,00031H LDIR LD (DE),A RET L06E7: LD HL,0D7CFH LD DE,0D7F7H LD B,032H L06EF: PUSH BC LD BC,00028H CALL L06A2 POP BC DJNZ L06EF ; (-00aH) LD HL,0D7D0H LD DE,0D000H CALL L069B LD HL,L00D9 LD D,H LD E,L DEC HL LD A,(DE) LD BC,00031H LDDR LD (DE),A RET L0710: LD HL,0D3E8H XOR A CALL POPRA SET 3,H LD A,(L005D) CALL POPRA LD DE,0D3E9H LD BC,L0027 CALL L069E CALL L06C1 XOR A LD (L00C0),A RET L0730: LD A,(L004E) OR A JR Z,L0710 ; (-026H) CALL L075F CALL L0669 LD A,(L0056) LD H,A CALL PUSHW LD A,(L0057) SUB E LD B,A LD (HL),000H INC HL LD D,H LD E,L INC DE CALL NZ,LDHLDE LD (HL),000H RET L0754: LD A,(L005B) LD L,A LD A,(L0056) LD H,A JP L07EC L075F: LD HL,(L005B) LD DE,(00056H) LD A,D SUB E INC A LD D,A LD A,H SUB L INC A LD E,A CALL L0754 JP L0648 CALL SKPDE LD A,(L004E) OR A JR NZ,L078B ; (+00eH) LD A,031H LD (L0057),A CALL L078B LD A,018H LD (L0057),A RET L078B: CALL L075F L078E: PUSH DE PUSH HL CALL L0680 POP HL LD BC,00028H ADD HL,BC POP DE DEC D JR NZ,L078E ; (-00eH) LD A,(L0056) LD H,A CALL PUSHW LD A,(L0057) SUB E ADD A,002H LD B,A JP ?CLRHL XOR A LD (0091FH),A LD HL,(L0054) PUSH HL INC H CALL PUSHW LD A,(L0057) LD D,A L07BD: LD A,(HL) OR A JR Z,L07C7 ; (+006H) INC HL INC E LD A,D CP E JR NC,L07BD ; (-00aH) L07C7: DEC E POP HL LD H,E JR L07DB ; (+00fH) LD HL,(L0054) JR L07DF ; (+00eH) LD HL,(L0054) INC L LD A,(0005CH) CP L JR NC,L07EC ; (+011H) L07DB: LD A,(L005B) LD L,A L07DF: INC H LD A,(L0057) CP H JR NC,L07EC ; (+006H) LD H,A PUSH HL CALL L0730 POP HL L07EC: LD (L0054),HL RET LD HL,(L0054) JR L0802 ; (+00dH) LD HL,(L0054) LD A,(L005B) CP L JR C,0080DH ; (+00fH) LD A,(0005CH) LD L,A L0802: LD A,(L0056) CP H JR C,0080FH ; (+007H) LD A,(L0056) LD H,A LD A,02DH LD A,025H JR L07EC ; (-026H) LD A,0EFH LD HL,0433EH LD HL,0FF3EH LD (L0060),A RET LD HL,(L0054) LD BC,(0005BH) LD A,L DEC L INC C CP C JR NC,L0837 ; (+00cH) PUSH HL CALL PUSHW LD A,(HL) POP HL INC L OR A JR Z,L0874 ; (+03fH) LD L,B DEC H L0837: LD DE,(00054H) LD (L0054),HL L083E: EX DE,HL LD A,(L005B) CP L JR C,L086D ; (+028H) L0845: PUSH HL CALL PUSHW LD A,(HL) POP HL OR A JR Z,L085D ; (+00fH) CALL L0882 PUSH HL LD A,(0005CH) LD L,A DEC H CALL L089A POP HL JR L0874 ; (+017H) L085D: LD A,(0005CH) LD L,A DEC H L0862: LD DE,(0005DH) LD A,E OR D LD E,A LD D,000H JR L089A ; (+02dH) L086D: CALL L0882 DEC BC CALL L0895 L0874: INC L LD A,(0005CH) CP L JR NC,L086D ; (-00eH) LD A,(L005B) LD L,A INC H JR L0845 ; (-03dH) L0882: PUSH HL RST 018H DB 01EH SET 3,H CALL BREAKX LD E,A RES 3,H CALL BREAKX LD D,A LD B,H LD C,L POP HL RET L0895: PUSH HL LD H,B LD L,C JR L089D ; (+003H) L089A: PUSH HL RST 018H DB 01EH L089D: SET 3,H LD A,E CALL POPRA RES 3,H LD A,D CALL POPRA LD B,H LD C,L POP HL RET L08AD: LD HL,(L0054) CALL L0302 DEC E LD H,E LD A,(0005CH) LD L,A RET CALL L08AD CALL L0882 LD A,LSPAL CP D JR Z,L08C8 ; (+003H) XOR A CP D RET NZ L08C8: LD BC,(0005BH) EX DE,HL LD HL,(L0054) OR A SBC HL,DE EX DE,HL JR Z,L0862 ; (-074H) LD A,C CP L JR NC,L08E4 ; (+00aH) DEC L CALL L0882 INC BC CALL L0895 JR L08C8 ; (-01cH) L08E4: PUSH HL LD L,B DEC H CALL L0882 EX (SP),HL CALL L089A POP HL JR L08C8 ; (-029H) LD HL,L0071 LD (L005D),HL L08F7: LD HL,L1800 LD (L0056),HL LD HL,L2700 LD (L005B),HL XOR A LD (L004E),A RET CALL SKPDE L090B: LD A,(DE) INC DE OR A RET Z LD C,A CP 005H JR Z,L0933 ; (+01fH) CP 006H JR Z,L0932 ; (+01aH) SUB 041H CP 01AH JR NC,HCURON ; (+00dH) LD A,000H OR A JR Z,HCURON ; (+008H) LD A,C LD HL,L08F7 CALL ADDHLA LD C,(HL) HCURON: LD A,C RST 018H DB 003H CP 00DH JR NZ,L090B ; (-027H) L0932: XOR A L0933: LD (0091FH),A JR L090B ; (-02dH) AND C SBC A,D SBC A,A HCUROF: SBC A,H SUB D XOR D SUB A SBC A,B AND (HL) XOR A XOR C CP B OR E FLASH: OR B OR A SBC A,(HL) AND B SBC A,L AND H SUB (HL) AND L CURMOV: XOR E AND E SBC A,E CP L AND D NOP NOP L0954: NOP L0955: PUSH DE PUSH HL LD (L0954),A LD (00952H),DE LD HL,0E007H DI OUT (LSE3),A LD (HL),0B4H LD (HL),074H DEC HL LD (HL),0C0H LD (HL),0A8H DEC HL LD (HL),002H LD (HL),000H L0972: LD HL,0E007H LD (HL),080H PONTCB: DEC HL LD E,(HL) LD D,(HL) PONTB: LD HL,0A8C0H OR A SBC HL,DE JR NZ,L0972 ; (-010H) LD HL,0E005H LD (HL),0F6H LD (HL),079H OUT (LSE1),A EI POP HL POP DE RET L098F: PUSH BC PUSH HL DI OUT (LSE3),A LD HL,0E007H LD (HL),080H LD (HL),040H DEC HL LD E,(HL) LD D,(HL) DEC HL LD C,(HL) LD B,(HL) OUT (LSE1),A EI PUSH BC LD A,D L09A6: OR E JR NZ,L09AC ; (+003H) LD DE,0A8C0H L09AC: LD HL,0A8C0H LD A,(L0954) OR A SBC HL,DE LD DE,L5460 CALL L09EB OR A LD DE,(00952H) RR D RR E PUSH AF ADD HL,DE LD DE,L5460 CALL L09EB LD C,A ADD HL,HL EX DE,HL POP AF LD A,C POP BC PUSH AF OR A LD HL,03CFBH SBC HL,BC JR C,L09DC ; (+001H) INC DE L09DC: POP AF JR NC,L09E0 ; (+001H) INC DE L09E0: EX DE,HL LD DE,0A8C0H CALL L09EB EX DE,HL POP HL POP BC RET L09EB: OR A SBC HL,DE JR NC,L09F2 ; (+002H) ADD HL,DE RET L09F2: XOR 001H RET L09F5: LD A,04EH DEC L RET Z LD A,056H DEC L RET Z LD A,05EH DEC L L0A00: RET Z LD A,066H DEC L RET L0A05: PUSH DE LD (00A23H),A LD DE,0FFFFH LD HL,0E002H DI OUT (LSE3),A L0A12: BIT 7,(HL) JR Z,L0A12 ; (-004H) L0A16: BIT 7,(HL) JR NZ,L0A16 ; (-004H) LD L,008H LD A,011H L0A1E: DEC A JR NZ,L0A1E ; (-003H) L0A21: INC DE BIT 0,(HL) JR Z,L0A21 ; (-005H) OUT (LSE1),A EI LD A,D OR A LD A,E JR Z,L0A30 ; (+002H) LD A,0FFH L0A30: LD (L0066),A POP DE POP HL SCF RET INC A PUSH HL LD L,A CALL L09F5 JR Z,L0A05 ; (-03aH) CALL L09F5 LD (00A75H),A LD (00A55H),A LD HL,0E002H DI OUT (LSE3),A L0A4E: BIT 7,(HL) JR Z,L0A4E ; (-004H) LD L,008H BIT 0,(HL) LD A,L JR Z,L0A5A ; (+001H) XOR A L0A5A: LD (00A7CH),A OUT (LSE1),A LD A,009H L0A61: PUSH AF XOR A L0A63: DEC A JR NZ,L0A63 ; (-003H) POP AF BINPUT: DEC A JR NZ,L0A61 ; (-009H) OUT (LSE3),A LD L,002H L0A6E: BIT 7,(HL) JR Z,L0A6E ; (-004H) LD L,008H BIT 0,(HL) LD A,L JR Z,L0A7A ; (+001H) XOR A L0A7A: LD L,A LD A,000H AND L LD (L0065),A OUT (LSE1),A EI GETL: POP HL OR A RET DI RET EI RET DS 110, 000H L0AF9: DS 7, 000H NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L0B17: NOP NOP NOP INKEY$: NOP NOP NOP NOP NOP NOP NOP INKEY1: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L0B2B: JP PE,0900BH RLA CALL M,00019H DEC SP LD A,(L180D) DJNZ L0B4A ; (+012H) LD DE,01413H CCF CPL L0B3D: LD HL,(0900CH) RLA EI DEC B NOP DEC HL LD HL,(0160DH) DEC D LD (DE),A L0B4A: LD DE,01413H ADD A,05FH L0B4F: JP (HL) INC C SUB B RLA LD L,B DEC B NOP ADD A,H JP (HL) DEC C LD D,015H LD (DE),A LD DE,01413H ADC A,A ADC A,E L0B61: LD L,D INC C SUB B RLA LD L,H ADD HL,DE NOP CP 089H DEC C LD D,015H LD (DE),A LD DE,01413H ADC A,D LD A,E L0B73: LD E,E LD E,H LD E,L LD E,(HL) CPL L0B78: SUB C DEC BC LD B,E LD D,D LD D,H NOP ADC A,D NOP NOP PUSH HL NOP PUSH HL NOP PUSH HL NOP PUSH HL NOP PUSH HL NOP INKEYF: XOR D DEC BC OR L DEC BC CALL NZ,0000BH RRCA LD C,E LD B,D NOP NOP ADD A,C NOP NOP PUSH HL NOP PUSH HL NOP PUSH HL NOP PUSH HL INKEY0: NOP PUSH HL NOP XOR D DEC BC PUSH HL NOP PUSH HL NOP RST 018H DB 00CH LD A,080H RET C JP C,0017DH RST 018H DB 017H RET EX AF,AF' LD HL,L0BFF L0BB9: LD A,(L1090) OR A JR Z,L0BC2 ; (+003H) LD HL,L0C43 L0BC2: EX AF,AF' JP (HL) LD A,(L0054) RET LD A,00DH L0BCA: PUSH AF LD A,(L1091) L0BCE: OR A JR NZ,L0BD4 ; (+003H) POP AF JR L0BFF ; (+02bH) L0BD4: POP AF JP L0F3E PUSH AF LD A,(L1091) OR A JR NZ,L0BE2 ; (+003H) POP AF JR L0C43 ; (+061H) L0BE2: POP AF JP L0F2E CALL SKPDE LD HL,L0BCA JR L0BF4 ; (+006H) L0BEE: CALL SKPDE LD HL,L0BFF L0BF4: LD A,(DE) OR A RET Z CALL L00FA INC DE JR L0BF4 ; (-009H) L0BFD: LD A,020H L0BFF: CALL IOOUT L0C02: LD C,A LD A,(L004D) OR A JR Z,L0C3A ; (+031H) LD A,C CP 020H JR NC,L0C37 ; (+029H) LD DE,(00054H) LD HL,(L005B) CP 014H JR Z,L0C21 ; (+008H) CP 012H JR NZ,L0C26 ; (+009H) LD HL,(L0056) LD E,D L0C21: LD A,L CP E JP NC,L0D3F L0C26: LD A,C LD HL,L0C8F ADD A,L LD L,A JR NC,L0C2F ; (+001H) INC H L0C2F: LD A,(HL) INC A JR Z,L0C3A ; (+007H) DEC A JP Z,L0D3F L0C37: CALL L0C60 L0C3A: LD A,C CP 020H JP C,L065E JP L0600 L0C43: CALL IOOUT LD C,A CP 00DH JR Z,L0C02 ; (-049H) CALL L0600 LD A,(L004D) OR A RET Z LD A,C CP 011H JR C,L0C8A ; (+032H) CP 017H JR C,L0C8C ; (+030H) CP 020H JR C,L0C8A ; (+02aH) L0C60: CP 060H JR C,L0C8C ; (+028H) CALL CHKACC ADD HL,BC ADD A,B LD A,E ADD A,08BH RST 010H RST 008H CALL M,0FFFBH JR Z,L0C8C ; (+019H) CP 092H JR C,L0C8A ; (+013H) CALL CHKACC ADD HL,BC SBC A,C SUB L XOR H AND A OR H OR C OR (HL) OR L CP H JR Z,L0C8A ; (+004H) CP 0BFH JR C,L0C8C ; (+002H) L0C8A: LD A,02EH L0C8C: JP L0FA9 L0C8F: NOP NOP NOP NOP RST 038H RST 038H RST 038H DEC E NOP NOP NOP NOP NOP DEC C NOP NOP NOP LD A,(BC) INC BC JR NZ,00CB2H ; (+00eH) NOP NOP RST 038H NOP RST 038H RST 038H DEC C RST 038H NOP NOP NOP L0CAF: DI XOR A LD (L004D),A LD (L1091),A LD SP,L0000 OUT (LSE1),A LD A,004H RST 018H DB 003H L0CC0: LD HL,L1B18 XOR A LD (L0CC0),A LD D,A LD E,A RST 018H DB 026H LD DE,$CMT LD A,B DEC A JR Z,L0CDB ; (+009H) LD DE,$FD DEC A JR Z,L0CDB ; (+003H) LD DE,$QD L0CDB: LD A,C RST 018H DB 03AH JP L00DA LD HL,(L1072) ADD HL,DE LD (L1072),HL LD HL,(L1074) ADD HL,DE LD (L1074),HL LD HL,(L1076) ADD HL,DE LD (L1076),HL LD HL,(L1078) ADD HL,DE LD (L1078),HL LD HL,(L107A) ADD HL,DE LD (L107A),HL RET L0D05: LD HL,(00B15H) L0D08: LD A,H OR L JR Z,L0D20 ; (+014H) PUSH DE EX DE,HL LD HL,0E004H DI OUT (LSE3),A LD (HL),E LD (HL),D LD A,001H LD (0E008H),A OUT (LSE1),A EI POP DE RET L0D20: LD A,036H BRKEY: DI OUT (LSE3),A LD (0E007H),A XOR A LD (0E008H),A OUT (LSE1),A EI RET L0D30: PUSH AF PUSH BC AND 00FH LD B,A LD A,008H SUB B LD (L119E),A POP BC POP AF RET L0D3E: XOR A L0D3F: PUSH HL LD HL,L04EC JR Z,L0D4E ; (+009H) CP 001H L0D47: JR Z,L0D59 ; (+010H) CALL L0D08 POP HL RET L0D4E: CALL L0D08 LD HL,L2710 L0D54: DEC HL LD A,H OR L JR NZ,L0D54 ; (-005H) L0D59: CALL L0D20 POP HL RET $USR: DS 2, 000H ; $USR device descriptor L0D60: DB "USR",000H,09FH DS 2, 000H DB LSE5 DB 000H DB 077H DB 00DH DB 077H DB 00DH DB LSE5 DB 000H DB LSE5 DB 000H DB 086H DB 00DH DB 086H DB 00DH DB LSE5 DB 000H DB 021H DB 001H DB 010H DB 0DFH DB 013H LD A,D OR E JP Z,01F9AH LD (ZWRK1),DE RET LD HL,(ZWRK1) JP (HL) DS 83, 000H EQTBL: DS 25, 000H $KB: DS 10, 000H L0E00: DS 16, 000H L0E10: DS 46, 000H L0E3E: DS 35, 000H CRT1C: DS 82, 000H PLTOTX: DS 77, 000H RST 030H CPL LD C,H LD D,B LD D,H NOP ADC A,D NOP NOP PUSH HL NOP PUSH HL NOP PUSH HL NOP PUSH HL NOP PUSH HL NOP NOP NOP DAA RRCA ADD HL,DE RRCA LD A,(L1095) RET L0F1D: LD A,00DH CALL L0FA9 XOR A LD (L1095),A RET LD HL,L1090 BIT 0,(HL) JR Z,L0F3E ; (+010H) L0F2E: CALL IOOUT LD B,A LD A,(L004D) OR A LD A,B LD E,0FFH JR Z,L0F4E ; (+013H) RST 018H DB 004H RET L0F3E: CALL IOOUT LD B,A LD A,(L004D) OR A LD A,B LD E,000H JR Z,L0F4E ; (+003H) RST 018H DB 003H RET L0F4E: LD A,(L1097) CP 001H LD A,044H JP NZ,00180H LD A,B CP 00DH JR Z,L0F1D ; (-040H) LD HL,L1095 INC (HL) SUB 005H CP 002H JR C,L0F7C ; (+015H) LD A,B CP 020H JR NC,L0FB0 ; (+044H) BIT 0,E JR Z,L0F80 ; (+010H) SUB 011H CP 006H JR C,L0FB1 ; (+03bH) SUB QDPC CP 002H JR NC,L0FAE ; (+032H) L0F7C: LD A,02EH JR L0FB0 ; (+030H) L0F80: LD HL,L1095 DEC (HL) LD A,B CP 015H LD B,00FH JR Z,L0FB1 ; (+026H) CP 011H LD B,009H JR Z,L0FB1 ; (+020H) CP 012H LD B,00BH JR Z,L0FB1 ; (+01aH) CP 016H JR NZ,L0FB0 ; (+015H) LD A,00CH CALL L0FB0 LD A,00AH CALL L0FB0 LD A,003H JR L0FB0 ; (+007H) L0FA9: CALL IOOUT JR L0FB0 ; (+002H) L0FAE: LD A,020H L0FB0: LD B,A L0FB1: CALL L0FCA LD A,B DI CALL L0FBB EI RET L0FBB: OUT (0FFH),A LD A,080H OUT (0FEH),A LD A,001H CALL L0FCB L0FC6: XOR A OUT (0FEH),A RET L0FCA: XOR A L0FCB: CALL SKPDE LD C,A LD B,00EH L0FD1: LD HL,0E678H L0FD4: IN A,(0FEH) AND 00DH CP C RET Z DEC HL LD A,H OR L NOP NOP JR NZ,L0FD4 ; (-00dH) DJNZ L0FD1 ; (-012H) XOR A LD (L004D),A CALL L0FC6 LD A,041H JP L0182 DS 17, 000H L1000: NOP L1001: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L1012: NOP NOP L1014: NOP NOP NOP NOP L1018: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L103E: NOP NOP L1040: LD (BC),A NOP L1042: NOP L1043: NOP L1044: NOP NOP L1046: NOP NOP NOP NOP L104A: NOP NOP NOP NOP NOP NOP L1050: LD BC,L0000 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L1069: NOP NOP NOP LD A,B DEC BC NOP RRCA L1070: NOP NOP L1072: NOP NOP L1074: NOP NOP L1076: NOP NOP L1078: NOP NOP L107A: NOP NOP L107C: NOP NOP L107E: NOP NOP NOP RST 038H NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L1090: NOP L1091: NOP LD BC,L0E00 L1095: NOP NOP L1097: LD BC,L0000 DS 86, 000H L10F0: DS 78, 000H L113E: DS 84, 000H DB 0EFH DS 4, 000H L1197: DS 6, 000H DB 001H L119E: DB 004H DB 005H DS 3, 000H L11A3: DB 000H L11A4: DS 124, 000H NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L123E: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L1277: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L12C0: RLCA LD D,D LD D,L LD C,(HL) JR NZ,012E6H ; (+020H) JR NZ,L12D5 ; (+00dH) NOP NOP NOP NOP NOP NOP NOP NOP DEC B LD C,H LD C,C LD D,E LD D,H L12D5: JR NZ,L12D7 ; (+000H) L12D7: NOP NOP NOP NOP NOP NOP NOP NOP NOP DEC B LD B,C LD D,L LD D,H LD C,A JR NZ,L12E7 ; (+000H) L12E7: NOP NOP NOP NOP NOP NOP NOP NOP NOP LD B,052H LD B,L LD C,(HL) LD D,L LD C,L JR NZ,L12F8 ; (+000H) L12F8: DS 8, 000H INC B LD B,H LD C,C LD D,D JR NZ,L1306 ; (+000H) L1306: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DEC B LD B,E LD C,B LD D,D INC H JR Z,L1317 ; (+000H) L1317: NOP NOP NOP NOP NOP NOP NOP NOP NOP EX AF,AF' LD B,H LD B,L LD B,(HL) JR NZ,L1371 ; (+04bH) LD B,L LD E,C JR Z,L132A ; (+000H) L132A: NOP NOP NOP NOP NOP NOP INC B LD B,E LD C,A LD C,(HL) LD D,H NOP NOP NOP NOP NOP NOP NOP NOP NOP L133E: NOP NOP LD B,053H LD B,C LD D,(HL) LD B,L JR NZ,L1367 ; (+020H) NOP NOP NOP NOP NOP NOP NOP NOP NOP LD B,04CH LD C,A LD B,C LD B,H JR NZ,L1377 ; (+020H) NOP NOP NOP NOP NOP NOP NOP NOP NOP L1360: NOP L1361: NOP NOP NOP NOP NOP NOP L1367: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L1371: NOP CALL L13D8 JR Z,L1385 ; (+00eH) L1377: CP 010H JR C,L139B ; (+020H) CP 080H JR Z,L13A1 ; (+022H) CP 0C0H JR Z,L13A1 ; (+01eH) JR L1391 ; (+00cH) L1385: CP 003H JR Z,L139B ; (+012H) CP 005H JR Z,L139E ; (+011H) CP 006H JR Z,L139E ; (+00dH) L1391: DI OUT (LSE2),A CALL L0BB9 OUT (LSE0),A EI RET L139B: LD A,LSPAL RET L139E: ADD A,0C9H RET L13A1: SUB 040H RET L13A4: CP LSPAL JR NC,L13CF ; (+027H) CP 073H JR Z,L139B ; (-011H) CALL L13D8 JR Z,L13BB ; (+00aH) CP 040H JR Z,L13D5 ; (+020H) CP 080H JR Z,L13D5 ; (+01cH) JR L13C3 ; (+008H) L13BB: CP LSDMD JR Z,L13D2 ; (+013H) CP LSSCR JR Z,L13D2 ; (+00fH) L13C3: DI OUT (LSE2),A CALL L0BCE OUT (LSE0),A EI CP LSPAL RET NZ L13CF: LD A,020H RET L13D2: SUB 0C9H RET L13D5: ADD A,040H RET L13D8: PUSH HL LD HL,L0036 BIT 6,(HL) POP HL RET L13E0: PUSH AF LD A,L SUB 008H JR C,L13EA ; (+004H) SUB 030H JR C,L13F1 ; (+007H) L13EA: ADD A,00AH LD L,A ADD HL,BC LD C,(HL) POP AF RET L13F1: LD A,(BC) PUSH AF INC BC LD A,(BC) LD B,A POP AF LD C,A ADD HL,BC DI OUT (LSE2),A LD A,(HL) OUT (LSE0),A EI CALL L13A4 LD C,A POP AF RET PUSH HL PUSH BC PUSH DE LD DE,L2710 CALL L142C LD DE,003E8H CALL L142C LD DE,L0064 CALL L142C LD DE,0000AH CALL L142C LD A,L POP DE OR 030H LD (DE),A INC DE XOR A LD (DE),A POP BC POP HL RET L142C: LD A,0FFH L142E: INC A OR A SBC HL,DE JR NC,L142E ; (-006H) ADD HL,DE OR A JR NZ,L143B ; (+003H) OR B RET Z XOR A L143B: LD B,001H OR 030H POP DE EX (SP),HL LD (HL),A INC HL EX (SP),HL PUSH DE RET CALL TEST1 DB 024H JR Z,L1476 ; (+02aH) LD DE,L0000 L144F: CALL HLFTCH SUB 030H CP 00AH RET NC INC HL PUSH HL LD H,D LD L,E ADD HL,HL JR C,L1471 ; (+013H) ADD HL,HL JR C,L1471 ; (+010H) ADD HL,DE JR C,L1471 ; (+00dH) ADD HL,HL JR C,L1471 ; (+00aH) LD E,A LD D,000H ADD HL,DE JR C,L1471 ; (+004H) EX DE,HL POP HL JR L144F ; (-022H) L1471: LD A,002H JP L0182 L1476: LD DE,L0000 L1479: LD A,(HL) CALL L1491 RET C INC HL EX DE,HL ADD HL,HL JR C,L1471 ; (-012H) ADD HL,HL JR C,L1471 ; (-015H) ADD HL,HL JR C,L1471 ; (-018H) ADD HL,HL JR C,L1471 ; (-01bH) ADD A,L LD L,A EX DE,HL JR L1479 ; (-018H) L1491: SUB 030H CP 00AH CCF RET NC SUB 011H CP 006H CCF RET C ADD A,00AH RET CALL L14AD CP 020H RET NZ L14A6: CALL L14AD OR A JR Z,L14A6 ; (-006H) RET L14AD: RST 018H DB 00EH JR Z,L14B8 ; (+007H) LD A,0FFH RST 018H DB 00DH CP 01BH RET NZ L14B8: JP 0017DH RET L14BC: CALL SKPDE LD HL,L11A4 LD B,000H PUSH HL CALL LDHLDE POP DE LD (014DAH),SP LD SP,L10F0 DI OUT (LSE4),A RST 030H OUT (LSE0),A OUT (LSE1),A EI LD SP,L0000 RET LD (DDEV),DE LD (L1069),A RET LD C,A RST 018H DB 020H RST 018H DB 002H BIT 7,C JR Z,L14F8 ; (+00aH) LD HL,L11A4 PUSH HL CALL L1535 POP DE RST 018H DB 005H L14F8: LD A,C AND 07FH JR L14FF ; (+002H) L14FD: LD A,045H L14FF: LD DE,L1554 L1502: DEC A JR Z,L150F ; (+00aH) EX AF,AF' L1506: LD A,(DE) INC DE OR A JP P,L1506 EX AF,AF' JR L1502 ; (-00dH) L150F: LD A,(DE) CP 080H JR Z,L14FD ; (-017H) L1514: LD A,(DE) OR A JP M,L151F CALL L152A INC DE JR L1514 ; (-00bH) L151F: AND 07FH CALL L152A LD DE,L179E RST 018H DB 005H RET L152A: PUSH DE LD DE,L1533 LD (DE),A RST 018H DB 005H POP DE RET L1533: NOP NOP L1535: LD DE,(ZEQT) INC DE INC DE RST 018H DB 017H CALL LDHLDE LD A,(L1046) ADD A,031H LD (HL),A LD A,(01051H) AND 00FH JR Z,L154E ; (+001H) INC HL L154E: LD (HL),03AH DB 023H DB 036H DB 000H DB 0C9H L1554: DB 053H,005H,"YNTA",0D8H,04FH,005H,"VER FLO",0D7H,049H,005H DS 2, 04CH DB "EGAL DAT",0C1H,054H,005H,"YPE MISMATC",0C8H,053H,005H,"TRING LENGT",0C8H,04DH,005H,"EMORY CAPACIT",0D9H,041H,005H DS 2, 052H DB "AY DEF",0AEH,04CH,005H,"INELENGT",0C8H,080H,"GOSUB ",005H,"NESTIN",0C7H,"FOR-NEX",0D4H,"DEF FN ",005H,"NESTIN",0C7H,"NEX",0D4H,"RETUR" DB LSDMD DB 055H,005H,"N DEF. FUNCTIO" DB LSDMD DB 055H,005H,"N DEF. LIN",0C5H,043H,005H,"AN'T ",006H,"CON",0D4H,04DH,005H,"EMORY PROTECTIO" DB LSDMD DB 049H,005H,"NSTRUCTIO" DB LSDMD DB 043H,005H,"AN'T ",006H,"RESUM",0C5H,"RESUM",0C5H DS 2, 080H DB "REA",0C4H,"SWAP ",005H,"LEVE" DB LSWF DS 2, 080H DB 053H,005H,"YSTEM I",0C4H,046H,005H,"RAMIN",0C7H,04FH,005H,056H,045H DS 2, 052H DB 055H DB LSDMD DB 050H,005H,"ARIT",0D9H DS 8, 080H DB 046H,005H,"ILE NOT FOUN",0C4H,048H,005H,"ARDWAR",0C5H,041H,005H,"LREADY EXIS",0D4H,041H,005H,"LREADY OPE" DB LSDMD DB 04EH,005H,"OT OPE" DB LSDMD DB 080H,057H,005H,"RITE PROTEC",0D4H DS 3, 080H DB 04EH,005H,"OT READ",0D9H,054H,005H DS 2, 04FH DB " MANY FILE" DB LSD3 DB 044H,005H,"ISK MISMATC",0C8H,04EH,005H,"O FILE SPAC",0C5H,055H,005H,"NFORMA",0D4H,054H,005H DS 2, 04FH DB " LONG FIL",0C5H DS 2, 080H DB 044H,005H,"EV. NAM",0C5H,043H,005H,"AN'T EXECUT",0C5H,049H,005H DS 2, 04CH DB "EGAL FILENAM",0C5H,049H,005H DS 2, 04CH DB "EGAL FILEMOD",0C5H,080H,04FH,005H,"UT OF FIL",0C5H,04CH,005H,"OGICAL NUMBE" DB LSD2 DB "LPT:" L1772: DB 04EH,005H,"OT READ",0D9H DS 2, 080H DB 044H,005H,"EV. MOD",0C5H,055H,005H,"NPRINTABL",0C5H,043H,005H,"HECK SU" DB LSRF L179E: DB 020H DB 005H DB 045H DS 2, 052H DB 04FH LD D,D DS 91, 000H L1800: JP L4000 L1803: LD A,(L1042) CP 088H RET L1809: NOP NOP L180B: NOP NOP L180D: NOP NOP CALL L181A CALL L1821 L1815: XOR A LD (L1FC0),A RET L181A: LD A,(L1042) LD (L1FC0),A RET L1821: CALL SKPDE LD A,(L1050) BIT 7,A LD HL,L1848 L182C: JR Z,L183D ; (+00fH) BIT 3,A LD HL,L1835 JR NZ,L183D ; (+008H) L1835: LD IX,(ZOUT) CALL IOCALL RET L183D: LD A,B L183E: OR A RET Z LD A,(DE) CALL L00FA INC DE DEC B JR L183D ; (-00bH) L1848: CALL SKPDE LD E,(IY+040H) LD D,(IY+041H) LD HL,(L180B) ADD HL,DE LD (HL),A INC DE LD HL,(ZKL) OR A SBC HL,DE CALL Z,L1871 LD (IY+040H),E LD (IY+041H),D INC (IY+014H) RET NZ INC (IY+015H) RET NZ JP 01F91H L1871: PUSH BC LD B,002H L1874: CALL L1D15 LD IX,L1835 JR Z,L1881 ; (+004H) LD IX,L2907 L1881: LD A,B CALL L18B6 CALL L1890 INC (IY+04EH) LD DE,L0000 POP BC RET L1890: JP (IX) L1892: LD A,01AH LD E,(IY+040H) LD D,(IY+041H) L189A: LD HL,(L180B) ADD HL,DE LD (HL),A INC DE LD HL,(ZKL) XOR A SBC HL,DE JR NZ,L189A ; (-00eH) PUSH BC LD HL,(L180B) DEC HL LD (HL),0FFH DEC HL LD (HL),0FFH LD B,006H JR L1874 ; (-042H) L18B6: LD BC,(ZKL) INC BC INC BC LD HL,(L180B) DEC HL DEC HL LD DE,(01809H) RET L18C6: OR 0AFH LD IX,(ZCL) CALL IOCALL RET CALL L1803 RET NZ PUSH DE LD DE,L11A4 CALL L026A LD (0193CH),DE POP DE RET NC JP 0017DH PUSH HL PUSH DE CALL L181A LD HL,(L1040) INC HL BIT 7,(HL) PUSH HL LD B,000H SCF CALL Z,L1913 POP HL CALL C,L1908 POP DE PUSH AF CALL L1815 LD L,B LD H,000H ADD HL,DE LD (HL),000H POP AF POP HL RET L1908: SET 7,(HL) LD HL,01051H BIT 4,(HL) RET Z JP 01FA0H L1913: CALL L1803 JR Z,L193B ; (+023H) LD A,(L1050) BIT 7,A LD HL,L1989 JR Z,L1975 ; (+053H) BIT 2,A LD HL,L1929 JR NZ,L1975 ; (+04cH) L1929: LD IX,(ZINP) CALL IOCALL RET L1931: LD A,03FH RST 018H DB 003H LD A,020H RST 018H DB 003H RST 018H DB 034H L193B: LD HL,L0000 L193E: CALL HLFTCH OR A JR Z,L1931 ; (-013H) LD C,000H RST 018H DB 036H LD (0193CH),HL RET LD B,000H CALL TEST1 DB 022H JR NZ,L1967 ; (+013H) L1954: LD A,(HL) OR A RET Z INC HL CP 022H JR Z,L1961 ; (+005H) LD (DE),A INC DE INC B JR L1954 ; (-00dH) L1961: CALL TEST1 DB 02CH OR A RET L1967: LD A,(HL) OR A RET Z CP C RET Z INC HL CP 02CH RET Z LD (DE),A INC DE INC B JR L1967 ; (-00eH) L1975: LD (0197BH),HL LD B,000H L197A: CALL L0000 RET C CP 00DH RET Z LD (DE),A INC DE INC B JR NZ,L197A ; (-00cH) JP 01F76H L1989: CALL SKPDE LD E,(IY+040H) LD D,(IY+041H) LD HL,(ZKL) OR A SBC HL,DE CALL Z,L19B4 RET C LD L,(IY+04EH) LD H,(IY+04FH) XOR A SBC HL,DE SCF RET Z LD HL,(L180B) ADD HL,DE LD A,(HL) INC DE LD (IY+040H),E LD (IY+041H),D RET L19B4: CALL L1D15 JP NZ,L2A4C OR 0AFH CALL L18B6 CALL L1929 RET C LD A,(HL) INC HL AND (HL) LD (HL),0FFH INC A LD DE,L0000 RET NZ PUSH HL LD HL,(L180D) LD BC,(ZKL) L19D5: DEC HL DEC BC LD A,(HL) OR A JR Z,L19D5 ; (-006H) POP HL LD (HL),B DEC HL LD (HL),C RET CALL SKPDE LD HL,L1A2D CP 088H JR Z,L19F4 ; (+00aH) LD HL,L1A35 CP 089H JR Z,L19F4 ; (+003H) RST 018H DB 029H RET C L19F4: LD (L1040),HL LD DE,L1042 LD BC,00008H LDIR LD (L1809),HL PUSH HL POP IY LD DE,L1000 CALL L1C54 PUSH HL LD HL,(L1044) LD DE,L104A LD BC,0001DH LDIR POP HL LD BC,00010H ADD HL,BC LD (L180B),HL LD BC,(ZKL) ADD HL,BC LD (L180D),HL LD A,(L1043) AND 00FH RET L1A2D: ADC A,B INC BC LD A,B DEC BC NOP NOP NOP NOP L1A35: ADC A,C LD (BC),A NOP RRCA NOP NOP NOP NOP LD HL,L11A4 PUSH HL LD A,B OR A CALL NZ,LDHLDE LD (HL),000H LD HL,L0B78 JR L1A50 ; (+003H) L1A4D: LD HL,L0000 L1A50: LD A,L OR H JR Z,L1A89 ; (+035H) LD (01A84H),HL CALL LDDEMI LD (01A4EH),DE LD DE,L11A4 EX DE,HL L1A62: LD A,(DE) OR A JR Z,L1A6D ; (+007H) CP (HL) JR NZ,L1A4D ; (-01cH) INC HL INC DE JR L1A62 ; (-00bH) L1A6D: LD A,(HL) INC HL CP 03AH LD C,000H JR Z,L1A82 ; (+00dH) SUB 031H CP 009H JR NC,L1A4D ; (-02eH) LD C,A LD A,(HL) INC HL CP 03AH JR NZ,L1A4D ; (-035H) L1A82: EX (SP),HL LD HL,L0000 LD A,C JR L1A9B ; (+012H) L1A89: POP HL PUSH HL L1A8B: LD A,(HL) INC HL CP 03AH JP Z,01F94H OR A JR NZ,L1A8B ; (-00aH) LD HL,(DDEV) LD A,(L1069) L1A9B: LD (L1044),HL PUSH HL LD (L1046),A LD DE,L104A LD BC,0001DH LDIR LD B,A LD A,(01051H) AND 007H CP B JP C,01F94H LD A,B POP DE POP HL RET CALL SKPDE RST 018H DB 02CH EX DE,HL LD HL,L1001 LD B,01FH CALL ?CLRHL LD HL,L1000 RST 018H DB 017H CALL L1EB4 LD HL,L1050 BIT 4,(HL) RET Z INC HL BIT 7,(HL) RET NZ LD A,(L1001) CP 00DH JP Z,BC_ERR_HOOK ; !BC hook: L1F6A cascade path RET CALL SKPDE CALL L1AEF LD B,000H CALL L1B97 JP L2D08 L1AEF: LD A,(L1042) RST 018H DB 029H JP NC,01F7CH CALL L1C5B LD HL,L005D LD A,(L1050) LD DE,(ZKL) INC DE INC DE BIT 7,A JR NZ,L1B0B ; (+001H) ADD HL,DE L1B0B: LD A,(L1043) BIT 2,A JR Z,L1B13 ; (+001H) ADD HL,DE L1B13: EX DE,HL LD A,(L1042) RST 018H L1B18: DB 02AH LD (L1FC0),A LD (L1040),HL EX DE,HL LD HL,L1042 LD BC,00008H LDIR LD (01809H),DE PUSH DE POP IY LD HL,L1000 CALL L1C54 LD HL,00010H ADD HL,DE LD (L180B),HL LD DE,(ZKL) ADD HL,DE LD (L180D),HL CALL L1D15 JP NZ,L2B7F LD A,(L1043) BIT 2,A JP NZ,YP_HOOK_A ; !Y source A: L1043 bit2 BIT 1,A LD IX,(ZWO) JR NZ,L1B65 ; (+00bH) LD A,(L1050) BIT 7,A JR Z,L1B6B ; (+00aH) LD IX,(ZRO) L1B65: LD HL,L1000 JP IOCALL L1B6B: CALL L1C39 JP 019BBH CALL SKPDE LD IY,L0100 LD (L1042),IY LD IY,L1000 CALL L1D15 LD HL,L2B7A JR NZ,L1B8B ; (+003H) LD HL,L1C39 L1B8B: CALL L00FA LD B,080H CALL L1B97 LD A,(L1000) RET L1B97: LD A,(L1000) CP 005H RET C LD A,(L1012) AND 080H CP B RET Z JP 01F9DH L1BA7: CALL SKPDE OR A JR Z,L1BED ; (+040H) CALL L1BB3 JP L2D08 L1BB3: RST 018H DB 02EH RET C CALL L181A PUSH AF CALL L1D15 JR NZ,L1BE1 ; (+022H) BIT 7,A LD A,B JR Z,L1BD4 ; (+010H) OR A LD IX,(ZKL) JR Z,L1BCF ; (+004H) LD IX,(ZCL) L1BCF: CALL IOCALL JR L1BE4 ; (+010H) L1BD4: OR A JR Z,L1BE4 ; (+00dH) LD A,(L1043) BIT 1,A CALL NZ,L1892 JR L1BE4 ; (+003H) L1BE1: CALL L2BEC L1BE4: POP AF RST 018H DB 02BH RET CALL SKPDE LD B,000H L1BED: LD C,08EH L1BEF: LD A,C PUSH BC RST 018H DB 029H CALL NC,L1BB3 POP BC DEC C JR NZ,L1BEF ; (-00bH) JP L1FAB L1BFD: CALL SKPDE LD A,(L1050) BIT 6,A JP Z,YP_HOOK_B ; !Y source B: L1050 bit6=0 CALL 018C7H LD A,(ZDIRMX) LD B,A L1C0F: LD HL,L11A4 PUSH BC LD IX,(ZRO) CALL IOCALL POP BC SET 0,A RET C PUSH IY POP DE CALL L1E9D LD A,(HL) RET Z DJNZ L1C0F ; (-019H) XOR A SCF RET L1C2B: CALL L1C5B CALL L1BFD JP NC,01F79H OR A JP Z,01F85H RET L1C39: CALL L1C5B CALL L1BFD JP C,01F73H CALL SKPDE LD HL,L11A4 PUSH IY POP DE PUSH HL CALL L1C54 POP HL LD DE,L1000 LD A,(HL) L1C54: LD BC,00040H LDIR OR A RET L1C5B: LD IX,L1C9D L1C5F: LD (01C99H),IX CALL SKPDE LD A,(L1042) LD C,A LD HL,(L1072) PUSH HL L1C6E: POP HL LD A,(HL) OR A RET Z LD B,A INC HL CALL LDDEMI PUSH HL ADD HL,DE EX (SP),HL CP 08FH JR NC,L1C6E ; (-010H) CP C JR Z,L1C6E ; (-013H) INC HL LD A,(HL) EX AF,AF' INC HL LD DE,L1044 PUSH BC LD BC,00300H L1C8C: LD A,(DE) SUB (HL) OR C LD C,A INC DE INC HL DJNZ L1C8C ; (-008H) POP BC JR NZ,L1C6E ; (-029H) LD A,B CALL L0000 JR L1C6E ; (-02fH) L1C9D: LD A,(01051H) BIT 6,A JP NZ,01F7CH BIT 5,A RET Z EX AF,AF' LD B,A LD A,(L1043) AND B BIT 1,A RET Z JP 01F7CH JP SVC30_DBG ; Was: CALL L1D15 / JP NZ,RFS_SVC30_HOOK NOP NOP NOP SVC30_FD: LD BC,(ELMD20) PUSH BC XOR A LD IX,(ZINP) CALL IOCALL POP BC RET JP SVC32_FIX ; Was: LD A,(01051H) / BIT 7,A / JP Z,01F97H NOP ; Padding (original was 8 bytes, now 3+1+1=5+...) NOP NOP NOP NOP LD BC,(ELMD20) JP L313A LD A,(L1000) CP 005H JR C,L1CE4 ; (+005H) LD A,080H LD (L1012),A L1CE4: CALL L1D15 JP NZ,L2AE0 BIT 7,A JP NZ,YP_HOOK_C ; !Y source C: device setup bit7 PUSH DE LD HL,L0200 LD (L1042),HL CALL L1C5B LD HL,L1000 PUSH HL POP IY LD IX,(ZWO) CALL IOCALL LD BC,(ELMD20) POP HL LD A,004H LD IX,(ZOUT) CALL IOCALL RET L1D15: LD A,(L1050) BIT 5,A RET CALL SKPDE OR A JR NZ,L1D6B ; (+04aH) LD HL,L0100 LD (L1042),HL CALL L1C5B LD HL,L1050 BIT 7,(HL) JP NZ,YP_HOOK_D ; !Y source D: L1050 bit7 BIT 5,(HL) JP NZ,RFS_BIT5PATH INC HL BIT 7,(HL) JP NZ,YP_HOOK_E ; !Y source E: L1051 bit7 LD HL,L2000 LD BC,00008H L1D43: CALL ?CLRHL DEC C JR NZ,L1D43 ; (-006H) CALL 018C7H LD A,(ZDIRMX) LD B,A LD HL,L2000 L1D53: PUSH BC LD IX,(ZRO) CALL IOCALL PUSH AF LD BC,00020H ADD HL,BC LD (HL),000H POP AF POP BC JR C,L1D68 ; (+002H) DJNZ L1D53 ; (-015H) L1D68: JP L18C6 L1D6B: LD (01E13H),A XOR A LD (L1090),A LD HL,L11A4 PUSH HL LD DE,L1E1D LD B,00EH CALL LDHLDE CALL L1535 LD (HL),020H INC HL LD (HL),020H INC HL EX DE,HL CALL L1D15 LD IX,(ZFREE) JR Z,L1D95 ; (+004H) LD IX,RFS_FREE_HOOK L1D95: CALL IOCALL JR C,L1DA8 ; (+00eH) LD H,B LD L,C LD B,000H RST 018H DB 016H LD HL,L1E2B LD B,009H CALL LDDEHL L1DA8: EX DE,HL LD (HL),00DH INC HL LD (HL),000H POP DE CALL L1E12 LD B,040H LD HL,L2000 L1DB7: CALL L1DC3 LD DE,00020H ADD HL,DE DJNZ L1DB7 ; (-009H) JP L2D08 L1DC3: CALL SKPDE LD A,(HL) OR A RET Z RET M LD DE,L11A4 PUSH DE LD A,020H LD B,026H CALL ?SETDE LD A,(HL) CP 00CH JR C,L1DDC ; (+002H) LD A,00CH L1DDC: PUSH HL POP IY POP DE PUSH DE INC DE LD HL,L1E31 LD BC,L0003 L1DE8: ADD HL,BC DEC A JR NZ,L1DE8 ; (-004H) LDIR EX DE,HL BIT 0,(IY+012H) JR Z,L1DF7 ; (+002H) LD (HL),02AH L1DF7: INC HL INC HL LD (HL),022H INC HL L1DFC: LD A,(IY+001H) CP 00DH JR Z,L1E09 ; (+006H) LD (HL),A INC IY INC HL JR L1DFC ; (-00dH) L1E09: LD (HL),022H INC HL LD (HL),00DH INC HL LD (HL),000H POP DE L1E12: LD A,000H RST 018H DB 02EH RST 018H DB 017H RST 018H DB 037H RST 018H DB 00FH RET L1E1D: DEC C DB "DIRECTORY OF " L1E2B: DB " KB FR" L1E31: DS 2, 045H DB ".OBJBTXBSDBRDRB" DS 2, 020H DB "? LIB ?" DS 2, 020H DB "? SYSGR" DS 2, 020H DB 03FH DB 020H DB LSE5 DB 0AFH,032H,042H,010H,0DDH,021H,071H,01EH,0EDH,073H,072H,01EH DB LSRF DB 05FH DB 01CH DB LSE1 DB 0DDH DB 02AH DB 053H DB 010H DB LSRF DB 045H DB 002H DB 0C9H DB 031H DS 2, 000H DB 006H DB 000H DB 0DFH DB 038H DB 018H DB 0DFH L1E7A: DB LSRF DB 064H,001H,059H,0C8H,011H,08EH,01EH,0DFH,005H,03EH,001H,0DFH,00DH,0FEH,059H,0C8H,0C3H,07DH,001H,"OK ? [Y/N]",019H,000H L1E9A: DB 011H DB 000H DB 010H L1E9D: DB LSRF DB 008H DB 001H INC HL INC DE LD A,(DE) CP 00DH RET Z LD B,011H L1EA8: LD A,(DE) CP (HL) RET NZ CP 00DH RET Z INC HL INC DE DJNZ L1EA8 ; (-00aH) OR A RET L1EB4: INC HL LD C,010H L1EB7: LD A,B OR A JR Z,L1ECF ; (+014H) LD A,(DE) INC DE DEC B OR A JR Z,L1ECF ; (+00eH) CP 022H JR Z,L1EB7 ; (-00eH) CP 03AH JP Z,01F9AH LD (HL),A INC HL DEC C JR NZ,L1EB7 ; (-018H) L1ECF: LD (HL),00DH INC HL L1ED2: LD A,C OR A RET Z LD (HL),020H INC HL DEC C JR L1ED2 ; (-009H) LD HL,(L1072) L1EDE: INC (HL) DEC (HL) SCF RET Z CP (HL) INC HL JR Z,L1EEE ; (+008H) PUSH DE CALL LDDEMI ADD HL,DE POP DE JR L1EDE ; (-010H) L1EEE: INC HL INC HL RET L1EF1: CALL SKPDE RST 018H DB 029H RET C DEC HL LD B,(HL) DEC HL LD C,(HL) DEC HL LD D,H LD E,L INC BC INC BC INC BC PUSH BC ADD HL,BC PUSH HL LD B,H LD C,L LD HL,(L107A) OR A SBC HL,BC LD B,H LD C,L POP HL LDIR POP DE LD HL,L0000 OR A SBC HL,DE EX DE,HL RST 018H DB 019H OR A RET PUSH AF PUSH BC PUSH DE PUSH DE INC DE INC DE INC DE LD HL,(L107A) EX DE,HL ADD HL,DE EX DE,HL JP C,01F6DH PUSH HL LD HL,0FE00H ADD HL,SP SBC HL,DE JR C,01F6DH ; (+037H) LD HL,(L107E) DEC H DEC H SBC HL,DE JR C,01F6DH ; (+02eH) POP HL PUSH HL LD BC,(VARST) OR A SBC HL,BC LD B,H LD C,L POP HL INC BC LDDR POP DE LD (HL),A INC HL LD (HL),E INC HL LD (HL),D INC HL PUSH HL INC DE PUSH DE L1F58: LD (HL),000H INC HL DEC DE LD A,D OR E JR NZ,L1F58 ; (-008H) POP DE INC DE INC DE RST 018H DB 019H POP HL POP DE POP BC POP AF RET L1F6A: LD A,003H LD HL,0063EH LD HL,09C3EH LD HL,0A83EH LD HL,0A93EH LD HL,0AA3EH LD HL,0AB3EH LD HL,0AE3EH LD HL,0B23EH LD HL,0B33EH LD HL,0B43EH LD HL,0B53EH LD HL,0B63EH LD HL,0B73EH LD HL,L3A3E LD HL,0BB3EH LD HL,0BC3EH LD HL,0BD3EH LD HL,0BF3EH LD HL,0403EH LD HL,0C43EH JP L0182 L1FAB: LD A,(L1FC0) OR A LD B,000H CALL NZ,L1BA7 CALL L368D CALL L3C34 CALL L2D08 JP L0D20 L1FC0: DS 64, 000H L2000: DS 38, 000H L2026: DS 263, 000H L212D: DS 211, 000H L2200: DS 294, 000H L2326: DS 986, 000H L2700: DS 16, 000H L2710: DS 240, 000H L2800: DS 256, 000H LD (02905H),DE RET L2905: NOP NOP L2907: LD BC,L0000 LD DE,00001H BIT 2,A CALL Z,L2ED0 LD HL,(L180D) LD A,(HL) LD (HL),C LD C,A INC HL LD A,(HL) LD (HL),B LD B,A LD HL,(L180B) LD DE,L0100 JP L2FCF CALL SKPDE CALL L181A LD HL,L11A4 PUSH HL LD A,B OR A CALL NZ,LDHLDE LD B,020H LD A,020H CALL ?SETHL LD A,(IY+012H) OR A JP NZ,01F7FH CALL L29DF JR NC,L2964 ; (+01dH) LD (IY+014H),E LD (IY+015H),D LD (IY+046H),001H JR Z,L2964 ; (+011H) CALL L29C2 CALL L2A08 CALL L297C LD (IY+040H),L LD (IY+041H),H JR L296A ; (+006H) L2964: CALL L297C CALL L29AB L296A: POP HL CALL L2E24 LD (IY+044H),001H L2972: LD HL,(L2905) INC HL LD (L2905),HL JP L1815 L297C: LD HL,(L2905) DEC HL PUSH HL ADD HL,HL LD E,H LD D,000H LD HL,(L180B) ADD HL,DE ADD HL,DE LD E,(HL) INC HL LD D,(HL) POP HL LD A,L PUSH AF RRA RRA RRA AND 00FH LD L,A LD H,000H ADD HL,DE POP AF AND 007H ADD A,A ADD A,A ADD A,A ADD A,A ADD A,A LD DE,(0180BH) INC D ADD A,E LD E,A RET NC INC D RET L29AB: LD A,(IY+040H) CP L JR NZ,L29B6 ; (+005H) LD A,(IY+041H) CP H RET Z L29B6: CALL L29C2 LD (IY+040H),L LD (IY+041H),H XOR A JR L29CC ; (+00aH) L29C2: XOR A CP (IY+044H) RET Z LD (IY+044H),A LD A,003H L29CC: CALL SKPDE LD C,(IY+040H) LD B,(IY+041H) LD DE,L0100 LD HL,(L180B) INC H JP L2FD1 L29DF: LD L,(IY+014H) LD H,(IY+015H) LD DE,(02905H) LD A,H OR L JR NZ,L29F1 ; (+004H) OR 0FFH SCF RET L29F1: CALL L2FC9 RET NC CALL SKPDE DEC HL DEC DE LD A,L AND 080H LD L,A LD A,E AND 080H LD E,A CALL L2FC9 RET C SCF RET L2A08: CALL SKPDE LD HL,(L2905) DEC HL ADD HL,HL LD B,H INC B LD HL,(L180B) L2A15: LD A,(HL) INC HL OR (HL) CALL Z,L2A23 INC HL DJNZ L2A15 ; (-009H) LD (IY+046H),001H RET L2A23: CALL SKPDE PUSH HL LD DE,00010H CALL L2ED0 POP HL LD (HL),B DEC HL LD (HL),C LD HL,(L180B) INC H XOR A L2A36: LD (HL),020H INC HL DEC A JR NZ,L2A36 ; (-006H) DEC H LD DE,L0100 LD A,010H L2A42: PUSH AF CALL L2FCF POP AF INC BC DEC A JR NZ,L2A42 ; (-009H) RET L2A4C: LD L,(IY+014H) LD H,(IY+015H) LD A,H OR L SCF RET Z LD DE,0FF02H PUSH HL ADD HL,DE JR C,L2A60 ; (+003H) LD HL,L0000 L2A60: LD (IY+014H),L LD (IY+015H),H POP DE LD HL,(L180B) DEC HL LD (HL),D DEC HL LD (HL),E CALL L2A88 OR A LD A,(L1043) BIT 2,A RET NZ LD HL,(L180D) LD A,(HL) LD (IY+01EH),A INC HL LD A,(HL) LD (IY+01FH),A LD DE,L0000 RET L2A88: LD C,(IY+01EH) LD B,(IY+01FH) LD A,B OR C JP Z,01F76H LD DE,L0100 LD HL,(L180B) JP 02FD0H RET XOR A LD (DE),A PUSH HL PUSH DE PUSH DE CALL L29DF POP DE JR C,L2AC7 ; (+01fH) CALL L181A PUSH DE CALL L297C CALL L29AB EX DE,HL POP DE CALL L2E24 XOR A LD (DE),A CALL L2972 LD B,020H XOR A LD HL,(L1040) INC HL RES 7,(HL) JR L2ACF ; (+008H) L2AC7: XOR A LD B,A LD HL,(L1040) INC HL SET 7,(HL) L2ACF: POP DE POP HL RET L2AD2: LD DE,(ELMD20) LD BC,(ELMD30) CALL 02FD0H JP L2D08 L2AE0: CALL L2AEA LD IY,L1000 JP L2C07 L2AEA: PUSH DE CALL L2DD0 CALL L2ED0 LD (ELMD30),BC LD D,E LD E,000H POP HL JP L2FCF OR A JR NZ,L2B34 ; (+035H) PUSH DE CALL L2B6A LD A,000H CALL Z,L2B51 POP DE CALL L2AEA LD HL,L1000 OR 0FFH CALL L2B51 CALL L2E2A LD HL,L2000 LD (HL),081H PUSH HL POP IY LD HL,(L1014) LD (IY+014H),L LD (IY+015H),H LD HL,(ELMD30) LD (IY+01EH),L LD (IY+01FH),H JP L2F37 L2B34: PUSH HL CALL L2B6A JP NZ,01F88H DEC (HL) LD DE,L1000 CALL L2E24 CALL L2F37 L2B45: XOR A LD HL,L2000 CALL L2B51 CALL L2E2A POP HL RET L2B51: CALL SKPDE PUSH AF LD DE,00014H ADD HL,DE CALL LDDEMI LD BC,00008H ADD HL,BC LD C,(HL) INC HL LD B,(HL) CALL L2DD8 POP AF JP L2E77 L2B6A: CALL L1D15 JP Z,YP_HOOK_F ; !Y source F: L1D15 bit5=0 CALL L2E36 CALL 02F38H LD A,(HL) CP 081H RET L2B7A: LD A,009H LD (L1043),A L2B7F: CALL L2F6E XOR B DEC HL LD A,(L1043) BIT 0,A JP NZ,01F73H PUSH AF LD DE,00001H CALL L2ED0 LD (IY+01EH),C LD (IY+01FH),B LD (IY+046H),001H POP AF BIT 1,A RET Z LD HL,(L180D) LD (HL),C INC HL LD (HL),B RET RET M RET Z CALL L1E9A RET NZ POP AF LD A,(L1043) BIT 1,A JP NZ,01F79H PUSH HL CALL L2E24 LD B,020H CALL ?CLRDE POP HL LD A,(HL) PUSH IY POP DE CALL L2E24 LD HL,L1043 BIT 3,(HL) RET NZ BIT 0,(HL) JP NZ,L2A4C CALL L2E5E CALL L2A88 LD D,H LD E,L L2BDB: LD A,(HL) INC HL OR (HL) INC HL JR NZ,L2BDB ; (-006H) DEC HL DEC HL SBC HL,DE LD (IY+042H),L LD (IY+043H),H RET L2BEC: LD A,B OR A RET Z LD A,(L1043) BIT 0,A RET NZ BIT 2,A JR NZ,L2C20 ; (+027H) LD A,006H CALL L2907 PUSH IY POP HL LD DE,L1000 CALL L2E24 L2C07: CALL L2F6E RLA INC L JP Z,01F85H L2C0F: LD A,001H LD B,(IY+000H) JP L2D6A RET M RET Z CALL L1E9A RET NZ JP 01F79H L2C20: CALL L29C2 LD A,(IY+046H) OR A RET Z CALL L2F6E LD (0CA2CH),A ADD A,L RRA JR L2C0F ; (-023H) RET M RET Z CALL L1E9A RET NZ POP AF LD (IY+045H),001H LD A,(HL) CP (IY+000H) JP NZ,01F9DH JR L2C0F ; (-037H) CALL SKPDE LD (02C60H),A CALL L2F6E LD D,H INC L JP 01F73H RET Z RET M CALL L1E9A RET NZ POP AF LD BC,L0012 ADD HL,BC LD (HL),0FFH L2C61: CALL L2F37 JP L2D08 CALL SKPDE CALL L2F6E LD (HL),D INC L JP 01F73H RET Z RET M CALL L1E9A RET NZ POP AF CALL L2CFB PUSH HL LD DE,L1000 CALL L2E24 XOR A LD (L1042),A LD IX,L2C9B CALL L1C5F XOR A LD (L1000),A POP HL L2C93: LD B,(HL) LD IY,L1000 JP L2D6A L2C9B: INC HL INC HL INC HL CALL L1E9A JP Z,01F7CH L2CA4: RET L2CA5: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DEC C CALL SKPDE LD HL,L2CA4 CALL L1EB4 XOR A L2CC0: LD (02CE3H),A CALL L2F6E JP Z,L182C JR L2C93 ; (-038H) RET M LD DE,L2CA4 CALL L1E9D JP Z,01F79H CALL L1E9A RET NZ LD (02CE9H),HL LD A,001H LD (02CE3H),A RET LD A,0FFH OR A JP Z,01F73H LD HL,0FFFFH CALL L2CFB LD DE,L2CA5 INC HL EX DE,HL LD BC,00011H LDIR JP L2C61 L2CFB: CALL SKPDE LD DE,L0012 ADD HL,DE LD A,(HL) OR A RET Z JP 01F7FH L2D08: CALL IOOUT XOR A LD (L1FC0),A LD A,LSE0 L2D11: PUSH AF RST 018H DB 02BH POP AF INC A JR NZ,L2D11 ; (-007H) LD HL,(L1044) LD DE,$FD CALL L2FC9 RET NZ LD A,(L1046) EXX LD H,A LD D,000H LD B,003H EXX XOR A LD (L1042),A L2D30: EXX LD A,B LD (L1046),A ADD A,090H LD L,A LD E,000H EXX LD IX,L2D5C CALL L1C5F EXX BIT 7,E LD A,L EXX CALL Z,L1EF1 EXX DEC B EXX JP P,L2D30 EXX LD A,H LD (L1046),A BIT 7,D EXX CALL Z,L368D RET L2D5C: EXX LD DE,0FFFFH EXX RET L2D62: LD A,(L1046) ADD A,090H RST 018H DB 029H RET L2D6A: LD (L2DCF),A LD A,B PUSH AF EX DE,HL LD HL,L1000 CALL L2E24 CALL L2E36 POP AF CP 005H JR C,L2D88 ; (+00aH) LD A,(L1012) RLA LD A,003H JR NC,L2D88 ; (+002H) LD A,001H L2D88: LD HL,02D9CH ADD A,A CALL ADDHLA CALL INDRCT CALL L00FA CALL L2F37 CALL L2E2A JP L2D08 ADD A,02DH ADD A,02DH AND (HL) DEC L JP PO,L212D JR NZ,02DB9H ; (+010H) L2DA9: DEC HL LD B,(HL) DEC HL LD C,(HL) LD A,B OR C RET Z LD DE,L0100 LD HL,L11A4 PUSH HL PUSH DE CALL 02FD0H LD DE,00001H CALL L2DC9 POP DE POP HL ADD HL,DE JR L2DA9 ; (-01dH) CALL L2DD0 L2DC9: LD A,(L2DCF) JP L2E77 L2DCF: NOP L2DD0: LD DE,(ELMD20) LD BC,(ELMD30) L2DD8: LD A,E OR D JR Z,L2DDD ; (+001H) DEC DE L2DDD: INC D LD E,D LD D,000H RET LD DE,L0100 LD BC,(ELMD30) LD A,(L2DCF) OR A LD HL,L11A4 JR Z,L2DF5 ; (+003H) LD HL,(L180B) L2DF5: PUSH HL PUSH AF CALL L2FD1 POP AF PUSH AF JR Z,L2E02 ; (+004H) LD A,(IY+045H) OR A L2E02: LD DE,00001H CALL Z,L2DC9 POP AF POP HL JR Z,L2E13 ; (+007H) LD E,(IY+042H) LD D,(IY+043H) ADD HL,DE L2E13: LD C,(HL) INC HL LD B,(HL) INC HL LD A,B OR C RET Z PUSH HL LD DE,00010H CALL L2DC9 POP HL JR L2E13 ; (-011H) L2E24: LD BC,00020H LDIR RET L2E2A: LD HL,L2800 LD DE,L0100 LD BC,L000F JP L2FCF L2E36: LD HL,L2800 CALL L2E67 PUSH HL CALL L2D62 EX DE,HL POP HL RET C PUSH HL LD A,(DE) CP (HL) JP NZ,01F88H LD BC,L0006 ADD HL,BC EX DE,HL ADD HL,BC EX DE,HL LD B,FDPC L2E52: LD A,(DE) CPL AND (HL) JP NZ,01F88H INC HL INC DE DJNZ L2E52 ; (-00aH) POP HL RET L2E5E: CALL L2D62 RET NC LD DE,L0100 RST 018H DB 02AH L2E67: LD BC,L000F LD DE,L0100 XOR A CALL L2FD4 LD A,(HL) OR A JP M,01F70H RET L2E77: LD HL,L2800 CALL L2E84 OR A RET NZ CALL L2D62 RET C XOR A L2E84: CALL IOOUT OR A PUSH HL LD HL,0B600H LD A,013H JR NZ,L2E95 ; (+005H) LD HL,0A62FH LD A,01BH L2E95: LD (L2EB2),A LD (L2EC8),HL POP HL L2E9C: CALL L2EA4 INC BC DEC E JR NZ,L2E9C ; (-007H) RET L2EA4: CALL SKPDE INC HL LD A,C SUB (HL) LD C,A JR NC,L2EAE ; (+001H) DEC B L2EAE: INC HL LD E,(HL) INC HL LD D,(HL) L2EB2: NOP DEC HL LD (HL),E INC HL LD (HL),D INC HL INC HL INC HL LD A,C LD E,003H L2EBD: SRL B RR C DEC E JR NZ,L2EBD ; (-007H) ADD HL,BC CALL L2F2B L2EC8: NOP NOP CP (HL) LD (HL),A RET NZ JP 01F88H L2ED0: PUSH DE CALL L2E5E POP DE PUSH HL CALL L2EDE POP HL LD A,001H JR L2E84 ; (-05aH) L2EDE: LD A,E EXX LD E,A LD D,A LD B,001H EXX INC HL LD E,(HL) LD D,000H INC HL INC HL INC HL LD C,(HL) INC HL LD B,(HL) DEC BC LD (02EFCH),BC INC HL PUSH HL EXX POP HL EXX LD B,D LD C,E L2EFB: LD HL,L0000 OR A SBC HL,DE JP C,01F8BH EXX LD A,B AND (HL) EXX CALL L2F15 INC DE EXX RLC B JR NC,L2F12 ; (+001H) INC HL L2F12: EXX JR L2EFB ; (-01aH) L2F15: JR NZ,L2F24 ; (+00dH) EXX DEC E EXX RET NZ POP AF EXX LD A,D EXX LD E,A LD D,000H OR A RET L2F24: EXX LD E,D EXX LD B,D LD C,E INC BC RET L2F2B: PUSH BC AND 007H INC A LD B,A XOR A SCF L2F32: ADC A,A DJNZ L2F32 ; (-003H) POP BC RET L2F37: OR 0AFH LD HL,L2000 LD DE,00800H LD BC,00010H CALL L2FD1 LD A,(HL) OR A JP P,01F70H RET L2F4B: PUSH HL PUSH DE CALL L2E36 INC HL INC HL CALL LDDEMI CALL INDRCT XOR A SBC HL,DE JP C,01F70H SRL H RR L SRL H RR L LD B,H LD C,L POP DE POP HL OR A JP L368D L2F6E: CALL L1D15 JP Z,SVC2F_YP_DBG ; Was: JP Z,01F97H — hook to trace !Y cause POP HL CALL LDDEMI LD (02FB1H),HL LD (02F97H),DE XOR A LD (L2FC3),A CALL 02F38H LD (L2FC7),HL LD A,040H LD (L2FC6),A L2F8E: LD HL,(L2FC7) LD A,(HL) OR A CALL Z,L2FB3 CALL 0FFFFH LD HL,(L2FC7) LD BC,00020H ADD HL,BC LD (L2FC7),HL LD HL,L2FC6 DEC (HL) JR NZ,L2F8E ; (-01bH) LD A,(L2FC3) LD HL,(L2FC4) OR A JP 0FFFFH L2FB3: PUSH AF LD A,(L2FC3) OR A JR NZ,L2FC1 ; (+007H) INC A LD (L2FC3),A LD (L2FC4),HL L2FC1: POP AF RET L2FC3: NOP L2FC4: NOP NOP L2FC6: NOP L2FC7: NOP NOP L2FC9: PUSH HL OR A SBC HL,DE POP HL RET L2FCF: OR 0AFH L2FD1: CALL L2FE8 ; Patched at runtime by L4000 cold start → CALL L2FE8_FIX L2FD4: CALL SKPDE OR A LD IX,(ZINP) JR Z,L2FE2 ; (+004H) LD IX,(ZOUT) L2FE2: LD A,(L1046) JP IOCALL L2FE8: CALL IOOUT LD A,(L35B5) OR A RET M CALL L2D62 RET C JP L2E36 $CMT: DB "Y3CMT",000H,05FH ; $CMT - Cassette device descriptor L2FFE: DB 0C0H,000H,014H,"0d0",022H,030H DB LSE5 DS 2, 000H DB 001H,0AAH,"0]0",097H,01FH,097H,01FH,097H,01FH CALL TEST1 DB 054H LD HL,L2FFE SET 4,(HL) RET Z RES 4,(HL) OR A RET CALL SKPDE LD DE,L10F0 LD A,(HL) LD C,005H CP 002H JR Z,L303D ; (+00eH) LD C,004H L3031: CP 003H JR Z,L303D ; (+008H) LD C,A L3036: SUB 004H CP 002H JP C,01F9DH L303D: LD A,C LD (DE),A INC HL INC DE LD BC,00011H LDIR INC HL INC HL LD BC,L0006 LDIR LD B,068H CALL ?CLRDE LD HL,L10F0 LD BC,L0080 CALL L30CB JR L3060 ; (+003H) CALL L30D2 L3060: JP C,L017B RET LD A,037H LD (L30AA),A PUSH HL LD HL,L10F0 LD BC,L0080 CALL L3114 JR C,L30C1 ; (+04cH) LD DE,L3332 CALL L3301 POP DE LD A,(HL) LD C,002H CP 005H JR Z,L3091 ; (+00eH) LD C,003H CP 004H JR Z,L3091 ; (+008H) LD C,A SUB 002H CP 002H JP C,01F9DH L3091: LD A,C LD (DE),A INC HL INC DE LD BC,00011H LDIR XOR A LD B,002H CALL ?CLRDE LD BC,L0006 LDIR LD B,006H JP ?CLRDE L30AA: XOR A JR NC,L30BD ; (+010H) LD A,0AFH LD (L30AA),A PUSH HL LD HL,L1000 LD DE,L333F CALL L3301 POP HL L30BD: CALL L311B RET NC L30C1: CP 002H JP NZ,L017B LD A,0C6H JP L0182 L30CB: CALL L32D4 LD A,LSWF JR L30D4 ; (+002H) L30D2: LD A,053H L30D4: LD (03109H),SP LD SP,L10F0 PUSH DE LD E,A LD D,0D7H LD A,B OR C JR Z,L3107 ; (+024H) CALL L32CB CALL L3174 JR C,L3101 ; (+016H) LD A,E CP LSWF JR NZ,L30F8 ; (+008H) PUSH DE LD DE,L3325 CALL L3301 POP DE L30F8: DI OUT (LSE4),A CALL 00780H CALL NC,L31DD L3101: DI OUT (LSE4),A CALL 00700H L3107: POP DE LD SP,L0000 OUT (LSE0),A OUT (LSE1),A PUSH AF RST 018H DB 011H POP AF RET L3114: CALL L32D4 LD A,LSWF JR L311D ; (+002H) L311B: LD A,053H L311D: LD (03109H),SP LD SP,L10F0 PUSH DE LD D,LSD2 LD E,A LD A,B OR C JR Z,L3107 ; (-025H) CALL L3174 DI OUT (LSE4),A CALL NC,L065B CALL NC,L3220 JR L3101 ; (-039H) L313A: PUSH HL LD DE,L334C LD HL,L1000 CALL L3301 POP HL CALL L3153 RET NC CP 002H JP NZ,L017B LD A,083H JP L0182 L3153: LD (03109H),SP LD SP,L10F0 PUSH DE LD D,LSD2 LD E,053H LD A,B OR C JR Z,L3107 ; (-05cH) CALL L32CB CALL L3174 DI OUT (LSE4),A CALL NC,L065B CALL NC,L3274 JR L3101 ; (-073H) L3174: CALL SKPDE RST 018H DB 010H LD HL,0E000H LD A,FDPA CALL POPRA LD B,00AH L3183: LD HL,0E002H CALL BREAKX AND 010H JR Z,L319A ; (+00dH) L318D: LD B,0FFH OUT (LSE2),A L3191: CALL L09A6 DJNZ L3191 ; (-005H) OUT (LSE0),A XOR A RET L319A: LD HL,0E003H LD A,006H CALL POPRA INC A CALL POPRA DJNZ L3183 ; (-025H) LD A,(L0050) OR A JR NZ,L31C7 ; (+019H) RST 018H DB 002H LD A,07FH RST 018H DB 004H LD A,020H RST 018H DB 003H LD A,D CP 0D7H LD DE,L32BC JR Z,L31C3 ; (+003H) LD DE,L32C3 L31C3: RST 018H DB 005H RST 018H DB 002H L31C7: LD HL,0E002H CALL BREAKX AND 010H JR NZ,L318D ; (-044H) LD HL,0E001H CALL BREAKX AND 080H JR NZ,L31C7 ; (-014H) SCF RET L31DD: PUSH DE PUSH BC PUSH HL LD D,002H LD A,FDPA LD (0E000H),A L31E7: OUT (LSE1),A LD A,(HL) OUT (LSE3),A CALL L32C8 LD A,(0E001H) AND 080H SCF JR Z,L321C ; (+025H) INC HL DEC BC LD A,B OR C JR NZ,L31E7 ; (-016H) LD HL,(L1197) LD A,H CALL L32C8 LD A,L CALL L32C8 CALL L0D60 XOR A DEC D JR Z,L321C ; (+00dH) LD B,000H L3211: CALL L0D47 DJNZ L3211 ; (-005H) POP HL POP BC PUSH BC PUSH HL JR L31E7 ; (-035H) L321C: POP HL POP BC POP DE RET L3220: PUSH DE PUSH BC PUSH HL LD H,002H L3225: LD BC,0E001H LD DE,0E002H L322B: CALL 00601H JR C,L3267 ; (+037H) CALL 00A4AH LD A,(DE) AND 020H JR Z,L322B ; (-00dH) LD D,H LD HL,L0000 LD (L1197),HL POP HL POP BC PUSH BC PUSH HL L3243: CALL L0624 JR C,L3267 ; (+01fH) OUT (LSE1),A LD (HL),A OUT (LSE3),A INC HL DEC BC LD A,B OR C JR NZ,L3243 ; (-010H) LD HL,(L1197) CALL L0624 JR C,L3267 ; (+00cH) CP H JR NZ,L326B ; (+00dH) CALL L0624 JR C,L3267 ; (+004H) CP L JR NZ,L326B ; (+005H) L3266: XOR A L3267: POP HL POP BC POP DE RET L326B: DEC D LD H,D JR NZ,L3225 ; (-04aH) L326F: LD A,002H SCF JR L3267 ; (-00dH) L3274: PUSH DE PUSH BC PUSH HL LD H,002H L3279: LD BC,0E001H LD DE,0E002H L327F: CALL 00601H JR C,L3267 ; (-01dH) CALL 00A4AH LD A,(DE) AND 020H JR Z,L327F ; (-00dH) LD D,H POP HL POP BC PUSH BC PUSH HL L3291: CALL L0624 JR C,L3267 ; (-02fH) OUT (LSE1),A CP (HL) OUT (LSE3),A JR NZ,L326F ; (-02eH) INC HL DEC BC LD A,B OR C JR NZ,L3291 ; (-012H) LD HL,(CSMDT) CALL L0624 JR C,L3267 ; (-044H) CP H JR NZ,L326F ; (-03fH) CALL L0624 JR C,L3267 ; (-04cH) CP L JR NZ,L326F ; (-047H) DEC D LD H,D JR NZ,L3279 ; (-041H) JR L3266 ; (-056H) L32BC: DB "RECORD." L32C3: DB "PLAY",000H L32C8: DB 0C3H DB 06DH DB 007H L32CB: DB QDPB DB LSD3 DB LSE2 DB LSRF DB 01AH DB 007H DB LSD3 DB LSE0 DB 0C9H L32D4: DB LSRF DB 008H,001H,03EH,0C9H,032H,0D4H,"2!6",000H,0CBH,076H,0C8H,021H,067H,007H,022H,0C9H,"2!z",007H,022H DB LSFC DB 030H,021H,096H,009H,022H,092H,031H,021H,001H,00AH,022H,012H,032H,021H,01AH,00AH,022H,009H,032H,0C9H L3301: DB 03AH DB 050H DB 000H DB 0B7H DB 0C0H DB 0DFH DB 002H DB 0DFH DB 005H DB LSE5 DB 023H,03EH,022H,0DFH,003H,016H,010H,07EH,0FEH,00DH,028H,006H,0DFH,003H,023H,015H,020H DB QDPD DB 03EH DB 022H DB 0DFH DB 003H DB 0DFH DB 002H DB LSE1 DB 0C9H L3325: DB 057H,005H,"RITING" DS 3, 020H DB 006H DB 000H L3332: DB 046H,005H,"OUND" DS 5, 020H DB 006H DB 000H L333F: DB 04CH,005H,"OADING" DS 3, 020H DB 006H DB 000H L334C: DB 056H,005H,"ERIFYING " LD B,000H $RS: DB 08DH,"5RS" ; $RS - RS-232C device descriptor DS 2, 000H DB 08FH,001H,000H,072H,033H,0A4H,033H,0A4H,033H,0B5H,033H,0B5H,033H,0C6H,033H,0DBH,033H DB LSE5 DB 000H DB 0D8H DB 0FDH DB LSE5 DB LSRF CALL PE,0CD33H ADD A,B INC SP CALL L3435 JR L33D8 ; (+058H) RST 018H DB 013H LD (IY-003H),E CALL TEST1 DB 02CH JP NZ,L1F6A RST 018H DB 013H LD (IY-002H),E LD (IY-008H),00DH CALL TEST1 DB 000H RET Z CALL TEST1 DB 02CH RST 018H DB 013H LD (IY-008H),E RET PUSH IY CALL L33EC LD A,(IY-001H) INC (IY-001H) OR A CALL Z,L3497 JR L33D8 ; (+023H) PUSH IY CALL L33EC DEC (IY-001H) LD A,(IY-001H) OR A CALL Z,L347F JR L33D7 ; (+011H) PUSH IY CALL L33EC CALL L34E6 JR C,L33D8 ; (+008H) CP (IY-008H) JR NZ,L33D7 ; (+002H) LD A,00DH L33D7: OR A L33D8: POP IY RET PUSH IY CALL L33EC CP 00DH JR NZ,L33E7 ; (+003H) LD A,(IY-008H) L33E7: CALL L352B JR L33D8 ; (-014H) L33EC: PUSH AF PUSH DE LD A,(L1046) INC A LD IY,033F7H LD DE,L0015 L33F9: ADD IY,DE DEC A JR NZ,L33F9 ; (-005H) LD C,(IY+000H) POP DE POP AF RET NOP NOP NOP NOP NOP NOP NOP NOP OR C OR B NOP DJNZ L3421 ; (+010H) INC B LD B,B INC BC RET NZ DEC B LD H,B JR NC,L341C ; (+003H) NOP NOP NOP L341C: NOP NOP NOP NOP NOP L3421: OR E OR D NOP DJNZ 03436H ; (+010H) INC B LD B,B INC BC RET NZ DEC B LD H,B JR NC,L3431 ; (+003H) L342E: CALL BRKCHK L3431: RET NZ JP 0017DH L3435: LD A,018H OUT (C),A LD A,030H OUT (C),A LD A,(IY-002H) AND 00CH JR NZ,L3448 ; (+004H) SET 2,(IY-002H) L3448: LD A,(IY-002H) LD B,A AND 00FH OR 040H LD (IY+006H),A LD A,B AND 080H OR 040H LD (IY+008H),A RRA AND 07FH OR 00AH LD (IY+00AH),A LD A,B OR 07FH LD (IY+002H),A CALL L348B L346C: IN A,(C) RRCA RET NC DEC C IN A,(C) INC C LD A,001H OUT (C),A IN A,(C) AND 070H JR Z,L346C ; (-012H) RET L347F: RES 0,(IY+008H) RES 7,(IY+00AH) LD (IY-001H),000H L348B: LD B,00AH PUSH IY POP HL LD DE,L0003 ADD HL,DE OTIR RET L3497: LD A,030H OUT (C),A RET L349C: SET 0,(IY+008H) LD A,013H OUT (C),A LD A,(IY+008H) OUT (C),A LD A,035H OUT (C),A LD A,(IY+00AH) OR 088H LD (IY+00AH),A OUT (C),A RET LD A,003H OUT (C),A RES 0,(IY+008H) LD A,(IY+008H) OUT (C),A L34C5: RES 7,(IY+00AH) JR L34DB ; (+010H) L34CB: SET 1,(IY+00AH) JR L34DB ; (+00aH) L34D1: RES 1,(IY+00AH) JR L34DB ; (+004H) SET 7,(IY+00AH) L34DB: LD A,005H OUT (C),A LD A,(IY+00AH) OUT (C),A OR A RET L34E6: CALL SKPDE LD C,(IY+000H) L34EC: CALL L342E CALL L3564 JR C,L34EC ; (-008H) CALL L349C L34F7: CALL L342E IN A,(C) RRCA JR NC,L34F7 ; (-008H) DEC C IN A,(C) INC C AND (IY+002H) PUSH AF LD A,001H OUT (C),A IN A,(C) AND 070H JR NZ,L3516 ; (+005H) CALL L34C5 POP AF RET L3516: LD B,A POP AF PUSH BC CALL L3435 POP BC LD A,01DH RLC B RLC B RET C INC A RLC B RET C INC A SCF RET L352B: CALL SKPDE LD C,(IY+000H) LD D,A CALL L34CB L3535: CALL L342E CALL L356B CALL NC,L357C L353E: JR C,L3535 ; (-00bH) IN A,(C) BIT 2,A JR Z,L3535 ; (-011H) BIT 7,(IY-003H) JR Z,L3555 ; (+009H) LD A,001H OUT (C),A IN A,(C) RRCA JR NC,L3535 ; (-020H) L3555: DEC C OUT (C),D INC C BIT 6,(IY-003H) JR Z,L3562 ; (+003H) CALL L34D1 L3562: OR A RET L3564: OR A BIT 0,(IY-003H) JR L3570 ; (+005H) L356B: OR A BIT 1,(IY-003H) L3570: RET Z LD A,010H OUT (C),A IN A,(C) AND 008H RET NZ SCF RET L357C: OR A BIT 2,(IY-003H) RET Z LD A,010H OUT (C),A IN A,(C) AND 020H RET NZ SCF RET $FD: DB 0A2H,"8FD" ; $FD - Floppy Disk device descriptor DS 2, 000H DB 03FH,003H,03FH,08DH,036H,00FH DS 2, 000H DB 001H,030H,000H,0FEH,000H,005H,037H,008H,037H,097H,01FH,097H,01FH,097H,01FH NOP L35AB: NOP L35AC: NOP L35AD: NOP NOP NOP L35B0: NOP L35B1: NOP NOP L35B3: NOP L35B4: NOP L35B5: NOP L35B6: NOP L35B7: NOP NOP NOP NOP L35BB: NOP NOP NOP NOP L35BF: NOP L35C0: PUSH BC LD A,L LD B,004H L35C4: SRL H RR L DJNZ L35C4 ; (-006H) AND 00FH INC A LD H,A POP BC RET L35D0: LD A,H LD H,000H ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL DEC A ADD A,L LD L,A RET L35DB: CALL SKPDE LD HL,L35B5 BIT 7,(HL) JR NZ,L35EB ; (+006H) CALL L367C CALL L3898 L35EB: LD A,(L35AC) BIT 2,A SET 2,A JR Z,L35F6 ; (+002H) SET 5,A L35F6: SET 7,A LD HL,L35B5 BIT 6,(HL) JR Z,L3601 ; (+002H) SET 6,A L3601: CALL L361C LD (HL),A LD HL,L35B7 CALL L3614 BIT 0,(HL) CALL Z,L3695 RET C SET 0,(HL) RET L3614: LD A,(L35AC) AND 003H JP ADDHLA L361C: OUT (0DCH),A PUSH AF RLCA RLCA OUT (0DDH),A RLCA OUT (0DEH),A POP AF RET L3628: CALL SKPDE LD D,000H LD A,(L35B3) SRL A CPL OUT (0DBH),A LD B,A LD A,(L35B5) RES 6,A BIT 5,A JR Z,L3640 ; (+001H) CCF L3640: JR C,L3644 ; (+002H) SET 6,A L3644: CALL L361C LD HL,L35B5 CP (HL) LD (HL),A JR Z,L364F ; (+001H) INC D L364F: LD HL,L35BB CALL L3614 LD A,(HL) OUT (0D9H),A CP B JR Z,L3666 ; (+00bH) INC D CALL L3673 PUSH AF IN A,(0D9H) LD (HL),A POP AF RET C RET NZ L3666: LD A,(L35B4) CPL OUT (0DAH),A LD A,D OR A CALL NZ,L388D XOR A RET L3673: LD A,018H CALL L36C2 RET C AND 099H RET L367C: LD HL,L35B5 SET 7,(HL) LD A,(HL) CALL L361C LD HL,L35B7 LD B,004H JP ?CLRHL L368D: XOR A CALL L361C LD (L35B5),A RET L3695: CALL SKPDE LD HL,L35BB CALL L3614 LD (HL),0FFH LD A,008H CALL L36C2 RET C AND 085H XOR 004H RET Z JP L385A L36AE: PUSH AF LD A,LSD0 CALL L36BB JR C,L36B8 ; (+002H) POP AF RET L36B8: POP HL POP HL RET L36BB: CALL SKPDE LD D,000H JR L36DC ; (+01aH) L36C2: CALL SKPDE LD B,A LD A,(035AAH) CPL AND 003H OR B LD D,000H JR L36D6 ; (+005H) L36D1: CALL SKPDE LD D,001H L36D6: CALL L36AE LD (L35B6),A L36DC: CPL OUT (0D8H),A CALL L3887 LD E,007H L36E4: LD HL,L2710 L36E7: DEC HL LD A,H OR L JP Z,L36F9 IN A,(0D8H) CPL LD B,A AND 081H CP D JR NZ,L36E7 ; (-00fH) LD A,B OR A RET L36F9: DEC E JP Z,L385A LD A,(L35B6) CPL OUT (0D8H),A JR L36E4 ; (-021H) DB 037H JR L3709 ; (+001H) OR A L3709: EX AF,AF' PUSH AF EX AF,AF' LD (L35B1),HL PUSH HL LD HL,L35AB RL (HL) RRC (HL) LD H,(HL) LD L,A AND 007H LD (L35AC),A CALL L35DB JR NC,L3728 ; (+005H) POP HL EX AF,AF' POP AF EX AF,AF' RET L3728: BIT 7,H LD A,L POP HL PUSH HL CALL Z,L37E7 LD (035AFH),DE PUSH DE OR A PUSH AF LD H,B LD L,C CALL P,L35C0 LD (L35AD),HL LD A,009H LD (L35BF),A PUSH IY CALL L375C EX AF,AF' POP IY LD HL,(L35B3) POP AF CALL P,L35D0 LD B,H LD C,L POP DE POP HL POP AF EX AF,AF' JP L37E7 L375C: LD E,000H LD HL,(035AFH) LD A,(L35B5) BIT 5,A JR Z,L376B ; (+003H) ADD HL,HL LD E,080H L376B: LD A,L OR A JR Z,L3770 ; (+001H) INC H L3770: LD A,H LD (L35B0),A L3774: CALL L37FA CALL NC,L3628 RET C JR NZ,L37E1 ; (+064H) DI LD A,(L35AB) BIT 7,A LD A,090H LD IY,0A2EDH JR NZ,L3791 ; (+006H) LD A,0B4H LD IY,0A3EDH L3791: LD (L37A8),IY CALL L36D1 RET C L3799: LD B,E PUSH DE LD DE,0FE7CH L379E: IN A,(0D8H) OR E CP D JR Z,L379E ; (-006H) CP LSFC JR NZ,L37AD ; (+005H) L37A8: NOP NOP JP NZ,L379E L37AD: POP DE IN A,(0D8H) RRA JP C,L385A LD A,(L35B4) INC A LD (L35B4),A CP 011H JR Z,L37C4 ; (+005H) DEC D JR NZ,L3799 ; (-029H) JR L37C5 ; (+001H) L37C4: DEC D L37C5: CALL L36AE EI IN A,(0D8H) CPL OR A JR NZ,L37E1 ; (+012H) LD A,(L35AB) OR A CALL Z,L3830 JR C,L37E1 ; (+009H) CALL L3818 LD A,D OR A JR NZ,L3774 ; (-06bH) XOR A RET L37E1: CALL L380B RET C JR L3774 ; (-073H) L37E7: CALL IOOUT LD A,(L35B5) BIT 5,A RET Z L37F0: LD A,(HL) CPL LD (HL),A INC HL DEC DE LD A,D OR E JR NZ,L37F0 ; (-009H) RET L37FA: LD HL,(L35AD) LD (L35B3),HL LD HL,(L35B1) LD A,(L35B0) LD D,A LD C,0DBH OR A RET L380B: CALL SKPDE LD HL,L35BF DEC (HL) JP Z,L385A JP L3695 L3818: LD (L35B1),HL LD A,D LD (L35B0),A LD HL,(L35B3) LD A,H CP 011H RET NZ LD H,001H INC L LD (L35AD),HL LD (L35B3),HL RET L3830: LD A,(035AEH) CPL OUT (0DAH),A LD A,090H CALL L36D1 RET C LD A,(L35B4) LD B,A L3840: IN A,(0D8H) CPL AND 081H CP 001H JR NZ,L3852 ; (+009H) IN A,(0DAH) CPL CP B JR NZ,L3840 ; (-00fH) CALL L36AE L3852: IN A,(0D8H) CPL AND 099H RET Z SCF RET L385A: LD A,(L35B6) RLA IN A,(0D8H) CPL JR NC,L3878 ; (+015H) RLA JR C,L387B ; (+015H) RLA JR NC,L3870 ; (+007H) LD HL,L35AB BIT 7,(HL) JR Z,L387F ; (+00fH) L3870: AND 0C0H JR NZ,L3883 ; (+00fH) L3874: LD A,029H SCF RET L3878: RLA JR NC,L3874 ; (-007H) L387B: LD A,032H SCF RET L387F: LD A,02EH SCF RET L3883: LD A,036H SCF RET L3887: PUSH DE LD DE,L000F JR L3891 ; (+004H) L388D: PUSH DE LD DE,L2026 L3891: DEC DE LD A,E OR D JR NZ,L3891 ; (-005H) POP DE RET L3898: PUSH BC LD B,011H L389B: CALL L388D DJNZ L389B ; (-005H) POP BC RET ; $QD - Quick Disk device descriptor (29 bytes) $QD: IF BUILD_RFS = 1 DW $RFS ; Next device = $RFS (RFS enhanced) ELSE DW $USR ; Next device = $USR (original) ENDIF DB "QD",000H,000H ; Device name DB 05FH ; flags1 DB 040H ; flags2 DB 020H ; dirmx (32 entries) DW 038C4H ; ZINIT DW 038FBH ; ZRO DW 0392AH ; ZWO DW 038DAH ; ZCL DW 00400H ; ZKL DW 03918H ; ZINP DW 03939H ; ZOUT DW 01F97H ; ZDELT DW 01F97H ; ZWDIR DW 038C1H ; ZFREE NOP NOP XOR A SCF RET RET C CALL L1E7A CALL TEST1 DB 000H JP NZ,L1F6A CALL L392F RET C LD HL,L3972 LD (HL),002H JR L3928 ; (+04eH) OR A JR NZ,L38F4 ; (+017H) XOR A LD (L397E),A LD HL,L3972 LD (HL),005H CALL L3988 LD HL,00001H LD (L3972),HL LD HL,L3972 JR L3928 ; (+034H) L38F4: LD HL,L3972 LD (HL),006H JR L3928 ; (+02dH) LD (L3974),HL LD HL,L0003 LD (L3972),HL LD HL,00040H LD (L3976),HL LD HL,L3972 CALL L3988 RET NC CP 028H SCF RET NZ LD A,000H RET LD (L3974),HL LD HL,00103H LD (L3972),HL LD (03976H),BC LD HL,L3972 L3928: JR L3988 ; (+05eH) LD A,037H LD (L393C),A L392F: LD A,001H LD HL,L3973 LD (HL),A DEC HL LD (HL),A JR L3988 ; (+04fH) LD (L3971),A L393C: XOR A JR NC,L395B ; (+01cH) LD A,0AFH LD (L393C),A CALL L1C2B LD (L3978),HL LD HL,L1000 LD (L3974),HL LD HL,00040H LD (L3976),HL LD A,(L3971) JR L3963 ; (+008H) L395B: LD (L3978),HL LD A,(L3971) SET 0,A L3963: LD (L3973),A LD (0397AH),BC LD HL,L3972 LD (HL),004H JR L3988 ; (+017H) L3971: NOP L3972: NOP L3973: NOP L3974: NOP NOP L3976: NOP NOP L3978: NOP NOP NOP NOP L397C: NOP L397D: NOP L397E: NOP L397F: NOP L3980: NOP L3981: NOP L3982: NOP L3983: NOP L3984: NOP L3985: NOP NOP NOP L3988: LD A,002H LD (L3984),A L398D: DI CALL L39D5 EI RET NC PUSH AF CP 028H JR Z,L39D3 ; (+03bH) CALL L3C34 LD A,(L3980) OR A JR Z,L39B8 ; (+017H) XOR A LD (L3980),A LD A,(L3981) PUSH HL LD (03986H),SP POP HL DI CALL L3BD3 EI JR C,L39CD ; (+018H) CALL L3C34 L39B8: POP AF PUSH AF CP 029H JR NZ,L39D3 ; (+015H) LD HL,L3984 DEC (HL) JR Z,L39CD ; (+009H) POP AF LD A,(L397F) LD (L397E),A JR L398D ; (-040H) L39CD: CALL L3B47 CALL L39EE L39D3: POP AF RET L39D5: LD (03986H),SP LD A,(L3972) DEC A JR Z,L39F5 ; (+016H) DEC A JR Z,L39FB ; (+019H) DEC A JR Z,L3A49 ; (+064H) DEC A JP Z,L3AB4 DEC A JR Z,L39EE ; (+002H) JR L3A3E ; (+050H) L39EE: PUSH AF XOR A LD (L397C),A POP AF RET L39F5: LD A,(L3973) JP L3BA9 L39FB: XOR A CALL L3BD3 CALL L3CAA LD BC,0FFFFH LD A,0AAH L3A07: CPL LD D,A CALL L3D21 DEC BC LD A,B OR C JR Z,L3A14 ; (+003H) LD A,D JR L3A07 ; (-00dH) L3A14: CALL L3CF7 CALL L3C34 CALL L3BEB LD A,(L3982) DEC A JR NZ,L3A41 ; (+01eH) CALL L3C49 LD BC,0FFFFH LD E,055H L3A2B: CP E JR NZ,L3A41 ; (+013H) DEC BC LD A,B OR C JR Z,L3A3B ; (+008H) LD A,E CPL LD E,A CALL L3D37 JR L3A2B ; (-010H) L3A3B: CALL L3D09 L3A3E: JP L3C34 L3A41: LD A,029H SCF RET L3A45: EI JP 0017DH L3A49: LD A,(L3983) OR A CALL Z,L3BEB CALL L3A7A RET C CALL BRKCHK JP Z,L3A45 CALL L3D37 LD C,A CALL L3D37 LD B,A LD HL,(L3974) L3A65: CALL L3D37 LD (HL),A INC HL DEC BC LD A,B OR C JR NZ,L3A65 ; (-00aH) CALL L3D09 LD A,(L3973) BIT 0,A JR NZ,L3A3E ; (-03bH) RET L3A7A: LD HL,L3982 DEC (HL) JR Z,L3AB0 ; (+030H) CALL L3C49 LD C,A LD A,(L397C) LD HL,L397D CP (HL) JR NZ,L3AAD ; (+020H) INC A LD (L397C),A LD (HL),A LD A,(L3973) XOR C RRA RET NC L3A98: CALL L3D37 LD C,A CALL L3D37 LD B,A L3AA0: CALL L3D37 DEC BC LD A,B OR C JR NZ,L3AA0 ; (-008H) CALL L3D09 JR L3A7A ; (-033H) L3AAD: INC (HL) JR L3A98 ; (-018H) L3AB0: LD A,028H SCF RET L3AB4: LD A,(L397E) LD (L397F),A LD A,(L3983) OR A JR NZ,L3AD7 ; (+017H) CALL L3BEB LD A,(L397E) LD HL,L3982 ADD A,(HL) LD (L3982),A INC A LD (L397C),A CALL L3A7A JP NC,L3B51 L3AD7: LD A,(L3973) LD B,A AND 001H JR NZ,L3AEE ; (+00fH) LD DE,L3974 LD A,B RES 2,A CALL L3B5A CALL BRKCHK JP Z,L3A45 L3AEE: LD DE,L3978 LD A,(L3973) SET 0,A CALL L3B5A CALL L3C34 CALL BRKCHK JP Z,L3A45 LD A,(L3973) AND 004H JR Z,L3B55 ; (+04cH) LD A,(L3981) LD HL,L397E ADD A,(HL) CALL L3BD3 LD A,001H LD (L3980),A L3B18: LD A,(L3981) LD HL,L397F ADD A,(HL) INC A LD (L3982),A INC A LD (L397C),A CALL L3A7A JR NC,L3B51 ; (+025H) LD A,(L3973) AND 001H JR NZ,L3B3A ; (+007H) LD DE,L3974 CALL L3B88 RET C L3B3A: LD DE,L3978 CALL L3B88 RET C LD A,(L3980) OR A JR Z,L3B4E ; (+007H) L3B47: XOR A LD (L397E),A LD (L3980),A L3B4E: JP L3C34 L3B51: LD A,029H SCF RET L3B55: CALL L3BEB JR L3B18 ; (-042H) L3B5A: PUSH AF LD HL,L397E INC (HL) CALL L3CAA POP AF CALL L3D21 CALL L3B7E LD A,C CALL L3D21 LD A,B CALL L3D21 L3B71: LD A,(HL) CALL L3D21 INC HL DEC BC LD A,B OR C JR NZ,L3B71 ; (-00aH) JP L3CF7 L3B7E: EX DE,HL LD E,(HL) INC HL LD D,(HL) INC HL LD C,(HL) INC HL LD B,(HL) EX DE,HL RET L3B88: CALL L3C49 CALL L3B7E CALL L3D37 CP C JR NZ,L3B51 ; (-043H) CALL L3D37 CP B JR NZ,L3B51 ; (-049H) L3B9A: CALL L3D37 CP (HL) JR NZ,L3B51 ; (-04fH) INC HL DEC BC LD A,B OR C JR NZ,L3B9A ; (-00cH) JP L3D09 L3BA9: LD B,A LD A,002H OUT (0F7H),A LD A,055H OUT (0F7H),A LD A,002H OUT (0F7H),A IN A,(0F7H) CP 055H JP NZ,03D4DH LD A,010H OUT (0F6H),A IN A,(0F6H) LD C,A AND 008H JP Z,03D4DH LD A,B OR A RET Z LD A,C AND 020H RET NZ JP 03D4AH L3BD3: PUSH AF LD HL,03D73H LD B,009H CALL L3C0A CALL L3CDF CALL L3CC3 POP AF CALL L3D21 CALL L3CF7 JR L3C00 ; (+015H) L3BEB: LD HL,L3D68 LD B,00BH CALL L3C0A CALL L3C5F LD (L3981),A INC A LD (L3982),A CALL L3D09 L3C00: LD HL,L3985 SET 3,(HL) XOR A LD (L397D),A RET L3C0A: LD C,0F6H OTIR LD A,005H LD (L3983),A OUT (0F7H),A LD A,080H OUT (0F7H),A L3C19: LD A,010H OUT (0F6H),A IN A,(0F6H) AND 008H JP Z,03D4DH LD A,010H OUT (0F7H),A IN A,(0F7H) AND 008H JR Z,L3C19 ; (-015H) LD BC,L00E9 JP L3D5B L3C34: PUSH AF LD A,005H OUT (0F6H),A LD A,060H OUT (0F6H),A LD A,005H OUT (0F7H),A XOR A LD (L3983),A OUT (0F7H),A POP AF RET L3C49: LD A,058H LD B,00BH LD HL,L3D68 CALL L3CE8 LD HL,L3985 BIT 3,(HL) LD BC,L0003 JR Z,L3C62 ; (+005H) RES 3,(HL) L3C5F: LD BC,L00A0 L3C62: CALL L3D5B LD A,005H OUT (0F7H),A LD A,082H OUT (0F7H),A LD A,003H OUT (0F6H),A LD A,LSD3 OUT (0F6H),A LD BC,L2CC0 L3C78: LD A,010H OUT (0F6H),A IN A,(0F6H) AND 010H JR Z,L3C8A ; (+008H) DEC BC LD A,B OR C JR NZ,L3C78 ; (-00fH) JP 03D53H L3C8A: LD A,003H OUT (0F6H),A LD A,0C3H OUT (0F6H),A L3C92: LD A,010H OUT (0F6H),A IN A,(0F6H) AND 001H JR Z,L3C92 ; (-00aH) LD A,003H OUT (0F6H),A LD A,0C9H OUT (0F6H),A CALL L3D37 JP L3D37 L3CAA: LD A,098H LD B,009H LD HL,03D73H CALL L3CE8 CALL L3CDF LD HL,L3985 BIT 3,(HL) LD BC,0001DH JR Z,L3CC6 ; (+005H) RES 3,(HL) L3CC3: LD BC,L0140 L3CC6: CALL L3D5B LD A,005H OUT (0F6H),A LD A,0EFH OUT (0F6H),A LD BC,00001H CALL L3D5B LD A,0C0H OUT (0F6H),A LD A,0A5H JR L3D21 ; (+042H) L3CDF: LD A,005H OUT (0F6H),A LD A,0FFH OUT (0F6H),A RET L3CE8: LD C,0F6H OUT (C),A LD A,005H OUT (0F7H),A LD A,080H OUT (0F7H),A OTIR RET L3CF7: LD BC,00001H CALL L3D5B LD A,010H OUT (0F7H),A IN A,(0F7H) AND 008H RET NZ JP 03D50H L3D09: LD B,003H L3D0B: CALL L3D37 DJNZ L3D0B ; (-005H) L3D10: IN A,(0F6H) RRCA JR NC,L3D10 ; (-005H) LD A,001H OUT (0F6H),A IN A,(0F6H) AND 040H JR NZ,L3D47 ; (+028H) OR A RET L3D21: PUSH AF L3D22: IN A,(0F6H) AND 004H JR Z,L3D22 ; (-006H) POP AF OUT (QDPC),A L3D2B: LD A,010H OUT (0F6H),A IN A,(0F6H) AND 008H JP Z,03D4DH RET L3D37: CALL L3D2B IN A,(0F6H) RLCA JR C,L3D47 ; (+008H) RRCA RRCA JR NC,L3D37 ; (-00cH) IN A,(QDPC) OR A RET L3D47: LD A,029H LD HL,02E3EH LD HL,0323EH LD HL,L353E LD HL,0363EH LD SP,(03986H) SCF RET L3D5B: PUSH AF L3D5C: LD A,098H L3D5E: DEC A JR NZ,L3D5E ; (-003H) DEC BC LD A,B OR C JR NZ,L3D5C ; (-00aH) POP AF RET L3D68: LD E,B INC B DJNZ L3D71 ; (+005H) INC B INC BC RET NC LD B,016H L3D71: RLCA LD D,098H INC B DJNZ L3D7D ; (+006H) LD D,007H LD D,005H LD L,L PUSH HL L3D7D: LD DE,(00188H) PUSH DE LD DE,L3DC3 LD (00188H),DE LD A,(L004F) PUSH AF LD A,064H LD (L004F),A LD (03E3AH),SP XOR A LD (L1091),A L3D9A: LD SP,L0000 L3D9D: LD BC,L3D9D PUSH BC RST 018H DB 002H LD A,02AH RST 018H DB 003H L3DA7: CALL L3E46 JR NC,L3DA7 ; (-005H) LD A,(DE) CP 02AH RET NZ INC DE LD A,(DE) INC DE EXX LD HL,L3DD5 LD B,00AH L3DB9: CP (HL) INC HL JR Z,L3DCF ; (+012H) INC HL INC HL DJNZ L3DB9 ; (-008H) EXX RET L3DC3: LD C,A AND 07FH JR Z,L3D9A ; (-02eH) LD A,C RST 018H DB 01BH RST 018H DB 043H JR L3D9A ; (-035H) L3DCF: LD E,(HL) INC HL LD D,(HL) PUSH DE EXX RET L3DD5: LD B,H CP E LD A,04DH DEC L CCF LD D,B DI DEC A LD B,A OR (HL) LD A,046H LD D,C CCF LD D,D ADD HL,SP LD A,053H CALL M,L4C3D INC DE LD A,056H JR NC,03E2EH ; (+03eH) LD D,H AND C CCF LD A,(L1091) XOR 001H LD (L1091),A RET CALL L3F8A RET C EXX CALL L3FB8 EXX LD (ELMD20),BC LD (ELMD22),DE LD (L1018),HL RST 018H DB 031H RET CALL L3E67 PUSH HL PUSH AF CALL L3E25 POP AF POP HL JR NC,L3E22 ; (+003H) LD HL,(ELMD22) L3E22: RST 018H DB 030H RET L3E25: CALL L3FB8 RST 018H DB 02FH CP 001H RET Z JP 01F9DH CALL L3E25 LD HL,(ELMD22) RST 018H DB 032H RET LD SP,L0000 POP AF LD (L004F),A POP HL LD (00188H),HL POP HL RET L3E46: LD DE,0FF00H RST 018H DB 00CH JR C,L3E65 ; (+018H) LD A,(DE) CP 03AH SCF RET NZ INC DE CALL L3E67 RET C LD A,(DE) INC DE XOR 03DH RET NZ L3E5C: CALL L3E8C CCF RET NC LD (HL),A INC HL JR L3E5C ; (-009H) L3E65: LD (DE),A RET L3E67: PUSH HL CALL L3E81 PUSH DE CALL L3E93 JR C,L3E7C ; (+00bH) LD H,A CALL L3E93 JR C,L3E7C ; (+005H) LD L,A POP AF POP AF XOR A RET L3E7C: POP DE POP HL SCF RET L3E80: INC DE L3E81: LD A,(DE) CP 020H JR Z,L3E80 ; (-006H) RET L3E87: LD A,(DE) RST 018H DB 015H INC DE RET L3E8C: CALL L3E81 CP 03BH JR Z,L3EB1 ; (+01eH) L3E93: PUSH BC PUSH DE CALL L3E87 JR C,L3EAD ; (+013H) LD C,A CALL L3E87 JR C,L3EAD ; (+00dH) LD B,A LD A,C RLCA RLCA RLCA RLCA ADD A,B LD C,A LD A,C POP BC POP BC OR A RET L3EAD: POP DE POP BC SCF RET L3EB1: INC DE LD A,(DE) INC DE OR A RET CALL L3E67 RET C JP (HL) CALL L3E67 JR C,L3ECB ; (+00bH) PUSH HL CALL L3E67 JR C,L3ECA ; (+004H) POP DE EX DE,HL JR L3ED1 ; (+007H) L3ECA: POP HL L3ECB: EX DE,HL LD HL,L0080 ADD HL,DE EX DE,HL L3ED1: LD C,008H CALL L3EDE RET C PUSH HL SBC HL,DE POP HL RET NC JR L3ED1 ; (-00dH) L3EDE: CALL L3F06 LD B,C PUSH HL L3EE3: LD A,(HL) CALL L3F17 INC HL LD A,020H RST 018H DB 009H DJNZ L3EE3 ; (-00bH) POP HL LD A,02FH RST 018H DB 009H LD B,C L3EF4: LD A,(HL) CP 020H JR NC,L3EFB ; (+002H) LD A,02EH L3EFB: RST 018H DB 009H INC HL DJNZ L3EF4 ; (-00cH) RST 018H DB 008H RST 018H DB 00FH OR A RET L3F06: LD A,03AH RST 018H DB 009H LD A,H CALL L3F17 LD A,L CALL L3F17 LD A,03DH RST 018H DB 009H RET L3F17: PUSH AF RLCA RLCA RLCA RLCA CALL L3F20 POP AF L3F20: AND 00FH ADD A,030H CP 03AH JR C,L3F2A ; (+002H) ADD A,007H L3F2A: RST 018H DB 009H RET CALL L3E67 LD A,(L1091) PUSH AF XOR A LD (L1091),A L3F38: RST 018H DB 002H CALL L3F06 LD A,(HL) CALL L3F17 LD A,014H RST 018H DB 003H RST 018H DB 003H CALL L3E46 JR NC,L3F38 ; (-014H) POP AF LD (L1091),A RET CALL L3E67 RET C PUSH HL CALL L3E67 POP BC RET C PUSH HL PUSH BC LD HL,0FF00H CALL L3E5C LD DE,0FF00H OR A SBC HL,DE LD C,L POP HL PUSH HL EXX POP HL POP DE EXX RET Z L3F71: CALL L3FCB JR NZ,L3F7A ; (+004H) CALL L3EDE RET C L3F7A: RST 018H DB 00EH RET Z EXX INC HL PUSH HL SCF SBC HL,DE POP HL RET NC PUSH HL EXX POP HL JR L3F71 ; (-019H) L3F8A: CALL L3E67 PUSH HL CALL NC,L3E67 POP BC RET C SBC HL,BC INC HL PUSH HL PUSH BC CALL L3E67 PUSH HL EXX POP HL POP DE POP BC RET CALL L3F8A RET C EX DE,HL PUSH HL SBC HL,DE POP HL JR C,L3FAF ; (+003H) LDIR RET L3FAF: ADD HL,BC DEC HL EX DE,HL ADD HL,BC DEC HL EX DE,HL LDDR RET L3FB8: LD A,(DE) OR A JR Z,L3FC1 ; (+005H) INC DE CP 03AH JR NZ,L3FB8 ; (-009H) L3FC1: RST 018H DB 017H RST 018H DB 02DH LD A,001H LD (L1000),A RET L3FCB: LD A,(DE) CP (HL) RET NZ PUSH BC PUSH DE PUSH HL LD B,C L3FD2: LD A,(DE) CP (HL) JR NZ,L3FDB ; (+005H) INC DE INC HL DJNZ L3FD2 ; (-008H) XOR A L3FDB: POP HL POP DE POP BC RET DS 33, 000H L4000: IF BUILD_RFS = 1 LD HL,RFS_END ; TEXTST: moved past RFS module ELSE LD HL,085FEH ; TEXTST: original end of BASIC code ENDIF LD (L1070),HL LD HL,L4052 LD (000E3H),HL LD A,B OR A JR Z,L401B ; (+00bH) LD HL,L4042 LD DE,L1361 LD BC,00010H LDIR L401B: LD A,(L0036) BIT 6,A LD A,045H JR Z,L4027 ; (+003H) LD (L852E),A L4027: LD DE,L84E0 RST 018H L402B: DB 005H IF BUILD_RFS = 1 JP MEMCLI_PATCH ; RFS: call SVC 020H then set HL=RFS_END ELSE RST 018H ; Original: SVC 020H (boot beep + EI) DB 020H EX DE,HL ENDIF L402F: LD (HL),000H INC HL LD A,H CP 0FFH JR C,L402F ; (-008H) CALL L4902 CALL L4914 CALL L5E1B JR L4056 ; (+014H) L4042: RRCA DB "RUN ",022H,"AUTO RUN",022H,00DH L4052: DB 03EH DB 016H DB 0DFH DB 003H L4056: LD HL,L4B7B LD (00188H),HL L405C: RST 018H DB 002H LD DE,L4B68 RST 018H DB 005H RST 018H DB 001H L4065: LD A,(L4B6E) OR A JR NZ,L4077 ; (+00cH) LD SP,(INTFAC) LD HL,0FFFFH PUSH HL LD (0848FH),SP L4077: LD HL,L0000 LD (L847C),HL XOR A LD (L0050),A CALL L48B1 RST 018H DB 043H LD DE,L11A4 RST 018H DB 00CH JR NC,L4099 ; (+00cH) L408D: LD HL,L48B0 LD A,(HL) OR A LD (HL),000H JR NZ,L405C ; (-03aH) JR L4065 ; (-033H) L4098: INC DE L4099: LD A,(DE) CP 020H JR Z,L4098 ; (-006H) OR A JR Z,L4065 ; (-03cH) CALL L5EC2 JP NC,L4746 LD HL,L84E0 PUSH HL CALL L66ED INC HL LD (L8476),HL CALL L4952 POP HL JR L40BB ; (+003H) L40B8: CALL L5E46 L40BB: LD (0848FH),SP L40BF: LD DE,L40B8 PUSH DE L40C3: LD (L8491),HL CALL BRKCHK JP Z,0017DH L40CC: LD A,(HL) INC HL CP 080H JR NC,L4126 ; (+054H) CP 027H JP Z,L4F80 CP 020H JR Z,L40CC ; (-00fH) CP 03AH JR Z,L40C3 ; (-01cH) OR A JR Z,L40ED ; (+00bH) DEC HL SUB 041H CP 01AH JP C,L4C8F JP L4AE6 L40ED: LD HL,(L8476) L40F0: LD E,(HL) INC HL LD D,(HL) LD A,D OR E JR Z,L410F ; (+018H) LD (L0050),A EX DE,HL ADD HL,DE DEC HL LD (L8476),HL EX DE,HL INC HL CALL LDDEMI LD (0847CH),DE CALL L4971 POP DE JR L40BB ; (-054H) L410F: POP HL CALL L4152 JP Z,L405C XOR A LD (L4B6E),A LD A,(L847F) CP 002H JP Z,04B13H PUSH HL JP L4850 L4126: CP 0FFH JP Z,L4CC1 LD DE,L44B4 CP 0FEH JR NZ,L4136 ; (+004H) LD A,(HL) INC HL JR L413E ; (+008H) L4136: CP LSE0 JP NC,L4AE6 LD DE,L43F4 L413E: ADD A,A PUSH HL EX DE,HL LD E,A LD D,000H ADD HL,DE LD A,(HL) INC HL LD H,(HL) LD L,A EX (SP),HL L414A: CALL HLFTCH L414D: OR A RET Z CP 03AH RET L4152: PUSH HL LD HL,(L847C) LD A,L OR H POP HL RET NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP L4167: DB "GOT", "O" | 080H ; BASIC statement keyword text table DB "GOSU", "B" | 080H DB 080H DB "RU", "N" | 080H DB "RETUR", "N" | 080H DB "RESTOR", "E" | 080H DB "RESUM", "E" | 080H DB "LIS", "T" | 080H DB 080H DB "DELET", "E" | 080H DB 052H L4193: DB "ENU", "M" | 080H DB "AUT", "O" | 080H DB "EDI", "T" | 080H DB "FO", "R" | 080H DB "NEX", "T" | 080H DB "PRIN", "T" | 080H DB 080H DB "INPU", "T" | 080H DB 080H DB "I", "F" | 080H DB "DAT", "A" | 080H DB "REA", "D" | 080H DB "DI", "M" | 080H DB "RE", "M" | 080H DB "EN", "D" | 080H DB "STO", "P" | 080H DB "CON", "T" | 080H DB "CL", "S" | 080H DB 080H DB "O", "N" | 080H DB "LE", "T" | 080H DB "NE", "W" | 080H DB "POK", "E" | 080H DB "OF", "F" | 080H DB "MOD", "E" | 080H DB "SKI", "P" | 080H DB "PLO", "T" | 080H DB "LIN", "E" | 080H DB "RLIN", "E" | 080H DB "MOV", "E" | 080H DB "RMO", "V" | 080H DB "TRO", "N" | 080H DB "TROF", "F" | 080H DB "INP", "@" | 080H DB "DEFAUL", "T" | 080H DB "GE", "T" | 080H DB "PCOLO", "R" | 080H DB "PHOM", "E" | 080H DB "HSE", "T" | 080H DB "GPRIN", "T" | 080H DB "KE", "Y" | 080H DB "AXI", "S" | 080H DB "LOA", "D" | 080H DB "SAV", "E" | 080H DB "MERG", "E" | 080H DB "CHAI", "N" | 080H DB "CONSOL", "E" | 080H DB "SEARC", "H" | 080H DB "OUT", "@" | 080H DB "CIRCL", "E" | 080H DB "TES", "T" | 080H DB "PAG", "E" | 080H DB "WAI", "T" | 080H DB "SWA", "P" | 080H DB 080H DB "ERRO", "R" | 080H DB "ELS", "E" | 080H DB "US", "R" | 080H DB "BY", "E" | 080H DB 080H DB 080H DB "DE", "F" | 080H DB 080H DB 080H DB "LABE", "L" | 080H DB 080H DB 080H DB 080H DB "WOPE", "N" | 080H DB "CLOS", "E" | 080H DB "ROPE", "N" | 080H DB "XOPE", "N" | 080H DB 080H DB 080H DB 080H DB "DI", "R" | 080H DB 080H DB 080H DB "RENAM", "E" | 080H DB "KIL", "L" | 080H DB "LOC", "K" | 080H DB "UNLOC", "K" | 080H DB "INI", "T" | 080H DB 080H DB 080H DB 080H DB "T", "O" | 080H DB "STE", "P" | 080H DB "THE", "N" | 080H DB "USIN", "G" | 080H DB 080H DB 080H DB "TA", "B" | 080H DB "SP", "C" | 080H DB 080H DB 080H DB ".XO", "R" | 080H DB ".O", "R" | 080H DB ".AN", "D" | 080H DB ".NO", "T" | 080H DB ">", "<" | 080H DB "<", ">" | 080H DB "=", "<" | 080H DB "<", "=" | 080H DB "=", ">" | 080H DB ">", "=" | 080H DB "=" | 080H DB ">" | 080H DB "<" | 080H DB "+" | 080H DB "-" | 080H DB 080H DB 080H DB "/" | 080H DB "*" | 080H DB "^" | 080H DB 0FFH L42FE: DB 080H DB "SE", "T" | 080H DB "RESE", "T" | 080H DB "COLO", "R" | 080H ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B LD B,D LD B,L LD B,L RET NC ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B ADD A,B LD C,L LD D,L LD D,E LD C,C JP L4554 LD C,L LD D,B RST 008H LD B,E LD D,L LD D,D LD D,E LD C,A JP NC,L4556 LD D,D LD C,C LD B,(HL) EXX LD B,E LD C,H JP NC,0494CH LD C,L LD C,C CALL NC,08080H ADD A,B ADD A,B ADD A,B ADD A,B FUNCWORDTBL:DB "BOO", "T" | 080H ; BASIC function keyword text table DB 0FFH L4356: DB "IN", "T" | 080H DB "AB", "S" | 080H DB "SI", "N" | 080H DB "CO", "S" | 080H DB "TA", "N" | 080H DB "L", "N" | 080H DB "EX", "P" | 080H DB "SQ", "R" | 080H DB "RN", "D" | 080H DB "PEE", "K" | 080H DB "AT", "N" | 080H DB "SG", "N" | 080H DB "LO", "G" | 080H DB "FRA", "C" | 080H DB "PA", "I" | 080H DB "RA", "D" | 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB "JO", "Y" | 080H DB 080H DB "CHR", "$" | 080H DB "STR", "$" | 080H DB "HEX", "$" | 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB "SPACE", "$" | 080H DB 080H DB 080H DB "AS", "C" | 080H DB "LE", "N" | 080H DB "VA", "L" | 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB "ER", "N" | 080H DB "ER", "L" | 080H DB "SIZ", "E" | 080H DB "CSR", "H" | 080H DB "CSR", "V" | 080H DB 080H DB 080H DB "LEFT", "$" | 080H DB "RIGHT", "$" | 080H DB "MID", "$" | 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB 080H DB "TI", "$" | 080H DB 080H LD B,L LD C,A DW 046C6H ; Keyword dispatch address table DW 0FFCEH L43F4: DW L513D DW L50B8 DW L4AE6 DW L4802 DW L5087 DW L5828 DW L4C2E DW 052B8H DW L4AE6 DW L4999 DW L4A38 DW L4861 DW L48B9 DW L4D84 DW L4E1B DW L561E DW L4AE6 DW L575B DW L4AE6 DW L5150 DW L4F80 DW L5754 DW L76A5 DW L4F80 DW L4850 DW L4BE0 DW L4C11 DW L552D DW L4AE6 DW L50E0 DW L4C8F DW L4922 DW L501A DW L4AE6 DW L6A1C DW L6A7F DW L6E1A DW L6ACC DW 06ACFH DW 06AD2H DW 06AD5H DW L4959 DW L496C DW L4FA1 DW L58CA DW L4FE5 DW L6B37 DW L6B69 DW L6B73 DW L6B7D DW L539F DW L6BE2 DW L5986 DW L5C86 DW L59EA DW L59D5 DW L5256 DW L52B6 DW L4F8C DW L6C22 DW L6DF0 DW L6DFB DW L4F70 DW L5D63 DW L4AE6 DW L4B70 DW L5172 DW L4F26 DW L524E DW L4AE6 DW L4AE6 DW L544C DW L4AE6 DW L4AE6 DW L4F80 DW L4AE6 DW L4AE6 DW L4AE6 DW 058E2H DW L5913 DW L58DF DW 058E5H DW L4AE6 DW L4AE6 DW L4AE6 DW L5CE1 DW L4AE6 DW L4AE6 DW L5D08 DW 05914H DW 05CD5H DW L5CD3 DW L58D0 DW L4AE6 DW L4AE6 DW L4AE6 L44B4: DW L4AE6 DW L51E4 DW 051E5H DW L549C DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L524B DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L4AE6 DW L54F3 DW L5515 DW L4FBD DW L5C6F DW L4928 LD B,E LD D,B AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH OR B LD D,D L4512: ADD A,H LD A,(HL) LD A,A LD A,(HL) BIT 7,A CP E LD A,A XOR D ADD A,B ADD HL,DE ADD A,E PUSH AF ADD A,C POP HL LD A,(HL) OR B ADD A,C SBC A,H ADD A,C RST 038H LD A,(HL) LD H,D ADD A,C DEC C ADD A,E ADC A,E LD H,B LD A,D ADD A,C LD (HL),L ADD A,C AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH DEC H LD A,C AND 04AH AND 04AH L4554: JR NC,L45C8 ; (+072H) L4556: RST 028H LD (HL),C AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH LD (DE),A LD (HL),D AND 04AH AND 04AH LD L,E LD (HL),D LD (HL),L LD (HL),D LD A,L LD (HL),D AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH LD A,E LD (HL),C ADC A,C LD (HL),C LD E,H LD (HL),C LD (HL),C LD (HL),C HALT LD (HL),C AND 04AH AND 04AH ADC A,A LD (HL),D XOR H LD (HL),D RET LD (HL),D AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH RRA LD (HL),E AND 04AH LD A,072H SBC A,B LD A,B AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH AND 04AH L45B2: CALL TEST1 DB 00CH JR NZ,L45BE ; (+006H) CALL LDDEMI OR 0FFH RET L45BE: INC HL CP 00BH JR NZ,L45E2 ; (+01fH) LD E,(HL) INC HL LD D,(HL) INC HL LD A,E L45C8: OR D RET Z EX DE,HL CALL L4611 JP C,04B07H EX DE,HL DEC HL LD (HL),D DEC HL LD (HL),E DEC HL LD (HL),00CH INC HL INC HL INC HL OR 0FFH LD (L4745),A RET L45E2: CP 022H JP NZ,L4AE6 LD (04658H),HL LD B,000H L45EC: LD A,(HL) OR A JR Z,L45F8 ; (+008H) INC HL CP 022H JR Z,L45F8 ; (+003H) INC B JR L45EC ; (-00cH) L45F8: LD A,B OR A JP Z,L4AE6 LD (04656H),A EX DE,HL CALL L460B JP C,04B07H EX DE,HL OR 0FFH RET L460B: PUSH BC LD BC,L4644 JR L4615 ; (+004H) L4611: PUSH BC LD BC,L4638 L4615: LD (0462BH),BC PUSH DE EX DE,HL LD HL,(L1070) L461E: LD C,(HL) INC HL LD B,(HL) LD A,B OR C SCF JR Z,L4635 ; (+00fH) DEC HL PUSH HL ADD HL,BC EX (SP),HL CALL L0000 JR C,L4634 ; (+005H) JR Z,L4634 ; (+003H) POP HL JR L461E ; (-016H) L4634: POP DE L4635: POP DE POP BC RET L4638: INC HL INC HL INC HL LD A,D CP (HL) RET NZ DEC HL LD A,E CP (HL) DEC HL DEC HL RET L4644: PUSH HL INC HL INC HL INC HL INC HL CALL TEST1 DB 0CAH JR NZ,L4668 ; (+019H) CALL TEST1 DB 022H JR NZ,L4668 ; (+013H) LD B,000H LD DE,L0000 L465A: LD A,(DE) CP (HL) JR NZ,L4668 ; (+00aH) INC HL INC DE DJNZ L465A ; (-008H) LD A,(HL) CP 022H JR Z,L4668 ; (+001H) OR A L4668: SCF CCF POP HL RET L466C: LD DE,L0000 LD BC,0FFFFH CALL L46AE RET Z CP 02DH JR Z,L4696 ; (+01cH) CP 02EH LD DE,(08478H) JR Z,L4689 ; (+007H) CALL TESTX DB 00BH LD E,(HL) INC HL LD D,(HL) L4689: INC HL CALL L46AE JR Z,L4693 ; (+004H) CP 02DH JR Z,L4696 ; (+003H) L4693: LD C,E LD B,D RET L4696: INC HL CALL L46AE RET Z CP 02EH JR NZ,L46A5 ; (+006H) LD BC,(08478H) INC HL RET L46A5: CALL TESTX DB 00BH LD C,(HL) INC HL LD B,(HL) INC HL RET L46AE: CALL L414A RET Z CP 02CH RET L46B5: CALL SKPDE LD A,0FFH LD (L4745),A LD HL,L470B JR L46D4 ; (+012H) L46C2: CALL SKPDE CALL L4839 L46C8: LD A,(L4745) OR A RET Z XOR A LD (L4745),A LD HL,L46F1 L46D4: LD (046EFH),HL LD HL,(L1070) DEC HL L46DB: INC HL LD A,(HL) INC HL OR (HL) RET Z INC HL LD E,(HL) INC HL LD D,(HL) LD (0473AH),DE L46E8: CALL L5198 OR A JR Z,L46DB ; (-013H) JP L0000 L46F1: CP 00CH JR NZ,L46E8 ; (-00dH) DEC HL LD E,(HL) INC HL LD D,(HL) PUSH HL EX DE,HL INC HL INC HL LD E,(HL) INC HL LD D,(HL) POP HL LD (HL),D DEC HL LD (HL),E DEC HL LD (HL),00BH INC HL INC HL JR L46E8 ; (-023H) L470B: CP 00BH JR NZ,L46E8 ; (-027H) DEC HL PUSH HL CALL INDRCT LD E,L LD D,H LD A,L OR H JR Z,L4741 ; (+027H) CALL L4611 JR C,L472A ; (+00bH) EX DE,HL POP HL DEC HL LD (HL),00CH INC HL LD (HL),E INC HL LD (HL),D JR L46E8 ; (-042H) L472A: PUSH DE LD A,010H RST 018H DB 01BH LD A,020H RST 018H DB 003H POP HL CALL L5E64 RST 018H DB 005H LD HL,L0000 CALL L4B4E RST 018H DB 002H L4741: POP HL INC HL JR L46E8 ; (-05dH) L4745: NOP L4746: RST 018H DB 028H CALL L46C2 CALL L6A09 LD A,B OR C JP Z,L4065 LD (08478H),BC LD A,(DE) CP 020H JR NZ,L475D ; (+001H) INC DE L475D: PUSH AF LD HL,L84E0 CALL L66ED PUSH HL LD HL,(L8478) LD E,L LD D,H CALL L49B9 POP HL POP AF OR A JR Z,L4784 ; (+012H) LD DE,L84E0 OR A SBC HL,DE LD DE,00005H ADD HL,DE LD B,H LD C,L LD HL,L84E0 CALL L479C L4784: LD A,(L48B0) OR A JP Z,L4065 LD DE,(0847AH) LD HL,(L8478) ADD HL,DE LD (L8478),HL JP NC,L4065 JP L408D L479C: LD (047F9H),HL PUSH BC LD BC,(08478H) LD HL,(L1070) JR L47AD ; (+004H) L47A9: CALL LDDEMD ADD HL,DE L47AD: CALL LDDEMD LD A,D OR E JR Z,L47C1 ; (+00dH) INC HL INC HL CALL LDDEMD EX DE,HL SBC HL,BC DEC DE DEC DE EX DE,HL JR C,L47A9 ; (-018H) L47C1: POP DE PUSH HL LD HL,(L1078) LD (L107A),HL LD B,H LD C,L ADD HL,DE JP C,L4B26 EX DE,HL CALL L74E1 EX DE,HL RST 018H DB 018H POP HL PUSH DE PUSH BC EX (SP),HL POP BC PUSH HL OR A SBC HL,BC LD B,H LD C,L POP HL LD DE,(VARED) INC BC LDDR INC HL POP BC LD (HL),C INC HL LD (HL),B INC HL LD DE,(08478H) LD (HL),E INC HL LD (HL),D INC HL EX DE,HL LD HL,L84E0 DEC BC DEC BC DEC BC DEC BC LDIR RET L4802: JR Z,L480D ; (+009H) CALL L516C JP Z,L513D JP L5AED L480D: CALL L4928 L4810: CALL L4824 LD DE,(TEXTST) LD SP,(INTFAC) LD HL,0FFFFH PUSH HL PUSH HL EX DE,HL JP L40F0 L4824: PUSH HL PUSH DE CALL L4839 XOR A LD (L48B0),A LD HL,0000AH LD (L8478),HL LD (L847A),HL POP DE POP HL RET L4839: CALL L5825 LD HL,L0000 LD (L8480),HL XOR A LD (L4B6E),A LD (L847F),A LD (L847E),A LD (L8493),A RET L4850: LD A,(L8493) OR A JP NZ,L5DC9 RST 018H DB 028H XOR A LD (L4B6E),A POP BC JP L405C L4861: LD DE,0000AH LD BC,0000AH JR Z,L4897 ; (+02eH) CP 02CH JR NZ,L4878 ; (+00bH) INC HL CALL L6E57 LD B,D LD C,E LD DE,0000AH JR L4897 ; (+01fH) L4878: CP 02EH LD DE,(08478H) JR Z,L4889 ; (+009H) CP 00BH JP NZ,L4AE6 INC HL LD E,(HL) INC HL LD D,(HL) L4889: INC HL CALL TEST1 DB 02CH JR NZ,L4897 ; (+007H) PUSH DE CALL L6E57 LD C,E LD B,D POP DE L4897: CALL L5E46 LD A,C OR B JP Z,04AECH LD (08478H),DE LD (0847AH),BC LD A,001H LD (L48B0),A POP AF JP L4065 L48B0: NOP L48B1: LD A,(L48B0) OR A RET Z XOR A JR L48BF ; (+006H) L48B9: CALL L48BF JP L4065 L48BF: LD DE,(08478H) CALL NZ,L466C PUSH DE EX DE,HL CALL L4611 POP DE INC HL INC HL INC HL INC HL JR NC,L48D5 ; (+003H) LD HL,L00F9 L48D5: EX DE,HL PUSH DE LD (L8478),HL CALL L5E64 RST 018H DB 005H LD A,020H RST 018H DB 003H POP HL LD DE,L11A4 PUSH DE CALL L68D8 POP DE LD B,000H L48EE: LD A,(DE) OR A JR Z,L48F8 ; (+006H) INC B RST 018H DB 004H INC DE JR L48EE ; (-00aH) L48F8: LD A,B OR A RET Z LD A,014H RST 018H DB 003H DJNZ 048FCH ; (-005H) RET L4902: PUSH DE LD DE,0FFF0H ADD HL,DE POP DE LD (L107E),HL DEC H LD (L107C),HL XOR A LD (L8493),A RET L4914: LD HL,(L1070) CALL L4952 LD (L1072),HL CALL L4824 JR L4928 ; (+006H) L4922: CALL L4914 JP L4056 L4928: PUSH HL CALL L4939 POP HL RST 018H DB 028H RET L4930: LD HL,(L1070) CALL L4952 LD (L1072),HL L4939: LD HL,(L1072) LD (HL),000H INC HL LD (L1074),HL LD (HL),000H INC HL LD (L1076),HL CALL L4952 LD (L1078),HL LD (L107A),HL RET L4952: LD (HL),000H INC HL LD (HL),000H INC HL RET L4959: CALL L414A LD A,001H JR Z,L496D ; (+00dH) CALL TESTX DB FDPD CALL TESTX DB 050H LD A,002H JR L496D ; (+001H) L496C: XOR A L496D: LD (04972H),A RET L4971: LD A,000H OR A RET Z DEC A LD (L1091),A JR Z,L4982 ; (+007H) LD A,(L1097) CP 002H JR Z,L4994 ; (+012H) L4982: PUSH HL LD A,05BH RST 018H DB 009H LD HL,(L847C) CALL L5E64 RST 018H DB 00BH LD A,05DH RST 018H DB 009H POP HL L4994: XOR A LD (L1091),A RET L4999: CALL L46AE JP Z,L4AE6 CALL L516C JR Z,L49AD ; (+009H) CP 02DH JR Z,L49AD ; (+005H) CP 02EH JP NZ,L5D00 L49AD: CALL L466C EX DE,HL LD E,C LD D,B CALL L49B9 JP L405C L49B9: PUSH AF PUSH BC PUSH HL PUSH DE CALL L46C2 LD C,L LD B,H LD HL,(L1070) L49C5: CALL LDDEMI LD A,E OR D JR NZ,L49D4 ; (+008H) L49CC: POP DE POP HL POP BC POP AF RET L49D1: POP DE JR L49CC ; (-008H) L49D4: EX DE,HL ADD HL,DE DEC HL DEC HL EX DE,HL PUSH DE LD E,(HL) INC HL LD D,(HL) EX DE,HL LD (049EEH),HL SBC HL,BC POP HL JR C,L49C5 ; (-021H) DB 01BH DEC DE DEC DE POP BC PUSH BC PUSH DE PUSH HL LD HL,L0000 SBC HL,BC POP HL JR Z,L4A13 ; (+01eH) JR NC,L49D1 ; (-026H) L49F7: CALL LDDEMI LD A,D OR E JR Z,L4A11 ; (+013H) EX DE,HL ADD HL,DE EX DE,HL DEC DE DEC DE PUSH DE LD E,(HL) INC HL LD D,(HL) EX DE,HL SBC HL,BC POP HL JR C,L49F7 ; (-016H) JR Z,L4A13 ; (+004H) EX DE,HL DEC HL L4A11: DEC HL DEC HL L4A13: POP DE PUSH DE PUSH HL OR A EX DE,HL SBC HL,DE EX DE,HL LD BC,(VARED) RST 018H DB 018H POP DE LD H,B LD L,C OR A SBC HL,DE LD B,H LD C,L EX DE,HL POP DE LDIR JR L49CC ; (-063H) L4A2F: CALL L6E57 LD A,D OR E RET NZ JP 04AECH L4A38: LD DE,0000AH LD (04AB4H),DE LD (04AC6H),DE LD E,000H LD (04AA3H),DE JR Z,L4A7E ; (+033H) CP 02CH JR Z,L4A5F ; (+010H) CALL L4A2F LD (04AB4H),DE CALL L414A JR Z,L4A7E ; (+023H) CALL L5E6E DEC HL L4A5F: CALL INCHLF CP 02CH JR Z,L4A76 ; (+010H) CALL L4A2F LD (04AA3H),DE CALL L414A JR Z,L4A7E ; (+00cH) CALL L5E6E DEC HL L4A76: INC HL CALL L4A2F LD (04AC6H),DE L4A7E: PUSH HL LD HL,(04AA3H) EX DE,HL LD HL,(04AB4H) OR A SBC HL,DE JP C,04AECH CALL L46B5 LD HL,(L1070) L4A92: LD E,(HL) INC HL LD D,(HL) LD A,D OR E JR Z,L4AD0 ; (+037H) EX DE,HL ADD HL,DE DEC HL EX DE,HL INC HL LD C,(HL) INC HL LD B,(HL) PUSH HL LD HL,L0000 OR A SBC HL,BC POP HL JR Z,L4AB0 ; (+005H) JR C,L4AB0 ; (+003H) EX DE,HL JR L4A92 ; (-01eH) L4AB0: DEC HL DEC HL DEC HL LD BC,L0000 L4AB6: LD E,(HL) INC HL LD D,(HL) LD A,D OR E JR Z,L4AD0 ; (+013H) EX DE,HL ADD HL,DE DEC HL EX DE,HL INC HL LD (HL),C INC HL LD (HL),B LD HL,L0000 ADD HL,BC JR C,L4AD2 ; (+007H) LD C,L LD B,H EX DE,HL JR L4AB6 ; (-01aH) L4AD0: POP HL RET L4AD2: LD HL,0000AH LD (04AC6H),HL LD (04AB4H),HL LD L,000H LD (04AA3H),HL CALL L4A7E JP 04AECH L4AE6: LD A,001H LD HL,0023EH LD HL,L033E LD HL,0043EH LD HL,L053E LD HL,0063EH LD HL,0073EH LD HL,L083E LD HL,L0D3E LD HL,L0E3E LD HL,L0F3E LD HL,L103E LD HL,L113E LD HL,L123E LD HL,L133E LD HL,0143EH LD HL,0153EH LD HL,L183E LD HL,L193E LD HL,L3A3E LD HL,0403EH JR L4B34 ; (+00eH) L4B26: LD A,006H L4B28: LD SP,(INTFAC) LD HL,0FFFFH PUSH HL LD (0848FH),SP L4B34: JR L4B4B ; (+015H) L4B36: LD HL,(.$LPT) LD IX,(.$CRT) LD (L1044),HL LD A,0C4H LD HL,0BB3EH LD HL,0BC3EH LD HL,0BD3EH L4B4B: JP L0182 L4B4E: LD A,L OR H RET Z LD DE,L4B5C RST 018H DB 005H CALL L5E64 RST 018H DB 005H RET L4B5C: DB 020H,049H,04EH,020H,000H ; " IN \0" — error location text L4B61: DB 042H,005H ; "B\x05" — control prefix DB 052H,045H,041H,04BH,000H ; "REAK\0" — BREAK message L4B68: DB 052H,005H ; "R\x05" — control prefix DB 045H,041H,044H,059H ; "EADY" — Ready prompt L4B6E: DB 000H ; NUL terminator DB 000H ; padding L4B70: CALL L6E43 DEC A CP 046H JR C,L4B7A ; (+002H) LD A,044H L4B7A: INC A L4B7B: LD SP,(0848FH) PUSH AF RST 018H DB 043H CALL L5C42 POP AF OR A JR Z,L4BDB ; (+052H) CP 080H JR Z,L4BD9 ; (+04cH) LD C,A LD HL,L0000 LD (L7921),HL CALL L4152 LD A,C JR Z,L4BC4 ; (+02aH) LD HL,(L847C) LD (L8480),HL LD (L8478),HL LD HL,(L8476) LD (L8482),HL LD HL,(L8491) LD (L8484),HL AND 07FH LD (L847E),A LD A,(L847F) INC A CP 002H JR Z,L4BCF ; (+013H) XOR A LD (L4B6E),A LD (L8493),A LD A,C L4BC4: RST 018H DB 01BH L4BC6: LD HL,(L847C) CALL L4B4E JP L405C L4BCF: LD (L847F),A LD HL,(08486H) PUSH HL JP L40F0 L4BD9: LD A,02EH L4BDB: LD HL,(L8491) JR L4BE3 ; (+003H) L4BE0: LD A,02EH POP DE L4BE3: PUSH AF PUSH HL RST 018H DB 002H RST 018H DB 020H LD DE,L4B61 RST 018H DB 005H POP HL CALL L4152 JR Z,L4C0D ; (+019H) LD (04C29H),HL LD HL,(L8476) LD (04C23H),HL LD HL,(L847C) LD (04C1DH),HL LD (L8478),HL POP AF LD (L4B6E),A JP L4BC6 L4C0D: POP AF JP L405C L4C11: POP DE LD HL,L4B6E LD A,(HL) OR A JP Z,04B0AH LD (HL),000H LD HL,L0000 LD (L847C),HL LD HL,L0000 LD (L8476),HL LD HL,L0000 JP L40BB L4C2E: LD A,(L847F) CP 002H JP C,04B16H DEC A LD (L847F),A CALL L414A L4C3D: EX DE,HL LD HL,(L8480) LD (L847C),HL LD HL,(L8482) LD (L8476),HL LD HL,(L8484) JR NZ,L4C53 ; (+004H) POP BC JP L40BF L4C53: CP 08EH JP Z,L4F80 EX DE,HL JP L513D L4C5C: CALL TEST1 DB 080H JR Z,L4C6A ; (+008H) CALL TESTX DB 082H CALL TESTX DB LSE0 L4C6A: CALL L45B2 JR Z,L4C79 ; (+00aH) LD (08486H),DE LD A,001H L4C75: LD (L847F),A RET L4C79: LD A,(L847F) DEC A JR Z,L4C75 ; (-00aH) XOR A LD (L847F),A LD HL,(L8480) LD (L847C),HL LD A,(L847E) JP L4B7B L4C8F: CALL TEST1 DB 0FFH JP Z,L4CC1 CALL L742F PUSH BC PUSH BC PUSH AF CALL TESTX DB QDPC CALL L6E82 POP BC LD A,(L84C7) CP B JP NZ,04AEFH EX (SP),HL EX DE,HL CP 005H JR Z,L4CB9 ; (+008H) PUSH BC CALL L4CCC POP AF POP HL POP BC RET L4CB9: LD C,A LD B,000H LDIR POP HL POP BC RET L4CC1: CALL TESTX DB 0C4H JP L73BB L4CC8: PUSH DE EX DE,HL JR L4CD0 ; (+004H) L4CCC: PUSH DE CALL L6E76 L4CD0: LD HL,L11A4 LD (HL),A LD B,A LD C,A INC HL CALL LDHLDE POP HL LD A,(HL) CP C JR Z,L4D21 ; (+042H) PUSH HL OR A CALL NZ,L4D31 POP HL LD A,(L11A4) OR A JR Z,L4D1E ; (+033H) PUSH HL LD BC,(VARST) SBC HL,BC EX DE,HL LD HL,(L1078) DEC HL DEC HL LD (HL),E INC HL LD (HL),D INC HL LD BC,(STRST) OR A POP DE PUSH HL SBC HL,BC EX DE,HL LD (HL),A LD B,A INC HL LD (HL),E INC HL LD (HL),D POP HL LD DE,L11A4 INC DE CALL L74D5 CALL L4952 LD (L107A),HL LD (L1078),HL RET L4D1E: LD (HL),000H RET L4D21: INC HL LD E,(HL) INC HL LD D,(HL) LD HL,(L1076) ADD HL,DE LD DE,L11A4 LD B,C INC DE JP L74D5 L4D31: LD C,(HL) LD B,000H INC BC INC BC INC HL LD E,(HL) INC HL LD D,(HL) LD HL,(L1076) ADD HL,DE L4D3E: DEC HL DEC HL LD E,L LD D,H ADD HL,BC PUSH BC PUSH DE EX DE,HL LD HL,(L1078) OR A SBC HL,DE LD C,L LD B,H EX DE,HL POP DE PUSH DE JR Z,L4D55 ; (+002H) LDIR L4D55: POP DE POP BC LD HL,(L1078) OR A SBC HL,BC LD (L1078),HL EX DE,HL L4D61: LD E,(HL) INC HL LD D,(HL) LD A,D OR E RET Z LD HL,(L1074) ADD HL,DE LD A,(HL) INC HL LD E,(HL) INC HL LD D,(HL) OR A EX DE,HL SBC HL,BC EX DE,HL LD (HL),D DEC HL LD (HL),E PUSH BC LD C,A LD B,000H LD HL,(L1076) ADD HL,DE ADD HL,BC POP BC JR L4D61 ; (-023H) L4D84: POP BC LD (04E19H),BC CALL L4C8F LD IX,L0000 ADD IX,SP LD (04DFBH),HL CALL L4EF4 LD (04DF7H),BC L4D9C: LD E,(IX+000H) LD D,(IX+001H) LD HL,0FF12H OR A SBC HL,DE JR NZ,L4DC4 ; (+01aH) LD E,(IX+006H) LD D,(IX+007H) EX DE,HL OR A SBC HL,BC JR Z,L4DBD ; (+007H) LD DE,L0012 ADD IX,DE JR L4D9C ; (-021H) L4DBD: DB 011H LD (DE),A NOP ADD IX,DE LD SP,IX L4DC4: LD HL,(04DFBH) CALL TESTX DB LSE0 CALL L6E82 PUSH AF PUSH HL EX DE,HL LD DE,L4F00 CALL L5E91 POP HL POP AF CP LSE1 LD DE,L6110 JR NZ,L4DE4 ; (+004H) INC HL CALL L6E82 L4DE4: LD (04DFBH),HL LD HL,0FFF6H ADD HL,SP LD SP,HL EX DE,HL CALL L5E91 LD HL,L4F00 CALL L5E91 LD HL,L0000 PUSH HL LD HL,L0000 PUSH HL LD HL,(L8476) PUSH HL LD HL,0FF12H PUSH HL LD HL,0FE00H ADD HL,SP LD DE,(TMPEND) SBC HL,DE LD A,00BH JP C,L4B28 LD HL,(04DFBH) JP L0000 L4E1B: LD A,005H LD (L84C7),A POP BC LD (04E90H),BC L4E25: PUSH AF POP BC LD (04DFBH),HL LD IX,L0000 ADD IX,SP LD (04E7FH),IX LD E,(IX+000H) LD D,(IX+001H) LD HL,0FF12H OR A SBC HL,DE JP NZ,04AFEH PUSH BC POP AF JR NZ,L4EA6 ; (+05fH) LD E,(IX+004H) LD D,(IX+005H) EX DE,HL LD (04E8DH),HL LD E,(IX+006H) LD D,(IX+007H) LD HL,(L1074) ADD HL,DE LD BC,00008H ADD IX,BC PUSH IX POP DE CALL L797E INC DE LD A,(DE) LD IX,(04E7FH) LD DE,0000DH ADD IX,DE PUSH IX POP DE BIT 7,A JR NZ,L4E79 ; (+001H) EX DE,HL L4E79: CALL L7A15 JR C,L4E92 ; (+014H) LD SP,L0000 LD HL,00002H ADD HL,SP LD A,(HL) INC HL LD H,(HL) LD L,A LD (L8476),HL LD HL,L0000 L4E8F: JP L0000 L4E92: LD DE,L0012 LD HL,(04E7FH) ADD HL,DE LD SP,HL LD HL,(04DFBH) CALL TEST1 DB 02CH JR NZ,L4E8F ; (-014H) LD (04DFBH),HL L4EA6: LD IX,L0000 ADD IX,SP LD (04E7FH),IX LD HL,(04DFBH) CALL TEST1 DB 02CH JP Z,L4E25 CALL L742F LD (04DFBH),HL CALL L4EF4 LD IX,(04E7FH) L4EC7: LD E,(IX+000H) LD D,(IX+001H) LD HL,0FF12H OR A SBC HL,DE JP NZ,04AFEH LD L,(IX+006H) LD H,(IX+007H) OR A SBC HL,BC LD HL,(04DFBH) JP Z,L4E25 LD DE,L0012 ADD IX,DE LD (04E7FH),IX LD SP,(04E7FH) JR L4EC7 ; (-02dH) L4EF4: LD H,B LD L,C LD BC,(VARST) OR A SBC HL,BC LD B,H LD C,L RET L4F00: NOP NOP NOP NOP NOP NOP NOP NOP NOP L4F09: CALL L5198 OR A RET NZ INC HL PUSH DE LD E,(HL) INC HL LD D,(HL) LD A,D OR E INC HL LD (04F08H),DE LD E,(HL) INC HL LD D,(HL) LD (04F06H),DE POP DE SCF RET Z JR L4F09 ; (-01dH) L4F26: CALL L5E79 CALL L6E57 LD (04F5FH),DE CALL TEST1 DB 02CH JR NZ,L4F51 ; (+01bH) CALL L6E82 CALL L790F LD (04F54H),DE CALL TEST1 DB 02CH JR NZ,L4F51 ; (+00bH) CALL L742F CALL L790F LD (04F67H),BC XOR A L4F51: PUSH HL PUSH AF LD HL,L0000 CALL L6E76 LD IX,L0182 XOR A CALL L0000 POP AF JR NZ,L4F6C ; (+008H) LD A,B EX DE,HL LD DE,L0000 CALL L4CC8 L4F6C: POP HL JP L5E7D L4F70: CALL L6E57 L4F73: LD A,D OR E RET Z LD B,000H L4F78: DJNZ L4F78 ; (-002H) RST 018H DB 00EH RET Z DEC DE JR L4F73 ; (-00dH) L4F80: DEC HL L4F81: CALL L5198 OR A SCF RET Z CP 03AH RET Z JR L4F81 ; (-00bH) L4F8C: CALL L6E43 SUB LSE0 CP 007H JP C,04AECH CALL L5E6E PUSH DE CALL L6E43 POP BC OUT (C),A RET L4FA1: CALL L6E43 CALL L5E6E PUSH DE CALL L742F CP 005H JP NZ,04AEFH EX (SP),HL PUSH BC EX (SP),HL POP BC IN E,(C) LD D,000H CALL L5E97 POP HL RET L4FBD: CALL L4FC5 LD (00054H),DE RET L4FC5: LD B,018H LD C,027H CALL L4FD0 JP C,04AECH RET L4FD0: PUSH BC CALL L6E43 PUSH AF CALL L5E6E CALL L6E43 LD D,E POP AF LD E,A POP BC LD A,C CP E RET C LD A,B CP D RET L4FE5: CALL L742F LD (L84C7),A CP 005H JR Z,L5004 ; (+015H) PUSH HL PUSH BC LD A,0FFH RST 018H DB 00DH OR A JR Z,L4FFE ; (+006H) LD HL,(L107A) LD (HL),A LD A,001H L4FFE: POP DE CALL L4CC8 POP HL RET L5004: PUSH HL PUSH BC LD A,0FFH RST 018H DB 00DH SUB 030H CP 00AH JR C,L5011 ; (+001H) XOR A L5011: LD E,A LD D,000H POP HL CALL L5E97 POP HL RET L501A: CP 040H LD BC,POPRA JR NZ,L5025 ; (+004H) INC HL LD BC,L5041 L5025: LD (05036H),BC CALL L6E57 CALL L5E71 L502F: PUSH DE CALL L6E43 POP DE EX DE,HL CALL POPRA EX DE,HL INC DE CALL TEST1 DB 02CH RET NZ JR L502F ; (-012H) L5041: LD (HL),A RET PUSH HL CALL TEST1 DB 04DH JR NZ,L505C ; (+012H) CALL TEST1 DB 041H JR NZ,L505C ; (+00cH) CALL TEST1 DB 058H JR NZ,L505C ; (+006H) EX (SP),HL LD HL,(MEMMAX) JR L5078 ; (+01cH) L505C: POP HL CALL L6E57 PUSH HL LD HL,(MEMMAX) OR A SBC HL,DE JP C,L4B26 LD HL,(L107A) INC H INC H INC H INC H OR A SBC HL,DE JP NC,04AECH EX DE,HL L5078: CALL L4902 POP HL POP DE LD SP,(INTFAC) LD BC,0FFFFH PUSH BC PUSH DE RET L5087: POP IX L5089: POP BC PUSH BC LD A,B INC A JP NZ,04B01H LD A,C CP 012H JR Z,L50AF ; (+01aH) CP 0FEH JP NZ,04B01H POP BC CALL L414A EX DE,HL POP HL LD (L847C),HL POP HL LD (L8476),HL POP HL PUSH IX RET Z EX DE,HL JP L513D L50AF: EX DE,HL LD HL,L0012 ADD HL,SP LD SP,HL EX DE,HL JR L5089 ; (-02fH) L50B8: PUSH HL CALL L4F80 EX DE,HL POP HL POP BC PUSH DE EXX LD HL,(L8476) PUSH HL LD HL,(L847C) PUSH HL LD HL,0FFFEH PUSH HL LD HL,0FE00H ADD HL,SP LD DE,(TMPEND) SBC HL,DE LD A,00AH JP C,L4B28 EXX PUSH BC JR L513D ; (+05dH) L50E0: CALL TEST1 DB 0C1H JP Z,L4C5C CALL L6E57 LD C,E LD B,D CP 087H JP NC,L4AE6 CP 082H JR NZ,L5105 ; (+010H) CALL INCHLF LD E,081H CP LSE4 JR Z,L5104 ; (+006H) CP LSE0 JP NZ,L4AE6 DEC E L5104: LD A,E L5105: PUSH HL LD HL,L43F4 SUB 080H ADD A,A LD E,A LD D,000H ADD HL,DE CALL INDRCT EX (SP),HL INC HL LD A,B OR A JR NZ,L5139 ; (+020H) LD A,C OR A JR Z,L5139 ; (+01cH) LD B,A L511E: DEC B RET Z CALL HLFTCH CALL L5169 JP NZ,L4AE6 CALL L519E OR A RET Z INC HL CALL TEST1 DB 02CH JR Z,L511E ; (-017H) POP DE JP L5E46 L5139: POP DE JP L4F80 L513D: CALL L45B2 EX DE,HL JR NZ,L5146 ; (+003H) LD HL,(L1070) L5146: LD (L8476),HL XOR A LD (L4B6E),A JP L40F0 L5150: CALL L6E82 EX AF,AF' LD A,(DE) OR A JR Z,L5178 ; (+020H) EX AF,AF' CP LSE2 JR NZ,L5165 ; (+008H) L515D: CALL INCHLF CALL L5169 JR Z,L513D ; (-028H) L5165: POP AF JP L40BB L5169: CP 022H RET Z L516C: CP 00BH RET Z CP 00CH RET L5172: CALL L5181 JR NC,L5172 ; (-005H) RET L5178: DEC HL CALL L5181 JR NC,L515D ; (-021H) DB 0C3H IN B,(C) L5181: CALL L5198 OR A SCF RET Z CP 0C2H RET Z CP 093H JR NZ,L5181 ; (-00dH) CALL L5181 RET C JR L5181 ; (-013H) L5194: INC HL LD A,(HL) JR L519E ; (+006H) L5198: INC HL LD A,(HL) CP 094H JR Z,L51BD ; (+01fH) L519E: OR A RET Z CP 022H JR Z,L51DB ; (+037H) CP 0FEH JR NC,L51BB ; (+013H) CP 097H JR Z,L51BD ; (+011H) CP 027H JR Z,L51BD ; (+00dH) CP 020H RET NC CP 00BH RET C CP 015H JR NC,L51D2 ; (+018H) INC HL L51BB: INC HL RET L51BD: LD A,(HL) OR A RET Z CP 03AH RET Z CP 022H JR Z,L51CA ; (+003H) INC HL JR L51BD ; (-00dH) L51CA: CALL L51DB OR A RET Z INC HL JR L51BD ; (-015H) L51D2: AND 00FH ADD A,L LD L,A LD A,020H RET NC INC H RET L51DB: INC HL LD A,(HL) OR A RET Z CP 022H RET Z JR L51DB ; (-009H) L51E4: OR 0AFH PUSH AF LD B,031H LD C,04FH CALL L4FD0 PUSH AF CALL L5235 POP AF JR C,L5233 ; (+03eH) LD A,C LD (05221H),A LD B,001H SRL E JR NC,L5201 ; (+002H) SLA B L5201: SRL D JR NC,L5209 ; (+004H) SLA B SLA B L5209: EX DE,HL RST 018H DB 01EH CALL BREAKX CP LSPAL JR NC,L5215 ; (+002H) LD A,LSPAL L5215: LD C,A POP AF JR Z,L522B ; (+012H) SET 3,H CALL BREAKX AND 08FH OR 000H CALL POPRA RES 3,H LD A,C OR B JR L522E ; (+003H) L522B: LD A,B CPL AND C L522E: CALL POPRA EX DE,HL RET L5233: POP AF RET L5235: LD A,(L005D) AND 070H LD C,A CALL TEST1 DB 02CH RET NZ PUSH DE CALL L5522 POP DE RLCA RLCA RLCA RLCA LD C,A RET L524B: RST 018H DB 020H RET L524E: CALL L5E46 RST 018H DB 028H RST 018H DB 000H RET L5256: JR Z,L527B ; (+023H) LD A,001H LD (L004E),A LD A,(L0056) LD B,019H CALL L528E LD (00056H),BC CALL TEST1 DB 02CH RET NZ LD B,028H LD A,(L005B) CALL L528E LD (0005BH),BC RET L527B: XOR A LD (L004E),A LD BC,L1800 LD (00056H),BC LD BC,L2700 LD (0005BH),BC RET L528E: LD D,000H LD E,A CALL TEST1 DB 02CH JR Z,L529F ; (+008H) PUSH BC CALL L6E43 POP BC CALL L5E6E L529F: LD C,E PUSH BC CALL L6E43 POP BC DEC A JP M,04AECH ADD A,C CP B JP NC,04AECH LD B,A RET DI OUT (LSE4),A JP L0000 L52B6: XOR A LD BC,?SETDE LD (L539E),A PUSH AF CALL L5882 RST 018H DB 02EH JP C,04B22H BIT 1,A JP Z,04B22H CALL TEST1 DB 02CH POP AF OR A JR NZ,L52E8 ; (+015H) CALL L6E67 LD A,B LD (L5399),A LD (0539AH),DE CALL L5E46 JR L52E8 ; (+005H) L52E3: LD A,002H LD (L539E),A L52E8: CALL L466C LD (0530FH),DE LD (0531DH),BC LD A,0FFH LD (L1090),A CALL SKPDE LD HL,(L1070) L52FE: CALL LDDEMI LD A,D OR E RET Z EX DE,HL ADD HL,DE DEC HL DEC HL EX DE,HL PUSH DE CALL LDDEMI PUSH HL LD HL,L0000 OR A SBC HL,DE JR C,L531C ; (+006H) JR Z,L531C ; (+004H) POP HL POP HL JR L52FE ; (-01eH) L531C: LD HL,L0000 OR A SBC HL,DE JR NC,L5327 ; (+003H) POP HL POP HL RET L5327: EX DE,HL CALL L5E64 RST 018H DB 017H LD HL,L11A4 CALL LDHLDE LD (HL),020H INC HL EX DE,HL POP HL CALL L68D8 LD A,(L539E) OR A JR NZ,L5346 ; (+005H) CALL L535C JR NC,L5350 ; (+00aH) L5346: LD DE,L11A4 RST 018H DB 017H RST 018H DB 037H CALL L5733 L5350: POP HL LD A,(L539E) CP 002H JR Z,L52FE ; (-05aH) RST 018H DB 00FH JR L52FE ; (-05eH) L535C: EX DE,HL L535D: PUSH HL CALL L5367 POP HL RET C RET Z INC HL JR L535D ; (-00aH) L5367: LD A,(L5399) LD B,A LD DE,(0539AH) L536F: LD A,(HL) INC HL OR A RET Z CP 005H JR Z,L537B ; (+004H) CP 006H JR NZ,L537D ; (+002H) L537B: JR L536F ; (-00eH) L537D: PUSH HL LD C,A L537F: LD A,(DE) INC DE CP 005H JR Z,L5389 ; (+004H) CP 006H JR NZ,L5390 ; (+007H) L5389: DEC B SCF POP HL RET Z PUSH HL JR L537F ; (-011H) L5390: SUB C POP HL OR A RET NZ DEC B SCF RET Z JR L536F ; (-02aH) L5399: NOP NOP NOP NOP NOP L539E: NOP L539F: CALL TESTX DB 087H CALL L5E4D PUSH HL LD C,000H L53A9: RST 018H DB 008H LD A,C ADD A,031H LD D,A LD E,020H CP 03AH JR NZ,L53B8 ; (+003H) LD DE,L3031 L53B8: LD (0543BH),DE LD DE,L5433 RST 018H DB 00BH LD A,C CALL L5492 LD B,(HL) INC HL PUSH BC CALL L53D6 POP BC INC C LD A,C CP 00AH JR NZ,L53A9 ; (-029H) RST 018H DB 008H POP HL RET L53D6: LD A,B OR A LD C,000H JR NZ,L53E3 ; (+007H) LD A,022H RST 018H DB 00AH RST 018H DB 00AH RET L53E3: LD A,(HL) CP 020H JR C,L5408 ; (+020H) CP 022H JR Z,L5408 ; (+01cH) LD A,C CP 001H JR Z,L53FB ; (+00aH) OR A LD DE,L5440 JR NZ,L53F9 ; (+002H) INC DE INC DE L53F9: RST 018H DB 00BH L53FB: LD A,(HL) RST 018H DB 00AH INC HL LD C,001H DJNZ L53E3 ; (-020H) LD A,022H L5405: RST 018H DB 00AH RET L5408: LD A,C CP 0FFH JR Z,L542D ; (+020H) OR A LD DE,05444H JR NZ,L5415 ; (+002H) INC DE INC DE L5415: RST 018H DB 00BH L5417: PUSH BC PUSH HL LD L,(HL) LD H,000H CALL L5E64 RST 018H DB 00BH POP HL POP BC INC HL LD C,0FFH DJNZ L53E3 ; (-045H) LD A,029H JP L5405 L542D: LD A,02CH RST 018H DB 00AH JR L5417 ; (-01cH) L5433: LD B,H LD B,L LD B,(HL) JR NZ,L5483 ; (+04bH) LD B,L LD E,C JR Z,L543C ; (+000H) L543C: NOP ADD HL,HL DEC A NOP L5440: ADD HL,HL DEC HL LD (L2200),HL DEC HL LD B,E LD C,B LD D,D INC H JR Z,L544C ; (+000H) L544C: CALL TEST1 DB 0B2H JR Z,L545D ; (+00bH) CALL TESTX DB 0FFH CALL TESTX DB 0C7H JP L781D L545D: CALL TESTX L5460: DB 028H CALL L6E43 CALL TESTX DB 029H CALL TESTX DB QDPC LD A,E DEC A CP 00AH JP NC,04AECH PUSH HL CALL L5492 EX (SP),HL CALL L6E67 EX (SP),HL LD A,B CP 010H JR C,L5483 ; (+002H) LD A,00FH L5483: LD (HL),A OR A JR Z,L548F ; (+008H) LD B,A INC HL L5489: LD A,(DE) LD (HL),A INC DE INC HL DJNZ L5489 ; (-006H) L548F: POP HL EI RET L5492: ADD A,A ADD A,A ADD A,A ADD A,A LD HL,L12C0 JP ADDHLA L549C: CALL TEST1 DB 02CH JR NZ,L54AA ; (+008H) CALL L5E6E LD DE,L005D JR L54B6 ; (+00cH) L54AA: CALL L4FC5 CALL L5E6E EX DE,HL RST 018H DB 01EH SET 3,H EX DE,HL L54B6: EX DE,HL CALL BREAKX EX DE,HL PUSH DE CALL L54C6 POP DE EX DE,HL CALL POPRA EX DE,HL RET L54C6: LD C,A CALL TEST1 DB 02CH JR Z,L54DF ; (+012H) CALL L5522 ADD A,A ADD A,A ADD A,A ADD A,A XOR C AND 070H XOR C LD C,A CALL TEST1 DB 02CH JR NZ,L54F0 ; (+011H) L54DF: CALL L414A JR Z,L54F0 ; (+00cH) CP 05DH JR Z,L54F0 ; (+008H) CALL L5522 XOR C AND 007H XOR C RET L54F0: LD A,C RET L54F2: INC HL L54F3: CALL L6E67 LD A,B OR A JR Z,L5509 ; (+00fH) PUSH HL LD HL,L11A4 PUSH HL CALL LDHLDE LD (HL),00DH POP DE CALL L0030 POP HL L5509: CALL HLFTCH CP 03BH JR Z,L54F2 ; (-01eH) CP 02CH JR Z,L54F2 ; (-022H) RET L5515: CALL L6E43 DEC A CP 007H JP NC,04AECH INC A JP L0041 L5522: PUSH BC CALL L6E43 POP BC CP 008H JP NC,04AECH RET L552D: RST 018H DB 045H RET DS 208, 000H L5600: LD A,(L1042) CP 088H RET L5606: CALL L6E82 LD A,(L84C7) CP 003H PUSH HL EX DE,HL JR Z,L5619 ; (+007H) CALL L6026 POP HL RST 018H DB 017H RET L5619: CALL L6E76 POP HL RET L561E: LD A,(L005D) LD (0574DH),A XOR A LD (L1090),A CALL L5882 RST 018H DB 02EH JP C,L57B4 BIT 2,A JP NZ,L5D16 BIT 1,A JP Z,057B7H CALL L58C2 CALL L5600 JR NZ,L5655 ; (+013H) CALL TEST1 DB 05BH JR NZ,L5655 ; (+00dH) LD A,(0574DH) CALL L54C6 LD (0574DH),A CALL TESTX DB 05DH L5655: CALL L414A JP Z,L5733 L565B: LD A,(HL) CP LSE3 JR Z,L56DA ; (+07aH) LD BC,L5674 PUSH BC CP 03BH RET Z CP 02CH RET Z CP LSE6 JR Z,L56AA ; (+03cH) CALL L5606 JP L573E L5674: CALL L414A JP Z,L5733 CP 02CH JR NZ,L569A ; (+01cH) CALL L5600 JR C,L5697 ; (+014H) LD IX,(ZDELT) CALL IOCALL LD B,A L568B: SUB 00AH JR NC,L568B ; (-004H) NEG LD B,A CALL L56CC JR L569A ; (+003H) L5697: CALL L5733 L569A: LD A,(HL) CP 02CH JR Z,L56A1 ; (+002H) CP 03BH L56A1: JR NZ,L56A4 ; (+001H) INC HL L56A4: CALL L414A RET Z JR L565B ; (-04fH) L56AA: CALL L5600 JP C,057B7H CALL L5E75 CALL L6E43 CALL L5E7D LD IX,(ZDELT) CALL IOCALL SUB E RET NC NEG LD B,A CALL L5600 LD A,013H JR Z,L56CE ; (+002H) L56CC: LD A,020H L56CE: LD DE,L11A4 PUSH BC PUSH DE CALL ?SETDE POP DE POP BC JR L573E ; (+064H) L56DA: INC HL CALL L6E67 LD A,B OR A JP Z,04AECH PUSH HL LD HL,L11A4 PUSH HL PUSH BC CALL LDHLDE POP BC LD A,LSPAL LD E,B LD D,000H INC DE RST 018H DB 02AH LD (L6304),HL LD (L6306),HL POP DE CALL LDHLDE LD (HL),000H POP HL L5702: CALL L414A JR Z,L5729 ; (+022H) INC HL CP 02CH JR Z,L5711 ; (+005H) CP 03BH JP NZ,L4AE6 L5711: CALL L414A JR Z,L572C ; (+016H) CALL L6E8A PUSH HL LD BC,(TMPEND) PUSH BC CALL L6308 POP DE CALL L573C POP HL JR L5702 ; (-027H) L5729: CALL L5733 L572C: LD A,LSPAL RST 018H DB 02BH RET L5731: DEC C NOP L5733: LD A,(L005D) LD (0574DH),A LD DE,L5731 L573C: RST 018H DB 017H L573E: CALL L5600 JR Z,L5746 ; (+003H) RST 018H DB 037H RET L5746: PUSH HL PUSH BC LD HL,L005D LD C,(HL) LD (HL),070H RST 018H DB 037H LD (HL),C POP BC POP HL RET L5754: LD A,08AH LD (L1042),A JR L5792 ; (+037H) L575B: CALL L5882 RST 018H DB 02EH JP C,L57B4 BIT 2,A JP NZ,L5D27 BIT 0,A JP Z,057B7H CALL L58C2 CALL L5600 JR NZ,L5792 ; (+01dH) CALL HLFTCH CP 022H LD DE,L57BC LD B,002H JR NZ,L5788 ; (+007H) CALL L6E67 CALL TESTX DB 03BH L5788: LD A,B OR A JR Z,L5792 ; (+006H) L578C: LD A,(DE) INC DE RST 018H DB 003H DJNZ L578C ; (-006H) L5792: LD (057EBH),SP LD DE,(VARED) LD (TMPEND),DE L579E: LD DE,(TMPEND) CALL L74E1 CALL L742F PUSH AF PUSH BC CALL L414A JR Z,057BEH ; (+00fH) CALL L5E71 JR L579E ; (-016H) L57B4: LD A,02CH LD HL,0BB3EH JP L0182 L57BC: CCF JR NZ,0576EH ; (-051H) PUSH AF PUSH HL RST 018H DB 034H LD HL,(057EBH) DEC HL L57C7: LD A,(HL) OR A JR Z,L57E9 ; (+01eH) DEC HL DEC HL LD B,(HL) DEC HL LD C,(HL) DEC HL PUSH HL PUSH AF PUSH BC LD DE,(TMPEND) CALL L57EE LD H,000H LD L,B ADD HL,DE LD (HL),000H POP DE POP AF CALL L57F8 POP HL JR L57C7 ; (-022H) L57E9: POP HL LD SP,L0000 RET L57EE: LD A,(L1042) CP 08AH JR Z,L5839 ; (+044H) RST 018H DB 035H RET L57F8: CP 003H JR NZ,L5803 ; (+007H) LD HL,(L107A) LD A,B $START: JP L4CC8 ; $START - BASIC warm start / system entry L5803: PUSH DE LD HL,(L107C) LD DE,(TMPEND) EX DE,HL CALL HLFTCH CP 045H JP Z,04AECH EX DE,HL CALL L5EDA EX DE,HL CALL TEST1 DB 000H JP NZ,04AECH EX DE,HL POP DE JP L5E91 L5825: XOR A JR L587E ; (+056H) L5828: CALL L5825 CALL L414A CALL NZ,L45B2 EX DE,HL CALL NZ,L5869 EX DE,HL JP L4F80 L5839: PUSH HL PUSH DE CALL L5847 POP DE POP HL RET L5841: LD HL,(L1070) CALL L5869 L5847: LD A,(L8488) CP 001H JP Z,04B19H JR C,L5841 ; (-010H) LD HL,(L8489) LD C,03AH RST 018H DB 036H LD (L8489),HL CALL L414A SCF CCF RET NZ DEC HL L5862: CALL L5194 OR A JR NZ,L5874 ; (+00cH) INC HL L5869: LD A,(HL) INC HL OR (HL) LD A,001H JR Z,L587E ; (+00eH) INC HL INC HL JR L5862 ; (-012H) L5874: CP 094H JR NZ,L5862 ; (-016H) INC HL LD (L8489),HL LD A,002H L587E: LD (L8488),A RET L5882: CALL TEST1 DB 023H JR NZ,L58AD ; (+025H) CALL HLFTCH CP 020H JP NC,L4AE6 PUSH DE PUSH BC LD DE,L84C8 PUSH DE CALL L7052 EX (SP),HL CALL L60B5 LD A,H OR A JP NZ,04B22H OR L JP Z,04B22H JP M,04B22H POP HL POP BC POP DE RET L58AD: CALL TEST1 DB FDPD LD A,088H RET NZ CALL TEST1 DB 050H LD A,089H RET Z CALL TESTX DB 054H LD A,080H RET L58C2: LD A,(L1042) OR A RET M JP L5E6E L58CA: CALL L593A RST 018H DB 03AH RET L58D0: CALL L414A LD B,000H CALL NZ,L6E67 L58D8: PUSH HL RST 018H DB 02CH RST 018H DB 03CH POP HL RET L58DF: LD A,001H LD BC,0023EH LD BC,0043EH PUSH AF LD (L1043),A CALL L5882 CP 088H JR NZ,L58F4 ; (+002H) LD A,080H L58F4: LD (L1042),A CALL L58C2 CALL L592D POP AF CP 004H JR Z,L5904 ; (+002H) L5902: LD A,003H L5904: LD (L1000),A PUSH AF RST 018H DB 033H LD A,(L1000) POP BC CP B JP NZ,04B49H RET L5913: OR 0AFH LD B,A CALL L414A JR Z,L5929 ; (+00eH) L591B: CALL L5882 CP 088H RET NC RST 018H DB 038H CALL TEST1 DB 02CH JR L591B ; (-00eH) L5929: XOR A RST 018H DB 038H RET L592D: CALL L46AE LD B,000H CALL NZ,L6E67 PUSH HL RST 018H DB 02DH POP HL RET L593A: PUSH HL CALL HLFTCH LD DE,DEVNAMEBUF LD B,001H CALL L5975 CALL NC,L5975 JR C,L5962 ; (+017H) CALL L5975 CALL L5EC2 CALL L597B CALL L414A JR NZ,L5962 ; (+009H) LD A,03AH LD (DE),A POP AF JP RFS_DIR_FIX ; Was: LD DE,L5982 / JR L596B (buffer now DEVNAMEBUF) NOP NOP L5962: POP HL CALL L414A LD B,000H CALL NZ,RFS_DIR_STR ; Was: L6E67; handles RFS device name in strings L596B: PUSH HL RST 018H DB 02CH INC (HL) DEC (HL) JP NZ,04B1FH POP HL RET L5975: CP 041H RET C CP 05BH CCF L597B: RET C LD (DE),A INC HL INC DE LD A,(HL) INC B RET L5982: NOP NOP NOP NOP L5986: CALL L592D CALL TEST1 DB 02CH JP Z,L5A47 PUSH HL CALL L5BDC DEC A JR Z,L59A9 ; (+012H) DEC A JP NZ,04B49H CALL L5C08 CALL L5BE5 CALL L5C0F CALL L5C42 POP HL RET L59A9: LD HL,(ELMD22) PUSH HL LD DE,(MEMLMT) CALL L59CF LD DE,(ELMD20) LD BC,(MEMMAX) CALL NC,L59CA JP C,04B0DH POP HL RST 018H DB 030H CALL L5C42 POP HL RET L59CA: ADD HL,DE RET C EX DE,HL LD H,B LD L,C L59CF: PUSH HL OR A SBC HL,DE POP HL RET L59D5: CALL L592D CALL L5BDC CP 002H JP NZ,04B49H LD A,(L8493) OR A JP Z,L5B0D JP L5DB0 L59EA: CALL L5C08 CALL L592D CALL TEST1 DB 02CH JR Z,05A4DH ; (+057H) RST 018H DB 02FH CP 002H JP NZ,04B49H PUSH HL LD HL,(L1078) LD (L107A),HL LD BC,003E8H ADD HL,BC JP C,L4B26 PUSH HL LD BC,(ELMD20) INC B ADD HL,BC JP C,L4B26 SBC HL,SP JP NC,L4B26 POP HL PUSH HL RST 018H DB 030H POP HL CALL L5A24 POP HL RET L5A24: CALL LDDEMI LD A,D OR E RET Z PUSH DE CALL LDDEMI PUSH HL LD H,D LD L,E LD (L8478),HL CALL L49B9 POP HL POP BC PUSH BC PUSH HL CALL L479C POP HL POP BC ADD HL,BC DEC HL DEC HL DEC HL DEC HL JR L5A24 ; (-023H) L5A47: CALL L5C08 LD A,001H LD BC,L003E LD BC,0023EH PUSH AF CALL TESTX DB 041H CALL L5E46 LD A,001H LD (L1043),A LD A,081H LD (L1042),A CALL L5902 POP AF PUSH AF PUSH HL LD HL,L0000 LD DE,0FFFFH OR A CALL NZ,L49B9 LD A,081H RST 018H DB 02EH LD HL,(L1078) LD (L107A),HL LD BC,003E8H ADD HL,BC JP C,04AF5H PUSH HL LD (L5AEB),HL L5A89: LD HL,0FE00H ADD HL,SP LD DE,(05AEBH) SBC HL,DE JP C,04AF5H LD DE,(TMPEND) RST 018H DB 035H LD A,B OR A JR Z,L5AD6 ; (+036H) CALL L6A09 LD A,B OR C JP Z,04AECH LD HL,(L5AEB) PUSH HL INC HL INC HL LD (HL),C INC HL LD (HL),B INC HL PUSH HL LD H,D LD L,E CALL TEST1 DB 000H JP Z,04AECH POP HL LD A,(DE) CP 020H JR NZ,L5AC3 ; (+001H) INC DE L5AC3: CALL L66ED LD (HL),000H INC HL LD (L5AEB),HL POP DE OR A SBC HL,DE EX DE,HL LD (HL),E INC HL LD (HL),D JR L5A89 ; (-04dH) L5AD6: LD HL,(L5AEB) CALL L4952 CALL L4928 POP HL CALL L5A24 POP HL POP AF CP 002H RET NZ JP L4810 L5AEB: NOP NOP L5AED: CALL L592D PUSH HL CALL TEST1 DB 02CH JR NZ,L5AFF ; (+008H) CALL HLFTCH CP 041H JP Z,05A50H L5AFF: CALL L5BDC POP HL DEC A JR Z,L5B16 ; (+010H) DEC A JP NZ,04B49H CALL L5BE5 L5B0D: CALL L5C0F CALL L5C42 JP L4810 L5B16: LD D,0C9H LD BC,0FF00H CALL TEST1 DB 02CH JR NZ,L5B2A ; (+009H) CALL TESTX DB 052H LD D,000H LD BC,0CF00H L5B2A: LD A,D LD (L5B93),A LD HL,(L1014) LD DE,(ELMD22) PUSH HL CALL L59CA POP DE LD HL,(L1070) LD BC,0FF00H CALL NC,L59CA JP C,L4B26 LD SP,L0000 CALL L4930 XOR A LD (L5C07),A LD HL,(L1018) PUSH HL LD DE,(ELMD20) PUSH DE LD HL,(L107A) RST 018H DB 030H LD A,004H RST 018H DB 003H LD A,016H RST 018H DB 003H POP BC PUSH BC LD DE,(ELMD22) CALL L59CF LD A,0B0H JR NC,L5B7B ; (+008H) EX DE,HL ADD HL,BC DEC HL EX DE,HL ADD HL,BC DEC HL LD A,0B8H L5B7B: LD (05B92H),A DI PUSH HL PUSH DE LD BC,00016H LD HL,L5B8E LD DE,0FF80H PUSH DE LDIR RET L5B8E: POP DE POP HL POP BC LDIR L5B93: RET POP BC LD SP,0D000H EX DE,HL PUSH BC PUSH HL LD (HL),LSD3 INC HL LD (HL),LSE4 INC HL LD (HL),0C9H RET L5BA4: LD HL,(L1078) LD (L107A),HL LD DE,(TEXTED) LD (05C01H),DE OR A SBC HL,DE LD (L5C03),HL LD HL,0FE00H ADD HL,SP LD (L5C05),HL LD DE,(VARED) PUSH HL OR A SBC HL,DE JP C,L4B26 EX (SP),HL EX DE,HL LD BC,(05C03H) INC BC LDDR POP DE RST 018H DB 018H LD A,001H LD (L5C07),A RET L5BDC: CALL L5BA4 RST 018H DB 02FH LD A,(L1000) RET L5BE5: LD HL,(L1078) XOR A DEC HL LD (HL),A DEC HL LD (HL),A LD (L1076),HL DEC HL LD (HL),A LD (L1074),HL DEC HL LD (HL),A LD (L1072),HL LD HL,00004H LD (L5C03),HL RET L5C01: NOP NOP L5C03: NOP NOP L5C05: NOP NOP L5C07: NOP L5C08: CALL L4152 JP NZ,04B10H RET L5C0F: LD BC,(ELMD20) PUSH BC LD HL,(L1072) LD DE,(TEXTST) OR A SBC HL,DE LD L,000H SBC HL,BC JP C,L4B26 LD HL,L0000 LD (L5C01),HL CALL L4824 LD HL,L0000 LD (L847C),HL LD HL,(L1070) RST 018H DB 030H POP BC LD HL,(L1070) ADD HL,BC LD (L5C01),HL RET L5C42: LD A,081H LD B,000H RST 018H DB 038H LD HL,L5C07 LD A,(HL) OR A RET Z LD (HL),000H LD HL,(L5C01) LD A,H OR L JR NZ,L5C5D ; (+006H) LD HL,(L1070) CALL L4952 L5C5D: EX DE,HL LD HL,(L1072) LD BC,(05C03H) LDIR EX DE,HL OR A SBC HL,DE EX DE,HL RST 018H DB 018H RET L5C6F: PUSH HL CALL L46C8 POP HL CALL L592D PUSH HL RST 018H DB 02FH CP 002H JP NZ,04B49H LD HL,(L1070) RST 018H DB 032H POP HL RET L5C86: PUSH HL CALL L46C8 POP HL CALL L592D CALL TEST1 DB 02CH JR Z,L5CB3 ; (+01fH) PUSH HL LD A,002H LD (L1000),A LD HL,(L1072) LD DE,(TEXTST) OR A SBC HL,DE LD (L1014),HL LD A,(L1001) CP 00DH JP Z,BC_ERR_HOOK ; !BC hook: dump ELMD before error 0xBC RST 018H DB 031H POP HL RET L5CB3: CALL TESTX DB 041H PUSH HL LD A,002H LD (L1043),A LD A,081H LD (L1042),A CALL L5902 POP HL CALL L52E3 CALL L5733 LD B,001H LD A,081H RST 018H DB 038H RET L5CD3: XOR A LD BC,?SETDE PUSH AF CALL L6E67 RST 018H DB 02DH POP AF RST 018H DB 03FH RET L5CE1: CALL L5882 PUSH AF RST 018H DB 02EH JP C,L57B4 BIT 1,A JP Z,057B7H CALL L58C2 CALL L593A LD B,A XOR A RST 018H DB 039H LD A,B RST 018H DB 03AH POP AF RST 018H DB 039H RET L5D00: CALL L6E67 RST 018H DB 02DH RST 018H DB 03DH RET L5D08: CALL L6E67 RST 018H DB 02DH CALL L5E6E CALL L6E67 RST 018H DB 03EH RET L5D16: CALL L5D4C L5D19: CALL L5606 RST 018H DB 042H CALL L414A RET Z CALL L5E71 JR L5D19 ; (-00eH) L5D27: CALL L5D4C LD DE,(TMPEND) CALL L74E1 L5D31: CALL L742F PUSH HL PUSH AF PUSH BC LD DE,(TMPEND) RST 018H DB 041H POP DE POP AF CALL L57F8 POP HL CALL L414A RET Z CALL L5E71 JR L5D31 ; (-01bH) L5D4C: CALL TEST1 DB 028H RET NZ CALL L6E57 LD A,D OR E JP Z,04AECH RST 018H DB 040H CALL L5E7D CALL TEST1 DB 02CH RET L5D63: LD A,(L8493) OR A JP NZ,04B1CH PUSH HL LD B,000H RST 018H DB 02CH LD (05E18H),DE LD (L5E1A),A LD HL,(L1072) LD DE,(TEXTST) XOR A SBC HL,DE LD (L1014),HL RST 018H DB 044H POP HL CALL L592D CALL L5E46 LD A,(L1050) BIT 5,A JP Z,057B7H PUSH HL LD HL,(0848DH) ADD HL,SP LD SP,HL EX DE,HL LD HL,L8476 LD BC,(0848BH) LDIR CALL L5BDC CP 002H JP NZ,04B49H LD (05DB1H),SP L5DB0: LD SP,L0000 CALL L5C0F CALL L5C42 LD HL,0FFFDH PUSH HL PUSH HL LD A,001H LD (L8493),A LD HL,(L1070) JP L40F0 L5DC9: XOR A LD (L8493),A POP IX L5DCF: POP BC LD A,B CP 0FFH JP NZ,04B1CH LD A,C CP 0FDH JR Z,L5DEE ; (+013H) CP 0FEH LD HL,00004H JR Z,L5DEA ; (+008H) CP 012H LD HL,00010H JP NZ,04B1CH L5DEA: ADD HL,SP LD SP,HL JR L5DCF ; (-01fH) L5DEE: LD DE,(05E18H) LD A,(L5E1A) RST 018H DB 03AH LD B,000H RST 018H DB 02CH CALL L5BA4 OR 0FFH RST 018H DB 044H CALL L5C0F CALL L5C42 LD HL,L0000 ADD HL,SP LD DE,L8476 LD BC,(0848BH) LDIR LD SP,HL POP HL RET NOP NOP L5E1A: NOP L5E1B: LD DE,L5E35 LD B,005H CALL L58D8 LD A,031H CALL L5E2A LD A,032H L5E2A: LD (05E3CH),A LD DE,05E3AH LD B,00CH JP L58D8 L5E35: DB "CMT:TRS?:0,$8C,13" L5E46: CALL L414A RET Z JP L4AE6 L5E4D: XOR A LD (L1091),A CALL TEST1 DB FDPD RET NZ CALL TESTX DB 050H CALL L6ABE LD A,050H LD (L1091),A CP A RET L5E64: LD DE,L8495 LD B,000H PUSH DE RST 018H DB 016H POP DE RET L5E6E: CALL HLFTCH L5E71: CP 02CH JR L5E82 ; (+00dH) L5E75: INC HL L5E76: CALL HLFTCH L5E79: CP 028H JR L5E82 ; (+005H) L5E7D: CALL HLFTCH L5E80: CP 029H L5E82: INC HL RET Z JP L4AE6 L5E87: LD A,(DE) CP 020H INC DE JR Z,L5E87 ; (-006H) RET L5E8E: LD HL,L6110 L5E91: LD BC,00005H LDIR RET L5E97: CALL L7960 LD A,E OR D RET Z BIT 7,D LD A,07FH JR Z,L5EAC ; (+009H) LD A,D CPL LD D,A LD A,E CPL LD E,A INC DE LD A,0FFH L5EAC: LD B,091H L5EAE: DEC B BIT 7,D JR NZ,L5EB9 ; (+006H) RL E RL D JR L5EAE ; (-00bH) L5EB9: LD (HL),B INC HL AND D LD (HL),A INC HL LD (HL),E DEC HL DEC HL RET L5EC2: CP 030H RET C CP 03AH CCF RET L5EC9: CP 05FH RET Z CP 030H RET C CP 05BH CCF RET C CP 03AH CCF RET NC CP 041H RET L5EDA: CALL L7960 LD (L62FF),A LD (L6300),A LD (L6301),A LD (05F81H),A LD A,005H LD (L84C7),A L5EEE: CALL L5E87 CP 02BH JR Z,L5EEE ; (-007H) CP 02DH JR NZ,L5EFF ; (+006H) CALL L5EEE JP L796B L5EFF: CP 024H JR NZ,L5F0F ; (+00cH) PUSH HL EX DE,HL RST 018H DB 014H EX (SP),HL CALL L5E97 POP DE LD A,005H RET L5F0F: CP 030H JR NZ,L5F19 ; (+006H) LD A,(DE) INC DE JR L5F0F ; (-008H) L5F17: LD A,(DE) INC DE L5F19: CP 020H JR Z,L5F17 ; (-006H) CP 02EH JR Z,L5F3C ; (+01bH) CALL L5EC2 JR C,L5F76 ; (+050H) SUB 030H CALL L60A8 CALL L6012 LD A,001H LD (L6300),A LD A,(L62FF) INC A LD (L62FF),A JR L5F17 ; (-025H) L5F3C: LD A,001H LD (05F81H),A LD C,A L5F42: LD A,(DE) INC DE CP 020H JR Z,L5F42 ; (-006H) CALL L5EC2 JR C,L5F6E ; (+021H) INC C SUB 030H JR Z,L5F59 ; (+007H) PUSH AF LD A,001H LD (L6300),A POP AF L5F59: PUSH AF LD A,(L6300) LD B,A LD A,(L62FF) ADD A,B LD (L62FF),A POP AF CALL L60A8 CALL L6012 JR L5F42 ; (-02cH) L5F6E: DEC C JR Z,L5F76 ; (+005H) CALL L5FFC JR L5F6E ; (-008H) L5F76: CP 045H JR Z,L5F87 ; (+00dH) L5F7A: DEC DE LD A,(L6301) OR A RET NZ LD A,000H OR A RET NZ LD A,005H RET L5F87: LD A,(DE) CP 02DH JR Z,L5F95 ; (+009H) CP 02BH JR Z,L5F95 ; (+005H) CALL L5EC2 JR C,L5F7A ; (-01bH) L5F95: LD A,001H LD (05F81H),A PUSH HL LD HL,L7BAC LD (05FF5H),HL LD HL,L0000 LD A,(DE) INC DE CP 02BH JR Z,L5FB6 ; (+00cH) CP 02DH JR NZ,L5FB8 ; (+00aH) PUSH HL LD HL,L7C97 LD (05FF5H),HL POP HL L5FB6: LD A,(DE) INC DE L5FB8: SUB 030H JR C,L5FD8 ; (+01cH) CP 00AH JR NC,L5FD8 ; (+018H) PUSH DE CALL L600D LD E,L LD D,H CALL L600D CALL L600D CALL L6009 LD E,A LD D,000H CALL L6009 POP DE JR L5FB6 ; (-022H) L5FD8: LD A,H OR A JR NZ,L600F ; (+033H) LD A,L POP HL PUSH DE PUSH BC PUSH HL LD DE,L84C8 PUSH DE CALL L5E8E POP HL LD B,A INC B JR L5FF0 ; (+003H) L5FED: CALL L60A8 L5FF0: DJNZ L5FED ; (-005H) EX DE,HL POP HL CALL L0000 POP BC POP DE JP L5F7A L5FFC: PUSH AF PUSH BC PUSH DE LD DE,L610B CALL L7C97 POP DE POP BC POP AF RET L6009: ADD HL,DE RET NC JR L600F ; (+002H) L600D: ADD HL,HL RET NC L600F: JP 04AE9H L6012: PUSH DE PUSH HL LD HL,L84C8 LD E,A LD D,000H CALL L5E97 EX DE,HL POP HL PUSH BC CALL L797E POP BC POP DE RET L6026: LD A,005H LD (L84C7),A LD A,(HL) OR A JR Z,L6033 ; (+004H) INC HL LD A,(HL) DEC HL RLCA L6033: LD A,020H JR NC,L603C ; (+005H) CALL L796B LD A,02DH L603C: PUSH AF CALL L61AB CALL L6238 POP AF DEC DE LD (DE),A RET L6047: PUSH BC CALL L7A15 POP BC RET L604D: CALL SKPDE LD A,(HL) CP 081H JP C,L7960 LD A,(HL) CP 0A0H RET NC INC HL CALL L6084 PUSH HL LD L,(HL) LD B,000H L6062: SRL E RR D RR C RR L INC A INC B CP 0A0H JR NZ,L6062 ; (-00eH) L6070: SLA L RL C RL D RL E DJNZ L6070 ; (-00aH) LD A,L POP HL LD (HL),A DEC HL LD (HL),C DEC HL LD (HL),D DEC HL LD (HL),E RET L6084: LD E,(HL) INC HL L6086: LD D,(HL) INC HL LD C,(HL) INC HL RET L608B: LD A,(HL) CP 081H RET C PUSH DE PUSH HL LD DE,L60A3 PUSH DE CALL L5E91 POP HL CALL L604D EX DE,HL POP HL CALL L7975 POP DE RET L60A3: NOP NOP NOP NOP NOP L60A8: PUSH AF PUSH BC PUSH DE LD DE,L610B CALL L7BAC POP DE POP BC POP AF RET L60B5: INC HL BIT 7,(HL) JR Z,L60C5 ; (+00bH) CALL L60C5 LD A,H CPL LD H,A LD A,L CPL LD L,A INC HL RET L60C5: DEC HL LD A,(HL) CP 091H JP NC,04AE9H CP 081H JR C,L60E3 ; (+013H) PUSH AF INC HL LD A,(HL) INC HL LD L,(HL) LD H,A POP AF SET 7,H L60D9: CP 090H RET Z INC A SRL H RR L JR L60D9 ; (-00aH) L60E3: CCF LD HL,L0000 RET ; --------------------------------------------------------------------------- ; Floating-point constant table — powers of 10 for number formatting ; Each entry is 5 bytes (1 exponent + 4 mantissa) in Sharp MZ FP format ; --------------------------------------------------------------------------- L60E8: DB 09BH,03EH,0BCH,020H,000H ; FP 10^9 L60ED: DB 098H,018H,096H,080H,000H ; FP 10^8 DB 094H,074H,024H,000H,000H ; FP 10^7 DB 091H,043H,050H,000H,000H ; FP 10^6 DB 08EH,01CH,040H,000H,000H ; FP 10^5 DB 08AH,07AH,000H,000H,000H ; FP 10^4 DB 087H,048H,000H,000H,000H ; FP 10^3 L610B: DB 084H,020H,000H,000H,000H ; FP 10^2 L6110: DB 081H,000H,000H,000H,000H ; FP 10^1 DB 07DH,04CH,0CCH,0CCH,0CDH ; FP 0.1 L611A: DB 066H,02BH,0CCH,077H,012H ; FP precision guard L611F: LD HL,(L6302) LD B,000H L6124: LD DE,L610B CALL L6047 JR C,L6132 ; (+006H) CALL L5FFC INC B JR L6124 ; (-00eH) L6132: LD DE,L6110 CALL L6047 JR NC,L6140 ; (+006H) CALL L60A8 DEC B JR L6132 ; (-00eH) L6140: PUSH BC CALL L61AB CALL L6238 POP BC PUSH DE EX DE,HL L614A: LD A,(HL) OR A JR Z,L6151 ; (+003H) INC HL JR L614A ; (-007H) L6151: DEC HL LD A,(HL) INC HL CP 030H JR NZ,L615A ; (+002H) INC B DEC HL L615A: LD A,045H LD (HL),A INC HL LD A,B LD B,02BH BIT 7,A JR Z,L6169 ; (+004H) NEG LD B,02DH L6169: LD (HL),B INC HL LD (HL),030H L616D: SUB 00AH JR C,L6174 ; (+003H) INC (HL) JR L616D ; (-007H) L6174: ADD A,03AH INC HL LD (HL),A INC HL LD (HL),000H POP DE RET L617D: PUSH HL CALL L60B5 LD DE,L84A0 PUSH DE LD B,001H RST 018H DB 016H POP HL LD A,030H LD B,005H L618E: CP (HL) JR NZ,L6196 ; (+005H) INC HL DJNZ L618E ; (-006H) JR L619F ; (+009H) L6196: LD A,B LD (L62FF),A LD A,001H LD (L6300),A L619F: LD A,02EH LD (L84A5),A POP HL CALL L608B JP L61FB L61AB: LD (L6302),HL XOR A LD (L62FF),A LD (L6300),A PUSH HL LD HL,L849C LD (HL),0FFH LD B,021H LD A,030H L61BF: INC HL LD (HL),A DJNZ L61BF ; (-004H) LD A,02EH LD (L84A5),A POP HL LD A,(HL) OR A RET Z LD DE,L60E8 CALL L7A15 CCF RET C LD DE,L611A CALL L7A15 RET C LD DE,L84D0 PUSH DE CALL L5E91 POP HL LD A,(HL) CP 081H JR C,L61FB ; (+013H) CP 090H JP C,L617D LD IX,L849D LD DE,L60ED CALL L62C2 CALL L62F6 RET NC L61FB: LD IX,L84A6 L61FF: LD DE,L60E8 PUSH BC PUSH IX CALL L7BAC POP IX POP BC INC DE INC DE INC DE INC DE INC DE CALL L62C2 CALL L62F6 JR C,L61FF ; (-019H) RET L6219: LD A,005H LD (L84C7),A PUSH HL LD DE,L84D8 PUSH DE CALL L5E91 POP HL CALL L61AB CALL L6235 POP HL RET L622F: LD DE,L84A5 LD (DE),A DEC DE RET L6235: JP C,L611F L6238: LD HL,(L6302) LD A,(HL) OR A JR Z,L622F ; (-010H) LD DE,L849D DEC DE EX DE,HL LD DE,00001H L6247: INC HL LD A,(HL) CP 02EH JR NZ,L6252 ; (+005H) LD DE,L0000 JR L6247 ; (-00bH) L6252: CP 030H JR Z,L6247 ; (-00fH) ADD HL,DE LD DE,00008H ADD HL,DE LD A,(HL) L625C: LD (HL),030H CP 035H JR C,L6271 ; (+00fH) L6262: DEC HL LD A,(HL) CP 02EH JR Z,L6262 ; (-006H) INC A JR Z,L62AB ; (+040H) LD (HL),A CP 03AH JR Z,L625C ; (-014H) INC HL L6271: LD DE,L84A5 EX DE,HL OR A SBC HL,DE EX DE,HL JR C,L6280 ; (+005H) LD HL,L84A5 JR L6297 ; (+017H) L6280: DEC HL LD A,(HL) CP 02EH DEC HL JR Z,L6296 ; (+00fH) INC HL CP 030H JR Z,L6271 ; (-01bH) PUSH HL LD DE,L84AE SBC HL,DE POP HL JP NC,L611F L6296: INC HL L6297: LD (HL),000H LD DE,L849D L629C: LD A,(DE) CP 030H JR NZ,L62A4 ; (+003H) INC DE JR L629C ; (-008H) L62A4: OR A RET NZ DEC DE LD A,030H LD (DE),A RET L62AB: LD HL,L8495 LD DE,L62BC PUSH BC LD BC,L0006 LDIR POP BC LD DE,L8495 RET L62BC: LD SP,L2B45 JR NC,L62F9 ; (+038H) NOP L62C2: LD A,(DE) CP 07DH RET Z L62C6: CALL L7A15 JR C,L62DE ; (+013H) INC (IX+000H) PUSH IX PUSH BC CALL L7975 POP BC POP IX LD A,001H LD (L6300),A JR L62C6 ; (-018H) L62DE: INC IX INC DE INC DE INC DE INC DE INC DE LD A,(L6300) LD B,A LD A,(L62FF) ADD A,B LD (L62FF),A CALL L62F6 RET NC JR L62C2 ; (-034H) L62F6: LD A,(HL) OR A RET Z L62F9: LD A,(L62FF) CP 009H RET L62FF: NOP L6300: NOP L6301: NOP L6302: NOP NOP L6304: NOP NOP L6306: NOP NOP L6308: LD HL,(L6306) PUSH DE L630C: LD A,(HL) OR A JP Z,04AECH CALL L63AA JR Z,L631B ; (+005H) LD (BC),A INC BC INC HL JR L630C ; (-00fH) L631B: EX AF,AF' LD A,(L84C7) CP 003H JP NZ,L63D3 EX AF,AF' CP 021H JP Z,L6332 CP 026H JP Z,L6359 JP 04AEFH L6332: EX (SP),HL PUSH BC CALL L6E76 OR A LD A,020H JR Z,L633D ; (+001H) LD A,(DE) L633D: POP BC LD (BC),A INC BC L6340: POP HL INC HL L6342: LD A,(HL) OR A JR Z,L6350 ; (+00aH) CALL L63AA JR Z,L6353 ; (+008H) LD (BC),A INC BC INC HL JR L6342 ; (-00eH) L6350: LD HL,(L6304) L6353: LD (L6306),HL XOR A LD (BC),A RET L6359: LD D,002H L635B: INC HL LD A,(HL) CP 026H JR Z,L6369 ; (+008H) INC D CP 020H JR Z,L635B ; (-00bH) JP 04AECH L6369: EX (SP),HL LD A,(HL) CP D JR C,L6383 ; (+015H) INC HL CALL INDRCT PUSH BC LD BC,(STRST) ADD HL,BC POP BC L6379: LD A,(HL) LD (BC),A INC BC INC HL DEC D JR NZ,L6379 ; (-007H) JP L6340 L6383: LD E,(HL) INC HL CALL INDRCT LD A,E OR A JR Z,L63A0 ; (+014H) PUSH BC LD BC,(STRST) ADD HL,BC POP BC L6393: LD A,(HL) LD (BC),A INC BC INC HL DEC E JR Z,L63A4 ; (+00aH) DEC D JR NZ,L6393 ; (-00aH) JP L6340 L63A0: LD A,020H LD (BC),A INC BC L63A4: DEC D JR NZ,L63A0 ; (-007H) JP L6340 L63AA: CALL CHKACC INC B LD HL,L2326 DEC HL RET Z LD E,A CP 02AH JR Z,L63CD ; (+015H) CALL L65AA JR Z,L63CD ; (+010H) CP 02EH LD E,023H JR Z,L63CD ; (+00aH) CP 0C4H RET NZ INC HL LD A,(HL) OR A JP Z,04AECH RET L63CD: INC HL LD A,(HL) CP E DEC HL LD A,(HL) RET L63D3: XOR A LD (0651AH),A LD (0656AH),A LD (L6552),A LD (06510H),A LD (064CAH),A LD (064F7H),A LD (06515H),A LD (064C3H),A DEC A LD (064C0H),A EX AF,AF' LD D,000H CP 023H JP Z,L642F CP 02AH JP Z,L6410 CALL L65AA JP Z,L6421 CP 02EH JP Z,L6431 CP 02BH JP Z,L642A JP 04AEFH L6410: LD A,001H LD (0656AH),A INC HL INC D INC HL INC D LD A,(HL) CALL L65AA JR NZ,L6431 ; (+012H) JR L6423 ; (+002H) L6421: INC HL INC D L6423: INC HL INC D LD (L6552),A JR L6431 ; (+007H) L642A: LD A,001H LD (0651AH),A L642F: INC HL INC D L6431: EX DE,HL DEC H L6433: INC H LD A,(DE) INC DE CP 023H JR Z,L6433 ; (-007H) CP 02CH JR NZ,L6445 ; (+007H) LD A,001H LD (064CAH),A JR L6433 ; (-012H) L6445: CP 02EH JR Z,L646C ; (+023H) CP 02DH JR NZ,L6455 ; (+008H) LD A,001H LD (06510H),A INC DE JR L6465 ; (+010H) L6455: CP 02BH JR NZ,L6465 ; (+00cH) LD A,(0651AH) OR A JR NZ,L6465 ; (+006H) LD A,001H LD (06515H),A INC DE L6465: DEC DE LD A,H LD (064F7H),A JR L649F ; (+033H) L646C: LD A,H LD (064F7H),A LD H,0FFH L6472: INC H LD A,(DE) INC DE CP 023H JR Z,L6472 ; (-007H) CP 02DH JR NZ,L6485 ; (+008H) LD A,001H LD (06510H),A INC DE JR L6495 ; (+010H) L6485: CP 02BH JR NZ,L6495 ; (+00cH) LD A,(0651AH) OR A JR NZ,L6495 ; (+006H) LD A,001H LD (06515H),A INC DE L6495: DEC DE LD A,H LD (064C0H),A JR L649F ; (+003H) L649C: POP DE JR L64B1 ; (+012H) L649F: LD H,004H PUSH DE L64A2: LD A,(DE) INC DE CP 05EH JR NZ,L649C ; (-00cH) DEC H JR NZ,L64A2 ; (-009H) POP AF LD A,001H LD (064C3H),A L64B1: POP HL PUSH DE INC HL LD A,(HL) RES 7,(HL) DEC HL LD (06547H),A LD A,(064F7H) LD D,A LD A,000H LD E,A LD A,000H PUSH BC CALL L65BC POP BC LD A,000H OR A JR Z,L650F ; (+041H) PUSH BC PUSH DE LD A,(064F7H) LD L,A LD H,000H ADD HL,DE LD DE,L8495 LD C,000H DEC HL L64DD: LD B,003H L64DF: LD A,(HL) CP 020H JR Z,L64F6 ; (+012H) INC C LD (DE),A INC DE DEC HL DJNZ L64DF ; (-00bH) LD A,(HL) CP 020H JR Z,L64F6 ; (+007H) LD A,02CH LD (DE),A INC DE INC C JR L64DD ; (-019H) L64F6: LD A,000H CP C JP C,04AE9H LD B,C LD L,A LD H,000H POP DE PUSH DE ADD HL,DE LD DE,L8495 DEC HL L6507: LD A,(DE) LD (HL),A DEC HL INC DE DJNZ L6507 ; (-006H) POP DE POP BC L650F: LD A,000H OR A JR NZ,L6551 ; (+03dH) LD A,000H OR A JR NZ,L6551 ; (+038H) LD A,000H OR A JR NZ,L6546 ; (+028H) LD A,(06547H) RLCA JR NC,L6551 ; (+02dH) LD A,(DE) CP 020H LD H,02DH JR Z,L6530 ; (+005H) CP 030H JP NZ,04AE9H L6530: PUSH DE L6531: LD A,(DE) INC DE CP 020H JR Z,L6531 ; (-006H) CP 030H JR Z,L6531 ; (-00aH) OR A JR NZ,L653F ; (+001H) DEC DE L653F: DEC DE DEC DE LD A,H LD (DE),A POP DE JR L6551 ; (+00bH) L6546: LD A,000H RLCA LD H,02BH JR NC,L6530 ; (-01dH) LD H,02DH JR L6530 ; (-021H) L6551: DB 03EH L6552: NOP OR A JR Z,L6569 ; (+013H) LD A,(DE) CP 020H JR NZ,L6569 ; (+00eH) PUSH DE L655C: LD A,(DE) INC DE CP 020H JR Z,L655C ; (-006H) DEC DE DEC DE LD A,(L6552) LD (DE),A POP DE L6569: LD A,000H OR A JR Z,L657B ; (+00dH) PUSH DE L656F: LD A,(DE) CP 020H JR NZ,L657A ; (+006H) LD A,02AH LD (DE),A INC DE JR L656F ; (-00bH) L657A: POP DE L657B: LD A,(DE) OR A JR Z,L6584 ; (+005H) LD (BC),A INC BC INC DE JR L657B ; (-009H) L6584: LD A,(06515H) OR A JR Z,L6598 ; (+00eH) LD A,(06547H) RLCA LD A,02BH L6590: JR NC,L6594 ; (+002H) LD A,02DH L6594: LD (BC),A INC BC JR L65A6 ; (+00eH) L6598: LD A,(06510H) OR A JR Z,L65A6 ; (+008H) LD A,(06547H) RLCA LD A,020H JR L6590 ; (-016H) L65A6: POP HL JP L6342 L65AA: PUSH HL LD HL,L0036 BIT 6,(HL) POP HL JR NZ,L65B6 ; (+003H) CP 07DH RET L65B6: CP FDPD RET Z CP 024H RET L65BC: OR A JP Z,L6647 PUSH DE LD A,(HL) OR A JR Z,L6604 ; (+03fH) PUSH HL LD A,D LD DE,L84D0 PUSH AF CALL L5E8E POP AF OR A JR Z,L65DD ; (+00bH) LD B,A LD HL,L84D0 JR L65DB ; (+003H) L65D8: CALL L60A8 L65DB: DJNZ L65D8 ; (-005H) L65DD: POP HL LD B,000H L65E0: LD DE,L84D0 CALL L6047 JR C,L65EE ; (+006H) CALL L5FFC INC B JR L65E0 ; (-00eH) L65EE: PUSH HL LD HL,L84D0 CALL L5FFC POP HL L65F6: LD DE,L84D0 CALL L6047 JR NC,L6604 ; (+006H) CALL L60A8 DEC B JR L65F6 ; (-00eH) L6604: POP DE PUSH BC CALL L6661 POP BC PUSH DE LD A,(DE) CP 02EH JR NZ,L6622 ; (+012H) LD DE,L84A5 DEC DE LD A,(DE) CP 031H POP DE PUSH DE JR NZ,L663E ; (+023H) EX DE,HL INC HL LD (HL),031H DEC HL JR L663C ; (+01aH) L6622: LD A,(DE) CP 031H JR NZ,L663E ; (+017H) EX DE,HL INC HL LD A,(HL) DEC HL CP 02EH LD A,030H JR Z,L6633 ; (+002H) LD A,020H L6633: LD (HL),A L6634: INC HL LD A,(HL) CP 02EH JR Z,L6634 ; (-006H) LD (HL),031H L663C: EX DE,HL INC B L663E: LD A,(DE) INC DE OR A JR NZ,L663E ; (-005H) DEC DE JP L615A L6647: PUSH DE CALL L6661 POP AF OR A RET NZ PUSH HL LD HL,L84A5 DEC HL LD A,030H CP (HL) L6656: JP NZ,04AE9H DEC HL LD A,020H CP (HL) JR NZ,L6656 ; (-009H) POP HL RET L6661: PUSH DE CALL L61AB JP C,04AE9H POP HL PUSH HL LD H,000H INC L JR Z,L6670 ; (+001H) DEC L L6670: LD DE,L84A6 ADD HL,DE LD A,(HL) LD (HL),000H LD DE,L3036 CP 035H JR C,L668D ; (+00fH) L667E: DEC HL LD A,(HL) CP 02EH JR Z,L667E ; (-006H) INC A JP Z,04AE9H LD (HL),A CP 03AH JR Z,06678H ; (-015H) L668D: LD HL,L11A3 LD DE,L2000 L6693: LD (HL),D INC HL DEC E JR NZ,L6693 ; (-005H) POP HL PUSH HL LD E,H LD D,000H LD HL,L11A4 ADD HL,DE PUSH HL LD HL,L849C LD (HL),020H INC HL LD D,007H L66AA: LD A,(HL) CP 030H JR NZ,L66B5 ; (+006H) LD (HL),020H INC HL DEC D JR NZ,L66AA ; (-00bH) L66B5: POP HL PUSH HL LD B,E LD A,B OR A JR Z,L66D3 ; (+017H) LD DE,L84A5 L66BF: DEC HL DEC DE LD A,(DE) LD (HL),A CP 020H JR Z,L66D3 ; (+00cH) DJNZ L66BF ; (-00aH) DEC DE LD A,(DE) CP 020H JR Z,L66D3 ; (+004H) INC A JP NZ,04AE9H L66D3: POP HL POP DE INC E JR Z,L66E7 ; (+00fH) LD B,E LD DE,L84A6 LD (HL),02EH L66DE: INC HL DEC B JR Z,L66E7 ; (+005H) LD A,(DE) INC DE LD (HL),A JR L66DE ; (-009H) L66E7: LD (HL),000H LD DE,L11A4 RET L66ED: PUSH DE PUSH BC LD C,000H DEC DE L66F2: INC DE L66F3: CALL L6873 OR A JR Z,L672A ; (+031H) CP 0FFH JR Z,L672E ; (+031H) CP 060H JP NC,L4AE6 CP 020H JR C,L66F2 ; (-014H) LD IX,L66F3 PUSH IX CP 022H JR Z,L6749 ; (+039H) CP 027H JR Z,L673C ; (+028H) CP 03FH JR Z,L6735 ; (+01dH) CP 02EH JP Z,L6896 CP 024H JP Z,L68B0 CALL L5EC2 JR C,L6771 ; (+04aH) JP L687D L672A: LD (HL),A POP BC POP DE RET L672E: LD (HL),LSE4 CALL L6755 JR L66F3 ; (-042H) L6735: LD A,08FH CALL L6754 JR L67AC ; (+070H) L673C: LD (HL),03AH CALL L6755 LD (HL),027H CALL L6756 JP L6813 L6749: LD (HL),A CALL L6755 L674D: LD A,(DE) OR A RET Z CP 022H JR NZ,L6749 ; (-00bH) L6754: LD (HL),A L6755: INC DE L6756: INC HL L6757: INC C RET NZ JP 04AFBH L675C: POP BC LD A,(DE) CALL L5EC9 JR C,L6754 ; (-00fH) L6763: CALL L6754 LD A,(DE) CP 024H JR Z,L6754 ; (-017H) CALL L5EC2 RET C JR L6763 ; (-00eH) L6771: PUSH BC LD BC,L4167 CALL L6822 JR NC,L67A8 ; (+02eH) LD BC,L42FE CALL L6822 LD C,0FEH JR NC,L678E ; (+00aH) LD BC,L4356 CALL L6822 LD C,0FFH JR C,L675C ; (-032H) L678E: LD (HL),C INC HL LD (HL),A POP BC CALL L6757 CALL L6756 CP 0B4H RET NZ CALL L6873 CP 03DH RET NZ LD (HL),QDPC CALL L6755 JR L67E8 ; (+040H) L67A8: POP BC CALL L6756 L67AC: CP 097H JR Z,L6813 ; (+063H) CP 094H JR Z,L6813 ; (+05fH) CP 0C2H JR Z,L6809 ; (+051H) CP LSE2 JR Z,L67E8 ; (+02cH) CP LSE0 RET NC PUSH AF CALL L6873 CP 02FH JR NZ,L67D4 ; (+00dH) LD (HL),FDPD CALL L6755 CALL L6A15 CALL L6754 JR L67E4 ; (+010H) L67D4: CP 023H JR NZ,L67E4 ; (+00cH) CALL L6754 CALL L6A15 CALL L5EC2 CALL NC,L687D L67E4: POP AF CP 08DH RET NC L67E8: CALL L6873 CP 022H JR NZ,L67F4 ; (+005H) CALL L6749 JR L67E8 ; (-00cH) L67F4: CP 02CH RET C CP 02FH JR C,L6804 ; (+009H) CALL L5EC2 RET C CALL L68A7 JR L67E8 ; (-01cH) L6804: CALL L6754 JR L67E8 ; (-021H) L6809: DB 02BH LD (HL),03AH INC HL LD (HL),A CALL L6756 JR L67E8 ; (-02bH) L6813: LD A,(DE) CALL L414D RET Z CALL L6754 CP 022H CALL Z,L674D JR L6813 ; (-00fH) L6822: PUSH HL PUSH DE LD H,B LD L,C LD B,07FH L6828: POP DE PUSH DE INC B LD A,(HL) CP 0FFH JR NZ,L6834 ; (+004H) POP DE POP HL SCF RET L6834: CP 02EH JR NZ,L6841 ; (+009H) INC HL DEC DE LD A,(DE) INC DE CALL L5EC9 JR NC,L6860 ; (+01fH) L6841: LD A,(DE) CP 020H JR NZ,L6852 ; (+00cH) LD A,(HL) AND 07FH SUB 041H CP 01AH JR C,L6860 ; (+011H) CALL L6A14 L6852: LD C,(HL) INC HL INC DE CP 02EH JR Z,L6868 ; (+00fH) SUB C JR Z,L6841 ; (-01bH) CP 080H JR Z,L686E ; (+00eH) L6860: DEC HL L6861: BIT 7,(HL) INC HL JR Z,L6861 ; (-005H) JR L6828 ; (-040H) L6868: LD A,B CP 0E8H JR NC,L6860 ; (-00dH) CCF L686E: POP HL POP HL LD (HL),B LD A,B RET L6873: LD A,(DE) CP 020H RET NZ LD (HL),A CALL L6755 JR L6873 ; (-00aH) L687D: EX AF,AF' PUSH DE CALL L6A14 POP DE CALL L5EC2 JR NC,L6896 ; (+00eH) CP 02EH JR Z,L6896 ; (+00aH) CP 045H JR Z,L6896 ; (+006H) EX AF,AF' SUB 02FH JP L6896 L6896: PUSH BC LD (HL),015H INC HL PUSH HL CALL L5EDA POP HL LD BC,00005H ADD HL,BC LD A,006H JR L68CA ; (+023H) L68A7: PUSH BC CALL L6A09 LD (HL),00BH INC HL JR L68C4 ; (+014H) L68B0: LD (HL),A INC DE LD A,(DE) RST 018H DB 015H JP C,L6756 PUSH BC LD (HL),011H INC HL PUSH HL EX DE,HL RST 018H DB 014H LD B,D LD C,E EX DE,HL POP HL L68C4: LD A,003H LD (HL),C INC HL LD (HL),B INC HL L68CA: POP BC ADD A,C JP C,04AFBH LD C,A L68D0: DEC DE LD A,(DE) CP 020H JR Z,L68D0 ; (-006H) INC DE RET L68D8: PUSH HL PUSH DE PUSH BC EXX LD B,000H EXX LD C,000H L68E1: LD A,(HL) OR A JR Z,L6915 ; (+030H) LD BC,L68E1 PUSH BC CP 027H JR Z,L692F ; (+042H) INC HL LD BC,L4167 CP 020H JR C,L6957 ; (+062H) CP 022H JR Z,L6940 ; (+047H) CP 03AH JR Z,L694D ; (+050H) CP 097H JR Z,L692B ; (+02aH) CP 094H JR Z,L692B ; (+026H) CP LSE4 JR Z,L691A ; (+011H) CP 0FEH JR NC,L691F ; (+012H) CP 080H JP NC,L699B JP L69B8 L6915: LD (DE),A POP BC POP DE POP HL RET L691A: LD A,0FFH JP L69B8 L691F: LD BC,L4356 JR NZ,L6927 ; (+003H) LD BC,L42FE L6927: LD A,(HL) INC HL JR L699B ; (+070H) L692B: CALL L699B RET Z L692F: LD A,(HL) CALL L414D RET Z CALL L69B8 LD A,(HL) INC HL CP 022H CALL Z,L6943 JR L692F ; (-011H) L6940: CALL L69B8 L6943: LD A,(HL) OR A RET Z INC HL CP 022H JR NZ,L6940 ; (-00bH) JR L69B8 ; (+06bH) L694D: LD (DE),A LD A,(HL) CP 0C2H RET Z CP 027H RET Z JR L69BB ; (+064H) L6957: CP 015H JR Z,L698B ; (+030H) CP 00BH JR NC,L6964 ; (+005H) DEC A OR 030H JR L69B8 ; (+054H) L6964: PUSH DE LD E,(HL) INC HL LD D,(HL) INC HL PUSH HL CP 012H JR Z,L697A ; (+00cH) CP 00CH JR C,L697A ; (+008H) JR NZ,L69C7 ; (+053H) EX DE,HL INC HL INC HL LD E,(HL) INC HL LD D,(HL) L697A: EX DE,HL CALL L5E64 LD B,D LD C,E POP HL POP DE L6982: LD A,(BC) OR A RET Z CALL L69B8 INC BC JR L6982 ; (-009H) L698B: PUSH HL PUSH DE CALL L6219 LD B,D LD C,E POP DE POP HL INC HL INC HL INC HL INC HL INC HL JR L6982 ; (-019H) L699B: CP 080H JR Z,L69A9 ; (+00aH) EX AF,AF' L69A0: LD A,(BC) RLCA INC BC JR NC,L69A0 ; (-005H) EX AF,AF' DEC A JR L699B ; (-00eH) L69A9: LD A,(BC) BIT 7,A JR NZ,L69B6 ; (+008H) CP 02EH CALL NZ,L69B8 INC BC JR L69A9 ; (-00dH) L69B6: AND 07FH L69B8: LD (DE),A OR A RET Z L69BB: INC DE EXX INC B EXX RET NZ XOR A LD (DE),A DEC DE EXX DEC B EXX RET L69C7: LD A,024H EX AF,AF' EX DE,HL CALL L69D8 LD B,D LD C,E POP HL POP DE EX AF,AF' CALL L69B8 JR L6982 ; (-056H) L69D8: LD DE,L84A1 PUSH DE LD A,H CALL L69F1 LD A,L CALL L69F1 XOR A LD (DE),A POP DE LD B,003H L69E9: LD A,(DE) CP 030H RET NZ INC DE DJNZ L69E9 ; (-007H) RET L69F1: PUSH AF RRCA RRCA RRCA RRCA AND 00FH CALL L69FE POP AF AND 00FH L69FE: ADD A,030H CP 03AH JR C,L6A06 ; (+002H) ADD A,007H L6A06: LD (DE),A INC DE RET L6A09: PUSH HL EX DE,HL RST 018H DB 013H LD B,D LD C,E EX DE,HL POP HL JP L68D0 L6A14: INC DE L6A15: LD A,(DE) CP 020H JR Z,L6A14 ; (-006H) RET L6A1B: LD C,(HL) L6A1C: CALL L6A24 XOR A LD (L1095),A RET L6A24: LD A,(L004D) OR A JP NZ,L4B36 CALL TEST1 DB 047H JR Z,L6A74 ; (+043H) CALL TESTX DB 054H LD A,001H LD (L1097),A CALL TEST1 DB 04EH JR Z,L6A4A ; (+00aH) CALL TEST1 DB 04CH JR Z,L6A4A ; (+004H) CALL TESTX DB 053H L6A4A: LD (L6A1B),A CALL L5E46 CALL L6A6C L6A53: LD A,001H RST 018H DB 006H LD A,(L6A1B) CP 04EH RET Z CP 04CH LD A,00BH JR Z,L6A69 ; (+006H) LD A,009H RST 018H DB 006H RST 018H DB 006H L6A69: RST 018H DB 006H RET L6A6C: LD A,00AH RST 018H DB 006H LD A,003H JR L6A69 ; (-00bH) L6A74: INC HL CALL L5E46 LD A,002H LD (L1097),A JR L6A69 ; (-016H) L6A7F: CALL L6ABE CALL L6E57 LD A,E OR A RET Z CP 0ECH JR NC,L6A91 ; (+005H) CP 015H JP NC,04AECH L6A91: CALL L5E46 BIT 7,E JR NZ,L6AA0 ; (+008H) L6A98: LD A,00AH RST 018H DB 006H DEC E JR NZ,L6A98 ; (-007H) RET L6AA0: LD A,003H RST 018H DB 006H INC E JR NZ,L6AA0 ; (-007H) RET L6AA8: PUSH HL LD HL,L03E7 JR L6AB2 ; (+004H) L6AAE: PUSH HL LD HL,L01E0 L6AB2: PUSH HL ADD HL,DE POP HL JR C,L6ABC ; (+005H) SBC HL,DE JP C,04AECH L6ABC: POP HL RET L6ABE: LD B,001H JR L6AC4 ; (+002H) L6AC2: LD B,002H L6AC4: LD A,(L1097) CP B RET Z JP L4B36 L6ACC: LD C,044H LD DE,04A0EH LD DE,04D0EH LD DE,0520EH CALL L6AC2 LD A,C LD (06B1EH),A CP 04DH JR NC,L6B04 ; (+022H) CALL TEST1 DB 025H JR NZ,L6B04 ; (+01cH) CALL L6E43 LD A,E DEC A CP 010H JP NC,04AECH DEC DE LD A,04CH RST 018H DB 006H CALL L6DDA CALL L6B60 CALL L414A RET Z CALL L5E71 L6B04: CALL L6E57 CALL L5E71 CALL L6AAE PUSH DE CALL L6E57 CP 02CH JR Z,L6B18 ; (+003H) CALL L5E46 L6B18: CALL L6AA8 POP BC PUSH DE LD A,000H RST 018H DB 006H LD E,C LD D,B CALL L6DDA CALL L6B64 POP DE CALL L6DDA CALL L6B60 CALL L414A RET Z INC HL JR L6B04 ; (-033H) L6B37: CALL L6E43 LD A,E CP 004H JP NC,04AECH CALL L5E46 LD A,(L1097) CP 002H JR Z,L6B57 ; (+00dH) CALL L6A6C LD A,002H RST 018H DB 006H CALL L6B57 JP L6A53 L6B57: LD A,043H RST 018H DB 006H LD A,E OR 030H RST 018H DB 006H L6B60: LD A,00DH JR L6B66 ; (+002H) L6B64: LD A,02CH L6B66: RST 018H DB 006H RET L6B69: CALL L6AC2 CALL L5E46 LD A,048H JR L6B66 ; (-00dH) L6B73: CALL L6AC2 CALL L5E46 LD A,049H JR L6B66 ; (-017H) L6B7D: CALL L6AC2 CALL TEST1 DB 05BH JR NZ,L6BBE ; (+038H) CALL L6E43 CP 040H JP NC,04AECH PUSH DE CALL L5E6E CALL L6E43 CP 004H JP NC,04AECH PUSH DE CALL TESTX DB 05DH POP BC POP DE PUSH BC LD A,053H RST 018H DB 006H CALL L6DDA CALL L6B64 POP DE LD A,051H RST 018H DB 006H CALL L6DDA CALL L6B60 CALL L414A RET Z CALL L5E71 L6BBE: CALL L6E67 CALL L414A JR Z,L6BCA ; (+004H) CALL L5E71 DEC HL L6BCA: LD A,B OR A JR Z,L6BDB ; (+00dH) LD A,050H RST 018H DB 006H L6BD2: LD A,(DE) RST 018H DB 006H INC DE DJNZ L6BD2 ; (-006H) CALL L6B60 L6BDB: CALL L414A RET Z INC HL JR L6BBE ; (-024H) L6BE2: CALL L6AC2 CALL L6E43 CP 002H JP NC,04AECH PUSH AF CALL L5E6E CALL L6E57 PUSH DE CALL L5E71 CALL L6E43 OR A JP Z,04AECH CALL L5E46 LD A,058H RST 018H DB 006H POP BC POP AF PUSH DE PUSH BC OR 030H RST 018H DB 006H CALL L6B64 POP DE CALL L6AA8 CALL L6DDA CALL L6B64 POP DE CALL L6DDA JP L6B60 L6C22: CALL L6AC2 PUSH HL LD DE,L0000 LD HL,L6DBC CALL L5E97 LD DE,L0168 LD HL,L6DC1 CALL L5E97 LD HL,L610B LD DE,L6DC6 CALL L5E91 POP HL CALL L6E82 CALL L5E71 PUSH HL LD HL,L6DAD EX DE,HL CALL L5E91 POP HL CALL L6E82 CALL L5E71 PUSH HL LD HL,L6DB2 EX DE,HL CALL L5E91 POP HL CALL L6E82 PUSH HL PUSH AF LD HL,L6DB7 EX DE,HL CALL L5E91 LD A,(06DB8H) RLCA JP C,04AECH POP AF CP 02CH JR NZ,L6CB2 ; (+03aH) POP HL INC HL CALL L6E82 PUSH HL PUSH AF LD HL,L6DBC EX DE,HL CALL L5E91 POP AF CP 02CH JR NZ,L6CB2 ; (+027H) POP HL INC HL CALL L6E82 PUSH HL PUSH AF LD HL,L6DC1 EX DE,HL CALL L5E91 POP AF CP 02CH JR NZ,L6CB2 ; (+014H) POP HL INC HL CALL L6E82 PUSH HL LD HL,L6DC6 EX DE,HL CALL L5E91 LD A,(06DC7H) RLCA JP C,04AECH L6CB2: POP HL CALL L5E46 PUSH HL LD HL,L6DC1 LD DE,L6DBC LD A,(L6DC6) OR A CALL NZ,L7A15 JP C,04AECH CALL L6D63 LD HL,L6DCB LD (06D3BH),HL LD HL,L6DD0 LD (06D46H),HL CALL 06D37H LD A,(L6DC6) OR A JR Z,L6D11 ; (+032H) L6CDF: LD HL,L6DBC LD DE,L6DC6 CALL L797E LD DE,L6DC1 CALL L7A15 JR NC,L6CFC ; (+00cH) CALL L6D63 CALL L6D34 RST 018H DB 00EH JR NZ,L6CDF ; (-01bH) POP HL RET L6CFC: CALL L6D04 CALL L6D34 POP HL RET L6D04: LD HL,L6DC1 LD DE,L6DBC LD BC,00005H LDIR JR L6D63 ; (+052H) L6D11: LD HL,L6DAD LD (06D3BH),HL LD HL,L6DB2 LD (06D46H),HL CALL L6D34 CALL L6D04 LD HL,L6DCB LD (06D3BH),HL LD HL,L6DD0 LD (06D46H),HL CALL L6D34 POP HL RET L6D34: LD A,044H LD HL,L4D3E PUSH AF LD HL,L6DAD CALL L60B5 PUSH HL EX DE,HL CALL L6AA8 LD HL,L6DB2 CALL L60B5 PUSH HL EX DE,HL CALL L6AA8 POP HL POP DE POP AF RST 018H DB 006H PUSH HL CALL L6DDA CALL L6B64 POP DE CALL L6DDA JP L6B60 L6D63: LD DE,(INTFAC) LD HL,L6DBC CALL L5E91 LD HL,(L107C) CALL L8175 CALL L7FBB LD DE,L6DB7 CALL L7BAC LD DE,L6DAD CALL L797E LD DE,L6DCB CALL L5E91 LD DE,(INTFAC) LD HL,L6DBC CALL L5E91 LD HL,(L107C) CALL L8175 CALL L7FCB LD DE,L6DB7 CALL L7BAC LD DE,L6DB2 CALL L797E LD DE,L6DD0 JP L5E91 L6DAD: DS 5, 000H L6DB2: DS 5, 000H L6DB7: DS 5, 000H L6DBC: DS 5, 000H L6DC1: DS 5, 000H L6DC6: DS 5, 000H L6DCB: DS 5, 000H L6DD0: DS 10, 000H L6DDA: PUSH AF PUSH HL LD HL,(L107C) CALL L5E97 CALL L6026 RST 018H DB 017H L6DE7: LD A,(DE) RST 018H DB 006H INC DE DJNZ L6DE7 ; (-006H) POP HL POP AF RET L6DF0: CALL L6ABE CALL L5E46 LD A,004H RST 018H DB 006H RET L6DFB: CALL L6ABE CALL L6E57 LD A,E OR A JP Z,04AECH CP 049H JP NC,04AECH CALL L5E46 LD A,009H RST 018H DB 006H RST 018H DB 006H CALL L6DDA JP L6B60 L6E1A: CP 09DH JR Z,L6E29 ; (+00bH) CP 0A1H JP NZ,L4AE6 XOR A L6E24: LD (L004D),A INC HL RET L6E29: CALL L6ABE LD A,(L6A1B) CP 04EH JP NZ,L4B36 LD A,(L004D) OR A JR NZ,L6E24 ; (-016H) CALL L527B LD A,016H RST 018H DB 003H JR L6E24 ; (-01fH) L6E43: CALL L6E57 L6E46: LD A,D OR A JP NZ,04AECH LD A,E RET L6E4D: CALL L6E94 DEC DE DEC DE DEC DE DEC DE DEC DE JR L6E5A ; (+003H) L6E57: CALL L6E82 L6E5A: PUSH AF PUSH HL EX DE,HL CALL L7918 CALL L60B5 EX DE,HL POP HL POP AF RET L6E67: CALL L6E82 PUSH AF CALL L790F PUSH HL EX DE,HL CALL L6E76 POP HL POP AF RET L6E76: LD B,(HL) INC HL LD E,(HL) INC HL LD D,(HL) LD HL,(L1076) ADD HL,DE EX DE,HL LD A,B RET L6E82: LD DE,(VARED) LD (TMPEND),DE L6E8A: LD DE,(INTFAC) PUSH DE CALL L6E94 POP DE RET L6E94: PUSH DE LD DE,(TMPEND) CALL L74E1 POP DE CALL L6EB8 L6EA0: CP EM_P0 RET NZ LD A,(L84C7) PUSH AF INC HL CALL L6EB8 POP BC PUSH AF PUSH HL CALL L74BE CALL 07E5EH POP HL POP AF JR L6EA0 ; (-018H) L6EB8: CALL L6ED3 L6EBB: CP EM_P1 RET NZ LD A,(L84C7) PUSH AF INC HL CALL L6ED3 POP BC PUSH AF PUSH HL CALL L74BE CALL 07E5BH POP HL POP AF JR L6EBB ; (-018H) L6ED3: CALL L6EEE L6ED6: CP 0ECH RET NZ LD A,(L84C7) PUSH AF INC HL CALL L6EEE POP BC PUSH AF PUSH HL CALL L74BE CALL L7E58 POP HL POP AF JR L6ED6 ; (-018H) L6EEE: CALL TEST1 DB 0EDH JR NZ,L6F03 ; (+00fH) CALL L6F03 PUSH AF PUSH HL LD HL,0FFFBH ADD HL,DE CALL L7E48 POP HL POP AF RET L6F03: CALL L6F6D L6F06: CP 0EEH RET C PUSH AF LD A,(L84C7) PUSH AF INC HL CALL L6F6D POP BC EX (SP),HL PUSH AF PUSH HL CALL L74BE CALL L7A15 EX AF,AF' POP AF CP 0F6H JR NZ,L6F40 ; (+01eH) EX AF,AF' JR C,L6F3B ; (+016H) L6F25: LD BC,L0000 L6F28: LD (HL),C INC HL LD (HL),B INC HL XOR A LD (HL),A INC HL LD (HL),A INC HL LD (HL),A LD A,005H LD (L84C7),A POP AF POP HL JR L6F06 ; (-035H) L6F3B: LD BC,08081H JR L6F28 ; (-018H) L6F40: CP QDPD JR NZ,L6F4B ; (+007H) EX AF,AF' JR Z,L6F25 ; (-022H) JR C,L6F25 ; (-024H) JR L6F3B ; (-010H) L6F4B: CP QDPC JR NZ,L6F54 ; (+005H) EX AF,AF' JR Z,L6F3B ; (-017H) JR L6F25 ; (-02fH) L6F54: CP QDPA JR C,L6F5D ; (+005H) EX AF,AF' JR NC,L6F3B ; (-020H) JR L6F25 ; (-038H) L6F5D: CP LSPAL JR C,L6F68 ; (+007H) EX AF,AF' JR Z,L6F3B ; (-029H) JR C,L6F3B ; (-02bH) JR L6F25 ; (-043H) L6F68: EX AF,AF' JR Z,L6F25 ; (-046H) JR L6F3B ; (-032H) L6F6D: CALL L6F98 L6F70: CP 0F7H RET C LD A,(L84C7) PUSH AF INC HL JR Z,L6F8A ; (+010H) CALL L6F98 POP BC PUSH AF PUSH HL CALL L74BE CALL L7975 L6F86: POP HL POP AF JR L6F70 ; (-01aH) L6F8A: CALL L6F98 POP BC PUSH AF PUSH HL CALL L74BE CALL L797E JR L6F86 ; (-012H) L6F98: CALL L6FC3 L6F9B: CP FDPB RET C LD A,(L84C7) PUSH AF INC HL JR Z,L6FB5 ; (+010H) CALL L6FC3 POP BC PUSH AF PUSH HL CALL L74BE CALL L7EB4 L6FB1: POP HL POP AF JR L6F9B ; (-01aH) L6FB5: CALL L6FC3 POP BC PUSH AF PUSH HL CALL L74BE CALL L7ED3 JR L6FB1 ; (-012H) L6FC3: CALL L6FEE L6FC6: CP FDPD RET C LD A,(L84C7) PUSH AF INC HL JR Z,L6FE0 ; (+010H) CALL L6FEE POP BC PUSH AF PUSH HL CALL L74BE CALL L7BAC L6FDC: POP HL POP AF JR L6FC6 ; (-01aH) L6FE0: CALL L6FEE POP BC PUSH AF PUSH HL CALL L74BE CALL L7C97 JR L6FDC ; (-012H) L6FEE: CALL TEST1 DB 0F7H JR Z,L6FEE ; (-006H) CP FDPA JR NZ,L6FFE ; (+006H) INC HL CALL L6FFE JR L7027 ; (+029H) L6FFE: CALL L7033 L7001: CP 0FDH RET NZ LD A,(L84C7) PUSH AF INC HL CALL L7019 POP BC PUSH AF PUSH HL CALL L74BE CALL L7DCC POP HL POP AF JR L7001 ; (-018H) L7019: CALL TEST1 DB 0F7H JR Z,L7019 ; (-006H) CP FDPA JR NZ,L7033 ; (+010H) INC HL CALL L7033 L7027: PUSH AF PUSH HL LD HL,0FFFBH ADD HL,DE CALL L7968 POP HL POP AF RET L7033: CALL L414A JP Z,L4AE6 CALL L703F JP HLFTCH L703F: PUSH HL LD HL,(L107E) SCF SBC HL,DE JP C,04AF5H POP HL CP LSE4 JR Z,L705C ; (+00eH) CP 020H JR NC,L709C ; (+04aH) L7052: INC HL CP 015H JR C,L706B ; (+014H) CALL L5E91 JR L7065 ; (+009H) L705C: INC HL PUSH HL LD HL,08188H CALL L5E91 POP HL L7065: LD A,005H L7067: LD (L84C7),A RET L706B: CP 00BH JR NC,L7078 ; (+009H) DEC A JP M,L4AE6 LD B,000H LD C,A JR L7089 ; (+011H) L7078: LD C,(HL) INC HL LD B,(HL) INC HL CP 00CH JR NZ,L7089 ; (+009H) INC BC INC BC LD A,(BC) INC BC EX AF,AF' LD A,(BC) LD B,A EX AF,AF' LD C,A L7089: PUSH HL PUSH DE EX DE,HL LD E,C LD D,B CALL L5E97 POP DE POP HL LD A,005H L7095: INC DE INC DE INC DE INC DE INC DE JR L7067 ; (-035H) L709C: CP 022H JR NZ,L70CF ; (+02fH) INC HL PUSH HL CALL L74C9 EX (SP),HL PUSH HL LD HL,(L107A) PUSH BC LD BC,(STRST) OR A SBC HL,BC POP BC EX DE,HL LD (HL),B INC HL LD (HL),E INC HL LD (HL),D INC HL INC HL INC HL POP DE PUSH HL LD HL,(L107A) CALL L74D5 LD (L107A),HL POP DE POP HL LD A,003H LD (L84C7),A RET L70CF: CP 028H JR NZ,L70DA ; (+007H) INC HL CALL L6E94 JP L5E80 L70DA: OR A JP P,L76EE CP 0E7H INC HL JR NZ,L70E8 ; (+005H) LD A,0A8H PUSH AF JR L711D ; (+035H) L70E8: CP 0FFH JP NZ,L4AE6 LD A,(HL) INC HL CP 0A0H JP Z,L71A0 CP 0C8H JP NC,L4AE6 CP 0BAH JR NC,L714D ; (+050H) PUSH AF CP 0B3H JR NC,L713E ; (+03cH) LD B,003H CP 0AAH JR Z,L711D ; (+015H) CP 0ABH JR NC,L711D ; (+011H) LD B,005H CP 088H JR Z,L7138 ; (+026H) CP 089H JR NZ,L711D ; (+007H) CALL TEST1 DB 040H LD (081A1H),A L711D: CALL L5E76 L7120: PUSH BC CALL L6E94 CALL L5E80 POP AF CALL L790B L712B: POP AF PUSH DE PUSH HL LD HL,0FFFBH ADD HL,DE CALL L714D POP HL POP DE RET L7138: CALL TEST1 DB 028H JR Z,L7120 ; (-01eH) L713E: LD A,005H LD (L84C7),A PUSH HL LD HL,L6110 CALL L5E91 POP HL JR L712B ; (-022H) L714D: PUSH HL ADD A,A LD L,A LD H,000H LD BC,L4512 ADD HL,BC LD A,(HL) INC HL LD H,(HL) LD L,A EX (SP),HL RET EX DE,HL LD HL,L0000 ADD HL,SP LD BC,(TMPEND) OR A SBC HL,BC OR A LD BC,L0100 SBC HL,BC EX DE,HL JR L7181 ; (+010H) LD A,(L0054) JR L717E ; (+008H) LD A,(00055H) JR L717E ; (+003H) LD A,(L847E) L717E: LD E,A LD D,000H L7181: LD A,005H LD (L84C7),A JP L5E97 LD DE,(08480H) CALL L5E97 INC HL BIT 7,(HL) DEC HL RET Z LD DE,L719B JP L797E L719B: DB 091H,000H,000H,000H,000H ; FP constant (65536.0) L71A0: CALL L5E76 LD BC,(TMPEND) PUSH BC XOR A PUSH AF L71AA: PUSH BC PUSH DE CALL L6E4D CALL L6E46 POP DE POP BC LD (BC),A INC BC LD (TMPEND),BC POP AF INC A PUSH AF CALL TEST1 DB 02CH JR Z,L71AA ; (-019H) CALL L5E80 PUSH BC EXX POP DE POP AF LD B,A POP HL CALL L74E1 L71CF: LD (TMPEND),DE LD DE,(STRST) OR A SBC HL,DE PUSH HL LD A,B EXX EX DE,HL LD (HL),A INC HL POP BC LD (HL),C INC HL LD (HL),B LD BC,L0003 ADD HL,BC L71E8: EX DE,HL LD A,003H LD (L84C7),A RET PUSH HL CALL L60B5 CALL L69D8 RST 018H DB 017H L71F8: LD A,B OR A JR Z,L720C ; (+010H) LD HL,(L107A) PUSH HL PUSH BC CALL L74D5 POP BC EX DE,HL POP HL EXX POP DE EXX JR L71CF ; (-03dH) L720C: POP HL CALL L7960 JR L71E8 ; (-02aH) PUSH HL CALL L7223 LD B,A LD C,A OR A LD A,020H PUSH DE CALL NZ,?SETDE POP DE LD B,C JR L71F8 ; (-02bH) L7223: CALL L60B5 LD DE,L11A4 LD A,H OR A JP NZ,04AECH LD A,L RET PUSH HL CALL L6026 LD A,(DE) CP 020H JR NZ,L723A ; (+001H) INC DE L723A: RST 018H DB 017H JR L71F8 ; (-046H) CALL L5E76 CALL L5882 LD B,A CALL L5E7D LD A,B PUSH HL PUSH DE RST 018H DB 029H LD DE,0FFFFH JR C,L725A ; (+008H) INC HL BIT 7,(HL) JR NZ,L725A ; (+003H) LD DE,L0000 L725A: POP HL CALL L5E97 LD A,005H LD (L84C7),A INC HL INC HL INC HL INC HL INC HL EX DE,HL POP HL RET PUSH HL CALL L6E76 OR A JR Z,L7273 ; (+001H) LD A,(DE) L7273: JR L7279 ; (+004H) PUSH HL CALL L6E76 L7279: POP HL JP L717E PUSH HL CALL L6E76 LD HL,(L107A) PUSH HL CALL L74D5 LD (HL),000H POP DE POP HL JP L5EDA CALL L730B CALL L5E80 CALL L7304 EX DE,HL LD A,(HL) CP C JR NC,L729E ; (+001H) LD C,A L729E: LD (HL),C LD BC,00005H L72A2: LD A,003H ADD HL,BC EX DE,HL LD (L84C7),A JP HLFTCH CALL L730B CALL L5E80 CALL L7304 EX DE,HL LD A,(HL) SUB C JR NC,L72BC ; (+002H) XOR A LD C,(HL) L72BC: LD (HL),C INC HL ADD A,(HL) LD (HL),A INC HL JR NC,L72C4 ; (+001H) INC (HL) L72C4: LD BC,L0003 JR L72A2 ; (-027H) CALL L730B CALL L7304 OR A JP Z,04AECH PUSH AF CALL TEST1 DB 029H LD A,0FFH JR Z,L72F0 ; (+014H) CALL L5E6E PUSH DE EX DE,HL LD BC,00005H ADD HL,BC EX DE,HL CALL L6E4D CALL L5E80 CALL L6E46 POP DE L72F0: POP BC LD C,A EX DE,HL LD A,(HL) SUB B JR C,L7300 ; (+009H) INC A CP C JR NC,L72FC ; (+001H) LD C,A L72FC: LD A,B DEC A JR L72BC ; (-044H) L7300: XOR A LD C,A JR L72BC ; (-048H) L7304: LD A,B OR A JP NZ,04AECH LD A,C RET L730B: CALL L5E76 PUSH DE CALL L6E94 CALL L5E71 CALL L790F CALL L6E4D LD C,E LD B,D POP DE RET PUSH HL PUSH DE LD HL,(L107A) PUSH HL LD A,030H LD B,006H CALL ?SETHL RST 018H DB 025H POP HL OR A JR Z,L7337 ; (+005H) INC (HL) INC HL INC (HL) INC (HL) DEC HL L7337: EX DE,HL LD BC,L8CA0 CALL L73AE LD BC,L0E10 CALL L73AE CP 03AH JR C,L7352 ; (+00aH) SUB 00AH DEC DE LD (DE),A DEC DE LD A,(DE) INC A LD (DE),A INC DE INC DE L7352: DEC DE DEC DE LD A,(DE) INC DE LD B,A LD A,(DE) INC DE LD C,A LD A,B CP 032H JR NZ,L7370 ; (+011H) LD A,C CP 034H JR NZ,L7370 ; (+00cH) LD HL,(L107A) LD A,030H LD B,006H CALL ?SETHL JR L7386 ; (+016H) L7370: LD BC,L0258 CALL L73AE LD BC,0003CH CALL L73AE LD BC,0000AH CALL L73AE LD A,030H ADD A,L LD (DE),A L7386: LD HL,(L107A) LD DE,L0006 EX DE,HL ADD HL,DE LD (L107A),HL EX DE,HL LD DE,(STRST) OR A SBC HL,DE EX DE,HL POP HL LD (HL),006H INC HL LD (HL),E INC HL LD (HL),D INC HL INC HL INC HL EX DE,HL POP HL LD A,003H LD (L84C7),A JP HLFTCH L73AE: OR A SBC HL,BC JR C,L73B8 ; (+005H) LD A,(DE) INC A LD (DE),A JR L73AE ; (-00aH) L73B8: ADD HL,BC INC DE RET L73BB: CALL TESTX DB QDPC CALL L6E67 LD A,B CP 006H JP NZ,04AECH PUSH HL PUSH DE LD HL,L0000 CALL L73FC CP 018H JP NC,04AECH CP 00CH LD A,000H JR C,L73E4 ; (+009H) PUSH DE LD DE,L000C OR A SBC HL,DE POP DE INC A L73E4: PUSH AF CALL L73FC CP 03CH JP NC,04AECH CALL L73FC CP 03CH JP NC,04AECH POP AF EX DE,HL RST 018H DB 026H POP DE POP HL RET L73FC: PUSH DE LD D,H LD E,L ADD HL,HL ADD HL,HL ADD HL,DE LD D,H LD E,L ADD HL,HL ADD HL,DE ADD HL,HL ADD HL,HL POP DE LD A,(DE) INC DE SUB 030H JP C,04AECH CP 00AH JP NC,04AECH PUSH BC LD C,A ADD A,A ADD A,A ADD A,C ADD A,A LD C,A LD A,(DE) INC DE SUB 030H JP C,04AECH CP 00AH JP NC,04AECH ADD A,C LD C,A L742A: LD B,000H ADD HL,BC POP BC RET L742F: LD DE,(VARED) LD (TMPEND),DE LD DE,(INTFAC) L743B: PUSH DE CALL L748E L743F: LD A,(HL) CP 028H JP Z,L74F4 PUSH HL CALL L77AF JR NC,L7451 ; (+006H) LD A,C LD C,L LD B,H POP HL POP DE RET L7451: LD A,(DE) ADD A,C ADD A,002H PUSH BC EX DE,HL LD HL,(L107A) PUSH HL OR A SBC HL,DE INC HL LD C,L LD B,H POP HL PUSH DE EX DE,HL LD L,A LD H,000H ADD HL,DE EX DE,HL CALL L74E1 LDDR LD E,A LD D,000H RST 018H DB 01AH POP HL POP BC LD DE,L11A4 LD (HL),C INC HL SCF SBC A,C LD B,A L747D: LD A,(DE) LD (HL),A INC DE INC HL DJNZ L747D ; (-006H) PUSH HL LD B,C CALL ?CLRHL LD (HL),A LD A,C POP BC POP HL POP DE RET L748E: CALL HLFTCH SUB 041H CP 01AH JP NC,L4AE6 LD DE,L11A4 LD B,000H L749D: INC DE LD A,(HL) CALL L5EC9 JR C,L74AF ; (+00bH) LD (DE),A INC B LD A,B CP 003H JR C,L74AC ; (+001H) DEC B L74AC: INC HL JR L749D ; (-012H) L74AF: LD DE,L11A4 EX DE,HL LD (HL),B EX DE,HL LD C,005H CP 024H RET NZ LD C,003H INC HL RET L74BE: LD HL,0FFFBH EX DE,HL ADD HL,DE EX DE,HL ADD HL,DE LD A,B JP L790B L74C9: LD B,0FFH L74CB: INC B LD A,(HL) OR A RET Z INC HL CP 022H RET Z JR L74CB ; (-00aH) L74D5: LD A,B OR A RET Z CALL LDHLDE EX DE,HL CALL L74E1 EX DE,HL RET L74E1: PUSH HL LD HL,0FE00H ADD HL,SP SBC HL,DE POP HL RET NC JP L4B26 L74ED: LD DE,(INTFAC) PUSH DE JR L74FC ; (+008H) L74F4: XOR A LD (L76ED),A INC HL LD (L76EB),HL L74FC: LD B,000H EXX POP HL PUSH HL PUSH HL LD HL,(L107A) LD DE,L11A4 PUSH HL LD A,(DE) LD (HL),A INC DE INC HL LD B,A CALL L74D5 POP DE LD (L107A),HL LD HL,(L1076) EX DE,HL OR A SBC HL,DE EX (SP),HL PUSH HL EXX L751F: POP DE PUSH DE PUSH BC LD BC,(076EBH) LD A,(L76ED) PUSH BC PUSH AF LD BC,(08495H) PUSH BC CALL L6E4D BIT 7,D JP NZ,04AECH EX AF,AF' POP BC LD (08495H),BC POP AF LD (L76ED),A POP BC LD (076EBH),BC EX AF,AF' INC HL CP 029H JR Z,L7565 ; (+018H) CP 02CH JP NZ,L4AE6 POP BC INC B LD A,B CP 004H JP NC,04AECH EXX POP HL POP DE EXX PUSH DE EXX PUSH DE PUSH HL EXX JR L751F ; (-046H) L7565: POP BC EXX POP HL POP DE EXX INC B PUSH DE PUSH HL EXX LD HL,(L1076) ADD HL,DE LD B,(HL) INC B LD DE,L11A4 CALL LDDEHL EXX SET 7,C CALL L77AF RES 7,C JR NC,L75DA ; (+056H) LD A,B CP (HL) JP NZ,04AF8H INC HL EX DE,HL POP HL LD (L8495),HL EXX LD HL,L0000 EXX EX DE,HL L7595: LD E,(HL) INC HL LD D,(HL) INC HL EX (SP),HL PUSH DE EXX POP DE CALL L76C1 EXX PUSH HL OR A SBC HL,DE JP NC,04AECH EXX POP DE CALL L76BD EXX POP HL DJNZ L7595 ; (-01cH) PUSH HL EXX LD A,C LD D,B BIT 6,A JR NZ,L75CD ; (+014H) AND 00FH LD E,A PUSH AF CALL L76C1 PUSH HL EXX POP BC POP AF POP HL ADD HL,BC LD C,L LD B,H L75C8: LD HL,(L8495) POP DE RET L75CD: LD E,(HL) INC HL LD D,(HL) POP HL LD C,L LD B,H LD (HL),E INC HL LD (HL),D AND 00FH JR L75C8 ; (-012H) L75DA: EXX LD A,(L76ED) OR A JP Z,04AECH POP HL LD (L8495),HL EXX LD DE,(TMPEND) LD L,B LD H,000H ADD HL,HL ADD HL,DE EX DE,HL INC DE CALL L74E1 LD (HL),B INC HL EXX LD HL,00001H EXX L75FC: POP DE LD A,(L76ED) OR A JR NZ,L760F ; (+00cH) PUSH HL EX DE,HL LD DE,0000AH SCF SBC HL,DE JP NC,04AECH POP HL L760F: INC DE LD (HL),E INC HL LD (HL),D INC HL PUSH DE EXX POP DE CALL L76C1 EXX DJNZ L75FC ; (-021H) DB 059H LD D,000H PUSH BC PUSH DE EXX POP DE CALL L76C1 PUSH HL EXX POP BC PUSH BC EX DE,HL LD HL,(L107A) LD L,(HL) LD H,000H ADD HL,HL LD A,(L11A4) ADD A,005H ADD A,L LD L,A LD A,000H ADC A,H LD H,A JR C,L7645 ; (+005H) ADD HL,BC JR C,L7645 ; (+002H) PUSH HL ADD HL,DE L7645: JP C,L4B26 EX DE,HL CALL L74E1 PUSH HL EXX POP HL LD BC,(STRST) DEC BC OR A SBC HL,BC PUSH HL EXX POP BC LDDR POP DE RST 018H DB 01AH POP BC PUSH DE EXX POP DE LD H,B LD L,C POP BC LD A,C OR 080H LD (HL),A INC HL DEC DE LD (HL),E INC HL LD (HL),D INC HL LD DE,L11A4 LD A,(DE) INC A LD B,A CALL LDHLDE LD DE,(TMPEND) LD A,(DE) LD (HL),A INC HL INC DE ADD A,A LD B,A CALL LDHLDE PUSH HL EXX POP HL L7689: XOR A LD (HL),A INC HL DEC BC LD A,B OR C JR NZ,L7689 ; (-008H) LD (HL),A EXX POP DE LD A,(L76ED) OR A JR Z,L769E ; (+004H) LD HL,(L8495) RET L769E: LD HL,(L76EB) PUSH DE JP L74FC L76A5: LD A,0FFH LD (L76ED),A L76AA: CALL L748E LD A,(HL) CALL L5E79 CALL L74ED CALL HLFTCH CP 02CH RET NZ INC HL JR L76AA ; (-013H) L76BD: ADD HL,DE RET NC JR L76E8 ; (+027H) L76C1: PUSH BC EX DE,HL LD C,L LD A,H LD HL,L0000 CALL L76D1 LD A,C CALL L76D1 POP BC RET L76D1: OR A JR Z,L76E2 ; (+00eH) LD B,008H L76D6: ADD HL,HL JR C,L76E8 ; (+00fH) RLCA JR NC,L76DF ; (+003H) ADD HL,DE JR C,L76E8 ; (+009H) L76DF: DJNZ L76D6 ; (-00bH) RET L76E2: LD A,H LD H,L LD L,000H OR A RET Z L76E8: JP 04AECH L76EB: NOP NOP L76ED: NOP L76EE: SUB 041H CP 01AH JP NC,L4AE6 LD BC,(07921H) LD A,B OR C JR NZ,L770F ; (+012H) CALL L743B L7700: PUSH DE PUSH HL LD L,C LD H,B LD B,A LD C,A CALL LDDEHL POP HL LD A,C POP DE JP L7095 L770F: PUSH DE CALL L748E PUSH HL INC B LD DE,L11A4 LD HL,(L107A) CALL L74D5 LD B,000H LD HL,(L7921) CALL HLFTCH CP QDPC JR Z,L7759 ; (+02fH) CP 028H JR NZ,L7756 ; (+028H) L772E: INC HL INC B PUSH BC CALL L748E LD A,C POP DE CP E LD C,E JR NZ,L774B ; (+011H) PUSH DE LD C,B INC C PUSH HL LD HL,(L107A) LD DE,L11A4 CALL L794C POP HL POP BC JR Z,L776F ; (+024H) L774B: CALL HLFTCH CP 029H JR Z,L7759 ; (+007H) CP 02CH JR Z,L772E ; (-028H) L7756: JP L4AE6 L7759: LD HL,(L107A) LD DE,L11A4 LD A,(HL) LD (DE),A LD B,A L7762: INC HL INC DE LD A,(HL) LD (DE),A DJNZ L7762 ; (-006H) POP HL POP DE CALL L77AB JR L7700 ; (-06fH) L776F: LD HL,(L7923) CALL L5E76 DEC B JR Z,L7790 ; (+018H) DEC HL L7779: PUSH BC L777A: CALL L5198 CALL L414A JP Z,L4AE6 CP 029H JP Z,L4AE6 CP 02CH JR NZ,L777A ; (-012H) POP BC DJNZ L7779 ; (-016H) INC HL L7790: EX DE,HL POP HL EX (SP),HL EX DE,HL LD BC,(07921H) PUSH BC LD BC,L0000 LD (07921H),BC CALL L6E94 POP HL LD (L7921),HL POP HL JP HLFTCH L77AB: PUSH DE JP L743F L77AF: LD HL,(L1074) L77B2: LD DE,L11A4 LD A,(HL) OR A RET Z CP 040H JR NC,L77E3 ; (+027H) CP C JR NZ,L77D8 ; (+019H) INC HL LD A,(DE) CP (HL) JR NZ,L77D6 ; (+012H) LD B,A L77C5: INC DE INC HL LD A,(DE) CP (HL) JR NZ,L77D0 ; (+005H) DJNZ L77C5 ; (-008H) INC HL SCF RET L77D0: INC HL DJNZ L77D0 ; (-003H) LD A,C JR L77DD ; (+007H) L77D6: LD A,C DEC HL L77D8: AND 00FH INC HL ADD A,(HL) INC HL L77DD: LD E,A LD D,000H ADD HL,DE JR L77B2 ; (-031H) L77E3: CP C JR Z,L77FA ; (+014H) INC HL L77E7: LD E,(HL) INC HL LD D,(HL) DEC HL ADD HL,DE JR L77B2 ; (-03cH) L77EE: LD A,C SUB B CPL LD C,A LD B,0FFH ADD HL,BC POP BC L77F6: DEC HL DEC HL JR L77E7 ; (-013H) L77FA: LD A,(HL) EXX LD C,A LD B,000H EXX INC HL PUSH DE LD E,(HL) INC HL LD D,(HL) INC HL EX DE,HL ADD HL,DE EX DE,HL POP DE LD A,(DE) CP (HL) JR NZ,L77F6 ; (-018H) PUSH BC LD B,A LD C,A L7811: INC HL INC DE LD A,(DE) CP (HL) JR NZ,L77EE ; (-029H) DJNZ L7811 ; (-008H) INC HL POP BC SCF RET L781D: CALL L748E SET 6,C PUSH HL CALL L77AF JP C,04AF8H LD (HL),C EX (SP),HL PUSH HL DEC HL L782D: CALL L5198 OR A JR Z,L7837 ; (+004H) CP 03AH JR NZ,L782D ; (-00aH) L7837: POP DE PUSH HL INC HL SBC HL,DE LD A,(L11A4) ADD A,004H LD C,A LD B,000H LD A,L ADD HL,BC LD B,A PUSH HL EXX POP BC PUSH BC PUSH HL PUSH DE PUSH BC LD HL,L0000 ADD HL,SP LD DE,(TMPEND) DEC H OR A SBC HL,DE LD A,00CH JP C,L4B28 POP BC POP DE POP HL LD HL,(L107A) PUSH HL ADD HL,BC EX (SP),HL PUSH HL LD DE,(STRST) OR A SBC HL,DE LD C,L LD B,H POP HL POP DE LDDR POP DE RST 018H DB 01AH DEC DE POP HL EX (SP),HL INC HL LD (HL),E INC HL LD (HL),D INC HL LD DE,L11A4 LD A,(DE) LD (HL),A LD B,A L7887: INC DE INC HL LD A,(DE) LD (HL),A DJNZ L7887 ; (-006H) INC HL PUSH HL EXX POP HL CALL LDHLDE LD (HL),000H POP HL RET PUSH DE CALL L748E POP IX PUSH BC SET 6,C LD DE,(07923H) LD (L7923),HL PUSH DE CALL L77AF JP NC,04B04H LD DE,(07921H) LD (L7921),HL PUSH DE PUSH IX DEC HL L78BA: CALL L5198 CALL L414A JP Z,L4AE6 CP QDPC JR NZ,L78BA ; (-00dH) INC HL POP DE PUSH DE CALL L6E94 POP DE LD HL,(L7923) POP BC LD (07921H),BC POP BC LD (07923H),BC EX DE,HL POP BC LD A,C CALL L790B LD BC,00005H ADD HL,BC EX DE,HL CALL HLFTCH CP 028H RET NZ PUSH DE LD B,001H L78EF: PUSH BC CALL L5198 POP BC CALL L414D JP Z,L4AE6 CP 028H JR NZ,L78FF ; (+001H) INC B L78FF: CP 029H JR NZ,L78EF ; (-014H) DJNZ L78EF ; (-016H) INC HL CALL HLFTCH POP DE RET L790B: CP 003H JR NZ,L7918 ; (+009H) L790F: LD A,(L84C7) CP 003H RET Z JP 04AEFH L7918: LD A,(L84C7) CP 003H RET NZ JP 04AEFH L7921: NOP NOP L7923: NOP NOP PUSH HL CALL L60B5 LD A,H OR A JP NZ,04AECH LD A,L CP 008H JP NC,04AECH RST 018H DB 012H POP HL JR C,L7947 ; (+00eH) JR Z,L7947 ; (+00cH) LD DE,0FFFFH L793E: CALL L5E97 LD A,005H LD (L84C7),A RET L7947: LD E,A LD D,000H JR L793E ; (-00eH) L794C: LD A,(DE) CP (HL) RET NZ PUSH BC PUSH DE PUSH HL LD B,C L7953: LD A,(DE) CP (HL) JR NZ,L795C ; (+005H) INC DE INC HL DJNZ L7953 ; (-008H) XOR A L795C: POP HL POP DE POP BC RET L7960: PUSH HL LD B,005H CALL ?CLRHL POP HL RET L7968: CALL L7918 L796B: LD A,(HL) OR A RET Z INC HL LD A,(HL) XOR 080H LD (HL),A DEC HL RET L7975: CALL L7918 LD C,A LD A,080H JP L7988 L797E: LD A,(L84C7) CP 003H JP Z,L79D2 LD C,A XOR A L7988: LD (L7D82),HL PUSH DE PUSH HL LD (07D85H),SP INC HL INC DE LD B,(HL) XOR (HL) EX DE,HL XOR (HL) DEC HL DEC DE EX DE,HL RLCA LD A,B LD (L7D84),A JP C,L7A93 XOR A CP (HL) JP Z,L79C7 LD A,(DE) OR A JR Z,L79AF ; (+004H) SUB (HL) JP L7AD6 L79AF: LD SP,(07D85H) POP HL POP DE EI LD A,(HL) OR A JP Z,L7E7F LD A,(L7D84) AND 080H INC HL RES 7,(HL) OR (HL) LD (HL),A DEC HL RET L79C7: LD B,000H LD A,005H LD C,A EX DE,HL LDIR JP L79AF L79D2: LD B,(HL) LD A,(DE) ADD A,B JP C,04AF2H LD C,A PUSH DE PUSH HL PUSH DE INC HL LD E,(HL) INC HL LD D,(HL) LD HL,(L1076) ADD HL,DE EX DE,HL LD HL,(L107A) CALL L74D5 EX (SP),HL LD B,(HL) INC HL LD E,(HL) INC HL LD D,(HL) LD HL,(L1076) ADD HL,DE EX DE,HL POP HL CALL L74D5 LD A,C LD DE,(TMPEND) LD BC,(STRST) EX DE,HL OR A SBC HL,BC EX DE,HL LD (L107A),HL POP HL LD (HL),A INC HL LD (HL),E INC HL LD (HL),D DEC HL DEC HL POP DE RET L7A15: LD A,(L84C7) CP 003H JR NZ,L7A50 ; (+034H) PUSH DE PUSH HL LD A,(DE) OR (HL) JR Z,L7A4D ; (+02bH) LD A,(DE) CP (HL) JR C,L7A27 ; (+001H) LD A,(HL) L7A27: OR A JR Z,L7A47 ; (+01dH) INC HL LD C,(HL) INC HL LD B,(HL) EX DE,HL INC HL LD E,(HL) INC HL LD D,(HL) LD HL,(L1076) EX DE,HL ADD HL,DE EX DE,HL ADD HL,BC EX DE,HL LD B,A OR A JR Z,L7A4D ; (+00eH) L7A3F: LD A,(DE) CP (HL) JR NZ,L7A4D ; (+00aH) INC DE INC HL DJNZ L7A3F ; (-008H) L7A47: POP DE POP HL LD A,(DE) CP (HL) EX DE,HL RET L7A4D: POP HL POP DE RET L7A50: INC DE INC HL LD A,(DE) DEC DE XOR (HL) RLCA JR NC,L7A5C ; (+004H) LD A,(HL) DEC HL RLCA RET L7A5C: LD A,(HL) DEC HL RLCA JR NC,L7A67 ; (+006H) CALL L7A67 RET Z CCF RET L7A67: PUSH DE PUSH HL EX DE,HL LD A,(DE) CP (HL) JR NZ,L7A88 ; (+01aH) INC DE INC HL LD A,(HL) OR 080H LD B,A LD A,(DE) OR 080H CP B JR NZ,L7A88 ; (+00eH) LD A,(L84C7) LD B,A DEC B DEC B L7A80: INC DE INC HL LD A,(DE) CP (HL) JR NZ,L7A88 ; (+002H) DJNZ L7A80 ; (-008H) L7A88: POP HL POP DE RET L7A8B: POP HL PUSH HL CALL L7960 JP L79AF L7A93: CALL L7A67 JR Z,L7A8B ; (-00dH) JR NC,L7AA3 ; (+009H) LD A,(L7D84) XOR 080H LD (L7D84),A SCF L7AA3: EX AF,AF' LD A,(HL) OR A JP Z,L79C7 LD A,(DE) OR A JP Z,L79AF SUB (HL) JR C,L7AB8 ; (+007H) CP 020H JP NC,L79C7 JR L7ABF ; (+007H) L7AB8: NEG CP 020H JP NC,L79AF L7ABF: EX AF,AF' JR C,L7AC3 ; (+001H) EX DE,HL L7AC3: EX AF,AF' JP L7B5D L7AC7: LD SP,(07D85H) EI POP HL POP DE LD A,(07D8CH) OR A JP Z,04AE9H RET L7AD6: JR NC,L7AE2 ; (+00aH) NEG CP 020H JP NC,L79AF EX DE,HL JR L7AE7 ; (+005H) L7AE2: CP 020H JP NC,L79C7 L7AE7: CALL L7B1D LD A,H EXX ADC A,H EXX LD H,A LD A,L EXX ADC A,L EXX LD L,A LD A,D EXX ADC A,D EXX LD D,A LD A,E EXX ADC A,E EXX JR NC,L7B0A ; (+00bH) RRA RR D RR L RR H INC C JP Z,L7AC7 L7B0A: LD E,A LD A,C EXX LD BC,00005H LD HL,(L7D82) LD (HL),A ADD HL,BC DI LD SP,HL EXX PUSH HL PUSH DE JP L79AF L7B1D: DI LD (07D87H),SP EX AF,AF' INC HL LD SP,HL EXX POP DE SET 7,E POP HL OR A L7B2B: EX AF,AF' CP 008H JR C,L7B3C ; (+00cH) SUB 008H EX AF,AF' RL H LD H,L LD L,D LD D,E LD E,000H JR L7B2B ; (-011H) L7B3C: OR A JR Z,L7B4D ; (+00eH) L7B3F: EX AF,AF' OR A RR E RR D RR L RR H EX AF,AF' DEC A JR NZ,L7B3F ; (-00eH) L7B4D: EXX EX DE,HL LD C,(HL) INC HL LD SP,HL POP DE SET 7,E POP HL EX AF,AF' LD SP,(07D87H) EI RET L7B5D: CP 020H JP NC,L79AF CALL L7B1D LD A,H EXX SBC A,H EXX LD H,A LD A,L EXX SBC A,L EXX LD L,A LD A,D EXX SBC A,D EXX LD D,A LD A,E EXX SBC A,E EXX L7B78: OR A JR Z,L7B91 ; (+016H) L7B7B: BIT 7,A JR NZ,L7B8D ; (+00eH) RL H RL L RL D RLA DEC C JP NZ,L7B7B JP L7A8B L7B8D: LD E,A JP L7B0A L7B91: LD A,C SUB 008H LD C,A LD A,D LD D,L LD L,H LD H,000H JR Z,L7B9E ; (+002H) JR NC,L7B78 ; (-026H) L7B9E: JP L7A8B L7BA1: LD C,A L7BA2: INC HL INC DE LD A,(DE) XOR (HL) LD (L7D84),A DEC HL DEC DE RET L7BAC: CALL L7918 CALL L7BA1 PUSH DE PUSH HL LD (07D85H),SP LD A,(HL) OR A JP Z,L7A8B LD A,(DE) OR A JP Z,L7A8B INC DE PUSH DE POP IX ADD A,(HL) LD E,A LD A,000H ADC A,A LD D,A LD (07D8AH),DE INC HL XOR A LD (L7D89),A LD D,(HL) SET 7,D INC HL LD E,(HL) INC HL PUSH HL LD H,A LD L,A EXX POP HL LD D,(HL) INC HL LD E,(HL) LD B,A LD C,A LD H,A LD L,A EXX LD A,(IX+000H) OR 080H LD C,004H L7BEF: LD B,008H OR A JP Z,L7C84 L7BF5: RLCA JR NC,L7C0A ; (+012H) EX AF,AF' EXX LD A,C ADD A,B LD C,A ADC HL,DE EXX ADC HL,DE JR NC,L7C09 ; (+005H) LD A,001H LD (L7D89),A L7C09: EX AF,AF' L7C0A: SRL D RR E EXX RR D RR E RR B EXX DJNZ L7BF5 ; (-023H) L7C18: INC IX LD A,(IX+000H) DEC C JR NZ,L7BEF ; (-031H) EXX LD A,(L7D89) OR A JR Z,L7C3D ; (+016H) LD DE,(07D8AH) INC DE LD (07D8AH),DE EXX SCF RR H RR L EXX RR H RR L RR C L7C3D: BIT 7,C JR Z,L7C5B ; (+01aH) LD DE,00001H ADD HL,DE EXX LD DE,L0000 ADC HL,DE EXX JR NC,L7C5B ; (+00dH) LD DE,(07D8AH) INC DE LD (07D8AH),DE EXX LD H,080H EXX L7C5B: POP IX PUSH IX LD (IX+004H),L LD (IX+003H),H EXX LD (IX+002H),L LD (IX+001H),H LD HL,(07D8AH) OR A LD DE,L0081 SBC HL,DE LD A,H ADD A,000H JP M,L7C90 JP NZ,L7AC7 LD (IX+000H),L JP L79AF L7C84: LD A,E EXX LD B,E LD E,D LD D,A EXX LD E,D LD D,000H JP L7C18 L7C90: LD SP,(07D85H) JP L7A8B L7C97: CALL L7918 CALL L7BA1 PUSH DE PUSH HL LD (07D85H),SP LD A,(DE) OR A JP Z,04AE9H EX AF,AF' LD A,(HL) OR A JP Z,L7A8B EXX ADD A,081H LD B,A LD A,000H ADC A,A EX AF,AF' LD C,A LD A,B SUB C LD C,A EX AF,AF' LD B,A EX AF,AF' LD A,B SBC A,000H JP C,L7C90 JP NZ,L7AC7 LD A,C PUSH AF EXX INC DE INC HL LD B,(HL) SET 7,B INC HL LD C,(HL) INC HL PUSH HL EX DE,HL LD D,(HL) SET 7,D INC HL LD E,(HL) INC HL PUSH HL LD H,B LD L,C EXX POP HL LD D,(HL) INC HL LD E,(HL) POP HL LD A,(HL) INC HL LD L,(HL) LD H,A EXX LD C,005H L7CE9: LD B,008H XOR A L7CEC: BIT 7,H JR NZ,L7D00 ; (+010H) OR A L7CF1: RLA EXX ADD HL,HL EXX ADC HL,HL DJNZ L7CEC ; (-00dH) PUSH AF DEC C JR NZ,L7CE9 ; (-014H) JP L7D3A L7D00: OR A EXX SBC HL,DE EXX SBC HL,DE CCF JR C,L7CF1 ; (-019H) EXX ADD HL,DE EXX ADC HL,DE OR A RLA EXX ADD HL,HL EXX ADC HL,HL DJNZ L7D1F ; (+007H) PUSH AF LD B,008H DEC C JP Z,L7D3A L7D1F: EXX OR A SBC HL,DE EXX SBC HL,DE SCF RLA DJNZ L7D30 ; (+006H) PUSH AF LD B,008H DEC C JR Z,L7D3A ; (+00aH) L7D30: EXX ADD HL,HL EXX ADC HL,HL JR C,L7D1F ; (-018H) JP L7CEC L7D3A: POP AF LD H,A EXX POP AF LD E,A POP AF LD D,A POP AF LD C,A POP AF LD B,A POP AF L7D46: BIT 7,B JR NZ,L7D5D ; (+013H) EXX SLA H EXX RL E RL D RL C RL B DEC A JP NZ,L7D46 JP L7A8B L7D5D: EXX RL H EXX JR NC,L7D74 ; (+011H) LD HL,00001H ADD HL,DE EX DE,HL LD HL,L0000 ADC HL,BC LD B,H LD C,L JR NC,L7D74 ; (+003H) LD B,080H INC A L7D74: POP HL PUSH HL LD (HL),A INC HL LD (HL),B INC HL LD (HL),C INC HL LD (HL),D INC HL LD (HL),E JP L79AF L7D82: NOP NOP L7D84: NOP NOP NOP NOP NOP L7D89: NOP NOP NOP NOP L7D8D: INC HL BIT 7,(HL) DEC HL RET L7D92: INC (HL) RET NZ JP 04AE9H L7D97: LD A,(HL) OR A RET Z DEC (HL) RET NZ JP L7960 L7D9F: PUSH HL INC HL INC HL INC HL INC HL INC HL EX DE,HL LD HL,(MEMMAX) DEC HL SBC HL,DE JP C,04AF5H POP HL RET L7DB1: PUSH HL LD (L846A),HL CALL L7D9F EX DE,HL LD (L846C),HL CALL L7D9F EX DE,HL LD (L846E),HL CALL L7D9F LD (08470H),DE POP HL RET L7DCC: CALL L7918 EX DE,HL LD A,(HL) OR A JP Z,L7E2E EX DE,HL LD A,(HL) OR A JP Z,L7960 CALL L7D8D JR Z,L7E08 ; (+028H) CALL L796B EX DE,HL PUSH DE PUSH HL LD DE,L84D0 CALL L5E91 LD HL,L84D0 CALL L608B LD A,(HL) OR A JP NZ,04AECH POP HL PUSH HL CALL L60B5 BIT 0,L POP DE POP HL JR Z,L7E08 ; (+006H) CALL L7E08 JP L796B L7E08: EX DE,HL LD A,(HL) OR A JR Z,L7E2E ; (+021H) CALL L7D8D JR Z,L7E34 ; (+022H) CALL L796B CALL L7E34 PUSH DE PUSH HL LD DE,L84D0 CALL L5E8E LD HL,L84D0 POP DE CALL L7C97 PUSH DE CALL L5E91 POP HL POP DE RET L7E2E: PUSH DE CALL L5E8E POP HL RET L7E34: PUSH DE LD DE,L84D0 CALL L5E91 POP HL CALL L8319 LD DE,L84D0 CALL L7BAC JP L81F5 L7E48: CALL L7918 PUSH DE PUSH HL CALL L60B5 LD A,L CPL LD E,A LD A,H CPL LD D,A JR L7E79 ; (+021H) L7E58: LD A,0A2H LD BC,0B23EH LD BC,0AA3EH LD (L7E74),A INC A LD (L7E77),A CALL L7918 PUSH DE PUSH HL CALL L60B5 EX DE,HL CALL L60B5 LD A,H L7E74: AND D LD D,A LD A,L L7E77: AND E LD E,A L7E79: POP HL CALL L5E97 POP DE RET L7E7F: INC HL RES 7,(HL) DEC HL RET CALL L7D8D JP Z,L604D CALL L7EA9 CALL L604D LD DE,L84D0 CALL L7A15 RET Z L7E97: LD DE,L6110 JP L7975 L7E9D: LD DE,L6110 JP L797E L7EA3: LD DE,L6110 JP L7A15 L7EA9: PUSH HL PUSH DE LD DE,L84D0 CALL L5E91 POP DE POP HL RET L7EB4: CALL L604D EX DE,HL CALL L604D EX DE,HL CALL L7EA9 CALL L7C97 CALL L604D CALL L7BAC PUSH DE LD DE,L84D0 CALL L7975 POP DE JP L796B L7ED3: CALL L604D EX DE,HL CALL L604D EX DE,HL CALL L7C97 JP L604D LD A,(HL) OR A RET Z CALL L7D8D JP NZ,04AECH CALL L8319 CALL L7D97 JP L81F5 L7EF3: PUSH HL EX DE,HL CALL L5E8E POP HL POP BC RET L7EFB: LD A,(HL) LD C,H L7EFD: ADD A,B DEC HL PUSH BC INC HL LD A,(HL) RES 7,(HL) DEC HL PUSH AF CALL L7F10 POP AF POP BC RLCA RET NC JP L796B L7F10: CALL L7EA3 JR C,L7F33 ; (+01eH) CALL L7D9F PUSH DE PUSH HL CALL L5E91 POP DE PUSH DE CALL L5E8E POP HL POP DE CALL L7C97 CALL L7F33 LD DE,0818DH CALL L7975 JP L7E7F L7F33: LD A,0FFH LD (L80A9),A LD DE,L7EFB CALL L7A15 JR C,07F8FH ; (+04fH) LD DE,L7EFD CALL L7A15 PUSH AF CALL L7D9F POP AF PUSH HL PUSH DE CALL L5E91 POP HL JR C,L7F67 ; (+014H) CALL L7E9D EX (SP),HL CALL L7975 POP DE CALL L7C97 CALL 07F8FH LD DE,08192H JP L797E L7F67: LD DE,L7F8A CALL L7BAC CALL L7E9D EX (SP),HL LD DE,L7F8A CALL L7975 POP DE CALL L7C97 CALL 07F8FH CALL L7D92 LD DE,08192H CALL L797E JP L7D97 L7F8A: DB 07FH,054H,013H,0CCH,0D0H ; FP constant (used by EXP/LOG) PUSH BC ; *** was misaligned: disassembler consumed D0+C5 as CALL Z *** PUSH HL CALL L7DB1 POP HL PUSH HL PUSH DE CALL L5E91 POP HL LD E,L LD D,H CALL L7BAC LD DE,(0846EH) POP HL PUSH HL CALL L5E91 LD A,(L84C7) DEC A CP 004H LD B,A LD HL,08130H JP Z,L8036 LD B,00AH JP L8036 L7FBB: PUSH BC LD A,(HL) OR A JP Z,L7EF3 LD DE,0818DH CALL L7975 CALL L796B POP BC L7FCB: PUSH BC INC HL LD A,(HL) RES 7,(HL) AND 080H CPL LD (L80A9),A DEC HL LD DE,L8183 PUSH HL CALL L7A15 JR C,L7FE9 ; (+009H) CALL L7C97 CALL L608B CALL L7BAC L7FE9: LD DE,08188H CALL L7A15 JR C,L7FFC ; (+00bH) CALL L7975 LD A,(L80A9) XOR 080H LD (L80A9),A L7FFC: LD DE,0818DH CALL L7A15 JR C,L800D ; (+009H) LD DE,08188H CALL L7975 CALL L7E7F L800D: CALL L7DB1 POP HL PUSH DE LD DE,08192H CALL L7A15 JR NC,L807F ; (+065H) POP DE PUSH HL PUSH DE CALL L5E91 POP HL LD E,L LD D,H CALL L7BAC LD DE,(0846EH) POP HL PUSH HL CALL L5E91 LD A,(L84C7) LD B,A LD HL,L80E0 L8036: PUSH BC PUSH HL LD HL,(L846E) LD DE,(08470H) CALL L7BAC POP HL PUSH HL LD DE,(0846CH) PUSH DE CALL L5E91 POP HL LD DE,(0846EH) CALL L7BAC EX DE,HL LD HL,(L846A) CALL L797E POP HL LD DE,00005H ADD HL,DE POP BC DJNZ L8036 ; (-02dH) POP HL POP BC LD A,(L80A9) INC HL XOR (HL) CPL LD (HL),A DEC HL LD A,(L84C7) CP 008H LD A,(HL) JR Z,L807B ; (+006H) CP 05CH L8077: RET NC JP L7960 L807B: CP 04DH JR L8077 ; (-008H) L807F: LD DE,0818DH CALL L7975 CALL L7E7F POP DE PUSH HL PUSH DE CALL L5E91 L808E: POP HL LD E,L LD D,H CALL L7BAC LD DE,(0846EH) CALL L5E8E L809B: POP DE PUSH DE CALL L5E8E LD A,(L84C7) LD B,A LD HL,L8108 JR L8036 ; (-073H) L80A9: NOP PUSH BC PUSH HL CALL L7D9F EX DE,HL LD (L8472),HL CALL L7D9F LD (08474H),DE POP HL PUSH HL CALL L5E91 LD HL,(L8472) EX DE,HL POP HL PUSH HL CALL L5E91 LD HL,(08474H) L80CB: CALL L7FCB POP DE PUSH DE CALL L5E91 LD HL,(L8472) CALL L7FBB EX DE,HL POP HL CALL L7C97 POP BC RET ; --------------------------------------------------------------------------- ; Floating-point polynomial coefficient tables for transcendental functions ; (SIN, COS, TAN, ATN, LOG, EXP, SQR). 5 bytes per FP constant. ; --------------------------------------------------------------------------- L80E0: DB 07EH,0AAH,0AAH,0AAH,0ABH ; SIN/COS coeff 0 DB 07AH,008H,088H,088H,089H ; SIN/COS coeff 1 DB 074H,0D0H,00DH,000H,0D0H ; SIN/COS coeff 2 L80EF: DB 06EH,038H,0EFH,01DH,02BH ; SIN/COS coeff 3 DB 067H,0D7H,032H,02BH,040H ; SIN/COS coeff 4 L80F6: DB 060H,030H,092H,030H,09DH ; SIN/COS coeff 5 DB 058H,0D7H,03FH,09FH,03AH ; SIN/COS coeff 6 DB 050H,04AH,096H,03BH,082H ; SIN/COS coeff 7 L8108: DB 080H,080H,000H,000H,000H ; FP 1.0 DB 07CH,02AH,0AAH,0AAH,0ABH ; TAN coeff 0 DB 077H,0B6H,00BH,060H,0B6H ; TAN coeff 1 DB 071H,050H,00DH,000H,0D0H ; TAN coeff 2 DB 06BH,093H,0F2H,07DH,0BCH ; TAN coeff 3 DB 064H,00FH,076H,0C7H,080H ; TAN coeff 4 L8125: DB 05CH,0C9H,0CBH,0A5H,046H ; TAN coeff 5 L8128: DB 054H,057H,03FH,09FH,03AH ; ATN coeff 0 DB 07FH,0AAH,0AAH,0AAH,0ABH ; ATN coeff 1 DB 07EH,04CH,0CCH,0CCH,0CDH ; ATN coeff 2 DB 07EH,092H,049H,024H,092H ; ATN coeff 3 DB 07DH,063H,08EH,038H,0E4H ; ATN coeff 4 DB 07DH,0BAH,02EH,08BH,0A3H ; ATN coeff 5 DB 07DH,01DH,089H,0D8H,09EH ; ATN coeff 6 DB 07DH,088H,088H,088H,089H ; ATN coeff 7 DB 07CH,070H,0F0H,0F0H,0F1H ; ATN coeff 8 DB 07CH,0D7H,094H,035H,0E5H ; ATN coeff 9 DB 07CH,043H,00CH,030H,0C3H ; ATN coeff 10 LD DE,L0000 LD A,(HL) OR A JR Z,L8171 ; (+008H) CALL L7D8D INC DE JR Z,L8171 ; (+002H) DEC DE DEC DE L8171: CALL L5E97 RET L8175: LD DE,08197H JR L817D ; (+003H) LD DE,08188H L817D: PUSH BC CALL L7BAC POP BC RET ; FP constants for LOG/EXP computation L8183: DB 083H,049H,00FH,0DAH,0A2H ; FP log2(e) DB 082H,049H,00FH,0DAH,0A2H ; FP constant DB 081H,049H,00FH,0DAH,0A2H ; FP constant DB 080H,049H,00FH,0DAH,0A2H ; FP constant DB 07BH,00EH,0FAH,035H,013H ; FP ln(2) PUSH HL CALL L60B5 LD A,000H L81A2: CP 040H LD A,(HL) CALL NZ,BREAKX LD E,A LD D,000H POP HL CALL L5E97 RET LD A,(HL) OR A JR Z,L81B9 ; (+005H) CALL L7D8D JR Z,L81C4 ; (+00bH) L81B9: PUSH HL LD HL,L4193 LD (L81F3),HL POP HL XOR A LD R,A L81C4: PUSH BC LD DE,(081F3H) LD A,R XOR D RRC A RRC A RRC A LD D,A LD A,R XOR E RLC A RLC A LD E,D LD D,A LD (081F3H),DE PUSH HL INC HL RES 7,D LD (HL),D INC HL LD (HL),E INC HL LD A,R LD (HL),A POP HL LD (HL),081H CALL L7E97 POP BC RET L81F3: SUB E LD B,C L81F5: PUSH BC LD A,(HL) OR A JP Z,L7EF3 INC HL LD A,(HL) LD (L830B),A RES 7,(HL) DEC HL LD DE,L8460 CALL L7BAC PUSH HL CALL L7D9F PUSH DE CALL L5E91 POP HL CALL L604D PUSH HL CALL L60B5 XOR A CP H JP NZ,04AE9H LD A,L LD (L830A),A POP DE POP HL PUSH HL CALL L7975 PUSH DE PUSH HL CALL L5E8E POP DE POP HL CALL L7D97 EX DE,HL XOR A LD B,008H L8236: PUSH BC PUSH AF CALL L7A15 JR C,L8244 ; (+007H) CALL L7975 POP AF SET 7,A PUSH AF L8244: POP AF RLC A EX DE,HL PUSH AF CALL L7D97 POP AF EX DE,HL POP BC DJNZ L8236 ; (-01bH) LD (L830C),A PUSH DE LD DE,L8456 LD A,(L84C7) BIT 3,A JR NZ,L8262 ; (+003H) LD DE,L845B L8262: CALL L7BAC POP DE PUSH DE CALL L5E91 POP HL LD A,(L84C7) BIT 3,A JP Z,L82FA CALL L7D92 LD DE,L610B CALL L797E CALL L7D97 POP DE PUSH DE CALL L7BAC LD DE,L610B CALL L7D97 CALL L797E CALL L7D92 POP DE PUSH DE CALL L7BAC LD DE,L8451 CALL L7BAC CALL L7D92 CALL L7E9D CALL L7D97 POP DE PUSH DE CALL L7BAC CALL L7E9D POP DE PUSH DE CALL L7BAC L82B1: CALL L7E9D EX (SP),HL EX DE,HL PUSH DE CALL L5E8E POP HL LD DE,L8401 LD A,(L830C) LD B,008H L82C3: RLC A JR NC,L82CE ; (+007H) PUSH AF PUSH BC CALL L7BAC POP BC POP AF L82CE: INC DE INC DE INC DE INC DE INC DE DJNZ L82C3 ; (-012H) LD A,(L830A) ADD A,(HL) JP C,04AE9H LD (HL),A POP DE CALL L7BAC POP BC LD A,(L830B) RLC A RET NC PUSH BC PUSH DE PUSH HL CALL L5E91 POP DE PUSH DE CALL L5E8E POP HL POP DE CALL L7C97 POP BC RET L82FA: POP DE PUSH DE CALL L7BAC LD A,(HL) OR A CALL NZ,L7D97 CALL L797E JP L82B1 L830A: NOP L830B: NOP L830C: NOP PUSH BC CALL L8319 LD DE,L83F2 CALL L7BAC POP BC RET L8319: PUSH BC CALL L7D8D JP NZ,04AECH LD A,(HL) OR A JP Z,04AECH SUB 081H LD (L83F1),A LD (HL),081H XOR A LD B,008H LD DE,L8401 L8332: PUSH BC PUSH AF CALL L7A15 JR C,L8348 ; (+00fH) PUSH HL LD HL,00028H ADD HL,DE EX DE,HL EX (SP),HL CALL L7BAC POP DE POP AF SET 7,A PUSH AF L8348: POP AF RLC A INC DE INC DE INC DE INC DE INC DE POP BC DJNZ L8332 ; (-021H) DB 022H LD L,D ADD A,H CALL L7D9F EX DE,HL LD E,A LD D,000H CALL L5E97 LD A,(HL) OR A JR Z,L8367 ; (+003H) SUB 008H LD (HL),A L8367: LD A,(L83F1) CP 080H JR C,L8370 ; (+002H) NEG L8370: PUSH HL CALL L7D9F EX DE,HL LD (L846C),HL LD E,A LD D,000H CALL L5E97 LD A,(L83F1) AND 080H INC HL OR (HL) LD (HL),A DEC HL EX DE,HL POP HL CALL L797E LD A,(L84C7) LD DE,08465H CP 005H JR Z,L8399 ; (+003H) LD DE,L8456 L8399: CALL L7BAC PUSH HL LD DE,(0846CH) LD HL,(L846A) PUSH HL PUSH DE CALL L5E91 POP HL CALL L7E9D EX (SP),HL CALL L7975 POP DE CALL L7C97 PUSH DE CALL L5E91 POP HL PUSH DE LD E,L LD D,H CALL L7BAC POP DE PUSH HL PUSH DE CALL L5E91 POP HL LD DE,L83FC CALL L797E EX DE,HL POP HL CALL L7BAC LD DE,L610B CALL L7D92 CALL L797E CALL L7D97 EX DE,HL LD HL,(L846A) CALL L7BAC LD DE,L83F7 CALL L7BAC POP DE CALL L797E POP BC RET L83F1: DB 000H ; Exponent work variable ; --------------------------------------------------------------------------- ; Floating-point polynomial coefficient tables for SQR, LOG, EXP functions ; --------------------------------------------------------------------------- L83F2: DB 07FH,05EH,05BH,0D8H,0A9H ; 1/sqrt(2) approx L83F7: DB 07FH,04CH,0CCH,0CCH,0CDH ; log10(2) approx L83FC: DB 081H,055H,055H,055H,056H ; Coeff L8401: DB 081H,035H,004H,0F3H,034H ; LOG poly coeff 0 DB 081H,018H,037H,0F0H,052H ; LOG poly coeff 1 DB 081H,00BH,095H,0C1H,0E4H ; LOG poly coeff 2 DB 081H,005H,0AAH,0C3H,068H ; LOG poly coeff 3 DB 081H,002H,0CDH,086H,099H ; LOG poly coeff 4 DB 081H,001H,064H,0D1H,0F4H ; LOG poly coeff 5 DB 081H,000H,0B1H,0EDH,050H ; LOG poly coeff 6 DB 081H,000H,058H,0D7H,0D3H ; LOG poly coeff 7 DB 080H,035H,004H,0F3H,034H ; EXP poly coeff 0 DB 080H,057H,044H,0FCH,0CBH ; EXP poly coeff 1 DB 080H,06AH,0C0H,0C6H,0E8H ; EXP poly coeff 2 DB 080H,075H,025H,07DH,016H ; EXP poly coeff 3 DB 080H,07AH,083H,0B2H,0DCH ; EXP poly coeff 4 DB 080H,07DH,03EH,00CH,00DH ; EXP poly coeff 5 DB 080H,07EH,09EH,011H,05DH ; EXP poly coeff 6 DB 080H,07FH,04EH,0CBH,05AH ; EXP poly coeff 7 L8451: DB 07AH,008H,088H,088H,089H ; SQR constant L8456: DB 080H,031H,072H,017H,0F8H ; SQR constant L845B: DB 080H,031H,072H,017H,0F8H ; SQR constant L8460: DB 081H,038H,0AAH,03BH,02AH ; SQR constant DB 080H,031H,072H,017H,0F8H ; SQR constant L846A: DS 2, 000H L846C: DS 2, 000H L846E: DS 4, 000H L8472: DS 4, 000H L8476: DS 2, 000H L8478: DS 2, 000H L847A: DS 2, 000H L847C: DS 2, 000H L847E: DB 000H L847F: DB 000H L8480: DS 2, 000H L8482: DS 2, 000H L8484: DS 4, 000H L8488: DB 000H L8489: DS 2, 000H DB 015H DB 000H DB EM_P1 DB 0FFH DS 2, 000H L8491: DS 2, 000H L8493: DS 2, 000H L8495: DS 7, 000H L849C: DB 000H L849D: DS 3, 000H L84A0: DB 000H L84A1: DS 4, 000H L84A5: DB 000H L84A6: DS 8, 000H L84AE: DS 25, 000H L84C7: DB 008H ; Splash screen / banner text L84C8: DS 8, 000H L84D0: DS 8, 000H L84D8: DS 8, 000H L84E0: DB 016H DB 00DH DB 020H DS 38, 0D7H DS 2, 020H DB 044H,005H,"ISK ",006H,042H,005H,"ASIC INTERPRETER ",006H,"MZ-2Z" DS 2, 030H DB 039H L852E: DS 2, 020H DB "V1.1T ",00DH DS 3, 020H DB 043H,005H,"OPYRIGHT ",006H,"(C) 1984 ",005H,"BY ",006H,"SHARP ",005H,"CORP." DS 5, 020H DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB LSSCR DB 020H,00DH," 28284 ",005H,"BYTES FR" DS 2, 045H DS 2, 00DH DS 93, 000H IF BUILD_RFS = 0 ; Dummy EQUs for BUILD_RFS=0: labels referenced from conditional hooks ; but defined inside the RFS module. Never called when BUILD_RFS=0. $RFS EQU $USR ENDIF IF BUILD_RFS = 1 ; =========================================================================== ; RFS (ROM Filing System) support for MZ-2Z009E Disk BASIC ; Version 1.0B - March 2026 ; (c) 2026 Philip Smart ; ; Provides SD card file access via the RFS hardware interface. ; Device name: RF (e.g. DIR RF1:, LOAD RF1:"filename", SAVE RF1:"filename") ; =========================================================================== ; --------------------------------------------------------------------------- ; $RFS Device Descriptor (29 bytes + 22 bytes state area = 51 bytes) ; Inserted into device chain: $QD → $RFS → $USR ; --------------------------------------------------------------------------- $RFS: DW $USR ; Next device = $USR DB "RFS",000H ; Device name "RFS" DB 05FH ; flags1: bit5=1 block device, bit6=1 ZRO-based DIR DB 007H ; flags2 DB 0FFH ; dirmx: 255 max directory entries DW RFSINIT ; ZINIT handler DW RFSRO ; ZRO handler (file search + header extract) DW RFSWO ; ZWO handler (SAVE: compute SIZE) DW RFSSTRT ; ZCL/ZSTRT handler (open/close) DW 00000H ; ZKL (not used) DW RFSINP_DIR ; ZINP handler (DIR fill + LOAD data) DW RFSOUT ; ZOUT handler (triggers SD write) DW 00000H ; ZDELT (not used) DW RFSDIR ; ZWDIR handler (stub) DW RFSFREE ; ZFREE handler ; Device state area (22 bytes) - BASIC reads/writes state at descriptor+29. RFSSTATE: DS 22, 000H ; --------------------------------------------------------------------------- ; RFSFREE - Free space query (not supported, return carry) ; --------------------------------------------------------------------------- RFSFREE: XOR A SCF RET ; --------------------------------------------------------------------------- ; RFSINIT - Initialize RFS device ; --------------------------------------------------------------------------- RFSINIT: XOR A LD (SAVE_PENDING),A LD (DIR_FILLED),A LD (DIR_ENTRY_IDX),A LD A,0FFH LD (DIRSECBUF),A LD A,(ZCH) ADD A,003H LD (SDDRIVENO),A RET ; --------------------------------------------------------------------------- ; RFSSTRT - Start/Open device (A=0=open, A!=0=close) ; --------------------------------------------------------------------------- RFSSTRT: OR A RET NZ LD A,(ZCH) ADD A,003H LD (SDDRIVENO),A XOR A LD (DIR_ENTRY_IDX),A LD (DIR_FILLED),A ; Reset so next DIR re-enumerates LD A,0FFH LD (DIRSECBUF),A RET ; --------------------------------------------------------------------------- ; RFSDIR - ZWDIR handler (stub, not called with bit5=1) ; --------------------------------------------------------------------------- RFSDIR: XOR A RET ; --------------------------------------------------------------------------- ; RFSWO - Write Open (ZWO handler) ; Calculates SIZE = TEXTED - TEXTST and stores in ELMD20. ; Actual write is deferred to RFSOUT via SAVE_PENDING flag. ; --------------------------------------------------------------------------- RFSWO: LD HL,(TEXTED) LD DE,(TEXTST) OR A SBC HL,DE LD (ELMD20),HL XOR A RET ; --------------------------------------------------------------------------- ; RFSOUT - Write Data (ZOUT handler for SAVE) ; First call triggers RFSDOWRITE; subsequent calls are no-ops. ; --------------------------------------------------------------------------- RFSOUT: LD A,(SAVE_PENDING) OR A JR NZ,RFSOUT_NOP INC A LD (SAVE_PENDING),A JP RFSDOWRITE RFSOUT_NOP: XOR A RET ; --------------------------------------------------------------------------- ; RFSDOWRITE - Actual SD card write ; --------------------------------------------------------------------------- RFSDOWRITE: PUSH HL PUSH DE PUSH BC LD A,(ELMD) CP 002H JR NZ,WO_NONBASIC LD HL,(ELMD20) LD (FILE_SIZE),HL LD HL,(TEXTST) LD (FILE_LOADADDR),HL JR WO_GOTINFO WO_NONBASIC: LD HL,(ELMD18) LD (FILE_SIZE),HL LD HL,(ELMD20) LD (FILE_LOADADDR),HL WO_GOTINFO: LD A,(ZCH) ADD A,003H LD (SDDRIVENO),A CALL MMIO_ON LD A,0FFH LD (DIRSECBUF),A ; Find free directory entry LD E,000H LD B,000H WO_SCAN: PUSH BC PUSH DE CALL GETSDDIRENT POP DE POP BC OR A JP NZ,WO_IOERR LD A,(HL) BIT 7,A JR Z,WO_FOUND INC E DJNZ WO_SCAN JP WO_IOERR WO_FOUND: LD A,E LD (SAVE_DIRENT),A ; Calculate start sector: E * 128 + 16 LD H,000H LD L,E ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,00010H ADD HL,DE LD D,000H LD E,000H CALL RFSGETSECTR CALL SETLBAADDR ; Write file data sector-by-sector WO_WLOOP: LD HL,(FILE_SIZE) LD A,H OR L JR Z,WO_WDONE OUT (PORT_DRAM),A LD HL,(FILE_SIZE) LD DE,00200H OR A SBC HL,DE JR C,WO_PARTIAL LD (FILE_SIZE),HL LD BC,00200H JR WO_COPY WO_PARTIAL: ADD HL,DE LD B,H LD C,L PUSH BC LD HL,0 LD (FILE_SIZE),HL ; Zero-fill SECTORBUF for partial sector LD HL,SECTORBUF LD DE,SECTORBUF + 1 PUSH BC LD BC,001FFH LD (HL),000H LDIR POP BC POP BC WO_COPY: LD HL,(FILE_LOADADDR) LD DE,SECTORBUF LDIR LD (FILE_LOADADDR),HL OUT (PORT_MMIO),A CALL SD_WRITE OR A JP NZ,WO_IOERR CALL INC_STARTSEC JR WO_WLOOP ; Write directory entry WO_WDONE: OUT (PORT_MMIO),A LD A,0FFH LD (DIRSECBUF),A LD A,(SAVE_DIRENT) LD E,A PUSH DE CALL GETSDDIRENT POP DE OR A JP NZ,WO_IOERR ; Fill directory entry LD (HL),080H INC HL ; ATRB: remap type 02 -> 05 LD A,(ELMD) CP 002H JR NZ,WO_AT1 LD A,005H WO_AT1: LD (HL),A INC HL ; NAME: 17 bytes, CR -> null PUSH DE LD DE,ELMD1 LD B,17 WO_NM: LD A,(DE) CP 00DH JR NZ,WO_NM1 XOR A WO_NM1: LD (HL),A INC HL INC DE DJNZ WO_NM POP DE ; START_SECTOR: 4 bytes PUSH HL LD A,(SAVE_DIRENT) LD H,000H LD L,A ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,00010H ADD HL,DE EX DE,HL POP HL LD (HL),000H INC HL LD (HL),000H INC HL LD (HL),D INC HL LD (HL),E INC HL ; SIZE: 2 bytes LE PUSH DE LD A,(ELMD) CP 002H JR NZ,WO_SZ_NB LD DE,(ELMD20) JR WO_SZ_OK WO_SZ_NB: LD DE,(ELMD18) WO_SZ_OK: LD (HL),E INC HL LD (HL),D INC HL ; DTADR: 2 bytes LE LD A,(ELMD) CP 002H JR NZ,WO_DA_NB LD DE,(TEXTST) JR WO_DA_OK WO_DA_NB: LD DE,(ELMD20) WO_DA_OK: LD (HL),E INC HL LD (HL),D INC HL ; EXADR: 2 bytes LE LD DE,(ELMD22) LD (HL),E INC HL LD (HL),D INC HL ; RESERVED: 3 bytes zero LD (HL),000H INC HL LD (HL),000H INC HL LD (HL),000H POP DE ; Write directory sector back LD A,(SAVE_DIRENT) SRL A SRL A SRL A SRL A LD DE,0 LD H,0 LD L,A CALL RFSGETSECTR CALL SETLBAADDR CALL SD_WRITE OR A JR NZ,WO_IOERR CALL MMIO_OFF POP BC POP DE POP HL XOR A RET WO_IOERR: CALL MMIO_OFF POP BC POP DE POP HL XOR A SCF RET ; --------------------------------------------------------------------------- ; RFSRO - Read One directory entry (ZRO handler) ; Each call returns one valid 32-byte MZF directory entry at (HL). ; --------------------------------------------------------------------------- RFSRO: LD (DIR_BUFPTR),HL PUSH HL PUSH DE PUSH BC LD A,(ZCH) ADD A,003H LD (SDDRIVENO),A CALL MMIO_ON LD HL,(DIR_BUFPTR) LD B,32 RFSRO_CLR: LD (HL),000H INC HL DJNZ RFSRO_CLR RFSRO_NEXT: LD A,(DIR_ENTRY_IDX) LD E,A CALL GETSDDIRENT OR A JR NZ,RFSRO_END LD A,(HL) BIT 7,A JR Z,RFSRO_SKIP INC HL LD A,(HL) DEC HL OR A JR Z,RFSRO_SKIP CP 0FFH JR Z,RFSRO_SKIP CALL CONVERT_ENTRY LD A,(DIR_ENTRY_IDX) INC A LD (DIR_ENTRY_IDX),A CALL MMIO_OFF POP BC POP DE POP HL LD HL,(DIR_BUFPTR) LD A,(HL) OR A RET RFSRO_SKIP: LD A,(DIR_ENTRY_IDX) INC A LD (DIR_ENTRY_IDX),A JR Z,RFSRO_END JR RFSRO_NEXT RFSRO_END: CALL MMIO_OFF POP BC POP DE POP HL XOR A SCF RET ; --------------------------------------------------------------------------- ; RFSINP_DIR - ZINP handler for $RFS device ; Called from multiple paths: ; - SVC#2F dir search (02F38H) with H>=28H for disk ID check ; - SVC#2F dir search (02F38H) with H<28H for directory entry read ; - SVC#39 via RFS_BIT5PATH with H=20H for DIR enumeration ; - (SVC#30 no longer reaches here — RFS_SVC30_HOOK calls RFSINP_LD directly) ; Dispatch: ; H >= 28H → RFSINP_DISKID (returns valid-disk marker at L2800) ; H < 28H, DIR_FILLED=0 → fill DIR buffer at L2000 ; H < 28H, DIR_FILLED=1 → RET (buffer already filled, NOP for remaining iterations) ; --------------------------------------------------------------------------- RFSINP_DIR: ; Debug: entry marker "D" PUSH AF LD A,'D' OUT (050H),A POP AF ; Dispatch based on H and DIR_FILLED state LD A,H CP 028H JP NC,RFSINP_DISKID LD A,(DIR_FILLED) OR A RET NZ ; DIR already filled — NOP for remaining SVC#2F iterations ; DIR mode: enumerate files into 0x2000 buffer PUSH HL PUSH DE PUSH BC LD HL,L2000 LD DE,L2000 + 1 LD BC,007FFH LD (HL),000H LDIR LD A,(ZCH) ADD A,003H LD (SDDRIVENO),A LD HL,L2000 LD (HL),080H CALL MMIO_ON LD A,0FFH LD (DIRSECBUF),A LD HL,L2000 + 020H LD (DIR_BUFPTR),HL LD E,000H LD D,03FH LD B,000H RDIR_LOOP: PUSH BC PUSH DE CALL GETSDDIRENT POP DE POP BC OR A JR NZ,RDIR_DONE LD A,(HL) BIT 7,A JR Z,RDIR_NEXT INC HL LD A,(HL) DEC HL OR A JR Z,RDIR_NEXT CP 0FFH JR Z,RDIR_NEXT PUSH DE PUSH BC CALL CONVERT_ENTRY POP BC POP DE DEC D JR Z,RDIR_DONE RDIR_NEXT: INC E DJNZ RDIR_LOOP RDIR_DONE: CALL MMIO_OFF POP BC POP DE POP HL LD A,001H LD (DIR_FILLED),A XOR A RET ; --------------------------------------------------------------------------- ; RFSINP_DISKID - Identity read: fill L2800-L28FF with zeros ; All-zero is safe: L2E67's JP M check passes (bit7=0), and L2E36's ; bitmask comparison (CPL/AND) produces 0 for every byte. ; RFS_BIT5PATH sets L2800[0]=0x80 separately before the DIR fill call. ; --------------------------------------------------------------------------- RFSINP_DISKID: PUSH HL PUSH DE PUSH BC LD HL,02800H LD DE,02801H LD BC,000FFH LD (HL),000H ; Zero-fill: safe for L2E67 and L2E52 LDIR POP BC POP DE POP HL XOR A RET ; --------------------------------------------------------------------------- ; RFSINP_LD - LOAD data transfer from SD card ; Finds file by name, reads sectors to load address. ; --------------------------------------------------------------------------- RFSINP_LD: ; Debug: LOAD data entry PUSH AF LD A,'L' OUT (050H),A LD A,'D' OUT (050H),A LD A,':' OUT (050H),A ; Show ELMD[0..7] PUSH HL PUSH BC LD HL,ELMD LD B,008H RLD_DMP1: LD A,(HL) CALL DBG_HEX LD A,' ' OUT (050H),A INC HL DJNZ RLD_DMP1 CALL DBG_CRLF POP BC POP HL POP AF ; LD (RFS_LD_A0),A PUSH HL PUSH DE PUSH BC LD A,(ZCH) ADD A,003H LD (SDDRIVENO),A CALL MMIO_ON LD A,0FFH LD (DIRSECBUF),A LD DE,ELMD1 CALL FINDSD JR Z,RLD_FOUND ; Debug: file not found PUSH AF OUT (PORT_DRAM),A LD A,'L' OUT (050H),A LD A,'N' OUT (050H),A CALL DBG_CRLF OUT (PORT_MMIO),A POP AF JP RLD_NFERR RLD_FOUND: ; Debug: file found PUSH AF OUT (PORT_DRAM),A LD A,'L' OUT (050H),A LD A,'F' OUT (050H),A CALL DBG_CRLF OUT (PORT_MMIO),A POP AF ; HL = directory entry ; Read file type from SD entry (offset 1) and update ELMD INC HL ; HL = entry + 1 = type byte LD A,(HL) CP 005H JR NZ,RLD_TYPOK LD A,002H ; SD type 5 → MZ type 2 (BASIC) RLD_TYPOK: LD (ELMD),A ; Update ELMD[0] with actual file type ; Skip to START_SECTOR (entry + 19; we're at entry + 1) LD DE,18 ADD HL,DE ; Copy 4-byte start sector LD DE,FILE_STARTSEC LD A,(HL) LD (DE),A INC HL INC DE LD A,(HL) LD (DE),A INC HL INC DE LD A,(HL) LD (DE),A INC HL INC DE LD A,(HL) LD (DE),A ; Read SIZE from SD entry and update ELMD20 INC HL LD E,(HL) INC HL LD D,(HL) EX DE,HL LD (FILE_SIZE),HL LD (ELMD20),HL ; Update ELMD with actual file size EX DE,HL ; Read DTADR from SD entry and update ELMD22 INC HL LD E,(HL) INC HL LD D,(HL) EX DE,HL LD (FILE_LOADADDR),HL LD (ELMD22),HL ; Update ELMD with actual DTADR ; For BASIC (type 2), override load addr with TEXTST LD A,(ELMD) ; Now reads correct type (set above) CP 002H JR NZ,RLD_NORLOC LD HL,(TEXTST) LD (FILE_LOADADDR),HL RLD_NORLOC: ; Convert to absolute sector LD A,(FILE_STARTSEC) LD D,A LD A,(FILE_STARTSEC+1) LD E,A LD A,(FILE_STARTSEC+2) LD H,A LD A,(FILE_STARTSEC+3) LD L,A CALL RFSGETSECTR CALL SETLBAADDR ; Read sectors RLD_LOOP: CALL SD_READ OR A JR NZ,RLD_ERR OUT (PORT_DRAM),A LD HL,(FILE_SIZE) LD DE,00200H OR A SBC HL,DE JR C,RLD_PARTIAL LD (FILE_SIZE),HL LD BC,00200H JR RLD_COPY RLD_PARTIAL:ADD HL,DE LD B,H LD C,L LD HL,0 LD (FILE_SIZE),HL RLD_COPY: LD HL,SECTORBUF LD DE,(FILE_LOADADDR) LDIR LD (FILE_LOADADDR),DE LD HL,(FILE_SIZE) LD A,H OR L JR Z,RLD_DONE CALL INC_STARTSEC OUT (PORT_MMIO),A JR RLD_LOOP RLD_DONE: OUT (PORT_MMIO),A CALL MMIO_OFF ; Conditionally write status bytes (SVC #33 path only) LD A,(RFS_LD_A0) OR A JR Z,RLD_SKIP_STAT LD HL,(L180B) DEC HL LD (HL),0FFH DEC HL LD (HL),0FFH RLD_SKIP_STAT: ; Debug: LOAD complete OK LD A,'L' OUT (050H),A LD A,'=' OUT (050H),A LD A,'K' OUT (050H),A CALL DBG_CRLF ; POP BC POP DE POP HL XOR A RET RLD_ERR: ; Debug: LOAD error (SD read) PUSH AF OUT (PORT_DRAM),A LD A,'L' OUT (050H),A LD A,'=' OUT (050H),A LD A,'E' OUT (050H),A CALL DBG_CRLF POP AF OUT (PORT_MMIO),A CALL MMIO_OFF POP BC POP DE POP HL XOR A SCF RET RLD_NFERR: CALL MMIO_OFF POP BC POP DE POP HL XOR A SCF RET ; =========================================================================== ; Low-level SD card access routines ; =========================================================================== ; --------------------------------------------------------------------------- ; MMIO_ON - Enter MMIO mode for SPI access ; --------------------------------------------------------------------------- MMIO_ON: POP HL LD (SAVE_SP),SP LD SP,TEMP_STACK_TOP PUSH HL DI XOR A OUT (PORT_MMIO),A CALL TRAIN_UPCNTR RET ; --------------------------------------------------------------------------- ; MMIO_OFF - Leave MMIO mode, restore DRAM and BASIC stack ; --------------------------------------------------------------------------- MMIO_OFF: POP HL XOR A OUT (PORT_DRAM),A EI LD SP,(SAVE_SP) JP (HL) ; --------------------------------------------------------------------------- ; TRAIN_UPCNTR - Train the RFS register latch (15 reads of EFF8H) ; --------------------------------------------------------------------------- TRAIN_UPCNTR: LD HL,BNKCTRLRST LD B,15 TRAIN_LP: LD A,(HL) DJNZ TRAIN_LP XOR A RET ; --------------------------------------------------------------------------- ; SPI routines ; --------------------------------------------------------------------------- SPIOUT: LD (HWSPIDATA),A LD (HWSPISTART),A RET SPIIN: LD (HWSPISTART),A LD A,(HWSPIDATA) RET SPI_CS_LO: LD A,SDCS_ACT LD (BNKCTRL),A RET SPI_CS_HI: LD A,SDCS_DEACT LD (BNKCTRL),A RET ; --------------------------------------------------------------------------- ; SD_READ - Read one 512-byte sector into SECTORBUF ; --------------------------------------------------------------------------- SD_READ: CALL SPI_CS_LO LD A,051H CALL SPIOUT LD A,(SDSTARTSEC) CALL SPIOUT LD A,(SDSTARTSEC+1) CALL SPIOUT LD A,(SDSTARTSEC+2) CALL SPIOUT LD A,(SDSTARTSEC+3) CALL SPIOUT LD A,0FFH CALL SPIOUT LD B,0FFH SDR_R1: CALL SPIIN CP 0FFH JR NZ,SDR_GOTR1 DJNZ SDR_R1 JR SDR_ERR SDR_GOTR1: OR A JR NZ,SDR_ERR LD B,0FFH SDR_TOK: CALL SPIIN CP 0FEH JR Z,SDR_DATA CP 0FFH JR NZ,SDR_ERR DJNZ SDR_TOK JR SDR_ERR SDR_DATA: LD HL,SECTORBUF LD D,002H SDR_PG: LD B,000H SDR_BYTE: CALL SPIIN LD (HL),A INC HL DJNZ SDR_BYTE DEC D JR NZ,SDR_PG CALL SPIIN CALL SPIIN CALL SPI_CS_HI XOR A RET SDR_ERR: CALL SPI_CS_HI LD A,001H RET ; --------------------------------------------------------------------------- ; SD_WRITE - Write one 512-byte sector from SECTORBUF ; --------------------------------------------------------------------------- SD_WRITE: CALL SPI_CS_LO LD A,058H CALL SPIOUT LD A,(SDSTARTSEC) CALL SPIOUT LD A,(SDSTARTSEC+1) CALL SPIOUT LD A,(SDSTARTSEC+2) CALL SPIOUT LD A,(SDSTARTSEC+3) CALL SPIOUT LD A,0FFH CALL SPIOUT LD B,0FFH SDW_R1: CALL SPIIN CP 0FFH JR NZ,SDW_GOTR1 DJNZ SDW_R1 JR SDW_ERR SDW_GOTR1: OR A JR NZ,SDW_ERR LD A,0FEH CALL SPIOUT LD HL,SECTORBUF LD D,002H SDW_PG: LD B,000H SDW_BYTE: LD A,(HL) CALL SPIOUT INC HL DJNZ SDW_BYTE DEC D JR NZ,SDW_PG LD A,0FFH CALL SPIOUT CALL SPIOUT CALL SPIIN AND 01FH CP 005H JR NZ,SDW_ERR LD D,040H SDW_BSY1: LD B,000H SDW_BSY2: CALL SPIIN CP 0FFH JR Z,SDW_DONE DJNZ SDW_BSY2 DEC D JR NZ,SDW_BSY1 JR SDW_ERR SDW_DONE: CALL SPI_CS_HI XOR A RET SDW_ERR: CALL SPI_CS_HI LD A,001H RET ; =========================================================================== ; Directory and file access routines ; =========================================================================== ; --------------------------------------------------------------------------- ; ADD3216 - Add 16-bit BC to 32-bit DEHL ; --------------------------------------------------------------------------- ADD3216: ADD HL,BC EX DE,HL LD BC,0 ADC HL,BC EX DE,HL RET ; --------------------------------------------------------------------------- ; RFSGETSECTR - Calculate absolute sector (adds drive offset) ; Each drive image = 0x8010 sectors ; --------------------------------------------------------------------------- RFSGETSECTR: LD A,(SDDRIVENO) GETSEC_LP: OR A RET Z DEC A LD BC,08010H CALL ADD3216 JR GETSEC_LP ; --------------------------------------------------------------------------- ; SETLBAADDR - Store DEHL into SDSTARTSEC (big-endian) ; --------------------------------------------------------------------------- SETLBAADDR: LD A,D LD (SDSTARTSEC),A LD A,E LD (SDSTARTSEC+1),A LD A,H LD (SDSTARTSEC+2),A LD A,L LD (SDSTARTSEC+3),A RET ; --------------------------------------------------------------------------- ; INC_STARTSEC - Increment SDSTARTSEC by 1 (32-bit big-endian) ; --------------------------------------------------------------------------- INC_STARTSEC: LD HL,SDSTARTSEC+3 INC (HL) RET NZ DEC HL INC (HL) RET NZ DEC HL INC (HL) RET NZ DEC HL INC (HL) RET ; --------------------------------------------------------------------------- ; GETSDDIRENT - Get SD directory entry with sector caching ; Entry: E = entry number (0-255) ; Exit: HL = pointer to 32-byte entry, A = 0 success / 1 error ; --------------------------------------------------------------------------- GETSDDIRENT: PUSH DE LD A,E SRL A SRL A SRL A SRL A LD C,A LD A,(DIRSECBUF) CP C JR Z,GDIR_CACHED LD A,C LD (DIRSECBUF),A LD DE,0 LD H,0 LD L,A CALL RFSGETSECTR CALL SETLBAADDR CALL SD_READ OR A JR NZ,GDIR_ERR GDIR_CACHED:POP DE PUSH DE LD A,E AND 00FH LD HL,SECTORBUF OR A JR Z,GDIR_DONE LD B,A LD DE,00020H GDIR_ADD: ADD HL,DE DJNZ GDIR_ADD GDIR_DONE: POP DE XOR A RET GDIR_ERR: POP DE LD A,001H RET ; --------------------------------------------------------------------------- ; FINDSD - Find file by name in SD directory ; Entry: DE = filename (CR or null terminated) ; Exit: Z = found (HL = entry), NZ = not found ; --------------------------------------------------------------------------- FINDSD: LD (FINDSD_NAME),DE LD E,000H LD B,000H FSD_LOOP: PUSH BC PUSH DE CALL GETSDDIRENT POP DE POP BC OR A JR NZ,FSD_NF LD A,(HL) BIT 7,A JR Z,FSD_NEXT INC HL LD A,(HL) DEC HL OR A JR Z,FSD_NEXT CP 0FFH JR Z,FSD_NEXT PUSH HL PUSH DE PUSH BC INC HL INC HL LD DE,(FINDSD_NAME) LD B,17 FSD_CMP: LD A,(DE) CP 00DH JR Z,FSD_MATCH OR A JR Z,FSD_MATCH CP (HL) JR NZ,FSD_NOMATCH INC DE INC HL DJNZ FSD_CMP FSD_MATCH: POP BC POP DE POP HL XOR A RET FSD_NOMATCH:POP BC POP DE POP HL FSD_NEXT: INC E DJNZ FSD_LOOP FSD_NF: LD A,001H OR A RET ; --------------------------------------------------------------------------- ; CONVERT_ENTRY - Convert SD entry to Disk BASIC DIR buffer format ; Entry: HL = SD entry in SECTORBUF ; Exit: DIR_BUFPTR advanced by 32 ; --------------------------------------------------------------------------- CONVERT_ENTRY: INC HL LD DE,(DIR_BUFPTR) LD A,(HL) CP 005H JR NZ,CE_AT1 LD A,002H CE_AT1: LD (DE),A INC HL INC DE LD B,17 CE_NAME: LD A,(HL) OR A JR NZ,CE_NM1 LD A,00DH CE_NM1: LD (DE),A INC HL INC DE DJNZ CE_NAME ; Skip START_SECTOR[0..1], copy [2..3] INC HL INC HL LD A,(HL) LD (DE),A INC HL INC DE LD A,(HL) LD (DE),A INC HL INC DE ; Copy SIZE(2) + DTADR(2) + EXADR(2) = 6 bytes LD BC,6 LDIR ; Advance DIR_BUFPTR by 32 LD HL,(DIR_BUFPTR) LD DE,00020H ADD HL,DE LD (DIR_BUFPTR),HL RET ; --------------------------------------------------------------------------- ; MEMCLI_PATCH - Trampoline for memory clear init ; Original: RST 018H / DB 020H / EX DE,HL ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) MEMCLI_PATCH: IF BUILD_RFS = 1 ; Runtime patch: L2FD1 must call L2FE8_FIX instead of L2FE8. ; Binary keeps original bytes (CD E8 2F) at 0x2FD1 so the LOAD ; from MZ-5Z008 doesn't corrupt its own L2FD1 mid-transfer. ; We patch here because cold start runs ONCE after full load. LD A,L2FE8_FIX & 0FFH ; Low byte of L2FE8_FIX address LD (L2FD1+1),A ; Patch CALL operand low byte LD A,L2FE8_FIX >> 8 ; High byte LD (L2FD1+2),A ; Patch CALL operand high byte ; RST 018H DB 020H ; SVC 020H: boot beep + EI LD HL,RFS_END JP L402F ; Continue with memory clear loop ; --------------------------------------------------------------------------- ; RFS_ERR_HOOK - Debug: show error code before BASIC warm restart ; A = error code from error table (L1F6A or L4AE6) ; NOTE: L0182 must JP here BEFORE calling L0D20, because L0D20 maps ; Monitor ROM at 0000-0FFF which overlays L0182's code. The original ; JP RFS_ERR_HOOK at 0x0187 was invisible (Monitor ROM's JP L0000 ran). ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) RFS_ERR_HOOK: IF BUILD_RFS = 1 ; AF on stack from L0182's PUSH AF LD A,'!' OUT (050H),A LD A,'E' OUT (050H),A LD A,':' OUT (050H),A POP AF PUSH AF CALL DBG_HEX CALL DBG_CRLF CALL L0D20 ; Bank reset (maps Monitor ROM at 0000-0FFF) JP 00186H ; Jump to Monitor ROM's handler (POP AF + JP L0000) ; --------------------------------------------------------------------------- ; SVC30_DBG - Debug wrapper for SVC #30 handler ; Shows L1050 (device flags) and ZINP for every SVC #30 call, then dispatches. ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) SVC30_DBG: IF BUILD_RFS = 1 ; Check ZINP high byte for $RFS LD A,(ZINP+1) CP 080H ; RFS handlers are at >= 0x8000 JP NC,RFS_SVC30_HOOK ; $RFS ; Not $RFS: use flags1 bit5 for block-device detection LD A,(L1050) ; flags1 AND 020H ; bit5 = block device JP Z,SVC30_FD ; not block device → direct IOCALL JP L2AD2 ; $FD/$QD block device ; --------------------------------------------------------------------------- ; RFS_BIT5PATH - Block-device DIR handler for $RFS ; Replaces the standard L2FD1 path (0x2F38) which doesn't work with ; RFSINP_DIR because L2FD1 always calls ZINP with HL=L2800 (H>=28H), ; which triggers RFSINP_DISKID instead of the DIR fill path. ; For non-$RFS block devices ($FD/$QD), falls through to the original path. ; Detects $RFS by device name (ZDEVNM), not flags — $QD also has 0x5F. ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) RFS_BIT5PATH: IF BUILD_RFS = 1 ; Detect $RFS by device name (flags1 bits 5+6 cannot distinguish ; $QD from $RFS — both have 0x5F). Same approach as MZ-5Z008. LD A,(ZDEVNM) ; First char of device name CP 'R' JP NZ,02F38H ; Not 'R' → not $RFS → original path LD A,(ZDEVNM+1) ; Second char CP 'F' JP NZ,02F38H ; Not 'F' → not $RFS → original path ; ; $RFS custom DIR handler — replicates the TWO ZINP calls that the ; standard 02F38H→L2FD1 path makes (L2FE8 identity + L2FD4 DIR fill). ; MZ-5Z008 DBG_BIT5PATH does exactly this. ; ; 1st ZINP call: disk identity (H=0x28 → RFSINP_DISKID → zeros L2800) LD HL,02800H ; H=0x28 triggers DISKID path LD A,(ZCH) CALL RFSINP_DIR ; ; 2nd ZINP call: DIR fill (H=0x20 → fills L2000-L27FF) LD HL,L2000 ; H=0x20 triggers DIR fill path LD A,(ZCH) CALL RFSINP_DIR ; ; Check DIR buffer and clean up (same as MZ-5Z008 DBG_BIT5PATH) LD HL,L2000 LD A,(HL) OR A JP P,01F70H ; If bit7=0 → no entries (error) ; Clear DIR_FILLED so next DIR re-enumerates XOR A LD (DIR_FILLED),A ; Reset FDC to known state after MMIO bank switching. ; L2D08 normally calls L368D for $FD cleanup, but skips it when ; L1044=$RFS. The MMIO OUT(E3H)/OUT(E1H) bank switch during ; RFSINP_DIR may leave the emulated FDC I/O ports in an undefined ; state. L368D resets FDC select ports (DC/DD/DE) to 0 and clears ; L35B5, ensuring the next FD access does a full identity check. JP L368D ; XOR A + L361C(OUT DC/DD/DE) + LD (L35B5),A + RET ; --------------------------------------------------------------------------- ; RFS_SVC30_HOOK - Direct RFSINP_LD call for $RFS ; Device already identified as $RFS by bit6 test in SVC30_DBG. ; Calls RFSINP_LD directly (the SVC#30 block path would go through ; L2AD2 → L2FE8 → IOCALL → RFSINP_DIR with H>=28H → RFSINP_DISKID, ; which zeros L2800 instead of loading the file). ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) RFS_SVC30_HOOK: IF BUILD_RFS = 1 ; $RFS: call RFSINP_LD directly (A=0 for read) ; RFSINP_LD updates ELMD[0], ELMD20, ELMD22 from SD entry. XOR A CALL RFSINP_LD JR C,SH_FAIL ; RFSINP_LD failed → don't patch stack ; ; Fix stacked file size for L5C0F. ; L5C0F pushed BC=ELMD20 (was 0) BEFORE SVC#30. ; RFSINP_LD wrote the actual size to ELMD20. ; Stack: SP → [ret_addr, old_BC=0, ...]. Patch old_BC. POP HL ; HL=ret_addr, SP → [old_BC, ...] EX (SP),HL ; HL=old_BC, SP → [ret_addr, ...] LD HL,(ELMD20) ; HL=actual file size EX (SP),HL ; HL=ret_addr, SP → [actual_size, ...] PUSH HL ; SP → [ret_addr, actual_size, ...] JR SH_CLEANUP SH_FAIL: SH_CLEANUP: ; Cleanup after RFS LOAD (success or fail): ; 1. Clear L1FC0 dirty flag — prevents L1FAB infinite loop. ; 2. Set SAVE_PENDING=1 — prevents spurious RFSDOWRITE. XOR A LD (L1FC0),A LD A,001H LD (SAVE_PENDING),A RET ; --------------------------------------------------------------------------- ; L2FE8_FIX - Skip FD-specific identity check for $RFS in L2FD1 ; L2FE8 calls IOOUT→L2D62(SVC#29 seek)→L2E36(identity check), all of which ; operate on FD hardware state (L35B5, track positioning, disk identity at ; L2800). For $RFS, these are meaningless and leave stale FD state that ; corrupts the next LOAD "FD1:" after DIR "RFSx:". ; By returning immediately for $RFS, L2FD1 skips straight to L2FD4 (ZINP ; dispatch) which calls RFSINP_DIR for the DIR fill — exactly what's needed. ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) L2FE8_FIX: IF BUILD_RFS = 1 PUSH AF ; MUST preserve A (caller set A=0 for ZINP select ; at L2FD4; IOOUT saves/restores AF via trampoline) LD A,(ZINP+1) ; High byte of current ZINP handler CP 080H ; RFS handlers are at >= 0x8000 JR NC,L2FE8_SKIP ; $RFS → skip identity check POP AF ; Restore A=0 for IOOUT save JP L2FE8 ; $FD/$QD → original identity check path L2FE8_SKIP: POP AF ; Restore A RET ; $RFS → return to L2FD4 (skip L2FE8 entirely) ; --------------------------------------------------------------------------- ; RFS_DIR_FIX - Advance HL past ':' for DIR device-name parsing ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) RFS_DIR_FIX: IF BUILD_RFS = 1 LD DE,DEVNAMEBUF INC HL JP L596B ; --------------------------------------------------------------------------- ; RFS_DIR_STR - Handle string expressions in DIR for device names ; Called instead of L6E67 to properly parse "RF1:" strings ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) RFS_DIR_STR: IF BUILD_RFS = 1 CALL L6E67 ; Evaluate string expr. B=strlen, DE=strptr PUSH HL EX DE,HL LD DE,DEVNAMEBUF LD A,B OR A JR Z,DSTR_DONE LD C,A LD B,000H DSTR_LP: LD A,(HL) LD (DE),A INC HL INC DE INC B DEC C CP 03AH JR Z,DSTR_DONE LD A,C OR A JR NZ,DSTR_LP DSTR_DONE: LD DE,DEVNAMEBUF POP HL RET ; --------------------------------------------------------------------------- ; SVC32_FIX - Fixed SVC #32 (file data transfer) ; Original code only supported CMT (checks L1051 bit7). Block devices ; (FD, QD, RFS) have bit7=0 and always failed with !Y error. ; Fix: call ZINP directly via IOCALL, bypassing L2FE8 sector management. ; L2FE8's L2D62→L2E36 chain repositions the FD driver to directory sectors ; (via SVC#29), corrupting the file data position set by SVC#2F. ; HL (load address) passes through IOCALL to ZINP as the buffer address. ; DE=file size, BC=sector position from ELMD area (set by SVC#2F). ; L2D08 cleanup is essential: clears L1FC0, closes channels. Without it, ; L1FAB sees dirty L1FC0 and tries SVC#2E write-back → WRITE_SECTOR hang. ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) SVC32_FIX: IF BUILD_RFS = 1 LD A,(01051H) BIT 7,A JR NZ,SVC32_CMT ; Non-CMT: check if block device (bit5 of flags1) LD A,(L1050) BIT 5,A JP Z,YP_HOOK_G ; !Y source G: SVC32 L1050 bit5=0 ; Block device (FD/QD/RFS): skip L2FE8 sector management, ; enter at L2FD4 (SKPDE→IOCALL chain) with L2D08 on stack. ; L2FE8 repositions FD to directory sectors, corrupting position ; set by SVC#2F. QD is immune (L35B5 bit7=1), FD is not. LD DE,(ELMD20) ; File size LD BC,(ELMD30) ; Sector position PUSH HL ; Save load address LD HL,L2D08 ; Cleanup return address EX (SP),HL ; Stack=[L2D08,...], HL=load addr restored XOR A ; A=0, Z=1 → selects ZINP at L2FD4 JP L2FD4 ; SKPDE→IOCALL→RET→L2D08 cleanup SVC32_CMT: LD BC,(ELMD20) JP L313A ; --------------------------------------------------------------------------- ; SVC2F_YP_DBG - Diagnostic: L2F6E's L1D15 returned Z (bit5=0) → !Y error ; Prints "2F:XX YYYY" where XX=L1050 (flags1), YYYY=L1044 (device pointer). ; This tells us what device descriptor is active when !Y fires. ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) SVC2F_YP_DBG: IF BUILD_RFS = 1 PUSH AF LD A,'2' OUT (050H),A LD A,'F' OUT (050H),A LD A,':' OUT (050H),A LD A,(L1050) ; flags1 — bit5 should be 1 for block device CALL DBG_HEX LD A,' ' OUT (050H),A LD A,(L1044+1) ; device pointer high byte CALL DBG_HEX LD A,(L1044) ; device pointer low byte CALL DBG_HEX CALL DBG_CRLF POP AF JP 01F97H ; Continue to !Y error handler ; --------------------------------------------------------------------------- ; RFS_FREE_HOOK - Intercept L2F4B free space query for $RFS ; During DIR display (2nd SVC#39 call), L1D6B sets IX=L2F4B (block device ; free space) and calls IOCALL. L2F4B → L2E36 → L2E67 reads "disk identity" ; via ZINP. For $RFS, RFSINP_DISKID fills L2800 with 0x80 (bit7=1), but ; L2E67 expects bit7=0 → fires JP M,01F70H → error table → JP 0x0182 → ; warm restart via 0x0D20 which resets SP, discarding pending stack frames ; from L2F4B/L2E36/IOCALL — corrupting system state for subsequent commands. ; Fix: detect $RFS and return carry (= no free space info). The caller at ; L1D95+3 does JR C,L1DA8 which skips free space display gracefully. ; For non-$RFS block devices ($FD/$QD), fall through to original L2F4B. ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) RFS_FREE_HOOK: IF BUILD_RFS = 1 ; Detect $RFS by device name (flags1 bits 5+6 cannot distinguish ; $QD from $RFS — both have 0x5F). Same fix as RFS_BIT5PATH. LD A,(ZDEVNM) ; First char of device name CP 'R' JP NZ,L2F4B ; Not 'R' → not $RFS → original free space LD A,(ZDEVNM+1) ; Second char CP 'F' JP NZ,L2F4B ; Not 'F' → not $RFS → original free space XOR A ; A=0 (IOCALL checks: OR A / SCF / RET Z) SCF ; Carry = skip free space display RET ; =========================================================================== ; RFS Data Variables ; =========================================================================== ENDIF ; (Glass: label outside IF) DEVNAMEBUF: IF BUILD_RFS = 1 DS 8, 000H ; Device name buffer for DIR/LOAD parsing ; (replaces L5982 4-byte buffer which overflowed ; for 3-letter device names like "RFS1:") ENDIF ; (Glass: label outside IF) SDSTARTSEC: IF BUILD_RFS = 1 DS 4, 000H ; Current sector address (big-endian) ENDIF ; (Glass: label outside IF) DIRSECBUF: IF BUILD_RFS = 1 DB 0FFH ; Cached directory sector number ENDIF ; (Glass: label outside IF) FILE_STARTSEC: IF BUILD_RFS = 1 DS 4, 000H ; File start sector (big-endian) ENDIF ; (Glass: label outside IF) FILE_LOADADDR: IF BUILD_RFS = 1 DW 00000H ; Current load/store address ENDIF ; (Glass: label outside IF) FILE_SIZE: IF BUILD_RFS = 1 DW 00000H ; Remaining bytes during transfer ENDIF ; (Glass: label outside IF) RFS_LD_A0: IF BUILD_RFS = 1 DB 000H ; Entry A for RFSINP_LD ENDIF ; (Glass: label outside IF) DIR_BUFPTR: IF BUILD_RFS = 1 DW 00000H ; Current DIR buffer write position ; --------------------------------------------------------------------------- ; DBG_HEX — Output A as 2 hex ASCII digits to port 050H. ; Preserves BC, DE, HL. ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) DBG_HEX: IF BUILD_RFS = 1 PUSH AF RRCA RRCA RRCA RRCA AND 00FH CALL DBG_NIB POP AF AND 00FH DBG_NIB: CP 00AH JR C,DBG_DIG ADD A,037H ; 'A'..'F' OUT (050H),A RET DBG_DIG: ADD A,030H ; '0'..'9' OUT (050H),A RET ; ; --------------------------------------------------------------------------- ; DBG_CRLF — Output CR+LF to port 050H. Preserves all registers. ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) DBG_CRLF: IF BUILD_RFS = 1 PUSH AF LD A,00DH ; CR OUT (050H),A LD A,00AH ; LF OUT (050H),A POP AF RET ; ; --------------------------------------------------------------------------- ; YP_HOOK — Identify which code path triggers !Y error. ; Each entry loads a letter (A-F) into A via the cascade trick (DB 021H). ; Output: single letter + CRLF, then continues to !Y error table at 01F97H. ; A = line 3813 (L1B55, BIT 2 of L1043) ; B = line 3902 (L1BFD, BIT 6 of L1050) ; C = line 4030 (device setup) ; D = line 4059 (BIT 7 of L1050) ; E = line 4064 (BIT 5 of L1050, DIR non-RFS) ; F = line 4764 (L2B6A, L1D15 bit5) ; G = SVC32_FIX (L1050 bit5=0, non-block device in SVC#32) ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) YP_HOOK_A: IF BUILD_RFS = 1 LD A,'A' DB 021H ENDIF ; (Glass: label outside IF) YP_HOOK_B: IF BUILD_RFS = 1 LD A,'B' DB 021H ENDIF ; (Glass: label outside IF) YP_HOOK_C: IF BUILD_RFS = 1 LD A,'C' DB 021H ENDIF ; (Glass: label outside IF) YP_HOOK_D: IF BUILD_RFS = 1 LD A,'D' DB 021H ENDIF ; (Glass: label outside IF) YP_HOOK_E: IF BUILD_RFS = 1 LD A,'E' DB 021H ENDIF ; (Glass: label outside IF) YP_HOOK_F: IF BUILD_RFS = 1 LD A,'F' DB 021H ENDIF ; (Glass: label outside IF) YP_HOOK_G: IF BUILD_RFS = 1 LD A,'G' OUT (050H),A CALL DBG_CRLF JP 01F97H ; ; BC_ERR_HOOK - Debug: show ELMD[0..1] when error 0xBC fires ENDIF ; (Glass: label outside IF) BC_ERR_HOOK: IF BUILD_RFS = 1 PUSH AF LD A,'B' OUT (050H),A LD A,(L1000) ; File mode byte CALL DBG_HEX LD A,(L1001) ; File type (should be 0x0D here) CALL DBG_HEX CALL DBG_CRLF POP AF JP 01F9AH ; L1F6A cascade: error 0xBC ; ; --------------------------------------------------------------------------- ; Data area ; --------------------------------------------------------------------------- ENDIF ; (Glass: label outside IF) FINDSD_NAME: IF BUILD_RFS = 1 DW 00000H ; Saved filename pointer for FINDSD ENDIF ; (Glass: label outside IF) SAVE_DIRENT: IF BUILD_RFS = 1 DB 000H ; Directory entry number for SAVE ENDIF ; (Glass: label outside IF) SAVE_PENDING: IF BUILD_RFS = 1 DB 000H ; 1 = SAVE done flag ENDIF ; (Glass: label outside IF) DIR_FILLED: IF BUILD_RFS = 1 DB 000H ; 1 = DIR buffer filled ENDIF ; (Glass: label outside IF) SAVE_SP: IF BUILD_RFS = 1 DW 00000H ; Saved BASIC stack pointer ENDIF ; (Glass: label outside IF) DIR_ENTRY_IDX: IF BUILD_RFS = 1 DB 000H ; Current directory entry index ENDIF ; (Glass: label outside IF) SDDRIVENO: IF BUILD_RFS = 1 DB 000H ; SD drive number ENDIF ; (Glass: label outside IF) SECTORBUF: IF BUILD_RFS = 1 DS 512, 000H ; SD card sector buffer (512 bytes) DS 14, 000H ; Temp stack space (grows downward, 7 levels = exact max depth) ENDIF ; (Glass: labels outside IF) TEMP_STACK_TOP: ; SP points here RFS_END EQU TEMP_STACK_TOP ; End of RFS code = new TEXTST IF BUILD_RFS = 1 ; ; Pad remaining space to maintain original binary size (0x9000 bytes) DS 09000H - RFS_END, 0FFH ENDIF ; END BUILD_RFS = 1 ; =========================================================================== ; Tape/CMT bootstrap (only for BUILD_TAPE=1) ; Loads at TAPECOPY (0x1200), copies BASIC ROM to 0x0000, jumps to cold start. ; =========================================================================== IF BUILD_TAPE = 1 EXECSTART: XOR A LD DE,L0000 CALL TIMST ; Stop timer LD DE,L0000 LD HL,BASICEND - L0000 OR A SBC HL,DE LD C,L LD B,H LD HL,TAPECOPY OUT (LSE0),A ; Map 0000-0FFF to DRAM LDIR ; Copy BASIC ROM to 0x0000 JP L0000 ; Jump to cold start BASICEND: ENDIF