EndBASIC X.Y.Z
Copyright YYYY-YYYY Julio Merino
Type HELP for interactive usage information.
[2J[1;1H[?25l[38;5;11m
EndBASIC tour: Welcome!
=========================
[39m
Welcome to the EndBASIC tour demo program. I'm glad you have made it this far!
EndBASIC is an interpreter for a BASIC-like language and is inspired by
Amstrad's Locomotive BASIC 1.1 and Microsoft's QuickBASIC 4.5. The main idea
behind EndBASIC is to provide a playground for learning the foundations of
programming in a simplified environment.
EndBASIC is written in Rust and is proven to work on Linux, macOS and Windows.
It likely works on other Unix systems too. And, thanks to WASM, it also runs
on the web--which I bet is how you are reading this right now.
If you are accessing EndBASIC via the web interface, please be aware that
this interface is highly experimental and has many rough edges. In particular,
things will go wrong if you try to resize the browser window. Just reload
the page for a "reboot".
[38;5;9mWhen not in the tour, use the HELP command to access the interactive help
system.
[39m
Without further ado, let's get started!
[38;5;11mPress ENTER to continue or ESC to exit the demo...[?25h[2J[1;1H[?25l
EndBASIC tour: Language basics
================================
[39m
There are four primitive types: booleans (?), double-precision floating
point numbers (#), 32-bit signed integers (%), and strings ($).
The common IF and SELECT CASE conditional structures, the DO, FOR, and WHILE
loops, as well as GOSUB and GOTO are supported.
A trivial program to ask a question and print an answer would look like:
@retry: INPUT "Enter a number greater than 10: ", n
IF n <= 10 THEN GOTO @retry
PRINT "Good job!"
Type HELP "LANG" for specific details about the language constructs.
[38;5;11mPress ENTER to continue or ESC to exit the demo...[?25h[2J[1;1H[?25l
EndBASIC tour: File manipulation
==================================
[39m
Given that you are reading this tour, you have already encountered how to
load a program and run it. But here is how you'd go about creating a new
program from scratch:
1. Type NEW to clear the machine's program and variables.
2. Type EDIT to enter the full-screen editor.
3. Type your program in the editor and then press ESC to exit.
4. Optionally save your program with SAVE "some-name.bas".
5. Run the program with RUN.
6. Repeat from 2 if things don't go as planned.
The cycle above works for demos too. You can LOAD any demo program and
enter the interactive editor with EDIT to see and modify its code. What
you cannot do is save them under their original name; you will have to pick
a different name.
If you are in the browser, rest assured that all programs are stored in
your browser's local storage. Nothing goes to the cloud.
[38;5;11mPress ENTER to continue or ESC to exit the demo...[?25h[2J[1;1H[?25l
EndBASIC tour: The file system
================================
[39m
In the previous page, you learned how to create files and how to save and
load them. Those examples used relative paths. However, EndBASIC supports
multiple drives (although it does not yet support directories).
Paths in EndBASIC have the form DRIVE:FILE or DRIVE:/FILE. Given that
directories are not yet supported, both are equivalent, but their meaning
might change in the future. All commands that operate on paths accept these
syntaxes. Note that the DRIVE: part is optional: when not specified, the
current drive (shown by the DIR command) will be used.
You can use the MOUNT command to display the list of currently-mounted drives
and to attach new ones. Pay attention to the default MOUNT output as it
shows some of the possible URIs you can use to mount other drives.
For example, if you want to gain access to an arbitrary directory in the
system, you could do:
MOUNT "TMP", "file:///PATH/TO/TMPDIR"
CD "TMP:/"
Pay attention to the double quotes surrounding these arguments: these are
EndBASIC commands and thus you must provide the arguments as strings. You
are bound to trip over this a few times due to muscle memory...
[38;5;11mPress ENTER to continue or ESC to exit the demo...[?25h[2J[1;1H[?25l
EndBASIC tour: Screen manipulation
====================================
[39m
You have several commands at your disposal to manipulate the contents of
the screen. Visual features are particularly interesting for teaching
purposes, so expect more in this regard.
For example, we can print the foundational colors by selecting them with
the "COLOR" command and positioning the cursor with "LOCATE":
[12;5H[38;5;0mThis is color 0
[13;5H[38;5;1mThis is color 1
[14;5H[38;5;2mThis is color 2
[15;5H[38;5;3mThis is color 3
[16;5H[38;5;4mThis is color 4
[17;5H[38;5;5mThis is color 5
[18;5H[38;5;6mThis is color 6
[19;5H[38;5;7mThis is color 7
[12;24H[38;5;8mThis is color 8
[13;24H[38;5;9mThis is color 9
[14;24H[38;5;10mThis is color 10
[15;24H[38;5;11mThis is color 11
[16;24H[38;5;12mThis is color 12
[17;24H[38;5;13mThis is color 13
[18;24H[38;5;14mThis is color 14
[19;24H[38;5;15mThis is color 15
[39m
[38;5;11mPress ENTER to continue or ESC to exit the demo...[?25h[2J[1;1H[?25l
EndBASIC tour: Hardware access
================================
[39m
If you happen to be running on a Raspberry Pi, EndBASIC has some support
to manipulate its hardware. At the moment this includes only basic access
to the GPIO lines. See the "DEMOS:/GPIO.BAS" demo for an example.
Please note that you have to be running on a Raspberry Pi *AND* you must
have compiled EndBASIC with --features=rpi for this to work.
[38;5;11mPress ENTER to continue or ESC to exit the demo...[?25h[2J[1;1H[?25l
EndBASIC tour: Enjoy
======================
[39m
And that's it for the tour. You can now type EDIT to see the code that
took you over this journey, load other demo files or... just go forth and
explore. HELP, MOUNT, and DIR are your friends at any point, but so that
you don't feel too lost, run this now:
[38;5;1m CD "DEMOS:/"
DIR
[39m
If you like what you have seen so far, please head to the project's GitHub
page and give it a star:
[38;5;12m
https://github.com/endbasic/endbasic/
[39mThen, visit my blog and subscribe to receive fresh EndBASIC content or...
you know, to keep me motivated in writing stuff and building this project:
[38;5;12m
https://jmmv.dev/
[39mThank you! :-)
[38;5;10m-- Brought to you by Julio Merino <jmmv@>
[?25h[39m
0000: JUMP 41 ; 17:5
;; BANNER (BEGIN)
0001: UPCALL 0, R65 ; 18:5, CLS
0002: LOADI R65, 0 ; 19:14
0003: UPCALL 1, R65 ; 19:5, GFX_SYNC
0004: LOADI R65, 11 ; 20:11
0005: UPCALL 2, R65 ; 20:5, COLOR
0006: LOADI R65, 0 ; 21:5
0007: UPCALL 3, R65 ; 21:5, PRINT
0008: LOADI R65, 0 ; 22:14
0009: MOVE R66, R64 ; 22:35
0010: CONCAT R65, R65, R66 ; 22:33
0011: MOVE R64, R65 ; 22:5
0012: LOADI R65, 1 ; 23:18
0013: LOADI R66, 1 ; 24:13
0014: MOVE R67, R66 ; 24:9
0015: MOVE R70, R64 ; 24:23
0016: UPCALL 4, R69 ; 24:18, LEN
0017: MOVE R68, R69 ; 24:18
0018: LOADI R69, 1 ; 24:33
0019: ADDI R68, R68, R69 ; 24:31
0020: CMPLEI R67, R67, R68 ; 24:15
0021: JMPF R67, 31 ; 24:9
0022: MOVE R67, R65 ; 25:22
0023: LOADI R68, 2 ; 25:35
0024: CONCAT R67, R67, R68 ; 25:33
0025: MOVE R65, R67 ; 25:9
0026: MOVE R67, R66 ; 24:9
0027: LOADI R68, 1 ; 24:5
0028: ADDI R67, R67, R68 ; 24:15
0029: MOVE R66, R67 ; 24:9
0030: JUMP 14 ; 24:9
0031: MOVE R68, R64 ; 27:11
0032: LOADI R67, 259 ; 27:11
0033: UPCALL 3, R67 ; 27:5, PRINT
0034: MOVE R68, R65 ; 28:11
0035: LOADI R67, 259 ; 28:11
0036: UPCALL 3, R67 ; 28:5, PRINT
0037: UPCALL 2, R67 ; 29:5, COLOR
0038: LOADI R67, 0 ; 30:5
0039: UPCALL 3, R67 ; 30:5, PRINT
0040: RETURN ; 31:1
;; BANNER (END)
0041: JUMP 92 ; 34:5
;; WAIT (BEGIN)
0042: UPCALL 5, R64 ; 35:17, MONOTONIC
0043: LOADI R65, 0 ; 36:5
0044: UPCALL 3, R65 ; 36:5, PRINT
0045: LOADI R65, 11 ; 37:11
0046: UPCALL 2, R65 ; 37:5, COLOR
0047: LOADI R66, 3 ; 38:11
0048: LOADI R65, 275 ; 38:11
0049: LOADI R67, 0 ; 38:64
0050: UPCALL 3, R65 ; 38:5, PRINT
0051: LOADI R65, 1 ; 39:14
0052: UPCALL 1, R65 ; 39:5, GFX_SYNC
0053: UPCALLA 6, R65 ; 41:21, INKEY
0054: MOVE R66, R65 ; 42:14
0055: LOADI R67, 4 ; 42:14
0056: CMPEQS R68, R66, R67 ; 42:14
0057: JMPF R68, 59 ; 42:14
0058: JUMP 68 ; 42:14
0059: JUMP 60 ; 52:9
0060: MOVE R66, R65 ; 43:14
0061: LOADI R67, 5 ; 43:14
0062: CMPEQS R68, R66, R67 ; 43:14
0063: JMPF R68, 65 ; 43:14
0064: JUMP 70 ; 43:14
0065: JUMP 66 ; 52:9
0066: JUMP 72 ; 52:9
0067: JUMP 90 ; 52:9
0068: JUMP 91 ; 42:23
0069: JUMP 90 ; 52:9
0070: JUMP 468 ; 43:26
0071: JUMP 90 ; 52:9
0072: MOVE R65, R64 ; 45:25
0073: LOADC R66, 6 ; 45:37, 0.01
0074: ADDD R65, R65, R66 ; 45:35
0075: MOVE R64, R65 ; 45:13
0076: MOVE R65, R64 ; 46:21
0077: UPCALL 5, R66 ; 46:33, MONOTONIC
0078: SUBD R65, R65, R66 ; 46:31
0079: MOVE R66, R65 ; 47:16
0080: LOADI R67, 0 ; 47:24
0081: ITOD R67 ; 47:24
0082: CMPGTD R66, R66, R67 ; 47:22
0083: JMPF R66, 87 ; 47:16
0084: MOVE R66, R65 ; 48:23
0085: UPCALLA 7, R66 ; 48:17, SLEEP
0086: JUMP 90 ; 47:16
0087: LOADI R66, 1 ; 49:13
0088: JMPF R66, 90 ; 49:13
0089: UPCALL 5, R64 ; 50:29, MONOTONIC
0090: JUMP 53 ; 0:0
0091: RETURN ; 54:1
;; WAIT (END)
0092: LOADI R64, 7 ; 56:8
0093: CALL R64, 1 ; 56:1, BANNER
0094: LOADI R65, 8 ; 57:7
0095: LOADI R64, 259 ; 57:7
0096: UPCALL 3, R64 ; 57:1, PRINT
0097: LOADI R64, 0 ; 58:1
0098: UPCALL 3, R64 ; 58:1, PRINT
0099: LOADI R65, 9 ; 59:7
0100: LOADI R64, 259 ; 59:7
0101: UPCALL 3, R64 ; 59:1, PRINT
0102: LOADI R65, 10 ; 60:7
0103: LOADI R64, 259 ; 60:7
0104: UPCALL 3, R64 ; 60:1, PRINT
0105: LOADI R65, 11 ; 61:7
0106: LOADI R64, 259 ; 61:7
0107: UPCALL 3, R64 ; 61:1, PRINT
0108: LOADI R65, 12 ; 62:7
0109: LOADI R64, 259 ; 62:7
0110: UPCALL 3, R64 ; 62:1, PRINT
0111: LOADI R64, 0 ; 63:1
0112: UPCALL 3, R64 ; 63:1, PRINT
0113: LOADI R65, 13 ; 64:7
0114: LOADI R64, 259 ; 64:7
0115: UPCALL 3, R64 ; 64:1, PRINT
0116: LOADI R65, 14 ; 65:7
0117: LOADI R64, 259 ; 65:7
0118: UPCALL 3, R64 ; 65:1, PRINT
0119: LOADI R65, 15 ; 66:7
0120: LOADI R64, 259 ; 66:7
0121: UPCALL 3, R64 ; 66:1, PRINT
0122: LOADI R64, 0 ; 67:1
0123: UPCALL 3, R64 ; 67:1, PRINT
0124: LOADI R65, 16 ; 68:7
0125: LOADI R64, 259 ; 68:7
0126: UPCALL 3, R64 ; 68:1, PRINT
0127: LOADI R65, 17 ; 69:7
0128: LOADI R64, 259 ; 69:7
0129: UPCALL 3, R64 ; 69:1, PRINT
0130: LOADI R65, 18 ; 70:7
0131: LOADI R64, 259 ; 70:7
0132: UPCALL 3, R64 ; 70:1, PRINT
0133: LOADI R65, 19 ; 71:7
0134: LOADI R64, 259 ; 71:7
0135: UPCALL 3, R64 ; 71:1, PRINT
0136: LOADI R64, 0 ; 72:1
0137: UPCALL 3, R64 ; 72:1, PRINT
0138: LOADI R64, 9 ; 73:7
0139: UPCALL 2, R64 ; 73:1, COLOR
0140: LOADI R65, 20 ; 74:7
0141: LOADI R64, 259 ; 74:7
0142: UPCALL 3, R64 ; 74:1, PRINT
0143: LOADI R65, 21 ; 75:7
0144: LOADI R64, 259 ; 75:7
0145: UPCALL 3, R64 ; 75:1, PRINT
0146: UPCALL 2, R64 ; 76:1, COLOR
0147: LOADI R64, 0 ; 77:1
0148: UPCALL 3, R64 ; 77:1, PRINT
0149: LOADI R65, 22 ; 78:7
0150: LOADI R64, 259 ; 78:7
0151: UPCALL 3, R64 ; 78:1, PRINT
0152: CALL R64, 42 ; 79:1, WAIT
0153: LOADI R64, 23 ; 81:8
0154: CALL R64, 1 ; 81:1, BANNER
0155: LOADI R65, 24 ; 82:7
0156: LOADI R64, 259 ; 82:7
0157: UPCALL 3, R64 ; 82:1, PRINT
0158: LOADI R65, 25 ; 83:7
0159: LOADI R64, 259 ; 83:7
0160: UPCALL 3, R64 ; 83:1, PRINT
0161: LOADI R64, 0 ; 84:1
0162: UPCALL 3, R64 ; 84:1, PRINT
0163: LOADI R65, 26 ; 85:7
0164: LOADI R64, 259 ; 85:7
0165: UPCALL 3, R64 ; 85:1, PRINT
0166: LOADI R65, 27 ; 86:7
0167: LOADI R64, 259 ; 86:7
0168: UPCALL 3, R64 ; 86:1, PRINT
0169: LOADI R64, 0 ; 87:1
0170: UPCALL 3, R64 ; 87:1, PRINT
0171: LOADI R65, 28 ; 88:7
0172: LOADI R64, 259 ; 88:7
0173: UPCALL 3, R64 ; 88:1, PRINT
0174: LOADI R64, 0 ; 89:1
0175: UPCALL 3, R64 ; 89:1, PRINT
0176: LOADI R65, 29 ; 90:7
0177: LOADI R64, 259 ; 90:7
0178: UPCALL 3, R64 ; 90:1, PRINT
0179: LOADI R65, 30 ; 91:7
0180: LOADI R64, 259 ; 91:7
0181: UPCALL 3, R64 ; 91:1, PRINT
0182: LOADI R65, 31 ; 92:7
0183: LOADI R64, 259 ; 92:7
0184: UPCALL 3, R64 ; 92:1, PRINT
0185: LOADI R64, 0 ; 93:1
0186: UPCALL 3, R64 ; 93:1, PRINT
0187: LOADI R65, 32 ; 94:7
0188: LOADI R64, 259 ; 94:7
0189: UPCALL 3, R64 ; 94:1, PRINT
0190: CALL R64, 42 ; 95:1, WAIT
0191: LOADI R64, 33 ; 97:8
0192: CALL R64, 1 ; 97:1, BANNER
0193: LOADI R65, 34 ; 98:7
0194: LOADI R64, 259 ; 98:7
0195: UPCALL 3, R64 ; 98:1, PRINT
0196: LOADI R65, 35 ; 99:7
0197: LOADI R64, 259 ; 99:7
0198: UPCALL 3, R64 ; 99:1, PRINT
0199: LOADI R65, 36 ; 100:7
0200: LOADI R64, 259 ; 100:7
0201: UPCALL 3, R64 ; 100:1, PRINT
0202: LOADI R64, 0 ; 101:1
0203: UPCALL 3, R64 ; 101:1, PRINT
0204: LOADI R65, 37 ; 102:7
0205: LOADI R64, 259 ; 102:7
0206: UPCALL 3, R64 ; 102:1, PRINT
0207: LOADI R65, 38 ; 103:7
0208: LOADI R64, 259 ; 103:7
0209: UPCALL 3, R64 ; 103:1, PRINT
0210: LOADI R65, 39 ; 104:7
0211: LOADI R64, 259 ; 104:7
0212: UPCALL 3, R64 ; 104:1, PRINT
0213: LOADI R65, 40 ; 105:7
0214: LOADI R64, 259 ; 105:7
0215: UPCALL 3, R64 ; 105:1, PRINT
0216: LOADI R65, 41 ; 106:7
0217: LOADI R64, 259 ; 106:7
0218: UPCALL 3, R64 ; 106:1, PRINT
0219: LOADI R65, 42 ; 107:7
0220: LOADI R64, 259 ; 107:7
0221: UPCALL 3, R64 ; 107:1, PRINT
0222: LOADI R64, 0 ; 108:1
0223: UPCALL 3, R64 ; 108:1, PRINT
0224: LOADI R65, 43 ; 109:7
0225: LOADI R64, 259 ; 109:7
0226: UPCALL 3, R64 ; 109:1, PRINT
0227: LOADI R65, 44 ; 110:7
0228: LOADI R64, 259 ; 110:7
0229: UPCALL 3, R64 ; 110:1, PRINT
0230: LOADI R65, 45 ; 111:7
0231: LOADI R64, 259 ; 111:7
0232: UPCALL 3, R64 ; 111:1, PRINT
0233: LOADI R65, 46 ; 112:7
0234: LOADI R64, 259 ; 112:7
0235: UPCALL 3, R64 ; 112:1, PRINT
0236: LOADI R64, 0 ; 113:1
0237: UPCALL 3, R64 ; 113:1, PRINT
0238: LOADI R65, 47 ; 114:7
0239: LOADI R64, 259 ; 114:7
0240: UPCALL 3, R64 ; 114:1, PRINT
0241: LOADI R65, 48 ; 115:7
0242: LOADI R64, 259 ; 115:7
0243: UPCALL 3, R64 ; 115:1, PRINT
0244: CALL R64, 42 ; 116:1, WAIT
0245: LOADI R64, 49 ; 118:8
0246: CALL R64, 1 ; 118:1, BANNER
0247: LOADI R65, 50 ; 119:7
0248: LOADI R64, 259 ; 119:7
0249: UPCALL 3, R64 ; 119:1, PRINT
0250: LOADI R65, 51 ; 120:7
0251: LOADI R64, 259 ; 120:7
0252: UPCALL 3, R64 ; 120:1, PRINT
0253: LOADI R65, 52 ; 121:7
0254: LOADI R64, 259 ; 121:7
0255: UPCALL 3, R64 ; 121:1, PRINT
0256: LOADI R64, 0 ; 122:1
0257: UPCALL 3, R64 ; 122:1, PRINT
0258: LOADI R65, 53 ; 123:7
0259: LOADI R64, 259 ; 123:7
0260: UPCALL 3, R64 ; 123:1, PRINT
0261: LOADI R65, 54 ; 124:7
0262: LOADI R64, 259 ; 124:7
0263: UPCALL 3, R64 ; 124:1, PRINT
0264: LOADI R65, 55 ; 125:7
0265: LOADI R64, 259 ; 125:7
0266: UPCALL 3, R64 ; 125:1, PRINT
0267: LOADI R65, 56 ; 126:7
0268: LOADI R64, 259 ; 126:7
0269: UPCALL 3, R64 ; 126:1, PRINT
0270: LOADI R65, 57 ; 127:7
0271: LOADI R64, 259 ; 127:7
0272: UPCALL 3, R64 ; 127:1, PRINT
0273: LOADI R64, 0 ; 128:1
0274: UPCALL 3, R64 ; 128:1, PRINT
0275: LOADI R65, 58 ; 129:7
0276: LOADI R64, 259 ; 129:7
0277: UPCALL 3, R64 ; 129:1, PRINT
0278: LOADI R65, 59 ; 130:7
0279: LOADI R64, 259 ; 130:7
0280: UPCALL 3, R64 ; 130:1, PRINT
0281: LOADI R65, 60 ; 131:7
0282: LOADI R64, 259 ; 131:7
0283: UPCALL 3, R64 ; 131:1, PRINT
0284: LOADI R65, 61 ; 132:7
0285: LOADI R64, 259 ; 132:7
0286: UPCALL 3, R64 ; 132:1, PRINT
0287: LOADI R65, 62 ; 133:7
0288: LOADI R64, 259 ; 133:7
0289: UPCALL 3, R64 ; 133:1, PRINT
0290: LOADI R64, 0 ; 134:1
0291: UPCALL 3, R64 ; 134:1, PRINT
0292: LOADI R65, 63 ; 135:7
0293: LOADI R64, 259 ; 135:7
0294: UPCALL 3, R64 ; 135:1, PRINT
0295: LOADI R65, 64 ; 136:7
0296: LOADI R64, 259 ; 136:7
0297: UPCALL 3, R64 ; 136:1, PRINT
0298: LOADI R64, 0 ; 137:1
0299: UPCALL 3, R64 ; 137:1, PRINT
0300: LOADI R65, 65 ; 138:7
0301: LOADI R64, 259 ; 138:7
0302: UPCALL 3, R64 ; 138:1, PRINT
0303: LOADI R65, 66 ; 139:7
0304: LOADI R64, 259 ; 139:7
0305: UPCALL 3, R64 ; 139:1, PRINT
0306: LOADI R65, 67 ; 140:7
0307: LOADI R64, 259 ; 140:7
0308: UPCALL 3, R64 ; 140:1, PRINT
0309: CALL R64, 42 ; 141:1, WAIT
0310: LOADI R64, 68 ; 143:8
0311: CALL R64, 1 ; 143:1, BANNER
0312: LOADI R65, 69 ; 144:7
0313: LOADI R64, 259 ; 144:7
0314: UPCALL 3, R64 ; 144:1, PRINT
0315: LOADI R65, 70 ; 145:7
0316: LOADI R64, 259 ; 145:7
0317: UPCALL 3, R64 ; 145:1, PRINT
0318: LOADI R65, 71 ; 146:7
0319: LOADI R64, 259 ; 146:7
0320: UPCALL 3, R64 ; 146:1, PRINT
0321: LOADI R64, 0 ; 147:1
0322: UPCALL 3, R64 ; 147:1, PRINT
0323: LOADI R65, 72 ; 148:7
0324: LOADI R64, 259 ; 148:7
0325: UPCALL 3, R64 ; 148:1, PRINT
0326: LOADI R65, 73 ; 149:7
0327: LOADI R64, 259 ; 149:7
0328: UPCALL 3, R64 ; 149:1, PRINT
0329: LOADI R64, 0 ; 150:1
0330: UPCALL 3, R64 ; 150:1, PRINT
0331: LOADI R64, 0 ; 151:10
0332: MOVE R65, R64 ; 151:5
0333: LOADI R66, 7 ; 151:15
0334: CMPLEI R65, R65, R66 ; 151:12
0335: JMPF R65, 353 ; 151:5
0336: LOADI R65, 4 ; 152:12
0337: LOADI R66, 11 ; 152:15
0338: MOVE R67, R64 ; 152:20
0339: ADDI R66, R66, R67 ; 152:18
0340: UPCALL 8, R65 ; 152:5, LOCATE
0341: MOVE R65, R64 ; 153:11
0342: UPCALL 2, R65 ; 153:5, COLOR
0343: LOADI R66, 74 ; 154:11
0344: LOADI R65, 275 ; 154:11
0345: MOVE R68, R64 ; 154:28
0346: LOADI R67, 258 ; 154:28
0347: UPCALL 3, R65 ; 154:5, PRINT
0348: MOVE R65, R64 ; 151:5
0349: LOADI R66, 1 ; 151:1
0350: ADDI R65, R65, R66 ; 151:12
0351: MOVE R64, R65 ; 151:5
0352: JUMP 332 ; 151:5
0353: LOADI R64, 8 ; 156:10
0354: MOVE R65, R64 ; 156:5
0355: LOADI R66, 15 ; 156:15
0356: CMPLEI R65, R65, R66 ; 156:12
0357: JMPF R65, 377 ; 156:5
0358: LOADI R65, 23 ; 157:12
0359: LOADI R66, 11 ; 157:16
0360: MOVE R67, R64 ; 157:21
0361: ADDI R66, R66, R67 ; 157:19
0362: LOADI R67, 8 ; 157:26
0363: SUBI R66, R66, R67 ; 157:24
0364: UPCALL 8, R65 ; 157:5, LOCATE
0365: MOVE R65, R64 ; 158:11
0366: UPCALL 2, R65 ; 158:5, COLOR
0367: LOADI R66, 74 ; 159:11
0368: LOADI R65, 275 ; 159:11
0369: MOVE R68, R64 ; 159:28
0370: LOADI R67, 258 ; 159:28
0371: UPCALL 3, R65 ; 159:5, PRINT
0372: MOVE R65, R64 ; 156:5
0373: LOADI R66, 1 ; 156:1
0374: ADDI R65, R65, R66 ; 156:12
0375: MOVE R64, R65 ; 156:5
0376: JUMP 354 ; 156:5
0377: UPCALL 2, R65 ; 161:1, COLOR
0378: CALL R65, 42 ; 162:1, WAIT
0379: LOADI R65, 75 ; 164:8
0380: CALL R65, 1 ; 164:1, BANNER
0381: LOADI R66, 76 ; 165:7
0382: LOADI R65, 259 ; 165:7
0383: UPCALL 3, R65 ; 165:1, PRINT
0384: LOADI R66, 77 ; 166:7
0385: LOADI R65, 259 ; 166:7
0386: UPCALL 3, R65 ; 166:1, PRINT
0387: LOADI R66, 78 ; 167:7
0388: LOADI R65, 259 ; 167:7
0389: UPCALL 3, R65 ; 167:1, PRINT
0390: LOADI R65, 0 ; 168:1
0391: UPCALL 3, R65 ; 168:1, PRINT
0392: LOADI R66, 79 ; 169:7
0393: LOADI R65, 259 ; 169:7
0394: UPCALL 3, R65 ; 169:1, PRINT
0395: LOADI R66, 80 ; 170:7
0396: LOADI R65, 259 ; 170:7
0397: UPCALL 3, R65 ; 170:1, PRINT
0398: CALL R65, 42 ; 171:1, WAIT
0399: LOADI R65, 81 ; 173:8
0400: CALL R65, 1 ; 173:1, BANNER
0401: LOADI R66, 82 ; 174:7
0402: LOADI R65, 259 ; 174:7
0403: UPCALL 3, R65 ; 174:1, PRINT
0404: LOADI R66, 83 ; 175:7
0405: LOADI R65, 259 ; 175:7
0406: UPCALL 3, R65 ; 175:1, PRINT
0407: LOADI R66, 84 ; 176:7
0408: LOADI R65, 259 ; 176:7
0409: UPCALL 3, R65 ; 176:1, PRINT
0410: LOADI R66, 85 ; 177:7
0411: LOADI R65, 259 ; 177:7
0412: UPCALL 3, R65 ; 177:1, PRINT
0413: LOADI R65, 0 ; 178:1
0414: UPCALL 3, R65 ; 178:1, PRINT
0415: LOADI R65, 1 ; 179:7
0416: UPCALL 2, R65 ; 179:1, COLOR
0417: LOADI R66, 86 ; 180:7
0418: LOADI R65, 259 ; 180:7
0419: UPCALL 3, R65 ; 180:1, PRINT
0420: LOADI R66, 87 ; 181:7
0421: LOADI R65, 259 ; 181:7
0422: UPCALL 3, R65 ; 181:1, PRINT
0423: UPCALL 2, R65 ; 182:1, COLOR
0424: LOADI R65, 0 ; 183:1
0425: UPCALL 3, R65 ; 183:1, PRINT
0426: LOADI R66, 88 ; 184:7
0427: LOADI R65, 259 ; 184:7
0428: UPCALL 3, R65 ; 184:1, PRINT
0429: LOADI R66, 89 ; 185:7
0430: LOADI R65, 259 ; 185:7
0431: UPCALL 3, R65 ; 185:1, PRINT
0432: LOADI R65, 12 ; 186:7
0433: UPCALL 2, R65 ; 186:1, COLOR
0434: LOADI R65, 0 ; 187:1
0435: UPCALL 3, R65 ; 187:1, PRINT
0436: LOADI R66, 90 ; 188:7
0437: LOADI R65, 259 ; 188:7
0438: UPCALL 3, R65 ; 188:1, PRINT
0439: LOADI R65, 0 ; 189:1
0440: UPCALL 3, R65 ; 189:1, PRINT
0441: UPCALL 2, R65 ; 190:1, COLOR
0442: LOADI R66, 91 ; 191:7
0443: LOADI R65, 259 ; 191:7
0444: UPCALL 3, R65 ; 191:1, PRINT
0445: LOADI R66, 92 ; 192:7
0446: LOADI R65, 259 ; 192:7
0447: UPCALL 3, R65 ; 192:1, PRINT
0448: LOADI R65, 12 ; 193:7
0449: UPCALL 2, R65 ; 193:1, COLOR
0450: LOADI R65, 0 ; 194:1
0451: UPCALL 3, R65 ; 194:1, PRINT
0452: LOADI R66, 93 ; 195:7
0453: LOADI R65, 259 ; 195:7
0454: UPCALL 3, R65 ; 195:1, PRINT
0455: LOADI R65, 0 ; 196:1
0456: UPCALL 3, R65 ; 196:1, PRINT
0457: UPCALL 2, R65 ; 197:1, COLOR
0458: LOADI R66, 94 ; 198:7
0459: LOADI R65, 259 ; 198:7
0460: UPCALL 3, R65 ; 198:1, PRINT
0461: LOADI R65, 0 ; 199:1
0462: UPCALL 3, R65 ; 199:1, PRINT
0463: LOADI R65, 10 ; 200:7
0464: UPCALL 2, R65 ; 200:1, COLOR
0465: LOADI R66, 95 ; 201:7
0466: LOADI R65, 259 ; 201:7
0467: UPCALL 3, R65 ; 201:1, PRINT
0468: LOADI R65, 1 ; 204:10
0469: UPCALL 1, R65 ; 204:1, GFX_SYNC
0470: UPCALL 2, R65 ; 205:1, COLOR
0471: LOADI R65, 0 ; 206:1
0472: UPCALL 3, R65 ; 206:1, PRINT
0473: EOF ; 0:0
End of input by CTRL-D