~rabbits/orca-toy

39f538bba0b1da2e80a2289ae7d410dc1be2faff — neauoire 1 year, 1 month ago f7ac88f
Minor cleanup
3 files changed, 43 insertions(+), 40 deletions(-)

M README.md
M src/main.tal
M src/opcodes.tal
M README.md => README.md +4 -1
@@ 48,7 48,7 @@ To display the list of operators inside of Orca, use `CmdOrCtrl+G`.
- `V` **variable**(*write* read): Reads and writes variable.
- `W` **west**: Moves westward, or bangs.
- `X` **write**(*x* *y* val): Writes operand with offset.
- `Y` **jymper**(*val*): Outputs westward operand.
- `Y` **yumper**(*val*): Outputs westward operand.
- `Z` **lerp**(*rate* target): Transitions operand to input.
- `*` **bang**: Bangs neighboring operands.
- `#` **comment**: Halts a line.


@@ 90,6 90,9 @@ Orca listens to stdin events and inputs the byte values as keyboard inputs. The 
- `ctrl+c` copy
- `ctrl+v` paste
- `ctrl+x` cut
- `ctrl+h` toggle guide
- `ctrl+i` toggle insert
- `ctrl+a` select all

### Misc


M src/main.tal => src/main.tal +6 -6
@@ 25,11 25,11 @@
%GET-CHAR  { #24 MOD #00 SWP ;b36clc ++ LDA } ( b36 -- char )
%GET-VALUE { #20 - #00 SWP ;values ++ LDA } ( char -- b36 )
%GET-NOTE  { DUP GET-VALUE SWP IS-UC #24 * + TOS ;lc-notes ++ LDA } ( char -- midi )
%GET-CELL  { DATA-CELLS ++ LDA } ( cell* -- type ) 
%GET-CELL  { DATA-CELLS ++ LDA } ( cell* -- type )
%SET-CELL  { DATA-CELLS ++ STA } ( type cell* -- )
%GET-LOCK  { DATA-LOCKS ++ LDA } ( cell* -- type ) 
%GET-LOCK  { DATA-LOCKS ++ LDA } ( cell* -- type )
%SET-LOCK  { DATA-LOCKS ++ STA } ( type cell* -- )
%GET-TYPE  { DATA-TYPES ++ LDA } ( cell* -- type ) 
%GET-TYPE  { DATA-TYPES ++ LDA } ( cell* -- type )
%SET-TYPE  { DATA-TYPES ++ STA } ( type cell* -- )

( devices )


@@ 631,7 631,7 @@ RTN

@get-index ( x y -- addr* )

	#00 SWP #00 .grid/width LDZ ** ROT #00 SWP ++ 
	#00 SWP #00 .grid/width LDZ ** ROT #00 SWP ++

RTN



@@ 820,8 820,8 @@ RTN
	&loop
		( x ) DUP2 10// #0100 ** .grid/x1 LDZ2 ++ #0020 ++ .Screen/x DEO2
		( y ) DUP2 #000f AND2 10** .grid/x1 LDZ2 ++ #0020 ++ .Screen/y DEO2
		DUP2 2** ;op-table/docs ++ LDA2 
		( glyph ) LDAk #08 ;draw-char JSR2 
		DUP2 2** ;op-table/docs ++ LDA2
		( glyph ) LDAk #08 ;draw-char JSR2
		( space ) 20 #00 ;draw-char JSR2
		( text ) INC2 #01 ;draw-str JSR2
		INC2 GTH2k ,&loop JCN

M src/opcodes.tal => src/opcodes.tal +33 -33
@@ 4,7 4,7 @@
	:op-a :op-b :op-c :op-d :op-e :op-f :op-g :op-h
	:op-i :op-j :op-k :op-l :op-m :op-n :op-o :op-p
	:op-q :op-r :op-s :op-t :op-u :op-v :op-w :op-x
	:op-y :op-z 
	:op-y :op-z
	:op-bang :op-comment :op-synth :op-midi :op-pitch :op-byte
	&docs
	:op-a/docs :op-b/docs :op-c/docs :op-d/docs :op-e/docs :op-f/docs :op-g/docs :op-h/docs


@@ 21,7 21,7 @@
@op-a
	"add $1
	&docs 'A "Outputs 20 "sum 20 "of 20 "inputs $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( a-val ) DEC2 ;get-port-left-value JSR2


@@ 37,7 37,7 @@ RTN
@op-b
	"subtract $1
	&docs 'B "Outputs 20 "difference 20 "of 20 "inputs $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( get a ) DEC2 ;get-port-left-value JSR2


@@ 53,7 53,7 @@ RTN
@op-c
	"clock $1
	&docs 'C "Outputs 20 "modulo 20 "of 20 "frame $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( get rate ) DEC2 ;get-port-left-value JSR2 1MIN


@@ 69,7 69,7 @@ RTN
@op-d
	"delay $1
	&docs 'D "Bangs 20 "on 20 "modulo 20 "of 20 "frame $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( get rate ) DEC2 ;get-port-left-value JSR2 1MIN


@@ 83,7 83,7 @@ RTN
@op-e
	"east $1
	&docs 'E "Moves 20 "eastward 20 "or 20 "bangs $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k GET-CELL ,&self STR
	( wall ) .head/x LDZ INC .grid/width LDZ = ,&collide JCN


@@ 99,7 99,7 @@ RTN
@op-f
	"if $1
	&docs 'F "Bangs 20 "if 20 "inputs 20 "are 20 "equal $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( get a ) DEC2 ;get-port-left-raw JSR2


@@ 112,7 112,7 @@ RTN
@op-g
	"generator $1
	&docs 'G "Writes 20 "operands 20 "with 20 "offset $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( x ) STH2kr #0003 -- ;get-port-left-value JSR2


@@ 134,7 134,7 @@ RTN
@op-h
	"hold $1
	&docs 'H "Holds 20 "southward 20 "operand $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	BELOW
	( set lock ) DUP2 #01 ROT ROT SET-LOCK


@@ 145,7 145,7 @@ RTN
@op-i
	"increment $1
	&docs 'I "Increments 20 "southward 20 "operand $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( step ) DEC2 ;get-port-left-value JSR2


@@ 161,7 161,7 @@ RTN
@op-j
	"jumper $1
	&docs 'J "Outputs 20 "northward 20 "operand $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( get above ) ABOVE ;get-port-left-raw JSR2


@@ 172,7 172,7 @@ RTN
@op-k
	"konkat $1
	&docs 'K "Reads 20 "multiple 20 "variables $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	DEC2 ;get-port-left-value JSR2 #00


@@ 193,7 193,7 @@ RTN
@op-l
	"lesser $1
	&docs 'L "Outputs 20 "smallest 20 "of 20 "inputs $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( get a ) DEC2 ;get-port-left-value JSR2


@@ 209,7 209,7 @@ RTN
@op-m
	"multiply $1
	&docs 'M "Outputs 20 "product 20 "of 20 "inputs $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( get a ) DEC2 ;get-port-left-value JSR2


@@ 225,7 225,7 @@ RTN
@op-n
	"north $1
	&docs 'N "Moves 20 "Northward 20 "or 20 "bangs $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k GET-CELL ,&self STR
	( wall ) .head/y LDZ DEC #ff = ,&collide JCN


@@ 241,7 241,7 @@ RTN
@op-o
	"read $1
	&docs 'O "Reads 20 "operand 20 "with 20 "offset $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( x ) STH2kr #0002 -- ;get-port-left-value JSR2 INC TOS ++


@@ 254,7 254,7 @@ RTN
@op-p
	"push $1
	&docs 'P "Writes 20 "eastward 20 "operand $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( key ) #0002 -- ;get-port-left-value JSR2


@@ 274,7 274,7 @@ RTN
@op-q
	"query $1
	&docs 'Q "Reads 20 "operands 20 "with 20 "offset $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( x ) STH2kr #0003 -- ;get-port-left-value JSR2


@@ 297,7 297,7 @@ RTN
@op-r
	"random $1
	&docs 'R "Outputs 20 "random 20 "value $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( a-min ) DEC2 ;get-port-left-value JSR2


@@ 313,7 313,7 @@ RTN
@op-s
	"south $1
	&docs 'S "Moves 20 "southward 20 "or 20 "bangs $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k GET-CELL ,&self STR
	( wall ) .head/y LDZ INC .grid/height LDZ = ,&collide JCN


@@ 329,7 329,7 @@ RTN
@op-t
	"track $1
	&docs 'T "Reads 20 "eastward 20 "operand $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( key ) #0002 -- ;get-port-left-value JSR2


@@ 349,7 349,7 @@ RTN
@op-u
	"Uclid $1
	&docs 'U "Bangs 20 "on 20 "Euclidean 20 "rhythm $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( step ) DEC2 ;get-port-left-value JSR2


@@ 367,7 367,7 @@ RTN
@op-v
	"variable $1
	&docs 'V "Reads 20 "and 20 "writes 20 "variable $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( key ) DEC2 ;get-port-left-raw JSR2


@@ 386,7 386,7 @@ RTN
@op-w
	"west $1
	&docs 'W "Moves 20 "westward 20 "or 20 "bangs $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k GET-CELL ,&self STR
	( wall ) .head/x LDZ DEC #ff = ,&collide JCN


@@ 402,7 402,7 @@ RTN
@op-x
	"write $1
	&docs 'X "Writes 20 "operand 20 "with 20 "offset $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( x ) STH2kr #0002 -- ;get-port-left-value JSR2 TOS ++


@@ 415,7 415,7 @@ RTN
@op-y
	"yumper $1
	&docs 'Y "Outputs 20 "westward 20 "operand $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( get left ) DEC2 ;get-port-left-raw JSR2


@@ 426,7 426,7 @@ RTN
@op-z
	"lerp $1
	&docs 'Z "Transitions 20 "operand 20 "to 20 "input $1
	&func ( addr* -- ) 
	&func ( addr* -- )

	STH2k
	( rate ) DEC2 ;get-port-left-value JSR2


@@ 445,7 445,7 @@ RTN
@op-bang
	"bang $1
	&docs '* "Bangs 20 "neighboring 20 "operands $1
	&func ( char -- ) 
	&func ( char -- )

	POP
	CHAR-DOT .head/addr LDZ2 SET-CELL


@@ 456,7 456,7 @@ RTN
	"comment $1
	&docs '# "Comments 20 "a 20 "line $1
	&func
 ( char -- ) 
 ( char -- )
	POP
	.head/addr LDZ2 STH2k
	( bounds )


@@ 476,7 476,7 @@ RTN
	"synth $1
	&docs '= "Play 20 "note 20 "with 20 "uxn 20 "synth $1
	&func
 ( char -- ) 
 ( char -- )
	POP
	.head/addr LDZ2 STH2k
	( channel ) INC2 ;get-port-right-value JSR2 [ ,&ch STR ]


@@ 492,7 492,7 @@ RTN
@op-midi
	"midi $1
	&docs ': "Send 20 "a 20 "midi 20 "note $1
	&func ( char -- ) 
	&func ( char -- )

	POP
	.head/addr LDZ2 STH2k


@@ 517,7 517,7 @@ RTN
@op-pitch
	"pitch $1
	&docs '; "Send 20 "a 20 "raw 20 "pitch 20 "byte $1
	&func ( char -- ) 
	&func ( char -- )

	POP
	.head/addr LDZ2 STH2k


@@ 532,7 532,7 @@ RTN
@op-byte
	"byte $1
	&docs '/ "Send 20 "a 20 "raw 20 "hexadecimal 20 "byte $1
	&func ( char -- ) 
	&func ( char -- )

	POP
	.head/addr LDZ2 STH2k