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 / SIMTEL / CPMUG / CPMUG029.ARK / ALLOC.ASM next >
Assembly Source File  |  1984-04-29  |  2KB  |  80 lines

  1. ;ALLOC.ASM - PRINT ALLOCATION VECTOR FOR A DISK
  2. ;    AS A BIT MAP
  3. ;
  4. ;3/77 ORIGINALLY WRITTEN BY WARD CHRISTENSEN
  5. ;11/14/77 MODIFY TO ALLOW 'ALLOC B:'
  6. ;6/11/78 MODIFY FOR CP/M V1.4 (COMPATIBLE WITH 1.3)
  7.     ORG    100H
  8.     CALL    START    ;SKIP ID
  9.     DB    'ALLOC 6/11/78'
  10.     DB    0DH,0AH,'$'
  11. ;
  12. ;BDOS EQUATES USED IN THIS PROGRAM
  13. ;
  14. BDOS    EQU    5
  15. PRINT    EQU    9
  16. SELDK    EQU    14
  17. FCB    EQU    5CH
  18. INQA    EQU    1BH    ;INQ ALLOC VECTOR
  19. ;
  20. ;TYPE ALLOCATION VECTOR
  21. ;
  22. START    POP    D    ;GET ID MESSAGE
  23.     MVI    C,PRINT    ;PRINT IT
  24.     CALL    BDOS
  25.     LDA    FCB    ;SELECT DISK?
  26.     ORA    A    ;0 ==> LOGGED IN DISK
  27.     JZ    NODK    ;NO DISK SELECT
  28.     DCR    A    ;MAKE INTO DISK #
  29.     MOV    E,A    ;SETUP
  30.     MVI    C,SELDK ;..FOR CALL
  31.     CALL    BDOS    ;SELECT DISK
  32. NODK    MVI    C,INQA    ;INQUIRE ALLOC
  33.     CALL    BDOS    ;GET POINTER TO IT IN B
  34.     MOV    C,A
  35.     MVI    D,32    ;SET BYTE COUNT
  36. CHAR    MVI    E,80H    ;GET INITIAL BIT MASK
  37. BIT    LDAX    B    ;GET BIT MAP VALUE
  38.     ANA    E    ;ISOLATE BIT
  39.     MVI    A,'0'    ;GET 'NO BIT' VALUE
  40.     JZ    ZERO
  41.     INR    A    ;MAKE '0' INTO '1'
  42. ZERO    CALL    TYPE
  43.     MOV    A,E    ;GET MASK
  44.     RRC        ;SHIFT RIGHT
  45.     MOV    E,A    ;MOVE MASK BACK
  46.     JC    ENDBYT    ;END OF BYTE?
  47. ;CHECK IF AT END
  48.     MOV    A,D    ;GET BYTE #
  49.     CPI    2
  50.     JNZ    BIT    ;NOT END BYTE
  51. ;IS END BYTE, SEE IF END BIT
  52.     MOV    A,E
  53.     CPI    20H
  54.     JNZ    BIT
  55. ENDBYT    INX    B    ;POINT TO NEXT BYTE
  56.     DCR    D    ;DONE?
  57.     MOV    A,D
  58.     CPI    1
  59.     JZ    CR    ;..YES, TYPE CR, EXIT
  60.     MOV    A,D    ;GET CHAR COUNT
  61.     ANI    3    ;TIME TO C/R?
  62.     CZ    CR    ;YES
  63.     JMP    CHAR
  64. ;C/R
  65. CR    MVI    A,13    ;GET C/R
  66.     CALL    TYPE    ;TYPE IT
  67.     MVI    A,10    ;GET L/F, TYPE IT
  68. ;TYPE CHAR IN A
  69. TYPE    PUSH    B
  70.     PUSH    D
  71.     PUSH    H
  72.     MVI    C,2
  73.     MOV    E,A
  74.     CALL    BDOS
  75.     POP    H
  76.     POP    D
  77.     POP    B
  78.     RET
  79.     END    100H
  80.