~rabbits/drifblim

3c970c04f6cf382834b9b82299d069f453bb5c41 — neauoire 4 months ago 66c0b04
Minified
2 files changed, 52 insertions(+), 8 deletions(-)

A etc/hx.tal
M src/drifblim.tal
A etc/hx.tal => etc/hx.tal +51 -0
@@ 0,0 1,51 @@
( Usage: uxncli bh.rom file.rom )

|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1
|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2

|0000

	@src $40

|0100 ( -> ) ;await-src .Console/vector DEO2 ;dict/input ;pstr JSR2 BRK
@await-src ( -> ) .Console/read DEI .src ;skey JSR2 ,on-ready JCN BRK

@on-ready ( -> )

	#0a18 DEO

	;src .File/name DEO2
	#0002 .File/length DEO2
	LIT2r 0000
	&stream
		#0000 ,&buf STR2
		;&buf .File/read DEO2
		.File/success DEI2 #0000 EQU2 ,&eof JCN
		;&buf LDA2 ,print JSR #2018 DEO
		INC2r
		( linebreak )
		STH2kr #000f AND2 ORA ,&no-lb JCN
			#0a18 DEO &no-lb
		,&stream JMP &eof
	POP2r
	#0a18 DEO
	#010f DEO

BRK
	&buf $2

@skey ( key buf -- proc ) OVR #21 LTH ,&eval JCN #00 SWP ;sput JSR2 #00 JMP2r &eval POP2 #01 JMP2r
@scap ( str* -- end* ) LDAk #00 NEQ JMP JMP2r &w INC2 LDAk ,&w JCN JMP2r
@sput ( chr str* -- ) ,scap JSR INC2k #00 ROT ROT STA STA JMP2r
@pstr ( str* -- ) &w LDAk #18 DEO INC2 LDAk ,&w JCN POP2 JMP2r

@print ( short* -- )

	SWP ,&byte JSR
	&byte ( byte -- ) DUP #04 SFT ,&char JSR
	&char ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO

JMP2r

@dict
	&input "Input(.rom): 20 $1

M src/drifblim.tal => src/drifblim.tal +1 -8
@@ 385,6 385,7 @@ BRK
(
@|stdlib )

@chex ( c -- val|ff ) LIT "0 SUB DUP #09 GTH JMP JMP2r #27 SUB DUP #0f GTH JMP JMP2r POP #ff JMP2r
@pstr ( str* -- ) LDAk ,&w JCN POP2 JMP2r &w LDAk #18 DEO INC2 LDAk ,&w JCN POP2 JMP2r
@perr ( src* str* -- ) &w LDAk #19 DEO INC2 LDAk ,&w JCN POP2 JMP2r
@scap ( str* -- end* ) LDAk ,&w JCN JMP2r &w INC2 LDAk ,&w JCN JMP2r


@@ 419,14 420,6 @@ JMP2r

JMP2r

@chex ( c --  )

	LIT "0 SUB DUP #09 GTH JMP JMP2r
	#27 SUB DUP #0f GTH JMP JMP2r
	POP #ff

JMP2r

@pdec ( short* -- )

	#00 ,&z STR