home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-users-of-norman / CUON_03_(08-1984).d64 / commodities (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  6KB  |  267 lines

  1. 87 Z$="[158]"+""+"[149]"+"[156]"+"[150]"+""
  2. 90 G=13*4096:POKEG+32,0:POKEG+33,0
  3. 100 REM*100*
  4. 110 REM
  5. 120 DIM SN$(6),SA(6),PN$(6),PS(6,6),PA(6),DN(3)
  6. 130 GOSUB 1000
  7. 140 FOR R=1 TO NR
  8. 150 :D1=INT(6*RND(1))+1
  9. 160 :D2=INT(3*RND(1))+1
  10. 170 :D3=INT(3*RND(1))+1: D3=5*2^(D3-1)
  11. 180 :PRINT: PRINT SN$(D1);DN$(D2);D3
  12. 190 :ON D2 GOSUB 5000,5300,5600
  13. 200 :GOSUB 9500
  14. 211 :PRINT "[159]";
  15. 212 :PRINT ""
  16. 220 :PRINT BL$: PRINT BL$: PRINT "[145][145][145]"
  17. 230 NEXT R
  18. 240 FORT=1TO1500:NEXT
  19. 245 GOSUB6000:PRINT: PRINT "ONE MORE ROUND Y/N ?";: GOSUB 8000
  20. 250 IF WK$<>"N" AND WK$<>"Y" THEN PRINT M1$;M2$: GOTO 240
  21. 260 IF WK$="N" THEN LOAD "DRIVER",8
  22. 270 FOR I=1 TO N2: GOSUB 3300: NEXT I
  23. 280 IF N1=0 THEN GOSUB 7000
  24. 285 PRINT "[147]";: GOSUB 2000
  25. 290 GOTO 140
  26. 1000 REM*1000*
  27. 1020 DATA "SILVER","  IND "," GRAIN","  OIL "," GOLD "," BONDS"
  28. 1030 FOR I=1 TO 6: SA(I)=100: READ SN$(I): NEXT I
  29. 1040 DATA "  UP  "," DOWN","  DIV "
  30. 1050 FOR I=1 TO 3: READ DN$(I): NEXT I
  31. 1051 M1$="INVALID - "
  32. 1052 M2$="TYPE Y OR N"
  33. 1053 M3$="MUST BE 1 TO 6"
  34. 1054 M4$="MUST BE 1, 2 OR 3"
  35. 1055 M5$="TYPE B, S OR N"
  36. 1056 M6$="MUST BE A MULTIPLE OF 500"
  37. 1057 PRINT "[147][159]"
  38. 1060 PRINT "HOW MANY PLAYERS?";: GOSUB 8000: N2=VAL(WK$)
  39. 1070 IF N2<1 OR N2>6 THEN PRINT M1$;M3$: GOTO 1060
  40. 1080 IF N2=1 THEN N1=0: GOTO 1120
  41. 1090 PRINT "MAY THE COMPUTER PLAY ALSO... Y/N?";: GOSUB 8000
  42. 1100 IF WK$<>"N" AND WK$<>"Y" THEN PRINT M1$;M2$: GOTO 1090
  43. 1110 N1=0: IF WK$="N" THEN N1=1
  44. 1120 FOR I=1 TO N2
  45. 1130 :FOR J=1 TO 6: PS(I,J)=0: NEXT J
  46. 1140 :PA(I)=5000
  47. 1150 :PRINT "PLAYER";I;"WHAT IS YOUR NAME?": GOSUB 8500
  48. 1155 :PN$(I)=NA$
  49. 1160 :IF LEN(NA$)>20 THEN PRINT "NAME TOO LONG": GOTO 1150
  50. 1165 :IF LEN(NA$)< 1 THEN PRINT "MUST HAVE NAME": GOTO 1150
  51. 1170 NEXT I
  52. 1180 PN$(0)="COMMODORE COMPUTER": PA(0)=2000
  53. 1190 FOR I=1 TO 6: PS(0,I)=500: NEXT I
  54. 1200 GOSUB 3000
  55. 1210 IF N1=0 THEN I=0: GOSUB 4000
  56. 1220 PRINT "HOW MANY COMPLETE ROUNDS BEFORE"
  57. 1230 PRINT "BUYING AND SELLING STOCKS (1-3)?";
  58. 1240 GOSUB 8000: NR=VAL(WK$)
  59. 1250 IF NR<1 OR NR>3 THEN PRINT M1$;M4$: GOTO 1220
  60. 1260 NR=NR*(1-N1+N2): PRINT "[147]";: GOSUB 2000
  61. 1270 BL$="                                       "
  62. 1280 RETURN
  63. 2000 REM*2000*
  64. 2030 FOR I=190 TO 0 STEP -10
  65. 2040 :GN$="   "+STR$(I): GN$="[159]"+RIGHT$(GN$,3)
  66. 2070 :GN$=GN$+"[192][192][192]"
  67. 2080 :FOR J=1 TO 6:Z=0
  68. 2090 ::WK$="[192][192]"
  69. 2100 ::IF SA(J)>I THEN Z=-1:WK$="  [146]"
  70. 2110 ::IF SA(J)=I THEN Z=-1:WK$="[162][162]"
  71. 2120 ::
  72. 2146 IFZTHENWK$=MID$(Z$,J,1)+WK$+"[159]"
  73. 2147 ::IF J<6 THEN WK$=WK$+"[192][192][192]"
  74. 2148 GN$=GN$+WK$+"[195]"
  75. 2150 :NEXT J
  76. 2160 :PRINT GN$
  77. 2170 NEXT I
  78. 2180 PRINT "   ";SN$(1);SN$(2);SN$(3);SN$(4);SN$(5);SN$(6)
  79. 2190 RETURN
  80. 3000 REM*3000*
  81. 3020 FOR I=1 TO N2
  82. 3030 :GOSUB 4000
  83. 3040 :PRINT "YOU MUST BUY SOME STOCK"
  84. 3050 :GOSUB 9000
  85. 3100 :GOSUB 4400
  86. 3110 :IF SN=7 THEN PRINT "INSUFFICIENT FUNDS": GOTO 3050
  87. 3120 :GOSUB 3300
  88. 3130 :IF PA(I)=5000 GOTO 3030
  89. 3140 NEXT I
  90. 3150 RETURN
  91. 3300 REM*3300*
  92. 3320 GOSUB 4000
  93. 3330 PRINT "BUY, SELL OR NOTHING B/S/N ?";: GOSUB 8000
  94. 3340 IF WK$<>"N" AND WK$<>"S" AND WK$<>"B" THEN PRINT M1$;M5$: GOTO 3330
  95. 3350 IF WK$="N" THEN RETURN
  96. 3360 SB$=WK$
  97. 3380 GOSUB 9000
  98. 3430 IF SB$="S" THEN GOSUB 4600
  99. 3440 IF SB$="B" THEN GOSUB 4400
  100. 3450 IF SN<7 THEN GOTO 3300
  101. 3460 IF SB$="S" THEN PRINT "YOU DON'T OWN ENOUGH STOCK"
  102. 3470 IF SB$="B" THEN PRINT "YOU DON'T HAVE ENOUGH MONEY"
  103. 3480 FOR K=1 TO 2000: NEXT K
  104. 3490 GOTO 3300
  105. 4000 REM*4000*
  106. 4020 PRINT "[147]    PORTFOLIO - ";PN$(I)
  107. 4030 WK=LEN(PN$(I))+12: WK$="    "
  108. 4040 FOR K=1 TO WK: WK$=WK$+"[163]": NEXT K
  109. 4050 PRINT WK$
  110. 4060 PRINT " #  DESC  VALUE  HOLDINGS"
  111. 4070 PRINT " [163][160][160][163][163][163][163][160][160][163][163][163][163][163][160][160][163][163][163][163][163][163][163][163]"
  112. 4090 FOR K=1 TO 6
  113. 4100 :WK$="  "+STR$(SA(K)): V$=RIGHT$(WK$,3)
  114. 4130 :WK=PS(I,K): WK$="      "+STR$(WK)
  115. 4140 :WK$=RIGHT$(WK$,7)
  116. 4150 :IF WK<1000 THEN H$=" "+WK$
  117. 4160 :IF WK> 500 THEN H$=LEFT$(WK$,4)+","+RIGHT$(WK$,3)
  118. 4170 :WK$=" "+STR$(K)+" "
  119. 4180 :PRINT WK$;SN$(K);"  ";V$;"   ";H$
  120. 4190 NEXT K
  121. 4200 PRINT: PRINT "CASH ON HAND --- ";PA(I): PRINT
  122. 4210 RETURN
  123. 4400 REM*4400*
  124. 4410 WK=SA(SN)*SQ/100: PT=1
  125. 4420 IF WK>PA(I) THEN SN=7: RETURN
  126. 4430 PA(I)=PA(I)-WK
  127. 4440 PS(I,SN)=PS(I,SN)+SQ
  128. 4450 RETURN
  129. 4600 REM*4600*
  130. 4610 PT=1
  131. 4620 IF SQ>PS(I,SN) THEN SN=7: RETURN
  132. 4630 PA(I)=PA(I)+SA(SN)*SQ/100
  133. 4640 PS(I,SN)=PS(I,SN)-SQ
  134. 4650 RETURN
  135. 5000 REM*5000*
  136. 5010 SA(D1)=SA(D1)+D3
  137. 5020 IF SA(D1)<200 THEN RETURN
  138. 5030 SA(D1)=100
  139. 5040 FOR I=N1 TO N2
  140. 5050 :PS(I,D1)=PS(I,D1)*2
  141. 5060 NEXT I
  142. 5070 RETURN
  143. 5300 REM*5300*
  144. 5310 SA(D1)=SA(D1)-D3
  145. 5320 IF SA(D1)>0 THEN RETURN
  146. 5330 SA(D1)=100
  147. 5340 FOR I=N1 TO N2
  148. 5350 :PS(I,D1)=0
  149. 5360 NEXT I
  150. 5370 RETURN
  151. 5600 REM*5600*
  152. 5610 IF SA(D1)<100 THEN RETURN
  153. 5620 FOR I=N1 TO N2
  154. 5630 :PA(I)=PA(I)+PS(I,D1)*D3/100
  155. 5640 NEXT I
  156. 5650 RETURN
  157. 6000 REM*6000*
  158. 6020 PRINT "[147][159]";
  159. 6030 PRINT "PLAYER NAME          CASH VALUE"
  160. 6040 PRINT "[163][163][163][163][163][163][163][163][163][163][163]          [163][163][163][163][163][163][163][163][163][163]"
  161. 6050 FOR K=N1 TO N2:S(K)=PA(K)
  162. 6060 :FOR J=1 TO 6
  163. 6070 ::PA(K)=PA(K)+SA(J)*PS(K,J)/100
  164. 6080 :NEXT J
  165. 6082 NEXT K
  166. 6084 FOR K=N1 TO N2
  167. 6086 :WK=-1
  168. 6088 :FOR J=N1 TO N2
  169. 6090 ::IF PA(J)>WK THEN WK=PA(J): I=J
  170. 6092 :NEXT J
  171. 6100 :WK$="         "+STR$(PA(I))
  172. 6110 :WK$=RIGHT$(WK$,8): V$=LEFT$(WK$,2)
  173. 6120 :IF V$<>"  " THEN V$=V$+","
  174. 6125 :IF V$= "  " THEN V$=V$+" "
  175. 6130 :V$=V$+MID$(WK$,3,3)
  176. 6140 :IF RIGHT$(V$,1)<>" " THEN V$=V$+","
  177. 6145 :IF RIGHT$(V$,1)= " " THEN V$=V$+" "
  178. 6150 :V$=V$+RIGHT$(WK$,3)
  179. 6160 :PRINT PN$(I);TAB(21);V$: PRINT
  180. 6165 :PA(I)=-1
  181. 6170 NEXT K
  182. 6175 FORK=N1TON2:PA(K)=S(K):NEXT
  183. 6180 RETURN
  184. 7000 REM*7000*
  185. 7020 I=0: PT=0: GOSUB 4000
  186. 7030 FOR SN=1 TO 6: SQ=PS(0,SN)
  187. 7050 :IF SA(SN)<95 AND SQ>0 THEN PRINT "SELL";SQ;SN$(SN): GOSUB 4600
  188. 7060 NEXT SN
  189. 7065 FOR K=1 TO 1500: NEXT K
  190. 7070 IF PA(0)<600 THEN GOSUB 7300: RETURN
  191. 7080 WK=0:SQ=999999
  192. 7090 FOR J=1 TO 6
  193. 7100 :IF SA(J)>105 AND PS(0,J)<SQ THEN WK=J:SQ=PS(0,J)
  194. 7110 NEXT J
  195. 7115 SN=WK
  196. 7120 IF WK=0 THEN GOSUB 7300: RETURN
  197. 7130 SQ=500: GOSUB 4400
  198. 7140 IF SN=7 THEN GOSUB 7300: RETURN
  199. 7150 PRINT"BUY  500 ";SN$(SN)
  200. 7155 FOR K=1 TO 1000: NEXT K
  201. 7160 GOTO 7080
  202. 7300 REM*7300*
  203. 7310 FOR K=1 TO 300 : NEXT K
  204. 7320 IF PT=1 THEN GOSUB 4000
  205. 7325 IF PT=0 THEN PRINT: PRINT "NO TRANSACTIONS"
  206. 7330 FOR K=1 TO 2000: NEXT K
  207. 7340 RETURN
  208. 8000 REM*8000*
  209. 8010 GET WK$: IF WK$="" GOTO 8010
  210. 8020 PRINT"  ";WK$
  211. 8030 RETURN
  212. 8500 REM*8500*
  213. 8510 NA$=""
  214. 8520 GET WK$: IF WK$="" GOTO 8520
  215. 8530 IF WK$=CHR$(13) THEN PRINT: RETURN
  216. 8540 PRINT WK$;
  217. 8550 NA$=NA$+WK$
  218. 8560 IF LEN(NA$)>20 THEN PRINT: RETURN
  219. 8570 GOTO 8520
  220. 8700 REM*8700*
  221. 8710 SQ=0
  222. 8720 GET WK$: IF WK$="" GOTO 8720
  223. 8730 IF WK$=CHR$(13) THEN PRINT: RETURN
  224. 8740 PRINT WK$;: SQ=SQ*10+VAL(WK$)
  225. 8750 IF WK$<"0" OR WK$>"9" THEN SQ=0: PRINT: RETURN
  226. 8760 IF SQ>999999 THEN PRINT: RETURN
  227. 8770 GOTO 8720
  228. 9000 REM*9000*
  229. 9010 PRINT "STOCK#?";: GOSUB 8000: SN=VAL(WK$)
  230. 9020 IF SN<1 OR SN>6 THEN PRINT M1$;M3$: GOTO 9010
  231. 9030 PRINT "QUANTITY? ";: GOSUB 8700
  232. 9040 WK=SQ-INT(SQ/500)*500
  233. 9050 IF SQ=0 OR WK>0 THEN PRINT M1$;M6$: GOTO 9030
  234. 9060 RETURN
  235. 9500 REM*9500*
  236. 9510 S1=32768+766+(D1-1)*6
  237. 9515 FOR K=1 TO 300: NEXT K
  238. 9520 FOR K=0 TO 190 STEP 10
  239. 9530 :WK=64
  240. 9540 :IF SA(D1)>K THEN WK=160
  241. 9550 :IF SA(D1)=K THEN WK=98
  242. 9560 :POKE S1,WK: POKE S1+1,WK
  243. 9570 :S1=S1-40
  244. 9580 NEXT K
  245. 9590 FOR K=1 TO 300: NEXT K
  246. 9600 RETURN
  247. 30000 REM*30000* RENUMBER RTN
  248. 30005 X=1025:Y=10:IN=5
  249. 30010 X1=PEEK(X+4):X2=PEEK(X+5)
  250. 30020 IF X1<>143 OR X2<>42 GOTO 30100
  251. 30030 X1=X+6:X2=0
  252. 30040 X3=PEEK(X1)
  253. 30050 IF X3=42 THEN 30090
  254. 30060 X3=X3-48
  255. 30070 IF X3<0 OR X3>9 THEN PRINT "ERR1":GOTO 30100
  256. 30080 X2=X2*10+X3:X1=X1+1:GOTO 30040
  257. 30090 IF Y<X2 THEN Y=X2:IN=10
  258. 30100 Y2=INT(Y/256):Y1=Y-Y2*256
  259. 30110 POKE X+2,Y1:POKE X+3,Y2:Y=Y+IN
  260. 30120 X=PEEK(X)+256*PEEK(X+1)
  261. 30130 Z=PEEK(X+2)+256*PEEK(X+3)
  262. 30140 IF Z<30000 THEN 30010
  263. 30150 END
  264. 40000 FOR A=1 TO255
  265. 40010 PRINTA,CHR$(A)
  266. 40020 NEXT A
  267.