home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 17 / 017.d81 / abc.sort (.txt) < prev    next >
Commodore BASIC  |  2022-08-26  |  11KB  |  335 lines

  1. 10 REM *ABC SORT V2.8 IDEA BY R.G.GORE*
  2. 20 REM*   RT. 1  BOX 315 / MEXIA TX   *
  3. 30 REM*  WRITTEN BY R.W. KOBER 8/1/85 *
  4. 40 PRINT"[147]":POKE53280,0:POKE53281,0
  5. 50 CLR:OPEN15,8,15
  6. 60 DIMAA$(1000):GOSUB1370:IFSFTHEN1020:REM SF=SET FLAG FOR MENU
  7. 70 :
  8. 80 :REM   *********************
  9. 90 :REM   * CREATE A NEW LIST *
  10. 100 REM   *********************
  11. 110 :
  12. 120 K=K+1:IFK$="Y"ORZATHENK=I-AD
  13. 130 IFK>NTHEN190
  14. 140 R$ = ""
  15. 150 PRINTK;:INPUT" [191][157][157][157]";R$:IFR$="[191]"ORR$=""THENPRINT"[145][145]":GOTO150
  16. 160 IFR$="\"THEN1020
  17. 170 IFR$="END"THENFORP=KTON:AA$(P)="":NEXT:K=N+1:GOTO190
  18. 180 AA$(K)=R$:K=K+1:GOTO130
  19. 190 K=K-1:IFK>0THEN220
  20. 200 PRINT"[158]         ** NO INPUT TO SORT ** [146][159]"
  21. 210 FORT=1TO1000:NEXT:GOTO1020
  22. 220 PRINT" [";K;"] [129]ITEMS HAVE NOW BEEN SORTED.":I=K+1
  23. 230 :
  24. 240 REM **************************
  25. 250 REM * SYS TO ML SORT ROUTINE *
  26. 260 REM **************************
  27. 270 SYS49152,N,AA$(1):REM N=NUMBER TO SORT - AA$(1)=NUMBER TO START SORT WITH
  28. 280 :
  29. 290 PRINT"[150]    PRINT TO S[146][159]CREEN OR P[146][159]RINTER?"
  30. 300 GETS$:IFS$=""THEN300
  31. 310 IFS$="\"THEN1020
  32. 320 IFS$="P"THEN580
  33. 330 :
  34. 340 REM   *******************
  35. 350 REM   * PRINT TO SCREEN *
  36. 360 REM   *******************
  37. 370 :
  38. 380 PRINT"[147]"TAB(20-LEN(L$)/2)L$:REM CENTERS LIST TITLE & 390 UNDERLINES IT
  39. 390 PRINTTAB(19-LEN(L$)/2);:FORLI=1TOLEN(L$)+2:PRINT"[184]";:NEXT:PRINT
  40. 400 FORJ=1TOK
  41. 410 PRINTTAB(4)J;TAB(7);AA$(J):CL=PEEK(214):QQ=0:REM 214 CONTAINS CURRENT LINE#
  42. 420 :
  43. 430 REM **************************
  44. 440 REM * STOP LISTING AT BOTTOM *
  45. 450 REM **************************
  46. 460 :
  47. 470 IFCL>20THENPRINT"    [158] ANY KEY TO CONTINUE - \ = MENU [159]":QQ=1
  48. 480 IFQQTHENWAIT198,1:GETKK$:IFKK$="\"THEN1020
  49. 490 IFQQTHENPRINT"[147]"TAB(20-LEN(L$)/2)L$
  50. 500 IFQQTHENPRINTTAB(19-LEN(L$)/2);:FORLI=1TOLEN(L$)+2:PRINT"[184]";:NEXT:PRINT
  51. 510 POKE198,0:NEXT:PRINTTAB(11)"[158] ANY KEY FOR MENU [159]":WAIT198,1
  52. 520 POKE198,0:GOTO1020:REM 198 CONTAINS THE # OF CHARACTERS IN KEYBOARD BUFFER
  53. 530 :
  54. 540 REM    *******************
  55. 550 REM    * PRINTER ROUTINE *
  56. 560 REM    *******************
  57. 570 :
  58. 580 GOSUB900:IFGMTHEN1000:REM GM=FLAG FOR GET MENU
  59. 590 REM *****************************
  60. 600 REM * LINES 590 TO 640 ARE FOR  *
  61. 610 REM * PRINTERS OTHER THAN THE   *
  62. 620 REM * COMMODORE 1525 OR MPS 801 *
  63. 630 REM *****************************
  64. 640 REM
  65. 650 PRINT#4,TAB(40-LEN(L$)/2);L$
  66. 660 PRINT#4:PRINT#4
  67. 670 PRINT#4:LI=4
  68. 680 FORJ=1TOK
  69. 690 PRINT#4,TAB(10);J;AA$(J)
  70. 700 PP=0:IFPEEK(653)=1THENPRINTTAB(5)"      [158] PRINTING PAUSED [146]        [145]":PP=1
  71. 710 IFPEEK(197)=48THENJ=K:PRINTTAB(5)"       PRINTING ABORTED [146]      ":GOTO740
  72. 720 IFPPTHENGOSUB950:GOTO700
  73. 730 IFLI=>60THENFORIL=1TO8:PRINT#4:NEXT:LI=0
  74. 740 LI=LI+1:NEXT
  75. 750 PRINT"           ADVANCE PAGE (Y/N) [146]"
  76. 760 GETA$:IFA$="Y"THEN790
  77. 770 IFA$="N"THEN1000
  78. 780 GOTO760
  79. 790 FORAP=1TO65-LI:PRINT#4:NEXT:GOTO1000
  80. 800 REM **************************
  81. 810 REM * LINES 800 TO 840 DITTO *
  82. 820 REM * LINES 590 TO 640 ABOVE *
  83. 830 REM **************************
  84. 840 REM
  85. 850 :
  86. 860 REM    *********************
  87. 870 REM    * CHECK FOR PRINTER *
  88. 880 REM    *********************
  89. 890 :
  90. 900 GM=0:PRINT"[147]":CLOSE4:OPEN4,4
  91. 910 PRINT#4:IFST AND128THEN960
  92. 920 PRINT"[147][158]"TAB(242)"SET PRINTER HEAD TO TOP OF PAGE, AND"
  93. 930 PRINTTAB(44)" PRESS COMMODORE KEY WHEM READY ":WAIT653,2
  94. 940 PRINT"[147][154]       DATA TO PRINTER - STAND-BY"
  95. 950 PRINT"      SHIFT TO PAUSE -- \ TO ABORT [145]":RETURN
  96. 960 PRINTTAB(248)"THE PRINTER IS NOT ON!"
  97. 970 PRINTTAB(240)TAB(249)"[151]\ TO ABORT PRINTING"
  98. 980 IFPEEK(197)=48THENGM=1:RETURN
  99. 990 GOTO910
  100. 1000 CLOSE4
  101. 1010 :
  102. 1020 PRINT"[147]              ********"
  103. 1030 PRINT   "              * MENU *"
  104. 1040 PRINT   "              ********"
  105. 1050 :
  106. 1060 PRINTTAB(48)"[158]W[146][159]ORK WITH ANOTHER LIST":KK=K:K=0
  107. 1070 PRINTTAB(48)"[158]P[146][159]RINT SAME LIST AGAIN":AZ=0
  108. 1080 PRINTTAB(48)"[158]L[146][159]OAD AN EXISTING LIST":POKE2,0
  109. 1090 PRINTTAB(48)"[158]V[146][159]IEW FILE DIRECTORY"
  110. 1100 PRINTTAB(48)"[158]S[146][159]AVE LIST TO DISK"
  111. 1110 PRINTTAB(48)"[158]R[146][159]E-SORT LIST "
  112. 1120 PRINTTAB(48)"[158]A[146][159]DD TO LIST "
  113. 1130 PRINTTAB(48)"[158]E[146][159]DIT LIST"
  114. 1140 PRINTTAB(48)"[158]Q[146][159]UIT"
  115. 1150 PRINTTAB(43)"[150] ENTER '\' AT ANY PROMPT FOR MENU [159]"
  116. 1160 GETA$:IFA$=""THEN1160
  117. 1170 IFA$="3"THENK=1
  118. 1180 IFKTHENIFA$="4"THENSYS595:GOTO1310
  119. 1190 IFA$<>"3"ANDA$<>"4"THENK=0
  120. 1200 IFA$="W"THEN2780
  121. 1210 IFA$="P"THENK=I-1:GOTO290
  122. 1220 IFA$="L"THENPOKE2,1:GOTO2780
  123. 1230 IFA$="S"THEN1670
  124. 1240 IFA$="E"THEN2380
  125. 1250 IFA$="R"THENK=I:GOTO190
  126. 1260 IFA$="A"THENAZ=1:GOTO1990
  127. 1270 IFA$="V"THENSYS49600:GOTO1020
  128. 1280 IFA$<>"Q"THEN1160
  129. 1290 PRINTTAB(52)"[158] ARE YOU SURE? [159]":WAIT198,1:GETO$:IFO$="Y"THENCLOSE15
  130. 1300 IFO$="Y"THEN63000
  131. 1310 GOTO1020
  132. 1320 :
  133. 1330 REM    ***************
  134. 1340 REM    * WORK SCREEN *
  135. 1350 REM    ***************
  136. 1360 :
  137. 1370 GOSUB2090:IFMETHEN1610
  138. 1380 PRINT"[147]"TAB(254)"[158] ABC SORT "
  139. 1390 IFPEEK(2)THENK$="Y":GOTO1510
  140. 1400 PRINTTAB(45)"[150]USE AN EXISTING LIST (Y/N) ?":SF=0:IFCSTHENRETURN
  141. 1410 PRINTTAB(240)TAB(242)"[151]'\' FOR THE MENU - 'L' FOR DIRECTORY[150]"
  142. 1420 PRINT""TAB(120):CS=0
  143. 1430 WAIT198,1:CS=1:PRINT"[147]":GOSUB1380:GETK$:IFK$="Y"THEN1510
  144. 1440 IFK$="L"THENSYS49600:CS=0:GOTO1380
  145. 1450 IFK$=CHR$(13)THENPRINT"[145][145][145]":GOTO1400
  146. 1460 IFK$="\"THEN1610
  147. 1470 IFK$<>"N"THENPOKE198,0:GOTO1430
  148. 1480 PRINT"    - ALPHABETIZES BY FIRST ENTRY -":FLAG=1
  149. 1490 INPUT"     MAXIMUM NUMBER TO ENTER [159] [191][157][157][157]";N$:N=VAL(N$):IFN$="\"THEN1610
  150. 1500 IFN=<0ORN>1000THENPRINT"[145][145][145][145]":GOTO1490
  151. 1510 Z$="THE NEW":IFK$="Y"THENZ$="EXISTING":FLAG=0
  152. 1520 TA$="":IFK$="Y"THENTA$=""
  153. 1530 PRINTTA$"[150]     ENTER NAME OF "Z$" LIST   [159]":INPUT"          [191][157][157][157]";L$
  154. 1540 IFLEN(L$)>15THENPRINTTAB(43)"[158]NAME LENGTH LIMIT = 15 CHARACTERS[145][145]":GOTO1530
  155. 1550 IFL$="[191]"ORL$=""THENPRINT"[145][145][145][145]":GOTO1530
  156. 1560 IFL$="\"THEN1610
  157. 1570 IFK$="Y"THENPRINTTAB(40)"PLEASE WAIT..... THE LIST IS LOADING..":GOTO1890
  158. 1580 PRINT" ENTER 'END' TO COMPLETE THE LIST IF     LESS THAN"N"ARE ENTERED.
  159. 1590 [153]"DEF":[142]
  160. 1600 [153]"DEF"
  161. 1610 SF[178]1:[142]
  162. 1620 :
  163. 1630 [143]     ****************
  164. 1640 [143]     * SAVE ROUTINE *
  165. 1650 [143]     ****************
  166. 1660 :
  167. 1670 [153][163]42)"CLRUSE THE SAME NAME "[199](34)L$[199](34)"CLR (Y/N)?":O[178]0
  168. 1680 [161]O$:[139]O$[178]""[167]1680
  169. 1690 [139]O$[178]"\"[167]1020
  170. 1700 [139]O$[178]"Y"[167][153]"SYS WARNING!! WAITDEF THIS EXISTING FILE WILL BE ":O[178]34
  171. 1710 [139]O[167][153]" REPLACED!  OKAY TO CONTINUE?? (Y/N)CLR"
  172. 1720 [139]O[167][146]198,1:[161]KK$:[139]KK$[179][177]"Y"[167]1020
  173. 1730 [139]O[167]1780
  174. 1740 [139]O$[179][177]"N"[167]1680
  175. 1750 [133]"FOR  ENTER NEW NAME  SINCMDCMDCMD";L$:[139]L$[178]"SIN"[176]L$[178]""[167][153]"ONONONON":[137]1750
  176. 1760 [139]L$[178]"\"[167]1020
  177. 1770 [139][195](L$)[177]15[167][153][163]42)"SYSNAME TOO LONG...15 CHARACTER LIMIT":[137]1750
  178. 1780 [153]"  OKAY...SAVING "L$
  179. 1790 [152]15,"S0:"[170]"["[170]L$
  180. 1800 [160]1:[159]1,8,1,"["[170]L$[170]",U,W"
  181. 1810 [141]2660:[139]ER[167]1020
  182. 1820 [129]I[178]1[164]N:[152]1,AA$(I):[130]
  183. 1830 [160]1:[137]1020
  184. 1840 :
  185. 1850 [143]    ****************
  186. 1860 [143]    * LOAD ROUTINE *
  187. 1870 [143]    ****************
  188. 1880 :
  189. 1890 [160]2:[159]2,8,2,"["[170]L$[170]",U,R":I[178]1
  190. 1900 [141]2660:[139]ER[167]1020
  191. 1910 [132]2,AA$(I):I[178]I[170]1:[139]ST[167]1930
  192. 1920 [137]1910
  193. 1930 [160]2
  194. 1940 :
  195. 1950 [143]  **************************
  196. 1960 [143]  * ADD MORE NAMES TO LIST *
  197. 1970 [143]  **************************
  198. 1980 :
  199. 1990 [139]I[178]0[167]I[178]K[170]1
  200. 2000 [153]"SYS    NUMBER OF NAMES IN FILE ="I[171]1:AD$[178]"":[139]AZ[167]ZA[178]1
  201. 2010 [133]"CONTADDITIONAL NUMBER TO ADD TO LIST   0CMDCMDCMD";AD$:[139]AD$[178]"\"[167]1020
  202. 2020 [153]:AD[178][197](AD$):N[178]I[170]AD[171]1:I[178]N[170]1:[139]AZ[167]120
  203. 2030 [142]
  204. 2040 :
  205. 2050 [143]  ****************************
  206. 2060 [143]  * CHECK MEMORY FOR ML DATA *
  207. 2070 [143]  ****************************
  208. 2080 :
  209. 2090 [139][194](49161)[178]165[175][194](49162)[178]20[167]ME[178]0:[142]
  210. 2100 :
  211. 2110 [143]     ****************
  212. 2120 [143]     * TITLE SCREEN *
  213. 2130 [143]     *******