19788 lines
550 KiB
NASM
19788 lines
550 KiB
NASM
; Disassembly of the file "mz5z008.bin"
|
|
;
|
|
; CPU Type: Z80
|
|
;
|
|
; Created with dZ80 2.1
|
|
;
|
|
; on Monday, 16 of March 2026 at 07:23 PM
|
|
;
|
|
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
|
|
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
|
|
TMCNT EQU 01195H
|
|
CSMDT EQU 01199H
|
|
TEMPW EQU 0119EH
|
|
KEY262 EQU 012AAH
|
|
KEY264 EQU 012ACH
|
|
KEY266 EQU 012AEH
|
|
FUNBUF EQU 012B2H
|
|
INBUFC EQU 01352H
|
|
INBUFL EQU 01353H
|
|
INBUF EQU 01354H
|
|
TIMST EQU 00033H ; Timer stop routine in Monitor ROM
|
|
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
|
|
VRAM EQU 0D000H
|
|
ARAM EQU 0D800H
|
|
MMIO EQU 0E000H
|
|
TEMPO_ EQU 0E008H
|
|
PPI_PA EQU 0E010H
|
|
PPI_PB EQU 0E011H
|
|
PPI_PC EQU 0E012H
|
|
PPI_CTL EQU 0E013H
|
|
PRGSTART EQU 00000H
|
|
|
|
; ===========================================================================
|
|
; Build configuration — set these flags to select the build variant:
|
|
;
|
|
; BUILD_RFS=0, BUILD_TAPE=0 : Original BASIC (QD boot, no RFS)
|
|
; BUILD_RFS=0, BUILD_TAPE=1 : Original BASIC (Tape/CMT/RFS ROM boot)
|
|
; BUILD_RFS=1, BUILD_TAPE=0 : RFS Enhanced BASIC (QD boot)
|
|
; 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 = QD boot, 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
|
|
HDRLEN EQU 00040H ; MZF header length (64 bytes)
|
|
|
|
; RFS (ROM Filing System) constants for picoZ80
|
|
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
|
|
; SECTORBUF relocated to RFS data area — was EQU 0CE00H (overlapped BASIC stack)
|
|
SDCS_ACT EQU 001H ; BNKCTRL: CS LOW (active), BBCLK enable
|
|
SDCS_DEACT EQU 003H ; BNKCTRL: CS HIGH (inactive), BBCLK enable
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; MZF tape header (only for BUILD_TAPE=1)
|
|
; Loaded by Monitor ROM at ATRB (0x10F0), then bootstrapped to 0x0000
|
|
; ---------------------------------------------------------------------------
|
|
IF BUILD_TAPE = 1
|
|
ORG ATRB
|
|
BOOTATRB: DB 001H ; File type: 01 = Machine Code
|
|
IF BUILD_RFS = 1
|
|
BOOTNAME: DB "BASIC 5Z-008BRFS", 00DH ; Title (17 bytes + CR)
|
|
ELSE
|
|
BOOTNAME: DB "BASIC 5Z-008B ", 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
|
|
DB 0C3H
|
|
DB 0EEH
|
|
DB 00BH
|
|
L0054: DS 2, 000H
|
|
L0056: DB 000H
|
|
L0057: DB 018H
|
|
DB 0C3H
|
|
DB 08AH
|
|
DB 003H
|
|
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 0CCH
|
|
DB 007H
|
|
DB 0F0H
|
|
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
|
|
L0101: 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,L803E
|
|
LD HL,L80F6
|
|
L0182: PUSH AF
|
|
CALL L0D20
|
|
POP AF
|
|
JP L0000
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SVC Dispatch Table (L018A - ~0x0201)
|
|
;
|
|
; This is a lookup table of 2-byte handler addresses indexed by SVC number.
|
|
; SVC_DISP uses: handler = word[L018A + SVC*2].
|
|
; NOTE: The bytes in this table also serve as executable code — several
|
|
; labels within the table (L01A2, L01CE, L01D9, L01E0) are jump targets
|
|
; from nearby code. This dual-purpose layout prevents conversion to DW.
|
|
;
|
|
; Key entries:
|
|
; SVC #00=3D9D #02=05E8 #05=0908 #20=0D3E #29=1EDB #2A=1F1D
|
|
; SVC #2E=19E0 #33=1AE1 #39=1D1B #3A=14DD
|
|
; ---------------------------------------------------------------------------
|
|
L018A: SBC A,L
|
|
DEC A
|
|
CALL PE,0E805H
|
|
DEC B
|
|
RST 038H
|
|
DEC BC
|
|
LD B,E
|
|
INC C
|
|
EX AF,AF'
|
|
ADD HL,BC
|
|
XOR C
|
|
RRCA
|
|
LD A,00FH
|
|
RET Z
|
|
DEC BC
|
|
JP Z,0D80BH
|
|
DEC BC
|
|
AND 00BH
|
|
L01A2: ADC A,H
|
|
LD (BC),A
|
|
ADC A,D
|
|
INC BC
|
|
POP BC
|
|
DEC B
|
|
AND B
|
|
INC D
|
|
ADD A,A
|
|
LD A,(BC)
|
|
ADC A,C
|
|
LD A,(BC)
|
|
SCF
|
|
LD A,(BC)
|
|
LD B,(HL)
|
|
INC D
|
|
HALT
|
|
INC D
|
|
SUB C
|
|
INC D
|
|
LD B,014H
|
|
LD E,H
|
|
LD (BC),A
|
|
POP HL
|
|
INC C
|
|
RET PE
|
|
INC C
|
|
RST 028H
|
|
INC C
|
|
PUSH HL
|
|
INC D
|
|
AND H
|
|
INC DE
|
|
LD (HL),D
|
|
INC DE
|
|
LD C,E
|
|
LD B,LSE5
|
|
NOP
|
|
LD A,00DH
|
|
JR NC,L01CE ; (+000H)
|
|
L01CE: PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
ADC A,A
|
|
ADD HL,BC
|
|
LD D,L
|
|
ADD HL,BC
|
|
SUB B
|
|
L01D9: DEC C
|
|
RET PE
|
|
DEC DE
|
|
IN A,(01EH)
|
|
DEC E
|
|
RRA
|
|
L01E0: POP AF
|
|
LD E,03DH
|
|
LD A,(DE)
|
|
CP B
|
|
LD A,(DE)
|
|
RET PO
|
|
ADD HL,DE
|
|
LD (HL),C
|
|
DEC DE
|
|
OR H
|
|
INC E
|
|
RET C
|
|
INC E
|
|
RET
|
|
|
|
INC E
|
|
POP HL
|
|
LD A,(DE)
|
|
RET NC
|
|
JR L01D9 ; (-01cH)
|
|
|
|
JR 00243H ; (+04cH)
|
|
|
|
ADD HL,DE
|
|
RRCA
|
|
JR L01A2 ; (-059H)
|
|
|
|
DEC DE
|
|
DEC DE
|
|
DEC E
|
|
DB 0DDH
|
|
INC D
|
|
L0200: PUSH HL
|
|
NOP
|
|
LD E,B
|
|
LD E,067H
|
|
INC L
|
|
OR (HL)
|
|
INC L
|
|
LD B,(HL)
|
|
INC L
|
|
NOP
|
|
ADD HL,HL
|
|
SBC A,L
|
|
LD HL,(02925H)
|
|
XOR E
|
|
RRA
|
|
CALL M,L742A
|
|
RLCA
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
PUSH HL
|
|
NOP
|
|
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 (MMIO),A
|
|
CPL
|
|
LD (MMIO),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 (MMIO),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 (MMIO),A
|
|
NOP
|
|
LD A,(0E001H)
|
|
LD (DE),A
|
|
L04B5: LD A,C
|
|
LD (MMIO),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 (MMIO),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,VRAM
|
|
LD DE,0D7D0H
|
|
CALL L069B
|
|
LD HL,0D028H
|
|
LD DE,VRAM
|
|
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,VRAM
|
|
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
|
|
L0767: SUB E
|
|
INC A
|
|
LD D,A
|
|
LD A,H
|
|
SUB L
|
|
INC A
|
|
L076D: LD E,A
|
|
CALL L0754
|
|
JP L0648
|
|
|
|
CALL SKPDE
|
|
LD A,(L004E)
|
|
L077A: 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,L433E
|
|
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,0F0H
|
|
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,L3CFB
|
|
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
|
|
L0A01: 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)
|
|
L0A1A: 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 30, 000H
|
|
L0B17: DS 3, 000H
|
|
INKEY$: DS 7, 000H
|
|
INKEY1: DS 10, 000H
|
|
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
|
|
$CRT: DB 091H,00BH,"CRT",000H,08AH ; $CRT - CRT device descriptor
|
|
DS 2, 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
INKEYF: DB 0AAH
|
|
DB 00BH
|
|
DB 0B5H
|
|
DB 00BH
|
|
DB 0C4H
|
|
DB 00BH
|
|
$KB_: DB 000H ; $KB - Keyboard device descriptor
|
|
DB 00FH
|
|
DB 04BH
|
|
DB 042H
|
|
DS 2, 000H
|
|
DB 081H
|
|
DS 2, 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
INKEY0: DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB 0AAH
|
|
DB 00BH
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
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,(DISPX)
|
|
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,(FILOUT)
|
|
L0BCE: OR A
|
|
JR NZ,L0BD4 ; (+003H)
|
|
POP AF
|
|
JR L0BFF ; (+02bH)
|
|
|
|
L0BD4: POP AF
|
|
JP L0F3E
|
|
|
|
PUSH AF
|
|
LD A,(FILOUT)
|
|
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
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; Control character translation table (indexed by char code 0x00-0x1F)
|
|
; Used by L0C26: HL = L0C8F + C, A = (HL).
|
|
; 0x00 → handle via L0D3F, 0xFF → skip, other → translate via L0C60
|
|
; ---------------------------------------------------------------------------
|
|
L0C8F: DB 000H,000H,000H,000H ; 00-03: NUL,SOH,STX,ETX → L0D3F
|
|
DB 0FFH,0FFH,0FFH,01DH ; 04-07: EOT,ENQ,ACK → skip; BEL → 0x1D
|
|
DB 000H,000H,000H,000H ; 08-0B: BS,HT,LF,VT → L0D3F
|
|
DB 000H,00DH,000H,000H ; 0C-0F: FF → L0D3F; CR → 0x0D; SO,SI → L0D3F
|
|
DB 000H,00AH,003H,020H ; 10-13: DLE → L0D3F; DC1 → 0x0A; DC2 → 0x03; DC3 → 0x20
|
|
DB 00EH,000H,000H,0FFH ; 14-17: DC4 → 0x0E; NAK,SYN → L0D3F; ETB → skip
|
|
DB 000H,0FFH,0FFH,00DH ; 18-1B: CAN → L0D3F; EM,SUB → skip; ESC → 0x0D
|
|
DB 0FFH,000H,000H,000H ; 1C-1F: FS → skip; GS,RS,US → L0D3F
|
|
L0CAF: DI
|
|
XOR A
|
|
LD (L004D),A
|
|
LD (FILOUT),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,(TEXTED)
|
|
ADD HL,DE
|
|
LD (TEXTED),HL
|
|
LD HL,(VARST)
|
|
ADD HL,DE
|
|
LD (VARST),HL
|
|
LD HL,(STRST)
|
|
ADD HL,DE
|
|
LD (STRST),HL
|
|
LD HL,(VARED)
|
|
ADD HL,DE
|
|
LD (VARED),HL
|
|
LD HL,(TMPEND)
|
|
ADD HL,DE
|
|
LD (TMPEND),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 (TEMPO_),A
|
|
OUT (LSE1),A
|
|
EI
|
|
POP DE
|
|
RET
|
|
|
|
L0D20: LD A,036H
|
|
BRKEY: DI
|
|
OUT (LSE3),A
|
|
LD (0E007H),A
|
|
XOR A
|
|
LD (TEMPO_),A
|
|
OUT (LSE1),A
|
|
EI
|
|
RET
|
|
|
|
L0D30: PUSH AF
|
|
PUSH BC
|
|
AND 00FH
|
|
LD B,A
|
|
LD A,008H
|
|
SUB B
|
|
LD (0119EH),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 Device Descriptor (User-defined device)
|
|
;
|
|
; Handlers pointing to 0x00E5 (monitor ROM) are stubs (no-op/error).
|
|
; ZRO and ZWO share the same handler (USR_RO).
|
|
; ZINP and ZOUT share the same handler (USR_IO).
|
|
; ZWDIR and ZFREE are not emitted explicitly — USR_RO code at 0x0D77
|
|
; overlaps these 2 DW fields (the first 4 bytes of USR_RO: 21 01 10 DF
|
|
; encode ZWDIR=0x0121, ZFREE=0xDF10). Neither is called (flags1 bit7=1).
|
|
; ---------------------------------------------------------------------------
|
|
$USR: DW 00000H ; Next device = NULL (end of chain)
|
|
L0D60: DB "USR",000H ; Device name
|
|
DB 09FH ; flags1: bit7=1 (no dir/free), bit4-0=0x1F
|
|
DB 000H ; flags2
|
|
DB 000H ; dirmx: 0
|
|
DW 000E5H ; ZINIT (monitor ROM stub)
|
|
DW USR_RO ; ZRO handler (read/write open)
|
|
DW USR_RO ; ZWO handler (same as ZRO)
|
|
DW 000E5H ; ZCL (monitor ROM stub)
|
|
DW 000E5H ; ZKL (monitor ROM stub)
|
|
DW USR_IO ; ZINP handler (user I/O dispatch)
|
|
DW USR_IO ; ZOUT handler (same as ZINP)
|
|
DW 000E5H ; ZDELT (monitor ROM stub)
|
|
; ZWDIR/ZFREE implicit — next 4 bytes are USR_RO code, read as DW pointers
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; USR_RO - User device open (ZRO/ZWO handler)
|
|
;
|
|
; Calls SVC #13H to find the USR device entry point, stores it in ZWRK1.
|
|
; ---------------------------------------------------------------------------
|
|
USR_RO: LD HL,ELMD1
|
|
RST 018H
|
|
DB 013H
|
|
LD A,D
|
|
OR E
|
|
JP Z,01F9AH
|
|
LD (ZWRK1),DE
|
|
RET
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; USR_IO - User device I/O (ZINP/ZOUT handler)
|
|
;
|
|
; Dispatches to the user-supplied routine address stored in ZWRK1.
|
|
; ---------------------------------------------------------------------------
|
|
USR_IO: LD HL,(ZWRK1)
|
|
JP (HL)
|
|
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
LD A,(ZFLAG1)
|
|
BIT 7,A
|
|
JP NZ,01F97H
|
|
JP L1989
|
|
|
|
L0D9B: LD B,(IY+000H)
|
|
CALL L1C39
|
|
LD A,(ELMD)
|
|
CP B
|
|
JP NZ,01F9DH
|
|
RET
|
|
|
|
L0DA9: LD A,(L004D)
|
|
OR A
|
|
LD A,(LPOSB)
|
|
RET Z
|
|
LD A,(L0054)
|
|
RET
|
|
|
|
DS 40, 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
|
|
$LPT: DB 0F7H,"/LPT",000H,08AH ; $LPT - Line printer device descriptor
|
|
DS 2, 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DB 000H
|
|
DB LSE5
|
|
DS 3, 000H
|
|
DB 027H
|
|
DB 00FH
|
|
DB 019H
|
|
DB 00FH
|
|
JP L0DA9
|
|
|
|
RET
|
|
|
|
L0F1D: LD A,00DH
|
|
CALL L0FA9
|
|
XOR A
|
|
LD (LPOSB),A
|
|
RET
|
|
|
|
LD HL,DISPX
|
|
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,(PNMODE)
|
|
CP 001H
|
|
LD A,044H
|
|
JP NZ,00180H
|
|
LD A,B
|
|
CP 00DH
|
|
JR Z,L0F1D ; (-040H)
|
|
LD HL,LPOSB
|
|
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,LPOSB
|
|
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
|
|
; ===========================================================================
|
|
; BASIC System Workspace (0x1000-0x109F)
|
|
; ===========================================================================
|
|
;
|
|
; --- ELMD: File header / element data (0x1000-0x103F) ---
|
|
ELMD: DB 000H ; File type (0=obj, 1=BTX, 2=BASIC, 3=data, 5=MZF)
|
|
ELMD1: DS 17, 000H ; Filename (17 bytes, null-padded)
|
|
ELMD18: DW 00000H ; File size (bytes)
|
|
ELMD20: DW 00000H ; Load address / BASIC program size
|
|
ELMD22: DW 00000H ; Execution address
|
|
ELMD24: DW 00000H ; Reserved
|
|
ELMD26: DW 00000H ; Reserved
|
|
DS 2, 000H
|
|
ELMD30: DW 00000H ; Reserved
|
|
ELMD32: DW 00000H ; Reserved
|
|
DS 6, 000H
|
|
SDDRIVENO: DB 000H ; SD drive number (numeric 0-9)
|
|
CMTFILENO: DB 000H ; Sequential file counter
|
|
DS 20, 000H
|
|
L103E: DS 2, 000H
|
|
;
|
|
; --- Device workspace (0x1040-0x106F) ---
|
|
ZTOP: DW 00002H ; Top of device chain pointer
|
|
ZLOG: DB 000H ; Logical unit number
|
|
ZRWX: DB 000H ; Read/write mode
|
|
ZEQT: DW 00000H ; Equipment/device type
|
|
ZCH: DB 000H ; Channel number
|
|
ZEOF: DB 000H ; End of file flag
|
|
ZWRK1: DW 00000H ; Work area 1 (16-bit)
|
|
ZNXT: DW 00000H ; Next byte pointer
|
|
ZDEVNM: DS 4, 000H ; Active device name (4 bytes)
|
|
ZFLAG1: DB 001H ; Active device flags1
|
|
ZFLAG2: DB 000H ; Active device flags2
|
|
ZDIRMX: DB 000H ; Active device max dir entries
|
|
ZINIT: DW 00000H ; Active ZINIT function pointer
|
|
ZRO: DW 00000H ; Active ZRO function pointer
|
|
ZWO: DW 00000H ; Active ZWO function pointer
|
|
ZCL: DW 00000H ; Active ZCL function pointer
|
|
ZKL: DW 00000H ; Active ZKL function pointer
|
|
ZINP: DW 00000H ; Active ZINP function pointer
|
|
ZOUT: DW 00000H ; Active ZOUT function pointer
|
|
ZDELT: DW 00000H ; Active ZDELT function pointer
|
|
ZWDIR: DW 00000H ; Active ZWDIR function pointer
|
|
ZFREE: DW 00000H ; Active ZFREE function pointer
|
|
DS 2, 000H
|
|
DCHAN: DB 000H ; Default channel
|
|
DDEV: DW 00000H ; Default device descriptor pointer
|
|
_CRT: DW 00B78H ; CRT device descriptor pointer
|
|
_LPT: DW 00F00H ; LPT device descriptor pointer
|
|
;
|
|
; --- BASIC memory pointers (0x1070-0x109F) ---
|
|
TEXTST: DW 00000H ; Start of BASIC text
|
|
TEXTED: DW 00000H ; End of BASIC text
|
|
VARST: DW 00000H ; Start of variables
|
|
STRST: DW 00000H ; Start of string space
|
|
VARED: DW 00000H ; End of variables
|
|
TMPEND: DW 00000H ; End of temporary area
|
|
INTFAC: DW 00000H ; Integer accumulator
|
|
MEMLMT: DW 00000H ; Memory limit
|
|
MEMMAX: DW 0FF00H ; Maximum memory
|
|
CURXY: DW 00000H ; Cursor X,Y position
|
|
POSADR: DW 00000H ; Cursor VRAM address
|
|
BITADR: DW 00000H ; Bit address
|
|
POINTX: DW 00000H ; Graphics point X
|
|
POINTY: DW 00000H ; Graphics point Y
|
|
CURFLG: DB 000H ; Cursor flag
|
|
CURMAK: DB 000H ; Cursor make flag
|
|
CMTMSG: DB 000H ; CMT message flag
|
|
INPFLG: DB 000H ; Input flag
|
|
DISPX: DB 000H ; Display X position
|
|
FILOUT: DB 000H ; File output flag
|
|
PSEL: DB 001H ; Printer select
|
|
PCRLF: DB 000H ; Printer CR/LF mode
|
|
LPT_TM: DB 00EH ; LPT timeout
|
|
LPOSB: DB 000H ; LPT position
|
|
PSMAL: DB 000H ; Printer small flag
|
|
PNMODE: DB 001H ; Printer mode
|
|
DMD: DB 000H ; Display mode
|
|
MEMOP: DB 000H ; Memory operation flag
|
|
PWMODE: DB 000H ; Power mode
|
|
CMODE: DB 000H ; Color mode
|
|
CPLANE: DB 000H ; Color plane
|
|
MAXCF: DB 000H ; Max color flag
|
|
PMASK: DB 000H ; Plane mask
|
|
GMODE: DB 000H ; Graphics mode
|
|
DS 80, 000H ; 0x10A0-0x10EF (padding to L10F0)
|
|
L10F0: DS 78, 000H
|
|
L113E: DS 84, 000H
|
|
RST 028H
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
SUMDT: NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
LD BC,00504H
|
|
DS 3, 000H
|
|
KEYBM1: DB 000H
|
|
KEYBUF: DS 154, 000H
|
|
L123E: DS 57, 000H
|
|
L1277: DS 73, 000H
|
|
; ---------------------------------------------------------------------------
|
|
; Function key definition table (F1-F10 defaults, stored in RAM)
|
|
; Each entry: 1 byte length + string + zero-padded to 16 bytes total.
|
|
; Loaded at startup, modifiable via DEF KEY statement.
|
|
; ---------------------------------------------------------------------------
|
|
L12C0: DB 007H,"RUN",020H,020H,020H,00DH ; F1: RUN <CR>
|
|
DS 8, 000H
|
|
DB 005H,"LIST",020H ; F2: LIST
|
|
DS 10, 000H
|
|
DB 005H,"AUTO",020H ; F3: AUTO
|
|
DS 10, 000H
|
|
DB 006H,"RENUM",020H ; F4: RENUM
|
|
DS 9, 000H
|
|
DB 004H,"DIR",020H ; F5: DIR
|
|
DS 11, 000H
|
|
DB 005H,"CHR$(" ; F6: CHR$(
|
|
DS 10, 000H
|
|
DB 008H,"DEF KEY(" ; F7: DEF KEY(
|
|
DS 7, 000H
|
|
DB 004H,"CONT" ; F8: CONT
|
|
DS 9, 000H
|
|
L133E: DS 2, 000H ; (last 2 bytes of F8 entry, used as workspace)
|
|
DB 006H,"SAVE",020H,020H ; F9: SAVE
|
|
DS 9, 000H
|
|
DB 006H,"LOAD",020H,020H ; F10: LOAD
|
|
DS 9, 000H
|
|
L1360: DB 000H ; F11: (empty/unused)
|
|
L1361: DS 15, 000H ; (F11 padding, used as workspace)
|
|
DB 000H ; End marker
|
|
L1371: DB 000H ; End marker
|
|
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,0F0H
|
|
RET
|
|
|
|
L139E: ADD A,0C9H
|
|
RET
|
|
|
|
L13A1: SUB 040H
|
|
RET
|
|
|
|
L13A4: CP 0F0H
|
|
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 0CEH
|
|
JR Z,L13D2 ; (+013H)
|
|
CP 0CFH
|
|
JR Z,L13D2 ; (+00fH)
|
|
L13C3: DI
|
|
OUT (LSE2),A
|
|
CALL L0BCE
|
|
OUT (LSE0),A
|
|
EI
|
|
CP 0F0H
|
|
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,KEYBUF
|
|
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 (DCHAN),A
|
|
RET
|
|
|
|
LD C,A
|
|
RST 018H
|
|
DB 020H
|
|
RST 018H
|
|
DB 002H
|
|
BIT 7,C
|
|
JR Z,L14F8 ; (+00aH)
|
|
LD HL,KEYBUF
|
|
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,(ZCH)
|
|
ADD A,031H
|
|
LD (HL),A
|
|
LD A,(01051H)
|
|
AND 00FH
|
|
JR Z,L154E ; (+001H)
|
|
INC HL
|
|
L154E: LD (HL),03AH
|
|
INC HL
|
|
LD (HL),000H
|
|
RET
|
|
|
|
L1554: DB 053H,005H,"YNTA",0D8H,04FH,005H,"VER FLO",0D7H,049H,005H ; Error message table (bit-7 terminated)
|
|
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",0CEH,055H,005H,"N DEF. FUNCTIO",0CEH,055H,005H,"N DEF. LIN",0C5H,043H,005H,"AN'T ",006H,"CON",0D4H,04DH,005H,"EMORY PROTECTIO",0CEH,049H,005H,"NSTRUCTIO",0CEH,043H,005H,"AN'T ",006H,"RESUM",0C5H,"RESUM",0C5H
|
|
DS 2, 080H
|
|
DB "REA",0C4H,"SWAP ",005H,"LEVE",0CCH
|
|
DS 2, 080H
|
|
DB 053H,005H,"YSTEM I",0C4H,046H,005H,"RAMIN",0C7H,04FH,005H,056H,045H
|
|
DS 2, 052H
|
|
DB 055H,0CEH,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",0CEH,04EH,005H,"OT OPE",0CEH,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",0CDH
|
|
L179E: DB 020H
|
|
DB 005H
|
|
DB 045H
|
|
DS 2, 052H
|
|
DB 04FH
|
|
DB 052H
|
|
DS 91, 000H
|
|
L1800: JP L4000
|
|
|
|
L1803: LD A,(ZLOG)
|
|
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,(ZLOG)
|
|
LD (L1FC0),A
|
|
RET
|
|
|
|
L1821: CALL SKPDE
|
|
LD A,(ZFLAG1)
|
|
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,KEYBUF
|
|
CALL L026A
|
|
LD (0193CH),DE
|
|
POP DE
|
|
RET NC
|
|
JP 0017DH
|
|
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL L181A
|
|
LD HL,(ZTOP)
|
|
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,(ZFLAG1)
|
|
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 (ZTOP),HL
|
|
LD DE,ZLOG
|
|
LD BC,00008H
|
|
LDIR
|
|
LD (L1809),HL
|
|
PUSH HL
|
|
POP IY
|
|
LD DE,ELMD
|
|
CALL L1C54
|
|
PUSH HL
|
|
LD HL,(ZEQT)
|
|
LD DE,ZNXT
|
|
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,(ZRWX)
|
|
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,KEYBUF
|
|
PUSH HL
|
|
LD A,B
|
|
OR A
|
|
CALL NZ,LDHLDE
|
|
LD (HL),000H
|
|
LD HL,$CRT
|
|
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,KEYBUF
|
|
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,(DCHAN)
|
|
L1A9B: LD (ZEQT),HL
|
|
PUSH HL
|
|
LD (ZCH),A
|
|
LD DE,ZNXT
|
|
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,ELMD1
|
|
LD B,01FH
|
|
CALL ?CLRHL
|
|
LD HL,ELMD
|
|
RST 018H
|
|
DB 017H
|
|
CALL L1EB4
|
|
LD HL,ZFLAG1
|
|
BIT 4,(HL)
|
|
RET Z
|
|
INC HL
|
|
BIT 7,(HL)
|
|
RET NZ
|
|
LD A,(ELMD1)
|
|
CP 00DH
|
|
JP Z,01F9AH
|
|
RET
|
|
|
|
CALL SKPDE
|
|
CALL L1AEF
|
|
LD B,000H
|
|
CALL L1B97
|
|
JP L2D08
|
|
|
|
L1AEF: LD A,(ZLOG)
|
|
RST 018H
|
|
DB 029H
|
|
JP NC,01F7CH
|
|
CALL L1C5B
|
|
LD HL,L005D
|
|
LD A,(ZFLAG1)
|
|
LD DE,(ZKL)
|
|
INC DE
|
|
INC DE
|
|
BIT 7,A
|
|
JR NZ,L1B0B ; (+001H)
|
|
ADD HL,DE
|
|
L1B0B: LD A,(ZRWX)
|
|
BIT 2,A
|
|
JR Z,L1B13 ; (+001H)
|
|
ADD HL,DE
|
|
L1B13: EX DE,HL
|
|
LD A,(ZLOG)
|
|
RST 018H
|
|
L1B18: DB 02AH
|
|
LD (L1FC0),A
|
|
LD (ZTOP),HL
|
|
EX DE,HL
|
|
LD HL,ZLOG
|
|
LD BC,00008H
|
|
LDIR
|
|
LD (01809H),DE
|
|
PUSH DE
|
|
POP IY
|
|
LD HL,ELMD
|
|
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,(ZRWX)
|
|
BIT 2,A
|
|
JP NZ,01F97H
|
|
BIT 1,A
|
|
LD IX,(ZWO)
|
|
JR NZ,L1B65 ; (+00bH)
|
|
LD A,(ZFLAG1)
|
|
BIT 7,A
|
|
JR Z,L1B6B ; (+00aH)
|
|
LD IX,(ZRO)
|
|
L1B65: LD HL,ELMD
|
|
JP IOCALL
|
|
|
|
L1B6B: CALL L0D9B
|
|
JP 019BBH
|
|
|
|
CALL SKPDE
|
|
LD IY,L0100
|
|
LD (ZLOG),IY
|
|
LD IY,ELMD
|
|
CALL L1D15
|
|
LD HL,L2B7A
|
|
JR NZ,L1B8B ; (+003H)
|
|
LD HL,L1C39
|
|
L1B8B: CALL L00FA
|
|
LD B,080H
|
|
CALL L1B97
|
|
LD A,(ELMD)
|
|
RET
|
|
|
|
L1B97: LD A,(ELMD)
|
|
CP 005H
|
|
RET C
|
|
LD A,(ELMD18)
|
|
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,(ZRWX)
|
|
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,(ZFLAG1)
|
|
BIT 6,A
|
|
JP Z,01F97H
|
|
CALL 018C7H
|
|
LD A,(ZDIRMX)
|
|
LD B,A
|
|
L1C0F: LD HL,KEYBUF
|
|
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,KEYBUF
|
|
PUSH IY
|
|
POP DE
|
|
PUSH HL
|
|
CALL L1C54
|
|
POP HL
|
|
LD DE,ELMD
|
|
LD A,(HL)
|
|
L1C54: LD BC,00040H
|
|
LDIR
|
|
OR A
|
|
RET
|
|
|
|
L1C5B: LD IX,L1C9D
|
|
L1C5F: LD (01C99H),IX
|
|
CALL SKPDE
|
|
LD A,(ZLOG)
|
|
LD C,A
|
|
LD HL,(TEXTED)
|
|
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,ZEQT
|
|
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,(ZRWX)
|
|
AND B
|
|
BIT 1,A
|
|
RET Z
|
|
JP 01F7CH
|
|
|
|
CALL L1D15
|
|
JP NZ,L2AD2
|
|
LD BC,(ELMD20)
|
|
PUSH BC
|
|
XOR A
|
|
LD IX,(ZINP)
|
|
CALL IOCALL
|
|
POP BC
|
|
RET
|
|
|
|
LD A,(01051H)
|
|
BIT 7,A
|
|
JP Z,01F97H
|
|
LD BC,(ELMD20)
|
|
JP L313A
|
|
|
|
LD A,(ELMD)
|
|
CP 005H
|
|
JR C,L1CE4 ; (+005H)
|
|
LD A,080H
|
|
LD (ELMD18),A
|
|
L1CE4: CALL L1D15
|
|
JP NZ,L2AE0
|
|
BIT 7,A
|
|
JP NZ,01F97H
|
|
PUSH DE
|
|
LD HL,L0200
|
|
LD (ZLOG),HL
|
|
CALL L1C5B
|
|
LD HL,ELMD
|
|
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,(ZFLAG1)
|
|
BIT 5,A
|
|
RET
|
|
|
|
CALL SKPDE
|
|
OR A
|
|
JR NZ,L1D6B ; (+04aH)
|
|
LD HL,L0100
|
|
LD (ZLOG),HL
|
|
IF BUILD_RFS = 1
|
|
CALL RFS_L1C5B_WRAP
|
|
CALL RFS_FLAGS_TEST
|
|
; RFS_FLAGS_TEST returns HL=ZFLAG1 for non-$RFS devices
|
|
; (and already handles the ZFLAG1 bit7 error check).
|
|
BIT 5,(HL) ; ZFLAG1 bit5 = block device
|
|
JP NZ,02F38H ; Block device DIR path (ZINP-based)
|
|
INC HL ; HL = ZFLAG2
|
|
BIT 7,(HL) ; ZFLAG2 bit7 = error
|
|
JP NZ,01F97H
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
ELSE
|
|
; Original SVC#39 DIR handler (no RFS)
|
|
CALL L1C5B
|
|
LD HL,ZFLAG1
|
|
BIT 7,(HL)
|
|
JP NZ,01F97H
|
|
BIT 5,(HL)
|
|
JP NZ,02F38H ; Block device DIR path
|
|
INC HL
|
|
BIT 7,(HL)
|
|
JP NZ,01F97H
|
|
ENDIF
|
|
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 (DISPX),A
|
|
LD HL,KEYBUF
|
|
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,L2F4B
|
|
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,KEYBUF
|
|
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: DB 00DH,"DIRECTORY OF " ; Directory/file type strings
|
|
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
|
|
; ---------------------------------------------------------------------------
|
|
; Subroutine at 0x1E58: Opens device I/O channel (saves/restores SP and IX)
|
|
; ---------------------------------------------------------------------------
|
|
PUSH HL ; E5
|
|
L1E59: XOR A ; AF
|
|
LD (01042H),A ; 32 42 10 — clear I/O flag
|
|
LD IX,01E71H ; DD 21 71 1E — IX = workspace
|
|
LD (01E72H),SP ; ED 73 72 1E — save stack pointer
|
|
CALL L1C5F ; CD 5F 1C — open channel
|
|
POP HL ; E1
|
|
LD IX,(01053H) ; DD 2A 53 10 — restore IX
|
|
CALL IOCALL ; CD 45 02
|
|
RET ; C9
|
|
; Workspace area (0x1E71-0x1E73, used by above subroutine)
|
|
DB 031H ; 0x1E71 data (IX-based structure)
|
|
DS 2, 000H ; 0x1E72-73 SP save area
|
|
; ---------------------------------------------------------------------------
|
|
; Subroutine at 0x1E74: Confirm prompt — SVC #38 + "OK ? [Y/N]"
|
|
; ---------------------------------------------------------------------------
|
|
LD B,000H ; 06 00
|
|
RST 018H ; DF
|
|
DB 038H ; SVC #38
|
|
JR L1E59 ; 18 DF — loop back to XOR A at 0x1E59
|
|
; ---------------------------------------------------------------------------
|
|
; Subroutine at 0x1E7A: Ask "OK ? [Y/N]" and return Z if 'Y'
|
|
; ---------------------------------------------------------------------------
|
|
L1E7A: CALL 00164H ; CD 64 01
|
|
DB 059H ; inline param 'Y' for CALL 0164H
|
|
RET Z ; C8 — return if match
|
|
LD DE,01E8EH ; 11 8E 1E — DE → "OK ? [Y/N]" string
|
|
RST 018H ; DF
|
|
DB 005H ; SVC #5 — display string
|
|
LD A,001H ; 3E 01
|
|
RST 018H ; DF
|
|
DB 00DH ; SVC #0D — read key
|
|
CP 059H ; FE 59 — compare with 'Y'
|
|
RET Z ; C8 — return Z if 'Y'
|
|
JP 0017DH ; C3 7D 01 — jump to error/cancel handler
|
|
DB "OK ? [Y/N]",019H,000H ; Inline string at 0x1E8E
|
|
; ---------------------------------------------------------------------------
|
|
; L1E9D: Filename comparison — compares entry name (HL) with search name (DE).
|
|
; Skips ATRB byte in both, compares up to 17 chars, CR terminates/matches.
|
|
; ---------------------------------------------------------------------------
|
|
L1E9A: LD DE,01000H
|
|
L1E9D: CALL SKPDE ; Skip DE past device name
|
|
INC HL ; Skip ATRB byte in directory entry
|
|
INC DE ; Skip ATRB byte in search name
|
|
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,(TEXTED)
|
|
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,(TMPEND)
|
|
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,(TMPEND)
|
|
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,(MEMLMT)
|
|
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,L403E
|
|
LD HL,0C43EH
|
|
JP L0182
|
|
|
|
L1FAB: LD A,(L1FC0)
|
|
OR A
|
|
LD B,000H
|
|
CALL NZ,L1BA7
|
|
CALL L368D
|
|
CALL L38FA
|
|
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,KEYBUF
|
|
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,(ZRWX)
|
|
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,(ZTOP)
|
|
INC HL
|
|
RES 7,(HL)
|
|
JR L2ACF ; (+008H)
|
|
|
|
L2AC7: XOR A
|
|
LD B,A
|
|
LD HL,(ZTOP)
|
|
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,ELMD
|
|
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,ELMD
|
|
OR 0FFH
|
|
CALL L2B51
|
|
CALL L2E2A
|
|
LD HL,L2000
|
|
LD (HL),081H
|
|
PUSH HL
|
|
POP IY
|
|
LD HL,(ELMD20)
|
|
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,ELMD
|
|
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,01F97H
|
|
CALL L2E36
|
|
CALL 02F38H
|
|
LD A,(HL)
|
|
CP 081H
|
|
RET
|
|
|
|
L2B7A: LD A,009H
|
|
LD (ZRWX),A
|
|
L2B7F: CALL L2F6E
|
|
XOR B
|
|
DEC HL
|
|
LD A,(ZRWX)
|
|
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,(ZRWX)
|
|
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,ZRWX
|
|
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,(ZRWX)
|
|
BIT 0,A
|
|
RET NZ
|
|
BIT 2,A
|
|
JR NZ,L2C20 ; (+027H)
|
|
LD A,006H
|
|
CALL L2907
|
|
PUSH IY
|
|
POP HL
|
|
LD DE,ELMD
|
|
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,ELMD
|
|
CALL L2E24
|
|
XOR A
|
|
LD (ZLOG),A
|
|
LD IX,L2C9B
|
|
CALL L1C5F
|
|
XOR A
|
|
LD (ELMD),A
|
|
POP HL
|
|
L2C93: LD B,(HL)
|
|
LD IY,ELMD
|
|
JP L2D6A
|
|
|
|
L2C9B: INC HL
|
|
INC HL
|
|
INC HL
|
|
CALL L1E9A
|
|
JP Z,01F7CH
|
|
L2CA4: RET
|
|
|
|
L2CA5: DS 16, 000H
|
|
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,(ZEQT)
|
|
LD DE,$FD
|
|
CALL L2FC9
|
|
RET NZ
|
|
LD A,(ZCH)
|
|
EXX
|
|
LD H,A
|
|
LD D,000H
|
|
LD B,003H
|
|
EXX
|
|
XOR A
|
|
LD (ZLOG),A
|
|
L2D30: EXX
|
|
LD A,B
|
|
LD (ZCH),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 (ZCH),A
|
|
BIT 7,D
|
|
EXX
|
|
CALL Z,L368D
|
|
RET
|
|
|
|
L2D5C: EXX
|
|
LD DE,0FFFFH
|
|
EXX
|
|
RET
|
|
|
|
L2D62: LD A,(ZCH)
|
|
ADD A,090H
|
|
RST 018H
|
|
DB 029H
|
|
RET
|
|
|
|
L2D6A: LD (L2DCF),A
|
|
LD A,B
|
|
PUSH AF
|
|
EX DE,HL
|
|
LD HL,ELMD
|
|
CALL L2E24
|
|
CALL L2E36
|
|
POP AF
|
|
CP 005H
|
|
JR C,L2D88 ; (+00aH)
|
|
LD A,(ELMD18)
|
|
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,KEYBUF
|
|
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,KEYBUF
|
|
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,01F97H
|
|
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
|
|
L2FD4: CALL SKPDE
|
|
OR A
|
|
LD IX,(ZINP)
|
|
JR Z,L2FE2 ; (+004H)
|
|
LD IX,(ZOUT)
|
|
L2FE2: LD A,(ZCH)
|
|
JP IOCALL
|
|
|
|
L2FE8: CALL IOOUT
|
|
LD A,(L35B5)
|
|
OR A
|
|
RET M
|
|
CALL L2D62
|
|
RET C
|
|
JP L2E36
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; $CMT - Cassette Tape device descriptor (same format as $RFS, $FD, etc.)
|
|
; ---------------------------------------------------------------------------
|
|
$CMT: DW 03359H ; Next device = $RS
|
|
DB "CMT",000H ; Device name
|
|
DB 05FH ; flags1: bit5=0, bit6=1
|
|
L2FFE: DB 0C0H ; flags2 (bit 4 toggled by CMT handler)
|
|
DB 000H ; dirmx = 0
|
|
DW 03014H ; ZINIT
|
|
DW 03064H ; ZRO
|
|
DW 03022H ; ZWO
|
|
DW 000E5H ; ZCL (= NOP stub)
|
|
DW 00100H ; ZKL
|
|
DW 030AAH ; ZINP
|
|
DW 0305DH ; ZOUT
|
|
DW 01F97H ; ZDELT (= error handler)
|
|
DW 01F97H ; ZWDIR (= error handler)
|
|
DW 01F97H ; ZFREE (= error handler)
|
|
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,ELMD
|
|
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,0CCH
|
|
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 0CCH
|
|
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,0CCH
|
|
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,ELMD
|
|
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)
|
|
IF BUILD_RFS = 1
|
|
CALL RFS_LOAD_HOOK
|
|
NOP
|
|
NOP
|
|
NOP
|
|
ELSE
|
|
; Original SVC#30 data transfer (no RFS)
|
|
CALL L32CB
|
|
CALL L3174
|
|
NOP
|
|
ENDIF
|
|
DI
|
|
OUT (LSE4),A
|
|
CALL NC,L065B
|
|
CALL NC,L3274
|
|
JR L3101 ; (-073H)
|
|
|
|
L3174: CALL SKPDE
|
|
RST 018H
|
|
DB 010H
|
|
LD HL,MMIO
|
|
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 (MMIO),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,(SUMDT)
|
|
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 (SUMDT),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,(SUMDT)
|
|
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." ; CMT status strings (RECORD/PLAY)
|
|
L32C3: DB "PLAY",000H
|
|
L32C8: JP L076D
|
|
|
|
L32CB: DI
|
|
OUT (LSE2),A
|
|
CALL 0071AH
|
|
OUT (LSE0),A
|
|
RET
|
|
|
|
L32D4: CALL SKPDE
|
|
LD A,0C9H
|
|
LD (L32D4),A
|
|
LD HL,L0036
|
|
BIT 6,(HL)
|
|
RET Z
|
|
LD HL,L0767
|
|
LD (032C9H),HL
|
|
LD HL,L077A
|
|
LD (030FCH),HL
|
|
LD HL,00996H
|
|
LD (03192H),HL
|
|
LD HL,L0A01
|
|
LD (03212H),HL
|
|
LD HL,L0A1A
|
|
LD (03209H),HL
|
|
RET
|
|
|
|
L3301: LD A,(L0050)
|
|
OR A
|
|
RET NZ
|
|
RST 018H
|
|
DB 002H
|
|
RST 018H
|
|
DB 005H
|
|
PUSH HL
|
|
INC HL
|
|
LD A,022H
|
|
RST 018H
|
|
DB 003H
|
|
LD D,010H
|
|
L3312: LD A,(HL)
|
|
CP 00DH
|
|
JR Z,L331D ; (+006H)
|
|
RST 018H
|
|
DB 003H
|
|
INC HL
|
|
DEC D
|
|
JR NZ,L3312 ; (-00bH)
|
|
L331D: LD A,022H
|
|
RST 018H
|
|
DB 003H
|
|
RST 018H
|
|
DB 002H
|
|
POP HL
|
|
RET
|
|
|
|
L3325: DB 057H,005H,"RITING" ; CMT status strings (WRITING/FOUND/LOADING/VERIFYING)
|
|
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 ",006H
|
|
NOP
|
|
; ---------------------------------------------------------------------------
|
|
; $RS - RS-232C device descriptor
|
|
; flags1 bit7=1: ZWDIR/ZFREE not used, overlap with RS_INIT code below.
|
|
; ---------------------------------------------------------------------------
|
|
$RS: DW $FD ; Next device = $FD (0x358D)
|
|
DB "RS",000H,000H ; Device name
|
|
DB 08FH ; flags1: bit7=1 (no dir/free)
|
|
DB 001H ; flags2
|
|
DB 000H ; dirmx = 0
|
|
DW 03372H ; ZINIT
|
|
DW 033A4H ; ZRO
|
|
DW 033A4H ; ZWO (same handler as ZRO)
|
|
DW 033B5H ; ZCL
|
|
DW 033B5H ; ZKL (same handler as ZCL)
|
|
DW 033C6H ; ZINP
|
|
DW 033DBH ; ZOUT
|
|
DW 000E5H ; ZDELT (= monitor ROM stub)
|
|
; ZWDIR/ZFREE implicit — next 4 bytes are ZINIT code, read as DW pointers
|
|
; (flags1 bit 7=1 → ZWDIR/ZFREE never called)
|
|
RS_INIT: RET C
|
|
PUSH IY
|
|
CALL L33EC
|
|
CALL L3380
|
|
CALL L3435
|
|
JR L33D8 ; (+058H)
|
|
|
|
L3380: 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,(ZCH)
|
|
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 descriptor (original, restored)
|
|
$FD: DW $QD ; Next device = $QD
|
|
DB "FD",000H,000H ; Device name
|
|
DB 03FH ; ZFLAG1 (original, bit5=1 = ZINP-based DIR)
|
|
DB 003H ; ZFLAG2 (original)
|
|
DB 03FH ; ZDIRMX (original)
|
|
DW 0368DH ; func[0] ZINIT
|
|
DW 0000FH ; func[1] ZRO (original)
|
|
DW 00100H ; func[2] ZWO
|
|
DW 00030H ; func[3] ZCL
|
|
DW 000FEH ; func[4] ZKL
|
|
DW 03705H ; func[5] ZINP (original restored)
|
|
DW 03708H ; func[6] ZOUT
|
|
DW 01F97H ; func[7] ZDELT
|
|
DW 01F97H ; func[8] ZWDIR
|
|
DW 01F97H ; func[9] ZFREE
|
|
DB 000H
|
|
L35AB: DB 000H
|
|
L35AC: DB 000H
|
|
L35AD: DS 3, 000H
|
|
L35B0: DB 000H
|
|
L35B1: DS 2, 000H
|
|
L35B3: DB 000H
|
|
L35B4: DB 000H
|
|
L35B5: DB 000H
|
|
L35B6: DB 000H
|
|
L35B7: DS 4, 000H
|
|
L35BB: DS 4, 000H
|
|
L35BF: DB 000H
|
|
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 Device Descriptor (Quick Disk)
|
|
; ---------------------------------------------------------------------------
|
|
$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: bit5=1 ZINP-based DIR, bit6=1 ZRO enum
|
|
DB 040H ; flags2
|
|
DB 020H ; dirmx: 32 (max directory entries)
|
|
DW QDINIT ; ZINIT handler
|
|
DW QDRO ; ZRO handler
|
|
DW QDWO ; ZWO handler
|
|
DW QDCL ; ZCL handler
|
|
DW 00400H ; ZKL (constant)
|
|
DW QDINP ; ZINP handler
|
|
DW QDOUT ; ZOUT handler
|
|
DW 00000H ; ZDELT (not supported)
|
|
DW 00000H ; ZWDIR (not supported)
|
|
DW QDFREE ; ZFREE handler
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; QDFREE - Free space query (returns carry = not supported)
|
|
; ---------------------------------------------------------------------------
|
|
QDFREE: XOR A
|
|
SCF
|
|
RET
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; QDINIT - Quick Disk initialization
|
|
; ---------------------------------------------------------------------------
|
|
QDINIT: RET C
|
|
CALL TEST1
|
|
DB 059H ; Test for 'Y'
|
|
JR Z,L38D0 ; (+007H)
|
|
OR A
|
|
JP NZ,L1F6A
|
|
CALL L1E7A
|
|
L38D0: CALL L3924
|
|
RET C
|
|
RST 018H
|
|
DB 010H
|
|
LD C,002H
|
|
JR L3919 ; (+03fH)
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; QDCL - Quick Disk close
|
|
; ---------------------------------------------------------------------------
|
|
QDCL: OR A
|
|
JR NZ,L38FA ; (+01dH)
|
|
RST 018H
|
|
DB 010H
|
|
XOR A
|
|
LD (L395E),A
|
|
LD C,005H
|
|
CALL L38EB
|
|
LD BC,00001H
|
|
L38EB: LD (L3954),HL
|
|
LD (03956H),DE
|
|
LD HL,L3953
|
|
LD (HL),B
|
|
DEC HL
|
|
LD (HL),C
|
|
JR L3968 ; (+06eH)
|
|
|
|
L38FA: CALL SKPDE
|
|
LD C,006H
|
|
JR L3919 ; (+018H)
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; QDRO - Quick Disk read open (ZRO handler)
|
|
; ---------------------------------------------------------------------------
|
|
QDRO: LD BC,L0003
|
|
LD DE,00040H
|
|
CALL L38EB
|
|
RET NC
|
|
CP 028H
|
|
SCF
|
|
RET NZ
|
|
LD A,000H
|
|
RET
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; QDINP - Quick Disk input (ZINP handler)
|
|
; ---------------------------------------------------------------------------
|
|
QDINP: RST 018H
|
|
DB 010H
|
|
LD D,B
|
|
LD E,C
|
|
LD BC,00103H
|
|
L3919: CALL L38EB
|
|
RST 018H
|
|
DB 011H
|
|
RET
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; QDWO - Quick Disk write open (ZWO handler)
|
|
; ---------------------------------------------------------------------------
|
|
QDWO: LD A,037H
|
|
LD (L392C),A
|
|
L3924: LD BC,L0101
|
|
JR L38EB ; (-03eH)
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; QDOUT - Quick Disk output (ZOUT handler)
|
|
; ---------------------------------------------------------------------------
|
|
QDOUT: PUSH AF
|
|
RST 018H
|
|
DB 010H
|
|
L392C: XOR A
|
|
JR NC,L3943 ; (+014H)
|
|
LD A,0AFH
|
|
LD (L392C),A
|
|
CALL L1C2B
|
|
LD (L3958),HL
|
|
LD HL,ELMD
|
|
LD DE,00040H
|
|
POP AF
|
|
JR L3949 ; (+006H)
|
|
|
|
L3943: LD (L3958),HL
|
|
POP AF
|
|
SET 0,A
|
|
L3949: LD (0395AH),BC
|
|
LD B,A
|
|
LD C,004H
|
|
JR L3919 ; (-039H)
|
|
|
|
DB 000H
|
|
L3953: DB 000H
|
|
L3954: DS 4, 000H
|
|
L3958: DS 4, 000H
|
|
L395C: DB 000H
|
|
L395D: DB 000H
|
|
L395E: DB 000H
|
|
L395F: DB 000H
|
|
L3960: DB 000H
|
|
L3961: DB 000H
|
|
L3962: DB 000H
|
|
L3963: DB 000H
|
|
L3964: DB 000H
|
|
L3965: DS 3, 000H
|
|
L3968: LD A,005H
|
|
LD (L3964),A
|
|
L396D: DI
|
|
CALL L39BC
|
|
EI
|
|
RET NC
|
|
PUSH AF
|
|
CP 028H
|
|
JR Z,L39BA ; (+042H)
|
|
CALL L3C37
|
|
LD A,(03952H)
|
|
CP 004H
|
|
JR NZ,L399F ; (+01dH)
|
|
LD A,(L3960)
|
|
OR A
|
|
JR Z,L399F ; (+017H)
|
|
XOR A
|
|
LD (L3960),A
|
|
LD A,(L3961)
|
|
PUSH HL
|
|
LD (03966H),SP
|
|
POP HL
|
|
DI
|
|
CALL L3BB7
|
|
EI
|
|
JR C,L39B4 ; (+018H)
|
|
CALL L3C37
|
|
L399F: POP AF
|
|
PUSH AF
|
|
CP 029H
|
|
JR NZ,L39B4 ; (+00fH)
|
|
LD HL,L3964
|
|
DEC (HL)
|
|
JR Z,L39B4 ; (+009H)
|
|
POP AF
|
|
LD A,(L395F)
|
|
LD (L395E),A
|
|
JR L396D ; (-047H)
|
|
|
|
L39B4: CALL L3B29
|
|
CALL L39D5
|
|
L39BA: POP AF
|
|
RET
|
|
|
|
L39BC: LD (03966H),SP
|
|
LD A,(03952H)
|
|
DEC A
|
|
JR Z,L39DC ; (+016H)
|
|
DEC A
|
|
JR Z,L39E2 ; (+019H)
|
|
DEC A
|
|
JR Z,L3A2C ; (+060H)
|
|
DEC A
|
|
JP Z,L3A9C
|
|
DEC A
|
|
JR Z,L39D5 ; (+002H)
|
|
JR L3A25 ; (+050H)
|
|
|
|
L39D5: PUSH AF
|
|
XOR A
|
|
LD (L395C),A
|
|
POP AF
|
|
RET
|
|
|
|
L39DC: LD A,(L3953)
|
|
JP L3B8B
|
|
|
|
L39E2: XOR A
|
|
CALL L3BB7
|
|
CALL L3CB5
|
|
LD BC,0EFFFH
|
|
LD A,0AAH
|
|
L39EE: CPL
|
|
LD D,A
|
|
CALL L3D2C
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,L39FB ; (+003H)
|
|
LD A,D
|
|
JR L39EE ; (-00dH)
|
|
|
|
L39FB: CALL L3D02
|
|
CALL L3C37
|
|
CALL L3BEA
|
|
LD A,(L3962)
|
|
DEC A
|
|
JR NZ,L3A28 ; (+01eH)
|
|
CALL L3C4C
|
|
LD BC,0EFFFH
|
|
LD E,055H
|
|
L3A12: CP E
|
|
JR NZ,L3A28 ; (+013H)
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,L3A22 ; (+008H)
|
|
LD A,E
|
|
CPL
|
|
LD E,A
|
|
CALL L3D42
|
|
JR L3A12 ; (-010H)
|
|
|
|
L3A22: CALL L3D14
|
|
L3A25: JP L3C37
|
|
|
|
L3A28: LD A,029H
|
|
SCF
|
|
RET
|
|
|
|
L3A2C: LD A,(L3963)
|
|
OR A
|
|
CALL Z,L3BEA
|
|
CALL L3A62
|
|
RET C
|
|
CALL L3D87
|
|
CALL L3D42
|
|
LD C,A
|
|
L3A3E: CALL L3D42
|
|
LD B,A
|
|
LD HL,(03956H)
|
|
SBC HL,BC
|
|
JP C,L3B33
|
|
LD HL,(L3954)
|
|
L3A4D: CALL L3D42
|
|
LD (HL),A
|
|
INC HL
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR NZ,L3A4D ; (-00aH)
|
|
CALL L3D14
|
|
LD A,(L3953)
|
|
BIT 0,A
|
|
JR NZ,L3A25 ; (-03cH)
|
|
RET
|
|
|
|
L3A62: LD HL,L3962
|
|
DEC (HL)
|
|
JR Z,L3A98 ; (+030H)
|
|
CALL L3C4C
|
|
LD C,A
|
|
LD A,(L395C)
|
|
LD HL,L395D
|
|
CP (HL)
|
|
JR NZ,L3A95 ; (+020H)
|
|
INC A
|
|
LD (L395C),A
|
|
LD (HL),A
|
|
LD A,(L3953)
|
|
XOR C
|
|
RRA
|
|
RET NC
|
|
L3A80: CALL L3D42
|
|
LD C,A
|
|
CALL L3D42
|
|
LD B,A
|
|
L3A88: CALL L3D42
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR NZ,L3A88 ; (-008H)
|
|
CALL L3D14
|
|
JR L3A62 ; (-033H)
|
|
|
|
L3A95: INC (HL)
|
|
JR L3A80 ; (-018H)
|
|
|
|
L3A98: LD A,028H
|
|
SCF
|
|
RET
|
|
|
|
L3A9C: LD A,(L395E)
|
|
LD (L395F),A
|
|
LD A,(L3963)
|
|
OR A
|
|
JR NZ,L3ABF ; (+017H)
|
|
CALL L3BEA
|
|
LD A,(L395E)
|
|
LD HL,L3962
|
|
ADD A,(HL)
|
|
LD (L3962),A
|
|
INC A
|
|
LD (L395C),A
|
|
CALL L3A62
|
|
JP NC,L3B33
|
|
L3ABF: LD A,(L3953)
|
|
LD B,A
|
|
AND 001H
|
|
JR NZ,L3AD3 ; (+00cH)
|
|
LD DE,L3954
|
|
LD A,B
|
|
RES 2,A
|
|
CALL L3B3C
|
|
CALL L3D87
|
|
L3AD3: LD DE,L3958
|
|
LD A,(L3953)
|
|
SET 0,A
|
|
CALL L3B3C
|
|
CALL L3C37
|
|
CALL L3D87
|
|
LD A,(L3953)
|
|
AND 004H
|
|
JR Z,L3B37 ; (+04cH)
|
|
LD A,(L3961)
|
|
LD HL,L395E
|
|
ADD A,(HL)
|
|
CALL L3BB7
|
|
LD A,001H
|
|
LD (L3960),A
|
|
L3AFA: LD A,(L3961)
|
|
LD HL,L395F
|
|
ADD A,(HL)
|
|
INC A
|
|
LD (L3962),A
|
|
INC A
|
|
LD (L395C),A
|
|
CALL L3A62
|
|
JR NC,L3B33 ; (+025H)
|
|
LD A,(L3953)
|
|
AND 001H
|
|
JR NZ,L3B1C ; (+007H)
|
|
LD DE,L3954
|
|
CALL L3B6A
|
|
RET C
|
|
L3B1C: LD DE,L3958
|
|
CALL L3B6A
|
|
RET C
|
|
LD A,(L3960)
|
|
OR A
|
|
JR Z,L3B30 ; (+007H)
|
|
L3B29: XOR A
|
|
LD (L395E),A
|
|
LD (L3960),A
|
|
L3B30: JP L3C37
|
|
|
|
L3B33: LD A,029H
|
|
SCF
|
|
RET
|
|
|
|
L3B37: CALL L3BEA
|
|
JR L3AFA ; (-042H)
|
|
|
|
L3B3C: PUSH AF
|
|
LD HL,L395E
|
|
INC (HL)
|
|
CALL L3CB5
|
|
POP AF
|
|
CALL L3D2C
|
|
CALL L3B60
|
|
LD A,C
|
|
CALL L3D2C
|
|
LD A,B
|
|
CALL L3D2C
|
|
L3B53: LD A,(HL)
|
|
CALL L3D2C
|
|
INC HL
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR NZ,L3B53 ; (-00aH)
|
|
JP L3D02
|
|
|
|
L3B60: 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
|
|
|
|
L3B6A: CALL L3C4C
|
|
CALL L3B60
|
|
CALL L3D42
|
|
CP C
|
|
JR NZ,L3B33 ; (-043H)
|
|
CALL L3D42
|
|
CP B
|
|
JR NZ,L3B33 ; (-049H)
|
|
L3B7C: CALL L3D42
|
|
CP (HL)
|
|
JR NZ,L3B33 ; (-04fH)
|
|
INC HL
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR NZ,L3B7C ; (-00cH)
|
|
JP L3D14
|
|
|
|
L3B8B: LD B,A
|
|
LD A,002H
|
|
OUT (0F7H),A
|
|
LD A,081H
|
|
OUT (0F7H),A
|
|
LD A,002H
|
|
OUT (0F7H),A
|
|
IN A,(0F7H)
|
|
AND 0F0H
|
|
CP 080H
|
|
JP NZ,03D58H
|
|
LD A,010H
|
|
OUT (0F6H),A
|
|
IN A,(0F6H)
|
|
LD C,A
|
|
AND 008H
|
|
JP Z,03D58H
|
|
LD A,B
|
|
OR A
|
|
RET Z
|
|
LD A,C
|
|
AND 020H
|
|
RET NZ
|
|
JP 03D55H
|
|
|
|
L3BB7: PUSH AF
|
|
LD HL,03D7EH
|
|
LD B,009H
|
|
CALL L3C27
|
|
L3BC0: LD A,010H
|
|
OUT (0F6H),A
|
|
IN A,(0F6H)
|
|
AND 008H
|
|
JP Z,03D58H
|
|
LD A,010H
|
|
OUT (0F7H),A
|
|
IN A,(0F7H)
|
|
AND 008H
|
|
JR Z,L3BC0 ; (-015H)
|
|
LD BC,L00E9
|
|
CALL L3D66
|
|
CALL L3CEA
|
|
CALL L3CCE
|
|
POP AF
|
|
CALL L3D2C
|
|
CALL L3D02
|
|
JR L3C1D ; (+033H)
|
|
|
|
L3BEA: LD HL,L3D73
|
|
LD B,00BH
|
|
CALL L3C27
|
|
L3BF2: LD A,010H
|
|
OUT (0F6H),A
|
|
IN A,(0F6H)
|
|
AND 008H
|
|
JP Z,03D58H
|
|
CALL L3D87
|
|
LD A,010H
|
|
OUT (0F7H),A
|
|
IN A,(0F7H)
|
|
AND 008H
|
|
JR Z,L3BF2 ; (-018H)
|
|
LD BC,L00E9
|
|
CALL L3D66
|
|
CALL L3C62
|
|
LD (L3961),A
|
|
INC A
|
|
LD (L3962),A
|
|
CALL L3D14
|
|
L3C1D: LD HL,L3965
|
|
SET 3,(HL)
|
|
XOR A
|
|
LD (L395D),A
|
|
RET
|
|
|
|
L3C27: LD C,0F6H
|
|
OTIR
|
|
LD A,005H
|
|
LD (L3963),A
|
|
OUT (0F7H),A
|
|
LD A,080H
|
|
OUT (0F7H),A
|
|
RET
|
|
|
|
L3C37: PUSH AF
|
|
LD A,005H
|
|
OUT (0F6H),A
|
|
LD A,060H
|
|
OUT (0F6H),A
|
|
LD A,005H
|
|
OUT (0F7H),A
|
|
XOR A
|
|
LD (L3963),A
|
|
OUT (0F7H),A
|
|
POP AF
|
|
RET
|
|
|
|
L3C4C: LD A,058H
|
|
LD B,00BH
|
|
LD HL,L3D73
|
|
CALL L3CF3
|
|
LD HL,L3965
|
|
BIT 3,(HL)
|
|
LD BC,L0003
|
|
JR Z,L3C65 ; (+005H)
|
|
RES 3,(HL)
|
|
L3C62: LD BC,L00A0
|
|
L3C65: CALL L3D66
|
|
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
|
|
L3C7B: LD A,010H
|
|
OUT (0F6H),A
|
|
IN A,(0F6H)
|
|
AND 010H
|
|
JR Z,L3C8D ; (+008H)
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR NZ,L3C7B ; (-00fH)
|
|
JP 03D5EH
|
|
|
|
L3C8D: LD A,003H
|
|
OUT (0F6H),A
|
|
LD A,0C3H
|
|
OUT (0F6H),A
|
|
LD B,09FH
|
|
L3C97: LD A,010H
|
|
OUT (0F6H),A
|
|
IN A,(0F6H)
|
|
AND 001H
|
|
JR NZ,L3CA7 ; (+006H)
|
|
DEC B
|
|
JR NZ,L3C97 ; (-00dH)
|
|
JP 03D5EH
|
|
|
|
L3CA7: LD A,003H
|
|
OUT (0F6H),A
|
|
LD A,0C9H
|
|
OUT (0F6H),A
|
|
CALL L3D42
|
|
JP L3D42
|
|
|
|
L3CB5: LD A,098H
|
|
LD B,009H
|
|
LD HL,03D7EH
|
|
CALL L3CF3
|
|
CALL L3CEA
|
|
LD HL,L3965
|
|
BIT 3,(HL)
|
|
LD BC,0001DH
|
|
JR Z,L3CD1 ; (+005H)
|
|
RES 3,(HL)
|
|
L3CCE: LD BC,L0140
|
|
L3CD1: CALL L3D66
|
|
LD A,005H
|
|
OUT (0F6H),A
|
|
LD A,0EFH
|
|
OUT (0F6H),A
|
|
LD BC,00001H
|
|
CALL L3D66
|
|
LD A,0C0H
|
|
OUT (0F6H),A
|
|
LD A,0A5H
|
|
JR L3D2C ; (+042H)
|
|
|
|
L3CEA: LD A,005H
|
|
OUT (0F6H),A
|
|
LD A,0FFH
|
|
OUT (0F6H),A
|
|
RET
|
|
|
|
L3CF3: LD C,0F6H
|
|
OUT (C),A
|
|
LD A,005H
|
|
OUT (0F7H),A
|
|
L3CFB: LD A,080H
|
|
OUT (0F7H),A
|
|
OTIR
|
|
RET
|
|
|
|
L3D02: LD BC,00001H
|
|
CALL L3D66
|
|
LD A,010H
|
|
OUT (0F7H),A
|
|
IN A,(0F7H)
|
|
AND 008H
|
|
RET NZ
|
|
JP 03D5BH
|
|
|
|
L3D14: LD B,003H
|
|
L3D16: CALL L3D42
|
|
DJNZ L3D16 ; (-005H)
|
|
L3D1B: IN A,(0F6H)
|
|
RRCA
|
|
JR NC,L3D1B ; (-005H)
|
|
LD A,001H
|
|
OUT (0F6H),A
|
|
IN A,(0F6H)
|
|
AND 040H
|
|
JR NZ,L3D52 ; (+028H)
|
|
OR A
|
|
RET
|
|
|
|
L3D2C: PUSH AF
|
|
L3D2D: IN A,(0F6H)
|
|
AND 004H
|
|
JR Z,L3D2D ; (-006H)
|
|
POP AF
|
|
OUT (QDPC),A
|
|
L3D36: LD A,010H
|
|
OUT (0F6H),A
|
|
IN A,(0F6H)
|
|
AND 008H
|
|
JP Z,03D58H
|
|
RET
|
|
|
|
L3D42: CALL L3D36
|
|
IN A,(0F6H)
|
|
RLCA
|
|
JR C,L3D52 ; (+008H)
|
|
RRCA
|
|
RRCA
|
|
JR NC,L3D42 ; (-00cH)
|
|
IN A,(QDPC)
|
|
OR A
|
|
RET
|
|
|
|
L3D52: LD A,029H
|
|
LD HL,02E3EH
|
|
LD HL,0323EH
|
|
LD HL,L353E
|
|
LD HL,0363EH
|
|
LD SP,(03966H)
|
|
SCF
|
|
RET
|
|
|
|
L3D66: PUSH AF
|
|
L3D67: LD A,096H
|
|
L3D69: DEC A
|
|
JR NZ,L3D69 ; (-003H)
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR NZ,L3D67 ; (-00aH)
|
|
POP AF
|
|
RET
|
|
|
|
L3D73: LD E,B
|
|
INC B
|
|
DJNZ L3D7C ; (+005H)
|
|
INC B
|
|
INC BC
|
|
RET NC
|
|
LD B,016H
|
|
L3D7C: RLCA
|
|
LD D,098H
|
|
INC B
|
|
DJNZ 03D88H ; (+006H)
|
|
LD D,007H
|
|
LD D,005H
|
|
LD L,L
|
|
L3D87: LD A,0E8H
|
|
OUT (LSE3),A
|
|
LD (MMIO),A
|
|
NOP
|
|
LD A,(0E001H)
|
|
OUT (LSE1),A
|
|
AND 081H
|
|
RET NZ
|
|
CALL L3B29
|
|
JP L017B
|
|
|
|
PUSH HL
|
|
LD DE,(00188H)
|
|
PUSH DE
|
|
LD DE,L3DE4
|
|
LD (00188H),DE
|
|
LD A,(L004F)
|
|
PUSH AF
|
|
LD A,064H
|
|
LD (L004F),A
|
|
LD (03E5BH),SP
|
|
XOR A
|
|
LD (FILOUT),A
|
|
L3DBB: LD SP,L0000
|
|
L3DBE: LD BC,L3DBE
|
|
PUSH BC
|
|
RST 018H
|
|
DB 002H
|
|
LD A,02AH
|
|
RST 018H
|
|
DB 003H
|
|
L3DC8: CALL L3E67
|
|
JR NC,L3DC8 ; (-005H)
|
|
LD A,(DE)
|
|
CP 02AH
|
|
RET NZ
|
|
INC DE
|
|
LD A,(DE)
|
|
INC DE
|
|
EXX
|
|
LD HL,L3DF6
|
|
LD B,00AH
|
|
L3DDA: CP (HL)
|
|
INC HL
|
|
JR Z,L3DF0 ; (+012H)
|
|
INC HL
|
|
INC HL
|
|
DJNZ L3DDA ; (-008H)
|
|
EXX
|
|
RET
|
|
|
|
L3DE4: LD C,A
|
|
AND 07FH
|
|
JR Z,L3DBB ; (-02eH)
|
|
LD A,C
|
|
RST 018H
|
|
DB 01BH
|
|
RST 018H
|
|
DB 043H
|
|
JR L3DBB ; (-035H)
|
|
|
|
L3DF0: LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
PUSH DE
|
|
EXX
|
|
RET
|
|
|
|
L3DF6: LD B,H
|
|
CALL C,L4D3E
|
|
LD C,(HL)
|
|
CCF
|
|
LD D,B
|
|
INC D
|
|
LD A,047H
|
|
RST 010H
|
|
LD A,046H
|
|
LD (HL),D
|
|
CCF
|
|
LD D,D
|
|
L3E06: LD E,D
|
|
LD A,053H
|
|
DEC E
|
|
LD A,04CH
|
|
INC (HL)
|
|
LD A,056H
|
|
LD D,C
|
|
LD A,054H
|
|
JP NZ,03A3FH
|
|
SUB C
|
|
DJNZ L3E06 ; (-012H)
|
|
LD BC,09132H
|
|
DJNZ 03DE6H ; (-037H)
|
|
CALL L3FAB
|
|
RET C
|
|
EXX
|
|
CALL L3FD9
|
|
EXX
|
|
LD (ELMD20),BC
|
|
LD (ELMD22),DE
|
|
LD (ELMD24),HL
|
|
RST 018H
|
|
DB 031H
|
|
RET
|
|
|
|
CALL L3E88
|
|
PUSH HL
|
|
PUSH AF
|
|
CALL L3E46
|
|
POP AF
|
|
POP HL
|
|
JR NC,L3E43 ; (+003H)
|
|
LD HL,(ELMD22)
|
|
L3E43: RST 018H
|
|
DB 030H
|
|
RET
|
|
|
|
L3E46: CALL L3FD9
|
|
RST 018H
|
|
DB 02FH
|
|
CP 001H
|
|
RET Z
|
|
JP 01F9DH
|
|
|
|
CALL L3E46
|
|
LD HL,(ELMD22)
|
|
RST 018H
|
|
DB 032H
|
|
RET
|
|
|
|
LD SP,L0000
|
|
POP AF
|
|
LD (L004F),A
|
|
POP HL
|
|
LD (00188H),HL
|
|
POP HL
|
|
RET
|
|
|
|
L3E67: LD DE,0FF00H
|
|
RST 018H
|
|
DB 00CH
|
|
JR C,L3E86 ; (+018H)
|
|
LD A,(DE)
|
|
CP 03AH
|
|
SCF
|
|
RET NZ
|
|
INC DE
|
|
CALL L3E88
|
|
RET C
|
|
LD A,(DE)
|
|
INC DE
|
|
XOR 03DH
|
|
RET NZ
|
|
L3E7D: CALL L3EAD
|
|
CCF
|
|
RET NC
|
|
LD (HL),A
|
|
INC HL
|
|
JR L3E7D ; (-009H)
|
|
|
|
L3E86: LD (DE),A
|
|
RET
|
|
|
|
L3E88: PUSH HL
|
|
CALL L3EA2
|
|
PUSH DE
|
|
CALL L3EB4
|
|
JR C,L3E9D ; (+00bH)
|
|
LD H,A
|
|
CALL L3EB4
|
|
JR C,L3E9D ; (+005H)
|
|
LD L,A
|
|
POP AF
|
|
POP AF
|
|
XOR A
|
|
RET
|
|
|
|
L3E9D: POP DE
|
|
POP HL
|
|
SCF
|
|
RET
|
|
|
|
L3EA1: INC DE
|
|
L3EA2: LD A,(DE)
|
|
CP 020H
|
|
JR Z,L3EA1 ; (-006H)
|
|
RET
|
|
|
|
L3EA8: LD A,(DE)
|
|
RST 018H
|
|
DB 015H
|
|
INC DE
|
|
RET
|
|
|
|
L3EAD: CALL L3EA2
|
|
CP 03BH
|
|
JR Z,L3ED2 ; (+01eH)
|
|
L3EB4: PUSH BC
|
|
PUSH DE
|
|
CALL L3EA8
|
|
JR C,L3ECE ; (+013H)
|
|
LD C,A
|
|
CALL L3EA8
|
|
JR C,L3ECE ; (+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
|
|
|
|
L3ECE: POP DE
|
|
POP BC
|
|
SCF
|
|
RET
|
|
|
|
L3ED2: INC DE
|
|
LD A,(DE)
|
|
INC DE
|
|
OR A
|
|
RET
|
|
|
|
CALL L3E88
|
|
RET C
|
|
JP (HL)
|
|
|
|
CALL L3E88
|
|
JR C,L3EEC ; (+00bH)
|
|
PUSH HL
|
|
CALL L3E88
|
|
JR C,L3EEB ; (+004H)
|
|
POP DE
|
|
EX DE,HL
|
|
JR L3EF2 ; (+007H)
|
|
|
|
L3EEB: POP HL
|
|
L3EEC: EX DE,HL
|
|
LD HL,L0080
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
L3EF2: LD C,008H
|
|
CALL L3EFF
|
|
RET C
|
|
PUSH HL
|
|
SBC HL,DE
|
|
POP HL
|
|
RET NC
|
|
JR L3EF2 ; (-00dH)
|
|
|
|
L3EFF: CALL L3F27
|
|
LD B,C
|
|
PUSH HL
|
|
L3F04: LD A,(HL)
|
|
CALL L3F38
|
|
INC HL
|
|
LD A,020H
|
|
RST 018H
|
|
DB 009H
|
|
DJNZ L3F04 ; (-00bH)
|
|
POP HL
|
|
LD A,02FH
|
|
RST 018H
|
|
DB 009H
|
|
LD B,C
|
|
L3F15: LD A,(HL)
|
|
CP 020H
|
|
JR NC,L3F1C ; (+002H)
|
|
LD A,02EH
|
|
L3F1C: RST 018H
|
|
DB 009H
|
|
INC HL
|
|
DJNZ L3F15 ; (-00cH)
|
|
RST 018H
|
|
DB 008H
|
|
RST 018H
|
|
DB 00FH
|
|
OR A
|
|
RET
|
|
|
|
L3F27: LD A,03AH
|
|
RST 018H
|
|
DB 009H
|
|
LD A,H
|
|
CALL L3F38
|
|
LD A,L
|
|
CALL L3F38
|
|
LD A,03DH
|
|
RST 018H
|
|
DB 009H
|
|
RET
|
|
|
|
L3F38: PUSH AF
|
|
RLCA
|
|
RLCA
|
|
RLCA
|
|
RLCA
|
|
CALL L3F41
|
|
POP AF
|
|
L3F41: AND 00FH
|
|
ADD A,030H
|
|
CP 03AH
|
|
JR C,L3F4B ; (+002H)
|
|
ADD A,007H
|
|
L3F4B: RST 018H
|
|
DB 009H
|
|
RET
|
|
|
|
CALL L3E88
|
|
LD A,(FILOUT)
|
|
PUSH AF
|
|
XOR A
|
|
LD (FILOUT),A
|
|
L3F59: RST 018H
|
|
DB 002H
|
|
CALL L3F27
|
|
LD A,(HL)
|
|
CALL L3F38
|
|
LD A,014H
|
|
RST 018H
|
|
DB 003H
|
|
RST 018H
|
|
DB 003H
|
|
CALL L3E67
|
|
JR NC,L3F59 ; (-014H)
|
|
POP AF
|
|
LD (FILOUT),A
|
|
RET
|
|
|
|
CALL L3E88
|
|
RET C
|
|
PUSH HL
|
|
CALL L3E88
|
|
POP BC
|
|
RET C
|
|
PUSH HL
|
|
PUSH BC
|
|
LD HL,0FF00H
|
|
CALL L3E7D
|
|
LD DE,0FF00H
|
|
OR A
|
|
SBC HL,DE
|
|
LD C,L
|
|
POP HL
|
|
PUSH HL
|
|
EXX
|
|
POP HL
|
|
POP DE
|
|
EXX
|
|
RET Z
|
|
L3F92: CALL L3FEC
|
|
JR NZ,L3F9B ; (+004H)
|
|
CALL L3EFF
|
|
RET C
|
|
L3F9B: 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 L3F92 ; (-019H)
|
|
|
|
L3FAB: CALL L3E88
|
|
PUSH HL
|
|
CALL NC,L3E88
|
|
POP BC
|
|
RET C
|
|
SBC HL,BC
|
|
INC HL
|
|
PUSH HL
|
|
PUSH BC
|
|
CALL L3E88
|
|
PUSH HL
|
|
EXX
|
|
POP HL
|
|
POP DE
|
|
POP BC
|
|
RET
|
|
|
|
CALL L3FAB
|
|
RET C
|
|
EX DE,HL
|
|
PUSH HL
|
|
SBC HL,DE
|
|
POP HL
|
|
JR C,L3FD0 ; (+003H)
|
|
LDIR
|
|
RET
|
|
|
|
L3FD0: ADD HL,BC
|
|
DEC HL
|
|
EX DE,HL
|
|
ADD HL,BC
|
|
DEC HL
|
|
EX DE,HL
|
|
LDDR
|
|
RET
|
|
|
|
L3FD9: LD A,(DE)
|
|
OR A
|
|
JR Z,L3FE2 ; (+005H)
|
|
INC DE
|
|
CP 03AH
|
|
JR NZ,L3FD9 ; (-009H)
|
|
L3FE2: RST 018H
|
|
DB 017H
|
|
RST 018H
|
|
DB 02DH
|
|
LD A,001H
|
|
LD (ELMD),A
|
|
RET
|
|
|
|
L3FEC: LD A,(DE)
|
|
CP (HL)
|
|
RET NZ
|
|
PUSH BC
|
|
PUSH DE
|
|
PUSH HL
|
|
LD B,C
|
|
L3FF3: LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,L3FFC ; (+005H)
|
|
INC DE
|
|
INC HL
|
|
DJNZ L3FF3 ; (-008H)
|
|
XOR A
|
|
L3FFC: POP HL
|
|
POP DE
|
|
POP BC
|
|
RET
|
|
|
|
L4000:
|
|
IF BUILD_RFS = 1
|
|
LD HL,RFS_END ; TEXTST: moved past RFS module
|
|
ELSE
|
|
LD HL,085FFH ; TEXTST: original end of BASIC code
|
|
ENDIF
|
|
LD (TEXTST),HL
|
|
LD HL,L4046
|
|
LD (000E3H),HL
|
|
LD A,B
|
|
OR A
|
|
JR Z,L401B ; (+00bH)
|
|
LD HL,L4036
|
|
LD DE,L1361
|
|
LD BC,00010H
|
|
LDIR
|
|
L401B: LD DE,L84E7
|
|
RST 018H
|
|
DB 005H
|
|
IF BUILD_RFS = 1
|
|
JP MEMCLI_PATCH ; MEMCLI: call SVC 020H then set HL=RFS_END
|
|
ELSE
|
|
RST 018H ; Original: SVC 020H (boot beep + EI)
|
|
DB 020H
|
|
EX DE,HL ; HL = DE (original TEXTST)
|
|
ENDIF
|
|
L4023: LD (HL),000H
|
|
INC HL
|
|
LD A,H
|
|
CP 0FFH
|
|
JR C,L4023 ; (-008H)
|
|
L402B: CALL L4902
|
|
CALL L4914
|
|
CALL L5E1D
|
|
JR L404A ; (+014H)
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; Auto-run command string (16 bytes, copied into F-key slot at startup)
|
|
; L403E overlaps: referenced as "TO RUN"\r (suffix of "AUTO RUN"\r)
|
|
; ---------------------------------------------------------------------------
|
|
L4036: DB 00FH,"RUN ",022H ; Length (15) + 'RUN "'
|
|
L403E: DB "AUTO RUN",022H,00DH ; 'AUTO RUN"\r' (also read as 'TO RUN"\r' via L403E+2)
|
|
; ---------------------------------------------------------------------------
|
|
; Hook snippet installed at 0x00E3 — executed in-place as Z80 code
|
|
; ---------------------------------------------------------------------------
|
|
L4046: LD A,016H ; 3E 16
|
|
RST 018H ; DF
|
|
DB 003H ; SVC #3
|
|
L404A: LD HL,L4B85
|
|
LD (00188H),HL
|
|
L4050: RST 018H
|
|
DB 002H
|
|
LD DE,L4B72
|
|
RST 018H
|
|
DB 005H
|
|
RST 018H
|
|
DB 001H
|
|
L4059: LD A,(L4B78)
|
|
OR A
|
|
JR NZ,L406B ; (+00cH)
|
|
LD SP,(INTFAC)
|
|
LD HL,0FFFFH
|
|
PUSH HL
|
|
LD (08496H),SP
|
|
L406B: LD HL,L0000
|
|
LD (L8483),HL
|
|
XOR A
|
|
LD (L0050),A
|
|
CALL L48B1
|
|
RST 018H
|
|
DB 043H
|
|
LD DE,KEYBUF
|
|
RST 018H
|
|
DB 00CH
|
|
JR NC,L408D ; (+00cH)
|
|
L4081: LD HL,L48B0
|
|
LD A,(HL)
|
|
OR A
|
|
LD (HL),000H
|
|
JR NZ,L4050 ; (-03aH)
|
|
JR L4059 ; (-033H)
|
|
|
|
L408C: INC DE
|
|
L408D: LD A,(DE)
|
|
CP 020H
|
|
JR Z,L408C ; (-006H)
|
|
OR A
|
|
JR Z,L4059 ; (-03cH)
|
|
CALL L5EC4
|
|
JP NC,L473E
|
|
LD HL,L84E7
|
|
PUSH HL
|
|
CALL L66EF
|
|
INC HL
|
|
LD (L847D),HL
|
|
CALL L4952
|
|
POP HL
|
|
JR L40AF ; (+003H)
|
|
|
|
L40AC: CALL 05E48H
|
|
L40AF: LD (08496H),SP
|
|
L40B3: LD DE,L40AC
|
|
PUSH DE
|
|
L40B7: LD (L8498),HL
|
|
CALL BRKCHK
|
|
JP Z,0017DH
|
|
L40C0: LD A,(HL)
|
|
INC HL
|
|
CP 080H
|
|
JR NC,L411A ; (+054H)
|
|
CP 027H
|
|
JP Z,L4F8A
|
|
CP 020H
|
|
JR Z,L40C0 ; (-00fH)
|
|
CP 03AH
|
|
JR Z,L40B7 ; (-01cH)
|
|
OR A
|
|
JR Z,L40E1 ; (+00bH)
|
|
DEC HL
|
|
SUB 041H
|
|
CP 01AH
|
|
JP C,L4C99
|
|
JP L4AEC
|
|
|
|
L40E1: LD HL,(L847D)
|
|
L40E4: LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD A,D
|
|
OR E
|
|
JR Z,L4103 ; (+018H)
|
|
LD (L0050),A
|
|
EX DE,HL
|
|
ADD HL,DE
|
|
DEC HL
|
|
LD (L847D),HL
|
|
EX DE,HL
|
|
INC HL
|
|
CALL LDDEMI
|
|
LD (08483H),DE
|
|
CALL L4971
|
|
POP DE
|
|
JR L40AF ; (-054H)
|
|
|
|
L4103: POP HL
|
|
CALL L4146
|
|
JP Z,L4050
|
|
XOR A
|
|
LD (L4B78),A
|
|
LD A,(L8486)
|
|
CP 002H
|
|
JP Z,04B19H
|
|
PUSH HL
|
|
JP L484D
|
|
|
|
L411A: CP 0FFH
|
|
JP Z,L4CCB
|
|
LD DE,L44AC
|
|
CP 0FEH
|
|
JR NZ,L412A ; (+004H)
|
|
LD A,(HL)
|
|
INC HL
|
|
JR L4132 ; (+008H)
|
|
|
|
L412A: CP LSE0
|
|
JP NC,L4AEC
|
|
LD DE,L43EC
|
|
L4132: 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
|
|
L413E: CALL HLFTCH
|
|
L4141: OR A
|
|
RET Z
|
|
CP 03AH
|
|
RET
|
|
|
|
L4146: PUSH HL
|
|
LD HL,(L8483)
|
|
LD A,L
|
|
OR H
|
|
POP HL
|
|
RET
|
|
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
STMTWORDTBL: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 "RENU", "M" | 080H
|
|
DB "AUT", "O" | 080H
|
|
DB "EDI", "T" | 080H
|
|
L4193: 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 "RMOV", "E" | 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 "RMO", "V" | 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
|
|
EXTWORDTBL: DB 080H ; BASIC extended keyword text table
|
|
DB "SE", "T" | 080H
|
|
DB "RESE", "T" | 080H
|
|
DB "COLO", "R" | 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB "BEE", "P" | 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 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB "MUSI", "C" | 080H
|
|
DB "TEMP", "O" | 080H
|
|
DB "CURSO", "R" | 080H
|
|
DB "VERIF", "Y" | 080H
|
|
DB "CL", "R" | 080H
|
|
L433E: DB "LIMI", "T" | 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB 080H
|
|
DB "BOO", "T" | 080H
|
|
DB 0FFH
|
|
FUNCWORDTBL:DB "IN", "T" | 080H ; BASIC function keyword text table
|
|
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
|
|
DB "EO", "F" | 080H
|
|
DB "F", "N" | 080H
|
|
DB 0FFH
|
|
L43EC: DW L5147 ; Keyword dispatch address table
|
|
DW L50C2
|
|
DW L4AEC
|
|
DW L47FF
|
|
DW L5091
|
|
DW L5828
|
|
DW L4C38
|
|
DW 052C2H
|
|
DW L4AEC
|
|
DW L4999
|
|
DW L4A38
|
|
DW L485E
|
|
DW L48B9
|
|
DW L4D8E
|
|
DW L4E25
|
|
DW L561E
|
|
DW L4AEC
|
|
DW L575B
|
|
DW L4AEC
|
|
DW L515A
|
|
DW L4F8A
|
|
DW L5754
|
|
DW L76AC
|
|
DW L4F8A
|
|
DW L484D
|
|
DW L4BEA
|
|
DW L4C1B
|
|
DW L5537
|
|
DW L4AEC
|
|
DW L50EA
|
|
DW L4C99
|
|
DW L4922
|
|
DW L5024
|
|
DW L4AEC
|
|
DW L6A24
|
|
DW L6A87
|
|
DW L6E22
|
|
DW L6AD4
|
|
DW 06AD7H
|
|
DW 06ADAH
|
|
DW 06ADDH
|
|
DW L4959
|
|
DW L496C
|
|
DW L4FAB
|
|
DW L58CA
|
|
DW L4FEF
|
|
DW L6B3F
|
|
DW L6B71
|
|
DW L6B7B
|
|
DW L6B85
|
|
DW L53A9
|
|
DW L6BEA
|
|
DW L5986
|
|
DW L5C88
|
|
DW L59EA
|
|
DW L59D5
|
|
DW L5260
|
|
DW L52C0
|
|
DW L4F96
|
|
DW L6C2A
|
|
DW L6DF8
|
|
DW L6E03
|
|
DW L4F7A
|
|
DW L5D65
|
|
DW L4AEC
|
|
DW L4B7A
|
|
DW L517C
|
|
DW L4F30
|
|
DW L5258
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L5456
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4F8A
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW 058E2H
|
|
DW L5913
|
|
DW L58DF
|
|
DW 058E5H
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L5CE3
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L5D0A
|
|
DW 05914H
|
|
DW 05CD7H
|
|
DW L5CD5
|
|
DW L58D0
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
L44AC: DW L4AEC
|
|
DW L51EE
|
|
DW 051EFH
|
|
DW L54A6
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L5255
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L54FD
|
|
DW L551F
|
|
DW L4FC7
|
|
DW L5C71
|
|
DW L4928
|
|
DW L504D
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L52BA
|
|
L450A: DW L7E8B
|
|
DW L7E86
|
|
DW L7FD2
|
|
DW L7FC2
|
|
DW L80B1
|
|
DW L8320
|
|
DW L81FC
|
|
DW L7EE8
|
|
DW L81B7
|
|
DW L81A3
|
|
DW L7F06
|
|
DW L8169
|
|
DW L8314
|
|
DW L608D
|
|
DW L8181
|
|
DW L817C
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L792C
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L7237
|
|
DW L71F6
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L7219
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L7272
|
|
DW L727C
|
|
DW L7284
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L7180
|
|
DW L718E
|
|
DW L7164
|
|
DW L7176
|
|
DW L717B
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L7296
|
|
DW L72B3
|
|
DW L72D0
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L7326
|
|
DW L4AEC
|
|
DW L7245
|
|
DW L789F
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
DW L4AEC
|
|
L45AA: CALL TEST1
|
|
DB 00CH
|
|
JR NZ,L45B6 ; (+006H)
|
|
CALL LDDEMI
|
|
OR 0FFH
|
|
RET
|
|
|
|
L45B6: INC HL
|
|
CP 00BH
|
|
JR NZ,L45DA ; (+01fH)
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
INC HL
|
|
LD A,E
|
|
OR D
|
|
RET Z
|
|
EX DE,HL
|
|
CALL L4609
|
|
JP C,04B0DH
|
|
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 (L473D),A
|
|
RET
|
|
|
|
L45DA: CP 022H
|
|
JP NZ,L4AEC
|
|
LD (04650H),HL
|
|
LD B,000H
|
|
L45E4: LD A,(HL)
|
|
OR A
|
|
JR Z,L45F0 ; (+008H)
|
|
INC HL
|
|
CP 022H
|
|
JR Z,L45F0 ; (+003H)
|
|
INC B
|
|
JR L45E4 ; (-00cH)
|
|
|
|
L45F0: LD A,B
|
|
OR A
|
|
JP Z,L4AEC
|
|
LD (0464EH),A
|
|
EX DE,HL
|
|
CALL L4603
|
|
JP C,04B0DH
|
|
EX DE,HL
|
|
OR 0FFH
|
|
RET
|
|
|
|
L4603: PUSH BC
|
|
LD BC,L463C
|
|
JR L460D ; (+004H)
|
|
|
|
L4609: PUSH BC
|
|
LD BC,L4630
|
|
L460D: LD (04623H),BC
|
|
PUSH DE
|
|
EX DE,HL
|
|
LD HL,(TEXTST)
|
|
L4616: LD C,(HL)
|
|
INC HL
|
|
LD B,(HL)
|
|
LD A,B
|
|
OR C
|
|
SCF
|
|
JR Z,L462D ; (+00fH)
|
|
DEC HL
|
|
PUSH HL
|
|
ADD HL,BC
|
|
EX (SP),HL
|
|
CALL L0000
|
|
JR C,L462C ; (+005H)
|
|
JR Z,L462C ; (+003H)
|
|
POP HL
|
|
JR L4616 ; (-016H)
|
|
|
|
L462C: POP DE
|
|
L462D: POP DE
|
|
POP BC
|
|
RET
|
|
|
|
L4630: 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
|
|
|
|
L463C: PUSH HL
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
CALL TEST1
|
|
DB 0CAH
|
|
JR NZ,L4660 ; (+019H)
|
|
CALL TEST1
|
|
DB 022H
|
|
JR NZ,L4660 ; (+013H)
|
|
LD B,000H
|
|
LD DE,L0000
|
|
L4652: LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,L4660 ; (+00aH)
|
|
INC HL
|
|
INC DE
|
|
DJNZ L4652 ; (-008H)
|
|
LD A,(HL)
|
|
CP 022H
|
|
JR Z,L4660 ; (+001H)
|
|
OR A
|
|
L4660: SCF
|
|
CCF
|
|
POP HL
|
|
RET
|
|
|
|
L4664: LD DE,L0000
|
|
LD BC,0FFFFH
|
|
CALL L46A6
|
|
RET Z
|
|
CP 02DH
|
|
JR Z,L468E ; (+01cH)
|
|
CP 02EH
|
|
LD DE,(0847FH)
|
|
JR Z,L4681 ; (+007H)
|
|
CALL TESTX
|
|
DB 00BH
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
L4681: INC HL
|
|
CALL L46A6
|
|
JR Z,L468B ; (+004H)
|
|
CP 02DH
|
|
JR Z,L468E ; (+003H)
|
|
L468B: LD C,E
|
|
LD B,D
|
|
RET
|
|
|
|
L468E: INC HL
|
|
CALL L46A6
|
|
RET Z
|
|
CP 02EH
|
|
JR NZ,L469D ; (+006H)
|
|
LD BC,(0847FH)
|
|
INC HL
|
|
RET
|
|
|
|
L469D: CALL TESTX
|
|
DB 00BH
|
|
LD C,(HL)
|
|
INC HL
|
|
LD B,(HL)
|
|
INC HL
|
|
RET
|
|
|
|
L46A6: CALL L413E
|
|
RET Z
|
|
CP 02CH
|
|
RET
|
|
|
|
L46AD: CALL SKPDE
|
|
LD A,0FFH
|
|
LD (L473D),A
|
|
LD HL,L4703
|
|
JR L46CC ; (+012H)
|
|
|
|
L46BA: CALL SKPDE
|
|
CALL L4836
|
|
L46C0: LD A,(L473D)
|
|
OR A
|
|
RET Z
|
|
XOR A
|
|
LD (L473D),A
|
|
LD HL,L46E9
|
|
L46CC: LD (046E7H),HL
|
|
LD HL,(TEXTST)
|
|
DEC HL
|
|
L46D3: INC HL
|
|
LD A,(HL)
|
|
INC HL
|
|
OR (HL)
|
|
RET Z
|
|
INC HL
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD (04732H),DE
|
|
L46E0: CALL L51A2
|
|
OR A
|
|
JR Z,L46D3 ; (-013H)
|
|
JP L0000
|
|
|
|
L46E9: CP 00CH
|
|
JR NZ,L46E0 ; (-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 L46E0 ; (-023H)
|
|
|
|
L4703: CP 00BH
|
|
JR NZ,L46E0 ; (-027H)
|
|
DEC HL
|
|
PUSH HL
|
|
CALL INDRCT
|
|
LD E,L
|
|
LD D,H
|
|
LD A,L
|
|
OR H
|
|
JR Z,L4739 ; (+027H)
|
|
CALL L4609
|
|
JR C,L4722 ; (+00bH)
|
|
EX DE,HL
|
|
POP HL
|
|
DEC HL
|
|
LD (HL),00CH
|
|
INC HL
|
|
LD (HL),E
|
|
INC HL
|
|
LD (HL),D
|
|
JR L46E0 ; (-042H)
|
|
|
|
L4722: PUSH DE
|
|
LD A,010H
|
|
RST 018H
|
|
DB 01BH
|
|
LD A,020H
|
|
RST 018H
|
|
DB 003H
|
|
POP HL
|
|
CALL L5E66
|
|
RST 018H
|
|
DB 005H
|
|
LD HL,L0000
|
|
CALL L4B58
|
|
RST 018H
|
|
DB 002H
|
|
L4739: POP HL
|
|
INC HL
|
|
JR L46E0 ; (-05dH)
|
|
|
|
L473D: NOP
|
|
L473E: RST 018H
|
|
DB 028H
|
|
CALL L46BA
|
|
CALL L6A11
|
|
LD A,B
|
|
OR C
|
|
JP Z,L4059
|
|
LD (0847FH),BC
|
|
LD A,(DE)
|
|
CP 020H
|
|
JR NZ,L4755 ; (+001H)
|
|
INC DE
|
|
L4755: PUSH AF
|
|
LD HL,L84E7
|
|
CALL L66EF
|
|
PUSH HL
|
|
LD HL,(L847F)
|
|
LD E,L
|
|
LD D,H
|
|
CALL L49B9
|
|
POP HL
|
|
POP AF
|
|
OR A
|
|
JR Z,L477C ; (+012H)
|
|
LD DE,L84E7
|
|
OR A
|
|
SBC HL,DE
|
|
LD DE,00005H
|
|
ADD HL,DE
|
|
LD B,H
|
|
LD C,L
|
|
LD HL,L84E7
|
|
CALL L4794
|
|
L477C: LD A,(L48B0)
|
|
OR A
|
|
JP Z,L4059
|
|
LD DE,(08481H)
|
|
LD HL,(L847F)
|
|
ADD HL,DE
|
|
LD (L847F),HL
|
|
JP NC,L4059
|
|
JP L4081
|
|
|
|
L4794: LD (047F6H),HL
|
|
PUSH BC
|
|
LD BC,(0847FH)
|
|
LD HL,(TEXTST)
|
|
JR L47A5 ; (+004H)
|
|
|
|
L47A1: CALL LDDEMD
|
|
ADD HL,DE
|
|
L47A5: CALL LDDEMD
|
|
LD A,D
|
|
OR E
|
|
JR Z,L47B9 ; (+00dH)
|
|
INC HL
|
|
INC HL
|
|
CALL LDDEMD
|
|
EX DE,HL
|
|
SBC HL,BC
|
|
DEC DE
|
|
DEC DE
|
|
EX DE,HL
|
|
JR C,L47A1 ; (-018H)
|
|
L47B9: POP DE
|
|
PUSH HL
|
|
PUSH DE
|
|
LD HL,00028H
|
|
ADD HL,DE
|
|
LD BC,(VARED)
|
|
LD (TMPEND),BC
|
|
ADD HL,BC
|
|
JP C,L4B2C
|
|
EX DE,HL
|
|
CALL L74E8
|
|
POP DE
|
|
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,(0847FH)
|
|
LD (HL),E
|
|
INC HL
|
|
LD (HL),D
|
|
INC HL
|
|
EX DE,HL
|
|
LD HL,L84E7
|
|
DEC BC
|
|
DEC BC
|
|
DEC BC
|
|
DEC BC
|
|
LDIR
|
|
RET
|
|
|
|
L47FF: JR Z,L480A ; (+009H)
|
|
CALL L5176
|
|
JP Z,L5147
|
|
JP L5AED
|
|
|
|
L480A: CALL L4928
|
|
L480D: CALL L4821
|
|
LD DE,(TEXTST)
|
|
LD SP,(INTFAC)
|
|
LD HL,0FFFFH
|
|
PUSH HL
|
|
PUSH HL
|
|
EX DE,HL
|
|
JP L40E4
|
|
|
|
L4821: PUSH HL
|
|
PUSH DE
|
|
CALL L4836
|
|
XOR A
|
|
LD (L48B0),A
|
|
LD HL,0000AH
|
|
LD (L847F),HL
|
|
LD (L8481),HL
|
|
POP DE
|
|
POP HL
|
|
RET
|
|
|
|
L4836: CALL L5825
|
|
LD HL,L0000
|
|
LD (L8487),HL
|
|
XOR A
|
|
LD (L4B78),A
|
|
LD (L8486),A
|
|
LD (L8485),A
|
|
LD (L849A),A
|
|
RET
|
|
|
|
L484D: LD A,(L849A)
|
|
OR A
|
|
JP NZ,L5DCB
|
|
RST 018H
|
|
DB 028H
|
|
XOR A
|
|
LD (L4B78),A
|
|
POP BC
|
|
JP L4050
|
|
|
|
L485E: CALL L5C08
|
|
LD DE,0000AH
|
|
LD BC,0000AH
|
|
JR Z,L4897 ; (+02eH)
|
|
CP 02CH
|
|
JR NZ,L4878 ; (+00bH)
|
|
INC HL
|
|
CALL L6E5F
|
|
LD B,D
|
|
LD C,E
|
|
LD DE,0000AH
|
|
JR L4897 ; (+01fH)
|
|
|
|
L4878: CP 02EH
|
|
LD DE,(0847FH)
|
|
JR Z,L4889 ; (+009H)
|
|
CP 00BH
|
|
JP NZ,L4AEC
|
|
INC HL
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
L4889: INC HL
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR NZ,L4897 ; (+007H)
|
|
PUSH DE
|
|
CALL L6E5F
|
|
LD C,E
|
|
LD B,D
|
|
POP DE
|
|
L4897: CALL 05E48H
|
|
LD A,C
|
|
OR B
|
|
JP Z,04AF2H
|
|
LD (0847FH),DE
|
|
LD (08481H),BC
|
|
LD A,001H
|
|
LD (L48B0),A
|
|
POP AF
|
|
JP L4059
|
|
|
|
L48B0: NOP
|
|
L48B1: LD A,(L48B0)
|
|
OR A
|
|
RET Z
|
|
XOR A
|
|
JR L48BF ; (+006H)
|
|
|
|
L48B9: CALL L48BF
|
|
JP L4059
|
|
|
|
L48BF: LD DE,(0847FH)
|
|
CALL NZ,L4664
|
|
PUSH DE
|
|
EX DE,HL
|
|
CALL L4609
|
|
POP DE
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
JR NC,L48D5 ; (+003H)
|
|
LD HL,L00F9
|
|
L48D5: EX DE,HL
|
|
PUSH DE
|
|
LD (L847F),HL
|
|
CALL L5E66
|
|
RST 018H
|
|
DB 005H
|
|
LD A,020H
|
|
RST 018H
|
|
DB 003H
|
|
POP HL
|
|
LD DE,KEYBUF
|
|
PUSH DE
|
|
CALL L68E0
|
|
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 (MEMLMT),HL
|
|
DEC H
|
|
LD (INTFAC),HL
|
|
XOR A
|
|
LD (L849A),A
|
|
RET
|
|
|
|
L4914: LD HL,(TEXTST)
|
|
CALL L4952
|
|
LD (TEXTED),HL
|
|
CALL L4821
|
|
JR L4928 ; (+006H)
|
|
|
|
L4922: CALL L4914
|
|
JP L404A
|
|
|
|
L4928: PUSH HL
|
|
CALL L4939
|
|
POP HL
|
|
RST 018H
|
|
DB 028H
|
|
RET
|
|
|
|
L4930: LD HL,(TEXTST)
|
|
CALL L4952
|
|
LD (TEXTED),HL
|
|
L4939: LD HL,(TEXTED)
|
|
LD (HL),000H
|
|
INC HL
|
|
LD (VARST),HL
|
|
LD (HL),000H
|
|
INC HL
|
|
LD (STRST),HL
|
|
CALL L4952
|
|
LD (VARED),HL
|
|
LD (TMPEND),HL
|
|
RET
|
|
|
|
L4952: LD (HL),000H
|
|
INC HL
|
|
LD (HL),000H
|
|
INC HL
|
|
RET
|
|
|
|
L4959: CALL L413E
|
|
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 (FILOUT),A
|
|
JR Z,L4982 ; (+007H)
|
|
LD A,(PNMODE)
|
|
CP 002H
|
|
JR Z,L4994 ; (+012H)
|
|
L4982: PUSH HL
|
|
LD A,05BH
|
|
RST 018H
|
|
DB 009H
|
|
LD HL,(L8483)
|
|
CALL L5E66
|
|
RST 018H
|
|
DB 00BH
|
|
LD A,05DH
|
|
RST 018H
|
|
DB 009H
|
|
POP HL
|
|
L4994: XOR A
|
|
LD (FILOUT),A
|
|
RET
|
|
|
|
L4999: CALL L46A6
|
|
JP Z,L4AEC
|
|
CALL L5176
|
|
JR Z,L49AD ; (+009H)
|
|
CP 02DH
|
|
JR Z,L49AD ; (+005H)
|
|
CP 02EH
|
|
JP NZ,L5D02
|
|
L49AD: CALL L4664
|
|
EX DE,HL
|
|
LD E,C
|
|
LD D,B
|
|
CALL L49B9
|
|
JP L4050
|
|
|
|
L49B9: PUSH AF
|
|
PUSH BC
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL L46BA
|
|
LD C,L
|
|
LD B,H
|
|
LD HL,(TEXTST)
|
|
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 L6E5F
|
|
LD A,D
|
|
OR E
|
|
RET NZ
|
|
JP 04AF2H
|
|
|
|
L4A38: CALL L5C08
|
|
LD DE,0000AH
|
|
LD (04AB7H),DE
|
|
LD (04AC9H),DE
|
|
LD E,000H
|
|
LD (04AA6H),DE
|
|
JR Z,L4A81 ; (+033H)
|
|
CP 02CH
|
|
JR Z,L4A62 ; (+010H)
|
|
CALL L4A2F
|
|
LD (04AB7H),DE
|
|
CALL L413E
|
|
JR Z,L4A81 ; (+023H)
|
|
CALL L5E70
|
|
DEC HL
|
|
L4A62: CALL INCHLF
|
|
CP 02CH
|
|
JR Z,L4A79 ; (+010H)
|
|
CALL L4A2F
|
|
LD (04AA6H),DE
|
|
CALL L413E
|
|
JR Z,L4A81 ; (+00cH)
|
|
CALL L5E70
|
|
DEC HL
|
|
L4A79: INC HL
|
|
CALL L4A2F
|
|
LD (04AC9H),DE
|
|
L4A81: PUSH HL
|
|
LD HL,(04AA6H)
|
|
EX DE,HL
|
|
LD HL,(04AB7H)
|
|
OR A
|
|
SBC HL,DE
|
|
JP C,04AF2H
|
|
CALL L46AD
|
|
LD HL,(TEXTST)
|
|
L4A95: LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD A,D
|
|
OR E
|
|
JR Z,L4AD3 ; (+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,L4AB3 ; (+005H)
|
|
JR C,L4AB3 ; (+003H)
|
|
EX DE,HL
|
|
JR L4A95 ; (-01eH)
|
|
|
|
L4AB3: DEC HL
|
|
DEC HL
|
|
DEC HL
|
|
LD BC,L0000
|
|
L4AB9: LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD A,D
|
|
OR E
|
|
JR Z,L4AD3 ; (+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,L4AD8 ; (+00aH)
|
|
LD C,L
|
|
LD B,H
|
|
EX DE,HL
|
|
JR L4AB9 ; (-01aH)
|
|
|
|
L4AD3: CALL L46C0
|
|
POP HL
|
|
RET
|
|
|
|
L4AD8: LD HL,0000AH
|
|
LD (04AC9H),HL
|
|
LD (04AB7H),HL
|
|
LD L,000H
|
|
LD (04AA6H),HL
|
|
CALL L4A81
|
|
JP 04AF2H
|
|
|
|
L4AEC: 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,L403E
|
|
JR L4B3A ; (+00eH)
|
|
|
|
L4B2C: LD A,006H
|
|
L4B2E: LD SP,(INTFAC)
|
|
LD HL,0FFFFH
|
|
PUSH HL
|
|
LD (08496H),SP
|
|
L4B3A: JR L4B55 ; (+019H)
|
|
|
|
L4B3C: LD HL,(_LPT)
|
|
LD IX,(_CRT)
|
|
LD (ZEQT),HL
|
|
XOR A
|
|
LD (01051H),A
|
|
LD A,0C4H
|
|
LD HL,0BB3EH
|
|
LD HL,0BC3EH
|
|
LD HL,0BD3EH
|
|
L4B55: JP L0182
|
|
|
|
L4B58: LD A,L
|
|
OR H
|
|
RET Z
|
|
LD DE,L4B66
|
|
RST 018H
|
|
DB 005H
|
|
CALL L5E66
|
|
RST 018H
|
|
DB 005H
|
|
RET
|
|
|
|
L4B66: DB 020H,049H,04EH,020H,000H ; " IN \0" — error location text
|
|
L4B6B: DB 042H,005H ; "B\x05" — control prefix
|
|
DB 052H,045H,041H,04BH,000H ; "REAK\0" — BREAK message
|
|
L4B72: DB 052H,005H ; "R\x05" — control prefix
|
|
DB 045H,041H,044H,059H ; "EADY" — Ready prompt
|
|
L4B78: DB 000H ; NUL terminator
|
|
NOP
|
|
L4B7A: CALL L6E4B
|
|
DEC A
|
|
CP 046H
|
|
JR C,L4B84 ; (+002H)
|
|
LD A,044H
|
|
L4B84: INC A
|
|
L4B85: LD SP,(08496H)
|
|
PUSH AF
|
|
RST 018H
|
|
DB 043H
|
|
CALL L5C44
|
|
POP AF
|
|
OR A
|
|
JR Z,L4BE5 ; (+052H)
|
|
CP 080H
|
|
JR Z,L4BE3 ; (+04cH)
|
|
LD C,A
|
|
LD HL,L0000
|
|
LD (L7928),HL
|
|
CALL L4146
|
|
LD A,C
|
|
JR Z,L4BCE ; (+02aH)
|
|
LD HL,(L8483)
|
|
LD (L8487),HL
|
|
LD (L847F),HL
|
|
LD HL,(L847D)
|
|
LD (L8489),HL
|
|
LD HL,(L8498)
|
|
LD (L848B),HL
|
|
AND 07FH
|
|
LD (L8485),A
|
|
LD A,(L8486)
|
|
INC A
|
|
CP 002H
|
|
JR Z,L4BD9 ; (+013H)
|
|
XOR A
|
|
LD (L4B78),A
|
|
LD (L849A),A
|
|
LD A,C
|
|
L4BCE: RST 018H
|
|
DB 01BH
|
|
L4BD0: LD HL,(L8483)
|
|
CALL L4B58
|
|
JP L4050
|
|
|
|
L4BD9: LD (L8486),A
|
|
LD HL,(0848DH)
|
|
PUSH HL
|
|
JP L40E4
|
|
|
|
L4BE3: LD A,02EH
|
|
L4BE5: LD HL,(L8498)
|
|
JR L4BED ; (+003H)
|
|
|
|
L4BEA: LD A,02EH
|
|
POP DE
|
|
L4BED: PUSH AF
|
|
PUSH HL
|
|
RST 018H
|
|
DB 002H
|
|
RST 018H
|
|
DB 020H
|
|
LD DE,L4B6B
|
|
RST 018H
|
|
DB 005H
|
|
POP HL
|
|
CALL L4146
|
|
JR Z,L4C17 ; (+019H)
|
|
LD (04C33H),HL
|
|
LD HL,(L847D)
|
|
LD (04C2DH),HL
|
|
LD HL,(L8483)
|
|
LD (04C27H),HL
|
|
LD (L847F),HL
|
|
POP AF
|
|
LD (L4B78),A
|
|
JP L4BD0
|
|
|
|
L4C17: POP AF
|
|
JP L4050
|
|
|
|
L4C1B: POP DE
|
|
LD HL,L4B78
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,04B10H
|
|
LD (HL),000H
|
|
LD HL,L0000
|
|
LD (L8483),HL
|
|
LD HL,L0000
|
|
LD (L847D),HL
|
|
LD HL,L0000
|
|
JP L40AF
|
|
|
|
L4C38: LD A,(L8486)
|
|
CP 002H
|
|
JP C,04B1CH
|
|
DEC A
|
|
LD (L8486),A
|
|
CALL L413E
|
|
EX DE,HL
|
|
LD HL,(L8487)
|
|
LD (L8483),HL
|
|
LD HL,(L8489)
|
|
LD (L847D),HL
|
|
LD HL,(L848B)
|
|
JR NZ,L4C5D ; (+004H)
|
|
POP BC
|
|
JP L40B3
|
|
|
|
L4C5D: CP 08EH
|
|
JP Z,L4F8A
|
|
EX DE,HL
|
|
JP L5147
|
|
|
|
L4C66: CALL TEST1
|
|
DB 080H
|
|
JR Z,L4C74 ; (+008H)
|
|
CALL TESTX
|
|
DB 082H
|
|
CALL TESTX
|
|
DB LSE0
|
|
L4C74: CALL L45AA
|
|
JR Z,L4C83 ; (+00aH)
|
|
LD (0848DH),DE
|
|
LD A,001H
|
|
L4C7F: LD (L8486),A
|
|
RET
|
|
|
|
L4C83: LD A,(L8486)
|
|
DEC A
|
|
JR Z,L4C7F ; (-00aH)
|
|
XOR A
|
|
LD (L8486),A
|
|
LD HL,(L8487)
|
|
LD (L8483),HL
|
|
LD A,(L8485)
|
|
JP L4B85
|
|
|
|
L4C99: CALL TEST1
|
|
DB 0FFH
|
|
JP Z,L4CCB
|
|
CALL L7436
|
|
PUSH BC
|
|
PUSH BC
|
|
PUSH AF
|
|
CALL TESTX
|
|
DB QDPC
|
|
CALL L6E8A
|
|
POP BC
|
|
LD A,(L84CE)
|
|
CP B
|
|
JP NZ,04AF5H
|
|
EX (SP),HL
|
|
EX DE,HL
|
|
CP 005H
|
|
JR Z,L4CC3 ; (+008H)
|
|
PUSH BC
|
|
CALL L4CD6
|
|
POP AF
|
|
POP HL
|
|
POP BC
|
|
RET
|
|
|
|
L4CC3: LD C,A
|
|
LD B,000H
|
|
LDIR
|
|
POP HL
|
|
POP BC
|
|
RET
|
|
|
|
L4CCB: CALL TESTX
|
|
DB 0C4H
|
|
JP L73C2
|
|
|
|
L4CD2: PUSH DE
|
|
EX DE,HL
|
|
JR L4CDA ; (+004H)
|
|
|
|
L4CD6: PUSH DE
|
|
CALL L6E7E
|
|
L4CDA: LD HL,KEYBM1
|
|
LD (HL),A
|
|
LD B,A
|
|
LD C,A
|
|
INC HL
|
|
CALL LDHLDE
|
|
POP HL
|
|
LD A,(HL)
|
|
CP C
|
|
JR Z,L4D2B ; (+042H)
|
|
PUSH HL
|
|
OR A
|
|
CALL NZ,L4D3B
|
|
POP HL
|
|
LD A,(KEYBM1)
|
|
OR A
|
|
JR Z,L4D28 ; (+033H)
|
|
PUSH HL
|
|
LD BC,(VARST)
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
LD HL,(VARED)
|
|
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,KEYBM1
|
|
INC DE
|
|
CALL L74DC
|
|
CALL L4952
|
|
LD (TMPEND),HL
|
|
LD (VARED),HL
|
|
RET
|
|
|
|
L4D28: LD (HL),000H
|
|
RET
|
|
|
|
L4D2B: INC HL
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD HL,(STRST)
|
|
ADD HL,DE
|
|
LD DE,KEYBM1
|
|
LD B,C
|
|
INC DE
|
|
JP L74DC
|
|
|
|
L4D3B: LD C,(HL)
|
|
LD B,000H
|
|
L4D3E: INC BC
|
|
INC BC
|
|
INC HL
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD HL,(STRST)
|
|
ADD HL,DE
|
|
DEC HL
|
|
DEC HL
|
|
LD E,L
|
|
LD D,H
|
|
ADD HL,BC
|
|
PUSH BC
|
|
PUSH DE
|
|
EX DE,HL
|
|
LD HL,(VARED)
|
|
OR A
|
|
SBC HL,DE
|
|
LD C,L
|
|
LD B,H
|
|
EX DE,HL
|
|
POP DE
|
|
PUSH DE
|
|
JR Z,L4D5F ; (+002H)
|
|
LDIR
|
|
L4D5F: POP DE
|
|
POP BC
|
|
LD HL,(VARED)
|
|
OR A
|
|
SBC HL,BC
|
|
LD (VARED),HL
|
|
EX DE,HL
|
|
L4D6B: LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD A,D
|
|
OR E
|
|
RET Z
|
|
LD HL,(VARST)
|
|
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,(STRST)
|
|
ADD HL,DE
|
|
ADD HL,BC
|
|
POP BC
|
|
JR L4D6B ; (-023H)
|
|
|
|
L4D8E: POP BC
|
|
LD (04E23H),BC
|
|
CALL L4C99
|
|
LD IX,L0000
|
|
ADD IX,SP
|
|
LD (04E05H),HL
|
|
CALL L4EFE
|
|
LD (04E01H),BC
|
|
L4DA6: LD E,(IX+000H)
|
|
LD D,(IX+001H)
|
|
LD HL,0FF12H
|
|
OR A
|
|
SBC HL,DE
|
|
JR NZ,L4DCE ; (+01aH)
|
|
LD E,(IX+006H)
|
|
LD D,(IX+007H)
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,BC
|
|
JR Z,L4DC7 ; (+007H)
|
|
LD DE,L0012
|
|
ADD IX,DE
|
|
JR L4DA6 ; (-021H)
|
|
|
|
L4DC7: LD DE,00012H
|
|
|
|
ADD IX,DE
|
|
LD SP,IX
|
|
L4DCE: LD HL,(04E05H)
|
|
CALL TESTX
|
|
DB LSE0
|
|
CALL L6E8A
|
|
PUSH AF
|
|
PUSH HL
|
|
EX DE,HL
|
|
LD DE,L4F0A
|
|
CALL L5E93
|
|
POP HL
|
|
POP AF
|
|
CP LSE1
|
|
LD DE,L6112
|
|
JR NZ,L4DEE ; (+004H)
|
|
INC HL
|
|
CALL L6E8A
|
|
L4DEE: LD (04E05H),HL
|
|
LD HL,0FFF6H
|
|
ADD HL,SP
|
|
LD SP,HL
|
|
EX DE,HL
|
|
CALL L5E93
|
|
LD HL,L4F0A
|
|
CALL L5E93
|
|
LD HL,L0000
|
|
PUSH HL
|
|
LD HL,L0000
|
|
PUSH HL
|
|
LD HL,(L847D)
|
|
PUSH HL
|
|
LD HL,0FF12H
|
|
PUSH HL
|
|
LD HL,0FE00H
|
|
ADD HL,SP
|
|
LD DE,(TMPEND)
|
|
SBC HL,DE
|
|
LD A,00BH
|
|
JP C,L4B2E
|
|
LD HL,(04E05H)
|
|
JP L0000
|
|
|
|
L4E25: LD A,005H
|
|
LD (L84CE),A
|
|
POP BC
|
|
LD (04E9AH),BC
|
|
L4E2F: PUSH AF
|
|
POP BC
|
|
LD (04E05H),HL
|
|
LD IX,L0000
|
|
ADD IX,SP
|
|
LD (04E89H),IX
|
|
LD E,(IX+000H)
|
|
LD D,(IX+001H)
|
|
LD HL,0FF12H
|
|
OR A
|
|
SBC HL,DE
|
|
JP NZ,04B04H
|
|
PUSH BC
|
|
POP AF
|
|
JR NZ,L4EB0 ; (+05fH)
|
|
LD E,(IX+004H)
|
|
LD D,(IX+005H)
|
|
EX DE,HL
|
|
LD (04E97H),HL
|
|
LD E,(IX+006H)
|
|
LD D,(IX+007H)
|
|
LD HL,(VARST)
|
|
ADD HL,DE
|
|
LD BC,00008H
|
|
ADD IX,BC
|
|
PUSH IX
|
|
POP DE
|
|
CALL L7985
|
|
INC DE
|
|
LD A,(DE)
|
|
LD IX,(04E89H)
|
|
LD DE,0000DH
|
|
ADD IX,DE
|
|
PUSH IX
|
|
POP DE
|
|
BIT 7,A
|
|
JR NZ,L4E83 ; (+001H)
|
|
EX DE,HL
|
|
L4E83: CALL L7A1C
|
|
JR C,L4E9C ; (+014H)
|
|
LD SP,L0000
|
|
LD HL,00002H
|
|
ADD HL,SP
|
|
LD A,(HL)
|
|
INC HL
|
|
LD H,(HL)
|
|
LD L,A
|
|
LD (L847D),HL
|
|
LD HL,L0000
|
|
L4E99: JP L0000
|
|
|
|
L4E9C: LD DE,L0012
|
|
LD HL,(04E89H)
|
|
ADD HL,DE
|
|
LD SP,HL
|
|
LD HL,(04E05H)
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR NZ,L4E99 ; (-014H)
|
|
LD (04E05H),HL
|
|
L4EB0: LD IX,L0000
|
|
ADD IX,SP
|
|
LD (04E89H),IX
|
|
LD HL,(04E05H)
|
|
CALL TEST1
|
|
DB 02CH
|
|
JP Z,L4E2F
|
|
CALL L7436
|
|
LD (04E05H),HL
|
|
CALL L4EFE
|
|
LD IX,(04E89H)
|
|
L4ED1: LD E,(IX+000H)
|
|
LD D,(IX+001H)
|
|
LD HL,0FF12H
|
|
OR A
|
|
SBC HL,DE
|
|
JP NZ,04B04H
|
|
LD L,(IX+006H)
|
|
LD H,(IX+007H)
|
|
OR A
|
|
SBC HL,BC
|
|
LD HL,(04E05H)
|
|
JP Z,L4E2F
|
|
LD DE,L0012
|
|
ADD IX,DE
|
|
LD (04E89H),IX
|
|
LD SP,(04E89H)
|
|
JR L4ED1 ; (-02dH)
|
|
|
|
L4EFE: LD H,B
|
|
LD L,C
|
|
LD BC,(VARST)
|
|
OR A
|
|
SBC HL,BC
|
|
LD B,H
|
|
LD C,L
|
|
RET
|
|
|
|
L4F0A: NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
L4F13: CALL L51A2
|
|
OR A
|
|
RET NZ
|
|
INC HL
|
|
PUSH DE
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD A,D
|
|
OR E
|
|
INC HL
|
|
LD (04F12H),DE
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD (04F10H),DE
|
|
POP DE
|
|
SCF
|
|
RET Z
|
|
JR L4F13 ; (-01dH)
|
|
|
|
L4F30: CALL L5E7B
|
|
CALL L6E5F
|
|
LD (04F69H),DE
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR NZ,L4F5B ; (+01bH)
|
|
CALL L6E8A
|
|
CALL L7916
|
|
LD (04F5EH),DE
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR NZ,L4F5B ; (+00bH)
|
|
CALL L7436
|
|
CALL L7916
|
|
LD (04F71H),BC
|
|
XOR A
|
|
L4F5B: PUSH HL
|
|
PUSH AF
|
|
LD HL,L0000
|
|
CALL L6E7E
|
|
LD IX,L0182
|
|
XOR A
|
|
CALL L0000
|
|
POP AF
|
|
JR NZ,L4F76 ; (+008H)
|
|
LD A,B
|
|
EX DE,HL
|
|
LD DE,L0000
|
|
CALL L4CD2
|
|
L4F76: POP HL
|
|
JP L5E7F
|
|
|
|
L4F7A: CALL L6E5F
|
|
L4F7D: LD A,D
|
|
OR E
|
|
RET Z
|
|
LD B,000H
|
|
L4F82: DJNZ L4F82 ; (-002H)
|
|
RST 018H
|
|
DB 00EH
|
|
RET Z
|
|
DEC DE
|
|
JR L4F7D ; (-00dH)
|
|
|
|
L4F8A: DEC HL
|
|
L4F8B: CALL L51A2
|
|
OR A
|
|
SCF
|
|
RET Z
|
|
CP 03AH
|
|
RET Z
|
|
JR L4F8B ; (-00bH)
|
|
|
|
L4F96: CALL L6E4B
|
|
SUB LSE0
|
|
CP 007H
|
|
JP C,04AF2H
|
|
CALL L5E70
|
|
PUSH DE
|
|
CALL L6E4B
|
|
POP BC
|
|
OUT (C),A
|
|
RET
|
|
|
|
L4FAB: CALL L6E4B
|
|
CALL L5E70
|
|
PUSH DE
|
|
CALL L7436
|
|
CP 005H
|
|
JP NZ,04AF5H
|
|
EX (SP),HL
|
|
PUSH BC
|
|
EX (SP),HL
|
|
POP BC
|
|
IN E,(C)
|
|
LD D,000H
|
|
CALL L5E99
|
|
POP HL
|
|
RET
|
|
|
|
L4FC7: CALL L4FCF
|
|
LD (00054H),DE
|
|
RET
|
|
|
|
L4FCF: LD B,018H
|
|
LD C,027H
|
|
CALL L4FDA
|
|
JP C,04AF2H
|
|
RET
|
|
|
|
L4FDA: PUSH BC
|
|
CALL L6E4B
|
|
PUSH AF
|
|
CALL L5E70
|
|
CALL L6E4B
|
|
LD D,E
|
|
POP AF
|
|
LD E,A
|
|
POP BC
|
|
LD A,C
|
|
CP E
|
|
RET C
|
|
LD A,B
|
|
CP D
|
|
RET
|
|
|
|
L4FEF: CALL L7436
|
|
LD (L84CE),A
|
|
CP 005H
|
|
JR Z,L500E ; (+015H)
|
|
PUSH HL
|
|
PUSH BC
|
|
LD A,0FFH
|
|
RST 018H
|
|
DB 00DH
|
|
OR A
|
|
JR Z,L5008 ; (+006H)
|
|
LD HL,(TMPEND)
|
|
LD (HL),A
|
|
LD A,001H
|
|
L5008: POP DE
|
|
CALL L4CD2
|
|
POP HL
|
|
RET
|
|
|
|
L500E: PUSH HL
|
|
PUSH BC
|
|
LD A,0FFH
|
|
RST 018H
|
|
DB 00DH
|
|
SUB 030H
|
|
CP 00AH
|
|
JR C,L501B ; (+001H)
|
|
XOR A
|
|
L501B: LD E,A
|
|
LD D,000H
|
|
POP HL
|
|
CALL L5E99
|
|
POP HL
|
|
RET
|
|
|
|
L5024: CP 040H
|
|
LD BC,POPRA
|
|
JR NZ,L502F ; (+004H)
|
|
INC HL
|
|
LD BC,L504B
|
|
L502F: LD (05040H),BC
|
|
CALL L6E5F
|
|
CALL L5E73
|
|
L5039: PUSH DE
|
|
CALL L6E4B
|
|
POP DE
|
|
EX DE,HL
|
|
CALL POPRA
|
|
EX DE,HL
|
|
INC DE
|
|
CALL TEST1
|
|
DB 02CH
|
|
RET NZ
|
|
JR L5039 ; (-012H)
|
|
|
|
L504B: LD (HL),A
|
|
RET
|
|
|
|
L504D: PUSH HL
|
|
CALL TEST1
|
|
DB 04DH
|
|
JR NZ,L5066 ; (+012H)
|
|
CALL TEST1
|
|
DB 041H
|
|
JR NZ,L5066 ; (+00cH)
|
|
CALL TEST1
|
|
DB 058H
|
|
JR NZ,L5066 ; (+006H)
|
|
EX (SP),HL
|
|
LD HL,(MEMMAX)
|
|
JR L5082 ; (+01cH)
|
|
|
|
L5066: POP HL
|
|
CALL L6E5F
|
|
PUSH HL
|
|
LD HL,(MEMMAX)
|
|
OR A
|
|
SBC HL,DE
|
|
JP C,L4B2C
|
|
LD HL,(TMPEND)
|
|
INC H
|
|
INC H
|
|
INC H
|
|
INC H
|
|
OR A
|
|
SBC HL,DE
|
|
JP NC,04AF2H
|
|
EX DE,HL
|
|
L5082: CALL L4902
|
|
POP HL
|
|
POP DE
|
|
LD SP,(INTFAC)
|
|
LD BC,0FFFFH
|
|
PUSH BC
|
|
PUSH DE
|
|
RET
|
|
|
|
L5091: POP IX
|
|
L5093: POP BC
|
|
PUSH BC
|
|
LD A,B
|
|
INC A
|
|
JP NZ,04B07H
|
|
LD A,C
|
|
CP 012H
|
|
JR Z,L50B9 ; (+01aH)
|
|
CP 0FEH
|
|
JP NZ,04B07H
|
|
POP BC
|
|
CALL L413E
|
|
EX DE,HL
|
|
POP HL
|
|
LD (L8483),HL
|
|
POP HL
|
|
LD (L847D),HL
|
|
POP HL
|
|
PUSH IX
|
|
RET Z
|
|
EX DE,HL
|
|
JP L5147
|
|
|
|
L50B9: EX DE,HL
|
|
LD HL,L0012
|
|
ADD HL,SP
|
|
LD SP,HL
|
|
EX DE,HL
|
|
JR L5093 ; (-02fH)
|
|
|
|
L50C2: PUSH HL
|
|
CALL L4F8A
|
|
EX DE,HL
|
|
POP HL
|
|
POP BC
|
|
PUSH DE
|
|
EXX
|
|
LD HL,(L847D)
|
|
PUSH HL
|
|
LD HL,(L8483)
|
|
PUSH HL
|
|
LD HL,0FFFEH
|
|
PUSH HL
|
|
LD HL,0FE00H
|
|
ADD HL,SP
|
|
LD DE,(TMPEND)
|
|
SBC HL,DE
|
|
LD A,00AH
|
|
JP C,L4B2E
|
|
EXX
|
|
PUSH BC
|
|
JR L5147 ; (+05dH)
|
|
|
|
L50EA: CALL TEST1
|
|
DB 0C1H
|
|
JP Z,L4C66
|
|
CALL L6E5F
|
|
LD C,E
|
|
LD B,D
|
|
CP 087H
|
|
JP NC,L4AEC
|
|
CP 082H
|
|
JR NZ,L510F ; (+010H)
|
|
CALL INCHLF
|
|
LD E,081H
|
|
CP LSE4
|
|
JR Z,L510E ; (+006H)
|
|
CP LSE0
|
|
JP NZ,L4AEC
|
|
DEC E
|
|
L510E: LD A,E
|
|
L510F: PUSH HL
|
|
LD HL,L43EC
|
|
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,L5143 ; (+020H)
|
|
LD A,C
|
|
OR A
|
|
JR Z,L5143 ; (+01cH)
|
|
LD B,A
|
|
L5128: DEC B
|
|
RET Z
|
|
CALL HLFTCH
|
|
CALL L5173
|
|
JP NZ,L4AEC
|
|
CALL L51A8
|
|
OR A
|
|
RET Z
|
|
INC HL
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR Z,L5128 ; (-017H)
|
|
POP DE
|
|
JP 05E48H
|
|
|
|
L5143: POP DE
|
|
JP L4F8A
|
|
|
|
L5147: CALL L45AA
|
|
EX DE,HL
|
|
JR NZ,L5150 ; (+003H)
|
|
LD HL,(TEXTST)
|
|
L5150: LD (L847D),HL
|
|
XOR A
|
|
LD (L4B78),A
|
|
JP L40E4
|
|
|
|
L515A: CALL L6E8A
|
|
EX AF,AF'
|
|
LD A,(DE)
|
|
OR A
|
|
JR Z,L5182 ; (+020H)
|
|
EX AF,AF'
|
|
CP LSE2
|
|
JR NZ,L516F ; (+008H)
|
|
L5167: CALL INCHLF
|
|
CALL L5173
|
|
JR Z,L5147 ; (-028H)
|
|
L516F: POP AF
|
|
JP L40AF
|
|
|
|
L5173: CP 022H
|
|
RET Z
|
|
L5176: CP 00BH
|
|
RET Z
|
|
CP 00CH
|
|
RET
|
|
|
|
L517C: CALL L518B
|
|
JR NC,L517C ; (-005H)
|
|
RET
|
|
|
|
L5182: DEC HL
|
|
CALL L518B
|
|
JR NC,L5167 ; (-021H)
|
|
DB 0C3H
|
|
POP HL
|
|
LD B,B
|
|
L518B: CALL L51A2
|
|
OR A
|
|
SCF
|
|
RET Z
|
|
CP 0C2H
|
|
RET Z
|
|
CP 093H
|
|
JR NZ,L518B ; (-00dH)
|
|
CALL L518B
|
|
RET C
|
|
JR L518B ; (-013H)
|
|
|
|
L519E: INC HL
|
|
LD A,(HL)
|
|
JR L51A8 ; (+006H)
|
|
|
|
L51A2: INC HL
|
|
LD A,(HL)
|
|
CP 094H
|
|
JR Z,L51C7 ; (+01fH)
|
|
L51A8: OR A
|
|
RET Z
|
|
CP 022H
|
|
JR Z,L51E5 ; (+037H)
|
|
CP 0FEH
|
|
JR NC,L51C5 ; (+013H)
|
|
CP 097H
|
|
JR Z,L51C7 ; (+011H)
|
|
CP 027H
|
|
JR Z,L51C7 ; (+00dH)
|
|
CP 020H
|
|
RET NC
|
|
CP 00BH
|
|
RET C
|
|
CP 015H
|
|
JR NC,L51DC ; (+018H)
|
|
INC HL
|
|
L51C5: INC HL
|
|
RET
|
|
|
|
L51C7: LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
CP 03AH
|
|
RET Z
|
|
CP 022H
|
|
JR Z,L51D4 ; (+003H)
|
|
INC HL
|
|
JR L51C7 ; (-00dH)
|
|
|
|
L51D4: CALL L51E5
|
|
OR A
|
|
RET Z
|
|
INC HL
|
|
JR L51C7 ; (-015H)
|
|
|
|
L51DC: AND 00FH
|
|
ADD A,L
|
|
LD L,A
|
|
LD A,020H
|
|
RET NC
|
|
INC H
|
|
RET
|
|
|
|
L51E5: INC HL
|
|
LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
CP 022H
|
|
RET Z
|
|
JR L51E5 ; (-009H)
|
|
|
|
L51EE: OR 0AFH
|
|
PUSH AF
|
|
LD B,031H
|
|
LD C,04FH
|
|
CALL L4FDA
|
|
PUSH AF
|
|
CALL L523F
|
|
POP AF
|
|
JR C,L523D ; (+03eH)
|
|
LD A,C
|
|
LD (0522BH),A
|
|
LD B,001H
|
|
SRL E
|
|
JR NC,L520B ; (+002H)
|
|
SLA B
|
|
L520B: SRL D
|
|
JR NC,L5213 ; (+004H)
|
|
SLA B
|
|
SLA B
|
|
L5213: EX DE,HL
|
|
RST 018H
|
|
DB 01EH
|
|
CALL BREAKX
|
|
CP 0F0H
|
|
JR NC,L521F ; (+002H)
|
|
LD A,0F0H
|
|
L521F: LD C,A
|
|
POP AF
|
|
JR Z,L5235 ; (+012H)
|
|
SET 3,H
|
|
CALL BREAKX
|
|
AND 08FH
|
|
OR 000H
|
|
CALL POPRA
|
|
RES 3,H
|
|
LD A,C
|
|
OR B
|
|
JR L5238 ; (+003H)
|
|
|
|
L5235: LD A,B
|
|
CPL
|
|
AND C
|
|
L5238: CALL POPRA
|
|
EX DE,HL
|
|
RET
|
|
|
|
L523D: POP AF
|
|
RET
|
|
|
|
L523F: LD A,(L005D)
|
|
AND 070H
|
|
LD C,A
|
|
CALL TEST1
|
|
DB 02CH
|
|
RET NZ
|
|
PUSH DE
|
|
CALL L552C
|
|
POP DE
|
|
RLCA
|
|
RLCA
|
|
RLCA
|
|
RLCA
|
|
LD C,A
|
|
RET
|
|
|
|
L5255: RST 018H
|
|
DB 020H
|
|
RET
|
|
|
|
L5258: CALL 05E48H
|
|
RST 018H
|
|
DB 028H
|
|
RST 018H
|
|
DB 000H
|
|
RET
|
|
|
|
L5260: JR Z,L5285 ; (+023H)
|
|
LD A,001H
|
|
LD (L004E),A
|
|
LD A,(L0056)
|
|
LD B,019H
|
|
CALL L5298
|
|
LD (00056H),BC
|
|
CALL TEST1
|
|
DB 02CH
|
|
RET NZ
|
|
LD B,028H
|
|
LD A,(L005B)
|
|
CALL L5298
|
|
LD (0005BH),BC
|
|
RET
|
|
|
|
L5285: XOR A
|
|
LD (L004E),A
|
|
LD BC,L1800
|
|
LD (00056H),BC
|
|
LD BC,L2700
|
|
LD (0005BH),BC
|
|
RET
|
|
|
|
L5298: LD D,000H
|
|
LD E,A
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR Z,L52A9 ; (+008H)
|
|
PUSH BC
|
|
CALL L6E4B
|
|
POP BC
|
|
CALL L5E70
|
|
L52A9: LD C,E
|
|
PUSH BC
|
|
CALL L6E4B
|
|
POP BC
|
|
DEC A
|
|
JP M,04AF2H
|
|
ADD A,C
|
|
CP B
|
|
JP NC,04AF2H
|
|
LD B,A
|
|
RET
|
|
|
|
L52BA: DI
|
|
OUT (LSE4),A
|
|
JP L0000
|
|
|
|
L52C0: XOR A
|
|
LD BC,?SETDE
|
|
LD (L53A8),A
|
|
PUSH AF
|
|
CALL L5882
|
|
RST 018H
|
|
DB 02EH
|
|
JP C,04B28H
|
|
BIT 1,A
|
|
JP Z,04B28H
|
|
CALL TEST1
|
|
DB 02CH
|
|
POP AF
|
|
OR A
|
|
JR NZ,L52F2 ; (+015H)
|
|
CALL L6E6F
|
|
LD A,B
|
|
LD (L53A3),A
|
|
LD (053A4H),DE
|
|
CALL 05E48H
|
|
JR L52F2 ; (+005H)
|
|
|
|
L52ED: LD A,002H
|
|
LD (L53A8),A
|
|
L52F2: CALL L4664
|
|
LD (05319H),DE
|
|
LD (05327H),BC
|
|
LD A,0FFH
|
|
LD (DISPX),A
|
|
CALL SKPDE
|
|
LD HL,(TEXTST)
|
|
L5308: 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,L5326 ; (+006H)
|
|
JR Z,L5326 ; (+004H)
|
|
POP HL
|
|
POP HL
|
|
JR L5308 ; (-01eH)
|
|
|
|
L5326: LD HL,L0000
|
|
OR A
|
|
SBC HL,DE
|
|
JR NC,L5331 ; (+003H)
|
|
POP HL
|
|
POP HL
|
|
RET
|
|
|
|
L5331: EX DE,HL
|
|
CALL L5E66
|
|
RST 018H
|
|
DB 017H
|
|
LD HL,KEYBUF
|
|
CALL LDHLDE
|
|
LD (HL),020H
|
|
INC HL
|
|
EX DE,HL
|
|
POP HL
|
|
CALL L68E0
|
|
LD A,(L53A8)
|
|
OR A
|
|
JR NZ,L5350 ; (+005H)
|
|
CALL L5366
|
|
JR NC,L535A ; (+00aH)
|
|
L5350: LD DE,KEYBUF
|
|
RST 018H
|
|
DB 017H
|
|
RST 018H
|
|
DB 037H
|
|
CALL L5733
|
|
L535A: POP HL
|
|
LD A,(L53A8)
|
|
CP 002H
|
|
JR Z,L5308 ; (-05aH)
|
|
RST 018H
|
|
DB 00FH
|
|
JR L5308 ; (-05eH)
|
|
|
|
L5366: EX DE,HL
|
|
L5367: PUSH HL
|
|
CALL L5371
|
|
POP HL
|
|
RET C
|
|
RET Z
|
|
INC HL
|
|
JR L5367 ; (-00aH)
|
|
|
|
L5371: LD A,(L53A3)
|
|
LD B,A
|
|
LD DE,(053A4H)
|
|
L5379: LD A,(HL)
|
|
INC HL
|
|
OR A
|
|
RET Z
|
|
CP 005H
|
|
JR Z,L5385 ; (+004H)
|
|
CP 006H
|
|
JR NZ,L5387 ; (+002H)
|
|
L5385: JR L5379 ; (-00eH)
|
|
|
|
L5387: PUSH HL
|
|
LD C,A
|
|
L5389: LD A,(DE)
|
|
INC DE
|
|
CP 005H
|
|
JR Z,L5393 ; (+004H)
|
|
CP 006H
|
|
JR NZ,L539A ; (+007H)
|
|
L5393: DEC B
|
|
SCF
|
|
POP HL
|
|
RET Z
|
|
PUSH HL
|
|
JR L5389 ; (-011H)
|
|
|
|
L539A: SUB C
|
|
POP HL
|
|
OR A
|
|
RET NZ
|
|
DEC B
|
|
SCF
|
|
RET Z
|
|
JR L5379 ; (-02aH)
|
|
|
|
L53A3: NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
L53A8: NOP
|
|
L53A9: CALL TESTX
|
|
DB 087H
|
|
CALL L5E4F
|
|
PUSH HL
|
|
LD C,000H
|
|
L53B3: RST 018H
|
|
DB 008H
|
|
LD A,C
|
|
ADD A,031H
|
|
LD D,A
|
|
LD E,020H
|
|
CP 03AH
|
|
JR NZ,L53C2 ; (+003H)
|
|
LD DE,L3031
|
|
L53C2: LD (05445H),DE
|
|
LD DE,L543D
|
|
RST 018H
|
|
DB 00BH
|
|
LD A,C
|
|
CALL L549C
|
|
LD B,(HL)
|
|
INC HL
|
|
PUSH BC
|
|
CALL L53E0
|
|
POP BC
|
|
INC C
|
|
LD A,C
|
|
CP 00AH
|
|
JR NZ,L53B3 ; (-029H)
|
|
RST 018H
|
|
DB 008H
|
|
POP HL
|
|
RET
|
|
|
|
L53E0: LD A,B
|
|
OR A
|
|
LD C,000H
|
|
JR NZ,L53ED ; (+007H)
|
|
LD A,022H
|
|
RST 018H
|
|
DB 00AH
|
|
RST 018H
|
|
DB 00AH
|
|
RET
|
|
|
|
L53ED: LD A,(HL)
|
|
CP 020H
|
|
JR C,L5412 ; (+020H)
|
|
CP 022H
|
|
JR Z,L5412 ; (+01cH)
|
|
LD A,C
|
|
CP 001H
|
|
JR Z,L5405 ; (+00aH)
|
|
OR A
|
|
LD DE,L544A
|
|
JR NZ,L5403 ; (+002H)
|
|
INC DE
|
|
INC DE
|
|
L5403: RST 018H
|
|
DB 00BH
|
|
L5405: LD A,(HL)
|
|
RST 018H
|
|
DB 00AH
|
|
INC HL
|
|
LD C,001H
|
|
DJNZ L53ED ; (-020H)
|
|
LD A,022H
|
|
L540F: RST 018H
|
|
DB 00AH
|
|
RET
|
|
|
|
L5412: LD A,C
|
|
CP 0FFH
|
|
JR Z,L5437 ; (+020H)
|
|
OR A
|
|
LD DE,0544EH
|
|
JR NZ,L541F ; (+002H)
|
|
INC DE
|
|
INC DE
|
|
L541F: RST 018H
|
|
DB 00BH
|
|
L5421: PUSH BC
|
|
PUSH HL
|
|
LD L,(HL)
|
|
LD H,000H
|
|
CALL L5E66
|
|
RST 018H
|
|
DB 00BH
|
|
POP HL
|
|
POP BC
|
|
INC HL
|
|
LD C,0FFH
|
|
DJNZ L53ED ; (-045H)
|
|
LD A,029H
|
|
JP L540F
|
|
|
|
L5437: LD A,02CH
|
|
RST 018H
|
|
DB 00AH
|
|
JR L5421 ; (-01cH)
|
|
|
|
L543D: LD B,H
|
|
LD B,L
|
|
LD B,(HL)
|
|
JR NZ,L548D ; (+04bH)
|
|
LD B,L
|
|
LD E,C
|
|
JR Z,L5446 ; (+000H)
|
|
L5446: NOP
|
|
ADD HL,HL
|
|
DEC A
|
|
NOP
|
|
L544A: ADD HL,HL
|
|
DEC HL
|
|
LD (L2200),HL
|
|
DEC HL
|
|
LD B,E
|
|
LD C,B
|
|
LD D,D
|
|
INC H
|
|
JR Z,L5456 ; (+000H)
|
|
L5456: CALL TEST1
|
|
DB 0B2H
|
|
JR Z,L5467 ; (+00bH)
|
|
CALL TESTX
|
|
DB 0FFH
|
|
L5460: CALL TESTX
|
|
DB 0C7H
|
|
JP L7824
|
|
|
|
L5467: CALL TESTX
|
|
DB 028H
|
|
CALL L6E4B
|
|
CALL TESTX
|
|
DB 029H
|
|
CALL TESTX
|
|
DB QDPC
|
|
LD A,E
|
|
DEC A
|
|
CP 00AH
|
|
JP NC,04AF2H
|
|
PUSH HL
|
|
CALL L549C
|
|
EX (SP),HL
|
|
CALL L6E6F
|
|
EX (SP),HL
|
|
LD A,B
|
|
CP 010H
|
|
JR C,L548D ; (+002H)
|
|
LD A,00FH
|
|
L548D: LD (HL),A
|
|
OR A
|
|
JR Z,L5499 ; (+008H)
|
|
LD B,A
|
|
INC HL
|
|
L5493: LD A,(DE)
|
|
LD (HL),A
|
|
INC DE
|
|
INC HL
|
|
DJNZ L5493 ; (-006H)
|
|
L5499: POP HL
|
|
EI
|
|
RET
|
|
|
|
L549C: ADD A,A
|
|
ADD A,A
|
|
ADD A,A
|
|
ADD A,A
|
|
LD HL,L12C0
|
|
JP ADDHLA
|
|
|
|
L54A6: CALL TEST1
|
|
DB 02CH
|
|
JR NZ,L54B4 ; (+008H)
|
|
CALL L5E70
|
|
LD DE,L005D
|
|
JR L54C0 ; (+00cH)
|
|
|
|
L54B4: CALL L4FCF
|
|
CALL L5E70
|
|
EX DE,HL
|
|
RST 018H
|
|
DB 01EH
|
|
SET 3,H
|
|
EX DE,HL
|
|
L54C0: EX DE,HL
|
|
CALL BREAKX
|
|
EX DE,HL
|
|
PUSH DE
|
|
CALL L54D0
|
|
POP DE
|
|
EX DE,HL
|
|
CALL POPRA
|
|
EX DE,HL
|
|
RET
|
|
|
|
L54D0: LD C,A
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR Z,L54E9 ; (+012H)
|
|
CALL L552C
|
|
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,L54FA ; (+011H)
|
|
L54E9: CALL L413E
|
|
JR Z,L54FA ; (+00cH)
|
|
CP 05DH
|
|
JR Z,L54FA ; (+008H)
|
|
CALL L552C
|
|
XOR C
|
|
AND 007H
|
|
XOR C
|
|
RET
|
|
|
|
L54FA: LD A,C
|
|
RET
|
|
|
|
L54FC: INC HL
|
|
L54FD: CALL L6E6F
|
|
LD A,B
|
|
OR A
|
|
JR Z,L5513 ; (+00fH)
|
|
PUSH HL
|
|
LD HL,KEYBUF
|
|
PUSH HL
|
|
CALL LDHLDE
|
|
LD (HL),00DH
|
|
POP DE
|
|
CALL L0030
|
|
POP HL
|
|
L5513: CALL HLFTCH
|
|
CP 03BH
|
|
JR Z,L54FC ; (-01eH)
|
|
CP 02CH
|
|
JR Z,L54FC ; (-022H)
|
|
RET
|
|
|
|
L551F: CALL L6E4B
|
|
DEC A
|
|
CP 007H
|
|
JP NC,04AF2H
|
|
INC A
|
|
JP L0041
|
|
|
|
L552C: PUSH BC
|
|
CALL L6E4B
|
|
POP BC
|
|
CP 008H
|
|
JP NC,04AF2H
|
|
RET
|
|
|
|
L5537: RST 018H
|
|
DB 045H
|
|
RET
|
|
|
|
DS 198, 000H
|
|
L5600: LD A,(ZLOG)
|
|
CP 088H
|
|
RET
|
|
|
|
L5606: CALL L6E8A
|
|
LD A,(L84CE)
|
|
CP 003H
|
|
PUSH HL
|
|
EX DE,HL
|
|
JR Z,L5619 ; (+007H)
|
|
CALL L6028
|
|
POP HL
|
|
RST 018H
|
|
DB 017H
|
|
RET
|
|
|
|
L5619: CALL L6E7E
|
|
POP HL
|
|
RET
|
|
|
|
L561E: LD A,(L005D)
|
|
LD (0574DH),A
|
|
XOR A
|
|
LD (DISPX),A
|
|
CALL L5882
|
|
RST 018H
|
|
DB 02EH
|
|
JP C,L57B4
|
|
BIT 2,A
|
|
JP NZ,L5D18
|
|
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 L54D0
|
|
LD (0574DH),A
|
|
CALL TESTX
|
|
DB 05DH
|
|
L5655: CALL L413E
|
|
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 L413E
|
|
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 L413E
|
|
RET Z
|
|
JR L565B ; (-04fH)
|
|
|
|
L56AA: CALL L5600
|
|
JP C,057B7H
|
|
CALL L5E77
|
|
CALL L6E4B
|
|
CALL L5E7F
|
|
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,KEYBUF
|
|
PUSH BC
|
|
PUSH DE
|
|
CALL ?SETDE
|
|
POP DE
|
|
POP BC
|
|
JR L573E ; (+064H)
|
|
|
|
L56DA: INC HL
|
|
CALL L6E6F
|
|
LD A,B
|
|
OR A
|
|
JP Z,04AF2H
|
|
PUSH HL
|
|
LD HL,KEYBUF
|
|
PUSH HL
|
|
PUSH BC
|
|
CALL LDHLDE
|
|
POP BC
|
|
LD A,0F0H
|
|
LD E,B
|
|
LD D,000H
|
|
INC DE
|
|
RST 018H
|
|
DB 02AH
|
|
LD (L6306),HL
|
|
LD (L6308),HL
|
|
POP DE
|
|
CALL LDHLDE
|
|
LD (HL),000H
|
|
POP HL
|
|
L5702: CALL L413E
|
|
JR Z,L5729 ; (+022H)
|
|
INC HL
|
|
CP 02CH
|
|
JR Z,L5711 ; (+005H)
|
|
CP 03BH
|
|
JP NZ,L4AEC
|
|
L5711: CALL L413E
|
|
JR Z,L572C ; (+016H)
|
|
CALL L6E92
|
|
PUSH HL
|
|
LD BC,(TMPEND)
|
|
PUSH BC
|
|
CALL L630A
|
|
POP DE
|
|
CALL L573C
|
|
POP HL
|
|
JR L5702 ; (-027H)
|
|
|
|
L5729: CALL L5733
|
|
L572C: LD A,0F0H
|
|
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 (ZLOG),A
|
|
JR L5792 ; (+037H)
|
|
|
|
L575B: CALL L5882
|
|
RST 018H
|
|
DB 02EH
|
|
JP C,L57B4
|
|
BIT 2,A
|
|
JP NZ,L5D29
|
|
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 L6E6F
|
|
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 L74E8
|
|
CALL L7436
|
|
PUSH AF
|
|
PUSH BC
|
|
CALL L413E
|
|
JR Z,057BEH ; (+00fH)
|
|
CALL L5E73
|
|
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,(ZLOG)
|
|
CP 08AH
|
|
JR Z,L5839 ; (+044H)
|
|
RST 018H
|
|
DB 035H
|
|
RET
|
|
|
|
L57F8: CP 003H
|
|
JR NZ,L5803 ; (+007H)
|
|
LD HL,(TMPEND)
|
|
LD A,B
|
|
$START: JP L4CD2 ; $START - BASIC warm start / system entry
|
|
|
|
L5803: PUSH DE
|
|
LD HL,(INTFAC)
|
|
LD DE,(TMPEND)
|
|
EX DE,HL
|
|
CALL HLFTCH
|
|
CP 045H
|
|
JP Z,04AF2H
|
|
EX DE,HL
|
|
CALL L5EDC
|
|
EX DE,HL
|
|
CALL TEST1
|
|
DB 000H
|
|
JP NZ,04AF2H
|
|
EX DE,HL
|
|
POP DE
|
|
JP L5E93
|
|
|
|
L5825: XOR A
|
|
JR L587E ; (+056H)
|
|
|
|
L5828: CALL L5825
|
|
CALL L413E
|
|
CALL NZ,L45AA
|
|
EX DE,HL
|
|
CALL NZ,L5869
|
|
EX DE,HL
|
|
JP L4F8A
|
|
|
|
L5839: PUSH HL
|
|
PUSH DE
|
|
CALL L5847
|
|
POP DE
|
|
POP HL
|
|
RET
|
|
|
|
L5841: LD HL,(TEXTST)
|
|
CALL L5869
|
|
L5847: LD A,(L848F)
|
|
CP 001H
|
|
JP Z,04B1FH
|
|
JR C,L5841 ; (-010H)
|
|
LD HL,(L8490)
|
|
LD C,03AH
|
|
RST 018H
|
|
DB 036H
|
|
LD (L8490),HL
|
|
CALL L413E
|
|
SCF
|
|
CCF
|
|
RET NZ
|
|
DEC HL
|
|
L5862: CALL L519E
|
|
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 (L8490),HL
|
|
LD A,002H
|
|
L587E: LD (L848F),A
|
|
RET
|
|
|
|
L5882: CALL TEST1
|
|
DB 023H
|
|
JR NZ,L58AD ; (+025H)
|
|
CALL HLFTCH
|
|
CP 020H
|
|
JP NC,L4AEC
|
|
PUSH DE
|
|
PUSH BC
|
|
LD DE,L84CF
|
|
PUSH DE
|
|
CALL L705A
|
|
EX (SP),HL
|
|
CALL L60B7
|
|
LD A,H
|
|
OR A
|
|
JP NZ,04B28H
|
|
OR L
|
|
JP Z,04B28H
|
|
JP M,04B28H
|
|
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,(ZLOG)
|
|
OR A
|
|
RET M
|
|
JP L5E70
|
|
|
|
L58CA:
|
|
IF BUILD_RFS = 1
|
|
JP RFS_DIRCMD1 ; RFS: debug hook for DIR handler 1
|
|
NOP
|
|
NOP
|
|
NOP
|
|
ELSE
|
|
CALL L593A ; Original: parse device name for DIR
|
|
LD B,A
|
|
XOR A
|
|
NOP
|
|
ENDIF
|
|
L58D0:
|
|
IF BUILD_RFS = 1
|
|
JP RFS_DIRCMD2 ; RFS: debug hook for DIR handler 2
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
ELSE
|
|
CALL L6E6F ; Original: evaluate string expression
|
|
PUSH HL
|
|
RST 018H
|
|
DB 02CH
|
|
RST 018H
|
|
DB 03CH
|
|
ENDIF
|
|
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 (ZRWX),A
|
|
CALL L5882
|
|
CP 088H
|
|
JR NZ,L58F4 ; (+002H)
|
|
LD A,080H
|
|
L58F4: LD (ZLOG),A
|
|
CALL L58C2
|
|
CALL L592D
|
|
POP AF
|
|
CP 004H
|
|
JR Z,L5904 ; (+002H)
|
|
L5902: LD A,003H
|
|
L5904: LD (ELMD),A
|
|
PUSH AF
|
|
RST 018H
|
|
DB 033H
|
|
LD A,(ELMD)
|
|
POP BC
|
|
CP B
|
|
JP NZ,04B53H
|
|
RET
|
|
|
|
L5913: OR 0AFH
|
|
LD B,A
|
|
CALL L413E
|
|
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 L46A6
|
|
LD B,000H
|
|
CALL NZ,L6E6F
|
|
PUSH HL
|
|
RST 018H
|
|
DB 02DH
|
|
POP HL
|
|
RET
|
|
|
|
L593A: PUSH HL
|
|
CALL HLFTCH
|
|
LD DE,L5982
|
|
LD B,001H
|
|
CALL L5975
|
|
CALL NC,L5975
|
|
JR C,L5962 ; (+017H)
|
|
CALL L5975
|
|
CALL L5EC4
|
|
CALL L597B
|
|
CALL L413E
|
|
JR NZ,L5962 ; (+009H)
|
|
LD A,03AH
|
|
LD (DE),A
|
|
POP AF
|
|
IF BUILD_RFS = 1
|
|
JP RFS_DIR_FIX
|
|
NOP
|
|
NOP
|
|
ELSE
|
|
LD DE,L5982 ; Original: buffer for device name
|
|
INC HL ; Advance past ':'
|
|
ENDIF
|
|
|
|
L5962: POP HL
|
|
CALL L413E
|
|
LD B,000H
|
|
CALL NZ,L6E6F
|
|
L596B:
|
|
IF BUILD_RFS = 1
|
|
JP RFS_DIR_OPEN ; RFS: debug hook for SVC #2C DIR trace
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
ELSE
|
|
PUSH HL ; Original SVC #2C DIR handler
|
|
RST 018H
|
|
DB 02CH
|
|
INC (HL)
|
|
DEC (HL)
|
|
JP NZ,04B1FH
|
|
POP HL
|
|
RET
|
|
ENDIF
|
|
|
|
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,04B53H
|
|
CALL L5C08
|
|
CALL L5BE5
|
|
CALL L5C11
|
|
CALL L5C44
|
|
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,04B13H
|
|
POP HL
|
|
RST 018H
|
|
DB 030H
|
|
CALL L5C44
|
|
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,04B53H
|
|
LD A,(L849A)
|
|
OR A
|
|
JP Z,L5B0D
|
|
JP L5DB2
|
|
|
|
L59EA: CALL L5C08
|
|
CALL L592D
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR Z,05A4DH ; (+057H)
|
|
RST 018H
|
|
DB 02FH
|
|
CP 002H
|
|
JP NZ,04B53H
|
|
PUSH HL
|
|
LD HL,(VARED)
|
|
LD (TMPEND),HL
|
|
LD BC,003E8H
|
|
ADD HL,BC
|
|
JP C,L4B2C
|
|
PUSH HL
|
|
LD BC,(ELMD20)
|
|
INC B
|
|
ADD HL,BC
|
|
JP C,L4B2C
|
|
SBC HL,SP
|
|
JP NC,L4B2C
|
|
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 (L847F),HL
|
|
CALL L49B9
|
|
POP HL
|
|
POP BC
|
|
PUSH BC
|
|
PUSH HL
|
|
CALL L4794
|
|
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 05E48H
|
|
LD A,001H
|
|
LD (ZRWX),A
|
|
LD A,081H
|
|
LD (ZLOG),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,(VARED)
|
|
LD (TMPEND),HL
|
|
LD BC,003E8H
|
|
ADD HL,BC
|
|
JP C,04AFBH
|
|
PUSH HL
|
|
LD (L5AEB),HL
|
|
L5A89: LD HL,0FE00H
|
|
ADD HL,SP
|
|
LD DE,(05AEBH)
|
|
SBC HL,DE
|
|
JP C,04AFBH
|
|
LD DE,(TMPEND)
|
|
RST 018H
|
|
DB 035H
|
|
LD A,B
|
|
OR A
|
|
JR Z,L5AD6 ; (+036H)
|
|
CALL L6A11
|
|
LD A,B
|
|
OR C
|
|
JP Z,04AF2H
|
|
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,04AF2H
|
|
POP HL
|
|
LD A,(DE)
|
|
CP 020H
|
|
JR NZ,L5AC3 ; (+001H)
|
|
INC DE
|
|
L5AC3: CALL L66EF
|
|
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 L480D
|
|
|
|
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,04B53H
|
|
CALL L5BE5
|
|
L5B0D: CALL L5C11
|
|
CALL L5C44
|
|
JP L480D
|
|
|
|
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,(ELMD20)
|
|
LD DE,(ELMD22)
|
|
PUSH HL
|
|
CALL L59CA
|
|
POP DE
|
|
LD HL,(TEXTST)
|
|
LD BC,0FF00H
|
|
CALL NC,L59CA
|
|
JP C,L4B2C
|
|
LD SP,L0000
|
|
CALL L4930
|
|
XOR A
|
|
LD (L5C07),A
|
|
LD HL,(ELMD24)
|
|
PUSH HL
|
|
LD DE,(ELMD20)
|
|
PUSH DE
|
|
LD HL,(TMPEND)
|
|
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,VRAM
|
|
EX DE,HL
|
|
PUSH BC
|
|
PUSH HL
|
|
LD (HL),LSD3
|
|
INC HL
|
|
LD (HL),LSE4
|
|
INC HL
|
|
LD (HL),0C9H
|
|
RET
|
|
|
|
L5BA4: LD HL,(VARED)
|
|
LD (TMPEND),HL
|
|
LD DE,(TEXTED)
|
|
LD (05C01H),DE
|
|
OR A
|
|
SBC HL,DE
|
|
LD (L5C03),HL
|
|
LD HL,0FF00H
|
|
ADD HL,SP
|
|
LD (L5C05),HL
|
|
LD DE,(VARED)
|
|
PUSH HL
|
|
OR A
|
|
SBC HL,DE
|
|
JP C,L4B2C
|
|
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,(ELMD)
|
|
RET
|
|
|
|
L5BE5: LD HL,(VARED)
|
|
XOR A
|
|
DEC HL
|
|
LD (HL),A
|
|
DEC HL
|
|
LD (HL),A
|
|
LD (STRST),HL
|
|
DEC HL
|
|
LD (HL),A
|
|
LD (VARST),HL
|
|
DEC HL
|
|
LD (HL),A
|
|
LD (TEXTED),HL
|
|
LD HL,00004H
|
|
LD (L5C03),HL
|
|
RET
|
|
|
|
L5C01: NOP
|
|
NOP
|
|
L5C03: NOP
|
|
NOP
|
|
L5C05: NOP
|
|
NOP
|
|
L5C07: NOP
|
|
L5C08: PUSH AF
|
|
CALL L4146
|
|
JP NZ,04B16H
|
|
POP AF
|
|
RET
|
|
|
|
L5C11: LD BC,(ELMD20)
|
|
PUSH BC
|
|
LD HL,(TEXTED)
|
|
LD DE,(TEXTST)
|
|
OR A
|
|
SBC HL,DE
|
|
LD L,000H
|
|
SBC HL,BC
|
|
JP C,L4B2C
|
|
LD HL,L0000
|
|
LD (L5C01),HL
|
|
CALL L4821
|
|
LD HL,L0000
|
|
LD (L8483),HL
|
|
LD HL,(TEXTST)
|
|
RST 018H
|
|
DB 030H
|
|
POP BC
|
|
LD HL,(TEXTST)
|
|
ADD HL,BC
|
|
LD (L5C01),HL
|
|
RET
|
|
|
|
L5C44: 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,L5C5F ; (+006H)
|
|
LD HL,(TEXTST)
|
|
CALL L4952
|
|
L5C5F: EX DE,HL
|
|
LD HL,(TEXTED)
|
|
LD BC,(05C03H)
|
|
LDIR
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,DE
|
|
EX DE,HL
|
|
RST 018H
|
|
DB 018H
|
|
RET
|
|
|
|
L5C71: PUSH HL
|
|
CALL L46C0
|
|
POP HL
|
|
CALL L592D
|
|
PUSH HL
|
|
RST 018H
|
|
DB 02FH
|
|
CP 002H
|
|
JP NZ,04B53H
|
|
LD HL,(TEXTST)
|
|
RST 018H
|
|
DB 032H
|
|
POP HL
|
|
RET
|
|
|
|
L5C88: PUSH HL
|
|
CALL L46C0
|
|
POP HL
|
|
CALL L592D
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR Z,L5CB5 ; (+01fH)
|
|
PUSH HL
|
|
LD A,002H
|
|
LD (ELMD),A
|
|
LD HL,(TEXTED)
|
|
LD DE,(TEXTST)
|
|
OR A
|
|
SBC HL,DE
|
|
LD (ELMD20),HL
|
|
LD A,(ELMD1)
|
|
CP 00DH
|
|
JP Z,04B50H
|
|
RST 018H
|
|
DB 031H
|
|
POP HL
|
|
RET
|
|
|
|
L5CB5: CALL TESTX
|
|
DB 041H
|
|
PUSH HL
|
|
LD A,002H
|
|
LD (ZRWX),A
|
|
LD A,081H
|
|
LD (ZLOG),A
|
|
CALL L5902
|
|
POP HL
|
|
CALL L52ED
|
|
CALL L5733
|
|
LD B,001H
|
|
LD A,081H
|
|
RST 018H
|
|
DB 038H
|
|
RET
|
|
|
|
L5CD5: XOR A
|
|
LD BC,?SETDE
|
|
PUSH AF
|
|
CALL L6E6F
|
|
RST 018H
|
|
DB 02DH
|
|
POP AF
|
|
RST 018H
|
|
DB 03FH
|
|
RET
|
|
|
|
L5CE3:
|
|
IF BUILD_RFS = 1
|
|
JP RFS_DIR3 ; RFS: debug hook for DIR handler
|
|
ELSE
|
|
NOP ; Original: no hook (3 bytes NOP)
|
|
NOP
|
|
NOP
|
|
ENDIF
|
|
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
|
|
|
|
L5D02: CALL L6E6F
|
|
RST 018H
|
|
DB 02DH
|
|
RST 018H
|
|
DB 03DH
|
|
RET
|
|
|
|
L5D0A: CALL L6E6F
|
|
RST 018H
|
|
DB 02DH
|
|
CALL L5E70
|
|
CALL L6E6F
|
|
RST 018H
|
|
DB 03EH
|
|
RET
|
|
|
|
L5D18: CALL L5D4E
|
|
L5D1B: CALL L5606
|
|
RST 018H
|
|
DB 042H
|
|
CALL L413E
|
|
RET Z
|
|
CALL L5E73
|
|
JR L5D1B ; (-00eH)
|
|
|
|
L5D29: CALL L5D4E
|
|
LD DE,(TMPEND)
|
|
CALL L74E8
|
|
L5D33: CALL L7436
|
|
PUSH HL
|
|
PUSH AF
|
|
PUSH BC
|
|
LD DE,(TMPEND)
|
|
RST 018H
|
|
DB 041H
|
|
POP DE
|
|
POP AF
|
|
CALL L57F8
|
|
POP HL
|
|
CALL L413E
|
|
RET Z
|
|
CALL L5E73
|
|
JR L5D33 ; (-01bH)
|
|
|
|
L5D4E: CALL TEST1
|
|
DB 028H
|
|
RET NZ
|
|
CALL L6E5F
|
|
LD A,D
|
|
OR E
|
|
JP Z,04AF2H
|
|
RST 018H
|
|
DB 040H
|
|
CALL L5E7F
|
|
CALL TEST1
|
|
DB 02CH
|
|
RET
|
|
|
|
L5D65: LD A,(L849A)
|
|
OR A
|
|
JP NZ,04B22H
|
|
PUSH HL
|
|
LD B,000H
|
|
RST 018H
|
|
DB 02CH
|
|
LD (05E1AH),DE
|
|
LD (L5E1C),A
|
|
LD HL,(TEXTED)
|
|
LD DE,(TEXTST)
|
|
XOR A
|
|
SBC HL,DE
|
|
LD (ELMD20),HL
|
|
RST 018H
|
|
DB 044H
|
|
POP HL
|
|
CALL L592D
|
|
CALL 05E48H
|
|
LD A,(ZFLAG1)
|
|
BIT 5,A
|
|
JP Z,057B7H
|
|
PUSH HL
|
|
LD HL,(08494H)
|
|
ADD HL,SP
|
|
LD SP,HL
|
|
EX DE,HL
|
|
LD HL,L847D
|
|
LD BC,(08492H)
|
|
LDIR
|
|
CALL L5BDC
|
|
CP 002H
|
|
JP NZ,04B53H
|
|
LD (05DB3H),SP
|
|
L5DB2: LD SP,L0000
|
|
CALL L5C11
|
|
CALL L5C44
|
|
LD HL,0FFFDH
|
|
PUSH HL
|
|
PUSH HL
|
|
LD A,001H
|
|
LD (L849A),A
|
|
LD HL,(TEXTST)
|
|
JP L40E4
|
|
|
|
L5DCB: XOR A
|
|
LD (L849A),A
|
|
POP IX
|
|
L5DD1: POP BC
|
|
LD A,B
|
|
CP 0FFH
|
|
JP NZ,04B22H
|
|
LD A,C
|
|
CP 0FDH
|
|
JR Z,L5DF0 ; (+013H)
|
|
CP 0FEH
|
|
LD HL,00004H
|
|
JR Z,L5DEC ; (+008H)
|
|
CP 012H
|
|
LD HL,00010H
|
|
JP NZ,04B22H
|
|
L5DEC: ADD HL,SP
|
|
LD SP,HL
|
|
JR L5DD1 ; (-01fH)
|
|
|
|
L5DF0: LD DE,(05E1AH)
|
|
LD A,(L5E1C)
|
|
RST 018H
|
|
DB 03AH
|
|
LD B,000H
|
|
RST 018H
|
|
DB 02CH
|
|
CALL L5BA4
|
|
OR 0FFH
|
|
RST 018H
|
|
DB 044H
|
|
CALL L5C11
|
|
CALL L5C44
|
|
LD HL,L0000
|
|
ADD HL,SP
|
|
LD DE,L847D
|
|
LD BC,(08492H)
|
|
LDIR
|
|
LD SP,HL
|
|
POP HL
|
|
RET
|
|
|
|
NOP
|
|
NOP
|
|
L5E1C: NOP
|
|
L5E1D: LD DE,L5E37
|
|
LD B,005H
|
|
CALL L58D8
|
|
LD A,031H
|
|
CALL L5E2C
|
|
LD A,032H
|
|
L5E2C: LD (05E3EH),A
|
|
LD DE,05E3CH
|
|
LD B,00CH
|
|
JP L58D8
|
|
|
|
L5E37: DB "CMT:TRS?:0,$8C,13",0CDH; XCMT device config string
|
|
LD A,041H
|
|
RET Z
|
|
JP L4AEC
|
|
|
|
L5E4F: XOR A
|
|
LD (FILOUT),A
|
|
CALL TEST1
|
|
DB FDPD
|
|
RET NZ
|
|
CALL TESTX
|
|
DB 050H
|
|
CALL L6AC6
|
|
LD A,050H
|
|
LD (FILOUT),A
|
|
CP A
|
|
RET
|
|
|
|
L5E66: LD DE,L849C
|
|
LD B,000H
|
|
PUSH DE
|
|
RST 018H
|
|
DB 016H
|
|
POP DE
|
|
RET
|
|
|
|
L5E70: CALL HLFTCH
|
|
L5E73: CP 02CH
|
|
JR L5E84 ; (+00dH)
|
|
|
|
L5E77: INC HL
|
|
L5E78: CALL HLFTCH
|
|
L5E7B: CP 028H
|
|
JR L5E84 ; (+005H)
|
|
|
|
L5E7F: CALL HLFTCH
|
|
L5E82: CP 029H
|
|
L5E84: INC HL
|
|
RET Z
|
|
JP L4AEC
|
|
|
|
L5E89: LD A,(DE)
|
|
CP 020H
|
|
INC DE
|
|
JR Z,L5E89 ; (-006H)
|
|
RET
|
|
|
|
L5E90: LD HL,L6112
|
|
L5E93: LD BC,00005H
|
|
LDIR
|
|
RET
|
|
|
|
L5E99: CALL L7967
|
|
LD A,E
|
|
OR D
|
|
RET Z
|
|
BIT 7,D
|
|
LD A,07FH
|
|
JR Z,L5EAE ; (+009H)
|
|
LD A,D
|
|
CPL
|
|
LD D,A
|
|
LD A,E
|
|
CPL
|
|
LD E,A
|
|
INC DE
|
|
LD A,0FFH
|
|
L5EAE: LD B,091H
|
|
L5EB0: DEC B
|
|
BIT 7,D
|
|
JR NZ,L5EBB ; (+006H)
|
|
RL E
|
|
RL D
|
|
JR L5EB0 ; (-00bH)
|
|
|
|
L5EBB: LD (HL),B
|
|
INC HL
|
|
AND D
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),E
|
|
DEC HL
|
|
DEC HL
|
|
RET
|
|
|
|
L5EC4: CP 030H
|
|
RET C
|
|
CP 03AH
|
|
CCF
|
|
RET
|
|
|
|
L5ECB: CP 05FH
|
|
RET Z
|
|
CP 030H
|
|
RET C
|
|
CP 05BH
|
|
CCF
|
|
RET C
|
|
CP 03AH
|
|
CCF
|
|
RET NC
|
|
CP 041H
|
|
RET
|
|
|
|
L5EDC: CALL L7967
|
|
LD (L6301),A
|
|
LD (L6302),A
|
|
LD (L6303),A
|
|
LD (05F83H),A
|
|
LD A,005H
|
|
LD (L84CE),A
|
|
L5EF0: CALL L5E89
|
|
CP 02BH
|
|
JR Z,L5EF0 ; (-007H)
|
|
CP 02DH
|
|
JR NZ,L5F01 ; (+006H)
|
|
CALL L5EF0
|
|
JP L7972
|
|
|
|
L5F01: CP 024H
|
|
JR NZ,L5F11 ; (+00cH)
|
|
PUSH HL
|
|
EX DE,HL
|
|
RST 018H
|
|
DB 014H
|
|
EX (SP),HL
|
|
CALL L5E99
|
|
POP DE
|
|
LD A,005H
|
|
RET
|
|
|
|
L5F11: CP 030H
|
|
JR NZ,L5F1B ; (+006H)
|
|
LD A,(DE)
|
|
INC DE
|
|
JR L5F11 ; (-008H)
|
|
|
|
L5F19: LD A,(DE)
|
|
INC DE
|
|
L5F1B: CP 020H
|
|
JR Z,L5F19 ; (-006H)
|
|
CP 02EH
|
|
JR Z,L5F3E ; (+01bH)
|
|
CALL L5EC4
|
|
JR C,L5F78 ; (+050H)
|
|
SUB 030H
|
|
CALL L60AA
|
|
CALL L6014
|
|
LD A,001H
|
|
LD (L6302),A
|
|
LD A,(L6301)
|
|
INC A
|
|
LD (L6301),A
|
|
JR L5F19 ; (-025H)
|
|
|
|
L5F3E: LD A,001H
|
|
LD (05F83H),A
|
|
LD C,A
|
|
L5F44: LD A,(DE)
|
|
INC DE
|
|
CP 020H
|
|
JR Z,L5F44 ; (-006H)
|
|
CALL L5EC4
|
|
JR C,L5F70 ; (+021H)
|
|
INC C
|
|
SUB 030H
|
|
JR Z,L5F5B ; (+007H)
|
|
PUSH AF
|
|
LD A,001H
|
|
LD (L6302),A
|
|
POP AF
|
|
L5F5B: PUSH AF
|
|
LD A,(L6302)
|
|
LD B,A
|
|
LD A,(L6301)
|
|
ADD A,B
|
|
LD (L6301),A
|
|
POP AF
|
|
CALL L60AA
|
|
CALL L6014
|
|
JR L5F44 ; (-02cH)
|
|
|
|
L5F70: DEC C
|
|
JR Z,L5F78 ; (+005H)
|
|
CALL L5FFE
|
|
JR L5F70 ; (-008H)
|
|
|
|
L5F78: CP 045H
|
|
JR Z,L5F89 ; (+00dH)
|
|
L5F7C: DEC DE
|
|
LD A,(L6303)
|
|
OR A
|
|
RET NZ
|
|
LD A,000H
|
|
OR A
|
|
RET NZ
|
|
LD A,005H
|
|
RET
|
|
|
|
L5F89: LD A,(DE)
|
|
CP 02DH
|
|
JR Z,L5F97 ; (+009H)
|
|
CP 02BH
|
|
JR Z,L5F97 ; (+005H)
|
|
CALL L5EC4
|
|
JR C,L5F7C ; (-01bH)
|
|
L5F97: LD A,001H
|
|
LD (05F83H),A
|
|
PUSH HL
|
|
LD HL,L7BB3
|
|
LD (05FF7H),HL
|
|
LD HL,L0000
|
|
LD A,(DE)
|
|
INC DE
|
|
CP 02BH
|
|
JR Z,L5FB8 ; (+00cH)
|
|
CP 02DH
|
|
JR NZ,L5FBA ; (+00aH)
|
|
PUSH HL
|
|
LD HL,L7C9E
|
|
LD (05FF7H),HL
|
|
POP HL
|
|
L5FB8: LD A,(DE)
|
|
INC DE
|
|
L5FBA: SUB 030H
|
|
JR C,L5FDA ; (+01cH)
|
|
CP 00AH
|
|
JR NC,L5FDA ; (+018H)
|
|
PUSH DE
|
|
CALL L600F
|
|
LD E,L
|
|
LD D,H
|
|
CALL L600F
|
|
CALL L600F
|
|
CALL L600B
|
|
LD E,A
|
|
LD D,000H
|
|
CALL L600B
|
|
POP DE
|
|
JR L5FB8 ; (-022H)
|
|
|
|
L5FDA: LD A,H
|
|
OR A
|
|
JR NZ,L6011 ; (+033H)
|
|
LD A,L
|
|
POP HL
|
|
PUSH DE
|
|
PUSH BC
|
|
PUSH HL
|
|
LD DE,L84CF
|
|
PUSH DE
|
|
CALL L5E90
|
|
POP HL
|
|
LD B,A
|
|
INC B
|
|
JR L5FF2 ; (+003H)
|
|
|
|
L5FEF: CALL L60AA
|
|
L5FF2: DJNZ L5FEF ; (-005H)
|
|
EX DE,HL
|
|
POP HL
|
|
CALL L0000
|
|
POP BC
|
|
POP DE
|
|
JP L5F7C
|
|
|
|
L5FFE: PUSH AF
|
|
PUSH BC
|
|
PUSH DE
|
|
LD DE,L610D
|
|
CALL L7C9E
|
|
POP DE
|
|
POP BC
|
|
POP AF
|
|
RET
|
|
|
|
L600B: ADD HL,DE
|
|
RET NC
|
|
JR L6011 ; (+002H)
|
|
|
|
L600F: ADD HL,HL
|
|
RET NC
|
|
L6011: JP 04AEFH
|
|
|
|
L6014: PUSH DE
|
|
PUSH HL
|
|
LD HL,L84CF
|
|
LD E,A
|
|
LD D,000H
|
|
CALL L5E99
|
|
EX DE,HL
|
|
POP HL
|
|
PUSH BC
|
|
CALL L7985
|
|
POP BC
|
|
POP DE
|
|
RET
|
|
|
|
L6028: LD A,005H
|
|
LD (L84CE),A
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,L6035 ; (+004H)
|
|
INC HL
|
|
LD A,(HL)
|
|
DEC HL
|
|
RLCA
|
|
L6035: LD A,020H
|
|
JR NC,L603E ; (+005H)
|
|
CALL L7972
|
|
LD A,02DH
|
|
L603E: PUSH AF
|
|
CALL L61AD
|
|
CALL L623A
|
|
POP AF
|
|
DEC DE
|
|
LD (DE),A
|
|
RET
|
|
|
|
L6049: PUSH BC
|
|
CALL L7A1C
|
|
POP BC
|
|
RET
|
|
|
|
L604F: CALL SKPDE
|
|
LD A,(HL)
|
|
CP 081H
|
|
JP C,L7967
|
|
LD A,(HL)
|
|
CP 0A0H
|
|
RET NC
|
|
INC HL
|
|
CALL L6086
|
|
PUSH HL
|
|
LD L,(HL)
|
|
LD B,000H
|
|
L6064: SRL E
|
|
RR D
|
|
RR C
|
|
RR L
|
|
INC A
|
|
INC B
|
|
CP 0A0H
|
|
JR NZ,L6064 ; (-00eH)
|
|
L6072: SLA L
|
|
RL C
|
|
RL D
|
|
RL E
|
|
DJNZ L6072 ; (-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
|
|
|
|
L6086: LD E,(HL)
|
|
INC HL
|
|
L6088: LD D,(HL)
|
|
INC HL
|
|
LD C,(HL)
|
|
INC HL
|
|
RET
|
|
|
|
L608D: LD A,(HL)
|
|
CP 081H
|
|
RET C
|
|
PUSH DE
|
|
PUSH HL
|
|
LD DE,L60A5
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
CALL L604F
|
|
EX DE,HL
|
|
POP HL
|
|
CALL L797C
|
|
POP DE
|
|
RET
|
|
|
|
L60A5: NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
L60AA: PUSH AF
|
|
PUSH BC
|
|
PUSH DE
|
|
LD DE,L610D
|
|
CALL L7BB3
|
|
POP DE
|
|
POP BC
|
|
POP AF
|
|
RET
|
|
|
|
L60B7: INC HL
|
|
BIT 7,(HL)
|
|
JR Z,L60C7 ; (+00bH)
|
|
CALL L60C7
|
|
LD A,H
|
|
CPL
|
|
LD H,A
|
|
LD A,L
|
|
CPL
|
|
LD L,A
|
|
INC HL
|
|
RET
|
|
|
|
L60C7: DEC HL
|
|
LD A,(HL)
|
|
CP 091H
|
|
JP NC,04AEFH
|
|
CP 081H
|
|
JR C,L60E5 ; (+013H)
|
|
PUSH AF
|
|
INC HL
|
|
LD A,(HL)
|
|
INC HL
|
|
LD L,(HL)
|
|
LD H,A
|
|
POP AF
|
|
SET 7,H
|
|
L60DB: CP 090H
|
|
RET Z
|
|
INC A
|
|
SRL H
|
|
RR L
|
|
JR L60DB ; (-00aH)
|
|
|
|
L60E5: 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
|
|
; ---------------------------------------------------------------------------
|
|
L60EA: DB 09BH,03EH,0BCH,020H,000H ; FP 10^9 (1000000000)
|
|
L60EF: DB 098H,018H,096H,080H,000H ; FP 10^8 (100000000)
|
|
DB 094H,074H,024H,000H,000H ; FP 10^7 (10000000)
|
|
DB 091H,043H,050H,000H,000H ; FP 10^6 (1000000)
|
|
DB 08EH,01CH,040H,000H,000H ; FP 10^5 (100000)
|
|
DB 08AH,07AH,000H,000H,000H ; FP 10^4 (10000)
|
|
DB 087H,048H,000H,000H,000H ; FP 10^3 (1000)
|
|
L610D: DB 084H,020H,000H,000H,000H ; FP 10^2 (100)
|
|
L6112: DB 081H,000H,000H,000H,000H ; FP 10^1 (10)
|
|
DB 07DH,04CH,0CCH,0CCH,0CDH ; FP 10^-1 (0.1)
|
|
L611C: DB 066H,02BH,0CCH,077H,012H ; FP precision guard
|
|
L6121: LD HL,(L6304)
|
|
LD B,000H
|
|
L6126: LD DE,L610D
|
|
CALL L6049
|
|
JR C,L6134 ; (+006H)
|
|
CALL L5FFE
|
|
INC B
|
|
JR L6126 ; (-00eH)
|
|
|
|
L6134: LD DE,L6112
|
|
CALL L6049
|
|
JR NC,L6142 ; (+006H)
|
|
CALL L60AA
|
|
DEC B
|
|
JR L6134 ; (-00eH)
|
|
|
|
L6142: PUSH BC
|
|
CALL L61AD
|
|
CALL L623A
|
|
POP BC
|
|
PUSH DE
|
|
EX DE,HL
|
|
L614C: LD A,(HL)
|
|
OR A
|
|
JR Z,L6153 ; (+003H)
|
|
INC HL
|
|
JR L614C ; (-007H)
|
|
|
|
L6153: DEC HL
|
|
LD A,(HL)
|
|
INC HL
|
|
CP 030H
|
|
JR NZ,L615C ; (+002H)
|
|
INC B
|
|
DEC HL
|
|
L615C: LD A,045H
|
|
LD (HL),A
|
|
INC HL
|
|
LD A,B
|
|
LD B,02BH
|
|
BIT 7,A
|
|
JR Z,L616B ; (+004H)
|
|
NEG
|
|
LD B,02DH
|
|
L616B: LD (HL),B
|
|
INC HL
|
|
LD (HL),030H
|
|
L616F: SUB 00AH
|
|
JR C,L6176 ; (+003H)
|
|
INC (HL)
|
|
JR L616F ; (-007H)
|
|
|
|
L6176: ADD A,03AH
|
|
INC HL
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),000H
|
|
POP DE
|
|
RET
|
|
|
|
L617F: PUSH HL
|
|
CALL L60B7
|
|
LD DE,L84A7
|
|
PUSH DE
|
|
LD B,001H
|
|
RST 018H
|
|
DB 016H
|
|
POP HL
|
|
LD A,030H
|
|
LD B,005H
|
|
L6190: CP (HL)
|
|
JR NZ,L6198 ; (+005H)
|
|
INC HL
|
|
DJNZ L6190 ; (-006H)
|
|
JR L61A1 ; (+009H)
|
|
|
|
L6198: LD A,B
|
|
LD (L6301),A
|
|
LD A,001H
|
|
LD (L6302),A
|
|
L61A1: LD A,02EH
|
|
LD (L84AC),A
|
|
POP HL
|
|
CALL L608D
|
|
JP L61FD
|
|
|
|
L61AD: LD (L6304),HL
|
|
XOR A
|
|
LD (L6301),A
|
|
LD (L6302),A
|
|
PUSH HL
|
|
LD HL,L84A3
|
|
LD (HL),0FFH
|
|
LD B,021H
|
|
LD A,030H
|
|
L61C1: INC HL
|
|
LD (HL),A
|
|
DJNZ L61C1 ; (-004H)
|
|
LD A,02EH
|
|
LD (L84AC),A
|
|
POP HL
|
|
LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
LD DE,L60EA
|
|
CALL L7A1C
|
|
CCF
|
|
RET C
|
|
LD DE,L611C
|
|
CALL L7A1C
|
|
RET C
|
|
LD DE,L84D7
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
LD A,(HL)
|
|
CP 081H
|
|
JR C,L61FD ; (+013H)
|
|
CP 090H
|
|
JP C,L617F
|
|
LD IX,L84A4
|
|
LD DE,L60EF
|
|
CALL L62C4
|
|
CALL L62F8
|
|
RET NC
|
|
L61FD: LD IX,L84AD
|
|
L6201: LD DE,L60EA
|
|
PUSH BC
|
|
PUSH IX
|
|
CALL L7BB3
|
|
POP IX
|
|
POP BC
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
CALL L62C4
|
|
CALL L62F8
|
|
JR C,L6201 ; (-019H)
|
|
RET
|
|
|
|
L621B: LD A,005H
|
|
LD (L84CE),A
|
|
PUSH HL
|
|
LD DE,L84DF
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
CALL L61AD
|
|
CALL L6237
|
|
POP HL
|
|
RET
|
|
|
|
L6231: LD DE,L84AC
|
|
LD (DE),A
|
|
DEC DE
|
|
RET
|
|
|
|
L6237: JP C,L6121
|
|
L623A: LD HL,(L6304)
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,L6231 ; (-010H)
|
|
LD DE,L84A4
|
|
DEC DE
|
|
EX DE,HL
|
|
LD DE,00001H
|
|
L6249: INC HL
|
|
LD A,(HL)
|
|
CP 02EH
|
|
JR NZ,L6254 ; (+005H)
|
|
LD DE,L0000
|
|
JR L6249 ; (-00bH)
|
|
|
|
L6254: CP 030H
|
|
JR Z,L6249 ; (-00fH)
|
|
ADD HL,DE
|
|
LD DE,00008H
|
|
ADD HL,DE
|
|
LD A,(HL)
|
|
L625E: LD (HL),030H
|
|
CP 035H
|
|
JR C,L6273 ; (+00fH)
|
|
L6264: DEC HL
|
|
LD A,(HL)
|
|
CP 02EH
|
|
JR Z,L6264 ; (-006H)
|
|
INC A
|
|
JR Z,L62AD ; (+040H)
|
|
LD (HL),A
|
|
CP 03AH
|
|
JR Z,L625E ; (-014H)
|
|
INC HL
|
|
L6273: LD DE,L84AC
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,DE
|
|
EX DE,HL
|
|
JR C,L6282 ; (+005H)
|
|
LD HL,L84AC
|
|
JR L6299 ; (+017H)
|
|
|
|
L6282: DEC HL
|
|
LD A,(HL)
|
|
CP 02EH
|
|
DEC HL
|
|
JR Z,L6298 ; (+00fH)
|
|
INC HL
|
|
CP 030H
|
|
JR Z,L6273 ; (-01bH)
|
|
PUSH HL
|
|
LD DE,L84B5
|
|
SBC HL,DE
|
|
POP HL
|
|
JP NC,L6121
|
|
L6298: INC HL
|
|
L6299: LD (HL),000H
|
|
LD DE,L84A4
|
|
L629E: LD A,(DE)
|
|
CP 030H
|
|
JR NZ,L62A6 ; (+003H)
|
|
INC DE
|
|
JR L629E ; (-008H)
|
|
|
|
L62A6: OR A
|
|
RET NZ
|
|
DEC DE
|
|
LD A,030H
|
|
LD (DE),A
|
|
RET
|
|
|
|
L62AD: LD HL,L849C
|
|
LD DE,L62BE
|
|
PUSH BC
|
|
LD BC,L0006
|
|
LDIR
|
|
POP BC
|
|
LD DE,L849C
|
|
RET
|
|
|
|
L62BE: LD SP,L2B45
|
|
JR NC,L62FB ; (+038H)
|
|
NOP
|
|
L62C4: LD A,(DE)
|
|
CP 07DH
|
|
RET Z
|
|
L62C8: CALL L7A1C
|
|
JR C,L62E0 ; (+013H)
|
|
INC (IX+000H)
|
|
PUSH IX
|
|
PUSH BC
|
|
CALL L797C
|
|
POP BC
|
|
POP IX
|
|
LD A,001H
|
|
LD (L6302),A
|
|
JR L62C8 ; (-018H)
|
|
|
|
L62E0: INC IX
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
LD A,(L6302)
|
|
LD B,A
|
|
LD A,(L6301)
|
|
ADD A,B
|
|
LD (L6301),A
|
|
CALL L62F8
|
|
RET NC
|
|
JR L62C4 ; (-034H)
|
|
|
|
L62F8: LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
L62FB: LD A,(L6301)
|
|
CP 009H
|
|
RET
|
|
|
|
L6301: NOP
|
|
L6302: NOP
|
|
L6303: NOP
|
|
L6304: NOP
|
|
NOP
|
|
L6306: NOP
|
|
NOP
|
|
L6308: NOP
|
|
NOP
|
|
L630A: LD HL,(L6308)
|
|
PUSH DE
|
|
L630E: LD A,(HL)
|
|
OR A
|
|
JP Z,04AF2H
|
|
CALL L63AC
|
|
JR Z,L631D ; (+005H)
|
|
LD (BC),A
|
|
INC BC
|
|
INC HL
|
|
JR L630E ; (-00fH)
|
|
|
|
L631D: EX AF,AF'
|
|
LD A,(L84CE)
|
|
CP 003H
|
|
JP NZ,L63D5
|
|
EX AF,AF'
|
|
CP 021H
|
|
JP Z,L6334
|
|
CP 026H
|
|
JP Z,L635B
|
|
JP 04AF5H
|
|
|
|
L6334: EX (SP),HL
|
|
PUSH BC
|
|
CALL L6E7E
|
|
OR A
|
|
LD A,020H
|
|
JR Z,L633F ; (+001H)
|
|
LD A,(DE)
|
|
L633F: POP BC
|
|
LD (BC),A
|
|
INC BC
|
|
L6342: POP HL
|
|
INC HL
|
|
L6344: LD A,(HL)
|
|
OR A
|
|
JR Z,L6352 ; (+00aH)
|
|
CALL L63AC
|
|
JR Z,L6355 ; (+008H)
|
|
LD (BC),A
|
|
INC BC
|
|
INC HL
|
|
JR L6344 ; (-00eH)
|
|
|
|
L6352: LD HL,(L6306)
|
|
L6355: LD (L6308),HL
|
|
XOR A
|
|
LD (BC),A
|
|
RET
|
|
|
|
L635B: LD D,002H
|
|
L635D: INC HL
|
|
LD A,(HL)
|
|
CP 026H
|
|
JR Z,L636B ; (+008H)
|
|
INC D
|
|
CP 020H
|
|
JR Z,L635D ; (-00bH)
|
|
JP 04AF2H
|
|
|
|
L636B: EX (SP),HL
|
|
LD A,(HL)
|
|
CP D
|
|
JR C,L6385 ; (+015H)
|
|
INC HL
|
|
CALL INDRCT
|
|
PUSH BC
|
|
LD BC,(STRST)
|
|
ADD HL,BC
|
|
POP BC
|
|
L637B: LD A,(HL)
|
|
LD (BC),A
|
|
INC BC
|
|
INC HL
|
|
DEC D
|
|
JR NZ,L637B ; (-007H)
|
|
JP L6342
|
|
|
|
L6385: LD E,(HL)
|
|
INC HL
|
|
CALL INDRCT
|
|
LD A,E
|
|
OR A
|
|
JR Z,L63A2 ; (+014H)
|
|
PUSH BC
|
|
LD BC,(STRST)
|
|
ADD HL,BC
|
|
POP BC
|
|
L6395: LD A,(HL)
|
|
LD (BC),A
|
|
INC BC
|
|
INC HL
|
|
DEC E
|
|
JR Z,L63A6 ; (+00aH)
|
|
DEC D
|
|
JR NZ,L6395 ; (-00aH)
|
|
JP L6342
|
|
|
|
L63A2: LD A,020H
|
|
LD (BC),A
|
|
INC BC
|
|
L63A6: DEC D
|
|
JR NZ,L63A2 ; (-007H)
|
|
JP L6342
|
|
|
|
L63AC: CALL CHKACC
|
|
INC B
|
|
LD HL,L2326
|
|
DEC HL
|
|
RET Z
|
|
LD E,A
|
|
CP 02AH
|
|
JR Z,L63CF ; (+015H)
|
|
CALL L65AC
|
|
JR Z,L63CF ; (+010H)
|
|
CP 02EH
|
|
LD E,023H
|
|
JR Z,L63CF ; (+00aH)
|
|
CP 0C4H
|
|
RET NZ
|
|
INC HL
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,04AF2H
|
|
RET
|
|
|
|
L63CF: INC HL
|
|
LD A,(HL)
|
|
CP E
|
|
DEC HL
|
|
LD A,(HL)
|
|
RET
|
|
|
|
L63D5: XOR A
|
|
LD (0651CH),A
|
|
LD (0656CH),A
|
|
LD (L6554),A
|
|
LD (06512H),A
|
|
LD (064CCH),A
|
|
LD (064F9H),A
|
|
LD (06517H),A
|
|
LD (064C5H),A
|
|
DEC A
|
|
LD (064C2H),A
|
|
EX AF,AF'
|
|
LD D,000H
|
|
CP 023H
|
|
JP Z,L6431
|
|
CP 02AH
|
|
JP Z,L6412
|
|
CALL L65AC
|
|
JP Z,L6423
|
|
CP 02EH
|
|
JP Z,L6433
|
|
CP 02BH
|
|
JP Z,L642C
|
|
JP 04AF5H
|
|
|
|
L6412: LD A,001H
|
|
LD (0656CH),A
|
|
INC HL
|
|
INC D
|
|
INC HL
|
|
INC D
|
|
LD A,(HL)
|
|
CALL L65AC
|
|
JR NZ,L6433 ; (+012H)
|
|
JR L6425 ; (+002H)
|
|
|
|
L6423: INC HL
|
|
INC D
|
|
L6425: INC HL
|
|
INC D
|
|
LD (L6554),A
|
|
JR L6433 ; (+007H)
|
|
|
|
L642C: LD A,001H
|
|
LD (0651CH),A
|
|
L6431: INC HL
|
|
INC D
|
|
L6433: EX DE,HL
|
|
DEC H
|
|
L6435: INC H
|
|
LD A,(DE)
|
|
INC DE
|
|
CP 023H
|
|
JR Z,L6435 ; (-007H)
|
|
CP 02CH
|
|
JR NZ,L6447 ; (+007H)
|
|
LD A,001H
|
|
LD (064CCH),A
|
|
JR L6435 ; (-012H)
|
|
|
|
L6447: CP 02EH
|
|
JR Z,L646E ; (+023H)
|
|
CP 02DH
|
|
JR NZ,L6457 ; (+008H)
|
|
LD A,001H
|
|
LD (06512H),A
|
|
INC DE
|
|
JR L6467 ; (+010H)
|
|
|
|
L6457: CP 02BH
|
|
JR NZ,L6467 ; (+00cH)
|
|
LD A,(0651CH)
|
|
OR A
|
|
JR NZ,L6467 ; (+006H)
|
|
LD A,001H
|
|
LD (06517H),A
|
|
INC DE
|
|
L6467: DEC DE
|
|
LD A,H
|
|
LD (064F9H),A
|
|
JR L64A1 ; (+033H)
|
|
|
|
L646E: LD A,H
|
|
LD (064F9H),A
|
|
LD H,0FFH
|
|
L6474: INC H
|
|
LD A,(DE)
|
|
INC DE
|
|
CP 023H
|
|
JR Z,L6474 ; (-007H)
|
|
CP 02DH
|
|
JR NZ,L6487 ; (+008H)
|
|
LD A,001H
|
|
LD (06512H),A
|
|
INC DE
|
|
JR L6497 ; (+010H)
|
|
|
|
L6487: CP 02BH
|
|
JR NZ,L6497 ; (+00cH)
|
|
LD A,(0651CH)
|
|
OR A
|
|
JR NZ,L6497 ; (+006H)
|
|
LD A,001H
|
|
LD (06517H),A
|
|
INC DE
|
|
L6497: DEC DE
|
|
LD A,H
|
|
LD (064C2H),A
|
|
JR L64A1 ; (+003H)
|
|
|
|
L649E: POP DE
|
|
JR L64B3 ; (+012H)
|
|
|
|
L64A1: LD H,004H
|
|
PUSH DE
|
|
L64A4: LD A,(DE)
|
|
INC DE
|
|
CP 05EH
|
|
JR NZ,L649E ; (-00cH)
|
|
DEC H
|
|
JR NZ,L64A4 ; (-009H)
|
|
POP AF
|
|
LD A,001H
|
|
LD (064C5H),A
|
|
L64B3: POP HL
|
|
PUSH DE
|
|
INC HL
|
|
LD A,(HL)
|
|
RES 7,(HL)
|
|
DEC HL
|
|
LD (06549H),A
|
|
LD A,(064F9H)
|
|
LD D,A
|
|
LD A,000H
|
|
LD E,A
|
|
LD A,000H
|
|
PUSH BC
|
|
CALL L65BE
|
|
POP BC
|
|
LD A,000H
|
|
OR A
|
|
JR Z,L6511 ; (+041H)
|
|
PUSH BC
|
|
PUSH DE
|
|
LD A,(064F9H)
|
|
LD L,A
|
|
LD H,000H
|
|
ADD HL,DE
|
|
LD DE,L849C
|
|
LD C,000H
|
|
DEC HL
|
|
L64DF: LD B,003H
|
|
L64E1: LD A,(HL)
|
|
CP 020H
|
|
JR Z,L64F8 ; (+012H)
|
|
INC C
|
|
LD (DE),A
|
|
INC DE
|
|
DEC HL
|
|
DJNZ L64E1 ; (-00bH)
|
|
LD A,(HL)
|
|
CP 020H
|
|
JR Z,L64F8 ; (+007H)
|
|
LD A,02CH
|
|
LD (DE),A
|
|
INC DE
|
|
INC C
|
|
JR L64DF ; (-019H)
|
|
|
|
L64F8: LD A,000H
|
|
CP C
|
|
JP C,04AEFH
|
|
LD B,C
|
|
LD L,A
|
|
LD H,000H
|
|
POP DE
|
|
PUSH DE
|
|
ADD HL,DE
|
|
LD DE,L849C
|
|
DEC HL
|
|
L6509: LD A,(DE)
|
|
LD (HL),A
|
|
DEC HL
|
|
INC DE
|
|
DJNZ L6509 ; (-006H)
|
|
POP DE
|
|
POP BC
|
|
L6511: LD A,000H
|
|
OR A
|
|
JR NZ,L6553 ; (+03dH)
|
|
LD A,000H
|
|
OR A
|
|
JR NZ,L6553 ; (+038H)
|
|
LD A,000H
|
|
OR A
|
|
JR NZ,L6548 ; (+028H)
|
|
LD A,(06549H)
|
|
RLCA
|
|
JR NC,L6553 ; (+02dH)
|
|
LD A,(DE)
|
|
CP 020H
|
|
LD H,02DH
|
|
JR Z,L6532 ; (+005H)
|
|
CP 030H
|
|
JP NZ,04AEFH
|
|
L6532: PUSH DE
|
|
L6533: LD A,(DE)
|
|
INC DE
|
|
CP 020H
|
|
JR Z,L6533 ; (-006H)
|
|
CP 030H
|
|
JR Z,L6533 ; (-00aH)
|
|
OR A
|
|
JR NZ,L6541 ; (+001H)
|
|
DEC DE
|
|
L6541: DEC DE
|
|
DEC DE
|
|
LD A,H
|
|
LD (DE),A
|
|
POP DE
|
|
JR L6553 ; (+00bH)
|
|
|
|
L6548: LD A,000H
|
|
RLCA
|
|
LD H,02BH
|
|
JR NC,L6532 ; (-01dH)
|
|
LD H,02DH
|
|
JR L6532 ; (-021H)
|
|
|
|
L6553: DB 03EH ; LD A,nn opcode (self-modifying: operand at L6554)
|
|
L6554: DB 000H ; Operand byte — patched by LD (L6554),A
|
|
OR A
|
|
JR Z,L656B ; (+013H)
|
|
LD A,(DE)
|
|
CP 020H
|
|
JR NZ,L656B ; (+00eH)
|
|
PUSH DE
|
|
L655E: LD A,(DE)
|
|
INC DE
|
|
CP 020H
|
|
JR Z,L655E ; (-006H)
|
|
DEC DE
|
|
DEC DE
|
|
LD A,(L6554)
|
|
LD (DE),A
|
|
POP DE
|
|
L656B: LD A,000H
|
|
OR A
|
|
JR Z,L657D ; (+00dH)
|
|
PUSH DE
|
|
L6571: LD A,(DE)
|
|
CP 020H
|
|
JR NZ,L657C ; (+006H)
|
|
LD A,02AH
|
|
LD (DE),A
|
|
INC DE
|
|
JR L6571 ; (-00bH)
|
|
|
|
L657C: POP DE
|
|
L657D: LD A,(DE)
|
|
OR A
|
|
JR Z,L6586 ; (+005H)
|
|
LD (BC),A
|
|
INC BC
|
|
INC DE
|
|
JR L657D ; (-009H)
|
|
|
|
L6586: LD A,(06517H)
|
|
OR A
|
|
JR Z,L659A ; (+00eH)
|
|
LD A,(06549H)
|
|
RLCA
|
|
LD A,02BH
|
|
L6592: JR NC,L6596 ; (+002H)
|
|
LD A,02DH
|
|
L6596: LD (BC),A
|
|
INC BC
|
|
JR L65A8 ; (+00eH)
|
|
|
|
L659A: LD A,(06512H)
|
|
OR A
|
|
JR Z,L65A8 ; (+008H)
|
|
LD A,(06549H)
|
|
RLCA
|
|
LD A,020H
|
|
JR L6592 ; (-016H)
|
|
|
|
L65A8: POP HL
|
|
JP L6344
|
|
|
|
L65AC: PUSH HL
|
|
LD HL,L0036
|
|
BIT 6,(HL)
|
|
POP HL
|
|
JR NZ,L65B8 ; (+003H)
|
|
CP 07DH
|
|
RET
|
|
|
|
L65B8: CP FDPD
|
|
RET Z
|
|
CP 024H
|
|
RET
|
|
|
|
L65BE: OR A
|
|
JP Z,L6649
|
|
PUSH DE
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,L6606 ; (+03fH)
|
|
PUSH HL
|
|
LD A,D
|
|
LD DE,L84D7
|
|
PUSH AF
|
|
CALL L5E90
|
|
POP AF
|
|
OR A
|
|
JR Z,L65DF ; (+00bH)
|
|
LD B,A
|
|
LD HL,L84D7
|
|
JR L65DD ; (+003H)
|
|
|
|
L65DA: CALL L60AA
|
|
L65DD: DJNZ L65DA ; (-005H)
|
|
L65DF: POP HL
|
|
LD B,000H
|
|
L65E2: LD DE,L84D7
|
|
CALL L6049
|
|
JR C,L65F0 ; (+006H)
|
|
CALL L5FFE
|
|
INC B
|
|
JR L65E2 ; (-00eH)
|
|
|
|
L65F0: PUSH HL
|
|
LD HL,L84D7
|
|
CALL L5FFE
|
|
POP HL
|
|
L65F8: LD DE,L84D7
|
|
CALL L6049
|
|
JR NC,L6606 ; (+006H)
|
|
CALL L60AA
|
|
DEC B
|
|
JR L65F8 ; (-00eH)
|
|
|
|
L6606: POP DE
|
|
PUSH BC
|
|
CALL L6663
|
|
POP BC
|
|
PUSH DE
|
|
LD A,(DE)
|
|
CP 02EH
|
|
JR NZ,L6624 ; (+012H)
|
|
LD DE,L84AC
|
|
DEC DE
|
|
LD A,(DE)
|
|
CP 031H
|
|
POP DE
|
|
PUSH DE
|
|
JR NZ,L6640 ; (+023H)
|
|
EX DE,HL
|
|
INC HL
|
|
LD (HL),031H
|
|
DEC HL
|
|
JR L663E ; (+01aH)
|
|
|
|
L6624: LD A,(DE)
|
|
CP 031H
|
|
JR NZ,L6640 ; (+017H)
|
|
EX DE,HL
|
|
INC HL
|
|
LD A,(HL)
|
|
DEC HL
|
|
CP 02EH
|
|
LD A,030H
|
|
JR Z,L6635 ; (+002H)
|
|
LD A,020H
|
|
L6635: LD (HL),A
|
|
L6636: INC HL
|
|
LD A,(HL)
|
|
CP 02EH
|
|
JR Z,L6636 ; (-006H)
|
|
LD (HL),031H
|
|
L663E: EX DE,HL
|
|
INC B
|
|
L6640: LD A,(DE)
|
|
INC DE
|
|
OR A
|
|
JR NZ,L6640 ; (-005H)
|
|
DEC DE
|
|
JP L615C
|
|
|
|
L6649: PUSH DE
|
|
CALL L6663
|
|
POP AF
|
|
OR A
|
|
RET NZ
|
|
PUSH HL
|
|
LD HL,L84AC
|
|
DEC HL
|
|
LD A,030H
|
|
CP (HL)
|
|
L6658: JP NZ,04AEFH
|
|
DEC HL
|
|
LD A,020H
|
|
CP (HL)
|
|
JR NZ,L6658 ; (-009H)
|
|
POP HL
|
|
RET
|
|
|
|
L6663: PUSH DE
|
|
CALL L61AD
|
|
JP C,04AEFH
|
|
POP HL
|
|
PUSH HL
|
|
LD H,000H
|
|
INC L
|
|
JR Z,L6672 ; (+001H)
|
|
DEC L
|
|
L6672: LD DE,L84AD
|
|
ADD HL,DE
|
|
LD A,(HL)
|
|
LD (HL),000H
|
|
LD DE,L3036
|
|
CP 035H
|
|
JR C,L668F ; (+00fH)
|
|
L6680: DEC HL
|
|
LD A,(HL)
|
|
CP 02EH
|
|
JR Z,L6680 ; (-006H)
|
|
INC A
|
|
JP Z,04AEFH
|
|
LD (HL),A
|
|
CP 03AH
|
|
JR Z,0667AH ; (-015H)
|
|
L668F: LD HL,KEYBM1
|
|
LD DE,L2000
|
|
L6695: LD (HL),D
|
|
INC HL
|
|
DEC E
|
|
JR NZ,L6695 ; (-005H)
|
|
POP HL
|
|
PUSH HL
|
|
LD E,H
|
|
LD D,000H
|
|
LD HL,KEYBUF
|
|
ADD HL,DE
|
|
PUSH HL
|
|
LD HL,L84A3
|
|
LD (HL),020H
|
|
INC HL
|
|
LD D,007H
|
|
L66AC: LD A,(HL)
|
|
CP 030H
|
|
JR NZ,L66B7 ; (+006H)
|
|
LD (HL),020H
|
|
INC HL
|
|
DEC D
|
|
JR NZ,L66AC ; (-00bH)
|
|
L66B7: POP HL
|
|
PUSH HL
|
|
LD B,E
|
|
LD A,B
|
|
OR A
|
|
JR Z,L66D5 ; (+017H)
|
|
LD DE,L84AC
|
|
L66C1: DEC HL
|
|
DEC DE
|
|
LD A,(DE)
|
|
LD (HL),A
|
|
CP 020H
|
|
JR Z,L66D5 ; (+00cH)
|
|
DJNZ L66C1 ; (-00aH)
|
|
DEC DE
|
|
LD A,(DE)
|
|
CP 020H
|
|
JR Z,L66D5 ; (+004H)
|
|
INC A
|
|
JP NZ,04AEFH
|
|
L66D5: POP HL
|
|
POP DE
|
|
INC E
|
|
JR Z,L66E9 ; (+00fH)
|
|
LD B,E
|
|
LD DE,L84AD
|
|
LD (HL),02EH
|
|
L66E0: INC HL
|
|
DEC B
|
|
JR Z,L66E9 ; (+005H)
|
|
LD A,(DE)
|
|
INC DE
|
|
LD (HL),A
|
|
JR L66E0 ; (-009H)
|
|
|
|
L66E9: LD (HL),000H
|
|
LD DE,KEYBUF
|
|
RET
|
|
|
|
L66EF: PUSH DE
|
|
PUSH BC
|
|
LD C,000H
|
|
DEC DE
|
|
L66F4: INC DE
|
|
L66F5: CALL L687B
|
|
OR A
|
|
JR Z,L672C ; (+031H)
|
|
CP 0FFH
|
|
JR Z,L6730 ; (+031H)
|
|
CP 060H
|
|
JP NC,L4AEC
|
|
CP 020H
|
|
JR C,L66F4 ; (-014H)
|
|
LD IX,L66F5
|
|
PUSH IX
|
|
CP 022H
|
|
JR Z,L674B ; (+039H)
|
|
CP 027H
|
|
JR Z,L673E ; (+028H)
|
|
CP 03FH
|
|
JR Z,L6737 ; (+01dH)
|
|
CP 02EH
|
|
JP Z,L689E
|
|
CP 024H
|
|
JP Z,L68B8
|
|
CALL L5EC4
|
|
JR C,L6773 ; (+04aH)
|
|
JP L6885
|
|
|
|
L672C: LD (HL),A
|
|
POP BC
|
|
POP DE
|
|
RET
|
|
|
|
L6730: LD (HL),LSE4
|
|
CALL L6757
|
|
JR L66F5 ; (-042H)
|
|
|
|
L6737: LD A,08FH
|
|
CALL L6756
|
|
JR L67B4 ; (+076H)
|
|
|
|
L673E: LD (HL),03AH
|
|
CALL L6757
|
|
LD (HL),027H
|
|
CALL L6758
|
|
JP L681B
|
|
|
|
L674B: LD (HL),A
|
|
CALL L6757
|
|
L674F: LD A,(DE)
|
|
OR A
|
|
RET Z
|
|
CP 022H
|
|
JR NZ,L674B ; (-00bH)
|
|
L6756: LD (HL),A
|
|
L6757: INC DE
|
|
L6758: INC HL
|
|
L6759: INC C
|
|
RET NZ
|
|
JP 04B01H
|
|
|
|
L675E: POP BC
|
|
LD A,(DE)
|
|
CALL L5ECB
|
|
JR C,L6756 ; (-00fH)
|
|
L6765: CALL L6756
|
|
LD A,(DE)
|
|
CP 024H
|
|
JR Z,L6756 ; (-017H)
|
|
CALL L5EC4
|
|
RET C
|
|
JR L6765 ; (-00eH)
|
|
|
|
L6773: PUSH BC
|
|
LD BC,STMTWORDTBL
|
|
CALL L682A
|
|
JR NC,L67AA ; (+02eH)
|
|
LD BC,EXTWORDTBL
|
|
CALL L682A
|
|
LD C,0FEH
|
|
JR NC,L6790 ; (+00aH)
|
|
LD BC,FUNCWORDTBL
|
|
CALL L682A
|
|
LD C,0FFH
|
|
JR C,L675E ; (-032H)
|
|
L6790: LD (HL),C
|
|
INC HL
|
|
LD (HL),A
|
|
POP BC
|
|
CALL L6759
|
|
CALL L6758
|
|
CP 0B4H
|
|
RET NZ
|
|
CALL L687B
|
|
CP 03DH
|
|
RET NZ
|
|
LD (HL),QDPC
|
|
CALL L6757
|
|
JR L67F0 ; (+046H)
|
|
|
|
L67AA: POP BC
|
|
CP 0DFH
|
|
DB 020H
|
|
LD (BC),A
|
|
LD (HL),0A8H
|
|
CALL L6758
|
|
L67B4: CP 097H
|
|
JR Z,L681B ; (+063H)
|
|
CP 094H
|
|
JR Z,L681B ; (+05fH)
|
|
CP 0C2H
|
|
JR Z,L6811 ; (+051H)
|
|
CP LSE2
|
|
JR Z,L67F0 ; (+02cH)
|
|
CP LSE0
|
|
RET NC
|
|
PUSH AF
|
|
CALL L687B
|
|
CP 02FH
|
|
JR NZ,L67DC ; (+00dH)
|
|
LD (HL),FDPD
|
|
CALL L6757
|
|
CALL L6A1D
|
|
CALL L6756
|
|
JR L67EC ; (+010H)
|
|
|
|
L67DC: CP 023H
|
|
JR NZ,L67EC ; (+00cH)
|
|
CALL L6756
|
|
CALL L6A1D
|
|
CALL L5EC4
|
|
CALL NC,L6885
|
|
L67EC: POP AF
|
|
CP 08DH
|
|
RET NC
|
|
L67F0: CALL L687B
|
|
CP 022H
|
|
JR NZ,L67FC ; (+005H)
|
|
CALL L674B
|
|
JR L67F0 ; (-00cH)
|
|
|
|
L67FC: CP 02CH
|
|
RET C
|
|
CP 02FH
|
|
JR C,L680C ; (+009H)
|
|
CALL L5EC4
|
|
RET C
|
|
CALL L68AF
|
|
JR L67F0 ; (-01cH)
|
|
|
|
L680C: CALL L6756
|
|
JR L67F0 ; (-021H)
|
|
|
|
L6811: DEC HL
|
|
LD (HL),03AH ; Store ':' at previous position
|
|
INC HL
|
|
LD (HL),A
|
|
CALL L6758
|
|
JR L67F0 ; (-02bH)
|
|
|
|
L681B: LD A,(DE)
|
|
CALL L4141
|
|
RET Z
|
|
CALL L6756
|
|
CP 022H
|
|
CALL Z,L674F
|
|
JR L681B ; (-00fH)
|
|
|
|
L682A: PUSH HL
|
|
PUSH DE
|
|
LD H,B
|
|
LD L,C
|
|
LD B,07FH
|
|
L6830: POP DE
|
|
PUSH DE
|
|
INC B
|
|
LD A,(HL)
|
|
CP 0FFH
|
|
JR NZ,L683C ; (+004H)
|
|
POP DE
|
|
POP HL
|
|
SCF
|
|
RET
|
|
|
|
L683C: CP 02EH
|
|
JR NZ,L6849 ; (+009H)
|
|
INC HL
|
|
DEC DE
|
|
LD A,(DE)
|
|
INC DE
|
|
CALL L5ECB
|
|
JR NC,L6868 ; (+01fH)
|
|
L6849: LD A,(DE)
|
|
CP 020H
|
|
JR NZ,L685A ; (+00cH)
|
|
LD A,(HL)
|
|
AND 07FH
|
|
SUB 041H
|
|
CP 01AH
|
|
JR C,L6868 ; (+011H)
|
|
CALL L6A1C
|
|
L685A: LD C,(HL)
|
|
INC HL
|
|
INC DE
|
|
CP 02EH
|
|
JR Z,L6870 ; (+00fH)
|
|
SUB C
|
|
JR Z,L6849 ; (-01bH)
|
|
CP 080H
|
|
JR Z,L6876 ; (+00eH)
|
|
L6868: DEC HL
|
|
L6869: BIT 7,(HL)
|
|
INC HL
|
|
JR Z,L6869 ; (-005H)
|
|
JR L6830 ; (-040H)
|
|
|
|
L6870: LD A,B
|
|
CP 0E8H
|
|
JR NC,L6868 ; (-00dH)
|
|
CCF
|
|
L6876: POP HL
|
|
POP HL
|
|
LD (HL),B
|
|
LD A,B
|
|
RET
|
|
|
|
L687B: LD A,(DE)
|
|
CP 020H
|
|
RET NZ
|
|
LD (HL),A
|
|
CALL L6757
|
|
JR L687B ; (-00aH)
|
|
|
|
L6885: EX AF,AF'
|
|
PUSH DE
|
|
CALL L6A1C
|
|
POP DE
|
|
CALL L5EC4
|
|
JR NC,L689E ; (+00eH)
|
|
CP 02EH
|
|
JR Z,L689E ; (+00aH)
|
|
CP 045H
|
|
JR Z,L689E ; (+006H)
|
|
EX AF,AF'
|
|
SUB 02FH
|
|
JP L689E
|
|
|
|
L689E: PUSH BC
|
|
LD (HL),015H
|
|
INC HL
|
|
PUSH HL
|
|
CALL L5EDC
|
|
POP HL
|
|
LD BC,00005H
|
|
ADD HL,BC
|
|
LD A,006H
|
|
JR L68D2 ; (+023H)
|
|
|
|
L68AF: PUSH BC
|
|
CALL L6A11
|
|
LD (HL),00BH
|
|
INC HL
|
|
JR L68CC ; (+014H)
|
|
|
|
L68B8: LD (HL),A
|
|
INC DE
|
|
LD A,(DE)
|
|
RST 018H
|
|
DB 015H
|
|
JP C,L6758
|
|
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
|
|
L68CC: LD A,003H
|
|
LD (HL),C
|
|
INC HL
|
|
LD (HL),B
|
|
INC HL
|
|
L68D2: POP BC
|
|
ADD A,C
|
|
JP C,04B01H
|
|
LD C,A
|
|
L68D8: DEC DE
|
|
LD A,(DE)
|
|
CP 020H
|
|
JR Z,L68D8 ; (-006H)
|
|
INC DE
|
|
RET
|
|
|
|
L68E0: PUSH HL
|
|
PUSH DE
|
|
PUSH BC
|
|
EXX
|
|
LD B,000H
|
|
EXX
|
|
LD C,000H
|
|
L68E9: LD A,(HL)
|
|
OR A
|
|
JR Z,L691D ; (+030H)
|
|
LD BC,L68E9
|
|
PUSH BC
|
|
CP 027H
|
|
JR Z,L6937 ; (+042H)
|
|
INC HL
|
|
LD BC,STMTWORDTBL
|
|
CP 020H
|
|
JR C,L695F ; (+062H)
|
|
CP 022H
|
|
JR Z,L6948 ; (+047H)
|
|
CP 03AH
|
|
JR Z,L6955 ; (+050H)
|
|
CP 097H
|
|
JR Z,L6933 ; (+02aH)
|
|
CP 094H
|
|
JR Z,L6933 ; (+026H)
|
|
CP LSE4
|
|
JR Z,L6922 ; (+011H)
|
|
CP 0FEH
|
|
JR NC,L6927 ; (+012H)
|
|
CP 080H
|
|
JP NC,L69A3
|
|
JP L69C0
|
|
|
|
L691D: LD (DE),A
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
RET
|
|
|
|
L6922: LD A,0FFH
|
|
JP L69C0
|
|
|
|
L6927: LD BC,FUNCWORDTBL
|
|
JR NZ,L692F ; (+003H)
|
|
LD BC,EXTWORDTBL
|
|
L692F: LD A,(HL)
|
|
INC HL
|
|
JR L69A3 ; (+070H)
|
|
|
|
L6933: CALL L69A3
|
|
RET Z
|
|
L6937: LD A,(HL)
|
|
CALL L4141
|
|
RET Z
|
|
CALL L69C0
|
|
LD A,(HL)
|
|
INC HL
|
|
CP 022H
|
|
CALL Z,L694B
|
|
JR L6937 ; (-011H)
|
|
|
|
L6948: CALL L69C0
|
|
L694B: LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
INC HL
|
|
CP 022H
|
|
JR NZ,L6948 ; (-00bH)
|
|
JR L69C0 ; (+06bH)
|
|
|
|
L6955: LD (DE),A
|
|
LD A,(HL)
|
|
CP 0C2H
|
|
RET Z
|
|
CP 027H
|
|
RET Z
|
|
JR L69C3 ; (+064H)
|
|
|
|
L695F: CP 015H
|
|
JR Z,L6993 ; (+030H)
|
|
CP 00BH
|
|
JR NC,L696C ; (+005H)
|
|
DEC A
|
|
OR 030H
|
|
JR L69C0 ; (+054H)
|
|
|
|
L696C: PUSH DE
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
INC HL
|
|
PUSH HL
|
|
CP 012H
|
|
JR Z,L6982 ; (+00cH)
|
|
CP 00CH
|
|
JR C,L6982 ; (+008H)
|
|
JR NZ,L69CF ; (+053H)
|
|
EX DE,HL
|
|
INC HL
|
|
INC HL
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
L6982: EX DE,HL
|
|
CALL L5E66
|
|
LD B,D
|
|
LD C,E
|
|
POP HL
|
|
POP DE
|
|
L698A: LD A,(BC)
|
|
OR A
|
|
RET Z
|
|
CALL L69C0
|
|
INC BC
|
|
JR L698A ; (-009H)
|
|
|
|
L6993: PUSH HL
|
|
PUSH DE
|
|
CALL L621B
|
|
LD B,D
|
|
LD C,E
|
|
POP DE
|
|
POP HL
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
JR L698A ; (-019H)
|
|
|
|
L69A3: CP 080H
|
|
JR Z,L69B1 ; (+00aH)
|
|
EX AF,AF'
|
|
L69A8: LD A,(BC)
|
|
RLCA
|
|
INC BC
|
|
JR NC,L69A8 ; (-005H)
|
|
EX AF,AF'
|
|
DEC A
|
|
JR L69A3 ; (-00eH)
|
|
|
|
L69B1: LD A,(BC)
|
|
BIT 7,A
|
|
JR NZ,L69BE ; (+008H)
|
|
CP 02EH
|
|
CALL NZ,L69C0
|
|
INC BC
|
|
JR L69B1 ; (-00dH)
|
|
|
|
L69BE: AND 07FH
|
|
L69C0: LD (DE),A
|
|
OR A
|
|
RET Z
|
|
L69C3: INC DE
|
|
EXX
|
|
INC B
|
|
EXX
|
|
RET NZ
|
|
XOR A
|
|
LD (DE),A
|
|
DEC DE
|
|
EXX
|
|
DEC B
|
|
EXX
|
|
RET
|
|
|
|
L69CF: LD A,024H
|
|
EX AF,AF'
|
|
EX DE,HL
|
|
CALL L69E0
|
|
LD B,D
|
|
LD C,E
|
|
POP HL
|
|
POP DE
|
|
EX AF,AF'
|
|
CALL L69C0
|
|
JR L698A ; (-056H)
|
|
|
|
L69E0: LD DE,L84A8
|
|
PUSH DE
|
|
LD A,H
|
|
CALL L69F9
|
|
LD A,L
|
|
CALL L69F9
|
|
XOR A
|
|
LD (DE),A
|
|
POP DE
|
|
LD B,003H
|
|
L69F1: LD A,(DE)
|
|
CP 030H
|
|
RET NZ
|
|
INC DE
|
|
DJNZ L69F1 ; (-007H)
|
|
RET
|
|
|
|
L69F9: PUSH AF
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
AND 00FH
|
|
CALL L6A06
|
|
POP AF
|
|
AND 00FH
|
|
L6A06: ADD A,030H
|
|
CP 03AH
|
|
JR C,L6A0E ; (+002H)
|
|
ADD A,007H
|
|
L6A0E: LD (DE),A
|
|
INC DE
|
|
RET
|
|
|
|
L6A11: PUSH HL
|
|
EX DE,HL
|
|
RST 018H
|
|
DB 013H
|
|
LD B,D
|
|
LD C,E
|
|
EX DE,HL
|
|
POP HL
|
|
JP L68D8
|
|
|
|
L6A1C: INC DE
|
|
L6A1D: LD A,(DE)
|
|
CP 020H
|
|
JR Z,L6A1C ; (-006H)
|
|
RET
|
|
|
|
L6A23: LD C,(HL)
|
|
L6A24: CALL L6A2C
|
|
XOR A
|
|
LD (LPOSB),A
|
|
RET
|
|
|
|
L6A2C: LD A,(L004D)
|
|
OR A
|
|
JP NZ,L4B3C
|
|
CALL TEST1
|
|
DB 047H
|
|
JR Z,L6A7C ; (+043H)
|
|
CALL TESTX
|
|
DB 054H
|
|
LD A,001H
|
|
LD (PNMODE),A
|
|
CALL TEST1
|
|
DB 04EH
|
|
JR Z,L6A52 ; (+00aH)
|
|
CALL TEST1
|
|
DB 04CH
|
|
JR Z,L6A52 ; (+004H)
|
|
CALL TESTX
|
|
DB 053H
|
|
L6A52: LD (L6A23),A
|
|
CALL 05E48H
|
|
CALL L6A74
|
|
L6A5B: LD A,001H
|
|
RST 018H
|
|
DB 006H
|
|
LD A,(L6A23)
|
|
CP 04EH
|
|
RET Z
|
|
CP 04CH
|
|
LD A,00BH
|
|
JR Z,L6A71 ; (+006H)
|
|
LD A,009H
|
|
RST 018H
|
|
DB 006H
|
|
RST 018H
|
|
DB 006H
|
|
L6A71: RST 018H
|
|
DB 006H
|
|
RET
|
|
|
|
L6A74: LD A,00AH
|
|
RST 018H
|
|
DB 006H
|
|
LD A,003H
|
|
JR L6A71 ; (-00bH)
|
|
|
|
L6A7C: INC HL
|
|
CALL 05E48H
|
|
LD A,002H
|
|
LD (PNMODE),A
|
|
JR L6A71 ; (-016H)
|
|
|
|
L6A87: CALL L6AC6
|
|
CALL L6E5F
|
|
LD A,E
|
|
OR A
|
|
RET Z
|
|
CP 0ECH
|
|
JR NC,L6A99 ; (+005H)
|
|
CP 015H
|
|
JP NC,04AF2H
|
|
L6A99: CALL 05E48H
|
|
BIT 7,E
|
|
JR NZ,L6AA8 ; (+008H)
|
|
L6AA0: LD A,00AH
|
|
RST 018H
|
|
DB 006H
|
|
DEC E
|
|
JR NZ,L6AA0 ; (-007H)
|
|
RET
|
|
|
|
L6AA8: LD A,003H
|
|
RST 018H
|
|
DB 006H
|
|
INC E
|
|
JR NZ,L6AA8 ; (-007H)
|
|
RET
|
|
|
|
L6AB0: PUSH HL
|
|
LD HL,L03E7
|
|
JR L6ABA ; (+004H)
|
|
|
|
L6AB6: PUSH HL
|
|
LD HL,L01E0
|
|
L6ABA: PUSH HL
|
|
ADD HL,DE
|
|
POP HL
|
|
JR C,L6AC4 ; (+005H)
|
|
SBC HL,DE
|
|
JP C,04AF2H
|
|
L6AC4: POP HL
|
|
RET
|
|
|
|
L6AC6: LD B,001H
|
|
JR L6ACC ; (+002H)
|
|
|
|
L6ACA: LD B,002H
|
|
L6ACC: LD A,(PNMODE)
|
|
CP B
|
|
RET Z
|
|
JP L4B3C
|
|
|
|
L6AD4: LD C,044H
|
|
LD DE,04A0EH
|
|
LD DE,04D0EH
|
|
LD DE,0520EH
|
|
CALL L6ACA
|
|
LD A,C
|
|
LD (06B26H),A
|
|
CP 04DH
|
|
JR NC,L6B0C ; (+022H)
|
|
CALL TEST1
|
|
DB 025H
|
|
JR NZ,L6B0C ; (+01cH)
|
|
CALL L6E4B
|
|
LD A,E
|
|
DEC A
|
|
CP 010H
|
|
JP NC,04AF2H
|
|
DEC DE
|
|
LD A,04CH
|
|
RST 018H
|
|
DB 006H
|
|
CALL L6DE2
|
|
CALL L6B68
|
|
CALL L413E
|
|
RET Z
|
|
CALL L5E73
|
|
L6B0C: CALL L6E5F
|
|
CALL L5E73
|
|
CALL L6AB6
|
|
PUSH DE
|
|
CALL L6E5F
|
|
CP 02CH
|
|
JR Z,L6B20 ; (+003H)
|
|
CALL 05E48H
|
|
L6B20: CALL L6AB0
|
|
POP BC
|
|
PUSH DE
|
|
LD A,000H
|
|
RST 018H
|
|
DB 006H
|
|
LD E,C
|
|
LD D,B
|
|
CALL L6DE2
|
|
CALL L6B6C
|
|
POP DE
|
|
CALL L6DE2
|
|
CALL L6B68
|
|
CALL L413E
|
|
RET Z
|
|
INC HL
|
|
JR L6B0C ; (-033H)
|
|
|
|
L6B3F: CALL L6E4B
|
|
LD A,E
|
|
CP 004H
|
|
JP NC,04AF2H
|
|
CALL 05E48H
|
|
LD A,(PNMODE)
|
|
CP 002H
|
|
JR Z,L6B5F ; (+00dH)
|
|
CALL L6A74
|
|
LD A,002H
|
|
RST 018H
|
|
DB 006H
|
|
CALL L6B5F
|
|
JP L6A5B
|
|
|
|
L6B5F: LD A,043H
|
|
RST 018H
|
|
DB 006H
|
|
LD A,E
|
|
OR 030H
|
|
RST 018H
|
|
DB 006H
|
|
L6B68: LD A,00DH
|
|
JR L6B6E ; (+002H)
|
|
|
|
L6B6C: LD A,02CH
|
|
L6B6E: RST 018H
|
|
DB 006H
|
|
RET
|
|
|
|
L6B71: CALL L6ACA
|
|
CALL 05E48H
|
|
LD A,048H
|
|
JR L6B6E ; (-00dH)
|
|
|
|
L6B7B: CALL L6ACA
|
|
CALL 05E48H
|
|
LD A,049H
|
|
JR L6B6E ; (-017H)
|
|
|
|
L6B85: CALL L6ACA
|
|
CALL TEST1
|
|
DB 05BH
|
|
JR NZ,L6BC6 ; (+038H)
|
|
CALL L6E4B
|
|
CP 040H
|
|
JP NC,04AF2H
|
|
PUSH DE
|
|
CALL L5E70
|
|
CALL L6E4B
|
|
CP 004H
|
|
JP NC,04AF2H
|
|
PUSH DE
|
|
CALL TESTX
|
|
DB 05DH
|
|
POP BC
|
|
POP DE
|
|
PUSH BC
|
|
LD A,053H
|
|
RST 018H
|
|
DB 006H
|
|
CALL L6DE2
|
|
CALL L6B6C
|
|
POP DE
|
|
LD A,051H
|
|
RST 018H
|
|
DB 006H
|
|
CALL L6DE2
|
|
CALL L6B68
|
|
CALL L413E
|
|
RET Z
|
|
CALL L5E73
|
|
L6BC6: CALL L6E6F
|
|
CALL L413E
|
|
JR Z,L6BD2 ; (+004H)
|
|
CALL L5E73
|
|
DEC HL
|
|
L6BD2: LD A,B
|
|
OR A
|
|
JR Z,L6BE3 ; (+00dH)
|
|
LD A,050H
|
|
RST 018H
|
|
DB 006H
|
|
L6BDA: LD A,(DE)
|
|
RST 018H
|
|
DB 006H
|
|
INC DE
|
|
DJNZ L6BDA ; (-006H)
|
|
CALL L6B68
|
|
L6BE3: CALL L413E
|
|
RET Z
|
|
INC HL
|
|
JR L6BC6 ; (-024H)
|
|
|
|
L6BEA: CALL L6ACA
|
|
CALL L6E4B
|
|
CP 002H
|
|
JP NC,04AF2H
|
|
PUSH AF
|
|
CALL L5E70
|
|
CALL L6E5F
|
|
PUSH DE
|
|
CALL L5E73
|
|
CALL L6E4B
|
|
OR A
|
|
JP Z,04AF2H
|
|
CALL 05E48H
|
|
LD A,058H
|
|
RST 018H
|
|
DB 006H
|
|
POP BC
|
|
POP AF
|
|
PUSH DE
|
|
PUSH BC
|
|
OR 030H
|
|
RST 018H
|
|
DB 006H
|
|
CALL L6B6C
|
|
POP DE
|
|
CALL L6AB0
|
|
CALL L6DE2
|
|
CALL L6B6C
|
|
POP DE
|
|
CALL L6DE2
|
|
JP L6B68
|
|
|
|
L6C2A: CALL L6ACA
|
|
PUSH HL
|
|
LD DE,L0000
|
|
LD HL,L6DC4
|
|
CALL L5E99
|
|
LD DE,L0168
|
|
LD HL,L6DC9
|
|
CALL L5E99
|
|
LD HL,L610D
|
|
LD DE,L6DCE
|
|
CALL L5E93
|
|
POP HL
|
|
CALL L6E8A
|
|
CALL L5E73
|
|
PUSH HL
|
|
LD HL,L6DB5
|
|
EX DE,HL
|
|
CALL L5E93
|
|
POP HL
|
|
CALL L6E8A
|
|
CALL L5E73
|
|
PUSH HL
|
|
LD HL,L6DBA
|
|
EX DE,HL
|
|
CALL L5E93
|
|
POP HL
|
|
CALL L6E8A
|
|
PUSH HL
|
|
PUSH AF
|
|
LD HL,L6DBF
|
|
EX DE,HL
|
|
CALL L5E93
|
|
LD A,(06DC0H)
|
|
RLCA
|
|
JP C,04AF2H
|
|
POP AF
|
|
CP 02CH
|
|
JR NZ,L6CBA ; (+03aH)
|
|
POP HL
|
|
INC HL
|
|
CALL L6E8A
|
|
PUSH HL
|
|
PUSH AF
|
|
LD HL,L6DC4
|
|
EX DE,HL
|
|
CALL L5E93
|
|
POP AF
|
|
CP 02CH
|
|
JR NZ,L6CBA ; (+027H)
|
|
POP HL
|
|
INC HL
|
|
CALL L6E8A
|
|
PUSH HL
|
|
PUSH AF
|
|
LD HL,L6DC9
|
|
EX DE,HL
|
|
CALL L5E93
|
|
POP AF
|
|
CP 02CH
|
|
JR NZ,L6CBA ; (+014H)
|
|
POP HL
|
|
INC HL
|
|
CALL L6E8A
|
|
PUSH HL
|
|
LD HL,L6DCE
|
|
EX DE,HL
|
|
CALL L5E93
|
|
LD A,(06DCFH)
|
|
RLCA
|
|
JP C,04AF2H
|
|
L6CBA: POP HL
|
|
CALL 05E48H
|
|
PUSH HL
|
|
LD HL,L6DC9
|
|
LD DE,L6DC4
|
|
LD A,(L6DCE)
|
|
OR A
|
|
CALL NZ,L7A1C
|
|
JP C,04AF2H
|
|
CALL L6D6B
|
|
LD HL,L6DD3
|
|
LD (06D43H),HL
|
|
LD HL,L6DD8
|
|
LD (06D4EH),HL
|
|
CALL 06D3FH
|
|
LD A,(L6DCE)
|
|
OR A
|
|
JR Z,L6D19 ; (+032H)
|
|
L6CE7: LD HL,L6DC4
|
|
LD DE,L6DCE
|
|
CALL L7985
|
|
LD DE,L6DC9
|
|
CALL L7A1C
|
|
JR NC,L6D04 ; (+00cH)
|
|
CALL L6D6B
|
|
CALL L6D3C
|
|
RST 018H
|
|
DB 00EH
|
|
JR NZ,L6CE7 ; (-01bH)
|
|
POP HL
|
|
RET
|
|
|
|
L6D04: CALL L6D0C
|
|
CALL L6D3C
|
|
POP HL
|
|
RET
|
|
|
|
L6D0C: LD HL,L6DC9
|
|
LD DE,L6DC4
|
|
LD BC,00005H
|
|
LDIR
|
|
JR L6D6B ; (+052H)
|
|
|
|
L6D19: LD HL,L6DB5
|
|
LD (06D43H),HL
|
|
LD HL,L6DBA
|
|
LD (06D4EH),HL
|
|
CALL L6D3C
|
|
CALL L6D0C
|
|
LD HL,L6DD3
|
|
LD (06D43H),HL
|
|
LD HL,L6DD8
|
|
LD (06D4EH),HL
|
|
CALL L6D3C
|
|
POP HL
|
|
RET
|
|
|
|
L6D3C: LD A,044H
|
|
LD HL,L4D3E
|
|
PUSH AF
|
|
LD HL,L6DB5
|
|
CALL L60B7
|
|
PUSH HL
|
|
EX DE,HL
|
|
CALL L6AB0
|
|
LD HL,L6DBA
|
|
CALL L60B7
|
|
PUSH HL
|
|
EX DE,HL
|
|
CALL L6AB0
|
|
POP HL
|
|
POP DE
|
|
POP AF
|
|
RST 018H
|
|
DB 006H
|
|
PUSH HL
|
|
CALL L6DE2
|
|
CALL L6B6C
|
|
POP DE
|
|
CALL L6DE2
|
|
JP L6B68
|
|
|
|
L6D6B: LD DE,(INTFAC)
|
|
LD HL,L6DC4
|
|
CALL L5E93
|
|
LD HL,(INTFAC)
|
|
CALL L817C
|
|
CALL L7FC2
|
|
LD DE,L6DBF
|
|
CALL L7BB3
|
|
LD DE,L6DB5
|
|
CALL L7985
|
|
LD DE,L6DD3
|
|
CALL L5E93
|
|
LD DE,(INTFAC)
|
|
LD HL,L6DC4
|
|
CALL L5E93
|
|
LD HL,(INTFAC)
|
|
CALL L817C
|
|
CALL L7FD2
|
|
LD DE,L6DBF
|
|
CALL L7BB3
|
|
LD DE,L6DBA
|
|
CALL L7985
|
|
LD DE,L6DD8
|
|
JP L5E93
|
|
|
|
L6DB5: DS 5, 000H
|
|
L6DBA: DS 5, 000H
|
|
L6DBF: DS 5, 000H
|
|
L6DC4: DS 5, 000H
|
|
L6DC9: DS 5, 000H
|
|
L6DCE: DS 5, 000H
|
|
L6DD3: DS 5, 000H
|
|
L6DD8: DS 10, 000H
|
|
L6DE2: PUSH AF
|
|
PUSH HL
|
|
LD HL,(INTFAC)
|
|
CALL L5E99
|
|
CALL L6028
|
|
RST 018H
|
|
DB 017H
|
|
L6DEF: LD A,(DE)
|
|
RST 018H
|
|
DB 006H
|
|
INC DE
|
|
DJNZ L6DEF ; (-006H)
|
|
POP HL
|
|
POP AF
|
|
RET
|
|
|
|
L6DF8: CALL L6AC6
|
|
CALL 05E48H
|
|
LD A,004H
|
|
RST 018H
|
|
DB 006H
|
|
RET
|
|
|
|
L6E03: CALL L6AC6
|
|
CALL L6E5F
|
|
LD A,E
|
|
OR A
|
|
JP Z,04AF2H
|
|
CP 049H
|
|
JP NC,04AF2H
|
|
CALL 05E48H
|
|
LD A,009H
|
|
RST 018H
|
|
DB 006H
|
|
RST 018H
|
|
DB 006H
|
|
CALL L6DE2
|
|
JP L6B68
|
|
|
|
L6E22: CP 09DH
|
|
JR Z,L6E31 ; (+00bH)
|
|
CP 0A1H
|
|
JP NZ,L4AEC
|
|
XOR A
|
|
L6E2C: LD (L004D),A
|
|
INC HL
|
|
RET
|
|
|
|
L6E31: CALL L6AC6
|
|
LD A,(L6A23)
|
|
CP 04EH
|
|
JP NZ,L4B3C
|
|
LD A,(L004D)
|
|
OR A
|
|
JR NZ,L6E2C ; (-016H)
|
|
CALL L5285
|
|
LD A,016H
|
|
RST 018H
|
|
DB 003H
|
|
JR L6E2C ; (-01fH)
|
|
|
|
L6E4B: CALL L6E5F
|
|
L6E4E: LD A,D
|
|
OR A
|
|
JP NZ,04AF2H
|
|
LD A,E
|
|
RET
|
|
|
|
L6E55: CALL L6E9C
|
|
DEC DE
|
|
DEC DE
|
|
DEC DE
|
|
DEC DE
|
|
DEC DE
|
|
JR L6E62 ; (+003H)
|
|
|
|
L6E5F: CALL L6E8A
|
|
L6E62: PUSH AF
|
|
PUSH HL
|
|
EX DE,HL
|
|
CALL L791F
|
|
CALL L60B7
|
|
EX DE,HL
|
|
POP HL
|
|
POP AF
|
|
RET
|
|
|
|
L6E6F: CALL L6E8A
|
|
PUSH AF
|
|
CALL L7916
|
|
PUSH HL
|
|
EX DE,HL
|
|
CALL L6E7E
|
|
POP HL
|
|
POP AF
|
|
RET
|
|
|
|
L6E7E: LD B,(HL)
|
|
INC HL
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD HL,(STRST)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD A,B
|
|
RET
|
|
|
|
L6E8A: LD DE,(VARED)
|
|
LD (TMPEND),DE
|
|
L6E92: LD DE,(INTFAC)
|
|
PUSH DE
|
|
CALL L6E9C
|
|
POP DE
|
|
RET
|
|
|
|
L6E9C: PUSH DE
|
|
LD DE,(TMPEND)
|
|
CALL L74E8
|
|
POP DE
|
|
CALL L6EC0
|
|
L6EA8: CP 0EAH
|
|
RET NZ
|
|
LD A,(L84CE)
|
|
PUSH AF
|
|
INC HL
|
|
CALL L6EC0
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL 07E65H
|
|
POP HL
|
|
POP AF
|
|
JR L6EA8 ; (-018H)
|
|
|
|
L6EC0: CALL L6EDB
|
|
L6EC3: CP 0EBH
|
|
RET NZ
|
|
LD A,(L84CE)
|
|
PUSH AF
|
|
INC HL
|
|
CALL L6EDB
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL 07E62H
|
|
POP HL
|
|
POP AF
|
|
JR L6EC3 ; (-018H)
|
|
|
|
L6EDB: CALL L6EF6
|
|
L6EDE: CP 0ECH
|
|
RET NZ
|
|
LD A,(L84CE)
|
|
PUSH AF
|
|
INC HL
|
|
CALL L6EF6
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL L7E5F
|
|
POP HL
|
|
POP AF
|
|
JR L6EDE ; (-018H)
|
|
|
|
L6EF6: CALL TEST1
|
|
DB 0EDH
|
|
JR NZ,L6F0B ; (+00fH)
|
|
CALL L6F0B
|
|
PUSH AF
|
|
PUSH HL
|
|
LD HL,0FFFBH
|
|
ADD HL,DE
|
|
CALL L7E4F
|
|
POP HL
|
|
POP AF
|
|
RET
|
|
|
|
L6F0B: CALL L6F75
|
|
L6F0E: CP 0EEH
|
|
RET C
|
|
PUSH AF
|
|
LD A,(L84CE)
|
|
PUSH AF
|
|
INC HL
|
|
CALL L6F75
|
|
POP BC
|
|
EX (SP),HL
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL L7A1C
|
|
EX AF,AF'
|
|
POP AF
|
|
CP 0F6H
|
|
JR NZ,L6F48 ; (+01eH)
|
|
EX AF,AF'
|
|
JR C,L6F43 ; (+016H)
|
|
L6F2D: LD BC,L0000
|
|
L6F30: 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 (L84CE),A
|
|
POP AF
|
|
POP HL
|
|
JR L6F0E ; (-035H)
|
|
|
|
L6F43: LD BC,08081H
|
|
JR L6F30 ; (-018H)
|
|
|
|
L6F48: CP QDPD
|
|
JR NZ,L6F53 ; (+007H)
|
|
EX AF,AF'
|
|
JR Z,L6F2D ; (-022H)
|
|
JR C,L6F2D ; (-024H)
|
|
JR L6F43 ; (-010H)
|
|
|
|
L6F53: CP QDPC
|
|
JR NZ,L6F5C ; (+005H)
|
|
EX AF,AF'
|
|
JR Z,L6F43 ; (-017H)
|
|
JR L6F2D ; (-02fH)
|
|
|
|
L6F5C: CP QDPA
|
|
JR C,L6F65 ; (+005H)
|
|
EX AF,AF'
|
|
JR NC,L6F43 ; (-020H)
|
|
JR L6F2D ; (-038H)
|
|
|
|
L6F65: CP 0F0H
|
|
JR C,L6F70 ; (+007H)
|
|
EX AF,AF'
|
|
JR Z,L6F43 ; (-029H)
|
|
JR C,L6F43 ; (-02bH)
|
|
JR L6F2D ; (-043H)
|
|
|
|
L6F70: EX AF,AF'
|
|
JR Z,L6F2D ; (-046H)
|
|
JR L6F43 ; (-032H)
|
|
|
|
L6F75: CALL L6FA0
|
|
L6F78: CP 0F7H
|
|
RET C
|
|
LD A,(L84CE)
|
|
PUSH AF
|
|
INC HL
|
|
JR Z,L6F92 ; (+010H)
|
|
CALL L6FA0
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL L797C
|
|
L6F8E: POP HL
|
|
POP AF
|
|
JR L6F78 ; (-01aH)
|
|
|
|
L6F92: CALL L6FA0
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL L7985
|
|
JR L6F8E ; (-012H)
|
|
|
|
L6FA0: CALL L6FCB
|
|
L6FA3: CP FDPB
|
|
RET C
|
|
LD A,(L84CE)
|
|
PUSH AF
|
|
INC HL
|
|
JR Z,L6FBD ; (+010H)
|
|
CALL L6FCB
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL L7EBB
|
|
L6FB9: POP HL
|
|
POP AF
|
|
JR L6FA3 ; (-01aH)
|
|
|
|
L6FBD: CALL L6FCB
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL L7EDA
|
|
JR L6FB9 ; (-012H)
|
|
|
|
L6FCB: CALL L6FF6
|
|
L6FCE: CP FDPD
|
|
RET C
|
|
LD A,(L84CE)
|
|
PUSH AF
|
|
INC HL
|
|
JR Z,L6FE8 ; (+010H)
|
|
CALL L6FF6
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL L7BB3
|
|
L6FE4: POP HL
|
|
POP AF
|
|
JR L6FCE ; (-01aH)
|
|
|
|
L6FE8: CALL L6FF6
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL L7C9E
|
|
JR L6FE4 ; (-012H)
|
|
|
|
L6FF6: CALL TEST1
|
|
DB 0F7H
|
|
JR Z,L6FF6 ; (-006H)
|
|
CP FDPA
|
|
JR NZ,L7006 ; (+006H)
|
|
INC HL
|
|
CALL L7006
|
|
JR L702F ; (+029H)
|
|
|
|
L7006: CALL L703B
|
|
L7009: CP 0FDH
|
|
RET NZ
|
|
LD A,(L84CE)
|
|
PUSH AF
|
|
INC HL
|
|
CALL L7021
|
|
POP BC
|
|
PUSH AF
|
|
PUSH HL
|
|
CALL L74C5
|
|
CALL L7DD3
|
|
POP HL
|
|
POP AF
|
|
JR L7009 ; (-018H)
|
|
|
|
L7021: CALL TEST1
|
|
DB 0F7H
|
|
JR Z,L7021 ; (-006H)
|
|
CP FDPA
|
|
JR NZ,L703B ; (+010H)
|
|
INC HL
|
|
CALL L703B
|
|
L702F: PUSH AF
|
|
PUSH HL
|
|
LD HL,0FFFBH
|
|
ADD HL,DE
|
|
CALL L796F
|
|
POP HL
|
|
POP AF
|
|
RET
|
|
|
|
L703B: CALL L413E
|
|
JP Z,L4AEC
|
|
CALL L7047
|
|
JP HLFTCH
|
|
|
|
L7047: PUSH HL
|
|
LD HL,(MEMLMT)
|
|
SCF
|
|
SBC HL,DE
|
|
JP C,04AFBH
|
|
POP HL
|
|
CP LSE4
|
|
JR Z,L7064 ; (+00eH)
|
|
CP 020H
|
|
JR NC,L70A4 ; (+04aH)
|
|
L705A: INC HL
|
|
CP 015H
|
|
JR C,L7073 ; (+014H)
|
|
CALL L5E93
|
|
JR L706D ; (+009H)
|
|
|
|
L7064: INC HL
|
|
PUSH HL
|
|
LD HL,0818FH
|
|
CALL L5E93
|
|
POP HL
|
|
L706D: LD A,005H
|
|
L706F: LD (L84CE),A
|
|
RET
|
|
|
|
L7073: CP 00BH
|
|
JR NC,L7080 ; (+009H)
|
|
DEC A
|
|
JP M,L4AEC
|
|
LD B,000H
|
|
LD C,A
|
|
JR L7091 ; (+011H)
|
|
|
|
L7080: LD C,(HL)
|
|
INC HL
|
|
LD B,(HL)
|
|
INC HL
|
|
CP 00CH
|
|
JR NZ,L7091 ; (+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
|
|
L7091: PUSH HL
|
|
PUSH DE
|
|
EX DE,HL
|
|
LD E,C
|
|
LD D,B
|
|
CALL L5E99
|
|
POP DE
|
|
POP HL
|
|
LD A,005H
|
|
L709D: INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
JR L706F ; (-035H)
|
|
|
|
L70A4: CP 022H
|
|
JR NZ,L70D7 ; (+02fH)
|
|
INC HL
|
|
PUSH HL
|
|
CALL L74D0
|
|
EX (SP),HL
|
|
PUSH HL
|
|
LD HL,(TMPEND)
|
|
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,(TMPEND)
|
|
CALL L74DC
|
|
LD (TMPEND),HL
|
|
POP DE
|
|
POP HL
|
|
LD A,003H
|
|
LD (L84CE),A
|
|
RET
|
|
|
|
L70D7: CP 028H
|
|
JR NZ,L70E2 ; (+007H)
|
|
INC HL
|
|
CALL L6E9C
|
|
JP L5E82
|
|
|
|
L70E2: OR A
|
|
JP P,L76F5
|
|
CP 0E7H
|
|
INC HL
|
|
JR NZ,L70F0 ; (+005H)
|
|
LD A,0A8H
|
|
PUSH AF
|
|
JR L7125 ; (+035H)
|
|
|
|
L70F0: CP 0FFH
|
|
JP NZ,L4AEC
|
|
LD A,(HL)
|
|
INC HL
|
|
CP 0A0H
|
|
JP Z,L71A5
|
|
CP 0C8H
|
|
JP NC,L4AEC
|
|
CP 0BAH
|
|
JR NC,L7155 ; (+050H)
|
|
PUSH AF
|
|
CP 0B3H
|
|
JR NC,L7146 ; (+03cH)
|
|
LD B,003H
|
|
CP 0AAH
|
|
JR Z,L7125 ; (+015H)
|
|
CP 0ABH
|
|
JR NC,L7125 ; (+011H)
|
|
LD B,005H
|
|
CP 088H
|
|
JR Z,L7140 ; (+026H)
|
|
CP 089H
|
|
JR NZ,L7125 ; (+007H)
|
|
CALL TEST1
|
|
DB 040H
|
|
LD (081A8H),A
|
|
L7125: CALL L5E78
|
|
L7128: PUSH BC
|
|
CALL L6E9C
|
|
CALL L5E82
|
|
POP AF
|
|
CALL L7912
|
|
L7133: POP AF
|
|
PUSH DE
|
|
PUSH HL
|
|
LD HL,0FFFBH
|
|
ADD HL,DE
|
|
CALL L7155
|
|
POP HL
|
|
POP DE
|
|
RET
|
|
|
|
L7140: CALL TEST1
|
|
DB 028H
|
|
JR Z,L7128 ; (-01eH)
|
|
L7146: LD A,005H
|
|
LD (L84CE),A
|
|
PUSH HL
|
|
LD HL,L6112
|
|
CALL L5E93
|
|
POP HL
|
|
JR L7133 ; (-022H)
|
|
|
|
L7155: PUSH HL
|
|
ADD A,A
|
|
LD L,A
|
|
LD H,000H
|
|
LD BC,L450A
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
INC HL
|
|
LD H,(HL)
|
|
LD L,A
|
|
EX (SP),HL
|
|
RET
|
|
|
|
L7164: EX DE,HL
|
|
LD HL,0FDF1H
|
|
ADD HL,SP
|
|
LD BC,(TMPEND)
|
|
OR A
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
JR NC,L7186 ; (+013H)
|
|
XOR A
|
|
JR L7183 ; (+00dH)
|
|
|
|
L7176: LD A,(L0054)
|
|
JR L7183 ; (+008H)
|
|
|
|
L717B: LD A,(00055H)
|
|
JR L7183 ; (+003H)
|
|
|
|
L7180: LD A,(L8485)
|
|
L7183: LD E,A
|
|
LD D,000H
|
|
L7186: LD A,005H
|
|
LD (L84CE),A
|
|
JP L5E99
|
|
|
|
L718E: LD DE,(08487H)
|
|
CALL L5E99
|
|
INC HL
|
|
BIT 7,(HL)
|
|
DEC HL
|
|
RET Z
|
|
LD DE,L71A0
|
|
JP L7985
|
|
|
|
L71A0: DB 091H,000H,000H,000H,000H ; FP constant (65536.0)
|
|
L71A5: CALL L5E78
|
|
LD B,000H
|
|
L71AA: PUSH BC
|
|
PUSH DE
|
|
CALL L6E55
|
|
CALL L6E4E
|
|
POP DE
|
|
POP BC
|
|
PUSH AF
|
|
INC B
|
|
CALL TEST1
|
|
DB 02CH
|
|
JR Z,L71AA ; (-012H)
|
|
CALL L5E82
|
|
LD A,B
|
|
EXX
|
|
LD B,A
|
|
LD HL,(TMPEND)
|
|
CALL ADDHLA
|
|
LD D,H
|
|
LD E,L
|
|
CALL L74E8
|
|
L71CD: DEC HL
|
|
POP AF
|
|
LD (HL),A
|
|
DJNZ L71CD ; (-005H)
|
|
EXX
|
|
LD A,B
|
|
EXX
|
|
LD B,A
|
|
L71D6: 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
|
|
L71EF: EX DE,HL
|
|
LD A,003H
|
|
LD (L84CE),A
|
|
RET
|
|
|
|
L71F6: PUSH HL
|
|
CALL L60B7
|
|
CALL L69E0
|
|
RST 018H
|
|
DB 017H
|
|
L71FF: LD A,B
|
|
OR A
|
|
JR Z,L7213 ; (+010H)
|
|
LD HL,(TMPEND)
|
|
PUSH HL
|
|
PUSH BC
|
|
CALL L74DC
|
|
POP BC
|
|
EX DE,HL
|
|
POP HL
|
|
EXX
|
|
POP DE
|
|
EXX
|
|
JR L71D6 ; (-03dH)
|
|
|
|
L7213: POP HL
|
|
CALL L7967
|
|
JR L71EF ; (-02aH)
|
|
|
|
L7219: PUSH HL
|
|
CALL L722A
|
|
LD B,A
|
|
LD C,A
|
|
OR A
|
|
LD A,020H
|
|
PUSH DE
|
|
CALL NZ,?SETDE
|
|
POP DE
|
|
LD B,C
|
|
JR L71FF ; (-02bH)
|
|
|
|
L722A: CALL L60B7
|
|
LD DE,KEYBUF
|
|
LD A,H
|
|
OR A
|
|
JP NZ,04AF2H
|
|
LD A,L
|
|
RET
|
|
|
|
L7237: PUSH HL
|
|
CALL L6028
|
|
LD A,(DE)
|
|
CP 020H
|
|
JR NZ,L7241 ; (+001H)
|
|
INC DE
|
|
L7241: RST 018H
|
|
DB 017H
|
|
JR L71FF ; (-046H)
|
|
|
|
L7245: CALL L5E78
|
|
CALL L5882
|
|
LD B,A
|
|
CALL L5E7F
|
|
LD A,B
|
|
PUSH HL
|
|
PUSH DE
|
|
RST 018H
|
|
DB 029H
|
|
LD DE,0FFFFH
|
|
JR C,L7261 ; (+008H)
|
|
INC HL
|
|
BIT 7,(HL)
|
|
JR NZ,L7261 ; (+003H)
|
|
LD DE,L0000
|
|
L7261: POP HL
|
|
CALL L5E99
|
|
LD A,005H
|
|
LD (L84CE),A
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
EX DE,HL
|
|
POP HL
|
|
RET
|
|
|
|
L7272: PUSH HL
|
|
CALL L6E7E
|
|
OR A
|
|
JR Z,L727A ; (+001H)
|
|
LD A,(DE)
|
|
L727A: JR L7280 ; (+004H)
|
|
|
|
L727C: PUSH HL
|
|
CALL L6E7E
|
|
L7280: POP HL
|
|
JP L7183
|
|
|
|
L7284: PUSH HL
|
|
CALL L6E7E
|
|
LD HL,(TMPEND)
|
|
PUSH HL
|
|
CALL L74DC
|
|
LD (HL),000H
|
|
POP DE
|
|
POP HL
|
|
JP L5EDC
|
|
|
|
L7296: CALL L7312
|
|
CALL L5E82
|
|
CALL L730B
|
|
EX DE,HL
|
|
LD A,(HL)
|
|
CP C
|
|
JR NC,L72A5 ; (+001H)
|
|
LD C,A
|
|
L72A5: LD (HL),C
|
|
LD BC,00005H
|
|
L72A9: LD A,003H
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD (L84CE),A
|
|
JP HLFTCH
|
|
|
|
L72B3: CALL L7312
|
|
CALL L5E82
|
|
CALL L730B
|
|
EX DE,HL
|
|
LD A,(HL)
|
|
SUB C
|
|
JR NC,L72C3 ; (+002H)
|
|
XOR A
|
|
LD C,(HL)
|
|
L72C3: LD (HL),C
|
|
INC HL
|
|
ADD A,(HL)
|
|
LD (HL),A
|
|
INC HL
|
|
JR NC,L72CB ; (+001H)
|
|
INC (HL)
|
|
L72CB: LD BC,L0003
|
|
JR L72A9 ; (-027H)
|
|
|
|
L72D0: CALL L7312
|
|
CALL L730B
|
|
OR A
|
|
JP Z,04AF2H
|
|
PUSH AF
|
|
CALL TEST1
|
|
DB 029H
|
|
LD A,0FFH
|
|
JR Z,L72F7 ; (+014H)
|
|
CALL L5E70
|
|
PUSH DE
|
|
EX DE,HL
|
|
LD BC,00005H
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
CALL L6E55
|
|
CALL L5E82
|
|
CALL L6E4E
|
|
POP DE
|
|
L72F7: POP BC
|
|
LD C,A
|
|
EX DE,HL
|
|
LD A,(HL)
|
|
SUB B
|
|
JR C,L7307 ; (+009H)
|
|
INC A
|
|
CP C
|
|
JR NC,L7303 ; (+001H)
|
|
LD C,A
|
|
L7303: LD A,B
|
|
DEC A
|
|
JR L72C3 ; (-044H)
|
|
|
|
L7307: XOR A
|
|
LD C,A
|
|
JR L72C3 ; (-048H)
|
|
|
|
L730B: LD A,B
|
|
OR A
|
|
JP NZ,04AF2H
|
|
LD A,C
|
|
RET
|
|
|
|
L7312: CALL L5E78
|
|
PUSH DE
|
|
CALL L6E9C
|
|
CALL L5E73
|
|
CALL L7916
|
|
CALL L6E55
|
|
LD C,E
|
|
LD B,D
|
|
POP DE
|
|
RET
|
|
|
|
L7326: PUSH HL
|
|
PUSH DE
|
|
LD HL,(TMPEND)
|
|
PUSH HL
|
|
LD A,030H
|
|
LD B,006H
|
|
CALL ?SETHL
|
|
RST 018H
|
|
DB 025H
|
|
POP HL
|
|
OR A
|
|
JR Z,L733E ; (+005H)
|
|
INC (HL)
|
|
INC HL
|
|
INC (HL)
|
|
INC (HL)
|
|
DEC HL
|
|
L733E: EX DE,HL
|
|
LD BC,08CA0H
|
|
CALL L73B5
|
|
LD BC,L0E10
|
|
CALL L73B5
|
|
CP 03AH
|
|
JR C,L7359 ; (+00aH)
|
|
SUB 00AH
|
|
DEC DE
|
|
LD (DE),A
|
|
DEC DE
|
|
LD A,(DE)
|
|
INC A
|
|
LD (DE),A
|
|
INC DE
|
|
INC DE
|
|
L7359: 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,L7377 ; (+011H)
|
|
LD A,C
|
|
CP 034H
|
|
JR NZ,L7377 ; (+00cH)
|
|
LD HL,(TMPEND)
|
|
LD A,030H
|
|
LD B,006H
|
|
CALL ?SETHL
|
|
JR L738D ; (+016H)
|
|
|
|
L7377: LD BC,L0258
|
|
CALL L73B5
|
|
LD BC,0003CH
|
|
CALL L73B5
|
|
LD BC,0000AH
|
|
CALL L73B5
|
|
LD A,030H
|
|
ADD A,L
|
|
LD (DE),A
|
|
L738D: LD HL,(TMPEND)
|
|
LD DE,L0006
|
|
EX DE,HL
|
|
ADD HL,DE
|
|
LD (TMPEND),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 (L84CE),A
|
|
JP HLFTCH
|
|
|
|
L73B5: OR A
|
|
SBC HL,BC
|
|
JR C,L73BF ; (+005H)
|
|
LD A,(DE)
|
|
INC A
|
|
LD (DE),A
|
|
JR L73B5 ; (-00aH)
|
|
|
|
L73BF: ADD HL,BC
|
|
INC DE
|
|
RET
|
|
|
|
L73C2: CALL TESTX
|
|
DB QDPC
|
|
CALL L6E6F
|
|
LD A,B
|
|
CP 006H
|
|
JP NZ,04AF2H
|
|
PUSH HL
|
|
PUSH DE
|
|
LD HL,L0000
|
|
CALL L7403
|
|
CP 018H
|
|
JP NC,04AF2H
|
|
CP 00CH
|
|
LD A,000H
|
|
JR C,L73EB ; (+009H)
|
|
PUSH DE
|
|
LD DE,L000C
|
|
OR A
|
|
SBC HL,DE
|
|
POP DE
|
|
INC A
|
|
L73EB: PUSH AF
|
|
CALL L7403
|
|
CP 03CH
|
|
JP NC,04AF2H
|
|
CALL L7403
|
|
CP 03CH
|
|
JP NC,04AF2H
|
|
POP AF
|
|
EX DE,HL
|
|
RST 018H
|
|
DB 026H
|
|
POP DE
|
|
POP HL
|
|
RET
|
|
|
|
L7403: 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,04AF2H
|
|
CP 00AH
|
|
JP NC,04AF2H
|
|
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,04AF2H
|
|
L742A: CP 00AH
|
|
JP NC,04AF2H
|
|
ADD A,C
|
|
LD C,A
|
|
LD B,000H
|
|
ADD HL,BC
|
|
POP BC
|
|
RET
|
|
|
|
L7436: LD DE,(VARED)
|
|
LD (TMPEND),DE
|
|
LD DE,(INTFAC)
|
|
L7442: PUSH DE
|
|
CALL L7495
|
|
L7446: LD A,(HL)
|
|
CP 028H
|
|
JP Z,L74FB
|
|
PUSH HL
|
|
CALL L77B6
|
|
JR NC,L7458 ; (+006H)
|
|
LD A,C
|
|
LD C,L
|
|
LD B,H
|
|
POP HL
|
|
POP DE
|
|
RET
|
|
|
|
L7458: LD A,(DE)
|
|
ADD A,C
|
|
ADD A,002H
|
|
PUSH BC
|
|
EX DE,HL
|
|
LD HL,(TMPEND)
|
|
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 L74E8
|
|
LDDR
|
|
LD E,A
|
|
LD D,000H
|
|
RST 018H
|
|
DB 01AH
|
|
POP HL
|
|
POP BC
|
|
LD DE,KEYBUF
|
|
LD (HL),C
|
|
INC HL
|
|
SCF
|
|
SBC A,C
|
|
LD B,A
|
|
L7484: LD A,(DE)
|
|
LD (HL),A
|
|
INC DE
|
|
INC HL
|
|
DJNZ L7484 ; (-006H)
|
|
PUSH HL
|
|
LD B,C
|
|
CALL ?CLRHL
|
|
LD (HL),A
|
|
LD A,C
|
|
POP BC
|
|
POP HL
|
|
POP DE
|
|
RET
|
|
|
|
L7495: CALL HLFTCH
|
|
SUB 041H
|
|
CP 01AH
|
|
JP NC,L4AEC
|
|
LD DE,KEYBUF
|
|
LD B,000H
|
|
L74A4: INC DE
|
|
LD A,(HL)
|
|
CALL L5ECB
|
|
JR C,L74B6 ; (+00bH)
|
|
LD (DE),A
|
|
INC B
|
|
LD A,B
|
|
CP 003H
|
|
JR C,L74B3 ; (+001H)
|
|
DEC B
|
|
L74B3: INC HL
|
|
JR L74A4 ; (-012H)
|
|
|
|
L74B6: LD DE,KEYBUF
|
|
EX DE,HL
|
|
LD (HL),B
|
|
EX DE,HL
|
|
LD C,005H
|
|
CP 024H
|
|
RET NZ
|
|
LD C,003H
|
|
INC HL
|
|
RET
|
|
|
|
L74C5: LD HL,0FFFBH
|
|
EX DE,HL
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
ADD HL,DE
|
|
LD A,B
|
|
JP L7912
|
|
|
|
L74D0: LD B,0FFH
|
|
L74D2: INC B
|
|
LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
INC HL
|
|
CP 022H
|
|
RET Z
|
|
JR L74D2 ; (-00aH)
|
|
|
|
L74DC: LD A,B
|
|
OR A
|
|
RET Z
|
|
CALL LDHLDE
|
|
EX DE,HL
|
|
CALL L74E8
|
|
EX DE,HL
|
|
RET
|
|
|
|
L74E8: PUSH HL
|
|
LD HL,0FE00H
|
|
ADD HL,SP
|
|
SBC HL,DE
|
|
POP HL
|
|
RET NC
|
|
JP L4B2C
|
|
|
|
L74F4: LD DE,(INTFAC)
|
|
PUSH DE
|
|
JR L7503 ; (+008H)
|
|
|
|
L74FB: XOR A
|
|
LD (L76F4),A
|
|
INC HL
|
|
LD (L76F2),HL
|
|
L7503: LD B,000H
|
|
EXX
|
|
POP HL
|
|
PUSH HL
|
|
PUSH HL
|
|
LD HL,(TMPEND)
|
|
LD DE,KEYBUF
|
|
PUSH HL
|
|
LD A,(DE)
|
|
LD (HL),A
|
|
INC DE
|
|
INC HL
|
|
LD B,A
|
|
CALL L74DC
|
|
POP DE
|
|
LD (TMPEND),HL
|
|
LD HL,(STRST)
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,DE
|
|
EX (SP),HL
|
|
PUSH HL
|
|
EXX
|
|
L7526: POP DE
|
|
PUSH DE
|
|
PUSH BC
|
|
LD BC,(076F2H)
|
|
LD A,(L76F4)
|
|
PUSH BC
|
|
PUSH AF
|
|
LD BC,(0849CH)
|
|
PUSH BC
|
|
CALL L6E55
|
|
BIT 7,D
|
|
JP NZ,04AF2H
|
|
EX AF,AF'
|
|
POP BC
|
|
LD (0849CH),BC
|
|
POP AF
|
|
LD (L76F4),A
|
|
POP BC
|
|
LD (076F2H),BC
|
|
EX AF,AF'
|
|
INC HL
|
|
CP 029H
|
|
JR Z,L756C ; (+018H)
|
|
CP 02CH
|
|
JP NZ,L4AEC
|
|
POP BC
|
|
INC B
|
|
LD A,B
|
|
CP 004H
|
|
JP NC,04AF2H
|
|
EXX
|
|
POP HL
|
|
POP DE
|
|
EXX
|
|
PUSH DE
|
|
EXX
|
|
PUSH DE
|
|
PUSH HL
|
|
EXX
|
|
JR L7526 ; (-046H)
|
|
|
|
L756C: POP BC
|
|
EXX
|
|
POP HL
|
|
POP DE
|
|
EXX
|
|
INC B
|
|
PUSH DE
|
|
PUSH HL
|
|
EXX
|
|
LD HL,(STRST)
|
|
ADD HL,DE
|
|
LD B,(HL)
|
|
INC B
|
|
LD DE,KEYBUF
|
|
CALL LDDEHL
|
|
EXX
|
|
SET 7,C
|
|
CALL L77B6
|
|
RES 7,C
|
|
JR NC,L75E1 ; (+056H)
|
|
LD A,B
|
|
CP (HL)
|
|
JP NZ,04AFEH
|
|
INC HL
|
|
EX DE,HL
|
|
POP HL
|
|
LD (L849C),HL
|
|
EXX
|
|
LD HL,L0000
|
|
EXX
|
|
EX DE,HL
|
|
L759C: LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
INC HL
|
|
EX (SP),HL
|
|
PUSH DE
|
|
EXX
|
|
POP DE
|
|
CALL L76C8
|
|
EXX
|
|
PUSH HL
|
|
OR A
|
|
SBC HL,DE
|
|
JP NC,04AF2H
|
|
EXX
|
|
POP DE
|
|
CALL L76C4
|
|
EXX
|
|
POP HL
|
|
DJNZ L759C ; (-01cH)
|
|
PUSH HL
|
|
EXX
|
|
LD A,C
|
|
LD D,B
|
|
BIT 6,A
|
|
JR NZ,L75D4 ; (+014H)
|
|
AND 00FH
|
|
LD E,A
|
|
PUSH AF
|
|
CALL L76C8
|
|
PUSH HL
|
|
EXX
|
|
POP BC
|
|
POP AF
|
|
POP HL
|
|
ADD HL,BC
|
|
LD C,L
|
|
LD B,H
|
|
L75CF: LD HL,(L849C)
|
|
POP DE
|
|
RET
|
|
|
|
L75D4: 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 L75CF ; (-012H)
|
|
|
|
L75E1: EXX
|
|
LD A,(L76F4)
|
|
OR A
|
|
JP Z,04AF2H
|
|
POP HL
|
|
LD (L849C),HL
|
|
EXX
|
|
LD DE,(TMPEND)
|
|
LD L,B
|
|
LD H,000H
|
|
ADD HL,HL
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
INC DE
|
|
CALL L74E8
|
|
LD (HL),B
|
|
INC HL
|
|
EXX
|
|
LD HL,00001H
|
|
EXX
|
|
L7603: POP DE
|
|
LD A,(L76F4)
|
|
OR A
|
|
JR NZ,L7616 ; (+00cH)
|
|
PUSH HL
|
|
EX DE,HL
|
|
LD DE,0000AH
|
|
SCF
|
|
SBC HL,DE
|
|
JP NC,04AF2H
|
|
POP HL
|
|
L7616: INC DE
|
|
LD (HL),E
|
|
INC HL
|
|
LD (HL),D
|
|
INC HL
|
|
PUSH DE
|
|
EXX
|
|
POP DE
|
|
CALL L76C8
|
|
EXX
|
|
DJNZ L7603 ; (-021H)
|
|
DB 059H
|
|
LD D,000H
|
|
PUSH BC
|
|
PUSH DE
|
|
EXX
|
|
POP DE
|
|
CALL L76C8
|
|
PUSH HL
|
|
EXX
|
|
POP BC
|
|
PUSH BC
|
|
EX DE,HL
|
|
LD HL,(TMPEND)
|
|
LD L,(HL)
|
|
LD H,000H
|
|
ADD HL,HL
|
|
LD A,(KEYBUF)
|
|
ADD A,005H
|
|
ADD A,L
|
|
LD L,A
|
|
LD A,000H
|
|
ADC A,H
|
|
LD H,A
|
|
JR C,L764C ; (+005H)
|
|
ADD HL,BC
|
|
JR C,L764C ; (+002H)
|
|
PUSH HL
|
|
ADD HL,DE
|
|
L764C: JP C,L4B2C
|
|
EX DE,HL
|
|
CALL L74E8
|
|
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,KEYBUF
|
|
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
|
|
L7690: XOR A
|
|
LD (HL),A
|
|
INC HL
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JR NZ,L7690 ; (-008H)
|
|
LD (HL),A
|
|
EXX
|
|
POP DE
|
|
LD A,(L76F4)
|
|
OR A
|
|
JR Z,L76A5 ; (+004H)
|
|
LD HL,(L849C)
|
|
RET
|
|
|
|
L76A5: LD HL,(L76F2)
|
|
PUSH DE
|
|
JP L7503
|
|
|
|
L76AC: LD A,0FFH
|
|
LD (L76F4),A
|
|
L76B1: CALL L7495
|
|
LD A,(HL)
|
|
CALL L5E7B
|
|
CALL L74F4
|
|
CALL HLFTCH
|
|
CP 02CH
|
|
RET NZ
|
|
INC HL
|
|
JR L76B1 ; (-013H)
|
|
|
|
L76C4: ADD HL,DE
|
|
RET NC
|
|
JR L76EF ; (+027H)
|
|
|
|
L76C8: PUSH BC
|
|
EX DE,HL
|
|
LD C,L
|
|
LD A,H
|
|
LD HL,L0000
|
|
CALL L76D8
|
|
LD A,C
|
|
CALL L76D8
|
|
POP BC
|
|
RET
|
|
|
|
L76D8: OR A
|
|
JR Z,L76E9 ; (+00eH)
|
|
LD B,008H
|
|
L76DD: ADD HL,HL
|
|
JR C,L76EF ; (+00fH)
|
|
RLCA
|
|
JR NC,L76E6 ; (+003H)
|
|
ADD HL,DE
|
|
JR C,L76EF ; (+009H)
|
|
L76E6: DJNZ L76DD ; (-00bH)
|
|
RET
|
|
|
|
L76E9: LD A,H
|
|
LD H,L
|
|
LD L,000H
|
|
OR A
|
|
RET Z
|
|
L76EF: JP 04AFBH
|
|
|
|
L76F2: NOP
|
|
NOP
|
|
L76F4: NOP
|
|
L76F5: SUB 041H
|
|
CP 01AH
|
|
JP NC,L4AEC
|
|
LD BC,(07928H)
|
|
LD A,B
|
|
OR C
|
|
JR NZ,L7716 ; (+012H)
|
|
CALL L7442
|
|
L7707: 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 L709D
|
|
|
|
L7716: PUSH DE
|
|
CALL L7495
|
|
PUSH HL
|
|
INC B
|
|
LD DE,KEYBUF
|
|
LD HL,(TMPEND)
|
|
CALL L74DC
|
|
LD B,000H
|
|
LD HL,(L7928)
|
|
CALL HLFTCH
|
|
CP QDPC
|
|
JR Z,L7760 ; (+02fH)
|
|
CP 028H
|
|
JR NZ,L775D ; (+028H)
|
|
L7735: INC HL
|
|
INC B
|
|
PUSH BC
|
|
CALL L7495
|
|
LD A,C
|
|
POP DE
|
|
CP E
|
|
LD C,E
|
|
JR NZ,L7752 ; (+011H)
|
|
PUSH DE
|
|
LD C,B
|
|
INC C
|
|
PUSH HL
|
|
LD HL,(TMPEND)
|
|
LD DE,KEYBUF
|
|
CALL L7953
|
|
POP HL
|
|
POP BC
|
|
JR Z,L7776 ; (+024H)
|
|
L7752: CALL HLFTCH
|
|
CP 029H
|
|
JR Z,L7760 ; (+007H)
|
|
CP 02CH
|
|
JR Z,L7735 ; (-028H)
|
|
L775D: JP L4AEC
|
|
|
|
L7760: LD HL,(TMPEND)
|
|
LD DE,KEYBUF
|
|
LD A,(HL)
|
|
LD (DE),A
|
|
LD B,A
|
|
L7769: INC HL
|
|
INC DE
|
|
LD A,(HL)
|
|
LD (DE),A
|
|
DJNZ L7769 ; (-006H)
|
|
POP HL
|
|
POP DE
|
|
CALL L77B2
|
|
JR L7707 ; (-06fH)
|
|
|
|
L7776: LD HL,(L792A)
|
|
CALL L5E78
|
|
DEC B
|
|
JR Z,L7797 ; (+018H)
|
|
DEC HL
|
|
L7780: PUSH BC
|
|
L7781: CALL L51A2
|
|
CALL L413E
|
|
JP Z,L4AEC
|
|
CP 029H
|
|
JP Z,L4AEC
|
|
CP 02CH
|
|
JR NZ,L7781 ; (-012H)
|
|
POP BC
|
|
DJNZ L7780 ; (-016H)
|
|
INC HL
|
|
L7797: EX DE,HL
|
|
POP HL
|
|
EX (SP),HL
|
|
EX DE,HL
|
|
LD BC,(07928H)
|
|
PUSH BC
|
|
LD BC,L0000
|
|
LD (07928H),BC
|
|
CALL L6E9C
|
|
POP HL
|
|
LD (L7928),HL
|
|
POP HL
|
|
JP HLFTCH
|
|
|
|
L77B2: PUSH DE
|
|
JP L7446
|
|
|
|
L77B6: LD HL,(VARST)
|
|
L77B9: LD DE,KEYBUF
|
|
LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
CP 040H
|
|
JR NC,L77EA ; (+027H)
|
|
CP C
|
|
JR NZ,L77DF ; (+019H)
|
|
INC HL
|
|
LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,L77DD ; (+012H)
|
|
LD B,A
|
|
L77CC: INC DE
|
|
INC HL
|
|
LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,L77D7 ; (+005H)
|
|
DJNZ L77CC ; (-008H)
|
|
INC HL
|
|
SCF
|
|
RET
|
|
|
|
L77D7: INC HL
|
|
DJNZ L77D7 ; (-003H)
|
|
LD A,C
|
|
JR L77E4 ; (+007H)
|
|
|
|
L77DD: LD A,C
|
|
DEC HL
|
|
L77DF: AND 00FH
|
|
INC HL
|
|
ADD A,(HL)
|
|
INC HL
|
|
L77E4: LD E,A
|
|
LD D,000H
|
|
ADD HL,DE
|
|
JR L77B9 ; (-031H)
|
|
|
|
L77EA: CP C
|
|
JR Z,L7801 ; (+014H)
|
|
INC HL
|
|
L77EE: LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
DEC HL
|
|
ADD HL,DE
|
|
JR L77B9 ; (-03cH)
|
|
|
|
L77F5: LD A,C
|
|
SUB B
|
|
CPL
|
|
LD C,A
|
|
LD B,0FFH
|
|
ADD HL,BC
|
|
POP BC
|
|
L77FD: DEC HL
|
|
DEC HL
|
|
JR L77EE ; (-013H)
|
|
|
|
L7801: 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,L77FD ; (-018H)
|
|
PUSH BC
|
|
LD B,A
|
|
LD C,A
|
|
L7818: INC HL
|
|
INC DE
|
|
LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,L77F5 ; (-029H)
|
|
DJNZ L7818 ; (-008H)
|
|
INC HL
|
|
POP BC
|
|
SCF
|
|
RET
|
|
|
|
L7824: CALL L7495
|
|
SET 6,C
|
|
PUSH HL
|
|
CALL L77B6
|
|
JP C,04AFEH
|
|
LD (HL),C
|
|
EX (SP),HL
|
|
PUSH HL
|
|
DEC HL
|
|
L7834: CALL L51A2
|
|
OR A
|
|
JR Z,L783E ; (+004H)
|
|
CP 03AH
|
|
JR NZ,L7834 ; (-00aH)
|
|
L783E: POP DE
|
|
PUSH HL
|
|
INC HL
|
|
SBC HL,DE
|
|
LD A,(KEYBUF)
|
|
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,L4B2E
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
LD HL,(TMPEND)
|
|
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,KEYBUF
|
|
LD A,(DE)
|
|
LD (HL),A
|
|
LD B,A
|
|
L788E: INC DE
|
|
INC HL
|
|
LD A,(DE)
|
|
LD (HL),A
|
|
DJNZ L788E ; (-006H)
|
|
INC HL
|
|
PUSH HL
|
|
EXX
|
|
POP HL
|
|
CALL LDHLDE
|
|
LD (HL),000H
|
|
POP HL
|
|
RET
|
|
|
|
L789F: PUSH DE
|
|
CALL L7495
|
|
POP IX
|
|
PUSH BC
|
|
SET 6,C
|
|
LD DE,(0792AH)
|
|
LD (L792A),HL
|
|
PUSH DE
|
|
CALL L77B6
|
|
JP NC,04B0AH
|
|
LD DE,(07928H)
|
|
LD (L7928),HL
|
|
PUSH DE
|
|
PUSH IX
|
|
DEC HL
|
|
L78C1: CALL L51A2
|
|
CALL L413E
|
|
JP Z,L4AEC
|
|
CP QDPC
|
|
JR NZ,L78C1 ; (-00dH)
|
|
INC HL
|
|
POP DE
|
|
PUSH DE
|
|
CALL L6E9C
|
|
POP DE
|
|
LD HL,(L792A)
|
|
POP BC
|
|
LD (07928H),BC
|
|
POP BC
|
|
LD (0792AH),BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD A,C
|
|
CALL L7912
|
|
LD BC,00005H
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
CALL HLFTCH
|
|
CP 028H
|
|
RET NZ
|
|
PUSH DE
|
|
LD B,001H
|
|
L78F6: PUSH BC
|
|
CALL L51A2
|
|
POP BC
|
|
CALL L4141
|
|
JP Z,L4AEC
|
|
CP 028H
|
|
JR NZ,L7906 ; (+001H)
|
|
INC B
|
|
L7906: CP 029H
|
|
JR NZ,L78F6 ; (-014H)
|
|
DJNZ L78F6 ; (-016H)
|
|
INC HL
|
|
CALL HLFTCH
|
|
POP DE
|
|
RET
|
|
|
|
L7912: CP 003H
|
|
JR NZ,L791F ; (+009H)
|
|
L7916: LD A,(L84CE)
|
|
CP 003H
|
|
RET Z
|
|
JP 04AF5H
|
|
|
|
L791F: LD A,(L84CE)
|
|
CP 003H
|
|
RET NZ
|
|
JP 04AF5H
|
|
|
|
L7928: NOP
|
|
NOP
|
|
L792A: NOP
|
|
NOP
|
|
L792C: PUSH HL
|
|
CALL L60B7
|
|
LD A,H
|
|
OR A
|
|
JP NZ,04AF2H
|
|
LD A,L
|
|
CP 008H
|
|
JP NC,04AF2H
|
|
RST 018H
|
|
DB 012H
|
|
POP HL
|
|
JR C,L794E ; (+00eH)
|
|
JR Z,L794E ; (+00cH)
|
|
LD DE,0FFFFH
|
|
L7945: CALL L5E99
|
|
LD A,005H
|
|
LD (L84CE),A
|
|
RET
|
|
|
|
L794E: LD E,A
|
|
LD D,000H
|
|
JR L7945 ; (-00eH)
|
|
|
|
L7953: LD A,(DE)
|
|
CP (HL)
|
|
RET NZ
|
|
PUSH BC
|
|
PUSH DE
|
|
PUSH HL
|
|
LD B,C
|
|
L795A: LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,L7963 ; (+005H)
|
|
INC DE
|
|
INC HL
|
|
DJNZ L795A ; (-008H)
|
|
XOR A
|
|
L7963: POP HL
|
|
POP DE
|
|
POP BC
|
|
RET
|
|
|
|
L7967: PUSH HL
|
|
LD B,005H
|
|
CALL ?CLRHL
|
|
POP HL
|
|
RET
|
|
|
|
L796F: CALL L791F
|
|
L7972: LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
INC HL
|
|
LD A,(HL)
|
|
XOR 080H
|
|
LD (HL),A
|
|
DEC HL
|
|
RET
|
|
|
|
L797C: CALL L791F
|
|
LD C,A
|
|
LD A,080H
|
|
JP L798F
|
|
|
|
L7985: LD A,(L84CE)
|
|
CP 003H
|
|
JP Z,L79D9
|
|
LD C,A
|
|
XOR A
|
|
L798F: LD (L7D89),HL
|
|
PUSH DE
|
|
PUSH HL
|
|
LD (07D8CH),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 (L7D8B),A
|
|
JP C,L7A9A
|
|
XOR A
|
|
CP (HL)
|
|
JP Z,L79CE
|
|
LD A,(DE)
|
|
OR A
|
|
JR Z,L79B6 ; (+004H)
|
|
SUB (HL)
|
|
JP L7ADD
|
|
|
|
L79B6: LD SP,(07D8CH)
|
|
POP HL
|
|
POP DE
|
|
EI
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,L7E86
|
|
LD A,(L7D8B)
|
|
AND 080H
|
|
INC HL
|
|
RES 7,(HL)
|
|
OR (HL)
|
|
LD (HL),A
|
|
DEC HL
|
|
RET
|
|
|
|
L79CE: LD B,000H
|
|
LD A,005H
|
|
LD C,A
|
|
EX DE,HL
|
|
LDIR
|
|
JP L79B6
|
|
|
|
L79D9: LD B,(HL)
|
|
LD A,(DE)
|
|
ADD A,B
|
|
JP C,04AF8H
|
|
LD C,A
|
|
PUSH DE
|
|
PUSH HL
|
|
PUSH DE
|
|
INC HL
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD HL,(STRST)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD HL,(TMPEND)
|
|
CALL L74DC
|
|
EX (SP),HL
|
|
LD B,(HL)
|
|
INC HL
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,(HL)
|
|
LD HL,(STRST)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
POP HL
|
|
CALL L74DC
|
|
LD A,C
|
|
LD DE,(TMPEND)
|
|
LD BC,(STRST)
|
|
EX DE,HL
|
|
OR A
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
LD (TMPEND),HL
|
|
POP HL
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),E
|
|
INC HL
|
|
LD (HL),D
|
|
DEC HL
|
|
DEC HL
|
|
POP DE
|
|
RET
|
|
|
|
L7A1C: LD A,(L84CE)
|
|
CP 003H
|
|
JR NZ,L7A57 ; (+034H)
|
|
PUSH DE
|
|
PUSH HL
|
|
LD A,(DE)
|
|
OR (HL)
|
|
JR Z,L7A54 ; (+02bH)
|
|
LD A,(DE)
|
|
CP (HL)
|
|
JR C,L7A2E ; (+001H)
|
|
LD A,(HL)
|
|
L7A2E: OR A
|
|
JR Z,L7A4E ; (+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,(STRST)
|
|
EX DE,HL
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD B,A
|
|
OR A
|
|
JR Z,L7A54 ; (+00eH)
|
|
L7A46: LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,L7A54 ; (+00aH)
|
|
INC DE
|
|
INC HL
|
|
DJNZ L7A46 ; (-008H)
|
|
L7A4E: POP DE
|
|
POP HL
|
|
LD A,(DE)
|
|
CP (HL)
|
|
EX DE,HL
|
|
RET
|
|
|
|
L7A54: POP HL
|
|
POP DE
|
|
RET
|
|
|
|
L7A57: INC DE
|
|
INC HL
|
|
LD A,(DE)
|
|
DEC DE
|
|
XOR (HL)
|
|
RLCA
|
|
JR NC,L7A63 ; (+004H)
|
|
LD A,(HL)
|
|
DEC HL
|
|
RLCA
|
|
RET
|
|
|
|
L7A63: LD A,(HL)
|
|
DEC HL
|
|
RLCA
|
|
JR NC,L7A6E ; (+006H)
|
|
CALL L7A6E
|
|
RET Z
|
|
CCF
|
|
RET
|
|
|
|
L7A6E: PUSH DE
|
|
PUSH HL
|
|
EX DE,HL
|
|
LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,L7A8F ; (+01aH)
|
|
INC DE
|
|
INC HL
|
|
LD A,(HL)
|
|
OR 080H
|
|
LD B,A
|
|
LD A,(DE)
|
|
OR 080H
|
|
CP B
|
|
JR NZ,L7A8F ; (+00eH)
|
|
LD A,(L84CE)
|
|
LD B,A
|
|
DEC B
|
|
DEC B
|
|
L7A87: INC DE
|
|
INC HL
|
|
LD A,(DE)
|
|
CP (HL)
|
|
JR NZ,L7A8F ; (+002H)
|
|
DJNZ L7A87 ; (-008H)
|
|
L7A8F: POP HL
|
|
POP DE
|
|
RET
|
|
|
|
L7A92: POP HL
|
|
PUSH HL
|
|
CALL L7967
|
|
JP L79B6
|
|
|
|
L7A9A: CALL L7A6E
|
|
JR Z,L7A92 ; (-00dH)
|
|
JR NC,L7AAA ; (+009H)
|
|
LD A,(L7D8B)
|
|
XOR 080H
|
|
LD (L7D8B),A
|
|
SCF
|
|
L7AAA: EX AF,AF'
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,L79CE
|
|
LD A,(DE)
|
|
OR A
|
|
JP Z,L79B6
|
|
SUB (HL)
|
|
JR C,L7ABF ; (+007H)
|
|
CP 020H
|
|
JP NC,L79CE
|
|
JR L7AC6 ; (+007H)
|
|
|
|
L7ABF: NEG
|
|
CP 020H
|
|
JP NC,L79B6
|
|
L7AC6: EX AF,AF'
|
|
JR C,L7ACA ; (+001H)
|
|
EX DE,HL
|
|
L7ACA: EX AF,AF'
|
|
JP L7B64
|
|
|
|
L7ACE: LD SP,(07D8CH)
|
|
EI
|
|
POP HL
|
|
POP DE
|
|
LD A,(07D93H)
|
|
OR A
|
|
JP Z,04AEFH
|
|
RET
|
|
|
|
L7ADD: JR NC,L7AE9 ; (+00aH)
|
|
NEG
|
|
CP 020H
|
|
JP NC,L79B6
|
|
EX DE,HL
|
|
JR L7AEE ; (+005H)
|
|
|
|
L7AE9: CP 020H
|
|
JP NC,L79CE
|
|
L7AEE: CALL L7B24
|
|
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,L7B11 ; (+00bH)
|
|
RRA
|
|
RR D
|
|
RR L
|
|
RR H
|
|
INC C
|
|
JP Z,L7ACE
|
|
L7B11: LD E,A
|
|
LD A,C
|
|
EXX
|
|
LD BC,00005H
|
|
LD HL,(L7D89)
|
|
LD (HL),A
|
|
ADD HL,BC
|
|
DI
|
|
LD SP,HL
|
|
EXX
|
|
PUSH HL
|
|
PUSH DE
|
|
JP L79B6
|
|
|
|
L7B24: DI
|
|
LD (07D8EH),SP
|
|
EX AF,AF'
|
|
INC HL
|
|
LD SP,HL
|
|
EXX
|
|
POP DE
|
|
SET 7,E
|
|
POP HL
|
|
OR A
|
|
L7B32: EX AF,AF'
|
|
CP 008H
|
|
JR C,L7B43 ; (+00cH)
|
|
SUB 008H
|
|
EX AF,AF'
|
|
RL H
|
|
LD H,L
|
|
LD L,D
|
|
LD D,E
|
|
LD E,000H
|
|
JR L7B32 ; (-011H)
|
|
|
|
L7B43: OR A
|
|
JR Z,L7B54 ; (+00eH)
|
|
L7B46: EX AF,AF'
|
|
OR A
|
|
RR E
|
|
RR D
|
|
RR L
|
|
RR H
|
|
EX AF,AF'
|
|
DEC A
|
|
JR NZ,L7B46 ; (-00eH)
|
|
L7B54: EXX
|
|
EX DE,HL
|
|
LD C,(HL)
|
|
INC HL
|
|
LD SP,HL
|
|
POP DE
|
|
SET 7,E
|
|
POP HL
|
|
EX AF,AF'
|
|
LD SP,(07D8EH)
|
|
EI
|
|
RET
|
|
|
|
L7B64: CP 020H
|
|
JP NC,L79B6
|
|
CALL L7B24
|
|
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
|
|
L7B7F: OR A
|
|
JR Z,L7B98 ; (+016H)
|
|
L7B82: BIT 7,A
|
|
JR NZ,L7B94 ; (+00eH)
|
|
RL H
|
|
RL L
|
|
RL D
|
|
RLA
|
|
DEC C
|
|
JP NZ,L7B82
|
|
JP L7A92
|
|
|
|
L7B94: LD E,A
|
|
JP L7B11
|
|
|
|
L7B98: LD A,C
|
|
SUB 008H
|
|
LD C,A
|
|
LD A,D
|
|
LD D,L
|
|
LD L,H
|
|
LD H,000H
|
|
JR Z,L7BA5 ; (+002H)
|
|
JR NC,L7B7F ; (-026H)
|
|
L7BA5: JP L7A92
|
|
|
|
L7BA8: LD C,A
|
|
INC HL
|
|
INC DE
|
|
LD A,(DE)
|
|
XOR (HL)
|
|
LD (L7D8B),A
|
|
DEC HL
|
|
DEC DE
|
|
RET
|
|
|
|
L7BB3: CALL L791F
|
|
CALL L7BA8
|
|
PUSH DE
|
|
PUSH HL
|
|
LD (07D8CH),SP
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,L7A92
|
|
LD A,(DE)
|
|
OR A
|
|
JP Z,L7A92
|
|
INC DE
|
|
PUSH DE
|
|
POP IX
|
|
ADD A,(HL)
|
|
LD E,A
|
|
LD A,000H
|
|
ADC A,A
|
|
LD D,A
|
|
LD (07D91H),DE
|
|
INC HL
|
|
XOR A
|
|
LD (L7D90),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
|
|
L7BF6: LD B,008H
|
|
OR A
|
|
JP Z,L7C8B
|
|
L7BFC: RLCA
|
|
JR NC,L7C11 ; (+012H)
|
|
EX AF,AF'
|
|
EXX
|
|
LD A,C
|
|
ADD A,B
|
|
LD C,A
|
|
ADC HL,DE
|
|
EXX
|
|
ADC HL,DE
|
|
JR NC,L7C10 ; (+005H)
|
|
LD A,001H
|
|
LD (L7D90),A
|
|
L7C10: EX AF,AF'
|
|
L7C11: SRL D
|
|
RR E
|
|
EXX
|
|
RR D
|
|
RR E
|
|
RR B
|
|
EXX
|
|
DJNZ L7BFC ; (-023H)
|
|
L7C1F: INC IX
|
|
LD A,(IX+000H)
|
|
DEC C
|
|
JR NZ,L7BF6 ; (-031H)
|
|
EXX
|
|
LD A,(L7D90)
|
|
OR A
|
|
JR Z,L7C44 ; (+016H)
|
|
LD DE,(07D91H)
|
|
INC DE
|
|
LD (07D91H),DE
|
|
EXX
|
|
SCF
|
|
RR H
|
|
RR L
|
|
EXX
|
|
RR H
|
|
RR L
|
|
RR C
|
|
L7C44: BIT 7,C
|
|
JR Z,L7C62 ; (+01aH)
|
|
LD DE,00001H
|
|
ADD HL,DE
|
|
EXX
|
|
LD DE,L0000
|
|
ADC HL,DE
|
|
EXX
|
|
JR NC,L7C62 ; (+00dH)
|
|
LD DE,(07D91H)
|
|
INC DE
|
|
LD (07D91H),DE
|
|
EXX
|
|
LD H,080H
|
|
EXX
|
|
L7C62: POP IX
|
|
PUSH IX
|
|
LD (IX+004H),L
|
|
LD (IX+003H),H
|
|
EXX
|
|
LD (IX+002H),L
|
|
LD (IX+001H),H
|
|
LD HL,(07D91H)
|
|
OR A
|
|
LD DE,L0081
|
|
SBC HL,DE
|
|
LD A,H
|
|
ADD A,000H
|
|
JP M,L7C97
|
|
JP NZ,L7ACE
|
|
LD (IX+000H),L
|
|
JP L79B6
|
|
|
|
L7C8B: LD A,E
|
|
EXX
|
|
LD B,E
|
|
LD E,D
|
|
LD D,A
|
|
EXX
|
|
LD E,D
|
|
LD D,000H
|
|
JP L7C1F
|
|
|
|
L7C97: LD SP,(07D8CH)
|
|
JP L7A92
|
|
|
|
L7C9E: CALL L791F
|
|
CALL L7BA8
|
|
PUSH DE
|
|
PUSH HL
|
|
LD (07D8CH),SP
|
|
LD A,(DE)
|
|
OR A
|
|
JP Z,04AEFH
|
|
EX AF,AF'
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,L7A92
|
|
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,L7C97
|
|
JP NZ,L7ACE
|
|
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
|
|
L7CF0: LD B,008H
|
|
XOR A
|
|
L7CF3: BIT 7,H
|
|
JR NZ,L7D07 ; (+010H)
|
|
OR A
|
|
L7CF8: RLA
|
|
EXX
|
|
ADD HL,HL
|
|
EXX
|
|
ADC HL,HL
|
|
DJNZ L7CF3 ; (-00dH)
|
|
PUSH AF
|
|
DEC C
|
|
JR NZ,L7CF0 ; (-014H)
|
|
JP L7D41
|
|
|
|
L7D07: OR A
|
|
EXX
|
|
SBC HL,DE
|
|
EXX
|
|
SBC HL,DE
|
|
CCF
|
|
JR C,L7CF8 ; (-019H)
|
|
EXX
|
|
ADD HL,DE
|
|
EXX
|
|
ADC HL,DE
|
|
OR A
|
|
RLA
|
|
EXX
|
|
ADD HL,HL
|
|
EXX
|
|
ADC HL,HL
|
|
DJNZ L7D26 ; (+007H)
|
|
PUSH AF
|
|
LD B,008H
|
|
DEC C
|
|
JP Z,L7D41
|
|
L7D26: EXX
|
|
OR A
|
|
SBC HL,DE
|
|
EXX
|
|
SBC HL,DE
|
|
SCF
|
|
RLA
|
|
DJNZ L7D37 ; (+006H)
|
|
PUSH AF
|
|
LD B,008H
|
|
DEC C
|
|
JR Z,L7D41 ; (+00aH)
|
|
L7D37: EXX
|
|
ADD HL,HL
|
|
EXX
|
|
ADC HL,HL
|
|
JR C,L7D26 ; (-018H)
|
|
JP L7CF3
|
|
|
|
L7D41: 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
|
|
L7D4D: BIT 7,B
|
|
JR NZ,L7D64 ; (+013H)
|
|
EXX
|
|
SLA H
|
|
EXX
|
|
RL E
|
|
RL D
|
|
RL C
|
|
RL B
|
|
DEC A
|
|
JP NZ,L7D4D
|
|
JP L7A92
|
|
|
|
L7D64: EXX
|
|
RL H
|
|
EXX
|
|
JR NC,L7D7B ; (+011H)
|
|
LD HL,00001H
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD HL,L0000
|
|
ADC HL,BC
|
|
LD B,H
|
|
LD C,L
|
|
JR NC,L7D7B ; (+003H)
|
|
LD B,080H
|
|
INC A
|
|
L7D7B: POP HL
|
|
PUSH HL
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),B
|
|
L7D80: INC HL
|
|
LD (HL),C
|
|
INC HL
|
|
LD (HL),D
|
|
INC HL
|
|
LD (HL),E
|
|
JP L79B6
|
|
|
|
L7D89: NOP
|
|
NOP
|
|
L7D8B: NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
L7D90: NOP
|
|
NOP
|
|
NOP
|
|
NOP
|
|
L7D94: INC HL
|
|
BIT 7,(HL)
|
|
DEC HL
|
|
RET
|
|
|
|
L7D99: INC (HL)
|
|
RET NZ
|
|
JP 04AEFH
|
|
|
|
L7D9E: LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
DEC (HL)
|
|
RET NZ
|
|
JP L7967
|
|
|
|
L7DA6: 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,04AFBH
|
|
POP HL
|
|
RET
|
|
|
|
L7DB8: PUSH HL
|
|
LD (L8471),HL
|
|
CALL L7DA6
|
|
EX DE,HL
|
|
LD (L8473),HL
|
|
CALL L7DA6
|
|
EX DE,HL
|
|
LD (L8475),HL
|
|
CALL L7DA6
|
|
LD (08477H),DE
|
|
POP HL
|
|
RET
|
|
|
|
L7DD3: CALL L791F
|
|
EX DE,HL
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,L7E35
|
|
EX DE,HL
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,L7967
|
|
CALL L7D94
|
|
JR Z,L7E0F ; (+028H)
|
|
CALL L7972
|
|
EX DE,HL
|
|
PUSH DE
|
|
PUSH HL
|
|
LD DE,L84D7
|
|
CALL L5E93
|
|
LD HL,L84D7
|
|
CALL L608D
|
|
LD A,(HL)
|
|
OR A
|
|
JP NZ,04AF2H
|
|
POP HL
|
|
PUSH HL
|
|
CALL L60B7
|
|
BIT 0,L
|
|
POP DE
|
|
POP HL
|
|
JR Z,L7E0F ; (+006H)
|
|
CALL L7E0F
|
|
JP L7972
|
|
|
|
L7E0F: EX DE,HL
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,L7E35 ; (+021H)
|
|
CALL L7D94
|
|
JR Z,L7E3B ; (+022H)
|
|
CALL L7972
|
|
CALL L7E3B
|
|
PUSH DE
|
|
PUSH HL
|
|
LD DE,L84D7
|
|
CALL L5E90
|
|
LD HL,L84D7
|
|
POP DE
|
|
CALL L7C9E
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
POP DE
|
|
RET
|
|
|
|
L7E35: PUSH DE
|
|
CALL L5E90
|
|
POP HL
|
|
RET
|
|
|
|
L7E3B: PUSH DE
|
|
LD DE,L84D7
|
|
CALL L5E93
|
|
POP HL
|
|
CALL L8320
|
|
LD DE,L84D7
|
|
CALL L7BB3
|
|
JP L81FC
|
|
|
|
L7E4F: CALL L791F
|
|
PUSH DE
|
|
PUSH HL
|
|
CALL L60B7
|
|
LD A,L
|
|
CPL
|
|
LD E,A
|
|
LD A,H
|
|
CPL
|
|
LD D,A
|
|
JR L7E80 ; (+021H)
|
|
|
|
L7E5F: LD A,0A2H
|
|
LD BC,0B23EH
|
|
LD BC,0AA3EH
|
|
LD (L7E7B),A
|
|
INC A
|
|
LD (L7E7E),A
|
|
CALL L791F
|
|
PUSH DE
|
|
PUSH HL
|
|
CALL L60B7
|
|
EX DE,HL
|
|
CALL L60B7
|
|
LD A,H
|
|
L7E7B: AND D
|
|
LD D,A
|
|
LD A,L
|
|
L7E7E: AND E
|
|
LD E,A
|
|
L7E80: POP HL
|
|
CALL L5E99
|
|
POP DE
|
|
RET
|
|
|
|
L7E86: INC HL
|
|
RES 7,(HL)
|
|
DEC HL
|
|
RET
|
|
|
|
L7E8B: CALL L7D94
|
|
JP Z,L604F
|
|
CALL L7EB0
|
|
CALL L604F
|
|
LD DE,L84D7
|
|
CALL L7A1C
|
|
RET Z
|
|
L7E9E: LD DE,L6112
|
|
JP L797C
|
|
|
|
L7EA4: LD DE,L6112
|
|
JP L7985
|
|
|
|
L7EAA: LD DE,L6112
|
|
JP L7A1C
|
|
|
|
L7EB0: PUSH HL
|
|
PUSH DE
|
|
LD DE,L84D7
|
|
CALL L5E93
|
|
POP DE
|
|
POP HL
|
|
RET
|
|
|
|
L7EBB: CALL L604F
|
|
EX DE,HL
|
|
CALL L604F
|
|
EX DE,HL
|
|
CALL L7EB0
|
|
CALL L7C9E
|
|
CALL L604F
|
|
CALL L7BB3
|
|
PUSH DE
|
|
LD DE,L84D7
|
|
CALL L797C
|
|
POP DE
|
|
JP L7972
|
|
|
|
L7EDA: CALL L604F
|
|
EX DE,HL
|
|
CALL L604F
|
|
EX DE,HL
|
|
CALL L7C9E
|
|
JP L604F
|
|
|
|
L7EE8: LD A,(HL)
|
|
OR A
|
|
RET Z
|
|
CALL L7D94
|
|
JP NZ,04AF2H
|
|
CALL L8320
|
|
CALL L7D9E
|
|
JP L81FC
|
|
|
|
L7EFA: PUSH HL
|
|
EX DE,HL
|
|
CALL L5E90
|
|
POP HL
|
|
POP BC
|
|
RET
|
|
|
|
L7F02: LD A,(HL)
|
|
LD C,H
|
|
L7F04: ADD A,B
|
|
DEC HL
|
|
L7F06: PUSH BC
|
|
INC HL
|
|
LD A,(HL)
|
|
RES 7,(HL)
|
|
DEC HL
|
|
PUSH AF
|
|
CALL L7F17
|
|
POP AF
|
|
POP BC
|
|
RLCA
|
|
RET NC
|
|
JP L7972
|
|
|
|
L7F17: CALL L7EAA
|
|
JR C,L7F3A ; (+01eH)
|
|
CALL L7DA6
|
|
PUSH DE
|
|
PUSH HL
|
|
CALL L5E93
|
|
POP DE
|
|
PUSH DE
|
|
CALL L5E90
|
|
POP HL
|
|
POP DE
|
|
CALL L7C9E
|
|
CALL L7F3A
|
|
LD DE,08194H
|
|
CALL L797C
|
|
JP L7E86
|
|
|
|
L7F3A: LD A,0FFH
|
|
LD (L80B0),A
|
|
LD DE,L7F02
|
|
CALL L7A1C
|
|
JR C,07F96H ; (+04fH)
|
|
LD DE,L7F04
|
|
CALL L7A1C
|
|
PUSH AF
|
|
CALL L7DA6
|
|
POP AF
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
JR C,L7F6E ; (+014H)
|
|
CALL L7EA4
|
|
EX (SP),HL
|
|
CALL L797C
|
|
POP DE
|
|
CALL L7C9E
|
|
CALL 07F96H
|
|
LD DE,08199H
|
|
JP L7985
|
|
|
|
L7F6E: LD DE,L7F91
|
|
CALL L7BB3
|
|
CALL L7EA4
|
|
EX (SP),HL
|
|
LD DE,L7F91
|
|
CALL L797C
|
|
POP DE
|
|
CALL L7C9E
|
|
CALL 07F96H
|
|
CALL L7D99
|
|
LD DE,08199H
|
|
CALL L7985
|
|
JP L7D9E
|
|
|
|
L7F91: 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 L7DB8
|
|
POP HL
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
LD E,L
|
|
LD D,H
|
|
CALL L7BB3
|
|
LD DE,(08475H)
|
|
POP HL
|
|
PUSH HL
|
|
CALL L5E93
|
|
LD A,(L84CE)
|
|
DEC A
|
|
CP 004H
|
|
LD B,A
|
|
LD HL,08137H
|
|
JP Z,L803D
|
|
LD B,00AH
|
|
JP L803D
|
|
|
|
L7FC2: PUSH BC
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,L7EFA
|
|
LD DE,08194H
|
|
CALL L797C
|
|
CALL L7972
|
|
POP BC
|
|
L7FD2: PUSH BC
|
|
INC HL
|
|
LD A,(HL)
|
|
RES 7,(HL)
|
|
AND 080H
|
|
CPL
|
|
LD (L80B0),A
|
|
DEC HL
|
|
LD DE,L818A
|
|
PUSH HL
|
|
CALL L7A1C
|
|
JR C,L7FF0 ; (+009H)
|
|
CALL L7C9E
|
|
CALL L608D
|
|
CALL L7BB3
|
|
L7FF0: LD DE,0818FH
|
|
CALL L7A1C
|
|
JR C,L8003 ; (+00bH)
|
|
CALL L797C
|
|
LD A,(L80B0)
|
|
XOR 080H
|
|
LD (L80B0),A
|
|
L8003: LD DE,08194H
|
|
CALL L7A1C
|
|
JR C,L8014 ; (+009H)
|
|
LD DE,0818FH
|
|
CALL L797C
|
|
CALL L7E86
|
|
L8014: CALL L7DB8
|
|
POP HL
|
|
PUSH DE
|
|
LD DE,08199H
|
|
CALL L7A1C
|
|
JR NC,L8086 ; (+065H)
|
|
POP DE
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
LD E,L
|
|
LD D,H
|
|
CALL L7BB3
|
|
LD DE,(08475H)
|
|
POP HL
|
|
PUSH HL
|
|
CALL L5E93
|
|
LD A,(L84CE)
|
|
LD B,A
|
|
LD HL,L80E7
|
|
L803D: PUSH BC
|
|
L803E: PUSH HL
|
|
LD HL,(L8475)
|
|
LD DE,(08477H)
|
|
CALL L7BB3
|
|
POP HL
|
|
PUSH HL
|
|
LD DE,(08473H)
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
LD DE,(08475H)
|
|
CALL L7BB3
|
|
EX DE,HL
|
|
LD HL,(L8471)
|
|
CALL L7985
|
|
POP HL
|
|
LD DE,00005H
|
|
ADD HL,DE
|
|
POP BC
|
|
DJNZ L803D ; (-02dH)
|
|
POP HL
|
|
POP BC
|
|
LD A,(L80B0)
|
|
INC HL
|
|
XOR (HL)
|
|
CPL
|
|
LD (HL),A
|
|
DEC HL
|
|
LD A,(L84CE)
|
|
CP 008H
|
|
LD A,(HL)
|
|
JR Z,L8082 ; (+006H)
|
|
CP 05CH
|
|
L807E: RET NC
|
|
JP L7967
|
|
|
|
L8082: CP 04DH
|
|
JR L807E ; (-008H)
|
|
|
|
L8086: LD DE,08194H
|
|
CALL L797C
|
|
CALL L7E86
|
|
POP DE
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL L5E93
|
|
L8095: POP HL
|
|
LD E,L
|
|
LD D,H
|
|
CALL L7BB3
|
|
LD DE,(08475H)
|
|
CALL L5E90
|
|
L80A2: POP DE
|
|
PUSH DE
|
|
CALL L5E90
|
|
LD A,(L84CE)
|
|
LD B,A
|
|
LD HL,L810F
|
|
JR L803D ; (-073H)
|
|
|
|
L80B0: NOP
|
|
L80B1: PUSH BC
|
|
PUSH HL
|
|
CALL L7DA6
|
|
EX DE,HL
|
|
LD (L8479),HL
|
|
CALL L7DA6
|
|
LD (0847BH),DE
|
|
POP HL
|
|
PUSH HL
|
|
CALL L5E93
|
|
LD HL,(L8479)
|
|
EX DE,HL
|
|
POP HL
|
|
L80CB: PUSH HL
|
|
CALL L5E93
|
|
LD HL,(0847BH)
|
|
CALL L7FD2
|
|
POP DE
|
|
PUSH DE
|
|
CALL L5E93
|
|
LD HL,(L8479)
|
|
CALL L7FC2
|
|
EX DE,HL
|
|
POP HL
|
|
CALL L7C9E
|
|
POP BC
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; Floating-point polynomial coefficient tables for transcendental functions
|
|
; (SIN, COS, TAN, ATN, LOG, EXP, SQR). 5 bytes per FP constant.
|
|
; ---------------------------------------------------------------------------
|
|
L80E7: 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
|
|
L80F6: DB 06EH,038H,0EFH,01DH,02BH ; SIN/COS coeff 3
|
|
DB 067H,0D7H,032H,02BH,040H ; SIN/COS coeff 4
|
|
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
|
|
L810F: 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
|
|
L812C: DB 05CH,0C9H,0CBH,0A5H,046H ; TAN coeff 5 (NB: 0xC9=RET opcode in data)
|
|
L812F: 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
|
|
L8169: LD DE,L0000
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,L8178 ; (+008H)
|
|
CALL L7D94
|
|
INC DE
|
|
JR Z,L8178 ; (+002H)
|
|
DEC DE
|
|
DEC DE
|
|
L8178: CALL L5E99
|
|
RET
|
|
|
|
L817C: LD DE,0819EH
|
|
JR L8184 ; (+003H)
|
|
|
|
L8181: LD DE,0818FH
|
|
L8184: PUSH BC
|
|
CALL L7BB3
|
|
POP BC
|
|
RET
|
|
|
|
; FP constants for LOG/EXP computation
|
|
L818A: DB 083H,049H,00FH,0DAH,0A2H ; FP constant (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 constant (ln(2))
|
|
L81A2 EQU $-1 ; Last byte alias
|
|
L81A3: PUSH HL
|
|
CALL L60B7
|
|
LD A,000H
|
|
CP 040H
|
|
LD A,(HL)
|
|
CALL NZ,BREAKX
|
|
LD E,A
|
|
LD D,000H
|
|
POP HL
|
|
CALL L5E99
|
|
RET
|
|
|
|
L81B7: LD A,(HL)
|
|
OR A
|
|
JR Z,L81C0 ; (+005H)
|
|
CALL L7D94
|
|
JR Z,L81CB ; (+00bH)
|
|
L81C0: PUSH HL
|
|
LD HL,L4193
|
|
LD (L81FA),HL
|
|
POP HL
|
|
XOR A
|
|
LD R,A
|
|
L81CB: PUSH BC
|
|
LD DE,(081FAH)
|
|
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 (081FAH),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 L7E9E
|
|
POP BC
|
|
RET
|
|
|
|
L81FA: SUB E
|
|
LD B,C
|
|
L81FC: PUSH BC
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,L7EFA
|
|
INC HL
|
|
LD A,(HL)
|
|
LD (L8312),A
|
|
RES 7,(HL)
|
|
DEC HL
|
|
LD DE,L8467
|
|
CALL L7BB3
|
|
PUSH HL
|
|
CALL L7DA6
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
CALL L604F
|
|
PUSH HL
|
|
CALL L60B7
|
|
XOR A
|
|
CP H
|
|
JP NZ,04AEFH
|
|
LD A,L
|
|
LD (L8311),A
|
|
POP DE
|
|
POP HL
|
|
PUSH HL
|
|
CALL L797C
|
|
PUSH DE
|
|
PUSH HL
|
|
CALL L5E90
|
|
POP DE
|
|
POP HL
|
|
CALL L7D9E
|
|
EX DE,HL
|
|
XOR A
|
|
LD B,008H
|
|
L823D: PUSH BC
|
|
PUSH AF
|
|
CALL L7A1C
|
|
JR C,L824B ; (+007H)
|
|
CALL L797C
|
|
POP AF
|
|
SET 7,A
|
|
PUSH AF
|
|
L824B: POP AF
|
|
RLC A
|
|
EX DE,HL
|
|
PUSH AF
|
|
CALL L7D9E
|
|
POP AF
|
|
EX DE,HL
|
|
POP BC
|
|
DJNZ L823D ; (-01bH)
|
|
LD (L8313),A
|
|
PUSH DE
|
|
LD DE,L845D
|
|
LD A,(L84CE)
|
|
BIT 3,A
|
|
JR NZ,L8269 ; (+003H)
|
|
LD DE,L8462
|
|
L8269: CALL L7BB3
|
|
POP DE
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
LD A,(L84CE)
|
|
BIT 3,A
|
|
JP Z,L8301
|
|
CALL L7D99
|
|
LD DE,L610D
|
|
CALL L7985
|
|
CALL L7D9E
|
|
POP DE
|
|
PUSH DE
|
|
CALL L7BB3
|
|
LD DE,L610D
|
|
CALL L7D9E
|
|
CALL L7985
|
|
CALL L7D99
|
|
POP DE
|
|
PUSH DE
|
|
CALL L7BB3
|
|
LD DE,L8458
|
|
CALL L7BB3
|
|
L82A2: CALL L7D99
|
|
CALL L7EA4
|
|
CALL L7D9E
|
|
POP DE
|
|
PUSH DE
|
|
CALL L7BB3
|
|
CALL L7EA4
|
|
POP DE
|
|
PUSH DE
|
|
CALL L7BB3
|
|
L82B8: CALL L7EA4
|
|
EX (SP),HL
|
|
EX DE,HL
|
|
PUSH DE
|
|
CALL L5E90
|
|
POP HL
|
|
LD DE,L8408
|
|
LD A,(L8313)
|
|
LD B,008H
|
|
L82CA: RLC A
|
|
JR NC,L82D5 ; (+007H)
|
|
PUSH AF
|
|
PUSH BC
|
|
CALL L7BB3
|
|
POP BC
|
|
POP AF
|
|
L82D5: INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
DJNZ L82CA ; (-012H)
|
|
LD A,(L8311)
|
|
ADD A,(HL)
|
|
JP C,04AEFH
|
|
LD (HL),A
|
|
POP DE
|
|
CALL L7BB3
|
|
POP BC
|
|
LD A,(L8312)
|
|
RLC A
|
|
RET NC
|
|
PUSH BC
|
|
PUSH DE
|
|
PUSH HL
|
|
CALL L5E93
|
|
POP DE
|
|
PUSH DE
|
|
CALL L5E90
|
|
POP HL
|
|
POP DE
|
|
CALL L7C9E
|
|
POP BC
|
|
RET
|
|
|
|
L8301: POP DE
|
|
PUSH DE
|
|
CALL L7BB3
|
|
LD A,(HL)
|
|
OR A
|
|
CALL NZ,L7D9E
|
|
CALL L7985
|
|
JP L82B8
|
|
|
|
L8311: NOP
|
|
L8312: NOP
|
|
L8313: NOP
|
|
L8314: PUSH BC
|
|
CALL L8320
|
|
LD DE,L83F9
|
|
CALL L7BB3
|
|
POP BC
|
|
RET
|
|
|
|
L8320: PUSH BC
|
|
CALL L7D94
|
|
JP NZ,04AF2H
|
|
LD A,(HL)
|
|
OR A
|
|
JP Z,04AF2H
|
|
SUB 081H
|
|
LD (L83F8),A
|
|
LD (HL),081H
|
|
XOR A
|
|
LD B,008H
|
|
LD DE,L8408
|
|
L8339: PUSH BC
|
|
PUSH AF
|
|
CALL L7A1C
|
|
JR C,L834F ; (+00fH)
|
|
PUSH HL
|
|
LD HL,00028H
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
EX (SP),HL
|
|
CALL L7BB3
|
|
POP DE
|
|
POP AF
|
|
SET 7,A
|
|
PUSH AF
|
|
L834F: POP AF
|
|
RLC A
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
POP BC
|
|
DJNZ L8339 ; (-021H)
|
|
DB 022H
|
|
LD (HL),C
|
|
ADD A,H
|
|
CALL L7DA6
|
|
EX DE,HL
|
|
LD E,A
|
|
LD D,000H
|
|
CALL L5E99
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,L836E ; (+003H)
|
|
SUB 008H
|
|
LD (HL),A
|
|
L836E: LD A,(L83F8)
|
|
CP 080H
|
|
JR C,L8377 ; (+002H)
|
|
NEG
|
|
L8377: PUSH HL
|
|
CALL L7DA6
|
|
EX DE,HL
|
|
LD (L8473),HL
|
|
LD E,A
|
|
LD D,000H
|
|
CALL L5E99
|
|
LD A,(L83F8)
|
|
AND 080H
|
|
INC HL
|
|
OR (HL)
|
|
LD (HL),A
|
|
DEC HL
|
|
EX DE,HL
|
|
POP HL
|
|
CALL L7985
|
|
LD A,(L84CE)
|
|
LD DE,0846CH
|
|
CP 005H
|
|
JR Z,L83A0 ; (+003H)
|
|
LD DE,L845D
|
|
L83A0: CALL L7BB3
|
|
PUSH HL
|
|
LD DE,(08473H)
|
|
LD HL,(L8471)
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
CALL L7EA4
|
|
EX (SP),HL
|
|
CALL L797C
|
|
POP DE
|
|
CALL L7C9E
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
PUSH DE
|
|
LD E,L
|
|
LD D,H
|
|
CALL L7BB3
|
|
POP DE
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL L5E93
|
|
POP HL
|
|
LD DE,L8403
|
|
CALL L7985
|
|
EX DE,HL
|
|
POP HL
|
|
CALL L7BB3
|
|
LD DE,L610D
|
|
CALL L7D99
|
|
CALL L7985
|
|
CALL L7D9E
|
|
EX DE,HL
|
|
LD HL,(L8471)
|
|
CALL L7BB3
|
|
LD DE,L83FE
|
|
CALL L7BB3
|
|
POP DE
|
|
CALL L7985
|
|
POP BC
|
|
RET
|
|
|
|
L83F8: DB 000H ; Exponent work variable
|
|
; ---------------------------------------------------------------------------
|
|
; Floating-point polynomial coefficient tables for SQR, LOG, EXP functions
|
|
; Each entry is 5 bytes (1 exponent + 4 mantissa) in Sharp MZ FP format
|
|
; ---------------------------------------------------------------------------
|
|
L83F9: DB 07FH,05EH,05BH,0D8H,0A9H ; 1/sqrt(2) approx
|
|
L83FE: DB 07FH,04CH,0CCH,0CCH,0CDH ; log10(2) approx
|
|
L8403: DB 081H,055H,055H,055H,056H ; Coeff
|
|
L8408: 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
|
|
L8458: DB 07AH,008H,088H,088H,089H ; SQR constant
|
|
L845D: DB 080H,031H,072H,017H,0F8H ; SQR constant
|
|
L8462: DB 080H,031H,072H,017H,0F8H ; SQR constant
|
|
L8467: DB 081H,038H,0AAH,03BH,02AH ; SQR constant
|
|
DB 080H,031H,072H,017H,0F8H ; SQR constant
|
|
L8471: DS 2, 000H
|
|
L8473: DS 2, 000H
|
|
L8475: DS 4, 000H
|
|
L8479: DS 4, 000H
|
|
L847D: DS 2, 000H
|
|
L847F: DS 2, 000H
|
|
L8481: DS 2, 000H
|
|
L8483: DS 2, 000H
|
|
L8485: DB 000H
|
|
L8486: DB 000H
|
|
L8487: DS 2, 000H
|
|
L8489: DS 2, 000H
|
|
L848B: DS 4, 000H
|
|
L848F: DB 000H
|
|
L8490: DS 2, 000H
|
|
DB 015H
|
|
DB 000H
|
|
DB 0EBH
|
|
DB 0FFH
|
|
DS 2, 000H
|
|
L8498: DS 2, 000H
|
|
L849A: DS 2, 000H
|
|
L849C: DS 7, 000H
|
|
L84A3: DB 000H
|
|
L84A4: DS 3, 000H
|
|
L84A7: DB 000H
|
|
L84A8: DS 4, 000H
|
|
L84AC: DB 000H
|
|
L84AD: DS 8, 000H
|
|
L84B5: DS 25, 000H
|
|
L84CE: DB 008H ; Splash screen / banner text
|
|
L84CF: DS 8, 000H
|
|
L84D7: DS 8, 000H
|
|
L84DF: DS 8, 000H
|
|
L84E7: DB 016H
|
|
DB 00DH
|
|
DB 020H
|
|
DS 38, 0D7H
|
|
DS 4, 020H
|
|
DB "BASIC ",005H,"INTERPRETER"
|
|
DS 2, 020H
|
|
DB 006H,"MZ-5Z"
|
|
DS 2, 030H
|
|
DB "8 V1.1Z ",00DH
|
|
DS 3, 020H
|
|
DB 043H,005H,"OPYRIGHT ",006H,"(C) 1984 ",005H,"BY ",006H,"SHARP CORP."
|
|
DS 5, 020H
|
|
DS 38, 0CFH
|
|
DB 020H,00DH,020H,005H,"30134 BYTES FR"
|
|
DS 2, 045H
|
|
DS 2, 00DH
|
|
DS 93, 000H
|
|
|
|
IF BUILD_RFS = 1
|
|
; =============================================================================
|
|
; $RFS - ROM Filing System device module (Direct SD Card Access)
|
|
;
|
|
; V1.0Z: Bypasses the RFS ROM entirely. All SD card access is done via
|
|
; direct SPI through the picoZ80 hardware SPI emulation at EFFBh/EFFCh.
|
|
;
|
|
; Only OUT(E3H) is needed to map MMIO for SPI port access, and OUT(E1H)
|
|
; to return to DRAM. No ROM banking, no BNKSELUSER, no lower memory
|
|
; switching required.
|
|
;
|
|
; SPI protocol:
|
|
; SPIOUT: LD (HWSPIDATA),A ; LD (HWSPISTART),A (send byte)
|
|
; SPIIN: LD (HWSPISTART),A ; LD A,(HWSPIDATA) (receive byte)
|
|
;
|
|
; SD card sector read (CMD17):
|
|
; CS LOW -> CMD17(0x51) + 4-byte sector + 0xFF -> poll R1(0x00) ->
|
|
; poll data token(0xFE) -> read 512 bytes -> 2 CRC -> CS HIGH
|
|
;
|
|
; SD image layout: each drive = 0x8010 sectors (directory + file blocks).
|
|
; Drive 0 at sector 0, drive 1 at 0x8010, drive 2 at 0x10020, etc.
|
|
; RFS1: = SD drive 3, RFS7: = SD drive 9 (SDDRIVENO = ZCH + 3, offset +3 skips boot drives 0-2).
|
|
;
|
|
; Directory: 16 entries per sector, 32 bytes each:
|
|
; [0] FLAG1 (bit7=active), [1] ATRB, [2..18] NAME (17, null-term),
|
|
; [19..22] START_SECTOR (4 bytes, big-endian),
|
|
; [23..24] SIZE (2 bytes, LE), [25..26] DTADR (2 bytes, LE),
|
|
; [27..28] EXADR (2 bytes, LE), [29..31] reserved.
|
|
;
|
|
; Device chain: $QD -> $RFS -> $USR -> NULL
|
|
; =============================================================================
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; $RFS Device Descriptor (29 bytes header + 22 bytes state = 51 bytes)
|
|
; ---------------------------------------------------------------------------
|
|
ENDIF ; (Glass: $RFS label must be outside IF)
|
|
$RFS:
|
|
IF BUILD_RFS = 1
|
|
DW $USR ; Next device = $USR
|
|
DB "RFS",000H ; Device name
|
|
DB 05FH ; flags1: bit5=1 ZINP-based DIR, bit6=1 ZRO enum capable
|
|
DB 007H ; flags2: max channel 7 (bit7 must be 0, SVC #39 errors if set)
|
|
DB 0FFH ; dirmx: 255 (max directory entries)
|
|
DW RFSINIT ; ZINIT handler
|
|
DW RFSRO ; ZRO handler (LOAD: find file, extract header)
|
|
DW RFSWO ; ZWO handler (SAVE: sets ELMD20 SIZE)
|
|
DW RFSSTRT ; ZCL/ZSTRT handler
|
|
DW 00000H ; ZKL (not used)
|
|
DW RFSINP_DIR ; ZINP handler (DIR buffer fill + LOAD data)
|
|
DW RFSOUT ; ZOUT handler (triggers RFSWO on first call during SAVE)
|
|
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..+50.
|
|
; Without this, BASIC reads into code bytes causing "Disk mismatch" errors.
|
|
RFSST00: DB 000H ; +29: state byte 0
|
|
RFSST01: DB 000H ; +30: state byte 1
|
|
RFSST02: DB 000H ; +31: state byte 2
|
|
RFSST03: DS 3, 000H ; +32..+34: state bytes 3-5
|
|
RFSST06: DB 000H ; +35: state byte 6
|
|
RFSST07: DS 2, 000H ; +36..+37: state bytes 7-8
|
|
RFSST09: DB 000H ; +38: state byte 9
|
|
RFSST10: DB 000H ; +39: state byte 10
|
|
RFSST11: DB 000H ; +40: state byte 11
|
|
RFSST12: DB 000H ; +41: state byte 12
|
|
RFSST13: DS 4, 000H ; +42..+45: state bytes 13-16
|
|
RFSST17: DS 4, 000H ; +46..+49: state bytes 17-20
|
|
RFSST21: DB 000H ; +50: state byte 21
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSFREE - Free space query (not supported, return carry)
|
|
; ---------------------------------------------------------------------------
|
|
RFSFREE: XOR A
|
|
SCF
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSINIT - Initialize RFS device
|
|
; ---------------------------------------------------------------------------
|
|
RFSINIT: XOR A
|
|
LD (SAVE_PENDING),A ; Clear at start of any operation
|
|
LD (DIR_FILLED),A ; Clear so next ZINP does DIR fill
|
|
LD (DIR_ENTRY_IDX),A ; Reset directory entry enumerator
|
|
LD A,0FFH
|
|
LD (DIRSECBUF),A ; Invalidate sector cache
|
|
LD A,(ZCH)
|
|
ADD A,003H ; RFS1:=drive 3, skipping boot drives 0-2
|
|
LD (SDDRIVENO),A
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSSTRT - Start/Open device (A=0 means open, A!=0 means close)
|
|
; ---------------------------------------------------------------------------
|
|
RFSSTRT: OR A
|
|
RET NZ ; Close = just return
|
|
LD A,(ZCH)
|
|
ADD A,003H ; RFS1:=drive 3, skipping boot drives 0-2
|
|
LD (SDDRIVENO),A
|
|
;
|
|
; V1.1Y: Reset RFSRO state so file search starts from entry 0.
|
|
; Without this, LOAD after DIR/SAVE fails: RFSRO resumes from
|
|
; the post-DIR DIR_ENTRY_IDX position and misses files at earlier
|
|
; directory indices ("File not found" for files that exist).
|
|
XOR A
|
|
LD (DIR_ENTRY_IDX),A
|
|
LD A,0FFH
|
|
LD (DIRSECBUF),A ; Invalidate sector cache (stale after SAVE)
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSDIR - ZWDIR handler (stub, not called with bit5=1 in flags1)
|
|
; ---------------------------------------------------------------------------
|
|
RFSDIR: XOR A
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSWO - Write Open (ZWO handler)
|
|
;
|
|
; BASIC calls ZWO from BOTH the OPEN handler and L1CE4 SAVE path, THEN
|
|
; calls ZOUT. If we do the actual write here, the file gets created
|
|
; multiple times and the premature directory entry triggers "Already exist"
|
|
; during BASIC's own duplicate check.
|
|
;
|
|
; RFSWO calculates SIZE = TEXTED - TEXTST and stores it in ELMD20.
|
|
; This is essential because the SAVE path for bit-5 devices never populates
|
|
; ELMD20, leaving RFSDOWRITE to read SIZE=0. The actual SD write is still
|
|
; deferred to RFSOUT (ZOUT) via the SAVE_PENDING one-shot flag.
|
|
; ---------------------------------------------------------------------------
|
|
RFSWO: LD HL,(TEXTED) ; End of BASIC text area
|
|
LD DE,(TEXTST) ; Start of BASIC text area
|
|
OR A
|
|
SBC HL,DE ; HL = program size in bytes
|
|
LD (ELMD20),HL ; Store SIZE for RFSDOWRITE
|
|
XOR A ; A=0, NC = success
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSDOWRITE - Actual SD card write (called from RFSOUT only)
|
|
;
|
|
; Performs the complete save operation:
|
|
; 1. Finds a free directory entry
|
|
; 2. Calculates the file's start sector from entry number
|
|
; 3. Writes file data sector-by-sector (toggling DRAM/MMIO)
|
|
; 4. Re-reads directory sector, fills entry, writes it back
|
|
;
|
|
; Entry: ELMD filled with file header (ATRB, NAME, SIZE, DTADR, EXADR)
|
|
; For type 2 (BASIC): ELMD20=SIZE, source data at TEXTST
|
|
; For type 1 (machine code): ELMD20=DTADR, ELMD18=SIZE
|
|
; Exit: NC = success, C = error
|
|
; ---------------------------------------------------------------------------
|
|
RFSDOWRITE: PUSH HL
|
|
PUSH DE
|
|
PUSH BC
|
|
;
|
|
; Get file info from ELMD — field mapping depends on file type.
|
|
; BASIC SAVE (type 2) stores SIZE in ELMD20 and source is TEXTST.
|
|
; Machine code SAVE (type 1) uses ELMD18=SIZE, ELMD20=DTADR.
|
|
LD A,(ELMD)
|
|
CP 002H
|
|
JR NZ,WO_NONBASIC
|
|
;
|
|
; Type 2 (BASIC): SIZE in ELMD20, source at TEXTST
|
|
LD HL,(ELMD20) ; SIZE (program length)
|
|
LD (FILE_SIZE),HL
|
|
LD HL,(TEXTST) ; Source = start of BASIC text
|
|
LD (FILE_LOADADDR),HL
|
|
JR WO_GOTINFO
|
|
;
|
|
WO_NONBASIC:
|
|
; Non-BASIC: SIZE in ELMD18, source at ELMD20
|
|
LD HL,(ELMD18) ; SIZE
|
|
LD (FILE_SIZE),HL
|
|
LD HL,(ELMD20) ; DTADR (source address for data)
|
|
LD (FILE_LOADADDR),HL
|
|
WO_GOTINFO:
|
|
;
|
|
; Set up drive number
|
|
LD A,(ZCH)
|
|
ADD A,003H ; RFS1:=drive 3
|
|
LD (SDDRIVENO),A
|
|
;
|
|
; Enter MMIO mode
|
|
CALL MMIO_ON
|
|
;
|
|
; Reset directory cache
|
|
LD A,0FFH
|
|
LD (DIRSECBUF),A
|
|
;
|
|
; --- Find free directory entry ---
|
|
LD E,000H
|
|
LD B,000H ; 256 entries (DJNZ wraps)
|
|
WO_SCAN: PUSH BC
|
|
PUSH DE
|
|
CALL GETSDDIRENT
|
|
POP DE
|
|
POP BC
|
|
OR A
|
|
JP NZ,WO_IOERR ; SD read error
|
|
LD A,(HL)
|
|
BIT 7,A
|
|
JR Z,WO_FOUND ; Bit 7 clear = free slot
|
|
INC E
|
|
DJNZ WO_SCAN
|
|
JP WO_IOERR ; Directory full
|
|
;
|
|
WO_FOUND: ; E = free entry number
|
|
LD A,E
|
|
LD (SAVE_DIRENT),A
|
|
;
|
|
; --- Calculate start sector: E * 128 + 16 ---
|
|
; E * 128 = E << 7, result fits 16 bits (max 255*128=32640)
|
|
LD H,000H
|
|
LD L,E ; HL = entry number
|
|
ADD HL,HL ; *2
|
|
ADD HL,HL ; *4
|
|
ADD HL,HL ; *8
|
|
ADD HL,HL ; *16
|
|
ADD HL,HL ; *32
|
|
ADD HL,HL ; *64
|
|
ADD HL,HL ; *128
|
|
LD DE,00010H ; +16 (directory sectors)
|
|
ADD HL,DE
|
|
LD D,000H
|
|
LD E,000H ; DEHL = relative sector
|
|
CALL RFSGETSECTR ; DEHL = absolute sector
|
|
CALL SETLBAADDR ; Store in SDSTARTSEC
|
|
;
|
|
; --- Write file data sector-by-sector ---
|
|
WO_WLOOP: LD HL,(FILE_SIZE)
|
|
LD A,H
|
|
OR L
|
|
JR Z,WO_WDONE ; No data left
|
|
;
|
|
; Map DRAM to read source data
|
|
OUT (PORT_DRAM),A
|
|
;
|
|
; Calculate bytes to copy: min(FILE_SIZE, 512)
|
|
LD HL,(FILE_SIZE)
|
|
LD DE,00200H ; 512
|
|
OR A
|
|
SBC HL,DE
|
|
JR C,WO_PARTIAL
|
|
;
|
|
; Full sector: remaining = HL
|
|
LD (FILE_SIZE),HL
|
|
LD BC,00200H
|
|
JR WO_COPY
|
|
;
|
|
WO_PARTIAL: ; Less than 512 bytes left
|
|
ADD HL,DE ; Restore HL = FILE_SIZE
|
|
LD B,H
|
|
LD C,L ; BC = bytes to copy
|
|
PUSH BC ; Save actual byte count
|
|
LD HL,0
|
|
LD (FILE_SIZE),HL
|
|
;
|
|
; Zero-fill SECTORBUF first for partial sector
|
|
LD HL,SECTORBUF
|
|
LD DE,SECTORBUF + 1
|
|
PUSH BC
|
|
LD BC,001FFH ; 511 bytes
|
|
LD (HL),000H
|
|
LDIR
|
|
POP BC
|
|
POP BC ; Restore actual byte count
|
|
;
|
|
WO_COPY: LD HL,(FILE_LOADADDR)
|
|
LD DE,SECTORBUF
|
|
LDIR ; Copy source data to SECTORBUF
|
|
LD (FILE_LOADADDR),HL ; Update source address
|
|
;
|
|
; Map MMIO for SPI write
|
|
OUT (PORT_MMIO),A
|
|
;
|
|
; Write SECTORBUF to current sector
|
|
CALL SD_WRITE
|
|
OR A
|
|
JP NZ,WO_IOERR
|
|
;
|
|
; Increment sector for next write
|
|
CALL INC_STARTSEC
|
|
JR WO_WLOOP
|
|
;
|
|
; --- Write directory entry ---
|
|
WO_WDONE: ; Ensure MMIO is active
|
|
OUT (PORT_MMIO),A
|
|
;
|
|
; Re-read the directory sector containing our entry
|
|
LD A,0FFH
|
|
LD (DIRSECBUF),A ; Force re-read
|
|
LD A,(SAVE_DIRENT)
|
|
LD E,A
|
|
PUSH DE
|
|
CALL GETSDDIRENT ; HL = entry in SECTORBUF
|
|
POP DE
|
|
OR A
|
|
JP NZ,WO_IOERR
|
|
;
|
|
; HL = 32-byte entry in SECTORBUF. Fill it.
|
|
; FLAG1 = 0x80 (active)
|
|
LD (HL),080H
|
|
INC HL
|
|
;
|
|
; ATRB: remap type 02 -> 05 for SD storage
|
|
LD A,(ELMD) ; Disk BASIC type
|
|
CP 002H
|
|
JR NZ,WO_AT1
|
|
LD A,005H ; BTX -> MZ-700 BASIC tape type
|
|
WO_AT1: LD (HL),A
|
|
INC HL
|
|
;
|
|
; NAME: 17 bytes from ELMD1, CR -> null
|
|
PUSH DE
|
|
LD DE,ELMD1
|
|
LD B,17
|
|
WO_NM: LD A,(DE)
|
|
CP 00DH ; CR?
|
|
JR NZ,WO_NM1
|
|
XOR A ; CR -> null for SD
|
|
WO_NM1: LD (HL),A
|
|
INC HL
|
|
INC DE
|
|
DJNZ WO_NM
|
|
POP DE
|
|
;
|
|
; START_SECTOR: 4 bytes (calculate from entry number)
|
|
PUSH HL ; Save directory entry pointer
|
|
LD A,(SAVE_DIRENT)
|
|
LD H,000H
|
|
LD L,A
|
|
ADD HL,HL ; *2
|
|
ADD HL,HL ; *4
|
|
ADD HL,HL ; *8
|
|
ADD HL,HL ; *16
|
|
ADD HL,HL ; *32
|
|
ADD HL,HL ; *64
|
|
ADD HL,HL ; *128
|
|
LD DE,00010H ; +16
|
|
ADD HL,DE ; HL = relative start sector (16-bit)
|
|
; Store as big-endian 32-bit (D=0, E=0, H, L)
|
|
EX DE,HL ; DE = sector
|
|
POP HL ; HL = entry pointer
|
|
LD (HL),000H ; Byte 0 (MSB) = 0
|
|
INC HL
|
|
LD (HL),000H ; Byte 1 = 0
|
|
INC HL
|
|
LD (HL),D ; Byte 2
|
|
INC HL
|
|
LD (HL),E ; Byte 3 (LSB)
|
|
INC HL
|
|
;
|
|
; SIZE: 2 bytes LE — read original from ELMD (FILE_SIZE is 0 after write loop).
|
|
PUSH DE
|
|
LD A,(ELMD)
|
|
CP 002H
|
|
JR NZ,WO_SZ_NB
|
|
LD DE,(ELMD20) ; BASIC: SIZE in ELMD20
|
|
JR WO_SZ_OK
|
|
WO_SZ_NB: LD DE,(ELMD18) ; Non-BASIC: SIZE in ELMD18
|
|
WO_SZ_OK: LD (HL),E
|
|
INC HL
|
|
LD (HL),D
|
|
INC HL
|
|
;
|
|
; DTADR: 2 bytes LE — read original from ELMD/TEXTST.
|
|
LD A,(ELMD)
|
|
CP 002H
|
|
JR NZ,WO_DA_NB
|
|
LD DE,(TEXTST) ; BASIC: load address is TEXTST
|
|
JR WO_DA_OK
|
|
WO_DA_NB: LD DE,(ELMD20) ; Non-BASIC: DTADR in ELMD20
|
|
WO_DA_OK: LD (HL),E
|
|
INC HL
|
|
LD (HL),D
|
|
INC HL
|
|
;
|
|
; EXADR: 2 bytes LE from ELMD22
|
|
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 the directory sector back to SD
|
|
; Calculate directory sector address
|
|
LD A,(SAVE_DIRENT)
|
|
SRL A
|
|
SRL A
|
|
SRL A
|
|
SRL A ; A = dir sector number (0-15)
|
|
LD DE,0
|
|
LD H,0
|
|
LD L,A
|
|
CALL RFSGETSECTR ; DEHL = absolute dir sector
|
|
CALL SETLBAADDR
|
|
CALL SD_WRITE
|
|
OR A
|
|
JR NZ,WO_IOERR
|
|
;
|
|
; Success
|
|
CALL MMIO_OFF
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
XOR A ; NC = success
|
|
RET
|
|
;
|
|
WO_IOERR: CALL MMIO_OFF
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
XOR A
|
|
SCF ; C = error
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSOUT - Write Data (ZOUT handler for SAVE)
|
|
;
|
|
; BASIC's SAVE path calls ZOUT after ZWO. Since RFSWO is now a no-op,
|
|
; RFSOUT is the single entry point for the actual write. On the first
|
|
; call (SAVE_PENDING=0, cleared by RFSINIT), we call RFSDOWRITE to do
|
|
; the full SD card write in one shot (reading directly from DTADR in
|
|
; memory). Sets SAVE_PENDING=1 after, so subsequent calls are no-ops.
|
|
; ---------------------------------------------------------------------------
|
|
RFSOUT: LD A,(SAVE_PENDING)
|
|
OR A
|
|
JR NZ,RFSOUT_NOP ; Already written (1 = done), return success
|
|
INC A ; A = 1
|
|
LD (SAVE_PENDING),A ; Mark as done (one-shot)
|
|
JP RFSDOWRITE ; Do the full SD write and return
|
|
RFSOUT_NOP: XOR A ; A=0, NC = success
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSRO - Read One directory entry (ZRO handler).
|
|
;
|
|
; V1.1V: Rewritten as directory entry enumerator.
|
|
;
|
|
; ZRO is called by BASIC for two purposes:
|
|
; 1. L1C0F file search loop (HL=KEYBUF) — enumerate entries, compare names
|
|
; 2. L1D53 DIR buffer fill loop (HL=L2000+offset) — fill 32-byte entries
|
|
;
|
|
; Each call returns one valid 32-byte MZF directory entry at the buffer
|
|
; pointed to by HL (the caller's HL passed through IOCALL). The internal
|
|
; DIR_ENTRY_IDX counter advances across calls; RFSINIT resets it to 0.
|
|
;
|
|
; Entry: HL = target buffer (32 bytes, set by caller before IOCALL)
|
|
; Exit: NC = valid entry written to (HL), A = entry type (ATRB byte)
|
|
; CF = no more entries (A=0)
|
|
; ---------------------------------------------------------------------------
|
|
RFSRO:
|
|
; Save target buffer address for CONVERT_ENTRY
|
|
LD (DIR_BUFPTR),HL
|
|
;
|
|
; Save registers on BASIC stack (before MMIO_ON switches stacks)
|
|
PUSH HL
|
|
PUSH DE
|
|
PUSH BC
|
|
;
|
|
; Set up drive number
|
|
LD A,(ZCH)
|
|
ADD A,003H ; RFS1:=drive 3
|
|
LD (SDDRIVENO),A
|
|
;
|
|
; Enter MMIO mode (switches to temp stack, enables SPI)
|
|
CALL MMIO_ON
|
|
;
|
|
; Clear 32 bytes at target buffer (below D000H, accessible in MMIO)
|
|
LD HL,(DIR_BUFPTR)
|
|
LD B,32
|
|
RFSRO_CLR: LD (HL),000H
|
|
INC HL
|
|
DJNZ RFSRO_CLR
|
|
;
|
|
RFSRO_NEXT:
|
|
; Get current entry index
|
|
LD A,(DIR_ENTRY_IDX)
|
|
LD E,A
|
|
;
|
|
; Read directory entry from SD card
|
|
CALL GETSDDIRENT ; HL=entry in SECTORBUF, A=status
|
|
OR A
|
|
JR NZ,RFSRO_END ; SD read error → done
|
|
;
|
|
; Check if entry is active (FLAG1 bit 7 set)
|
|
LD A,(HL)
|
|
BIT 7,A
|
|
JR Z,RFSRO_SKIP ; Inactive, skip
|
|
;
|
|
; Check ATRB at offset 1 — reject 0x00 (empty) and 0xFF (uninit)
|
|
INC HL
|
|
LD A,(HL)
|
|
DEC HL ; HL back to entry start
|
|
OR A
|
|
JR Z,RFSRO_SKIP ; ATRB=0, skip
|
|
CP 0FFH
|
|
JR Z,RFSRO_SKIP ; ATRB=0xFF, skip
|
|
;
|
|
; Valid entry: convert SD format to MZF format at DIR_BUFPTR
|
|
; (DIR_BUFPTR was set at RFSRO entry from caller's HL)
|
|
; HL = SD entry in SECTORBUF
|
|
CALL CONVERT_ENTRY
|
|
;
|
|
; Advance entry index for next call
|
|
LD A,(DIR_ENTRY_IDX)
|
|
INC A
|
|
LD (DIR_ENTRY_IDX),A
|
|
;
|
|
; Debug: show entry delivered
|
|
PUSH AF
|
|
OUT (PORT_DRAM),A ; Switch to DRAM for debug I/O
|
|
LD A,(DIR_ENTRY_IDX)
|
|
DEC A ; Show the index we just returned
|
|
OUT (PORT_MMIO),A ; Back to MMIO
|
|
POP AF
|
|
;
|
|
; Success: exit MMIO, restore regs, return NC
|
|
CALL MMIO_OFF
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
;
|
|
; Return ATRB value in A, NC = success
|
|
LD HL,(DIR_BUFPTR)
|
|
LD A,(HL) ; A = ATRB byte (first byte of MZF entry)
|
|
OR A ; Clear carry
|
|
RET
|
|
;
|
|
RFSRO_SKIP:
|
|
; Advance to next entry
|
|
LD A,(DIR_ENTRY_IDX)
|
|
INC A
|
|
LD (DIR_ENTRY_IDX),A
|
|
JR Z,RFSRO_END ; Wrapped 255->0: all 256 scanned
|
|
JR RFSRO_NEXT
|
|
;
|
|
RFSRO_END:
|
|
; No more entries (or SD error)
|
|
CALL MMIO_OFF
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
XOR A ; A=0
|
|
SCF ; CF = no more entries
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSINP_DIR - ZINP handler for $RFS device
|
|
;
|
|
; For bit-5 devices, BASIC calls ZINP for three purposes:
|
|
; 1. Disk identity read (H >= 28H) — returns zeros at 2800-28FF
|
|
; 2. DIR buffer fill (DIR_FILLED=0, H < 28H) — fills 2000-27FF
|
|
; 3. LOAD data transfer (DIR_FILLED=1, H < 28H) — reads from SD card
|
|
;
|
|
; IMPORTANT: H >= 28H MUST be checked first, before DIR_FILLED.
|
|
; BASIC's data transfer path (L2AD2 → L2FD1 → L2FE8 → L2E36 → L2E67)
|
|
; does an identity read (H=28H) AFTER the DIR buffer fill has set
|
|
; DIR_FILLED=1. If DIR_FILLED were checked first, this identity read
|
|
; would incorrectly dispatch to RFSINP_LD.
|
|
;
|
|
; Returns: carry clear, A=0 (success)
|
|
; ---------------------------------------------------------------------------
|
|
RFSINP_DIR:
|
|
; Debug: trace every ZINP call
|
|
PUSH AF
|
|
LD A,H
|
|
POP AF
|
|
;
|
|
; LOAD data path: BASIC's LOAD for bit5=0 devices calls ZINP once
|
|
; via JP 019BBH (XOR A; CALL L18B6; CALL L1929). Entry A=0 signals
|
|
; "load file data now" — skip DIR fill and identity checks entirely.
|
|
; The byte-at-a-time refill path (L19B4) enters with A=0xFF (OR 0AFH).
|
|
OR A
|
|
JP Z,RFSINP_LD ; A=0 → LOAD path: read file to DTADR
|
|
;
|
|
; Identity reads (H >= 28H) MUST go to RFSINP_DISKID regardless of
|
|
; DIR_FILLED, because BASIC does identity validation (L2E36 → L2E67 →
|
|
; L2FD4 → IOCALL) AFTER the DIR buffer fill has set DIR_FILLED=1.
|
|
; If DIR_FILLED were checked first, the identity read would dispatch
|
|
; to RFSINP_LD instead of RFSINP_DISKID → identity validation fails.
|
|
LD A,H
|
|
CP 028H
|
|
JP NC,RFSINP_DISKID ; H >= 28H → identity (always)
|
|
;
|
|
; H < 28H: DIR buffer fill or data transfer
|
|
LD A,(DIR_FILLED)
|
|
OR A
|
|
JP NZ,RFSINP_LD ; DIR already filled → data transfer
|
|
;
|
|
; --- DIR mode: enumerate files into 0x2000 buffer ---
|
|
;
|
|
PUSH HL
|
|
PUSH DE
|
|
PUSH BC
|
|
;
|
|
; Clear DIR buffer 0x2000-0x27FF (2048 bytes = 64 entries x 32)
|
|
LD HL,L2000
|
|
LD DE,L2000 + 1
|
|
LD BC,007FFH
|
|
LD (HL),000H
|
|
LDIR
|
|
;
|
|
; Set up SD drive from channel number
|
|
LD A,(ZCH)
|
|
ADD A,003H ; RFS1:=drive 3, skipping boot drives 0-2
|
|
LD (SDDRIVENO),A
|
|
;
|
|
; Entry 0 at 0x2000: skip marker (0x80)
|
|
LD HL,L2000
|
|
LD (HL),080H
|
|
;
|
|
; Enter MMIO mode
|
|
CALL MMIO_ON
|
|
;
|
|
; Reset directory sector cache
|
|
LD A,0FFH
|
|
LD (DIRSECBUF),A
|
|
;
|
|
; Scan SD directory, fill MZF entries starting at 0x2020
|
|
LD HL,L2000 + 020H
|
|
LD (DIR_BUFPTR),HL ; Current buffer write position
|
|
LD E,000H ; E = SD directory entry index (0-255)
|
|
LD D,03FH ; D = remaining buffer entries (max 63)
|
|
LD B,000H ; B = 256 entries to scan (DJNZ wraps)
|
|
;
|
|
RDIR_LOOP: PUSH BC
|
|
PUSH DE
|
|
CALL GETSDDIRENT ; HL = entry in SECTORBUF, A = status
|
|
POP DE
|
|
POP BC
|
|
OR A
|
|
JR NZ,RDIR_DONE ; SD read error, stop
|
|
;
|
|
; Debug: dump first 4 entries (E=0..3) FLAG1+ATRB
|
|
LD A,E
|
|
CP 004H
|
|
JR NC,RDIR_NDBG ; Only dump entries 0-3
|
|
PUSH HL
|
|
PUSH AF
|
|
LD A,E
|
|
POP AF
|
|
POP HL
|
|
PUSH HL
|
|
PUSH BC
|
|
; Dump 8 bytes from entry
|
|
LD B,008H
|
|
RDIR_DBLP: LD A,(HL)
|
|
INC HL
|
|
DJNZ RDIR_DBLP
|
|
POP BC
|
|
POP HL
|
|
;
|
|
RDIR_NDBG:
|
|
; Check if entry is active (FLAG1 bit 7) AND has valid ATRB.
|
|
; Uninitialized SD entries (0xFF fill) have bit 7 set but ATRB=0xFF,
|
|
; so we reject ATRB=0x00 (empty) and ATRB=0xFF (uninitialized).
|
|
; All other values (0x01-0xFE) are accepted, including non-standard
|
|
; file types like 0x7E found on some partitions.
|
|
LD A,(HL)
|
|
BIT 7,A
|
|
JR Z,RDIR_NEXT ; Inactive (FLAG1 bit7=0), skip
|
|
INC HL
|
|
LD A,(HL) ; A = ATRB (offset 1)
|
|
DEC HL ; HL back to entry start
|
|
OR A
|
|
JR Z,RDIR_NEXT ; ATRB=0 → invalid, skip
|
|
CP 0FFH
|
|
JR Z,RDIR_NEXT ; ATRB=0xFF → uninitialized, skip
|
|
;
|
|
; Convert SD entry at HL to MZF format in DIR buffer
|
|
PUSH DE
|
|
PUSH BC
|
|
CALL CONVERT_ENTRY ; HL=SD entry, writes to (DIR_BUFPTR)
|
|
POP BC
|
|
POP DE
|
|
DEC D ; One fewer buffer slot
|
|
JR Z,RDIR_DONE ; Buffer full
|
|
;
|
|
RDIR_NEXT: INC E ; Next SD directory entry
|
|
DJNZ RDIR_LOOP
|
|
;
|
|
RDIR_DONE: CALL MMIO_OFF
|
|
; Debug: show how many entries found (D started at 63, remaining = D)
|
|
PUSH AF
|
|
LD A,03FH ; 63 max
|
|
SUB D ; A = entries found
|
|
POP AF
|
|
;
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
LD A,001H
|
|
LD (DIR_FILLED),A ; Mark DIR buffer as filled
|
|
XOR A ; A=0, carry clear = success
|
|
RET
|
|
;
|
|
; --- Disk identity mode: zero L2800-L28FF ---
|
|
; L2E36 validates: (L2800) exact + L2806-L28FF bitmask against
|
|
; stored reference. L2E77/L2E84 modifies L2801-L2805 and writes
|
|
; computed values at L2806+. By presenting all-zeros consistently,
|
|
; L2E84 computes the same result each time → reference matches.
|
|
;
|
|
RFSINP_DISKID:
|
|
PUSH HL
|
|
PUSH DE
|
|
PUSH BC
|
|
LD HL,02800H
|
|
LD DE,02801H
|
|
LD BC,000FFH ; 255 bytes: L2800-L28FF
|
|
LD (HL),000H
|
|
LDIR
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
XOR A ; A=0, carry clear = success
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSINP_LD - LOAD data transfer (ZINP with ZLOG != 0)
|
|
;
|
|
; Reads file data sector-by-sector from SD card into the load address.
|
|
; For bit-5 devices, BASIC's LOAD path does NOT call ZRO and does not
|
|
; set ZLOG. RFSINP_DIR dispatches here when DIR_FILLED=1 (DIR buffer
|
|
; already populated). We find the file in the SD directory via FINDSD,
|
|
; extract SIZE, DTADR, and start sector directly from the SD entry.
|
|
; ---------------------------------------------------------------------------
|
|
RFSINP_LD: ; Debug: trace RFSINP_LD entry
|
|
PUSH AF
|
|
; Dump ELMD1 first 8 chars
|
|
PUSH HL
|
|
PUSH BC
|
|
LD HL,ELMD1
|
|
LD B,008H
|
|
ILD_DMP: LD A,(HL)
|
|
INC HL
|
|
DJNZ ILD_DMP
|
|
POP BC
|
|
POP HL
|
|
POP AF
|
|
;
|
|
; V1.1Y: Save entry A value (0=SVC #30 LOAD, nonzero=SVC #33 refill).
|
|
; RLD_DONE needs this to skip status byte writes when L180B still points
|
|
; at SVC #2C self-modifying code (0x1A85, set by prior DIR's SVC #2E).
|
|
LD (RFS_LD_A0),A
|
|
;
|
|
PUSH HL
|
|
PUSH DE
|
|
PUSH BC
|
|
;
|
|
; Set up drive number
|
|
LD A,(ZCH)
|
|
ADD A,003H ; RFS1:=drive 3, skipping boot drives 0-2
|
|
LD (SDDRIVENO),A
|
|
;
|
|
; Enter MMIO mode
|
|
CALL MMIO_ON
|
|
;
|
|
; Reset directory sector cache
|
|
LD A,0FFH
|
|
LD (DIRSECBUF),A
|
|
;
|
|
; Find file by name in SD directory to get start sector
|
|
LD DE,ELMD1
|
|
CALL FINDSD
|
|
JP NZ,RLD_NFERR ; File not found
|
|
;
|
|
; HL = directory entry in SECTORBUF
|
|
; Skip FLAG1(1) + ATRB(1) + NAME(17) = 19 bytes to START_SECTOR
|
|
LD DE,19
|
|
ADD HL,DE
|
|
;
|
|
; Copy 4-byte start sector to FILE_STARTSEC (big-endian)
|
|
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
|
|
;
|
|
; HL now at offset 22 (last byte of START_SECTOR).
|
|
; Read SIZE(2) and DTADR(2) from the SD directory entry
|
|
; (offset 23..26) instead of ELMD, which may not be populated
|
|
; for bit-5 device LOAD paths.
|
|
INC HL ; HL = offset 23 = SIZE low
|
|
LD E,(HL)
|
|
INC HL ; HL = offset 24 = SIZE high
|
|
LD D,(HL)
|
|
EX DE,HL ; HL = SIZE
|
|
LD (FILE_SIZE),HL
|
|
EX DE,HL ; HL = offset 24 again
|
|
INC HL ; HL = offset 25 = DTADR low
|
|
LD E,(HL)
|
|
INC HL ; HL = offset 26 = DTADR high
|
|
LD D,(HL)
|
|
EX DE,HL ; HL = DTADR
|
|
LD (FILE_LOADADDR),HL
|
|
;
|
|
; For BASIC programs (ELMD type 2/BTX), override FILE_LOADADDR
|
|
; with TEXTST. The file's DTADR reflects whatever system it was
|
|
; saved on and may point inside Disk BASIC code. BASIC's own
|
|
; SVC 038H rechain (called in the LOAD command handler at L5C44)
|
|
; rebuilds all next-line pointers from scratch, so the data just
|
|
; needs to land at the current TEXTST.
|
|
LD A,(ELMD) ; File attribute byte
|
|
CP 002H ; Type 2 = BTX (BASIC text)?
|
|
JR NZ,RLD_NORLOC ; No → use DTADR as-is
|
|
LD HL,(TEXTST) ; Current text area start
|
|
LD (FILE_LOADADDR),HL
|
|
RLD_NORLOC:
|
|
;
|
|
; Convert FILE_STARTSEC to absolute sector (add drive offset)
|
|
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 ; DEHL += drive_offset
|
|
;
|
|
; Store absolute sector in SDSTARTSEC for SD_READ
|
|
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
|
|
;
|
|
; Debug: dump FILE_STARTSEC, absolute sector, SIZE, DTADR
|
|
; Switch to DRAM for debug output (port 050H may need DRAM)
|
|
PUSH AF
|
|
OUT (PORT_DRAM),A
|
|
; FILE_STARTSEC (4 bytes)
|
|
LD A,(FILE_STARTSEC)
|
|
LD A,(FILE_STARTSEC+1)
|
|
LD A,(FILE_STARTSEC+2)
|
|
LD A,(FILE_STARTSEC+3)
|
|
; Absolute sector (SDSTARTSEC, 4 bytes)
|
|
LD A,(SDSTARTSEC)
|
|
LD A,(SDSTARTSEC+1)
|
|
LD A,(SDSTARTSEC+2)
|
|
LD A,(SDSTARTSEC+3)
|
|
; SIZE
|
|
LD A,(FILE_SIZE+1) ; High byte
|
|
LD A,(FILE_SIZE) ; Low byte
|
|
; DTADR
|
|
LD A,(FILE_LOADADDR+1) ; High byte
|
|
LD A,(FILE_LOADADDR) ; Low byte
|
|
; Switch back to MMIO
|
|
OUT (PORT_MMIO),A
|
|
POP AF
|
|
;
|
|
RLD_LOOP: ; Read one sector into SECTORBUF
|
|
CALL SD_READ
|
|
OR A
|
|
JR NZ,RLD_ERR
|
|
;
|
|
; Map DRAM to copy data (target may be >= D000H)
|
|
OUT (PORT_DRAM),A
|
|
;
|
|
; Calculate bytes to copy: min(FILE_SIZE, 512)
|
|
LD HL,(FILE_SIZE)
|
|
LD DE,00200H ; 512
|
|
OR A
|
|
SBC HL,DE ; HL = FILE_SIZE - 512
|
|
JR C,RLD_PARTIAL ; FILE_SIZE < 512
|
|
;
|
|
; Full sector: remaining = HL, copy 512 bytes
|
|
LD (FILE_SIZE),HL
|
|
LD BC,00200H
|
|
JR RLD_COPY
|
|
;
|
|
RLD_PARTIAL:; Partial sector: remaining = 0, copy FILE_SIZE bytes
|
|
ADD HL,DE ; Restore HL = FILE_SIZE
|
|
LD B,H
|
|
LD C,L ; BC = bytes to copy
|
|
LD HL,0
|
|
LD (FILE_SIZE),HL ; Done after this
|
|
;
|
|
RLD_COPY: LD HL,SECTORBUF
|
|
LD DE,(FILE_LOADADDR)
|
|
LDIR ; Copy sector data to target
|
|
LD (FILE_LOADADDR),DE ; Update target address
|
|
;
|
|
; Check if all data transferred
|
|
LD HL,(FILE_SIZE)
|
|
LD A,H
|
|
OR L
|
|
JR Z,RLD_DONE ; All done
|
|
;
|
|
; Increment SDSTARTSEC for next sector
|
|
CALL INC_STARTSEC
|
|
;
|
|
; Map MMIO for next sector read
|
|
OUT (PORT_MMIO),A
|
|
JR RLD_LOOP
|
|
;
|
|
RLD_DONE: ; Map MMIO so MMIO_OFF can work (it expects temp stack)
|
|
OUT (PORT_MMIO),A
|
|
CALL MMIO_OFF
|
|
;
|
|
; V1.1Y: Only write status bytes when entered via SVC #33 refill path
|
|
; (A≠0 at entry). The SVC #30 LOAD path (A=0) leaves L180B pointing at
|
|
; 0x1A85 (set by prior DIR's SVC #2E), which is inside SVC #2C's
|
|
; self-modifying LD HL,nnnn instruction (opcode 0x21 at 0x1A83).
|
|
; Writing 0xFF there corrupts the opcode to RST 38H, breaking all
|
|
; subsequent device-open calls ("Dev. name error" after LOAD).
|
|
; SVC #30 callers don't read the status bytes, so skipping is safe.
|
|
LD A,(RFS_LD_A0)
|
|
OR A
|
|
JR Z,RLD_SKIP_STAT
|
|
;
|
|
; SVC #33 refill path: write status bytes at (L180B)-2 to 0xFF,0xFF
|
|
; = "last block, all done". L1AEF already set L180B to a safe buffer.
|
|
LD HL,(L180B)
|
|
DEC HL
|
|
LD (HL),0FFH ; (L180B)-1 = 0xFF
|
|
DEC HL
|
|
LD (HL),0FFH ; (L180B)-2 = 0xFF
|
|
;
|
|
RLD_SKIP_STAT:
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
XOR A ; NC = success
|
|
RET
|
|
;
|
|
RLD_ERR: CALL MMIO_OFF
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
XOR A
|
|
SCF ; Carry = error
|
|
RET
|
|
;
|
|
RLD_NFERR: CALL MMIO_OFF
|
|
POP BC
|
|
POP DE
|
|
POP HL
|
|
XOR A
|
|
SCF ; Carry = file not found
|
|
RET
|
|
|
|
; ===========================================================================
|
|
; Low-level SD card access routines
|
|
; ===========================================================================
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; MMIO_ON - Enter MMIO mode for SPI access
|
|
;
|
|
; Saves BASIC stack pointer, switches to temp stack, disables interrupts,
|
|
; maps MMIO (D000-FFFF), and trains the upCntr latch.
|
|
; After return, caller is on temp stack and can access EFF8-EFFF.
|
|
; ---------------------------------------------------------------------------
|
|
MMIO_ON: POP HL ; Get return address (from BASIC stack)
|
|
LD (SAVE_SP),SP ; Save BASIC SP
|
|
LD SP,TEMP_STACK_TOP ; Switch to temp stack
|
|
PUSH HL ; Push return address on temp stack
|
|
DI
|
|
XOR A
|
|
OUT (PORT_MMIO),A ; Map D000-FFFF to MMIO
|
|
CALL TRAIN_UPCNTR ; Train latch (15 reads of EFF8H)
|
|
RET ; Return to caller (via temp stack)
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; MMIO_OFF - Leave MMIO mode, restore DRAM and BASIC stack
|
|
;
|
|
; Maps D000-FFFF back to DRAM, enables interrupts, restores BASIC stack.
|
|
; ---------------------------------------------------------------------------
|
|
MMIO_OFF: POP HL ; Get return address (from temp stack)
|
|
XOR A
|
|
OUT (PORT_DRAM),A ; Map D000-FFFF to DRAM
|
|
EI
|
|
LD SP,(SAVE_SP) ; Restore BASIC stack
|
|
JP (HL) ; Return to caller (on BASIC stack)
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; TRAIN_UPCNTR - Train the RFS register latch (upCntr) to 15
|
|
;
|
|
; Reads BNKCTRLRST 15 times to enable control register writes.
|
|
; Entry: MMIO must be mapped (OUT E3H done)
|
|
; Exit: A = 0, HL and B modified
|
|
; ---------------------------------------------------------------------------
|
|
TRAIN_UPCNTR:
|
|
LD HL,BNKCTRLRST ; EFF8H
|
|
LD B,15
|
|
TRAIN_LP: LD A,(HL) ; Each read increments upCntr
|
|
DJNZ TRAIN_LP
|
|
XOR A
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SPIOUT - Send one byte via hardware SPI
|
|
; Entry: A = byte to send
|
|
; Exit: A unchanged
|
|
; ---------------------------------------------------------------------------
|
|
SPIOUT: LD (HWSPIDATA),A ; Write data to SPI register
|
|
LD (HWSPISTART),A ; Start SPI transfer (clocks 8 bits)
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SPIIN - Receive one byte via hardware SPI
|
|
; Entry: (none)
|
|
; Exit: A = received byte
|
|
; ---------------------------------------------------------------------------
|
|
SPIIN: LD (HWSPISTART),A ; Clock 8 bits (sends whatever was in A)
|
|
LD A,(HWSPIDATA) ; Read received byte
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SPI_CS_LO - Activate SD card chip select (CS LOW)
|
|
; ---------------------------------------------------------------------------
|
|
SPI_CS_LO: LD A,SDCS_ACT ; CS LOW, clock enable
|
|
LD (BNKCTRL),A
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SPI_CS_HI - Deactivate SD card chip select (CS HIGH)
|
|
; ---------------------------------------------------------------------------
|
|
SPI_CS_HI: LD A,SDCS_DEACT ; CS HIGH, clock enable
|
|
LD (BNKCTRL),A
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SD_READ - Read one 512-byte sector from SD card into SECTORBUF
|
|
;
|
|
; Entry: SDSTARTSEC = 32-bit sector address (big-endian, 4 bytes)
|
|
; MMIO must be mapped, upCntr trained
|
|
; Exit: A = 0 success, A = 1 error
|
|
; SECTORBUF contains 512 bytes of sector data
|
|
; Modified: A, B, D, HL
|
|
; ---------------------------------------------------------------------------
|
|
SD_READ: CALL SPI_CS_LO ; CS LOW (activate card)
|
|
;
|
|
; Send CMD17 (Read Single Block): 0x51 + 4-byte sector + 0xFF
|
|
LD A,051H ; CMD17
|
|
CALL SPIOUT
|
|
LD A,(SDSTARTSEC) ; Sector byte 0 (MSB)
|
|
CALL SPIOUT
|
|
LD A,(SDSTARTSEC+1) ; Sector byte 1
|
|
CALL SPIOUT
|
|
LD A,(SDSTARTSEC+2) ; Sector byte 2
|
|
CALL SPIOUT
|
|
LD A,(SDSTARTSEC+3) ; Sector byte 3 (LSB)
|
|
CALL SPIOUT
|
|
LD A,0FFH ; CRC (dummy, ignored by emulation)
|
|
CALL SPIOUT
|
|
;
|
|
; Poll for R1 response (should be 0x00, not 0xFF)
|
|
LD B,0FFH ; Max 255 retries
|
|
SDR_R1: CALL SPIIN
|
|
CP 0FFH
|
|
JR NZ,SDR_GOTR1 ; Got non-0xFF response
|
|
DJNZ SDR_R1
|
|
JR SDR_ERR ; Timeout
|
|
;
|
|
SDR_GOTR1: OR A ; R1 should be 0x00 (no error)
|
|
JR NZ,SDR_ERR
|
|
;
|
|
; Poll for data token (0xFE)
|
|
LD B,0FFH
|
|
SDR_TOK: CALL SPIIN
|
|
CP 0FEH ; Data token?
|
|
JR Z,SDR_DATA ; Yes, start reading data
|
|
CP 0FFH ; Still busy?
|
|
JR NZ,SDR_ERR ; Error token
|
|
DJNZ SDR_TOK
|
|
JR SDR_ERR ; Timeout
|
|
;
|
|
; Read 512 bytes into SECTORBUF (2 pages of 256 bytes)
|
|
SDR_DATA: LD HL,SECTORBUF
|
|
LD D,002H ; 2 pages
|
|
SDR_PG: LD B,000H ; 256 bytes per page (B=0 wraps DJNZ)
|
|
SDR_BYTE: CALL SPIIN
|
|
LD (HL),A
|
|
INC HL
|
|
DJNZ SDR_BYTE
|
|
DEC D
|
|
JR NZ,SDR_PG
|
|
;
|
|
; Skip 2 CRC bytes
|
|
CALL SPIIN
|
|
CALL SPIIN
|
|
;
|
|
CALL SPI_CS_HI ; CS HIGH (deactivate)
|
|
XOR A ; A = 0, success
|
|
RET
|
|
;
|
|
SDR_ERR: CALL SPI_CS_HI ; CS HIGH on error too
|
|
LD A,001H ; A = 1, error
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SD_WRITE - Write one 512-byte sector from SECTORBUF to SD card
|
|
;
|
|
; Entry: SDSTARTSEC = 32-bit sector address (big-endian, 4 bytes)
|
|
; SECTORBUF contains 512 bytes to write
|
|
; MMIO must be mapped, upCntr trained
|
|
; Exit: A = 0 success, A = 1 error
|
|
; Modified: A, B, D, HL
|
|
; ---------------------------------------------------------------------------
|
|
SD_WRITE: CALL SPI_CS_LO ; CS LOW (activate card)
|
|
;
|
|
; Send CMD24 (Write Single Block): 0x58 + 4-byte sector + 0xFF
|
|
LD A,058H ; CMD24
|
|
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 ; Dummy CRC
|
|
CALL SPIOUT
|
|
;
|
|
; Poll for R1 response (should be 0x00)
|
|
LD B,0FFH
|
|
SDW_R1: CALL SPIIN
|
|
CP 0FFH
|
|
JR NZ,SDW_GOTR1
|
|
DJNZ SDW_R1
|
|
JR SDW_ERR ; Timeout
|
|
;
|
|
SDW_GOTR1: OR A
|
|
JR NZ,SDW_ERR ; R1 error
|
|
;
|
|
; Send data token 0xFE
|
|
LD A,0FEH
|
|
CALL SPIOUT
|
|
;
|
|
; Send 512 bytes from SECTORBUF (2 pages of 256)
|
|
LD HL,SECTORBUF
|
|
LD D,002H
|
|
SDW_PG: LD B,000H ; 256 bytes per page
|
|
SDW_BYTE: LD A,(HL)
|
|
CALL SPIOUT
|
|
INC HL
|
|
DJNZ SDW_BYTE
|
|
DEC D
|
|
JR NZ,SDW_PG
|
|
;
|
|
; Send 2 dummy CRC bytes
|
|
LD A,0FFH
|
|
CALL SPIOUT
|
|
CALL SPIOUT
|
|
;
|
|
; Read data response token: xxx00101 = accepted (0x05)
|
|
CALL SPIIN
|
|
AND 01FH
|
|
CP 005H
|
|
JR NZ,SDW_ERR
|
|
;
|
|
; Wait for busy (card holds MISO low while writing)
|
|
LD D,040H ; Outer loop: 64
|
|
SDW_BSY1: LD B,000H ; Inner loop: 256 -> 64*256=16384 polls
|
|
SDW_BSY2: CALL SPIIN
|
|
CP 0FFH ; 0xFF = not busy
|
|
JR Z,SDW_DONE
|
|
DJNZ SDW_BSY2
|
|
DEC D
|
|
JR NZ,SDW_BSY1
|
|
JR SDW_ERR ; Timeout
|
|
;
|
|
SDW_DONE: CALL SPI_CS_HI
|
|
XOR A ; A = 0, success
|
|
RET
|
|
;
|
|
SDW_ERR: CALL SPI_CS_HI
|
|
LD A,001H ; A = 1, error
|
|
RET
|
|
|
|
; ===========================================================================
|
|
; Directory and file access routines
|
|
; ===========================================================================
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; ADD3216 - Add 16-bit BC to 32-bit DEHL
|
|
;
|
|
; Entry: DEHL = 32-bit number, BC = 16-bit addend
|
|
; Exit: DEHL = DEHL + BC
|
|
; Modified: BC (set to 0)
|
|
; ---------------------------------------------------------------------------
|
|
ADD3216: ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,0
|
|
ADC HL,BC ; Add carry to upper 16 bits
|
|
EX DE,HL
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFSGETSECTR - Calculate absolute SD sector from drive-relative sector
|
|
;
|
|
; Adds (SDDRIVENO * 0x8010) to DEHL.
|
|
; Each drive image occupies 0x8010 sectors in the SD card image.
|
|
;
|
|
; Entry: DEHL = relative sector (32-bit)
|
|
; SDDRIVENO = drive number (0 = first drive, 1 = second, etc.)
|
|
; Exit: DEHL = absolute sector
|
|
; Modified: A, BC
|
|
; ---------------------------------------------------------------------------
|
|
RFSGETSECTR:
|
|
LD A,(SDDRIVENO)
|
|
GETSEC_LP: OR A
|
|
RET Z ; Drive 0 = no offset
|
|
DEC A
|
|
LD BC,08010H ; Sectors per drive image
|
|
CALL ADD3216
|
|
JR GETSEC_LP
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SETLBAADDR - Store DEHL into SDSTARTSEC (big-endian)
|
|
;
|
|
; Entry: DEHL = 32-bit sector (D=MSB, L=LSB)
|
|
; Exit: SDSTARTSEC updated
|
|
; Modified: A
|
|
; ---------------------------------------------------------------------------
|
|
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)
|
|
; Modified: HL
|
|
; ---------------------------------------------------------------------------
|
|
INC_STARTSEC:
|
|
LD HL,SDSTARTSEC+3 ; LSB
|
|
INC (HL)
|
|
RET NZ
|
|
DEC HL ; Byte 2
|
|
INC (HL)
|
|
RET NZ
|
|
DEC HL ; Byte 1
|
|
INC (HL)
|
|
RET NZ
|
|
DEC HL ; MSB
|
|
INC (HL)
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; GETSDDIRENT - Get SD directory entry with sector caching
|
|
;
|
|
; Reads the directory sector containing entry E if not cached, then
|
|
; returns a pointer to the entry within SECTORBUF.
|
|
;
|
|
; Entry: E = directory entry number (0-255)
|
|
; MMIO mapped, upCntr trained
|
|
; Exit: HL = pointer to 32-byte entry in SECTORBUF
|
|
; A = 0 success, A = 1 error
|
|
; Modified: A, BC, DE, HL
|
|
; ---------------------------------------------------------------------------
|
|
GETSDDIRENT:
|
|
PUSH DE
|
|
;
|
|
; Calculate which sector this entry is in (E / 16)
|
|
LD A,E
|
|
SRL A
|
|
SRL A
|
|
SRL A
|
|
SRL A ; A = sector number within directory
|
|
;
|
|
; Check if this sector is already cached
|
|
LD C,A
|
|
LD A,(DIRSECBUF)
|
|
CP C
|
|
JR Z,GDIR_CACHED ; Same sector, use cached data
|
|
;
|
|
; Need to read a new sector
|
|
LD A,C
|
|
LD (DIRSECBUF),A ; Update cache tag
|
|
;
|
|
; Calculate absolute sector: drive_offset + dir_sector
|
|
LD DE,0
|
|
LD H,0
|
|
LD L,A ; DEHL = directory sector (relative)
|
|
CALL RFSGETSECTR ; DEHL = absolute sector
|
|
CALL SETLBAADDR ; Store in SDSTARTSEC
|
|
CALL SD_READ ; Read sector into SECTORBUF
|
|
OR A
|
|
JR NZ,GDIR_ERR
|
|
;
|
|
GDIR_CACHED:; Calculate offset within sector: (E & 0x0F) * 32
|
|
POP DE
|
|
PUSH DE
|
|
LD A,E
|
|
AND 00FH ; Entry within sector (0-15)
|
|
LD HL,SECTORBUF
|
|
OR A
|
|
JR Z,GDIR_DONE ; First entry, no offset needed
|
|
;
|
|
; Add A * 32 to HL
|
|
LD B,A
|
|
LD DE,00020H ; 32 bytes per entry
|
|
GDIR_ADD: ADD HL,DE
|
|
DJNZ GDIR_ADD
|
|
;
|
|
GDIR_DONE: POP DE
|
|
XOR A ; A = 0, success
|
|
RET
|
|
;
|
|
GDIR_ERR: POP DE
|
|
LD A,001H ; A = 1, error
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; FINDSD - Find file by name in SD card directory
|
|
;
|
|
; Searches all 256 directory entries for an active entry whose filename
|
|
; matches the string at DE (prefix match: input terminated by CR or null).
|
|
;
|
|
; Entry: DE = filename string (CR or null terminated)
|
|
; MMIO mapped, upCntr trained, DIRSECBUF set to 0xFF
|
|
; Exit: Z flag set = found, HL = directory entry in SECTORBUF
|
|
; NZ flag = not found
|
|
; Modified: A, BC, DE, HL
|
|
; ---------------------------------------------------------------------------
|
|
FINDSD: LD (FINDSD_NAME),DE ; Save search name pointer
|
|
LD E,000H ; E = directory entry index
|
|
LD B,000H ; B = 256 entries (DJNZ wraps from 0)
|
|
;
|
|
FSD_LOOP: PUSH BC
|
|
PUSH DE
|
|
CALL GETSDDIRENT ; HL = entry, A = status
|
|
POP DE
|
|
POP BC
|
|
OR A
|
|
JR NZ,FSD_NF ; Read error = not found
|
|
;
|
|
; Check if entry is active (FLAG1 bit 7) AND has valid ATRB.
|
|
; Accept all non-zero, non-0xFF ATRB (01-FE).
|
|
LD A,(HL)
|
|
BIT 7,A
|
|
JR Z,FSD_NEXT ; Inactive, skip
|
|
INC HL
|
|
LD A,(HL) ; A = ATRB (offset 1)
|
|
DEC HL ; HL back to entry start
|
|
OR A
|
|
JR Z,FSD_NEXT ; ATRB=0 → invalid, skip
|
|
CP 0FFH
|
|
JR Z,FSD_NEXT ; ATRB=0xFF → uninitialized, skip
|
|
;
|
|
; Compare filename: dir entry name at HL+2 vs search name
|
|
PUSH HL ; Save entry start
|
|
PUSH DE
|
|
PUSH BC
|
|
INC HL
|
|
INC HL ; HL = directory entry name (offset 2)
|
|
LD DE,(FINDSD_NAME) ; DE = search name
|
|
LD B,17 ; Max filename length
|
|
;
|
|
FSD_CMP: LD A,(DE)
|
|
CP 00DH ; CR terminator?
|
|
JR Z,FSD_MATCH ; Input ended = prefix match
|
|
OR A ; Null terminator?
|
|
JR Z,FSD_MATCH
|
|
CP (HL) ; Compare characters
|
|
JR NZ,FSD_NOMATCH
|
|
INC DE
|
|
INC HL
|
|
DJNZ FSD_CMP
|
|
; All 17 characters matched
|
|
;
|
|
FSD_MATCH: POP BC
|
|
POP DE
|
|
POP HL ; HL = entry start
|
|
XOR A ; Z flag = found
|
|
RET
|
|
;
|
|
FSD_NOMATCH:POP BC
|
|
POP DE
|
|
POP HL
|
|
;
|
|
FSD_NEXT: INC E ; Next directory entry
|
|
DJNZ FSD_LOOP
|
|
;
|
|
FSD_NF: LD A,001H
|
|
OR A ; NZ flag = not found
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; EXTRACT_HDR - Extract file header from SD directory entry
|
|
;
|
|
; Converts SD directory entry fields to MZF format in ELMD, and saves
|
|
; the file's absolute start sector in FILE_STARTSEC for data transfer.
|
|
;
|
|
; Entry: HL = directory entry in SECTORBUF (MMIO mapped)
|
|
; SDDRIVENO set for current drive
|
|
; Exit: ELMD filled with MZF header (ATRB, NAME, SIZE, DTADR, EXADR)
|
|
; FILE_STARTSEC set to absolute start sector
|
|
; Modified: A, BC, DE, HL
|
|
; ---------------------------------------------------------------------------
|
|
EXTRACT_HDR:
|
|
INC HL ; Skip FLAG1, HL = ATRB (offset 1)
|
|
;
|
|
; Copy ATRB to ELMD[0], remapping CMT type 05 -> Disk BASIC type 02
|
|
LD DE,ELMD
|
|
LD A,(HL)
|
|
CP 005H ; CMT type 05 = MZ-700 BASIC text
|
|
JR NZ,EH_AT1
|
|
LD A,002H ; Disk BASIC type 02 = BTX
|
|
EH_AT1: LD (DE),A
|
|
INC HL ; HL = NAME (offset 2)
|
|
INC DE ; DE = ELMD+1
|
|
;
|
|
; Copy 17-byte filename, converting null to CR
|
|
LD B,17
|
|
EH_NAME: LD A,(HL)
|
|
OR A
|
|
JR NZ,EH_NM1
|
|
LD A,00DH ; Null -> CR for BASIC
|
|
EH_NM1: LD (DE),A
|
|
INC HL
|
|
INC DE
|
|
DJNZ EH_NAME
|
|
;
|
|
; HL at offset 19: START_SECTOR (4 bytes, big-endian)
|
|
; DE at ELMD+18
|
|
PUSH DE ; Save ELMD position
|
|
;
|
|
; Copy 4-byte start sector to FILE_STARTSEC
|
|
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
|
|
INC HL ; HL at offset 23: SIZE
|
|
;
|
|
; Copy SIZE(2) + DTADR(2) + EXADR(2) = 6 bytes to ELMD
|
|
POP DE ; DE = ELMD+18
|
|
LD BC,6
|
|
LDIR
|
|
;
|
|
; Convert FILE_STARTSEC to absolute sector (add drive offset)
|
|
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 ; DEHL += drive_offset
|
|
;
|
|
; Store absolute sector back to FILE_STARTSEC
|
|
LD A,D
|
|
LD (FILE_STARTSEC),A
|
|
LD A,E
|
|
LD (FILE_STARTSEC+1),A
|
|
LD A,H
|
|
LD (FILE_STARTSEC+2),A
|
|
LD A,L
|
|
LD (FILE_STARTSEC+3),A
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; CONVERT_ENTRY - Convert SD directory entry to Disk BASIC DIR buffer format
|
|
;
|
|
; Writes a 32-byte directory entry to the DIR buffer at (DIR_BUFPTR)
|
|
; and advances DIR_BUFPTR by 32. Format matches standard MZ Disk BASIC
|
|
; floppy directory layout so LOAD/SAVE work correctly.
|
|
;
|
|
; SD entry format: FLAG1(1), ATRB(1), NAME(17), SECTOR(4), SIZE(2), DTADR(2), EXADR(2), RESV(3)
|
|
; Disk BASIC format: ATRB(1), NAME(17), STARTSEC(2), SIZE(2), DTADR(2), EXADR(2), pad(6)
|
|
;
|
|
; Entry: HL = SD directory entry in SECTORBUF
|
|
; Exit: DIR_BUFPTR advanced by 32
|
|
; Modified: A, BC, DE, HL
|
|
; ---------------------------------------------------------------------------
|
|
CONVERT_ENTRY:
|
|
INC HL ; Skip FLAG1
|
|
;
|
|
; Copy ATRB to buffer, remapping CMT type 05 -> Disk BASIC type 02
|
|
LD DE,(DIR_BUFPTR)
|
|
LD A,(HL)
|
|
CP 005H ; CMT type 05 = MZ-700 BASIC text
|
|
JR NZ,CE_AT1
|
|
LD A,002H ; Disk BASIC type 02 = BTX
|
|
CE_AT1: LD (DE),A
|
|
INC HL ; HL = NAME (offset 2)
|
|
INC DE
|
|
;
|
|
; Copy 17-byte filename, null -> CR
|
|
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
|
|
;
|
|
; HL now at SD offset 19 = START_SECTOR (4 bytes, big-endian)
|
|
; Write 2-byte start sector placeholder at DIR offset 18-19
|
|
; then SIZE(2)+DTADR(2)+EXADR(2) at DIR offsets 20-25.
|
|
; BASIC reads SIZE from DIR offset 20 (IY+14H), DTADR from 22,
|
|
; EXADR from 24. The 2-byte slot at 18 must exist for alignment.
|
|
INC HL ; Skip START_SECTOR[0]
|
|
INC HL ; Skip START_SECTOR[1]
|
|
LD A,(HL)
|
|
LD (DE),A ; DIR[18] = START_SECTOR[2]
|
|
INC HL
|
|
INC DE
|
|
LD A,(HL)
|
|
LD (DE),A ; DIR[19] = START_SECTOR[3]
|
|
INC HL
|
|
INC DE
|
|
;
|
|
; Copy SIZE(2) + DTADR(2) + EXADR(2) = 6 bytes to DIR offset 20-25
|
|
LD BC,6
|
|
LDIR
|
|
;
|
|
; Remaining 8 bytes already zeroed by buffer clear
|
|
; Advance DIR_BUFPTR by 32
|
|
LD HL,(DIR_BUFPTR)
|
|
LD DE,00020H
|
|
ADD HL,DE
|
|
LD (DIR_BUFPTR),HL
|
|
RET
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; MEMCLI_PATCH - Trampoline from L4020 (MEMCLI).
|
|
; Original code was: RST 018H / DB 020H / EX DE,HL
|
|
; SVC 020H programs the boot beep timer and (critically) enables interrupts.
|
|
; We must still call it, then load HL with RFS_END for the memory clear.
|
|
; ---------------------------------------------------------------------------
|
|
ENDIF ; (Glass: label must be outside IF)
|
|
MEMCLI_PATCH:
|
|
IF BUILD_RFS = 1
|
|
RST 018H
|
|
DB 020H ; SVC 020H: boot beep + EI
|
|
LD HL,RFS_END
|
|
JP L4023 ; Continue with memory clear loop
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; RFS_LOAD_HOOK - Trampoline for L3153 data transfer
|
|
;
|
|
; Replaces CALL L32CB + CALL L3174 in L3153. Checks if the current device
|
|
; is $RFS (by comparing the ZINP handler pointer). For $RFS, performs SD
|
|
; card data transfer via RFSINP_LD instead of the FD/QD hardware path.
|
|
; For all other devices, calls the original L32CB + L3174 sequence.
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; RFS_DIR_FIX — Trampoline for DIR device-name parsing.
|
|
; L593A's success path jumps here instead of directly to L596B.
|
|
; We advance HL past the ':' so the INC/DEC zero-test at L596B sees
|
|
; end-of-text (0x00) rather than ':' (0x3A).
|
|
; ---------------------------------------------------------------------------
|
|
ENDIF ; (Glass: label must be outside IF)
|
|
RFS_DIR_FIX:
|
|
IF BUILD_RFS = 1
|
|
LD DE,L5982
|
|
INC HL ; Advance HL past ':'.
|
|
JP L596B
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; RFS_DIR_STR — Hook for L5962 string expression path.
|
|
; Called instead of L6E6F when L593A's letter parsing fails (e.g., DIR "RFS1:").
|
|
; Evaluates the string expression, then copies the device name (up to ':')
|
|
; into L5982 and sets B = length for SVC #2CH.
|
|
; Entry: HL = text pointer (at '"'), B = 0
|
|
; Exit: HL advanced past expression, B = name length, DE = L5982
|
|
; ---------------------------------------------------------------------------
|
|
RFS_DIR_STR:
|
|
CALL L6E6F ; Evaluate string expr. B=strlen, DE=strptr
|
|
PUSH HL ; Save text pointer (past closing quote)
|
|
EX DE,HL ; HL = string data pointer
|
|
LD DE,L5982 ; DE = name buffer
|
|
LD A,B ; A = string length
|
|
OR A
|
|
JR Z,DSTR_DONE ; Empty string → B stays 0
|
|
LD C,A ; C = remaining chars
|
|
LD B,000H ; B = bytes copied
|
|
DSTR_LP: LD A,(HL) ; Get char from string
|
|
LD (DE),A ; Copy to name buffer
|
|
INC HL
|
|
INC DE
|
|
INC B ; Count
|
|
DEC C
|
|
CP 03AH ; ':' ?
|
|
JR Z,DSTR_DONE ; Stop after ':'
|
|
LD A,C
|
|
OR A
|
|
JR NZ,DSTR_LP ; Loop if more chars
|
|
DSTR_DONE: LD DE,L5982 ; DE = start of name buffer (for SVC #2CH)
|
|
POP HL ; Restore text pointer
|
|
RET
|
|
;
|
|
; Entry: BC = SIZE (file size to load), stack = L10F0 stack
|
|
; Exit: A=0 NC on success; carry on error. Registers preserved.
|
|
; ---------------------------------------------------------------------------
|
|
ENDIF ; (Glass: label must be outside IF)
|
|
RFS_LOAD_HOOK:
|
|
IF BUILD_RFS = 1
|
|
; Debug: trace L3153 hook entry
|
|
PUSH AF
|
|
; Show BC (SIZE)
|
|
LD A,B
|
|
LD A,C
|
|
POP AF
|
|
;
|
|
LD HL,(ZINP) ; Current device ZINP handler
|
|
PUSH DE
|
|
LD DE,RFSINP_DIR ; $RFS handler address
|
|
OR A
|
|
SBC HL,DE
|
|
POP DE
|
|
JR Z,RFLH_RFS
|
|
;
|
|
; Not $RFS — call original FD/QD transfer
|
|
CALL L32CB
|
|
JP L3174
|
|
;
|
|
RFLH_RFS: ; $RFS device: transfer file data from SD card.
|
|
; Debug: show ELMD contents before RFSINP_LD
|
|
PUSH AF
|
|
PUSH HL
|
|
PUSH BC
|
|
; Dump ELMD[0..7] (ATRB + first 7 chars of name)
|
|
LD HL,ELMD
|
|
LD B,008H
|
|
RFLH_DMP1: LD A,(HL)
|
|
INC HL
|
|
DJNZ RFLH_DMP1
|
|
; Dump ELMD18-ELMD23 (SIZE+DTADR+EXADR)
|
|
LD HL,ELMD18
|
|
LD B,006H
|
|
RFLH_DMP2: LD A,(HL)
|
|
INC HL
|
|
DJNZ RFLH_DMP2
|
|
POP BC
|
|
POP HL
|
|
POP AF
|
|
;
|
|
CALL RFSINP_LD
|
|
; Debug: show return status
|
|
PUSH AF
|
|
JR C,RFLH_ERR
|
|
JR RFLH_DONE
|
|
RFLH_ERR: LD A,'E'
|
|
RFLH_DONE: CALL RFS_CRLF
|
|
POP AF
|
|
JP L3101
|
|
|
|
; ===========================================================================
|
|
; RFS_DIRCMD1 — Debug wrapper for L58CA (DIR handler 1: device-name path).
|
|
; Outputs "1E\n" on port 050H as version/path marker, then original logic.
|
|
; ===========================================================================
|
|
ENDIF ; (Glass: label must be outside IF)
|
|
RFS_DIRCMD1:
|
|
IF BUILD_RFS = 1
|
|
LD A,'1' ; DIR path 1 marker
|
|
LD A,'M' ; Version letter M
|
|
CALL L593A ; Original: parse device name
|
|
RST 018H
|
|
DB 03AH ; SVC #3A: list directory
|
|
RET
|
|
|
|
; ===========================================================================
|
|
; RFS_DIRCMD2 — Debug wrapper for L58D0 (DIR handler 2: string-expr path).
|
|
; Outputs "2E\n" on port 050H as version/path marker, then original logic.
|
|
; ===========================================================================
|
|
ENDIF ; (Glass: label must be outside IF)
|
|
RFS_DIRCMD2:
|
|
IF BUILD_RFS = 1
|
|
LD A,'2' ; DIR path 2 marker
|
|
LD A,'M' ; Version letter M
|
|
CALL L413E ; Original: check current char
|
|
LD B,000H
|
|
CALL NZ,L6E6F ; Evaluate string expression
|
|
JP L58D8 ; Continue at PUSH HL / SVC #2C / SVC #3C
|
|
|
|
; ===========================================================================
|
|
; RFS_DIR_OPEN — Debug wrapper replacing L596B for DIR SVC #2C.
|
|
; Outputs trace info on port 050H, then performs the original SVC call and
|
|
; error check. Format:
|
|
; D:BB NAMESTR... (before SVC: B=count, name from DE)
|
|
; K:xx xx xx xx xx xx (after SVC: KEYBUF[0..5])
|
|
; =HHHH:VV (after SVC: HL pointer and (HL) value)
|
|
; ===========================================================================
|
|
ENDIF ; (Glass: label must be outside IF)
|
|
RFS_DIR_OPEN:
|
|
IF BUILD_RFS = 1
|
|
PUSH AF
|
|
; --- Before SVC: output "D:" + B (hex) + space + name string ---
|
|
LD A,B
|
|
; Output the name (B chars from DE)
|
|
PUSH BC
|
|
PUSH DE
|
|
LD A,B
|
|
OR A
|
|
JR Z,RFS_NN
|
|
RFS_NLP: LD A,(DE)
|
|
INC DE
|
|
DJNZ RFS_NLP
|
|
RFS_NN: POP DE
|
|
POP BC
|
|
POP AF
|
|
; --- Call SVC #2C (original L596B logic) ---
|
|
PUSH HL
|
|
RST 018H
|
|
DB 02CH
|
|
; --- After SVC: dump KEYBUF[0..7] ---
|
|
PUSH AF
|
|
PUSH BC
|
|
PUSH DE
|
|
PUSH HL ; save SVC result HL
|
|
LD HL,KEYBUF
|
|
LD B,008H
|
|
RFS_KLP: LD A,(HL)
|
|
INC HL
|
|
DJNZ RFS_KLP
|
|
POP HL ; restore SVC result HL
|
|
; --- Output "=" + HL (4 hex) + ":" + (HL) (2 hex) ---
|
|
LD A,H
|
|
LD A,L
|
|
LD A,(HL)
|
|
POP DE
|
|
POP BC
|
|
POP AF
|
|
; --- Original error check ---
|
|
INC (HL)
|
|
DEC (HL)
|
|
JP NZ,04B25H
|
|
POP HL
|
|
RET
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; RFS_HEX — Output A as 2 hex ASCII digits to port 050H.
|
|
; Preserves BC, DE, HL.
|
|
; ---------------------------------------------------------------------------
|
|
ENDIF ; (Glass: label outside IF)
|
|
RFS_HEX:
|
|
IF BUILD_RFS = 1
|
|
PUSH AF
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
RRCA
|
|
AND 00FH
|
|
CALL RFS_NIB
|
|
POP AF
|
|
AND 00FH
|
|
RFS_NIB: CP 00AH
|
|
JR C,RFS_DIG
|
|
ADD A,037H ; 'A'..'F'
|
|
RET
|
|
RFS_DIG: ADD A,030H ; '0'..'9'
|
|
RET
|
|
;
|
|
; ---------------------------------------------------------------------------
|
|
; RFS_CRLF — Output CR+LF to port 050H. Preserves all registers.
|
|
; ---------------------------------------------------------------------------
|
|
ENDIF ; (Glass: label outside IF)
|
|
RFS_CRLF:
|
|
IF BUILD_RFS = 1
|
|
PUSH AF
|
|
LD A,00DH ; CR
|
|
LD A,00AH ; LF
|
|
POP AF
|
|
RET
|
|
|
|
; ===========================================================================
|
|
; RFS_DIR3 — Debug wrapper for L5CE3 (the real DIR command handler).
|
|
; Replicates the full DIR flow with debug markers around each SVC call.
|
|
; Output format on port 050H:
|
|
; D3:E (entry marker + version)
|
|
; 82:AA (L5882 result in A, hex)
|
|
; 2E:AA C=x B1=x (SVC #2E result: A, carry flag, bit1 of A)
|
|
; C2: (L58C2 done)
|
|
; 3A:AA (L593A result: channel in A)
|
|
; 39a: (SVC #39 with A=0 done)
|
|
; 3Ac:AA (SVC #3A with A=channel done)
|
|
; 39b:AA (SVC #39 with A=orig done)
|
|
; D3:X (exit marker)
|
|
; ===========================================================================
|
|
ENDIF ; (Glass: label must be outside IF)
|
|
RFS_DIR3:
|
|
IF BUILD_RFS = 1
|
|
; --- Entry marker ---
|
|
LD A,'M' ; Version M
|
|
; --- Call L5882 (original first instruction) ---
|
|
CALL L5882
|
|
; --- Debug: show L5882 result ---
|
|
PUSH AF
|
|
; --- PUSH AF (as original) ---
|
|
; AF is already on stack from our PUSH above
|
|
; --- SVC #2E ---
|
|
RST 018H
|
|
DB 02EH
|
|
; --- Debug: show SVC #2E result ---
|
|
PUSH AF ; save flags from SVC #2E
|
|
JR C,RFS_D3_CY1
|
|
LD A,'0'
|
|
JR RFS_D3_CY1D
|
|
RFS_D3_CY1:
|
|
LD A,'1'
|
|
RFS_D3_CY1D:
|
|
POP AF ; restore flags from SVC #2E
|
|
; --- JP C,L57B4 (error 0x2C on carry) ---
|
|
JP C,L57B4
|
|
; --- BIT 1,A / JP Z,057B7H ---
|
|
BIT 1,A
|
|
PUSH AF
|
|
JR Z,RFS_D3_B0
|
|
LD A,'1'
|
|
JR RFS_D3_B1D
|
|
RFS_D3_B0:
|
|
LD A,'0'
|
|
RFS_D3_B1D:
|
|
POP AF
|
|
JP Z,057B7H ; error 0xBB if bit1=0
|
|
; --- CALL L58C2 (check ZLOG) ---
|
|
CALL L58C2
|
|
LD A,'K' ; OK
|
|
; --- CALL L593A (parse device name) ---
|
|
CALL L593A
|
|
; --- Debug: show L593A result (channel in A) ---
|
|
; --- LD B,A / XOR A / SVC #39 (A=0) ---
|
|
LD B,A
|
|
;
|
|
; Debug V1.1J: dump ZINP pointer and ZFLAG1 before SVC #39
|
|
PUSH BC
|
|
LD A,'I' ; "IP=" marker for ZINP
|
|
LD A,(ZINP+1) ; High byte of ZINP pointer
|
|
LD A,(ZINP) ; Low byte of ZINP pointer
|
|
LD A,'F' ; "F1=" marker for ZFLAG1
|
|
LD A,(ZFLAG1)
|
|
POP BC
|
|
;
|
|
; Debug V1.1K: dump first 4 bytes at RFSINP_DIR (runtime) and 0x2000
|
|
PUSH HL
|
|
PUSH BC
|
|
LD HL,RFSINP_DIR ; Point to RFSINP_DIR code in memory
|
|
LD B,004H
|
|
RFS_RDMP: LD A,(HL)
|
|
INC HL
|
|
DJNZ RFS_RDMP
|
|
; Also dump first 4 bytes of DIR buffer at 0x2000
|
|
LD HL,L2000
|
|
LD B,004H
|
|
RFS_BDMP: LD A,(HL)
|
|
INC HL
|
|
DJNZ RFS_BDMP
|
|
POP BC
|
|
POP HL
|
|
;
|
|
; (V1.1L debug hook removed in V1.1Y — was calling RFSINP_DIR for
|
|
; ALL devices, causing 20s delay + empty DIR for non-RFS devices)
|
|
;
|
|
XOR A
|
|
XOR A ; A=0 again (debug output clobbered it)
|
|
RST 018H
|
|
DB 039H
|
|
; --- Debug: after SVC #39 --- dump 0x2000 again
|
|
PUSH AF
|
|
PUSH HL
|
|
PUSH BC
|
|
LD HL,L2000
|
|
LD B,004H
|
|
RFS_BDMP2: LD A,(HL)
|
|
INC HL
|
|
DJNZ RFS_BDMP2
|
|
POP BC
|
|
POP HL
|
|
POP AF
|
|
; --- original after-SVC debug ---
|
|
JR C,RFS_D3_CY2
|
|
LD A,'0'
|
|
JR RFS_D3_CY2D
|
|
RFS_D3_CY2:
|
|
LD A,'1'
|
|
RFS_D3_CY2D:
|
|
; --- LD A,B / SVC #3A (A=channel) ---
|
|
LD A,B
|
|
RST 018H
|
|
DB 03AH
|
|
; --- Debug: after SVC #3A ---
|
|
JR C,RFS_D3_CY3
|
|
LD A,'0'
|
|
JR RFS_D3_CY3D
|
|
RFS_D3_CY3:
|
|
LD A,'1'
|
|
RFS_D3_CY3D:
|
|
; --- POP AF / SVC #39 (A=original from L5882) ---
|
|
POP AF
|
|
PUSH AF
|
|
RST 018H
|
|
DB 039H
|
|
; --- Debug: after final SVC #39 ---
|
|
JR C,RFS_D3_CY4
|
|
LD A,'0'
|
|
JR RFS_D3_CY4D
|
|
RFS_D3_CY4:
|
|
LD A,'1'
|
|
RFS_D3_CY4D:
|
|
; --- Exit marker ---
|
|
; --- Clean up and return ---
|
|
POP AF ; balance the PUSH AF from after L5882
|
|
RET
|
|
|
|
; ===========================================================================
|
|
; Data area
|
|
; ===========================================================================
|
|
ENDIF ; (Glass: label outside IF)
|
|
SDSTARTSEC:
|
|
IF BUILD_RFS = 1
|
|
DS 4, 000H ; Current sector address for SD_READ (big-endian)
|
|
ENDIF ; (Glass: label outside IF)
|
|
DIRSECBUF:
|
|
IF BUILD_RFS = 1
|
|
DB 0FFH ; Cached directory sector number (0xFF = none)
|
|
ENDIF ; (Glass: label outside IF)
|
|
FILE_STARTSEC:
|
|
IF BUILD_RFS = 1
|
|
DS 4, 000H ; Saved file start sector (absolute, big-endian)
|
|
ENDIF ; (Glass: label outside IF)
|
|
FILE_LOADADDR:
|
|
IF BUILD_RFS = 1
|
|
|
|
DW 00000H ; Current load address during LOAD transfer
|
|
; ===========================================================================
|
|
; RFS_L1C5B_WRAP — Wrapper around CALL L1C5B to dump ZFLAG1 before and after.
|
|
; This reveals whether L1C5B modifies ZFLAG1 (specifically bit 5).
|
|
; Output format: "F1:xx>xx\r\n" where xx=before, xx=after
|
|
; ===========================================================================
|
|
ENDIF ; (Glass: label must be outside IF)
|
|
RFS_L1C5B_WRAP:
|
|
IF BUILD_RFS = 1
|
|
PUSH AF
|
|
PUSH HL
|
|
; --- Print "F1:" ---
|
|
; --- Dump ZFLAG1 before ---
|
|
LD A,(ZFLAG1)
|
|
POP HL
|
|
POP AF
|
|
; --- Call the real L1C5B ---
|
|
CALL L1C5B
|
|
; --- Save return flags ---
|
|
PUSH AF
|
|
PUSH HL
|
|
; --- Print ">" ---
|
|
; --- Dump ZFLAG1 after ---
|
|
LD A,(ZFLAG1)
|
|
POP HL
|
|
POP AF
|
|
RET
|
|
|
|
; ===========================================================================
|
|
; RFS_FLAGS_TEST — Replaces the LD HL,ZFLAG1 / BIT 7 / BIT 5 sequence.
|
|
; V1.1Q: Workaround for suspected Z80 emulator bug where AND immediate
|
|
; does not correctly set the Z flag (0x5F AND 0x20 = 0x20 yet Z is set).
|
|
; Instead of testing ZFLAG1 bit 5, check device name for "$RFS" and force
|
|
; the ZINP path directly. This is safe because this code point is only
|
|
; reached when A=0 (DIR enumeration) in SVC #39.
|
|
; ===========================================================================
|
|
ENDIF ; (Glass: label must be outside IF)
|
|
RFS_FLAGS_TEST:
|
|
IF BUILD_RFS = 1
|
|
LD HL,ZFLAG1
|
|
; --- Check bit 7 first (error condition, applies to all devices) ---
|
|
LD A,(HL)
|
|
AND 080H
|
|
JR Z,RFS_FT_NO7
|
|
POP DE ; discard CALL return address
|
|
JP 01F97H
|
|
RFS_FT_NO7:
|
|
; --- Check if this is the $RFS device by name ---
|
|
LD A,(ZDEVNM) ; first char of device name
|
|
CP 'R'
|
|
JR NZ,RFS_FT_NORFS
|
|
LD A,(ZDEVNM+1) ; second char
|
|
CP 'F'
|
|
JR NZ,RFS_FT_NORFS
|
|
; --- This IS $RFS — force ZINP/DIR path ---
|
|
POP DE ; discard CALL return address
|
|
JP RFS_BIT5PATH_DIR
|
|
RFS_FT_NORFS:
|
|
; --- Not $RFS: fall through to ZRO path ---
|
|
; HL = ZFLAG1 (correct for INC HL that follows the NOPs)
|
|
RET
|
|
|
|
; ===========================================================================
|
|
; RFS_BIT5PATH_DIR — Replacement for the SVC #39 bit-5 path at 0x2F38.
|
|
; Instead of calling through L2FD1 → IOCALL, this calls RFSINP_DIR directly
|
|
; to bypass the broken IOCALL dispatch. Also traces the path.
|
|
; Original bit-5 path: XOR A / LD HL,L2000 / LD DE,800 / LD BC,10 / CALL L2FD1
|
|
; L2FD1 does TWO ZINP calls:
|
|
; 1st: L2FE8 → disk identity (H=0x28)
|
|
; 2nd: L2FD4 → DIR fill (H=0x20)
|
|
; We replicate both calls directly to RFSINP_DIR.
|
|
; ===========================================================================
|
|
RFS_BIT5PATH_DIR:
|
|
; --- Marker ---
|
|
;
|
|
; --- 1st ZINP call: disk identity (H=0x28) ---
|
|
LD HL,02800H ; H=0x28 → DISKID path
|
|
LD A,(ZCH) ; Channel number
|
|
CALL RFSINP_DIR
|
|
;
|
|
; --- 2nd ZINP call: DIR fill (H=0x20) ---
|
|
LD HL,L2000 ; H=0x20 → DIR fill
|
|
LD A,(ZCH)
|
|
CALL RFSINP_DIR
|
|
;
|
|
; --- After both calls, check DIR buffer ---
|
|
PUSH HL
|
|
PUSH BC
|
|
LD HL,L2000
|
|
LD B,008H
|
|
RFS_B5DMP: LD A,(HL)
|
|
INC HL
|
|
DJNZ RFS_B5DMP
|
|
POP BC
|
|
POP HL
|
|
;
|
|
; --- Replicate original return logic ---
|
|
; Original: LD A,(HL) / OR A / JP P,01F70H / RET
|
|
; After L2FD1 returns, HL=0x2000 (restored by wrappers).
|
|
; We set HL=0x2000 explicitly since we bypassed the wrappers.
|
|
LD HL,L2000
|
|
LD A,(HL)
|
|
OR A
|
|
JP P,01F70H
|
|
;
|
|
; Clear DIR_FILLED for next DIR call
|
|
XOR A
|
|
LD (DIR_FILLED),A
|
|
;
|
|
; Return — will go through SKPDE cleanup from SVC #39 handler
|
|
RET
|
|
|
|
ENDIF ; (Glass: label outside IF)
|
|
FILE_SIZE:
|
|
IF BUILD_RFS = 1
|
|
DW 00000H ; Remaining bytes during LOAD transfer
|
|
ENDIF ; (Glass: label outside IF)
|
|
RFS_LD_A0:
|
|
IF BUILD_RFS = 1
|
|
DB 000H ; V1.1Y: Entry A for RFSINP_LD (0=SVC #30, else SVC #33)
|
|
ENDIF ; (Glass: label outside IF)
|
|
DIR_BUFPTR:
|
|
IF BUILD_RFS = 1
|
|
DW 00000H ; Current write position in DIR buffer
|
|
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 ; Saved directory entry number for SAVE
|
|
ENDIF ; (Glass: label outside IF)
|
|
SAVE_PENDING:
|
|
IF BUILD_RFS = 1
|
|
DB 000H ; 1 = SAVE in progress, trigger RFSWO on first RFSOUT call
|
|
ENDIF ; (Glass: label outside IF)
|
|
DIR_FILLED:
|
|
IF BUILD_RFS = 1
|
|
DB 000H ; 1 = DIR buffer filled, next ZINP call is data transfer
|
|
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 SD directory entry index for RFSRO (0-255)
|
|
ENDIF ; (Glass: label outside IF)
|
|
SECTORBUF:
|
|
IF BUILD_RFS = 1
|
|
DS 512, 000H ; SD card sector buffer (was EQU 0CE00H, moved here
|
|
; to avoid overlap with BASIC stack at ~0xCFFF)
|
|
DS 128, 000H ; Temp stack (64 levels)
|
|
ENDIF ; (Glass: labels must be outside IF)
|
|
TEMP_STACK_TOP: ; SP points here (grows downward)
|
|
RFS_END EQU TEMP_STACK_TOP ; End of RFS code = new TEXTST
|
|
IF BUILD_RFS = 1
|
|
|
|
ENDIF ; END BUILD_RFS = 1
|
|
|
|
; ===========================================================================
|
|
; Tape/CMT bootstrap (only for BUILD_TAPE=1)
|
|
; This code loads at TAPECOPY (0x1200) and copies the BASIC ROM to 0x0000,
|
|
; then jumps to the cold start entry point.
|
|
; ===========================================================================
|
|
IF BUILD_TAPE = 1
|
|
EXECSTART: XOR A ; Execution entry point (runs at TAPECOPY+offset)
|
|
LD DE,L0000
|
|
CALL TIMST ; Stop timer
|
|
LD DE,L0000 ; Destination: 0x0000
|
|
LD HL,BASICEND - L0000 ; Size of BASIC ROM
|
|
OR A
|
|
SBC HL,DE
|
|
LD C,L
|
|
LD B,H ; BC = byte count
|
|
LD HL,TAPECOPY ; Source: where tape loaded the image
|
|
OUT (LSE0),A ; Map 0000-0FFF to DRAM
|
|
LDIR ; Copy BASIC ROM to 0x0000
|
|
JP L0000 ; Jump to cold start
|
|
BASICEND:
|
|
ENDIF
|