-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMICROBASIC.ASM
More file actions
1565 lines (1495 loc) · 25.2 KB
/
MICROBASIC.ASM
File metadata and controls
1565 lines (1495 loc) · 25.2 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
NAM MICRO MICROBASIC
* ***** VERSION 1.3A *****
*
* BY ROBERT H UITERWYK, TAMPA, FLORIDA
*
*THIS PROGRAM ASSUMES THAT THE
*MOTOROLA MIKBUG ROM IS INSTALLED
*AND THAT ITS ASSOCIATED 128 BYTE
*RAN IS ALSO PRESENT
*THE SP AND XSTACK WILL HAVE TO
*BE MOVED IF THIS IS NOT THE CASE
ORG $20
INDEX1 FDB $0000
INDEX2 FDB $0000
INDEX3 FDB $0000
INDEX4 FDB $0000
SAVESP FDB $0000
NEXTBA FDB END
WORKBA FDB END
SOURCE FDB END
PACKLN FDB $0000
HIGHLN FDB $0000
BASPNT FDB $0000
BASLIN FDB $0000
PUSHTX FDB $0000
XSTACK FDB $A07F
RNDVAL FDB $0000
DIMPNT FDB $0000
DIMCAL FDB $0000
PRCNT FCB 0
MAXLIN FCB 72
BACKSP FCB $0F
CANCEL FCB $18
MEMEND FDB $1FFF
ARRTAB FDB $0000
KEYWD FDB $0000
TSIGN FCB 0
NCMPR FCB 0
TNUMB FCB 0
ANUMB FCB 0
BNUMB FCB 0
AESTK FDB ASTACK
FORPNT FDB FORSTK
VARPNT FDB VARTAB
SBRPNT FDB SBRSTK
SBRSTK RMB 16
FORSTK RMB 48
DIMVAR FDB VARTAB
ORG $00AC
BUFNXT FDB $00B0
ENDBUF FDB $00B0
ORG $00B0
BUFFER RMB $50
ORG $0100
PROGM JMP START
VARTAB RMB 78
FCB $1E
FDB 0 ; PLACEHOLDER EXPECTED BY OUTLIN
COMMAN FCC /RUN/
FCB $1E
FDB RUN
FCC /LIST/
FCB $1E
FDB CLIST
FCC /NEW/
FCB $1E
FDB START
FCC /PAT/
FCB $1E
FDB PATCH
GOLIST FCC /GOSUB/
FCB $1E
FDB GOSUB
FCC /GOTO/
FCB $1E
FDB GOTO
FCC /GO TO/
FCB $1E
FDB GOTO
FCC /SIZE/
FCB $1E
FDB SIZE
FCC /THEN/
FCB $1E
FDB IF2
FCC /PRINT/
FCB $1E
FDB PRINT
FCC /LET/
FCB $1E
FDB LET
FCC /INPUT/
FCB $1E
FDB INPUT
FCC /IF/
FCB $1E
FDB IF
FCC /END/
FCB $1E
FDB READY
FCC /RETURN/
FCB $1E
FDB RETURN
FCC /DIM/
FCB $1E
FDB DIM
FCC /FOR/
FCB $1E
FDB FOR
FCC /NEXT/
FCB $1E
FDB NEXT
FCC /REM/
FCB $1E
FDB REMARK
PAUMSG FCC /PAUSE/
FCB $1E
FDB PAUSE
FCB $20
COMEND FCB $1E
IMPLET FDB LET
RMB 60
ASTACK EQU *-1
RDYMSG FCB $0D
FCB $0A
FCB $15
FCB $0A
FCB $15
FCC /READY/
FCB $1E
PROMPT FCB $23
FCB $00
FCB $1E
FCB $1E
PGCNTL FCB $10
FCB $16
FCB $1E
FCB $1E
FCB $1E
ERRMS1 FCC /ERROR# /
FCB $1E
ERRMS2 FCC / IN LINE /
FCB $1E
KEYBD LDAA #$3F
BSR OUTCH
KEYBD0 LDX #BUFFER
LDAB #10
KEYBD1 BSR INCH
CMPA #$00
BNE KEYB11
DECB
BNE KEYBD1
KEYB10 JMP READY
KEYB11 CMPA CANCEL
BEQ DEL
CMPA #$0D
BEQ IEXIT
KEYBD2 CMPA #$0A
BEQ KEYBD1
CMPA #$15
BEQ KEYBD1
CMPA #$13
BEQ KEYBD1
KEYB55 CMPA BACKSP
BNE KEYBD3
CPX #BUFFER
BEQ KEYBD1
DEX
BRA KEYBD1
KEYBD3 CPX #BUFFER+71
BEQ KEYBD1
STAA 0,X
INX
BRA KEYBD1
DEL BSR CRLF
CNTLIN LDX #PROMPT
BSR OUTNCR
BRA KEYBD0
IEXIT LDAA #$1E
STAA 0,X
STX ENDBUF
BSR CRLF
RTS
OUTCH BSR BREAK
JMP OUTEEE
OUTEEE EQU $E1D1
INCH JMP INEEE
BREAK JMP BREAK1
BREAK1 PSHA
LDAA PIAD
PIAD EQU $8004
BMI BREAK2
JMP READY
BREAK2 PULA
RTS
INEEE EQU $E1AC
OUTPUT EQU *
BSR OUTNCR
BRA CRLF
OUTPU2 BSR OUTCH
OUTPU3 INX
OUTNCR LDAA 0,X
CMPA #$1E
BNE OUTPU2
RTS
CRLF BSR PUSHX
LDX #CRLFST
BSR OUTNCR
BSR PULLX
RTS
CRLFST FCB $00
FCB $0D
FCB $0A
FCB $15
CREND FCB $1E
FCB $FF,$FF
FCB $FF,$FF
FCB $1E
PUSHX STX PUSHTX
LDX XSTACK
DEX
DEX
STX XSTACK
PSHA
LDAA PUSHTX
STAA 0,X
LDAA PUSHTX+1
STAA 1,X
PULA
LDX PUSHTX
RTS
PULLX LDX XSTACK
LDX 0,X
INC XSTACK+1
INC XSTACK+1
RTS
STORE PSHA
PSHB
BSR PUSHX
JSR PULLAE
LDX AESTK
INX
INX
STX AESTK
DEX
LDX 0,X
STAA 0,X
STAB 1,X
BSR PULLX
PULB
PULA
RTS
IND BSR PUSHX
PSHA
PSHB
LDX AESTK
INX
INX
STX AESTK
DEX
LDX 0,X
LDAA 0,X
LDAB 1,X
JSR PUSHAE
PULB
PULA
BSR PULLX
RTS
LIST LDX NEXTBA
STX WORKBA
LDX SOURCE
BRA LIST1
LIST0 LDX INDEX3
LIST1 CPX WORKBA
BEQ LEXIT
BSR OUTLIN
INX
BRA LIST1
LEXIT RTS
OUTLIN LDAA 0,X
CLR PRCNT
INX
LDAB 0,X
INX
CLR TSIGN
JSR PRN0
BSR PRINSP
OUTLI1 LDAA 0,X
INX
BSR PUSHX
LDX #COMMAN
STX KEYWD
STAA KEYWD+1
LDX KEYWD
DEX
OUTLI2 DEX
LDAA 0,X
CMPA #$1E
BNE OUTLI2
INX
INX
INX
JSR OUTNCR
JSR PULLX
JMP OUTPUT
PRINSP PSHA
LDAA #$20
JSR OUTCH
PULA
RTS
RANDOM INX
INX
LDAA 0,X
CMPA #'D
BNE TSTVER
JSR PUSHX
LDAA RNDVAL
LDAB RNDVAL+1
LDX #0000
RAND1 ADCB 1,X
ADCA 0,X
INX
INX
CPX #RNDVAL
BNE RAND1
ANDA #$7F
STAA RNDVAL
STAB RNDVAL+1
STX INDEX1
LDAA INDEX1
LDAB INDEX1+1
JMP TSTV9
TSTV JSR SKIPSP
JSR BREAK
JSR TSTLTR
BCC TSTV1
RTS
TSTV1 CMPA #'R
BNE TSTV2
LDAB 1,X
CMPB #'N
BEQ RANDOM
TSTV2 JSR PUSHX
SUBA #$40
STAA VARPNT+1
ASLA
ADDA VARPNT+1
STAA VARPNT+1
LDX VARPNT
LDAA VARPNT
LDAB VARPNT+1
TST 2,X
BNE TSTV20
JMP TSTV9
TSTV20 LDX 0,X
STX DIMPNT
INX
INX
STX DIMCAL
JSR PULLX
JSR INXSKP
CMPA #'(
BEQ TSTV22
TSTVER JMP DBLLTR
TSTV22 INX
JSR EXPR
JSR PUSHX
JSR PULLAE
TSTA
BEQ TSTV3
SUBER1 JMP SUBERR
TSTV3 LDX DIMPNT
TSTB
BEQ SUBER1
CMPB 0,X
BHI SUBER1
LDAA 1,X
STAA ANUMB
BEQ TST666
LDX DIMCAL
TSTV4 DECB
BEQ TSTV6
LDAA ANUMB
TSTV5 INX
INX
DECA
BNE TSTV5
BRA TSTV4
TSTV6 STX DIMCAL
JSR PULLX
JSR SKIPSP
CMPA #',
BNE TSTVER
INX
JSR EXPR
JSR PUSHX
JSR PULLAE
TSTA
BNE SUBER1
LDX DIMPNT
TSTB
BEQ SUBER1
CMPB 1,X
BHI SUBER1
TST666 LDX DIMCAL
TSTV7 INX
INX
DECB
BNE TSTV7
DEX
DEX
STX DIMCAL
JSR PULLX
JSR SKIPSP
TSTV8 CMPA #')
BNE TSTVER
JSR PUSHX
LDAA DIMCAL
LDAB DIMCAL+1
TSTV9 JSR PULLX
INX
JSR PUSHAE
CLC
RTS
TSTLTR CMPA #$41
BMI NONO
CMPA #$5A
BLE YESNO
TESTNO CMPA #$30
BMI NONO
CMPA #$39
BLE YESNO
NONO SEC
RTS
YESNO CLC
RTS
PULPSH BSR PULLAE
PUSHAE STS SAVESP
LDS AESTK
PSHB
PSHA
STS AESTK
LDS SAVESP
RTS
PULLAE STS SAVESP
LDS AESTK
PULA
PULB
STS AESTK
LDS SAVESP
RTS
FACT JSR SKIPSP
JSR TSTV
BCS FACT0
JSR IND
RTS
FACT0 JSR TSTN
BCS FACT1
RTS
FACT1 CMPA #'(
BNE FACT2
INX
BSR EXPR
JSR SKIPSP
CMPA #')
BNE FACT2
INX
RTS
FACT2 LDAB #13
JMP ERROR
TERM BSR FACT
TERM0 JSR SKIPSP
CMPA #'*
BNE TERM1
INX
BSR FACT
BSR MPY
BRA TERM0
TERM1 CMPA #'/
BNE TERM2
INX
BSR FACT
JSR DIV
BRA TERM0
TERM2 RTS
EXPR JSR SKIPSP
CMPA #'-
BNE EXPR0
INX
BSR TERM
JSR NEG
BRA EXPR1
EXPR0 CMPA #'+
BNE EXPR00
INX
EXPR00 BSR TERM
EXPR1 JSR SKIPSP
CMPA #'+
BNE EXPR2
INX
BSR TERM
JSR ADD
BRA EXPR1
EXPR2 CMPA #'-
BNE EXPR3
INX
BSR TERM
JSR SUB
BRA EXPR1
EXPR3 RTS
MPY BSR MDSIGN
LDAA #15
STAA 0,X
CLRB
CLRA
MPY4 LSR 3,X
ROR 4,X
BCC MPY5
ADDB 2,X
ADCA 1,X
BCC MPY5
MPYERR LDAA #2
JMP ERROR
MPY5 ASL 2,X
ROL 1,X
DEC 0,X
BNE MPY4
TSTA
BMI MPYERR
TST TSIGN
BPL MPY6
JSR NEGAB
MPY6 STAB 4,X
STAA 3,X
JSR PULLX
RTS
MDSIGN JSR PUSHX
CLRA
LDX AESTK
TST 1,X
BPL MDS2
BSR NEG
LDAA #$80
MDS2 INX
INX
STX AESTK
TST 1,X
BPL MDS3
BSR NEG
ADDA #$80
MDS3 STAA TSIGN
DEX
DEX
RTS
DIV BSR MDSIGN
TST 1,X
BNE DIV33
TST 2,X
BNE DIV33
LDAB #8
JMP ERROR
DIV33 LDAA #1
DIV4 INCA
ASL 2,X
ROL 1,X
BMI DIV5
CMPA #17
BNE DIV4
DIV5 STAA 0,X
LDAA 3,X
LDAB 4,X
CLR 3,X
CLR 4,X
DIV163 SUBB 2,X
SBCA 1,X
BCC DIV165
ADDB 2,X
ADCA 1,X
CLC
BRA DIV167
DIV165 SEC
DIV167 ROL 4,X
ROL 3,X
LSR 1,X
ROR 2,X
DEC 0,X
BNE DIV163
TST TSIGN
BPL DIV169
BSR NEG
DIV169 JSR PULLX
RTS
NEG PSHA
PSHB
JSR PULLAE
BSR NEGAB
JSR PUSHAE
PULB
PULA
RTS
NEGAB COMA
COMB
ADDB #1
ADCA #0
RTS
SUB BSR NEG
ADD JSR PULLAE
ADD1 STAB BNUMB
STAA ANUMB
JSR PULLAE
ADDB BNUMB
ADCA ANUMB
JSR PUSHAE
CLC
RTS
FINDNO LDAA HIGHLN
LDAB HIGHLN+1
SUBB PACKLN+1
SBCA PACKLN
BCS HIBALL
FINDN1 LDX SOURCE
FIND0 JSR PULPSH
SUBB 1,X
SBCA 0,X
BCS FIND3
BNE FIND1
TSTB
BEQ FIND4
FIND1 INX
FIND2 BSR INXSKP
CMPA #$1E
BNE FIND2
INX
CPX NEXTBA
BNE FIND0
HIBALL LDX NEXTBA
FIND3 SEC
FIND4 STX WORKBA
JSR PULLAE
RTS
SKIPSP LDAA 0,X
CMPA #$20
BNE SKIPEX
INXSKP INX
BRA SKIPSP
SKIPEX RTS
LINENO JSR INTSTN
BCC LINE1
LDAB #7
JMP ERROR
LINE1 JSR PULPSH
STAA PACKLN
STAB PACKLN+1
STX BUFNXT
RTS
NXTLIN LDX BASPNT
NXTL12 LDAA 0,X
INX
CMPA #$1E
BNE NXTL12
STX BASLIN
RTS
CCODE BSR SKIPSP
STX INDEX4
STS SAVESP
LDX #COMMAN-1
LOOP3 LDS INDEX4
DES
LOOP4 INX
PULA
LDAB 0,X
CMPB #$1E
BEQ LOOP7
CBA
BEQ LOOP4
LOOP5 INX
CPX #COMEND
BEQ CCEXIT
LDAB 0,X
CMPB #$1E
BNE LOOP5
LOOP6 INX
INX
BRA LOOP3
LOOP7 INX
STS BUFNXT
STS BASPNT
LOOP8 LDS SAVESP
RTS
CCEXIT LDS SAVESP
LDX #IMPLET
RTS
START LDX SOURCE
STX NEXTBA
STX WORKBA
STX ARRTAB
DEX
CLRA
START2 INX
STAA 0,X
CPX MEMEND
BNE START2
START1 CLRA
STAA PACKLN
STAA PACKLN+1
STAA PRCNT
LDX PACKLN
STX HIGHLN
READY LDS #$A045
LDX #RDYMSG
JSR OUTPUT
NEWLIN LDS #$A045
LDX #$A07F
STX XSTACK
CLR PRCNT
NEWL3 JSR CNTLIN
LDX #BUFFER
JSR SKIPSP
STX BUFNXT
JSR TESTNO
BCS LOOP2
JMP NUMBER
LOOP2 CMPA #$1E
BEQ NEWLIN
JSR CCODE
LDX 0,X
JMP 0,X
ERROR LDS #$A045
JSR CRLF
LDX #ERRMS1
JSR OUTNCR
CLRA
JSR PUSHAE
JSR PRN
LDX #ERRMS2
JSR OUTNCR
CLRB
LDAA BASLIN
BEQ ERROR2
LDX BASLIN
LDAA 0,X
LDAB 1,X
ERROR2 JSR PRN0
JSR CRLF
BRA READY
RUN LDX SOURCE
STX BASLIN
LDX #SBRSTK
STX SBRPNT
LDX #FORSTK
STX FORPNT
LDX #$A07F
STX XSTACK
LDX NEXTBA
STX ARRTAB
CLRA
DEX
RUN1 INX
STAA 0,X
CPX MEMEND
BNE RUN1
LDX #VARTAB
LDAB #78
RUN2 STAA 0,X
INX
DECB
BNE RUN2
JMP BASIC
CLIST LDX #PGCNTL
JSR OUTPUT
LDX BASPNT
CLIST1 JSR SKIPSP
CMPA #$1E
BEQ CLIST4
JSR INTSTN
STX BASPNT
JSR FINDN1
STX INDEX3
LDX BASPNT
PSHA
JSR SKIPSP
CMPA #$1E
PULA
BNE CLIST2
JSR PUSHAE
BRA CLIST3
CLIST2 INX
JSR INTSTN
CLIST3 CLRA
LDAB #1
JSR ADD1
JSR FINDN1
JSR LIST0
BRA CLIST5
CLIST4 JSR LIST
CLIST5 JMP REMARK
NOP
PATCH JSR NXTLIN
LDX #BASIC
STX $A046
LDS #$A040
STS SP
SP EQU $A008
JMP CONTRL
CONTRL EQU $E0E3
NUMBER JSR LINENO
NUM1 JSR FINDNO
BCC DELREP
LDX WORKBA
CPX NEXTBA
BEQ CAPPEN
BSR INSERT
BRA NEXIT
DELREP LDX BUFNXT
JSR SKIPSP
CMPA #$1E
BNE REPLAC
LDX NEXTBA
CPX SOURCE
BEQ NEXIT
BSR DELETE
BRA NEXIT
REPLAC BSR DELETE
BSR INSERT
NEXIT JMP NEWLIN
CAPPEN BSR INSERT
LDX PACKLN
STX HIGHLN
BRA NEXIT
DELETE STS SAVESP
LDX WORKBA
LDS NEXTBA
LDAB #2
INX
INX
DES
DES
DEL2 LDAA 0,X
DES
INX
INCB
CMPA #$1E
BNE DEL2
STS NEXTBA
STS ARRTAB
LDX WORKBA
STAB DEL5+1
* IN AT OBJECT TIME
DEL4 CPX NEXTBA
BEQ DELEX
DEL5 LDAA 0,X
STAA 0,X
INX
BRA DEL4
DELEX LDS SAVESP
RTS
INSERT LDX BUFNXT
JSR CCODE
INS1 STX KEYWD
LDAB ENDBUF+1
SUBB BUFNXT+1
ADDB #$04
STAB OFFSET+1
ADDB NEXTBA+1
LDAA #$00
ADCA NEXTBA
CMPA MEMEND
BHI OVERFL
STAB NEXTBA+1
STAA NEXTBA
LDX NEXTBA
STX ARRTAB
INS2 CPX WORKBA
BEQ BUFWRT
DEX
LDAA 0,X
OFFSET STAA 0,X
BRA INS2
BUFWRT LDX WORKBA
STS SAVESP
LDAA PACKLN
STAA 0,X
INX
LDAA PACKLN+1
STAA 0,X
INX
LDAA KEYWD+1
STAA 0,X
INX
LDS BUFNXT
DES
BUF3 PULA
STAA 0,X
INX
CMPA #$1E
BNE BUF3
LDS SAVESP
RTS
OVERFL LDAB #14
JMP ERROR
BASIC LDX BASLIN
CPX NEXTBA
BNE BASIC1
BASIC0 JMP READY
BASIC1 TST BASLIN
BEQ BASIC0
INX
INX
LDAA 0,X
INX
STX BASPNT
LDX #COMMAN
STX KEYWD
STAA KEYWD+1
LDX #ASTACK
STX AESTK
LDX KEYWD
LDX 0,X
BASIC2 JMP 0,X
GOSUB LDX BASLIN
STX INDEX1
JSR NXTLIN
LDX SBRPNT
CPX #SBRSTK+16
BNE GOSUB1
LDAB #9
JMP ERROR
GOSUB1 LDAA BASLIN
STAA 0,X
INX
LDAA BASLIN+1
STAA 0,X
INX
STX SBRPNT
LDX INDEX1
STX BASLIN
GOTO LDX BASPNT
JSR EXPR
JSR FINDN1
BCC GOTO2
LDAB #7