Compucolor.org – Virtual Media

Listing of file='LUCIE.BAS;01' on disk='vmedia/chip_13-sector.ccvf'

0 CLEAR 1000
1 OUT 8,255:OUT 8,247
2 DIM DK(52),KD(52),TB(18,15),FO(4)
3 BL$= "                                                  "
10 PLOT 6,2,12,15,27,24
20 GOSUB 1000:REM  HK
30 GOTO 2000:REM   LOGIC FLOW
1000 REM  HK
1005 L1= PEEK (33209):FOR L2= 0TO L1:L3= RND (1):NEXT L2
1007 GOSUB 1820
1010 PLOT 6,6,15,3,15,5
1020 PRINT "COPYRIGHT 1979 BY DONALD R MILLER"
1030 PLOT 6,6,3,7,0:PRINT "LA"
1040 PLOT 3,6,1:PRINT "BELLE"
1045 PLOT 3,6,2:PRINT "LUCIE"
1050 PLOT 6,3,3,13,0
1060 PRINT "A     B     C     D     E     F     G     H     I"
1070 PLOT 6,3,3,13,31
1080 PRINT "J     K     L     M     N     O     P     Q     R"
1090 PLOT 6,1,3,7,4:PRINT "FM:"
1100 PLOT 6,6,3,7,8:PRINT "TO:"
1110 PLOT 6,3
1120 PLOT 2,14,98,242,14,105,19,105,19,98,14,98,255
1130 PLOT 2,14,82,242,14,89,19,89,19,82,14,82,255
1140 PLOT 6,7,3,5,3:PRINT "s"
1150 PLOT 6,1,3,5,11:PRINT "d"
1160 PLOT 3,5,20:PRINT "h"
1170 PLOT 6,7,3,5,28:PRINT "c"
1180 X9= 0:Y9= 0:GOSUB 40400
1190 Y9= 8:GOSUB 40400
1200 Y9= 17:GOSUB 40400
1210 Y9= 25:GOSUB 40400
1220 PLOT 6,3,3,5,24:PRINT "MOVES"
1230 PLOT 6,1,3,6,30:PRINT "PASS"
1240 PLOT 6,6
1250 PLOT 2,11,19,242,11,24,18,24,18,19,11,19,255
1260 MO= - 1
1270 PLOT 6,7,3,7,31:PRINT 1
1280 PA= 1
1300 GOSUB 3000
1400 PLOT 3,15,5,6,2:PRINT LEFT$ (BL$,34)
1490 N= 1
1500 FOR L1= 1TO 17
1510 FOR L2= 1TO 3
1520 TB(L1,L2)= DK(N)
1530 N= N+ 1
1540 NEXT L2,L1
1550 TB(18,1)= DK(52)
1600 FOR L1= 1TO 18
1610 FOR L2= 3TO 1STEP - 1
1620 X= TB(L1,L2)
1625 IF X= 0THEN 1680
1630 X9= L1* 6+ 5
1640 IF L1> 9THEN X9= X9- 54
1660 IF L1> 9THEN 1700
1662 IF L2= 1THEN 1740
1664 IF L2= 2THEN 1770
1666 IF L2= 3THEN Y9= 1
1670 GOSUB 40000
1680 NEXT L2,L1
1690 GOTO 1800
1700 IF L2= 1THEN 1900
1710 IF L2= 2THEN 1930
1720 IF L2= 3THEN Y9= 24
1725 IF L2= 1AND L1= 18THEN Y9= 24
1730 GOTO 1670
1740 IF TB(L1,2)= 0THEN 1755
1745 Y9= 3
1746 IF TB(L1,3)= 0THEN Y9= 2
1750 GOTO 1670
1755 IF TB(L1,3)= 0THEN Y9= 1:GOTO 1670
1760 Y9= 2
1765 GOTO 1670
1770 IF TB(L1,3)= 0THEN Y9= 1:GOTO 1670
1775 Y9= 2
1780 GOTO 1670
1800 PLOT 6,2
1810 RETURN
1820 PLOT 6,3,3,12,12
1825 PRINT "BUILD UP FOUNDATION (ON LEFT) FROM ACES TO KINGS"
1830 PLOT 3,12,13
1835 PRINT "AND CAN BUILD DOWN IN SEQUENCE BY SUIT IN COLUMNS"
1840 PLOT 3,12,14
1845 PRINT "A TO R.  ONLY KINGS CAN BE MOVED TO OPEN COLUMNS."
1850 PLOT 3,12,16
1855 PRINT "MOVE ONLY ONE CARD AT A TIME, BY ENTERING COLUMN"
1860 PLOT 3,12,17
1865 PRINT "A TO R.  TO MOVE TO FOUNDATION, HIT RETURN FOR"
1870 PLOT 3,12,18
1875 PRINT "'TO' LOCATION.  TO QUIT OR RESHUFFLE, ENTER S&S."
1899 RETURN
1900 IF TB(L1,2)= 0THEN 1915
1905 Y9= 22
1906 IF TB(L1,3)= 0THEN Y9= 23
1910 GOTO 1725
1915 IF TB(L1,3)= 0THEN Y9= 24:GOTO 1725
1920 Y9= 23
1925 GOTO 1725
1930 IF TB(L1,3)= 0THEN Y9= 24:GOTO 1725
1935 Y9= 23
1940 GOTO 1725
1999 RETURN
2000 REM
2010 FOR L1= 1TO 4
2015 IF FO(L1)= 0THEN 2030
2020 IF FO(L1)/ 13= INT (FO(L1)/ 13)THEN 2040
2030 GOTO 2100:REM  NOT A WINNER
2040 NEXT L1
2050 REM  A WINNER
2060 PLOT 3,0,15,6,70:PRINT "YOU WIN !"
2070 GOTO 9020
2100 MO= MO+ 1
2105 IF MO< > 2THEN 2120
2107 PLOT 6,2
2110 FOR L1= 12TO 18
2111 PLOT 3,12,L1
2112 PRINT BL$
2114 NEXT L1
2120 PLOT 6,3,3,6,26
2130 PRINT RIGHT$ ((STR$ (MO)),3)
2200 PLOT 6,1,3,0,15
2210 OUT 8,255
2220 INPUT "FROM:";Q1$
2230 OUT 8,247
2235 PLOT 3,0,15,11
2240 Q1$= LEFT$ (Q1$,1)
2242 PLOT 6,1,3,8,6:PRINT Q1$
2250 IF Q1$> "S"OR Q1$< "A"THEN SW= 1:GOTO 2900
2260 PLOT 6,6,3,0,15
2270 OUT 8,255
2280 INPUT "TO:";Q2$
2290 OUT 8,247
2295 PLOT 3,0,15,11
2300 Q2$= LEFT$ (Q2$,1)
2310 PLOT 6,6,3,8,10:PRINT Q2$
2320 IF Q2$= "0"THEN 2350
2330 IF Q2$> "S"OR Q2$< "A"THEN SW= 2:GOTO 2900
2340 IF Q1$= "S"AND Q2$= "S"THEN 9000
2350 IF Q2$= Q1$THEN SW= 3:GOTO 2900
2352 IF Q1$= "S"AND Q2$< > "S"THEN SW= 10:GOTO 2900
2354 IF Q2$= "S"AND Q1$< > "S"THEN SW= 10:GOTO 2900
2360 IF Q2$= "0"THEN 4000:REM  TO FOUNDATION
2370 GOTO 5000
2900 PLOT 6,6,3,0,15
2910 ON SWGOTO 2961,2962,2963,2964,2965,2966,2967,2968,2969,2970
2920 FOR L1= 0TO 999:NEXT L1
2930 PLOT 3,0,15,11
2932 IF MO> 0THEN MO= MO- 1
2940 IF SW= 1THEN 2200
2950 IF SW= 2THEN 2260
2960 GOTO 2100
2961 PRINT "'FROM' NOT A TO S":GOTO 2920
2962 PRINT "'TO' NOT A TO S OR RETURN":GOTO 2920
2963 PRINT "'FROM' AND 'TO' ARE SAME":GOTO 2920
2964 PRINT "SUIT SEQUENCE NO GOOD":GOTO 2920
2965 PRINT "'TO' LOCATION OCCUPIED":GOTO 2920
2966 PRINT "'FROM' AND 'TO' SUIT NOT SAME":GOTO 2920
2967 PRINT "NO CARD AT 'FROM' LOCATION":GOTO 2920
2968 PRINT "NO CARD AT 'TO' LOCATION":GOTO 2920
2969 PRINT "SUIT SEQUENCE NO GOOD":GOTO 2920
2970 PRINT "'FROM' AND 'TO' NOT COMPATIBLE":GOTO 2920
2999 RETURN
3000 REM
3010 OUT 8,255
3020 PLOT 6,65,3,27,23
3030 PRINT "HIT RETURN"
3040 POKE 33278,0
3050 I= RND (1)
3060 IF PEEK (33278)= 0THEN 3050
3065 OUT 8,247
3070 PLOT 6,70,3,27,23
3080 PRINT "SHUFFLING "
3090 PLOT 3,64,0
3100 GOSUB 40500
3110 PLOT 3,27,23:PRINT "          "
3120 FOR L1= 1TO 18
3130 FOR L2= 1TO 15
3140 TB(L1,L2)= 0
3150 NEXT L2,L1
3190 RETURN
4000 REM  TO FOUNDATION
4010 FM= ASC (Q1$)- 64
4020 F= TB(FM,1)
4030 F1= F
4032 FOR L1= 1TO 3:IF F1> 13THEN F1= F1- 13:NEXT L1
4035 F2= INT ((F- 1)/ 13)+ 1
4040 IF FO(F2)+ 1= F1THEN 4100
4050 REM  SEQUENCE NOGOOD
4060 SW= 4:GOTO 2900
4100 REM  OK TO MOVE CARD
4110 X9= 0
4120 Y9= F2* 8- 8
4122 IF F2< 3THEN 4130
4124 Y9= F2* 8- 8+ 1
4130 X= F
4135 SV= 0
4140 GOSUB 40000
4145 FO(F2)= F1
4146 FC= FC+ 1
4150 X9= FM* 6+ 5
4160 IF FM> 9THEN X9= X9- 54
4170 IF FM> 9THEN 4500
4174 SV= 1
4180 Y9= 1
4190 FOR L1= 2TO 15
4200 IF TB(FM,L1)= 0THEN 4250
4210 Y9= Y9+ 1
4220 NEXT L1
4250 BC$= " "
4255 PLOT 6,0
4260 GOSUB 40300
4280 X9= FM* 6+ 5
4290 Y9= 0
4300 FOR L1= 1TO 14
4310 TB(FM,L1)= TB(FM,L1+ 1)
4320 NEXT L1
4330 TB(FM,15)= 0
4340 FOR L1= 1TO 15
4350 IF TB(FM,L1)= 0THEN 4400
4360 Y9= Y9+ 1
4370 NEXT L1
4400 X= TB(FM,1)
4410 GOSUB 40000
4430 GOTO 2000
4500 REM  BOTTOM ROW
4505 SV= 2
4510 Y9= 24
4520 FOR L1= 2TO 15
4530 IF TB(FM,L1)= 0THEN 4560
4540 Y9= Y9- 1
4550 NEXT L1
4560 BC$= " "
4570 PLOT 6,0
4580 GOSUB 40300
4590 X9= FM* 6+ 5
4600 IF FM> 9THEN X9= X9- 54
4610 Y9= 25
4620 FOR L1= 1TO 14
4630 TB(FM,L1)= TB(FM,L1+ 1)
4640 NEXT L1
4650 TB(FM,15)= 0
4660 FOR L1= 1TO 15
4670 IF TB(FM,L1)= 0THEN 4400
4680 Y9= Y9- 1
4690 NEXT L1
4700 GOTO 4400
5000 REM  TO TABLEAU
5010 FM= ASC (Q1$)- 64
5020 F= TB(FM,1)
5030 F1= F
5040 FOR L1= 1TO 3:IF F1> 13THEN F1= F1- 13:NEXT L1
5050 F2= INT ((F- 1)/ 13)+ 1
5060 T3= ASC (Q2$)- 64
5070 T= TB(T3,1)
5080 T1= T
5090 FOR L1= 1TO 3:IF T1> 13THEN T1= T1- 13:NEXT L1
5100 T2= INT ((T- 1)/ 13)+ 1
5110 IF F1= 13THEN 6000
5120 IF F1= 0THEN SW= 7:GOTO 2900
5130 IF T1= 0THEN SW= 8:GOTO 2900
5140 IF F2< > T2THEN SW= 6:GOTO 2900
5150 IF F1+ 1< > T1THEN SW= 9:GOTO 2900
5160 X9= T3* 6+ 5
5170 IF T3> 9THEN X9= X9- 54
5180 IF T3> 9THEN 5400
5185 SV= 1
5190 Y9= 2
5200 FOR L1= 2TO 15
5210 IF TB(T3,L1)= 0THEN 5240
5220 Y9= Y9+ 1
5230 NEXT L1
5240 X= F
5250 GOSUB 40000
5260 FOR L1= 15TO 2STEP - 1
5270 TB(T3,L1)= TB(T3,L1- 1)
5280 NEXT L1
5290 TB(T3,1)= F
5390 GOTO 4150
5400 REM  BOTTOM ROW
5405 SV= 2
5410 Y9= 23
5420 FOR L1= 2TO 15
5430 IF TB(T3,L1)= 0THEN 5460
5440 Y9= Y9- 1
5450 NEXT L1
5460 GOTO 5240
6000 REM  FROM CARD IS A KING
6010 IF TB(T3,1)< > 0THEN SW= 5:GOTO 2900
6020 X9= T3* 6+ 5
6030 IF T3> 9THEN X9= X9- 54
6040 Y9= 1
6050 IF T3> 9THEN Y9= 24
6060 X= F
6065 SV= 0
6070 GOSUB 40000
6080 TB(T3,1)= X
6090 GOTO 4150
9000 REM  SHUFFLE OR QUIT
9010 GOTO 10000
9020 FOR L1= 0TO 999:NEXT L1
9030 PLOT 3,0,15,11
9040 OUT 8,255
9050 PLOT 3,0,15,6,65
9060 INPUT "PLAY ANOTHER GAME (Y/N) ?";Q$
9070 OUT 8,247
9080 PLOT 3,0,15,11
9090 Q$= LEFT$ (Q$,1)
9100 IF Q$< > "Y"THEN 9900
9110 FOR L1= 1TO 52:KD(L1)= 0:NEXT L1
9120 FOR L1= 1TO 4:FO(L1)= 0:NEXT L1
9130 FOR L1= 1TO 18:FOR L2= 1TO 15
9140 TB(L1,L2)= 0
9150 NEXT L2,L1
9160 FC= 0
9170 SV= 0
9290 GOTO 10
9900 PLOT 6,2,27,11,15
9910 LOAD "MENU":RUN
9920 END
10000 FOR L1= 0TO 999:NEXT L1
10010 PLOT 3,0,15,11
10020 OUT 8,255
10030 PLOT 3,0,15,6,1
10040 INPUT "SHUFFLE AND MAKE ANOTHER PASS (Y/N) ?";Q$
10050 OUT 8,247
10060 PLOT 3,0,15,11
10070 IF LEFT$ (Q$,1)< > "Y"THEN 9040
10075 SV= 0
10080 PA= PA+ 1
10090 PLOT 3,7,31,6,7
10095 IF PA> 3THEN 10200
10100 PRINT RIGHT$ ((STR$ (PA)),2)
10110 FOR L1= 1TO 30
10120 PLOT 3,11,L1
10130 PRINT "                                                     "
10132 NEXT L1
10135 FOR L1= 1TO 52:KD(L1)= 1:DK(L1)= 0:NEXT L1
10140 FOR L1= 1TO 18
10150 FOR L2= 1TO 15
10160 L5= TB(L1,L2)
10162 IF L5= 0THEN 10170
10164 KD(L5)= 0
10170 NEXT L2,L1
10180 GOSUB 1300
10190 GOTO 2000
10200 PLOT 6,1,3,0,15
10210 PRINT "YOU WILL EXCEED THREE PASSES"
10220 FOR L1= 0TO 999:NEXT L1
10230 PLOT 3,0,15,11
10240 PLOT 6,68,3,7,31
10250 GOTO 10100
40000 REM  DRAW CARD AT X9,Y9, FROM X (1-52)
40001 IF X= 0THEN RETURN
40002 IF SV< > 0THEN 40280
40005 IF X> 39THEN Q= X- 39:P$= "c":PLOT 6,56:GOTO 40040
40010 IF X> 26THEN Q= X- 26:P$= "h":PLOT 6,57:GOTO 40040
40020 IF X> 13THEN Q= X- 13:P$= "d":PLOT 6,57:GOTO 40040
40030 Q= X:P$= "s":PLOT 6,56
40040 IF SV< > 0THEN 40180
40045 PLOT 27,10:FOR II= 0TO 4:PLOT 3,X9+ II,Y9:PRINT "       ":NEXT II
40050 IF Q> 9THEN 40120
40060 IF Q> 5THEN 40130
40070 IF Q> 3THEN 40140
40080 IF Q= 1OR Q= 5OR Q= 7THEN 40150
40090 IF Q= 2OR Q= 8THEN 40160
40100 IF Q= 3OR Q= 9OR Q> 10THEN 40170
40110 GOTO 40180
40120 PLOT 3,X9+ 1,Y9+ 1:PRINT P$;P$;P$;P$;P$:PLOT 3,X9+ 3,Y9+ 1:PRINT P$;P$;P$;P$;P$:GOTO 40100
40130 PLOT 3,X9+ 1,Y9+ 1:PRINT P$" "P$" "P$:PLOT 3,X9+ 3,Y9+ 1:PRINT P$" "P$" "P$:GOTO 40080
40140 PLOT 3,X9+ 1,Y9+ 1:PRINT P$"   "P$:PLOT 3,X9+ 3,Y9+ 1:PRINT P$"   "P$:GOTO 40080
40150 PLOT 3,X9+ 2,Y9+ 3:PRINT P$:GOTO 40180
40160 PLOT 3,X9+ 2,Y9+ 2:PRINT P$" "P$:GOTO 40180
40170 PLOT 3,X9+ 2,Y9+ 1:PRINT P$" "P$" "P$
40180 IF Q= 1THEN 40182
40181 GOTO 40190
40182 IF SV= 2THEN 40184
40183 PLOT 3,X9,Y9:PRINT "A"
40184 IF SV= 1THEN 40186
40185 PLOT 3,X9+ 4,Y9+ 6:PRINT "A"
40186 GOTO 40270
40190 IF Q> 9THEN 40210
40200 IF SV= 2THEN 40203
40202 PLOT 3,X9,Y9:PRINT RIGHT$ ((STR$ (Q)),1)
40203 IF SV= 1THEN 40205
40204 PLOT 3,X9+ 4,Y9+ 6:PRINT RIGHT$ ((STR$ (Q)),1)
40205 GOTO 40270
40210 PLOT 27,24:IF Q> 10THEN 40230
40220 IF SV= 2THEN 40223
40222 PLOT 3,X9,Y9:PRINT RIGHT$ ((STR$ (Q)),2)
40223 IF SV= 1THEN 40230
40224 PLOT 3,X9+ 3,Y9+ 6:PRINT RIGHT$ ((STR$ (Q)),2)
40226 GOTO 40270
40230 IF Q= 11THEN CD$= "J":GOTO 40260
40240 IF Q= 12THEN CD$= "Q":GOTO 40260
40250 CD$= "K"
40260 IF SV= 2THEN 40264
40262 PLOT 3,X9,Y9:PRINT CD$
40264 IF SV= 1THEN 40267
40266 PLOT 3,X9+ 4,Y9+ 6:PRINT CD$
40267 IF SV< > 0THEN 40270
40268 PLOT 3,X9+ 2,Y9+ 3:PRINT CD$
40270 PLOT 27,24
40272 IF X9< 11THEN RETURN
40274 IF Y9> 15THEN PLOT 3,X9,Y9+ 6:PRINT P$:RETURN
40276 PLOT 3,X9+ 4,Y9:PRINT P$:RETURN
40280 IF SV= 1AND Y9> 8THEN BC$= " ":PLOT 6,63:GOSUB 40300:GOTO 40286
40282 IF SV= 2AND Y9< 16THEN BC$= " ":PLOT 6,63:GOSUB 40300:GOTO 40286
40284 SV= 0
40286 GOTO 40005
40300 REM  DRAW BACK OF CARD FROM X9,Y9,BC$(PATTERN)
40310 BC$= BC$+ BC$+ BC$+ BC$+ BC$
40312 IF Y9> 16THEN 40362
40314 IF Y9< 9THEN L4= 6:GOTO 40320
40316 L4= 14- Y9
40320 FOR I= 0TO L4
40330 PLOT 3,X9,Y9+ I
40340 PRINT BC$
40350 NEXT I
40355 PLOT 3,64,0
40360 RETURN
40362 IF Y9> 22THEN L4= 6:GOTO 40320
40364 L4= Y9- 17
40366 FOR I= L4TO 0STEP - 1
40368 PLOT 3,X9,Y9+ I
40370 PRINT BC$
40372 NEXT I
40374 GOTO 40355
40400 REM  DRAW BLUE BORDER AROUND EMPTY CARD FROM X9,Y9
40410 PLOT 6,4
40420 Y8= Y9+ 6
40430 Y8= 31- Y8
40440 Y8= 4* Y8
40450 X8= X9* 2
40460 PLOT 2,X8,Y8,242,X8,Y8+ 27,X8+ 9,Y8+ 27,X8+ 9,Y8,X8,Y8,255
40465 PLOT 3,64,0
40470 RETURN
40480 REM  SHUFFLE DECK INTO DK(1-52), USE KD TO STOCK DUPES
40490 IF FT= 1THEN 40510
40495 FT= 1
40500 REM
40510 FOR I= 1TO 52- FC
40520 DK(I)= INT (52* RND (1)+ 1)
40530 IF KD(DK(I))= 1THEN 40520
40540 KD(DK(I))= 1
40550 NEXT I
40560 RETURN