~rabbits/orca-toy

b5c37bd817fc559657f165d00c766027d541745f — neauoire 1 year, 1 month ago e91de4d
Optimized HIJLM
1 files changed, 30 insertions(+), 31 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +30 -31
@@ 762,14 762,14 @@ RTN

	POP POP2 
	.head/addr LDZ2 STH2k
	( get rate ) DEC2 ;get-port-left-raw JSR2
	( get mod ) STH2kr INC2 ;get-port-right-raw JSR2
	( get a ) DEC2 ;get-port-left-raw JSR2
	( get b ) STH2kr INC2 ;get-port-right-raw JSR2
	( bang on equal ) = [ #fc * CHAR-DOT +  ]
	( output ) STH2r #00 .grid/width LDZ ++ ;set-port-output JSR2

RTN

@op-g ( x y char -- )
@op-g ( x y char -- ) ( TODO )

	POP
	( get x ) DUP2 [ SWP #03 - SWP ] GET-PORT-LEFT STH


@@ 790,16 790,17 @@ RTN

@op-h ( x y char -- )

	POP INC
	GET-INDEX
	POP POP2
	( output ) .head/addr LDZ2 #00 .grid/width LDZ ++
	( set lock ) DUP2 #01 ROT ROT DATA-LOCKS ++ STA
	( set type ) PORTER-TYPE ROT ROT DATA-TYPES ++ STA
	( set type ) OUTPUT-TYPE ROT ROT DATA-TYPES ++ STA

RTN

@op-i ( x y char -- )
@op-i ( x y char -- ) ( TODO )

	POP POP2 .head/addr LDZ2 STH2k
	POP POP2 
	.head/addr LDZ2 STH2k
	( get rate ) DEC2 ;get-port-left-value JSR2 1MIN
	( get output ) STH2kr #00 .grid/width LDZ ++ DATA-CELLS ++ LDA GET-VALUE
	( rate output + ) +


@@ 813,17 814,16 @@ RTN

RTN

@op-j ( x y char -- )
@op-j ( x y char -- ) ( TODO: Wiring )

	POP ( TODO: Wiring )
	POP2
	POP POP2
	.head/addr LDZ2 STH2k
	( get above ) #00 .grid/width LDZ -- ;get-port-raw JSR2
	( set below ) STH2r #00 .grid/width LDZ ++ ;set-port-output JSR2

RTN

@op-k ( x y char -- )
@op-k ( x y char -- ) ( TODO )

	POP
	( get len ) DUP2 [ SWP #01 - SWP ] GET-PORT-LEFT 1MIN


@@ 846,28 846,28 @@ RTN

@op-l ( x y char -- )

	POP POP2 .head/addr LDZ2 STH2k
	( get rate ) DEC2 ;get-port-left-value JSR2
	( get mod ) STH2kr INC2
		( set lock ) DUP2 #01 ROT ROT DATA-LOCKS ++ STA
		( set type ) DUP2 PORTER-TYPE ROT ROT DATA-TYPES ++ STA
		( get data ) DATA-CELLS ++ LDA GET-CASE GET-VALUE
	( min ) LTHk JMP SWP POP
	( apply case ) GET-CHAR SET-CASE
	POP POP2 
	.head/addr LDZ2 STH2k
	( get a ) DEC2 ;get-port-left-value JSR2
	( get b ) STH2kr INC2 ;get-port-right-raw JSR2
		( get case ) DUP IS-UC ,&case STR
		( to value ) GET-VALUE
	( res ) LTHk JMP SWP POP
	( set case ) GET-CHAR DUP #60 > [ LIT &case $1 ] AND 20* -
	( output ) STH2r #00 .grid/width LDZ ++ ;set-port-output JSR2

RTN

@op-m ( x y char -- )

	POP POP2 .head/addr LDZ2 STH2k
	( get rate ) DEC2 ;get-port-left-value JSR2
	( get mod ) STH2kr INC2
		( set lock ) DUP2 #01 ROT ROT DATA-LOCKS ++ STA
		( set type ) DUP2 PORTER-TYPE ROT ROT DATA-TYPES ++ STA
		( get data ) DATA-CELLS ++ LDA GET-CASE GET-VALUE
	( mul ) *
	( apply case ) GET-CHAR SET-CASE
	POP POP2 
	.head/addr LDZ2 STH2k
	( get a ) DEC2 ;get-port-left-value JSR2
	( get b ) STH2kr INC2 ;get-port-right-raw JSR2
		( get case ) DUP IS-UC ,&case STR
		( to value ) GET-VALUE
	( res ) *
	( set case ) GET-CHAR DUP #60 > [ LIT &case $1 ] AND 20* -
	( output ) STH2r #00 .grid/width LDZ ++ ;set-port-output JSR2

RTN


@@ 1047,10 1047,9 @@ RTN

RTN

@op-y ( x y char -- )
@op-y ( x y char -- ) ( TODO: Wiring )

	POP ( TODO: Wiring )
	POP2
	POP POP2
	.head/addr LDZ2 STH2k
	( get left ) DEC2 ;get-port-raw JSR2
	( set right ) STH2r INC2 ;set-port-output JSR2