-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathTINYBASIC.S
More file actions
1564 lines (1496 loc) · 28 KB
/
TINYBASIC.S
File metadata and controls
1564 lines (1496 loc) · 28 KB
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
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
; da65 V2.18 - Git N/A
; Created: 2020-07-23 22:01:38
; Input file: TINYBASIC.OUT
; Page: 1
L0727 := $0727
L090B := $090B
L0AC4 := $0AC4
L0D38 := $0D38
L15E0 := $15E0
L1740 := $1740
L1B20 := $1B20
L1EA0 := $1EA0
L4145 := $4145
L5441 := $5441
L7080 := $7080
L9148 := $9148
LD445 := $D445
org $0000
L0000: brk
L0001: brk
L0002: brk
L0003: brk
L0004: brk
L0005: brk
brk
brk
brk
brk
L000A: brk
L000B: brk
brk
brk
brk
brk
L0010: brk
brk
brk
brk
brk
brk
L0016: brk
brk
L0018: brk
brk
brk
brk
brk
L001D: brk
brk
brk
L0020: brk
L0021: brk
L0022: brk
L0023: brk
L0024: brk
L0025: brk
L0026: brk
L0027: brk
L0028: brk
L0029: brk
L002A: brk
L002B: brk
L002C: brk
L002D: brk
L002E: brk
L002F: brk
L0030: brk
brk
brk
brk
L0034: brk
brk
brk
brk
brk
brk
L003A: brk
brk
brk
brk
brk
L003F: brk
brk
brk
brk
L0043: brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
L004F: brk
L0050: brk
brk
L0052: brk
L0053: brk
L0054: brk
brk
brk
brk
brk
L0059: brk
brk
brk
brk
brk
brk
brk
brk
L0061: brk
L0062: brk
brk
L0064: brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
L0071: brk
L0072: brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
L0080: brk
brk
L0082: brk
brk
brk
brk
brk
brk
brk
brk
L008A: brk
brk
brk
brk
brk
brk
L0090: brk
brk
brk
L0093: brk
brk
L0095: brk
brk
brk
brk
brk
brk
L009B: brk
brk
brk
brk
brk
brk
L00A1: brk
brk
brk
brk
brk
brk
brk
brk
brk
L00AA: brk
L00AB: brk
L00AC: brk
L00AD: brk
brk
L00AF: brk
brk
brk
brk
brk
brk
brk
L00B6: brk
L00B7: brk
L00B8: brk
L00B9: brk
L00BA: brk
L00BB: brk
L00BC: brk
L00BD: brk
L00BE: brk
L00BF: brk
L00C0: brk
L00C1: brk
L00C2: brk
L00C3: brk
L00C4: brk
L00C5: brk
L00C6: brk
L00C7: brk
brk
brk
brk
brk
brk
L00CD: brk
L00CE: brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
L00D8: brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
L00E7: brk
brk
L00E9: brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
lda L1740
clc
bmi L0114
L0106: lda L1740
bpl L0106
jsr L010E
L010E: lda #$FF
jsr L1EA0
sec
L0114: rts
lda #$01
bit $6E02
clc
beq L012B
L011D: bit $6E02
bne L011D
jsr L0125
L0125: lda #$FF
jsr L2009
sec
L012B: rts
.org $2000
jmp L2085
jmp L20BD
L2006: jmp L2006
L2009: jmp L2009
L200C: nop
clc
rts
L200F: .byte $5F
L2010: clc
L2011: .byte $82
L2012: .byte $80
L2013: .byte $04
stx L00C3
bcc L201D
stx L00C3
sta (L00C2),y
rts
L201D: .byte $B1
L201E: .byte $C2
L201F: ldy #$00
rts
.byte $62
and (L0064,x)
and (L00D8,x)
and (L0005,x)
.byte $22
.byte $33
.byte $22
sbc $9F21,x
.byte $23
.byte $42
.byte $27
.byte $3F
.byte $27
.byte $7A
.byte $23
.byte $FC
bit L0095
.byte $23
.byte $9F
.byte $23
.byte $9F
.byte $23
lda $C126,x
rol L008A
rol L009B
rol L00E9
rol L0061
.byte $23
eor (L0023),y
eor (L0026,x)
.byte $52
rol L004F
rol L0062
rol L00E7
and L00CD
.byte $22
asl L0023
.byte $9F
.byte $23
ora L0024,x
.byte $A7
.byte $23
.byte $B7
.byte $22
.byte $BF
.byte $22
.byte $83
bit L00A1
.byte $22
.byte $9F
.byte $23
.byte $9F
.byte $23
tay
bit L004F
.byte $27
eor L0727
and L00AA
jsr L2337
lda L1B20,x
.byte $27
lda (L0026),y
jsr L5441
.byte $20
.byte $80
L2083: .byte $70
L2084: .byte $27
L2085: lda #$00
sta L0020
sta L0022
lda #$29
sta L0021
sta L0023
ldy #$01
L2093: lda (L0022),y
tax
eor #$FF
sta (L0022),y
cmp (L0022),y
php
txa
sta (L0022),y
inc L0022
bne L20A6
inc L0023
L20A6: plp
beq L2093
dey
cld
lda L0020
adc L2013
sta L0024
tya
adc L0021
sta L0025
tya
sta (L0020),y
iny
sta (L0020),y
L20BD: lda L0022
sta L00C6
sta L0026
lda L0023
sta L00C7
sta L0027
jsr L2487
L20CC: lda L2083
sta L002A
lda L2084
sta L002B
lda #$80
sta L00C1
lda #$30
sta L00C0
ldx #$00
stx L00BE
stx L00C2
dex
txs
L20E6: cld
jsr L22F9
jsr L20F2
jmp L20E6
.byte $83
.byte $65
L20F2: cmp #$30
bcs L2171
cmp #$08
bcc L2106
asl a
tax
L20FC: lda L201F,x
pha
lda L201E,x
pha
php
rti
L2106: adc L00C1
tax
lda (L00C1),y
pha
lda L0000,x
sta (L00C1),y
pla
sta L0000,x
rts
L2114: jsr L2487
lda #$21
jsr L2009
lda L002A
sec
sbc L2083
tax
lda L002B
sbc L2084
jsr L23A0
lda L00BE
beq L2141
lda #$7E
sta L002A
lda #$20
sta L002B
jsr L22A1
ldx L0028
lda L0029
jsr L23A0
L2141: lda #$07
jsr L2009
jsr L2487
L2149: lda L0026
sta L00C6
lda L0027
sta L00C7
jmp L20CC
L2154: ldx #$7C
L2156: cpx L00C1
L2158: bcc L2114
ldx L00C1
inc L00C1
inc L00C1
clc
rts
dec L00BD
L2164: lda L00BD
beq L2114
L2168: lda L00BC
sta L002A
lda L00BD
sta L002B
rts
L2171: cmp #$40
bcs L21B8
pha
jsr L22F9
adc L2083
sta L00BC
pla
pha
and #$07
adc L2084
sta L00BD
pla
and #$08
bne L2168
lda L00BC
ldx L002A
sta L002A
stx L00BC
lda L00BD
ldx L002B
sta L002B
stx L00BD
L219C: lda L00C6
sbc #$01
sta L00C6
bcs L21A6
dec L00C7
L21A6: cmp L0024
lda L00C7
sbc L0025
bcc L2158
lda L00BC
sta (L00C6),y
iny
lda L00BD
sta (L00C6),y
rts
L21B8: pha
lsr a
lsr a
lsr a
lsr a
and #$0E
tax
pla
cmp #$60
and #$1F
bcs L21C9
ora #$E0
L21C9: clc
beq L21D3
adc L002A
sta L00BC
tya
adc L002B
L21D3: sta L00BD
jmp L20FC
lda L002C
sta L00B8
lda L002D
sta L00B9
L21E0: jsr L2225
jsr L2214
eor (L002A),y
tax
jsr L22F9
txa
beq L21E0
asl a
beq L2204
lda L00B8
sta L002C
lda L00B9
sta L002D
L21FA: jmp L2164
jsr L2225
cmp #$0D
bne L21FA
L2204: rts
jsr L2225
cmp #$5B
bcs L21FA
cmp #$41
bcc L21FA
asl a
jsr L2387
L2214: ldy #$00
lda (L002C),y
inc L002C
bne L221E
inc L002D
L221E: cmp #$0D
clc
rts
L2222: jsr L2214
L2225: lda (L002C),y
cmp #$20
beq L2222
cmp #$3A
clc
bpl L2232
cmp #$30
L2232: rts
jsr L2225
bcc L21FA
sty L00BC
sty L00BD
L223C: lda L00BC
ldx L00BD
asl L00BC
rol L00BD
asl L00BC
rol L00BD
clc
adc L00BC
sta L00BC
txa
adc L00BD
asl L00BC
rol a
sta L00BD
jsr L2214
and #$0F
adc L00BC
sta L00BC
tya
adc L00BD
sta L00BD
jsr L2225
bcs L223C
jmp L2380
L226B: jsr L24FC
lda L00BC
ora L00BD
beq L22BC
L2274: lda L0020
sta L002C
lda L0021
sta L002D
L227C: jsr L236D
beq L2293
lda L0028
cmp L00BC
lda L0029
sbc L00BD
bcs L2293
L228B: jsr L2214
bne L228B
jmp L227C
L2293: lda L0028
eor L00BC
bne L229D
lda L0029
eor L00BD
L229D: rts
L229E: jsr L22A6
L22A1: jsr L22F9
bpl L229E
L22A6: inc L00BF
bmi L22AD
jmp L2009
L22AD: dec L00BF
L22AF: rts
L22B0: cmp #$22
beq L22AF
jsr L22A6
jsr L2214
bne L22B0
L22BC: jmp L2114
L22BF: lda #$20
jsr L22A6
lda L00BF
and #$87
bmi L22AF
bne L22BF
rts
ldx #$7B
jsr L2156
inc L00C1
inc L00C1
inc L00C1
sec
lda L0003,x
sbc L0000,x
sta L0000,x
lda L0004,x
sbc L0001,x
bvc L22E9
eor #$80
ora #$01
L22E9: bmi L22F5
bne L22F1
ora L0000,x
beq L22F3
L22F1: lsr L0002,x
L22F3: lsr L0002,x
L22F5: lsr L0002,x
bcc L2305
L22F9: ldy #$00
lda (L002A),y
inc L002A
bne L2303
inc L002B
L2303: ora #$00
L2305: rts
lda L00BE
beq L2332
L230A: jsr L2214
bne L230A
jsr L236D
beq L232F
L2314: jsr L234C
jsr L200C
bcs L2325
lda L00C4
sta L002A
lda L00C5
sta L002B
rts
L2325: lda L2083
sta L002A
lda L2084
sta L002B
L232F: jmp L2114
L2332: sta L00BF
jmp L2149
L2337: lda L0020
sta L002C
lda L0021
sta L002D
jsr L236D
beq L232F
lda L002A
sta L00C4
lda L002B
sta L00C5
L234C: lda #$01
sta L00BE
rts
jsr L226B
beq L2314
L2356: lda L00BC
sta L0028
lda L00BD
sta L0029
jmp L2114
jsr L26FD
jsr L26F4
jsr L2274
bne L2356
rts
L236D: jsr L2214
sta L0028
jsr L2214
sta L0029
ora L0028
rts
jsr L24FC
jsr L2380
L2380: lda L00BD
L2382: jsr L2387
lda L00BC
L2387: ldx L00C1
dex
sta L0000,x
stx L00C1
cpx L00C0
bne L239F
L2392: jmp L2114
L2395: ldx L00C1
cpx #$80
bpl L2392
lda L0000,x
inc L00C1
L239F: rts
L23A0: sta L00BD
stx L00BC
jmp L23B8
ldx L00C1
lda L0001,x
bpl L23B5
jsr L2641
lda #$2D
jsr L22A6
L23B5: jsr L24FC
L23B8: lda #$1F
sta L00B8
sta L00BA
lda #$2A
sta L00B9
sta L00BB
ldx L00BC
ldy L00BD
sec
L23C9: inc L00B8
txa
sbc #$10
tax
tya
sbc #$27
tay
bcs L23C9
L23D5: dec L00B9
txa
adc #$E8
tax
tya
adc #$03
tay
bcc L23D5
txa
L23E2: sec
L23E3: inc L00BA
sbc #$64
bcs L23E3
dey
bpl L23E2
L23EC: dec L00BB
adc #$0A
bcc L23EC
ora #$30
sta L00BC
lda #$20
sta L00BD
ldx #$FB
L23FC: stx L00C3
lda L00BD,x
ora L00BD
cmp #$20
beq L240F
ldy #$30
sty L00BD
ora L00BD
jsr L22A6
L240F: ldx L00C3
inx
bne L23FC
rts
lda L002D
pha
lda L002C
pha
lda L0020
sta L002C
lda L0021
sta L002D
lda L0024
ldx L0025
jsr L245B
beq L242F
jsr L245B
L242F: lda L002C
sec
sbc L00B6
lda L002D
sbc L00B7
bcs L247C
jsr L236D
beq L247C
ldx L0028
lda L0029
jsr L23A0
lda #$20
L2448: jsr L22A6
jsr L200C
bcs L247C
jsr L2214
bne L2448
jsr L2483
jmp L242F
L245B: sta L00B6
inc L00B6
bne L2462
inx
L2462: stx L00B7
ldy L00C1
cpy #$80
beq L2482
jsr L226B
L246D: lda L002C
ldx L002D
sec
sbc #$02
bcs L2477
dex
L2477: sta L002C
jmp L2748
L247C: pla
sta L002C
pla
sta L002D
L2482: rts
L2483: lda L00BF
bmi L2482
L2487: lda #$0D
jsr L2009
lda L2011
and #$7F
sta L00BF
beq L249C
L2495: jsr L2764
dec L00BF
bne L2495
L249C: lda #$0A
jmp L2761
L24A1: ldy L2012
L24A4: sty L00BF
bcs L24B3
lda #$30
sta L002C
sta L00C0
sty L002D
jsr L2380
L24B3: eor L0080
sta L0080
jsr L2006
ldy #$00
ldx L00C0
and #$7F
beq L24B3
cmp #$7F
beq L24B3
cmp #$13
beq L24A4
cmp #$0A
beq L24A1
cmp L2010
beq L24DC
cmp L200F
bne L24E2
cpx #$30
bne L24F2
L24DC: ldx L002C
sty L00BF
lda #$0D
L24E2: cpx L00C1
bmi L24EE
lda #$07
jsr L22A6
jmp L24B3
L24EE: sta L0000,x
inx
inx
L24F2: dex
stx L00C0
cmp #$0D
bne L24B3
jsr L2483