home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / MISC / INSIDCPM.LBR / HEXDIR.AQM / HEXDIR.ASM
Assembly Source File  |  2000-06-30  |  2KB  |  61 lines

  1. ; * * * * *    HEXDIR -- DISPLAY EXTENT-0 DIRECTORY ENTRIES
  2. ;
  3.     MACLIB    CPMEQU    ; standard names
  4.     MACLIB    PROG    ; prolog, service macros
  5.     MACLIB    HEXSUB    ; hex display routines
  6.     MACLIB    COSUB    ; console output routines
  7.     MACLIB    DPSUB    ; 16-bit routines
  8. ;
  9.     PROLOG    30,HEXDIR
  10. ;
  11. HEADING    DB    'Extent-zero directory entries, drive '
  12. DRIVE    DB    0,CR,LF,CR,LF+80H
  13. ;
  14. THEFCB    DB    0        ; drive already selected
  15.     DB    '????????'    ; filename
  16.     DB    '???'        ; filetype
  17.     DB    0        ; extent zero entries
  18.     DB    0,0,0        ; s1, s2, record count
  19.     DW    0,0,0,0,0,0,0,0    ; data map
  20.     DW    0,0        ; current record, direct addr
  21. ;
  22. HEXDIR    EQU    $
  23.     LDA    CPMFCB    ; see if a drivecode was given
  24.     DCR    A    ; convert A=1 into A=0
  25.     JP    DIR2    ; (result not FF -- code given)
  26.     SERVICE    25    ; omitted, get current drive
  27. DIR2    MOV    E,A    ; save drive for service 14
  28.     ADI    'A'    ; make printable,
  29.     STA    DRIVE    ; ..put in message,
  30.     LXI    H,HEADING
  31.     CALL    COSTR    ; ..print heading.
  32.     SERVICE    14    ; select drive (code in reg E)
  33.     SERVICE    17,THEFCB ; get first active entry
  34. ;
  35. DIRLOOP    ORA    A    ; any entries left?
  36.     RM        ; (back to CCP if not)
  37.     CALL    DIRDUMP    ; yes, dump this one in hex
  38.     SERVICE    18,THEFCB
  39.     JMP    DIRLOOP    ; do next entry, if any
  40. ;
  41. ;  Dump the directory entry whose number is in [A],
  42. ;    from the current record in the buffer
  43. ;
  44. DIRDUMP    LXI    H,CPMBUFF
  45.     ADD    A    ; convert 0,1,2,3 --> 0,32,64,96
  46.     ADD  A ! ADD  A
  47.     ADD  A ! ADD  A
  48.     CALL    DP$ADAH    ; ..and add to buffer address
  49.     MVI    B,16    ; amount to dump in each line
  50.     CALL  HEXLINE ! CALL  COCRLF ; 1st line
  51.     CALL  HEXLINE ! CALL  COCRLF ; 2nd line
  52.     CALL    COCRLF    ; blank line
  53.     RET
  54. ;
  55. ;  COMMON SUBROUTINES
  56. ;
  57.     HEXSUBM
  58.     COSUBM
  59.     DPSUBM
  60.     END
  61.