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
/
SDIR00.Z80
< prev
next >
Wrap
Text File
|
2000-06-30
|
2KB
|
61 lines
;
; SYSLIB Module Name: SDIR00
; Author: Richard Conn
; Part of SYSLIB3 SDIR Series
; SYSLIB Version Number: 3.6
; Module Version Number: 1.5
public dirfs
MACLIB SDIRHDR.LIB
EXT DBUFFER,DIRSLOAD,DIRSEL,DIRPACK,DIRALPHA
;*
;* GENERAL-PURPOSE DIRECTORY SELECT ROUTINE WITH SIZING INFORMATION
;* THIS ROUTINE SCANS FOR THE FCB PTED TO BY DE AND LOADS ALL ENTRIES
;* WHICH MATCH IT INTO THE MEMORY BUFFER PTED TO BY HL. ON EXIT,
;* BC=NUMBER OF FILES IN BUFFER, AND HL PTS TO FIRST FILE IN BUFFER.
;* THE DIRECTORY BUFFER GENERATED BY DIRFS CONTAINS ENTRIES WHICH MAY
;* BE USED TO COMPUTE THE SIZE OF THE FILES USING THE FSIZE ROUTINE. THE
;* DIRFS ROUTINE IS DESIGNED FOR THIS PURPOSE. THE BASIC TRADEOFF BETWEEN
;* THE DIRF AND DIRFS ROUTINES IS THE DIRF RUNS FASTER THAN DIRFS, AND THIS
;* IS NOTICABLE IF THERE IS A SIGNIFICANT NUMBER OF FILES TO BE PROCESSED.
;*
;* INPUT PARAMETERS:
;* HL PTS TO BUFFER, DE PTS TO FCB, A IS SELECT FLAG:
;* Bit 7 - Select Non-Sys, Bit 6 - Select Sys
;* Bit 5 - Select All Users, Bits 4-0 - User Number
;* OUTPUT PARAMETERS:
;* HL PTS TO FIRST FILE IN BUFFER
;* BC = NUMBER OF FILES
;* A=0 and Z Flag Set if TPA Overflow
;* DE UNCHANGED
;*
DIRFS:
PUSH DE ; SAVE PTR TO FCB
LD (SELFLG),A ; SAVE SELECT FLAG FOR DIRSEL
CALL DBUFFER ; GET PTRS
CALL DIRSLOAD ; LOAD DIRECTORY WITH SIZING INFORMATION
POP DE ; GET PTR TO FCB
RET Z ; ABORT IF TPA OVERFLOW
PUSH AF ; SAVE FLAG INDICATING NO OVERFLOW
LD A,(SELFLG) ; GET SELECT FLAG
CALL DIRSEL ; SELECT FILES
CALL DIRPACK ; PACK DIRECTORY
XOR A ; SORT FLAG (FN AND FT)
CALL DIRALPHA ; ALPHABETIZE
POP AF ; GET PSW (NO TPA OVERFLOW FLAG)
RET
END