home *** CD-ROM | disk | FTP | other *** search
- ; * * * * * 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