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