home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / misc / insidcpm.lbr / READIR.AQM / READIR.ASM
Encoding:
Assembly Source File  |  1985-02-09  |  2.0 KB  |  97 lines

  1. ; * * * * *    READIR -- READ DIRECTORY VIA BIOS CALLS
  2. ;
  3.     MACLIB    CPMEQU   ; standard names
  4.         MACLIB  PROG     ; prolog, service macros
  5.         MACLIB  COSUB    ; console output
  6.         MACLIB  HEXSUB   ; hex displays
  7.         MACLIB  DPSUB    ; 16 bit routines
  8.         MACLIB  BIOSCALL ; bios interface
  9. ;
  10.     PROLOG2    READIR
  11. ;
  12. HEADING    DB      'Physical directory entries, drive '
  13. DRIVE    DB      0,CR,LF,CR,LF+80H
  14. ERRMSG    DB      CR,LF,'BIOS reports read error.',CR,LF,'$'
  15. DPB$DRM    EQU     07H    ; offset of DRM field in DPB
  16. DPB$OFF    EQU     0DH     ; offset of OFF field in DPB
  17. NRECS    DB    0       ; records left to go
  18. ;
  19. READIR    EQU    $
  20.     LDA    CPMFCB
  21.         DCR    A
  22.         JP    REA2
  23.         SERVICE    25
  24. REA2    MOV    E,A
  25.         MOV    C,A
  26.         ADI    'A'
  27.         STA    DRIVE
  28.         LXI  H,HEADING ! CALL  COSTR
  29.         SERVICE    14
  30.         SERVICE    31
  31. ;
  32.         MVI    A,DPB$DRM
  33.         CALL    DP$LDHA
  34.         INX    D
  35.         CALL    DP$SRLD
  36.         CALL    DP$SRLD
  37.         MOV    A,E
  38.         STA    NRECS
  39. ;
  40.         MVI    A,DPB$OFF
  41.         CALL    DP$LDHA
  42.         PUSH    D
  43. ;
  44.         MVI    A,B$SELDSK
  45.         CALL    BIOS
  46.         MOV  E,M ! INX  H ! MOV  D,M
  47. ;
  48.         POP    B
  49.         MVI    A,B$SETTRK
  50.         CALL    BIOS
  51.         LXI    B,0
  52. ;
  53. RECLOOP    PUSH    B
  54.         MOV  A,E ! ORA  D
  55.         JZ    NOXLATE
  56.         MVI    A,B$SECTRAN
  57.         CALL    BIOS
  58.         PUSH  H ! POP  B
  59. NOXLATE    MVI    A,B$SETSEC
  60.         CALL    BIOS
  61.         MVI    A,B$READ
  62.         CALL    BIOS
  63.         POP    B
  64.         ORA    A
  65.         JZ    REA3
  66.         LXI    D,ERRMSG
  67.         JMP    ERROREXIT
  68. ;
  69. REA3    CALL    PRINT
  70.         LDA    NRECS
  71.         DCR    A
  72.         STA    NRECS
  73.         RZ
  74.         INX    B
  75.         JMP    RECLOOP
  76. ;
  77. PRINT    EQU    $
  78.         PUSH    B
  79.         LXI    H,CPMBUFF
  80.         MVI    B,16
  81.         MVI    C,4
  82. PLOOP    CALL  HEXLINE ! CALL  COCRLF
  83.         CALL  HEXLINE ! CALL  COCRLF
  84.         CALL    COCRLF
  85.         DCR  C ! JNZ  PLOOP
  86.         CALL  COCRLF ! CALL  COCRLF
  87.         POP    B
  88.         RET
  89. ;
  90. ;  COMMON SUBROUTINES
  91. ;
  92.         COSUBM
  93.         HEXSUBM
  94.         DPSUBM
  95.         BIOSM
  96.         END
  97.