Wall Street

Products: Wall Street
Date: 1983
Type: Cassette
Platform(s): TS 1000
Tags: Game

Wall Street is a multi-player investment simulation for up to four traders, covering stocks, real estate, money market instruments, and an IRA account over a 16-year, 4-quarter-per-year game cycle. Players buy and sell assets, pay quarterly taxes, respond to random financial events (windfalls and losses), and can make speculative investments; the goal is to maximise total portfolio value by the end of year 16. The program uses a scrolling ticker-tape message routine (lines 322–328) driven by string slicing to display news and price-change reports. Numeric variables W, Z, T, F, R, S, E, B, G, H, FO, D are used as named constants throughout, reducing literal typing and saving token space. A machine-code routine is invoked via RAND USR 32685 at lines 9030 and 9050, and raw POKEs at line 9000 are used to patch memory directly.


Program Analysis

Program Structure

The program is organized into several functional blocks, broadly as follows:

  1. Lines 1–9: Title/splash screen with copyright notice and jump to initialization.
  2. Lines 10–210: Subroutine that draws the Wall Street building graphic using block characters.
  3. Lines 280–360 (approx): Game setup — number of traders, initials, names, starting cash.
  4. Lines 510–589: Trader data initialization loop.
  5. Lines 610–760: Big Board display — prints all investment prices, averages, and percent changes.
  6. Lines 780–1040: Quarter/year transition, save-game prompt, and routing.
  7. Lines 1100–2100: Per-trader transaction loop — buy/sell stocks, R/E, money market, IRA, F/A advisory, cash transfers.
  8. Lines 2200–2320: IRA buy/sell sub-section.
  9. Lines 3000–3420: Price-update engine — random walks for each investment, dividend payouts, special investment resolution, ticker message generation.
  10. Lines 5000–5290: End-game scoring and winner announcement.
  11. Lines 6000–6170: Random windfall/loss event subroutine.
  12. Lines 9000–9060: Machine-code bootstrap and display-driver initialization.
  13. Lines 9500–9510: Save routine.

Numeric Constants as Variables

A distinctive space-saving technique used throughout is the assignment of common small integers to single-letter variables, avoiding repeated literal tokens. The mapping (inferred from usage) is approximately:

VariableValueTypical use
W1Loop start, increment
Z0Zero / false sentinel
S2Divisor, index offset
R3Column index, offset
F4Quarters per year, max traders
T20 (approx)Row 20, display bottom
E10Number of investments
H100Percentage scaling
FO4Number of investments on board display
Bportfolio indexTotal balance column in P() array
Gcash indexCash column in P() array
D.5Rounding constant for INT
Plarge pause valuePAUSE argument

This technique is common in memory-constrained BASIC programs, as each numeric literal takes more bytes than a variable reference after the first assignment.

Ticker-Tape Scrolling Routine

Lines 316–328 implement a horizontal scrolling text display. A long string M$ is built up by concatenation, then lines 322–327 loop from position 1 to LEN M$-T-F, printing a 26-character window (M$(J TO J+25)) at a fixed screen position on each iteration. After the loop, M$ is trimmed to its last 25 characters so the next segment can be appended and the scroll continued seamlessly. This is a purely BASIC software scroll with no machine code involved.

Investment Price Model

The price update engine at lines 3010–3100 uses a mean-reverting random walk. Each investment I has a countdown timer T(I); when it reaches zero a new random duration is set and the trend direction S(I) is randomly toggled between +1 and −1. Each quarter the price is updated by:

  • V(I) = V(I) + INT(((S(I)*RND*A(I) + F(I))/H) * V(I) + D)
  • where A(I) is volatility and F(I) is a drift term.
  • Prices are floored at 1 (line 3090: IF V(I)<W THEN LET V(I)=W).

Portfolio Array Layout

Player data is stored in a 2D array P(player, column). Columns 1–E hold share counts for each investment; additional columns hold cash (G) and total net worth (B). IRA share counts are stored separately in N(I). This layout allows the buy/sell logic to be written as generic indexed operations.

Machine Code Usage

Lines 9000–9060 contain the only machine-code interface. Line 9000 POKEs a value derived from CODE("Z")+160 into address 32091, patching what is likely a display or driver parameter. RAND USR 32685 is called twice (lines 9030 and 9050) with different Z$ strings set beforehand (“-” and “%PW/S” respectively), suggesting the routine reads Z$ as a parameter — possibly a custom character-set loader or display mode setter. After the second call, the program jumps to W (i.e. line 1), restarting from the splash screen with the machine code now active.

Transaction Input Parsing

Player transactions are entered as formatted strings parsed at lines 1486–1560. The expected format is a 3-character investment code followed by /B/ or /S/ followed by a share count (e.g. IBM/B/500). The code checks T$(F TO R+R) (characters 4–6) for the /B/ or /S/ separator, extracts the investment ticker with T$(W TO R), and converts the quantity with ABS INT VAL T$(F+R TO LEN T$). Special commands F/A, R/O, SPE/..., IRA/..., and $ are handled by prior IF checks.

Random Event Subroutine

The subroutine at lines 6000–6170 fires conditionally during a trader’s turn (line 1207, probability 0.16 outside quarter 4). It selects a random message index and a dollar amount scaled to the current money-market price, then either credits (line 6030) or debits (line 6070) the player’s cash. Rare special cases (probability 0.02) can zero out all cash or multiply it — creating large swings. The event guard at line 6002 suppresses events on the very first turn of the game.

Save/Restore Mechanism

Line 1030 uses SAVE A$ with a player-supplied filename. The flag variable GSV is set to W (1) after saving; line 315 checks IF GSV=W THEN GOTO 600 on re-entry at line 280, skipping the setup questions and jumping directly into the game loop. Line 9500 provides an alternative SAVE "W/%S" for saving the program itself.

Notable Bugs and Anomalies

  • Line 1660 prints P(I,J) (using loop variable J from the enclosing FOR at line 1160) rather than P(I,M) (the just-traded investment). Since J equals E (10) at the end of the display loop, this will display the wrong share count in the updated row.
  • Line 5200 stores P(I,12) into WA instead of P(I,B), which would set the winning total to a fixed column index rather than the player’s actual net worth — potentially corrupting the winner comparison in a 3- or 4-player game.
  • Line 360 contains a bare NEXT I with no corresponding FOR I in the setup path; this is reached via the flow from line 335 and relies on a FOR I that would only exist if arriving from line 510’s loop — suggesting a structural remnant from an earlier code layout.
  • Line 5088 contains TO BAD which should read TOO BAD — a typographical error in the end-game message.

Content

Appears On

Related Products

You are a savvy Wall Street investor speculating in stocks, real estate, precious metals, minerals, and the money markets. You...

Related Articles

Related Content

Image Gallery

Wall Street

Source Code

   1 REM W
   2 REM %5%6%K\@@\;;\,,\:' SLOW OR HHH THEN THEN SAVE V<%>\'.\~~\##\ '%1%1+ LIST \:'%$\'.%?%?%?\:.\:.\.:%"%K%K4EKL LOAD %T\'.%/E43M"\~~ LPRINT STOP COPY COPY 
   3 REM D\AF\F9
   4 REM W/S*FIN*12/28*05:00P
   5 PRINT AT 9,4;"(C)1982 TIMEWORKS INC."
   6 PRINT AT 7,7;"%*%*%W%A%L%L% %S%T%R%E%E%T%*%*"
   7 PRINT AT 9,4;"(C)1982 TIMEWORKS INC."
   8 PAUSE 200
   9 GOTO 280
  10 CLS 
  14 REM FAST 
  15 PRINT AT 5,20;"\:'\''\''\''\''\''\':"
  18 PRINT AT 9,3;"WALL";AT 11,3;"STREET";AT 13,3;"NEWS"
  20 PRINT AT 6,19;"\ :";TAB 27;"\: ";AT 7,19;"\: ";TAB 27;"\ :";AT 8,18;"\ :";TAB 28;"\: "
  30 FOR I=9 TO 17
  40 PRINT AT I,18;"\: ";TAB 28;"\ :"
  50 NEXT I
  60 PRINT AT 18,17;"\..% % % % % % % % % % % \.."
  70 FOR I=13 TO 17
  80 PRINT AT I,22;"% % % "
  90 NEXT I
 100 PRINT AT 14,T;"\,,\##\##";AT 15,19;"\,,\~~";AT 16,16;"\,,\,,\~~";AT 17,13;"\,,\,,\~~"
 150 PRINT AT Z,Z;"\:'\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\':"
 160 FOR I=W TO T-W
 170 PRINT AT I,Z;"\: ";TAB 31;"\ :"
 180 NEXT I
 200 PRINT AT T-W,W+W;"\##";TAB 29;"\##";AT 19,2;"\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,";AT 21,0;"\:.\..\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\..\.:"
 210 RETURN 
 286 REM 



