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 / ZSYS / SIMTEL20 / SYSLIB / SLIB1.LBR / SDIR02.Z80 < prev    next >
Text File  |  2000-06-30  |  2KB  |  102 lines

  1. ;
  2. ; SYSLIB Module Name:  SDIR02
  3. ; Author:  Richard Conn
  4. ; Part of SYSLIB3 SDIR Series
  5. ; SYSLIB Version Number:  3.6
  6. ; Module Version Number:  1.5
  7.  
  8.     public    dparams
  9.  
  10.     MACLIB    SDIRHDR.LIB
  11.  
  12. ;*
  13. ;*  THIS ROUTINE EXTRACTS DISK PARAMETER INFORMATON FROM THE DPB AND
  14. ;*    STORES THIS INFORMATION IN:
  15. ;*    BLKSHF    <-- BLOCK SHIFT FACTOR (1 BYTE)
  16. ;*    BLKMSK    <-- BLOCK MASK (1 BYTE)
  17. ;*    EXTENT  <-- EXTENT MASK (1 BYTE) [NOT ANY MORE]
  18. ;*    BLKMAX    <-- MAX NUMBER OF BLOCKS ON DISK (2 BYTES)
  19. ;*    DIRMAX    <-- MAX NUMBER OF DIRECTORY ENTRIES (2 BYTES)
  20. ;*
  21. DPARAMS:
  22.     PUSH    BC        ; SAVE REGS
  23.     PUSH    DE
  24.     PUSH    HL
  25.     PUSH    AF
  26.     LD    C,12        ; GET VERSION NUMBER
  27.     CALL    BDOS
  28.     LD    A,H        ; CHECK FOR 1.4
  29.     OR    L
  30.     JP    Z,DPARM1    ; PRE-2.x...GET PARAMS THE 1.4 WAY
  31.  
  32. ;*
  33. ;*  VERSION 2.x OR MP/M
  34. ;*
  35.     LD    C,31        ; 2.x OR MP/M...REQUEST DPB
  36.     CALL    BDOS
  37.     INC    HL
  38.     INC    HL
  39.     LD    A,(HL)        ; GET BLOCK SHIFT
  40.     LD    (BLKSHF),A    ; BLOCK SHIFT FACTOR
  41.     INC    HL        ; GET BLOCK MASK
  42.     LD    A,(HL)
  43.     LD    (BLKMSK),A    ; BLOCK MASK
  44.     INC    HL
  45. ;    MOV    A,M        ; GET MAX EXTENT NUMBER
  46. ;    STA    EXTENT        ; THIS IS CALLED THE EXTENT MASK
  47.     INC    HL
  48.     LD    E,(HL)        ; GET MAX BLOCK NUMBER
  49.     INC    HL
  50.     LD    D,(HL)
  51.     EX    DE,HL
  52.     INC    HL        ; ADD 1 FOR MAX NUMBER OF BLOCKS
  53.     LD    (BLKMAX),HL    ; MAXIMUM NUMBER OF BLOCKS
  54.     EX    DE,HL
  55.     INC    HL
  56.     LD    E,(HL)        ; GET DIRECTORY SIZE
  57.     INC    HL
  58.     LD    D,(HL)
  59.     EX    DE,HL
  60.     INC    HL        ; ADD 1 FOR NUMBER OF ENTRIES
  61.     LD    (DIRMAX),HL    ; MAXIMUM NUMBER OF DIRECTORY ENTRIES
  62.     JP    DPARM2
  63.  
  64. ;*
  65. ;*  CP/M 1.4
  66. ;*
  67. DPARM1:
  68.     LD    HL,(BDOS+1)    ; GET PARAMS 1.4 STYLE
  69.     LD    L,3BH        ; POINT TO DIRECTORY SIZE ENTRY IN 1.4 BDOS
  70.     LD    E,(HL)        ; GET IT
  71.     LD    D,0        ; FORCE HI ORDER BYTE TO 0
  72.     EX    DE,HL        ; SAVE SIZE OF DIRECTORY ENTRY
  73.     INC    HL        ; ADD 1
  74.     LD    (DIRMAX),HL    ; MAXIMUM NUMBER OF ENTRIES
  75.     EX    DE,HL
  76.     INC    HL        ; POINT TO BLOCK SHIFT
  77.     LD    A,(HL)
  78.     LD    (BLKSHF),A    ; BLOCK SHIFT FACTOR
  79.     INC    HL        ; POINT TO BLOCK MASK
  80.     LD    A,(HL)
  81.     LD    (BLKMSK),A    ; BLOCK MASK
  82.     INC    HL
  83.     LD    E,(HL)        ; GET MAXIMUM BLOCK NUMBER
  84.     LD    D,0
  85.     EX    DE,HL
  86.     INC    HL        ; ADD 1
  87.     LD    (BLKMAX),HL    ; MAXIMUM NUMBER OF BLOCKS
  88. ;    XRA    A        ; A=0
  89. ;    STA    EXTENT        ; SET EXTENT MASK TO 0 FOR CP/M 1.4 EXTENT SIZE
  90.  
  91. ;*
  92. ;*  ALL PARAMETERS EXTRACTED
  93. ;*
  94. DPARM2:
  95.     POP    AF        ; RESTORE REGS
  96.     POP    HL
  97.     POP    DE
  98.     POP    BC
  99.     RET
  100.  
  101.     END
  102.