home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Toolkit / 1581-DIR-SORT (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  7KB  |  232 lines

  1. 10 N$="ZZ":TR=18:SE=18:POKE53281,0:POKE53280,0:MX=297
  2. 11 INPUT"[147]WHAT DEVICE # ";DV
  3. 12 IFFRE(0)=FRE(1)THENNR=214:NC=211:KB=198:POKE808,225:ML=828:ME=861:GOTO 15
  4. 13 FORI=1TO4:(null)I*2-1,CHR$(132+I):(null)I*2,CHR$(136+I):NEXT:RESTORE 1540
  5. 14 NR=235:NC=236:KB=208:POKE808,107:ML=2816:ME=2862:IFPEEK(215)THENSYS30643
  6. 15 GOSUB2000
  7. 20 GOTO470
  8. 30 POKENR,1:PRINT:PRINT"[159]ARE YOU SURE? (Y/N)"
  9. 40 POKEKB,0
  10. 50 GETK$:IFK$=""THEN50
  11. 60 POKEKB,0:RETURN
  12. 70 GOSUB100:POKENR,1:PRINT:PRINT"[159]*** WORKING ****    ":RETURN
  13. 80 POKENR,1:PRINT"[159]":PRINTMID$(M$,4,16):RETURN
  14. 90 M$="":POKENR,1:PRINT:PRINT"                              ":GOSUB120:RETURN
  15. 100 POKENR,RL+2:PRINT:PRINTTAB(CL*20);"[158]"MID$(N$(RL+(I+1)*CL+D-1),4,16)
  16. 110 RETURN
  17. 120 POKENR,R+2:PRINT:PRINTTAB(C*20);"[159]";MID$(N$(R+(I+1)*C+D-1),4,16)
  18. 130 RETURN
  19. 140 PRINT"[147][158]"HE$;
  20. 150 IFD>1THENPOKENC,21:PRINT" P = PRIOR SCREEN "
  21. 160 IFD=<N-40THENPOKENC,21:PRINT" N = NEXT SCREEN  "
  22. 170 I=INT((N-D-1)/2+.5):IFI>19THENI=19
  23. 180 GOSUB80:POKENR,3:PRINT"[158]"
  24. 190 FORX=DTOD+I
  25. 200 PRINTMID$(N$(X),4,16)",";
  26. 210 PRINTT$(ASC(N$(X))ANDNOT248);
  27. 220 IF(ASC(N$(X))AND64)=64THENPRINT"<";
  28. 230 IFASC(N$(X+I+1)+CHR$(0))=0THEN280
  29. 240 PRINTTAB(20);MID$(N$(X+I+1),4,16)",";
  30. 250 PRINTT$(ASC(N$(X+I+1))ANDNOT248);
  31. 260 IF(ASC(N$(X+I+1))AND64)=64THENPRINT"<";
  32. 270 PRINT
  33. 280 NEXT:IFR>I+1THENR=I+1
  34. 285 IFR<1THENR=1
  35. 290 GOSUB120:RETURN
  36. 300 GOSUB40:CL=C:RL=R
  37. 310 IFK$=CHR$(13)ORK$="[133]"ORK$="-"ORK$="*"ORK$=","ORK$=" "ORK$=""THENRETURN
  38. 313 IFK$="R"THENRETURN
  39. 315 IFK$="[136]"THENRETURN
  40. 317 IFK$="[134]"THENRETURN
  41. 320 IFK$=""THENR=1:C=0
  42. 330 IFK$=""ORK$="[157]"THENC=NOTCAND1
  43. 340 IFK$=""ORK$="[145]"THENR=(R+1+2*(K$>""))
  44. 350 IFC>N-1THENR=1:C=0
  45. 360 IFR>I+1THENR=1
  46. 370 IFR<1THENR=I+1
  47. 380 IFN$(R+(I+1)*C+D-1)=""THEN330
  48. 390 IF(CL<>C)OR(RL<>R)THENGOSUB100:GOSUB120
  49. 400 IFK$="P"ANDD>1THEND=D-40:GOSUB140
  50. 410 IFK$="N"ANDD=<N-40THEND=D+40:GOSUB140
  51. 420 GOTO300
  52. 430 POKENR,7:PRINT:PRINT"   [158]ARE YOU SURE? (Y/N)    "
  53. 440 GOSUB40:IFK$="Y"THEN1440
  54. 450 IFK$=""THEN440
  55. 460 RETURN
  56. 470 PRINT"[147][159][213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]
  57. 480 [153]"PEEK   SYS NEW DIRECTORY FILER OPEN  PEEK"
  58. 490 [153]"PEEK  MODIFIED BY PRICK SMITH PEEK"
  59. 500 [153]"PEEK SYSINSERT DISKETTE IN DRIVEOPEN PEEK"
  60. 510 [153]"MID$TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN(null)
  61. 520 FORX=1TO6:N$=N$+N$:NEXT
  62. 530 N$=MID$(N$,2):N$=N$+N$
  63. 540 FORX=MLTOME
  64. 550 READY:POKEX,Y:NEXT
  65. 560 FORX=1TO30:Z$=Z$+CHR$(0):NEXT
  66. 570 DIMN$(MX),S(37),T$(5):D=1:N=0:F=0:B=1:R=1:C=0
  67. 575 DIMB%(MX):IFML>828THENRESTORE 1524
  68. 590 T$(1)="S":T$(2)="P":T$(3)="U":T$(4)="R":T$(5)="C"
  69. 600 L1$=CHR$(130)+CHR$(18)+CHR$(18)+"----------------"+LEFT$(Z$,11)
  70. 605 L2$=CHR$(130)+CHR$(18)+CHR$(18)+"****************"+LEFT$(Z$,11)
  71. 610 PRINT"[213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"
  72. 620 PRINT"[194] [158]PRESS RETURN[146] TO CONTINUE[159] [194]"
  73. 630 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]"
  74. 640 GOSUB40:IFK$=""THENGOSUB430
  75. 650 POKENR,7:PRINT:PRINT"    [158]READING DISK NAME     "
  76. 652 OPEN15,DV,15,"UI":INPUT#15,E,E$,T,S
  77. 656 TY$=RIGHT$(E$,4):IFTY$="1581"THENTR=40:SE=39
  78. 658 FORX=0TO36:READY:S(X)=Y:NEXT:IFTY$="1541"ORTY$="1571"THENFORX=0TO17:READY:S(X)=Y:NEXT
  79. 659 IFTY$="V2.7"THENFORX=0TO36:S(X)=S(X)-2:NEXT:TR=39:SE=29
  80. 660 PRINT#15,"I0":OPEN1,DV,3,"$"
  81. 670 SYSML:INPUT#15,EN$,EM$:IFEN$="00"THEN710
  82. 680 POKENR,7:PRINT
  83. 690 PRINT"   [158]DISK READ ERROR # "EN$"  "
  84. 700 PRINT:GOTO1480
  85. 710 HE$=MID$(N$,143,16)+","+MID$(N$,161,2)
  86. 715 IFTY$="1581"THENHE$=MID$(N$,3,16)+","+MID$(N$,21,2)
  87. 717 IFTY$="V2.7"THENHE$=MID$(N$,5,16)+","+MID$(N$,23,2)
  88. 720 POKENR,3:PRINT:PRINT"   "HE$"    "
  89. 725 IFTY$="V2.7"THENSYSML:SYSML:SYSML:SYSML
  90. 730 POKENR,7:PRINT:PRINT"    READING ENTRY #"N"  "
  91. 740 SYSML:FORX=1TO254STEP32:Y=ASC(MID$(N$,X,1))AND127
  92. 750 IFY=0THEN770
  93. 760 N=N+1:N$(N)=MID$(N$,X,30)
  94. 770 POKENR,7:PRINT:POKENC,20:PRINTN
  95. 780 NEXT
  96. 790 IFST=0THEN730
  97. 800 PRINT"[145]    TOTAL ENTRIES ="
  98. 810 FORX=1TO1500:NEXT
  99. 820 CLOSE1
  100. 825 IFN=0THENPRINT"[147]":GOTO1410
  101. 830 M$="":GOSUB140
  102. 840 GOSUB300:F=R+(I+1)*C+D-1
  103. 850 IFK$="-"THENLN$=L1$:GOTO990
  104. 855 IFK$="*"THENLN$=L2$:GOTO990
  105. 860 IFK$=" "ANDN>1THEN1040
  106. 870 IFK$=","THEN1120
  107. 875 IFK$="R"THEN1600
  108. 880 IFK$=""THEN1190
  109. 890 IFK$="[133]"THEN1230
  110. 895 IFK$="[134]"THEN1700
  111. 897 IFK$="[136]"THENGOSUB2000:GOSUB140:GOTO840
  112. 900 M$=N$(F):GOSUB80
  113. 910 GOSUB300:T=R+(I+1)*C+D-1
  114. 920 IFF=T-1ORF=TTHENGOSUB90:GOTO840
  115. 930 GOSUB70
  116. 940 IFF>TTHENV=-1
  117. 950 IFF<TTHENV=1:T=T-1
  118. 960 N$(F)=N$(F+V):F=F+V:IFF<>TTHEN960
  119. 970 N$(T)=M$
  120. 980 GOTO830
  121. 990 IFN<MX-1THEN997
  122. 995 POKENR,1:PRINT:PRINT"[159]TOO MANY FILES":FORX=1TO2000:NEXT:GOSUB90:GOTO840
  123. 997 GOSUB70:B=0
  124. 1000 N=N+1:FORX=NTOF+1STEP-1
  125. 1010 N$(X)=N$(X-1):NEXT
  126. 1020 N$(F)=LN$
  127. 1030 GOTO830
  128. 1040 GOSUB30:IFK$<>"Y"THENGOSUB90:GOTO840
  129. 1050 GOSUB70:B=0
  130. 1060 N=N-1:FORX=FTON
  131. 1070 N$(X)=N$(X+1):NEXT
  132. 1080 N$(N+1)=""
  133. 1090 IFN<C+1THENC=0
  134. 1100 IFF=N+1THENR=R+(R>1)
  135. 1105 IFD>NTHEND=D-40
  136. 1110 GOTO830
  137. 1120 A=ASC(N$(F))
  138. 1130 IFA=130THENA=194:GOTO1150
  139. 1140 IFA=194THENA=130
  140. 1150 N$(F)=CHR$(A)+RIGHT$(N$(F),29)
  141. 1160 POKENR,RL+2:PRINT:PRINTTAB(CL*20+18);
  142. 1170 PRINT"[158]"CHR$(-60*(A=194));CHR$(-32*(A=130))
  143. 1180 GOTO840
  144. 1190 GOSUB100
  145. 1200 GOSUB30:IFK$="Y"THEN1410
  146. 1210 IFK$=""THEN1200
  147. 1220 GOSUB90:GOTO840
  148. 1230 GOSUB100:GOSUB30:IFK$<>"Y"THENGOSUB90:GOTO840
  149. 1240 POKENR,1:PRINT:PRINT"[159]WRITING DIRECTORY  "
  150. 1250 IFN/8=INT(N/8)THEN1270
  151. 1260 N=N+1:N$(N)=Z$:GOTO1250
  152. 1270 S=0:T=TR:S(N/8+.5)=255:N=1:OPEN2,DV,2,"#"
  153. 1280 IFS(S+1)=255THENT=0
  154. 1290 PRINT#15,"B-P";2;0
  155. 1300 PRINT#2,CHR$(T);CHR$(S(S+1));:P=2
  156. 1310 FORX=NTON+7:PRINT#15,"B-P";2;P
  157. 1320 PRINT#2,N$(X);:P=P+32:NEXT:N=X
  158. 1330 PRINT#15,"U2";2;0;TR;S(S):INPUT#15,EN$,EM$:IFEN$="00"THEN1370
  159. 1340 POKENR,1:PRINT
  160. 1350 PRINT"[159] DISK WRITE ERROR # "EN$
  161. 1360 FORT=1TO2000:NEXT:GOTO1440
  162. 1370 S=S+1:IFS(S)<>255GOTO1280
  163. 1380 IFBTHEN1410
  164. 1390 PRINT#2,CHR$(0);CHR$(255);Z$:PRINT#15,"U2";2;0;TR;SE
  165. 1400 POKENR,1:PRINT:PRINT"[159]VALIDATING BAM    ":PRINT#15,"V0"
  166. 1405 INPUT#15,E,E$,T,S:PRINTE;E$;T;S
  167. 1410 CLOSE2:PRINT#15,"I0":CLOSE15
  168. 1420 POKENR,1:PRINT:PRINT"[159]ANOTHER DISK? (Y/N)"
  169. 1430 GOSUB40:IFK$="Y"THENRUN
  170. 1440 PRINT"[147]":POKENR,7:PRINT
  171. 1450 PRINT"[159][213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"
  172. 1460 PRINT"[194]    [158]PROGRAM TERMINATED    [159][194]"
  173. 1470 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]"
  174. 1480 CLOSE1:CLOSE2:CLOSE15
  175. 1490 SYS65418
  176. 1495 END
  177. 1500 DATA 160,2,177,45,153,137,0,200,192,6,208,246,162
  178. 1510 DATA 1,32,198,255,32,228,255,164,142,145,140,200
  179. 1520 DATA 132,142,196,139,208,242,76,204,255
  180. 1524 DATA 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
  181. 1526 DATA 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
  182. 1530 DATA 1,4,7,10,13,16,2,5,8,11,14,17,3,6,9,12,15,18
  183. 1540 DATA 160,2,162,1,169,47,32,116,255,153,98,0,200,192,6,208
  184. 1550 DATA 241,162,1,32,198,255,32,228,255,164,103,162,101,142,185,2
  185. 1560 DATA 162,1,32,119,255,200,132,103,196,100,208,234,76,204,255
  186. 1600 NN$="":POKENR,1:PRINT:INPUT"[159]NEW NAME ";NN$:GOSUB90:IFNN$=""THEN830
  187. 1610 NN$=LEFT$(NN$,16):GOSUB70
  188. 1620 IFLEN(NN$)<16 THEN NN$=NN$+CHR$(160):GOTO1620
  189. 1630 DU=0:FORX=1TON:IFNN$=MID$(N$(X),4,16)THENDU=1:X=N
  190. 1640 NEXT:IFDU=0THEN1670
  191. 1650 POKENR,1:PRINT:PRINT"[159]DUPLICATE NAME "NN$:FORX=1TO2000:NEXT:GOTO830
  192. 1670 M$=N$(F):N$(F)=LEFT$(M$,3)+NN$+RIGHT$(M$,LEN(M$)-19):GOTO830
  193. 1700 POKENR,1:PRINT:PRINT"[159]TURN PRINTER ON - PRESS RETURN"
  194. 1710 GOSUB40:IFK$=""THENGOSUB90:GOTO840
  195. 1715 IFK$<>CHR$(13)THEN1710
  196. 1720 GOSUB90:OPEN4,4:IFST<>0THEN1700
  197. 1730 POKENR,1:PRINT:PRINT"[159]LINE UP PAPER AND PRESS RETURN"
  198. 1740 GOSUB40:IFK$=""THEN1790
  199. 1745 IFK$<>CHR$(13)THEN1740
  200. 1750 GOSUB90:GOSUB70:B%(0)=664:FORX=1TON
  201. 1752 B%(X)=ASC(MID$(N$(X),30,1))*256+ASC(MID$(N$(X),29,1)):B%(0)=B%(0)-B%(X)
  202. 1754 NEXT:PRINT#4,CHR$(15);CHR$(145);HE$;" ";N;"FILES";B%(0);"FREE":PRINT#4
  203. 1760 FORX=1TO30:X$="":FORY=1TO4
  204. 1765 W=(Y-1)*30+X:IFW>NTHEN1780
  205. 1767 W$=STR$(B%(W)):W$=RIGHT$(W$,LEN(W$)-1)
  206. 1769 IFLEN(W$)<4THENW$=W$+" ":GOTO1769
  207. 1770 X$=X$+W$+MID$(N$(W),4,16)
  208. 1780 NEXTY:PRINT#4,X$:NEXTX:PRINT#4
  209. 1790 CLOSE4:GOSUB90:GOTO840
  210. 2000 PRINT"[147][142] [159]";
  211. 2010 PRINT" [213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"
  212. 2020 PRINT" [194]      [158]DIRECTORY FILER COMMANDS[159]      [194]":GOSUB4010
  213. 2040 PRINT" [194]   [158]N     NEXT SCREEN OF FILES[159]       [194]"
  214. 2050 PRINT" [194]   [158]P     PREVIOUS SCREEN OF FILES[159]   [194]"
  215. 2055 PRINT" [194]   [158]*     INSERT ******* ABOVE FILE[159]  [194]"
  216. 2060 PRINT" [194]   [158]-     INSERT DIVIDER ABOVE FILE[159]  [194]"
  217. 2070 PRINT" [194]   [158]R     RENAME THIS FILE[159]           [194]"
  218. 2075 PRINT" [194]   [158],     LOCK/UNLOCK THIS FILE[159]      [194]":GOSUB4010
  219. 2080 PRINT" [194] [158]<CRSR>  MOVE CURSOR[159]                [194]"
  220. 2090 PRINT" [194] [158]<HOME>  MOVE CURSOR TO TOP[159]         [194]"
  221. 3000 PRINT" [194] [158]<STOP>  ABORT CURRENT DIRECTORY[159]    [194]":GOSUB4010
  222. 3020 PRINT" [194] [158]<RETN>  MOVE FILE/BEFORE THIS FILE[159] [194]":GOSUB4010
  223. 3030 PRINT" [194] [158]<SPACE> DELETE THIS FILE[159]           [194]":GOSUB4010
  224. 3035 PRINT" [194] [158]<F1>    REWRITE THE DIRECTORY[159]      [194]"
  225. 3040 PRINT" [194] [158]<F3>    PRINT FORMATTED DIRECTORY[159]  [194]"
  226. 3043 PRINT" [194] [158]<F7>    DISPLAY THIS HELP SCREEN  [146][159] [194]":GOSUB4010
  227. 3045 PRINT" [194]       [158]PRESS RETURN[146] TO CONTINUE[159]     [194]"
  228. 3050 PRINT" [202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]"
  229. 3090 GOSUB40:IFK$<>CHR$(13)THEN3090
  230. 4000 RETURN
  231. 4010 PRINT" [194]                                    [194]":RETURN
  232.