10 REM >SD3 20 REM by Steven Flintham 30 REM 40 REM Wednesday 12th May 1993 50 : 60 MODE 4 70 VDU 23;8202;0;0;0; 80 PROCdisable 90 PROCinit 100 REPEAT 110 choice%=FNmenu 120 UNTIL choice%=6 130 MODE 7 140 PROCenable 150 END 160 : 170 DEF PROCdisable 180 *FX229,1 190 *FX4,1 200 ENDPROC 210 : 220 DEF PROCenable 230 *FX229 240 *FX4 250 ENDPROC 260 : 270 DEF PROCinit 280 ON ERROR MODE 7:REPORT:PRINT " at line ";ERL:PROCenable:END 290 DIM block% 8 300 ENDPROC 310 : 320 DEF FNmenu 330 LOCAL choice%,key% 340 PROCtitle 350 PRINTTAB(3,4);"Option 1";TAB(36,4);"1" 360 PRINTTAB(3,5);"Option 2";TAB(36,5);"2" 370 PRINTTAB(3,6);"Option 3" 380 PRINTTAB(3,7);"Option 4";TAB(36,7);"4" 390 PRINTTAB(3,8);"Option 5" 400 PRINTTAB(3,9);"Quit this program";TAB(36,9);"Q" 410 PRINTTAB(0,11);"Use the cursor keys to move the bar and"'"press RETURN to select" 420 choice%=1 430 PROCdraw_bar(choice%,TRUE,0) 440 REPEAT 450 REPEAT 460 *FX21 470 key%=GET 480 UNTIL key%=138 OR key%=139 OR key%=13 OR INSTR("124Qq",CHR$(key%))<>0 490 IF key%=138 THEN IF choice%<6 THEN choice%=choice%+1:PROCdraw_bar(choice%,TRUE,32) 500 IF key%=139 THEN IF choice%>1 THEN choice%=choice%-1:PROCdraw_bar(choice%,FALSE,-32) 510 IF key%>=ASC("a") AND key%<=ASC("z") THEN key%=key%-32 520 IF key%=ASC("1") THEN PROCdraw_bar(choice%,TRUE,0):choice%=1:PROCdraw_bar(choice%,TRUE,0) 530 IF key%=ASC("2") THEN PROCdraw_bar(choice%,TRUE,0):choice%=2:PROCdraw_bar(choice%,TRUE,0) 540 IF key%=ASC("4") THEN PROCdraw_bar(choice%,TRUE,0):choice%=4:PROCdraw_bar(choice%,TRUE,0) 550 IF key%=ASC("Q") THEN PROCdraw_bar(choice%,TRUE,0):choice%=6:PROCdraw_bar(choice%,TRUE,0) 560 UNTIL key%=13 570 =choice% 580 : 590 DEF PROCdraw_bar(choice%,top_to_bottom%,offset%) 600 LOCAL start%,end%,temp%,y% 610 GCOL 4,1 620 start%=1020-((choice%+3)*32) 630 end%=(1020-((choice%+3)*32)-28) 640 IF NOT top_to_bottom% THEN temp%=start%:start%=end%:end%=temp% 650 FOR y%=start% TO end% STEP SGN(end%-start%)*4 660 MOVE 0,y% 670 DRAW 1276,y% 680 IF offset%<>0 THEN MOVE 0,y%+offset%:DRAW 1276,y%+offset%:PROCdelay(2) 690 NEXT 700 ENDPROC 710 : 720 DEF PROCdelay(delay%) 730 LOCAL time% 740 time%=TIME 750 REPEAT UNTIL TIME-time%>=delay% 760 ENDPROC 770 : 780 DEF PROCtitle 790 VDU 26,12 800 COLOUR 0:COLOUR 129 810 PROCdouble_height(" Menu demonstration ",10,0) 820 COLOUR 1:COLOUR 128 830 PRINTTAB(8,2);"(C) Steven Flintham 1993" 840 ENDPROC 850 : 860 DEF PROCdouble_height(text$,x%,y%) 870 LOCAL pos%,A%,X%,Y% 880 VDU 31,x%,y% 890 FOR pos%=1 TO LEN(text$) 900 block%?0=ASC(MID$(text$,pos%,1)) 910 A%=10 920 X%=block% MOD 256 930 Y%=block% DIV 256 940 CALL &FFF1 950 VDU 23,255,0,block%?1,block%?1,block%?2,block%?2,block%?3,block%?3,block%?4,255,8,10,23,255,block%?4,block%?5,block%?5,block%?6,block%?6,block%?7,block%?7,block%?8,255,11 960 REM VDU 23,255,block%?1,block%?1,block%?2,block%?2,block%?3,block%?3,block%?4,block%?4,255,8,10,23,255,block%?5,block%?5,block%?6,block%?6,block%?7,block%?7,block%?8,block%?8,255,11 970 NEXT 980 ENDPROC