~rabbits/drifblim

14fac93babbfeb6d6af8722bd9a1c3ea59324e73 — Devine Lu Linvega 2 months ago c915d19
Routing all symbol types
1 files changed, 38 insertions(+), 36 deletions(-)

M src/symbols.tal
M src/symbols.tal => src/symbols.tal +38 -36
@@ 73,56 73,49 @@ JMP2r
@|library )

@library
&do-padabs JMP2r
&do-padrel JMP2r
&do-toplab JMP2r
&do-sublab JMP2r
&do-litrel JMP2r
&do-rawrel JMP2r
&do-litzep JMP2r
&do-rawzep JMP2r
&do-litabs JMP2r
&do-rawabs JMP2r
&do-litjmi JMP2r
&do-litjci JMP2r
&do-ignore JMP2r
&do-lithex JMP2r
&do-rawstr JMP2r
&do-inc JMP2r
&do-padabs ;pstr JSR2 #0a18 DEO JMP2r
&do-padrel ;pstr JSR2 #0a18 DEO JMP2r
&do-toplab ;pstr JSR2 #0a18 DEO JMP2r
&do-sublab ;pstr JSR2 #0a18 DEO JMP2r
&do-litrel ;pstr JSR2 #0a18 DEO JMP2r
&do-rawrel ;pstr JSR2 #0a18 DEO JMP2r
&do-litzep ;pstr JSR2 #0a18 DEO ;pstr JSR2 #0a18 DEO JMP2r
&do-rawzep ;pstr JSR2 #0a18 DEO JMP2r
&do-litabs ;pstr JSR2 #0a18 DEO JMP2r
&do-rawabs ;pstr JSR2 #0a18 DEO JMP2r
&do-litjmi ;pstr JSR2 #0a18 DEO JMP2r
&do-litjci ;pstr JSR2 #0a18 DEO JMP2r
&do-ignore ;pstr JSR2 #0a18 DEO JMP2r
&do-lithex ;pstr JSR2 #0a18 DEO JMP2r
&do-rawstr ;pstr JSR2 #0a18 DEO JMP2r
&do-inc ;pstr JSR2 #0a18 DEO JMP2r
( non runic )
&do-hex JMP2r
&do-opc JMP2r
&do-jsi JMP2r
&do-rawhex ;pstr JSR2 #0a18 DEO JMP2r
&do-opcode ;pstr JSR2 #0a18 DEO JMP2r
&do-jsi ;pstr JSR2 #0a18 DEO JMP2r

(
@|handler )

@get-type ( token* -- type* )
@symbolize ( t* -- )

	LDAk ,&rune STR
	( runes )
	;runes/err ;runes
	&l
		LDAk [ LIT &rune $1 ] EQU ,&on-runic JCN
		LDAk [ LIT &rune $1 ] NEQ ,&no-runic JCN
			NIP2 INC2 LDA2 JMP2
			&no-runic
		#0003 ADD2 GTH2k ,&l JCN
	POP2 POP2
	( non-runic )

	POP2 #0000

JMP2r
	&on-runic ( token* -- )
		POP2 POP2 POP2 #000a
	JMP2r

@symbolize ( t* -- )

	DUP2 ;pstr JSR2 #2018 DEO
		;get-type JSR2 ;phex JSR2 #0a18 DEO
	DUP2 ;is-hex JSR2 ;library/do-rawhex JCN2
	DUP2 ;is-opcode JSR2 ;library/do-opcode JCN2
	( jsi )
	;library/do-jsi JSR2

JMP2r


@write ( byte -- )

	;phex/b JSR2 #0a18 DEO


@@ 180,11 173,20 @@ JMP2r
	&l3 POP2 #0003
		&move .program/ptr LDZ2 ADD2 .program/ptr STZ2 JMP2r



(
@helpers )

@is-hex ( str* -- flag )

	&w
		LDAk ;chex JSR2 INC ,&valid JCN
			POP2 #00 JMP2r &valid
		INC2 LDAk ,&w JCN
	POP2
	#01

JMP2r

@is-opcode ( string* -- flag )

	DUP2 ;opcodes/brk ;scmp3 JSR2 ,find-opcode/on-brk JCN