home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Loadstar 17
/
017.d81
/
abc.sort
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-08-26
|
11KB
|
335 lines
10 REM *ABC SORT V2.8 IDEA BY R.G.GORE*
20 REM* RT. 1 BOX 315 / MEXIA TX *
30 REM* WRITTEN BY R.W. KOBER 8/1/85 *
40 PRINT"[147]":POKE53280,0:POKE53281,0
50 CLR:OPEN15,8,15
60 DIMAA$(1000):GOSUB1370:IFSFTHEN1020:REM SF=SET FLAG FOR MENU
70 :
80 :REM *********************
90 :REM * CREATE A NEW LIST *
100 REM *********************
110 :
120 K=K+1:IFK$="Y"ORZATHENK=I-AD
130 IFK>NTHEN190
140 R$ = ""
150 PRINTK;:INPUT" [191][157][157][157]";R$:IFR$="[191]"ORR$=""THENPRINT"[145][145]":GOTO150
160 IFR$="\"THEN1020
170 IFR$="END"THENFORP=KTON:AA$(P)="":NEXT:K=N+1:GOTO190
180 AA$(K)=R$:K=K+1:GOTO130
190 K=K-1:IFK>0THEN220
200 PRINT"[158] ** NO INPUT TO SORT ** [146][159]"
210 FORT=1TO1000:NEXT:GOTO1020
220 PRINT" [";K;"] [129]ITEMS HAVE NOW BEEN SORTED.":I=K+1
230 :
240 REM **************************
250 REM * SYS TO ML SORT ROUTINE *
260 REM **************************
270 SYS49152,N,AA$(1):REM N=NUMBER TO SORT - AA$(1)=NUMBER TO START SORT WITH
280 :
290 PRINT"[150] PRINT TO S[146][159]CREEN OR P[146][159]RINTER?"
300 GETS$:IFS$=""THEN300
310 IFS$="\"THEN1020
320 IFS$="P"THEN580
330 :
340 REM *******************
350 REM * PRINT TO SCREEN *
360 REM *******************
370 :
380 PRINT"[147]"TAB(20-LEN(L$)/2)L$:REM CENTERS LIST TITLE & 390 UNDERLINES IT
390 PRINTTAB(19-LEN(L$)/2);:FORLI=1TOLEN(L$)+2:PRINT"[184]";:NEXT:PRINT
400 FORJ=1TOK
410 PRINTTAB(4)J;TAB(7);AA$(J):CL=PEEK(214):QQ=0:REM 214 CONTAINS CURRENT LINE#
420 :
430 REM **************************
440 REM * STOP LISTING AT BOTTOM *
450 REM **************************
460 :
470 IFCL>20THENPRINT" [158] ANY KEY TO CONTINUE - \ = MENU [159]":QQ=1
480 IFQQTHENWAIT198,1:GETKK$:IFKK$="\"THEN1020
490 IFQQTHENPRINT"[147]"TAB(20-LEN(L$)/2)L$
500 IFQQTHENPRINTTAB(19-LEN(L$)/2);:FORLI=1TOLEN(L$)+2:PRINT"[184]";:NEXT:PRINT
510 POKE198,0:NEXT:PRINTTAB(11)"[158] ANY KEY FOR MENU [159]":WAIT198,1
520 POKE198,0:GOTO1020:REM 198 CONTAINS THE # OF CHARACTERS IN KEYBOARD BUFFER
530 :
540 REM *******************
550 REM * PRINTER ROUTINE *
560 REM *******************
570 :
580 GOSUB900:IFGMTHEN1000:REM GM=FLAG FOR GET MENU
590 REM *****************************
600 REM * LINES 590 TO 640 ARE FOR *
610 REM * PRINTERS OTHER THAN THE *
620 REM * COMMODORE 1525 OR MPS 801 *
630 REM *****************************
640 REM
650 PRINT#4,TAB(40-LEN(L$)/2);L$
660 PRINT#4:PRINT#4
670 PRINT#4:LI=4
680 FORJ=1TOK
690 PRINT#4,TAB(10);J;AA$(J)
700 PP=0:IFPEEK(653)=1THENPRINTTAB(5)" [158] PRINTING PAUSED [146] [145]":PP=1
710 IFPEEK(197)=48THENJ=K:PRINTTAB(5)" PRINTING ABORTED [146] ":GOTO740
720 IFPPTHENGOSUB950:GOTO700
730 IFLI=>60THENFORIL=1TO8:PRINT#4:NEXT:LI=0
740 LI=LI+1:NEXT
750 PRINT" ADVANCE PAGE (Y/N) [146]"
760 GETA$:IFA$="Y"THEN790
770 IFA$="N"THEN1000
780 GOTO760
790 FORAP=1TO65-LI:PRINT#4:NEXT:GOTO1000
800 REM **************************
810 REM * LINES 800 TO 840 DITTO *
820 REM * LINES 590 TO 640 ABOVE *
830 REM **************************
840 REM
850 :
860 REM *********************
870 REM * CHECK FOR PRINTER *
880 REM *********************
890 :
900 GM=0:PRINT"[147]":CLOSE4:OPEN4,4
910 PRINT#4:IFST AND128THEN960
920 PRINT"[147][158]"TAB(242)"SET PRINTER HEAD TO TOP OF PAGE, AND"
930 PRINTTAB(44)" PRESS COMMODORE KEY WHEM READY ":WAIT653,2
940 PRINT"[147][154] DATA TO PRINTER - STAND-BY"
950 PRINT" SHIFT TO PAUSE -- \ TO ABORT [145]":RETURN
960 PRINTTAB(248)"THE PRINTER IS NOT ON!"
970 PRINTTAB(240)TAB(249)"[151]\ TO ABORT PRINTING"
980 IFPEEK(197)=48THENGM=1:RETURN
990 GOTO910
1000 CLOSE4
1010 :
1020 PRINT"[147] ********"
1030 PRINT " * MENU *"
1040 PRINT " ********"
1050 :
1060 PRINTTAB(48)"[158]W[146][159]ORK WITH ANOTHER LIST":KK=K:K=0
1070 PRINTTAB(48)"[158]P[146][159]RINT SAME LIST AGAIN":AZ=0
1080 PRINTTAB(48)"[158]L[146][159]OAD AN EXISTING LIST":POKE2,0
1090 PRINTTAB(48)"[158]V[146][159]IEW FILE DIRECTORY"
1100 PRINTTAB(48)"[158]S[146][159]AVE LIST TO DISK"
1110 PRINTTAB(48)"[158]R[146][159]E-SORT LIST "
1120 PRINTTAB(48)"[158]A[146][159]DD TO LIST "
1130 PRINTTAB(48)"[158]E[146][159]DIT LIST"
1140 PRINTTAB(48)"[158]Q[146][159]UIT"
1150 PRINTTAB(43)"[150] ENTER '\' AT ANY PROMPT FOR MENU [159]"
1160 GETA$:IFA$=""THEN1160
1170 IFA$="3"THENK=1
1180 IFKTHENIFA$="4"THENSYS595:GOTO1310
1190 IFA$<>"3"ANDA$<>"4"THENK=0
1200 IFA$="W"THEN2780
1210 IFA$="P"THENK=I-1:GOTO290
1220 IFA$="L"THENPOKE2,1:GOTO2780
1230 IFA$="S"THEN1670
1240 IFA$="E"THEN2380
1250 IFA$="R"THENK=I:GOTO190
1260 IFA$="A"THENAZ=1:GOTO1990
1270 IFA$="V"THENSYS49600:GOTO1020
1280 IFA$<>"Q"THEN1160
1290 PRINTTAB(52)"[158] ARE YOU SURE? [159]":WAIT198,1:GETO$:IFO$="Y"THENCLOSE15
1300 IFO$="Y"THEN63000
1310 GOTO1020
1320 :
1330 REM ***************
1340 REM * WORK SCREEN *
1350 REM ***************
1360 :
1370 GOSUB2090:IFMETHEN1610
1380 PRINT"[147]"TAB(254)"[158] ABC SORT "
1390 IFPEEK(2)THENK$="Y":GOTO1510
1400 PRINTTAB(45)"[150]USE AN EXISTING LIST (Y/N) ?":SF=0:IFCSTHENRETURN
1410 PRINTTAB(240)TAB(242)"[151]'\' FOR THE MENU - 'L' FOR DIRECTORY[150]"
1420 PRINT""TAB(120):CS=0
1430 WAIT198,1:CS=1:PRINT"[147]":GOSUB1380:GETK$:IFK$="Y"THEN1510
1440 IFK$="L"THENSYS49600:CS=0:GOTO1380
1450 IFK$=CHR$(13)THENPRINT"[145][145][145]":GOTO1400
1460 IFK$="\"THEN1610
1470 IFK$<>"N"THENPOKE198,0:GOTO1430
1480 PRINT" - ALPHABETIZES BY FIRST ENTRY -":FLAG=1
1490 INPUT" MAXIMUM NUMBER TO ENTER [159] [191][157][157][157]";N$:N=VAL(N$):IFN$="\"THEN1610
1500 IFN=<0ORN>1000THENPRINT"[145][145][145][145]":GOTO1490
1510 Z$="THE NEW":IFK$="Y"THENZ$="EXISTING":FLAG=0
1520 TA$="":IFK$="Y"THENTA$=""
1530 PRINTTA$"[150] ENTER NAME OF "Z$" LIST [159]":INPUT" [191][157][157][157]";L$
1540 IFLEN(L$)>15THENPRINTTAB(43)"[158]NAME LENGTH LIMIT = 15 CHARACTERS[145][145]":GOTO1530
1550 IFL$="[191]"ORL$=""THENPRINT"[145][145][145][145]":GOTO1530
1560 IFL$="\"THEN1610
1570 IFK$="Y"THENPRINTTAB(40)"PLEASE WAIT..... THE LIST IS LOADING..":GOTO1890
1580 PRINT" ENTER 'END' TO COMPLETE THE LIST IF LESS THAN"N"ARE ENTERED.
1590 [153]"DEF":[142]
1600 [153]"DEF"
1610 SF[178]1:[142]
1620 :
1630 [143] ****************
1640 [143] * SAVE ROUTINE *
1650 [143] ****************
1660 :
1670 [153][163]42)"CLRUSE THE SAME NAME "[199](34)L$[199](34)"CLR (Y/N)?":O[178]0
1680 [161]O$:[139]O$[178]""[167]1680
1690 [139]O$[178]"\"[167]1020
1700 [139]O$[178]"Y"[167][153]"SYS WARNING!! WAITDEF THIS EXISTING FILE WILL BE ":O[178]34
1710 [139]O[167][153]" REPLACED! OKAY TO CONTINUE?? (Y/N)CLR"
1720 [139]O[167][146]198,1:[161]KK$:[139]KK$[179][177]"Y"[167]1020
1730 [139]O[167]1780
1740 [139]O$[179][177]"N"[167]1680
1750 [133]"FOR ENTER NEW NAME SINCMDCMDCMD";L$:[139]L$[178]"SIN"[176]L$[178]""[167][153]"ONONONON":[137]1750
1760 [139]L$[178]"\"[167]1020
1770 [139][195](L$)[177]15[167][153][163]42)"SYSNAME TOO LONG...15 CHARACTER LIMIT":[137]1750
1780 [153]" OKAY...SAVING "L$
1790 [152]15,"S0:"[170]"["[170]L$
1800 [160]1:[159]1,8,1,"["[170]L$[170]",U,W"
1810 [141]2660:[139]ER[167]1020
1820 [129]I[178]1[164]N:[152]1,AA$(I):[130]
1830 [160]1:[137]1020
1840 :
1850 [143] ****************
1860 [143] * LOAD ROUTINE *
1870 [143] ****************
1880 :
1890 [160]2:[159]2,8,2,"["[170]L$[170]",U,R":I[178]1
1900 [141]2660:[139]ER[167]1020
1910 [132]2,AA$(I):I[178]I[170]1:[139]ST[167]1930
1920 [137]1910
1930 [160]2
1940 :
1950 [143] **************************
1960 [143] * ADD MORE NAMES TO LIST *
1970 [143] **************************
1980 :
1990 [139]I[178]0[167]I[178]K[170]1
2000 [153]"SYS NUMBER OF NAMES IN FILE ="I[171]1:AD$[178]"":[139]AZ[167]ZA[178]1
2010 [133]"CONTADDITIONAL NUMBER TO ADD TO LIST 0CMDCMDCMD";AD$:[139]AD$[178]"\"[167]1020
2020 [153]:AD[178][197](AD$):N[178]I[170]AD[171]1:I[178]N[170]1:[139]AZ[167]120
2030 [142]
2040 :
2050 [143] ****************************
2060 [143] * CHECK MEMORY FOR ML DATA *
2070 [143] ****************************
2080 :
2090 [139][194](49161)[178]165[175][194](49162)[178]20[167]ME[178]0:[142]
2100 :
2110 [143] ****************
2120 [143] * TITLE SCREEN *
2130 [143] *******