home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / basic-1.zip / SOLITAIR.BAS < prev    next >
BASIC Source File  |  1987-10-30  |  13KB  |  315 lines

  1. 10 REM $LINESIZE:132
  2. 20 REM ----------------------------------------------------------------------
  3. 30 REM
  4. 40 REM         The Game of Klondyke Solitar
  5. 50 REM         By:  Jeff Littlefield
  6. 60 REM         For: the IBM PC and the Color Graphics Card
  7. 70 REM
  8. 80 REM         FOR PUBLIC USE    MAY NOT BE SOLD
  9. 90 REM         ALL  RIGHTS  RESERVED
  10. 100 REM
  11. 110 REM  Modified by Ken Handzik 11/27/83 to display card suits
  12. 120 REM  Revised by Jeff Littlefield 2/2/84 to give better instructions
  13. 130 REM ---------------------------------------------------------------------
  14. 140 DEFINT  A-Z
  15. 150 FALSE=0:TRUE = NOT FALSE : ABORT = FALSE : WON = FALSE : PARDON$="Pardon me while I shuffle the deck."
  16. 160 DIM DECK$(52), STACK$(7,21),CARD$(52),TOP$(4),STACKPTR(7),VISIPTR(7),XYARR$(82)
  17. 170 NOT.READ=TRUE
  18. 180 SCREEN 0,1,0,0:KEY OFF:COLOR 7,1,1:CLS
  19. 190 PRINT "Would You Like Instructions? ";
  20. 200 A$=INKEY$:IF A$="" THEN 200 ELSE IF A$="y" OR A$="Y" THEN CLS:INSTRUC=TRUE:GOSUB 880
  21. 210 KEY OFF : ON KEY(1) GOSUB 1110
  22. 220 RANDOMIZE(VAL(MID$(TIME$,7,2))+(VAL(MID$(TIME$,4,2))*60))
  23. 230 COLOR 7,1,1:CLS:PRINT PARDON$
  24. 240 IF NOT INSTRUC THEN GOSUB 880 ELSE INSTRUC = FALSE
  25. 250 GOSUB 350                 'SHUFFLE THE DECK
  26. 260 CLS
  27. 270 GOSUB 640                 'PRINT OUT THE PLAYING TABLE
  28. 280 WON = FALSE
  29. 290 GOTO 1130
  30. 300 IF FLAG=1 THEN GOSUB 2590 ELSE GOSUB 2230
  31. 310 IF ABORT THEN ABORT = FALSE : GOTO 290
  32. 320 FLAG=0:GOSUB 2480        'ASK IF THEY WANT TO PLAY AGAIN
  33. 330 IF ABORT THEN ABORT = FALSE : GOTO 290
  34. 340 IF FLAG=1 AND WON THEN 230 ELSE IF FLAG=1 THEN CLS:PRINT PARDON$:GOTO 250 ELSE COLOR 7,0,0:CLS:SYSTEM
  35. 350 Z = 2
  36. 360 FOR I=1 TO 52
  37. 370 IF (I MOD 13) - 1 = 0 THEN RESTORE:Z = Z + 1
  38. 380 READ ZZ$
  39. 390 CARD$(I) = ZZ$+CHR$(Z)
  40. 400 NEXT I
  41. 410 FOR I= 52 TO 1 STEP -1
  42. 420    X=INT(RND(1)*I)+1    'PICK NUMBER FROM 1 TO I
  43. 430    DECK$(I)=CARD$(X)    'PICK THAT CARD OUT OF THE PILE
  44. 440    CARD$(X)=CARD$(I)    'MOVE LAST CARD TO WHERE PREVIOUS ONE WAS
  45. 450 NEXT I
  46. 460 X=1             'DECK COUNTER
  47. 470 FOR I=1 TO 7        'NUMBER OF STACKS
  48. 480   FOR J=1 TO I        'NUMBER OF CARDS IN THAT STACK
  49. 490    STACK$(I,J)=DECK$(X)    'ASSIGN CARDS TO STACK
  50. 500    X=X+1
  51. 510   NEXT J
  52. 520   STACKPTR(I)=I        'SET STACKPTR(I) TO LAST CARD IN EACH STACK
  53. 530   VISIPTR(I)=I        'SAME WITH VISIPTR(I)
  54. 540 NEXT I
  55. 550 DECKPTR=31:ENDDECK=52:DECK$(28)="   ":NC=24
  56. 560 DATA" A"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10"," J"," Q"," K"
  57. 570 FOR I=1 TO 7
  58. 580   STACK$(I,0)="   "
  59. 590 NEXT I
  60. 600 FOR I=1 TO 4
  61. 610   TOP$(I)="   "
  62. 620 NEXT I
  63. 630 RETURN
  64. 640 COLOR 3,1 :LOCATE 1,4:PRINT"TOP:":LOCATE 1,65:PRINT "Time: "
  65. 650 LOCATE 3,1:PRINT"STACKS:"
  66. 660 FOR I=7 TO 1 STEP -1
  67. 670   LOCATE  3,(45-(5*I))
  68. 680   PRINT I;
  69. 690 NEXT I
  70. 700 COLOR 7,1
  71. 710 FOR I=1 TO 7
  72. 720  FOR J=I TO 7
  73. 730    LOCATE (I+3),(45-(J*5))
  74. 740    IF VISIPTR(J)=I THEN C$=STACK$(J,I):GOSUB 2840:PRINT STACK$(J,I);:COLOR 7,1 ELSE FOR X=1 TO 3:PRINT CHR$(254);:NEXT X
  75. 750  NEXT J
  76. 760 NEXT I
  77. 770 COLOR 3,1
  78. 780 LOCATE 10 ,53:PRINT"PILE:";
  79. 790 COLOR 7,1
  80. 800 LOCATE 10,59:C$=DECK$(DECKPTR):GOSUB 2840:PRINT DECK$(DECKPTR);:COLOR 3,1:LOCATE 10,65:PRINT"Count: ";:COLOR 7:PRINT NC;:COLOR 3
  81. 810 LOCATE 11,64:PRINT"Card #: ";:COLOR 7:PRINT DECKPTR-28;"  ";
  82. 820 COLOR 3:LOCATE 12,50:PRINT"COMMAND: __  ";
  83. 830 COLOR 2
  84. 840 LOCATE 24,26:PRINT"Press F1 For Instructions";
  85. 850 COLOR 7
  86. 860 LOCATE 12,59
  87. 870 RETURN
  88. 880 SCREEN 0,1,1,0
  89. 890 CLS:KKKS$="  K L O N D Y K E   S O L I T A I R E  "
  90. 900 LOCATE ,11:COLOR 10:PRINT"The Game Of  ";:COLOR 12,7:PRINT"";:COLOR 5:PRINT KKKS$;:COLOR 0,7:PRINT"":COLOR 10,1
  91. 910 LOCATE 3,1:PRINT"R U L E S :":COLOR 7:LOCATE 4,3:PRINT"1. Cards are played alternating colors on the stack; by suit on the Top."
  92. 920 LOCATE 5,3:PRINT "2. Stacks are played in descending order; Top is in ascending order."
  93. 930 LOCATE 6,3:PRINT "3. Only Kings can be moved to an empty stack; only Aces can be":LOCATE 7,6:PRINT "moved to an empty Top."
  94. 940 LOCATE 8,3:PRINT "4. The Game can be claimed Victory when all cards are uncovered and":LOCATE 9,6:PRINT "no cards are in the pile."
  95. 950 LOCATE 10,3:PRINT"5. Commands are 1 - 2 characters. Illegal moves sound the BUZZER."
  96. 960 LOCATE 11,3:PRINT"6. When you Quit two short beeps warn you of this."
  97. 970 LOCATE 13,1:COLOR 10:PRINT"C O M M A N D S :":COLOR 7
  98. 980 LOCATE 15,10:PRINT"C    Claim Victory"
  99. 990 LOCATE 16,10:PRINT"N    Show the Next Card on the Pile"
  100. 1000 LOCATE 17,10:PRINT"P#   Card on Pile to Stack No. #"
  101. 1010 LOCATE 18,10:PRINT"PT   Card on Pile to Top"
  102. 1020 LOCATE 19,10:PRINT"##   Visible Cards on Stack #1 to Stack #2"
  103. 1030 LOCATE 20,10:PRINT"#T   Bottom Card on Stack #1 to the Top"
  104. 1040 LOCATE 21,10:PRINT"Q    Quit This Game (and Try Again or Exit)"
  105. 1050 LOCATE 22,10:PRINT"F1   For This Screen"
  106. 1060 COLOR 12:LOCATE 23,10:PRINT"Esc  Abort Quit and Return to Present Game
  107. 1070 COLOR 13:LOCATE 25,28:PRINT"Press Any Key To Continue";:COLOR 7
  108. 1080 IF INSTRUC THEN 1110
  109. 1090 SCREEN 0,1,0,0
  110. 1100 KEY (1) ON :RETURN
  111. 1110 KEY (1) OFF : LOCATE ,,0: SCREEN 0,1,0,1
  112. 1120 A$=INKEY$:IF A$="" THEN 1120 ELSE 1090
  113. 1130 FLAG=0:GOSUB 1800:IF FLAG=1 THEN 300
  114. 1140 LOCATE 12,59:PRINT"__  ";:LOCATE 12,59
  115. 1150 K$=INKEY$:IF K$="" THEN LOCATE 1,71:PRINT TIME$;:LOCATE 12,59:GOTO 1150 ELSE PRINT K$;
  116. 1160 IF K$="N" OR K$="n" THEN 1220
  117. 1170 IF K$="P" OR K$="p" THEN 1300
  118. 1180 IF K$>="1"AND K$<="7" THEN 1860
  119. 1190 IF K$="Q" OR K$="q" THEN FLAG=0:GOTO 300
  120. 1200 IF K$="C" OR K$="c" THEN  2610
  121. 1210 SOUND 50,5:GOTO 1140
  122. 1220 IF DECKPTR+3>ENDDECK THEN DECKPTR=28
  123. 1230 X=ENDDECK-28
  124. 1240 IF X <=3 THEN DECKPTR=ENDDECK ELSE DECKPTR=DECKPTR+3
  125. 1250 LOCATE 10,59
  126. 1260 C$=DECK$(DECKPTR):GOSUB 2840:PRINT DECK$(DECKPTR):COLOR 7,1
  127. 1270 LOCATE 11,72:PRINT DECKPTR-28;"  ";
  128. 1280 GOTO 1140
  129. 1290 K$=INKEY$:IF K$="" THEN 1290 ELSE PRINT K$;:RETURN
  130. 1300 GOSUB 1290
  131. 1310 IF(K$="t" OR K$="T") OR (K$>="1" AND K$<="7") THEN 1320 ELSE SOUND 50,5:GOTO 1140
  132. 1320 W$=DECK$(DECKPTR)
  133. 1330 SUIT$=MID$(W$,3,1):SIZE$=MID$(W$,2,1)
  134. 1340 IF K$="T" OR K$="t" THEN GOSUB 1520:GOTO 1420
  135. 1350 K=VAL(K$)
  136. 1360 W1$=STACK$(K,STACKPTR(K))
  137. 1370 SUITST$=MID$(W1$,3,1):SIZEST$=MID$(W1$,2,1)
  138. 1380 FLAG=0:GOSUB 1590:IF FLAG=0 THEN SOUND 50,5 :GOTO 1130
  139. 1390 STACKPTR(K)=STACKPTR(K)+1
  140. 1400 STACK$(K,STACKPTR(K))=W$
  141. 1410 LOCATE STACKPTR(K)+3,(45-(K*5)):C$=W$:GOSUB 2840:PRINT W$:COLOR 7,1
  142. 1420 DECKPTR=DECKPTR-1:GOSUB 1460
  143. 1430 LOCATE 10,59:IF DECKPTR>28 THEN C$=DECK$(DECKPTR):GOSUB 2840:PRINT DECK$(DECKPTR):COLOR 7,1 ELSE PRINT"   "
  144. 1440 LOCATE 11,72:PRINT DECKPTR-28;"  ";
  145. 1450 GOTO 1130
  146. 1460 IF DECKPTR+1=ENDDECK THEN 1500
  147. 1470 FOR I= DECKPTR+2 TO ENDDECK
  148. 1480 DECK$(I-1)=DECK$(I)
  149. 1490 NEXT I
  150. 1500 ENDDECK=ENDDECK-1:NC=NC-1:LOCATE 10,72:PRINT NC;
  151. 1510 RETURN
  152. 1520 IF SUIT$=CHR$(5) THEN N=1:GOTO 1560
  153. 1530 IF SUIT$=CHR$(4) THEN N=2:GOTO 1560
  154. 1540 IF SUIT$=CHR$(3) THEN N=3:GOTO 1560
  155. 1550 N=4
  156. 1560 SIZEST$=MID$(TOP$(N),2,1)
  157. 1570 FLAG=0:GOSUB 1710:IF FLAG=0 THEN SOUND 50,5:GOTO 1130
  158. 1580 TOP$(N)=W$:LOCATE 1,10+(10*(N-1)):C$=W$:GOSUB 2840:PRINT W$:COLOR 7,1:RETURN
  159. 1590 IF(SUIT$=CHR$(3) OR SUIT$=CHR$(4))AND(SUITST$=CHR$(3) OR SUITST$=CHR$(4)) THEN RETURN
  160. 1600 IF(SUIT$=CHR$(5) OR SUIT$=CHR$(6))AND(SUITST$=CHR$(5) OR SUITST$=CHR$(6)) THEN RETURN
  161. 1610 IF SIZE$>"9" THEN 1650
  162. 1620 IF SIZE$="0" AND SIZEST$="J" THEN 1700
  163. 1630 IF SIZE$="9" AND SIZEST$="0" THEN 1700
  164. 1640 IF SIZE$="A" AND SIZEST$="2" THEN 1700
  165. 1650 IF SIZE$="J" AND SIZEST$="Q" THEN 1700
  166. 1660 IF SIZE$="Q" AND SIZEST$="K" THEN 1700
  167. 1670 IF SIZE$="K" AND SIZEST$=" " THEN 1700
  168. 1680 IF SIZEST$<"A" AND (ASC(SIZEST$)-ASC(SIZE$))=1 THEN 1700
  169. 1690 RETURN
  170. 1700 FLAG=1:RETURN
  171. 1710 IF SIZE$="A" AND SIZEST$=" " THEN 1790
  172. 1720 IF SIZE$="2" AND SIZEST$="A" THEN 1790
  173. 1730 IF SIZE$="0" AND SIZEST$="9" THEN 1790
  174. 1740 IF SIZE$="J" AND SIZEST$="0" THEN 1790
  175. 1750 IF SIZE$="Q" AND SIZEST$="J" THEN 1790
  176. 1760 IF SIZE$="K" AND SIZEST$="Q" THEN 1790
  177. 1770 IF SIZE$<"A" AND (ASC(SIZE$)-ASC(SIZEST$))=1 THEN 1790
  178. 1780 RETURN
  179. 1790 FLAG=1:RETURN
  180. 1800 REM  CHECK TO SEE IF THE GAME IS OVER
  181. 1810 FOR I=1 TO 4
  182. 1820 IF MID$(TOP$(I),2,1)<>"K" THEN RETURN
  183. 1830 NEXT I
  184. 1840 REM GAME OVER AND PLAYER WON
  185. 1850 FLAG=1:RETURN
  186. 1860 REM STACK TO STACK MOVE OR STACK TO TOP
  187. 1870 STKNUM1=VAL(K$)
  188. 1880 GOSUB 1290
  189. 1890 IF (K$>="1" AND K$<="7") OR (K$="T" OR K$="t") THEN 1910
  190. 1900 SOUND 50,5:GOTO 1140
  191. 1910 IF K$="t" OR K$="T" THEN W$=STACK$(STKNUM1,STACKPTR(STKNUM1)):GOTO 1930
  192. 1920 W$=STACK$(STKNUM1,VISIPTR(STKNUM1))
  193. 1930 SUIT$=MID$(W$,3,1)
  194. 1940 SIZE$=MID$(W$,2,1)
  195. 1950 IF K$="T" OR K$="t" THEN GOSUB 1520:GOTO 2180
  196. 1960 STKNUM2=VAL(K$)
  197. 1970 W$=STACK$(STKNUM2,STACKPTR(STKNUM2))
  198. 1980 SUITST$=MID$(W$,3,1)
  199. 1990 SIZEST$=MID$(W$,2,1)
  200. 2000 FLAG=0:GOSUB 1590
  201. 2010 IF FLAG=0 THEN SOUND 50,5:GOTO 1140
  202. 2020 IF VISIPTR(STKNUM1)=0 THEN VISIPTR(STKNUM1)=1
  203. 2030 FOR I=VISIPTR(STKNUM1) TO STACKPTR(STKNUM1)
  204. 2040 STACKPTR(STKNUM2)=STACKPTR(STKNUM2)+1
  205. 2050 LOCATE I+3,45-(STKNUM1*5):PRINT"   ";
  206. 2060 STACK$(STKNUM2,STACKPTR(STKNUM2))=STACK$(STKNUM1,I)
  207. 2070 LOCATE STACKPTR(STKNUM2)+3,45-(STKNUM2*5)
  208. 2080 C$ =  STACK$(STKNUM2,STACKPTR(STKNUM2)):GOSUB 2840
  209. 2090 PRINT STACK$(STKNUM2,STACKPTR(STKNUM2));:COLOR 7,1
  210. 2100 NEXT I
  211. 2110 IF VISIPTR(STKNUM1)>0 THEN VISIPTR(STKNUM1)=VISIPTR(STKNUM1)-1
  212. 2120 STACKPTR(STKNUM1)=VISIPTR(STKNUM1)
  213. 2130 IF STACKPTR(STKNUM1)<1 THEN 1130
  214. 2140 LOCATE STACKPTR(STKNUM1)+3,45-(STKNUM1*5)
  215. 2150 C$ =  STACK$(STKNUM1,STACKPTR(STKNUM1)):GOSUB 2840
  216. 2160 PRINT STACK$(STKNUM1,STACKPTR(STKNUM1));:COLOR 7,1
  217. 2170 GOTO 1130
  218. 2180 LOCATE STACKPTR(STKNUM1)+3,45-(STKNUM1*5)
  219. 2190 PRINT"   ";
  220. 2200 IF STACKPTR(STKNUM1)=VISIPTR(STKNUM1) THEN 2110
  221. 2210 STACKPTR(STKNUM1)=STACKPTR(STKNUM1)-1
  222. 2220 GOTO 1130
  223. 2230 REM PRINT OUT THE TABLE
  224. 2240 COLOR 2 : SEEN = FALSE
  225. 2250 LOCATE 24,24:PRINT"Would you like to see the cards? "; :SOUND 1975,.5:GOSUB 2720 : SOUND 1975,.5
  226. 2260 A$=INKEY$:IF A$="" THEN 2260
  227. 2270 IF A$=CHR$(27) THEN ABORT=TRUE : LOCATE 24,24:PRINT SPACE$(40);:COLOR 7 : RETURN :ELSE ABORT=FALSE
  228. 2280 IF A$<>"y" AND A$<>"Y" AND A$<>"N" AND A$<>"n" THEN SOUND 50,5:GOTO 2260
  229. 2290 IF A$="N" OR A$="n" THEN 2460
  230. 2300 SEEN = TRUE : LOCATE 24,24:PRINT "                                    ";
  231. 2310 FOR I=7 TO 1 STEP -1
  232. 2320 X=1
  233. 2330 WHILE VISIPTR(I)>X
  234. 2340 LOCATE X+3,45-(I*5)
  235. 2350 PRINT STACK$(I,X);:X=X+1
  236. 2360 WEND
  237. 2370 NEXT I
  238. 2380 LOCATE 18,50:PRINT"Pile: "
  239. 2390 X=0:RR=18
  240. 2400 FOR I=29 TO ENDDECK
  241. 2410 IF X+56>76 THEN RR=RR+1:X=0
  242. 2420 LOCATE RR,X+56
  243. 2430 IF DECK$(I)="   "THEN 2460 ELSE PRINT DECK$(I);:X=X+4
  244. 2440 NEXT I
  245. 2450 COLOR 7
  246. 2460 RETURN
  247. 2470 COLOR 2
  248. 2480 IF SCR.WIDTH=40 THEN SCR.WIDTH =80:LOCATE 24,15:PRINT"Play Again?";:GOTO 2500 ELSE LOCATE 24,24
  249. 2490 LOCATE 24,24:PRINT"     Do you want to play again?                     ";
  250. 2500 A$=INKEY$:IF A$="" THEN 2500
  251. 2510 IF NOT WON THEN COLOR 7
  252. 2520 IF A$<>CHR$(27) THEN 2560 ELSE IF NOT SEEN AND NOT WON THEN ABORT=TRUE :LOCATE 24,28:PRINT SPACE$(30);:RETURN
  253. 2530 IF WON THEN SOUND 50,5: GOTO 2500
  254. 2540 SOUND 50,5:LOCATE 24,17:PRINT"Cheater... Shame Shame!  You've already seen the cards!";:DT!=2000:GOSUB 2740
  255. 2550 LOCATE 24,17 : PRINT SPACE$(60);:GOTO 2480
  256. 2560 IF A$="y" OR A$="Y" THEN FLAG=1: IF WON THEN GOSUB 3030:RETURN ELSE RETURN
  257. 2570 IF A$="N" OR A$="n" THEN GOSUB 3030:RETURN
  258. 2580 SOUND 50,5:GOTO 2500
  259. 2590 GOSUB 2870
  260. 2600 RETURN
  261. 2610 'CHECK TO SEE IF CLAIMED VICTORY
  262. 2620 FLAG=0
  263. 2630 IF NC>0 THEN 2680
  264. 2640 FOR I=1 TO 7
  265. 2650 IF VISIPTR(I)>1 THEN 2680
  266. 2660 NEXT I
  267. 2670 FLAG=1:GOTO 300
  268. 2680 SOUND 50,5:LOCATE 14,50:PRINT"You Have Not Won Yet!!!"
  269. 2690 DT! = 2000 : GOSUB 2740
  270. 2700 LOCATE 14,50:PRINT SPC(25);
  271. 2710 GOTO 1140
  272. 2720 'DELAY TIME ROUTINE FOR (DT!) MILLISECONDS
  273. 2730 DT!=100
  274. 2740 DV!=DT!*18.2/1000
  275. 2750 DEF SEG = &H40
  276. 2760 WHILE DV!>0
  277. 2770    A! = O
  278. 2780    FOR ID = O TO 3
  279. 2790    A! = A!*256 + PEEK(&H6F-ID)
  280. 2800    NEXT ID
  281. 2810    IF A! <> AOLD! THEN DV! = DV! - 1 : AOLD! = A!
  282. 2820 WEND
  283. 2830 DEF SEG : RETURN
  284. 2840 C$=MID$(C$,3,1)
  285. 2850 IF C$=CHR$(3) OR C$=CHR$(4) THEN COLOR 12,7 ELSE COLOR 0,7
  286. 2860 RETURN
  287. 2870 REM 'DISPLAY WON SCREEN'
  288. 2880 IF NOT.READ THEN FOR I = 1 TO 82 : READ XYARR$(I) : NEXT : NOT.READ=FALSE
  289. 2890 SCREEN 1,0 : COLOR 1,0
  290. 2900 FOR I = 82 TO 1 STEP -1
  291. 2910 FOR J = 1 TO 45
  292. 2920 X=RND(1)*320:Y=RND(1)*200:C=C+1:IF C=4 THEN C=1
  293. 2930 PSET (X,Y),C
  294. 2940 NEXT J
  295. 2950 LL = INT(RND(1)*I)+1
  296. 2960 XYPOS$=XYARR$(LL)
  297. 2970 XYARR$(LL)=XYARR$(I)
  298. 2980 Y = VAL(LEFT$(XYPOS$,1))+8
  299. 2990 X= VAL(RIGHT$(XYPOS$,2))
  300. 3000 LOCATE Y,X:PRINT "*";
  301. 3010 NEXT I
  302. 3020 SCR.WIDTH=40 : WON = TRUE : RETURN
  303. 3030 SCREEN 0,1:WIDTH 80:RETURN
  304. 3040  DATA "002","006","009","010","011","014","018","023","027","030"
  305. 3050  DATA "031","032","035","039","103","105","108","112","114"
  306. 3060  DATA "118","123","127","129","133","135","136","139","204","208"
  307. 3070  DATA "212","214","218","223","225","227","229","233","235","236"
  308. 3080  DATA "237","239","304","308","312","314","318","323","325","327"
  309. 3090  DATA "329","333","335","337","338","339","404","408","412","414"
  310. 3100  DATA "418","423","425","427","429","433","435","438","439","504"
  311. 3110  DATA "509","510","511","515","516","517","524","526","530","531"
  312. 3120  DATA "532","535","539"
  313. DATA "509","510","511","515","516","517","524","526","530","531"
  314. 3120  DATA "532","535","539"
  315.