@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`  `1  ɐ     `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.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1: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  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u       @8T}HH88L0TXDU}ooooooo/O///O//O//O/D8888TooooV}oo8h0$8oooooT80Doooo<(<<(<(0L00L0LoooooooooW}oooooD0DD0D0D0DD0D0oooooooooooooo8$88$8$ooooooooX}oo,,,$$$$Y}OOOO`Loo hT Doo o 0@oZ}o8 $8o oo<440(  OOOOOOO/////////D1:>M65>LABELS.M65>D1:>M65>MAC.M65>D1:>M65>REPLAY.M65>D1:>M65>ERROR.M65 CIOV} CIOVI:OK !ERROR:OK FILE@ OLDVBI  SIZE MSG APlay Sound Monitor>AMSGLEN MSG }START"%>=, Q>4START6 P@DOSVEC7@3J Q>5STARTT P@DOSVEC7^$>hPOKE ICCOM= rVPOKE ICBADR=MSG|VPOKE} ICBLEN=MSGLEN CIOVPOKE ICCOM=VPOKE ICBADR=FILEVPOKE ICBLEN= CIOV$>pPOKEX ICCOM= } CIOV POKEX ICCOM=VPOKEX ICBADR=FILEPOKEX ICAUX1=POKEX ICAUX2= CIOV POKEX ICCOM=}' CIOV POKEX ICCOM=&VPOKEX ICBADR=BUFFER0QL9: PICBLEN9D QL9NPICBLEN9X CIOV bPOKEX} ICCOM= l CIOV vX;DPOKE OLDVBI=$ $>4BUFFER %>5BUFFER MP.INITQ> %>4VBI $>5VBI SETVBV}YOQCONSOLR>HYOQ> %OLDVBI$OLDVBI  SETVBVQ>  PAUDC1* PAUDC24 PAUDC3> PAUDC4H:RX;}\VBIf MP.PLAYp !XITVBVzX; BUFFER$OLDVBI  SETVBVQ>  PAUDC1* PAUDC24 PAUDC3> PAUDC4H:RX;-EDASSTKSB$RePlay.ASM==========&Fuer mit SoundMonitor Professional&!erstelle Musikstuecke! (V1.2)! }$Kann So assembliert werden, dann$&aber ueber Sprungtabelle aufrufen!& F,R,I  $3000 Sprungtabelle } Mp.Init Mp.PlayMusicPlayer V1.2!belegt ZP-Adresse $00 & $01 !!#Parametertabelle Abspielroutine# }Mp.pos0Position!Mp.ptp0,0Pos. im Pattern!Mp.spd0Zaehler Geschw.Mp.tim0Abspielgeschw."Mp.len }0Laenge Musikstueck"$Mp.par%00000000% Audio-Werte$Mp.ctl0Audio-Control% Mp.TrkAdr0Abspielreihenfolge }%- Mp.TrkBas0Basisadresse Trackspeicher-' Mp.HulBas0Basisadresse Huellk.'$FlagTab% % 16$ }!Mp.pat0,0,0,0Pattern-Nr.!'Mp.hkp0,0,0,0Zeiger Huellkurve'%Mp.fmp0,0,0,0Zeiger FM-Kurve% Mp.hkn }0,0,0,0Huellkurve Mp.ton0,0,0,0Tonfreq."Mp.vol0,0,0,0Kanal-Volume"Mp.not0,0,0,0Noten-Nr.Mp.eff }0,0,0,0Effekt Mp.cnt0Interner Zaehler Mp.wrk0Arbeitsbereich ! Mp.ende0Initialisierungsrouti }ne$Adresse des ungep. Songs in X/Y!$Mp.Init0 01 1Mp.ende-FlagTab0Mp.i1/ FlagTab  } Mp.i1 7 / Mp.tim 0 / Mp.ctl Mp.i21 / Mp.spd 32 / Mp.ptp 3 / Skctl  }0 / $d208 7Mp.i3/ $d200 / Mp.par   Mp.i3 30 / Mp.len 'Basisadresse Trk-A }bspielreihenfolge' 0 5/ Mp.TrkAdr 10/ Mp.TrkAdr+1  Mp.len / Mp.wrk 0 }/ Mp.wrk+11Mp.i4 Mp.wrk' Mp.wrk+1  Mp.i4  Mp.wrk   Mp.trkAdr/ Mp.Trk }Bas Mp.wrk+1 Mp.TrkAdr+1/ Mp.TrkBas+120Anzahl Pattern / Mp.wrk 0/ Mp.wrk+1 }5Mp.i5 Mp.wrk' Mp.wrk+1  Mp.i5  Mp.wrk   Mp.TrkBas/ Mp.HulBas Mp.wrk+1 } Mp.TrkBas+1/ Mp.HulBas+1 -1 / Mp.pos #Routine laeuft in Mp.PLay 'rein##fuer 1. Initialisierungs }phase !#(Mp.Play alle 1/50 sekunden aufrufen!(Mp.Play8Mp.p1 Mp.par / $d200   Mp.p1 }  Mp.spd  Mp.p1a  Mp.DoSndMp.p1a Mp.ptp+1 Mp.p1a1,+1 / Mp.pos 31 / Mp.pt }p 0/ Mp.ptp+1Mp.p1a1 Mp.tim / Mp.spd naechste Note im Pattern !  Mp.ptp  Mp.ptp 32 }  Mp.p2 naechstes Pattern0 / Mp.ptp  Mp.pos  Mp.pos  Mp.lenEnde ?  Mp.p1b 0 0 } Mp.pos Mp.p1b 5  Mp.TrkAdr/ 00 Mp.TrkAdr+1/ 100Mp.p1c0 } / Mp.pat  0   Mp.len / 0  Mp.p1d  1Mp.p1d4  Mp.p1c Mp.p2 3Ka }nal / Mp.cnt Mp.p3  Mp.cnt 0/ 1  Mp.pat 5Mp.p3a' 1  Mp.p3a   } Mp.TrkBas/ 0 1 Mp.TrkBas+1/ 1  Mp.ptp 0Note + >hk / Mp.wrk    }0 Mp.paronly / Mp.not 0 / Mp.hkp / Mp.fmp  Mp.ptp   32 30parameter+MP.ENDEFLAGTABQ>MP.I1PFLAGTAB90 IMP.I1&$}Q>0 PMP.TIM:Q>D PMP.CTLN MP.I2Q>X PMP.SPDbQ> l PMP.PTPvQ>PҊQ>PҞ$>MP.I3P9$} PMP.PAR90 IMP.I3%>Q@7 PMP.LEN(;Basisadresse Trk-AbspielreihenfolgeQ, O>PMP.TRKADR $}Q*O>4PMP.TRKADR> QMP.LENH PMP.WRKRQ>\PMP.WRKf$>pMP.I4TMP.WRKzUMP.WRK0 IMP.I4$} QMP.WRK,OMP.TRKADRPMP.TRKBASQMP.WRKOMP.TRKADRPMP.TRKBAS%>Q@7;; Anzahl Pattern P$}MP.WRKQ>PMP.WRK$>MP.I5TMP.WRK$UMP.WRK.08 IMP.I5B QMP.WRKL,VOMP.TRKBAS`PMP.HULBASj$}QMP.WRKtOMP.TRKBAS~PMP.HULBASQ> PMP.POS$;Routine laeuft in Mp.PLay 'rein$;fuer 1. Initiali$}sierungsphase !);Mp.Play alle 1/50 sekunden aufrufen!MP.PLAY$>MP.P1QMP.PAR9P90 IMP.P1  "M$}P.SPD FMP.P1A !MP.DOSND(MP.P1AQMP.PTP2 FMP.P1A1<;FS>P PMP.POSZQ>d PMP.PTPnQ>xPMP.PTP$}MP.P1A1QMP.TIM PMP.SPD;naechste Note im Pattern ! #MP.PTP QMP.PTPR>  DMP.P2;naechstes PatternQ>$} PMP.PTP #MP.POS $MP.POS(MP.LEN;; Ende ? HMP.P1B$> &MP.POS" MP.P1B,A6,@OMP.TRKADRJPT%}Q>^OMP.TRKADRhPr%>|$>MP.P1CQ@7 PMP.PAT9Q, OMP.LENP DMP.P1D# MP.P1D2%}(> DMP.P1C MP.P2Q>;; Kanal PMP.CNT MP.P3 $MP.CNT&Q>0P: QMP.PAT9D%>N MP.P3AT?XUb1%}l IMP.P3Av,OMP.TRKBASPQOMP.TRKBASP %MP.PTPQ@7;; Note + >hk PMP.WRKV?V?R>%}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>? P%}MP.HKN9MP.NXT1"MP.CNT IMP.P3J !MP.DOSNDMP.P3J!MP.P3 1MP.PARONLY;Keine Note, Parameter bearbeiten! $;bit%} 0-3 Parameter, 4-7 Kommando QMP.PTP$ ,. O> 8 ?B Q@7L 5V V?` V?j V?t M>;; fuer Zugriff~ >;; auf Adresstabel%}le ! QMP.FNADR9 PMP.P39 QMP.FNADR9 PMP.P39 7 M>;; parameter ! ?;; auch als Index $MP.CNT;; Ka%}nal MP.P39 t !MP.NXT1  ;Nach Hullkurvendaten und ;FM-Daten Sound berechnen  MP.DOSNDQ> PMP.CNT( % }MP.P42 $MP.CNT< Q>F PP QMP.HKN9Z %>d MP.P4AT?n Ux 1 IMP.P4A , OMP.HULBAS P Q OMP.HULBA% }S P QMP.HKP9 R> EMP.P40 #MP.HKP9 MP.P40%> Q@7 %MP.NOT9 > QNOTEN_TAB08" 0, GMP.P446 )% }>&@ EMP.P44J QNOTEN_TAB18T 0^ GMP.P44h QNOTEN_TAB28r 0| GMP.P44 C T? T? MP.P44$MP.CNT PMP.TON9 M% }P.P45%MP.HKP9 Q@7 IMP.P5 ;Relativer Sprungbefehl ! M> PMP.WRK C ; SMP.WRK PMP.HKP9 EMP.P45;; i% }mmer& MP.P5PMP.WRK0 M>;; DEC Volume ?: FMP.P6D QMP.VOL9N FMP.P6X "MP.VOL9b MP.P6QMP.WRKl M>v PMP.WRK%} QMP.VOL9 T? T? T? T? LMP.WRK ? QMP.VOLTAB8 5 A T? ? 7 PMP.PAR8 'MP.P7A QMP.TO%}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;%}; Ton holen PMP.WRK MP.P7 t;; Ton modifizieren PMP.PAR8;; und merken PMP.WRK ;FM-Berechnung $MP.CNT %>%} Q@7;; Klang/Instr. MP.P7A%>;; smdLMP.PAR8PMP.PAR8 QMP.FMP9$R>. EMP.P88 #MP.FMP9B MP.P8L%} QMP.FMP9V,`O> ;; Huellkurve+32j?;; ergibt FM-Huellk.!tQ@7~ IMP.P9;Relativer Sprungbefehl !M> PMP.%}WRK QMP.FMP9; SMP.WRK PMP.FMP9EMP.P8;; immerMP.P9PMP.WRK5M>?7 V?V?V?(V?2V?<M%}>F>;; mod.-GradPQMP.FMTAB8Z MP.P950d GMP.P10nT?x HMP.P95MP.P10PMP.WRK QMP.CNTT?>)> %M%}P.CNT DMP.P10A;subtrahieren QMP.PAR9;SMP.WRK EMP.P11Q> FMP.P11 MP.P10A QMP.PAR9",,O%}MP.WRK6PMP.WRK@ DMP.P11JQ>TMP.P11PMP.WRK^ QMP.CNTh>rT?|?QMP.WRK PMP.PAR8 "MP.CNT%} GMP.QUIT !MP.P4(;mp.Eff-Kram (UpDate V1.0 nach V1.1)MP.QUITQ> PMP.CNTMP.QT1QMP.CNT>T?? QMP%}.EFF9 FMP.QT2;S>&R>0 DMP.QT3:MP.QT2#MP.CNTD QMP.CNTNR>X DMP.QT1b:lMP.QT3R> v DMP.QT5S%}> > QMP.PAR8 MP.QT4V?0 IMP.QT4 PMP.PAR8GMP.QT2;; immer ! MP.QT55M>;; Ziel-KanalT?> QM%}P.PAR8 PMP.WRK PMP.WRK7 V?*V?4V?> DMP.QT6H5R QMP.WRK\M>f PMP.WRKpV?zPMP.WRK7 MP.Q%}T6V? DMP.QT7 QMP.WRKL> PMP.WRKV?PMP.WRKMP.QT7QMP.WRK PMP.PAR8QMP.WRK PMP.PAR9 !M%}P.QT2MP.SUB1 MP.MOD0=MP.MOD1 MP.MOD2=MP.MOD3$MP.MOD1VMP.WRK.MP.MOD2VMP.WRK8MP.MOD3VMP.WRKB;L S%}MP.WRKV MP.MOD0:`j$MP.FMTAB =======t =======~'MP.FNADR NOFN=FNVOL=FNSET=FN%}CLR FNUN=FNDN=FNLAC=FNHAC FNQT=FNEFF=FNJPH=FNJPL FNTIH=FNTIL=FNAR=FNWT;Reine ToeneNOTEN_TAB0 %} ==== ==== ==y=s=l f=`=[=U=Q=L=H C=?=<=9=6=3=0 -=*=(=%=$=!=% }! ========= ;"Harte" BasstoeneNOTEN_TAB1  ====( ====2 ==y=s=%!}l< d=`=[=U=Q=L=HF C=?=<=9=7=4=0P -=*=(=%=$=!=Z d;"Weiche" BasstoenenNOTEN_TAB2 x %"}==== ==== ==z=q=k e=_=\=V=P=M=G D=A=>=8=5=2=/ -=)=(=%=#=!=%#} =MP.VOLTAB ===============3 ===============3 %$}===============3 ===============3 =======%%}========3 ===============3 ===============%&}3 ==============="3 ===============,3 ======%'}========= 63 ============= = = @3 ============ = %(}= = J3 =========== = = = = T3 ========== = = = = = ^3 ====%)}====== = = = = =h3 ========= = = = = ==r|FNVOLPMP.VOL9 NOFN:FNSET%*}Q>FNS1PFLAGTAB8: FNCLRQ> FFNS1 FNUNP QMP.NOT9;S FFNUN0 EFNUN1 FNUN0Q>FNUN1P%+}MP.NOT9: FNDNP& QMP.NOT90,:ODR>/N DFNUN1XQ>.b HFNUN1l FNLACPv QMP.CTLM> FNACL P%,}MP.CTL: FNHACT?T?T?T?P QMP.CTLM> IFNACFNQTQMP.POS, O>PMP.PTP :*FNEFFP%-}MP.EFF94:> FNJPHT?HT?RT?\T?fPpQMP.PTPzM> IFNJP1 FNJPLPQMP.PTPM> FNJP1LPM%.}P.PTP: FNTIHT?T?T?T?P QMP.TIMM> IFNTI1 FNTILP$ QMP.TIM.M>8 FNTI1LB PMP.TIM%/}L PMP.SPDV:` FNARQ>j PMP.CTLt:~FNWTQFLAGTAB8 HFNWT1 "MP.PTPQ> PMP.SPD FNWT1:B PMP.TIM$q ; ; RePlay.ASM ; ========== ; ; Fuer mit SoundMonitor Professional ; erstelle Musikstuecke! (V1.2) ; ; Kan)1}n So assembliert werden, dann ; aber ueber Sprungtabelle aufrufen! ; OPT F,R,I ; ORG $3000 ; Sprungtabelle JMP M)2}p.Init JMP Mp.Play ; ; MusicPlayer V1.2 ; belegt ZP-Adresse $00 & $01 ! ; Parametertabelle Abspielroutine ; Mp.)3}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)4}:DFB 0 ; Laenge Musikstueck Mp.par:ASC %00000000% Audio-Werte Mp.ctl:DFB 0 ; Audio-Control Mp.TrkAdr:DFW 0 ; Abspielreihen)5}folge Mp.TrkBas:DFW 0 ; Basisadresse Trackspeicher Mp.HulBas:DFW 0 ; Basisadresse Huellk. ; FlagTab:ASC % )6} % 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 )7}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)8}-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)9}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 ! ; ;)A} 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)B} 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)C} 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)D}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)E}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 )F}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)G}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)H}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)I}.fmp,X LDA Mp.ptp CLC ADC #32 TAY LDA (0),Y ; parameter+`<|fl0fF68of;p88pf< 80 0 ~~5}0 0~ff~ff|f|ff|``nf<ff~f~~>f<flxxlf`~cwkc5}cfv~~nff>``|ff|5}<`<>ff>>ff>|``|f8<<``lxlf8<fkc|fff>|f`5}>`<|~f>f<ck>6f< x~ 0~<~~<~x|nf8x802L5}Bp D N@B   BAÖɖՖۖ3-/.6 3ound-onitor5}0rofessionalCDEFGHCDEFGHCDEFGHCDEFGH] (+_ 6#^&0osition 0atternY 0atternZ5} 0attern[ 0attern\ %$)4)%2%.30)%,%.$)3+/04)/.15)4􀑙5}HDEhJKBLV BLV BDEHILV Drive 1* SNG D1:*. D1:_.SNG ##$5}$%&&''!!"##$$%&&''!!"##$$%&&''!!"#                     @` zsxdcvgbh5}njmq2w3er5t6y7uZSXDCVGBHNJMQ!"#$%&'@()(0VSCDULHQEJPTMAW #$%&-=+*<>\^Ș˘Θט5}'Ow`؉8Rk=JJ0123456789ABCDEF⎀5}(uellkurve0attern$aten 4abelle0attern!lles!lles0osition ,aden3peichern)nh5}altsverzeichnis3peicheraufraeumen-usikpackeneinzum$/3+altstart-usikloeschen5}  "        ,7?EWZ]`ttLLLjH Ӟ5}hj LqjHj  l8` L:) L:LΠLL}Ll l  &'x `ގ5}ҭߎҭ掍ҭvw `֎َ`D/َ َ掩؎ ֎ҩҢҝގ`ގ5}؎L׎8Ԏ֎׎َ؎֎֎ 2֎,0(ԎԎՎԎ4567&&&5}&&& iiL ii@֎JJTH֎i ) , || NjNj5}JJ)?LL֎i HJ)h) tLa&&&&&ii85}0&0 0 )8)  )  H hߎqH**) ma5}nbh tގ ߎߎi )8H)hJ)0   ގ85}ގm ގ0L ڎ8 `  ގJގ0H) ގhJH)JhJ5}  JގގLux{NNN8`1.28852/-)(%#! ``85}`e/.)` )Ԏi׎`ڎ` ׎)׎)׎` َ)َ)َ؎`` 5}0)֎؎ 0)`  D  Lt tТ)hIh0i(i05}@`pi(i01o0 ޚi膫 ?@à() 5}  q H')ɍ '(yɍ( ( H<>+(*;ɛ5}MΤLڔޥ𼫍殤iݫLڔ}8) ܍ݍ t (5}L̊ i0iJ h)) '"`)i&i8)H#`p h`p5}`H)`h) `8 i@ ``HHح ̊̊ XY t̊hh@Щ `Щ(Щ`5}Щ(`؍`i)`i )Ix`ЍЩ `Щ `Щ`L̊`a{8 ` l85}`)`H) HhJ  `i` ]^ef``i0i' Ʀ`i05} <Ȋii R)HJJ͊ȽȽ- <JfhH)? <Ȋh)ŋ G5}i iƧ0L՗`M)y, `)Ii0Ji8`ꋼՋ H0H h 5}` Ø Ę tLfƪ``ƫ`櫥i)`) f .LHʽ0 ['\(E Rh tL5}`0(HEIh+*'<(}$>8ɝFPɁo`||)|Lޚ|} ̙@(ʈLq ̙?ʈLqLq5}p ̙?ʈ``Lk `L/m` Lyv)>wHJh  EI|5})x י` (`H)hL0 (票)ᅨL0 (ҥ)̥) L0 ŋ`)Ц) 5}L0,i0*&& )He˚hHyh` ĊŊHt|)HJJh)iIt`L΀i5})?Hh <戎 ʊ &i8'! <ȩ鈙;)*8HQ5}RhP LYHJH)S)hJ)iTh) Ly`jLj4567j8 5} <894H5H6H7Hkz數 &'h <ȩƩ樥iƦ`k)Ik5}Y`suanie ȹ 船  HN0  tL<>+*=-:?},./;1>Zi5}7Sms) `ƨ`樥 `0H)ph)` K08)` K0i0 `Ĩj85}ca `0  ȱ)J)8婅Ũ. )Jȑ)ȱ)iJ8 `)0I`5}0H)`8 )`h)`0H)`i ) i )`i))8 LE8)ڠ) 񩁑`5} ( `4j桥Ɂ`4567` Վ jՎjʎԎ  kHH 5}i f%֎Ū򅪭0Ԏj j  k fLX hh,0 y<>i   `jLӞjjՎ5}ʎjLӞ) Ď  Q&' ` Qi)'ٟ`0,!94Ʀ5}`& ߟ ߟ `↩䨰܆ ?Hh 4Ũ L5}&&ii@`4Ũ` ƍ)ŧ5}ƧL= ?Ѥ0L ?L4j `4j5}歅 ̙?ʈ樥שLq ߟ6 $ҩҥH) h)Ҍi`5} ġH ̙?ʈhH ̙?ʈhƧ0L MjLX ߟ5}` i i)FjFjJ)0武򆫅Lf l 5}栢._)  G G߹뢨 P l v) ġ5}L  G̹ܹ! G槭0 iС l f G 7 H H 7h-'=+*7+3!@"5};@5& VLƪi ŧ奩IݭILࢊ 0L f I ŠI`~_`5}hh8`ɛ`_!`_hh`̦ŠȢ)?i )?i `. _ʹ3 ` 5}_ .0[ ` ࢰ Π  ߟI Xࠁ PBʈ l ġLHk5}} z04歘e桘eƨ LE膽&5}@ ۭ&8 Ll ࢐`ࠁ P'LG v0};LG 5}& L-4歘eƨ膽&@ &5}8 L- lLĎ0 v8`` d0օ 0 dŶ v ` d d v 5}LC vhh8`  &'i Ʃƨ H0.5<jL>jL (ޢj jj5}L> ~GLL4567 ġ >ʈj MLj >44556677`5} ġ Hɛ` W8` Ď8` WLw W  Lt0 z8`` stu 5}sss L v  sꅶ ЅѰFѰA7sѰs v 0sꥶ } }5}s }Lm v } ```8`tu` zhh8`3 !5}ׂ5}       45}      44 Sound Monitor v1.2 Sound Monitor ------------- This text file by: 9}Shawn Poulson Shawn.Poulson%pics@twwells.com The writer of this article is not the author of the pro9}gram nor affiliated with the author of the program in any way. However since this program is PD, no one cares anyh9}ow. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This is an excellent music9} composer from Germany. I got hold of this package from Frankenstein of the HTT. I asked him what kinds of progra9}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 him9} very much. However, since it's from Germany there are two problems: everything's in German, and it's a9} 50Hz PAL-happy program. This means the screen will bob up and down when you play music on a 60Hz NTSC 8-bit. For9}tunately it won't crash. These are the files you should have: SMON.COM -main program *.SNG 9} -assorted songs (compressed) REPLAY.ASM -Replayer for songs this is a tokenized format from 9}some German assembler REPLAY.SRC -The source listing from the above file REPLAY.M65 -I was able to convert th9}e above source to Mac/65 PLAY.M65 -This is a program I wrote to test the replayer for Mac/65, i9}t is a player for uncompressed .SNGs (More on compressed and uncompressed .SNGs later) SMON.TXT 9} -This file (der) ----------------------------------- Main Program: SpartaDos Users Notice: If 9}you are running this in SpartaDos, I suggest either using another DOS or running the entire program from Hard Disk 9}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 D9}OS you like, you will see a pretty starry title screen. You don't have to wait for the titles to finish, just pres9}s Option to skip the rest of the titles, but you have to wait for the loading to finish. Now once you have done th9}at, you may notice that all inverse characters blink. In time this gets very annoying, I found the trap for that. When9} 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 SELEC:}T - use with Option to turn off blinking inverse characters. Once you are in the program, you get a very:} pretty and colorful display. In the middle of the screen there are two rows of text, each with a highlight. Pres:}s < > to move the top highlight, these are the headers, below it are the functions. The function highlight is moved :} by + * keys. <(clear), >(insert) - move header highlight left/right +(plus), *(asterisk) - move function:} highlight left/right Here is the command overview and what they mean: Editieren: Editing :} -Huellkurve -Spectrum analyser, you enter the sound editor. -Pattern -Pattern editor, this is the part were: } you type in the song -Daten-tabelle! -Move to a desired position. A position is equal : } to one pattern screen (32 lines) Spielen: Playing -Pattern -Only play the song in th: }e pattern buffer -Alles -Play whole song starting at current position -Alles (Position 0) : } -Play from beginning of the song. Disk: Disk use -Laden -Load .SNG file -Speicher: }n -Save .SNG in memory -Inhaltsverzeichnis -Believe it or not, this means Directory... :} Option: Special options -Speicher Aufraeumen -If you know what this is, mail me -Mu:}sic Packen -toggles .SNG file compression when saving aus - off ein - on Quit: Quitting :} -zum DOS -Exit to Dos -Kaltstart -Coldstart -Music loeschen -Clear .SNG in memory :}=================================== ----------------------------------- -page2:}- Sound Monitor v1.2 /Editing Subsystem/ Huellkurve - Sound editor --:}----------------------- This is where you get to create your own sounds, using varying volume, pitch, an:}d set distortion values. Control goes to the top of the screen. Commands: +(plus), *(asterisk) - move h:}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 buf:}fer bar is set to a certain volume (duh), the volume plus the pitch is the generated sound outcome. The pitch buff:}er is the basic sound you create. You can change the distortion as well. There is a separate distortion for volume and:} pitch buffers. When you press < and > you will notice that alternating screens there is a prompt: "Frequenz-Modula:}tion HK #--". This is the author's way of saying that's the pitch buffer. The HK #-- means that's the pitch buffe:}r for HK #--. HK is Huellkurve, or my translatuion is sound buffer. Volume buffers take even numbers and pitch buffers:} take odd. Here is the status bar: LP : HK #01 EFF: V: }C #00 DC : Frequenz-Modulation HK #00 ! In this display we are on the pitch buffer of HK #00. The HK on:!} the right denotes which buffer number you are on. Let me describe the distortion system. The VC #00 on the r:"}ight is the distortion register. You can change it in either volume or pitch buffer. When in volume buffer you ca:#}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 occured:+}. To place one or take one off, press Inverse key. A good spot to use it is on the starting point of the loop. :,} Volume decrease - Inverse key There are special effects you can put on each bar of any buffer. It m:-}odifys the sound a bit differently from distortion. Pressing ;(semi) and /(slash) will go though the 3 levels of effect:.}. You will see a little sine wave-like symbol on the dash-line, the bigger the wave, the greater the effect it pro:/}duces. Effect - ;(semi) and /(slash) When you are in the pitch buffer, it is a good idea to start :0}with a full line of half-height bars and a loop on the last bar. This can be easily created by pressing Shift+ <(c:1}lear). Clear and Setup pitch buffer - Shift+ <(clear) Those are all the editing commands. If you :2}have a song or something entered into the pattern buffer then you can press Return while editing the sounds so you :3}can change the sounds wile playing the music. This is extremely helpful when you need to find just the right sound:4} you want. Play Pattern while Editing - Return Pattern - Pattern Editor --------------------:5}---- This is one of the main subsystems that does what this whole program is for, composing music. Ther:6}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 co:7}mmands are: Keys: Octave 1234567890 Pattern commands: #2 CD FGA Q - Jump?:8} (x) ---------- P - Jump (low digit) J - Jump (hi digit) QWERTYUIOP :9} M - 1/60 delay -2 CDEFGAB T - 16/60 delay -4 C L - Distortion? ::} H - Distortion? ASDFGHJKL; U - #1 CD FGA W - #3 CD FGA A :;}- -page4- Sound Monitor v1.2 :<} S - ZXCVBNM,./ D - -1 CDEFGAB C - -3 CDEFGAB V - Volume :=} E - The format is as so: 01 --- 0000 --- 0000 --- 0000 --- 0000 :>} The first number represents the line number. The following 4 '--- 0000's represent each voice. If you want to en:?}ter in a note, use the key above on the left to figure out which key means what note and which octave. Your cursor:@} can be moved by pressing the arrow keys (don't press control). Your cursor must be on a --- to enter a note. Doi:A}ng so will make the program play that note you entered. on the right of the note is some data: 00VF. The first 2 digi:B}ts is the sound number you are using, the V means volume and the F is hexadecimal for 15, or full volume. :C} If you want a different volume then move the cursor over the F and enter a hex character for the value you want. :D} If you don't want to keep putting new volume numbers in for each new note you enter, press Control+ +(plus) and *(:E}asterisk). This will move the bar at the way top of the screen left and right. Depending on which voice column yo:F}u are on determines which voice you lower/raise. The bar at the top is a voume meter for each volume. This setting is :G}the volume that appears on entry of notes and when you playthe pattern. This does not affect the voices if you use:H} the play command on the Spielen header. Volume change - Control+ +(plus) and *(asterisk) If you w:I}ant to change the sound you want to use, pressing < and > will go through the sounds you have to use. Sound c:J}hange - <(clear), and >(insert) If you want to hear the pattern press Return like that of Huellkurve onl:K}y you can't do anything while it plays. Return - Play pattern The notes are only half of what this:L} processes. There are certain pattern commands you can pass through on the 0000 part of each voice. You cannot us:M}e a command and play a note on the same line number and voice. The area has to be free. The commands are above wi:N}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 fi:O}nd exactly what a command does, I want to know! You press the letter for the command you want on the 3rd digit. T:P}hen the numberyou want to pass with it goes on the 4th digit. You can also press space to erase a note a:Q}nd Tab to just forward -page5- Sound Monitor v1.2:R} 8 lines. There are also space save/restore functions of the pattern editor so you can effectively:S} edit your songs. You can save your pattern to a temporary buffer by pressing Control+ Esc. You will see a grey f:T}lash, this lets you know what you did. If you made changes and want to restore to the old pattern, press Control+ >(ins:U}ert). Save pattern - Control+ Esc Restore pattern - Control+ >(insert) There are certain time:V}s you wish to clear certain parts of the pattern. Pressing Control+ <(clear) will clear the voice the cursor is on:W}. Pressing Shift+Control+ <(clear) will clear the entire pattern. Clear voice - Control+ <(clear) Clear:X} pattern - Shift+Control+ <(clear) By this time you want to know how to edit a song altogether and not j:Y}ust one pattern, right? Well all you do is put the <--> symbol over the position you want (in the center of the screen):Z} by pressing + and *. What do the numbers mean? Beats me. When you get to the position you want, pressing Shift+:[} Tab will Save the pattern to that position. Pressing Control+ Inverse will load from the position. Data-tab:\}le movement - +(plus), *(asterisk) Load pattern - Control+ Inverse Save pattern - Shift+ Tab Daten:]}-tabelle! -------------- This is a simple area where you select what position you want to use, pres:^}sing arrow keys left and right (no control key) will move you around but also pressing the pattern number you want to go:_} to will work. pressing F will take you to position F, pressing F again will take you to position FF. Comprende?:`} =================================== ----------------------------------- /Playback Subsystem/ :a} Pattern - Play the pattern -------------------------- Alles - Play from current position ---------:b}------------------------- Alles (Position 0) - Play from beginning ----------------------------------------:c} -page6- Sound Monitor v1.2 (short wasn't it?:d}) =================================== ----------------------------------- /Disk Use/ Laden - :e}Load a song ------------------- Loads a song compressed or non-compressed. See directory viewer be:f}low. Speichern - Save a song ----------------------- Save a song, the compression flag determ:g}ines whether it will be compressed or no. See Option header. Inhaltsverzeichnis - Directory -----------:h}------------------- This unbelievably large word means directory. It uses the same directory viewer as :i}load/save functions but does nothing to the files that are selected. Directory Viewer T:j}his subsystem is a way of viewing and selecting files for the desired function. When started, a directory appears in tw:k}o column form. Free sectors appears above files. A highlight appears on the first file. The arrow keys move the :l}highlight. Pressing return will select that file and move you to the top of the list. Above the list is the filen:m}ame you selected. pressing Return again from the top will do th desired function. If you don't want the selected file,:n} simply moving the cursor some where else and pressing Return will not change it. You can change it by typing it i:o}n. You may also change the drive you want to use by pressing shift and drive number. ========:p}=========================== ----------------------------------- /Option/ Speicher Aufraeumen - no clue :q} ----------------------------- The first word is similar to the word for save (speichern), but still :r}no idea. Music Packen - Compression on/off --------------------------------- :s} -page7- Sound Monitor v1.2 This is where you set the compression:t} flag. aus - off ein - on =================================== -------------------------------:u}---- /Quit/ Zum DOS - exit to Dos --------------------- Pressing return on this function:v} will give you a beep sound and a yellow background. Simply put, the program wants to know if you really want to l:w}eave or do the selected function. Pressing Return again will accept, any other key will abort. Kaltstart - C:x}old start reboot ----------------------------- Music loeschen - Clear song from memory -----------------:y}---------------------- ################################## SUMMARY ------- On Bootup: OPTI:z}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-:} -page10-8   `88LH@@$0>}!p$0#ј>}c=88LH@@$TD8800DD@////////h>}h``tt|////////(($////////hh``ttpp>}////////!88LH@@88LH@@>}o  88LH@@<@