home *** CD-ROM | disk | FTP | other *** search
- 100 REM AUTHOR: ROBERT W. BAKER
- 101 REM MODIFIED FOR BASIC-E (BARF) BY R S MASON 9-25-77
- 102 REM MODIFIED FOR MICROSOFT DISK BASIC BY ZOSO
- 103 REM THIS PROGRAM REQUIRES CP/M WITH 26K OF FREE MEMORY (OVERHEAD)
- 104 REM
- 105 REM THIS GAME IS WRITTEN TO PROVIDE A REALISTIC MODEL OF THE
- 106 REM ACTUAL STOCK MARKET RATHER THAN A COMPLETELY RANDOMIZED
- 107 REM HAPPENING OF EVENTS.
- 108 REM
- 109 REM
- 110 PRINT CHR$(26) : WIDTH 120
- 111 PRINT "WHAT IS YOUR LUCKY NUMBER (1 TO 25000)"
- 112 INPUT A
- 113 IF A<1 OR A>25000 OR A<>INT(A) THEN PRINT "DO IT RIGHT !" : GOTO 111
- 114 PRINT CHR$(26)
- 115 PRINT "STAND BY FOR A FEW MOMENTS"
- 116 A=A MOD 97
- 117 FOR X=1 TO A : X1=RND(1) : X1=RND(X) : NEXT X
- 118 DIM A(36,12),U(11,9),E(11,9),K(10),T(10),F(9),M(4,12),X(4)
- 119 FOR I=1 TO 36: FOR J=1 TO 12: READ A(I,J): NEXT J: NEXT I
- 120 FOR I=1 TO 11: FOR J=1 TO 9: READ U(I,J): NEXT J: NEXT I
- 121 FOR I=1 TO 11: FOR J=1 TO 9: READ E(I,J): NEXT J: NEXT I
- 122 FOR N=1 TO 10
- 123 READ K(N)
- 124 NEXT N
- 125 V$="HIB XP SP ODMRD SO BT KA ZE BPL"
- 126 Y$="$5 $1 NONE$4 $7 NONENONE$2 $6 $3 "
- 127 REM
- 128 REM DATA TO SIMULATE REAL LIFE STOCK MARKET
- 129 REM
- 130 DATA 1,0,0,0,0,0,0,0,0,5,0,0
- 131 DATA 0,0,0,0,0,0,-25,0,0,0,0,0
- 132 DATA 1,0,0,0,0,0,0,15,0,0,0,0
- 133 DATA 0,0,0,0,-5,0,0,0,0,0,0,0
- 134 DATA 1,0,0,0,0,0,0,0,0,5,0,0
- 135 DATA 0,0,0,0,0,0,5,0,0,0,0,0
- 136 DATA 1,0,0,0,0,0,10,0,0,0,0,0
- 137 DATA 0,0,10,0,0,0,0,0,0,0,0,0
- 138 DATA 1,0,0,0,0,0,15,0,0,0,0,0
- 139 DATA 0,0,-5,0,0,0,0,0,0,0,0,0
- 140 DATA 1,8,5,5,0,0,0,7,0,0,0,0
- 141 DATA 0,0,0,0,0,0,0,0,-25,0,0,0
- 142 DATA 1,0,0,0,0,0,0,0,10,0,0,0
- 143 DATA 0,0,-10,0,0,0,0,0,0,0,0,0
- 144 DATA 1,0,5,0,0,0,0,0,0,0,0,0
- 145 DATA 0,10,0,0,0,0,0,0,0,0,1,0
- 146 DATA 1,0,0,0,0,17,0,0,0,0,0,0
- 147 DATA 0,0,0,0,0,-15,0,0,0,0,0,0
- 148 DATA 1,0,0,0,0,0,0,0,10,0,0,0
- 149 DATA 0,0,0,0,0,0,0,-15,0,0,0,0
- 150 DATA 1,0,0,0,0,0,0,10,0,0,0,0
- 151 DATA 0,0,0,0,0,0,0,-15,0,0,0,0
- 152 DATA 1,0,0,-8,0,8,0,0,5,0,0,0
- 153 DATA 0,-10,0,0,0,0,0,0,0,0,0,0
- 154 DATA 1,8,0,0,0,0,0,0,0,0,0,0
- 155 DATA 0,0,0,0,0,0,0,-10,0,0,0,0
- 156 DATA 1,0,0,3,0,0,0,0,0,4,0,0
- 157 DATA 0,-8,0,0,0,0,0,0,0,0,0,0
- 158 DATA 1,0,0,0,5,0,0,0,0,0,0,0
- 159 DATA 0,0,0,0,0,-10,0,0,0,0,0,0
- 160 DATA 1,0,0,0,0,0,0,10,0,0,0,0
- 161 DATA 0,-8,-5,0,0,0,0,-7,0,0,0,0
- 162 DATA 1,10,0,0,0,0,0,0,0,0,0,0
- 163 DATA 0,0,0,0,0,0,0,0,0,-14,0,0
- 164 DATA 1,-10,0,0,0,0,0,0,0,0,0,0
- 165 DATA 0,0,0,0,0,0,-5,0,0,0,0,0
- 166 DATA -2,-10,7,-9,-2,-9,-7,-16,-4
- 167 DATA 26,16,25,8,-14,21,14,-4,17
- 168 DATA 18,23,11,12,46,18,-5,34,15
- 169 DATA 23,28,-2,11,56,19,30,29,14
- 170 DATA 20,15,15,7,-20,15,13,-10,12
- 171 DATA 17,21,13,-2,37,23,23,19,14
- 172 DATA 19,24,17,9,-5,26,13,-7,15
- 173 DATA 11,18,14,11,67,15,22,18,13
- 174 DATA 13,31,1,14,-11,18,18,-14,10
- 175 DATA 14,-8,19,1,-9,25,-10,13,19
- 176 DATA 24,24,23,20,51,27,38,33,18
- 177 DATA 12,14,13,10,10,20,21,25,8
- 178 DATA 7,-6,10,-10,30,6,-19,22,-2
- 179 DATA 9,10,7,-5,-20,12,21,18,7
- 180 DATA 7,8,5,-6,-40,3,16,-14,4
- 181 DATA 8,6,4,-4,40,8,4,-12,3
- 182 DATA 6,4,3,3,-15,5,8,-8,5
- 183 DATA 5,7,-1,-3,45,6,-10,10,4
- 184 DATA -2,6,-3,-8,-20,7,10,14,6
- 185 DATA 11,11,-5,-7,30,10,-11,-18,-4
- 186 DATA -5,13,-8,6,25,4,18,-22,-4
- 187 DATA -8,-10,-10,-15,-20,-20,-23,-25,-7
- 188 DATA 5,1,0,4,7,0,0,2,6,3
- 189 REM
- 190 REM SECURITY NAMES
- 191 REM
- 192 A$="HIGHWAY IMPROVEMENT BONDS"
- 193 B$="X-PANDO CORPORATION"
- 194 C$="SEASIDE PROPERTIES INC."
- 195 D$="OLD DOG MUTUAL FUND"
- 196 E$="RUBBLE DEVELOPMENT"
- 197 F$="SLIPPERY OIL COMPANY"
- 198 G$="BUMPY TRANSPORT CO."
- 199 H$="KRASH AUTO COMPANY"
- 200 I$="ZAP ELECTRONICS "
- 201 J$="BLINKEY POWER & LIGHT CO."
- 202 REM
- 203 REM
- 204 PRINT "WANT INSTRUCTIONS";
- 205 INPUT R$
- 206 IF LEFT$(R$,1)="N" THEN 230
- 207 IF LEFT$(R$,1)<>"Y" THEN 205
- 208 PRINT CHR$(26)
- 209 PRINT "THE MAIN OBJECT OF BLACK FRIDAY IS TO SHREWDLY INVEST $5000"
- 210 PRINT"IN THE GAME'S 10 SECURITIES, BUYING AND SELLING EACH YEAR FOR"
- 211 PRINT"A MAXIMUM OF 10 YEARS (ROUNDS) IN AN ATTEMPT TO BECOME"
- 212 PRINT"THE WEALTHIEST PLAYER."
- 213 PRINT
- 214 PRINT"EACH YEAR ALL PLAYERS WILL RECEIVE DIVIDENDS ON EVERY PAYING"
- 215 PRINT"STOCK WHICH IS WORTH $50 OR MORE."
- 216 PRINT
- 217 PRINT"IF THE VALUE OF ANY STOCK FALLS TO 0,THAT STOCK GOES BANKRUPT"
- 218 PRINT"AND ALL SHARES ARE SURRENDERED.THE VALUE OF THE STOCK IS THEN"
- 219 PRINT"ESTABLISHED AT $100. IF THE VALUE OF ANY STOCK REACHES $150,"
- 220 PRINT"THERE WILL BE A STOCK SPLIT."
- 221 PRINT
- 222 PRINT"A TABLE WILL BE PRINTED EACH YEAR GIVING THE CHANGE IN VALUE"
- 223 PRINT"OF EACH STOCK, THE PRESENT PRICE, AND THE NUMBER OF SHARES"
- 224 PRINT"EACH PLAYER OWNS OF EVERY STOCK. ALSO, ANY DIVIDENDS RECEIVED"
- 225 PRINT"FOR THE YEAR WILL BE SHOWN ALONG WITH EACH PLAYERS TOTAL CASH"
- 226 PRINT
- 227 PRINT "PRESS SPACE BAR TO PLAY"
- 228 WAIT 0,1,1
- 229 PRINT CHR$(26)
- 230 PRINT CHR$(26)
- 231 PRINT"AVAILABLE SECURITIES, ABBREVIATION, DIVIDENDS PER SHARE"
- 232 PRINT
- 233 FOR N=1 TO 10
- 234 GOSUB 417
- 235 PRINT S$,MID$(V$,3*N-2,3),MID$(Y$,4*N-3,4)
- 236 NEXT N
- 237 PRINT
- 238 INPUT "NUMBER OF PLAYERS (1 TO 4)="; P
- 239 IF P>4 THEN 243
- 240 IF P<=0 THEN 243
- 241 FOR I=1 TO 4: FOR J=1 TO 12: M(I,J)=0: NEXT J: NEXT I
- 242 INPUT "NUMBER OF YEARS (3 TO 10)="; S
- 243 IF S<3 THEN 249
- 244 IF S>10 THEN 249
- 245 PRINT CHR$(26)
- 246 FOR I=1 TO 9: F(I)=0: NEXT I
- 247 FOR N=1 TO P
- 248 M(N,1)=5000
- 249 NEXT N
- 250 FOR I=1 TO 10: T(I)=100: NEXT I
- 251 Y=0
- 252 REM
- 253 REM
- 254 REM FIND MARKET CHANGES FOR NEXT ROUND,SEE IF BULL OR BEAR MARKET
- 255 REM
- 256 D=INT(RND(1)*11+1)
- 257 C=INT(RND(1)*36+1)
- 258 IF A(C,12)=1 THEN 257
- 259 A(C,12)=1
- 260 FOR N=2 TO 10
- 261 GOSUB 417
- 262 IF A(C,1)=1 THEN 267
- 263 W$="BEAR"
- 264 F(N-1)=A(C,N)+E(D,N-1)
- 265 T(N)=T(N)+F(N-1)
- 266 GOTO 273
- 267 F(N-1)=A(C,N)+U(D,N-1)
- 268 W$="BULL"
- 269 T(N)=T(N)+F(N-1)
- 270 REM
- 271 REM CHECK FOR STOCK SPLITS
- 272 REM
- 273 IF T(N)<150 THEN 285
- 274 PRINT "*** "+S$+" STOCKS SPLIT ***"
- 275 IF T(N)/2=INT(T(N)/2) THEN 278
- 276 T(N)=INT(T(N)/2)+1
- 277 GOTO 279
- 278 T(N)=T(N)/2
- 279 FOR J=1 TO P
- 280 M(J,N+1)=M(J,N+1)*2
- 281 NEXT J
- 282 REM
- 283 REM CHECK FOR BANKRUPT STOCKS
- 284 REM
- 285 IF T(N)>0 THEN 292
- 286 T(N)=100
- 287 FOR J=1 TO P
- 288 M(J,N+1)=0
- 289 NEXT J
- 290 PRINT "*** "+S$+" WENT BANKRUPT ***"
- 291 PRINT "THESE STOCKS MUST BE SURRENDERED"
- 292 NEXT N
- 293 Y=Y+1
- 294 REM
- 295 REM ADD EACH PLAYERS DIVIDENDS TO TOTAL CASH
- 296 REM
- 297 FOR N=1 TO P
- 298 M(N,12)=0
- 299 FOR J=1 TO 10
- 300 IF T(J)<50 THEN 302
- 301 M(N,12)=M(N,12)+K(J)*M(N,J+1)
- 302 NEXT J
- 303 IF A(C,11)=0 THEN 306
- 304 M(N,12)=M(N,12)+M(N,3)*2
- 305 PRINT "*** X-PANDO CORP. PAYS $2 DIVIDENDS PER SHARE ***"
- 306 M(N,1)=M(N,1)+M(N,12)
- 307 NEXT N
- 308 REM
- 309 REM
- 310 REM PRINT WHAT HAPPENED & CURRENT VALUES
- 311 REM
- 312 PRINT CHR$(26) : PRINT "*** YEAR ";Y;"*** "+W$+" MARKET ***"
- 313 PRINT TAB(23);"PLAYER HOLDINGS YEAR ";Y
- 314 PRINT TAB(6);" +/-$ PRICE";
- 315 FOR N=1 TO P
- 316 PRINT TAB(18+8*N);N;
- 317 NEXT N
- 318 PRINT
- 319 PRINT LEFT$(V$,3);TAB(8);"0";TAB(16);"100";
- 320 FOR N=1 TO P
- 321 PRINT TAB(18+8*N);M(N,2);
- 322 NEXT N
- 323 PRINT
- 324 FOR N=1 TO 9
- 325 PRINT MID$(V$,3*N+1,3);TAB(7);F(N);TAB(15);T(N+1);
- 326 FOR J=1 TO P
- 327 PRINT TAB(18+8*J);M(J,N+2);
- 328 NEXT J
- 329 PRINT
- 330 NEXT N
- 331 PRINT
- 332 PRINT "DIVIDENDS FOR YEAR";
- 333 FOR N=1 TO P
- 334 PRINT TAB(18+8*N);M(N,12);
- 335 NEXT N
- 336 PRINT
- 337 PRINT "NEW CASH TOTAL";
- 338 FOR N=1 TO P
- 339 PRINT TAB(18+8*N);M(N,1);
- 340 NEXT N
- 341 PRINT
- 342 PRINT "NEW NET WORTH ";
- 343 GOSUB 438
- 344 FOR N=1 TO P
- 345 PRINT TAB(18+8*N);X(N);
- 346 NEXT N
- 347 IF Y=S THEN 391
- 348 REM
- 349 REM
- 350 REM CHECK IF ANYONE WANTS TO SELL OR BUY ANYTHING
- 351 REM
- 352 FOR N=1 TO P
- 353 PRINT
- 354 PRINT "*** PLAYER ";N;" ***"
- 355 PRINT "YOU NOW HAVE $";M(N,1)
- 356 FOR J=1 TO 10
- 357 IF M(N,J+1)<>0 THEN 360
- 358 NEXT J
- 359 GOTO 371
- 360 INPUT "WANT TO SELL"; R$
- 361 IF R$="N" THEN 371
- 362 IF R$<>"Y" THEN 374
- 363 GOSUB 406
- 364 INPUT "NUMBER OF SHARES"; R
- 365 IF R<=M(N,J+1) THEN 368
- 366 PRINT "*** YOU ONLY HAVE ";M(N,J+1);" SHARES ***"
- 367 GOTO 364
- 368 M(N,J+1)=M(N,J+1)-R
- 369 M(N,1)=M(N,1)+R*T(J)
- 370 GOTO 355
- 371 FOR J=1 TO 10
- 372 IF M(N,1)>T(J) THEN 375
- 373 NEXT J
- 374 GOTO 387
- 375 INPUT "WANT TO BUY"; R$
- 376 IF R$="N" THEN 387
- 377 IF R$<>"Y" THEN 393
- 378 GOSUB 406
- 379 INPUT "NUMBER OF SHARES"; R
- 380 IF R*T(J)<=M(N,1) THEN 383
- 381 PRINT "ONLY MONEY ENOUGH FOR ";INT(M(N,1)/T(J));"SHARES"
- 382 GOTO 379
- 383 M(N,J+1)=M(N,J+1)+R
- 384 M(N,1)=M(N,1)-R*T(J)
- 385 PRINT "YOU NOW HAVE $";M(N,1)
- 386 GOTO 371
- 387 NEXT N
- 388 GOTO 256
- 389 REM
- 390 REM
- 391 REM CLOSING OUT AT END OF GAME - PRINT FINAL TOTALS
- 392 REM
- 393 PRINT
- 394 PRINT "*** FINAL TOTALS ARE:"
- 395 PRINT "PLAYER TOTAL"
- 396 FOR N=1 TO P
- 397 FOR J=1 TO 10
- 398 M(N,1)=M(N,1)+T(J)*M(N,J+1)
- 399 NEXT J
- 400 PRINT
- 401 PRINT N,M(N,1)
- 402 NEXT N
- 403 GOTO 446
- 404 REM
- 405 REM
- 406 REM SUBROUTINE TO LOOK UP STOCK NAMES FOR BUY & SELL
- 407 REM
- 408 PRINT "NAME OF STOCK";
- 409 INPUT R$
- 410 FOR J=1 TO 10
- 411 IF LEFT$(R$,2)=MID$(V$,3*J-2,2) THEN 415
- 412 IF LEFT$(R$,2)=MID$(V$,3*J-1,2) THEN 415
- 413 NEXT J
- 414 GOTO 408
- 415 RETURN
- 416 REM
- 417 ON N GOTO 418,420,422,424,426,428,430,432,434,436
- 418 S$=A$
- 419 RETURN
- 420 S$=B$
- 421 RETURN
- 422 S$=C$
- 423 RETURN
- 424 S$=D$
- 425 RETURN
- 426 S$=E$
- 427 RETURN
- 428 S$=F$
- 429 RETURN
- 430 S$=G$
- 431 RETURN
- 432 S$=H$
- 433 RETURN
- 434 S$=I$
- 435 RETURN
- 436 S$=J$
- 437 RETURN
- 438 FOR N=1 TO P
- 439 W=0
- 440 FOR J=1 TO 10
- 441 W=W+T(J)*M(N,J+1)
- 442 NEXT J
- 443 X(N)=W+M(N,1)
- 444 NEXT N
- 445 RETURN
- 446 RESET
- N=1 TO P
- 439 W=0
- 440 FOR