endbasic 0.13.0

The EndBASIC programming language - CLI
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

    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        75                  ; 34:5

;; WAIT (BEGIN)
0042:   LOADI       R64, 0              ; 35:5
0043:   UPCALL      3, R64              ; 35:5, PRINT
0044:   LOADI       R64, 11             ; 36:11
0045:   UPCALL      2, R64              ; 36:5, COLOR
0046:   LOADI       R65, 3              ; 37:11
0047:   LOADI       R64, 275            ; 37:11
0048:   LOADI       R66, 0              ; 37:64
0049:   UPCALL      3, R64              ; 37:5, PRINT
0050:   LOADI       R64, 1              ; 38:14
0051:   UPCALL      1, R64              ; 38:5, GFX_SYNC
0052:   UPCALLA     5, R64              ; 40:21, INKEY
0053:   MOVE        R65, R64            ; 41:14
0054:   LOADI       R66, 4              ; 41:14
0055:   CMPEQS      R67, R65, R66       ; 41:14
0056:   JMPF        R67, 58             ; 41:14
0057:   JUMP        67                  ; 41:14
0058:   JUMP        59                  ; 44:9
0059:   MOVE        R65, R64            ; 42:14
0060:   LOADI       R66, 5              ; 42:14
0061:   CMPEQS      R67, R65, R66       ; 42:14
0062:   JMPF        R67, 64             ; 42:14
0063:   JUMP        69                  ; 42:14
0064:   JUMP        65                  ; 44:9
0065:   JUMP        71                  ; 44:9
0066:   JUMP        73                  ; 44:9
0067:   JUMP        74                  ; 41:23
0068:   JUMP        73                  ; 44:9
0069:   JUMP        451                 ; 42:26
0070:   JUMP        73                  ; 44:9
0071:   LOADC       R64, 6              ; 43:26, 0.01
0072:   UPCALLA     6, R64              ; 43:20, SLEEP
0073:   JUMP        52                  ; 0:0
0074:   RETURN                          ; 46:1
;; WAIT (END)

