~rabbits/nasu

fe40e039867835d5ec981ec4bd111a8309e8b1b6 — neauoire 11 months ago 699c3e0
Faster launch
1 files changed, 119 insertions(+), 118 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +119 -118
@@ 100,8 100,8 @@
	.zoomview/x2 LDZ2 #0002 ADD2 .zoomview-frame/x2 STZ2
	.zoomview/y2 LDZ2 #0007 -- .zoomview-frame/y2 STZ2

	;new-file JSR2
	;load-theme JSR2
	;new-file JSR2

BRK



@@ 138,7 138,7 @@ JMP2r
		&no-start
	( end )
	.Console/read DEI
	DUP DUP #1f > SWP #7f < AND ,&no-end JCN
	DUP DUP #1f GTH SWP #7f LTH AND ,&no-end JCN
		#00 ,&listening STR
		&no-end
	( capture )


@@ 150,7 150,7 @@ BRK
@on-button-trap ( -> )

	#00 ;draw-filepath JSR2
	.Controller/key DEI DUP #0d = #03 * - ,capture-trap JSR
	.Controller/key DEI DUP #0d EQU #03 * SUB ,capture-trap JSR
	#01 ;draw-filepath JSR2

BRK


@@ 162,7 162,7 @@ BRK
	[ #0a ] NEQk NIP ,&no-load JCN ;load-file JSR2 &no-load
	[ #7f ] NEQk NIP ,&no-delete JCN ;filepath #0040 ;mclr JSR2 POP JMP2r &no-delete
	[ #20 ] GTHk NIP ,&no-special JCN ;untrap JSR2 POP JMP2r &no-special
	;filepath ;slen JSR2 NIP #3f = ,&no-push JCN
	;filepath ;slen JSR2 NIP #3f EQU ,&no-push JCN
		DUP ;filepath ROT ;sput JSR2
		&no-push
	POP


@@ 252,7 252,7 @@ BRK

	;draw-cursor JSR2

	.Mouse/state DEI #00 = ,&no-touch JCN
	.Mouse/state DEI #00 EQU ,&no-touch JCN
		.Mouse/x DEI2 .Mouse/y DEI2 .tileview ;within-rect JSR2 ;on-touch-tileview JCN2
		.Mouse/x DEI2 .Mouse/y DEI2 .nametable ;within-rect JSR2 ;on-touch-nametable JCN2
		.Mouse/x DEI2 .Mouse/y DEI2 .toolview ;within-rect JSR2 ;on-touch-toolview JCN2


@@ 270,14 270,14 @@ BRK
@on-touch-tileview ( -> )

	( test )
	.settings/tool LDZ #02 = ;&zoom JCN2
	.settings/zoom LDZ #01 = ;&zoomed JCN2
	.settings/tool LDZ #01 = ;&select JCN2
	.settings/tool LDZ #02 EQU ;&zoom JCN2
	.settings/zoom LDZ #01 EQU ;&zoomed JCN2
	.settings/tool LDZ #01 EQU ;&select JCN2

	( paint )
	.Mouse/x DEI2 .tileview/x1 LDZ2 --
	.Mouse/y DEI2 .tileview/y1 LDZ2 --
	.settings/color LDZ .Mouse/state DEI #01 = *
	.settings/color LDZ .Mouse/state DEI #01 EQU *
		;put-pixel JSR2
	#01 .state/changed STZ ;draw-state JSR2
	;redraw JSR2


@@ 300,7 300,7 @@ BRK

		.Mouse/x DEI2 .tileview/x1 LDZ2 -- #03 SFT2 #00 .selection/zx LDZ ADD2
		.Mouse/y DEI2 .tileview/y1 LDZ2 -- #03 SFT2 #00 .selection/zy LDZ ADD2
		.settings/color LDZ .Mouse/state DEI #01 = * ;put-pixel JSR2
		.settings/color LDZ .Mouse/state DEI #01 EQU * ;put-pixel JSR2
		#01 .state/changed STZ ;draw-state JSR2
		;redraw JSR2



@@ 360,7 360,7 @@ BRK
	[ #04 ] NEQk NIP ,&no-tool0 JCN #00 ;set-tool JSR2 POP BRK &no-tool0
	[ #05 ] NEQk NIP ,&no-tool1 JCN #01 ;set-tool JSR2 POP BRK &no-tool1
	[ #06 ] NEQk NIP ,&no-tool2 JCN #02 ;set-tool JSR2 &no-tool2
	INCk .settings/color LDZ ! ,&no-eraser JCN #00 ;set-color JSR2 POP BRK &no-eraser
	INCk .settings/color LDZ NEQ ,&no-eraser JCN #00 ;set-color JSR2 POP BRK &no-eraser
	[ #02 ] GTHk NIP ,&no-color JCN INCk ;set-color JSR2 POP BRK &no-color
	[ #08 ] LTHk NIP ,&no-rename JCN ;trap JSR2 POP BRK &no-rename
	POP


@@ 369,18 369,18 @@ BRK

@on-touch-zoomview ( -> )

	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- #03 SFT2 NIP #04 ! ;&no-mod JCN2
	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- #03 SFT2 NIP #04 NEQ ;&no-mod JCN2
		.Mouse/x DEI2 .zoomview/x1 LDZ2 -- #03 SFT2 NIP
		DUP #00 = .Mouse/state DEI #01 = #0101 NEQ2 ,&no-shiftup JCN
		DUP #00 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-shiftup JCN
			;op-shift-tile-up ;run-selection JSR2
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftup
		DUP #00 = .Mouse/state DEI #01 > #0101 NEQ2 ,&no-shiftdown JCN
		DUP #00 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-shiftdown JCN
			;op-shift-tile-down ;run-selection JSR2
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftdown
		DUP #01 = .Mouse/state DEI #01 = #0101 NEQ2 ,&no-shiftright JCN
		DUP #01 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-shiftright JCN
			;op-shift-tile-right ;run-selection JSR2
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftright
		DUP #01 = .Mouse/state DEI #01 > #0101 NEQ2 ,&no-shiftleft JCN
		DUP #01 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-shiftleft JCN
			;op-shift-tile-left ;run-selection JSR2
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftleft
		POP


@@ 393,7 393,7 @@ BRK
	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- #02 SFT2
	.settings/focus LDZ2 ADD2
	( detect erase )
	.settings/color LDZ .Mouse/state DEI #01 = * STH
	.settings/color LDZ .Mouse/state DEI #01 EQU * STH
	OVR2 OVR2 STHkr #00 ;toggle-pixel JSR2
	#0008 ADD2 STHr #01 ;toggle-pixel JSR2
	#01 .state/changed STZ ;draw-state JSR2


@@ 408,13 408,13 @@ BRK

	.Mouse/x DEI2 .blendview/x1 LDZ2 -- #03 SFT2 NIP
	.Mouse/y DEI2 .blendview/y1 LDZ2 -- #03 SFT2 NIP #20 SFT +
	DUP #0f > ,&no-set JCN
		DUP .settings/blend LDZ #b0 AND + .settings/blend STZ
	DUP #0f GTH ,&no-set JCN
		DUP .settings/blend LDZ #b0 AND ADD .settings/blend STZ
		&no-set
	DUP #12 ! ,&no-ver JCN
	DUP #12 NEQ ,&no-ver JCN
		.settings/blend LDZ #20 EOR .settings/blend STZ
		&no-ver
	DUP #13 ! ,&no-hor JCN
	DUP #13 NEQ ,&no-hor JCN
		.settings/blend LDZ #10 EOR .settings/blend STZ
		&no-hor
	POP


@@ 428,17 428,17 @@ BRK

	.Mouse/y DEI2 .colorview/y1 LDZ2 -- #03 SFT2 NIP

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



@@ 447,12 447,12 @@ BRK
	BRK

	&set-color
		.settings/color LDZ STHk #01 SFT + DEI
		.settings/color LDZ STHk #01 SFT ADD DEI
		STHr #01 AND STHk
		#0f SWP [ #60 SFT SFT ] AND
		STHr #00 =
		.Mouse/x DEI2 .colorview/x1 LDZ2 -- #01 SFT2 NIP
		( clamp to #0f ) DUP #01 > -
		( clamp to #0f ) DUP #01 GTH -
		SWP [ #60 SFT SFT ] +
	JMP2r



@@ 463,7 463,7 @@ BRK
	( y ) .Mouse/y DEI2 .preview/y1 LDZ2 -- #03 SFT2 NIP
	( x ) .Mouse/x DEI2 .preview/x1 LDZ2 -- #03 SFT2 NIP

	#40 SFT + #11 +
	#40 SFT ADD #11 +
	.settings/ratio STZ

	;redraw JSR2


@@ 476,7 476,7 @@ BRK

@toggle-zoom ( -- )

	.settings/zoom LDZk #00 = SWP STZ
	.settings/zoom LDZk #00 EQU SWP STZ
	;draw-tileview JSR2
	;draw-toolview JSR2



@@ 528,7 528,7 @@ JMP2r
	( set zoom )
	DUP2
		;get-tile-addr JSR2 .settings/focus STZ2
		#40 SFT + .selection/a STZ
		#40 SFT ADD .selection/a STZ

JMP2r



@@ 537,11 537,11 @@ JMP2r
	.settings/zoom LDZ ;mod-selection-zoom JCN2

	DUP
	.selection/y2 LDZ + #0f AND .selection/y2 STZ
	.selection/y1 LDZ + #0f AND .selection/y1 STZ
	.selection/y2 LDZ ADD #0f AND .selection/y2 STZ
	.selection/y1 LDZ ADD #0f AND .selection/y1 STZ
	DUP
	.selection/x2 LDZ + #0f AND .selection/x2 STZ
	.selection/x1 LDZ + #0f AND .selection/x1 STZ
	.selection/x2 LDZ ADD #0f AND .selection/x2 STZ
	.selection/x1 LDZ ADD #0f AND .selection/x1 STZ
	( clamp )
	.selection/x2 LDZ .selection/x1 LDZ GTH ,&no-x JCN
		.selection/x1 LDZ .selection/x2 STZ


@@ 562,8 562,8 @@ JMP2r
@mod-selection-zoom ( x y -- )

	( set zoom )
	.selection/zy LDZ + SWP
	.selection/zx LDZ + SWP
	.selection/zy LDZ ADD SWP
	.selection/zx LDZ ADD SWP
		;set-selection-zoom JSR2
	( set from )
	.selection/zx LDZ #03 SFT


@@ 575,8 575,8 @@ JMP2r

@scale-selection ( x y -- )

	.selection/y2 LDZ + #0f AND .selection/y2 STZ
	.selection/x2 LDZ + #0f AND .selection/x2 STZ
	.selection/y2 LDZ ADD #0f AND .selection/y2 STZ
	.selection/x2 LDZ ADD #0f AND .selection/x2 STZ

	( clamp )
	.selection/x2 LDZ .selection/x1 LDZ GTH ,&no-x JCN


@@ 620,7 620,6 @@ JMP2r

JMP2r


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

	DUP2


@@ 697,18 696,18 @@ JMP2r

@clamp-selection ( -- )

	.selection/x1 LDZ #10 #01 - STHk < ,&ok-limitx1 JCN
	.selection/x1 LDZ #10 #01 SUB STHk LTH ,&ok-limitx1 JCN
		STHkr .selection/x1 STZ &ok-limitx1 POPr
	.selection/y1 LDZ #10 #01 - STHk < ,&ok-limity1 JCN
	.selection/y1 LDZ #10 #01 SUB STHk LTH ,&ok-limity1 JCN
		STHkr .selection/y1 STZ &ok-limity1 POPr
	.selection/x2 LDZ #10 #01 - STHk < ,&ok-limitx2 JCN
	.selection/x2 LDZ #10 #01 SUB STHk LTH ,&ok-limitx2 JCN
		STHkr .selection/x2 STZ &ok-limitx2 POPr
	.selection/y2 LDZ #10 #01 - STHk < ,&ok-limity2 JCN
	.selection/y2 LDZ #10 #01 SUB STHk LTH ,&ok-limity2 JCN
		STHkr .selection/y2 STZ &ok-limity2 POPr
	( invert )
	.selection/x2 LDZ .selection/x1 LDZ STHk > ,&ok-flipx JCN
	.selection/x2 LDZ .selection/x1 LDZ STHk GTH ,&ok-flipx JCN
		STHkr .selection/x2 STZ &ok-flipx POPr
	.selection/y2 LDZ .selection/y1 LDZ STHk > ,&ok-flipy JCN
	.selection/y2 LDZ .selection/y1 LDZ STHk GTH ,&ok-flipy JCN
		STHkr .selection/y2 STZ &ok-flipy POPr

JMP2r


@@ 730,10 729,10 @@ JMP2r

@is-selected ( x y -- flag )

	OVR .selection/x1 LDZ < ,&end JCN
	OVR .selection/x2 LDZ > ,&end JCN
	DUP .selection/y1 LDZ < ,&end JCN
	DUP .selection/y2 LDZ > ,&end JCN
	OVR .selection/x1 LDZ LTH ,&end JCN
	OVR .selection/x2 LDZ GTH ,&end JCN
	DUP .selection/y1 LDZ LTH ,&end JCN
	DUP .selection/y2 LDZ GTH ,&end JCN
		POP2 #01 JMP2r
		&end
	POP2 #00


@@ 743,21 742,28 @@ JMP2r
@draw-tileview ( -- )

	.settings/zoom LDZ ;draw-tileview-zoom JCN2

	#01 .Screen/auto DEO
	.tileview/x1 LDZ2 .Screen/x DEO2
	.tileview/y1 LDZ2 .Screen/y DEO2
	( draw tiles )
	;spritesheet .Screen/addr DEO2
	#f6 .Screen/auto DEO
	#1000
	&ver
		DUP #00 SWP #30 SFT2 .tileview/y1 LDZ2 ADD2 .Screen/y DEO2
		.tileview/x1 LDZ2 .Screen/x DEO2
		#1000
		&hor
			OVR2 NIP OVR SWP
				DUP2 ;get-tile-addr JSR2 .Screen/addr DEO2
				;is-selected JSR2 #0d * #81 + .Screen/sprite DEO
			INC GTHk ,&hor JCN
		POP2
		INC GTHk ,&ver JCN
	&loop
		#81 .Screen/sprite DEO
		INC GTHk ,&loop JCN
	POP2
	( draw selection )
	.Screen/auto DEI #0f AND .selection/x2 LDZ .selection/x1 LDZ SUB #40 SFT ADD .Screen/auto DEO
	.tileview/x1 LDZ2 #00 .selection/x1 LDZ #30 SFT2 ADD2 .Screen/x DEO2
	.tileview/y1 LDZ2 #00 .selection/y1 LDZ #30 SFT2 ADD2 .Screen/y DEO2
	.selection LDZ2 ;get-tile-addr JSR2 STH2
	.selection/y2 LDZ .selection/y1 LDZ SUB INC #00
	&loop-sel
		#00 OVR #80 SFT2 STH2kr ADD2 .Screen/addr DEO2
		#84 .Screen/sprite DEO
		INC GTHk ,&loop-sel JCN
	POP2
	POP2r
	#00 .Screen/auto DEO

	.workspace-frame #03 ;line-rect JSR2


@@ 775,8 781,8 @@ JMP2r
		&hor
			DUP #30 SFT #00 SWP .tileview/x1 LDZ2 ADD2 .Screen/x DEO2
			OVR2 NIP OVR SWP
			( y ) .selection/zy LDZ + #00 SWP
			( x ) ROT .selection/zx LDZ + #00 SWP SWP2
			( y ) .selection/zy LDZ ADD #00 SWP
			( x ) ROT .selection/zx LDZ ADD #00 SWP SWP2
				;get-pixel JSR2 .Screen/sprite DEO
			INC GTHk ,&hor JCN
		POP2


@@ 784,10 790,10 @@ JMP2r
	POP2
	POP2r POP2r
	( guides )
	#00 #07 .selection/zy LDZ - #0007 AND2 #30 SFT2 #0001 -- #0008 ADD2 STH2
	#00 #07 .selection/zy LDZ SUB #0007 AND2 #30 SFT2 #0001 -- #0008 ADD2 STH2
	.tileview/x1 LDZ2 .tileview/x2 LDZ2 .tileview/y1 LDZ2 STH2kr ADD2 #02 ;line-hor-dashed JSR2
	.tileview/x1 LDZ2 .tileview/x2 LDZ2 .tileview/y1 LDZ2 STH2r ADD2 #0040 ADD2 #02 ;line-hor-dashed JSR2
	#00 #07 .selection/zx LDZ - #0007 AND2 #30 SFT2 #0001 -- #0008 ADD2 STH2
	#00 #07 .selection/zx LDZ SUB #0007 AND2 #30 SFT2 #0001 -- #0008 ADD2 STH2
	.tileview/x1 LDZ2 STH2kr ADD2 .tileview/y1 LDZ2 .tileview/y2 LDZ2 #02 ;line-ver-dashed JSR2
	.tileview/x1 LDZ2 STH2r ADD2 #0040 ADD2 .tileview/y1 LDZ2 .tileview/y2 LDZ2 #02 ;line-ver-dashed JSR2



@@ 802,7 808,7 @@ JMP2r
		.nametable/x LDZ2 .Screen/x DEO2
		#1000
		&hor
			OVR2 NIP OVR SWP [ #40 SFT + ] #00 SWP
			OVR2 NIP OVR SWP [ #40 SFT ADD ] #00 SWP
				DUP2 ;spritesheet/nametable ADD2 LDA #00 SWP #40 SFT2 ;spritesheet ADD2 .Screen/addr DEO2
				;spritesheet/color ADD2 LDA .Screen/sprite DEO
			INC GTHk ,&hor JCN


@@ 826,10 832,10 @@ JMP2r
	( channel 1 )
	OVR2 SWP2 ,get-pixel-addr JSR [ STH2k ] LDA
	ROT ROT NIP #07 AND [ STHk ]
	#07 SWP - SFT #01 AND
	#07 SWP SUB SFT #01 AND
	( channel 2 )
	[ STHr ] [ STH2r ] #0008 ADD2 LDA SWP
	#07 SWP - SFT #01 AND
	#07 SWP SUB SFT #01 AND
	#10 SFT
	+



@@ 864,11 870,11 @@ JMP2r
	STH SWP2 NIP
	STHr SWP
	STH2r SFT #01 AND ,&do-set JCN
		( mask ) #01 #07 ROT #07 AND - #40 SFT SFT #ff EOR AND
		( mask ) #01 #07 ROT #07 AND SUB #40 SFT SFT #ff EOR AND
		( save ) ROT ROT STA
		JMP2r
	&do-set
		( mask ) #01 #07 ROT #07 AND - #40 SFT SFT ORA
		( mask ) #01 #07 ROT #07 AND SUB #40 SFT SFT ORA
		( save ) ROT ROT STA

JMP2r


@@ 877,7 883,7 @@ JMP2r

	;spritesheet/nametable STH2k #0200 ADD2 STH2r
	&loop
		LDAk #00 = ,&continue JCN
		LDAk #00 EQU ,&continue JCN
			POP2 POP2 #01 JMP2r
			&continue
		INC2 GTH2k ,&loop JCN


@@ 901,10 907,10 @@ JMP2r
			OVR2 NIP OVR SWP
			( ch 1 )
			#00 SWP .settings/focus LDZ2 ADD2 [ STH2k ] LDA
			SWP [ STHk ] #07 SWP - SFT #01 AND
			SWP [ STHk ] #07 SWP SUB SFT #01 AND
			( ch2 )
			[ STHr ] [ STH2r ] #0008 ADD2 LDA SWP
			#07 SWP - SFT #01 AND
			#07 SWP SUB SFT #01 AND
			#10 SFT +
			.Screen/sprite DEO
			INC GTHk ,&hor JCN


@@ 938,8 944,8 @@ JMP2r
			( get x,y )
			OVR2 NIP OVR SWP
			( check if within ratio )
			.settings/ratio LDZ #0f AND < STH
			.settings/ratio LDZ #04 SFT < STHr
			.settings/ratio LDZ #0f AND LTH STH
			.settings/ratio LDZ #04 SFT LTH STHr
			#0101 NEQ2 ,&outside JCN
				( get tile ) STH2kr .Screen/addr DEO2
				( get blending ) .settings/blend LDZ .Screen/sprite DEO


@@ 985,7 991,7 @@ JMP2r
		.Screen/x DEO2
		#10 #00
		&loop
			DUP STHkr > #30 SFT #00 SWP ;slider-icns ADD2 .Screen/addr DEO2
			DUP STHkr GTH #30 SFT #00 SWP ;slider-icns ADD2 .Screen/addr DEO2
			#02 .Screen/sprite DEO
			.Screen/x DEI2k INC2 INC2 ROT DEO2
			INC GTHk ,&loop JCN


@@ 994,7 1000,7 @@ JMP2r

JMP2r
	&get-color
		.settings/color LDZ STHk #01 SFT + DEI #01 STHr #01 AND - #20 SFT SFT #0f AND
		.settings/color LDZ STHk #01 SFT ADD DEI #01 STHr #01 AND SUB #20 SFT SFT #0f AND
	JMP2r

@draw-blendview ( -- )


@@ 1005,7 1011,7 @@ JMP2r
		DUP #03 AND #00 SWP #30 SFT2 .blendview/x1 LDZ2 ADD2 .Screen/x DEO2
		DUP #02 SFT #00 SWP #30 SFT2 .blendview/y1 LDZ2 ADD2 .Screen/y DEO2
		#00 .Screen/sprite DEO
		DUP .settings/blend LDZ #b0 AND + .Screen/sprite DEO
		DUP .settings/blend LDZ #b0 AND ADD .Screen/sprite DEO
		INC GTHk ,&loop JCN
	POP2



@@ 1017,16 1023,16 @@ JMP2r
	( y )
	.blendview/x1 LDZ2 #0010 ADD2 .Screen/x DEO2
	.blendview/y1 LDZ2 #0021 ADD2 .Screen/y DEO2
	.settings/blend LDZ #20 AND #00 ! STH
	.settings/blend LDZ #20 AND #00 NEQ STH
	;arrow-ver-icns STHkr #00 SWP #30 SFT2 ADD2 .Screen/addr DEO2
	#02 STHr - .Screen/sprite DEO
	#02 STHr SUB .Screen/sprite DEO

	( x )
	.blendview/x1 LDZ2 #0018 ADD2 .Screen/x DEO2
	.blendview/y1 LDZ2 #0021 ADD2 .Screen/y DEO2
	.settings/blend LDZ #10 AND #00 ! STH
	.settings/blend LDZ #10 AND #00 NEQ STH
	;arrow-hor-icns STHkr #00 SWP #30 SFT2 ADD2 .Screen/addr DEO2
	#02 STHr - .Screen/sprite DEO
	#02 STHr SUB .Screen/sprite DEO

JMP2r



@@ 1056,24 1062,24 @@ JMP2r
	.toolview/y1 LDZ2 .Screen/y DEO2
	( colors )
	.toolview/x1 LDZ2 STH2k .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #01 = #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2
	;circle-icns [ .settings/color LDZ #01 EQU #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2
	#01 .Screen/sprite DEO
	STH2kr #0008 ADD2 .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #02 = #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2
	;circle-icns [ .settings/color LDZ #02 EQU #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2
	#02 .Screen/sprite DEO
	STH2kr #0010 ADD2 .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #03 = #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2
	;circle-icns [ .settings/color LDZ #03 EQU #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2
	#03 .Screen/sprite DEO
	( tools )
	STH2kr #0020 ADD2 .Screen/x DEO2
	;tool-brush .Screen/addr DEO2
	#01 [ .settings/tool LDZ #00 = ] + .Screen/sprite DEO
	#01 [ .settings/tool LDZ #00 EQU ] ADD .Screen/sprite DEO
	STH2kr #0029 ADD2 .Screen/x DEO2
	;tool-selector .Screen/addr DEO2
	#01 [ .settings/tool LDZ #01 = ] + .Screen/sprite DEO
	#01 [ .settings/tool LDZ #01 EQU ] ADD .Screen/sprite DEO
	STH2r #0030 ADD2 .Screen/x DEO2
	;zoom-icns [ .settings/zoom LDZ #00 SWP #30 SFT2 ADD2 ] .Screen/addr DEO2
	#01 [ .settings/tool LDZ #02 = ] + .Screen/sprite DEO
	#01 [ .settings/tool LDZ #02 EQU ] ADD .Screen/sprite DEO
	( file i/o )
	;draw-state JSR2
	.toolview/x2 LDZ2 STH2k #0018 -- .Screen/x DEO2


@@ 1098,7 1104,7 @@ JMP2r
	.Mouse/y DEI2 DUP2 .cursor/y STZ2 .Screen/y DEO2
	( draw new cursor )
	;tool-brush #00 .settings/tool LDZ #30 SFT ADD2 .Screen/addr DEO2
	#42 .Mouse/state DEI #00 ! + .Screen/sprite DEO
	#42 .Mouse/state DEI #00 NEQ ADD .Screen/sprite DEO

JMP2r



@@ 1107,7 1113,7 @@ JMP2r
	.toolview/x2 LDZ2 #0008 -- .Screen/x DEO2
	.toolview/y1 LDZ2 .Screen/y DEO2
	;save-icn .Screen/addr DEO2
	#05 .state/changed LDZ #0a * + .Screen/sprite DEO
	#05 .state/changed LDZ #0a * ADD .Screen/sprite DEO

JMP2r



@@ 1149,11 1155,11 @@ JMP2r

@draw-hex ( char color -- )

	SWP #0f AND [ DUP #09 > #27 * + #30 + ] SWP
	SWP #0f AND [ DUP #09 GTH #27 * ADD #30 ADD ] SWP

@draw-char ( char color -- )

	SWP #20 - #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2
	SWP #20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2
	.Screen/sprite DEO
	.Screen/x DEI2k #0008 ADD2 ROT DEO2



@@ 1164,10 1170,8 @@ JMP2r
@new-file ( -- )
	
	#00 ;draw-filepath JSR2

	;spritesheet #1000 ;mclr JSR2
	;spritesheet/nametable #0200 ;mclr JSR2

	( clear )
	;spritesheet #1200 ;mclr JSR2
	( rename to untitled.txt )
	;filepath #0020 ;mclr JSR2
	;untitled-txt ;filepath #000c ;mcpy JSR2


@@ 1179,14 1183,12 @@ JMP2r

@load-file ( -- )

	;spritesheet #1000 ;mclr JSR2
	;spritesheet/nametable #0200 ;mclr JSR2

	( clear )
	;spritesheet #1200 ;mclr JSR2
	( spritesheet )
	;filepath .File/name DEO2
	#1000 .File/length DEO2
	;spritesheet .File/load DEO2

	( nametable )
	;nametable-ext ;filepath ;scap JSR2 #0004 ;mcpy JSR2
	;filepath .File/name DEO2


@@ 1207,7 1209,7 @@ JMP2r
	;spritesheet .File/save DEO2

	( nametable )
	;has-nametable JSR2 #00 = ,&no-nametable JCN
	;has-nametable JSR2 #00 EQU ,&no-nametable JCN
		;nametable-ext ;filepath ;scap JSR2 #0004 ;mcpy JSR2
		;filepath .File/name DEO2
		#0200 .File/length DEO2


@@ 1232,7 1234,6 @@ JMP2r
		#fffc LDA2 .System/g DEO2
		#fffe LDA2 .System/b DEO2
		&ignore
	;redraw JSR2

JMP2r
	&path ".theme $1


@@ 1315,11 1316,11 @@ JMP2r
@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
	( y LTH rect.y1 ) DUP2 STHkr #02 ADD LDZ2 LTH2 ,&skip JCN
	( y GTH rect.y2 ) DUP2 STHkr #06 ADD LDZ2 GTH2 ,&skip JCN
	SWP2
	( x < rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN
	( x > rect.x2 ) DUP2 STHkr #04 ADD LDZ2 GTH2 ,&skip JCN
	( x LTH rect.x1 ) DUP2 STHkr LDZ2 LTH2 ,&skip JCN
	( x GTH rect.x2 ) DUP2 STHkr #04 ADD LDZ2 GTH2 ,&skip JCN
	POP2 POP2 POPr
	#01
JMP2r


@@ 1332,24 1333,24 @@ JMP2r
@line-rect ( rect color -- )

	STH STH
	( y2 ) STHkr #06 + LDZ2
	( y1 ) STHkr #02 + LDZ2 #0001 -- ( flip sign ) GTH2k JMP SWP2
	( y2 ) STHkr #06 ADD LDZ2
	( y1 ) STHkr #02 ADD LDZ2 #0001 -- ( flip sign ) GTH2k JMP SWP2
	&ver
		( save ) DUP2 .Screen/y DEO2
		( x1 ) STHkr LDZ2 #0001 -- .Screen/x DEO2
		OVRr STHr .Screen/pixel DEO
		( x2 ) STHkr #04 + LDZ2 .Screen/x DEO2
		( x2 ) STHkr #04 ADD LDZ2 .Screen/x DEO2
		OVRr STHr .Screen/pixel DEO
		( incr )
		INC2 GTH2k ,&ver JCN
	POP2
	( x2 ) STHkr #04 + LDZ2
	( x2 ) STHkr #04 ADD LDZ2
	( x1 ) STHkr LDZ2 #0001 -- ( flip sign ) GTH2k JMP SWP2
	&hor
		( save ) DUP2 .Screen/x DEO2
		( y1 ) STHkr #02 + LDZ2 #0001 -- .Screen/y DEO2
		( y1 ) STHkr #02 ADD LDZ2 #0001 -- .Screen/y DEO2
		OVRr STHr .Screen/pixel DEO
		( y2 ) STHkr #06 + LDZ2 .Screen/y DEO2
		( y2 ) STHkr #06 ADD LDZ2 .Screen/y DEO2
		OVRr STHr .Screen/pixel DEO
		( incr )
		INC2 GTH2k ,&hor JCN


@@ 1417,7 1418,7 @@ JMP2r

@scap ( str* -- str-end* )

	LDAk #00 ! JMP JMP2r
	LDAk #00 NEQ JMP JMP2r
	&while INC2 LDAk ,&while JCN

JMP2r


@@ 1444,8 1445,8 @@ JMP2r

JMP2r

@rol ( byte -- byte ) DUP #07 SFT SWP #10 SFT + JMP2r
@ror ( byte -- byte ) DUP #70 SFT SWP #01 SFT + JMP2r
@rol ( byte -- byte ) DUP #07 SFT SWP #10 SFT ADD JMP2r
@ror ( byte -- byte ) DUP #70 SFT SWP #01 SFT ADD JMP2r

@untitled-txt  "untitled.chr $1
@nametable-ext ".tbl $1