~rabbits/potato

abc14edbe40290edefee92a89b74b986cf4a7155 — Devine Lu Linvega a month ago bdfb17f
Ported to new metadata specs
4 files changed, 80 insertions(+), 39 deletions(-)

M build.sh
M src/apps.tal
M src/desktop.tal
M src/potato.tal
M build.sh => build.sh +0 -1
@@ 6,7 6,6 @@ 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 src/apps.tal => src/apps.tal +32 -2
@@ 436,7 436,37 @@ JMP2r
	LDA2k #0038 ADD2 .Screen/x DEO2
	INC2k INC2 LDA2 #001c ADD2 .Screen/y DEO2

	;mem-ptr JSR2
	DUP2 #0008 ADD2 LDA2 ;make-src JSR2
		;has-metadata JSR2 ,&valid JCN
	POP2

&valid ( win* -- )

	;load-metadata JSR2

	;metadata/body ;draw-txt JSR2 POP2

	LDA2k #0010 ADD2 .Screen/x DEO2
	INC2k INC2 LDA2 #0020 ADD2 .Screen/y DEO2
	( 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-metaicon JSR2
			&no-pict
		INC2 GTH2k ,&l JCN
	POP2 POP2

	( DUP2 #0008 ADD2 LDA2 ;pstr JSR #0a18 DEO )

	( .File/name DEO2
	#0006 .File/length DEO2
	;metadata/header .File/read DEO2

	 )

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


@@ 448,7 478,7 @@ JMP2r
		LDAk STH
		INC2 LDA2k STHr ;parse-field JSR2
		INC2 INC2 GTH2k ,&l JCN
	POP2 POP2
	POP2 POP2 )
	( win* ) POP2

JMP2r

M src/desktop.tal => src/desktop.tal +4 -13
@@ 367,16 367,7 @@ JMP2

@open-as-meta ( -- )

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

JMP2

&valid ( name* -- )

	POP2 ;open-meta ,open-as JMP
	;open-meta ;open-as JMP2

@open-as-text ( -- )



@@ 396,17 387,17 @@ JMP2

@open-as ( routine* -- )

	,&routine STR2
	;get-sel-file JSR2

	LDAk LIT "- EQU ,&invalid JCN
	LDAk LIT "? EQU ,&invalid JCN

	[ LIT2 &routine $2 ] JSR2
	( run routine ) SWP2 JSR2

	;center-win ( .. )

JMP2
	&invalid #0005 ADD2 ;dict/open SWP2 ;add-err JMP2
	&invalid NIP2 #0005 ADD2 ;dict/open SWP2 ;add-err JMP2

(
@|go )

M src/potato.tal => src/potato.tal +44 -23
@@ 23,6 23,13 @@
( calendar )
@year $2  @month $1

( TODOs:
	> Add window close icons in bar
	> Load app icons from manifest
	> Write welcome message
	> Add clock application
	)

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

	( meta )


@@ 326,7 333,7 @@ JMP2

@open-meta ( file* -- )

	#0005 ADD2 ;app-meta #240a #0010 #0008 ;add-win ( .. )
	#0005 ADD2 ;app-meta #240a #0010 #0034 ;add-win ( .. )

JMP2



@@ 422,10 429,10 @@ JMP2

@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
	


@@ 1155,27 1162,26 @@ JMP2
@draw-txt ( txt* -- end* )

	#01 .Screen/auto DEO
	.Screen/x DEI2 STH2
	.Screen/x DEI2 ,&anchor STR2
	&w
		LDAk #20 LTH ,&no-visible JCN
			LDAk ;draw-chr JSR2
			&no-visible
		LDAk #0a NEQ ,&no-lb JCN
			( TODO: find why this is needed ) DUP POP DUP POP DUP POP
			STH2kr .Screen/x DEO2
			[ LIT2 &anchor $2 ] .Screen/x DEO2
			.Screen/y DEI2k #0008 ADD2 ROT DEO2
			,&continue JMP
			&no-lb
		LDAk #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2
		#0e .Screen/sprite DEO
		&continue
		INC2 LDAk ,&w JCN
	POP2r

JMP2r

@draw-metaicon ( 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
	#85 .Screen/sprite DEOk DEOk DEO


@@ 1417,26 1423,41 @@ JMP2r

@has-metadata ( src* -- bool )

	.Disk/name DEO2
	#0006 .Disk/length DEO2
	;metadata/header .Disk/read DEO2
	.File/name DEO2
	#0006 .File/length DEO2
	;metadata/header .File/read DEO2
	;metadata/deo LDA2 #0637 EQU2

JMP2r

@load-metadata ( addr* -- )
@load-metadata ( -- )

	;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

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

	( body )
	;metadata/body STH2
	&s
		STH2kr
			DUP2 .File/read DEO2
			INC2r LDA ,&s JCN
	POP2r

	( fields )
	;metadata/fields
		DUP2 .File/read DEO2
		LDAk #03 MUL #00 SWP .File/length DEO2
		INC2 .File/read DEO2

JMP2r

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

@save-theme ( -- )