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
/
SDIR08.Z80
< prev
next >
Wrap
Text File
|
2000-06-30
|
1KB
|
62 lines
;
; SYSLIB Module Name: SDIR08
; Author: Richard Conn
; Part of SYSLIB3 SDIR Series
; SYSLIB Version Number: 3.6
; Module Version Number: 1.5
public dirnpack
MACLIB SDIRHDR.LIB
EXT DIRPACK,SDFCHK
;*
;* NEGATIVE DIRECTORY PACK UTILITY -- RESTRUCTURE THE DIRECTORY TO INCLUDE
;* ONLY THOSE ENTRIES NOT MARKED BY DIRSEL
;*
;* ON INPUT, HL PTS TO DIRECTORY BUFFER AND BC=NUMBER OF FILES
;* ON EXIT, BC=NUMBER OF SELECTED FILES
;* REQUIRED SIDE EFFECT IS THAT FLAG EXTENT (SET BY DIR::) BE CORRECT
;* (IN MOST CASES, DEFAULT OF 0 IS OK, EXCEPT WHEN EXTENT SIZE >16K)
;*
DIRNPACK:
PUSH HL ; SAVE REGS
PUSH DE
PUSH BC
PUSH AF
DNPACK:
LD A,B ; DONE?
OR C
JP Z,DNPAK1
DEC BC ; COUNT DOWN
LD A,(HL) ; GET FIRST BYTE
CPL ; FLIP BITS
AND 80H ; LOOK AT MOST SIG BIT
LD D,A ; SAVE IN D
LD A,(HL) ; GET FIRST BYTE AGAIN
AND 7FH ; MASK OUT MS BIT
OR D ; MASK IN NEW MOST SIG BIT
LD (HL),A ; PUT BYTE BACK
AND 80H ; SELECTED NOW?
JP Z,DNPAK0 ; SKIP IF NOT SELECTED
PUSH BC ; SAVE COUNTER
CALL SDFCHK ; CHECK FOR FLAGS
POP BC ; GET COUNTER
JP Z,DNPAK0
LD A,(HL) ; GET BYTE
AND 7FH ; DESELECT IT
LD (HL),A ; PUT BYTE BACK
DNPAK0:
LD DE,ESIZE ; POINT TO NEXT ENTRY
ADD HL,DE
JP DNPACK
DNPAK1:
POP AF ; RESTORE REGS
POP BC
POP DE
POP HL
JP DIRPACK ; NOW BRANCH TO DIRPACK
END