home *** CD-ROM | disk | FTP | other *** search
- 150 POKE53281,1:POKE53280,1
- 160 SS=54272:V=53248:D0=56323:D1=56320:D2=56321:POKEV+21,0
- 170 PRINTCHR$(147),CHR$(17),CHR$(17)
- 180 PRINTSPC(14);CHR$(18);CHR$(31);"MODES OF PLAY":PRINT
- 190 PRINTSPC(14);CHR$(28);"*************":PRINT
- 200 PRINTSPC(4);CHR$(144);"1- AUTO BALL FEED - AUTO COVER"
- 210 PRINTSPC(4);"2- MANUAL BALL FEED - AUTO COVER"
- 220 PRINTSPC(4);"3- MANUAL BALL FEED - MANUAL COVER"
- 230 PRINTSPC(4);"4- AUTO BALL FEED - MANUAL COVER"
- 235 PRINTSPC(4);"Q- QUIT!!!"
- 240 PRINT:PRINT" ENTER MODE SELECTED:"
- 250 GET A$:IFA$=""THEN250
- 255 IFA$="Q"THEN59999
- 260 AU=VAL(A$)-1:IFAU<0ORAU>3THEN170
- 270 M1$="-CHIME RINGS FOR NUMBER ON CARD"
- 280 M2$="-GONG RINGS FOR NUMBER ON NO CARD"
- 290 M3$="-HIT ANY KEY FOR BALL FEED"
- 300 M4$="-USE JOYSTICK (PORT 2)-FIRE TO COVER"
- 310 PRINTCHR$(147),CHR$(17),CHR$(17)
- 320 PRINTSPC(2);M1$:PRINTSPC(2);M2$
- 330 IFAU=1ORAU=2THENPRINTSPC(2);M3$
- 340 IFAU=2ORAU=3THENPRINTSPC(2);M4$
- 350 PRINT:PRINTSPC(10);"HIT ANY KEY TO START"
- 360 GET A$:IFA$=""THEN360
- 370 PRINTCHR$(147)
- 380 REM *** READ THE ML CODE TO SET A BLOCK OF MEMORY ***
- 390 FORI=0TO11:READ X%:POKE28672+I,X%:NEXTI
- 400 REM *** SET THE COLOR MEMORY TO BLACK ***
- 410 FORI=0TO3:HB=216+I
- 420 POKE251,0:POKE252,HB:POKE253,0:POKE254,0:SYS 28672:NEXT
- 430 DIMSD(4,62),CO(5),X(5),Y(5),FL(21),FH(21),DU(21),C(3,4,4),N(4,14)
- 440 CO(0)=0:CO(1)=14:CO(2)=4:CO(3)=2:CO(4)=7:CO(5)=0
- 450 L(0)=130:L(1)=137:L(2)=142:L(3)=135:L(4)=143
- 460 S(0)=1104:S(1)=1127:S(2)=1624:S(3)=1647
- 470 F(0)=1271+SS:F(1)=1294+SS:F(2)=1791+SS:F(3)=1814+SS
- 480 GOSUB640:REM *** MAKE THE BOX ***
- 490 GOSUB1470:REM *** MAKE BINGO SPRITES ***
- 500 REM *** BLANK OUT THE FREE-BOXES ***
- 510 FORI=0TO3:POKEF(I),1:POKEF(I)+1,1:NEXT
- 520 GOSUB840:REM *** CHOOSE THE NUMBERS FOR THE CARDS ***
- 530 REM *** PUT RED COVER-TOKEN ON FREE-BOXES ***
- 540 FORI=0TO3:POKEF(I)-SS,160:POKEF(I)+1-SS,160:POKEF(I),8:POKEF(I)+1,8:NEXT
- 550 FORCD=0TO3:C(CD,2,2)=0:NEXT:REM SET CENTER BOX TO ILLEGAL VALUE (FREE BOX)
- 560 REM *** DRAW THE PASS LINE ***
- 570 FORLI=0TO6:POKE(1520+LI),64:NEXTLI
- 580 REM *** START OF PLAY ***
- 590 GOSUB1100:REM *** GET THE NEXT NUMBER ***
- 600 GOSUB1170:REM *** CHECK THE CARDS FOR A MATCH ***
- 610 IFAU=0ORAU=3THEN590:REM *** CHECK FOR AUTO BALL-FEED ***
- 620 GETA$:IFA$=""THEN620:REM *** WAIT FOR NEXT BALL ***
- 630 GOTO590
- 640 REM *** BOX MAKER ***
- 650 T0$=" B I N Gá O "
- 660 A1=176:A2=96:A3=178:A4=174:GOSUB710:T1$=A$
- 670 A1=98:A2=32:A3=98:A4=98:GOSUB710:T2$=A$
- 680 A1=171:A2=96:A3=123:A4=179:GOSUB710:T3$=A$
- 690 A1=173:A2=96:A3=177:A4=189:GOSUB710:T4$=A$
- 700 GOTO750
- 710 A$=CHR$(A2)+CHR$(A3)+CHR$(A2)
- 720 A$=CHR$(A1)+CHR$(A2)+A$+A$+A$+A$+CHR$(A2)+CHR$(A4)
- 730 A$=A$+" "+A$
- 740 RETURN
- 750 PRINTCHR$(18)CHR$(31)T0$CHR$(146)SPC(8)CHR$(18)CHR$(31)T0$CHR$(146)
- 760 PRINTCHR$(144);T1$
- 770 FORI=1TO4:PRINTT2$:PRINTT3$:NEXT
- 780 PRINTT2$:PRINTT4$:PRINT
- 790 PRINTCHR$(18)CHR$(31)T0$CHR$(146)SPC(8)CHR$(18)CHR$(31)T0$CHR$(146)
- 800 PRINTCHR$(144);T1$
- 810 FORI=1TO4:PRINTT2$:PRINTT3$:NEXT
- 820 PRINTT2$:PRINTT4$;
- 830 RETURN
- 840 REM *** CHOOSE THE CARD NUMBERS ***
- 850 REM *** FIRST ZERO THE CALLED NUMBER ARRAY ***
- 860 FORCL=0TO4:FORNN=0TO14:N(CL,NN)=0:NEXT:NEXT
- 870 CD=0:REM *** CARD LOOP ***
- 880 CL=0:REM *** COLUMN LOOP ***
- 890 FORI=0TO4:C(CD,CL,I)=0:NEXT:REM *** ZERO COL OF NUMBERS ON CARD ***
- 900 RN=0:REM *** ROW LOOP ***
- 910 Z=INT(RND(0)*15)+1+15*CL
- 920 REM *** TEST FOR THE NUMBER IN USE ***
- 930 J=0
- 940 IFC(CD,CL,J)=ZTHEN910:REM *** NUMBER HAS BEEN USED ***
- 950 IFJ<RNTHENJ=J+1:GOTO940
- 960 C(CD,CL,RN)=Z
- 970 REM *** PRINT NUMBER IN THE BOX ***
- 980 N$=STR$(Z)
- 990 LN=LEN(N$)
- 1000 FORQ=1TOLN-1
- 1010 SN=S(CD)+CL*3+RN*80+Q+(3-LN)
- 1020 PN=ASC(MID$(N$,Q+1,1))
- 1030 POKESN,PN
- 1040 NEXTQ
- 1050 IFRN<4THENRN=RN+1:GOTO910
- 1060 IFCL<4THENCL=CL+1:GOTO890
- 1070 IFCD<3THENCD=CD+1:GOTO880
- 1080 RETURN
- 1090 REM *** SELECT THE NEXT BALL NUMBER ***
- 1100 GOSUB1730:REM *** FIRST CHOOSE THE LETTER ***
- 1110 REM *** NEXT THE NUMBER ***
- 1120 NU=INT(RND(0)*15):NM=NU+1+NC*15
- 1130 REM *** HAS IT ALREADY BEEN USED? ***
- 1140 IFN(NC,NU)=1THEN1110:REM *** YES-GET ANOTHER ***
- 1150 N(NC,NU)=1
- 1160 RETURN
- 1170 REM *** PRINT THE NUMBER ON THE BIG BALL ***
- 1180 N1=INT(NM/10):N2=NM-N1*10
- 1190 IFN1=0THENN1=-16
- 1200 POKE1282,L(NC):POKE1283,N1+176:POKE1284,N2+176
- 1210 POKEV+44,CO(NC)
- 1220 REM *** CHECK FOR NUMBER ON THE CARDS ***
- 1230 NN=0
- 1240 BO=0
- 1250 CD=0:REM *** CARD LOOP ***
- 1260 CR=0:REM *** ROW LOOP ***
- 1270 IFC(CD,NC,CR)<>NMTHEN1390
- 1280 IFAU>1THEN2270
- 1290 NN=1:REM *** FOUND A MATCH ***
- 1300 REM *** PUT THE RED COVER-TOKEN ON THE NUMBER ***
- 1310 P1=S(CD)+CR*80+NC*3+1
- 1320 POKEP1+SS,8
- 1330 POKEP1+1+SS,8
- 1340 POKEP1+1,N2+176
- 1350 POKEP1,N1+176
- 1360 GOSUB1890:REM *** RING THE CHIME ***
- 1370 GOSUB2000:REM *** CHECK FOR A WINNER ***
- 1380 GOTO1400
- 1390 IFCR<4THENCR=CR+1:GOTO1270
- 1400 IFCD<3THENCD=CD+1:GOTO1260
- 1410 IFNN=0THENGOSUB1950:REM *** NO MATCH-SOUND THE GONG ***
- 1420 Y(NC)=230
- 1430 POKEV+1+NC*2,Y(NC):REM *** SET INITIAL Y ***
- 1440 IFBO=0THENRETURN:REM *** NO WINNER-GET NEXT BALL ***
- 1450 GETA$:IFA$=""THEN1450:REM *** WINNER-WAIT FOR A RESTART ***
- 1460 POKEV+21,0:RESTORE:CLR:GOTO150
- 1470 REM *** MAKE THE BINGO SPRITES ***
- 1480 REM *** ZERO THE SPRITES MEMORY ***
- 1490 FORI=0TO3
- 1500 POKE251,I*64:POKE252,57:POKE253,63:POKE254,00:SYS28672:NEXTI
- 1510 POKE251,00:POKE252,58:POKE253,63:POKE254,00:SYS28672
- 1520 REM *** SET UP TO ZERO SOUND ***
- 1530 POKE251,00:POKE252,212:POKE253,24:POKE254,00
- 1540 REM *** READ IN THE BIG BALL SPRITE ***
- 1550 FORI=0TO4:FORJ=22TO46:READSD
- 1560 POKE(14592+I*64+J),SD:NEXT:NEXT
- 1570 FORI=0TO63:READSD:POKE14912+I,SD:NEXT
- 1580 POKEV+21,63:REM *** ENABLE THE SPRITES ***
- 1590 FORI=0TO5
- 1600 POKE2040+I,228+I
- 1610 REM *** SET UP THE SPRITES ***
- 1620 POKEV+39+I,CO(I):REM *** SET THE SPRITE COLOR ***
- 1630 X(I)=145+I*12
- 1640 Y(I)=230
- 1650 X(5)=156:Y(5)=83:REM *** LARGE SPRITE LOCATION ***
- 1660 POKEV+I*2,X(I):REM *** SET INITIAL X-POSITION ***
- 1670 POKEV+1+I*2,Y(I):REM *** SET INITIAL Y ***
- 1680 NEXTI
- 1690 POKEV+23,32:POKEV+29,32
- 1700 REM *** READ IN THE BINGO SONG ***
- 1710 FORI=0TO21:READFL(I),FH(I),DU(I):NEXT
- 1720 RETURN
- 1730 NC=INT(RND(1)*5):REM *** SELECT THE BALL LETTER ***
- 1740 YM=INT(RND(0)*13):IFYM<5THENYM=5:REM *** GET THE MAXIMUM HEIGHT ***
- 1750 J=0
- 1760 Y=J^2-2*YM*J+230
- 1770 POKE(V+NC*2),X(NC):POKE(V+1+NC*2),INT(Y)
- 1780 IFY<=132THENRETURN:REM *** BALL WENT OVER PASS LINE ***
- 1790 IFJ<2*YMTHENJ=J+1:GOTO1760
- 1800 GOSUB1830:REM *** MAKE THE BALL PLOP SOUND ***
- 1810 GOTO1730:REM *** GET NEXT BALL ***
- 1820 REM *** SOUND OF THE BALL PLOP ***
- 1830 SYS28672
- 1840 POKESS,255:POKESS+1,93:POKESS+5,2
- 1850 POKESS+22,104:POKESS+23,1:POKESS+24,79:POKESS+4,129
- 1860 POKESS+24,0
- 1870 RETURN
- 1880 REM *** CHIME SOUND ***
- 1890 SYS28672
- 1900 POKESS+1,255:POKESS+5,9:POKESS+15,225:POKESS+24,15
- 1910 POKESS+4,21
- 1920 FORTT=1TO300:NEXT:POKESS+4,20
- 1930 RETURN
- 1940 REM *** SOUR BONG SOUND ***
- 1950 SYS28672
- 1960 POKESS+1,55:POKESS+5,9:POKESS+15,25:POKESS+24,15
- 1970 POKESS+4,21
- 1980 FORTT=1TO300:NEXT:POKESS+4,20:POKESS+24,0
- 1990 RETURN
- 2000 REM *** ROUTINE TO LOOK FOR A WINNER ***
- 2010 A1=3:A2=80:A3=0:A4=0
- 2020 WI=NC:GOSUB2120:REM *** CHECK ROWS ***
- 2030 A1=80:A2=3:A3=0:A4=0
- 2040 WI=CR:GOSUB2120:REM *** CHECK COLS ***
- 2050 IFNC<>CRTHEN2080:REM *** IS # ON MAJOR DIAGONAL? ***
- 2060 A1=0:A2=3:A3=0:A4=80
- 2070 GOSUB2120
- 2080 IFNC<>CR(4-CR)THENRETURN:REM *** IS # ON MINOR DIAGONAL? ***
- 2090 A1=0:A2=3:A3=0:A4=80
- 2100 GOSUB2120
- 2110 RETURN
- 2120 WJ=0
- 2130 WM=S(CD)+WI*A1+WJ*A2+WJ*A3+(4-WJ)*A4+1
- 2140 WP=PEEK(WM)
- 2150 IFWP<128THENRETURN
- 2160 W(WJ)=WM+SS
- 2170 WJ=WJ+1:IFWJ<=4THEN2130
- 2180 REM *** CHANGE WINNERS COLOR ***
- 2190 FORWJ=0TO4:FORQ=0TO1:POKEW(WJ)+Q,7:NEXT:NEXT:BO=1
- 2200 REM *** PLAY THE BINGO SONG ***
- 2210 POKE54296,15:POKE54277,10:POKE54278,10:REM *** SET VOL,ATT/DEC,SUS/REL ***
- 2220 FORI=0TO21:POKE54272,FL(I):POKE54273,FH(I):POKE54276,33
- 2230 FORT=0TODU(I)*4:NEXT:POKE54276,0:NEXT
- 2240 REM *** CHANGE WINNERS COLOR ***
- 2250 FORWJ=0TO4:FORQ=0TO1:POKEW(WJ)+Q,6:NEXT:NEXT:BO=1
- 2260 RETURN
- 2270 REM *** JOYSTICK TOKEN ROUTINE ***
- 2280 CM=F(CD)
- 2290 OC=PEEK(CM):REM *** OC=OLD COLOR ***
- 2300 POKECM,5:POKECM+1,5:REM *** COLOR IT GREEN ***
- 2310 KB=PEEK(D0):REM *** READ THE KEYBOARD CONTROL REG ***
- 2320 POKED0,255:PD=PEEK(D1)
- 2330 J0=-((PDAND8)=0)
- 2340 J1=-((PDAND2)=0)
- 2350 J2=-((PDAND4)=0)
- 2360 J3=-((PDAND1)=0)
- 2370 FB=-((PDAND16)=0)
- 2380 POKED0,KB:REM *** RESTORE KEYBOARD ***
- 2390 IF(J0+J1+J2+J3+FB)=0THEN2560
- 2400 IFFB=1THEN2490
- 2410 CC=CM+(J0-J2)*3+(J1-J3)*80:REM *** COMPUTE NEW POSITION ***
- 2420 FR=INT((CC-S(CD)-SS)/40)
- 2430 X0=S(CD)+SS+FR*40:X1=X0+14:REM *** COMPUTE NEW POSITION ***
- 2440 IFCC>X1ORCC<X0ORFR>8ORFR<0THEN2560:REM *** TEST IF OUTSIDE BOX ***
- 2450 REM *** VALID NEW POSITION-MOVE THE CURSOR ***
- 2460 POKECM,OC:POKECM+1,OC
- 2470 CM=CC:REM *** MOVE THE CURSOR ***
- 2480 GOTO2290
- 2490 REM *** ACT ON FIREBUTTON-WE MUST CHECK IF THE CURSOR IS WITHIN A BOX AND
- 2500 REM IF IT IS, IS NUMBER THE COREECT ONE ***
- 2510 B0=PEEK(CM-SS)-48:B1=PEEK(CM-SS+1)-48
- 2520 IFB0=N1ANDB1=N2ORB0=N1+128ANDB1=N1+128THENGOTO1290
- 2530 REM *** FIRE BUTTON PRESSED WHEN NOT ON BOX ***
- 2540 POKECM,OC:POKECM+1,OC:GOSUB1950:REM *** SOUR GONG SOUND ***
- 2550 NN=1:GOTO1390:REM *** GET NEXT CARD ***
- 2560 REM *** LOOP TILL JOYSTICK IS ACTIVE ***
- 2570 FORI=0TO20:NEXT
- 2580 POKECM,OC:POKECM+1,OC
- 2590 FORI=0TO20:NEXT
- 2600 GOTO2300
- 2610 DATA 160,00,165,254,145,251,200,196,253,208,249,96,252,0,3,255
- 2620 DATA 0,3,3,128,7,57,128,7,35,128,7,57,128,3,3,128,3,255,0,0,252,252,0
- 2630 DATA3,255,0,3,3,128,7,207,128,7,207,128,7,207,128,3,3,128,3,255,0,0,252
- 2640 DATA252,0,3,255,0,3,25,128,7,25,128,7,41,128,7,49,128,3,57,128,3,255,0
- 2650 DATA0,252,252,0,1,131,0,3,49,128,6,121,128,6,127,128,6,113,128,3,57
- 2660 DATA128,3,131,0,0,252
- 2670 DATA252,0,1,131,0,3,57,128,6,124,128,6,124,128,6,124,128,3,57,128,3,131
- 2680 DATA0,0,252
- 2690 DATA0,126,0,1,255,128,7,255,224,31,255,248,63,255,252,63,255,252,127,255
- 2700 DATA254,120,0,30,248,0,31,248,0,31,248,0,31,120,0,30,127,255,254,63,255
- 2710 DATA252,63,255,252,31,255,248,7,255,224,1,255,128,0,126,0,0,0,0,0,0,0,0
- 2720 DATA38,43,39,38,43,39,183,45,39,183,45,44,183,45,64,113,38,46,113,38,42
- 2730 DATA38,43,32,38,43,36,38,43,47,64,34,50,64,34,54,113,38,37,113,38,39
- 2740 DATA113,38,51,64,34,57,83,32,53,168,25,72,204,28,54,83,32,51,64,34,62
- 2750 DATA64,34,75
- 59999 END
- 60000 OPEN15,8,15,"S0:BINGO":CLOSE15:SAVE"0:BINGO",8
-