--- title: "Wall Street" id: 56744 type: "computer_media" slug: "wall-street" url: "http://localhost/computer_media/wall-street/" markdown_url: "http://localhost/computer_media/wall-street.md" published_at: "2024-09-22T23:31:59+00:00" modified_at: "2026-04-03T07:58:53+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2024/09/TW_WS.jpeg" excerpt: "A four-player investment simulation spanning 16 years lets you trade stocks, real estate, and money markets — complete with taxes, IRA accounts, and a scrolling ticker-tape news feed." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Timeworks" slug: "timeworks" taxonomy: "post_tag" url: "http://localhost/tag/timeworks/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" genre: - name: "Game" slug: "game" taxonomy: "genre" url: "http://localhost/type/game/" media_type: "Program" download_url: "https://archive.org/download/timex-sinclair-software-archive/Wall%20Street%20%281983%29%28Timeworks%29%28TS1000%29%28US%29%28Program%29.zip" mediadate: "1983" producer_company: - id: 11400 title: "Timeworks, Inc." type: "company" url: "http://localhost/company/timeworks/" images: - url: "http://localhost/wp-content/uploads/2024/09/TW_WS.jpeg" - url: "http://localhost/wp-content/uploads/2024/09/TW_WS1.jpg" - url: "http://localhost/wp-content/uploads/2024/09/TW_WS2.jpg" - url: "http://localhost/wp-content/uploads/2024/09/TW_WSL.jpg" related_products: - id: 14554 title: "Wall Street" type: "product" url: "http://localhost/product/wall-street/" media_type_tags: "Game" --- # Wall Street 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: | Variable | Value | Typical use | | --- | --- | --- | | `W` | 1 | Loop start, increment | | `Z` | 0 | Zero / false sentinel | | `S` | 2 | Divisor, index offset | | `R` | 3 | Column index, offset | | `F` | 4 | Quarters per year, max traders | | `T` | 20 (approx) | Row 20, display bottom | | `E` | 10 | Number of investments | | `H` | 100 | Percentage scaling | | `FO` | 4 | Number of investments on board display | | `B` | portfolio index | Total balance column in P() array | | `G` | cash index | Cash column in P() array | | `D` | .5 | Rounding constant for INT | | `P` | large pause value | PAUSE 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)'.~~## '%1%1+ LIST :'%$'.%?%?%?:.:..:%"%K%K4EKL LOAD %T'.%/E43M"~~ LPRINT STOP COPY COPY 3 REM 8DAF17F976 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 27FFFFF76 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 NF 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.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)";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=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$ 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)+LNW 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*EN(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)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 ```