Wall Street

Products: Wall Street
Date: 1983
Type: Cassette
Platform(s): TS 1000
Tags: Game

Wall Street is a multi-player investment simulation for up to four traders, covering stocks, real estate, money market instruments, and an IRA account over a 16-year, 4-quarter-per-year game cycle. Players buy and sell assets, pay quarterly taxes, respond to random financial events (windfalls and losses), and can make speculative investments; the goal is to maximise total portfolio value by the end of year 16. The program uses a scrolling ticker-tape message routine (lines 322–328) driven by string slicing to display news and price-change reports. Numeric variables W, Z, T, F, R, S, E, B, G, H, FO, D are used as named constants throughout, reducing literal typing and saving token space. A machine-code routine is invoked via RAND USR 32685 at lines 9030 and 9050, and raw POKEs at line 9000 are used to patch memory directly.


Program Analysis

Program Structure

The program is organized into several functional blocks, broadly as follows:

  1. Lines 1–9: Title/splash screen with copyright notice and jump to initialization.
  2. Lines 10–210: Subroutine that draws the Wall Street building graphic using block characters.
  3. Lines 280–360 (approx): Game setup — number of traders, initials, names, starting cash.
  4. Lines 510–589: Trader data initialization loop.
  5. Lines 610–760: Big Board display — prints all investment prices, averages, and percent changes.
  6. Lines 780–1040: Quarter/year transition, save-game prompt, and routing.
  7. Lines 1100–2100: Per-trader transaction loop — buy/sell stocks, R/E, money market, IRA, F/A advisory, cash transfers.
  8. Lines 2200–2320: IRA buy/sell sub-section.
  9. Lines 3000–3420: Price-update engine — random walks for each investment, dividend payouts, special investment resolution, ticker message generation.
  10. Lines 5000–5290: End-game scoring and winner announcement.
  11. Lines 6000–6170: Random windfall/loss event subroutine.
  12. Lines 9000–9060: Machine-code bootstrap and display-driver initialization.
  13. Lines 9500–9510: Save routine.

Numeric Constants as Variables

A distinctive space-saving technique used throughout is the assignment of common small integers to single-letter variables, avoiding repeated literal tokens. The mapping (inferred from usage) is approximately:

VariableValueTypical use
W1Loop start, increment
Z0Zero / false sentinel
S2Divisor, index offset
R3Column index, offset
F4Quarters per year, max traders
T20 (approx)Row 20, display bottom
E10Number of investments
H100Percentage scaling
FO4Number of investments on board display
Bportfolio indexTotal balance column in P() array
Gcash indexCash column in P() array
D.5Rounding constant for INT
Plarge pause valuePAUSE argument

This technique is common in memory-constrained BASIC programs, as each numeric literal takes more bytes than a variable reference after the first assignment.

Ticker-Tape Scrolling Routine

Lines 316–328 implement a horizontal scrolling text display. A long string M$ is built up by concatenation, then lines 322–327 loop from position 1 to LEN M$-T-F, printing a 26-character window (M$(J TO J+25)) at a fixed screen position on each iteration. After the loop, M$ is trimmed to its last 25 characters so the next segment can be appended and the scroll continued seamlessly. This is a purely BASIC software scroll with no machine code involved.

Investment Price Model

The price update engine at lines 3010–3100 uses a mean-reverting random walk. Each investment I has a countdown timer T(I); when it reaches zero a new random duration is set and the trend direction S(I) is randomly toggled between +1 and −1. Each quarter the price is updated by:

  • V(I) = V(I) + INT(((S(I)*RND*A(I) + F(I))/H) * V(I) + D)
  • where A(I) is volatility and F(I) is a drift term.
  • Prices are floored at 1 (line 3090: IF V(I)<W THEN LET V(I)=W).

Portfolio Array Layout

Player data is stored in a 2D array P(player, column). Columns 1–E hold share counts for each investment; additional columns hold cash (G) and total net worth (B). IRA share counts are stored separately in N(I). This layout allows the buy/sell logic to be written as generic indexed operations.

Machine Code Usage

Lines 9000–9060 contain the only machine-code interface. Line 9000 POKEs a value derived from CODE("Z")+160 into address 32091, patching what is likely a display or driver parameter. RAND USR 32685 is called twice (lines 9030 and 9050) with different Z$ strings set beforehand (“-” and “%PW/S” respectively), suggesting the routine reads Z$ as a parameter — possibly a custom character-set loader or display mode setter. After the second call, the program jumps to W (i.e. line 1), restarting from the splash screen with the machine code now active.

Transaction Input Parsing

Player transactions are entered as formatted strings parsed at lines 1486–1560. The expected format is a 3-character investment code followed by /B/ or /S/ followed by a share count (e.g. IBM/B/500). The code checks T$(F TO R+R) (characters 4–6) for the /B/ or /S/ separator, extracts the investment ticker with T$(W TO R), and converts the quantity with ABS INT VAL T$(F+R TO LEN T$). Special commands F/A, R/O, SPE/..., IRA/..., and $ are handled by prior IF checks.

Random Event Subroutine

The subroutine at lines 6000–6170 fires conditionally during a trader’s turn (line 1207, probability 0.16 outside quarter 4). It selects a random message index and a dollar amount scaled to the current money-market price, then either credits (line 6030) or debits (line 6070) the player’s cash. Rare special cases (probability 0.02) can zero out all cash or multiply it — creating large swings. The event guard at line 6002 suppresses events on the very first turn of the game.

Save/Restore Mechanism

Line 1030 uses SAVE A$ with a player-supplied filename. The flag variable GSV is set to W (1) after saving; line 315 checks IF GSV=W THEN GOTO 600 on re-entry at line 280, skipping the setup questions and jumping directly into the game loop. Line 9500 provides an alternative SAVE "W/%S" for saving the program itself.

Notable Bugs and Anomalies

  • Line 1660 prints P(I,J) (using loop variable J from the enclosing FOR at line 1160) rather than P(I,M) (the just-traded investment). Since J equals E (10) at the end of the display loop, this will display the wrong share count in the updated row.
  • Line 5200 stores P(I,12) into WA instead of P(I,B), which would set the winning total to a fixed column index rather than the player’s actual net worth — potentially corrupting the winner comparison in a 3- or 4-player game.
  • Line 360 contains a bare NEXT I with no corresponding FOR I in the setup path; this is reached via the flow from line 335 and relies on a FOR I that would only exist if arriving from line 510’s loop — suggesting a structural remnant from an earlier code layout.
  • Line 5088 contains TO BAD which should read TOO BAD — a typographical error in the end-game message.

Content

Appears On

Related Products

You are a savvy Wall Street investor speculating in stocks, real estate, precious metals, minerals, and the money markets. You...

Related Articles

Related Content

Image Gallery

Wall Street

