~rabbits/nasu

2a2a1fb59da83007db18a430f3859b0febb8e758 — neauoire 11 months ago fe40e03
Ported to Screen/auto
1 files changed, 49 insertions(+), 60 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +49 -60
@@ 1,8 1,6 @@
( Nasu )

%+  { ADD }  %-  { SUB }  %*  { MUL }  %/  { DIV }
%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
%-- { SUB2 } %** { MUL2 } %// { DIV2 }
%-- { SUB2 }

( devices )



@@ 58,17 56,14 @@
	#0a6f .System/r DEO2
	#05cf .System/g DEO2
	#0caf .System/b DEO2

	( size )
	#0130 .Screen/width DEO2
	#00e0 .Screen/height DEO2

	( vectors )
	;on-console  .Console/vector DEO2
	;on-button   .Controller/vector DEO2
	;on-mouse    .Mouse/vector DEO2
	;on-frame    .Screen/vector DEO2

	( set defaults )
	#0100 .frame/width STZ2
	#00c0 .frame/height STZ2


@@ 79,7 74,7 @@
	#01 .settings/tool STZ
	#00 .settings/brush STZ
	#0000 ;set-focus JSR2

	( place )
	.Screen/width DEI2 #01 SFT2 .frame/width LDZ2 #01 SFT2 -- .Screen/height DEI2 #01 SFT2 .frame/height LDZ2 #01 SFT2 -- .frame/width LDZ2 .frame/height LDZ2 ;frame ;set-size JSR2
	.frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #0030 ADD2 #10 #00 SWP #30 SFT2 #0080 ;tileview ;set-size JSR2
	.frame/x1 LDZ2 #0082 ADD2 .frame/y1 LDZ2 #0030 ADD2 #007f #007f ;nametable ;set-size JSR2


