.Z80 BDOS EQU 5 X EQU 0E0H SELECT EQU X+3 ;DRIVE SELECT PORT STATUS EQU X+4 ;STATUS PORT (IN) DATA EQU X+7 ;DATA PORT (BID) CMD EQU X+4 ;COMMAND PORT (OUT) RDACMD EQU 0C4H ;READ ADDRESS CMND UNIT EQU 42H TRK EQU 44H SCTR EQU 43H SEEK EQU 0F1BEH LD A,(5CH) OR A JR Z,IDRD DEC A LD (UNIT),A CALL 0F018H XOR A IDRD: LD (TRK),A OUT (DATA),A LD A,10H ;SEEK W/NO VERIFY COMMAND OUT (CMD),A CALL END IN A,(SELECT) AND 1FH OUT (SELECT),A LD HL,BUFFER LD B,6 LD A,RDACMD OUT (CMD),A ;OUTPUT COMMAND LD C,DATA INIR CALL END IN A,(SELECT) OR 0E0H ;NEG TRUE .AND. OUT (SELECT),A LD A,(BUFFER+2) LD B,26 NXTSEC: INC A CP 1BH JR NZ,NOSUB LD A,1 NOSUB: LD (SCTR),A PUSH BC CALL 0F027H OR A JR Z,NOERR LD DE,ERRMSG LD C,9 CALL BDOS NOERR: POP BC LD A,(SCTR) DJNZ NXTSEC LD A,(TRK) CP 76 JR Z,EXIT INC A JR IDRD EXIT: LD A,(4) AND 0FH LD (UNIT),A RET BUFFER: DEFS 6 END: IN A,(STATUS) RRA JR C,END RET ERRMSG: DEFB "Read error",0DH,0AH,"$" END PACC: PUSH AF RRCA RRCA RRCA RRCA CALL PRVAL POP AF PRVAL: AND 0FH ADD A,90H DAA ADC A,40H DAA LD E,A CONOUT: LD C,2 JP BDOS END