Source Code

   1 REM W
   2 REM %5%6%K\@@\;;\,,\:' SLOW OR HHH THEN THEN SAVE V<%>\'.\~~\##\ '%1%1+ LIST \:'%$\'.%?%?%?\:.\:.\.:%"%K%K4EKL LOAD %T\'.%/E43M"\~~ LPRINT STOP COPY COPY 
   3 REM \8D\AF\17\F9\76
   4 REM W/S*FIN*12/28*05:00P
   5 PRINT AT 9,4;"(C)1982 TIMEWORKS INC."
   6 PRINT AT 7,7;"%*%*%W%A%L%L% %S%T%R%E%E%T%*%*"
   7 PRINT AT 9,4;"(C)1982 TIMEWORKS INC."
   8 PAUSE 200
   9 GOTO 280
  10 CLS 
  14 REM FAST 
  15 PRINT AT 5,20;"\:'\''\''\''\''\''\':"
  18 PRINT AT 9,3;"WALL";AT 11,3;"STREET";AT 13,3;"NEWS"
  20 PRINT AT 6,19;"\ :";TAB 27;"\: ";AT 7,19;"\: ";TAB 27;"\ :";AT 8,18;"\ :";TAB 28;"\: "
  30 FOR I=9 TO 17
  40 PRINT AT I,18;"\: ";TAB 28;"\ :"
  50 NEXT I
  60 PRINT AT 18,17;"\..% % % % % % % % % % % \.."
  70 FOR I=13 TO 17
  80 PRINT AT I,22;"% % % "
  90 NEXT I
 100 PRINT AT 14,T;"\,,\##\##";AT 15,19;"\,,\~~";AT 16,16;"\,,\,,\~~";AT 17,13;"\,,\,,\~~"
 150 PRINT AT Z,Z;"\:'\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\':"
 160 FOR I=W TO T-W
 170 PRINT AT I,Z;"\: ";TAB 31;"\ :"
 180 NEXT I
 200 PRINT AT T-W,W+W;"\##";TAB 29;"\##";AT 19,2;"\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,";AT 21,0;"\:.\..\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\!!\..\.:"
 210 RETURN 
 286 REM \27\0F\FF\FF\76
 315 IF GSV=W THEN GOTO 600
 316 LET M$=E$+"...............................THIS IS THE WALL STREET GAME"
 317 GOSUB E
 318 GOSUB X
 319 LET M$=M$+".......................HOW MANY TRADERS WILL THERE BE?(1-4).."
 320 GOTO 330
 321 SLOW 
 322 FOR J=W TO LEN M$-T-F
 323 PRINT AT 14,22;"\;;";AT 20,3;M$(J TO J+25);AT 14,22;"\##"
 326 NEXT J
 327 LET M$=M$(LEN M$-24 TO LEN M$)
 328 RETURN 
 330 GOSUB X
 331 INPUT N
 335 IF N<W OR N>F THEN GOTO 331
 360 NEXT I
 510 FOR I=W TO N
 520 LET M$=M$+".....INPUT INITIALS FOR TRADER "+STR$ I+" ?......."
 522 GOSUB X
 523 INPUT L$(I)
 525 LET M$=M$+".INPUT NAME FOR TRADER "+STR$ I+" ?........"
 530 GOSUB X
 570 INPUT N$(I)
 575 NEXT I
 578 LET M$=M$+".............GOOD LUCK....DON\' T FORGET TO"
 579 GOSUB X
 580 LET M$=M$+" CONSULT THE INVESTORS GUIDE........"
 581 GOSUB X
 584 FOR I=W TO N
 586 LET P(I,G)=1000
 587 LET P(I,B)=1000
 588 NEXT I
 589 RAND 0
 610 FAST 
 620 CLS 
 622 IF SE>Z THEN PRINT "SPE RETURNED: ";INT ((PO-W)*H);S$
 625 PRINT AT W,Z;"\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,"
 630 LET QT=QT+W
 640 IF QT<FO THEN GOTO 670
 641 LET QT=W
 642 LET YR=YR+W
 643 FOR I=W TO N
 644 LET YP=P(I,B)-G(I)-(((P(I,R+R)*V(R+R))+(P(I,R+F)*V(R+F)))/(H*H))
 645 LET A=.1
 646 FOR J=H TO 1000 STEP 150
 647 IF YP<J THEN GOTO 653
 648 LET A=A+.05
 649 NEXT J
 653 LET A=INT (A*YP+D)
 654 IF A<Z THEN LET A=Z
 655 LET P(I,G)=P(I,G)-A
 658 LET G(I)=P(I,B)-A
 659 LET X(I)=A
 660 NEXT I
 670 PRINT "    **BIG BOARD-YR ";YR;" QTR ";QT;"**"
 680 PRINT "INV    TYPE";TAB 16;"P/S   NPC   EAP"
 690 PRINT "--- ---------- ----- ----- -----"
 692 FOR I=W TO FO
 694 PRINT AT F+I,R;O$(I)
 695 NEXT I
 697 PRINT AT FO,Z;
 700 FOR I=W TO E
 705 LET E(I)=((V(I)-L(I))/L(I))*H
 706 LET C(I)=INT (E(I)*F)
 707 LET E(I)=INT E(I)
 710 PRINT I$(I);TAB F;P$(I);TAB T-W-LEN STR$ V(I);V(I);TAB 25-LEN STR$ E(I);E(I);TAB 31-LEN STR$ C(I);C(I)
 720 NEXT I
 725 LET SA=INT ((V(W)+V(S)+V(R)+V(F)+V(F+W))/5)
 726 LET SP=INT (((SA-OA)/OA)*H)
 730 PRINT "STOCK AVG = $";TAB T-R-LEN STR$ SA;SA;TAB T-S;"CHANGE ";TAB 29-LEN STR$ SP;SP;S$
 732 LET RA=INT ((V(R+R)+V(R+F))/S)
 736 LET RP=INT (((RA-OR)/OR)*H)
 740 PRINT "R.E. AVG  = $";TAB T-R-LEN STR$ RA;RA;TAB T-S;"CHANGE ";TAB 29-LEN STR$ RP;RP;S$
 745 LET MA=INT (((V(F+F)+V(E-W))/S))
 747 LET MP=INT (((MA-OM)/OM)*H)
 750 PRINT "M/P AVG   = $";TAB T-R-LEN STR$ MA;MA;TAB T-S;"CHANGE";TAB 29-LEN STR$ MP;MP;S$
 752 LET OA=SA
 754 LET OR=RA
 756 LET OM=MA
 760 PRINT "\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~"
 765 LET SE=Z
 768 IF RND>.25 THEN GOTO 780
 770 LET SE=INT (RND*F+W)
 772 PRINT AT T-S,Z;"SPEC INV OPTY: ";J$(SE)
 780 IF N=W AND YR<16 THEN GOTO 999
 785 PRINT AT T,Z;"PRESS -C- TO CONT "
 790 PAUSE P
 800 CLS 
 805 PRINT ,,"\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,"
 810 PRINT "**TRADER SUMMARY  YR>";YR;" QTR>";QT;"**" 
 820 PRINT "INV P/S   ";L$(W);"   ";L$(S);"   ";L$(R);"   ";L$(F)
 822 PRINT "--- ---- ----- ----- ----- -----"
 824 FOR I=W TO FO
 826 PRINT AT F+I,R;O$(I)
 828 NEXT I
 830 PRINT AT FO,Z;
 832 FOR J=W TO N
 834 LET P(J,B)=P(J,G)
 836 NEXT J
 840 FOR I=W TO E
 860 FOR J=W TO N
 865 LET R(J)=INT (((V(I)*P(J,I))/(E*H))+D)
 870 LET P(J,B)=P(J,B)+R(J)
 875 NEXT J
 890 PRINT I$(I);TAB F+F-LEN STR$ V(I);V(I);TAB E+F-LEN STR$ R(W);R(W);TAB T-W-LEN STR$ R(S);R(S);TAB 26-LEN STR$ R(R);R(R);TAB 32-LEN STR$ R(F);R(F)
 900 NEXT I
 920 FOR I=G TO B
 930 PRINT TAB E+F-LEN STR$ P(W,I);P(W,I);TAB T-W-LEN STR$ P(S,I);P(S,I);TAB 26-LEN STR$ P(R,I);P(R,I);TAB 32-LEN STR$ P(F,I);P(F,I)
 940 IF I=B THEN GOTO 963
 950 PRINT TAB E-W;"----- ----- ----- -----"
 960 NEXT I
 963 PRINT AT 15,Z;"CASH";AT 17,Z;"CASH VAL "
 980 PRINT "\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~"
 982 IF EP=Z THEN GOTO 999
 984 PRINT AT T,Z;">>>GAME OVER<<<"
 985 STOP 
 999 PRINT AT T,Z;"PRESS -C- TO CONT OR -S- TO SAVE"