@@ 89,20 84,21 @@
	.frame/x1 LDZ2 #008f ADD2 .frame/y1 LDZ2 #0020 #0028 ;blendview ;set-size JSR2
	.frame/x1 LDZ2 #00bf ADD2 .frame/y1 LDZ2 #0048 #0020 ;dataview ;set-size JSR2
	.tileview/x1 LDZ2 .tileview/y2 LDZ2 #0008 ADD2 #0100 #0008 ;toolview ;set-size JSR2

	( outlines )
	.frame/x1 LDZ2 #0002 -- .workspace-frame/x1 STZ2
	.tileview/y1 LDZ2 #0001 -- .workspace-frame/y1 STZ2
	.frame/x2 LDZ2 #0002 ADD2 .workspace-frame/x2 STZ2
	.tileview/y2 LDZ2 INC2 .workspace-frame/y2 STZ2

	.zoomview/x1 LDZ2 #0001 -- .zoomview-frame/x1 STZ2
	.zoomview/y1 LDZ2 #0001 -- .zoomview-frame/y1 STZ2
	.zoomview/x2 LDZ2 #0002 ADD2 .zoomview-frame/x2 STZ2
	.zoomview/y2 LDZ2 #0007 -- .zoomview-frame/y2 STZ2

	( let's begin! )
	;load-theme JSR2
	;new-file JSR2

	.frame/x1 LDZ2 #0080 ADD2 .tileview/y1 LDZ2 #0f ;line-ver-dashed JSR2

BRK

@untrap ( -- )


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

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

BRK


@@ 275,9 271,9 @@ BRK
	.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 EQU *
	.Mouse/x DEI2 .tileview/x1 LDZ2 SUB2
	.Mouse/y DEI2 .tileview/y1 LDZ2 SUB2
	.settings/color LDZ .Mouse/state DEI #01 EQU MUL
		;put-pixel JSR2
	#01 .state/changed STZ ;draw-state JSR2
	;redraw JSR2


@@ 300,7 296,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 EQU * ;put-pixel JSR2
		.settings/color LDZ .Mouse/state DEI #01 EQU MUL ;put-pixel JSR2
		#01 .state/changed STZ ;draw-state JSR2
		;redraw JSR2



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


@@ 407,7 403,7 @@ BRK
@on-touch-blendview ( -> )

	.Mouse/x DEI2 .blendview/x1 LDZ2 -- #03 SFT2 NIP
	.Mouse/y DEI2 .blendview/y1 LDZ2 -- #03 SFT2 NIP #20 SFT +
	.Mouse/y DEI2 .blendview/y1 LDZ2 -- #03 SFT2 NIP #20 SFT ADD
	DUP #0f GTH ,&no-set JCN
		DUP .settings/blend LDZ #b0 AND ADD .settings/blend STZ
		&no-set


@@ 450,10 446,10 @@ BRK
		.settings/color LDZ STHk #01 SFT ADD DEI
		STHr #01 AND STHk
		#0f SWP [ #60 SFT SFT ] AND
		STHr #00 =
		STHr #00 EQU
		.Mouse/x DEI2 .colorview/x1 LDZ2 -- #01 SFT2 NIP
		( clamp to #0f ) DUP #01 GTH -
		SWP [ #60 SFT SFT ] +
		( clamp to #0f ) DUP #01 GTH SUB
		SWP [ #60 SFT SFT ] ADD
	JMP2r

BRK


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

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

	;redraw JSR2


@@ 723,20 719,6 @@ JMP2r
	;draw-nametable JSR2
	;draw-zoomview JSR2

	.frame/x1 LDZ2 #0080 ADD2 .tileview/y1 LDZ2 .tileview/y2 LDZ2 INC2 #03 ;line-ver-dashed JSR2

JMP2r

@is-selected ( x y -- flag )

	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

JMP2r

@draw-tileview ( -- )


@@ 789,13 771,20 @@ JMP2r
		INC GTHk ,&ver JCN
	POP2
	POP2r POP2r
	( guides )
	( guide hor )
	#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
	.tileview/x1 LDZ2 .tileview/y1 LDZ2 STH2kr ADD2 #0a ;line-hor-dashed JSR2
	.selection/zy LDZ #07 AND #00 EQU ,&skip-hor JCN
		.tileview/x1 LDZ2 .tileview/y1 LDZ2 STH2kr ADD2 #0040 ADD2 #0a ;line-hor-dashed JSR2
		&skip-hor
	POP2r
	( guide ver )
	#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
	.tileview/x1 LDZ2 STH2kr ADD2 .tileview/y1 LDZ2 #0a ;line-ver-dashed JSR2
	.selection/zx LDZ #07 AND #00 EQU ,&skip-ver JCN
		.tileview/x1 LDZ2 STH2kr ADD2 #0040 ADD2 .tileview/y1 LDZ2 #0a ;line-ver-dashed JSR2
		&skip-ver
	POP2r

JMP2r



@@ 837,7 826,7 @@ JMP2r
	[ STHr ] [ STH2r ] #0008 ADD2 LDA SWP
	#07 SWP SUB SFT #01 AND
	#10 SFT
	+
	ADD

JMP2r



@@ 911,7 900,7 @@ JMP2r
			( ch2 )
			[ STHr ] [ STH2r ] #0008 ADD2 LDA SWP
			#07 SWP SUB SFT #01 AND
			#10 SFT +
			#10 SFT ADD
			.Screen/sprite DEO
			INC GTHk ,&hor JCN
		POP2


@@ 1113,7 1102,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 * ADD .Screen/sprite DEO
	#05 .state/changed LDZ #0a MUL ADD .Screen/sprite DEO

JMP2r



@@ 1126,7 1115,7 @@ JMP2r
	;filepath
	( scroll )
		DUP2 ;slen JSR2 #0013 GTH2 #00 SWP
		;filepath ;slen JSR2 #0013 -- ** ADD2
		;filepath ;slen JSR2 #0013 -- MUL2 ADD2

	STHr ,draw-text JSR



@@ 1155,7 1144,7 @@ JMP2r

@draw-hex ( char color -- )

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

@draw-char ( char color -- )



@@ 1362,27 1351,27 @@ JMP2r

JMP2r

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

	STH .Screen/y DEO2 SWP2
	&loop
		DUP2 .Screen/x DEO2
		STHkr .Screen/pixel DEO
		INC2 INC2 GTH2k ,&loop JCN
	POP2 POP2 POPr
	STH .Screen/y DEO2 .Screen/x DEO2
	;&sprite .Screen/addr DEO2
	#f2 .Screen/auto DEO
	STHr .Screen/sprite DEO
	#00 .Screen/auto DEO

JMP2r
	&sprite aa00 0000 0000 0000

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

	STH ROT2 .Screen/x DEO2 SWP2
	&loop
		DUP2 .Screen/y DEO2
		STHkr .Screen/pixel DEO
		INC2 INC2 GTH2k ,&loop JCN
	POP2 POP2 POPr
	STH .Screen/y DEO2 .Screen/x DEO2
	;&sprite .Screen/addr DEO2
	#f1 .Screen/auto DEO
	STHr .Screen/sprite DEO
	#00 .Screen/auto DEO

JMP2r
	&sprite 8000 8000 8000 8000

( memory generics )



@@ 1412,7 1401,7 @@ JMP2r

@slen ( str* -- len* )

	DUP2 ,scap JSR SWP2 --
	DUP2 ,scap JSR SWP2 SUB2

JMP2r