~rabbits/nasu

4d1f677598516479d47b099df0100a746004ad10 — neauoire 1 year, 1 month ago 0ab2dd6
Optimized string drawing
1 files changed, 48 insertions(+), 37 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +48 -37
@@ 277,7 277,7 @@ BRK
		.Mouse/x DEI2 .Mouse/y DEI2 .zoomview ;within-rect JSR2 ;on-touch-zoomview JCN2
		&no-touch

	( release-record ) 
	( release-record )
	#0000 .Mouse/state DEO .cursor/last STZ

BRK


@@ 291,7 291,7 @@ BRK
	( 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 = *
		;put-pixel JSR2
	SET-STATE
	;redraw JSR2


@@ 495,14 495,14 @@ RTN

@set-color ( color -- )

	.settings/color STZ 
	.settings/color STZ
	;draw-toolview JSR2

RTN

@set-tool ( tool -- )

	.settings/tool STZ 
	.settings/tool STZ
	;draw-toolview JSR2

RTN


@@ 1035,7 1035,7 @@ RTN
	#04 #00
	&loop
		.dataview/x1 LDZ2 .Screen/x DEO2
		DUP 2* TOS .settings/focus LDZ2 ++ 
		DUP 2* TOS .settings/focus LDZ2 ++
			( ch1 ) LDA2k #01 ;draw-short JSR2
			.Screen/x DEI2k #0004 ++ ROT DEO2
			( ch2 ) #0008 ++ LDA2 #02 ;draw-short JSR2


@@ 1099,63 1099,74 @@ RTN

RTN

@draw-state ( -- )

	.toolview/x2 LDZ2 #0008 -- .Screen/x DEO2
	.toolview/y1 LDZ2 .Screen/y DEO2
	;save-icn .Screen/addr DEO2
	#0f05 .state/changed LDZ #01 JCN SWP POP .Screen/sprite DEO

RTN

@draw-filepath ( color -- )

	STH
	.toolview/x1 LDZ2 #0040 ++ .Screen/x DEO2
	.toolview/y1 LDZ2 .Screen/y DEO2
	AUTO-X
	;filepath 

	;filepath
	( scroll )
		DUP2 ;slen JSR2 #0013 >> TOS 
		DUP2 ;slen JSR2 #0013 >> TOS
		;filepath ;slen JSR2 #0013 -- ** ++
	&loop
		LDAk #20 - TOS 8** ;font ++ .Screen/addr DEO2
		STHkr .Screen/sprite DEO
		INC2 LDAk ,&loop JCN
	POP2
	AUTO-NONE
	POPr
	( clear last )
	#00 .Screen/sprite DEO

	STHr ,draw-text JSR

RTN

@draw-state ( -- )
@draw-text ( text* color -- )

	.toolview/x2 LDZ2 #0008 -- .Screen/x DEO2
	.toolview/y1 LDZ2 .Screen/y DEO2
	;save-icn .Screen/addr DEO2
	#0f05 .state/changed LDZ #01 JCN SWP POP .Screen/sprite DEO
	STH
	&while
		LDAk STHkr ,draw-char JSR
		INC2 LDAk ,&while JCN
	POP2
	POPr

RTN

@draw-short ( short* color -- )

	STH
	SWP STHkr ,draw-byte JSR
	STHr ,draw-byte JSR

RTN
	STH 
	SWP STHkr ,draw-byte JSR 
	STHr 

@draw-byte ( byte color -- )

	STH DUP
		#04 SFT STHkr ,draw-hex JSR
		#0f AND STHr ,draw-hex JSR

RTN
	STH 
	DUP #04 SFT STHkr ,draw-hex JSR #0f AND 
	STHr 

@draw-hex ( char color -- )

	SWP 
	,&parse JSR TOS 8** ;font ++ .Screen/addr DEO2
	,hexchar JSR 
	SWP

@draw-char ( char color -- )

	SWP #20 - TOS 8** ;font ++ .Screen/addr DEO2
	.Screen/sprite DEO
	.Screen/x DEI2k #0008 ++ ROT DEO2

RTN
	&parse ( value -- char )
		DUP #09 > ,&above JCN #10 + RTN &above #37 + RTN

@hexchar ( char -- hexchar )

	DUP #09 > ,&above JCN 
		#30 + RTN 
	&above #57 +

RTN

( file )



@@ 1288,8 1299,8 @@ RTN

@cut-snarf ( -- )

	;copy-snarf JSR2 
	;op-erase ;run-selection JSR2 
	;copy-snarf JSR2
	;op-erase ;run-selection JSR2
	RESET-SELECTION

RTN