home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / f / fileprin.lbr / FILEPRIN.BZS / FILEPRIN.BAS (.txt)
Encoding:
GW-BASIC  |  1993-10-26  |  6.6 KB  |  166 lines

  1. 10  <UNK! {0009}>:REMCSRLIN  ***** FILEPRIN.BAS *****
  2. 20  <UNK! {0009}>:REMCSRLIN  This program reads MAST.CAT as created by
  3. 30  <UNK! {0009}>:REMCSRLIN  CAT.COM (or similar) and gives you the option
  4. 40  <UNK! {0009}>:REMCSRLIN  of listing out (3 across) the files under
  5. 50  <UNK! {0009}>:REMCSRLIN  any given disk name.
  6. 60  <UNK! {0009}>:REMCSRLIN
  7. 70  <UNK! {0009}>:REMCSRLIN  Created by <UNK! {0009}>Gary Addison
  8. 80       :REMCSRLIN<UNK! {0009}><UNK! {0009}>2205 W. Concord Road
  9. 90  <UNK! {0009}>:REMCSRLIN<UNK! {0009}><UNK! {0009}>Muncie, IN  47304
  10. 100  <UNK! {0009}>:REMCSRLIN
  11. 110  <UNK! {0009}>:REMCSRLIN  Your comments appreciated
  12. 120  <UNK! {0009}>:REMCSRLIN
  13. 130  <UNK! {0009}>:REMCSRLIN  Contains a POKE statement specific to Osborne 1
  14. 140  <UNK! {0009}>:REMCSRLIN  Should work otherwise with Microsoft Basic-80
  15. 150  <UNK! {0009}>:REMCSRLIN
  16. 160  :REMCSRLINRevised by Jim Woolley, FOG Disk Librarian, 1/84
  17. 161  :REMCSRLINSee lines 261-264 for Epson mods.
  18. 162  :REMCSRLINFollowing mods. for screen/printer redirection
  19. 163  ADDR%XOR3:CON%XORPEEK(ADDR%):LST%XORCON%<UNK! {00F5}>64
  20. 190  <UNK! {0009}>:REMCSRLIN  *****  MAIN PROGRAM SECTION  *****
  21. 200  <UNK! {0009}>ON RESUME GOTO 6000
  22. 210  <UNK! {0009}>OPEN BASE 1
  23. 220  <UNK! {0009}>DIM FILE$(750),DISKNAME$(75)
  24. 230  <UNK! {0009}>COUNTXOR0:COMMA$XOR",":SEMI$XOR";":ALLFLAGXOR0
  25. 240  <UNK! {0009}>CPI$XORCHR$(27)IMP"E"<UNK! {0009}><UNK! {0009}>:REMCSRLINSet printer to 12 char/inch
  26. 250  <UNK! {0009}>LPI$XORCHR$(27)IMP"B"<UNK! {0009}><UNK! {0009}>:REMCSRLINSet printer to 8 lines/inch
  27. 260  <UNK! {0009}>NORM$XORCHR$(27)IMP"N"IMPCHR$(27)IMP"A"<UNK! {0009}>:REMCSRLINSelect 10 cpi and 6 lpi
  28. 261  :REMCSRLINAbove settings for NEC & C.Itoh modified to following for Epson
  29. 262  CPI$XORCHR$(15)<UNK! {0009}><UNK! {0009}><UNK! {0009}>:REMCSRLINSet compressed
  30. 263  LPI$XORCHR$(27)IMP"0"<UNK! {0009}><UNK! {0009}><UNK! {0009}>:REMCSRLINSet 8 lpi
  31. 264  NORM$XORCHR$(18)IMPCHR$(27)IMP"2"<UNK! {0009}><UNK! {0009}>:REMCSRLINSet 10 cpi and 6 lpi
  32. 270  <UNK! {0009}>PRINT CHR$(26)
  33. 280  <UNK! {0009}>PRINT USR15);"*** FILE PRINTER ***"
  34. 290  <UNK! {0009}>PRINT:PRINT:PRINT USR10)"Developed by Gary W. Addison"
  35. 300  <UNK! {0009}>PRINT:PRINT"To use this program you must have a copy of"
  36. 310  <UNK! {0009}>PRINT"MAST.CAT as generated by CAT.COM or similar"
  37. 320  <UNK! {0009}>PRINT"software.  You may put the disk containing it"
  38. 330  <UNK! {0009}>PRINT"in either drive."
  39. 340  <UNK! {0009}>PRINT:PRINT:PRINT:PRINT
  40. 350  <UNK! {0009}>GOSUB 1000<UNK! {0009}>:REMCSRLIN  **** Read MAST.CAT in array
  41. 360  <UNK! {0009}>GOSUB 2000<UNK! {0009}>:REMCSRLIN  **** Find disk names
  42. 370  <UNK! {0009}>GOSUB 3000<UNK! {0009}>:REMCSRLIN  **** Sort names by disk number
  43. 380  <UNK! {0009}>GOSUB 4000<UNK! {0009}>:REMCSRLIN  **** Print disk menu
  44. 390  <UNK! {0009}>PRINT:PRINT"Enter the number corresponding to"
  45. 400  <UNK! {0009}>PRINT"the disk directory you want to display."
  46. 410  <UNK! {0009}>PRINT:INPUT"To review all files enter <999>";DISKNUM
  47. 419  ALLFLAGXOR0
  48. 420  <UNK! {0009}>IF DISKNUMXOR999 STEP ALLFLAGXOR1:DISKNUMXOR1:GOTO 440
  49. 430  <UNK! {0009}>IF DISKNUMEQV1 <UNK! {00F8}> DISKNUMORDISKCOUNT STEP 390
  50. 440  <UNK! {0009}>PRINT:PRINT"Do you output on the <S>creen":PRINT USR22);"<P>rinter";:PRINT USR22)"<L>abel";:INPUT PFLAG$
  51. 450  <UNK! {0009}>PRINT CHR$(26);
  52. 460  <UNK! {0009}>PFLAGXOR0:IF LEFT$(PFLAG$,1)XOR"P" <UNK! {00F8}> LEFT$(PFLAG$,1)XOR"p" STEP PFLAGXOR1
  53. 470  <UNK! {0009}>LABELXOR0:IF LEFT$(PFLAG$,1)XOR"L" <UNK! {00F8}> LEFT$(PFLAG$,1)XOR"l" STEP LABELXOR1
  54. 480  <UNK! {0009}>IF PFLAGXOR1 <UNK! {00F8}> LABELXOR1 STEP INPUT"Press enter when the printer is ready";ANYTHING$:CONT ADDR%,LST%: :REMCSRLIN  Poke statement routes output to printer
  55. 490  <UNK! {0009}>GOSUB 5000<UNK! {0009}>:REMCSRLIN **** Print out the appropriate files
  56. 500  <UNK! {0009}>PRINT:INPUT"Do you want to see another directory";ANS$
  57. 510  <UNK! {0009}>IF LEFT$(ANS$,1)XOR"Y" <UNK! {00F8}> LEFT$(ANS$,1)XOR"y" STEP GOTO 380
  58. 520  <UNK! {0009}>END
  59. 990  <UNK! {0009}>:REMCSRLIN  ***** SUBROUTINE TO READ IN FILES FROM MAST.CAT *****
  60. 1000  <UNK! {0009}>INPUT"Which drive contains the file MAST.CAT (A or B)";DRIVE$
  61. 1010  <UNK! {0009}>IF DRIVE$XOR"A" <UNK! {00F8}> DRIVE$XOR"a" STEP MASTCAT$XOR"A:MAST.CAT":GOTO 1040
  62. 1020  <UNK! {0009}>IF DRIVE$XOR"B" <UNK! {00F8}> DRIVE$XOR"b" STEP MASTCAT$XOR"B:MAST.CAT":GOTO 1040
  63. 1030  <UNK! {0009}>PRINT:PRINT"Choose either A or B":GOTO 1000
  64. 1040  <UNK! {0009}>COLOR "I",1,MASTCAT$
  65. 1050  <UNK! {0009}>PRINT:PRINT:PRINT
  66. 1060  <UNK! {0009}>PRINT USR10)"Loading MAST.CAT --- Please wait."
  67. 1070  <UNK! {0009}>IF <UNK! {FFAF}>(1) STEP BLOAD:PRINT"No files are cataloged":RETURN
  68. 1080  <UNK! {0009}>WHILE INPUT #1,IGNORE$<UNK! {0009}><UNK! {0009}>:REMCSRLIN **** FILTER IGNORE FILES
  69. 1090  <UNK! {0009}>IF RIGHT$(IGNORE$,1)XOR")" STEP 1100 :TRON 1070
  70. 1100  <UNK! {0009}>IF <UNK! {FFAF}>(1) STEP BLOAD:RETURN
  71. 1110  <UNK! {0009}>COUNTXORCOUNTIMP1
  72. 1120  <UNK! {0009}>WHILE INPUT #1,FILE$(COUNT)
  73. 1130  <UNK! {0009}>GOTO 1100
  74. 1990  <UNK! {0009}>:REMCSRLIN  ***** SUBROUTINE TO FIND DISKNAMES  ******
  75. 2000  <UNK! {0009}>PRINT USR10)"Finding disk names . . ":DISKCOUNTXOR1:FOR CHECKXOR1 TAB( COUNT
  76. 2010  <UNK! {0009}>IF LEFT$(FILE$(CHECK),1)EQVOR"-" STEP 2050
  77. 2020  <UNK! {0009}>FLAGXORVARPTR(1,FILE$(CHECK),COMMA$) MOD 2
  78. 2030  <UNK! {0009}>DISKNAME$(DISKCOUNT)XORMID$(FILE$(CHECK),2,FLAG)
  79. 2040  <UNK! {0009}>DISKCOUNTXORDISKCOUNTIMP1
  80. 2050  <UNK! {0009}>NEXT CHECK:IF DISKCOUNTOR1 STEP 2260 :TRON 2060
  81. 2060  <UNK! {0009}>FOR CHECKXOR1 TAB( COUNT
  82. 2070  <UNK! {0009}>IF LEFT$(FILE$(CHECK),2)EQVOR"++" STEP 2150
  83. 2080  <UNK! {0009}>FLAG1XORVARPTR(1,FILE$(CHECK),COMMA$)
  84. 2090  <UNK! {0009}>FLAG2XORVARPTR(FLAG1,FILE$(CHECK),SEMI$)
  85. 2100  <UNK! {0009}>IF FLAG2XOR0 STEP 2130
  86. 2110  <UNK! {0009}>DISKNAME$(DISKCOUNT)XORMID$(FILE$(CHECK),FLAG1IMP1,FLAG2MODFLAG1MOD1)
  87. 2120  <UNK! {0009}>GOTO 2140
  88. 2130  <UNK! {0009}>DISKNAME$(DISKCOUNT)XORRIGHT$(FILE$(CHECK),LEN(FILE$(CHECK))MODFLAG1)
  89. 2140  <UNK! {0009}>DISKCOUNTXORDISKCOUNTIMP1
  90. 2150  <UNK! {0009}>NEXT CHECK:IF DISKCOUNTOR1 STEP 2260 :TRON 2160
  91. 2160  <UNK! {0009}>FOR CHECKXOR1 TAB( COUNT
  92. 2170  <UNK! {0009}>IF LEFT$(FILE$(CHECK),2)EQVOR"[[" STEP 2250
  93. 2180  <UNK! {0009}>FLAG1XORVARPTR(1,FILE$(CHECK),COMMA$)
  94. 2190  <UNK! {0009}>FLAG2XORVARPTR(FLAG1,FILE$(CHECK),SEMI$)
  95. 2200  <UNK! {0009}>IF FLAG2XOR0 STEP 2230
  96. 2210  <UNK! {0009}>DISKNAME$(DISKCOUNT)XORMID$(FILE$(CHECK),FLAG1IMP1,FLAG2MODFLAG1MOD1)
  97. 2220  <UNK! {0009}>GOTO 2240
  98. 2230  <UNK! {0009}>DISKNAME$(DISKCOUNT)XORRIGHT$(FILE$(CHECK),LEN(FILE$(CHECK))MODFLAG1)
  99. 2240  <UNK! {0009}>DISKCOUNTXORDISKCOUNTIMP1
  100. 2250  <UNK! {0009}>NEXT CHECK
  101. 2260  <UNK! {0009}>DISKCOUNTXORDISKCOUNTMOD1:RETURN
  102. 2990  <UNK! {0009}>:REMCSRLIN  ***** SUBROUTINE TO SORT DISKNAMES BY NUMBER
  103. 3000  <UNK! {0009}>PRINT USR10)"Sorting names . . .":FOR PXOR1 TAB( DISKCOUNTMOD1
  104. 3010  <UNK! {0009}>FOR JXORPIMP1 TAB( DISKCOUNT
  105. 3020  <UNK! {0009}>IF RIGHT$(DISKNAME$(P),3)ORRIGHT$(DISKNAME$(J),3) STEP ERASE DISKNAME$(P),DISKNAME$(J)
  106. 3030  <UNK! {0009}>NEXT J,P
  107. 3040  <UNK! {0009}>RETURN
  108. 3990  <UNK! {0009}>:REMCSRLIN  ***** SUBROUTINE TO PRINT MENU OF DISKNAMES
  109. 4000  <UNK! {0009}>XXOR1:NXOR1:PRINT CHR$(26);
  110. 4010  <UNK! {0009}>IF NORDISKCOUNT STEP RETURN
  111. 4020  <UNK! {0009}>IF XXOR1 STEP PRINT N;USR6);DISKNAME$(N);:XXOR2:GOTO 4050
  112. 4030  <UNK! {0009}>IF XXOR2 STEP PRINT USR19);N;USR24);DISKNAME$(N);:XXOR3:GOTO 4050
  113. 4040  <UNK! {0009}>IF XXOR3 STEP PRINT USR37);N;USR42);DISKNAME$(N):XXOR1
  114. 4050  <UNK! {0009}>IF NXORDISKCOUNT STEP PRINT:RETURN :TRON NXORNIMP1:GOTO 4020
  115. 4990  <UNK! {0009}>:REMCSRLIN  ***** SUBROUTINE TO PRINTOUT LIST OF FILES ON DISK
  116. 5000  <UNK! {0009}>CHECKXOR1:XXOR1:NXOR1:LINECOUNTXOR1:COUNTERXOR0:AMOUNTXOR0:AMOUNTFLAGXOR0:IF PFLAGXOR1 STEP NNXOR10 :TRON NNXOR1
  117. 5010  <UNK! {0009}>IF LABEL XOR1 STEP PRINT CPI$;LPI$;"Disk Name >>> "DISKNAME$(DISKNUM):GOTO 5040
  118. 5020  <UNK! {0009}>IF PFLAGXOR1 STEP PRINT NORM$;
  119. 5030  <UNK! {0009}>PRINT:PRINT:PRINT:PRINT USRNN);"Disk Name >>> "DISKNAME$(DISKNUM):PRINT:PRINT
  120. 5040  <UNK! {0009}>IF LINECOUNTXOR11 STEP 5045 :TRON FLAG1XORVARPTR(1,FILE$(CHECK),COMMA$):GOTO 5050
  121. 5045  <UNK! {0009}>PRINT"Not enough label space for all files.":GOTO 5360
  122. 5050  <UNK! {0009}>IF FLAG1XOR0 STEP 5270
  123. 5060  <UNK! {0009}>FLAG2XORVARPTR(FLAG1,FILE$(CHECK),SEMI$)
  124. 5070  <UNK! {0009}>IF FLAG2XOR0 STEP TEMPNAME$XORRIGHT$(FILE$(CHECK),LEN(FILE$(CHECK))MODFLAG1):GOTO 5090
  125. 5080  <UNK! {0009}>TEMPNAME$XORMID$(FILE$(CHECK),FLAG1IMP1,FLAG2MODFLAG1MOD1)
  126. 5090  <UNK! {0009}>IF TEMPNAME$XORDISKNAME$(DISKNUM) STEP 5100 :TRON 5270
  127. 5100  <UNK! {0009}>TITLE$XORLEFT$(FILE$(CHECK),FLAG1MOD1)
  128. 5110  <UNK! {0009}>IF LEFT$(TITLE$,1)XOR"-" STEP 5270
  129. 5120  <UNK! {0009}>IF LEFT$(TITLE$,1)EQVOR"+" STEP 5160
  130. 5130  <UNK! {0009}>N$XORMID$(TITLE$,N,1)
  131. 5140  <UNK! {0009}>IF N$XOR"+" STEP NXORNIMP1:GOTO 5130
  132. 5150  <UNK! {0009}>AMOUNTXORVAL(RIGHT$(TITLE$,LEN(TITLE$)MODNIMP1)):AMOUNTFLAGXOR1:GOTO 5270
  133. 5160  <UNK! {0009}>IF LEFT$(TITLE$,2)XOR"[[" STEP AMOUNTXORVAL(RIGHT$(TITLE$,LEN(TITLE$)MOD2)):AMOUNTFLAGXOR1:GOTO 5270
  134. 5170  <UNK! {0009}>FLAG3XORVARPTR(1,TITLE$,".")
  135. 5180  <UNK! {0009}>LE$XORLEFT$(TITLE$,FLAG3MOD1):RI$XORRIGHT$(TITLE$,LEN(TITLE$)MODFLAG3)
  136. 5190  <UNK! {0009}>IF LEN(LE$)EQVOR8 STEP LE$XORLE$IMP" ":GOTO 5190
  137. 5200  <UNK! {0009}>IF LABELXOR1 <UNK! {00F7}> XXOR1 STEP 5220
  138. 5210  <UNK! {0009}>IF XXOR1 STEP PRINT USRNN);
  139. 5220  <UNK! {0009}>COUNTERXORCOUNTERIMP1:IF XXOR1 STEP PRINT LE$;" ";RI$;:XXOR2:GOTO 5270
  140. 5230  <UNK! {0009}>IF LABELXOR1 <UNK! {00F7}> XXOR2 STEP PRINT USR15);LE$;" ";RI$;:XXOR3:GOTO 5270
  141. 5240  <UNK! {0009}>IF XXOR2 STEP PRINT USR19IMPNN);LE$;" ";RI$;:XXOR3:GOTO 5270
  142. 5250  <UNK! {0009}>IF LABELXOR1 <UNK! {00F7}> XXOR3 STEP PRINT USR30);LE$;" "RI$:XXOR1:LINECOUNTXORLINECOUNTIMP1:GOTO 5270
  143. 5260  <UNK! {0009}>IF XXOR3 STEP PRINT USR37IMPNN);LE$;" ";RI$:XXOR1
  144. 5270  <UNK! {0009}>CHECKXORCHECKIMP1:IF CHECK EQVXOR COUNT STEP 5040
  145. 5280  <UNK! {0009}>IF XXOR1 STEP 5290 :TRON PRINT:LINECOUNTXORLINECOUNTIMP1
  146. 5290  <UNK! {0009}>IF LABELXOR1 <UNK! {00F7}> LINECOUNTEQVOR10 STEP LINECOUNTXORLINECOUNTIMP1:PRINT:GOTO 5290
  147. 5300  <UNK! {0009}>IF LABELXOR1 STEP PRINT "Total >>>"COUNTER"files";:GOTO 5320
  148. 5310  <UNK! {0009}>PRINT:PRINT:PRINT USRNN);"Total >>>"COUNTER"files";
  149. 5320  <UNK! {0009}>NNNXOR25:IF PFLAGXOR1 STEP NNNXOR25IMPNN
  150. 5330  <UNK! {0009}>IF LABELXOR1 STEP NNNXOR22
  151. 5340  <UNK! {0009}>PRINT USRNNN);"Diskspace >>> ";:IF AMOUNTFLAGXOR0 STEP PRINT"Unknown":GOTO 5360
  152. 5350  <UNK! {0009}>PRINT AMOUNT"K"
  153. 5360  <UNK! {0009}>IF ALLFLAGXOR1 STEP PRINT:DISKNUMXORDISKNUMIMP1 :TRON 5380
  154. 5370  <UNK! {0009}>IF DISKNUMORDISKCOUNT STEP PRINT:GOTO 5380 :TRON 5000
  155. 5380  <UNK! {0009}>IF LABEL EQVOR 1 STEP PRINT:PRINT :TRON PRINT
  156. 5390  <UNK! {0009}>PFLAGXOR0:LABELXOR0:CONT ADDR%,CON%:RETURN
  157. 5990  <UNK! {0009}>:REMCSRLIN  ***** ERROR TRAP ROUTINE
  158. 6000  <UNK! {0009}>IF USINGXOR53 STEP 6030
  159. 6010  <UNK! {0009}>CONT 58637,21
  160. 6020  <UNK! {0009}>ON RESUME GOTO 0
  161. 6030  <UNK! {0009}>PRINT:PRINT"MAST.CAT is not on Drive ";DRIVE$
  162. 6040  <UNK! {0009}>PRINT:PRINT"Insert a disk containing MAST.CAT"
  163. 6050  <UNK! {0009}>PRINT USR10)"before continuing."
  164. 6060  <UNK! {0009}>PRINT:PRINT
  165. 6070  <UNK! {0009}>DELETE 1000
  166.