endbasic 0.14.0

The EndBASIC programming language - CLI
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648

    EndBASIC X.Y.Z
    Copyright YYYY-YYYY Julio Merino

    Type HELP for interactive usage information.

[?25l
 EndBASIC tour: Welcome!
=========================

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".

When not in the tour, use the HELP command to access the interactive help
system.

Without further ado, let's get started!

Press ENTER to continue or ESC to exit the demo...[?25h[?25l
 EndBASIC tour: Language basics
================================

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.

Press ENTER to continue or ESC to exit the demo...[?25h[?25l
 EndBASIC tour: File manipulation
==================================

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.

Press ENTER to continue or ESC to exit the demo...[?25h[?25l
 EndBASIC tour: The file system
================================

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...

Press ENTER to continue or ESC to exit the demo...[?25h[?25l
 EndBASIC tour: Screen manipulation
====================================

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":

This is color 0
This is color 1
This is color 2
This is color 3
This is color 4
This is color 5
This is color 6
This is color 7
This is color 8
This is color 9
This is color 10
This is color 11
This is color 12
This is color 13
This is color 14
This is color 15

Press ENTER to continue or ESC to exit the demo...[?25h[?25l
 EndBASIC tour: Hardware access
================================

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.

Press ENTER to continue or ESC to exit the demo...[?25h[?25l
 EndBASIC tour: Enjoy
======================

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:

    CD "DEMOS:/"
    DIR

If you like what you have seen so far, please head to the project's GitHub
page and give it a star:

    https://github.com/endbasic/endbasic/

Then, visit my blog and subscribe to receive fresh EndBASIC content or...
you know, to keep me motivated in writing stuff and building this project:

    https://jmmv.dev/

Thank you! :-)

-- Brought to you by Julio Merino <jmmv@>
[?25h
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