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 / SDIR.Z80 < prev    next >
Text File  |  2000-06-30  |  2KB  |  61 lines

  1. ;
  2. ; SYSLIB Module Name:  SDIR
  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    dirf
  9.  
  10.     MACLIB    SDIRHDR.LIB
  11.     EXT    DBUFFER,DIRLOAD,DIRSEL,DIRPACK,DIRALPHA
  12.  
  13. ;*
  14. ;*  GENERAL-PURPOSE DIRECTORY SELECT ROUTINE WITHOUT SIZING INFORMATION
  15. ;*    THIS ROUTINE SCANS FOR THE FCB PTED TO BY DE AND LOADS ALL ENTRIES
  16. ;* WHICH MATCH IT INTO THE MEMORY BUFFER PTED TO BY HL.  ON EXIT, 
  17. ;* BC=NUMBER OF FILES IN BUFFER, AND HL PTS TO FIRST FILE IN BUFFER.
  18. ;*    THE DIRECTORY BUFFER GENERATED BY DIRF CONTAINS ENTRIES WHICH MAY NOT
  19. ;* BE USED TO COMPUTE THE SIZE OF THE FILES USING THE FSIZE ROUTINE.  THE
  20. ;* DIRFS ROUTINE IS DESIGNED FOR THIS PURPOSE.  THE BASIC TRADEOFF BETWEEN
  21. ;* THE TWO ROUTINES IS THE DIRF RUNS FASTER THAN DIRFS, AND THIS IS NOTICABLE
  22. ;* IF THERE IS A SIGNIFICANT NUMBER OF FILES TO BE PROCESSED.
  23. ;*
  24. ;*    INPUT PARAMETERS:
  25. ;*    HL PTS TO BUFFER, DE PTS TO FCB, A IS SELECT FLAG:
  26. ;*            Bit 7 - Select Non-Sys, Bit 6 - Select Sys
  27. ;*            Bit 5 - Select All Users, Bits 4-0 - User Number
  28. ;*    OUTPUT PARAMETERS:
  29. ;*    HL PTS TO FIRST FILE IN BUFFER
  30. ;*    BC = NUMBER OF FILES
  31. ;*    A=0 and Z Flag Set if TPA Overflow
  32. ;*    DE UNCHANGED
  33. ;*
  34. DIRF:
  35.     PUSH    DE    ; SAVE PTR TO FCB
  36.  
  37.     LD    (SELFLG),A    ; SAVE SELECT FLAG FOR DIRSEL
  38.  
  39.     CALL    DBUFFER    ; GET PTRS
  40.  
  41.     CALL    DIRLOAD    ; LOAD DIRECTORY WITHOUT SIZING INFORMATION (FAST LOAD)
  42.  
  43.     POP    DE    ; GET PTR TO FCB
  44.  
  45.     RET    Z        ; ABORT IF TPA OVERFLOW
  46.  
  47.     PUSH    AF    ; SAVE FLAG TO INDICATE NO TPA OVERFLOW
  48.  
  49.     LD    A,(SELFLG)    ; GET SELECT FLAG
  50.     CALL    DIRSEL    ; SELECT FILES
  51.  
  52.     CALL    DIRPACK    ; PACK DIRECTORY
  53.  
  54.     XOR    A    ; SORT FLAG (FN AND FT)
  55.     CALL    DIRALPHA    ; ALPHABETIZE
  56.  
  57.     POP    AF    ; GET PSW (TPA OVERFLOW FLAG)
  58.     RET
  59.  
  60.     END
  61.