~rabbits/potato

bdfb17f27a0ad2efcbb8967583dfc59324b8eb39 — Devine Lu Linvega 2 months ago cad9d54
Ported metadata viewer to latest version
4 files changed, 79 insertions(+), 62 deletions(-)

M etc/meta.tal
M etc/nasu.rom
M src/assets.tal
M src/potato.tal
M etc/meta.tal => etc/meta.tal +60 -62
@@ 3,7 3,7 @@
|00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2
|10 @Console &vector $2 &read $1 &pad $5 &write $1
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
|b0 @Disk &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
|b0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2

|0000



@@ 23,6 23,9 @@

BRK

(
@|vectors )

@await-src ( -> )

	.Console/read DEI .src ;skey JSR2


@@ 47,75 50,73 @@ BRK
&on-metadata ( -> )

	;load-metadata JSR2
	;metadata/body ;pstr JSR2 #0a18 DEO
	;draw-metadata JSR2

BRK

@draw-metadata ( -- )

	#004c .Screen/x DEO2
	#0018 .Screen/y DEO2
	;metadata/body STH2k ;draw-txt JSR2 INC2
	;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

JMP2r
(
@|core )

@parse-field ( value* key -- )
@has-metadata ( src* -- bool )

	DUP #40 NEQ ,&no-spec JCN
		;dict/spec ,&print-field JMP 
		&no-spec
	DUP #41 NEQ ,&no-mask JCN
		;dict/mask ,&print-field JMP
		&no-mask
	DUP #83 NEQ ,&no-icon JCN
		STH DUP2 #0100 SUB2 ;draw-icon JSR2 STHr
		;dict/icon ,&print-field JMP
		&no-icon
	;dict/unknown ,&print-field JMP
	.File/name DEO2
	#0006 .File/length DEO2
	;metadata/header .File/read DEO2
	;metadata/deo LDA2 #0637 EQU2

JMP2r

&print-field ( value* key name* -- )
@load-metadata ( -- )

	;pstr JSR2 LIT "( #18 DEO
	;phex/byte JSR2 LIT ") #18 DEO #2018 DEO
	;phex JSR2 #0a18 DEO
	;metadata/start LDA2 #0100 SUB2 ;seek JSR2

JMP2r
	( version )
	#0001 .File/length DEO2
	;metadata/version .File/read DEO2

@has-metadata ( src* -- bool )
	( body )
	;metadata/body STH2
	&s
		STH2kr
			DUP2 .File/read DEO2
			INC2r LDA ,&s JCN
	POP2r

	.Disk/name DEO2
	#0006 .Disk/length DEO2
	;metadata/header .Disk/read DEO2
	;metadata/deo LDA2 #0637 EQU2
	( fields )
	;metadata/fields
		DUP2 .File/read DEO2
		LDAk #03 MUL #00 SWP .File/length DEO2
		INC2 .File/read DEO2

JMP2r

@load-metadata ( -- )
(
@|drawing )

	;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
	;metadata/body  .Disk/read DEO2
@draw-metadata ( -- )

	#004c .Screen/x DEO2
	#0018 .Screen/y DEO2
	;metadata/body ;draw-txt JSR2 POP2
	( find picture )
	;metadata/fields LDAk LITr 00 STH
	INC2 DUP2 STH2r ADD2 SWP2
	&l
		LDAk #83 NEQ ,&no-pict JCN
			INC2k LDA2 #0100 SUB2 ;draw-icon JSR2
			&no-pict
		INC2 GTH2k ,&l JCN
	POP2 POP2

JMP2r

@draw-icon ( location* -- )

	;seek JSR2
	#0090 .Disk/length DEO2
	#0090 .File/length DEO2
	;metadata/icon
		DUP2 .Disk/read DEO2
		DUP2 .File/read DEO2
		.Screen/addr DEO2
	#26 .Screen/auto DEO
	#001c


@@ 125,19 126,13 @@ JMP2r

JMP2r

@draw-chr ( char -- )

	#20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2
	#03 .Screen/sprite DEO

JMP2r

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

	#01 .Screen/auto DEO
	.Screen/x DEI2 ,&anchor STR2
	&w
		LDAk ,draw-chr JSR
		LDAk #20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2
		#03 .Screen/sprite DEO
		LDAk #0a NEQ ,&no-lb JCN
			[ LIT2 &anchor $2 ] ,draw-lb JSR
			&no-lb


@@ 152,6 147,9 @@ JMP2r

JMP2r

(
@|stdlib )

@phex ( short* -- )

	SWP ,&byte JSR


@@ 162,10 160,10 @@ JMP2r

@seek ( length* -- )

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


@@ 177,13 175,12 @@ JMP2r
@skey ( key buf -- proc ) OVR #21 LTH ,&eval JCN #00 SWP ;sput JSR2 #00 JMP2r &eval POP2 #01 JMP2r
@pstr ( str* -- ) &w LDAk #18 DEO INC2 LDAk ,&w JCN POP2 JMP2r

(
@|assets )

@dict
	&input "Input(.tal): 20 $1
	&empty "Metadata 20 "Missing $1
	&unknown "Unknown $1
	&spec "Spec $1
	&mask "Mask $1
	&icon "Icon $1

@font ( atari8 )
0000 0000 0000 0000 6060 6060 6000 6000


@@ 236,7 233,8 @@ c060 3018 0c06 0300 3c0c 0c0c 0c0c 3c00
0000 60f2 9e0c 0000 3c42 9985 8599 423c

@metadata
	&header $1 &start $3 &deo $2 &end $2
	&header $1 &start $3 &deo $2 &version $1
	&body $100
	&fields $100
	&icon $90


M etc/nasu.rom => etc/nasu.rom +0 -0
M src/assets.tal => src/assets.tal +7 -0
@@ 175,6 175,13 @@ c060 3018 0c06 0300 3c0c 0c0c 0c0c 3c00
	0202 0404 0830 c000
	0000 183c 3c18 0000

@appicon
	0000 0000 0007 0604 0000 0000 070f 0f0e 0000 0000 00ff 0000 0000 0000 ffff ff00
0000 0000 00e0 6020 0000 0000 e0f0 f070 0404 0404 0404 0607 0e0e 0e0e 0e0e 0f0f
0000 0000 0000 00ff 0000 8100 1800 ffff 2020 2020 2020 60e0 7070 7070 7070 f0f0
0007 0507 0100 0000 0f0f 0f0f 0701 0000 00ff faff 0000 0000 ffff ffff ff00 0000
00e0 20e0 8000 0000 f0f0 f0f0 e080 0000

( chr )

@patt-chr

M src/potato.tal => src/potato.tal +12 -0
@@ 25,6 25,9 @@

|0100 ( -> ) @size-system-start

	( meta )
	;meta #06 DEO2

	( theme )
	#500f .System/r DEO2
	#b70f .System/g DEO2


@@ 45,6 48,15 @@

BRK

@meta 00 &body
	( name ) "Potato 0a
	( details ) "An 20 "Operating 20 "System 0a
	( author ) "By 20 "Hundred 20 "Rabbits 0a
	( date ) "Jan 20 "8, 20 "2023 00
	02
		( icon ) 83 =appicon
		( mask ) 41 1705

(
@|memory )