home *** CD-ROM | disk | FTP | other *** search
- 1 ' *******************************************
- 2 ' * *
- 3 ' * SAMPLE MENU SUBROUTINE (MENUSAMP.BAS) *
- 4 ' * *
- 5 ' * Written by Kraig J. Tolliver *
- 6 ' * *
- 7 ' * On 07-24-1988 *
- 8 ' * *
- 9 ' *******************************************
- 10 SCREEN 0,0,0:KEY OFF:WIDTH 80:COLOR ,,0
- 20 DIM TRIM$(19):' *** Modify to use a next page option to another Menu ***
- 30 AUTH$="Program written by Kraig J. Tolliver"
- 40 SB=9:TC=6:SC=2:HSC=5:'*** COLOR ***
- 50 'SB=7:TC=15:SC=5:HSC=15:'*** B/W ***
- 60 GOSUB 9000
- 70 ON PICK GOSUB 1000,2000,3000,4000,5000
- 80 GOTO 60
- 90 END
- 9000 TRIMSIZE=0
- 9010 TITLE$="Sample MENU"
- 9020 MENOPT$(1)="First Selection" :BD(1)=2
- 9030 MENOPT$(2)="Second Selection" :BD(2)=5
- 9040 MENOPT$(3)="Third Selection" :BD(3)=4
- 9050 MENOPT$(4)="Fourth Selection" :BD(4)=3
- 9060 MENOPT$(5)="Quit"
- 9070 LAST=5:AUTH=0:' *** Set AUTH=1 to by-pass author presentation ***
- 9080 FOR N=1 TO LAST
- 9090 IF LEN(MENOPT$(N))>TRIMSIZE THEN TRIMSIZE=LEN(MENOPT$(N))
- 9100 NEXT N
- 9110 TRIMSIZE=TRIMSIZE+6
- 9120 TRIM$(1)=CHR$(201)+STRING$(TRIMSIZE,205)+CHR$(187)
- 9130 FOR N=2 TO (LAST*2)+2
- 9140 TRIM$(N)=CHR$(186)+SPACE$(TRIMSIZE)+CHR$(186)
- 9150 NEXT N
- 9160 TRIM$((LAST*2)+3)=CHR$(200)+STRING$(TRIMSIZE,205)+CHR$(188)
- 9170 PICK=1:PICK$="":CLS
- 9180 COLOR TC,0:LOCATE 3,INT((80-LEN(TITLE$))/2),0:PRINT TITLE$;:COLOR SB,0
- 9190 FOR N=1 TO (LAST*2)+3
- 9200 LOCATE N+5,INT((78-TRIMSIZE)/2):PRINT TRIM$(N)
- 9210 NEXT N
- 9220 FOR CHOICE=1 TO LAST
- 9230 ROW%(CHOICE)=2*CHOICE+6
- 9240 COL%(CHOICE)=INT((86-TRIMSIZE)/2)
- 9250 NEXT CHOICE
- 9260 FOR CHOICE=1 TO LAST
- 9270 LOCATE ROW%(CHOICE),COL%(CHOICE):COLOR SC,0
- 9280 IF PICK=CHOICE THEN COLOR 0,HSC
- 9290 PRINT MENOPT$(CHOICE):COLOR SC,0
- 9300 NEXT CHOICE
- 9310 IF AUTH<>0 GOTO 9550
- 9320 COLOR 14,0
- 9330 MAUTH=INT((80-LEN(AUTH$))/2)
- 9340 FOR N=79 TO MAUTH STEP -1
- 9350 LOCATE 25,N:PRINT LEFT$(AUTH$,80-N);
- 9360 NEXT N
- 9370 FOR N=79 TO MAUTH+LEN(AUTH$) STEP -1
- 9380 LOCATE 25,N:PRINT " ";
- 9390 NEXT N
- 9400 COLOR 28,0:LOCATE 25,MAUTH:PRINT AUTH$;:AUTH=1
- 9410 FOR N=1 TO 600:SOUND N*10,1/(N*2):NEXT N
- 9420 COLOR 13,0
- 9430 FOR N=MAUTH TO 1 STEP-1
- 9440 LOCATE 25,N
- 9450 PRINT AUTH$;" "
- 9460 NEXT N
- 9470 FOR N=LEN(AUTH$)-1 TO 1 STEP -1
- 9480 LOCATE 25,1
- 9490 PRINT RIGHT$(AUTH$,N);
- 9500 NEXT N
- 9510 FOR N=LEN(AUTH$) TO 1 STEP -1
- 9520 LOCATE 25,N
- 9530 PRINT " ";
- 9540 NEXT N
- 9550 COLOR ,,1
- 9560 IF PICK$=CHR$(27) THEN PICK=5:RETURN
- 9570 PICK$=INKEY$:IF PICK$="" GOTO 9570
- 9580 ASCII=ASC(PICK$)
- 9590 IF ASCII=13 THEN LOCATE ,,1:COLOR TC,0,BD(PICK):RETURN
- 9600 IF ASCII=32 THEN PICK=PICK+1:IF PICK>LAST THEN PICK=1:GOTO 9260
- 9610 IF ASCII>97 AND ASCII<=122 THEN PICK$=CHR$(ASC(PICK$)-32)
- 9620 IF LEN(PICK$)=1 GOTO 9680
- 9630 PICK$=RIGHT$(PICK$,1)
- 9640 ASCII=ASC(PICK$)
- 9650 IF ASCII=72 THEN PICK=PICK-1:IF PICK=0 THEN PICK=LAST
- 9660 IF ASCII=80 THEN PICK=PICK+1:IF PICK>LAST THEN PICK=1
- 9670 GOTO 9260
- 9680 FOR CHOICE=1 TO LAST
- 9690 IF PICK$=LEFT$(MENOPT$(CHOICE),1) THEN PICK=CHOICE
- 9700 NEXT CHOICE
- 9710 GOTO 9260