10 ONERRORPROCerror 20 REM******** 30 MODE7 40 CLEAR 50 PROCinit 60 ONERRORPROCerror 70 REPEAT 80 MODE7 90 PROCtitle 100 RESTORE460 110 FORZ%=1TO5 120 READZ$ 130 PRINTTAB(5,Z%+7);Z%"."Z$ 140 NEXT 150 REPEAT 160 PROCcol(5,Z%+8,"Enter menu option:") 170 H%=(GET-48) 180 IFH%=5THENCLS:END 190 UNTILH%>0ANDH%1ANDN%<1001 260 Z%=RND(-799) 270 FORZ%=1TON% 280 D%(Z%)=INT(100*RND(1)+100) 290 NEXT 300 PROCprint("Unsorted") 310 PRINT''"List being sorted:" 320 TIME=0 330 IFH%=1THENPROCbubble 340 IFH%=2THENPROCbubblef 350 IFH%=3THENPROCinsertion 360 IFH%=4THENPROCshell 370 T=TIME 380 PROCprint("Sorted") 390 @%=&20209 400 PRINT''"Time taken ";T/100;" seconds" 410 @%=&00008 420 PRINT'' 430 PROCspace 440 UNTILH%=5 450 END 460 DATABubble,Bubble flagged,Insertion,Shell,Quit 470 : 480 DEFPROCinit 490 REM*FX229,1 500 *TV255 510 DIMD%(1000),C%(1000,1) 520 N%=0:T%=0:U%=0:V%=0:W%=0:X%=0:Y%=0:Z%=0 530 @%=&00008 540 ENDPROC 550 : 560 DEFPROCcol(X%,Y%,C$) 570 PRINTTAB(0,Y%)SPC(40) 580 PRINTTAB(0,Y%)CHR$130CHR$157CHR$133TAB(X%,Y%)C$; 590 ENDPROC 600 : 610 DEFPROCtitle 620 PRINTTAB(0,0)CHR$146" <"STRING$(34,",")"4":FORZ%=1TO2:PRINTCHR$146CHR$141TAB(2,Z%)"5"CHR$133TAB(7,Z%)" Public Domain Software"TAB(36,Z%)CHR$146"5":NEXT 630 PRINTTAB(0,3)CHR$146" 5"CHR$133TAB(10,3)"Sorting Algorithms"TAB(36,3)CHR$146"5":PRINTTAB(0,4)CHR$146" 5"TAB(37)"5":PRINTTAB(0,5)CHR$146" 5"CHR$133TAB(8)"Copywrite James Dallas"TAB(36)CHR$146"5" 640 PRINTTAB(0,6)CHR$146" -"STRING$(34,",")"%" 650 ENDPROC 660 : 670 DEFPROCbubble 680 FORU%=1TON%-1 690 FORV%=1TON%-U% 700 IFD%(V%)<=D%(V%+1)THENGOTO740 710 T%=D%(V%) 720 D%(V%)=D%(V%+1) 730 D%(V%+1)=T% 740 NEXT 750 NEXT 760 ENDPROC 770 : 780 DEFPROCbubblef 790 FORU%=1TON%-1 800 F%=0 810 FORV%=1TON%-U% 820 IFD%(V%)<=D%(V%+1)THEN870 830 F%=1 840 T%=D%(V%) 850 D%(V%)=D%(V%+1) 860 D%(V%+1)=T% 870 NEXT 880 IFF%=0THENENDPROC 890 NEXT 900 ENDPROC 910 : 920 DEFPROCinsertion 930 FORU%=1TON%-1 940 V%=U% 950 T%=D%(U%+1) 960 IFT%>=D%(V%)THEN1000 970 D%(V%+1)=D%(V%) 980 V%=V%-1 990 IFV%>=1THEN960 1000 D%(V%+1)=T% 1010 NEXT 1020 T=TIME 1030 ENDPROC 1040 : 1050 DEFPROCshell 1060 Z%=N% 1070 REPEAT 1080 Z%=INT(Z%/2) 1090 FORU%=1TOZ% 1100 FORV%=U%TON%-Z%STEPU% 1110 W%=V% 1120 T%=D%(V%+Z%) 1130 IFT%>=D%(W%)THEN1170 1140 D%(W%+Z%)=D%(W%) 1150 W%=W%-Z% 1160 IFW%>=1THEN1130 1170 D%(W%+Z%)=T% 1180 NEXT 1190 NEXT 1200 UNTILZ%<1 1210 ENDPROC 1220 : 1230 DEFPROCprint(T$) 1240 PRINT''T$" list:"' 1250 FORZ%=1TON% 1260 PRINTD%(Z%); 1270 NEXTZ% 1280 ENDPROC 1290 : 1300 DEFPROCspace 1310 VDU23,1,0;0;0;0; 1320 PROCcol(5,22,"Press to continue") 1330 REPEATUNTILINKEY(-99) 1340 *FX21,0 1350 VDU23,1,1;0;0;0; 1360 ENDPROC 1370 : 1380 DEFPROCerror 1390 Z$="":Y$="" 1400 X$="User error: " 1410 IFERR=&9 THENZ$="You have only put in one "+"""" 1420 IFERR=&B THENZ$="Sorry there is not enough room to run the program on this computer. Please return to your suppliers who will reimbourse you":END 1430 IFERR=&11 THENZ$="You have pressed the ESCAPE button." 1440 IFERR=&13 THENZ$="The maximum length of an entry is 255 characters" 1450 IFERR=&19 THENZ$="There is not enough room to enter the eighty column mode. Please delete some of your entries" 1460 PROCe1(X$,Z$,Y$) 1470 ENDPROC 1480 DEFPROCe1(X$,Z$,Y$) 1490 CLS 1500 PROCcol(5,0,"Error") 1510 IFLEN(Z$)<2THENX$="Unexpected error: " 1520 PRINT''X$' 1530 IFLEN(Z$)<2THENREPORT:PRINT" at line ";ERL 1540 IFLEN(Z$)>2THENPROCwrap(Z$):PROCwrap(Y$) 1550 PROCspace 1560 ENDPROC 1570 : 1580 DEFPROCwrap(Z$) 1590 S%=1:R%=40:REPEAT 1600 B$=MID$(Z$,S%,40):Z%=0:REPEAT 1610 Z%=Z%+1:C$=MID$(B$,Z%,1) 1620 UNTILASC(C$)=-1ORZ%=40 1630 IF ASC(C$)=-1 OR ASC(C$)=32 PRINT B$:R%=40 ELSE PROCw1 1640 S%=S%+R%:UNTIL ASC(C$)=-1:ENDPROC 1650 DEFPROCw1 1660 W%=0:REPEAT:W%=W%+1 1670 W$=RIGHT$(B$,W%):UNTILASC(W$)=32 1680 R%=41-W%:B$=MID$(Z$,S%,R%) 1690 PRINT B$:ENDPROC