From 09d017c87211115624a218ed5a597fab937bc843 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Sat, 11 Apr 2020 23:47:05 -0400 Subject: [PATCH] jopl instrument editor --- boot.jim | Bin 1360 -> 1360 bytes debug.jim | Bin 1382 -> 1382 bytes defs.jim | Bin 2255 -> 2255 bytes jazz2.sbi | Bin 0 -> 52 bytes jopl.c | 12 +++ jopl.exe | Bin 77419 -> 87686 bytes jopl.jim | Bin 0 -> 8975 bytes jopl.jor | 206 ++++++++++++++++++++++++++++++++++++++++++++-------- jopl.prj | Bin 4840 -> 4842 bytes newbass.sbi | Bin 0 -> 52 bytes 10 files changed, 189 insertions(+), 29 deletions(-) create mode 100755 jazz2.sbi create mode 100755 jopl.jim create mode 100755 newbass.sbi diff --git a/boot.jim b/boot.jim index 7b334ac0a7211923bcd74c590acd51c2fedc3eca..da58d906be0998b347612990441023d8be7e3a78 100755 GIT binary patch delta 678 zcmXX@&ubGw6n?uqlg$1ot{y_EC~aCzDvFI#6)pZ~lR_Xdp{A%1&^Fn%tLyHXY>i-{ z+E7q&4LC~v+daws!M0)Y!L8bqI7XzNuw@Vp#yzhJSzBk{z4P`@FtlsFx z|7fpal5WNY7=h6QKo_$NW&-?+6Q~)sjX(sM(Finw>pR$(6wm}Ckg7T(|dYJaZI8$NrQodNsW%Fk$Ippp@ktxVcpUaI*oi9ygkpp1{TWSr|&M;XFsE=^g zMwpLan=OH50$+L6EAW+1$vs>zh|kF|3Fv3G470`+%fZV9?EHbaHD}od@Xj`&PvD(> z!mf*4FViYr#}m-BybSY>Z-w$@YHqP7WeIG{kGS#{SCQ{R8kz4xnGVB!$)uhf&^b8{ zmSbCvv4At42s? zE=#+yVNvQ$g*)Ca4dCUb8Uxp{-I+T4)W_6^Dg)1L`Vql9@1;TP*p$MzA0s7<_s9{9 zA4u{v*9T*7$suu_Y>%OLEe>JRRX5ynoBr0&hW0|m4Qc`Xrm?7MMvKGp(H`Czpa=g0 DU=qHP delta 678 zcmXX@O=}ZT6uoa|Uh?LnIJyX>qO@r>sVFvzA87HTO$vd;gqos4K$~R7j*c@!GBtvQ zYC}QAS(GduNCg+777Dr*Q5SaMLZllvE)@C)+!%1B-Wke+%RT45d+s~$ZYrC~V(n=! z{zrQQQ*(6-B2$o?xtJT9zEqmdA_rs^Tk1{J&M;XBsE@E_ zBg{vz!#oCw%2|av#?V!b@pX3g{QM3^n7r<>2K4cK$@%p0jKNcy|XGAiR5k z?771AGOf}LJONG1%P{ZwRw!Sl<~Dmq7Qwdsh%0Y%75P4-k@-Q&bQB(nCiUci&dG7G z9NTh?1)TAW?4IQMHx|$*GJ}z9X|hx(T|iGQn++8EBxF#mCyZbm5C`{%Mt>1WU6oex%Mz*tj_Z0T6wsq8g@$1o`1jpw z;$Cc66#G-*jt`1Mc)6vMw0^Jn>k zLScJ|z2L)fgb^4ldn*)?%}sp!Bo$pKXi;3V*WN>626!u_v2T7NgoHHeIa+nZ>?I4--qLb@}A*Rc)nyM_x^}S4! zz(PJl9)>1@Z?S$w@Uyvcr7Bb#A&>6Xqv|>xr5?T7cTUYhp0#KazF{71Ya;#%<57t` zknz`SlpbP&(V`uV!w2jvsitzvn5+&zvW?ItF1INMA8sfdnrtUobgPco7mvLW>PP+O znD-7olW-5S2!z8GHb54Ng-R{&Zj-OEj@Hj2xO^YYO&$2yIXXE#hgp(Z6yXH)83~wR zxu8dFjNjKpw8s8nl#JnyNL{T*IK&XEN$lAc@3kryu-jl-|zC|-Dk3cLH& zp54o)imE7PYHL0uz&Cy9;G6hzxN8Qn?cLN;shBHNE7;q7*f$A&{_pwJ93-Dk9&--N z#wHIYW~SqFhsnFcK*p_CGrlPuP%@z=AV8vOSl2Ca)=#VuSy*;cWoLVLqGArGYp5mW}HRuG3EBM&|pb%cT758ZbIBkGQEsKi?>;``d9t z0ZZo#XA;~&42WMG8yM~lsMp-E2 zhLX=PL60!0(V=}K1cSXt{CsHzjkTc3He=WEx=Tao!OvOL!8PvG?>W|9-fUvXZao6n+^oN*W74D7ND z=&TeC=uMPgG^A8!-!V$2(IYCZnE`!vq6JZlmufSdY(qdd@VUsoj%>r4*`=4EN7u{{ z{$i$9@Z9F|vR6l9k3K-#yJ+nx3kDa69$`cD1uLooI+aajocT1~1@s%XMR$y$M%EhH z*H}1{THMoVV~J!9KCyO;9DHtd=`)d@>co(H!5UTE#nWjgyWphKCy<9TNDtqwu^jw~ z4zHubUH-Tx-BrBRe}#LCODlr^z8R6FC5^X>WasnB6mdkTYXqt<)nTXtpba1)@ zO!8eZBXY1QTF@46SL+2{srtNFZB`13B=dBIt~D!?DELWC>?0A?RI!|V(N}B8O*wB< z`iux+Ti{5(h01;73W`4>dD@lV6q)%y@;)Xb-T)c3{H|?)Ty-hQeht=snE!38h|K>X DCc$zz diff --git a/defs.jim b/defs.jim index 77009d4726704bf9a37d4b77f084872ad0342613..69ac9fb6152621a7696c4bed3c03a21a9b0315e1 100755 GIT binary patch delta 911 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

TE0|+Z7?u9tEE%j?xCi1 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 UXwd)6?jG@C7CY>1vN;y|8}ou)xBvhE delta 29368 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

