commit 084a0f5ab43d932c4abb0d577c2ac56de27a6e74
parent 24474b6b327104aaedd404ce0ea280ff3860434b
Author: neauoire <aliceffekt@gmail.com>
Date:   Tue, 15 Mar 2022 11:42:17 -0700
(hexdump.tal) Rewrote
Diffstat:
2 files changed, 66 insertions(+), 131 deletions(-)
diff --git a/projects/utils/binstr.tal b/projects/utils/binstr.tal
@@ -1,131 +0,0 @@
-( 
-	converts a binary file to a series of shorts as strings
-	usage: uxncli binstr.rom file.bin )
-
-%+  { ADD }  %-  { SUB }  %*  { MUL }  %/  { DIV }
-%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
-
-%HALT   { #010f DEO }
-
-( devices )
-
-|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
-
-( variables )
-
-|0000
-
-	@length $2
-	@src $30
-
-|0100 ( -> )
-
-	;on-console .Console/vector DEO2
-
-BRK
-
-@on-console ( -> )
-
-	( starting )
-	[ LIT &trap $1 ] ,&started JCN
-		;src #0020 ;mclr JSR2
-		#01 ,&trap STR
-		&started
-	( append )
-	.Console/read DEI #20 < ,&validate JCN
-	;src ;slen JSR2 #0030 == ,&validate JCN
-		;src .Console/read DEI ;sput JSR2 BRK
-		&validate
-	,parse JSR
-	#00 ,&trap STR
-
-BRK
-
-@parse ( -- )
-	
-	( load )
-	;src .File/name DEO2
-	#fff0 ;data -- .File/length DEO2
-	;data .File/read DEO2
-	( save length )
-	.File/success DEI2 .length STZ2
-	( export path )
-	;tal-ext ;src ;scat JSR2
-	( save )
-	;src .File/name DEO2
-	#0001 .File/length DEO2
-	( stream )
-	.length LDZ2 ;data ++ ;data
-	&loop
-		LDAk #04 SFT ,&parse JSR ,&write JSR
-		LDAk #0f AND ,&parse JSR ,&write JSR
-		( formatting )
-		DUP2 ;data --
-		DUP2 #000f AND2 #000f !! ,&no-linebreak JCN 
-			#0a ,&write JSR ,&end JMP &no-linebreak
-		DUP2 #0001 AND2 #0001 !! ,&no-space JCN 
-			#20 ,&write JSR &no-space
-		&end
-		POP2
-		INC2 GTH2k ,&loop JCN
-	POP2 POP2
-	HALT
-
-JMP2r
-	&write ;&b STA ;&b .File/write DEO2 JMP2r
-	&parse DUP #09 GTH ,&above JCN #30 + JMP2r &above #57 + JMP2r
-	&b $1
-
-@tal-ext ".tal $1
-
-@scat ( src* dst* -- )
-
-	DUP2 ,slen JSR ++ ,scpy JSR
-
-JMP2r
-
-@slen ( str* -- len* )
-
-	DUP2 ,scap JSR SWP2 --
-
-JMP2r
-
-@scap ( str* -- end* )
-
-	LDAk #00 ! JMP JMP2r
-	&while 
-		INC2 LDAk ,&while JCN
-
-JMP2r
-
-@scpy ( src* dst* -- )
-	
-	STH2
-	&while
-		LDAk STH2kr STA INC2r
-		INC2 LDAk ,&while JCN
-	POP2
-	#00 STH2r STA
-
-JMP2r
-
-@sput ( str* char -- )
-
-	ROT ROT ,scap JSR STA
-
-JMP2r
-
-@mclr ( addr* len* -- )
-
-	OVR2 ++ SWP2
-	&loop
-		STH2k #00 STH2r STA
-		INC2 GTH2k ,&loop JCN
-	POP2 POP2
-
-JMP2r
-
-@data
diff --git a/projects/utils/hexdump.tal b/projects/utils/hexdump.tal
@@ -0,0 +1,66 @@
+( usage: uxncli hexdump.rom file.bin )
+
+|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 ( -> )
+
+	;on-console .Console/vector DEO2
+
+BRK
+
+@on-console ( -> )
+
+	;src STH2
+	( read input )
+	.Console/read DEI
+	DUP #20 LTH OVR #7f GTH ORA ,&end JCN
+	STH2kr ,slen JSR #003f GTH2 ,&end JCN
+		STH2kr ,scap JSR STA POP2r BRK
+		&end
+	POP
+	STH2r .File/name DEO2
+	#0002 .File/length DEO2
+	LIT2r 0000
+	&stream
+		#0000 ,&buf STR2
+		;&buf
+			DUP2 .File/read DEO2
+			LDA2 ,print JSR #2018 DEO
+		INC2r
+		( linebreak )
+		STH2kr #0007 AND2 ORA ,&no-lb JCN
+			#0a18 DEO
+			&no-lb
+		.File/success DEI2 ORA ,&stream JCN
+	POP2r
+	#010f DEO
+
+BRK
+	&buf $2
+
+@slen ( str* -- len* )
+
+	DUP2 ,scap JSR SWP2 SUB2
+
+JMP2r
+
+@scap ( str* -- end* )
+
+	LDAk #00 NEQ JMP JMP2r
+	&while
+		INC2 LDAk ,&while JCN
+
+JMP2r
+
+@print ( short* -- )
+
+	&short ( 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