~rabbits/nasu

3065764cde40d57964a8ca5fc48604b29d17b764 — neauoire 1 year, 3 months ago 2a81b58
Cleanup
1 files changed, 166 insertions(+), 166 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +166 -166
@@ 1,4 1,4 @@
( 
(
	app/nasu : spritesheet editor

	arrows - move selection


@@ 67,11 67,11 @@

( defines )

%HOR    { #10 }    %VER    { #10 } 
%HOR    { #10 }    %VER    { #10 }
%LENGTH { #1000 }

( 
	8000-9000 : spritesheet 
(
	8000-9000 : spritesheet
	9000-9100 : tile
	9100-9200 : color )



@@ 122,34 122,34 @@
@state
	&timer $1 &blink $1 &changed $1
@settings
	&depth $1 &color $1 &blend $1 
	&ratio $1 &tool $1 &focus $2 
	&depth $1 &color $1 &blend $1
	&ratio $1 &tool $1 &focus $2
	&zoom $1 &brush $1
@cursor
	&x $2 &y $2 &last $1
@selection 
	&x1 $1 &y1 $1 
	&x2 $1 &y2 $1 
@selection
	&x1 $1 &y1 $1
	&x2 $1 &y2 $1
	&a $1
@path 
@path
	&length $1 &name $20
@frame 
	&x1 $2 &y1 $2 
	&x2 $2 &y2 $2 
@frame
	&x1 $2 &y1 $2
	&x2 $2 &y2 $2
	&width $2 &height $2

( interface ) 
( interface )
@toolview  [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@colorview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@blendview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@dataview  [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@preview   [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@zoomview  [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@tileview  
	&x1 $2 &y1 $2 
@tileview
	&x1 $2 &y1 $2
	&x2 $2 &y2 $2
@nametable
	&x $2 &y $2 
	&x $2 &y $2
	&x2 $2 &y2 $2
@workspace-frame  [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@zoomview-frame  [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]


@@ 158,9 158,9 @@

|0100 ( -> )

	( theme ) 
	#0a6f .System/r DEO2 
	#05cf .System/g DEO2 
	( theme )
	#0a6f .System/r DEO2
	#05cf .System/g DEO2
	#0caf .System/b DEO2

	( size )


@@ 219,18 219,18 @@ BRK
@on-console ( -- )

	#00 ;draw-filepath JSR2
	.Console/read DEI DUP 
	.Console/read DEI DUP
	#0a = ,&counter LDR #20 = #0000 == ,&no-end JCN
		( set length ) ,&counter LDR .path/length STZ
		( null char ) #00 .path ,&counter LDR INC + STZ
		( reset counter ) #00 ,&counter STR 
		( reset counter ) #00 ,&counter STR
		( load ) ;load-file JSR2
		POP BRK
		&no-end
	,&counter LDR 
	,&counter LDR
		( length ) DUP .path/length STZ
		INC 
			( inc counter ) DUP ,&counter STR 
		INC
			( inc counter ) DUP ,&counter STR
			( write ) .path + STZ
	#01 ;draw-filepath JSR2



@@ 243,29 243,29 @@ BRK

@on-frame-trap ( -> )

	.state/timer LDZ INC 
	.state/timer LDZ INC
	DUP 8MOD ,&no-blink JCN
		.state/blink LDZ #00 =
			DUP 8* INC ;draw-filepath JSR2
			.state/blink STZ
		&no-blink
	.state/timer STZ 
	.state/timer STZ

BRK

@on-transfer ( -> )
	

	;redraw JSR2
	

BRK

@on-button ( -> )
	

	.Controller/key DEI .Controller/button DEI ADD BRK?

	.Controller/button DEI #01 AND ;on-control JCN2

	.Controller/key DEI 
	.Controller/key DEI
		#31 !~ ,&no-1 JCN
			( color ) #00 .settings/color STZ ;draw-toolview JSR2 &no-1
		#32 !~ ,&no-2 JCN


@@ 309,7 309,7 @@ BRK
		#01 #00 ;scale-selection JSR2 POP BRK &no-shift-right
	POP

	;redraw JSR2 
	;redraw JSR2

BRK



@@ 322,28 322,28 @@ BRK
		HOR #01 - .selection/x2 STZ
		VER #01 - .selection/y2 STZ
		;clamp-selection JSR2
		;redraw JSR2 POP BRK 
		;redraw JSR2 POP BRK
		&no-expand
	DUP [ LIT 'c ] ! ,&no-copy JCN
		;copy-snarf JSR2 
		;redraw JSR2 POP BRK 
		;copy-snarf JSR2
		;redraw JSR2 POP BRK
		&no-copy
	DUP [ LIT 'v ] ! ,&no-paste JCN
		;paste-snarf JSR2 RESET-SELECTION
		;redraw JSR2 POP BRK 
		;redraw JSR2 POP BRK
		&no-paste
	DUP [ LIT 'x ] ! ,&no-cut JCN
		;copy-snarf JSR2 ;op-erase ;run-selection JSR2 RESET-SELECTION
		;redraw JSR2 POP BRK 
		;redraw JSR2 POP BRK
		&no-cut
	DUP [ LIT 'r ] ! ,&no-name JCN
		#00 ;draw-filepath JSR2 
		#00 ;draw-filepath JSR2
		;on-frame-trap .Screen/vector DEO2
		;on-button-trap .Controller/vector DEO2
		POP BRK
		&no-name
	DUP [ LIT 'R ] ! ,&no-rename JCN
		#00 ;draw-filepath JSR2 
		#00 ;draw-filepath JSR2
		#00 .Controller/key DEO
		#00 .path/length STZ
		#0000 .path/name STZ2


@@ 359,10 359,10 @@ BRK
		;load-file JSR2
		POP BRK &no-open
	DUP [ LIT 's ] ! ,&no-save JCN
		;save-file JSR2 
		;save-file JSR2
		;save-theme JSR2
		;draw-state JSR2 POP BRK  &no-save
	POP 
	POP

BRK



@@ 382,7 382,7 @@ BRK
	DUP ( special ) #20 > ,&no-edit-enter JCN
		;on-frame .Screen/vector DEO2
		;on-button .Controller/vector DEO2
		#00 .state/blink STZ 
		#00 .state/blink STZ
		#01 ;draw-filepath JSR2 POP BRK
		&no-edit-enter
	( clamp ) .path/length LDZ #1f = ,&edit-end JCN


@@ 396,7 396,7 @@ BRK
BRK

@on-mouse ( -> )
	

	;draw-cursor JSR2

	.Mouse/x DEI2 .Mouse/y DEI2 .tileview ;within-rect JSR2


@@ 419,14 419,14 @@ BRK
BRK

@on-touch-tileview ( -> )
	

	.settings/zoom LDZ #01 = ;&zoomed JCN2
	.settings/tool LDZ #01 = ;&select JCN2

	( skip ) .Mouse/state DEI #00 ! BRK?

	.Mouse/x DEI2 .tileview/x1 LDZ2 -- 
	.Mouse/y DEI2 .tileview/y1 LDZ2 -- 
	.Mouse/x DEI2 .tileview/x1 LDZ2 --
	.Mouse/y DEI2 .tileview/y1 LDZ2 --

	.settings/tool LDZ .Mouse/state DEI
	DUP2 #0001 !! ,&no-brush-mouse1 JCN ( brush default )


@@ 460,17 460,17 @@ BRK

	&select ( -> )

		.Mouse/state DEI DUP .cursor/last LDZ 
		.Mouse/state DEI DUP .cursor/last LDZ
			DUP2 #0000 == ,&end JCN
			DUP2 #0100 !! ,&no-down JCN
				.Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// NIP 
				.Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// NIP
					DUP .selection/x1 STZ .selection/x2 STZ
				.Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP 
				.Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP
					DUP .selection/y1 STZ .selection/y2 STZ
				;clamp-selection JSR2 
				;clamp-selection JSR2
				.selection LDZ2 ;select JSR2
				;redraw JSR2
				,&end JMP 
				,&end JMP
				&no-down
			( release )
			.Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// NIP .selection/x2 STZ


@@ 486,13 486,13 @@ BRK

		( skip ) .Mouse/state DEI #00 ! BRK?

		.Mouse/x DEI2 .tileview/x1 LDZ2 -- 
		.Mouse/y DEI2 .tileview/y1 LDZ2 -- 
		.Mouse/x DEI2 .tileview/x1 LDZ2 --
		.Mouse/y DEI2 .tileview/y1 LDZ2 --
		8// SWP2 8// SWP2
		GET-POSITION ADD-POSITIONS
		#00 .Mouse/state DEI #10 = ,&do-erase-zoom JCN 
			POP .settings/color LDZ 
			&do-erase-zoom 
		#00 .Mouse/state DEI #10 = ,&do-erase-zoom JCN
			POP .settings/color LDZ
			&do-erase-zoom
		;put-pixel JSR2
		SET-STATE
		;redraw JSR2


@@ 504,24 504,24 @@ BRK
	( skip ) .Mouse/state DEI #00 ! BRK?

	( get touch tile )
	.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10** 
	.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10**
	.Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++ STH2

	( look for changes )
	STH2kr BANK-NAMETABLE ++ LDA
	.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP 
	.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
	STH2kr BANK-COLOR ++ LDA
	.settings/blend LDZ 
	.settings/blend LDZ
		!! ,&continue JCN
			POP2r BRK 
			POP2r BRK
			&continue

	( set sprite )
	.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP 
	.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
		STH2kr BANK-NAMETABLE ++ STA

	( set color ) 
	.settings/blend LDZ 
	( set color )
	.settings/blend LDZ
		STH2r BANK-COLOR ++ STA

	;draw-nametable JSR2


@@ 531,9 531,9 @@ BRK
BRK

@on-touch-toolview ( -> )
	

	( skip ) .Mouse/state DEI #00 ! BRK?
	

	.Mouse/x DEI2 .toolview/x1 LDZ2 -- 8// NIP
	DUP #1f ! ,&no-save JCN
		;save-file JSR2


@@ 552,12 552,12 @@ BRK
		&no-name
	DUP #04 ! ,&no-brush JCN
		#00 .settings/tool STZ
		;draw-toolview JSR2 
		;draw-toolview JSR2
		POP RELEASE-MOUSE BRK
		&no-brush
	DUP #05 ! ,&no-selector JCN
		#01 .settings/tool STZ
		;draw-toolview JSR2 
		;draw-toolview JSR2
		POP RELEASE-MOUSE BRK
		&no-selector
	DUP #06 ! ,&no-zoom JCN


@@ 568,17 568,17 @@ BRK
	INCk .settings/color LDZ ! ,&no-eraser JCN
		#00 .settings/color STZ
		;draw-colorview JSR2
		;draw-toolview JSR2 
		;draw-toolview JSR2
		POP RELEASE-MOUSE BRK
		&no-eraser
	DUP #02 > ,&no-color JCN
		INCk .settings/color STZ
		;draw-colorview JSR2
		;draw-toolview JSR2 
		;draw-toolview JSR2
		POP RELEASE-MOUSE BRK
		&no-color
	DUP #08 < ,&no-rename JCN
		#00 ;draw-filepath JSR2 
		#00 ;draw-filepath JSR2
		;on-frame-trap .Screen/vector DEO2
		;on-button-trap .Controller/vector DEO2
		POP RELEASE-MOUSE BRK


@@ 591,9 591,9 @@ BRK
@on-touch-zoomview ( -> )

	( skip ) .Mouse/state DEI #00 ! BRK?
	

	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- 8// NIP #04 ! ;&no-mod JCN2
		.Mouse/x DEI2 .zoomview/x1 LDZ2 -- 8// NIP 
		.Mouse/x DEI2 .zoomview/x1 LDZ2 -- 8// NIP
		DUP #00 = .Mouse/state DEI #01 = #0101 !! ,&no-shiftup JCN
			;op-shift-tile-up ;run-selection JSR2
			SET-STATE &no-shiftup


@@ 613,15 613,15 @@ BRK

	( paint )
	.Mouse/x DEI2 .zoomview/x1 LDZ2 -- 4//
	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- 4// 
	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- 4//
	.settings/focus LDZ2 ++
	( detect erase )
	#00 .Mouse/state DEI #10 = ,&do-erase JCN 
		POP .settings/color LDZ &do-erase 
	#00 .Mouse/state DEI #10 = ,&do-erase JCN
		POP .settings/color LDZ &do-erase
	STH
	OVR2 OVR2
		STHkr #00 ;toggle-pixel JSR2
	#0008 ++ 
	#0008 ++
		STHr #01 ;toggle-pixel JSR2
	SET-STATE



@@ 649,41 649,41 @@ BRK
	POP
	;draw-blendview JSR2
	;draw-preview JSR2
	RELEASE-MOUSE 
	RELEASE-MOUSE

BRK

@on-touch-colorview ( -> )

	( skip ) .Mouse/state DEI #00 ! BRK?
	

	.Mouse/y DEI2 .colorview/y1 LDZ2 -- 8// NIP

	DUP #00 ! ,&no-r JCN
		.System/r STHk ,&set-color JSR 
		.System/r STHk ,&set-color JSR
		STHr [ .settings/color LDZ 2/ + ] DEO
		&no-r
	DUP #01 ! ,&no-g JCN
		.System/g STHk ,&set-color JSR 
		.System/g STHk ,&set-color JSR
		STHr [ .settings/color LDZ 2/ + ] DEO
		&no-g
	DUP #02 ! ,&no-b JCN
		.System/b STHk ,&set-color JSR 
		.System/b STHk ,&set-color JSR
		STHr [ .settings/color LDZ 2/ + ] DEO
		&no-b
	POP

	;redraw JSR2 
	;redraw JSR2

	BRK

	&set-color
		.settings/color LDZ STHk 2/ + DEI 
		STHr 2MOD STHk 
		#0f SWP [ 40* SFT ] AND 
		STHr #00 = 
		.Mouse/x DEI2 .colorview/x1 LDZ2 -- 2// NIP 
		( clamp to #0f ) DUP #10 = - 
		.settings/color LDZ STHk 2/ + DEI
		STHr 2MOD STHk
		#0f SWP [ 40* SFT ] AND
		STHr #00 =
		.Mouse/x DEI2 .colorview/x1 LDZ2 -- 2// NIP
		( clamp to #0f ) DUP #10 = -
		SWP [ 40* SFT ] +
	RTN



@@ 709,7 709,7 @@ BRK

@select ( x y -- )

	DUP2 
	DUP2
		GET-ADDR .settings/focus STZ2
		#40 SFT + .selection/a STZ



@@ 732,7 732,7 @@ RTN
		&no-y
	( focus )
	.selection LDZ2 ;select JSR2
	

	;redraw JSR2

RTN


@@ 756,7 756,7 @@ RTN
RTN

@run-selection ( op* -- )
	

	STH2
	.selection/y2 LDZ INC .selection/y1 LDZ
	&ver


@@ 772,7 772,7 @@ RTN
RTN

@op-erase ( addr* -- )
	

	STH2
	#10 #00
	&loop


@@ 785,7 785,7 @@ RTN
RTN

@clamp-selection ( -- )
	

	.selection/x1 LDZ HOR #01 - STHk < ,&ok-limitx1 JCN
		STHkr .selection/x1 STZ &ok-limitx1 POPr
	.selection/y1 LDZ VER #01 - STHk < ,&ok-limity1 JCN


@@ 818,11 818,11 @@ RTN
		INC2 GTH2k ,&ch2 JCN
	POP2
	( cap ) STHr ROT ROT STA
	

RTN

@op-shift-tile-down ( addr* -- )
		

	DUP2
	DUP2 #0007 ++ LDAk STH
	&ch1


@@ 842,7 842,7 @@ RTN
RTN

@op-shift-tile-left ( addr* -- )
	

	STH2
	#08 #00
	&loop


@@ 859,7 859,7 @@ RTN
RTN

@op-shift-tile-right ( addr* -- )
	

	STH2
	#08 #00
	&loop


@@ 876,7 876,7 @@ RTN
RTN

@clear ( addr* length* -- )
	

	OVR2 ++ SWP2
	&loop
		DUP2 #00 ROT ROT STA


@@ 886,8 886,8 @@ RTN
RTN

@redraw ( -- )
	
	;draw-toolview JSR2 

	;draw-toolview JSR2
	;draw-blendview JSR2
	;draw-colorview JSR2
	;draw-dataview JSR2


@@ 906,7 906,7 @@ RTN
	OVR .selection/x2 LDZ > ,&end JCN
	DUP .selection/y1 LDZ < ,&end JCN
	DUP .selection/y2 LDZ > ,&end JCN
		POP2 #01 RTN 
		POP2 #01 RTN
		&end
	POP2 #00



@@ 982,26 982,26 @@ RTN
RTN

@get-pixel ( x* y* -- color )
	

	( channel 1 )
	OVR2 SWP2 ,get-addr JSR [ STH2k ] LDA
	ROT ROT NIP 8MOD [ STHk ]
	#07 SWP - SFT #01 AND
	( channel 2 )
	[ STHr ] [ STH2r ] #0008 ++ LDA SWP 
	[ STHr ] [ STH2r ] #0008 ++ LDA SWP
	#07 SWP - SFT #01 AND
	2* 
	2*
	+

RTN

@get-addr ( x* y* -- addr* )
	

	( get row )
	DUP2 8MOD2 
	DUP2 8MOD2
	( get tile )
	SWP2 8// 100** ++
	SWP2 STEP8 2** ++ 
	SWP2 STEP8 2** ++
	BANK-SPRITESHEET ++

RTN


@@ 1009,22 1009,22 @@ RTN
@put-pixel ( x* y* color -- )

	STH
	OVR2 SWP2 ,get-addr JSR 
	OVR2 SWP2 ,get-addr JSR
	( ch1 )
	OVR2 OVR2
		STHkr #00 ,toggle-pixel JSR
	( ch2 )
	#0008 ++ 
	#0008 ++
		STHr #01 ,toggle-pixel JSR

RTN

@toggle-pixel ( x* addr* color* -- )
	

	STH2
	LDAk
	STH SWP2 NIP
	STHr SWP 
	STHr SWP
	STH2r SFT #01 AND ,&do-set JCN
		( mask ) #01 #07 ROT 8MOD - SFL #ff EOR AND
		( save ) ROT ROT STA


@@ 1036,7 1036,7 @@ RTN
RTN

@get-tile-addr ( x* y* -- addr* )
	

	STEP8 100** 4// SWP2
	STEP8 2** ++
	BANK-SPRITESHEET ++


@@ 1049,7 1049,7 @@ RTN
	#10 #00
	&loop
		( get )
		DUP TOS DUP2 STH2kr ++ LDA 
		DUP TOS DUP2 STH2kr ++ LDA
		( put )
		ROT ROT SWP2r STH2kr SWP2r ++ STA
		INC GTHk ,&loop JCN


@@ 1075,7 1075,7 @@ RTN
			TOS .settings/focus LDZ2 ++ [ STH2k ] LDA
			SWP [ STHk ] #07 SWP - SFT #01 AND
			( ch2 )
			[ STHr ] [ STH2r ] #0008 ++ LDA SWP 
			[ STHr ] [ STH2r ] #0008 ++ LDA SWP
			#07 SWP - SFT #01 AND
			2* +
			.Screen/sprite DEO


@@ 1112,7 1112,7 @@ RTN
			( check if within ratio )
			.settings/ratio LDZ #0f AND < STH
			.settings/ratio LDZ #04 SFT < STHr
			#0101 !! ,&outside JCN 
			#0101 !! ,&outside JCN
				( get tile ) STH2kr .Screen/addr DEO2
				( get blending ) .settings/blend LDZ .Screen/sprite DEO
				( incr ) STH2r #0008 [ .settings/depth LDZ 8* TOS ++ ] ++ STH2


@@ 1135,19 1135,19 @@ RTN
RTN

@draw-colorview ( -- )
	

	.colorview/y2 LDZ2 INC2 .Screen/y DEO2
	.colorview/x1 LDZ2 .Screen/x DEO2
	.System/r GET-COLOR GET-HEX-ADDR 
	.System/r GET-COLOR GET-HEX-ADDR
	#03 .Screen/sprite DEO
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	.System/g GET-COLOR GET-HEX-ADDR 
	.System/g GET-COLOR GET-HEX-ADDR
	#03 .Screen/sprite DEO
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	.System/b GET-COLOR GET-HEX-ADDR 
	.System/b GET-COLOR GET-HEX-ADDR
	#03 .Screen/sprite DEO

	.colorview/x1 LDZ2 .colorview/y1 LDZ2 
	.colorview/x1 LDZ2 .colorview/y1 LDZ2
		[ .System/r GET-COLOR ] ,&slider JSR
	.colorview/x1 LDZ2 .colorview/y1 LDZ2 #0008 ++
		[ .System/g GET-COLOR ] ,&slider JSR


@@ 1205,7 1205,7 @@ RTN
RTN

@draw-dataview ( -- )
	

	( position )
	.dataview/x1 LDZ2 .Screen/x DEO2
	.dataview/y2 LDZ2 INC2 .Screen/y DEO2


@@ 1225,7 1225,7 @@ RTN
RTN

@draw-toolview ( -- )
		

	.toolview/y1 LDZ2 .Screen/y DEO2
	( colors )
	.toolview/x1 LDZ2 STH2k .Screen/x DEO2


@@ 1278,26 1278,26 @@ RTN
RTN

@draw-filepath ( color -- )
	

	STH
	.toolview/x1 LDZ2 #0040 ++ .Screen/x DEO2
	.toolview/y1 LDZ2 .Screen/y DEO2
	;path/name
	&loop
		LDAk DUP #00 ! 20* - TOS 8** ;font ++ .Screen/addr DEO2 
		LDAk DUP #00 ! 20* - TOS 8** ;font ++ .Screen/addr DEO2
		STHkr .Screen/sprite DEO
		.Screen/x DEI2 #0008 ++ .Screen/x DEO2
		INC2
		LDAk #00 ! ,&loop JCN
	POP2
	POPr
	( clear last ) 
	( clear last )
	#00 .Screen/sprite DEO

RTN

@draw-state ( -- )
	

	.toolview/x2 LDZ2 #0008 -- .Screen/x DEO2
	.toolview/y1 LDZ2 .Screen/y DEO2
	;save-icn .Screen/addr DEO2


@@ 1306,7 1306,7 @@ RTN
RTN

@draw-short ( short* color -- )
	

	ROT OVR ,draw-byte JSR
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	,draw-byte JSR


@@ 1314,13 1314,13 @@ RTN
RTN

@draw-byte ( byte color -- )
	
	STH 
	DUP 
		#04 SFT GET-HEX-ADDR 

	STH
	DUP
		#04 SFT GET-HEX-ADDR
		( draw ) STHkr .Screen/sprite DEO
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
		#0f AND GET-HEX-ADDR 
		#0f AND GET-HEX-ADDR
		( draw ) STHr .Screen/sprite DEO

RTN


@@ 1328,18 1328,18 @@ RTN
( file )

@new-file ( default* -- )
	

	BANK-SPRITESHEET LENGTH ;clear JSR2
	BANK-NAMETABLE #0200 ;clear JSR2
	

	STH2
	#0c #00
	&loop
		DUPk TOS STH2kr ++ LDA
		SWP .path/name + STZ
		INC GTHk ,&loop JCN
	( end ) #00 SWP .path/name + STZ 
	.path/length STZ 
	( end ) #00 SWP .path/name + STZ
	.path/length STZ
	POP2r
	RESET-STATE



@@ 1351,13 1351,13 @@ RTN
	BANK-NAMETABLE #0200 ;clear JSR2

	( spritesheet )
	;path/name .File/name DEO2 
	LENGTH .File/length DEO2 
	;path/name .File/name DEO2
	LENGTH .File/length DEO2
	BANK-SPRITESHEET .File/load DEO2

	( nametable )
	;nametable-txt .File/name DEO2 
	#0200 .File/length DEO2 
	;nametable-txt .File/name DEO2
	#0200 .File/length DEO2
	BANK-NAMETABLE .File/load DEO2

	RESET-STATE


@@ 1368,13 1368,13 @@ RTN
@save-file ( -- )

	( spritesheet )
	;path/name .File/name DEO2 
	LENGTH .File/length DEO2 
	;path/name .File/name DEO2
	LENGTH .File/length DEO2
	BANK-SPRITESHEET .File/save DEO2

	( nametable )
	;nametable-txt .File/name DEO2 
	#0200 .File/length DEO2 
	;nametable-txt .File/name DEO2
	#0200 .File/length DEO2
	BANK-NAMETABLE .File/save DEO2

	RESET-STATE


@@ 1387,8 1387,8 @@ RTN

@load-theme ( -- )

	;&path .File/name DEO2 
	#0006 .File/length DEO2 
	;&path .File/name DEO2
	#0006 .File/length DEO2
	#fffa .File/load DEO2
	.File/success DEI2 #0006 !! ,&ignore JCN
		#fffa LDA2 .System/r DEO2


@@ 1405,8 1405,8 @@ RTN
	.System/r DEI2 #fffa STA2
	.System/g DEI2 #fffc STA2
	.System/b DEI2 #fffe STA2
	;load-theme/path .File/name DEO2 
	#0006 .File/length DEO2 
	;load-theme/path .File/name DEO2
	#0006 .File/length DEO2
	#fffa .File/save DEO2

RTN


@@ 1430,8 1430,8 @@ RTN
	POP2
	( close ) #00 STH2kr STA

	;snarf-txt .File/name DEO2 
	STH2r DATA-CLIP -- .File/length DEO2 
	;snarf-txt .File/name DEO2
	STH2r DATA-CLIP -- .File/length DEO2
	DATA-CLIP .File/save DEO2

RTN


@@ 1462,7 1462,7 @@ RTN
( generics )

@within-rect ( x* y* rect -- flag )
	

	STH
	( y < rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN
	( y > rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN


@@ 1470,7 1470,7 @@ RTN
	( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN
	( x > rect.x2 ) DUP2 STHkr #04 ADD LDZ2 GTH2 ,&skip JCN
	POP2 POP2 POPr
	#01 
	#01
RTN
	&skip
	POP2 POP2 POPr


@@ 1485,9 1485,9 @@ RTN
	( y1 ) STHkr #02 + LDZ2 #0001 -- ( flip sign ) GTH2k #01 JCN SWP2
	&ver
		( save ) DUP2 .Screen/y DEO2
		( x1 ) STHkr LDZ2 #0001 -- .Screen/x DEO2 
		( x1 ) STHkr LDZ2 #0001 -- .Screen/x DEO2
		OVRr STHr .Screen/pixel DEO
		( x2 ) STHkr #04 + LDZ2 .Screen/x DEO2 
		( x2 ) STHkr #04 + LDZ2 .Screen/x DEO2
		OVRr STHr .Screen/pixel DEO
		( incr )
		INC2 GTH2k ,&ver JCN


@@ 1496,22 1496,22 @@ RTN
	( x1 ) STHkr LDZ2 #0001 -- ( flip sign ) GTH2k #01 JCN SWP2
	&hor
		( save ) DUP2 .Screen/x DEO2
		( y1 ) STHkr #02 + LDZ2 #0001 -- .Screen/y DEO2 
		( y1 ) STHkr #02 + LDZ2 #0001 -- .Screen/y DEO2
		OVRr STHr .Screen/pixel DEO
		( y2 ) STHkr #06 + LDZ2 .Screen/y DEO2 
		( y2 ) STHkr #06 + LDZ2 .Screen/y DEO2
		OVRr STHr .Screen/pixel DEO
		( incr )
		INC2 GTH2k ,&hor JCN
	POP2
	POPr 
	POPr
	.Screen/x DEO2
	.Screen/y DEO2 
	.Screen/y DEO2
	STHr .Screen/pixel DEO

RTN

@line-hor ( x0* x1* y* color -- )
	

	STH .Screen/y DEO2 SWP2
	&loop
		( save ) DUP2 .Screen/x DEO2


@@ 1522,7 1522,7 @@ RTN
RTN

@line-ver ( x* y0* y1* color -- )
	

	STH ROT2 .Screen/x DEO2 SWP2
	&loop
		( save ) DUP2 .Screen/y DEO2


@@ 1533,13 1533,13 @@ RTN
RTN

@print-hex ( value* -- )
	
	SWP ,&byte JSR 

	SWP ,&byte JSR
	&byte ( byte -- )
		STHk #04 SFT ,&parse JSR #18 DEO
		STHr #0f AND ,&parse JSR #18 DEO
	RTN
	&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 + RTN 
	&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 + RTN
	&above #57 + RTN

RTN


@@ 1552,9 1552,9 @@ RTN
@pixel-icn     7cfe fefe fefe 7c00
@bigpixel-icn  f0f0 f0f0 0000 0000
@halftone-icn  aa55 aa55 aa55 aa55
@save-icn      1054 28c6 2854 1000 
@make-icn      fe82 8282 848a f400 
@load-icn      feaa d6aa d4aa f400 
@save-icn      1054 28c6 2854 1000
@make-icn      fe82 8282 848a f400
@load-icn      feaa d6aa d4aa f400

@slider-icns
	f0f0 f0f0 f0f0 f000 ( full )