~rabbits/potato

51c82ba8ba6a6f191186f1df37ae5fd4f246321e — Devine Lu Linvega 2 months ago cbb733f
(metadata) Updated to new specs
5 files changed, 79 insertions(+), 43 deletions(-)

M build.sh
M etc/nasu.rom
M src/apps.tal
M src/desktop.tal
M src/potato.tal
M build.sh => build.sh +1 -0
@@ 6,6 6,7 @@ set -o errexit # Exit immediately if a command exits with a non-zero status.
roms_dir=${UXN_ROMS_DIR-"$HOME/roms"}

asm="uxncli $roms_dir/drifblim.rom"
asm="uxnasm"
emu="uxnemu"
lin="uxncli $roms_dir/uxnlin.rom"


M etc/nasu.rom => etc/nasu.rom +0 -0
M src/apps.tal => src/apps.tal +24 -34
@@ 433,44 433,34 @@ JMP2r

&on-draw ( win* -- )

	#0008 ADD2 LDA2 ;make-src JSR2 .Disk/name DEO2

	( read start )
	#0003 .Disk/length DEO2
	;&header .Disk/read DEO2
	( read body )
	;&start LDA2 #0100 SUB2 ;seek JSR2
	#0004 .Disk/length DEO2
	;&end
		DUP2 .Disk/read DEO2
		LDA2 ;&start LDA2 SUB2 .Disk/length DEO2
	LDA2k #0038 ADD2 .Screen/x DEO2
	INC2k INC2 LDA2 #001c ADD2 .Screen/y DEO2

	;mem-ptr JSR2
		DUP2 .Disk/read DEO2
		DUP2 ;load-metadata JSR2
		STH2k ;draw-txt JSR2 INC2
	OVR2 LDA2 #0010 ADD2 .Screen/x DEO2
	OVR2 INC2 INC2 LDA2 #0020 ADD2 .Screen/y DEO2

	;metadata/end LDA2 ;metadata/start LDA2
		SUB2 STH2r ADD2 #0003 SUB2 SWP2
	&l
		LDAk STH
		INC2 LDA2k STHr ;parse-field JSR2
		INC2 INC2 GTH2k ,&l JCN
	POP2 POP2
	( win* ) POP2

	( draw body )
	.Screen/x DEI2 STH2 DUP2r LIT2r 0040 ADD2r
	;draw-lb JSR2
	STH2kr .Screen/x DEO2
	;draw-str JSR2
	#20 ;draw-chr JSR2
	#05 ;draw-chr/color STA
	;draw-str JSR2 ;draw-lb JSR2 ;draw-lb JSR2
	STH2kr .Screen/x DEO2
	#0a ;draw-chr/color STA
	;draw-line JSR2 ;draw-lb JSR2
	STH2r .Screen/x DEO2
	;draw-line JSR2 ;draw-lb JSR2
	POP2
	( draw icon )
	STH2r #0008 SUB2 .Screen/x DEO2
	.Screen/y DEI2k #003a SUB2 ROT DEO2
	;&icon LDA2 #0100 SUB2 ;seek JSR2
	#0200 .Disk/length DEO2
	;mem-ptr JSR2 STH2k .Disk/read DEO2
	#080e #76 STH2r ;draw-pict-small JSR2
JMP2r

@parse-field ( value* key -- )

	DUP #83 NEQ ,&no-icon JCN
		POP #0100 SUB2 ;draw-metaicon JMP2
		&no-icon
	POP POP2

JMP2r
	&header $1 &start $2 &end $2 &icon $2

(
@|text )

M src/desktop.tal => src/desktop.tal +1 -1
@@ 369,7 369,7 @@ JMP2

	( check )
	;get-sel-file JSR2 #0005 ADD2
		DUP2 ;make-src JSR2 ;has-meta JSR2 ,&valid JCN
		DUP2 ;make-src JSR2 ;has-metadata JSR2 ,&valid JCN
		;dict/no-meta SWP2 ;add-err ( .. )

JMP2

M src/potato.tal => src/potato.tal +53 -8
@@ 410,9 410,8 @@ JMP2

@seek ( length* -- )

	.Disk/name DEI2k ROT  DEO2
	#0001 .Disk/length DEO2
	#0000
	.Disk/name DEI2k ROT DEO2
	#0000 INC2k .Disk/length DEO2
	&l
		;&b .Disk/read DEO2
		INC2 GTH2k ,&l JCN


@@ 1141,6 1140,39 @@ JMP2r

JMP2

@draw-txt ( txt* -- end* )

	#01 .Screen/auto DEO
	.Screen/x DEI2 ,&anchor STR2
	&w
		LDAk ;draw-chr JSR2
		LDAk #0a NEQ ,&no-lb JCN
			[ LIT2 &anchor $2 ] ,draw-lb2 JSR
			&no-lb
		INC2 LDAk ,&w JCN

JMP2r

@draw-lb2 ( anchor* -- )

	.Screen/x DEO2
	.Screen/y DEI2k #0008 ADD2 ROT DEO2

JMP2r

@draw-metaicon ( location* -- )

	;seek JSR2
	#0090 .Disk/length DEO2
	;metadata/icon
		DUP2 .Disk/read DEO2
		.Screen/addr DEO2
	#26 .Screen/auto DEO
	#85 .Screen/sprite DEOk DEOk DEO

JMP2r


@clear-screen ( -- )

	#01 .Screen/auto DEO


@@ 1373,16 1405,29 @@ JMP2

JMP2r

@has-meta ( filename* -- bool )
@has-metadata ( src* -- bool )

	.Disk/name DEO2
	#0006 .Disk/length DEO2
	;&b .Disk/read DEO2
	,&litport LDR2 #80f0 EQU2
	,&deo2 LDR #37 EQU AND
	;metadata/header .Disk/read DEO2
	;metadata/deo LDA2 #0637 EQU2

JMP2r
	&b $3 &litport $2 &deo2 $1

@load-metadata ( addr* -- )

	;metadata/start LDA2 #0100 SUB2 ;seek JSR2
	#0002 .Disk/length DEO2
	;metadata/end
		DUP2 .Disk/read DEO2
		LDA2 ;metadata/start LDA2 SUB2 .Disk/length DEO2
	.Disk/read DEO2

JMP2r

@metadata
	&header $1 &start $3 &deo $2 &end $2
	&icon $90

@save-theme ( -- )