~rabbits/nasu

c4a88766f6afc7559727da986004d28112d221eb — neauoire 1 year, 9 months ago 216fadf
Changing the design to match the C version more
2 files changed, 169 insertions(+), 64 deletions(-)

M example.chr
M nasu.usm
M example.chr => example.chr +0 -0
M nasu.usm => nasu.usm +169 -64
@@ 21,11 21,17 @@
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }

%HOR { #20 }
%VER { #10 }
%WIDTH { HOR TOS #0008 ** }
%HEIGHT { VER TOS #0008 ** }

%RTN { JMP2r }
%STEP8 { #0033 SFT2 }

%SFL { #40 SFT SFT }
%MOD { DUP2 / * - }
%MOD2 { OVR2 OVR2 // ** -- }

%TOB { SWP POP } %TOS { #00 SWP }



@@ 36,7 42,8 @@
%GTS2  { #8000 ++ SWP2 #8000 ++ << }

%INCR { SWP #01 + SWP }
%GET-ITERATORS { OVR2 OVR2 POP SWP POP SWP } ( ? SWP2k POP SWP POP )
%INCR2 { SWP2 #0001 ++ SWP2 }
%GET-ITERATORS { SWP2k POP SWP POP } 

%SIZE-TO-RECT {
	STH2 STH2 OVR2 STH2r ++ OVR2 STH2r ++


@@ 81,10 88,12 @@
( interface )
@bankview  [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@editview  [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@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 ]
@tileview  [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]

@rect [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@mouse [ &x $2 &y $2 ]


@@ 107,8 116,8 @@
	;on-transfer .File/vector DEO2

	( set defaults )
	#0130 .frame/width STZ2
	#00a8 .frame/height STZ2
	HOR TOS #0008 ** .frame/width STZ2
	VER TOS #0008 ** #0040 ++ .frame/height STZ2
	#01 .settings/brush STZ
	#32 .settings/ratio STZ
	BANK .settings/page STZ2


@@ 120,14 129,30 @@
	.frame/width LDZ2 .frame/height LDZ2
	SIZE-TO-RECT ;frame SET-RECT

	.frame/x1 LDZ2 #0010 ++ .frame/y1 LDZ2 #0080 #0080 SIZE-TO-RECT ;bankview SET-RECT
	.frame/x2 LDZ2 #0098 -- .frame/y1 LDZ2 #0080 #0080 SIZE-TO-RECT ;editview SET-RECT
	.frame/x1 LDZ2 #0010 ++ .frame/y2 LDZ2 #001a -- #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
	.frame/x1 LDZ2 #0040 ++ .frame/y2 LDZ2 #001a -- #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
	.frame/x1 LDZ2 #0070 ++ .frame/y2 LDZ2 #001a -- #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
	.frame/x1 LDZ2 #00a0 ++ .frame/y2 LDZ2 #001a -- #0040 #0020 SIZE-TO-RECT ;dataview SET-RECT
	.frame/x1 LDZ2 #0010 ++ .frame/y2 LDZ2 #0080 -- #0080 #0080 SIZE-TO-RECT ;bankview SET-RECT
	.frame/x2 LDZ2 #0090 -- .frame/y2 LDZ2 #0080 -- #0080 #0080 SIZE-TO-RECT ;editview SET-RECT
	.frame/x1 LDZ2 .frame/y2 LDZ2 #0008 -- HOR TOS #0008 ** #0008 SIZE-TO-RECT ;toolview SET-RECT

	.frame/x1 LDZ2 .frame/y1 LDZ2 #0030 ++ #0100 #0080 SIZE-TO-RECT ;tileview SET-RECT

	.frame/x1 LDZ2 .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
	.frame/x1 LDZ2 #0030 ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
	.frame/x1 LDZ2 #0060 ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
	.frame/x1 LDZ2 #0090 ++ .frame/y1 LDZ2 #0048 #0020 SIZE-TO-RECT ;dataview SET-RECT


	.tileview/x1 LDZ2 #0002 -- 
	.tileview/y1 LDZ2 #0002 -- 
	.tileview/x2 LDZ2 #0001 ++ 
	.tileview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
(


	.frame/x1 LDZ2 #0002 -- 
	.frame/y1 LDZ2 #0002 -- 
	.frame/x2 LDZ2 #0001 ++ 
	.frame/y2 LDZ2 #0001 ++ #02 ;line-rect JSR2

	( editview grid )
	.editview/x1 LDZ2 DUP2 #0080 ++ .editview/y1 LDZ2 #0020 ++ #03 ;line-hor JSR2
	.editview/x1 LDZ2 DUP2 #0080 ++ .editview/y1 LDZ2 #0040 ++ #03 ;line-hor JSR2
	.editview/x1 LDZ2 DUP2 #0080 ++ .editview/y1 LDZ2 #0060 ++ #03 ;line-hor JSR2


@@ 135,13 160,24 @@
	.editview/x1 LDZ2 #0040 ++ .editview/y1 LDZ2 DUP2 #0080 ++ #03 ;line-ver JSR2
	.editview/x1 LDZ2 #0060 ++ .editview/y1 LDZ2 DUP2 #0080 ++ #03 ;line-ver JSR2

	(
	
	.bankview/x1 LDZ2 #0002 -- 
	.bankview/y1 LDZ2 #0002 -- 
	.bankview/x2 LDZ2 #0001 ++ 
	.bankview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2

	.editview/x1 LDZ2 #0002 -- 
	.editview/y1 LDZ2 #0002 -- 
	.editview/x2 LDZ2 #0001 ++ 
	.editview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2

	.frame/x1 LDZ2 .frame/x2 LDZ2 .frame/y1 LDZ2 #0032 ++ #03 ;line-hor JSR2

	.toolview/x1 LDZ2 #0002 -- 
	.toolview/y1 LDZ2 #0002 -- 
	.toolview/x2 LDZ2 #0001 ++ 
	.toolview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2

	
	.blendview/x1 LDZ2 #0002 -- 
	.blendview/y1 LDZ2 #0002 -- 
	.blendview/x2 LDZ2 #0001 ++ 


@@ 160,15 196,14 @@
	.dataview/x1 LDZ2 #0002 -- 
	.dataview/y1 LDZ2 #0002 -- 
	.dataview/x2 LDZ2 #0001 ++ 
	.dataview/y2 LDZ2 #0007 -- #03 ;line-rect JSR2 

	.editview/x1 LDZ2 #0002 -- 
	.editview/y1 LDZ2 #0002 -- 
	.editview/x2 LDZ2 #0001 ++ 
	.editview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2

	)
	.dataview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2 

	.frame/x1 LDZ2 #0002 -- 
	.frame/y1 LDZ2 #0002 -- 
	.frame/x2 LDZ2 #0001 ++ 
	.frame/y2 LDZ2 #0001 ++ #02 ;line-rect JSR2
	
)
	#01 .settings/blending STZ

	;filepath1 .File/name DEO2 #1000 .File/length DEO2 BANK .File/load DEO2


@@ 217,19 252,10 @@ BRK

	( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]

	( toolbar )
	.Mouse/y DEI2 .bankview/y1 LDZ2 #0010 -- -- #0008 // #0000 !! ;&no-toolbar-click JCN2
		( brush )
		.Mouse/x DEI2 .bankview/x1 LDZ2 -- #0008 // #000d << ,&no-brush-click JCN
		.Mouse/x DEI2 .bankview/x1 LDZ2 -- #0008 // #000f >> ,&no-brush-click JCN
			( select ) .mouse/x LDZ2 .bankview/x1 LDZ2 -- #0008 // #000d -- TOB .settings/tool STZ
		&no-brush-click
		.Mouse/x DEI2 .bankview/x1 LDZ2 -- #0008 // #0005 !! ,&no-toggle-depth JCN
			;toggle-depth JSR2
		&no-toggle-depth
			( release ) #00 .Mouse/state DEO
			;redraw JSR2 BRK
	&no-toolbar-click
	( tileview )
	.Mouse/x DEI2 DUP2 .tileview/x1 LDZ2 >> ROT ROT .tileview/x2 LDZ2 << #0101 ==
	.Mouse/y DEI2 DUP2 .tileview/y1 LDZ2 >> ROT ROT .tileview/y2 LDZ2 << #0101 ==
	#0101 == ;on-touch-tileview JCN2

	( bankview )
	.Mouse/x DEI2 DUP2 .bankview/x1 LDZ2 >> ROT ROT .bankview/x2 LDZ2 << #0101 ==


@@ 241,6 267,11 @@ BRK
	.Mouse/y DEI2 DUP2 .editview/y1 LDZ2 >> ROT ROT .editview/y2 LDZ2 << #0101 ==
	#0101 == ;on-touch-editview JCN2

	( toolview )
	.Mouse/x DEI2 DUP2 .toolview/x1 LDZ2 >> ROT ROT .toolview/x2 LDZ2 << #0101 ==
	.Mouse/y DEI2 DUP2 .toolview/y1 LDZ2 >> ROT ROT .toolview/y2 LDZ2 << #0101 ==
	#0101 == ;on-touch-toolview JCN2

	( dataview )
	.Mouse/x DEI2 DUP2 .dataview/x1 LDZ2 >> ROT ROT .dataview/x2 LDZ2 << #0101 ==
	.Mouse/y DEI2 DUP2 .dataview/y1 LDZ2 >> ROT ROT .dataview/y2 LDZ2 << #0101 ==


@@ 263,6 294,15 @@ BRK

BRK

@on-touch-tileview ( -> )
	
	.Mouse/x DEI2 .tileview/x1 LDZ2 -- 
	.Mouse/y DEI2 .tileview/y1 LDZ2 -- 
	;get-addr JSR2 LDA
	DEBUG

BRK

@on-touch-bankview ( -> )
	
	.settings/tool LDZ #01 ! ,&not-copy-mode JCN


@@ 310,6 350,12 @@ BRK

BRK

@on-touch-toolview ( -> )
	
	#aa DEBUG

BRK

@on-touch-dataview ( -> )
	
	.Mouse/x DEI2 .dataview/x1 LDZ2 -- #0008 // TOB 


@@ 450,36 496,82 @@ RTN

@redraw ( -- )
	
	(
	;draw-bankview JSR2
	;draw-editview JSR2 
	)

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


	;draw-tileview JSR2

RTN

@draw-bankview ( -- )
@draw-tileview ( -- )
	
	#0000 HEIGHT
	&ver
		OVR2 STH2
		#0000 WIDTH
		&hor
			( have iterators )
			OVR2 STH2kr
			( get pixel )
			OVR2 OVR2 ,get-pixel JSR
			( put pixel )
			;put-pixel JSR2
			INCR2
			LTH2k ,&hor JCN
		POP2 POP2
		POP2r
		INCR2
		LTH2k ,&ver JCN
	POP2 POP2

	( toolbar )
RTN

	.bankview/y1 LDZ2 #0010 -- .Screen/y DEO2
@get-pixel ( x* y* -- color )
	
	( get address )
	OVR2 SWP2 ,get-addr JSR LDA
	( get mod of x* )
	ROT ROT TOB #08 MOD
	( get color )
	#07 SWP - SFT #01 AND

	.bankview/x1 LDZ2 #0028 ++ .Screen/x DEO2
	;depth_icns #00 .settings/depth LDZ #0008 ** ++ .Screen/addr DEO2
	#23 .Screen/color DEO
RTN

	.bankview/x1 LDZ2 #0068 ++ .Screen/x DEO2
	;tool_selector .Screen/addr DEO2
	#21 .settings/tool LDZ #00 = + .Screen/color DEO
@put-pixel ( x* y* color -- )

	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	;tool_hand .Screen/addr DEO2
	#21 .settings/tool LDZ #01 = + .Screen/color DEO
	STH
	.tileview/y1 LDZ2 ++ .Screen/y DEO2
	.tileview/x1 LDZ2 ++ .Screen/x DEO2
	STHr
	.Screen/color DEO

	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	;tool_eraser .Screen/addr DEO2
	#21 .settings/tool LDZ #02 = + .Screen/color DEO
RTN

@get-addr ( x* y* -- addr* )
	
	( get row )
	DUP2 #0008 MOD2 

	( get tile )
	SWP2 #0008 // WIDTH #0002 ** ** ++

	SWP2 STEP8 
	#0002 ** 
	++ 
	BANK ++

RTN

@draw-bankview ( -- )

	( guides )
	.bankview/x1 LDZ2 #0010 -- .Screen/x DEO2


@@ 523,14 615,12 @@ RTN
		#00 #04
		&hor
			OVR #20 * TOS .editview/x1 LDZ2 ++ .Screen/x DEO2
			( get x,y )
			GET-ITERATORS
			( check if within ratio )
			.settings/ratio LDZ #0f AND < STH
			.settings/ratio LDZ #04 SFT < STHr
			#0101 !! ,&outside JCN 
				STH2kr .Screen/addr DEO2
				#01 ,draw-tile JSR
				,draw-tile JSR
				( incr ) STH2r #0010 ++ STH2
			&outside
			( incr ) INCR


@@ 543,14 633,12 @@ RTN

RTN

@draw-tile ( color -- )
@draw-tile ( -- )

	STH
	#00 #20
	#00 #08
	&ver
		#00 #20
		#00 #08
		&hor

			( get x,y )
			GET-ITERATORS
			( get address )


@@ 558,23 646,40 @@ RTN
			( after this, +R XY )
			SWP2 SWP STH
			( got sprite line )
			#04 / TOS ++ LDA
			TOS ++ LDA
			( get pixel )
			STHr #04 /
			STHr 
			#07 SWP - SFT #01 AND
			.Screen/color DEO

			#0001 .Screen/x DEI2 ++ .Screen/x DEO2
			( move ) #0004 .Screen/x DEI2 ++ .Screen/x DEO2
			( incr ) INCR
			LTHk ,&hor JCN
		POP2
		#0001 .Screen/y DEI2 ++ .Screen/y DEO2
		.Screen/x DEI2 #0020 -- .Screen/x DEO2
		( move ) #0004 .Screen/y DEI2 ++ .Screen/y DEO2
		( rewind ) .Screen/x DEI2 #0020 -- .Screen/x DEO2
		( incr ) INCR
		LTHk ,&ver JCN
	POP2
	.Screen/y DEI2 #0020 -- .Screen/y DEO2
	POPr
	( rewind ) .Screen/y DEI2 #0020 -- .Screen/y DEO2

RTN

@draw-toolview ( -- )
	
	.toolview/y1 LDZ2 .Screen/y DEO2

	.toolview/x1 LDZ2 .Screen/x DEO2
	;tool_selector .Screen/addr DEO2
	#21 .settings/tool LDZ #00 = + .Screen/color DEO

	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	;tool_hand .Screen/addr DEO2
	#21 .settings/tool LDZ #01 = + .Screen/color DEO

	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	;tool_eraser .Screen/addr DEO2
	#21 .settings/tool LDZ #02 = + .Screen/color DEO

RTN



@@ 701,7 806,7 @@ RTN
		.dataview/x1 LDZ2 .Screen/x DEO2
		OVR #08 * TOS .dataview/y1 LDZ2 ++ .Screen/y DEO2
		OVR #02 * TOS GET-ADDR ++ LDA2 #23 ;draw-short JSR2
		.dataview/x1 LDZ2 #0020 ++ .Screen/x DEO2
		.dataview/x1 LDZ2 #0028 ++ .Screen/x DEO2
		OVR #02 * TOS GET-ADDR ++ #0008 ++ LDA2 #23 ;draw-short JSR2
		INCR
		LTHk ,&loop JCN