... | ... |
@@ -520,21 +520,26 @@ |
520 | 520 |
;asma/lit LDA2 ,&present JCN |
521 | 521 |
,asma-flush-held JSR |
522 | 522 |
POP #01 ;asma/lit STA2 |
523 |
- ;asma/addr LDA2k INC2 INC2 SWP2 STA2 |
|
524 |
- JMP2r |
|
523 |
+ #0002 ,asma-advance-addr JMP ( tail call ) |
|
525 | 524 |
&present |
526 |
- ;asma/addr LDA2k #0002 SUB2 SWP2 STA2 |
|
525 |
+ #fffe ,asma-advance-addr JSR |
|
527 | 526 |
LIT LIT2 ,asma-write-byte/raw JSR |
528 | 527 |
,asma-write-byte/raw JSR |
529 | 528 |
,asma-write-byte/raw JSR |
530 | 529 |
#0000 ;asma/lit STA2 |
531 | 530 |
JMP2r |
532 | 531 |
|
532 |
+@asma-advance-addr ( delta* -- ) |
|
533 |
+ ;asma/addr LDA2k ( delta* ptr* value* ) |
|
534 |
+ ROT2 ADD2 ( ptr* new-value* ) |
|
535 |
+ SWP2 STA2 |
|
536 |
+ JMP2r |
|
537 |
+ |
|
533 | 538 |
@asma-flush-held ( -- ) |
534 | 539 |
;asma/lit LDA2 ,&lit-present JCN |
535 | 540 |
POP ,&part2 JMP |
536 | 541 |
&lit-present |
537 |
- ;asma/addr LDA2k #0002 SUB2 SWP2 STA2 |
|
542 |
+ #fffe ,asma-advance-addr JSR |
|
538 | 543 |
LIT LIT ,asma-write-byte/raw JSR |
539 | 544 |
,asma-write-byte/raw JSR |
540 | 545 |
#0000 ;asma/lit STA2 |
... | ... |
@@ -543,7 +548,7 @@ |
543 | 548 |
;asma/jsr LDA DUP ,&jsr-present JCN |
544 | 549 |
POP JMP2r |
545 | 550 |
&jsr-present |
546 |
- ;asma/addr LDA2k #0001 SUB2 SWP2 STA2 |
|
551 |
+ #ffff ,asma-advance-addr JSR |
|
547 | 552 |
,asma-write-byte/raw JSR |
548 | 553 |
#00 ;asma/jsr STA |
549 | 554 |
JMP2r |
... | ... |
@@ -710,24 +715,22 @@ |
710 | 715 |
|
711 | 716 |
@asma-pad-absolute |
712 | 717 |
;asma-flush-held JSR2 |
713 |
- #0000 ,asma-pad-helper JMP |
|
718 |
+ #0000 ;asma/addr STA2 |
|
719 |
+ ,asma-pad-helper JMP |
|
714 | 720 |
|
715 | 721 |
@asma-pad-relative |
716 | 722 |
;asma-flush-held JSR2 |
717 |
- ;asma/addr LDA2 |
|
718 | 723 |
( fall through ) |
719 | 724 |
|
720 |
-@asma-pad-helper ( offset* -- ) |
|
725 |
+@asma-pad-helper ( -- ) |
|
721 | 726 |
#00 ;asma-parse-hex-string JSR2 |
722 | 727 |
,&valid JCN |
723 | 728 |
|
724 | 729 |
;asma-msg-hex ;asma/error STA2 |
725 |
- POP2 |
|
726 | 730 |
JMP2r |
727 | 731 |
|
728 | 732 |
&valid |
729 |
- ADD2 ;asma/addr STA2 |
|
730 |
- JMP2r |
|
733 |
+ ;asma-advance-addr JMP2 ( tail call ) |
|
731 | 734 |
|
732 | 735 |
@asma-raw-char |
733 | 736 |
;asma/token LDA2 LDA |
... | ... |
@@ -869,14 +872,13 @@ |
869 | 872 |
&hold-jsr |
870 | 873 |
;asma-flush-held JSR2 |
871 | 874 |
;asma/jsr STA |
872 |
- ;asma/addr LDA2k INC2 SWP2 STA2 |
|
873 |
- JMP2r |
|
875 |
+ #0001 ;asma-advance-addr JMP2 ( tail call ) |
|
874 | 876 |
|
875 | 877 |
&optimise-jsr-jmp2r |
876 | 878 |
POP |
877 | 879 |
;asma/jsr LDAk #00 SWP2 STA |
878 | 880 |
#e0 AND [ LIT JMP ] ORA |
879 |
- ;asma/addr LDA2k #0001 SUB2 SWP2 STA2 |
|
881 |
+ #ffff ;asma-advance-addr JSR2 |
|
880 | 882 |
,&write-opcode JMP |
881 | 883 |
|
882 | 884 |
¬-opcode |