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
/
SDIR07.Z80
< prev
next >
Wrap
Text File
|
2000-06-30
|
2KB
|
109 lines
;
; SYSLIB Module Name: SDIR07
; Author: Richard Conn
; Part of SYSLIB3 SDIR Series
; SYSLIB Version Number: 3.6
; Module Version Number: 1.5
public dirsel
MACLIB SDIRHDR.LIB
EXT SDFCHK
;*
;* DIRSEL -- SELECT DIRECTORY ENTRIES WHICH MATCH USER NUMBER, FILE
;* NAME, AND FILE TYPE PTED TO BY DE
;*
;* ON INPUT, HL PTS TO DIRECTORY, DE PTS TO FCB, BC=NUMBER OF FILES, A=FLAG:
;* Bit 7 - Select Non-Sys, Bit 6 - Select Sys
;* Bit 5 - Select All Users, Bits 4-0 - User Number
;* ON OUTPUT, THE MS BIT OF THE USER OF THE SELECTED FILES IS SET
;*
DIRSEL:
PUSH HL ; SAVE REGS
PUSH DE
PUSH BC
PUSH AF
LD (SELFLG),A ; SAVE SELECT FLAG
PUSH BC ; SAVE COUNT
;* CHECK FOR MATCH
DSMAT:
POP BC ; GET COUNT
LD A,B ; CHECK FOR NO ENTRIES
OR C
JP Z,DSDONE ; DONE IF NONE
DEC BC ; COUNT DOWN
PUSH BC ; SAVE COUNT
PUSH HL ; SAVE PTRS
PUSH DE
INC HL ; PT TO FN
INC DE
LD B,8 ; CHECK 8 CHARS
EX DE,HL ; LET HL PT TO FCB
CALL COMP2 ; COMPARE WITH '?' MATCH
POP DE ; GET PTRS
POP HL
JP NZ,DSMATNX ; ADVANCE TO NEXT ENTRY IF NO MATCH
PUSH HL ; SAVE PTRS
PUSH DE
LD BC,9 ; CHECK R/O FLAG, SYS FLAG, LAST BYTE
ADD HL,BC
EX DE,HL
ADD HL,BC ; DON'T EXCHANGE -- HL PTS TO FCB, DE PTS TO DIR
LD B,3 ; CHECK 3 BYTES
CALL COMP2 ; COMPARE WITH '?' MATCH
POP DE ; RESTORE PTRS
POP HL
JP NZ,DSMATNX ; NO MATCH?
CALL SDFCHK ; CHECK FLAGS
JP NZ,DSMATNX ; NO MATCH?
;*
;* WE HAVE A MATCH -- MARK ENTRY
;*
DSMARK:
LD A,(HL) ; GET BYTE
OR 80H ; SET MSB
LD (HL),A ; PUT BYTE
;*
;* ADVANCE TO NEXT ENTRY
;*
DSMATNX:
LD BC,ESIZE ; NUMBER OF BYTES/ENTRY
ADD HL,BC ; PT TO NEXT ENTRY
JP DSMAT ; CONTINUE
;*
;* DONE WITH SCAN
;*
DSDONE:
POP AF ; RESTORE REGS
POP BC
POP DE
POP HL
RET
;*
;* AS COMP, BUT MATCH ON '?' PTED TO BY HL
;*
COMP2:
LD A,(HL) ; GET (HL)
AND 7FH ; MASK MSB
CP '?' ; MATCH '?'
JP Z,COMP2A
LD C,A ; ... IN C
LD A,(DE) ; COMPARE
AND 7FH ; MASK MSB
CP C
RET NZ
COMP2A:
INC HL ; PT TO NEXT
INC DE
DEC B ; COUNT DOWN
JP NZ,COMP2
RET
END