Random game
Random game
Random software
  • Entry name:
     Solitaire 
  • Category:
    Games
  • Publisher/Developer:
    BELLCOM - Public Domain Library
  • Year:
    1982
  • Code:
    Erik Jensen,Paul Jensen,Alan J. Zett,Barry Mellegard
  • Maximum players:
    1
  • Programming language:
    Atari BASIC
Solitaire Solitaire Solitaire Solitaire Solitaire
Listing 1
1 GRAPHICS 18:​POKE 756,​209
5 REM 
6 REM 
10 POSITION 5,​3:​? #6;"sOLItAiRe":​POSITION 3,​5:​? #6;"":​POSITION 4,​7:​? #6;"":​GOTO 1110
15 REM 
20 COLOR 1:​FOR AZ=Y TO Y+30:​PLOT X,​AZ:​DRAWTO X+30,​AZ:​NEXT AZ
22 C=VA:​ON SU GOTO 36,​46,​24,​28
23 REM 
24 COLOR 0:​FOR ZA=0 TO 9:​FOR AZ=0 TO ZA STEP 2:​PLOT X+15+AZ,​Y+ZA+6:​PLOT X+15-AZ,​Y+ZA+6:​NEXT AZ:​NEXT ZA
26 FOR ZA=9 TO 0 STEP -1:​FOR AZ=0 TO ZA STEP 2:​PLOT X+15+AZ,​Y-ZA+25:​PLOT X+15-AZ,​Y-ZA+25:​NEXT AZ:​NEXT ZA:​GOTO 56
27 REM 
28 COLOR 0:​FOR ZA=0 TO 10:​FOR AZ=0 TO ZA STEP 2:​PLOT X+15+AZ,​Y-ZA+25:​PLOT X+15-AZ,​Y-ZA+25:​NEXT AZ:​NEXT ZA
30 FOR ZA=11 TO 15:​FOR AZ=0 TO 10 STEP 2:​PLOT X+15+AZ,​Y-ZA+25:​PLOT X+15-AZ,​Y-ZA+25:​NEXT AZ:​NEXT ZA
32 Z=-2:​FOR ZA=16 TO 18:​Z=Z+2:​FOR AZ=Z TO 8-Z STEP 2:​PLOT X+15+AZ,​Y-ZA+25:​PLOT X+15-AZ,​Y-ZA+25:​NEXT AZ:​NEXT ZA
34 GOTO 56
35 REM 
36 COLOR 0:​FOR AZ=0 TO 9:​PLOT X+15+AZ,​Y+AZ+6:​DRAWTO X+15-AZ,​Y+AZ+6:​NEXT AZ
38 FOR AZ=10 TO 12:​PLOT X+15+9,​Y+AZ+6:​DRAWTO X+15-9,​Y+AZ+6:​NEXT AZ
40 Z=-2:​FOR ZA=13 TO 15:​Z=Z+2:​FOR AZ=Z TO 8-Z:​PLOT X+15+AZ,​Y+ZA+6:​PLOT X+15-AZ,​Y+ZA+6:​NEXT AZ:​NEXT ZA
42 Z=0:​FOR AZ=13 TO 19:​Z=Z+1:​PLOT X+15+Z,​Y+AZ+6:​DRAWTO X+15-Z,​Y+AZ+6:​NEXT AZ
44 GOTO 56
45 REM 
46 COLOR 0:​AZ=X+11:​ZA=Y+6:​GOSUB 52:​AZ=X+5:​ZA=Y+13:​GOSUB 52:​AZ=X+17:​GOSUB 52
48 Z=0:​FOR AZ=14 TO 21:​Z=Z+0.65:​PLOT X+15+Z,​Y+AZ+5:​DRAWTO X+15-Z,​Y+AZ+5:​NEXT AZ
50 FOR Z=X+14 TO X+16:​PLOT Z,​Y+13:​DRAWTO Z,​Y+19:​NEXT Z:​GOTO 56
52 PLOT AZ+2,​ZA:​DRAWTO AZ+6,​ZA:​PLOT AZ+2,​ZA+7:​DRAWTO AZ+6,​ZA+7:​PLOT AZ+1,​ZA+1:​DRAWTO AZ+7,​ZA+1
54 PLOT AZ+1,​ZA+6:​DRAWTO AZ+7,​ZA+6:​FOR Z=ZA+2 TO ZA+5:​PLOT AZ,​Z:​DRAWTO AZ+8,​Z:​NEXT Z:​RETURN
55 REM 
56 CHR=ASC(C$(C,​C)):​IF CHR<96 THEN CHR=CHR-32*(CHR>31)+64*(CHR<32)
58 CPOS=CHR*8+(PEEK(756)*256)
60 FOR AZ=0 TO 7:​POKE (AZ*40)+MEM+(X/8)+(Y*40),​255-PEEK(CPOS+AZ):​NEXT AZ:​RETURN
65 REM 
70 SU=INT(NUM/100)
80 VA=NUM-100*SU
90 RETURN
95 REM 
100 IF HF THEN GOSUB 1480:​RETURN
110 IF IN>51 THEN 1490
120 OD(IN(7))=D(IN):​IN=IN+1:​X=X(7):​Y=Y(13):​NUM=OD(IN(7)):​GOSUB 70:​GOSUB 20:​IN(7)=IN(7)+1
140 RETURN
145 REM 
150 POKE 656,​0:​IF OC<7 THEN POKE 657,​4*OC+4:​? " "
160 IF OC=7 THEN POKE 657,​35:​? " "
170 POKE 656,​0:​IF CU<7 THEN POKE 657,​4*CU+4:​? ""
180 IF CU=7 THEN POKE 657,​35:​? ""
190 RETURN
195 REM 
200 CU=CU+1:​IF CU>7 THEN CU=7
210 GOSUB 150
220 OC=CU
230 RETURN
235 REM 
240 CU=CU-1:​IF CU<0 THEN CU=0
250 GOSUB 150
260 OC=CU
270 RETURN
275 REM 
280 IF HF THEN GOSUB 1480:​RETURN
290 ST=CU
300 IF IN(CU)=0 THEN GOSUB 1510:​RETURN
310 IF CU=7 THEN NUM=OD(IN(7)-1):​GOTO 330
320 NUM=C(CU,​0)
330 HF=1
340 J=0:​IF CU=7 THEN COLOR 1:​FOR I=0 TO 30:​PLOT X(CU)+I,​Y(13):​DRAWTO X(CU)+I,​Y(13)+30:​GOTO 370
350 IF P(CU,​0)=0 THEN COLOR 0:​FOR I=0 TO 30:​PLOT X(CU)+I,​Y(J):​DRAWTO X(CU)+I,​Y(J)+30:​GOTO 370
360 FOR I=0 TO 30 STEP 2:​COLOR 0:​PLOT X(CU)+I,​Y(J):​DRAWTO X(CU)+I,​Y(J)+30
365 IF I<30 THEN COLOR 1:​PLOT X(CU)+I+1,​Y(J):​DRAWTO X(CU)+I+1,​Y(J)+30
370 NEXT I
380 IF CU=7 THEN GOSUB 150:​RETURN
390 J=12*(IN(CU)-1)+32
395 COLOR 0:​FOR I=0 TO 30:​PLOT X(CU)+I,​Y(0)+31:​DRAWTO X(CU)+I,​Y(0)+J:​NEXT I
400 RETURN
405 REM 
410 IF NOT HF THEN GOSUB 1520:​RETURN
420 IF CU=7 THEN GOSUB 590:​RETURN
430 IF ST=CU THEN GOSUB 750:​RETURN
440 IF IN(CU)=0 THEN GOSUB 630:​RETURN
450 NUM=C(CU,​IN(CU)-1)
460 GOSUB 70:​TS=SU:​TV=VA
470 IF ST=7 THEN NUM=OD(IN(7)-1):​GOTO 490
480 NUM=C(ST,​0)
490 GOSUB 70:​IF ((TS=1) OR (TS=2)) AND ((SU=1) OR (SU=2)) THEN GOSUB 1530:​RETURN
500 IF ((TS=3) OR (TS=4)) AND ((SU=3) OR (SU=4)) THEN GOSUB 1540:​RETURN
510 IF TV<>VA+1 THEN GOSUB 1550:​RETURN
520 IF ST=7 THEN GOSUB 700:​RETURN
530 FOR I=0 TO IN(ST)-1:​NUM=C(ST,​I):​C(CU,​IN(CU))=NUM:​GOSUB 70:​X=X(CU):​Y=Y(IN(CU)):​GOSUB 20:​IN(CU)=IN(CU)+1
540 C(ST,​I)=0:​NEXT I:​IN(ST)=0:​HF=0
550 IF P(ST,​0)=0 THEN RETURN
560 NUM=P(ST,​0):​GOSUB 70:​X=X(ST):​Y=Y(0):​GOSUB 20:​C(ST,​IN(ST))=NUM:​IN(ST)=1
570 FOR I=0 TO 4:​P(ST,​I)=P(ST,​I+1):​NEXT I:​P(ST,​5)=0
580 RETURN
585 REM 
590 IF ST<>7 THEN GOSUB 1560:​RETURN
600 NUM=OD(IN(7)-1):​GOSUB 70:​X=X(CU):​Y=Y(13):​GOSUB 20:​GOSUB 150
610 HF=0
620 RETURN
625 REM 
630 IF ST=7 THEN NUM=OD(IN(7)-1):​GOTO 650
640 NUM=C(ST,​0)
650 GOSUB 70
660 IF VA<>13 THEN GOSUB 1570:​RETURN
670 IF ST=7 THEN GOSUB 700:​RETURN
680 GOSUB 530
690 RETURN
695 REM 
700 X=X(CU):​Y=Y(IN(CU)):​C(CU,​IN(CU))=NUM:​GOSUB 20:​IN(CU)=IN(CU)+1
710 IN(7)=IN(7)-1:​OD(IN(7))=0:​HF=0
720 IF IN(7)=0 THEN COLOR 0:​X=X(7):​Y=Y(13):​FOR I=0 TO 30:​PLOT X+I,​Y:​DRAWTO X+I,​Y+30:​NEXT I:​RETURN
730 NUM=OD(IN(7)-1):​GOSUB 70:​X=X(7):​Y=Y(13):​GOSUB 20
740 RETURN
745 REM 
750 FOR I=0 TO IN(CU)-1:​NUM=C(CU,​I):​GOSUB 70:​X=X(CU):​Y=Y(I):​GOSUB 20:​NEXT I
760 HF=0
770 RETURN
775 REM 
780 NUM=OD(IN(7)-1):​GOSUB 70:​FL=1
785 IF (F(SU)<>VA-1) AND (F(SU)=0) THEN GOSUB 1580:​RETURN
790 IF F(SU)<>VA-1 THEN TV=F(SU):​GOSUB 1550:​RETURN
800 GOSUB 980
810 OD(IN(CU))=0
820 IF IN(CU)=0 THEN GOSUB 720:​RETURN
830 GOSUB 730
835 GOSUB 150
840 RETURN
845 REM 
850 IF P(CU,​0)=0 THEN COLOR 0:​FOR I=0 TO 30:​PLOT X(CU)+I,​Y(0):​DRAWTO X(CU)+I,​Y(0)+30:​GOTO 875
860 FOR I=0 TO 30 STEP 2:​COLOR 0:​PLOT X(CU)+I,​Y(0):​DRAWTO X(CU)+I,​Y(0)+30
870 IF I<30 THEN COLOR 1:​PLOT X(CU)+I+1,​Y(0):​DRAWTO X(CU)+I+1,​Y(0)+30
875 NEXT I:​C(CU,​0)=P(CU,​0)
880 IF P(CU,​0)=0 THEN RETURN
890 NUM=C(CU,​0):​X=X(CU):​Y=Y(0):​GOSUB 70:​GOSUB 20
900 IN(CU)=1
910 FOR I=0 TO 4:​P(CU,​I)=P(CU,​I+1):​NEXT I:​P(CU,​5)=0
920 RETURN
925 REM 
930 IF HF THEN RETURN
935 FL=0
940 IF IN(CU)=0 THEN GOSUB 1510:​RETURN
950 IF CU=7 THEN GOSUB 780:​RETURN
960 NUM=C(CU,​IN(CU)-1):​GOSUB 70
965 IF (F(SU)<>VA-1) AND (F(SU)=0) THEN GOSUB 1580:​RETURN
970 IF F(SU)<>VA-1 THEN TV=F(SU):​GOSUB 1550:​RETURN
980 X=X(7)
990 IF SU=1 THEN Y=Y1
1000 IF SU=2 THEN Y=Y2
1010 IF SU=3 THEN Y=Y3
1020 IF SU=4 THEN Y=Y4
1030 GOSUB 20:​F(SU)=VA
1040 IN(CU)=IN(CU)-1:​IF FL THEN RETURN
1050 C(CU,​IN(CU))=0
1060 IF IN(CU)=0 THEN GOSUB 850:​RETURN
1070 X=X(CU):​Y=Y(IN(CU)-1):​NUM=C(CU,​IN(CU)-1):​GOSUB 70:​GOSUB 20
1080 COLOR 0
1090 FOR I=31 TO 45:​PLOT X(CU),​Y(IN(CU)-1)+I:​DRAWTO X(CU)+30,​Y(IN(CU)-1)+I:​NEXT I
1100 RETURN
1105 REM 
1110 CLR:​DIM TX$(91),​AZ$(7),​C$(13),​C(6,​11),​P(6,​5),​D(51),​OD(23),​F(4),​X(7),​Y(13),​IN(7):​OPEN #1,​4,​0,​"K"
1115 TX$(91)="#":​TX$(1,​1)=" ":​TX$(2)=TX$(1):​C$="A23456789TJQK":​AZ$=TX$
1120 FOR I=1 TO 13:​AZ$=" ":​READ AZ$:​TX$(I*7-6,​I*7)=AZ$:​NEXT I
1150 FOR I=0 TO 6:​FOR J=0 TO 5:​C(I,​J)=0:​P(I,​J)=0:​NEXT J:​FOR J=6 TO 11:​C(I,​J)=0:​NEXT J:​NEXT I
1160 FOR I=0 TO 23:​OD(I)=0:​NEXT I
1170 FOR I=0 TO 4:​F(I)=0:​NEXT I
1180 FOR I=0 TO 7:​X(I)=21+I*32:​Y(I)=I*12:​NEXT I:​X(7)=269
1190 FOR I=8 TO 12:​Y(I)=I*12:​NEXT I
1200 Y1=0:​Y2=32:​Y3=64:​Y4=96:​Y(13)=128
1210 POKE 756,​224
1220 IN=0:​FOR I=1 TO 4:​FOR J=1 TO 13:​D(IN)=100*I+J:​IN=IN+1:​NEXT J:​NEXT I
1225 REM 
1230 FOR I=51 TO 0 STEP -1:​X=INT(RND(0)*I+1):​T=D(X):​D(X)=D(I):​D(I)=T:​NEXT I
1235 REM 
1240 IN=0:​FOR I=1 TO 6:​FOR J=0 TO I-1:​P(I,​J)=D(IN):​IN=IN+1:​NEXT J:​NEXT I
1250 FOR I=0 TO 6:​C(I,​O)=D(IN):​IN=IN+1:​NEXT I
1255 REM 
1260 GRAPHICS 8:​POKE 710,​96:​POKE 752,​1:​COLOR 1:​POKE 709,​15:​POKE 712,​96:​MEM=PEEK(88)+PEEK(89)*256
1280 FOR X=254 TO 258 STEP 2:​PLOT X,​0:​DRAWTO X,​160:​NEXT X
1290 FOR I=0 TO 6:​NUM=C(I,​0):​GOSUB 70:​X=X(I):​Y=Y(0):​GOSUB 20:​NEXT I
1300 FOR I=0 TO 6:​IN(I)=1:​NEXT I:​IN(7)=0
1310 GOSUB 100:​GOSUB 1460
1320 CU=0:​OC=0:​X=X(CU):​GOSUB 150
1325 REM 
1330 POKE 764,​255:​GET #1,​A:​A=A-32*(A>90)
1340 IF A=42 THEN GOSUB 200:​GOTO 1330
1350 IF A=43 THEN GOSUB 240:​GOTO 1330
1360 IF A=78 THEN GOSUB 100:​GOTO 1330
1370 IF A=80 THEN GOSUB 280:​GOTO 1330
1380 IF A=68 THEN GOSUB 410:​GOTO 1330
1390 IF A=70 THEN GOSUB 930:​GOTO 1620
1400 IF A=69 THEN 1420
1410 GOTO 1330
1415 REM 
1420 GOSUB 1600:​? "DO YOU WANT TO END THE GAME? (Y/N)";:​GET #1,​A
1430 IF A<>89 THEN GOSUB 1460:​GOTO 1330
1440 RUN
1450 GOSUB 1600:​END
1460 GOSUB 1600:​? "ARROWS MOVE,​ E=END GAME F=FOUNDATION N=NEXT CARD,​ P=PICK UP CARDS,​ D=DROP";
1470 RETURN
1480 GOSUB 1600:​? "YOU'VE ALREADY PICKED UP A CARD";:​GOTO 1610
1490 GOSUB 1600:​? "THERE ARE NO MORE CARDS IN THE DECK YOU MUST PLAY WITH THE CARDS SHOWING";:​GOTO 1610
1510 GOSUB 1600:​? "THERE ARE NO CARDS HERE TO PICK UP";:​GOTO 1610
1520 GOSUB 1600:​? "YOU DO NOT HAVE ANYCARDS TO DROP";:​GOTO 1610
1530 GOSUB 1600:​? "YOU CAN'T PLAY BLACK ON BLACK";:​GOTO 1610
1540 GOSUB 1600:​? "YOU CAN'T PLAY RED ON RED";:​GOTO 1610
1550 GOSUB 1600:​? "YOU CAN'T DROP A";TX$(VA*7-6,​VA*7):​? "ON TOP OF A";TX$(TV*7-6,​TV*7);:​GOTO 1610
1560 GOSUB 1600:​? "YOU CAN'T DROP CARDS HERE";:​GOTO 1610
1570 GOSUB 1600:​? "YOU CAN ONLY DROP A KING HERE";:​GOTO 1610
1580 GOSUB 1600:​? "START YOUR FOUNDATION WITH AN ACE";:​GOTO 1610
1585 REM 
1590 DATA N ACE,​ TWO,​ THREE,​ FOUR,​ FIVE,​ SIX,​ SEVEN,​N EIGHT,​ NINE,​ TEN,​ JACK,​ QUEEN,​ KING
1595 REM 
1600 POKE 656,​2:​POKE 657,​2:​? CHR$(156);CHR$(156);CHR$(253);:​RETURN
1605 REM 
1610 FOR PAUSE=1 TO 300:​NEXT PAUSE:​GOSUB 1460:​RETURN
1615 REM 
1620 IF F(1)<13 OR F(2)<13 OR F(3)<13 OR F(4)<13 THEN GOTO 1330
1630 GOSUB 1600:​? " CARE TO PLAY AGAIN? (Y/N)";:​GET #1,​A:​IF A<>78 THEN RUN
1640 GRAPHICS 0:​CLR:​END	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!