immediate instructions

This commit is contained in:
~d6 2025-02-02 23:46:58 -05:00
parent 4c213b2a25
commit 8832be799d
1 changed files with 12 additions and 12 deletions

View File

@ -71,7 +71,7 @@
SWP emit-byte emit-byte JMP2r SWP emit-byte emit-byte JMP2r
@emit-byte ( byte^ -- ) @emit-byte ( byte^ -- )
DUP #04 SFT ,&hex JSR #0f AND ,&hex JMP DUP #04 SFT ,&hex JSR #0f AND !&hex
&hex #30 ADD DUP #39 GTH #27 MUL ADD emit &hex #30 ADD DUP #39 GTH #27 MUL ADD emit
JMP2r JMP2r
@ -83,32 +83,32 @@
sp LIT "n emit LIT "= emit ;stack-pos LDA2 ;stack-bot SUB2 #0004 DIV2 emit-short LIT ": emit sp LIT "n emit LIT "= emit ;stack-pos LDA2 ;stack-bot SUB2 #0004 DIV2 emit-short LIT ": emit
;stack-bot ;stack-bot
&loop &loop
DUP2 ;stack-pos LDA2 LTH2 ,&ok JCN DUP2 ;stack-pos LDA2 LTH2 ?&ok
POP2 nl JMP2r POP2 nl JMP2r
&ok &ok
sp LDA2k emit-short sp LDA2k emit-short
#0002 ADD2 ,&loop JMP #0002 ADD2 !&loop
( emit n bytes from the given address ) ( emit n bytes from the given address )
@emit-n ( addr* count^ -> addr2* ) @emit-n ( addr* count^ -> addr2* )
DUP #00 GTH ( addr count count>0? ) ,&ok JCN ( addr count ) POP nl JMP2r DUP #00 GTH ( addr count count>0? ) ?&ok ( addr count ) POP nl JMP2r
&ok &ok
STH ( addr [count] ) sp LDAk emit-byte INC2 ( addr+1 [count] ) STH ( addr [count] ) sp LDAk emit-byte INC2 ( addr+1 [count] )
STHr #01 SUB ( addr+1 count-1 ) STHr #01 SUB ( addr+1 count-1 )
;emit-n JMP2 !emit-n
( emit the arena, with one line per node ) ( emit the arena, with one line per node )
( parses node type, since node size is dynamic (3-5). ) ( parses node type, since node size is dynamic (3-5). )
@emit-arena ( -> ) @emit-arena ( -> )
;arena-bot ;arena-bot
&loop &loop
DUP2 ;arena-pos LDA2 LTH2 ,&ok JCN POP2 JMP2r DUP2 ;arena-pos LDA2 LTH2 ?&ok POP2 JMP2r
&ok &ok
DUP2 emit-short DUP2 emit-short
LIT ": emit sp LIT ": emit sp
LDAk #01 NEQ ,&!1 JCN #03 emit-n ,&loop JMP LDAk #01 NEQ ?&c1 #03 emit-n !&loop
&!1 LDAk #02 NEQ ,&!2 JCN #03 emit-n ,&loop JMP &c1 LDAk #02 NEQ ?&c2 #03 emit-n !&loop
&!2 LDAk #03 NEQ ,&!3 JCN #04 emit-n ,&loop JMP &c2 LDAk #03 NEQ ?&c3 #04 emit-n !&loop
&!3 LDAk #04 NEQ ,&!4 JCN #05 emit-n ,&loop JMP &c3 LDAk #04 NEQ ?&c4 #05 emit-n !&loop
&!4 LDAk #05 NEQ ,&!5 JCN #05 emit-n ,&loop JMP &c4 LDAk #05 NEQ ?&c5 #05 emit-n !&loop
&!5 ;unknown-node-type errorm &c5 ;unknown-node-type errorm