From 4fcf03fd07f2251265a8eb48012e4659672f6fae Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Sat, 13 Apr 2019 10:30:36 -0400 Subject: [PATCH] log session to jopl.log; add ability to dump track source --- jopl.c | 2 +- jopl.exe | Bin 63298 -> 63298 bytes jopl.jor | 51 +++++++++++++++++++++++++++++++++++++++------------ jopl.prj | Bin 4390 -> 4390 bytes 4 files changed, 40 insertions(+), 13 deletions(-) diff --git a/jopl.c b/jopl.c index 3b14f2d..d2c41b4 100755 --- a/jopl.c +++ b/jopl.c @@ -61,7 +61,7 @@ void do_repl(char *exe) { timer_init(TIMER_18HZ); f_init(exe); - CDEF("quit", f_quit); + CDEF("_quit", f_quit); CDEF("adlib!", f_adlib_write); CDEF("adlib@", f_adlib_read); CDEF("findfile", f_findfirst); diff --git a/jopl.exe b/jopl.exe index d0198662979f83f637a406d82cd1b8d6f6051a39..a904c6fd52622c74f03d4eea41ed2ba63fdb5cdb 100755 GIT binary patch delta 214 zcmWN{Aqc`y6h>jjifINxMGz4j8;A*o;S^;#p2%%A18{{C{_>M^5k3-e7w7?y(nP_-rQZffOeptBo8zPT|p}lOIm_P zpa*CQy5Z6VcR)|j02E2;l?1myF{lmNOWNY9g1(?8Xf5ev*n(}CS{LlVW|GpT;2bCk n(m_K>S!Dg~QqfOYCB+OKtI=0He;f?MPf*CKT5Azz$g2DS&RBCq delta 212 zcmWN{Aqc`y6h>im#k3+g5QK%v#Ie4n!C5R1Oe@+HEMgg$RxAVCKw$_LlR<@*TMW)- zGgwxI=Phc{Wbto@kCVQX^rakz_2AqRe9SynA5<^}uQQJ>pe^VpsSlciuAn7|B`rWx zPzIWTZn&y~2cSD>0!k%~48dK{6VwCkC2epuL0?b@w32i(ZNWAy?+SKcp`=nxa2ce6 ksvuvIhIHQ^=~2-#a%SRK?Qs;ue)5U+iXwJlqLJ131Mn1casU7T diff --git a/jopl.jor b/jopl.jor index 47255a0..b6e8e19 100755 --- a/jopl.jor +++ b/jopl.jor @@ -1,6 +1,10 @@ ' putc task-emit ! +s" jopl.log" open seekend fdeactivate const LOGFILE +: emit-log fdeactivate LOGFILE factivate fputc fdeactivate drop factivate ; +: quit LOGFILE factivate close _quit ; -: start-repl activate ' putc task-emit ! +: 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 ; task const REPL @@ -104,18 +108,19 @@ var octave : %% 0 for % next ; : %- notestate @ if 0xfd b, else noteoff then ; : %do 0xff b, , ; -0 mknote A -1 mknote A# -2 mknote B -3 mknote C -4 mknote C# -5 mknote D -6 mknote D# -7 mknote E -8 mknote F -9 mknote F# -10 mknote G + 11 mknote G# +10 mknote G +9 mknote F# +8 mknote F +7 mknote E +6 mknote D# +5 mknote D +4 mknote C# +3 mknote C +2 mknote B +1 mknote A# +0 mknote A array tracks 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , @@ -135,6 +140,28 @@ array tracks 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , : ;track %loop 0 notestate ! ; : shush 0 voice @ track ! %- ; +: prev-name ( wordname -- wordname ) + 2 cells - @ 2 cells + ; +: 'name [ ' [ , ' ' , ' ] , ] ` lit ; immediate + +: emit-octave ( note -- ) + 12 / dup octave @ != if dup octave ! . s" %O " type else drop then ; + +: emit-note ( note -- ) + 'name A swap 12 mod 0 for prev-name next type bl ; + +: emit-cmd ( cmd -- more ) + dup 0xf0 = if s" % " type then + dup 0xfd = if s" %- " type then + dup 0xf0 < if dup emit-octave emit-note 1 then + dup 0xfe = if 'name ;track type cr drop 0 then ; + +: emit-track ( 'track -- ) + -1 octave ! dup ` swap 2 cells + + 'name :track type bl swap type bl + begin dup ub@ emit-cmd while 1 + repeat drop ; + + var tempo 1 tempo ! : player 1 songticks +! diff --git a/jopl.prj b/jopl.prj index 4f3b654f0a06c6cfcbe38e121fc0e54fe27f407d..0fa12fffe15a287a3558c3c8975ac05ee5a10af7 100755 GIT binary patch delta 39 ucmZ3cv`lG(IvcZcaPMX