@@ 1068,14 1068,15 @@ RTN
@op-synth ( x y char -- ) ( TODO )
- POP
- ( get channel ) DUP2 [ SWP INC SWP ] GET-PORT-RIGHT STH
- ( get octave ) DUP2 [ SWP #02 + SWP ] GET-PORT-RIGHT [ #0c * ] STH
- ( get note ) DUP2 [ SWP #03 + SWP ] GET-PORT-RIGHT-RAW
- ( req note ) DUP CHAR-DOT ! ,&is-active JCN [ POP POP2 POP2r RTN ] &is-active GET-NOTE STH ADDr
- ( req bang ) ;get-bang JSR2 ,&is-bang [ JCN POP2 POP2r RTN ] &is-bang
- STHr .Audio0/pitch STHr 4MOD 10* + DEO
- IO-TYPE SET-TYPE
+ POP POP2
+ .head/addr LDZ2 STH2k
+ ( channel ) INC2 ;get-port-right-value JSR2 [ ,&ch STR ]
+ ( octave ) STH2kr #0002 ++ ;get-port-right-value JSR2
+ ( note ) STH2r #0003 ++ ;get-port-right-raw JSR2
+ ( has note ) DUP CHAR-DOT ! ,&has-note JCN [ POP2 RTN ] &has-note
+ ( has bang ) ;get-bang JSR2 ,&is-bang JCN [ POP2 RTN ] &is-bang
+ ( get note ) GET-NOTE SWP [ #0c * ] +
+ ( play ) .Audio0/pitch [ LIT &ch $1 ] 4MOD 10* + DEO
RTN