0075:   LOADI       R64, 7              ; 48:8
0076:   CALL        R64, 1              ; 48:1, BANNER
0077:   LOADI       R65, 8              ; 49:7
0078:   LOADI       R64, 259            ; 49:7
0079:   UPCALL      3, R64              ; 49:1, PRINT
0080:   LOADI       R64, 0              ; 50:1
0081:   UPCALL      3, R64              ; 50:1, PRINT
0082:   LOADI       R65, 9              ; 51:7
0083:   LOADI       R64, 259            ; 51:7
0084:   UPCALL      3, R64              ; 51:1, PRINT
0085:   LOADI       R65, 10             ; 52:7
0086:   LOADI       R64, 259            ; 52:7
0087:   UPCALL      3, R64              ; 52:1, PRINT
0088:   LOADI       R65, 11             ; 53:7
0089:   LOADI       R64, 259            ; 53:7
0090:   UPCALL      3, R64              ; 53:1, PRINT
0091:   LOADI       R65, 12             ; 54:7
0092:   LOADI       R64, 259            ; 54:7
0093:   UPCALL      3, R64              ; 54:1, PRINT
0094:   LOADI       R64, 0              ; 55:1
0095:   UPCALL      3, R64              ; 55:1, PRINT
0096:   LOADI       R65, 13             ; 56:7
0097:   LOADI       R64, 259            ; 56:7
0098:   UPCALL      3, R64              ; 56:1, PRINT
0099:   LOADI       R65, 14             ; 57:7
0100:   LOADI       R64, 259            ; 57:7
0101:   UPCALL      3, R64              ; 57:1, PRINT
0102:   LOADI       R65, 15             ; 58:7
0103:   LOADI       R64, 259            ; 58:7
0104:   UPCALL      3, R64              ; 58:1, PRINT
0105:   LOADI       R64, 0              ; 59:1
0106:   UPCALL      3, R64              ; 59:1, PRINT
0107:   LOADI       R65, 16             ; 60:7
0108:   LOADI       R64, 259            ; 60:7
0109:   UPCALL      3, R64              ; 60:1, PRINT
0110:   LOADI       R65, 17             ; 61:7
0111:   LOADI       R64, 259            ; 61:7
0112:   UPCALL      3, R64              ; 61:1, PRINT
0113:   LOADI       R65, 18             ; 62:7
0114:   LOADI       R64, 259            ; 62:7
0115:   UPCALL      3, R64              ; 62:1, PRINT
0116:   LOADI       R65, 19             ; 63:7
0117:   LOADI       R64, 259            ; 63:7
0118:   UPCALL      3, R64              ; 63:1, PRINT
0119:   LOADI       R64, 0              ; 64:1
0120:   UPCALL      3, R64              ; 64:1, PRINT
0121:   LOADI       R64, 9              ; 65:7
0122:   UPCALL      2, R64              ; 65:1, COLOR
0123:   LOADI       R65, 20             ; 66:7
0124:   LOADI       R64, 259            ; 66:7
0125:   UPCALL      3, R64              ; 66:1, PRINT
0126:   LOADI       R65, 21             ; 67:7
0127:   LOADI       R64, 259            ; 67:7
0128:   UPCALL      3, R64              ; 67:1, PRINT
0129:   UPCALL      2, R64              ; 68:1, COLOR
0130:   LOADI       R64, 0              ; 69:1
0131:   UPCALL      3, R64              ; 69:1, PRINT
0132:   LOADI       R65, 22             ; 70:7
0133:   LOADI       R64, 259            ; 70:7
0134:   UPCALL      3, R64              ; 70:1, PRINT
0135:   CALL        R64, 42             ; 71:1, WAIT
0136:   LOADI       R64, 23             ; 73:8
0137:   CALL        R64, 1              ; 73:1, BANNER
0138:   LOADI       R65, 24             ; 74:7
0139:   LOADI       R64, 259            ; 74:7
0140:   UPCALL      3, R64              ; 74:1, PRINT
0141:   LOADI       R65, 25             ; 75:7
0142:   LOADI       R64, 259            ; 75:7
0143:   UPCALL      3, R64              ; 75:1, PRINT
0144:   LOADI       R64, 0              ; 76:1
0145:   UPCALL      3, R64              ; 76:1, PRINT
0146:   LOADI       R65, 26             ; 77:7
0147:   LOADI       R64, 259            ; 77:7
0148:   UPCALL      3, R64              ; 77:1, PRINT
0149:   LOADI       R65, 27             ; 78:7
0150:   LOADI       R64, 259            ; 78:7
0151:   UPCALL      3, R64              ; 78:1, PRINT
0152:   LOADI       R64, 0              ; 79:1
0153:   UPCALL      3, R64              ; 79:1, PRINT
0154:   LOADI       R65, 28             ; 80:7
0155:   LOADI       R64, 259            ; 80:7
0156:   UPCALL      3, R64              ; 80:1, PRINT
0157:   LOADI       R64, 0              ; 81:1
0158:   UPCALL      3, R64              ; 81:1, PRINT
0159:   LOADI       R65, 29             ; 82:7
0160:   LOADI       R64, 259            ; 82:7
0161:   UPCALL      3, R64              ; 82:1, PRINT
0162:   LOADI       R65, 30             ; 83:7
0163:   LOADI       R64, 259            ; 83:7
0164:   UPCALL      3, R64              ; 83:1, PRINT
0165:   LOADI       R65, 31             ; 84:7
0166:   LOADI       R64, 259            ; 84:7
0167:   UPCALL      3, R64              ; 84:1, PRINT
0168:   LOADI       R64, 0              ; 85:1
0169:   UPCALL      3, R64              ; 85:1, PRINT
0170:   LOADI       R65, 32             ; 86:7
0171:   LOADI       R64, 259            ; 86:7
0172:   UPCALL      3, R64              ; 86:1, PRINT
0173:   CALL        R64, 42             ; 87:1, WAIT
0174:   LOADI       R64, 33             ; 89:8
0175:   CALL        R64, 1              ; 89:1, BANNER
0176:   LOADI       R65, 34             ; 90:7
0177:   LOADI       R64, 259            ; 90:7
0178:   UPCALL      3, R64              ; 90:1, PRINT
0179:   LOADI       R65, 35             ; 91:7
0180:   LOADI       R64, 259            ; 91:7
0181:   UPCALL      3, R64              ; 91:1, PRINT
0182:   LOADI       R65, 36             ; 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, 37             ; 94:7
0188:   LOADI       R64, 259            ; 94:7
0189:   UPCALL      3, R64              ; 94:1, PRINT
0190:   LOADI       R65, 38             ; 95:7
0191:   LOADI       R64, 259            ; 95:7
0192:   UPCALL      3, R64              ; 95:1, PRINT
0193:   LOADI       R65, 39             ; 96:7
0194:   LOADI       R64, 259            ; 96:7
0195:   UPCALL      3, R64              ; 96:1, PRINT
0196:   LOADI       R65, 40             ; 97:7
0197:   LOADI       R64, 259            ; 97:7
0198:   UPCALL      3, R64              ; 97:1, PRINT
0199:   LOADI       R65, 41             ; 98:7
0200:   LOADI       R64, 259            ; 98:7
0201:   UPCALL      3, R64              ; 98:1, PRINT
0202:   LOADI       R65, 42             ; 99:7
0203:   LOADI       R64, 259            ; 99:7
0204:   UPCALL      3, R64              ; 99:1, PRINT
0205:   LOADI       R64, 0              ; 100:1
0206:   UPCALL      3, R64              ; 100:1, PRINT
0207:   LOADI       R65, 43             ; 101:7
0208:   LOADI       R64, 259            ; 101:7
0209:   UPCALL      3, R64              ; 101:1, PRINT
0210:   LOADI       R65, 44             ; 102:7
0211:   LOADI       R64, 259            ; 102:7
0212:   UPCALL      3, R64              ; 102:1, PRINT
0213:   LOADI       R65, 45             ; 103:7
0214:   LOADI       R64, 259            ; 103:7
0215:   UPCALL      3, R64              ; 103:1, PRINT
0216:   LOADI       R65, 46             ; 104:7
0217:   LOADI       R64, 259            ; 104:7
0218:   UPCALL      3, R64              ; 104:1, PRINT
0219:   LOADI       R64, 0              ; 105:1
0220:   UPCALL      3, R64              ; 105:1, PRINT
0221:   LOADI       R65, 47             ; 106:7
0222:   LOADI       R64, 259            ; 106:7
0223:   UPCALL      3, R64              ; 106:1, PRINT
0224:   LOADI       R65, 48             ; 107:7
0225:   LOADI       R64, 259            ; 107:7
0226:   UPCALL      3, R64              ; 107:1, PRINT
0227:   CALL        R64, 42             ; 108:1, WAIT
0228:   LOADI       R64, 49             ; 110:8
0229:   CALL        R64, 1              ; 110:1, BANNER
0230:   LOADI       R65, 50             ; 111:7
0231:   LOADI       R64, 259            ; 111:7
0232:   UPCALL      3, R64              ; 111:1, PRINT
0233:   LOADI       R65, 51             ; 112:7
0234:   LOADI       R64, 259            ; 112:7
0235:   UPCALL      3, R64              ; 112:1, PRINT
0236:   LOADI       R65, 52             ; 113:7
0237:   LOADI       R64, 259            ; 113:7
0238:   UPCALL      3, R64              ; 113:1, PRINT
0239:   LOADI       R64, 0              ; 114:1
0240:   UPCALL      3, R64              ; 114:1, PRINT
0241:   LOADI       R65, 53             ; 115:7
0242:   LOADI       R64, 259            ; 115:7
0243:   UPCALL      3, R64              ; 115:1, PRINT
0244:   LOADI       R65, 54             ; 116:7
0245:   LOADI       R64, 259            ; 116:7
0246:   UPCALL      3, R64              ; 116:1, PRINT
0247:   LOADI       R65, 55             ; 117:7
0248:   LOADI       R64, 259            ; 117:7
0249:   UPCALL      3, R64              ; 117:1, PRINT
0250:   LOADI       R65, 56             ; 118:7
0251:   LOADI       R64, 259            ; 118:7
0252:   UPCALL      3, R64              ; 118:1, PRINT
0253:   LOADI       R65, 57             ; 119:7
0254:   LOADI       R64, 259            ; 119:7
0255:   UPCALL      3, R64              ; 119:1, PRINT
0256:   LOADI       R64, 0              ; 120:1
0257:   UPCALL      3, R64              ; 120:1, PRINT
0258:   LOADI       R65, 58             ; 121:7
0259:   LOADI       R64, 259            ; 121:7
0260:   UPCALL      3, R64              ; 121:1, PRINT
0261:   LOADI       R65, 59             ; 122:7
0262:   LOADI       R64, 259            ; 122:7
0263:   UPCALL      3, R64              ; 122:1, PRINT
0264:   LOADI       R65, 60             ; 123:7
0265:   LOADI       R64, 259            ; 123:7
0266:   UPCALL      3, R64              ; 123:1, PRINT
0267:   LOADI       R65, 61             ; 124:7
0268:   LOADI       R64, 259            ; 124:7
0269:   UPCALL      3, R64              ; 124:1, PRINT
0270:   LOADI       R65, 62             ; 125:7
0271:   LOADI       R64, 259            ; 125:7
0272:   UPCALL      3, R64              ; 125:1, PRINT
0273:   LOADI       R64, 0              ; 126:1
0274:   UPCALL      3, R64              ; 126:1, PRINT
0275:   LOADI       R65, 63             ; 127:7
0276:   LOADI       R64, 259            ; 127:7
0277:   UPCALL      3, R64              ; 127:1, PRINT
0278:   LOADI       R65, 64             ; 128:7
0279:   LOADI       R64, 259            ; 128:7
0280:   UPCALL      3, R64              ; 128:1, PRINT
0281:   LOADI       R64, 0              ; 129:1
0282:   UPCALL      3, R64              ; 129:1, PRINT
0283:   LOADI       R65, 65             ; 130:7
0284:   LOADI       R64, 259            ; 130:7
0285:   UPCALL      3, R64              ; 130:1, PRINT
0286:   LOADI       R65, 66             ; 131:7
0287:   LOADI       R64, 259            ; 131:7
0288:   UPCALL      3, R64              ; 131:1, PRINT
0289:   LOADI       R65, 67             ; 132:7
0290:   LOADI       R64, 259            ; 132:7
0291:   UPCALL      3, R64              ; 132:1, PRINT
0292:   CALL        R64, 42             ; 133:1, WAIT
0293:   LOADI       R64, 68             ; 135:8
0294:   CALL        R64, 1              ; 135:1, BANNER
0295:   LOADI       R65, 69             ; 136:7
0296:   LOADI       R64, 259            ; 136:7
0297:   UPCALL      3, R64              ; 136:1, PRINT
0298:   LOADI       R65, 70             ; 137:7
0299:   LOADI       R64, 259            ; 137:7
0300:   UPCALL      3, R64              ; 137:1, PRINT
0301:   LOADI       R65, 71             ; 138:7
0302:   LOADI       R64, 259            ; 138:7
0303:   UPCALL      3, R64              ; 138:1, PRINT
0304:   LOADI       R64, 0              ; 139:1
0305:   UPCALL      3, R64              ; 139:1, PRINT
0306:   LOADI       R65, 72             ; 140:7
0307:   LOADI       R64, 259            ; 140:7
0308:   UPCALL      3, R64              ; 140:1, PRINT
0309:   LOADI       R65, 73             ; 141:7
0310:   LOADI       R64, 259            ; 141:7
0311:   UPCALL      3, R64              ; 141:1, PRINT
0312:   LOADI       R64, 0              ; 142:1
0313:   UPCALL      3, R64              ; 142:1, PRINT
0314:   LOADI       R64, 0              ; 143:10
0315:   MOVE        R65, R64            ; 143:5
0316:   LOADI       R66, 7              ; 143:15
0317:   CMPLEI      R65, R65, R66       ; 143:12
0318:   JMPF        R65, 336            ; 143:5
0319:   LOADI       R65, 4              ; 144:12
0320:   LOADI       R66, 11             ; 144:15
0321:   MOVE        R67, R64            ; 144:20
0322:   ADDI        R66, R66, R67       ; 144:18
0323:   UPCALL      7, R65              ; 144:5, LOCATE
0324:   MOVE        R65, R64            ; 145:11
0325:   UPCALL      2, R65              ; 145:5, COLOR
0326:   LOADI       R66, 74             ; 146:11
0327:   LOADI       R65, 275            ; 146:11
0328:   MOVE        R68, R64            ; 146:28
0329:   LOADI       R67, 258            ; 146:28
0330:   UPCALL      3, R65              ; 146:5, PRINT
0331:   MOVE        R65, R64            ; 143:5
0332:   LOADI       R66, 1              ; 143:1
0333:   ADDI        R65, R65, R66       ; 143:12
0334:   MOVE        R64, R65            ; 143:5
0335:   JUMP        315                 ; 143:5
0336:   LOADI       R64, 8              ; 148:10
0337:   MOVE        R65, R64            ; 148:5
0338:   LOADI       R66, 15             ; 148:15
0339:   CMPLEI      R65, R65, R66       ; 148:12
0340:   JMPF        R65, 360            ; 148:5
0341:   LOADI       R65, 23             ; 149:12
0342:   LOADI       R66, 11             ; 149:16
0343:   MOVE        R67, R64            ; 149:21
0344:   ADDI        R66, R66, R67       ; 149:19
0345:   LOADI       R67, 8              ; 149:26
0346:   SUBI        R66, R66, R67       ; 149:24
0347:   UPCALL      7, R65              ; 149:5, LOCATE
0348:   MOVE        R65, R64            ; 150:11
0349:   UPCALL      2, R65              ; 150:5, COLOR
0350:   LOADI       R66, 74             ; 151:11
0351:   LOADI       R65, 275            ; 151:11
0352:   MOVE        R68, R64            ; 151:28
0353:   LOADI       R67, 258            ; 151:28
0354:   UPCALL      3, R65              ; 151:5, PRINT
0355:   MOVE        R65, R64            ; 148:5
0356:   LOADI       R66, 1              ; 148:1
0357:   ADDI        R65, R65, R66       ; 148:12
0358:   MOVE        R64, R65            ; 148:5
0359:   JUMP        337                 ; 148:5
0360:   UPCALL      2, R65              ; 153:1, COLOR
0361:   CALL        R65, 42             ; 154:1, WAIT
0362:   LOADI       R65, 75             ; 156:8
0363:   CALL        R65, 1              ; 156:1, BANNER
0364:   LOADI       R66, 76             ; 157:7
0365:   LOADI       R65, 259            ; 157:7
0366:   UPCALL      3, R65              ; 157:1, PRINT
0367:   LOADI       R66, 77             ; 158:7
0368:   LOADI       R65, 259            ; 158:7
0369:   UPCALL      3, R65              ; 158:1, PRINT
0370:   LOADI       R66, 78             ; 159:7
0371:   LOADI       R65, 259            ; 159:7
0372:   UPCALL      3, R65              ; 159:1, PRINT
0373:   LOADI       R65, 0              ; 160:1
0374:   UPCALL      3, R65              ; 160:1, PRINT
0375:   LOADI       R66, 79             ; 161:7
0376:   LOADI       R65, 259            ; 161:7
0377:   UPCALL      3, R65              ; 161:1, PRINT
0378:   LOADI       R66, 80             ; 162:7
0379:   LOADI       R65, 259            ; 162:7
0380:   UPCALL      3, R65              ; 162:1, PRINT
0381:   CALL        R65, 42             ; 163:1, WAIT
0382:   LOADI       R65, 81             ; 165:8
0383:   CALL        R65, 1              ; 165:1, BANNER
0384:   LOADI       R66, 82             ; 166:7
0385:   LOADI       R65, 259            ; 166:7
0386:   UPCALL      3, R65              ; 166:1, PRINT
0387:   LOADI       R66, 83             ; 167:7
0388:   LOADI       R65, 259            ; 167:7
0389:   UPCALL      3, R65              ; 167:1, PRINT
0390:   LOADI       R66, 84             ; 168:7
0391:   LOADI       R65, 259            ; 168:7
0392:   UPCALL      3, R65              ; 168:1, PRINT
0393:   LOADI       R66, 85             ; 169:7
0394:   LOADI       R65, 259            ; 169:7
0395:   UPCALL      3, R65              ; 169:1, PRINT
0396:   LOADI       R65, 0              ; 170:1
0397:   UPCALL      3, R65              ; 170:1, PRINT
0398:   LOADI       R65, 1              ; 171:7
0399:   UPCALL      2, R65              ; 171:1, COLOR
0400:   LOADI       R66, 86             ; 172:7
0401:   LOADI       R65, 259            ; 172:7
0402:   UPCALL      3, R65              ; 172:1, PRINT
0403:   LOADI       R66, 87             ; 173:7
0404:   LOADI       R65, 259            ; 173:7
0405:   UPCALL      3, R65              ; 173:1, PRINT
0406:   UPCALL      2, R65              ; 174:1, COLOR
0407:   LOADI       R65, 0              ; 175:1
0408:   UPCALL      3, R65              ; 175:1, PRINT
0409:   LOADI       R66, 88             ; 176:7
0410:   LOADI       R65, 259            ; 176:7
0411:   UPCALL      3, R65              ; 176:1, PRINT
0412:   LOADI       R66, 89             ; 177:7
0413:   LOADI       R65, 259            ; 177:7
0414:   UPCALL      3, R65              ; 177:1, PRINT
0415:   LOADI       R65, 12             ; 178:7
0416:   UPCALL      2, R65              ; 178:1, COLOR
0417:   LOADI       R65, 0              ; 179:1
0418:   UPCALL      3, R65              ; 179:1, PRINT
0419:   LOADI       R66, 90             ; 180:7
0420:   LOADI       R65, 259            ; 180:7
0421:   UPCALL      3, R65              ; 180:1, PRINT
0422:   LOADI       R65, 0              ; 181:1
0423:   UPCALL      3, R65              ; 181:1, PRINT
0424:   UPCALL      2, R65              ; 182:1, COLOR
0425:   LOADI       R66, 91             ; 183:7
0426:   LOADI       R65, 259            ; 183:7
0427:   UPCALL      3, R65              ; 183:1, PRINT
0428:   LOADI       R66, 92             ; 184:7
0429:   LOADI       R65, 259            ; 184:7
0430:   UPCALL      3, R65              ; 184:1, PRINT
0431:   LOADI       R65, 12             ; 185:7
0432:   UPCALL      2, R65              ; 185:1, COLOR
0433:   LOADI       R65, 0              ; 186:1
0434:   UPCALL      3, R65              ; 186:1, PRINT
0435:   LOADI       R66, 93             ; 187:7
0436:   LOADI       R65, 259            ; 187:7
0437:   UPCALL      3, R65              ; 187:1, PRINT
0438:   LOADI       R65, 0              ; 188:1
0439:   UPCALL      3, R65              ; 188:1, PRINT
0440:   UPCALL      2, R65              ; 189:1, COLOR
0441:   LOADI       R66, 94             ; 190:7
0442:   LOADI       R65, 259            ; 190:7
0443:   UPCALL      3, R65              ; 190:1, PRINT
0444:   LOADI       R65, 0              ; 191:1
0445:   UPCALL      3, R65              ; 191:1, PRINT
0446:   LOADI       R65, 10             ; 192:7
0447:   UPCALL      2, R65              ; 192:1, COLOR
0448:   LOADI       R66, 95             ; 193:7
0449:   LOADI       R65, 259            ; 193:7
0450:   UPCALL      3, R65              ; 193:1, PRINT
0451:   LOADI       R65, 1              ; 196:10
0452:   UPCALL      1, R65              ; 196:1, GFX_SYNC
0453:   UPCALL      2, R65              ; 197:1, COLOR
0454:   LOADI       R65, 0              ; 198:1
0455:   UPCALL      3, R65              ; 198:1, PRINT
0456:   EOF                             ; 0:0

End of input by CTRL-D