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 >
Text File  |  2000-06-30  |  1KB  |  62 lines

  1. ;
  2. ; SYSLIB Module Name:  SDIR08
  3. ; Author:  Richard Conn
  4. ; Part of SYSLIB3 SDIR Series
  5. ; SYSLIB Version Number:  3.6
  6. ; Module Version Number:  1.5
  7.  
  8.     public    dirnpack
  9.  
  10.     MACLIB    SDIRHDR.LIB
  11.  
  12.     EXT    DIRPACK,SDFCHK
  13.  
  14. ;*
  15. ;*  NEGATIVE DIRECTORY PACK UTILITY -- RESTRUCTURE THE DIRECTORY TO INCLUDE
  16. ;*    ONLY THOSE ENTRIES NOT MARKED BY DIRSEL
  17. ;*
  18. ;*  ON INPUT, HL PTS TO DIRECTORY BUFFER AND BC=NUMBER OF FILES
  19. ;*  ON EXIT, BC=NUMBER OF SELECTED FILES
  20. ;*  REQUIRED SIDE EFFECT IS THAT FLAG EXTENT (SET BY DIR::) BE CORRECT
  21. ;*    (IN MOST CASES, DEFAULT OF 0 IS OK, EXCEPT WHEN EXTENT SIZE >16K)
  22. ;*
  23. DIRNPACK:
  24.     PUSH    HL    ; SAVE REGS
  25.     PUSH    DE
  26.     PUSH    BC
  27.     PUSH    AF
  28. DNPACK:
  29.     LD    A,B    ; DONE?
  30.     OR    C
  31.     JP    Z,DNPAK1
  32.     DEC    BC    ; COUNT DOWN
  33.     LD    A,(HL)    ; GET FIRST BYTE
  34.     CPL        ; FLIP BITS
  35.     AND    80H    ; LOOK AT MOST SIG BIT
  36.     LD    D,A    ; SAVE IN D
  37.     LD    A,(HL)    ; GET FIRST BYTE AGAIN
  38.     AND    7FH    ; MASK OUT MS BIT
  39.     OR    D    ; MASK IN NEW MOST SIG BIT
  40.     LD    (HL),A    ; PUT BYTE BACK
  41.     AND    80H    ; SELECTED NOW?
  42.     JP    Z,DNPAK0    ; SKIP IF NOT SELECTED
  43.     PUSH    BC    ; SAVE COUNTER
  44.     CALL    SDFCHK    ; CHECK FOR FLAGS
  45.     POP    BC    ; GET COUNTER
  46.     JP    Z,DNPAK0
  47.     LD    A,(HL)    ; GET BYTE
  48.     AND    7FH    ; DESELECT IT
  49.     LD    (HL),A    ; PUT BYTE BACK
  50. DNPAK0:
  51.     LD    DE,ESIZE    ; POINT TO NEXT ENTRY
  52.     ADD    HL,DE
  53.     JP    DNPACK
  54. DNPAK1:
  55.     POP    AF    ; RESTORE REGS
  56.     POP    BC
  57.     POP    DE
  58.     POP    HL
  59.     JP    DIRPACK    ; NOW BRANCH TO DIRPACK
  60.  
  61.     END
  62.