10 CLS:CLEAR256,MAXRAM:MAXFILES=1:CLEAR800 13 CLEAR255 14 DEFINTA-D,I-K,M-O,X,Y 15 I$="":P$="":S$="":T$="" 20 DIM M(9,2,4,4), C(75), M$(9,2):FORA=0TO9:FORB=0TO2:M$(A,B)="Blank":NEXTB,A 21 F$="CARDS.DO" 34 CLS:GOSUB1300:GOTO40 35 ST550- 40 KEYON:ONKEYGOSUB100,150,200,500,250,300,1500,350 45 GOSUB100 50 GOSUB1250:KEYON:GOTO50 99 ' show card serials 100 CLS:K=1:GOSUB1450:GOSUB1300:KEYSTOP:PRINT@40,""; 110 FORA=0TO9:FORB=0TO2:IFA>LATHENB=2:A=9:GOTO120ELSEPRINTM$(A,B);"|"; 120 NEXTB:PRINT" ";:NEXTA 148 K=0:GOTO1300 149 ' load cards from "RAM:CARDS.DO" 150 KEYOFF:K=2:GOSUB1300:GOSUB1470 160 OPENF$FORINPUTAS1: 170 Z$="":FORA=0TO9:FORB=0TO2 171 LINEINPUT#1,Z$:M$(A,B)=MID$(Z$,26,5) 172 Z=0:FORC=0TO4:FORD=0TO4:Z=Z+1 174 M(A,B,C,D)=(ASC(MID$(Z$,Z,1))-32) 176 IFEOF(1)THEND=4:C=4:B=2:A=9 178 NEXTD,C,B:PRINT@240,"Loading";9-A;"Wait...";:NEXTA 180 Z$="":Z=0 190 MA=9:CLOSE#1:GOTO100 199 ' save cards to "RAM:CARDS.DO" 200 KEYOFF:K=3:GOSUB1300:GOSUB1470 210 OPENF$FOROUTPUTAS1 220 Z$="":FORA=0TOLA:FORB=0TO2:FORC=0TO4:FORD=0TO4 221 Z$=Z$+CHR$(M(A,B,C,D)+32) 223 NEXTD,C 225 PRINT#1,Z$;M$(A,B):Z$="" 227 NEXTB:PRINT@240,"Saving";LA-A;"Wait...";:NEXTA 240 CLOSE#1:GOTO148 249 ' pick card from memory for edit 250 KEYSTOP:K=5:GOSUB1300:M=0:CA=10:CB=3 260 PRINT@240,"";:INPUT"Serial #";S$ 270 FORA=9TO0STEP-1:FORB=2TO0STEP-1:IFM$(A,B)=S$THENCA=A:CB=B 280 NEXTB,A 284 IFK=6THEN310 285 IFCA=10ANDCB=3THENBEEP:PRINT@240,S$;" Doesn't exist, use F6 to create";:GOSUB1400:GOTO148 290 GOTO400 299 ' add a new card to memory 300 KEYSTOP:K=6:GOSUB1300:M=1:CA=10:CB=3:S$="Blank":GOTO270 310 IFCA=10ANDCB=3THENBEEP:PRINT@240,"No blank cards left, sorry";:GOSUB1400:GOTO148 320 PRINT@240,"";:INPUT"Serial #";S$:IFLEN(S$)>5THENS$=LEFT$(S$,5) 325 IFLEN(S$)<5THENS$=S$+" ":GOTO325 330 M$(CA,CB)=LEFT$(S$,5)ELSEM$(CA,CB)=S$ 340 GOTO400 349 ' exit program 350 PRINT@240,CHR$(27);"p EXIT ";CHR$(27);"q";:GOSUB1200:IFI$="Y"ORI$="y"THEN360ELSE148 360 MENU 399 ' individual card editor 400 CLS:PRINT@20,M$(CA,CB):IFM=0THENPRINT@240,"press ";CHR$(27);"pESC";CHR$(27);"q to EXIT":GOTO410 405 PRINT@240,CHR$(27);"p99";CHR$(27);"q to EDIT"; 410 FORD=0TO4:FORC=0TO4:CP=(D*40)+40+(C*3):PRINT@CP,M(CA,CB,C,D);:NEXTC,D 420 C=0:D=0:CC=0:CD=0:IFM=1THEN468 430 GOSUB1235:GOSUB1200:IFI=257THEN434ELSEJ=I*10:GOSUB1200 431 IFI=257THEN430 432 J=J+I:IF J<(C*15)+1 OR J>(C+1)*15THENBEEP:GOTO434ELSEM(CA,CB,C,D)=J:GOTO440 434 IFI$=CHR$(28)THENC=C+1ELSEIFI$=CHR$(29)THENC=C-1 435 IFI$=CHR$(30)THEND=D-1ELSEIFI$=CHR$(31)THEND=D+1 436 IFC>4THENC=0ELSEIFC<0THENC=4 437 IFC=2ANDD=2THEN434 438 IFD>4THEND=0ELSEIFD<0THEND=4 439 IFI$=CHR$(27)THEN490 440 GOSUB480 447 IFM=0THEN430 450 IFCC=4ANDCD=4THENM=0:GOTO400 460 D=D+1:IFD>4THEND=0:C=C+1 465 IFC=2ANDD=2THEN460 468 GOSUB480 470 GOSUB1235 472 GOSUB1200:IFI<256THENJ=I*10ELSE470 474 GOSUB1200:IFI<256THENJ=J+IELSE470 476 IFJ=99THENM=0:GOTO400 478 IF J<(C*15)+1 OR J>(C+1)*15THENBEEP:GOTO470ELSEM(CA,CB,C,D)=J:GOTO440 480 PRINT@(CD*40)+40+(CC*3),CHR$(27);"q";M(CA,CB,CC,CD);CHR$(27); 481 PRINT@(D*40)+40+(C*3),CHR$(27);"p";M(CA,CB,C,D);CHR$(27);"q";:CD=D:CC=C:RETURN 490 CLS:K=0:GOTO100 499 ' play the game 500 KEYOFF:ONKEYGOSUB700,750,800,600,850,900,650,950:CLS 501 C(0)=1 510 K=0:GOSUB1350:FORX=1TO(LA*15)+1STEP15:FORY=1TO31STEP15 520 LINE(X,Y)-(X+11,Y+11),1,B:LINE(X+5,Y+5)-(X+6,Y+6),1,B:NEXTY,X:X=1:Y=1:OX=CA*15+1:OY=CB*15+1:X=OX:Y=OY 530 GOSUB1250:GOSUB1100:M=1 540 FORJ=1TO75:IFC(J)=1THENGOSUB550 545 NEXTJ:KEYON:K=0:GOSUB1350:GOTO555 550 Q=0:IFJ=0THENRETURNELSEPRINT@240,"Calling ";J;", Found ";Q; 551 C=INT((J-1)/15):IFC<0THENC=0 552 FORA=0TOLA:FORB=0TO2:FORD=0TO4:IFM(A,B,C,D)=JTHENQ=Q+1:PRINT@260,Q;:GOSUB1000 553 NEXTD,B,A:PRINT@240,"Called ";:N=0:FORZ=1TO75:IFC(Z)=1THENN=N+1 554 NEXTZ:GOTO1480 555 GOSUB1250:KEYON:GOTO555 599 ' call a number 600 KEYOFF:K=4:GOSUB1355:GOSUB1235 610 GOSUB1200:IFI$=CHR$(27)THEN640 612 PRINT@240,"Call: "; 615 IFI<>257THENJ=I*10:PRINT@245,J;"";:ELSEBEEP:GOTO610 620 GOSUB1200:IFI$=CHR$(27)THEN640 625 IFI<>257THENJ=J+I:IFJ>75THENPRINT@240,J;"is too large..";:GOSUB1400:GOTO600 630 M=1:C(J)=1:GOSUB550:PRINT@25,N; 635 GOTO600 640 K=0:GOSUB1350:GOTO555 649 ' recall game to date 650 KEYOFF:K=7:GOSUB1350:GOTO500 699 ' find a serial # & box it 700 K=1:GOSUB1350:PRINT@240,"CARD #";:INPUTS$ 705 IFLEN(S$)<5THENS$=S$+" ":GOTO705 710 CA=10:CB=3:OC=CA:OD=CB:FORA=0TO9:FORB=0TO2:IFM$(A,B)=S$THENCA=A:CB=B 720 NEXTB,A:IFCA<10ANDCB<3THENGOSUB1100ELSEPRINT@240,"Can't Find ";S$:GOSUB1400:CA=OC:CB=OD 730 K=0:KEYON:GOTO1350 749 ' uncall a previously called number 750 K=2:GOSUB1350 751 GOSUB1235 752 GOSUB1200:IFI$=CHR$(27)THEN730 753 J=I*10:PRINT@245,J;" "; 754 GOSUB1200:IFI$=CHR$(27)THEN730 755 J=J+I:IFJ>75THEN730 760 PRINT@245,J;"...";:M=0:C(J)=0:GOSUB550:PRINT@25,N; 770 GOTO730 799 ' check if a number was called 800 K=3:GOSUB1350:GOSUB1200:IFI<256THENKEYOFF:J=I*10:PRINT@245,J;"";:ELSE730 810 GOSUB1200:IFI<256THENJ=J+I:PRINT@245,J;"... "; 820 IFC(J)=1THENPRINT@240,"Yes, ";J;"Has been called";:GOSUB1400:GOTO730 830 PRINT@240,J;"not called yet...";:GOSUB1400:GOTO730 849 ' move the box to another card 850 K=5:GOSUB1350:KEYOFF:PRINT@240,CHR$(27);"pESC";CHR$(27);"q to use this card"; 870 LINE(OX,OY)-(OX+11,OY+11),1,B:LINE(X,Y)-(X+11,Y+11),0,B:OX=X:OY=Y 875 PRINT@30," ";:PRINT@30,CHR$(27);"p";M$(CA,CB);CHR$(27);"q"; 880 I$=INKEY$:IFI$=""THEN880ELSEIFASC(I$)<28ORASC(I$)>31THEN885 881 IFI$=CHR$(28)THENCA=CA+1:GOTO886 882 IFI$=CHR$(29)THENCA=CA-1:GOTO886 883 IFI$=CHR$(30)THENCB=CB-1:GOTO886 884 IFI$=CHR$(31)THENCB=CB+1:GOTO886 885 IFI$=CHR$(27)THEN890ELSEBEEP:GOTO880 886 IFCA>LATHENCA=0ELSEIFCA<0THENCA=LA 887 IFCB>2THENCB=0ELSEIFCB<0THENCB=2 888 X=CA*15+1:Y=CB*15+1:GOTO870 890 GOSUB1100:GOTO730 899 ' wipe all calls & start over 900 K=6:GOSUB1350:KEYOFF 910 PRINT@240,"Wipe all Calls ?"; 920 GOSUB1200:IFI$="Y"ORI$="y"THEN930ELSE730 930 FORI=0TO75:C(I)=0:NEXTI:I=0:N=0:GOTO500 949 ' exit to card manager menu 950 K=8:GOSUB1350:PRINT@240,CHR$(27);"p EXIT ";CHR$(27);"q from play display "; 960 GOSUB1200:IFI$="Y"ORI$="y"THEN34 970 GOTO730 995 STOP 999 ' figure marker location 1000 XX=(A*15)+(C*2)+2:YY=(B*15)+(D*2)+2 1010 LINE(XX,YY)-(XX+1,YY+1),M,BF:RETURN 1099 ' generate specific card display 1100 LINE(OX,OY)-(OX+11,OY+11),1,B 1110 OX=CA*15+1:OY=CB*15+1:LINE(OX,OY)-(OX+11,OY+11),0,B 1120 PRINT@30,M$(CA,CB); 1130 FORC=0TO4:FORD=0TO4:CP=(C*3)+(D*40)+65 1135 P$=STR$(M(CA,CB,C,D)):P$=RIGHT$(P$,2) 1137 IFC(M(CA,CB,C,D))=1THENPRINT@CP,CHR$(27);"p";P$;CHR$(27);"q";:GOTO1140 1138 PRINT@CP,P$;: 1140 NEXTD,C 1150 RETURN 1199 ' inkey 1200 I$="" 1201 I$=INKEY$:IFI$=""THENGOSUB1250:GOTO1201 1210 I=VAL(I$):IFASC(I$)>26ANDASC(I$)<32THENI=257 1230 RETURN 1234 ' clear out previos keypresses 1235 I$=INKEY$:IFI$<>""THEN1235ELSERETURN 1249 ' time display 1250 IFT$=TIME$THENRETURNELSET$=TIME$ 1260 T=VAL(LEFT$(T$,2)):IFT>12THENT=T-12:T$=STR$(T)+RIGHT$(T$,6) 1270 PRINT@270,T$;:RETURN 1299 ' card maint menu bar 1300 PRINT@240,STRING$(79,32);:PRINT@0," B I N G O A I D E";:IFK=0THEN1319 1310 ON K GOTO1311,1312,1313,1314,1315,1316,1317,1318 1311 PRINT@280,"Show";:RETURN 1312 PRINT@285,"Load";:RETURN 1313 PRINT@290,"Save";:RETURN 1314 PRINT@295,"Play";:RETURN 1315 PRINT@300,"Old";:RETURN 1316 PRINT@305,"New";:RETURN 1317 PRINT@310,"Opt";:RETURN 1318 PRINT@315,"Menu";:RETURN 1319 PRINT@280,"Show Load Save Play Old New Opt Menu";:RETURN 1349 ' play menu bar 1350 GOSUB1235:PRINT@240,STRING$(79,32);:SOUND3000,S:IFK=0THEN1369ELSE1360 1355 GOSUB1235:PRINT@280,STRING$(39,32);:SOUND3000,S:IFK=0THEN1369 1360 ON K GOTO1361,1362,1363,1364,1365,1366,1367,1368 1361 PRINT@280,"Find";:RETURN 1362 PRINT@285,"Uncl";:RETURN 1363 PRINT@290,"Chek";:RETURN 1364 PRINT@295,CHR$(27);"pCall";CHR$(27);"q ESC to Exit";:RETURN 1365 PRINT@300,"Move";:RETURN 1366 PRINT@305,"Wipe";:RETURN 1367 PRINT@310,"Redo";:RETURN 1368 PRINT@315,"Menu";:RETURN 1369 PRINT@280,"Find Uncl Chek ";CHR$(27);"pCall";CHR$(27);"q Move Wipe Redo Menu";:RETURN 1400 BEEP:FORDL=1TO500:NEXTDL:RETURN 1449 ' find highest card # 1450 LA=9:LB=2:FORA=0TO9:FORB=0TO2:IFM$(A,B)="Blank"THENLB=B:LA=A:GOTO1455ELSE1460 1455 B=2:A=9 1460 PRINT@240,B;A;:NEXTB,A 1465 PRINT@240,LB;LA:RETURN 1470 PRINT@240,STRING$(39,32);:PRINT@240,"Filename:";F$;:PRINT@249,"";:LINEINPUTNF$ 1471 IFNF$=""THENNF$=F$ 1472 F$=NF$ 1474 PRINT@240,SPACE$(39); 1475 RETURN 1479 ' cover specific card 1480 CC=-1:CD=-1:FORC=0TO4:FORD=0TO4:IFM(CA,CB,C,D)=JTHENCC=C:CD=D 1482 NEXTD,C:IFCC=-1ANDCD=-1THEN1499 1485 CP=((CC*3)+(CD*40)+65):P$=STR$(M(CA,CB,CC,CD)):P$=RIGHT$(P$,2) 1490 IFM=1THENPRINT@CP,CHR$(27);"p";P$;CHR$(27);"q";:ELSEPRINT@CP,P$; 1499 CC=0:CD=0:RETURN 1500 KEYOFF:K=7:GOSUB1300:IFS=0THENS=3:GOTO1510 1505 S=0 1510 K=0:GOTO1300