10 PRINT" done." 20 ON ERROR CLOSE#0:CLEAR:GOTO 30 30 *DRIVE0 40 TIME=0:REPEATUNTILTIME>100 50 CLS:PROCclear 60 MODE7 70 *KEY15 0|M 80 *KEY14 1|M 90 OSCLI("LOAD !Screen") 100 PROCloadID 110 : 120 PRINTTAB(7,10);CHR$133;"Issue 15 Disc Magazine" 130 PRINTTAB(7,11);CHR$133;"Issue 15 Software Menu" 140 PRINTTAB(7,12);CHR$133;"Issue 15 Magazine Help" 150 PRINTTAB(7,13);CHR$133;"Sorting Article 709" 160 PRINTTAB(7,14);CHR$133;"** Messages for You **" 170 choice%=FNA(3,10,34,14) 180 IF choice%=1 THEN OSCLI("DRIVE2"):CHAIN"!Mag" 190 IF choice%=2 THEN PROCmenu 200 IF choice%=3 THEN MODE0:PRINT"Press CTRL and SHIFT to Pause"':OSCLI("TYPE :2.MagINS"):PRINT:PRINT"Output Complete PRESS RETURN":A=GET:OSCLI("DRIVE0"):CLEAR:GOTO40 210 IF choice%=5 THEN MODE0:PRINT"Press CTRL and SHIFT to Pause"'"PRESS RETURN to view message mailbox...":A=GET:PRINT:OSCLI("TYPE :2.Message"):PRINT:PRINT"Output Complete PRESS RETURN":A=GET:OSCLI("DRIVE0"):CLEAR:GOTO40 220 IF choice%=4 THEN CLS:PROCsort:CLEAR:GOTO 40 230 RUN 240 : 250 DEF PROCmenu 260 PROCclear 270 PRINTTAB(5,7);CHR$133;"64 Colour Screen Demo" 280 PRINTTAB(5,8);CHR$133;"NEW Address Book Prog" 290 PRINTTAB(5,9);CHR$133;"ADFS Sector Editor BASIC" 300 PRINTTAB(5,10);CHR$133;"Cassette Inlay Printer" 310 PRINTTAB(5,11);CHR$133;"Character Editor Program" 320 PRINTTAB(5,12);CHR$133;"STD Code SYSTEM DEMO" 330 PRINTTAB(5,13);CHR$133;"TV Tune/Sound DEMO" 340 PRINTTAB(5,14);CHR$133;"Multicolour Puzzle Game" 350 PRINTTAB(5,15);CHR$133;"Timelapsed Arcade Game" 360 PRINTTAB(5,16);CHR$133;"Locked Cassette Prog Loader" 370 PRINTTAB(5,17);CHR$133;"View to a Kill DEMO" 380 PRINTTAB(5,18);CHR$133;"RoboCop Game Graphics DEMO" 390 PRINTTAB(5,19);CHR$133;"Utility ROM - Master Only" 400 PRINTTAB(5,20);CHR$133;"Powermix Demonstration 722" 410 choice%=FNA(3,7,34,20) 420 IF choice%=1 THEN CHAIN"64COLS" 430 IF choice%=2 THEN CHAIN"ADDRESS" 440 IF choice%=3 THEN CHAIN"ADFSSEC" 450 IF choice%=4 THEN CHAIN"CASSINP" 460 IF choice%=5 THEN *CHARINE 470 IF choice%=6 THEN CLS:PRINT"Order CJR-03 from 8BS!!":END 480 IF choice%=7 THEN CHAIN"FUZRUN" 490 IF choice%=8 THEN CHAIN"MULCOLR" 500 IF choice%=9 THEN *TIMELAP 510 IF choice%=10 THEN CLS:CHAIN"UNLOCK" 520 IF choice%=11 THEN CHAIN"VIEW" 530 IF choice%=12 THEN OSCLI("DIR R"):OSCLI("DRIVE 2"):CHAIN"ROBO" 540 IF choice%=13 THEN PROCrom 550 IF choice%=14 THEN PROCstart 560 ENDPROC 570 : 580 DEFFNA(`%,a%,b%,c%):d%=(a%-1):*FX4,2 590 REPEATPRINTTAB(`%,a%);CHR$132;CHR$157;CHR$133;TAB((`%+b%),a%);CHR$156:*FX15 600 A$=GET$:e%=VALA$:IFA$=CHR$13GOTO650 610 IFe%=0THENe%=-1 620 IF(a%+e%)>c%PRINTTAB(`%,a%);SPC2:a%=(d%+1):GOTO650 630 IF(a%+e%)<(d%+1)PRINTTAB(`%,a%);SPC2:a%=c%:GOTO650 640 PRINTTAB(`%,a%);SPC2:a%=a%+e% 650 UNTILA$=CHR$13:*FX4,0 660 =(a%-d%) 670 DEFPROCA:*KEY14 1|M 680 *KEY15 0|M 690 *KEY12 0|M 700 *KEY13 1|M 710 ENDPROC 720 : 730 DEF PROCloadID 740 PRINTTAB(6,0);"";:TIME=0:REPEATUNTILTIME>50 750 X=OPENIN"8bsUser":IF X=0 THEN CLOSE#0:CLS:PRINT"User ID Invalid":PRINT:END 760 PTR#X=105 770 INPUT#X,Name$,User$,Issue$:CLOSE#X 780 PRINTTAB(5,0);CHR$135;User$;TAB(35,1);CHR$135;Issue$ 790 VDU23;8202;0;0;0; 800 ENDPROC 810 : 820 DEF PROCclear 830 FOR X=5 TO 22 STEP 1 840 PRINTTAB(3,X);SPC(34) 850 NEXT X 860 ENDPROC 870 : 880 DEF PROCrom 890 CLS:PRINT"FOR MASTER SERIES COMPUTERS ONLY"''"Hit a key to go on ...":A=GET 900 OSCLI("DRIVE 2") 910 *SRLOAD M.UtilROM 8000 ZQ 920 CLS:PRINT"ROM Image Loaded"':END 930 : 940 DEF PROCstart 950 CLS 960 VDU23;8202;0;0;0; 970 *DRIVE2 980 *LOAD PLAY 990 *DRIVE0 1000 *MEM 1010 : 1020 DEF PROCsort 1030 *DRIVE2 1040 VDU28,0,24,39,2 1050 X1%=?&308:X2%=?&30A 1060 Y1%=?&309:Y2%=?&30B 1070 C%=X2%-X1%:R%=Y1%-Y2%-1 1080 H$="Filename :" 1090 REPEAT:READfile$:PROCprint:UNTILfile$="END" 1100 CLS:PRINTTAB(10,10);"THE END.":A=GET:ENDPROC 1110 DEFPROCprint 1120 IF file$="END" ENDPROC 1130 PROCheader:PROCzap:CLS 1140 chan%=OPENIN(file$):len%=EXT#(chan%) 1150 PROCzip 1160 PROCmessprnt 1170 CLOSE#chan% 1180 PRINT'"";:REPEAT:A=GET:UNTILA=32 1190 ENDPROC 1200 DEFPROCmessprnt:E%=0:D%=0 1210 C$=" ":REPEAT 1220 B$="":REPEAT:B$=B$+C$:C$=CHR$(BGET#chan%) 1230 UNTIL(C$=" ")OR(C$=CHR$(&0D))OR(EOF#(chan%)) 1240 L%=LEN(B$) 1250 IF B$=CHR$(&0D) THEN PRINT:E%=E%+1:D%=0:GOTO1270 1260 IF (D%+L%)>C% PROCnewl ELSE PRINTB$;:D%=D%+L% 1270 UNTIL EOF#(chan%) 1280 ENDPROC 1290 DEFPROCnewl 1300 IF E%>R%-2:PRINT'"";:E%=0:REPEAT:A=GET:UNTILA=32:CLS:PRINTB$;:D%=L% ELSE PRINT'B$;:E%=E%+1:D%=L% 1310 ENDPROC 1320 DEFPROCheader:$&7C00=" ":$&7C00=(H$+""+file$):ENDPROC 1330 DEFPROCzap:FORZ%=1TO30 STEP 2:PROCctrc:NEXTZ%:ENDPROC 1340 DEFPROCzip:FORZ%=30 TO 0 STEP -2:PROCctrc:NEXTZ%:ENDPROC 1350 DEFPROCctrc 1360 VDU23;1,40-Z%;0;0;0; 1370 VDU23;2,51-(Z%/2);0;0;0; 1380 VDU23;6,25-(Z%*23/30);0;0;0; 1390 VDU23;7,26-(Z%/3);0;0;0; 1400 ENDPROC 1410 : 1420 DATAW.INTRO 1430 DATAW.FORMAT 1440 DATAW.SORTING 1450 DATAW.BUBBLE 1460 DATAW.SELECT 1470 DATAW.SHELL 1480 DATAW.COMPARE 1490 DATAEND