10 ' BLACKJACK for the Epson Geneva 20 ' by Paul MacDonald [74776,2421] 30 ' P.O. Box 7068 Nashua, NH 03060 40 ' modified from a Rick Perry program for the Tandy Model 100 50 SCREEN,,0:DEFINT A,C-O,Q-Z:DIM N1(10),N2(10),N3(10):FMT$="##########":B=0:P=0 60 CLS:LOCATE 15,2,1:PRINT"B L A C K J A C K" 70 LOCATE 15,4,1:PRINT" Epson Geneva" 80 LOCATE 15,5,1:PRINT"V1.0 14-April-85" 90 LOCATE 15,6,1:PRINT" Paul MacDonald" 100 FOR DELAY=1 TO 1000:NEXT DELAY 110 YH$="You have:":ND=4:NC=0:DIM Q$(3),R$(3),D(ND*52):EL$=CHR$(27)+"l" 120 Q$(0)="Insurance":Q$(1)="Split":Q$(2)="Double down":Q$(3)="Hit or Pass" 130 R$(0)="YyNn":R$(1)=R$(0):R$(2)=R$(0):R$(3)="HhPp" 140 SEED#=VAL(RIGHT$(TIME$,2))+60*VAL(MID$(TIME$,4,2))+3600*(VAL(LEFT$(TIME$,2))MOD 12) 150 GOTO 170 160 LOCATE 15,7,1:PRINT"'Q' to quit. for new bet. for same bet." 165 A$=INKEY$:IF A$=CHR$(27) THEN GOSUB 970:IF A$="Q" OR A$="q" THEN 1000:GOTO 160 ELSE IF A$<>CHR$(13) AND A$<>" " THEN 160 170 CLS:GOSUB 900 180 IF P>2E+06 THEN PRINT" The house is busted.":END 190 IF P<-2E+06 THEN PRINT" Your credit is no longer good.":END 200 IF NC<30 THEN GOSUB 930:GOTO 240 210 IF A$=" " THEN 240 220 LOCATE 15,3,1:PRINT"Your bet: $";:PRINT USING F$+".##";B;:GOTO 270 230 LOCATE 15,3,1:PRINT EL$; 240 LOCATE 15,3,1:PRINT "Your bet ? ";:LINE INPUT"";A$:B=VAL(A$) 250 IF INSTR(A$,"Q") OR INSTR(A$,"q") THEN 1000 260 IF B<1 OR B>10000 OR B<>FIX(B*2)/2 THEN SOUND 261,40:GOTO 230 270 M1=0:H1$="":M2=0:H2$="":M3=0:SPLIT=0:D1=1:D3=1:GOSUB 750:GOSUB 710:GOSUB 750 280 IF INSTR(LEFT$(H1$,3),C$) THEN M3=1:H3$=C$:N3(1)=N1(2) 290 GOSUB 710:LOCATE 15,4,1:PRINT "I show:";C$ 300 IF C$<>" A" THEN 330 310 QN=0:GOSUB 920:IF INSTR("Nn",A$) THEN 330 320 IF S2=21 THEN P=P+B:BEEP ELSE P=P-B/2:SOUND 261,40 330 IF S1=21 OR S2=21 THEN 680 340 IF M3=0 THEN 450 350 QN=1:GOSUB 920:LOCATE 15,4,1:IF INSTR("Nn",A$) THEN PRINT EL$;:GOTO 450 360 SPLIT=1:M1=1:H1$=H3$:GOSUB 750:GOSUB 790:LOCATE 15,4,1:PRINT EL$;:LOCATE 15,4,1:PRINT YH$;H3$; 370 IF N1(1)=1 THEN PRINT" =";S3;:GOTO 510 380 IF S3<>10 AND S3<>11 THEN 410 390 QN=2:GOSUB 920:IF INSTR("Nn",A$) THEN 410 400 GOSUB 790:D3=2:GOTO 440 410 QN=3:GOSUB 920:IF INSTR("Pp",A$) THEN 440 420 GOSUB 790:LOCATE 15,4,1:PRINT YH$;H3$;:IF S3<22 THEN 410 430 PRINT" =";S3;" Busted!";:SOUND 261,40:P=P-B:GOTO 450 440 LOCATE 15,4,1:PRINT YH$;H3$;" =";S3; 450 LOCATE 15,5,1:PRINT YH$;H1$;:IF S1<>10 AND S1<>11 THEN 480 460 QN=2:GOSUB 920:IF INSTR("Nn",A$) THEN 480 470 GOSUB 750:D1=2:GOTO 510 480 QN=3:GOSUB 920:IF INSTR("Pp",A$) THEN 510 490 GOSUB 750:LOCATE 15,5,1:PRINT YH$;H1$;:IF S1<22 THEN 480 500 PRINT" =";S1;" Busted!";:SOUND 261,40:P=P-B:IF SPLIT=0 OR S3>21 THEN 160 ELSE 530 510 LOCATE 15,5,1:PRINT YH$;H1$;" =";S1; 520 LOCATE 15,7,1:PRINT" " 530 LOCATE 15,7,1:PRINT "I have:";H2$;:GOSUB 880 540 IF S2<17 THEN GOSUB 710:GOTO 530 550 PRINT" =";S2; 560 IF S2<=21 THEN 600 ELSE PRINT" Busted!"; 570 LOCATE 15,5,1:IF S1<22 THEN PRINT YH$;H1$;" =";S1;"You win!";:P=P+D1*B:BEEP 580 IF SPLIT=1 AND S3<22 THEN PRINT YH$;H3$;" =";S3;"You win!";:P=P+D3*B:BEEP 590 GOTO 160 600 IF S1>21 THEN 640 610 LOCATE 15,5,1:PRINT YH$;H1$;" =";S1; 620 IF S1>S2 THEN PRINT"You win!";:P=P+D1*B:BEEP:GOTO 640 630 IF S1=S2 THEN PRINT"It's a tie!";:SOUND 261,40 ELSE PRINT"You lose!";:P=P-D1*B:SOUND 261,40 640 IF SPLIT<>1 OR S3>21 THEN 160 645 LOCATE 15,4,1:PRINT YH$;H3$;" =";S3; 650 IF S3>S2 THEN PRINT" Win!";:P=P+D3*B:BEEP:GOTO 160 660 IF S3=S2 THEN PRINT" Tie!";:SOUND 261,40 ELSE PRINT"You lose!";:P=P-D3*B:SOUND 261,40 670 GOTO 160 680 LOCATE 15,7,1:IF S2=S1 THEN PRINT "*** We both have Blackjack *** Tie!";:SOUND 261,40:GOTO 160 690 LOCATE 15,7,1:IF S2=21 THEN PRINT "*** I have Blackjack *** You lose!";:SOUND 261,40:P=P-B:GOTO 160 700 LOCATE 15,7,1:PRINT "*** You have Blackjack *** You win!";:BEEP:P=P+1.5*B:GOTO 160 710 M2=M2+1:GOSUB 830 720 N2(M2)=CN:H2$=H2$+C$:S2=0:FOR I=1 TO M2:S2=S2+N2(I):NEXT I 730 IF INSTR(H2$,"A") AND S2<12 THEN S2=S2+10 740 RETURN 750 M1=M1+1:GOSUB 830 760 N1(M1)=CN:H1$=H1$+C$:S1=0:FOR I=1 TO M1:S1=S1+N1(I):NEXT I 770 IF INSTR(H1$,"A") AND S1<12 THEN S1=S1+10 780 RETURN 790 M3=M3+1:GOSUB 830 800 N3(M3)=CN:H3$=H3$+C$:S3=0:FOR I=1 TO M3:S3=S3+N3(I):NEXT I 810 IF INSTR(H3$,"A") AND S3<12 THEN S3=S3+10 820 RETURN 830 GOSUB 890:RC=CINT(1+NC*RAN#):CN=D(RC):D(RC)=D(NC):NC=NC-1 840 IF CN=1 THEN C$=" A":RETURN 850 IF CN<11 THEN C$=STR$(CN):RETURN 860 IF CN=11 THEN C$=" J" ELSE IF CN=12 THEN C$=" Q" ELSE IF CN=13 THEN C$=" K" 870 CN=10:RETURN 880 FOR I=1 TO 300:NEXT I:RETURN 890 TMP#=25173*SEED#+13849:SEED#=TMP#-FIX(TMP#/65536!)*65536!:RAN#=SEED#/65536!:RETURN 900 IF B>ABS(P) THEN G=LEN(STR$(INT(B))) ELSE G=LEN(STR$(INT(ABS(P)))) 910 F$=RIGHT$(FMT$,G+1)+",":LOCATE 15,2,1:PRINT "You now have: $";:PRINT USING F$+".##";P:RETURN 920 LOCATE 15,7,1:PRINT Q$(QN);" ? ";:A$=INPUT$(1):LOCATE 15,7,1:PRINT EL$;:IF A$=CHR$(27) THEN GOSUB 970:GOTO 920 ELSE IF INSTR(R$(QN),A$)=0 THEN 920 ELSE RETURN 930 NC=ND*52:LOCATE 15,7,1:PRINT "Shuffling. Please wait ..."; 940 FOR J=0 TO ND*4-1:FOR I=1 TO 13:D(J*13+I)=I:NEXT I:NEXT J 950 LOCATE 15,7,1:PRINT" " 960 LOCATE 15,7,1:PRINT EL$;:RETURN 970 LOCATE 15,6,1:PRINT "Purse ? ";:LINEINPUT"";A$:IF A$<>"" THEN P=VAL(A$) 980 LOCATE 15,6,1:PRINT EL$;"Bet ? ";:LINEINPUT"";A$:IF A$<>"" THEN B=VAL(A$) 990 LOCATE 15,6,1:PRINT EL$;:RETURN 1000 CLS:LOCATE 15,3,1:PRINT"Program terminated on request" 1010 LOCATE 15,4,1:PRINT"at ";TIME$;".":SCREEN 0,0,1:END RETURN 1000 CLS:LOCATE 15,3,1:PRINT"Program terminated on request" 1010 LOCATE ATE 15,4,1:PRINT"at ";TIME$;".":SCREEN 0,0,1:END RETURN 1000 CLS:LOCATE 15,3,1:PRINT"Program terminated on