~rabbits/nasu

197a7a8bbb47eaac3ba96cec92f805d872f42d55 — neauoire 1 year, 6 months ago 803883b
Removed the last MUL/DIV opcodes
1 files changed, 32 insertions(+), 24 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +32 -24
@@ 17,9 17,9 @@
	ctrl+v - paste
 )

%+  { ADD }  %-  { SUB }  %*  { MUL }  
%+  { ADD }  %-  { SUB }
%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
%++ { ADD2 } %-- { SUB2 } 
%++ { ADD2 } %-- { SUB2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }

%DEBUG  { ;print-hex JSR2 #0a .Console/write DEO }


@@ 29,6 29,8 @@
%4*  { #20 SFT } %4/  { #02 SFT }
%8*  { #30 SFT } %8/  { #03 SFT }
%20* { #50 SFT } 
%40* { #60 SFT }
%80* { #70 SFT }

%2**  { #10 SFT2 } %2//  { #01 SFT2 }
%4//  { #02 SFT2 }


@@ 38,11 40,15 @@
%100** { #80 SFT2 }
%200** { #90 SFT2 } %200// { #09 SFT2 }

%TOS  { #00 SWP }  
%MOD  { DIVk MUL SUB } %MOD2 { DIV2k MUL2 SUB2 }
%2MOD { #01 AND }
%4MOD { #03 AND }
%8MOD { #07 AND }
%8MOD2 { #0007 AND2 }
%100MOD2 { #00ff AND2 }

%TOS  { #00 SWP }

%RTN { JMP2r }
%MOD8 { #07 AND }
%ROL { DUP #07 SFT SWP #10 SFT + }
%ROR { DUP #70 SFT SWP #01 SFT + }
%SFL { #40 SFT SFT }


@@ 51,16 57,18 @@
%TOGGLE { LDZk #00 = SWP STZ }
%GET-ITER { OVR2 NIP OVR SWP }
%BRK? { #01 JCN BRK }
%SWP? { #01 JCN SWP }

%HOR    { #20 }    %VER    { #10 }
%WIDTH  { #0100 } 
%LENGTH { #2000 }
%DATA-CLIP { #f000 } ( copy/paste )

%BANK { #2000 }
%DATA-CLIP { #f000 }
%BANK      { #2000 }
%BANK-TEMP { #4000 }

%GET-COLOR     { .settings/color LDZ STHk 2/ + DEI #01 STHr #01 AND - 4* SFT #0f AND }
%GET-POSITION  { .settings/focus LDZ2 BANK -- DUP2 2// WIDTH MOD2 SWP2 200// 8** }
%GET-POSITION  { .settings/focus LDZ2 BANK -- DUP2 2// WIDTH 100MOD2 SWP2 200// 8** }
%ADD-POSITIONS { ROT2 ++ ROT2 ROT2 ++ SWP2 }
%RELEASE-MOUSE { #00 .Mouse/state DEO }
%RESET-SELECTION { .selection/x1 LDZ2 .selection/x2 STZ2 }


@@ 578,12 586,12 @@ BRK

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

BRK


@@ 772,9 780,9 @@ RTN
			DUP TOS 8** .tileview/x1 LDZ2 ++ .Screen/x DEO2
			GET-ITER
				DUP2 GET-ADDR .Screen/addr DEO2
			;is-selected JSR2 #0d *
			#0d00 SWP2 ;is-selected JSR2 SWP? POP
			.settings/blending LDZ +
			.settings/depth LDZ #80 * +
			.settings/depth LDZ 80* +
				#00 + .Screen/sprite DEO
			#01 + GTHk ,&hor JCN
		POP2


@@ 814,7 822,7 @@ RTN
		DUP STH
		.tileview/x1 LDZ2 
			.tileview/x2 LDZ2 
			.tileview/y1 LDZ2 STHr #01 + #40 * #01 - TOS ++ 
			.tileview/y1 LDZ2 STHr #01 + 40* #01 - TOS ++ 
			#02 
			;line-hor JSR2
		#01 + GTHk ,&guides-hor JCN


@@ 823,7 831,7 @@ RTN
	HOR 8/ #01 - #00
	&guides-ver
		DUP STH
		.tileview/x1 LDZ2 STHr #01 + #40 * #01 - TOS ++ 
		.tileview/x1 LDZ2 STHr #01 + 40* #01 - TOS ++ 
			.tileview/y1 LDZ2 
			.tileview/y2 LDZ2 
			#02 


@@ 837,7 845,7 @@ RTN
	
	( channel 1 )
	OVR2 SWP2 ,get-addr JSR [ STH2k ] LDA
	ROT ROT NIP MOD8 [ STHk ]
	ROT ROT NIP 8MOD [ STHk ]
	#07 SWP - SFT #01 AND
	( channel 2 )
	[ STHr ] [ STH2r ] #0008 ++ LDA SWP 


@@ 850,7 858,7 @@ RTN
@get-addr ( x* y* -- addr* )
	
	( get row )
	DUP2 #0008 MOD2 
	DUP2 8MOD2 
	( get tile )
	SWP2 8// 200** ++
	SWP2 STEP8 2** ++ 


@@ 878,11 886,11 @@ RTN
	STH SWP2 NIP
	STHr SWP 
	STH2r SFT #01 AND ,&do-set JCN
		( mask ) #01 #07 ROT MOD8 - SFL #ff EOR AND
		( mask ) #01 #07 ROT 8MOD - SFL #ff EOR AND
		( save ) ROT ROT STA
		RTN
	&do-set
		( mask ) #01 #07 ROT MOD8 - SFL ORA
		( mask ) #01 #07 ROT 8MOD - SFL ORA
		( save ) ROT ROT STA

RTN


@@ 952,16 960,16 @@ RTN
	.blendview/x1 LDZ2 .Screen/x DEO2
	.blendview/y2 LDZ2 #0001 ++ .Screen/y DEO2
	( get blending ) .settings/blending LDZ
	( get depth ) .settings/depth LDZ #80 *
	( get depth ) .settings/depth LDZ 80*
	( draw ) + #01 ;draw-byte JSR2

	.settings/focus LDZ2 .Screen/addr DEO2
	#10 #00
	&loop
		DUP #04 MOD #00 SWP 8** .blendview/x1 LDZ2 ++ .Screen/x DEO2
		DUP 4MOD #00 SWP 8** .blendview/x1 LDZ2 ++ .Screen/x DEO2
		DUP 4/ #00 SWP 8** .blendview/y1 LDZ2 ++ .Screen/y DEO2
		#00 .Screen/sprite DEO
		DUP #00 + .settings/depth LDZ #80 * + .Screen/sprite DEO
		DUP #00 + .settings/depth LDZ 80* + .Screen/sprite DEO
		#01 + GTHk ,&loop JCN
	POP2



@@ 990,7 998,7 @@ RTN
			#0101 !! ,&outside JCN 
				( get tile ) STH2kr .Screen/addr DEO2
				( get blending ) .settings/blending LDZ
				( get depth ) .settings/depth LDZ #80 *
				( get depth ) .settings/depth LDZ 80*
				( draw ) + .Screen/sprite DEO
				( incr ) STH2r #0008 [ .settings/depth LDZ 8* TOS ++ ] ++ STH2
				,&resume JMP


@@ 1146,7 1154,7 @@ RTN
	.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
	#0f05 .state/changed LDZ SWP? POP .Screen/sprite DEO

RTN