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