mHH!2g}UDE@`nZcp{3;92t|ld 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 ZU`EO9_Q8xgjI8C!8Hq*PGeQ{Um;gN!`knv) diff --git a/jopl.jim b/jopl.jim new file mode 100755 index 0000000000000000000000000000000000000000..578785fa670d5bf8db3637cc49b55a12cde2b5dd GIT binary patch literal 8975 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 DJ3=9K literal 0 HcmV?d00001 diff --git a/jopl.jor b/jopl.jor index 403a02a..bb6b551 100755 --- a/jopl.jor +++ b/jopl.jor @@ -1,4 +1,6 @@ ' putc task-emit ! +:noname s" debug.jor" loadfile ; execute + s" jopl.log" open seekend fdeactivate const LOGFILE : emit-log fdeactivate LOGFILE factivate fputc fdeactivate drop factivate ; : quit LOGFILE factivate close _quit ; @@ -6,13 +8,20 @@ s" jopl.log" open seekend fdeactivate const LOGFILE : DBG :| ' seremit task-emit ! execute cr |; 0 task-emit preserving ; : DTYPE ' type DBG ; +: dorepl begin receive loadstring s" ok" type cr again ; : start-repl activate ' putc task-emit ! ' emit-log task-echo ! s" .:: J O P L ( jean OPL2 print loop) ::." type cr - begin receive loadstring s" ok" type cr again ; + dorepl ; task const REPL REPL start-repl +: start-dbg activate ' seremit task-emit ! + s" .:: J D B G ( jean debugger) ::." type cr + dorepl ; +task const DBG +DBG start-dbg + var voice var op @@ -48,12 +57,20 @@ var op >r r@ 4 + b@ r@ 3 + b@ r@ 2 + b@ r@ 1 + b@ - dup dup 5 + op1 readop op2 readop + array b, b, b, b, b, b, b, b, b, b, b, ; +: blank-instrument array 11 allot ; +: copy-instrument ( s d -- ) + 0 11 for over i + b@ over i + b! next drop drop ; +: loadinst ( p -- ) dup dup 5 + op1 readop op2 readop 10 + b@ ar-alg adlib! ; 0 0x01 0x10 0xf0 0x77 0 0x01 0x00 0xf0 0x77 0 instrument default +blank-instrument current +: current! current copy-instrument ; +: swap-op ( inst -- ) + 0 5 for dup ub@ over 5 + ub@ >r over 5 + b! > 0x03 & swap 2 << | 0x20 | ar-note adlib! ; @@ -76,23 +93,35 @@ array semitones : note dup 12 / 8 % swap 12 % cells semitones + @ 440 swap *r 0 stopkeys ! key-start begin @@ -265,16 +310,15 @@ var stopkeys 0x4f textattr ! :| stoponesc voicekeys ' setnote onkeynote - 41 key-pressed if 0xfd setnote then - 52 key-down if 0xf0 setnote then + ^~ key-pressed if 0xfd setnote then + ^. key-down if 0xf0 setnote then |; dokeys 0x1f textattr ! ; userword : jamkeys stoponesc voicekeys ' noteon onkeynote - 41 key-pressed if noteoff then - 88 key-pressed if rndinst then ; + ^~ key-pressed if noteoff then ; : jam ( todo: print? ) ' jamkeys dokeys ; userword @@ -316,10 +360,10 @@ defer onselect : key-menu ( -- redraw ) :| 0 ( redraw ) - 72 key-pressed if -1 change-selection then - 80 key-pressed if 1 change-selection then - 73 key-pressed if -10 page-selection then - 81 key-pressed if 10 page-selection then + ^UP key-pressed if -1 change-selection then + ^DOWN key-pressed if 1 change-selection then + ^PGUP key-pressed if -10 page-selection then + ^PGDN key-pressed if 10 page-selection then |; draw-menu ; : draw-filemenu ( glob -- ) @@ -333,14 +377,118 @@ defer onselect :| s" *.sbi" draw-filemenu :| jamkeys key-menu if s" *.sbi" draw-filemenu then - 28 key-pressed if 1 stopkeys ! then + ^ENTER key-pressed if 1 stopkeys ! then |; dokeys |; 66 1 13 menu-at ; userword -: dune ( -- ) s" dune" chdir inst s" .." chdir ; userword +: shift-from-mask ( mask -- shift ) + 0 swap begin dup 1 & not while 1 >> swap 1 + swap repeat drop ; + +: bf! ( v addr mask -- ) + >r dup ub@ r@ ~ & r ub@ r@ & > ; + +: poly! ( v [...] get set -- ) swap drop execute ; +: poly@ ( [...] get set -- v ) drop execute ; +: poly-bf ' bf@ ' bf! ; +: poly-noop ' 0 ' drop ; + +: bitfield ( byteoffset mask -- ) + create b, b, does> ( addr bf -- addr mask ) + >r r@ 1 + ub@ + ( l ) dup cell + swap @ if + @ ( link creation mode done; fetch the head ) + else ( make new link ) + here over @ , swap ! latest , + then ; +: endwordchain ( cp -- ) 2 cells + 1 swap ! ; +: linkedval ( link -- val ) cell + @ ; +: nth-linkedval ( link c -- val ) + begin dup while 1 - swap @ swap repeat drop linkedval ; + +wordchain opbits +4 0x80 bitfield @ampmod opbits +4 0x40 bitfield @vib opbits +4 0x20 bitfield @egtype opbits +4 0x10 bitfield @ksr opbits +4 0x0f bitfield @mod-freq-mult opbits +3 0xc0 bitfield @scaling-level opbits +3 0x3f bitfield @output-level opbits +2 0xf0 bitfield @attack opbits +2 0x0f bitfield @decay opbits +1 0xf0 bitfield @sustain opbits +1 0x0f bitfield @release opbits +0 0x03 bitfield @wave opbits +' opbits endwordchain + +array instreg ' ar-wave , ' ar-sr , ' ar-ad , ' ar-level , ' ar-flags , + +: c+op current op @ not if 5 + then ; + +: count-links 0 swap links each swap 1 + swap more ; +opbits count-links const #opbits + +wordchain algbits +10 0x0e bitfield @feedback algbits +10 0x01 bitfield @decay-alg algbits +' algbits endwordchain +algbits count-links const #algbits + +: lookup-nth-bitfield ( n inst link -- p mask ) + %8WS zyq|zV=UEsSUIB%7PnPD7_f}+<2THRt|6sbqq{$S-be?G=(*&kwrZ`3>CIO}jrfSA) zrZ^@!rvLw4na(lJV!Xi+$oT(152FjC2BQPR5(WpLZUF{1hNgz@$@lq1Wex)E=U`Ca zh!GQEa4f0!V*#`I7*=Go1WXnX5Q%2kC(O#Ac1M-rvlJ_X%*M}(ff9G3tQZ(L7=#!? zGFzaUk+uE*&wp$ZNIxHg9D~?F*^U1}9B(I(9(IOJlN+IW_$OBjNOFN3@c(~|n4aF` zUHo#BZ3LvnoVO$gxP-Vygy=al{6Db)%9*@RKyvaffxgK#g0d_incW8L}%k`AueIU}$AvVDR63o!6X^ z_vYs0fN3lY42eMD^^>Lf;~nIg<$%)6%-@)9F{v{JFr8&u&(z1%$fUu@z{JN?#^lPF z$rQsR!*qtxnP~=N3giF(&l$cj*fHE<*vAkBq$hU>$khulurZtm8qLa}z!4+H4<@<6 zBp1V#Y8!tJFk6Jdv83LQ1XOH4o-g&4dm`urenM|So9|NK0& zLC)u65N7BAX#{b+ohH`_%Cdm8Or9@jzzhtJ$(IC`MIdr6KyUpA1%;P?P>9E5Eg`AN P%0ikfAeT)J5Sj%5$bNk_ diff --git a/newbass.sbi b/newbass.sbi new file mode 100755 index 0000000000000000000000000000000000000000..9001206d4f4bac31551acb743436e9036163239f GIT binary patch literal 52 bcmWG`@|0pA0Gu~8`+lun#>B+P2383GVv_{j literal 0 HcmV?d00001