~rabbits/orca-toy

7ce765476eb650fb5b83eebd6a88b1892e02ca97 — neauoire 1 year, 8 months ago 341899d
Fixed issue with D operator
1 files changed, 23 insertions(+), 9 deletions(-)

M orca.tal
M orca.tal => orca.tal +23 -9
@@ 24,13 24,17 @@
%DEBUG  { .Console/byte DEO #0a .Console/char DEO }
%DEBUG2 { .Console/short DEO2 #0a .Console/char DEO }

%TOB { SWP POP }        %TOS { #00 SWP }
%INCR { SWP #01 + SWP } %DECR { SWP #01 - SWP }
%TOB  { SWP POP }        
%TOS  { #00 SWP }
%INCR { SWP #01 + SWP } 
%DECR { SWP #01 - SWP }
%RTN  { JMP2r }
%MOD  { DUP2 / * - } 
%MOD8 { #07 AND }
%MIN1 { DUP #00 = + }

%RTN { JMP2r }
%MOD { DUP2 / * - } %MOD8 { #07 AND }
%GET-ITERATORS { SWP2k POP SWP POP }
%TOGGLE { DUP LDZ #00 = SWP STZ }
%GET-ITERATORS { SWP2k POP SWP POP }

%PORTEL-TYPE   { #02 }
%OPERATOR-TYPE { #03 }


@@ 284,7 288,7 @@ RTN

@op-c ( x y char -- )
	
	POP
	POP ( TODO: detect capitalization )
	#01 +
	#30 .timer/frame LDZ MOD8 + SET-CELL



@@ 292,7 296,15 @@ RTN

@op-d ( x y char -- )

	POP POP2
	POP ( TODO: detect capitalization )
	( TODO: clamp at #01 )
	( get left ) DUP2 DECR GET-PORT-LEFT MIN1 STH
	( TODO: clamp at #01 )
	( get right ) DUP2 INCR GET-PORT-RIGHT MIN1 STH
	( incr y ) #01 +
	( get result ) .timer/frame LDZ MULr STHr MOD #00 =
	( bang if equal ) #fc * #2e + 
	SET-PORT-OUTPUT
	
RTN



@@ 323,8 335,10 @@ RTN
@op-h ( x y char -- )

	POP
	#01 + GET-PORT-RIGHT
	
	#01 + 
	( lock ) DUP2 #01 SET-LOCK
	( type ) PORTER-TYPE SET-TYPE 

RTN

@op-i ( x y char -- )