; * * * * * READIR -- READ DIRECTORY VIA BIOS CALLS ; MACLIB CPMEQU ; standard names MACLIB PROG ; prolog, service macros MACLIB COSUB ; console output MACLIB HEXSUB ; hex displays MACLIB DPSUB ; 16 bit routines MACLIB BIOSCALL ; bios interface ; PROLOG2 READIR ; HEADING DB 'Physical directory entries, drive ' DRIVE DB 0,CR,LF,CR,LF+80H ERRMSG DB CR,LF,'BIOS reports read error.',CR,LF,'$' DPB$DRM EQU 07H ; offset of DRM field in DPB DPB$OFF EQU 0DH ; offset of OFF field in DPB NRECS DB 0 ; records left to go ; READIR EQU $ LDA CPMFCB DCR A JP REA2 SERVICE 25 REA2 MOV E,A MOV C,A ADI 'A' STA DRIVE LXI H,HEADING ! CALL COSTR SERVICE 14 SERVICE 31 ; MVI A,DPB$DRM CALL DP$LDHA INX D CALL DP$SRLD CALL DP$SRLD MOV A,E STA NRECS ; MVI A,DPB$OFF CALL DP$LDHA PUSH D ; MVI A,B$SELDSK CALL BIOS MOV E,M ! INX H ! MOV D,M ; POP B MVI A,B$SETTRK CALL BIOS LXI B,0 ; RECLOOP PUSH B MOV A,E ! ORA D JZ NOXLATE MVI A,B$SECTRAN CALL BIOS PUSH H ! POP B NOXLATE MVI A,B$SETSEC CALL BIOS MVI A,B$READ CALL BIOS POP B ORA A JZ REA3 LXI D,ERRMSG JMP ERROREXIT ; REA3 CALL PRINT LDA NRECS DCR A STA NRECS RZ INX B JMP RECLOOP ; PRINT EQU $ PUSH B LXI H,CPMBUFF MVI B,16 MVI C,4 PLOOP CALL HEXLINE ! CALL COCRLF CALL HEXLINE ! CALL COCRLF CALL COCRLF DCR C ! JNZ PLOOP CALL COCRLF ! CALL COCRLF POP B RET ; ; COMMON SUBROUTINES ; COSUBM HEXSUBM DPSUBM BIOSM END