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 >
Wrap
Text File
|
2000-06-30
|
2KB
|
102 lines
;
; SYSLIB Module Name: SDIR02
; Author: Richard Conn
; Part of SYSLIB3 SDIR Series
; SYSLIB Version Number: 3.6
; Module Version Number: 1.5
public dparams
MACLIB SDIRHDR.LIB
;*
;* THIS ROUTINE EXTRACTS DISK PARAMETER INFORMATON FROM THE DPB AND
;* STORES THIS INFORMATION IN:
;* BLKSHF <-- BLOCK SHIFT FACTOR (1 BYTE)
;* BLKMSK <-- BLOCK MASK (1 BYTE)
;* EXTENT <-- EXTENT MASK (1 BYTE) [NOT ANY MORE]
;* BLKMAX <-- MAX NUMBER OF BLOCKS ON DISK (2 BYTES)
;* DIRMAX <-- MAX NUMBER OF DIRECTORY ENTRIES (2 BYTES)
;*
DPARAMS:
PUSH BC ; SAVE REGS
PUSH DE
PUSH HL
PUSH AF
LD C,12 ; GET VERSION NUMBER
CALL BDOS
LD A,H ; CHECK FOR 1.4
OR L
JP Z,DPARM1 ; PRE-2.x...GET PARAMS THE 1.4 WAY
;*
;* VERSION 2.x OR MP/M
;*
LD C,31 ; 2.x OR MP/M...REQUEST DPB
CALL BDOS
INC HL
INC HL
LD A,(HL) ; GET BLOCK SHIFT
LD (BLKSHF),A ; BLOCK SHIFT FACTOR
INC HL ; GET BLOCK MASK
LD A,(HL)
LD (BLKMSK),A ; BLOCK MASK
INC HL
; MOV A,M ; GET MAX EXTENT NUMBER
; STA EXTENT ; THIS IS CALLED THE EXTENT MASK
INC HL
LD E,(HL) ; GET MAX BLOCK NUMBER
INC HL
LD D,(HL)
EX DE,HL
INC HL ; ADD 1 FOR MAX NUMBER OF BLOCKS
LD (BLKMAX),HL ; MAXIMUM NUMBER OF BLOCKS
EX DE,HL
INC HL
LD E,(HL) ; GET DIRECTORY SIZE
INC HL
LD D,(HL)
EX DE,HL
INC HL ; ADD 1 FOR NUMBER OF ENTRIES
LD (DIRMAX),HL ; MAXIMUM NUMBER OF DIRECTORY ENTRIES
JP DPARM2
;*
;* CP/M 1.4
;*
DPARM1:
LD HL,(BDOS+1) ; GET PARAMS 1.4 STYLE
LD L,3BH ; POINT TO DIRECTORY SIZE ENTRY IN 1.4 BDOS
LD E,(HL) ; GET IT
LD D,0 ; FORCE HI ORDER BYTE TO 0
EX DE,HL ; SAVE SIZE OF DIRECTORY ENTRY
INC HL ; ADD 1
LD (DIRMAX),HL ; MAXIMUM NUMBER OF ENTRIES
EX DE,HL
INC HL ; POINT TO BLOCK SHIFT
LD A,(HL)
LD (BLKSHF),A ; BLOCK SHIFT FACTOR
INC HL ; POINT TO BLOCK MASK
LD A,(HL)
LD (BLKMSK),A ; BLOCK MASK
INC HL
LD E,(HL) ; GET MAXIMUM BLOCK NUMBER
LD D,0
EX DE,HL
INC HL ; ADD 1
LD (BLKMAX),HL ; MAXIMUM NUMBER OF BLOCKS
; XRA A ; A=0
; STA EXTENT ; SET EXTENT MASK TO 0 FOR CP/M 1.4 EXTENT SIZE
;*
;* ALL PARAMETERS EXTRACTED
;*
DPARM2:
POP AF ; RESTORE REGS
POP HL
POP DE
POP BC
RET
END