| ... | ... |
@@ -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 |