10 REM" ****************** 20 REM" *** MENU *** 30 REM" *** By M.Usher *** 40 REM" *** ( c ) 1986 *** 50 REM" *** BBC B/B+/M *** 60 REM" ****************** 70 80 MODE 1 90 PROC_init 100 PROC_setcolours 110 PROC_setscreen 120 PROC_wording 130 PROC_select 140 150 END 160 170 REM" *** PROCEDURES *** 180 190 DEF PROC_drawwin(A%,B%,C%,D%,E%) 200 VDU 24,A%-8;B%-4;C%+8;D%+4;18,0,128,16,24,A%;B%;C%;D%;18;E%+128,16 210 ENDPROC 220 230 DEF PROC_boxpar(A%,B%,C%,D%,FC%) 240 PROC_drawwin(A%,B%,C%,D%,0) 250 PROC_drawwin(A%+16,B%+16,C%+16,D%+16,FC%) 260 ENDPROC 270 280 DEF PROC_init 290 READ amount 300 DIM prog$(amount,2) 310 FOR X=1 TO 13 320 READ A$,B$,C$ 330 prog$(X,0)=A$ 340 prog$(X,1)=B$ 350 prog$(X,2)=C$ 360 NEXT X 370 *FX4 1 380 VDU 23,1,0;0;0;0; 390 VDU 23,226,0,32,112,168,32,32,0,0 400 VDU 23,227,0,0,32,32,168,112,32,0 410 ENDPROC 420 430 DEF PROC_setcolours 440 READ col1,col2,col3 450 VDU19,1,col1;0;19,2,col2;0;19,3,col3;0; 460 ENDPROC 470 480 DEF PROC_setscreen 490 COLOUR 130:CLS 500 FOR LOOP=1 TO 3 510 READ L%,T%,R%,B%,FC% 520 PROC_boxpar(L%,T%,R%,B%,FC%) 530 NEXT LOOP 540 COLOUR 129:COLOUR 3 550 ENDPROC 560 570 DEF PROC_wording 580 READ A$ 590 PROC_double(A$,2) 600 COLOUR 0:COLOUR 130 610 COLOUR 131:COLOUR 0 620 FOR I%=0 TO amount 630 PRINTTAB(4,8+I%)prog$(I%,0); 640 NEXT I% 650 COLOUR 129:COLOUR 0 660 READ A$ 670 PRINTTAB(8,26)A$; 680 READ A$ 690 PRINTTAB(9,28)A$; 700 COLOUR 2 710 PRINTTAB(13,26);CHR$(226) 720 PRINTTAB(19,26);CHR$(227) 730 PRINTTAB(19,28)"< RETURN >" 740 ENDPROC 750 760 DEF PROC_select 770 COLOUR 131:COLOUR 1 780 Y%=9:X%=2 790 REPEAT 800 up%=FALSE:down%=FALSE 810 VDU 31,X%,Y%,62,32 820 COLOUR 1:PRINTprog$(Y%-8,0) 830 a$=GET$ 840 IF a$=CHR$&D Y%=Y%-8:GOTO 1060 850 IF a$=CHR$&8B AND Y%>9 up%=TRUE 860 IF a$=CHR$&8A AND Y%<8+amount down%=TRUE 870 IF up% OR down% VDU 31,X%,Y%,32,32:COLOUR 0:PRINTprog$(Y%-8,0) 880 IF down% Y%=Y%+1 890 IF up% Y%=Y%-1 900 UNTIL FALSE 910 ENDPROC 920 930 DEF PROC_double(word$,pos) 940 A%=&A:X%=&70:Y%=0 950 PRINTTAB(20-LENword$/2,pos); 960 FOR loop%=1 TO LENword$ 970 ?X%=ASCMID$(word$,loop%) 980 CALL &FFF1 990 VDU 23,224,X%?1,X%!1;X%!2;X%!3;X%?4,23,225,X%?5,X%!5;X%!6;X%!7;X%?8 1000 VDU 224,8,10,225,11 1010 NEXT loop% 1020 ENDPROC 1030 1040 REM" *** PROGRAM LOADER *** 1050 1060 name$=prog$(Y%,2) 1070 COLOUR 129:COLOUR 3 1080 VDU 28,6,28,32,26,12 1090 PRINT"Loading." 1100 IF prog$(Y%,1)="M/C" GOTO 1130 1110 IF prog$(Y%,1)="BAS" GOTO 1150 1120 1130 REM *** LOAD M/C FILE *** 1140 *RUN name$ 1150 REM *** LOAD BASIC FILE *** 1160 CHAIN name$ 1170 1180 REM" *** DATA *** 1190 1200 DATA 13 1210 DATA "PROGRAM ONE","BAS","NAME" 1220 DATA "PROGRAM TWO","BAS","NAME" 1230 DATA "PROGRAM THREE","M/C","NAME" 1240 DATA "PROGRAM FOUR","BAS","NAME" 1250 DATA "PROGRAM FIVE","M/C","NAME" 1260 DATA "PROGRAM SIX","M/C","NAME" 1270 DATA "PROGRAM SEVEN","M/C","NAME" 1280 DATA "PROGRAM EIGHT","BAS","NAME" 1290 DATA "PROGRAM NINE","BAS","NAME" 1300 DATA "PROGRAM TEN","M/C","NAME" 1310 DATA "PROGRAM ELEVEN","BAS","NAME" 1320 DATA "PROGRAM TWELVE","BAS","NAME" 1330 DATA "PROGRAM THIRTEEN","M/C","NAME" 1340 DATA 1,4,7 1350 DATA 175,70,1050,200,1 1360 DATA 50,275,1200,750,3 1370 DATA 175,825,1050,975,1 1380 DATA "T I T L E" 1390 DATA " USE AND TO SELECT" 1400 DATA " AND THEN "