home *** CD-ROM | disk | FTP | other *** search
/ PCDisk Magazine Disks / PCDisk Magazine - Disk 5.img / DIRREAD.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-05-28  |  3.3 KB  |  92 lines

  1. 10  REM DIRECTORY READER Copyright (c) 1984 by C-Level Software
  2. 20  REM Variable Initialization
  3. 100  DIM FLNAME$(112),FLDATE$(112),FLTIME$(112),FLSIZE$(112):FLCOUNT%=0
  4. 110  BUFFER$=STRING$(33," ")    
  5. 120  FILENAME$=STRING$(12," ")
  6. 130  DATE1$=STRING$(8," ")
  7. 140  TIME1$=STRING$(8," ")
  8. 150  SIZE$=STRING$(6," ")
  9. 160  INIT%=1
  10. 170  RDDIR%=0
  11. 180  DEF SEG=&H1800
  12. 190  BLOAD "a:dirread.bin",0
  13. 200  A$="???????????"
  14. 210  DRIVE%=1
  15. 220  FCB$=" "+A$+STRING$(25," ")
  16. 300  REM Program Front End
  17. 310  GOSUB 5000:GOSUB 6000
  18. 320  RET%=0:GOSUB 7000:GOSUB 7500:IF PER%=0 THEN GOSUB 9000:GOTO 320
  19. 330  FCB$=" "+A$+STRING$(25," ")
  20. 1000  REM Directory Retrieval
  21. 1010  CALL RDDIR(INIT%,DRIVE%,FCB$,BUFFER$,FILENAME$,DATE1$,TIME1$,SIZE$,STAT%)
  22. 1020  IF STAT%=0 THEN 2000      ' Exit to display routine
  23. 1030  INIT%=0
  24. 1040  FLCOUNT%=FLCOUNT%+1:FLNAME$(FLCOUNT%)=FILENAME$:FLDATE$(FLCOUNT%)=DATE1$:FLTIME$(FLCOUNT%)=TIME1$:FLSIZE$(FLCOUNT%)=SIZE$
  25. 1050  SIZE$=STRING$(6," "):GOTO 1010
  26. 2000  REM Display Routine
  27. 2010  CLS
  28. 2020  PRINT "Drive = "CHR$(DRIVE%+64)
  29. 2030  PRINT "   Name         Date          Time        Size"
  30. 2040  PRINT STRING$(50,CHR$(240))
  31. 2050  IF FLCOUNT%=0 THEN GOTO 2099
  32. 2060  FOR I%=1 TO FLCOUNT%
  33. 2070  PRINT FLNAME$(I%),FLDATE$(I%),FLTIME$(I%),FLSIZE$(I%)
  34. 2080  NEXT I%
  35. 2099  KEY ON:END
  36. 4000  REM Subroutines
  37. 5000  WIDTH 80:SCREEN 0,0:KEY OFF:CLS:LOCATE 1,1,0
  38. 5010  PRINT CHR$(201);STRING$(78,205);CHR$(187);
  39. 5020  FOR I%=2 TO 22:LOCATE I%,1:PRINT CHR$(186);:LOCATE I%,80:PRINT CHR$(186);
  40. 5025  NEXT I%
  41. 5030  LOCATE 23,1:PRINT CHR$(200);STRING$(78,205);CHR$(188);
  42. 5040  LOCATE 10,34:PRINT "DIRECTORY READER";:LOCATE 14,25:PRINT "Copyright (c) 1984 C-Level Software";:FOR I%=1 TO 2000:NEXT I%:CLS
  43. 5099  RETURN
  44. 6000  LOCATE 4,12,1:PRINT "Drive letter: ";
  45. 6010  DRIVE$=INKEY$:IF DRIVE$="" THEN 6010
  46. 6020  IF ASC(DRIVE$)>96 AND ASC(DRIVE$)<123 THEN DRIVE$=CHR$(ASC(DRIVE$)-32)
  47. 6030  IF ASC(DRIVE$)<65 OR ASC(DRIVE$)>90 THEN BEEP:GOTO 6010
  48. 6040  PRINT DRIVE$;:DRIVE%=ASC(DRIVE$)-64
  49. 6099  RETURN
  50. 7000  LOCATE 6,8:PRINT "File description: ";
  51. 7010  TEMPLATE$=STRING$(13,32):TLEN%=0:TPOS%=26:TTPOS%=1
  52. 7020  GOSUB 8000
  53. 7030  IF RET% THEN GOTO 7499
  54. 7035  IF CULF% THEN IF TPOS%>26 THEN TTPOS%=TTPOS%-1:TPOS%=TPOS%-1:LOCATE 6,TPOS%:GOTO 7020 ELSE BEEP:GOTO 7020
  55. 7040  IF CURT% THEN IF TPOS%<38 AND TTPOS%<=TLEN% THEN TTPOS%=TTPOS%+1:TPOS%=TPOS%+1:LOCATE 6,TPOS%:GOTO 7020 ELSE BEEP:GOTO 7020
  56. 7050  IF DEL% THEN IF TPOS%>25 AND TTPOS%<=TLEN% THEN TEMPLATE$=MID$(TEMPLATE$,1,TTPOS%-1)+MID$(TEMPLATE$,TTPOS%+1):TEMPLATE$=TEMPLATE$+STRING$(13-LEN(TEMPLATE$),32):TLEN%=TLEN%-1:LOCATE 6,26:PRINT TEMPLATE$;:LOCATE 6,TPOS%:GOTO 7020 ELSE BEEP:GOTO 7020
  57. 7060  IF TPOS%<38 THEN MID$(TEMPLATE$,TTPOS%,1)=K$:LOCATE 6,TPOS%:PRINT K$;:TLEN%=INSTR(1,TEMPLATE$," ")-1:TPOS%=TPOS%+1:TTPOS%=TTPOS%+1:GOTO 7020 ELSE BEEP:GOTO 7020
  58. 7499  RETURN
  59. 7500  IF TEMPLATE$=STRING$(13,32) THEN PER%=-1:GOTO 7999
  60. 7510  PER%=INSTR(TEMPLATE$,"."):IF PER%=0 THEN LOCATE 6,26:PRINT STRING$(13,32);:GOTO 7999
  61. 7520  WHILE PER%<9:TEMPLATE$=MID$(TEMPLATE$,1,PER%-1)+" "+MID$(TEMPLATE$,PER%):PER%=INSTR(TEMPLATE$,"."):WEND
  62. 7530  IF LEN(TEMPLATE$)>12 THEN TEMPLATE$=MID$(TEMPLATE$,1,12)
  63. 7540  IF LEN(TEMPLATE$)<12 THEN TEMPLATE$=TEMPLATE$+STRING$(12-LEN(TEMPLATE$),32)
  64. 7550  FOR I%=1 TO PER%-1
  65. 7560  IF MID$(TEMPLATE$,I%,1)="*" THEN MID$(A$,I%,9-I%)=STRING$(9-I%,"?"):GOTO 7700
  66. 7570  MID$(A$,I%,1)=MID$(TEMPLATE$,I%,1)
  67. 7580  NEXT I%
  68. 7700  IF LEN(TEMPLATE$)=PER% THEN GOTO 7999
  69. 7710  TEMPLATE$=MID$(TEMPLATE$,PER%+1)
  70. 7720  FOR I%=1 TO LEN(TEMPLATE$)
  71. 7730  IF MID$(TEMPLATE$,I%,1)="*" THEN MID$(A$,8+I%)=STRING$(4-I%,"?"):GOTO 7999
  72. 7740  MID$(A$,8+I%,1)=MID$(TEMPLATE$,I%,1)
  73. 7750  NEXT I%
  74. 7999  RETURN
  75. 8000  CULF%=0:CURT%=0:DEL%=0
  76. 8002  K$=INKEY$:IF K$="" THEN 8002
  77. 8005  IF LEN(K$)>1 THEN K%=ASC(MID$(K$,2,1)):GOTO 8100 ELSE K%=ASC(K$)
  78. 8010  IF K%=13 THEN RET%=-1:GOTO 8199
  79. 8015  IF K%>61 AND K%<91 THEN 8199
  80. 8020  IF K%>96 AND K%<123 THEN K%=K%-32:K$=CHR$(K%):GOTO 8199
  81. 8030  IF K%>47 AND K%<58 THEN 8199
  82. 8040  IF K%>34 AND K%<43 THEN 8199
  83. 8050  IF K%=33 OR K%=45 OR K%=46 OR K%=60 OR K%=92 OR K%=95 OR K%=96 OR K%=123 OR K%=124 OR K%=125 THEN 8199
  84. 8060  BEEP:GOTO 8002
  85. 8100  IF K%=75 THEN CULF%=-1:GOTO 8199
  86. 8110  IF K%=77 THEN CURT%=-1:GOTO 8199
  87. 8120  IF K%=83 THEN DEL%=-1:GOTO 8199
  88. 8130  BEEP:GOTO 8002
  89. 8199  RETURN
  90. 9000  LOCATE 23,21,0:PRINT "Include extension delimiter (.)";:BEEP
  91. 9010  LOCATE ,,1:RETURN
  92.