WA-TOR is a predator-prey population simulator based on the Computer Recreations piece in Scientific American, in which the user populates a toroidal ocean planet with fish and sharks and observes whether both species can reach a long-term equilibrium. The program is heavily machine-code driven: line 0 contains a large REM block holding the entire executable, with RAND USR calls throughout the BASIC launching routines for the title screen, parameter input, graphing, and simulation engine. It incorporates Nissim Elmaleh’s “SHR” machine-code library for the cover screen and graphing routines. The BASIC layer is minimal—lines 1 through 37—serving mainly as a loader and menu shell, with VAL “number” used in GO TO and RAND USR targets as a memory-saving idiom. A save/restart menu (lines 13–37) allows the user to preserve a run to tape or restart the simulation.
Program Analysis
Program Structure
The program is divided into two distinct layers. The first is a large machine-code payload stored in the REM statement at line 0, which contains all simulation logic, graphics routines, the title/cover screen renderer, and population-graphing code. The second layer is a short BASIC shell (lines 1–37) that acts as a loader, parameter-input handler, and save/restart menu.
Execution flow proceeds as follows:
- Line
1:RAND USR VAL "18048"— jumps into the machine-code title/cover screen routine. - Lines
2–3: Initialize BASIC variablesN=0andY=1usingNOT PIandNOT N. - Line
4:RAND USR VAL "16514"— launches the parameter-input machine-code routine. - Lines
5–12: BASIC INPUT loop that validates a numeric parameterAagainst a PEEK-derived maximum, POKEs it into a system address, and calls further machine-code routines at addresses16660,16771, and16708. - Lines
13–17: Post-run save menu — prompts the user to save, collects a filename via INPUT, and executesSAVE N$. - Lines
20–23: Restart sequence usingRAND USR VAL "17577",CLS,LIST VAL "18", andSTOP. - Lines
30–37: Keypress-driven menu loop for launching a new game or saving the program to tape as"WATOR"(with the R in inverse video as an auto-run marker).
Machine Code Usage
The REM block at line 0 is several kilobytes long and contains the full simulation and display engine. Multiple RAND USR calls throughout the BASIC dispatch into specific offsets within this block. Key entry points identified from the BASIC include:
| Address | Role |
|---|---|
18048 | Title/cover screen display (uses SHR library) |
16514 | Parameter input machine-code routine |
16660 | Simulation initialisation |
16771 | Main simulation/graphing loop |
16708 | Error/re-prompt routine |
17577 | Restart/reset routine |
18496 | Called during tape-save restart sequence |
16698 | Called on non-S keypress in menu loop (line 32) |
The machine code handles the toroidal ocean grid, creature movement rules, breeding and starvation counters for both species, and population graph rendering — none of which appears in BASIC.
Key BASIC Idioms
VAL "number"inRAND USRandGO TO: Used throughout (e.g.,RAND USR VAL "18048",GOTO VAL "11") as a standard memory-saving technique — storing the line number or address as a short string rather than a full floating-point constant.NOT PI/NOT N: Lines2–3useLET N=NOT PI(evaluates to 0) andLET Y=NOT N(evaluates to 1) as a compact way to assign integer 0 and 1.- Computed branch in line
14:GOTO 14+(INKEY$="Y")+(7 AND INKEY$="N")— a single-line dispatch: staying at 14 if no key, jumping to 15 on “Y”, jumping to 21 on “N” (14+7=21), neatly implementing a yes/no branch without IF statements. - Busy-wait loop at line
30:IF INKEY$="" THEN GOTO 30waits for any keypress before the menu branches. - Parameter bounds check via PEEK: Line
6usesPEEK VAL "16393"to fetch the upper limit for parameterAfrom a machine-code-written memory location, keeping the validation dynamic.
Save/Restart Menu
Lines 30–37 implement a tape-oriented utility loop. Pressing “S” branches to line 36, which saves the program. Any other key calls the machine-code routine at 16698 (likely a screen clear or reset), then CLEAR, then RAND USR VAL "18496", and finally RUN to restart. The GOTO VAL "30" at line 37 returns to the wait loop after a save, allowing repeated saves or a subsequent restart.
Notable Techniques
- The REM block embeds the SHR machine-code library for cover-screen rendering and graphing, integrating third-party assembly into the program as data within line
0. - The inverse-video
REMcomment at line19(RESTART: GOTO 20) serves as an in-listing human-readable label with no runtime effect, a common documentation practice in machine-code-heavy BASIC programs. - Storing the machine-code entry points as
VAL "number"strings rather than numeric literals marginally reduces the memory used by the BASIC program’s variable-length number representation. - The use of
PEEK VAL "16393"for the parameter maximum means the BASIC validation loop is automatically coupled to whatever the machine code has set up, requiring no hardcoded limit in BASIC.
Anomalies and Observations
- Line
22usesLIST VAL "18"in the restart path (betweenCLSandSTOP), which is unusual — it will display part of the BASIC listing momentarily beforeSTOPhalts execution. This appears intentional, possibly to show the user which line toRUNfrom. - Line
19is aREMwith a human-readable label but is never the target of anyGO TO; the actual restart entry is line20. - The jump from line
10isGOTO VAL "13", skipping lines11–12(the error path), after a successful parameter entry and machine-code simulation run.
Content
Image Gallery
Source Code
0 REM F3FD2A35441121 0 1394421BB40E5 0 0219E40E99E40E9ED44ED44FD19 AFEFF28 9 3ED47ED473E 0FDE9 13A443E14ED47FDE9ED44ED44A7 143 02A1040ED42FD21 0403E1EED47CBFC 1 1 33EEE 1 1 3 0ED4FFB3EDDE918A3 0 03A2E44FE 0C021FA67E536762336FD2336E52336E123366F2336E93EE91121 0 6AE197710FC36E12377AFE1E5111B 0ED52CBFC2235443E 1322E44E122 C40C9 0 0 0 0212E44CB46C0CF F 0 0 0 0 0 0 0 0 0 0 0 0212E44CB46C8CB862A1040 119 3AFED4222 C40C9 0 0 0 0 0 01E 118 21EFECD2641ED4B36403EAD91D8D54F50CB38CB38CB38AF7817171792C6 8571528 4CB 318F9D5CDA941ED5B37441AE52ABE46CB9D57878787 6 0CB104F 9CB129FAEE1D1C1CB4120 3A318 1B31840C579E6F891ED442139445F856F566B26 01C292929292929 6 04B 9 1AF44 9C1E5ED53BE46AF58574767692929292929 9191E 619ED5B C4019223744E1C9FE4138 2F6C0 E 0CB7F28 32F E8016 05F197E81CB77C0ED5B374412C9CD2641ED4B36403E1F90D83EAD914FD81E 1CDA9413A2140CDE941C9CDBE42C3E140 0 0 0 02A2F4418 32A31442233442A2940 1 5 0 9ED5B3640ED532B447EFE76C8FEDD2014233A2B44D6 8322B443236403A2C4432374018E423E5 1 0 8CB7F28 2 E 1C526 0E63F6F292929ED5B334419EBC13A3444FE1E1A20 2CB3FCB4128 12F322140C5D5CD 742D1C1132136403510E021374034CB6E20 93A2B44323640E118983A3640322B443A2C44323740E1188911F86621EB4273237221E442361621204411 0 0237EFEFFC8C680E5FEA320 521E4423615 61521 8 119EB21 0681977C5D5E5D113 11F 0EDB0D1C110E82AEB421121 01922EB42E118C5808080B9AEB2AA8E809D80A9AEBB9B8094809D9C80A8ADB7B4B3B4B3B880808076B2A6BD94A39CA0808080A6B3BE80B0AABE80B7AAB9BAB7B3B88076 0 1 2 3 476 0 0 0 03E 03CF521374036 23EAD324A4421364077CD59413A4A443DFE 028 218ECF1FE 228 218DC3E1F324A442137407721214036 021364036 ACD 7423A4A443DFEFF28 218E22A294022464421 5432229403E 73236403E 0323740CD2D423E 0324A442137407721364036 9CD594121364036 BCD59413A4A44C6 AFE 428 218DE 6 721214036DF21364036 AC5AF3A3640C6163236403E1F323740F5CD 742F13DFEFF28 218F1C110E2C9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5349F17 337232DFF44AD 044 0 01E8044 01EDFE78775141C14 6 E 61412FF B 0231B1261B615FF 0 05843 02126432229403EAD3236403E 0323740CD2D422141432229403EAB323640CD32422A4644222940C9 0 0 0 0 0 0 0 0FFFF3F9CE08F3FFFDFCFC0 0 0 0FBF7FFFF1F 31F 3FFFFFFFFEEF4F8F4EFFFFFFFFF3F F1FFFFF 0 0 0 0 0 0 0 8 52E1A2C2F 2BB1E8A DBA FAB 2BB1EAA DA13C1937BDA68A F11 F8A3CB923382415283434BDA622 B10103430B33022 EA13CA7A6BDA622 FB936B923B9232D34A02732 C3F2F82193E2F242F2E2F24BCA3A1A110ADBB8A392E 38A802E 38A1C F F253D9FBB252B1515 58015 5 52B FB3A33D29BB142BAAB3B380AA11A2229F2F1CB13A30B7B1 23C183C1A3CB8B1BB 1B4B43D21A221323E18181A3EB8AE20 52C283D8BA22836A31411992D2D2D3F2C2C2C3DA2A2 D253939 D999999AE2417B6A521A83F2222161F202018BA188731B5862A1B8C29879EB5B5873D871A87 A2C302C308CB7A73CAD2F23381038B3 AAD8686B78CB7B73CAD1A3B1A1A1A8B B 3B9 8 8 C28 CA38411BB119C82A380B211ABB78A8B222D848BBB299C8BA3803F3D3AB719B722B7301018 FBE FB78095ABAB299EAF222D36292929BE8080802C37349521 CBB33BB3F18 6 7331827BB3F FBCBC9393 B 719 FBEBE272727B919162C2C2C32 B262929B812808080B91924AB2A B B BB9A220A2B9A23AA2B930232D30B32F3184B3AA3B143B3C3BB3B3BD9898981C39A83AAA1414143C3C8F9E 9131713B6BF192B1F1F8B3BB53B8F9E2C 58C3AB63AA83A348B8B9E8F9E8F9E1A2D2E35BA2318BABABB119C 3131818BA2F332833BCBCA4A12F2F1833882F39808F32BD322833A4A125143F372537398016BDBDA1A4A1A4A116BD3980398039803E 0 0 0 0FD21 040CF CD51120 0A747 42A8546ED5210FCC15919CB E 4C5CB 610FCCBFEC1CB E10FCCB 6C9CD3448 6C0C51E20AFD3FBCD46 F38 A1FD3FBC1FD21 040CF CDBFB87FA294730E94E 6 8AFCB 11F57DBFB1F30FB7AD3FB10F1231D20EADBFB1F30FB7BD3FBC1 520C13E 4D3FBCD 7 2C9CD3448227B4016182A C4023E51E 0E1E54E7923 675 4B8281CE5CB27878726 FCB14836FCB119FAE2A7B404EB17723227B40E118DB1CCB5B28D4C11520CDC9CD2448FD66 0FD6E 1FD56 2FD5E 37A9430 82F3CFD36 4FF18 4FD36 4 157FD7E 4FD77 67B9530 82F3CFD36 5FF18 4FD36 5 15FFD36 7 07BBA38 FFD36 6 0FD7E 5FD77 7D5D533D1337ACB3F42FD36 8 0F5C5D5E5CDA646E1D1C1F18330 4FD36 8FFBA382B9238 BFD86 838 DFD36 8 018 7FD86 8FD36 8 0F5FD7E 0FD86 4FD77 0FD7E 1FD86 5FD77 1F1181AFDCB 84620CFF5FD7E 0FD86 6FD77 0FD7E 1FD86 7FD77 1F110A4C9CD23 F2A854611 A18A7ED52E5FDE1C9CD244811 A 0FDE5E119C9 0C3 05711824021304F7EF51A77F1122313 B78B1C818F2 03A8240FEF328 5CD404818F4CD2342216C5122225122265121FE50226551C93A8240FEF3C0CDBE42CD3A4121BE42222251222651215042226551CD4048C9 617CDB644 1 5 021194FCD7141CDBB 27CFEFDCA 04AFEFB20F3 0 617CDB644CD4349CD3049CD5848CD5043 6 2C53E 0324A44CDF1483A4A443C28 218F2C110ECCD5044CD3049CD7748CD8049C31D44 0 0 0 0 0 0 0 0 021 0573A4A4416 05F32374019191919E52323CD1249CD5941E1CD1249CD5941C95E2356EB2323232311 A 0CD1951112C 0CD115111 A 0197D323640C9 0CDBB 27C3C28 218F7CDBB 27C3CC018F8 0 0 1 7 021 A41E536182336 8212141E5364E213341E536 93E 1322140CDCF40E136 AE13671E1362A2336D6C9ED5B C40 118 321 04CEDB0C9 0 0 03AE456FEFFC021EC4B 1 8 DCD7141CDBB 27CFEDF28 AFEEF20F47DFE7F20EFC97DFEDF20E9C121DD4B 1 E DCD714121 057CDCE4921 257CDCE4921D14B 111 DCD7141CD4048CD4048C3BD483EFD5E2356232323F5E5D55E2356D5D5C12323235E2356D5E1D119D119C511 3 0CD6342C1D1EB732372F13DC8505918D4 0CDB444CD23 FCD774A3AE556FE 02019CD434921AE4B 1 0 DCD7141218B4B 1 0 ECD71413EC018 23E40F5CD3147CD514AF1 640CD864ACDE546CD774A 6C078CD864ACDE546FD21 040CD2B FC31D44AF32F5673E3F32F66732F8673EFF32F767CD7147C932E946FE4020 43E 818 23E18322C48C9 1 01811FE7F21FF7F36 0EDB8C9 0F53EC0C5CD664A783DFE3F28 23EBAF532F667AFF532F567CDA346C1AF78CE2438 218F0C1AF78DE A38 218E2AF32F56732F66732F767F1F53D32F867CD7147C1783DF5FE3F202921 057E5CD204B3AF56732D0563E 032F5673E3F32F667E12323F1CD204B3AF56732D256F1CD664AC93AD05632F5673EBE32F667F1F521 058E5CD204B3AD25632F5673EBE32F667E12323F1CD204B18D3 0F5E55E235632F867EB11 9 0CD6B421119 0CD63427D32F767CD7147E1F13DFEFFC82323232318D8 1 0 021544BCD7141C9 0 0 B392D34322638 0271B 03C34342938 038342B393C26372A B1A B102811 01D252421 02B1B3326282D27263A37 B76 0 0 0 0 0 0 B2D34372E3F3433392631 E 01D 0292E3B 014 01D1C 0282D3734333433381B B76 B3B2A37392E282631313E E 01D 0292E3B 0141D1C1C 028372A26393A372A38 B76 B 028343235312A392A B76 B2E332C1B1B1B1B1B1B1B1B1B B76 B38323434392D 029263926 F 03E 018 033 B7680 0 0 0 0 080 0 0808080 0 0 0 08080808080 0 0808080 0 0808080 07680 0 0 0 0 080 880 0 0 080 8 8 8 8 880 8 8 880 0 0 080 880 0 0807680 0 0 0 0 080 080 0 0 080 0 0 0 0 080 0 0 080 0 0 080 080 0 0807680 0 080 0 080 88080808080 8808080 880 8 8 880 0 0 080 8808080 07680 0 080 0 080 080 0 0 080 0 0 0 0 080 0 0 080 0 0 080 080 0 08076 08080808080 8 880 0 0 080 8 8 8 8 880 8 8 8 8808080 8 880 0 08076161616161616161616161616161616161616161616161616161616161616161676 0 0 0 0 0 0 0 0 0B9ADAA80B5A6B7A6B2AAB9AAB7B8 0 0 0 0 0 0 0 0 076 0 0 03E343A37 02F3427 02E38 03934 0382A312A2839 0333A32272A373876292A3828372E272E332C 0392D2A 0312E2B2A 0283E28312A 0342B 0392D2A762B2E382D 0263329 0382D263730381B 0 B333A32272A37 B 032263E 0272A763A35 03934 01E21211A 0263131 034392D2A3738 03A35 03934 0221F1B 076B3BAB2A7AAB7 016 0392D2A 02E332E392E2631 0 03534353A3126392E343376 0 0312A3B2A31 0342B 02A26282D 038352A282E2A381B 0 0 0 0 0 0 0 076B1AEABAAB8B5A6B3 016 02D343C 03134332C 0392D2A 034372C26332E383276 0 0383A373B2E3B2A381A 02E33 0282D3734333433381B 0 0 0 0 0 0 0 076A7B7AAAAA9 016 0392D2A 0262C2A 02639 03C2D2E282D 0392D2A 034371676 0 02C26332E3832 0323A3839 0272A 0272A2B34372A 027372A2A292E332C76 0 0352637392D2A33342C2A332A392E282631313E 01026382A3D3A2631111B76ABAAAAA9 016 02D343C 03134332C 0392D2A 028372A26393A372A 028263376 0 031262830 02B2A2A292E332C 0102B2E382D183531263330393433111B 0768080B5B7AAB8B8808BA7B7AAA6B08B80A6B980A6B3BE80B9AEB2AA80B9B480807680AAB8A8A6B5AA80B9B480A8B4B2B2A6B3A980B2AAB3BA80B4B5B9AEB4B3B89B7635372A3838 026333E 0302A3E 03934 0283433392E333A2A 03C261639343776 B3828372A2A33D935372E33392A37 F 0381835 B76 0CD7049CD3049CDB444 1 A15C5218055CD7141C1C5218F55CD7141C1C5219E55CD7141C110E6 0 0 0218F55CD7141 1 0 2CDF5 8CD7B4121AD55CD6A41CD7B4121EF55CD6A41CD7B41 1 7 8211256CD7141212056CD6A412A294022D6563E 1327A40F5FE 128 FFE 53E3F32 94020 B212856CD6A413EFF32 940F12EC6856F26566ECD6A412AD656222940 1 0 0C93A21404F2EE63A7A40856F26567126 069CD5D41217B56CD6A413A7A403CFE A20AD3A2140FE 0C0 0217D40222940C92A C4011E1 219EB217D56 1 C 0EDB0CDBB 2237CB528F8C9E51E 0 1F0D8CDE1 7CDAD AC9221640CDCF AC9221640CDF5 8CDCF AC9 6203E 8D710FBC921D8563AE756CD94413AEB56CD944118 A 6 3772336 02310F9C921 05736 011 157 17F 9EDB0 1 013CDF5 8CD7B41CD7B41CD7B41 021 44236EC21 F42368021184236EE3AEB56CDE84121 44236E821 F42364021184236EA3AE756CDE841C3C043F521 05BE5CDC84211C0 2CD6742EBE119197EFE 020EAE5CDC8423AE85616 05FCD6742EBE13E40837723E5CDC8423AEA5616 05FCD6742EBE173F1F5 6 24FAF791F4F381D10F83A7A40FE8028 73E80327A4018 43E8F18F76F2655 1 A14CD7141F13DC81898C5 6107C4D21 0 029CB111730 11910F7C1C9 E 118 6 E 218 2 E 07CAAE68047D5CDBE42E3CDBE42EBE179A7283678B1E5ED62ED52E5C1D121 0 0373FF57A531E 82930 58FED4A18 987ED4A38 3ED423D3C1D20EC5FF130E2CB4F20 1EBCB7FC818 BCD5042CB10D018 37C 7D0EBA7ED62ED52C9D5114B 0ED4B3240 36268CD 913E56269CD 913C17C8130 1 4677D9030 1256F2B223240CDBE42D1C9 0 6162A C4011 05B237EFE7628171ACB7F20 8CB7720 8368018 6369518 2369A131318E310E197 0322240 1 016CDF5 811D856 6 6C51A6F131A6713D5CD5D41D1C13E 4B820 AC5D5 11016CDF5 8D1C110E2 1 016CDF5 83EABD73E14D7 1 616CDF5 83E92D7 1 B16CDF5 83E93D7 11016CDF5 83EB8D73E14D7 11616CDF5 83E92D7 11B16CDF5 83E93D7 11F16CDF5 83EBED73E39D73E14D72AE456E5CD5D41 11617CDF5 8E1E526 0CD5D41E16C26 0CD5D41 1 B17218055CD71413E 2322240C9 0 0 0AF32E556AF32E456CDF342CD46 F304DCDC84421 05B5E23E556CB7220 ACB73C24045CB7BC2D045CBB6E1237CFE6020E57DFE8020E021 0573AE4565F16 019191919 1D856 A7723 3 A7723 1DE56 A7723 3 A777B3C28 318A9 0 617CDB644 1 A 0216856CD7141217756CD6A413E 1F52E79856F26556E24CD6A41F13CFE 620EECDBB 27DFEF720F87CFEFD2814FEFBCA3D41FEF72827FEEFCA9648FEDF283B18DF3AE456FEFFC2C54321 05736 011 157 1 0 4EDB03AE5563CC3C143CDF3422A C40 6177EFE7628 6C680772318F510FB1618CD6B 8C31D44CDB4442A294022D656C92AD656222940C31D44 0 0 6192A C407EFE7628 536 02318F610FBC9 0 0CDC84211 8 0CD674245 43ED8 710FD32E656C9AF E 33AE656 F38 2CB81 F38 2CB8932E656 0545DCB49201CCB4120 E13137AFE60C07BFE80C011 05BC91B1B7AFE5AC0117E60C9AFE51140 0CB4120 FED527CFE5A20 41180 519EBE1C9 0197CFE6020F67DFE7F38F11180 5AFED5218E9 0 0 0CBB3CBB22B141C3AE856BB38 63AEA56BA301D36 0233640ED5BDA562AD8562B22D856E5AFED52E130 322DA56C3EA43 6 4D5CDDC441AFE 028 A10F6D1CBF373237218E8C1D5E550593AE956BB38 B1640E136 02336 0E118E3E136402336 0E13640233640ED5BD8562ADC5613ED53D856D5AFED52E130B322DC5618AE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0CBBBCBB22B3AEC56BB38 63AEE56BA301D36 0233640ED5BE0562ADE562B22DE56E5AFED52E130 322E056C3EA43 6 4D5CDDC441ACB77201A10F6D1141CD5 6 4CDDC441AFE 0282910F6D1CBFB73237218D8C1D5E550593AED56BB382416401CC1E1CBFB732372C5E136 02336 0C35845C1 4 CCBF036 02336 0D5C5D1E118CAE136802336 0E13680233640ED5BDE562AE25613ED53DE56D5AFED52E1D2584522E256C35845 0 0 0 0 0 0 0 0215B40F921FF7F 1 B1816 0722B B78B120F922 4402B363E2BF92B2B22 240C375 6CD2448FD7E 047E6 75778CB3FCB3FCB3F5FFD7E 1FEC038 6FD21 040CF CD51120 0 0 0 0 0 0 08B97A2B2BD 0 B8686 13C2616393437 2 6 6 B76 B 6 6 4BCA696B9B4B7878686 B76 B 880808080808080808080 8 B76 B2726382A29 03433 02633 02E292A26 0273E 0261B301B 0292A3C29332A3EC038282E2A33392E2B2E28 026322A372E282633C0 0292A281B 01D252420 B76 B 83C372E39392A33 0273E 02B372A29 03326282D27263A371A 01D252421 8 B76 BEE35263726322A392A3738 B761A BABAEB8AD B761A BB8ADA6B7B0 B76 B333A32272A37 B1A76 B312E2B2A38352633 B1A76 B27372A2A29 B1A76 B2B2A2A29 B1A761A BB4B08F8080 8 0103ED93311 B76 BA8B4B2B2A6B3A980B2AAB3BA B761A1A B B76 BB4BAB980B4AB80B7A6B3ACAA B76 B1D1BFEDF3C26393437 B76 B1E1BE63C26393437 B76 B1F1BF510FF11 03828372A2A33 B76 B201BF52C3726352D B76 B211BE3352C321B B76313B4750313B475058 0 0 0 0 0 01261 3 164 069 22F 0 7 04A 0FF 03664 F 5 31E14 A 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 021404836 12336402336 6AF322240 1 0 7CDF5 83E10F5CD2950F13D20F83E 2322240 1 F 6CDF5 83EA6D72180573E87F54E234623E53E80CDB2 BE1F13D28 218EE 1 B BCDF5 8AFD7 1 F ACDF5 8AFD7 111 9CDF5 8AFD7 1 B D217057221640CDF5 8CDCF AC3D05A 0 0 BB5B7B4A9BAA8B9AEB4B3 B76 0 0 02514 F1A171A1E182F1A1917231A28181E1A281A15151217161825183016261A141A21171B181B1A201A1219111A1D1A2D1A2C1A2119311823161D17191A1417161A2A1A311A251610191B16251A2D18 F1818182917221A1A1A111727161E142B1A1F18181527172C1614181017231512152C18271A1816151611192F182B172116211A181A2B182114301A25171616 F1929152F17101529181B17241A2816241411162E1A1B1418171D15291A1D142B16121A F1421183018101A14162D1710181D161C1A12162F161F1A1A1627182F142715111429162B14 F1729142D15111425192214111518141D182F152E14 F15151A211512142B15251516173114271410141B15231430141F14151419 076141414141414141414141414143B 01E1B1C1E14141414141414141414141414761B1B292E3839372E273A392A29 03A33292A37 0312E282A33382A 0273E1B1B76 E838383 487 0 0 4 08383 087 0 0 4 08383 0 08383 0 0 0878383 0 E76 E 085 0 0858383 585 0 0 58586 6 585 0 0 5 28383 0 0 0858383 1 E76 E 085 0 085 0 0 585 0 0 585 0 0 585 3 3 587 0 0 5 0 085 0 0 5 E76 E 0 2 0 0 2 0 0 1 0 3 3 0 2 0 0 1 2 0 0 1 0 3 3 0 0 0 2 3 3 0 1768A A A A A A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A A A A A A A8A8A8A8A8A76 5 0 0 0 0 0 5 0 0 9 9 9 0 0 0 0 9 9 9 0 0 0 0 0 0 7 0 0 0 0 0 E76 5 0 0 0 0 0 5 0 A878383 A 0 0 A8383 4 A 0 0 0 0 0 5 0 0878383 476 5 0 0 0 0 0 5 087 1 0 086 0 0 6 0 0 2 4 0 0 6 386 5 0 0 5 0 0 276 5 0 0 0 0 0 5 085 034 085 686 5 034 0 5 085 0 0 0 5 0 0868383 47686 08786 087 1 085 0 0 08587 4 5 0 0 0 5 085 0 0 0 5 0 0 0 0 08576 E86 1 086 1 0 0 0868383 1 585 28383 6 0 0 08683 682 0 0868383 676 E 0 0 0 0 0 0 0 0 0 0 085 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 E76 E3534 027343D 02220 4 0 0 1 2 0 087 02F2A2B2B2A373834331A332D E76 E 010221C1F11 0 0 085 383838383 3 5 0 0 0 01C1F21241F 0 0 0 0 E76 E2124221623231F20 0 08683838383 6 0 0 0 03A1B 0381B 0261B 0 0 E7676 0 0 0 0 0 0 0 0 0 0 0 0 0CD30492A C40 1C6 0 9 131 2119058EBEDB0CD3049 610C5 E ACD B5B E 9CD B5B E ACD B5B E BCD B5BC110E8C34048 C C C C C C CC9 610C5CDF5 83E17D7C1C5CD 35BCDF5 83E17D7AF3D20FDC1C5CDF5 83E34D7C1C5CD 35BCDF5 83E34D7 6 5AF3D20FD10FAC1C5CDF5 83E 0D7C1CD 35BCDF5 83E 0D7C9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 RAND USR VAL "18048"
2 LET N=NOT PI
3 LET Y=NOT N
4 RAND USR VAL "16514"
5 INPUT A
6 IF A<N OR A>PEEK VAL "16393" THEN GOTO VAL "11"
7 POKE VAL "16417",A
8 RAND USR VAL "16660"
9 RAND USR VAL "16771"
10 GOTO VAL "13"
11 RAND USR VAL "16708"
12 GOTO VAL "5"
13 PRINT AT N,VAL "8";" SAVE THIS RUN ?"
14 GOTO 14+(INKEY$="Y")+(7 AND INKEY$="N")
15 PRINT ,," SAVE NAME?"
16 INPUT N$
17 SAVE N$
19 REM %R%E%S%T%A%R%T%: GOTO 20
20 RAND USR VAL "17577"
21 CLS
22 LIST VAL "18"
23 STOP
30 IF INKEY$="" THEN GOTO 30
31 IF INKEY$="S" THEN GOTO 36
32 RAND USR 16698
33 CLEAR
34 RAND USR VAL "18496"
35 RUN
36 SAVE "WATO%R"
37 GOTO VAL "30"
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.