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!
|
|
|
-
Entry name:Solitaire
-
Category:Games
-
Publisher/Developer:BELLCOM - Public Domain Library
-
Year:1982
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
References
Listing downloads
Downloads
Copyright holder
