@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } Sound Monitor v1.2 Sound Monitor ------------- This text file by: *}Shawn Poulson Shawn.Poulson%pics@twwells.com The writer of this article is not the author of the pro+}gram nor affiliated with the author of the program in any way. However since this program is PD, no one cares anyh,}ow. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This is an excellent music-} composer from Germany. I got hold of this package from Frankenstein of the HTT. I asked him what kinds of progra.}ms can be used to produce music like that on all of his demos and other games and etc. This was my answer. I thank him/} very much. However, since it's from Germany there are two problems: everything's in German, and it's a0} 50Hz PAL-happy program. This means the screen will bob up and down when you play music on a 60Hz NTSC 8-bit. For1}tunately it won't crash. These are the files you should have: SMON.COM -main program *.SNG 2} -assorted songs (compressed) REPLAY.ASM -Replayer for songs this is a tokenized format from 3}some German assembler REPLAY.SRC -The source listing from the above file REPLAY.M65 -I was able to convert th4}e above source to Mac/65 PLAY.M65 -This is a program I wrote to test the replayer for Mac/65, i5}t is a player for uncompressed .SNGs (More on compressed and uncompressed .SNGs later) SMON.TXT 6} -This file (der) ----------------------------------- Main Program: SpartaDos Users Notice: If 7}you are running this in SpartaDos, I suggest either using another DOS or running the entire program from Hard Disk 8}or Ramdisk. Because of SpartaDos's inner workings there is less processor time for DLIs and VBIs during floppy disk acc9}ess. Therefore any floppy drive access _will_ abort. Boot up: When loading the program from whatever D:}OS you like, you will see a pretty starry title screen. You don't have to wait for the titles to finish, just pres;}s Option to skip the rest of the titles, but you have to wait for the loading to finish. Now once you have done th<}at, you may notice that all inverse characters blink. In time this gets very annoying, I found the trap for that. When=} you press Option, immediately press Select, the blinking will be no more. NOTE: if you have an MIO, the Select k>}ey may trigger the configuration menu if your timing is off, if this happens, press Reset ?} -page1- Sound Monitor v1.2 and exit the program right away, the configura@}tion menu loads from MIO Roms on top of the sound monitor program. OPTION - skip credits SELECA}T - use with Option to turn off blinking inverse characters. Once you are in the program, you get a veryB} pretty and colorful display. In the middle of the screen there are two rows of text, each with a highlight. PresC}s < > to move the top highlight, these are the headers, below it are the functions. The function highlight is moved D} by + * keys. <(clear), >(insert) - move header highlight left/right +(plus), *(asterisk) - move functionE} highlight left/right Here is the command overview and what they mean: Editieren: Editing F} -Huellkurve -Spectrum analyser, you enter the sound editor. -Pattern -Pattern editor, this is the part wereG} you type in the song -Daten-tabelle! -Move to a desired position. A position is equal H} to one pattern screen (32 lines) Spielen: Playing -Pattern -Only play the song in thI}e pattern buffer -Alles -Play whole song starting at current position -Alles (Position 0) J} -Play from beginning of the song. Disk: Disk use -Laden -Load .SNG file -SpeicherK}n -Save .SNG in memory -Inhaltsverzeichnis -Believe it or not, this means Directory... L} Option: Special options -Speicher Aufraeumen -If you know what this is, mail me -MuM}sic Packen -toggles .SNG file compression when saving aus - off ein - on Quit: Quitting N} -zum DOS -Exit to Dos -Kaltstart -Coldstart -Music loeschen -Clear .SNG in memory O}=================================== ----------------------------------- -page2P}- Sound Monitor v1.2 /Editing Subsystem/ Huellkurve - Sound editor --Q}----------------------- This is where you get to create your own sounds, using varying volume, pitch, anR}d set distortion values. Control goes to the top of the screen. Commands: +(plus), *(asterisk) - move h+}(6, A.C.E.C. dom ⇙E˩(̩ˈ  L 7u)Y*,v)^*>*8?*&A*D*D*UT` B7D,E HIX} V* @m>*>*?*A*i A*D*D*Y*i Y*^*N**N*J*&A*D*D*B*E***),L;*>/ )3,Y}TU` B),M0L +<0DEHI V0 \ԢB^D0EJK V@BHZ}I VL+800 8 ),ȍ), )` )/Т@ԩb \ )),LE(7˩,̮),i ː [} c0.c0˝c0 BaD0EJK VL(S:D:*.*@A00p \}A0 press key to run no locked files K:D: HHH Ԍ0hhh@HH00 ]}ЍЈi0hh@ p0v00Lb  0fD EDE H IhH8HDHIEI^}HI VEгD L ТHLtl B VlBHI V`89fffffff>`<|fl0fF68_}of;p88pf<99|||a}||888888||||v|||88888b}|l8||8888pE(?weeee f o8` f oL%򪈱HhH fh oL%` d}` ө`O  JE0 )Lyz`abcd?: 4|6LC4L e}7pp B4A4( ө/@ԩ5041"/ԩi ` TQE@  / f} /8ԩЩii844g44;=4; ҝ4 ҝ4 ҝ4 ҝ44 )4 )i444н4 g}44;4;4444ު4444ޢ4Ơ0L4`HHHح ( 4L5ƥT5ȹ5Ȅ  . h}棥i(Hihii6'4hhh@    x  4 4+3praesentiert 3-/.6 3ound-onito i}rprofessional programmiertvon 4orsten+arwoth 0rogrammwirdgeladen  ` C4L7 j} 4} 403 fffff>`<|fl0fF68of;p88pf< 80 0 ~~ l}0 0~ff~ff|f|ff|``nf<ff~f~~>f<flxxlf`~cwkc m}cfv~~nff>``|ff| p}<`<>ff>>ff>|``|f8<<``lxlf8<fkc|fff>|f` q}>`<|~f>f<ck>6f< x~ 0~<~~<~x|nf8x802L r}Bp D N@B   BAÖɖՖۖ3-/.6 3ound-onitor s}0rofessionalCDEFGHCDEFGHCDEFGHCDEFGH] (+_ 6#^&0osition 0atternY 0atternZ t} 0attern[ 0attern\ %$)4)%2%.30)%,%.$)3+/04)/.15)4􀑙 u}HDEhJKBLV BLV BDEHILV Drive 1* SNG D1:*. D1:_.SNG ##$ v}$%&&''!!"##$$%&&''!!"##$$%&&''!!"#                     @` zsxdcvgbh w}njmq2w3er5t6y7uZSXDCVGBHNJMQ!"#$%&'@()(0VSCDULHQEJPTMAW #$%&-=+*<>\^Ș˘Θט x}'Ow`؉8Rk=JJ0123456789ABCDEF⎀ y}(uellkurve0attern$aten 4abelle0attern!lles!lles0osition ,aden3peichern)nh z}altsverzeichnis3peicheraufraeumen-usikpackeneinzum$/3+altstart-usikloeschen {}  "        ,7?EWZ]`ttLLLjH Ӟ |}hj LqjHj  l8` L:) L:LΠLL}Ll l  &'x `ގ }}ҭߎҭ掍ҭvw `֎َ`D/َ َ掩؎ ֎ҩҢҝގ`ގ ~}؎L׎8Ԏ֎׎َ؎֎֎ 2֎,0(ԎԎՎԎ4567&&& }&&& iiL ii@֎JJTH֎i ) , || NjNj }JJ)?LL֎i HJ)h) tLa&&&&&ii8 }0&0 0 )8)  )  H hߎqH**) ma }nbh tގ ߎߎi )8H)hJ)0   ގ8 }ގm ގ0L ڎ8 `  ގJގ0H) ގhJH)JhJ }  JގގLux{NNN8`1.28852/-)(%#! ``8 }`e/.)` )Ԏi׎`ڎ` ׎)׎)׎` َ)َ)َ؎``  }0)֎؎ 0)`  D  Lt tТ)hIh0i(i0 }@`pi(i01o0 ޚi膫 ?@à()  }  q H')ɍ '(yɍ( ( H<>+(*;ɛ }MΤLڔޥ𼫍殤iݫLڔ}8) ܍ݍ t ( }L̊ i0iJ h)) '"`)i&i8)H#`p h`p }`H)`h) `8 i@ ``HHح ̊̊ XY t̊hh@Щ `Щ(Щ` }Щ(`؍`i)`i )Ix`ЍЩ `Щ `Щ`L̊`a{8 ` l8 }`)`H) HhJ  `i` ]^ef``i0i' Ʀ`i0 } <Ȋii R)HJJ͊ȽȽ- <JfhH)? <Ȋh)ŋ G }i iƧ0L՗`M)y, `)Ii0Ji8`ꋼՋ H0H h  }` Ø Ę tLfƪ``ƫ`櫥i)`) f .LHʽ0 ['\(E Rh tL }`0(HEIh+*'<(}$>8ɝFPɁo`||)|Lޚ|} ̙@(ʈLq ̙?ʈLqLq }p ̙?ʈ``Lk `L/m` Lyv)>wHJh  EI| })x י` (`H)hL0 (票)ᅨL0 (ҥ)̥) L0 ŋ`)Ц)  }L0,i0*&& )He˚hHyh` ĊŊHt|)HJJh)iIt`L΀i })?Hh <戎 ʊ &i8'! <ȩ鈙;)*8HQ }RhP LYHJH)S)hJ)iTh) Ly`jLj4567j8 } <894H5H6H7Hkz數 &'h <ȩƩ樥iƦ`k)Ik }Y`suanie ȹ 船  HN0  tL<>+*=-:?},./;1>Zi }7Sms) `ƨ`樥 `0H)ph)` K08)` K0i0 `Ĩj8 }ca `0  ȱ)J)8婅Ũ. )Jȑ)ȱ)iJ8 `)0I` }0H)`8 )`h)`0H)`i ) i )`i))8 LE8)ڠ) 񩁑` } ( `4j桥Ɂ`4567` Վ jՎjʎԎ  kHH }i f%֎Ū򅪭0Ԏj j  k fLX hh,0 y<>i   `jLӞjjՎ }ʎjLӞ) Ď  Q&' ` Qi)'ٟ`0,!94Ʀ }`& ߟ ߟ `↩䨰܆ ?Hh 4Ũ L }&&ii@`4Ũ` ƍ)ŧ }ƧL= ?Ѥ0L ?L4j `4j }歅 ̙?ʈ樥שLq ߟ6 $ҩҥH) h)Ҍi` } ġH ̙?ʈhH ̙?ʈhƧ0L MjLX ߟ }` i i)FjFjJ)0武򆫅Lf l }栢._)  G G߹뢨 P l v) ġ }L  G̹ܹ! G槭0 iС l f G 7 H H 7h-'=+*7+3!@" };@5& VLƪi ŧ奩IݭILࢊ 0L f I ŠI`~_` }hh8`ɛ`_!`_hh`̦ŠȢ)?i )?i `. _ʹ3 `  }_ .0[ ` ࢰ Π  ߟI Xࠁ PBʈ l ġLHk }} z04歘e桘eƨ LE膽& }@ ۭ&8 Ll ࢐`ࠁ P'LG v0};LG  }& L-4歘eƨ膽&@ & }8 L- lLĎ0 v8`` d0օ 0 dŶ v ` d d v }LC vhh8`  &'i Ʃƨ H0.5<jL>jL (ޢj jj }L> ~GLL4567 ġ >ʈj MLj >44556677` } ġ Hɛ` W8` Ď8` WLw W  Lt0 z8`` stu }sss L v  sꅶ ЅѰFѰA7sѰs v 0sꥶ } } }s }Lm v } ```8`tu` zhh8`3 ! }ׂ }       4 } 0T2QRRRREKKJKLHJQRRRRE|-ade|LKKLK|QRRE||in|ʀJ||0$|}||#3&2|IJ|ZRRC|ZRRRRCIOIIOIOJIOʀZRRRRCNNNNNNNNNNNNNNNNNNNNNNF}FGFFGFFGFFGFMMMMMMMMMMGFVJFVJFVFMMMMMMMMGFVV7rittenbyBVFVVV"%7%3/&4BVV}BVVVVBVV*"ernasekBFFFFFVBFGNNNNNNNNNNFGNNNNNNNNF/ԩ0}ԩ21ԩЍЩ Щ:Щ"/`ppppppppppGA2ppppB0A2./7,/!$).'1,;q e}ArT1o .tE|nsi0S:@aB-byURNcPD kldfC uLMO}9gIVm2"JvwK#W~*Y$%3>?!Gjhpqxz{&'+,/45678;<=FHQXZ[\]^_`}V#gco?$?3?3 _?_kBO"_;똿AԦso;LM&L}HTvAsIVSTG0>',Zʀ ^4| Aq_n | }dpThüMZ 6r@ċ]}|bBHSԿkP"@I aWqD^Ti`@!1LO0xZUs aE@pAD ^4pI},dPA]O0wPWPQPnV,dPA_G}p`@!n poIg1R 0@  0@ @P000}0000C@L0 0000P   " ( 2 ( 2  @0(@D  %n }cLcgFL"BcgF("BSSSSgHL"FSL3((((cLGCL"B"BgB((L"@gBL"@gAAXH#A `A?Z}A,a T(wAzh>S6I"It/bf?7?;귍KWe݇}OdW}>T|?8>fpx`36<@0;'yno7 >t N:  t@Pd hD"8ADAD}ADADA :V1AI@gB 'A-x8A[%j4~ū()` @4/_D%`h ;bP}@-Ep?2>ѺJ`N ?,2 MӔx_-+5SB_b~f`<x>8|l Nrp?؆ '6#9n۰o}q 0vyB{aŸCǁc 3#"y7a_;ٟ1c<@ }U;V̾ 8/!("BI $ R} >؞_HV%HRB  r<~ >?Eg']% ^ !# QBO%"WH} (_h <*hHBJsQ@8~B_ @XC(aC,1ƵF0QF01E.DC1CQ1c$xT9 M/b] }A 1CF1C 1` 0  1$Ab1ٶ@wNƟ  cH`*CaF0QA*@ s#O p`  v}FSKVhj_W}_bHa b PHQ b !P !EHa ! ;6$Nq * $A$11`}$"@DL$T1tsO$q$H1s ~?'?OXTP @@   0(D! A`H} "?|B~$8PaXC4&?13"s10!!Cb!ÈD,Cȃs0 DCc0Q,Bc}D:{=L=u0!MqaC90J(PO030CY0 9L(LÐ=t $?fà=t$>&f } (:L r 00`@$1L9 Cq0$1q0@?8!H?C}@#=81p9 #>&=1G ? p8 4#(<1 :}G ?.G7t=`?7GC\#y ?W7 CoS}x$?7P!E .:`ŠAx0 x` 10 0$1C C}z~9p;Hc] 9?!w`P7wp9A] CP}`(+Hc￁B0 sz(PW0 sz p9P0 sz> `| `}ߋ?C޻ c9w(PW~.A]A]G뿁Bp?$?7 ^(+}$1zP_aHc޻(+?0 s{(+?$1Pp90 sz(PW`;p9w(PW~.}7 `A] C޻(+Hcw0 szP\!o] ߋ Y@?   !) ( `<P}0"HWTYZ[\]8$-LBN2+4F5I'.X*8jD`_ e%e!-#()EKH$iD#(enI1 8~P8~X8}J2 QAA,2'22_0D/d  S$A,jıF K1,jXu:AEGZ5P @@D5FP "}N@#(e!Dd!d#(b222~/8E( e_0B22 2 2 2@ *@I1CP}P|@e! P .@eP "hQC dPeH dIK%ApdP-@H$2d0,_7 @HL}R2_ e#()D#(epM‘I?5 Qg2 _B!Dd/ $AjF A1ju:}A@G @@D5P "F@ *jBI FQ0EEEE(` C |j5+ @yPPDeP "7 @ FQ} p2 a" |T5hd! @ "' @`_ e^OI䑔IIxR2_ E|Nju>j} E|N P`R2R2R2R2R2R25!@xFP#P@F<#P є:<% @ FQ}}|\% B FPL2 A|YApK8/'t d𳌂=qG>2 FA D%"_x/"8/"/" D/"@S @a2YP&}@eaYPQf@(@Dѐ2@ "pAM28# Bd q^@ FAx+d$D!"@B# ~?Fda)}P}@ FPC(&2" ϏQ@ 'ydqG FA]kd >?F ( y2_ A d:BqGN2 A8}#0 !xC_/F@ +  d a P$&@ea P#R# Ta A', CaAJ!"G B}2k0 (?eD2"G @N20 B2F ( xB2_ & dD;qGqG?qGqGxN2 " @LA_ & e}a P#0( d!A q\ A{8. @d_Q@ &0daI@X&0d_P d$5<>dqG@ <}>d>~  )!A/_  \/0B<@`?x\B_/B) ~M [F@-dѐb20 x}D N!K8a J!X&# $B`E @  2*0|nd @0"h χPF@0!d$I "h }T ! e?4@ `!pAG`!h<?M Ah1Z2!h d& F Bq)! 04`}]0, C gA 0p`y*}< B@' ḅ̻_!~7}? & A`?Y .@ kmHX",D B0!}zBq (xO,@ 9 @h!}>xWO_xn!|WO @ @ >r`p!@8xL<' A?>r4 b ?>r4" _}Y /!U@dP*~R teOB? J22єA` shH2125 K}K @?B`B05 Ke0. | B!} @B$A@7R! }( ?DDE 07HD5O}XAZC.`k,Aa !ϵ?AH<+_@@ORY h@?A" ^ @s$An n - K`b5X }@j _ۥDb H<+xOtJ2!ADDn st OC  E-"`/?x `@M} &h( ှ48LHQm/ 2` 9Iaya0}$=[d E" @_@x\0v}Qm7 9@n"@L?2Hр"2E D~  6P>Fh @}@n"@s}D}!_".}F0UA`  NX>4C8 (H f`!fL$ßD00p(![}0 Fw}/`L&@X>@N/L>@L s!G1}0w qA0!1AA` 'c 3}d\ dslqd0 0 X,i^A`a kMd!0E "(D  D 0 P%P9SguI@O}nBaX܄#@W ?nG?eJ'LL-!Ɉ@L+~ab7dB}C p(S@1 ?Ɉ2$ALZH}h`i h` & &e & & & & & &eiii ` & &iiM}i(步i(ư`榥8?8?LX8 8 槥LXSH}EDhJHKH BLVHDhEZHIhLYⅨⅪp i(橥i(`}ZZ/Z?ZCZPZ) )?`)BJJ @JJ``JJJJ Z0i`JߘiH`РLJՈJшJͰ c YxZYyZ }Yո Hh־ʥLbH Zh Z Z Z Z ZLXJJJJ)i0`آ̝ Y} xY0 Y3T%T Th T8PTTTƇ Y rTh ?A}T2ЅB o}"/@Ԣ EA BAS XS XŢZb \ \ YI0S XL\}TC X T` XƩ1oTƅTo Xƅ eƢhi먐]\b\g\^\c\h\ XƅHHh}h ZoToT:/oTƥ ȆƩFťI EAI BAK L \L_ \L\L[ƩРʽUL}\` YƢT X H*hi;]iQ<](>]?](A]B];]i;]<]>]i(>]?]>]}A]?]i B] \0H \hJLL[ WiL]WiƩ  WihL[L ] yW}W`8`~}!VeVeHVeh ]تƀ`~!VeVeHVeh ]ƀ`I EAI BA j}:ɠi(悥i`I j:ɠi(悥iޥI =HILBA<_H}_V_a_j_s_8` ^_^_~WiVVHVhi ^y6_}9_Wi~ƀ` HHIhh`HIh`I}8`Iʥ`I`I8`JHh` YU] XU XOǩȅɅʢȝ ) H}W~ _hHW~ _hHW~ _hW)WJJJJ~~JȦɤ ZO8JJJi0~__~ X =^ ]LSb} \Džũ ^ML \L[K bL`˵0Hh h L`Laʥ}`}` ]L_` }Lb` ]LW`ƥ ]ƥ8) a ^ ^ =^%4iʈ }P ḁ8La8La P aL_uȕȩ`H ^ ] h8 H ahH a Wi~ }hL_`a֣ ] ]֣8`LXHȽqi =^W a \5W aȽqi = }^ ^ \h`W a Wɩ Xi7i .i'i Xީ \ 0 \L[Q Qhi b }ȝiɝiʝih Y xY0 Y YL[W X   X} 4y %;X0ŒL^c `Ʃ ƉL%cL%c̽cҽc`}<5/-(pt}xquyrvzsw{}           }(Px4Tt!((E)))***++T,,-b--.Z...E/m///0I0000A1i1111;2}t2223@3t3333$4L44445$5D5|5555"6B6\6t6666 )""#q$$`% &}&''r(())4** ++,,,@---".p..#/a///}/#0\000$1]11112N222343\33334h4444585\55556:6R6l66666%N&&i**+-D.z.60o00(2a2234<4l55566}6 AAAA6ei恥i(惥8(ƅѩ cDdDsDtDDD}DDD E摥Ɔ`qBBBBBBBBCC%C7CIC[CmCCCCCCCCCC $=Vo   }     DDD 5E F 5EHH F 5EhhLlG!}0ȱL[EȱL[EȱJ8喅 & &e & & &0LE88e"}eei晦FEJ`UUU"UU"D  0HI1J 8(Ɨ#} i(ƛƜͥ8eL F`~(jI1Ɲ(jI1J 8(Ɨ i(ƛƜ$}Ы8eLTF0FJ 8(Ɨ i(ƛƜϥ8eLF`~(j%}Ɲ(jJ 8(Ɨ i(ƛƜЯ8eLG)0R5ƒJ 8(Ɨ &}i(ƛƜå8eLvG`~(j5Ɲ(j5ƒJ 8(Ɨ i('}ƛƜП8eLGӍ\ii .L`9hhl ( ;LC ( ;LO ( ((} ;ƃ޺ ( ( ( (H)hJJJJJi (Ɠ ł.eŁ#e ;)}ƅƄƃ`Lt? &Ɣ`& (8􄐠``Ǝƍ`,;*}o ?sTP@tTCx /I:oS|sQ`tMc=HeMi?Ax6B : ~Xqop/01+}Hʍ"/LppppppppppppGppApleasewait$%0!#+).'GqZ       @8-}HH88L0TXD.}ooooooo/O///O//O//O/D8888Toooo/}oo8h0$8oooooT80Doooo<(<<(<(0L00L0Looooooooo0}oooooD0DD0D0D0DD0D0oooooooooooooo8$88$8$oooooooo1}oo,,,$$$$2}OOOO`Loo hT Doo o 0@o3}o8 $8o oo<440(  OOOOOOO/////////}d`XDd`XDldlld`d`X/////////////Xd<D<DHL?}LLLLLL                 g    @}       @<H<P<X<P<H<P<X<\<B}<<4<<<H<<<4<<<PH/o/o/o/oC} < <OOOO4<4D4H4DHPHXH\XP44H D}D4DHlOOOO(,(<(D(<(,(<(D(<E}(X(X OOOO((( (((4((( (((<4F}/o/o/o/o// ,,,,,,,,$,,,,8,,,,,$<D<P<G}X<P<H<P<X<\ <<<4<<<H<<<4<<<PH l44H}lHHl44l\XH \\,\,\\,\,\\,\,\\\/o/o/l(d#!\\,\,\\,\,\I}\,\,\\\/o/o/o/o//(D(H(P(H(D(H(P(X<D<P<X<PJ}<H<P<X<\HHl44lHHlK}44l\XH <OOOO <lX4OOOO!<X<OOO"L} (lOOO #<44<HH<44<\XH   omkigecaM}    G     @0``0`` PP PP(XX(XXL|LL|L ```PPPX!O}XXL||LL 0``0`` PP PP(XX(XXL|LL|L ```PPPXXXL||LL !P}  PPHxH@p@HxH////////////////4d44d44d44d4//////////!Q}//////PPHP\P\HH@HPHP44@4@HP\\PHPH@/////444444OOOOOOOOOOO!R}OXXXXXXXX      XXXXXXXXXXOOOOOO!S}OOOOOOXXXXXXXXXHHHHHHHHHHxxxxxxxxxx!T}h\p\x\|\x\p\h\dho.m,k*i(g&e$c"a!HHHLH@\\\hd\////!U}////////88888,TTTTTL////////////DtDDttLL||LL||DDttDDtx`|h!V}\p\x\|\x\p\h\dhooooooooooooooooDtDDtDL|LL|LDtDDtD`XLH@4P\\\P\!W}d////////4444444OOOOOOOOOODtDDttLL||LL||DDttDDtxLL||XX!X} DtDDtDL|LL|LDtDDtDL|L(XX H@4P\PH///////444444OO!Y}OOOOOOOOXXHxHxxXXPxHxHH (XX(XXHxHHxH(XX(XXHxHHxH  !Z}  `abcdefgh  5 0000   0"')')')')')0 0 0  0%$(&,/-. !0*#0+@(XX((%\}X(XHHH P///////////////OOOOOOOOOO%]}(OOOOOOH<hhH<ooH@tl ((%^}XX((X(XHHH T(/////////////HH44oo((X(XX(XHHLPTX %_}I9UMI%P-]IMIA9-((XX((X(XHH /%`}////////// 4PdH4PdP4HdP4HdH%a}H\H4H\H4HXH4HXH%b}4OOOOOOOOOOOOO44d4dd4d P  PHD %c}((X(XX(XH  44dd44d4d PP PH/////////////PPPPHH%d}HHd4d4d4d4eua YQ%e} HHHHHHHH\4\4X4X4%f}Y}u}qYQ}q  HHHHHH%g}d4H`xPHHXY=HDd%q}B%DOS SYSB)SMON TXTBSAUTORUN SYSbRcSMON COMbrTETRIS3DCOMB ,AXELF SNGB 7CHAMBERSSNGB AMEGA1 SNGB NMEGA2 SNGB[OHNETITLSNGBySCHROTT SNGB~SHADES SNGBSYNTHE1 SNGB PLAY M65BCREPLAY M65BGREPLAY SRC (  ABCDEFG KL NOP@,THH44T%r}`@\HPH@4,4TXXXXXXXXXXDDDDDDDDDD%s}////////////////////T\`h@L\LLLLLLLLLLL88888888%t}88////////////////////\hLL L L L L L L L L L%u} L T\`h@L\LxHPH@4,%v}4Tomkigeca  @ABCDEFGHIJKLMN%w}O eikmnonn~      EjNOnN~  %*.-++; %x}   $      @<,///// @44/////DD<<DD<PDD<<DD)z}DLDD <<DD D LDD < D P HD<DHD<D  PDDD){}D1:>M65>LABELS.M65>D1:>M65>MAC.M65>D1:>M65>REPLAY.M65>D1:>M65>ERROR.M65 CIOV5} CIOVI:OK !ERROR:OK FILE@ OLDVBI  SIZE MSG APlay Sound Monitor>AMSGLEN MSG 5}START"%>=, Q>4START6 P@DOSVEC7@3J Q>5STARTT P@DOSVEC7^$>hPOKE ICCOM= rVPOKE ICBADR=MSG|VPOKE5} ICBLEN=MSGLEN CIOVPOKE ICCOM=VPOKE ICBADR=FILEVPOKE ICBLEN= CIOV$>pPOKEX ICCOM= 5} CIOV POKEX ICCOM=VPOKEX ICBADR=FILEPOKEX ICAUX1=POKEX ICAUX2= CIOV POKEX ICCOM=5}' CIOV POKEX ICCOM=&VPOKEX ICBADR=BUFFER0QL9: PICBLEN9D QL9NPICBLEN9X CIOV bPOKEX5} ICCOM= l CIOV vX;DPOKE OLDVBI=$ $>4BUFFER %>5BUFFER MP.INITQ> %>4VBI $>5VBI SETVBV5}YOQCONSOLR>HYOQ> %OLDVBI$OLDVBI  SETVBVQ>  PAUDC1* PAUDC24 PAUDC3> PAUDC4H:RX;5}\VBIf MP.PLAYp !XITVBVzX; BUFFER4-$! ;RePlay.ASM;==========(2';Fuer mit SoundMonitor Professional<";erstelle Musikstuecke! (V1.2)FP%;K9}ann So assembliert werden, dannZ';aber ueber Sprungtabelle aufrufen!dn EI=EHx;Sprungtabelle !MP.INIT !MP.9}PLAY;MusicPlayer V1.2";belegt ZP-Adresse $00 & $01 !$;Parametertabelle AbspielroutineMP.POS ;; Positi9}on"MP.PTP =;; Pos. im PatternMP.SPD ;; Zaehler Geschw.MP.TIM ;; Abspielgeschw."MP.LEN ;; Laenge Musik9}stueck$MP.PAR A00000000A;; Audio-WerteMP.CTL ;; Audio-Control%MP.TRKADR ;; Abspielreihenfolge"-MP.TRKBAS ;9}; Basisadresse Trackspeicher,'MP.HULBAS ;; Basisadresse Huellk.6@FLAGTAB A AJT$MP.PAT ==9}=;; Pattern-Nr.^*MP.HKP ===;; Zeiger Huellkurveh(MP.FMP ===;; Zeiger FM-Kurver#MP.HKN ===;; H9}uellkurve|!MP.TON ===;; Tonfreq.%MP.VOL ===;; Kanal-Volume"MP.NOT ===;; Noten-Nr.MP.EFF 9}===;; Effekt MP.CNT ;; Interner Zaehler MP.WRK ;; Arbeitsbereich !MP.ENDE ;Initialisierungsrou9}tine%;Adresse des ungep. Songs in X/Y!MP.INIT&'$>MP.ENDEFLAGTABQ>MP.I1PFLAGTAB90 IMP.I1&9}Q>0 PMP.TIM:Q>D PMP.CTLN MP.I2Q>X PMP.SPDbQ> l PMP.PTPvQ>PҊQ>PҞ$>MP.I3P99} PMP.PAR90 IMP.I3%>Q@7 PMP.LEN(;Basisadresse Trk-AbspielreihenfolgeQ, O>PMP.TRKADR 9}Q*O>4PMP.TRKADR> QMP.LENH PMP.WRKRQ>\PMP.WRKf$>pMP.I4TMP.WRKzUMP.WRK0 IMP.I49} QMP.WRK,OMP.TRKADRPMP.TRKBASQMP.WRKOMP.TRKADRPMP.TRKBAS%>Q@7;; Anzahl Pattern P9}MP.WRKQ>PMP.WRK$>MP.I5TMP.WRK$UMP.WRK.08 IMP.I5B QMP.WRKL,VOMP.TRKBAS`PMP.HULBASj9}QMP.WRKtOMP.TRKBAS~PMP.HULBASQ> PMP.POS$;Routine laeuft in Mp.PLay 'rein$;fuer 1. Initiali9}sierungsphase !);Mp.Play alle 1/50 sekunden aufrufen!MP.PLAY$>MP.P1QMP.PAR9P90 IMP.P1  "M9}P.SPD FMP.P1A !MP.DOSND(MP.P1AQMP.PTP2 FMP.P1A1<;FS>P PMP.POSZQ>d PMP.PTPnQ>xPMP.PTP9}MP.P1A1QMP.TIM PMP.SPD;naechste Note im Pattern ! #MP.PTP QMP.PTPR>  DMP.P2;naechstes PatternQ>9} PMP.PTP #MP.POS $MP.POS(MP.LEN;; Ende ? HMP.P1B$> &MP.POS" MP.P1B,A6,@OMP.TRKADRJPT9}Q>^OMP.TRKADRhPr%>|$>MP.P1CQ@7 PMP.PAT9Q, OMP.LENP DMP.P1D# MP.P1D29}(> DMP.P1C MP.P2Q>;; Kanal PMP.CNT MP.P3 $MP.CNT&Q>0P: QMP.PAT9D%>N MP.P3AT?XUb19}l IMP.P3Av,OMP.TRKBASPQOMP.TRKBASP %MP.PTPQ@7;; Note + >hk PMP.WRKV?V?R>9}FMP.PARONLY PMP.NOT9Q>  PMP.HKP9 PMP.FMP9  QMP.PTP*,4O> >?HQ@7;; parameter+f PMP.VOL9p;4 * schieben fuer HKzMP.P36$MP.CNTQMP.WRK VMP.WRKW? VMP.WRKW?V?V?M>? P9}MP.HKN9MP.NXT1"MP.CNT IMP.P3J !MP.DOSNDMP.P3J!MP.P3 1MP.PARONLY;Keine Note, Parameter bearbeiten! $;bit9} 0-3 Parameter, 4-7 Kommando QMP.PTP$ ,. O> 8 ?B Q@7L 5V V?` V?j V?t M>;; fuer Zugriff~ >;; auf Adresstabel9}le ! QMP.FNADR9 PMP.P39 QMP.FNADR9 PMP.P39 7 M>;; parameter ! ?;; auch als Index $MP.CNT;; Ka9}nal MP.P39 t !MP.NXT1  ;Nach Hullkurvendaten und ;FM-Daten Sound berechnen  MP.DOSNDQ> PMP.CNT( 9}MP.P42 $MP.CNT< Q>F PP QMP.HKN9Z %>d MP.P4AT?n Ux 1 IMP.P4A , OMP.HULBAS P Q OMP.HULBA9}S P QMP.HKP9 R> EMP.P40 #MP.HKP9 MP.P40%> Q@7 %MP.NOT9 > QNOTEN_TAB08" 0, GMP.P446 )9}>&@ EMP.P44J QNOTEN_TAB18T 0^ GMP.P44h QNOTEN_TAB28r 0| GMP.P44 C T? T? MP.P44$MP.CNT PMP.TON9 M9}P.P45%MP.HKP9 Q@7 IMP.P5 ;Relativer Sprungbefehl ! M> PMP.WRK C ; SMP.WRK PMP.HKP9 EMP.P45;; i9}mmer& MP.P5PMP.WRK0 M>;; DEC Volume ?: FMP.P6D QMP.VOL9N FMP.P6X "MP.VOL9b MP.P6QMP.WRKl M>v PMP.WRK9} QMP.VOL9 T? T? T? T? LMP.WRK ? QMP.VOLTAB8 5 A T? ? 7 PMP.PAR8 'MP.P7A QMP.TO9}N9 5* TMP.WRK4 TMP.WRK> U?H TMP.WRKR U?\ M>f T?p >z QMP.SUB19 PMP.P7 QMP.SUB19 PMP.P7 7;9}; Ton holen PMP.WRK MP.P7 t;; Ton modifizieren PMP.PAR8;; und merken PMP.WRK ;FM-Berechnung $MP.CNT %>9} Q@7;; Klang/Instr. MP.P7A%>;; smdLMP.PAR8PMP.PAR8 QMP.FMP9$R>. EMP.P88 #MP.FMP9B MP.P8L9} QMP.FMP9V,`O> ;; Huellkurve+32j?;; ergibt FM-Huellk.!tQ@7~ IMP.P9;Relativer Sprungbefehl !M> PMP.9}WRK QMP.FMP9; SMP.WRK PMP.FMP9EMP.P8;; immerMP.P9PMP.WRK5M>?7 V?V?V?(V?2V?<M9}>F>;; mod.-GradPQMP.FMTAB8Z MP.P950d GMP.P10nT?x HMP.P95MP.P10PMP.WRK QMP.CNTT?>)> %M9}P.CNT DMP.P10A;subtrahieren QMP.PAR9;SMP.WRK EMP.P11Q> FMP.P11 MP.P10A QMP.PAR9",,O9}MP.WRK6PMP.WRK@ DMP.P11JQ>TMP.P11PMP.WRK^ QMP.CNTh>rT?|?QMP.WRK PMP.PAR8 "MP.CNT9} GMP.QUIT !MP.P4(;mp.Eff-Kram (UpDate V1.0 nach V1.1)MP.QUITQ> PMP.CNTMP.QT1QMP.CNT>T?? QMP9}.EFF9 FMP.QT2;S>&R>0 DMP.QT3:MP.QT2#MP.CNTD QMP.CNTNR>X DMP.QT1b:lMP.QT3R> v DMP.QT5S9}> > QMP.PAR8 MP.QT4V?0 IMP.QT4 PMP.PAR8GMP.QT2;; immer ! MP.QT55M>;; Ziel-KanalT?> QM9}P.PAR8 PMP.WRK PMP.WRK7 V?*V?4V?> DMP.QT6H5R QMP.WRK\M>f PMP.WRKpV?zPMP.WRK7 MP.Q9}T6V? DMP.QT7 QMP.WRKL> PMP.WRKV?PMP.WRKMP.QT7QMP.WRK PMP.PAR8QMP.WRK PMP.PAR9 !M9}P.QT2MP.SUB1 MP.MOD0=MP.MOD1 MP.MOD2=MP.MOD3$MP.MOD1VMP.WRK.MP.MOD2VMP.WRK8MP.MOD3VMP.WRKB;L S9}MP.WRKV MP.MOD0:`j$MP.FMTAB =======t =======~'MP.FNADR NOFN=FNVOL=FNSET=FN9}CLR FNUN=FNDN=FNLAC=FNHAC FNQT=FNEFF=FNJPH=FNJPL FNTIH=FNTIL=FNAR=FNWT;Reine ToeneNOTEN_TAB0 9} ==== ==== ==y=s=l f=`=[=U=Q=L=H C=?=<=9=6=3=0 -=*=(=%=$=!=9}! ========= ;"Harte" BasstoeneNOTEN_TAB1  ====( ====2 ==y=s=9}l< d=`=[=U=Q=L=HF C=?=<=9=7=4=0P -=*=(=%=$=!=Z d;"Weiche" BasstoenenNOTEN_TAB2 x 9}==== ==== ==z=q=k e=_=\=V=P=M=G D=A=>=8=5=2=/ -=)=(=%=#=!=9} =MP.VOLTAB ===============3 ===============3 9}===============3 ===============3 =======9}========3 ===============3 ===============9}3 ==============="3 ===============,3 ======9}========= 63 ============= = = @3 ============ = 9}= = J3 =========== = = = = T3 ========== = = = = = ^3 ====9}====== = = = = =h3 ========= = = = = ==r|FNVOLPMP.VOL9 NOFN:FNSET9}Q>FNS1PFLAGTAB8: FNCLRQ> FFNS1 FNUNP QMP.NOT9;S FFNUN0 EFNUN1 FNUN0Q>FNUN1P9}MP.NOT9: FNDNP& QMP.NOT90,:ODR>/N DFNUN1XQ>.b HFNUN1l FNLACPv QMP.CTLM> FNACL P9}MP.CTL: FNHACT?T?T?T?P QMP.CTLM> IFNACFNQTQMP.POS, O>PMP.PTP :*FNEFFP9}MP.EFF94:> FNJPHT?HT?RT?\T?fPpQMP.PTPzM> IFNJP1 FNJPLPQMP.PTPM> FNJP1LPM9}P.PTP: FNTIHT?T?T?T?P QMP.TIMM> IFNTI1 FNTILP$ QMP.TIM.M>8 FNTI1LB PMP.TIM9}L PMP.SPDV:` FNARQ>j PMP.CTLt:~FNWTQFLAGTAB8 HFNWT1 "MP.PTPQ> PMP.SPD FNWT1:8q ; ; RePlay.ASM ; ========== ; ; Fuer mit SoundMonitor Professional ; erstelle Musikstuecke! (V1.2) ; ; Kan=}n So assembliert werden, dann ; aber ueber Sprungtabelle aufrufen! ; OPT F,R,I ; ORG $3000 ; Sprungtabelle JMP M=}p.Init JMP Mp.Play ; ; MusicPlayer V1.2 ; belegt ZP-Adresse $00 & $01 ! ; Parametertabelle Abspielroutine ; Mp.=}pos:DFB 0 ; Position Mp.ptp:DFB 0,0 ; Pos. im Pattern Mp.spd:DFB 0 ; Zaehler Geschw. Mp.tim:DFB 0 ; Abspielgeschw. Mp.len=}:DFB 0 ; Laenge Musikstueck Mp.par:ASC %00000000% Audio-Werte Mp.ctl:DFB 0 ; Audio-Control Mp.TrkAdr:DFW 0 ; Abspielreihen=}folge Mp.TrkBas:DFW 0 ; Basisadresse Trackspeicher Mp.HulBas:DFW 0 ; Basisadresse Huellk. ; FlagTab:ASC % =} % 16 ; Mp.pat:DFB 0,0,0,0 ; Pattern-Nr. Mp.hkp:DFB 0,0,0,0 ; Zeiger Huellkurve Mp.fmp:DFB 0,0,0,0 ; Zeiger FM-Kurve =}Mp.hkn:DFB 0,0,0,0 ; Huellkurve Mp.ton:DFB 0,0,0,0 ; Tonfreq. Mp.vol:DFB 0,0,0,0 ; Kanal-Volume Mp.not:DFB 0,0,0,0 ; Noten=}-Nr. Mp.eff:DFB 0,0,0,0 ; Effekt Mp.cnt:DFB 0 ; Interner Zaehler Mp.wrk:DFW 0 ; Arbeitsbereich ! Mp.ende:DFB 0 ; ; I=}nitialisierungsroutine ; Adresse des ungep. Songs in X/Y! Mp.Init:STX 0 STY 1 LDX #Mp.ende-FlagTab LDA #0 Mp.i1:STA Fl=}agTab,X DEX BPL Mp.i1 LDA #7 STA Mp.tim LDA #0 STA Mp.ctl Mp.i2:LDA #1 STA Mp.spd LDA #32 STA Mp.ptp LDA #3 STA =}Skctl LDA #0 STA $d208 LDX #7 Mp.i3:STA $d200,X STA Mp.par,X DEX BPL Mp.i3 LDY #3 LDA (0),Y STA Mp.len ; Basisad=}resse Trk-Abspielreihenfolge LDA 0 CLC ADC #5 STA Mp.TrkAdr LDA 1 ADC #0 STA Mp.TrkAdr+1 LDA Mp.len STA Mp.wrk LDA=} #0 STA Mp.wrk+1 LDX #1 Mp.i4:ASL Mp.wrk ROL Mp.wrk+1 DEX BPL Mp.i4 LDA Mp.wrk CLC ADC Mp.trkAdr STA Mp.TrkBas L=}DA Mp.wrk+1 ADC Mp.TrkAdr+1 STA Mp.TrkBas+1 LDY #2 LDA (0),Y ; Anzahl Pattern STA Mp.wrk LDA #0 STA Mp.wrk+1 LDX #5 =}Mp.i5:ASL Mp.wrk ROL Mp.wrk+1 DEX BPL Mp.i5 LDA Mp.wrk CLC ADC Mp.TrkBas STA Mp.HulBas LDA Mp.wrk+1 ADC Mp.TrkBas+=}1 STA Mp.HulBas+1 LDA #-1 STA Mp.pos ; ; Routine laeuft in Mp.PLay 'rein ; fuer 1. Initialisierungsphase ! ; ;=} Mp.Play alle 1/50 sekunden aufrufen! ; Mp.Play:LDX #8 Mp.p1:LDA Mp.par,X STA $d200,X DEX BPL Mp.p1 DEC Mp.spd BEQ=} Mp.p1a JMP Mp.DoSnd Mp.p1a:LDA Mp.ptp+1 BEQ Mp.p1a1 SEC SBC #1 STA Mp.pos LDA #31 STA Mp.ptp LDA #0 STA Mp.ptp+1=} Mp.p1a1:LDA Mp.tim STA Mp.spd ; naechste Note im Pattern ! INC Mp.ptp LDA Mp.ptp CMP #32 BCC Mp.p2 ; naechstes Patt=}ern LDA #0 STA Mp.ptp INC Mp.pos LDX Mp.pos CPX Mp.len ; Ende ? BNE Mp.p1b LDX #0 STX Mp.pos Mp.p1b: TXA CLC AD=}C Mp.TrkAdr STA 0 LDA #0 ADC Mp.TrkAdr+1 STA 1 LDY #0 LDX #0 Mp.p1c:LDA (0),Y STA Mp.pat,X LDA 0 CLC ADC Mp.len =}STA 0 BCC Mp.p1d INC 1 Mp.p1d:INX CPX #4 BCC Mp.p1c Mp.p2: LDA #3 ; Kanal STA Mp.cnt Mp.p3: LDX Mp.cnt LDA #0 ST=}A 1 LDA Mp.pat,X LDY #5 Mp.p3a:ASL ROL 1 DEY BPL Mp.p3a CLC ADC Mp.TrkBas STA 0 LDA 1 ADC Mp.TrkBas+1 STA 1 L=}DY Mp.ptp LDA (0),Y ; Note + >hk STA Mp.wrk LSR LSR CMP #0 BEQ Mp.paronly STA Mp.not,X LDA #0 STA Mp.hkp,X STA Mp=}.fmp,X LDA Mp.ptp CLC ADC #32 TAY LDA (0),Y ; parameter+}nt ; Kanal Mp.p39:JSR $e474 JMP Mp.nxt1 ; ; Nach Hullkurvendaten und ; FM-Daten Sound berechnen ; Mp.DoSnd:LDA #>}3 STA Mp.cnt Mp.p4: LDX Mp.cnt LDA #0 STA 1 LDA Mp.hkn,X LDY #4 Mp.p4a:ASL ROL 1 DEY BPL Mp.p4a CLC ADC Mp.Hu>}lBas STA 0 LDA 1 ADC Mp.HulBas+1 STA 1 LDA Mp.hkp,X CMP #31 BCS Mp.p40 INC Mp.hkp,X Mp.p40:LDY #0 LDA (0),Y LDY Mp>}.not,X TAX LDA Noten_tab0,Y DEX BMI Mp.p44 CPY #38 BCS Mp.p44 LDA Noten_Tab1,Y DEX BMI Mp.p44 LDA Noten_Tab2,Y >}DEX BMI Mp.p44 TYA ASL ASL Mp.p44:LDX Mp.cnt STA Mp.ton,X Mp.p45:LDY Mp.hkp,X LDA (0),Y BPL Mp.p5 ; Relativer >}Sprungbefehl ! AND #31 STA Mp.wrk TYA SEC SBC Mp.wrk STA Mp.hkp,X BCS Mp.p45 ; immer Mp.p5:STA Mp.wrk AND #16 ; DE>}C Volume ? BEQ Mp.p6 LDA Mp.vol,X BEQ Mp.p6 DEC Mp.vol,X Mp.p6:LDA Mp.wrk AND #15 STA Mp.wrk+1 LDA Mp.vol,X ASL AS>}L ASL ASL ORA Mp.wrk+1 TAY LDA Mp.VolTab,Y PHA TXA ASL TAY PLA STA Mp.par+1,Y STY Mp.p7a+1 LDA Mp.ton,X>} PHA ASL Mp.wrk ASL Mp.wrk ROL ASL Mp.wrk ROL AND #3 ASL TAX LDA Mp.sub1,X STA Mp.p7+1 LDA Mp.sub1+1,X STA > }Mp.p7+2 PLA ; Ton holen STA Mp.wrk Mp.p7:JSR $e474 ; Ton modifizieren STA Mp.par,Y ; und merken STA Mp.wrk ; FM-Berec> }hnung LDX Mp.cnt LDY #32 LDA (0),Y ; Klang/Instr. Mp.p7a:LDY #0 ; smd ORA Mp.par+1,Y STA Mp.par+1,Y LDA Mp.fmp,X CMP > }#31 BCS Mp.p8 INC Mp.fmp,X Mp.p8: LDA Mp.fmp,X CLC ADC #32 ; Huellkurve+32 TAY ; ergibt FM-Huellk.! LDA (0),Y BPL > }Mp.p9 ; Relativer Sprungbefehl ! AND #31 STA Mp.wrk LDA Mp.fmp,X SEC SBC Mp.wrk STA Mp.fmp,X BCS Mp.p8 ; immer Mp.> }p9:STA Mp.wrk PHA AND #15 TAY PLA LSR LSR LSR LSR LSR AND #3 TAX ; mod.-Grad LDA Mp.FMtab,Y Mp.p95:DEX >} BMI Mp.p10 ASL BNE Mp.p95 Mp.p10:STA Mp.wrk+1 LDA Mp.cnt ASL TAX CPY #8 LDY Mp.cnt BCC Mp.p10a ; subtrahieren>} LDA Mp.par,X SEC SBC Mp.wrk+1 BCS Mp.p11 LDA #0 BEQ Mp.p11 Mp.p10a: LDA Mp.par,X CLC ADC Mp.wrk+1 STA Mp.wrk+1>} BCC Mp.p11 LDA #-1 Mp.p11:STA Mp.wrk+1 LDA Mp.cnt TAX ASL TAY LDA Mp.wrk+1 STA Mp.par,Y DEC Mp.cnt BMI Mp.quit>} JMP Mp.p4 ; mp.Eff-Kram (UpDate V1.0 nach V1.1) Mp.quit:LDA #0 STA Mp.cnt Mp.qt1:LDA Mp.cnt TAX ASL TAY LDA Mp.E>}ff,X BEQ Mp.qt2 SEC SBC #1 CMP #15 BCC Mp.qt3 Mp.qt2:INC Mp.cnt LDA Mp.cnt CMP #4 BCC Mp.qt1 RTS Mp.qt3:CMP #12>} BCC Mp.qt5 SBC #12 TAX LDA Mp.par,Y Mp.qt4:LSR DEX BPL Mp.qt4 STA Mp.par,Y BMI Mp.qt2 ; immer ! Mp.qt5:PHA AND>} #3 ; Ziel-Kanal ASL TAX LDA Mp.par,Y STA Mp.wrk STA Mp.wrk+1 PLA LSR LSR LSR BCC Mp.qt6 PHA LDA Mp.wrk A>}ND #254 STA Mp.wrk LSR STA Mp.wrk+1 PLA Mp.qt6:LSR BCC Mp.qt7 LDA Mp.wrk ORA #1 STA Mp.wrk LSR STA Mp.wrk+1 M>}p.qt7:LDA Mp.wrk STA Mp.par,Y LDA Mp.wrk+1 STA Mp.par,X JMP Mp.qt2 ; Mp.sub1:DFW Mp.mod0,Mp.mod1 DFW Mp.mod2,Mp.mod3>} Mp.mod1:LSR Mp.wrk Mp.mod2:LSR Mp.wrk Mp.mod3:LSR Mp.wrk SEC SBC Mp.wrk Mp.mod0:RTS ; Mp.FMtab:DFB 8,7,6,5,4,3,2>},1 DFB 0,1,2,3,4,5,6,7 ; Mp.FnAdr:DFW NoFn,FnVol,FnSet,FnClr DFW FnUN,FnDN,FnLAC,FnHAC DFW FnQt,FnEff,FnJpH,FnJpL DFW>} FnTiH,FnTiL,FnAR,FnWt ; Reine Toene Noten_Tab0:DFB 0 DFB 243,231,217,205,193 DFB 181,172,162,153,145 DFB 136,127,121,1>}15,108 DFB 102,96,91,85,81,76,72 DFB 67,63,60,57,54,51,48 DFB 45,42,40,37,36,33,31 DFB 30,1,2,3,4,5,6,7,8,9 ; "Harte" B>}asstoene Noten_Tab1:DFB 0 DFB 243,231,217,205,193 DFB 181,172,162,153,145 DFB 136,127,121,115,108 DFB 100,96,91,85,81,76>},72 DFB 67,63,60,57,55,52,48 DFB 45,42,40,37,36,33,31 DFB 30 ; "Weiche" Basstoene Noten_Tab2:DFB 0 DFB 242,230,218,203>},191 DFB 182,173,161,152,143 DFB 137,128,122,113,107 DFB 101,95,92,86,80,77,71 DFB 68,65,62,56,53,50,47 ; DFB 45,41,4>}0,37,35,33,31 DFB 30 ; Mp.VolTab:DFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 DFB 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1 DFB 0,0,0,0,1>},1,1,1,1,1,1,1,2,2,2,2 DFB 0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3 DFB 0,0,1,1,1,2,2,2,2,2,3,3,3,3,4,4 DFB 0,0,1,1,1,2,2,2,3,3,3,4> },4,4,5,5 DFB 0,0,1,1,2,2,2,3,3,4,4,4,5,5,6,6 DFB 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7 DFB 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8 DFB >!}0,1,1,2,2,3,4,4,5,5,6,7,7,8,8,9 DFB 0,1,1,2,3,3,4,5,5,6,7,7,8,9,9,10 DFB 0,1,1,2,3,4,4,5,6,7,7,8,9,10,10,11 DFB 0,1,2,2,3,>"}4,5,6,6,7,8,9,10,10,11,12 DFB 0,1,2,3,3,4,5,6,7,8,9,10,10,11,12,13 DFB 0,1,2,3,4,5,6,7,7,8,9,10,11,12,13,14 DFB 0,1,2,3,4,>#}5,6,7,8,9,10,11,12,13,14,15 ; FnVol:STA Mp.Vol,X NoFn:RTS FnSet:LDA #-1 FnS1:STA FlagTab,Y RTS FnClr:LDA #0 BEQ F>$}nS1 FnUN:STA 0 LDA Mp.Not,X SEC SBC 0 BEQ FnUn0 BCS FnUn1 Fnun0:LDA #1 FnUn1:STA Mp.Not,X RTS FnDN:STA 0 LDA Mp.>%}Not,X CLC ADC 0 CMP #47 BCC FnUn1 LDA #46 BNE FnUn1 FnLAC:STA 0 LDA Mp.ctl AND #240 FnAC:ORA 0 STA Mp.ctl RTS >&}FnHAC:ASL ASL ASL ASL STA 0 LDA Mp.ctl AND #15 BPL FnAC FnQt:LDA Mp.pos CLC ADC #1 STA Mp.ptp+1 RTS FnEff:>'}STA Mp.Eff,X RTS FnJpH:ASL ASL ASL ASL STA 0 LDA Mp.ptp+1 AND #15 BPL Fnjp1 FnJpL:STA 0 LDA Mp.ptp+1 AND #24>(}0 Fnjp1:ORA 0 STA Mp.ptp+1 RTS FnTiH:ASL ASL ASL ASL STA 0 LDA Mp.tim AND #15 BPL Fnti1 FnTiL:STA 0 LDA Mp.>)}tim AND #240 Fnti1:ORA 0 STA Mp.tim STA Mp.spd RTS FnAR:LDA #0 STA Mp.ctl RTS FnWt:LDA FlagTab,Y BNE FnWt1 DEC M>*}p.ptp LDA #1 STA Mp.spd FnWt1:RTS ; <-ighlighter left/right -(minus), =(equals) - move bar up/down <(clear), >(insert) - move left/right thru sound buffe,}r Those are the basic movement commands. Before I get to the nitty gritty of it all, you should underst-}and how it works before you attemt to use it. First off, when you start out, there are no sounds in memory, to.} create your own you need to make a volume buffer and a pitch buffer. The pitch buffer is a group of bars that are/} set at a certain pitch for each bar, the whole pitch buffer represents one volume buffer bar. Now, that volume buf0}fer bar is set to a certain volume (duh), the volume plus the pitch is the generated sound outcome. The pitch buff1}er is the basic sound you create. You can change the distortion as well. There is a separate distortion for volume and2} pitch buffers. When you press < and > you will notice that alternating screens there is a prompt: "Frequenz-Modula3}tion HK #--". This is the author's way of saying that's the pitch buffer. The HK #-- means that's the pitch buffe4}r for HK #--. HK is Huellkurve, or my translatuion is sound buffer. Volume buffers take even numbers and pitch buffers5} take odd. Here is the status bar: LP : HK #01 EFF: V6}C #00 DC : Frequenz-Modulation HK #00 ! In this display we are on the pitch buffer of HK #00. The HK on7} the right denotes which buffer number you are on. Let me describe the distortion system. The VC #00 on the r8}ight is the distortion register. You can change it in either volume or pitch buffer. When in volume buffer you ca9}n only change the 2nd digit this is a minor change to the sound. In pitch buffer it changes the 1st digit, this is:} a major change to the sound. The command for changing the distortion is Shift+,(comma) and .(period). Disto;}rtion change - Shift+ ,(comma) .(period) There is also a looping command. Like distortion, it can be ch<}anged in any buffer. It will loop over and over from one point to another. Press ,(comma) to put the starting point on=} screen where the cursor is and .(period) to put the ending point where the cursor is. The starting point must be >}infront of the ending point. -page3- Sound Mo?}nitor v1.2 Looping - ,(comma) starting point .(period) ending point Now a command tha@}t should usually be used with the loop is a lowering command. It will decrease the volume everytime one is occuredA}. To place one or take one off, press Inverse key. A good spot to use it is on the starting point of the loop. B} Volume decrease - Inverse key There are special effects you can put on each bar of any buffer. It mC}odifys the sound a bit differently from distortion. Pressing ;(semi) and /(slash) will go though the 3 levels of effectD}. You will see a little sine wave-like symbol on the dash-line, the bigger the wave, the greater the effect it proE}duces. Effect - ;(semi) and /(slash) When you are in the pitch buffer, it is a good idea to start F}with a full line of half-height bars and a loop on the last bar. This can be easily created by pressing Shift+ <(cG}lear). Clear and Setup pitch buffer - Shift+ <(clear) Those are all the editing commands. If you H}have a song or something entered into the pattern buffer then you can press Return while editing the sounds so you I}can change the sounds wile playing the music. This is extremely helpful when you need to find just the right soundJ} you want. Play Pattern while Editing - Return Pattern - Pattern Editor --------------------K}---- This is one of the main subsystems that does what this whole program is for, composing music. TherL}e must be a standard keyboard code for each note, I am not aware of any standard, all I know is this is what the coM}mmands are: Keys: Octave 1234567890 Pattern commands: #2 CD FGA Q - Jump?N} (x) ---------- P - Jump (low digit) J - Jump (hi digit) QWERTYUIOP O} M - 1/60 delay -2 CDEFGAB T - 16/60 delay -4 C L - Distortion? P} H - Distortion? ASDFGHJKL; U - #1 CD FGA W - #3 CD FGA A Q}- -page4- Sound Monitor v1.2 R} S - ZXCVBNM,./ D - -1 CDEFGAB C - -3 CDEFGAB V - Volume S} E - The format is as so: 01 --- 0000 --- 0000 --- 0000 --- 0000 T} The first number represents the line number. The following 4 '--- 0000's represent each voice. If you want to enU}ter in a note, use the key above on the left to figure out which key means what note and which octave. Your cursorV} can be moved by pressing the arrow keys (don't press control). Your cursor must be on a --- to enter a note. DoiW}ng so will make the program play that note you entered. on the right of the note is some data: 00VF. The first 2 digiX}ts is the sound number you are using, the V means volume and the F is hexadecimal for 15, or full volume. Y} If you want a different volume then move the cursor over the F and enter a hex character for the value you want. Z} If you don't want to keep putting new volume numbers in for each new note you enter, press Control+ +(plus) and *([}asterisk). This will move the bar at the way top of the screen left and right. Depending on which voice column yo\}u are on determines which voice you lower/raise. The bar at the top is a voume meter for each volume. This setting is ]}the volume that appears on entry of notes and when you playthe pattern. This does not affect the voices if you use^} the play command on the Spielen header. Volume change - Control+ +(plus) and *(asterisk) If you w_}ant to change the sound you want to use, pressing < and > will go through the sounds you have to use. Sound c`}hange - <(clear), and >(insert) If you want to hear the pattern press Return like that of Huellkurve onla}y you can't do anything while it plays. Return - Play pattern The notes are only half of what thisb} processes. There are certain pattern commands you can pass through on the 0000 part of each voice. You cannot usc}e a command and play a note on the same line number and voice. The area has to be free. The commands are above wid}th the note key. I only know what some of the commands do, I don't understand the rest completely or at all. If you fie}nd exactly what a command does, I want to know! You press the letter for the command you want on the 3rd digit. Tf}hen the numberyou want to pass with it goes on the 4th digit. You can also press space to erase a note ag}nd Tab to just forward -page5- Sound Monitor v1.2h} 8 lines. There are also space save/restore functions of the pattern editor so you can effectivelyi} edit your songs. You can save your pattern to a temporary buffer by pressing Control+ Esc. You will see a grey fj}lash, this lets you know what you did. If you made changes and want to restore to the old pattern, press Control+ >(insk}ert). Save pattern - Control+ Esc Restore pattern - Control+ >(insert) There are certain timel}s you wish to clear certain parts of the pattern. Pressing Control+ <(clear) will clear the voice the cursor is onm}. Pressing Shift+Control+ <(clear) will clear the entire pattern. Clear voice - Control+ <(clear) Clearn} pattern - Shift+Control+ <(clear) By this time you want to know how to edit a song altogether and not jo}ust one pattern, right? Well all you do is put the <--> symbol over the position you want (in the center of the screen)p} by pressing + and *. What do the numbers mean? Beats me. When you get to the position you want, pressing Shift+q} Tab will Save the pattern to that position. Pressing Control+ Inverse will load from the position. Data-tabr}le movement - +(plus), *(asterisk) Load pattern - Control+ Inverse Save pattern - Shift+ Tab Datens}-tabelle! -------------- This is a simple area where you select what position you want to use, prest}sing arrow keys left and right (no control key) will move you around but also pressing the pattern number you want to gou} to will work. pressing F will take you to position F, pressing F again will take you to position FF. Comprende?v} =================================== ----------------------------------- /Playback Subsystem/ w} Pattern - Play the pattern -------------------------- Alles - Play from current position ---------x}------------------------- Alles (Position 0) - Play from beginning ----------------------------------------y} -page6- Sound Monitor v1.2 (short wasn't it?z}) =================================== ----------------------------------- /Disk Use/ Laden - {}Load a song ------------------- Loads a song compressed or non-compressed. See directory viewer be|}low. Speichern - Save a song ----------------------- Save a song, the compression flag determ}}ines whether it will be compressed or no. See Option header. Inhaltsverzeichnis - Directory -----------~}------------------- This unbelievably large word means directory. It uses the same directory viewer as }load/save functions but does nothing to the files that are selected. Directory Viewer T}his subsystem is a way of viewing and selecting files for the desired function. When started, a directory appears in tw}o column form. Free sectors appears above files. A highlight appears on the first file. The arrow keys move the }highlight. Pressing return will select that file and move you to the top of the list. Above the list is the filen}ame you selected. pressing Return again from the top will do th desired function. If you don't want the selected file,} simply moving the cursor some where else and pressing Return will not change it. You can change it by typing it i}n. You may also change the drive you want to use by pressing shift and drive number. ========}=========================== ----------------------------------- /Option/ Speicher Aufraeumen - no clue } ----------------------------- The first word is similar to the word for save (speichern), but still }no idea. Music Packen - Compression on/off --------------------------------- } -page7- Sound Monitor v1.2 This is where you set the compression} flag. aus - off ein - on =================================== -------------------------------}---- /Quit/ Zum DOS - exit to Dos --------------------- Pressing return on this function} will give you a beep sound and a yellow background. Simply put, the program wants to know if you really want to l}eave or do the selected function. Pressing Return again will accept, any other key will abort. Kaltstart - C}old start reboot ----------------------------- Music loeschen - Clear song from memory -----------------}---------------------- ################################## SUMMARY ------- On Bootup: OPTI}ON - skip credits SELECT - use with Option to turn off blinking inverse characters. Main Program: } <(clear), >(insert) - move header highlight left/right +(plus), *(asterisk) - move function highlight left/right} Huellkurve: +(plus), *(asterisk) - move highlighter left/right -(minus), =(equals) - move bar up/down } <(clear), >(insert) - move left/right thru sound buffer Distortion change - Shift+ ,(comma) .(period) Looping - },(comma) starting point .(period) ending point Volume decrease - Inverse key Effect - ;(semi) and /}(slash) Clear and Setup pitch buffer - Shift+ <(clear) Play Pattern while Editing - Return Pattern: } Volume change - Control+ +(plus) and *(asterisk) Sound change - <(clear), and >(insert) Return - Play pattern } Save pattern - Control+ Esc -page8- Sound Monitor }v1.2 Restore pattern - Control+ >(insert) Clear voice - Control+ <(clear) Clear pattern - Shift+Control+ <(}clear) Data-table movement - +(plus), *(asterisk) Load pattern - Control+ Inverse Save pattern - Shift+ Tab } Directory Viewer: Change drive - Press Shift + [drive number] ********************************}*** RePlaying Your Songs Included in this archive is several source files for the replayer. The so}urce was originally from some odd ball German assembler, I was able to convert all the op-codes and psuedo-ops to M}ac/65 format. Generally, Mac/65 is about the only assembler to use. If by some means you want/need source in text form}at and not Mac/65 tokenized, I'd be happy to UUencode it to you over Internet e-mail. Again, I'm at: data@phsbbs.}princeton.nj.us How to use REPLAY.M65 --------------------- This source is meant to be #INCLU}DEd into your program. My source, PLAY.M65 shows a sample way of putting the program together, however it is not c}ompleted granted I'm not adding another 10-20k of data to this .ARC file by putting my label and macro libraries. It's} just for study, modify at will. Basically this is how to set up the play routine: First, the song you }want to play must be non-compressed and converted to .BYTE statements. Second, somewhere in your code place the #}INCLUDE for the replayer and the song data. Third, the X and Y registers hold the low/high address of the be}gging of the song. Do a JSR MP.INIT. Fourth and lastly, install a VBI (deferred preferably, the screen will not }shake. It will in immediate on 60Hz NTSC models). The VBI should include a JSR MP.PLAY in it. i.e. } LDY # VBI LDA #7 ;7- deferred VBI, 6- immediate VBI }JSR SETVBV ;set up VBI. SETVBV = $E45C ... VBI JSR MP.PLAY ;Do music JMP XI}TVBV ;XITVBV = $E462 -page9- Sound Monitor v1.2} /././././././././././././././././././ *********************************** Good Luck! } I believe I documented all that I know. Since I have no docs and it wouldn't help me anyway because it's in German, I} had to find out for myself how to use it. This textfile is a result of my weeks of trial and error, finding out w}hat each key does. I don't know how I found all those kooky control and shift combinations but when you're got not}hing to do, strange things happen. From what Frankenstein has told me, this is but a common quality composer.} That amazes me. He says others are better like the Chaos Composer for instance. You can buy it from: ANG }Software Ridderkerksestraat 60 3114 RK Schiedam Holland for 12.50 Dutch Guilders. In fact, all Po}lish software from ANG costs 12.50 Dutch Guilders. Incase you don't know, Frankenstien and the HTT are no lon}ger making demos, they even dropped the Platinum demo they talked about. But... Frankenstien does support a publi}cation called Megazine. It's a magazine on disk and from what Frankenstien told me, it has lots of really great an}d new software on it. (i.e. #4 and #5 have .MODule players for the 8-bit! And on normal 64k machines, too) I'm going }to subscribe very soon. The distributor for Megazine in the US is: Adam Conover 90 Plum Street } Greenville, PA 16125 Happy Composing! 3/10/93 Shawn Poulson (data) :-) } -page10-}