1000 IF YR=16 THEN GOTO 5000
1001 PAUSE P
1010 IF INKEY$="S" THEN GOTO 1020
1015 GOTO 1100
1020 INPUT A$
1030 SAVE A$
1035 LET GSV=W
1037 LET I=Z
1040 GOTO 280
1100 FOR I=W TO N
1101 IF P(I,B)<=Z AND N<>W THEN GOTO 2100
1102 GOTO 1126
1103 DIM O$(FO,W)
1104 FOR K=W TO N
1105 FOR J=W TO FO
1106 IF P(K,J)>=O(J) AND P(K,J)>P(W,J)+P(S,J)+P(R,J)+P(F,J)-P(K,J) THEN LET O$(J)=CHR$ (156+K)
1107 NEXT J
1110 NEXT K
1122 FOR K=W TO FO
1123 PRINT AT S+K,R;O$(K)
1124 NEXT K
1125 RETURN 
1126 CLS 
1127 IF P(I,G)<Z THEN LET P(I,G)=INT (P(I,G)*1.04+D)
1128 LET IRP=Z
1129 PRINT AT Z,Z;N$(I);"(";L$(I);")";"Y>";YR;"Q>";QT
1130 PRINT "INV  P/S   SHRS   VAL    NPC EAP"
1132 LET LN=P(I,B)*.2
1135 LET TU=Z
1140 PRINT "--- ----- ------ ------  --- ---"
1160 FOR J=W TO E
1170 LET V=INT ((V(J)*P(I,J)/(H*E))+D)
1180 LET P(I,E+S)=P(I,E+S)+V
1190 PRINT I$(J);TAB E-W-LEN STR$ V(J);V(J);TAB 16-LEN STR$ P(I,J);P(I,J);TAB T-F;"$";TAB T+S-LEN STR$ V;V;TAB 28-LEN STR$ E(J);E(J);TAB 32-LEN STR$ C(J);C(J)
1200 NEXT J
1205 LET ST=Z
1207 IF QT<>F AND RND<.16 THEN GOSUB 6000
1210 FOR J=W TO R+S
1220 LET ST=ST+V(J)*P(I,J)
1230 NEXT J
1235 LET ST=INT ((ST/(E*H))+D)
1240 LET RE=INT (((V(S+F)*P(I,S+F)+V(F+R)*P(I,R+F))/(E*H))+D)
1250 LET MM=INT (((V(F+F)*P(I,F+F)+V(E-W)*P(I,E-W))/(E*H))+D)
1260 LET MK=INT (((V(E)*P(I,E))/(E*H))+D)
1270 LET P(I,B)=ST+RE+MM+MK+P(I,G)
1275 LET O=P(I,B)
1278 IF O<=Z THEN LET O=W
1280 LET SP=INT ((ST/O)*H)
1290 LET RP=INT ((RE/O)*H)
1300 LET MP=INT ((MM/O)*H)
1310 LET KP=INT ((MK/O)*H)
1320 LET CP=INT ((P(I,G)/O)*H)
1322 FOR J=E+R TO T-S
1323 PRINT AT J,E;"          "
1325 NEXT J
1330 PRINT AT E+R,Z;"STOCKS";TAB E;"$";TAB T-F-LEN STR$ ST;ST;TAB E+E-LEN STR$ SP;SP;S$
1340 PRINT "R/E";TAB E;"$";TAB T-F-LEN STR$ RE;RE;TAB E+E-LEN STR$ RP;RP;S$
1350 PRINT "MIN/PMT";TAB E;"$";TAB T-F-LEN STR$ MM;MM;TAB E+E-LEN STR$ MP;MP;S$
1360 PRINT "MONEY MKT $";TAB T-F-LEN STR$ MK;MK;TAB E+E-LEN STR$ KP;KP;S$
1370 PRINT "CASH";TAB E;"$";TAB T-F-LEN STR$ P(I,G);P(I,G);TAB E+E-LEN STR$ CP;CP;S$
1380 PRINT TAB E;"-------"
1390 PRINT "TOTAL";TAB E;"$";TAB T-F-LEN STR$ P(I,B);P(I,B)
1400 PRINT AT E+R,T+R;"F/A";AT E+F,T+R;"$";FA;"000"
1410 IF SE>Z THEN PRINT AT E+R,29;"%S%P%E"
1420 IF P(I,B)<=Z THEN PRINT AT T-W,Z;"%*%*%Y%O%U%R% %B%R%O%K%E%*%*"
1425 IF QT=W AND TU=Z AND YR<>W THEN PRINT AT T-W,Z;"YOU PAID A $";X(I)*1000;" TAX BILL"
1430 IF QT=F AND P(I,G)>-LN THEN PRINT AT T-W,Z;">>IRA= ";N(I);"SHRS  VAL= $";INT (N(I)*V(E)/(E*H));"<<"
1440 PRINT AT 19,6;"(";TU;")"
1450 LET TU=TU+W
1460 PRINT AT T,Z;"ENTER TRANSACTION?%I%N%V%/%S%<%>%B%/%S%H%R%S"
1461 SLOW 
1462 INPUT T$
1463 FAST 
1464 LET LN=P(I,B)*.2
1465 PRINT AT T-W,Z;E$;E$
1467 IF T$="" AND P(I,G)>-LN OR P(I,B)<=Z THEN GOTO 2100
1468 IF T$<>"" THEN GOTO 1474
1470 PRINT AT E+E,Z;"%>%>%S%E%L%L% %A%S%S%E%T%S% %T%O% %R%E%D%U%C%E% %D%E%B%T%<%<"
1472 GOTO 1430
1474 IF T$="F/A" THEN GOTO 1700
1475 IF T$<>"R/O" THEN GOTO 1480
1476 GOSUB 1103
1477 GOTO 1430
1485 IF T$="$" THEN GOTO 1900
1486 IF LEN T$<7 THEN GOTO 1540
1490 IF T$(F TO R+R)<>"/S/" AND T$(F TO R+R)<>"/B/" THEN GOTO 1540
1500 LET A$=T$(W TO R)
1505 IF A$="SPE" THEN GOTO 1800
1507 IF A$="IRA" THEN GOTO 2200
1510 FOR J=W TO E
1520 IF A$=I$(J) THEN GOTO 1550
1530 NEXT J
1540 PRINT AT T-W,Z;"%>%>%I%N%C%O%R%R%E%C%T% %I%N%P%U%T%<%<"
1542 PAUSE H
1543 GOTO 1430
1550 LET A=ABS INT VAL T$(F+R TO LEN T$)
1551 LET M=VAL A$
1552 IF M<>R+R AND M<>R+F THEN GOTO 1560
1553 IF (M=R+R AND A>=1000) OR (M=R+F AND A>=2500) THEN GOTO 1560
1554 PRINT AT T-W,Z;"MIN>RER=1000 SHRS/REC=2500 SHRS"
1555 GOTO 1460
1560 IF T$(S+R)="S" THEN GOTO 1610
1565 LET V=INT (((V(M)*A*1.015)/(E*H))+D)
1570 IF P(I,G)+LN<V THEN GOTO 1680
1580 LET P(I,G)=P(I,G)-V
1590 LET P(I,M)=P(I,M)+A
1600 GOTO 1655
1610 IF P(I,M)<=A THEN LET A=P(I,M)
1640 LET P(I,G)=INT (((V(M)*A*.985)/(E*H))+D+P(I,G))
1650 LET P(I,M)=P(I,M)-A
1655 LET V=INT (((P(I,M)*V(M))/(E*H))+D)
1660 PRINT AT S+M,G;"              ";AT S+M,16-LEN STR$ P(I,J);P(I,J);TAB T-F;"$";TAB T+S-LEN STR$ V;V
1670 GOTO 1205
1680 PRINT AT T-W,Z;"%N%O%T% %E%N%O%U%G%H% %C%A%S%H% %F%O%R% %T%R%A%N%S%A%C%T%I%O%N"
1690 GOTO 1460
1699 REM **F/A******
1700 IF P(I,G)+LN>=FA THEN GOTO 1730
1710 PRINT AT T-W,Z;"NOT ENOUGH $ TO PAY F/A"
1720 GOTO 1460
1730 LET P(I,G)=P(I,G)-FA
1735 SLOW 
1740 FOR J=W TO RND*FO+W
1750 LET A=INT (RND*E+W)
1755 LET A$="SELL "
1760 IF S(A)>Z AND T(A)>=W THEN LET A$="BUY  "
1770 PRINT AT 14+J,T+R;A$;I$(A)
1780 NEXT J
1784 PAUSE 200
1785 FAST 
1790 GOTO 1205
1800 IF SE>Z THEN GOTO 1820
1810 PRINT AT T-W,Z;"NO SPECIAL INVESTMENTS AVAILABLE"
1815 GOTO 1460
1820 LET A=ABS INT VAL T$(F+R TO LEN T$)
1850 IF P(I,G)-A<(P(I,B)-A)*-.2 THEN GOTO 1680
1860 LET P(I,G)=P(I,G)-A
1870 LET I(I)=A+I(I)
1880 GOTO 1205
1900 PRINT AT T-W,Z;E$;E$
1905 PRINT AT T-W,Z;"WHO TO TRANSFER $ TO?"
1910 FOR J=W TO N
1920 PRINT J;".";L$(J);" ";
1930 NEXT J
1940 INPUT T$
1943 IF T$<CHR$ 29 OR T$>CHR$ 32 THEN GOTO 1940
1945 LET TP=INT VAL T$
1946 IF TP>N THEN GOTO 1940
1960 PRINT AT T-W,Z;E$;E$
1970 PRINT AT T,Z;"ENTER AMOUNT?(000)"
1980 INPUT A
1990 LET A=ABS INT A
1999 GOTO 2010
2000 FAST 
2001 IF I>N THEN GOTO 1100
2005 GOTO 1101
2010 IF P(I,G)+LN<A THEN GOTO 1680
2015 LET P(I,G)=P(I,G)-A
2020 LET P(TP,G)=P(TP,G)+A
2025 LET P(TP,B)=P(TP,B)+A
2030 GOTO 1205
2100 NEXT I
2105 GOTO 3000
2200 IF IRP<>W THEN GOTO 2205
2201 PRINT AT T-W,Z;"NO MORE IRA TRANSACTIONS THIS YR"
2202 GOTO 1460
2205 LET IRP=W
2206 IF QT=F THEN GOTO 2220
2210 PRINT AT T-W,Z;"NO IRA TRANSACTIONS UNTIL QTR 4"
2215 GOTO 1460
2220 LET A=ABS INT VAL T$(F+R TO LEN T$)
2225 IF T$(S+R)="S" THEN GOTO 2300
2227 IF A>2000 THEN LET A=2000
2230 IF (P(I,G)+LN)*H*E<A*V(E) THEN GOTO 1680
2240 LET P(I,G)=P(I,G)-INT (A*V(E)/(H*E))
2250 LET N(I)=N(I)+A
2260 GOTO 1205
2300 IF A>N(I) THEN LET A=N(I)
2305 LET N(I)=N(I)-A
2310 LET P(I,G)=P(I,G)+INT ((V(E)*A/(H*E))*.9+D)
2320 GOTO 1205
3010 FOR I=W TO E
3020 IF T(I)>Z THEN GOTO 3060
3030 LET T(I)=INT (Q(I)*RND+M(I))
3040 LET S(I)=-W
3050 IF RND>D THEN LET S(I)=W
3060 LET T(I)=T(I)-W
3070 LET L(I)=V(I)
3080 LET V(I)=V(I)+INT (((((S(I)*RND*A(I))+F(I))/H)*V(I))+D)
3090 IF V(I)<W THEN LET V(I)=W
3100 NEXT I
3105 LET FA=INT (((V(E)/OO)*FO+D))
3110 IF SE=Z THEN GOTO 3200
3120 LET PO=RND*(6-SE)+((SE-W)/F)
3130 IF RND<((5.5-SE)/E) THEN LET PO=Z
3140 FOR I=W TO N
3150 LET P(I,G)=P(I,G)+INT (I(I)*PO+D)
3160 NEXT I
3170 DIM I(F)
3200 DIM O$(FO,W)
3205 FOR I=W TO N
3210 FOR J=W TO FO
3220 IF P(I,J)<O(J) THEN GOTO 3240
3230 IF P(I,J)<P(W,J)+P(S,J)+P(R,J)+P(F,J)-P(I,J) THEN GOTO 3240
3235 LET P(I,G)=P(I,G)+INT (P(I,J)*V(J)*D/(H*H))
3237 LET O$(J)=CHR$ (156+I)
3240 NEXT J
3250 NEXT I
3310 LET M$="...........PRICE CHANGES FOR LEADING INVESTMENTS........."
3312 GOSUB E
3313 GOSUB X
3320 FOR I=W TO E
3330 LET M$=M$+I$(I)+"..$"+STR$ (V(I)-L(I))+"...."
3335 IF I=FO THEN GOSUB X
3340 NEXT I
3345 GOSUB X
3350 IF SE>Z THEN LET M$=M$+"......"+J$(SE)
3355 IF SE>Z THEN LET M$=M$+"...RETURNED..."+STR$ INT ((PO-W)*H)+S$+"....."
3360 GOSUB X
3370 LET M$=M$+"....END OF REPORT......."
3380 GOSUB X
3420 FAST 
4000 GOTO 600
5005 LET EP=W
5010 LET A=INT (N(W)*V(E)/(E*H))
5020 LET P(W,G)=P(W,G)+A
5030 LET P(W,B)=P(W,B)+A
5040 LET WA=P(W,B)
5050 LET WP=W
5060 IF N>W THEN GOTO 5150
5070 IF WA>10000 THEN GOTO 5100
5080 LET M$=E$+"...........YOU HAVE NOT MET YOUR INVESTMENT "
5081 GOSUB E
5082 GOSUB X
5083 LET M$=M$+"OBJECTIVE OF INCREASING YOUR ASSETS TO $10 MILLION "
5085 GOSUB X
5088 LET M$=M$+".....TO BAD...BETTER ""LUCK"" NEXT TIME................."
5089 GOSUB X
5090 GOTO 5250
5100 LET M$=E$+"...............CONGRATULATIONS YOU HAVE USED YOUR "
5101 GOSUB E
5103 GOSUB X
5105 LET M$=M$+"INVESTMENT SAVVY TO MEET YOUR $10 MILLION OBJECTIVE........GOOD JOB................"
5106 GOSUB X
5110 GOTO 5250
5150 FOR I=S TO N
5160 LET A=INT (N(I)*V(E)/(E*H))
5170 LET P(I,G)=P(I,G)+A
5180 LET P(I,B)=P(I,B)+A
5190 IF P(I,B)>WA THEN LET WP=I
5200 IF P(I,B)>WA THEN LET WA=P(I,12)
5210 NEXT I
5220 LET M$=E$+"...........CONGRATULATIONS "+N$(WP)
5221 GOSUB E
5222 GOSUB X
5225 LET M$=M$+" HAS USED THEIR INVESTMENT SAVVY TO INCREASE THEIR "
5226 GOSUB X
5230 LET M$=M$+"ASSETS MORE THAN THE OTHER INVESTORS......GOOD JOB................"
5240 GOSUB X
5285 FAST 
5290 GOTO 800
6002 IF QT=W AND TU=Z THEN RETURN 
6005 LET A=INT (RND*9+W)
6007 LET WA=INT ((V(E)/H)*(RND*40+E)+D)
6010 IF RND<.6 THEN GOTO 6050
6015 IF RND<.02 THEN GOTO 6090
6020 PRINT AT 20,Z;W$(A);"$";WA;"000"
6030 LET P(I,G)=P(I,G)+WA
6040 RETURN 
6050 LET A=A+E
6055 IF RND<.05 AND P(I,G)>Z THEN GOTO 6150
6060 PRINT AT 20,Z;W$(A);"$";WA;"000"
6070 LET P(I,G)=P(I,G)-WA
6080 RETURN 
6090 IF RND<.5 AND P(I,G)>Z THEN GOTO 6115
6095 LET A=E
6100 LET WA=E*H
6110 GOTO 6020
6115 LET A=9
6120 LET WA=ABS (P(I,G)*E)
6130 GOTO 6020
6150 LET A=20
6160 LET WA=P(I,G)
6170 GOTO 6060
9000 POKE 32091,(160+CODE ("Z"))
9010 DIM Z$(24)
9020 LET Z$="-"
9030 RAND USR 32685
9040 LET Z$="%PW/S"
9050 RAND USR 32685
9060 GOTO W
9500 SAVE "W/%S"
9510 GOTO 1

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top
F\FF\FF 315 IF GSV=W THEN GOTO 600 316 LET M$=E$+"...............................THIS IS THE WALL STREET GAME" 317 GOSUB E 318 GOSUB X 319 LET M$=M$+".......................HOW MANY TRADERS WILL THERE BE?(1-4).." 320 GOTO 330 321 SLOW 322 FOR J=W TO LEN M$-T-F 323 PRINT AT 14,22;"\;;";AT 20,3;M$(J TO J+25);AT 14,22;"\##" 326 NEXT J 327 LET M$=M$(LEN M$-24 TO LEN M$) 328 RETURN 330 GOSUB X 331 INPUT N 335 IF N<W OR N>F THEN GOTO 331 360 NEXT I 510 FOR I=W TO N 520 LET M$=M$+".....INPUT INITIALS FOR TRADER "+STR$ I+" ?......." 522 GOSUB X 523 INPUT L$(I) 525 LET M$=M$+".INPUT NAME FOR TRADER "+STR$ I+" ?........" 530 GOSUB X 570 INPUT N$(I) 575 NEXT I 578 LET M$=M$+".............GOOD LUCK....DON\' T FORGET TO" 579 GOSUB X 580 LET M$=M$+" CONSULT THE INVESTORS GUIDE........" 581 GOSUB X 584 FOR I=W TO N 586 LET P(I,G)=1000 587 LET P(I,B)=1000 588 NEXT I 589 RAND 0 610 FAST 620 CLS 622 IF SE>Z THEN PRINT "SPE RETURNED: ";INT ((PO-W)*H);S$ 625 PRINT AT W,Z;"\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,," 630 LET QT=QT+W 640 IF QT<FO THEN GOTO 670 641 LET QT=W 642 LET YR=YR+W 643 FOR I=W TO N 644 LET YP=P(I,B)-G(I)-(((P(I,R+R)*V(R+R))+(P(I,R+F)*V(R+F)))/(H*H)) 645 LET A=.1 646 FOR J=H TO 1000 STEP 150 647 IF YP<J THEN GOTO 653 648 LET A=A+.05 649 NEXT J 653 LET A=INT (A*YP+D) 654 IF A<Z THEN LET A=Z 655 LET P(I,G)=P(I,G)-A 658 LET G(I)=P(I,B)-A 659 LET X(I)=A 660 NEXT I 670 PRINT " **BIG BOARD-YR ";YR;" QTR ";QT;"**" 680 PRINT "INV TYPE";TAB 16;"P/S NPC EAP" 690 PRINT "--- ---------- ----- ----- -----" 692 FOR I=W TO FO 694 PRINT AT F+I,R;O$(I) 695 NEXT I 697 PRINT AT FO,Z; 700 FOR I=W TO E 705 LET E(I)=((V(I)-L(I))/L(I))*H 706 LET C(I)=INT (E(I)*F) 707 LET E(I)=INT E(I) 710 PRINT I$(I);TAB F;P$(I);TAB T-W-LEN STR$ V(I);V(I);TAB 25-LEN STR$ E(I);E(I);TAB 31-LEN STR$ C(I);C(I) 720 NEXT I 725 LET SA=INT ((V(W)+V(S)+V(R)+V(F)+V(F+W))/5) 726 LET SP=INT (((SA-OA)/OA)*H) 730 PRINT "STOCK AVG = $";TAB T-R-LEN STR$ SA;SA;TAB T-S;"CHANGE ";TAB 29-LEN STR$ SP;SP;S$ 732 LET RA=INT ((V(R+R)+V(R+F))/S) 736 LET RP=INT (((RA-OR)/OR)*H) 740 PRINT "R.E. AVG = $";TAB T-R-LEN STR$ RA;RA;TAB T-S;"CHANGE ";TAB 29-LEN STR$ RP;RP;S$ 745 LET MA=INT (((V(F+F)+V(E-W))/S)) 747 LET MP=INT (((MA-OM)/OM)*H) 750 PRINT "M/P AVG = $";TAB T-R-LEN STR$ MA;MA;TAB T-S;"CHANGE";TAB 29-LEN STR$ MP;MP;S$ 752 LET OA=SA 754 LET OR=RA 756 LET OM=MA 760 PRINT "\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~" 765 LET SE=Z 768 IF RND>.25 THEN GOTO 780 770 LET SE=INT (RND*F+W) 772 PRINT AT T-S,Z;"SPEC INV OPTY: ";J$(SE) 780 IF N=W AND YR<16 THEN GOTO 999 785 PRINT AT T,Z;"PRESS -C- TO CONT " 790 PAUSE P 800 CLS 805 PRINT ,,"\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,,\,," 810 PRINT "**TRADER SUMMARY YR>";YR;" QTR>";QT;"**" 820 PRINT "INV P/S ";L$(W);" ";L$(S);" ";L$(R);" ";L$(F) 822 PRINT "--- ---- ----- ----- ----- -----" 824 FOR I=W TO FO 826 PRINT AT F+I,R;O$(I) 828 NEXT I 830 PRINT AT FO,Z; 832 FOR J=W TO N 834 LET P(J,B)=P(J,G) 836 NEXT J 840 FOR I=W TO E 860 FOR J=W TO N 865 LET R(J)=INT (((V(I)*P(J,I))/(E*H))+D) 870 LET P(J,B)=P(J,B)+R(J) 875 NEXT J 890 PRINT I$(I);TAB F+F-LEN STR$ V(I);V(I);TAB E+F-LEN STR$ R(W);R(W);TAB T-W-LEN STR$ R(S);R(S);TAB 26-LEN STR$ R(R);R(R);TAB 32-LEN STR$ R(F);R(F) 900 NEXT I 920 FOR I=G TO B 930 PRINT TAB E+F-LEN STR$ P(W,I);P(W,I);TAB T-W-LEN STR$ P(S,I);P(S,I);TAB 26-LEN STR$ P(R,I);P(R,I);TAB 32-LEN STR$ P(F,I);P(F,I) 940 IF I=B THEN GOTO 963 950 PRINT TAB E-W;"----- ----- ----- -----" 960 NEXT I 963 PRINT AT 15,Z;"CASH";AT 17,Z;"CASH VAL " 980 PRINT "\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~\~~" 982 IF EP=Z THEN GOTO 999 984 PRINT AT T,Z;">>>GAME OVER<<<" 985 STOP 999 PRINT AT T,Z;"PRESS -C- TO CONT OR -S- TO SAVE" \n1000 IF YR=16 THEN GOTO 5000 \n1001 PAUSE P \n1010 IF INKEY$="S" THEN GOTO 1020 \n1015 GOTO 1100 \n1020 INPUT A$ \n1030 SAVE A$ \n1035 LET GSV=W \n1037 LET I=Z \n1040 GOTO 280 \n1100 FOR I=W TO N \n1101 IF P(I,B)<=Z AND N<>W THEN GOTO 2100 \n1102 GOTO 1126 \n1103 DIM O$(FO,W) \n1104 FOR K=W TO N \n1105 FOR J=W TO FO \n1106 IF P(K,J)>=O(J) AND P(K,J)>P(W,J)+P(S,J)+P(R,J)+P(F,J)-P(K,J) THEN LET O$(J)=CHR$ (156+K) \n1107 NEXT J \n1110 NEXT K \n1122 FOR K=W TO FO \n1123 PRINT AT S+K,R;O$(K) \n1124 NEXT K \n1125 RETURN \n1126 CLS \n1127 IF P(I,G)<Z THEN LET P(I,G)=INT (P(I,G)*1.04+D) \n1128 LET IRP=Z \n1129 PRINT AT Z,Z;N$(I);"(";L$(I);")";"Y>";YR;"Q>";QT \n1130 PRINT "INV P/S SHRS VAL NPC EAP" \n1132 LET LN=P(I,B)*.2 \n1135 LET TU=Z \n1140 PRINT "--- ----- ------ ------ --- ---" \n1160 FOR J=W TO E \n1170 LET V=INT ((V(J)*P(I,J)/(H*E))+D) \n1180 LET P(I,E+S)=P(I,E+S)+V \n1190 PRINT I$(J);TAB E-W-LEN STR$ V(J);V(J);TAB 16-LEN STR$ P(I,J);P(I,J);TAB T-F;"$";TAB T+S-LEN STR$ V;V;TAB 28-LEN STR$ E(J);E(J);TAB 32-LEN STR$ C(J);C(J) \n1200 NEXT J \n1205 LET ST=Z \n1207 IF QT<>F AND RND<.16 THEN GOSUB 6000 \n1210 FOR J=W TO R+S \n1220 LET ST=ST+V(J)*P(I,J) \n1230 NEXT J \n1235 LET ST=INT ((ST/(E*H))+D) \n1240 LET RE=INT (((V(S+F)*P(I,S+F)+V(F+R)*P(I,R+F))/(E*H))+D) \n1250 LET MM=INT (((V(F+F)*P(I,F+F)+V(E-W)*P(I,E-W))/(E*H))+D) \n1260 LET MK=INT (((V(E)*P(I,E))/(E*H))+D) \n1270 LET P(I,B)=ST+RE+MM+MK+P(I,G) \n1275 LET O=P(I,B) \n1278 IF O<=Z THEN LET O=W \n1280 LET SP=INT ((ST/O)*H) \n1290 LET RP=INT ((RE/O)*H) \n1300 LET MP=INT ((MM/O)*H) \n1310 LET KP=INT ((MK/O)*H) \n1320 LET CP=INT ((P(I,G)/O)*H) \n1322 FOR J=E+R TO T-S \n1323 PRINT AT J,E;" " \n1325 NEXT J \n1330 PRINT AT E+R,Z;"STOCKS";TAB E;"$";TAB T-F-LEN STR$ ST;ST;TAB E+E-LEN STR$ SP;SP;S$ \n1340 PRINT "R/E";TAB E;"$";TAB T-F-LEN STR$ RE;RE;TAB E+E-LEN STR$ RP;RP;S$ \n1350 PRINT "MIN/PMT";TAB E;"$";TAB T-F-LEN STR$ MM;MM;TAB E+E-LEN STR$ MP;MP;S$ \n1360 PRINT "MONEY MKT $";TAB T-F-LEN STR$ MK;MK;TAB E+E-LEN STR$ KP;KP;S$ \n1370 PRINT "CASH";TAB E;"$";TAB T-F-LEN STR$ P(I,G);P(I,G);TAB E+E-LEN STR$ CP;CP;S$ \n1380 PRINT TAB E;"-------" \n1390 PRINT "TOTAL";TAB E;"$";TAB T-F-LEN STR$ P(I,B);P(I,B) \n1400 PRINT AT E+R,T+R;"F/A";AT E+F,T+R;"$";FA;"000" \n1410 IF SE>Z THEN PRINT AT E+R,29;"%S%P%E" \n1420 IF P(I,B)<=Z THEN PRINT AT T-W,Z;"%*%*%Y%O%U%R% %B%R%O%K%E%*%*" \n1425 IF QT=W AND TU=Z AND YR<>W THEN PRINT AT T-W,Z;"YOU PAID A $";X(I)*1000;" TAX BILL" \n1430 IF QT=F AND P(I,G)>-LN THEN PRINT AT T-W,Z;">>IRA= ";N(I);"SHRS VAL= $";INT (N(I)*V(E)/(E*H));"<<" \n1440 PRINT AT 19,6;"(";TU;")" \n1450 LET TU=TU+W \n1460 PRINT AT T,Z;"ENTER TRANSACTION?%I%N%V%/%S%<%>%B%/%S%H%R%S" \n1461 SLOW \n1462 INPUT T$ \n1463 FAST \n1464 LET LN=P(I,B)*.2 \n1465 PRINT AT T-W,Z;E$;E$ \n1467 IF T$="" AND P(I,G)>-LN OR P(I,B)<=Z THEN GOTO 2100 \n1468 IF T$<>"" THEN GOTO 1474 \n1470 PRINT AT E+E,Z;"%>%>%S%E%L%L% %A%S%S%E%T%S% %T%O% %R%E%D%U%C%E% %D%E%B%T%<%<" \n1472 GOTO 1430 \n1474 IF T$="F/A" THEN GOTO 1700 \n1475 IF T$<>"R/O" THEN GOTO 1480 \n1476 GOSUB 1103 \n1477 GOTO 1430 \n1485 IF T$="$" THEN GOTO 1900 \n1486 IF LEN T$<7 THEN GOTO 1540 \n1490 IF T$(F TO R+R)<>"/S/" AND T$(F TO R+R)<>"/B/" THEN GOTO 1540 \n1500 LET A$=T$(W TO R) \n1505 IF A$="SPE" THEN GOTO 1800 \n1507 IF A$="IRA" THEN GOTO 2200 \n1510 FOR J=W TO E \n1520 IF A$=I$(J) THEN GOTO 1550 \n1530 NEXT J \n1540 PRINT AT T-W,Z;"%>%>%I%N%C%O%R%R%E%C%T% %I%N%P%U%T%<%<" \n1542 PAUSE H \n1543 GOTO 1430 \n1550 LET A=ABS INT VAL T$(F+R TO LEN T$) \n1551 LET M=VAL A$ \n1552 IF M<>R+R AND M<>R+F THEN GOTO 1560 \n1553 IF (M=R+R AND A>=1000) OR (M=R+F AND A>=2500) THEN GOTO 1560 \n1554 PRINT AT T-W,Z;"MIN>RER=1000 SHRS/REC=2500 SHRS" \n1555 GOTO 1460 \n1560 IF T$(S+R)="S" THEN GOTO 1610 \n1565 LET V=INT (((V(M)*A*1.015)/(E*H))+D) \n1570 IF P(I,G)+LN<V THEN GOTO 1680 \n1580 LET P(I,G)=P(I,G)-V \n1590 LET P(I,M)=P(I,M)+A \n1600 GOTO 1655 \n1610 IF P(I,M)<=A THEN LET A=P(I,M) \n1640 LET P(I,G)=INT (((V(M)*A*.985)/(E*H))+D+P(I,G)) \n1650 LET P(I,M)=P(I,M)-A \n1655 LET V=INT (((P(I,M)*V(M))/(E*H))+D) \n1660 PRINT AT S+M,G;" ";AT S+M,16-LEN STR$ P(I,J);P(I,J);TAB T-F;"$";TAB T+S-LEN STR$ V;V \n1670 GOTO 1205 \n1680 PRINT AT T-W,Z;"%N%O%T% %E%N%O%U%G%H% %C%A%S%H% %F%O%R% %T%R%A%N%S%A%C%T%I%O%N" \n1690 GOTO 1460 \n1699 REM **F/A****** \n1700 IF P(I,G)+LN>=FA THEN GOTO 1730 \n1710 PRINT AT T-W,Z;"NOT ENOUGH $ TO PAY F/A" \n1720 GOTO 1460 \n1730 LET P(I,G)=P(I,G)-FA \n1735 SLOW \n1740 FOR J=W TO RND*FO+W \n1750 LET A=INT (RND*E+W) \n1755 LET A$="SELL " \n1760 IF S(A)>Z AND T(A)>=W THEN LET A$="BUY " \n1770 PRINT AT 14+J,T+R;A$;I$(A) \n1780 NEXT J \n1784 PAUSE 200 \n1785 FAST \n1790 GOTO 1205 \n1800 IF SE>Z THEN GOTO 1820 \n1810 PRINT AT T-W,Z;"NO SPECIAL INVESTMENTS AVAILABLE" \n1815 GOTO 1460 \n1820 LET A=ABS INT VAL T$(F+R TO LEN T$) \n1850 IF P(I,G)-A<(P(I,B)-A)*-.2 THEN GOTO 1680 \n1860 LET P(I,G)=P(I,G)-A \n1870 LET I(I)=A+I(I) \n1880 GOTO 1205 \n1900 PRINT AT T-W,Z;E$;E$ \n1905 PRINT AT T-W,Z;"WHO TO TRANSFER $ TO?" \n1910 FOR J=W TO N \n1920 PRINT J;".";L$(J);" "; \n1930 NEXT J \n1940 INPUT T$ \n1943 IF T$<CHR$ 29 OR T$>CHR$ 32 THEN GOTO 1940 \n1945 LET TP=INT VAL T$ \n1946 IF TP>N THEN GOTO 1940 \n1960 PRINT AT T-W,Z;E$;E$ \n1970 PRINT AT T,Z;"ENTER AMOUNT?(000)" \n1980 INPUT A \n1990 LET A=ABS INT A \n1999 GOTO 2010 \n2000 FAST \n2001 IF I>N THEN GOTO 1100 \n2005 GOTO 1101 \n2010 IF P(I,G)+LN<A THEN GOTO 1680 \n2015 LET P(I,G)=P(I,G)-A \n2020 LET P(TP,G)=P(TP,G)+A \n2025 LET P(TP,B)=P(TP,B)+A \n2030 GOTO 1205 \n2100 NEXT I \n2105 GOTO 3000 \n2200 IF IRP<>W THEN GOTO 2205 \n2201 PRINT AT T-W,Z;"NO MORE IRA TRANSACTIONS THIS YR" \n2202 GOTO 1460 \n2205 LET IRP=W \n2206 IF QT=F THEN GOTO 2220 \n2210 PRINT AT T-W,Z;"NO IRA TRANSACTIONS UNTIL QTR 4" \n2215 GOTO 1460 \n2220 LET A=ABS INT VAL T$(F+R TO LEN T$) \n2225 IF T$(S+R)="S" THEN GOTO 2300 \n2227 IF A>2000 THEN LET A=2000 \n2230 IF (P(I,G)+LN)*H*E<A*V(E) THEN GOTO 1680 \n2240 LET P(I,G)=P(I,G)-INT (A*V(E)/(H*E)) \n2250 LET N(I)=N(I)+A \n2260 GOTO 1205 \n2300 IF A>N(I) THEN LET A=N(I) \n2305 LET N(I)=N(I)-A \n2310 LET P(I,G)=P(I,G)+INT ((V(E)*A/(H*E))*.9+D) \n2320 GOTO 1205 \n3010 FOR I=W TO E \n3020 IF T(I)>Z THEN GOTO 3060 \n3030 LET T(I)=INT (Q(I)*RND+M(I)) \n3040 LET S(I)=-W \n3050 IF RND>D THEN LET S(I)=W \n3060 LET T(I)=T(I)-W \n3070 LET L(I)=V(I) \n3080 LET V(I)=V(I)+INT (((((S(I)*RND*A(I))+F(I))/H)*V(I))+D) \n3090 IF V(I)<W THEN LET V(I)=W \n3100 NEXT I \n3105 LET FA=INT (((V(E)/OO)*FO+D)) \n3110 IF SE=Z THEN GOTO 3200 \n3120 LET PO=RND*(6-SE)+((SE-W)/F) \n3130 IF RND<((5.5-SE)/E) THEN LET PO=Z \n3140 FOR I=W TO N \n3150 LET P(I,G)=P(I,G)+INT (I(I)*PO+D) \n3160 NEXT I \n3170 DIM I(F) \n3200 DIM O$(FO,W) \n3205 FOR I=W TO N \n3210 FOR J=W TO FO \n3220 IF P(I,J)<O(J) THEN GOTO 3240 \n3230 IF P(I,J)<P(W,J)+P(S,J)+P(R,J)+P(F,J)-P(I,J) THEN GOTO 3240 \n3235 LET P(I,G)=P(I,G)+INT (P(I,J)*V(J)*D/(H*H)) \n3237 LET O$(J)=CHR$ (156+I) \n3240 NEXT J \n3250 NEXT I \n3310 LET M$="...........PRICE CHANGES FOR LEADING INVESTMENTS........." \n3312 GOSUB E \n3313 GOSUB X \n3320 FOR I=W TO E \n3330 LET M$=M$+I$(I)+"..$"+STR$ (V(I)-L(I))+"...." \n3335 IF I=FO THEN GOSUB X \n3340 NEXT I \n3345 GOSUB X \n3350 IF SE>Z THEN LET M$=M$+"......"+J$(SE) \n3355 IF SE>Z THEN LET M$=M$+"...RETURNED..."+STR$ INT ((PO-W)*H)+S$+"....." \n3360 GOSUB X \n3370 LET M$=M$+"....END OF REPORT......." \n3380 GOSUB X \n3420 FAST \n4000 GOTO 600 \n5005 LET EP=W \n5010 LET A=INT (N(W)*V(E)/(E*H)) \n5020 LET P(W,G)=P(W,G)+A \n5030 LET P(W,B)=P(W,B)+A \n5040 LET WA=P(W,B) \n5050 LET WP=W \n5060 IF N>W THEN GOTO 5150 \n5070 IF WA>10000 THEN GOTO 5100 \n5080 LET M$=E$+"...........YOU HAVE NOT MET YOUR INVESTMENT " \n5081 GOSUB E \n5082 GOSUB X \n5083 LET M$=M$+"OBJECTIVE OF INCREASING YOUR ASSETS TO $10 MILLION " \n5085 GOSUB X \n5088 LET M$=M$+".....TO BAD...BETTER ""LUCK"" NEXT TIME................." \n5089 GOSUB X \n5090 GOTO 5250 \n5100 LET M$=E$+"...............CONGRATULATIONS YOU HAVE USED YOUR " \n5101 GOSUB E \n5103 GOSUB X \n5105 LET M$=M$+"INVESTMENT SAVVY TO MEET YOUR $10 MILLION OBJECTIVE........GOOD JOB................" \n5106 GOSUB X \n5110 GOTO 5250 \n5150 FOR I=S TO N \n5160 LET A=INT (N(I)*V(E)/(E*H)) \n5170 LET P(I,G)=P(I,G)+A \n5180 LET P(I,B)=P(I,B)+A \n5190 IF P(I,B)>WA THEN LET WP=I \n5200 IF P(I,B)>WA THEN LET WA=P(I,12) \n5210 NEXT I \n5220 LET M$=E$+"...........CONGRATULATIONS "+N$(WP) \n5221 GOSUB E \n5222 GOSUB X \n5225 LET M$=M$+" HAS USED THEIR INVESTMENT SAVVY TO INCREASE THEIR " \n5226 GOSUB X \n5230 LET M$=M$+"ASSETS MORE THAN THE OTHER INVESTORS......GOOD JOB................" \n5240 GOSUB X \n5285 FAST \n5290 GOTO 800 \n6002 IF QT=W AND TU=Z THEN RETURN \n6005 LET A=INT (RND*9+W) \n6007 LET WA=INT ((V(E)/H)*(RND*40+E)+D) \n6010 IF RND<.6 THEN GOTO 6050 \n6015 IF RND<.02 THEN GOTO 6090 \n6020 PRINT AT 20,Z;W$(A);"$";WA;"000" \n6030 LET P(I,G)=P(I,G)+WA \n6040 RETURN \n6050 LET A=A+E \n6055 IF RND<.05 AND P(I,G)>Z THEN GOTO 6150 \n6060 PRINT AT 20,Z;W$(A);"$";WA;"000" \n6070 LET P(I,G)=P(I,G)-WA \n6080 RETURN \n6090 IF RND<.5 AND P(I,G)>Z THEN GOTO 6115 \n6095 LET A=E \n6100 LET WA=E*H \n6110 GOTO 6020 \n6115 LET A=9 \n6120 LET WA=ABS (P(I,G)*E) \n6130 GOTO 6020 \n6150 LET A=20 \n6160 LET WA=P(I,G) \n6170 GOTO 6060 \n9000 POKE 32091,(160+CODE ("Z")) \n9010 DIM Z$(24) \n9020 LET Z$="-" \n9030 RAND USR 32685 \n9040 LET Z$="%PW/S" \n9050 RAND USR 32685 \n9060 GOTO W \n9500 SAVE "W/%S" \n9510 GOTO 1

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top