~rabbits/orca-toy

cbc5d899ede5c5adc319aa6d36f240ac853f9690 — neauoire 1 year, 8 months ago a9dcec4
Implemented P operator
1 files changed, 24 insertions(+), 8 deletions(-)

M orca.tal
M orca.tal => orca.tal +24 -8
@@ 43,9 43,9 @@
%PORTER-TYPE   { #04 }
%OUTPUT-TYPE   { #05 }

%DATA-CELLS { #8000 }
%DATA-LOCKS { #9000 }
%DATA-TYPES { #a000 }
%DATA-CELLS { #b000 }
%DATA-LOCKS { #c000 }
%DATA-TYPES { #d000 }
%DATA-FILE { #e000 } ( file transfer )
%DATA-CLIP { #f000 } ( copy/paste )



@@ 491,7 491,24 @@ RTN

@op-p ( x y char -- )

	POP POP2
	POP
	( get key ) DUP2 SWP #02 - SWP GET-PORT-LEFT STH
	( get len ) DUP2 SWP #01 - SWP GET-PORT-LEFT MIN1 STH
	( get input ) DUP2 INCR GET-PORT-RIGHT-RAW STH
	#00 OVRr STHr
	&loop
		( stash x-offset ) OVR STH
		( stash x,y ) SWP2 STH2k SWP2
		( get x+offset,y ) ROTr ROTr ADDr SWPr STH2r #01 +
		( lock ) DUP2 #01 SET-LOCK
		( type ) LOCKED-TYPE SET-TYPE
		INCR
		LTHk ,&loop JCN
	POP2
	( write )
	( x-offset ) ROTr ROTr STH2r MOD
	( x,y ) SWP #01 + STH + STHr
	STHr SET-PORT-OUTPUT
	
RTN



@@ 536,9 553,9 @@ RTN
		LTHk ,&loop JCN
	POP2
	STHr
	( select )
	DUP2 INCR STH2r MOD ROT + SWP GET-PORT-RIGHT-RAW STH
	#01 +
	( read )
	( x-offset ) DUP2 INCR STH2r MOD ROT + SWP 
	( x,y ) GET-PORT-RIGHT-RAW STH #01 +
	STHr SET-PORT-OUTPUT

RTN


@@ 648,7 665,6 @@ RTN
	&no-uc

	( TODO: skip lowercase )
	( TODO: skip commented )

	( TODO: Make into a lookup table )
	( A ) DUP #41 = ;op-a JCN2 ( B ) DUP #42 = ;op-b JCN2