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
/
SDIR04.Z80
< prev
next >
Wrap
Text File
|
2000-06-30
|
2KB
|
85 lines
;
; SYSLIB Module Name: SDIR04
; Author: Richard Conn
; Part of SYSLIB3 SDIR Series
; SYSLIB Version Number: 3.6
; Module Version Number: 1.6
public fsize
MACLIB SDIRHDR.LIB
;*
;* COMPUTE SIZE OF FILE WHOSE LAST EXTENT IS POINTED TO BY HL
;* FILE SIZE IS RETURNED IN DE IN K
;* NOTE THAT THE ROUTINE DPARAMS MUST HAVE BEEN CALLED BEFORE THIS ROUTINE
;* IS USED
;*
;* Version 1.5 includes a fix proposed by Sigi Kluger in 6/3/84 which
;* recognized overflow extents in S1. Now files >512K in size are
;* correctly recognized
;*
FSIZE:
PUSH BC ; SAVE REGS
PUSH HL
PUSH AF
LD DE,12 ; POINT TO EXTENT
ADD HL,DE
LD E,(HL) ; GET EXTENT #
LD D,0
INC HL ; SKIP S1
INC HL ; SKIP S2
PUSH HL ; SAVE PTR TO S2
INC HL ; HL PTS TO RECORD COUNT FIELD
LD A,(HL) ; GET RECORD COUNT OF LAST EXTENT
EX DE,HL
ADD HL,HL ; NUMBER OF EXTENTS TIMES 16K
ADD HL,HL
ADD HL,HL
ADD HL,HL
EX DE,HL ; TOTAL SIZE OF PREVIOUS EXTENTS IN DE
;
; SK
;
POP HL ; GET PTR TO S2
PUSH AF ; SAVE A
LD A,(HL) ; GET S2
OR A ; OVERFLOW
JP Z,NOVFL
EX DE,HL
LD DE,512
LP:
ADD HL,DE
DEC A
JP NZ,LP
EX DE,HL
NOVFL:
POP AF ; GET A BACK
;
;END SK
;
LD HL,BLKMSK
ADD A,(HL) ; ROUND LAST EXTENT TO BLOCK SIZE
RRCA
RRCA ; CONVERT FROM RECORDS TO K
RRCA
AND 1FH
LD L,A ; ADD SIZE OF LAST EXTENT TO TOTAL OF PREVIOUS EXTENTS
LD H,0 ; HL=SIZE OF LAST EXTENT, DE=TOTAL OF PREVIOUS EXTENTS
ADD HL,DE ; HL=TOTAL FILE SIZE IN BLOCKS
LD A,(BLKMSK) ; GET RECORDS/BLK-1
RRCA
RRCA ; CONVERT TO K/BLK
RRCA
AND 1FH
CPL ; USE TO FINISH ROUNDING
AND L
LD L,A ; HL NOW EQUALS THE SIZE OF THE FILE IN K INCREMENTS
EX DE,HL ; DE=FILE SIZE IN K
POP AF ; RESTORE REGS
POP HL
POP BC
RET
END