-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathabersoft_forth.disassembled.raw.z80s
12596 lines (10789 loc) · 339 KB
/
abersoft_forth.disassembled.raw.z80s
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
; z80dasm 1.1.3
; command line: z80dasm --origin=24064 --address --source --labels --block-def=z80dasm_blocks.txt --sym-input=z80dasm_symbols.z80s --output=abersoft_forth.disassembled.raw.z80s abersoft_forth.padded.bin
org 05e00h
rom_key_scan: equ 0x028e
rom_key_test: equ 0x031e
rom_key_decode: equ 0x0333
rom_beeper: equ 0x03b5
rom_sa_all: equ 0x075a
rom_cls: equ 0x0d6b
rom_chan_open: equ 0x1601
rom_find_int1: equ 0x1e94
rom_break_key: equ 0x1f54
rom_border_2297: equ 0x2297
rom_point_sub_22ce: equ 0x22ce
rom_plot_22df: equ 0x22df
rom_s_scrn_s_2538: equ 0x2538
rom_s_attr_s_2583: equ 0x2583
rom_stack_fetch: equ 0x2bf1
sys_last_k: equ 0x5c08
sys_mode: equ 0x5c41
sys_flags2: equ 0x5c6a
sys_t_addr: equ 0x5c74
sys_scr_ct: equ 0x5c8c
sys_nmiadd: equ 0x5cb0
data_stack_bottom: equ 0xcb40
first_buffer: equ 0xcbe0
ram_disc_bottom: equ 0xd000
user_variables_origin:
defw 00000h ;5e00 00 00 . .
defw 00000h ;5e02 00 00 . .
defw 00000h ;5e04 00 00 . .
s0_value:
defw 00000h ;5e06 00 00 . .
r0_value:
defw 00000h ;5e08 00 00 . .
tib_value:
defw 00000h ;5e0a 00 00 . .
width_value:
defw 00000h ;5e0c 00 00 . .
warning_value:
defw 00000h ;5e0e 00 00 . .
fence_value:
defw 00000h ;5e10 00 00 . .
dp_value:
defw 00000h ;5e12 00 00 . .
voc_link_value:
defw 00000h ;5e14 00 00 . .
blk_value:
defw 00000h ;5e16 00 00 . .
in_value:
defw 00000h ;5e18 00 00 . .
out_value:
defw 00000h ;5e1a 00 00 . .
scr_value:
defw 00000h ;5e1c 00 00 . .
offset_value:
defw 00000h ;5e1e 00 00 . .
context_value:
defw 00000h ;5e20 00 00 . .
current_value:
defw 00000h ;5e22 00 00 . .
state_value:
defw 00000h ;5e24 00 00 . .
base_value:
defw 00000h ;5e26 00 00 . .
dpl_value:
defw 00000h ;5e28 00 00 . .
fld_value:
defw 00000h ;5e2a 00 00 . .
csp_value:
defw 00000h ;5e2c 00 00 . .
r_hash_value:
defw 00000h ;5e2e 00 00 . .
hld_value:
defw 00000h ;5e30 00 00 . .
defw 00000h ;5e32 00 00 . .
defw 00000h ;5e34 00 00 . .
defw 00000h ;5e36 00 00 . .
defw 00000h ;5e38 00 00 . .
defw 00000h ;5e3a 00 00 . .
defw 00000h ;5e3c 00 00 . .
defw 00000h ;5e3e 00 00 . .
origin:
cold_entry:
nop ;5e40 00 .
jp cold_start ;5e41 c3 b0 6d . . m
warm_entry:
nop ;5e44 00 .
jp warm_start ;5e45 c3 93 6d . . m
fig_release:
defb 001h ;5e48 01 .
fig_revision:
defb 001h ;5e49 01 .
fig_user_version:
defb 000h ;5e4a 00 .
fig_implementation_attributes:
defb 00eh ;5e4b 0e .
; BLOCK 'top_most_word_in_forth_voc' (start 0x5e4c end 0x5e4e)
top_most_word_in_forth_voc_first:
defw udg_nfa_first ;5e4c 49 81 I .
; BLOCK 'backspace_char' (start 0x5e4e end 0x5e50)
backspace_char_first:
defw 0000ch ;5e4e 0c 00 . .
; BLOCK 'init_user_pointer_value' (start 0x5e50 end 0x5e52)
init_user_pointer_value_first:
defw user_pointer_value ;5e50 66 5e f ^
init_s0_value:
defw data_stack_bottom ;5e52 40 cb @ .
init_r0_value:
defw first_buffer ;5e54 e0 cb . .
init_tib_value:
defw data_stack_bottom ;5e56 40 cb @ .
init_width_value:
defw 0001fh ;5e58 1f 00 . .
init_warning_value:
defw 00000h ;5e5a 00 00 . .
init_fence_value:
defw l8159h ;5e5c 59 81 Y .
init_dp_value:
defw l8159h ;5e5e 59 81 Y .
init_voc_link_value:
defw editor_vocabulary_link ;5e60 ac 77 . w
; BLOCK 'cpu_name' (start 0x5e62 end 0x5e66)
cpu_name_first:
defw 00005h ;5e62 05 00 . .
defw 0b320h ;5e64 20 b3 .
user_pointer_value:
defw user_variables_origin ;5e66 00 5e . ^
return_pointer_value:
defw 0cbdeh ;5e68 de cb . .
pushde:
push de ;5e6a d5 .
pushhl:
push hl ;5e6b e5 .
next:
ld a,(bc) ;5e6c 0a .
inc bc ;5e6d 03 .
ld l,a ;5e6e 6f o
ld a,(bc) ;5e6f 0a .
inc bc ;5e70 03 .
ld h,a ;5e71 67 g
next2:
ld e,(hl) ;5e72 5e ^
inc hl ;5e73 23 #
ld d,(hl) ;5e74 56 V
ex de,hl ;5e75 eb .
jp (hl) ;5e76 e9 .
; BLOCK 'lit_nfa' (start 0x5e77 end 0x5e7b)
lit_nfa_first:
defb 083h ;5e77 83 .
defb 04ch ;5e78 4c L
defb 049h ;5e79 49 I
lit_nfa_last:
defb 0d4h ;5e7a d4 .
; BLOCK 'lit_lfa' (start 0x5e7b end 0x5e7d)
lit_lfa_first:
defw 00000h ;5e7b 00 00 . .
; BLOCK 'lit_cfa' (start 0x5e7d end 0x5e7f)
lit_cfa_first:
defw lit_pfa_first ;5e7d 7f 5e ^
; BLOCK 'lit_pfa' (start 0x5e7f end 0x5e88)
lit_pfa_first:
ld a,(bc) ;5e7f 0a .
inc bc ;5e80 03 .
ld l,a ;5e81 6f o
ld a,(bc) ;5e82 0a .
inc bc ;5e83 03 .
ld h,a ;5e84 67 g
jp pushhl ;5e85 c3 6b 5e . k ^
; BLOCK 'execute_nfa' (start 0x5e88 end 0x5e90)
execute_nfa_first:
defb 087h ;5e88 87 .
defb 045h ;5e89 45 E
defb 058h ;5e8a 58 X
defb 045h ;5e8b 45 E
defb 043h ;5e8c 43 C
defb 055h ;5e8d 55 U
defb 054h ;5e8e 54 T
execute_nfa_last:
defb 0c5h ;5e8f c5 .
; BLOCK 'execute_lfa' (start 0x5e90 end 0x5e92)
execute_lfa_first:
defw lit_nfa_first ;5e90 77 5e w ^
; BLOCK 'execute_cfa' (start 0x5e92 end 0x5e94)
execute_cfa_first:
defw execute_pfa_first ;5e92 94 5e . ^
; BLOCK 'execute_pfa' (start 0x5e94 end 0x5e98)
execute_pfa_first:
pop hl ;5e94 e1 .
jp next2 ;5e95 c3 72 5e . r ^
; BLOCK 'branch_nfa' (start 0x5e98 end 0x5e9f)
branch_nfa_first:
defb 086h ;5e98 86 .
defb 042h ;5e99 42 B
defb 052h ;5e9a 52 R
defb 041h ;5e9b 41 A
defb 04eh ;5e9c 4e N
defb 043h ;5e9d 43 C
branch_nfa_last:
defb 0c8h ;5e9e c8 .
; BLOCK 'branch_lfa' (start 0x5e9f end 0x5ea1)
branch_lfa_first:
defw execute_nfa_first ;5e9f 88 5e . ^
; BLOCK 'branch_cfa' (start 0x5ea1 end 0x5ea3)
branch_cfa_first:
defw branch_pfa_first ;5ea1 a3 5e . ^
; BLOCK 'branch_pfa' (start 0x5ea3 end 0x5eaf)
branch_pfa_first:
ld h,b ;5ea3 60 `
ld l,c ;5ea4 69 i
ld e,(hl) ;5ea5 5e ^
inc hl ;5ea6 23 #
ld d,(hl) ;5ea7 56 V
dec hl ;5ea8 2b +
add hl,de ;5ea9 19 .
ld c,l ;5eaa 4d M
ld b,h ;5eab 44 D
jp next ;5eac c3 6c 5e . l ^
; BLOCK 'zero_branch_nfa' (start 0x5eaf end 0x5eb7)
zero_branch_nfa_first:
defb 087h ;5eaf 87 .
defb 030h ;5eb0 30 0
defb 042h ;5eb1 42 B
defb 052h ;5eb2 52 R
defb 041h ;5eb3 41 A
defb 04eh ;5eb4 4e N
defb 043h ;5eb5 43 C
zero_branch_nfa_last:
defb 0c8h ;5eb6 c8 .
; BLOCK 'zero_branch_lfa' (start 0x5eb7 end 0x5eb9)
zero_branch_lfa_first:
defw branch_nfa_first ;5eb7 98 5e . ^
; BLOCK 'zero_branch_cfa' (start 0x5eb9 end 0x5ebb)
zero_branch_cfa_first:
defw zero_branch_pfa_first ;5eb9 bb 5e . ^
; BLOCK 'zero_branch_pfa' (start 0x5ebb end 0x5ec5)
zero_branch_pfa_first:
pop hl ;5ebb e1 .
ld a,l ;5ebc 7d }
or h ;5ebd b4 .
jr z,branch_pfa_first ;5ebe 28 e3 ( .
inc bc ;5ec0 03 .
inc bc ;5ec1 03 .
jp next ;5ec2 c3 6c 5e . l ^
; BLOCK 'paren_loop_nfa' (start 0x5ec5 end 0x5ecc)
paren_loop_nfa_first:
defb 086h ;5ec5 86 .
defb 028h ;5ec6 28 (
defb 04ch ;5ec7 4c L
defb 04fh ;5ec8 4f O
defb 04fh ;5ec9 4f O
defb 050h ;5eca 50 P
paren_loop_nfa_last:
defb 0a9h ;5ecb a9 .
; BLOCK 'paren_loop_lfa' (start 0x5ecc end 0x5ece)
paren_loop_lfa_first:
defw zero_branch_nfa_first ;5ecc af 5e . ^
; BLOCK 'paren_loop_cfa' (start 0x5ece end 0x5ed0)
paren_loop_cfa_first:
defw paren_loop_pfa_first ;5ece d0 5e . ^
; BLOCK 'paren_loop_pfa' (start 0x5ed0 end 0x5efe)
paren_loop_pfa_first:
ld de,00001h ;5ed0 11 01 00 . . .
l5ed3h:
ld hl,(return_pointer_value) ;5ed3 2a 68 5e * h ^
ld a,(hl) ;5ed6 7e ~
add a,e ;5ed7 83 .
ld (hl),a ;5ed8 77 w
ld e,a ;5ed9 5f _
inc hl ;5eda 23 #
ld a,(hl) ;5edb 7e ~
adc a,d ;5edc 8a .
ld (hl),a ;5edd 77 w
inc hl ;5ede 23 #
inc d ;5edf 14 .
dec d ;5ee0 15 .
ld d,a ;5ee1 57 W
jp m,l5eedh ;5ee2 fa ed 5e . . ^
ld a,e ;5ee5 7b {
sub (hl) ;5ee6 96 .
ld a,d ;5ee7 7a z
inc hl ;5ee8 23 #
sbc a,(hl) ;5ee9 9e .
jp l5ef2h ;5eea c3 f2 5e . . ^
l5eedh:
ld a,(hl) ;5eed 7e ~
sub e ;5eee 93 .
inc hl ;5eef 23 #
ld a,(hl) ;5ef0 7e ~
sbc a,d ;5ef1 9a .
l5ef2h:
jp m,branch_pfa_first ;5ef2 fa a3 5e . . ^
inc hl ;5ef5 23 #
ld (return_pointer_value),hl ;5ef6 22 68 5e " h ^
inc bc ;5ef9 03 .
inc bc ;5efa 03 .
jp next ;5efb c3 6c 5e . l ^
; BLOCK 'paren_plus_loop_nfa' (start 0x5efe end 0x5f06)
paren_plus_loop_nfa_first:
defb 087h ;5efe 87 .
defb 028h ;5eff 28 (
defb 02bh ;5f00 2b +
defb 04ch ;5f01 4c L
defb 04fh ;5f02 4f O
defb 04fh ;5f03 4f O
defb 050h ;5f04 50 P
paren_plus_loop_nfa_last:
defb 0a9h ;5f05 a9 .
; BLOCK 'paren_plus_loop_lfa' (start 0x5f06 end 0x5f08)
paren_plus_loop_lfa_first:
defw paren_loop_nfa_first ;5f06 c5 5e . ^
; BLOCK 'paren_plus_loop_cfa' (start 0x5f08 end 0x5f0a)
paren_plus_loop_cfa_first:
defw paren_plus_loop_pfa_first ;5f08 0a 5f . _
; BLOCK 'paren_plus_loop_pfa' (start 0x5f0a end 0x5f0d)
paren_plus_loop_pfa_first:
pop de ;5f0a d1 .
jr l5ed3h ;5f0b 18 c6 . .
; BLOCK 'paren_do_nfa' (start 0x5f0d end 0x5f12)
paren_do_nfa_first:
defb 084h ;5f0d 84 .
defb 028h ;5f0e 28 (
defb 044h ;5f0f 44 D
defb 04fh ;5f10 4f O
paren_do_nfa_last:
defb 0a9h ;5f11 a9 .
; BLOCK 'paren_do_lfa' (start 0x5f12 end 0x5f14)
paren_do_lfa_first:
defw paren_plus_loop_nfa_first ;5f12 fe 5e . ^
; BLOCK 'paren_do_cfa' (start 0x5f14 end 0x5f16)
paren_do_cfa_first:
defw paren_do_pfa_first ;5f14 16 5f . _
; BLOCK 'paren_do_pfa' (start 0x5f16 end 0x5f2c)
paren_do_pfa_first:
ld hl,(return_pointer_value) ;5f16 2a 68 5e * h ^
dec hl ;5f19 2b +
dec hl ;5f1a 2b +
dec hl ;5f1b 2b +
dec hl ;5f1c 2b +
ld (return_pointer_value),hl ;5f1d 22 68 5e " h ^
pop de ;5f20 d1 .
ld (hl),e ;5f21 73 s
inc hl ;5f22 23 #
ld (hl),d ;5f23 72 r
pop de ;5f24 d1 .
inc hl ;5f25 23 #
ld (hl),e ;5f26 73 s
inc hl ;5f27 23 #
ld (hl),d ;5f28 72 r
jp next ;5f29 c3 6c 5e . l ^
; BLOCK 'i_nfa' (start 0x5f2c end 0x5f2e)
i_nfa_first:
defb 081h ;5f2c 81 .
i_nfa_last:
defb 0c9h ;5f2d c9 .
; BLOCK 'i_lfa' (start 0x5f2e end 0x5f30)
i_lfa_first:
defw paren_do_nfa_first ;5f2e 0d 5f . _
; BLOCK 'i_cfa' (start 0x5f30 end 0x5f32)
i_cfa_first:
defw i_pfa_first ;5f30 32 5f 2 _
; BLOCK 'i_pfa' (start 0x5f32 end 0x5f3c)
i_pfa_first:
ld hl,(return_pointer_value) ;5f32 2a 68 5e * h ^
ld e,(hl) ;5f35 5e ^
inc hl ;5f36 23 #
ld d,(hl) ;5f37 56 V
push de ;5f38 d5 .
jp next ;5f39 c3 6c 5e . l ^
; BLOCK 'digit_nfa' (start 0x5f3c end 0x5f42)
digit_nfa_first:
defb 085h ;5f3c 85 .
defb 044h ;5f3d 44 D
defb 049h ;5f3e 49 I
defb 047h ;5f3f 47 G
defb 049h ;5f40 49 I
digit_nfa_last:
defb 0d4h ;5f41 d4 .
; BLOCK 'digit_lfa' (start 0x5f42 end 0x5f44)
digit_lfa_first:
defw i_nfa_first ;5f42 2c 5f , _
; BLOCK 'digit_cfa' (start 0x5f44 end 0x5f46)
digit_cfa_first:
defw digit_pfa_first ;5f44 46 5f F _
; BLOCK 'digit_pfa' (start 0x5f46 end 0x5f69)
digit_pfa_first:
pop hl ;5f46 e1 .
pop de ;5f47 d1 .
ld a,e ;5f48 7b {
sub 030h ;5f49 d6 30 . 0
jp m,l5f65h ;5f4b fa 65 5f . e _
cp 00ah ;5f4e fe 0a . .
jp m,l5f5ah ;5f50 fa 5a 5f . Z _
sub 007h ;5f53 d6 07 . .
cp 00ah ;5f55 fe 0a . .
jp m,l5f65h ;5f57 fa 65 5f . e _
l5f5ah:
cp l ;5f5a bd .
jp p,l5f65h ;5f5b f2 65 5f . e _
ld e,a ;5f5e 5f _
ld hl,00001h ;5f5f 21 01 00 ! . .
jp pushde ;5f62 c3 6a 5e . j ^
l5f65h:
ld l,h ;5f65 6c l
jp pushhl ;5f66 c3 6b 5e . k ^
; BLOCK 'paren_find_nfa' (start 0x5f69 end 0x5f70)
paren_find_nfa_first:
defb 086h ;5f69 86 .
defb 028h ;5f6a 28 (
defb 046h ;5f6b 46 F
defb 049h ;5f6c 49 I
defb 04eh ;5f6d 4e N
defb 044h ;5f6e 44 D
paren_find_nfa_last:
defb 0a9h ;5f6f a9 .
; BLOCK 'paren_find_lfa' (start 0x5f70 end 0x5f72)
paren_find_lfa_first:
defw digit_nfa_first ;5f70 3c 5f < _
; BLOCK 'paren_find_cfa' (start 0x5f72 end 0x5f74)
paren_find_cfa_first:
defw paren_find_pfa_first ;5f72 74 5f t _
; BLOCK 'paren_find_pfa' (start 0x5f74 end 0x5fb2)
paren_find_pfa_first:
pop de ;5f74 d1 .
l5f75h:
pop hl ;5f75 e1 .
push hl ;5f76 e5 .
ld a,(de) ;5f77 1a .
xor (hl) ;5f78 ae .
and 03fh ;5f79 e6 3f . ?
jr nz,l5f9ch ;5f7b 20 1f .
l5f7dh:
inc hl ;5f7d 23 #
inc de ;5f7e 13 .
ld a,(de) ;5f7f 1a .
xor (hl) ;5f80 ae .
add a,a ;5f81 87 .
jr nz,l5f9ah ;5f82 20 16 .
jr nc,l5f7dh ;5f84 30 f7 0 .
ld hl,00005h ;5f86 21 05 00 ! . .
add hl,de ;5f89 19 .
ex (sp),hl ;5f8a e3 .
l5f8bh:
dec de ;5f8b 1b .
ld a,(de) ;5f8c 1a .
or a ;5f8d b7 .
jp p,l5f8bh ;5f8e f2 8b 5f . . _
ld e,a ;5f91 5f _
ld d,000h ;5f92 16 00 . .
ld hl,00001h ;5f94 21 01 00 ! . .
jp pushde ;5f97 c3 6a 5e . j ^
l5f9ah:
jr c,l5fa2h ;5f9a 38 06 8 .
l5f9ch:
inc de ;5f9c 13 .
ld a,(de) ;5f9d 1a .
or a ;5f9e b7 .
jp p,l5f9ch ;5f9f f2 9c 5f . . _
l5fa2h:
inc de ;5fa2 13 .
ex de,hl ;5fa3 eb .
ld e,(hl) ;5fa4 5e ^
inc hl ;5fa5 23 #
ld d,(hl) ;5fa6 56 V
ld a,d ;5fa7 7a z
or e ;5fa8 b3 .
jr nz,l5f75h ;5fa9 20 ca .
pop hl ;5fab e1 .
ld hl,00000h ;5fac 21 00 00 ! . .
jp pushhl ;5faf c3 6b 5e . k ^
; BLOCK 'enclose_nfa' (start 0x5fb2 end 0x5fba)
enclose_nfa_first:
defb 087h ;5fb2 87 .
defb 045h ;5fb3 45 E
defb 04eh ;5fb4 4e N
defb 043h ;5fb5 43 C
defb 04ch ;5fb6 4c L
defb 04fh ;5fb7 4f O
defb 053h ;5fb8 53 S
enclose_nfa_last:
defb 0c5h ;5fb9 c5 .
; BLOCK 'enclose_lfa' (start 0x5fba end 0x5fbc)
enclose_lfa_first:
defw paren_find_nfa_first ;5fba 69 5f i _
; BLOCK 'enclose_cfa' (start 0x5fbc end 0x5fbe)
enclose_cfa_first:
defw enclose_pfa_first ;5fbc be 5f . _
; BLOCK 'enclose_pfa' (start 0x5fbe end 0x5ff5)
enclose_pfa_first:
pop de ;5fbe d1 .
pop hl ;5fbf e1 .
push hl ;5fc0 e5 .
ld a,e ;5fc1 7b {
ld d,a ;5fc2 57 W
ld e,0ffh ;5fc3 1e ff . .
dec hl ;5fc5 2b +
l5fc6h:
inc hl ;5fc6 23 #
inc e ;5fc7 1c .
cp (hl) ;5fc8 be .
jr z,l5fc6h ;5fc9 28 fb ( .
ld d,000h ;5fcb 16 00 . .
push de ;5fcd d5 .
ld d,a ;5fce 57 W
ld a,(hl) ;5fcf 7e ~
and a ;5fd0 a7 .
jr nz,l5fdch ;5fd1 20 09 .
ld d,000h ;5fd3 16 00 . .
inc e ;5fd5 1c .
push de ;5fd6 d5 .
dec e ;5fd7 1d .
push de ;5fd8 d5 .
jp next ;5fd9 c3 6c 5e . l ^
l5fdch:
ld a,d ;5fdc 7a z
inc hl ;5fdd 23 #
inc e ;5fde 1c .
cp (hl) ;5fdf be .
jr z,l5fedh ;5fe0 28 0b ( .
ld a,(hl) ;5fe2 7e ~
and a ;5fe3 a7 .
jr nz,l5fdch ;5fe4 20 f6 .
ld d,000h ;5fe6 16 00 . .
push de ;5fe8 d5 .
push de ;5fe9 d5 .
jp next ;5fea c3 6c 5e . l ^
l5fedh:
ld d,000h ;5fed 16 00 . .
push de ;5fef d5 .
inc e ;5ff0 1c .
push de ;5ff1 d5 .
jp next ;5ff2 c3 6c 5e . l ^
; BLOCK 'emit_nfa' (start 0x5ff5 end 0x5ffa)
emit_nfa_first:
defb 084h ;5ff5 84 .
defb 045h ;5ff6 45 E
defb 04dh ;5ff7 4d M
defb 049h ;5ff8 49 I
emit_nfa_last:
defb 0d4h ;5ff9 d4 .
; BLOCK 'emit_lfa' (start 0x5ffa end 0x5ffc)
emit_lfa_first:
defw enclose_nfa_first ;5ffa b2 5f . _
; BLOCK 'emit_cfa' (start 0x5ffc end 0x5ffe)
emit_cfa_first:
defw colon_pfa100_first ;5ffc 06 63 . c
; BLOCK 'emit_pfa' (start 0x5ffe end 0x6008)
emit_pfa_first:
defw paren_emit_cfa_first ;5ffe 6e 70 n p
defw one_cfa_first ;6000 8c 63 . c
defw out_cfa_first ;6002 62 64 b d
defw plus_store_cfa_first ;6004 6b 62 k b
defw semicolon_s_cfa_first ;6006 48 61 H a
; BLOCK 'key_nfa' (start 0x6008 end 0x600c)
key_nfa_first:
defb 083h ;6008 83 .
defb 04bh ;6009 4b K
defb 045h ;600a 45 E
key_nfa_last:
defb 0d9h ;600b d9 .
; BLOCK 'key_lfa' (start 0x600c end 0x600e)
key_lfa_first:
defw emit_nfa_first ;600c f5 5f . _
; BLOCK 'key_cfa' (start 0x600e end 0x6010)
key_cfa_first:
defw key_pfa_first ;600e 10 60 . `
; BLOCK 'key_pfa' (start 0x6010 end 0x6013)
key_pfa_first:
jp key_routine ;6010 c3 db 6f . . o
; BLOCK 'question_terminal_nfa' (start 0x6013 end 0x601d)
question_terminal_nfa_first:
defb 089h ;6013 89 .
defb 03fh ;6014 3f ?
defb 054h ;6015 54 T
defb 045h ;6016 45 E
defb 052h ;6017 52 R
defb 04dh ;6018 4d M
defb 049h ;6019 49 I
defb 04eh ;601a 4e N
defb 041h ;601b 41 A
question_terminal_nfa_last:
defb 0cch ;601c cc .
; BLOCK 'question_terminal_lfa' (start 0x601d end 0x601f)
question_terminal_lfa_first:
defw key_nfa_first ;601d 08 60 . `
; BLOCK 'question_terminal_cfa' (start 0x601f end 0x6021)
question_terminal_cfa_first:
defw question_terminal_pfa_first ;601f 21 60 ! `
; BLOCK 'question_terminal_pfa' (start 0x6021 end 0x6027)
question_terminal_pfa_first:
ld hl,00000h ;6021 21 00 00 ! . .
jp question_terminal_routine ;6024 c3 c0 6f . . o
; BLOCK 'cr_nfa' (start 0x6027 end 0x602a)
cr_nfa_first:
defb 082h ;6027 82 .
defb 043h ;6028 43 C
cr_nfa_last:
defb 0d2h ;6029 d2 .
; BLOCK 'cr_lfa' (start 0x602a end 0x602c)
cr_lfa_first:
defw question_terminal_nfa_first ;602a 13 60 . `
; BLOCK 'cr_cfa' (start 0x602c end 0x602e)
cr_cfa_first:
defw cr_pfa_first ;602c 2e 60 . `
; BLOCK 'cr_pfa' (start 0x602e end 0x6031)
cr_pfa_first:
jp cr_routine ;602e c3 93 70 . . p
; BLOCK 'cmove_nfa' (start 0x6031 end 0x6037)
cmove_nfa_first:
defb 085h ;6031 85 .
defb 043h ;6032 43 C
defb 04dh ;6033 4d M
defb 04fh ;6034 4f O
defb 056h ;6035 56 V
cmove_nfa_last:
defb 0c5h ;6036 c5 .
; BLOCK 'cmove_lfa' (start 0x6037 end 0x6039)
cmove_lfa_first:
defw cr_nfa_first ;6037 27 60 ' `
; BLOCK 'cmove_cfa' (start 0x6039 end 0x603b)
cmove_cfa_first:
defw cmove_pfa_first ;6039 3b 60 ; `
; BLOCK 'cmove_pfa' (start 0x603b end 0x604a)
cmove_pfa_first:
ld l,c ;603b 69 i
ld h,b ;603c 60 `
pop bc ;603d c1 .
pop de ;603e d1 .
ex (sp),hl ;603f e3 .
ld a,b ;6040 78 x
or c ;6041 b1 .
jr z,l6046h ;6042 28 02 ( .
ldir ;6044 ed b0 . .
l6046h:
pop bc ;6046 c1 .
jp next ;6047 c3 6c 5e . l ^
; BLOCK 'u_star_nfa' (start 0x604a end 0x604d)
u_star_nfa_first:
defb 082h ;604a 82 .
defb 055h ;604b 55 U
u_star_nfa_last:
defb 0aah ;604c aa .
; BLOCK 'u_star_lfa' (start 0x604d end 0x604f)
u_star_lfa_first:
defw cmove_nfa_first ;604d 31 60 1 `
; BLOCK 'u_star_cfa' (start 0x604f end 0x6051)
u_star_cfa_first:
defw u_star_pfa_first ;604f 51 60 Q `
; BLOCK 'u_star_pfa' (start 0x6051 end 0x607d)
u_star_pfa_first:
pop de ;6051 d1 .
pop hl ;6052 e1 .
push bc ;6053 c5 .
ld b,h ;6054 44 D
ld a,l ;6055 7d }
call sub_606dh ;6056 cd 6d 60 . m `
push hl ;6059 e5 .
ld h,a ;605a 67 g
ld a,b ;605b 78 x
ld b,h ;605c 44 D
call sub_606dh ;605d cd 6d 60 . m `
pop de ;6060 d1 .
ld c,d ;6061 4a J
add hl,bc ;6062 09 .
adc a,000h ;6063 ce 00 . .
ld d,l ;6065 55 U
ld l,h ;6066 6c l
ld h,a ;6067 67 g
pop bc ;6068 c1 .
push de ;6069 d5 .
jp pushhl ;606a c3 6b 5e . k ^
sub_606dh:
ld hl,00000h ;606d 21 00 00 ! . .
ld c,008h ;6070 0e 08 . .
l6072h:
add hl,hl ;6072 29 )
rla ;6073 17 .
jr nc,l6079h ;6074 30 03 0 .
add hl,de ;6076 19 .
adc a,000h ;6077 ce 00 . .
l6079h:
dec c ;6079 0d .
jr nz,l6072h ;607a 20 f6 .
u_star_pfa_last:
ret ;607c c9 .
; BLOCK 'u_slash_mod_nfa' (start 0x607d end 0x6083)
u_slash_mod_nfa_first:
defb 085h ;607d 85 .
defb 055h ;607e 55 U
defb 02fh ;607f 2f /
defb 04dh ;6080 4d M
defb 04fh ;6081 4f O
u_slash_mod_nfa_last:
defb 0c4h ;6082 c4 .
; BLOCK 'u_slash_mod_lfa' (start 0x6083 end 0x6085)
u_slash_mod_lfa_first:
defw u_star_nfa_first ;6083 4a 60 J `
; BLOCK 'u_slash_mod_cfa' (start 0x6085 end 0x6087)
u_slash_mod_cfa_first:
defw u_slash_mod_pfa_first ;6085 87 60 . `
; BLOCK 'u_slash_mod_pfa' (start 0x6087 end 0x60c6)
u_slash_mod_pfa_first:
ld hl,00004h ;6087 21 04 00 ! . .
add hl,sp ;608a 39 9
ld e,(hl) ;608b 5e ^
ld (hl),c ;608c 71 q
inc hl ;608d 23 #
ld d,(hl) ;608e 56 V
ld (hl),b ;608f 70 p
pop bc ;6090 c1 .
pop hl ;6091 e1 .
ld a,l ;6092 7d }
sub c ;6093 91 .
ld a,h ;6094 7c |
sbc a,b ;6095 98 .
jr c,l60a0h ;6096 38 08 8 .
ld hl,0ffffh ;6098 21 ff ff ! . .
ld de,0ffffh ;609b 11 ff ff . . .
jr l60c0h ;609e 18 20 .
l60a0h:
ld a,010h ;60a0 3e 10 > .
l60a2h:
add hl,hl ;60a2 29 )
rla ;60a3 17 .
ex de,hl ;60a4 eb .
add hl,hl ;60a5 29 )
jr nc,l60aah ;60a6 30 02 0 .
inc de ;60a8 13 .
and a ;60a9 a7 .
l60aah:
ex de,hl ;60aa eb .
rra ;60ab 1f .
push af ;60ac f5 .
jr nc,l60b4h ;60ad 30 05 0 .
and l ;60af a5 .
sbc hl,bc ;60b0 ed 42 . B
jr l60bbh ;60b2 18 07 . .
l60b4h:
and a ;60b4 a7 .
sbc hl,bc ;60b5 ed 42 . B
jr nc,l60bbh ;60b7 30 02 0 .
add hl,bc ;60b9 09 .
dec de ;60ba 1b .
l60bbh:
inc de ;60bb 13 .
pop af ;60bc f1 .
dec a ;60bd 3d =
jr nz,l60a2h ;60be 20 e2 .
l60c0h:
pop bc ;60c0 c1 .
push hl ;60c1 e5 .
push de ;60c2 d5 .
jp next ;60c3 c3 6c 5e . l ^
; BLOCK 'and_nfa' (start 0x60c6 end 0x60ca)
and_nfa_first:
defb 083h ;60c6 83 .
defb 041h ;60c7 41 A
defb 04eh ;60c8 4e N
and_nfa_last:
defb 0c4h ;60c9 c4 .
; BLOCK 'and_lfa' (start 0x60ca end 0x60cc)
and_lfa_first:
defw u_slash_mod_nfa_first ;60ca 7d 60 } `
; BLOCK 'and_cfa' (start 0x60cc end 0x60ce)
and_cfa_first:
defw and_pfa_first ;60cc ce 60 . `
; BLOCK 'and_pfa' (start 0x60ce end 0x60d9)
and_pfa_first:
pop de ;60ce d1 .
pop hl ;60cf e1 .
ld a,e ;60d0 7b {
and l ;60d1 a5 .
ld l,a ;60d2 6f o
ld a,d ;60d3 7a z
and h ;60d4 a4 .
ld h,a ;60d5 67 g
jp pushhl ;60d6 c3 6b 5e . k ^
; BLOCK 'or_nfa' (start 0x60d9 end 0x60dc)
or_nfa_first:
defb 082h ;60d9 82 .
defb 04fh ;60da 4f O
or_nfa_last:
defb 0d2h ;60db d2 .
; BLOCK 'or_lfa' (start 0x60dc end 0x60de)
or_lfa_first:
defw and_nfa_first ;60dc c6 60 . `
; BLOCK 'or_cfa' (start 0x60de end 0x60e0)
or_cfa_first:
defw or_pfa_first ;60de e0 60 . `
; BLOCK 'or_pfa' (start 0x60e0 end 0x60eb)
or_pfa_first:
pop de ;60e0 d1 .
pop hl ;60e1 e1 .
ld a,e ;60e2 7b {
or l ;60e3 b5 .
ld l,a ;60e4 6f o
ld a,d ;60e5 7a z
or h ;60e6 b4 .
ld h,a ;60e7 67 g
jp pushhl ;60e8 c3 6b 5e . k ^
; BLOCK 'xor_nfa' (start 0x60eb end 0x60ef)
xor_nfa_first:
defb 083h ;60eb 83 .
defb 058h ;60ec 58 X
defb 04fh ;60ed 4f O
xor_nfa_last:
defb 0d2h ;60ee d2 .
; BLOCK 'xor_lfa' (start 0x60ef end 0x60f1)
xor_lfa_first:
defw or_nfa_first ;60ef d9 60 . `
; BLOCK 'xor_cfa' (start 0x60f1 end 0x60f3)
xor_cfa_first:
defw xor_pfa_first ;60f1 f3 60 . `
; BLOCK 'xor_pfa' (start 0x60f3 end 0x60fe)
xor_pfa_first:
pop de ;60f3 d1 .
pop hl ;60f4 e1 .
ld a,e ;60f5 7b {
xor l ;60f6 ad .
ld l,a ;60f7 6f o
ld a,d ;60f8 7a z
xor h ;60f9 ac .
ld h,a ;60fa 67 g
jp pushhl ;60fb c3 6b 5e . k ^
; BLOCK 'sp_fetch_nfa' (start 0x60fe end 0x6102)
sp_fetch_nfa_first:
defb 083h ;60fe 83 .
defb 053h ;60ff 53 S
defb 050h ;6100 50 P
sp_fetch_nfa_last:
defb 0c0h ;6101 c0 .
; BLOCK 'sp_fetch_lfa' (start 0x6102 end 0x6104)
sp_fetch_lfa_first:
defw xor_nfa_first ;6102 eb 60 . `
; BLOCK 'sp_fetch_cfa' (start 0x6104 end 0x6106)
sp_fetch_cfa_first:
defw sp_fetch_pfa_first ;6104 06 61 . a
; BLOCK 'sp_fetch_pfa' (start 0x6106 end 0x610d)
sp_fetch_pfa_first:
ld hl,00000h ;6106 21 00 00 ! . .
add hl,sp ;6109 39 9
jp pushhl ;610a c3 6b 5e . k ^
; BLOCK 'sp_store_nfa' (start 0x610d end 0x6111)
sp_store_nfa_first:
defb 083h ;610d 83 .
defb 053h ;610e 53 S
defb 050h ;610f 50 P
sp_store_nfa_last:
defb 0a1h ;6110 a1 .
; BLOCK 'sp_store_lfa' (start 0x6111 end 0x6113)
sp_store_lfa_first:
defw sp_fetch_nfa_first ;6111 fe 60 . `
; BLOCK 'sp_store_cfa' (start 0x6113 end 0x6115)
sp_store_cfa_first:
defw sp_store_pfa_first ;6113 15 61 . a
; BLOCK 'sp_store_pfa' (start 0x6115 end 0x6120)
sp_store_pfa_first:
ld e,(ix+006h) ;6115 dd 5e 06 . ^ .
ld d,(ix+007h) ;6118 dd 56 07 . V .
ex de,hl ;611b eb .
ld sp,hl ;611c f9 .
jp next ;611d c3 6c 5e . l ^
; BLOCK 'rp_fetch_nfa' (start 0x6120 end 0x6124)
rp_fetch_nfa_first:
defb 083h ;6120 83 .
defb 052h ;6121 52 R
defb 050h ;6122 50 P
rp_fetch_nfa_last:
defb 0c0h ;6123 c0 .
; BLOCK 'rp_fetch_lfa' (start 0x6124 end 0x6126)
rp_fetch_lfa_first:
defw sp_store_nfa_first ;6124 0d 61 . a
; BLOCK 'rp_fetch_cfa' (start 0x6126 end 0x6128)
rp_fetch_cfa_first:
defw rp_fetch_pfa_first ;6126 28 61 ( a
; BLOCK 'rp_fetch_pfa' (start 0x6128 end 0x612e)
rp_fetch_pfa_first:
ld hl,(return_pointer_value) ;6128 2a 68 5e * h ^
jp pushhl ;612b c3 6b 5e . k ^
; BLOCK 'rp_store_nfa' (start 0x612e end 0x6132)
rp_store_nfa_first:
defb 083h ;612e 83 .
defb 052h ;612f 52 R
defb 050h ;6130 50 P
rp_store_nfa_last:
defb 0a1h ;6131 a1 .
; BLOCK 'rp_store_lfa' (start 0x6132 end 0x6134)
rp_store_lfa_first:
defw rp_fetch_nfa_first ;6132 20 61 a
; BLOCK 'rp_store_cfa' (start 0x6134 end 0x6136)
rp_store_cfa_first:
defw rp_store_pfa_first ;6134 36 61 6 a
; BLOCK 'rp_store_pfa' (start 0x6136 end 0x6143)
rp_store_pfa_first: