~rabbits/nasu

e3e365d9e0916d617002a06f2fd3c66bcf276f2c — neauoire 11 months ago 046a68c
Removed mapping macros
1 files changed, 103 insertions(+), 115 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +103 -115
@@ 4,28 4,12 @@
%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
%-- { SUB2 } %** { MUL2 } %// { DIV2 }

%2*  { #10 SFT } %2/  { #01 SFT } %2**  { #10 SFT2 } %2//  { #01 SFT2 }
%4*  { #20 SFT } %4/  { #02 SFT } %4**  { #20 SFT2 } %4//  { #02 SFT2 }
%8*  { #30 SFT } %8/  { #03 SFT } %8**  { #30 SFT2 } %8//  { #03 SFT2 }
%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 }
%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 }
%40* { #60 SFT } %40/ { #06 SFT } %40** { #60 SFT2 } 

%RELEASE-MOUSE { #0096 DEO }

%AUTO-NONE { #00 .Screen/auto DEO }
%AUTO-X { #01 .Screen/auto DEO }
%AUTO-Y { #02 .Screen/auto DEO }
%AUTO-ADDR { #04 .Screen/auto DEO }
%AUTO-Y-ADDR { #06 .Screen/auto DEO }

%BANK-SPRITESHEET { #8000 }
%BANK-NAMETABLE { #9000 }
%BANK-COLOR { #9100 }

%SET-STATE { #01 .state/changed STZ ;draw-state JSR2 }
%RESET-STATE { #00 .state/changed STZ ;draw-state JSR2 }

%SIZE-TO-RECT {
	STH2 STH2 OVR2 STH2r ADD2 OVR2 STH2r ADD2
} ( x y w h -- x1 y1 x2 y2 )


@@ 118,7 102,7 @@
	.Screen/height DEI2 #01 SFT2 .frame/height LDZ2 #01 SFT2 --
		.frame/width LDZ2 .frame/height LDZ2 SIZE-TO-RECT ;frame SET-RECT

	.frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #0030 ADD2 #10 #00 SWP 8** #0080 SIZE-TO-RECT ;tileview SET-RECT
	.frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #0030 ADD2 #10 #00 SWP #30 SFT2 #0080 SIZE-TO-RECT ;tileview SET-RECT
	.frame/x1 LDZ2 #0082 ADD2 .frame/y1 LDZ2 #0030 ADD2 #007f #007f SIZE-TO-RECT ;nametable SET-RECT
	.frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #001f #0028 SIZE-TO-RECT ;zoomview SET-RECT
	.frame/x1 LDZ2 #002f ADD2 .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT


@@ 148,7 132,7 @@ BRK
	;on-button .Controller/vector DEO2
	;on-mouse .Mouse/vector DEO2
	#01 ;draw-filepath JSR2
	RELEASE-MOUSE
	( release mouse ) #0096 DEO

JMP2r



@@ 161,7 145,7 @@ JMP2r
	.cursor/x LDZ2 .Screen/x DEO2
	.cursor/y LDZ2 .Screen/y DEO2
	#40 .Screen/sprite DEO
	RELEASE-MOUSE
	( release mouse ) #0096 DEO

JMP2r



@@ 225,7 209,7 @@ BRK

	.state/timer LDZ
	DUP #07 AND ,&no-blink JCN
		DUP 8/ #01 AND 8* INC ;draw-filepath JSR2
		DUP #03 SFT #01 AND #30 SFT INC ;draw-filepath JSR2
		&no-blink
	INC .state/timer STZ



@@ 245,7 229,7 @@ BRK
		[ LIT 'q ] NEQk NIP ,&no-tool0 JCN #00 ;set-tool JSR2 &no-tool0
		[ LIT 'w ] NEQk NIP ,&no-tool1 JCN #01 ;set-tool JSR2 &no-tool1
		[ LIT 'e ] NEQk NIP ,&no-tool2 JCN #02 ;set-tool JSR2 &no-tool2
		[ #08 ] NEQk NIP ,&no-delete JCN ;op-erase ;run-selection JSR2 SET-STATE ;redraw JSR2 &no-delete
		[ #08 ] NEQk NIP ,&no-delete JCN ;op-erase ;run-selection JSR2 #01 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 &no-delete
		[ #20 ] NEQk NIP ,&no-zoom JCN ;toggle-zoom JSR2 &no-zoom
		[ #1b ] NEQk NIP ,&no-escape JCN .selection/x1 LDZ2 .selection/x2 STZ2 ;redraw JSR2 &no-escape
	POP


@@ 316,29 300,29 @@ BRK
	.Mouse/y DEI2 .tileview/y1 LDZ2 --
	.settings/color LDZ .Mouse/state DEI #01 = *
		;put-pixel JSR2
	SET-STATE
	#01 .state/changed STZ ;draw-state JSR2
	;redraw JSR2

	BRK

	&zoom ( -> )

		.Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// NIP
		.Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP
			DUP2 8* SWP 8* SWP ;set-selection-zoom JSR2
		.Mouse/x DEI2 .tileview/x1 LDZ2 -- #03 SFT2 NIP
		.Mouse/y DEI2 .tileview/y1 LDZ2 -- #03 SFT2 NIP
			DUP2 #30 SFT SWP #30 SFT SWP ;set-selection-zoom JSR2
			;set-selection-from JSR2
		;toggle-zoom JSR2
		;redraw JSR2
		RELEASE-MOUSE
		( release mouse ) #0096 DEO

	BRK

	&zoomed ( -> )

		.Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// #00 .selection/zx LDZ ADD2
		.Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// #00 .selection/zy LDZ ADD2
		.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
		SET-STATE
		#01 .state/changed STZ ;draw-state JSR2
		;redraw JSR2

	BRK


@@ 348,17 332,17 @@ BRK
		.Mouse/state DEI DUP .cursor/last LDZ
			DUP2 #0000 EQU2 ,&end JCN
			DUP2 #0100 NEQ2 ,&no-down JCN
				.Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// NIP
				.Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP
				.Mouse/x DEI2 .tileview/x1 LDZ2 -- #03 SFT2 NIP
				.Mouse/y DEI2 .tileview/y1 LDZ2 -- #03 SFT2 NIP
					( select zoom )
					DUP2 8* SWP 8* SWP ;set-selection-zoom JSR2
					DUP2 #30 SFT SWP #30 SFT SWP ;set-selection-zoom JSR2
					( select from )
					;set-selection-from JSR2
				,&end JMP
				&no-down
			( release )
			.Mouse/x DEI2 .tileview/x1 LDZ2 -- 8// NIP
			.Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP
			.Mouse/x DEI2 .tileview/x1 LDZ2 -- #03 SFT2 NIP
			.Mouse/y DEI2 .tileview/y1 LDZ2 -- #03 SFT2 NIP
				;set-selection-to JSR2
		&end
		POP2


@@ 369,28 353,28 @@ BRK
@on-touch-nametable ( -> )

	( get touch tile )
	.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10**
	.Mouse/x DEI2 .nametable/x LDZ2 -- 8// ADD2 STH2
	.Mouse/y DEI2 .nametable/y LDZ2 -- #03 SFT2 #40 SFT2
	.Mouse/x DEI2 .nametable/x LDZ2 -- #03 SFT2 ADD2 STH2
	( look for changes )
	STH2kr BANK-NAMETABLE ADD2 LDA
	.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
	STH2kr BANK-COLOR ADD2 LDA
	STH2kr ;spritesheet/nametable ADD2 LDA
	.settings/focus LDZ2 ;spritesheet -- #04 SFT2 NIP
	STH2kr ;spritesheet/color ADD2 LDA
	.settings/blend LDZ NEQ2 ,&continue JCN POP2r BRK &continue
	( set sprite )
	.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
		STH2kr BANK-NAMETABLE ADD2 STA
	.settings/focus LDZ2 ;spritesheet -- #04 SFT2 NIP
		STH2kr ;spritesheet/nametable ADD2 STA
	( set color )
	.settings/blend LDZ
		STH2r BANK-COLOR ADD2 STA
		STH2r ;spritesheet/color ADD2 STA
	;draw-nametable JSR2
	SET-STATE
	#01 .state/changed STZ ;draw-state JSR2

BRK

@on-touch-toolview ( -> )
	
	RELEASE-MOUSE
	.Mouse/x DEI2 .toolview/x1 LDZ2 -- 8// NIP
	( release mouse ) #0096 DEO
	.Mouse/x DEI2 .toolview/x1 LDZ2 -- #03 SFT2 NIP
	[ #1f ] NEQk NIP ,&no-save JCN ;save-file JSR2 POP BRK &no-save
	[ #1d ] NEQk NIP ,&no-load JCN ;load-file JSR2 POP BRK &no-load
	[ #1c ] NEQk NIP ,&no-name JCN ;new-file JSR2 POP BRK &no-name


@@ 406,34 390,34 @@ BRK

@on-touch-zoomview ( -> )

	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- 8// NIP #04 ! ;&no-mod JCN2
		.Mouse/x DEI2 .zoomview/x1 LDZ2 -- 8// NIP
	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- #03 SFT2 NIP #04 ! ;&no-mod JCN2
		.Mouse/x DEI2 .zoomview/x1 LDZ2 -- #03 SFT2 NIP
		DUP #00 = .Mouse/state DEI #01 = #0101 NEQ2 ,&no-shiftup JCN
			;op-shift-tile-up ;run-selection JSR2
			SET-STATE &no-shiftup
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftup
		DUP #00 = .Mouse/state DEI #01 > #0101 NEQ2 ,&no-shiftdown JCN
			;op-shift-tile-down ;run-selection JSR2
			SET-STATE &no-shiftdown
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftdown
		DUP #01 = .Mouse/state DEI #01 = #0101 NEQ2 ,&no-shiftright JCN
			;op-shift-tile-right ;run-selection JSR2
			SET-STATE &no-shiftright
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftright
		DUP #01 = .Mouse/state DEI #01 > #0101 NEQ2 ,&no-shiftleft JCN
			;op-shift-tile-left ;run-selection JSR2
			SET-STATE &no-shiftleft
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftleft
		POP
		RELEASE-MOUSE
		( release mouse ) #0096 DEO
		,&finish JMP
	&no-mod

	( paint )
	.Mouse/x DEI2 .zoomview/x1 LDZ2 -- 4//
	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- 4//
	.Mouse/x DEI2 .zoomview/x1 LDZ2 -- #02 SFT2
	.Mouse/y DEI2 .zoomview/y1 LDZ2 -- #02 SFT2
	.settings/focus LDZ2 ADD2
	( detect erase )
	.settings/color LDZ .Mouse/state DEI #01 = * STH
	OVR2 OVR2 STHkr #00 ;toggle-pixel JSR2
	#0008 ADD2 STHr #01 ;toggle-pixel JSR2
	SET-STATE
	#01 .state/changed STZ ;draw-state JSR2

	&finish



@@ 443,8 427,8 @@ BRK

@on-touch-blendview ( -> )

	.Mouse/x DEI2 .blendview/x1 LDZ2 -- 8// NIP
	.Mouse/y DEI2 .blendview/y1 LDZ2 -- 8// NIP 4* +
	.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
		&no-set


@@ 457,25 441,25 @@ BRK
	POP
	;draw-blendview JSR2
	;draw-preview JSR2
	RELEASE-MOUSE
	( release mouse ) #0096 DEO

BRK

@on-touch-colorview ( -> )

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

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



@@ 484,28 468,28 @@ BRK
	BRK

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

BRK

@on-touch-preview ( -> )

	( y ) .Mouse/y DEI2 .preview/y1 LDZ2 -- 8// NIP
	( x ) .Mouse/x DEI2 .preview/x1 LDZ2 -- 8// NIP
	( y ) .Mouse/y DEI2 .preview/y1 LDZ2 -- #03 SFT2 NIP
	( x ) .Mouse/x DEI2 .preview/x1 LDZ2 -- #03 SFT2 NIP

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

	;redraw JSR2

	RELEASE-MOUSE
	( release mouse ) #0096 DEO

BRK



@@ 587,7 571,7 @@ JMP2r
		.selection/y1 LDZ .selection/y2 STZ
		&no-y

	.selection/x1 LDZ 8* .selection/y1 LDZ 8* ;set-selection-zoom JSR2
	.selection/x1 LDZ #30 SFT .selection/y1 LDZ #30 SFT ;set-selection-zoom JSR2

	( focus )
	.selection LDZ2 ;set-focus JSR2


@@ 603,8 587,8 @@ JMP2r
	.selection/zx LDZ + SWP 
		;set-selection-zoom JSR2
	( set from )
	.selection/zx LDZ 8/ 
	.selection/zy LDZ 8/ 
	.selection/zx LDZ #03 SFT 
	.selection/zy LDZ #03 SFT 
		;set-selection-from JSR2
	;draw-tileview-zoom JSR2



@@ 784,7 768,7 @@ JMP2r
	AUTO-X
	#1000
	&ver
		DUP #00 SWP 8** .tileview/y1 LDZ2 ADD2 .Screen/y DEO2
		DUP #00 SWP #30 SFT2 .tileview/y1 LDZ2 ADD2 .Screen/y DEO2
		.tileview/x1 LDZ2 .Screen/x DEO2
		#1000
		&hor


@@ 803,14 787,14 @@ JMP2r

@draw-tileview-zoom ( -- )

	( find focus ) .settings/focus LDZ2 BANK-SPRITESHEET -- DUP2 2// #00ff AND2 SWP2 #0080 2** DIV2 8** STH2 STH2
	( find focus ) .settings/focus LDZ2 ;spritesheet -- DUP2 #01 SFT2 #00ff AND2 SWP2 #0080 #10 SFT2 DIV2 #30 SFT2 STH2 STH2
	;pixel-icn .Screen/addr DEO2
	#10 #00
	&ver
		DUP 8* #00 SWP .tileview/y1 LDZ2 ADD2 .Screen/y DEO2
		DUP #30 SFT #00 SWP .tileview/y1 LDZ2 ADD2 .Screen/y DEO2
		#10 #00
		&hor
			DUP 8* #00 SWP .tileview/x1 LDZ2 ADD2 .Screen/x DEO2
			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


@@ 821,10 805,10 @@ JMP2r
	POP2
	POP2r POP2r
	( guides )
	#00 #07 .selection/zy LDZ - #0007 AND2 8** #0001 -- #0008 ADD2 STH2
	#00 #07 .selection/zy LDZ - #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 8** #0001 -- #0008 ADD2 STH2
	#00 #07 .selection/zx LDZ - #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



@@ 835,13 819,13 @@ JMP2r
	AUTO-X
	#1000
	&ver
		DUP #00 SWP 8** .nametable/y LDZ2 ADD2 .Screen/y DEO2
		DUP #00 SWP #30 SFT2 .nametable/y LDZ2 ADD2 .Screen/y DEO2
		.nametable/x LDZ2 .Screen/x DEO2
		#1000
		&hor
			OVR2 NIP OVR SWP [ #40 SFT + ] #00 SWP
				DUP2 BANK-NAMETABLE ADD2 LDA #00 SWP 10** BANK-SPRITESHEET ADD2 .Screen/addr DEO2
				BANK-COLOR ADD2 LDA .Screen/sprite DEO
				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
		POP2
		INC GTHk ,&ver JCN


@@ 854,7 838,7 @@ JMP2r

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

	#00 SWP 10** ROT #00 SWP ADD2 10** BANK-SPRITESHEET ADD2
	#00 SWP #40 SFT2 ROT #00 SWP ADD2 #40 SFT2 ;spritesheet ADD2

JMP2r



@@ 867,7 851,7 @@ JMP2r
	( channel 2 )
	[ STHr ] [ STH2r ] #0008 ADD2 LDA SWP
	#07 SWP - SFT #01 AND
	2*
	#10 SFT
	+

JMP2r


@@ 881,7 865,7 @@ JMP2r
	( get tile )
	SWP2 #83 SFT2 ADD2
	SWP2 #43 SFT2 ADD2
	BANK-SPRITESHEET ADD2
	;spritesheet ADD2

JMP2r



@@ 912,7 896,7 @@ JMP2r

@has-nametable ( -- bool )

	BANK-NAMETABLE STH2k #0200 ADD2 STH2r
	;spritesheet/nametable STH2k #0200 ADD2 STH2r
	&loop
		LDAk #00 = ,&continue JCN
			POP2 POP2 #01 JMP2r


@@ 930,10 914,10 @@ JMP2r
	;bigpixel-icn .Screen/addr DEO2
	#08 #00
	&ver
		DUP 4* #00 SWP .zoomview/y1 LDZ2 ADD2 .Screen/y DEO2
		DUP #20 SFT #00 SWP .zoomview/y1 LDZ2 ADD2 .Screen/y DEO2
		#08 #00
		&hor
			DUP 4* #00 SWP .zoomview/x1 LDZ2 ADD2 .Screen/x DEO2
			DUP #20 SFT #00 SWP .zoomview/x1 LDZ2 ADD2 .Screen/x DEO2
			( get pixel )
			OVR2 NIP OVR SWP
			( ch 1 )


@@ 942,7 926,7 @@ JMP2r
			( ch2 )
			[ STHr ] [ STH2r ] #0008 ADD2 LDA SWP
			#07 SWP - SFT #01 AND
			2* +
			#10 SFT +
			.Screen/sprite DEO
			INC GTHk ,&hor JCN
		POP2


@@ 968,10 952,10 @@ JMP2r
	.settings/focus LDZ2 STH2k .Screen/addr DEO2
	#04 #00
	&ver
		DUP 8* #00 SWP .preview/y1 LDZ2 ADD2 .Screen/y DEO2
		DUP #30 SFT #00 SWP .preview/y1 LDZ2 ADD2 .Screen/y DEO2
		#04 #00
		&hor
			DUP 8* #00 SWP .preview/x1 LDZ2 ADD2 .Screen/x DEO2
			DUP #30 SFT #00 SWP .preview/x1 LDZ2 ADD2 .Screen/x DEO2
			( get x,y )
			OVR2 NIP OVR SWP
			( check if within ratio )


@@ 980,7 964,7 @@ JMP2r
			#0101 NEQ2 ,&outside JCN
				( get tile ) STH2kr .Screen/addr DEO2
				( get blending ) .settings/blend LDZ .Screen/sprite DEO
				( incr ) STH2r #0008 [ .settings/depth LDZ 8* #00 SWP ADD2 ] ADD2 STH2
				( incr ) STH2r #0008 [ .settings/depth LDZ #30 SFT #00 SWP ADD2 ] ADD2 STH2
				,&resume JMP
			&outside
			;halftone-icn .Screen/addr DEO2


@@ 1022,7 1006,7 @@ JMP2r
		.Screen/x DEO2
		#10 #00
		&loop
			DUP STHkr > 8* #00 SWP ;slider-icns ADD2 .Screen/addr DEO2
			DUP STHkr > #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


@@ 1031,7 1015,7 @@ JMP2r

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

@draw-blendview ( -- )


@@ 1039,8 1023,8 @@ JMP2r
	.settings/focus LDZ2 .Screen/addr DEO2
	#10 #00
	&loop
		DUP #03 AND #00 SWP 8** .blendview/x1 LDZ2 ADD2 .Screen/x DEO2
		DUP 4/ #00 SWP 8** .blendview/y1 LDZ2 ADD2 .Screen/y DEO2
		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
		INC GTHk ,&loop JCN


@@ 1055,14 1039,14 @@ JMP2r
	.blendview/x1 LDZ2 #0010 ADD2 .Screen/x DEO2
	.blendview/y1 LDZ2 #0021 ADD2 .Screen/y DEO2
	.settings/blend LDZ #20 AND #00 ! STH
	;arrow-ver-icns STHkr #00 SWP 8** ADD2 .Screen/addr DEO2
	;arrow-ver-icns STHkr #00 SWP #30 SFT2 ADD2 .Screen/addr DEO2
	#02 STHr - .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
	;arrow-hor-icns STHkr #00 SWP 8** ADD2 .Screen/addr DEO2
	;arrow-hor-icns STHkr #00 SWP #30 SFT2 ADD2 .Screen/addr DEO2
	#02 STHr - .Screen/sprite DEO

JMP2r


@@ 1077,7 1061,7 @@ JMP2r
	#04 #00
	&loop
		.dataview/x1 LDZ2 .Screen/x DEO2
		DUP 2* #00 SWP .settings/focus LDZ2 ADD2
		DUP #10 SFT #00 SWP .settings/focus LDZ2 ADD2
			( ch1 ) LDA2k #01 ;draw-short JSR2
			.Screen/x DEI2k #0004 ADD2 ROT DEO2
			( ch2 ) #0008 ADD2 LDA2 #02 ;draw-short JSR2


@@ 1093,13 1077,13 @@ JMP2r
	.toolview/y1 LDZ2 .Screen/y DEO2
	( colors )
	.toolview/x1 LDZ2 STH2k .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #01 = #00 SWP 8** ] ADD2 .Screen/addr DEO2
	;circle-icns [ .settings/color LDZ #01 = #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 8** ] ADD2 .Screen/addr DEO2
	;circle-icns [ .settings/color LDZ #02 = #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 8** ] ADD2 .Screen/addr DEO2
	;circle-icns [ .settings/color LDZ #03 = #00 SWP #30 SFT2 ] ADD2 .Screen/addr DEO2
	#03 .Screen/sprite DEO
	( tools )
	STH2kr #0020 ADD2 .Screen/x DEO2


@@ 1109,7 1093,7 @@ JMP2r
	;tool-selector .Screen/addr DEO2
	#01 [ .settings/tool LDZ #01 = ] + .Screen/sprite DEO
	STH2r #0030 ADD2 .Screen/x DEO2
	;zoom-icns [ .settings/zoom LDZ #00 SWP 8** ADD2 ] .Screen/addr DEO2
	;zoom-icns [ .settings/zoom LDZ #00 SWP #30 SFT2 ADD2 ] .Screen/addr DEO2
	#01 [ .settings/tool LDZ #02 = ] + .Screen/sprite DEO
	( file i/o )
	;draw-state JSR2


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

JMP2r


@@ 1190,7 1174,7 @@ JMP2r

@draw-char ( char color -- )

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



@@ 1202,36 1186,36 @@ JMP2r
	
	#00 ;draw-filepath JSR2

	BANK-SPRITESHEET #1000 ;mclr JSR2
	BANK-NAMETABLE #0200 ;mclr JSR2
	;spritesheet #1000 ;mclr JSR2
	;spritesheet/nametable #0200 ;mclr JSR2

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

	RESET-STATE
	#00 .state/changed STZ ;draw-state JSR2
	;redraw JSR2

JMP2r

@load-file ( -- )

	BANK-SPRITESHEET #1000 ;mclr JSR2
	BANK-NAMETABLE #0200 ;mclr JSR2
	;spritesheet #1000 ;mclr JSR2
	;spritesheet/nametable #0200 ;mclr JSR2

	( spritesheet )
	;filepath .File/name DEO2
	#1000 .File/length DEO2
	BANK-SPRITESHEET .File/load DEO2
	;spritesheet .File/load DEO2

	( nametable )
	;nametable-ext ;filepath ;scap JSR2 #0004 ;mcpy JSR2
	;filepath .File/name DEO2
	#0200 .File/length DEO2
	BANK-NAMETABLE .File/load DEO2
	;spritesheet/nametable .File/load DEO2
	;filepath ;scap JSR2 #0004 -- #0004 ;mclr JSR2

	RESET-STATE
	#00 .state/changed STZ ;draw-state JSR2
	;redraw JSR2

JMP2r


@@ 1241,18 1225,18 @@ JMP2r
	( spritesheet )
	;filepath .File/name DEO2
	#1000 .File/length DEO2
	BANK-SPRITESHEET .File/save DEO2
	;spritesheet .File/save DEO2

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

	RESET-STATE
	#00 .state/changed STZ ;draw-state JSR2
	;save-theme JSR2

JMP2r


@@ 1549,3 1533,7 @@ JMP2r
	0008 0808 0808 0800 0030 1008 0810 3000
	0000 0032 4c00 0000 3c42 99a1 a199 423c

|8000 
	@spritesheet $1000 
	&nametable $100 
	&color