; Disassembly of the file "mz-1e14.rom" ; ; CPU Type: Z80 ; ; Created with dZ80 2.1 ; ; on Saturday, 14 of March 2026 at 12:27 PM ; MMIO_E0 EQU 0E0H SIO_CHA_D EQU 0F4H SIO_CHA_C EQU 0F6H SIO_CHB_C EQU 0F7H PPI_PORTB EQU 0FEH PPI_PORTC EQU 0FFH GETL EQU 00003H NL EQU 00009H PRNTS EQU 0000CH PRNT EQU 00012H MSG EQU 00015H MSGX EQU 00018H GETKY EQU 0001BH BRKEY EQU 0001EH XTEMP EQU 00041H MONSTART EQU 0005BH ERRORMSG EQU 00147H PRTHLA EQU 002A6H CLSSCR EQU 00308H PRTHX EQU 003B1H HLHEX EQU 00410H _2HEX EQU 0041FH WRINF EQU 00436H WRDAT EQU 00475H RDINF EQU 004D8H RDDAT EQU 004F8H VRFY EQU 00588H CLSDN EQU 005FAH ?KEY EQU 008CAH PRNT4 EQU 00920H SAVEDMSG EQU 00942H PRNT3 EQU 0096CH FNAMMSG EQU 0098BH LOADINGMSG EQU 009A0H SPCCHK EQU 00A32H ?ADCN EQU 00BB9H ?BLNK EQU 00DA6H ?DPCT EQU 00DDCH STACK2 EQU 010EEH ATRB EQU 010F0H NAME EQU 010F1H SIZE EQU 01102H DTADR EQU 01104H EXADR EQU 01106H COMNT EQU 01108H QDCMD EQU 01130H QDSUBCMD EQU 01131H QDLOADADDR EQU 01132H QDBLKSIZE EQU 01134H QDRELOC EQU 0113AH QDDISPFLG EQU 0113BH QDADDRMARK EQU 0113CH QDEXPMARK EQU 0113DH QDWORK1 EQU 0113EH QDWORK2 EQU 01140H QDTOTBLKS EQU 01141H QDREMBLKS EQU 01142H QDMOTOR EQU 01143H QDRETRY EQU 01144H QDFLAGS EQU 01146H QDSAVESP EQU 01147H DSPXY EQU 01171H DPRNT EQU 01194H SWRK EQU 0119DH BUFER EQU 011A3H BUFER10 EQU 011ADH USERRAM EQU 01200H PRGSTART EQU 0E800H ORG PRGSTART NOP ; MZ-1E14 QD Interface ROM - Entry point table JP LE80A JP LE884 LE807: JP LEDD1 LE80A: LD A,0C6H ; Cold start: IPL boot from QD CALL ?DPCT XOR A LD (DPRNT),A DI XOR A LD DE,00000H CALL CLSSCR LD A,001H OUT (SIO_CHB_C),A XOR A OUT (SIO_CHB_C),A CALL GETKY CP 04DH JR Z,LE880 ; (+057H) CP 051H JR Z,LE835 ; (+008H) CALL LEB22 CALL Z,LF006 JR LE835 ; (+000H) LE835: CALL LEBD1 CALL NL CALL LEC0C JR C,LE868 ; (+028H) LD A,00DH LD (BUFER),A CALL LED08 LD A,001H LD (QDDISPFLG),A LD HL,LE86B LD SP,STACK2 EX (SP),HL CALL LEBDC JP C,LEBAC LD A,(ATRB) CP 001H JR NZ,LE871 ; (+010H) LD DE,LEB27 RST 018H JP LEB7B LE868: LD DE,LEB37 LE86B: CALL NL RST 018H JR LE87D ; (+00cH) LE871: LD A,006H LD (QDCMD),A CALL LE807 LD DE,LED4C RST 018H LE87D: CALL NL LE880: LD DE,LEB45 RST 018H LE884: CALL NL ; Warm start: command prompt (* MONITOR 9Z-503M *) LD A,02AH CALL PRNT LD DE,BUFER CALL GETL LE892: LD A,(DE) ; Command parser: J=Jump, L=Load, F=Format, B=Bell, P=Print, M=Modify, S=Save, V=Verify, D=Dump, Q=QD sub-cmds INC DE CP 00DH JR Z,LE884 ; (-014H) CP 04AH JR Z,LE910 ; (+074H) CP 04CH JR Z,LE914 ; (+074H) CP 046H JR Z,LE8DE ; (+03aH) CP 042H JP Z,LEA6D CP 023H JP Z,LEA6A CP 050H JP Z,LE968 CP 04DH JP Z,LE9D9 CP 053H JP Z,LEA0C CP 056H JP Z,LEA5E CP 044H JP Z,LEA78 CP 051H JR NZ,LE892 ; (-039H) LD HL,00000H LD (QDRELOC),HL LD A,(DE) CP 04CH JP Z,LEB5D CP 044H JP Z,LEC18 LE8DC: JR LE884 ; (-05aH) LE8DE: LD A,(DE) CP 00DH JR NZ,LE8DC ; (-007H) CALL LEB22 CALL Z,LF006 JR LE8DC ; (-00fH) LE8EB: CP 002H JR Z,LE8DC ; (-013H) CALL NL LD DE,ERRORMSG RST 018H JR LE8DC ; (-01cH) LE8F8: EX (SP),HL POP BC LD DE,BUFER CALL GETL LD A,(DE) CP 01BH JR Z,LE8DC ; (-029H) JP (HL) LE906: EX (SP),IY POP AF CALL HLHEX JR C,LE8DC ; (-032H) JP (IY) LE910: CALL LE906 JP (HL) LE914: CALL RDINF JR C,LE8EB ; (-02eH) CALL NL LD DE,LOADINGMSG RST 018H LD DE,NAME RST 018H XOR A LD (BUFER),A LD HL,(DTADR) LD A,H OR L JR NZ,LE941 ; (+012H) LD HL,(EXADR) LD A,H OR L JR NZ,LE941 ; (+00bH) LD A,PPI_PORTC LD (BUFER),A LD HL,USERRAM LD (DTADR),HL LE941: CALL RDDAT JR C,LE8EB ; (-05bH) LD A,(BUFER) CP PPI_PORTC JR Z,LE954 ; (+007H) LD BC,00100H LD HL,(EXADR) JP (HL) LE954: OUT (MMIO_E0),A LD HL,USERRAM LD DE,00000H LD BC,(SIZE) LDIR LD BC,00100H JP 00000H LE968: LD A,(DE) CP 026H JR NZ,LE983 ; (+016H) LE96D: INC DE LD A,(DE) CP 04CH JR Z,LE989 ; (+016H) CP 053H JR Z,LE98E ; (+017H) CP 043H JR Z,LE99E ; (+023H) CP 047H JR Z,LE997 ; (+018H) CP 054H JR Z,LE993 ; (+010H) LE983: CALL LE9B8 LE986: JP LE8DC LE989: LD DE,00470H JR LE983 ; (-00bH) LE98E: LD DE,003D5H JR LE983 ; (-010H) LE993: LD A,004H JR LE999 ; (+002H) LE997: LD A,002H LE999: CALL LE9A2 JR LE96D ; (-031H) LE99E: LD A,01DH JR LE999 ; (-009H) LE9A2: LD C,000H LD B,A CALL LE9C9 LD A,B OUT (PPI_PORTC),A LD A,080H OUT (PPI_PORTB),A LD C,001H CALL LE9C9 XOR A OUT (PPI_PORTB),A RET LE9B8: PUSH DE PUSH BC PUSH AF LE9BB: LD A,(DE) CALL LE9A2 LD A,(DE) INC DE CP 00DH JR NZ,LE9BB ; (-00aH) POP AF POP BC POP DE RET LE9C9: IN A,(PPI_PORTB) AND 00DH CP C RET Z CALL BRKEY JR NZ,LE9C9 ; (-00bH) LD SP,ATRB JR LE986 ; (-053H) LE9D9: CALL LE906 LE9DC: CALL CLSDN CALL PRTHX CALL PRNT4 CALL LE8F8 CALL HLHEX JR C,LEA08 ; (+01bH) CALL PRTHLA INC DE CALL _2HEX JR C,LE9DC ; (-01aH) CP (HL) JR NZ,LE9DC ; (-01dH) INC DE LD A,(DE) CP 00DH JR Z,LEA05 ; (+006H) CALL _2HEX JR C,LE9DC ; (-028H) LD (HL),A LEA05: INC HL JR LE9DC ; (-02cH) LEA08: LD H,B LD L,C JR LE9DC ; (-030H) LEA0C: CALL LE906 LD (DTADR),HL LD B,H LD C,L CALL PRTHLA CALL LE906 SBC HL,BC INC HL LD (SIZE),HL CALL PRTHLA CALL LE906 LD (EXADR),HL CALL NL LD DE,FNAMMSG RST 018H CALL LE8F8 CALL PRTHLA CALL PRTHLA LD HL,NAME LEA3C: INC DE LD A,(DE) LD (HL),A INC HL CP 00DH JR NZ,LEA3C ; (-008H) LD A,001H LD (ATRB),A CALL WRINF LEA4C: JP C,LE8EB CALL WRDAT JR C,LEA4C ; (-008H) CALL NL LD DE,SAVEDMSG RST 018H LEA5B: JP LE884 LEA5E: CALL VRFY JP C,LE8EB LD DE,SAVEDMSG RST 018H JR LEA5B ; (-00fH) LEA6A: JP MONSTART LEA6D: LD A,(SWRK) RRA CCF RLA LD (SWRK),A LEA76: JR LEA5B ; (-01dH) LEA78: CALL LE906 CALL PRTHLA PUSH HL CALL HLHEX POP DE JR C,LEAD6 ; (+051H) LEA85: EX DE,HL LEA86: LD B,008H LD C,017H CALL CLSDN LEA8D: CALL PRTHX INC HL PUSH AF LD A,(DSPXY) ADD A,C LD (DSPXY),A POP AF CP 020H JR NC,LEAA0 ; (+002H) LD A,02EH LEAA0: CALL ?ADCN CALL PRNT3 LD A,(DSPXY) INC C SUB C LD (DSPXY),A DEC C DEC C DEC C PUSH HL SBC HL,DE POP HL JR Z,LEAD3 ; (+01cH) LD A,0F8H LD (0E000H),A NOP LD A,(0E001H) CP PPI_PORTB JR NZ,LEAC7 ; (+003H) CALL ?BLNK LEAC7: DJNZ LEA8D ; (-03cH) LEAC9: CALL ?KEY OR A JR Z,LEAC9 ; (-006H) CALL SPCCHK JR NZ,LEA86 ; (-04eH) JR LEA76 ; (-060H) LEAD6: LD HL,000A0H ADD HL,DE JR LEA85 ; (-057H) LEADC: CALL NL LD DE,FNAMMSG RST 018H LD DE,BUFER CALL GETL LD A,(DE) CP 01BH JR NZ,LEAF3 ; (+005H) LD HL,LE884 EX (SP),HL RET LEAF3: LD B,000H LD DE,BUFER10 LD HL,BUFER LD A,(DE) CP 00DH JR Z,LEB20 ; (+020H) LEB00: CP 020H JR NZ,LEB08 ; (+004H) INC DE LD A,(DE) JR LEB00 ; (-008H) LEB08: CP 022H JR Z,LEB14 ; (+008H) LEB0C: LD (HL),A INC HL INC B LD A,011H CP B JR Z,LEADC ; (-038H) LEB14: INC DE LD A,(DE) CP 022H JR Z,LEB1E ; (+004H) CP 00DH JR NZ,LEB0C ; (-012H) LEB1E: LD A,00DH LEB20: LD (HL),A RET LEB22: LD A,(0F000H) ; Check QD interface presence (read F000H) OR A RET LEB27: DB "IPL IS LOADING " DB 00DH LEB37: DB "MAKE READY QD" DB 00DH LEB45: DB "** MONITOR 9Z-503M **" DB 00DH LEB5D: CALL LEBD1 ; QL command: Load file from QD CALL LEC0C JR C,LEBAC ; (+047H) CALL LEADC CALL LED08 LD DE,LOADINGMSG RST 018H LEB6F: CALL LEBDC JR C,LEBAC ; (+038H) LD A,(ATRB) CP 001H JR NZ,LEB6F ; (-00cH) LEB7B: LD DE,NAME RST 018H LD HL,(EXADR) LD A,H OR L JR NZ,LEB8B ; (+005H) LD HL,(COMNT) LD A,H OR L LEB8B: JR NZ,LEB97 ; (+00aH) LD A,PPI_PORTC LD (QDRELOC),A LD HL,USERRAM JR LEB9A ; (+003H) LEB97: LD HL,(EXADR) LEB9A: LD (QDLOADADDR),HL LD HL,(DTADR) LD (QDBLKSIZE),HL LD HL,00103H LD (QDCMD),HL CALL LE807 LEBAC: JP C,LEC51 LD A,(QDRELOC) CP PPI_PORTC JR Z,LEBBD ; (+007H) LD BC,00300H LD HL,(COMNT) JP (HL) LEBBD: OUT (MMIO_E0),A LD HL,USERRAM LD DE,00000H LD BC,(DTADR) LDIR LD BC,00300H JP 00000H LEBD1: XOR A ; Init QD state variables (motor status, address marks) LD (QDMOTOR),A LD (QDWORK1),A LD (QDWORK2),A RET LEBDC: LD HL,GETL ; Read next header block from QD (mode 3) LD (QDCMD),HL LD HL,ATRB LD (QDLOADADDR),HL LD HL,00040H LD (QDBLKSIZE),HL LEBEE: CALL LE807 RET C LD A,(BUFER) CP 00DH RET Z LD HL,BUFER LD DE,NAME LD B,011H LEC00: LD A,(DE) CP (HL) JR NZ,LEBEE ; (-016H) CP 00DH RET Z INC DE INC HL DJNZ LEC00 ; (-00bH) RET LEC0C: XOR A ; Start QD: motor on + status check (mode 1) LD (QDSUBCMD),A INC A LD (QDCMD),A CALL LE807 RET LEC18: CALL LEBD1 ; QD command: Directory listing CALL LEC0C JR C,LEC51 ; (+031H) CALL LED08 LD B,000H LD DE,LED5D RST 018H LD HL,0CD90H LEC2C: LD (QDLOADADDR),HL LD HL,GETL LD (QDCMD),HL LD HL,00040H LD (QDBLKSIZE),HL PUSH BC CALL LE807 POP BC JR C,LEC4C ; (+00aH) INC B LD HL,(QDLOADADDR) LD DE,PRNT ADD HL,DE JR LEC2C ; (-020H) LEC4C: CP 028H JR Z,LEC53 ; (+003H) SCF LEC51: JR C,LECD2 ; (+07fH) LEC53: LD A,006H LD (QDCMD),A PUSH BC CALL LE807 POP BC XOR A CP B JR NC,LECC8 ; (+067H) CALL NL LD HL,0CD90H LEC67: LD A,(HL) LD DE,LED6E DEC A JR Z,LECA4 ; (+036H) LD DE,LED79 DEC A JR Z,LECA4 ; (+030H) LD DE,LED84 DEC A JR Z,LECA4 ; (+02aH) LD DE,LED8F DEC A JR Z,LECA4 ; (+024H) LD DE,LED9A DEC A JR Z,LECA4 ; (+01eH) DEC A JR Z,LECA1 ; (+018H) LD DE,LEDA5 DEC A JR Z,LECA4 ; (+015H) DEC A JR Z,LECA1 ; (+00fH) DEC A JR Z,LECA1 ; (+00cH) LD DE,LEDB0 DEC A JR Z,LECA4 ; (+009H) LD DE,LEDBB DEC A JR Z,LECA4 ; (+003H) LECA1: LD DE,LEDC6 LECA4: RST 018H LD A,022H CALL PRNT INC HL PUSH HL POP DE RST 018H LD A,022H CALL PRNT CALL NL LD DE,00011H ADD HL,DE LECBA: CALL ?KEY OR A JR Z,LECBA ; (-006H) CALL SPCCHK JP Z,LE884 DJNZ LEC67 ; (-061H) LECC8: CALL NL LD DE,LED11 RST 018H JP LE884 LECD2: LD DE,LED15 ; Display QD error message based on error code in A CP 028H JR Z,LECF1 ; (+018H) LD DE,LED33 CP 032H JR Z,LECF1 ; (+011H) LD DE,LED40 CP 036H JR Z,LECF1 ; (+00aH) LD DE,LED14 CP 000H JR Z,LECF1 ; (+003H) LD DE,LED27 LECF1: LD A,006H LD (QDCMD),A CALL LE807 CALL LED08 LD A,(QDDISPFLG) RRA RET C CALL NL RST 018H JP LE884 LED08: LD A,005H ; Send motor off command (mode 5) LD (QDCMD),A CALL LE807 RET LED11: DB "OK!" LED14: DB 00DH LED15: DB "QD:FILE NOT FOUND" DB 00DH LED27: DB "QD:HARD ERR" DB 00DH LED33: DB "QD:NOT READY" DB 00DH LED40: DB "QD:UNFORMAT" DB 00DH LED4C: DB "QD:FILE MODE ERR" DB 00DH LED5D: DB "DIRECTORY OF QD:" DB 00DH LED6E: DB " OBJ " DB 00DH LED79: DB " BTX " DB 00DH LED84: DB " BSD " DB 00DH LED8F: DB " BRD " DB 00DH LED9A: DB " RB " DB 00DH LEDA5: DB " LIB " DB 00DH LEDB0: DB " SYS " DB 00DH LEDBB: DB " GR " DB 00DH LEDC6: DB " ??? " DB 00DH LEDD1: LD A,005H ; QD block read service with retry (5 retries on error 29H) LD (QDRETRY),A LEDD6: DI CALL LEDF8 EI RET NC PUSH AF CP 028H JR Z,LEDF6 ; (+015H) CALL LEF03 POP AF PUSH AF CP 029H JR NZ,LEDF6 ; (+00cH) LD HL,QDRETRY DEC (HL) JR Z,LEDF3 ; (+003H) POP AF JR LEDD6 ; (-01dH) LEDF3: CALL LEE0D LEDF6: POP AF RET LEDF8: LD (QDSAVESP),SP ; QD read dispatcher: mode 1=dir, 3=block read, 5/6=motor off LD A,(QDCMD) DEC A JR Z,LEE14 ; (+012H) DEC A DEC A JR Z,LEE1A ; (+014H) DEC A DEC A JR Z,LEE0D ; (+003H) JP LEF03 LEE0D: PUSH AF XOR A LD (QDADDRMARK),A POP AF RET LEE14: LD A,(QDSUBCMD) ; Mode 1: Directory scan (motor on + status) JP LEE8B LEE1A: LD A,(QDMOTOR) ; Mode 3: Read block (init SIO, find block, read data) OR A CALL Z,LEEB7 CALL LEE51 RET C CALL LEFEC CALL LEFA8 LD C,A CALL LEFA8 LD B,A LD HL,(QDBLKSIZE) SBC HL,BC JP C,LEFC0 LD HL,(QDLOADADDR) LEE3B: CALL LEFA8 LD (HL),A INC HL DEC BC LD A,B OR C JR NZ,LEE3B ; (-00aH) CALL LEF90 LD A,(QDSUBCMD) BIT 0,A JP NZ,LEF03 RET LEE51: LD HL,QDREMBLKS ; Find next block: scan blocks, match address marks DEC (HL) JR Z,LEE87 ; (+030H) CALL LEF18 LD C,A LD A,(QDADDRMARK) LD HL,QDEXPMARK CP (HL) JR NZ,LEE84 ; (+020H) INC A LD (QDADDRMARK),A LD (HL),A LD A,(QDSUBCMD) XOR C RRA RET NC LEE6F: CALL LEFA8 LD C,A CALL LEFA8 LD B,A LEE77: CALL LEFA8 DEC BC LD A,B OR C JR NZ,LEE77 ; (-008H) CALL LEF90 JR LEE51 ; (-033H) LEE84: INC (HL) JR LEE6F ; (-018H) LEE87: LD A,028H SCF RET LEE8B: LD B,A ; Motor on + check drive status via SIO ChB LD A,002H OUT (SIO_CHB_C),A LD A,081H OUT (SIO_CHB_C),A LD A,002H OUT (SIO_CHB_C),A IN A,(SIO_CHB_C) AND 081H CP 081H JP NZ,LEFC6 LD A,010H OUT (SIO_CHA_C),A IN A,(SIO_CHA_C) LD C,A AND 008H JP Z,LEFC6 LD A,B OR A RET Z LD A,C AND 020H RET NZ JP LEFC3 LEEB7: LD HL,LEFE1 ; Full QD init: SIO reset, motor on, wait for DCD + sync LD B,00BH CALL LEED6 CALL LEF2E LD (QDTOTBLKS),A INC A LD (QDREMBLKS),A CALL LEF90 LD HL,QDFLAGS SET 3,(HL) XOR A LD (QDEXPMARK),A RET LEED6: LD C,SIO_CHA_C ; Write SIO init table to ChA control + motor on via ChB WR5 OTIR LD A,005H LD (QDMOTOR),A OUT (SIO_CHB_C),A LD A,080H OUT (SIO_CHB_C),A LEEE5: LD A,010H OUT (SIO_CHA_C),A IN A,(SIO_CHA_C) AND 008H JP Z,LEFC6 CALL LEFEC LD A,010H OUT (SIO_CHB_C),A IN A,(SIO_CHB_C) AND 008H JR Z,LEEE5 ; (-018H) LD BC,000E9H JP LEFD4 LEF03: PUSH AF ; Motor off: ChA WR5=60H (RTS off), ChB WR5=00H LD A,005H OUT (SIO_CHA_C),A LD A,060H OUT (SIO_CHA_C),A LD A,005H OUT (SIO_CHB_C),A XOR A LD (QDMOTOR),A OUT (SIO_CHB_C),A POP AF RET LEF18: LD A,058H ; Enter sync/hunt mode, wait for sync detection, read block type LD B,00BH LD HL,LEFE1 CALL LEF81 LD HL,QDFLAGS BIT 3,(HL) LD BC,GETL JR Z,LEF31 ; (+005H) RES 3,(HL) LEF2E: LD BC,000A0H LEF31: CALL LEFD4 LD A,005H OUT (SIO_CHB_C),A LD A,082H OUT (SIO_CHB_C),A LD A,003H OUT (SIO_CHA_C),A LD A,0D3H OUT (SIO_CHA_C),A LD BC,02CC0H LEF47: LD A,010H OUT (SIO_CHA_C),A IN A,(SIO_CHA_C) AND 010H JR Z,LEF59 ; (+008H) DEC BC LD A,B OR C JR NZ,LEF47 ; (-00fH) JP LEFCC LEF59: LD A,003H OUT (SIO_CHA_C),A LD A,0C3H OUT (SIO_CHA_C),A LD B,09FH LEF63: LD A,010H OUT (SIO_CHA_C),A IN A,(SIO_CHA_C) AND 001H JR NZ,LEF73 ; (+006H) DEC B JR NZ,LEF63 ; (-00dH) JP LEFCC LEF73: LD A,003H OUT (SIO_CHA_C),A LD A,0C9H OUT (SIO_CHA_C),A CALL LEFA8 JP LEFA8 LEF81: LD C,SIO_CHA_C ; Write SIO register + OTIR init table to ChA control OUT (C),A LD A,005H OUT (SIO_CHB_C),A LD A,080H OUT (SIO_CHB_C),A OTIR RET LEF90: LD B,003H ; Read 3 trailing bytes (CRC), check for Rx overrun LEF92: CALL LEFA8 DJNZ LEF92 ; (-005H) LEF97: IN A,(SIO_CHA_C) RRCA JR NC,LEF97 ; (-005H) LD A,001H OUT (SIO_CHA_C),A IN A,(SIO_CHA_C) AND 040H JR NZ,LEFC0 ; (+01aH) OR A RET LEFA8: LD A,010H ; Read one byte from QD: check DCD, wait Rx ready, IN A,(F4H) OUT (SIO_CHA_C),A IN A,(SIO_CHA_C) AND 008H JP Z,LEFC6 IN A,(SIO_CHA_C) RLCA JR C,LEFC0 ; (+008H) RRCA RRCA JR NC,LEFA8 ; (-014H) IN A,(SIO_CHA_D) OR A RET LEFC0: LD A,029H ; Error return chain: 29H=CRC, 2EH=?, 32H=not ready, 35H=?, 36H=unformat LD HL,02E3EH LD HL,0323EH LD HL,0353EH LD HL,0363EH LD SP,(QDSAVESP) SCF RET LEFD4: PUSH AF ; Delay loop: outer*inner (BC outer, 86H inner) LEFD5: LD A,086H LEFD7: DEC A JR NZ,LEFD7 ; (-003H) DEC BC LD A,B OR C JR NZ,LEFD5 ; (-00aH) POP AF RET LEFE1: DB 058H ; SIO init table: 58=ChReset, 04/10=WR4(x1,sync), 05/04=WR5(CRC16), 03/D0=WR3(Rx8bit,hunt), 06/16=WR6(sync1), 07/16=WR7(sync2) DB 004H DB 010H DB 005H DB 004H DB 003H DB 0D0H DB 006H DB 016H DB 007H DB 016H LEFEC: LD A,0E8H ; QD hardware presence check via memory-mapped I/O at E000/E001H LD (0E000H),A NOP LD A,(0E001H) AND 081H RET NZ LD SP,(QDSAVESP) SCF RET DB 02EH ; EFFE-EFFF: Residual data DB 041H DS 6, 0FFH ; F000-F005: Unused (0xFF padding) LF006: ; F006-F7FF: Unused ROM space DS 2042, 0FFH ; 0xFF padding to end of ROM