immediate instructions
This commit is contained in:
parent
4c213b2a25
commit
8832be799d
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue