~rabbits/drifblim

9d16b776a80291b63ce7d500c5ae28c890e658d3 — Devine Lu Linvega 2 months ago 50ee8d4
Abstracted get-hex
2 files changed, 15 insertions(+), 7 deletions(-)

M build.sh
M src/drifblim.tal
M build.sh => build.sh +2 -2
@@ 19,10 19,10 @@ then
    echo "Installed in $HOME/roms" 
fi

# Running hello.tal
# Running

uxncli bin/drifblim-seed.rom src/drifblim.tal bin/drifblim.rom
uxncli bin/drifblim.rom examples/hello.tal bin/hello.rom
uxncli bin/drifblim.rom examples/error.tal bin/hello.rom
uxncli bin/hello.rom

# Pack

M src/drifblim.tal => src/drifblim.tal +13 -5
@@ 98,8 98,8 @@ JMP2r
JMP2r

@library
&do-padabs INC2 ;shex JSR2 ;set-head JMP2
&do-padrel INC2 ;shex JSR2 ;move-head JMP2
&do-padabs INC2 ;get-hex JSR2 ;set-head JMP2
&do-padrel INC2 ;get-hex JSR2 ;move-head JMP2
&do-toplab INC2 ;set-scope JSR2 ;create-label JMP2
&do-sublab INC2 ;make-sublabel JSR2 ;create-label JMP2
&do-litrel #80 ;write JSR2 


@@ 132,8 132,7 @@ JMP2r

@write-hex ( str* -- )

	DUP2 ;is-hex JSR2 #00 EQU ,&err JCN
	DUP2 ;slen JSR2 OVR2 ;shex JSR2 SWP2 NIP
	DUP2 ;slen JSR2 OVR2 ;get-hex JSR2 SWP2 NIP
	DUP #02 EQU ,&byte JCN
	DUP #04 EQU ,&short JCN
	POP POP2


@@ 166,6 165,15 @@ JMP2

JMP2

@get-hex ( str* -- value* )

	DUP2 ;is-hex JSR2 ,&valid JCN
		;err/number ;crash JMP2
		&valid
	;shex ( .. )

JMP2

@get-rel ( label* -- distance )

	.program/write LDZ #00 EQU ,&fill JCN


@@ 360,9 368,9 @@ JMP2r
@sclr ( str* -- ) LDAk ,&w JCN POP2 JMP2r &w STH2k #00 STH2r STA INC2 LDAk ,&w JCN POP2 JMP2r
@skey ( key buf -- proc ) OVR #21 LTH ,&eval JCN #00 SWP ;sput JSR2 #00 JMP2r &eval POP2 #01 JMP2r
@scmp ( a* b* -- f ) STH2 &l LDAk LDAkr STHr ANDk #00 EQU ,&e JCN NEQk ,&e JCN POP2 INC2 INC2r ,&l JMP &e NIP2 POP2r EQU JMP2r
@scmp3 ( a* b* -- f ) LDA2k ROT2 LDA2k ROT2 EQU2 STH INC2 LDA2 SWP2 INC2 LDA2 EQU2 STHr AND JMP2r
@chex ( c -- val|ff ) LIT "0 SUB DUP #09 GTH JMP JMP2r #27 SUB DUP #0f GTH JMP JMP2r POP #ff JMP2r
@shex ( str* -- val* ) LIT2r 0000 &w LITr 40 SFT2r LITr 00 LDAk ,chex JSR STH ADD2r INC2 LDAk ,&w JCN POP2 STH2r JMP2r
@scmp3 ( a* b* -- f ) LDA2k ROT2 LDA2k ROT2 EQU2 STH INC2 LDA2 SWP2 INC2 LDA2 EQU2 STHr AND JMP2r

@pdec ( short* -- )