... | ... |
@@ -222,6 +222,7 @@ |
222 | 222 |
;asma-read-buffer DUP2 ;asma-read-buffer/end ROT2 SUB2 ( func* line^ filename* buf* size^ ) |
223 | 223 |
ROT2 ( func* line^ buf* size^ filename* ) |
224 | 224 |
,file-read-chunks JSR |
225 |
+ ;asma-flush-lit JSR2 |
|
225 | 226 |
|
226 | 227 |
asma-IF-ERROR ,&error JCN |
227 | 228 |
|
... | ... |
@@ -294,7 +295,7 @@ |
294 | 295 |
|
295 | 296 |
@asma [ |
296 | 297 |
&pass $1 &state $1 &line $2 &lines $2 &break $1 &eof $1 |
297 |
- &token $2 &orig-token $2 |
|
298 |
+ &token $2 &orig-token $2 &lit $1 &lit-present $1 |
|
298 | 299 |
&addr $2 &written-addr $2 &flush-fn $2 |
299 | 300 |
&src-filename $2 &dest-filename $2 |
300 | 301 |
&error $2 &log-level $1 |
... | ... |
@@ -462,7 +463,32 @@ |
462 | 463 |
,asma-write-byte JSR |
463 | 464 |
,asma-write-byte JMP ( tail call ) |
464 | 465 |
|
466 |
+@asma-write-lit ( byte -- ) |
|
467 |
+ ;asma/lit LDA2 ,&present JCN |
|
468 |
+ POP #01 ;asma/lit STA2 |
|
469 |
+ ;asma/addr LDA2k INC2 SWP2 STA2 |
|
470 |
+ JMP2r |
|
471 |
+ &present |
|
472 |
+ ;asma/addr LDA2k #0001 SUB2 SWP2 STA2 |
|
473 |
+ LIT LIT2 ,asma-write-byte/raw JSR |
|
474 |
+ ,asma-write-byte/raw JSR |
|
475 |
+ ,asma-write-byte/raw JSR |
|
476 |
+ #0000 ;asma/lit STA2 |
|
477 |
+ JMP2r |
|
478 |
+ |
|
479 |
+@asma-flush-lit ( -- ) |
|
480 |
+ ;asma/lit LDA2 ,&present JCN |
|
481 |
+ POP JMP2r |
|
482 |
+ &present |
|
483 |
+ ;asma/addr LDA2k #0001 SUB2 SWP2 STA2 |
|
484 |
+ LIT LIT ,asma-write-byte/raw JSR |
|
485 |
+ ,asma-write-byte/raw JSR |
|
486 |
+ #0000 ;asma/lit STA2 |
|
487 |
+ JMP2r |
|
488 |
+ |
|
465 | 489 |
@asma-write-byte ( byte -- ) |
490 |
+ ,asma-flush-lit JSR |
|
491 |
+ &raw |
|
466 | 492 |
;asma/addr LDA2 ;asma/written-addr LDA2 |
467 | 493 |
LTH2k ,&rewound JCN |
468 | 494 |
&loop |
... | ... |
@@ -574,6 +600,7 @@ |
574 | 600 |
JMP2r |
575 | 601 |
|
576 | 602 |
@asma-label-define |
603 |
+ ;asma-flush-lit JSR2 |
|
577 | 604 |
;asma-trees/labels ,asma-label-helper JSR |
578 | 605 |
,&already-existed JCN |
579 | 606 |
|
... | ... |
@@ -584,6 +611,7 @@ |
584 | 611 |
JMP2r |
585 | 612 |
|
586 | 613 |
@asma-sublabel-define |
614 |
+ ;asma-flush-lit JSR2 |
|
587 | 615 |
;asma-trees/scope LDA2 ,asma-label-helper JSR |
588 | 616 |
POP POP2 |
589 | 617 |
JMP2r |
... | ... |
@@ -659,9 +687,8 @@ |
659 | 687 |
;asma-write-short JMP2 ( tail call ) |
660 | 688 |
|
661 | 689 |
@asma-literal-zero-addr |
662 |
- LIT LIT ;asma-write-byte JSR2 |
|
663 | 690 |
,asma-addr-helper JSR |
664 |
- ;asma-write-byte JSR2 |
|
691 |
+ ;asma-write-lit JSR2 |
|
665 | 692 |
|
666 | 693 |
,¬-zero-page JCN |
667 | 694 |
JMP2r |
... | ... |
@@ -675,8 +702,7 @@ |
675 | 702 |
JMP2r |
676 | 703 |
|
677 | 704 |
@asma-literal-rel-addr |
678 |
- LIT LIT ;asma-write-byte JSR2 |
|
679 |
- ,asma-addr-helper JSR ;asma/addr LDA2 SUB2 #0002 SUB2 |
|
705 |
+ ,asma-addr-helper JSR ;asma/addr LDA2 SUB2 #0003 SUB2 |
|
680 | 706 |
|
681 | 707 |
DUP2 #0080 LTH2 STH |
682 | 708 |
DUP2 #ff7f GTH2 STHr ORA ,&in-bounds JCN |
... | ... |
@@ -686,7 +712,7 @@ |
686 | 712 |
JMP2r |
687 | 713 |
|
688 | 714 |
&in-bounds |
689 |
- ;asma-write-byte JSR2 |
|
715 |
+ ;asma-write-lit JSR2 |
|
690 | 716 |
POP |
691 | 717 |
JMP2r |
692 | 718 |
|
... | ... |
@@ -746,7 +772,9 @@ |
746 | 772 |
JMP2r |
747 | 773 |
|
748 | 774 |
@asma-byte-helper ( dummy value -- ) |
749 |
- LIT LIT ;asma-write-byte JSR2 |
|
775 |
+ ;asma-write-lit JSR2 |
|
776 |
+ POP |
|
777 |
+ JMP2r |
|
750 | 778 |
&raw |
751 | 779 |
;asma-write-byte JSR2 |
752 | 780 |
POP |