@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} R'S B$DEHILV䛛| Theta Music Composer v. 1.00 ||T} done 20.10.96 by Jaskier/Taquart |! ڈ!/ 01oiU} ^ ^bgbg a a <- MMLA= MMLAɛM땍 ^V} LAڕ0M֩  `))))))<<W}<e`P y`` ~H hJJJJ) i`ʈX}ήέɛ`` ?i(j`݉މ`"ɛ0.".0!".߈0".Ո0".0Y}000㕙"0ȩ"`E ԉ zeeƉƈ zʥ z <ɛ`+ )Z}*0g:a)JI )L)LÊ' ԉ"  "^ʈ0 " ʼn[}ʈ <ɛɀ"`4!Fʩ "ɀ0F "0 a{ \}A[I "L LEXY R V0 V0 V0ۥ V0ԥ V0ͥ V0` R V``ZR:# $]}"ESKiTiU)I [LVe&ؠc ԉ ~ <8` ي 0))^}8eiiTUYR VLEmXmYL 닥m_}ńŅɛ ʼn ŀ偰#ɛei  <`ɛfŀ`}偰"ɛ":\0* " 0 ."0 " 詛" "`-0Ƒ Lńa}兰 L=Lvŀ偰ɛe慥LɛeL ~` ي"*? b} 0w RXY V0`Z V0UO V0Jӕ V0Bԕ V0: V05T(U XY V0 TUXY Vc} EL@ӕ 8ӕԕ8頍XYT)U V0PXY (T`(U V0@d}ߩTEU`XBY VL 닢8e(i )`1Õ!8ɠ)ie}8鐅)? (`(O iP٭))8e8項Eӕԕeef}eeee :&ӕԕ ي"* ?0 ~` ӕiԕieeiPig}@ୠ( )8(倝 )偝ӕԕ T(U XY V0WTUXY V0>T)UXY h}V0%PXY (T`(U VLE@ܩTEUXY V0L ~<`Օ֕i :Օ֕ ي٢i}"*? 扭Օ֕ 88倅偅L V0o V0h V0a8倅偅L V0K V0D V0=8j}偅L V0' V0 V0 TUǍXY VLEXYЅL V0ߠ @`) ؐL) Ek}ȱ鬈iȱ鶈8 V0L/ VLEL(  <` 4l}ʩ (ئܝ(LI  <* +΁ L)ΩIei򓩽m}i i  `MNIiPiQMi Mn}NPi PQ ` ڈx ԍԩ ө@XL ԉ #ontrolVV^ _ zmianainstrumentu VV\ ] zmianaoktawy {}VV  zmianakanaLu VV>3 zmianatempa VV>' zmianaczEstotliwoSci VV zmianapatternu|}itp VV4ab nastEpneokno VV>%sc powrOtdomenuVDUUUUUUUUUUUUUUUUUUUUUUUW_ %scYFBUUUUUUUUUUUUUUUUU}}UUUUUUUUUUUUUGV0atternVV\ ] ruchkursorem VV^ _ zmianapatternu VV+lawiszenutow~}e wpisnut VV)nv >)nv #aps >#aps wpisVVnutnaZywodziaLazmoktaw VV3pacja kasowaniepozycji VV paramet}rkoniecpatternu VV !& parnowetempo VV3pacja kasowanieparametru VV>\ ] ^ _ zmianagLoSnoSci VV> !}& wpisgLoSnoSciVVwartjestzakazana VV: ustawienieznacznika VV$elete kopiujepozycjEprzyVVznac}znikupodkursor VV)nsert rozsuwanielinii VV$elete zsuwanielinii VDUUUUUUUUUUUUUUUUUUUUUW^ _ %scYFBUU}UUUUUUUUUUUUUUUUUUUUUUUUUUUUGV>#lear kopiowaniepatternudoVVbuforaikasowaniepatternu VV>)nsert kopiowaniepatternuV}Vzbufora VV>$elete kopiowaniedobufora VV2eturn grajpattern VV2eturn grapatternodpocz} VV4ab zmieniainstrumentpodVVkursoremnatenwoknie)ns VV>8 8 zmianawszystkichinsVVnrwart nainsw}art VV>4 4 transpozycjainstru VVmentuwart owart VVpOLtonOwVV; = transpozycjao} VV0obwartoSci ^ _ ktOra VV\ ]  !& wstawianieVV%sc wyjScie 2eturn zatwVDUUUUUUUUUUUUUUUUUUU}UUW^ _ %scYFBUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGV)nstrumentVV\ ] ^ _ ruchkursorem VV !& wpis}wartoSci VV>\ >] edycjagLoSnoScikana VVLugLOwnegopodstawowego VV>^ >_ edycjagLoSnoScikana VVLudodatkowe}goprzeciwnego VV>\ >] zmianagLoSnoSciVVkanaLugLOwnego VV> > zmianagLoSnoSciVVkanaLudo}datkowego VV>#lear kopiowanieinstrumentuVVdobuforaikasowanieinstr VV>)nsert kopiowanieinstrVVzbufo}ra VV>$elete kopiowaniedobufora VV+lawiszenutoweewentualnieVVzlub> prObainstrumentuVDUUUU}UUUUUUUUUUUUUUUUUW^ _ %scYFBUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGV3ongVV\ ] ^ _ ruchkursorem VV} !& wpiswartoSci VV)nsert rozsuwanielinii VV$elete zsuwanielinii VV2eturn graj 3pacja stop }VV>8 8 wymianazawartoSci odVVpozkursora kanaLOw VV># # kopiowaniejednegoVVkanaLudodrugiegoteZod}VVpozycjikursora VV4ab wymianazawartoSci odVVpozkursora kanaLulewegoiVVprawegonatymsamymtr}ackuVV/pcje>8 8 ># #oraz>4 VV4 >8 8wedycjipatternu VVrOZniAsiEtym ktOrAwartoSCVVzaczniesiEnajpierw}wybieraCVDUUUUUUUUUUUUUUUUUUUUUW^ _ %scYFBUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGV0layerVV *-0).)4}VV *-0'2!*raznaramkE VV *-03/5.$uzupeLniakonie VVcznAiloSCwywoLaNnaramkEVV -!86/,$4!}" gLoSnoSCVV 6/,4!"doSciszania" VHUUUUUKUUUUUUUUUUUUUUUUUUUUUUUUIV!V8VVVnrmuz}yczki grajVVVpozwsongu grajVV VwysokoSC9 ins grajVVkanaLV9 gLoSnoSC initVVVtem}po initVVV stopVVV przerwijVVV kontynuujVVV}-3"9 ,3"muzyczki initVDUUUUUJUUUUUUUUUUUUUUUUUW^ %scYFD0:hLδLЯL}}      } xrke_ZUPKGC?<852/,*'%#! οzqke_\VPMGD><852/-*(%#!} yspfaZURKHC?<9730-*(%$! yrlf`[UQLHD@<952/-*(%#!} 38jjFAn0R"ȠzU4ؽw`N8'øxpjd^ }}}^@ZεLﰢĮ̮ L_ & & &iiڝ}ܮiLε̮0L鰼ԮĮ mL@}ܮ m* L"Į m)@L}Dɀ+)?}ܮĮ)@ m* L )?*ĮL^)?̮Į0LF! .2=G}"$<8}d}     2==ȯ")?Ȅ{L ; <}쮝  ;N N N N ҎҮҌҮ ҌҮҌҮ ҌҮҌҮ ҌҮ}ҌҮ Ҍҍ:;ҍ`$,?{,,,)쮱)8 ȱ)8)t I,2)pcJJ}dȱL8L5LJ 1春J+ƘƘ晥 }tu L LlO٩`Oّ`Oو`w텁 `Ɨ`}ƙ`ƙ8` ``Ɩ` Ƙ`ƘƖ``` e  eȱ)}i` e  e8)᱆`<=)iFF`<=) 8FF` }0$ 0 * `ꥎJjHI h )捵JJJJ)U <ꦎ}F ƎТ i5L 5L5 0L浄)L) IͥI }`"ݩ`i i i @H hH h` (`(<)ޠ=)} `ƕ)? (`(w芢 >) iJJJJ iƎJJJJ i)jz}(PƎJJJJ ix)j8z`Ǝ0LGȍ豆 Gi ii$}GΦ '?@릕@ i v` Ɛ & & &ii) ȐƐƐ`) 豆 豆 }0 ii`HJJJJ h) i`暥 ƚ`ƚ8`i`ƛ),2)NڽR۽V}ۈ` `( ɚi <)?((((( ȭ)` `( <)?((((( }έ)` ` < 馊0饎) iȱ  ` < `0奎)`}) ŝ ``P `HЍЍЍЩ(XLtHb ԍЍЍЩ(5LtH}ЍЍЩٍ(JLtHX ԍЩh@H(LtH(LtHHHt  Z?2}M")?J ) ) 查ƞhhh@HH hhh@몽j z2jZz`Bpp}pA4heta-usic#omposerverby*askier0attern %,4rac4rac4rac4rac    }                }           } )ns ?????????????????????   } MMMMMMMMMMMMMMMMMMMMM  ????????????????????? } MMMMMMMMMMMMMMMMMMMMM  }3p&r }????????????????????????????????????????MMMMMMMMMMMMMMMMMMMMMMMMMMMM}MMMMMMMMMMMM>:=9#% "&/.*(-+3 02 FG67wtVRlf2350?:*867fL*;bGn}a]L1DW[dz w|MPQR????????MPQRRRRRMPQRRRRRRR}RRMPQRRRRRRRRRRRRR%-03#hange #opy 4ransp  ` r ?@ވȹܪ^@ V襓8 }  GPYb}mu8Dq WtIE4b]amqNRP##$$}%&&''!!(##$$%&&''!!(##$$%&&''!!(##$$%&&''!!(##$$%&&''!!(##$                           }xԢ ӹ^||@X`|}fffffff>`<|fl0fF68of;p88pf< 80 0 ~~`0 0`8ll|lf|ff<>f> ? '$$ f>`|ffff?<`|ff8<  l8`nxl8<f}ff~300x<`<|0|006lll>fff<lf< 8~L2~<~~<~x|nf}8x8--------------------------------------- Instrukcja obs ugi programu: Theta Music Composer v. 1.00 } cze 1--------------------------------------- Theta Music Composer (w skrcie:TMC) to program muzyczny majcy ( }wzamierzeniu autora) wykorzystywa w jaknajwikszej czci rozszerzenie kompu-terw ATARI XL/XE, jakim jest wbudowa-nie w } niego drugiego uk adu muzycznego.Poniewa jednak autor nie jest muzykiem(chocia kiedy tak mu si wydawa o)to bdzie szc }zerze wdziczny za wszel-kie listy z uwagami, na adres: Marcin Lewandowski Jaskier/Taquart }ul.Wyszyskiego 15/22 87-100 TORU e-mail: jaskier@mat.uni.torun.pl Program tworzy ca o z nastpuj-cy }mi plikami:TMC.COM -program,TMC1.DOC -ta instrukcja,TMC2.DOC -cz 2 instrukcji,TMCPLAY.ASM -player, ktry odgrywa }muzyczki w TMC. Jeli chcesz, moesz go dowolnie przerabia, aby uy w swoim programie, ale nie radz wsadza tego przero }bionego playera do TMC za- miast standardowego, chyba e poszuku- jesz nowych moliwoci zawieszenia systemu. Program } obs uguje poprawnie takierozszerzenia, w ktrym dostp do dru-giego POKEY-a otrzymuje si przy poda-niu adresw z zakresu } $d210-$d21f.Jeli tak nie jest to dzia anie progra-mu bdzie identyczne jak na komputerzebez rozszerzenia. Przy pisa }niu tej instrukcji przyj- em za oenie, e uytkownik programubiegle pos uguje si systemem szesnast-kowym (ktry niepodz }ielnie panuje wca ym programie) oraz zna (przynajmniejpobienie) takie programy muzyczne jak:CMC i MPT, ktre by y dla mni }e wzorem.Ponadto uzna em, e wikszo rozsd-nych uytkownikw pod cza standardowe-go POKEY-a na kana lewy, a dodatkowe }gona prawy. W komputerach bez rozszerzeniawszystkie odwo ania do POKEY-w bdzawsze trafia do tego samego uk adu,p }oniewa za najpierw wstawiane swartoci prawego, a nastpnie lewegokana u, wydawa by si mog o, e poprostu bdzie s ys }zalny tylko lewykana . Niestety tak nie jest. Mimo ipomiedzy obydwoma wpisami mijaj tylko4 cykle,wyra nie s yszalny jest } terkot,ktrego g ono ronie wraz z g ono-ci prawego kana u. Na szczcie niejest to jednak taki wielki problem.Zna }cznie gorsz spraw jest to, ekomrka AUDCTL ($d208) ma chyba pewnzw ok w odbieraniu sygna u, gdy jelina prawym kanal }e nie uywamy d wikwfiltrowanych, a na lewym tak, to zapom-nijmy o tym, e je us yszymy. Genera-tory wydadz z siebie ta }ki charkot, etrzeba zatyka uszy. Dlatego pamitaj!Jeeli piszesz muzyczk, ktra ma dob-rze brzmie rwnie na mono, to }jeeliw AUDCTL standardowego POKEY-a usta-wiasz jakie bity, to musisz je teustawi w POKEY-u dodatkowym (alejeeli na p }rawym kanale uywasz filtrwto na lewym nie musisz tego robi). Wyjani teraz kilka za oe odno-nie programu. Po pi }erwsze, dlaczegoTheta? Niektrzy moe znaj programmuzyczny Delta Music Composer, ktregoautorem jest najlepszy koder na A }TARI.Delta jest czwart liter alfabetu gre-ckiego i program gra na czterech kana- ach, Theta jest sma i gra na omiukan }a ach. Rwnie reszta parametrwjest podwojeniem Delty: 128 patternw i64 instrumenty. Doda em tutaj rwnie(w celu zwiks }zenia jakoci d wikw)moliwo wywo ywania playera do czte-rech razy na ramk. Z tego te powodunie naley si spodziewa } od playera(chociaby z powodu jakoci d wikw,iloci trackw i wywo a na ramk)jakiej rewelacyjnej prdkoci.Procedu }ra odgrywajca d wiki zajmuje wmaksimum 4000 cykli, a procedura prze-szukujca pattern i song 2500. Tak wicca oc moe z }ajmowa nawet 18500 cykli.No c. Ten program nie powsta do tegoaby go umieszcza w demach, od tegojest Delta. Wyja }ni teraz jak w moim programierobione jest stereo. Jak si ju pewniedomyli e nie jest to robione w tensposb, e s sob }ie cztery tracki ig onoci d wikw na nich si znajdu-jcych s w czci wsadzane do lewegokana u, a w czci do prawego }. Ale niejest tak rwnie, e jest sobie osiemtrackw i d wiki znajdujce si napierwszych czterech wsadzane s do le-we }go kana u, a z czterech nastpnych doprawego. Obydwa te rozwizania majpewne wady. W pierwszym z nich nie mo-na korzysta } w pe ni z dobrodziejstwomiu osobnych generatorw POKEY-w, aw drugim d wiki s rozmieszczane albona prawym, albo na le }wym kanale, aumieszczenie ich pomidzy kana ami jestznacznie utrudnione (ale moliwe).Rwnie nie zrobi em tak jak radzili } mito niektrzy, to znaczy, nie cz tra-ckw tak aby np: 2 d wiki by y stereo,2 na lewym i 2 na prawym kanale.Po prost }u mj program moe by kadym ztych typw. To jak brzmi d wiki niezaley od jakiego dziwnego ustawieniaznacznikw,ktry } track czy z ktrym,ale od samych d wikw. Jeeli w trackuwstawimy 4 d wiki stereo, to bdzie toprogram pierwszego ty }pu, jeeli za 8mono, to drugiego. Oczywicie moliwejest rwnie kade rozwizanie pored-nie. Sprawa jest bowiem ba }rdzo prosta.Kady d wik ma 2 obwiednie. Podstawow(zwan niekiedy g wn) i dodatkow(zwan niekiedy przeciwn). Jeelid } wik jest umieszczony na lewym kanaleto obwiednia podstawowa gra na kanalelewym, a dodatkowa na prawym. Oczywi-cie jedn } z nich mona zostawi pusti wtedy d wik bdzie gra mono. Jeelibdzie to obwiednia dodatkowa tod wik umieszczony na l }ewym kanalebdzie gra mono na kanale lewym, ajeeli podstawowa, to na kanale prawym.Oczywicie umieszczajc d wik na pra }-wym kanale odwracamy sytuacj. Ktomdry na pewno ju zauway , e moetutaj dochodzi do konfliktw. Jeeliwstawimy w 8 } trackw same d wikistereo to bdziemy musieli 16 obwiedniwsadza do 8 generatorw obu POKEY-w.Konflikt ten rozwizywany !} jest w sposbnastpujcy: pierwszestwo ma obwiedniapodstawowa. Proste nie? Zajmijmy si teraz obs ug. Zale-nie od "} uywanego systemu robimy wszyst-ko,aby wczyta program TMC.COM. Podczas adowania adnie nam on si przedstawii przy okazj #}i sprawdzi z jakiego urz-dzenia (i o jakim numerze) jest onwczytywany. To urzdzenie bdzie odtdzawsze domylnie uywane $} (o ile uyt-kownik nie poda w asnego) podczaswszelkich operacji wejcia-wyjcia.Uwaga! W przeciwiestwie do QuickAssembl %}era i innych tego typu progra-mw, TMC prawid owo rozpoznaje, ezosta wczytany z ramdysku. Program aduje si od adre &}su $8800do $bc00 oraz pod ROM. Na dane muzyczkioraz bufor directory uywa pamici od$2800 do $8800. Naley jednak uwaa, '}gdy nie sprawdza przepe nienia, takwic mimo i s to 24kB, to mona, pi-szc piekielnie d ug muzyczk, zawie-si w ten (}sposb program. Aczkolwiekprogram uywa pamici z zakresu $bd00-$bfff (pami ekranu), to zosta on taknapisany, e mona )}swobodnie przej doDOS-a, a nastpnie (o ile nie zmienia-limy nic w pamici powyej $2800, pozatym co robi system, czyli *} pamici ek-ranu) powrci do programu komend RUN. Program dzieli si na dwie czci:Menu -opisane w tej czci ins +}trukcji,Composer -opisany w czci nastpnej. Po wczytaniu programu widzimy ekranMenu. U gry jest tytu programu. W ,}lewym oknie opcje po ktrych monaporusza si kursorem. W prawym ukazujesi spis directory, po ktrym rwniemoemy porus -}za si kursorem. Poniejznajduje si wska linia informacji, wktrej program pokazuje swoje komunika-ty. Normalnie w lini .}i tej znajduje si29 znakowa informacja, ktra dodawanajest do zapisywanej muzyczki, a przyjej odczytywaniu natychmiast je /}st tuumieszczana. Nieco niej znajduje siokno z moim adresem, a na dolnej ramceumieszczone s klawisze uaktywniajceposz 0}czeglne opcje. Po oknie opcjimoemy porusza si kursorem za pomocklawiszy , , a uaktywniamy je klawi-szem Return lub 1}naciniciem klawiszaprzypisanego tej opcjii. Opcje Menu to: (w nawiasach kwadra-towych klawisz uaktywnijcy opcje)C 2}omposer [C]- przejcie do drugiej czci programu.Informacja [F]- wpisywanie w linii informacjii 29 bajtw dodawanych do 3} zapisywanej muzyczki. Klawisz Delete powoduje cofnicie kursora, Ctrl Esc, to znak (p) (published). Wyjcie kla- wiszem R 4}eturn bd Esc (bez rznicy).Load Music [L]- wczytywanie muzyczki. Nie radz wczytywa plikw nie stwo- rzonych przez TMC 5}, chyba e chcesz zawiesi system. Po podaniu nazwy, jeeli nie zawiera a ona rozszerzenia to domylnie przyjmowane jest . 6}TMC. Jeeli zawiera a znaki * lub ?, to zostaje wywo ana opcja directory. Po wybraniu nazwy pliku zostaje on odczy- tany. 7}Save Music [S]- zapisywanie muzyczki. Jest ona zapisywana w formacie akcep- towalnym przez DOS-a. Najpierw program pyta 8}o adres adowania pliku. Na ekra- nie widniej wtedy 3 liczby: pocztek adresu adowania, koniec oraz d ugo pliku. Adres 9} podajemy w systemie szes- nastkowym. Klawisze ,  wybieraj, ktr cyfr adresu bdziemy podawa, Return to zatwierdzeni :}e, Esc to powrt do Menu. Nastpnie podajemy nazw pli- ku. Jeeli nie zawiera a rozszerzenia, to domylnym jest .TMC. Je ;}eli podana nazwa zawiera a znaki * lub ? to wywo- ywana jest opcja directory. Po wybra- niu nazwy pliku muzyczka zostanie <} za- pisana zamiast dotychczasowego pliku o tej nazwie.Save Player [P]- zapisywanie programu odgrywajcego dane muzyczki =}. Procedura przebiega podobnie jak przy opcji Save Music z tym, e domylnym rozszerze- nime jest .REP.Directory [D]- sp >}is plikw na dysku.Instruction [I]- skrtowa instrukcja programu, g wnie klawiszologia czci drugiej, ktrej pe ny opis ?} znajduje si w pliku TMC2.DOC. Stron instruk- cji wybieramy klawiszami , . Return bd Esc to powrt do Menu.New [N] @}- czyci dane muzyczki. Program zapyta si, czy jestemy tego pewni. Nacinicie klawisza Y powoduje wyko- nanie czynnoci A}. Kady inny to powrt do Menu.Exit [E]- powrt do DOS-a. Take tutaj program zapyta czy jestemy tego pewni. Czter B}y spord tych opcji: LoadMusic, Save Music, Save Player i Direc-tory wywo uj dwie wane procedury:pobranie nazwy oraz wy C}pis directory.Oto opis tych procedur.Pobranie nazwy- bufor nazwy moe mie do 128 znakw. Poniewa ca oc nie moe by n D}araz widoczna na ekranie, to okno informacji pokazuje tylko ostat- nie 24 znaki z tego bufora. Pierwszy znak za wyrazem "F E}ile" wskazuje na stan tego okna. Jeeli jest to ":", to bufor nazwy ma nie wicej ni 24 znaki czyli okno jest nie przesun F}ite, nato- miast jeeli jest to strza ka w lewo, to znaczy, e okno jest tak przesuni- te aby pokazywa ostatnie 24 znak G}i. Podczas wyboru klawisz Delete powoduje cofnicie kursora, Return to zatwier- dzenie nazwy, za Esc to powrt do Menu. H}Kady inny klawisz za wyjtkiem spacji powoduje pojawienie si danego znaku w buforze na pozycji kursora. Jednake zaraz n I}a pocztku procedura oczekuje na nacinicie w anie ktre- go z klawiszy Delete, Return, Esc, za nacinicie kadego in J}nego powodu- je wyczyszczenie bufora nazwy i wpisa- nie tego klawisza w pierwsze pole.Directory- wed ug podanego szablonu K} odczytywana jest lista plikw, ktra ukazuje si w oknie directory. Moemy po niej porusza si kursorem za pomo- c kla L}wiszy , . Esc powoduje powrt do Menu, za Return zatwierdzenie wyb- ranej nazwy. Program w aciwie obs u- guje podkatal M}ogi w SpartaDOS-ie i MyDOS-ie 4.5, to znaczy, e wybrana nazwa wpisywana jest do bufora nazwy za ostatnim znakiem "\" bd N} ":", to znaczy, e jeli podamy nazw: MUSICS:W*.TMC i wybierzemy nazw: WANTED.TMC, to przy prbie odczytu, odczytany z O}ostanie plik, ze stacji z ktrej zosta wczytany TMC, o nazwie: MUSICS:WANTED.TMC. Jeeli podczas operacji wejcia--w P}yjcia nastpi b d, to jego numerwypisywany jest na ekranie wyjtkowo wsystemie dziesitnym. Jest to wiadomamoja niekon Q}sekwencja. Po prostu numeryb dw funkcjonuj w ca ej literaturzew anie w takiej formie i podawanie ichpodobnie jak wszys R}tkich innych liczb wsystemie szesnastkowym by oby niewygod-ne dla uytkownika. Teraz cz nieco mniej interesuj-ca S}dla muzykw, ale znacznie bardziejdla koderw. Opis wywo ywania playera. Pe ny plik rd owy playera znajdu-je si w p T}liku TMCPLAY.ASM, tak wickady szanujcy si koder bdzie mg go sam przeanalizowa i zrozumie jegoobs ug. Niniejszy te U}kst jest wicprzeznaczony dla leniuchw. Doda em tenplik rwnie dlatego, e wielu muzykwnie korzysta z pe nych moliwoc V}i prog-ramw muzycznych i dziki temu kadykoder bdzie mg napisa player spec-jalnie przeznaczony dla danej muzyczki. W} Pocztek playera wyglda nastpuj-co: ORG PLAYERa) JMP INITb) JMP PLAYc) JMP SOUNDd) X} MAXVOL DTA B(15)e) VOLUME DTA D' 'f) FREQEN DTA D' 'g) KANAL DTA D' 'h) AKTWYS DTA D' 'i) Y}NUMDZW DTA D' 'j) AUDCTL DTA D' 'k) AUD1 DTA B(0)l) AUD2 DTA B(0)m) VOLUME 256 bajtowa tablican) FRQTA Z}B 256 bajtowa tablicao) BASSLO 64 bajtowa tablicap) BASSHI 64 bajtowa tablicaa) Skok do procedury inicjalizujcej.Skacze [} si tutaj tylko wtedy, gdy chcesi powiadomi player co ma robi.Parametry przekazuje si w A, X i Y: A=$00 X-numer muzyc \}zki -graj song. Player przeszukuje song w poszukiwa- niu komend stopu i skokw. Po znale- zieniu si za t o numerze po ]}danym w X ustawia si w linii zaraz za ni. Nie odnawiana jest tutaj warto te- mpa. Trzeba to zrobi najpierw. A=$10 ^} X-pozycja w songu -graj song. Player ustawia si na danej pozycji, ale podobnie jak poprzednio nie usta- wia tempa. A _}=$20+numer kana u (0-7) X-wysoko d wiku Y-nr.instrumentu -graj inst- rument o danym numerze, kanale i wy- sokoci (C `}-1=$1, C#1=$2 itd.), nie jest zmieniana g ono, trzeba to zrobi najpierw nastpn opcj. A=$20+numer kana u X=$00 Y-g a} ono - -zmiana g onoci d wikw na kanale. starsze 4 bity to g ono obwiedni g wnej, 4 m odsze to dodatkowej. b}A=$30 X-tempo -zmiana tempa. Jest to warto o 1 mniejsza od tej w CMC i MPT, to znaczy, e tempo 5 oznacza odgrywanie c}co 6 ramek. A=$40 -skocz gra (i to natychmiast). A=$50 -przerwij (z wyciszeniem). A=$60 -kontynuuj (od poprzedniego pr d}zerwania odgrywania). A=$70 X-starszy bajt adresu muzyczki Y-m odszy bajt -inicjacja playera. Jest tutaj robiona rwnie e} inicjacja tempa, wic jeeli chcemy rozpocz granie muzyczki od pocztku songu, wystarczy wywo a opcj kontynuuj.b f}) Skok do procedury przeszukujcejsong i patterny. Naley wywo ywa jraz na ramk. Opcja "przerwij" blo-kuje wykonywanie g}w anie tej czciprocedury, dlatego te d wiki mogswobodnie wybrzmiewa. Zaraz po zako-czeniu si tej czci procedury q}B%DOS SYSB*)DUP SYSBSTMC COMBTMC1 DOCBTMC2 DOCBfPTMCPLAY ASM wywo- ywana jest procedura odgrywania d wi-kw, dziki temu jeeli mamy muzyczknapisan do wywo ywania raz na ramk,to r} nie musimy ju wywo ywa procedurynastpnej.c) Skok do procedury odgrywajcejd wiki. Naley j wywo ywa o jedenraz na s} ramk mniej ni wywo a na ramkwymaga dana muzyczka. Z powodu d ugiegoczasu dzia ania tej procedury naleyuwaa aby nas t}tpna procedura nie za-czyna a si jeszcze wtedy, gdy nie sko-czy a si procedura poprzednia. Abymuzyczka gra a moliwie u}najbardziejzgodnie z jej brzmieniem w Composerze,player naley wywo ywa w tych samychmomentach, jak jest to w programie. v}Otonumery linii ekranu w ktrych wywo ywa-ny jest player oraz odpowiadajcawarto komrki VCOUNT ($d40b): razy na ramk w} -> 1 2 3 4liniaekranu $d40b8 8 - - - +32 20 - - + -88 48 - + - x}+144 76 - - + -168 88 - - - + - = nic. + = wywo anie procedury SOUND. Na przerwaniu V y}BLANK naley zawszewywo ywa procedur PLAY (PLAYER+3,patrz punkt b.)d) Player pozwala na p ynne matematy-czne podg ani z}anie i ciszanie muzyczkiw 16 fazach. Robi si to przez wpisanieodpowiedniej wartoci do komrkiPLAYER+9. 15 to g ono m {}aksymalna, 0to pe ne ciszenie.e) Wartoci z tych komrek s bezpo-rednio wsadzane do rejestrw POKEY-w.Starsze 4 bity |} to zniekszta cenie, am odsze 4 to g ono d wiku.f) Czstotliwo d wiku. Warto wsa-dzana bezporednio do komrek P }}OKEY-w.g) Z powodw wyjanionych wczeniej wakapicie dotyczcym d wikw stereo,moe si zdarzy, e d wik np.z tracku ~}drugiego moe gra na kanale prawym, coprawda na generatorze drugim, ale jegog ono w tablicy VOLUME bdzie tymsamym na }pozycji pitej (liczy si tuod zera). Aby prawid owo pobra daned wikw grajcych na danym generatorzenaley wykona rzec }z nastpujc: LDX #0 LDY KANAL,XW ten sposb dowiadujemy si z jakiegotracku pochodzi d wik grajcy nazerowym ge }neratorze (pierwszym genera-torze standardowego POKEY-a). Zmienia-jc liczb w pierwszej linii dowiaduje-my si z ktrych }trackw pochodzd wiki grajce na danych generatorach.h) Po wykonaniu dwch powyszych inst-rukcji oraz nastpnej: LDA A }KTWYS,Y,moemy dowiedzie si jak nut grad wik na danym generatorze. Warto tnaley zANDowa wartoci $3f, gdynajw }ysze bity oznaczaj tutaj numertablicy czstotliwoci. Wartoc 1 tonuta C-1, 2 to C#1 itp. Wartoc 0lepiej, eby si tuta }j nie pokazywa a,gdy wwczas z tablicy czstotliwocipobierana jest warto 0 (baaardzo wy-soki d wik) i wsadzana do POK }EY-a.i) W podobny sposb jak w poprzednimpodpunkcie moemy si tutaj dowiedziejaki numer d wiku gra na danym genera-to }rze.j) I znowu w podobny sposb dowiadujemysi o tym, ktre bity komrki AUDCTLustawia dany d wik.k) Jest tutaj ju zO }Rowana warto,wsadzana do komrki $d208.l) A ta warto do komrki $d218.m) 256-bajtowa tablica uywana do ci-szania, } jednake sugerowa bym jej uy-wanie rwnie w innych przypadkach.Czstokro nie chcemy gwa townie poka-zywa jakiego obr }azka, tylko powoli gorozjaniamy. Dziki tej tablicy moemyzrobi to p ynnie w 16 fazach. Poniewatablica jest symetryczna } moemy to zro-bi na dwa sposoby: ASL FAZA LDA KOLOR ASL FAZA TAY ASL FAZA ASL @ AS }L FAZA ASL @ LDA KOLOR ASL @ TAY ASL @ AND #15 ORA FAZA ORA FAZA } TAX TAX TYA TYA AND #$F0 AND #$F0 ORA PLAYER+60,X ORA PLAYER+60,X STA $2C }4 STA $2C4 LSR FAZA LSR FAZA LSR FAZA LSR FAZA Wydawa by si mog o, e ten drugisposb jest krtsz }y, ale jeeli bdzie-my zmienia komrk FAZA co 16, to od-padnie nam 8 linii dotyczcych rotacjibitw w komrce FAZA dla }pierwszegosposobu.n) Z tej tablicy na podstawie wartociz komrek AKTWYS pobierana jest wartowpisywana nastpnie do PO }KEY-w. S tow aciwie 4 tablice. Pierwsza s uy dlad wikw o zniekszta ceniach A i E,dwie nastpne dla zniekszta ce C, }aostatnia dla 2, przy wy czonym dladanego generatora dzielniku czstotli-woci (warto $20 lub $40 w AUDCTL).o) Ta tab }lica jest uywana podobnie jakpoprzednia, ale w przypadku d wikwdwukana owych ($10 lub 8 w AUDCTL)i jest wsadzana do gen }eratora o numerzeo 1 mniejszym ni generator na ktrymten d wik odgrywamy. 2 najstarsze bitykomrkek AKTWYS s tutaj igno }rowane.p) Podobnie jak poprzednio, ale tawarto jest wsadzana dok adnie do tegogeneratora na ktrym gra d wik. Wszys-t }kie tablice czstotliwoci s identy-czne jak w programie MPT. Poniewa moe si to okaza przyda-tne, przedstawi jes }zcze dok adny for-mat pliku muzyczki.0-28 -bajty informacyjne.29 -musi by tu zawsze spacja ($20).30 -tempo, jak ju }mwi em, jest to warto o jeden mniejsza ni w CMC, MPT lub Delcie.31 -czstotliwo odtwarzenia na ramk Player nie zw }aa na t komrk. To jest informacja dla Ciebie!$20-$5f -m odsze bajty adresw instr.$60-$9f -starsze bajty. Jeeli po } zORowaniu daj 0, to znaczy, e d wik jest pusty.$a0-$11f -m odsze bajty adresw patte- rnw.$120-$19f -starsze bajty }.$1a0-.... -dane songu. Kada pozycja w songu zajmuje 16 bajtw. Jest to kole- jno: transpozycja tracku 8, nr.patter- nu } grajcego na tracku 8, nastpnie jest podawany track 7 itd.....-.... -dane instrumentw. S one w formacie: -21 razy t }rjka bajtw: $ab, $cd ,$ef ,gdzie: a- zniekszta cenie d wiku, b- g ono obwiedni podstawowej, c- ty }p akcentu, d- g ono obwiedni dodatkowej, ef- parametr akcentu, -8 bajtw transpozycji, -9 bajtw parametr }w d wiku. W sumie 80 bajtw.....-.... -dane patternw. Nastpujce bajty oznaczaj: -0 -zmiana g onoci d wiku, nast }- pujca za nim warto jest negacj (EOR #$FF) g onoci uywanej w TMC. -1-$3f -graj nut o tym numerze i ustal }onym wczeniej instrumencie. Nastpuje po tym bajt g onoci. -$40 -nowy parametr, jeeli ten bajt ma ustawiony najwy }szy bit, to nas- tpuje jeszcze za nim bajt zmiany g onoci. -$41-$7f -graj nut o numerze zANDo- wanym liczb $ }3f i ustalonym instru- mencie. Nastpuje za tym bajt para- metru z ustawionym najwyszym bitem oraz bajt g onoci. } -$80-$bf -zmiana aktualnego instrume- ntu. Uywana przed rozkazem grania nuty tylko przy faktycznej zmianie instru }mentu w patternie. -$c0-$ff -linie puste w patternie. $c0 to 1 linia pusta, $ff to puste 64 linie, czyli innymi s owy } koniec danych patternu, gdy dowolnie na ktrej pozycji dotychczas si znaj- dowalimy dodanie do niej 64 powodu- } je wyjcie poza d ugo patternu. Kady pattern koczy si tym bajtem, nawet jeeli na ostatniej pozycji co si z }najduje. Najkrtszy pattern (pattern pusty) sk ada si tylko z tego bajtu. Pattern najd uszy acz- nie z tym bajtem } ma 257 bajtw d u- goci. I to tyle na temat oglnej obs ugiprogramu. W pliku TMC2.DOC znajdzieszdok adny opis dru }giej czci programu. --------------------------------------- Instrukcja obs ugi programu: Theta Music Composer v. 1.00 } cze 2--------------------------------------- Ta cz instrukcji opisuje drugcz programu TMC: Composer, do}tyczcfaktycznego tworzenia muzyczki. Aby mc tworzy muzyczk, trzebawiedzie, jak to robi nasze ATARI.Kady z POKE}Y-w ma 9 komrek, ktrenas interesuj. W 4 z nich wsadza sig ono zORowan ze zniekszta ceniem.W 4 nastpne czstotliw}o jak chcesi uzyska. Najwaniejsza z naszegopunktu widzenia jest komrka AUDCTL.Program umoliwia bezporedni do niej}dostp. Kady d wik ustawia swoj war-to AUDCTL, a nastpnie wszystkie tewartoci z d wikw, ktre akuratbrzmi na da}nym kanale s ORowane iwsadzane do komrki AUDCTL. Ustawieniekolejnych bitw (liczc od najniszych)w tej komrce daje wyni}ki nastpujce:zmniejszenie czstotliwoci o 4 oktawy (nie dotyczy generatorw 1 lub 3, je- eli maj one wy czony dziel}nik czs- totliwoci: odpowiednio $40 i $20).w cza filtr na generatorze 2 sterowa- ny przez generator 4. Aby w programie} mona by o zauway tego efekt trzeba zrobi prb instrumentu na tracku 2. Jeeli d wik jest puszczony na 2 ge- nerato}rze, to TMC powoduje, e warto na podstawie barwy filtru jest wsadza- na do rejestru czstotliwoci genera- tora 4. W mu}zyczce moemy nadal korzy- sta z generatora 4, ale bdzie on reagowa tylko na zmiany g onoci.filtr dla generatora 1 s}terowany przez generator 3. Reszta tak jak poprzednio czy w par generatory 3 i 4 tak, e tworz one jeden wsplny d wi}k. Do tego d wiku TMC uywa specjalnych dwch tablic z tym, e przystosowane s one raczej na jednoczesne wy cze- nie d}zielnika czstotliwoci na gene- ratorze 3 (warto $28 do AUDCTL).podobnie jak poprzednio tyle, e doty- czy generatorw} 1 i 2 i wartoci $50.wy cza dla generatora 3 dzielnik cz- stotliwoci.to samo dla generatora 1.zmienia brzmienie d }wikw o znieksz- ta ceniu 0 i 8. Po wybraniu opcji Composer z Menu,ekran Menu ganie, a pokazuje si ekranComposera.} Ta cz programu dzia a zwy czonym ROM-em, bez adnej ingeren-cji systemu. Zajmijmy si najpierw opisem ekra-nu. Z}osta on podzielony na okna. Nasamej grze znajduje si linia z nazwprogramu. Poniej znajduje si linia,ktra przy wie}o wczytanym programiewyglda nastpujco:Pattern: -00E L:Trac1 Trac2 Trac3 Trac4 Kolejne napisy oznaczaj:Pattern -}informacja, e po oone niej okno nazywa si Pattern.znak minus -oznacza, e aktualny pat- tern jest pusty, znak "+" ozn}acza, e co si w nim znajduje.00 -numer patternu. Moe zawiera si w zakresie od 00 do 7F.E -oznaczenie typu pattern}u, zalene od znajdujcych si na nim d wikw. Jeeli wszystkie znajdujce si na nim d wiki maj obie obwiednie (podsta}- wow i przeciwn) puste, to jest to litera E (ang. Empty), jeli uywaj tylko obwiedni podstawowej, to jest to litera }M (ang. Mono), jeli tylko przeciwnej, to P (pol. Przeciwna), a jeli obu, to S (ang. Stereo).L -informacja na ktrym kan}ale (lewym- -L, bd prawym- R) bd gra y d wiki podczas prb instrumentu lub odtwarza- nia patternu.numery trackw -p}oniej nich znajduje si okno zwane Song, a te napisy wyz- naczaj kolumny, w ktrych wsadzane s dane dla kolejnych track}w. Ponadto ciemnione t o pod jednym z numerw trackw informuje, na ktrym generato- rze ktrego POKEY-a (patrz poprzedn}ia informacja), bd gra y d wiki pod- czas prb instrumentu lub odtwarzania patternu. Pod napisem "Pattern" znajduj}e siokno o tej nazwie. Sk ada si ono z17-tu linii po 13 znakw w kadej. Wtym w anie oknie pokazywany jest aktu-alny w}ygld aktualnego patternu (ktrypattern jest aktualny, informuje liniapowyej.) Poniewa kady pattern sk adasi z 64 lini}i, widocznych jest tutajtylko cz z nich. W kadej liniipokazywane s nastpujce informacje:numer linii w patternie. W}artoc po- midzy 00 a 3F.ewentualnie znajdujca si za numerem linii dua kropka to znacznik. Wskazu- je on, e ta lini}a zosta a zaznaczona.nuta. Jeeli s to trzy kreski (---), to znaczy, e na tej pozycji w patter- nie nie bdzie odgrywan}a adna nuta. Napis np: C-1 oznacza, e na tej po- zycji bdzie odgrywana nuta C na okta- wie pierwszej. C#1 to nuta Cis 1}. Najwysza nuta to D-6.numer d wiku. Oznacza, jaki numer in- strumentu bdzie gra na tej pozycji. Warto od 00 do 3F}.g ono d wiku. Jest to warto z zakresu od 01 do FF. Oznacza ona mak- symaln g ono jak d wik moe uzy- ska. }Starsze 4 bity dotycz obwiedni podstawowej, a m odsze 4- dodatkowej. Warto ta interpretowana jest w spo- sb nastpujc}y: Po zanegowaniu tej wartoci starsze 4 bity odejmowane s od obwiedni podstawowej, a m odsze 4 od dodatkowej. Np: warto}c ED oznacza, e przy kadym odgrywaniu d wiku, od jego obwiedni podstawowej bdzie odej- mowana warto 1, a od dodatkow}ej 2. W rzeczywistoci w pamici trzymana jest w anie ta warto zanegowana i w anie dlatego nie mona poda g o- noc}i 00 (co i tak by oby bezcelowe, lepiej po prostu skasowa d wik), gdy w pamici by oby to FF, a ta war- to zarezerwow}ana jest dla kodu ko- ca patternu.opcjonalnie na samym kocu moe znaj- dowa si parametr. Jeli jest to li- czba z za}kresu 1-F, to oznacza zmian prdkoci odgrywania muzyczki. Warto 0 oznacza, e ta linia bdzie ostatni lini odgrywan} w tym patternie. Poniej okna Pattern znajduje simalutkie okno informacyjne, w ktrympokazywana jest:Sp:5 -aktualn}ie ustawiona prdko od- twarzania muzyczki (jest to warto o jeden mniejsza od podobnej wartoci w CMC lub MPT). Przy t}akiej wartoci tempa bdzie zawsze na pocztku odtwa- rzana muzyczka. Co najwyej potem t warto mona zmieni w pattern}ie. Wartoc ta znajduje si w danych muzy- czki w bajcie 31 (ADRMUS+30).Fr:4 -czstotliwo odtwarzania na ramk. Warto} ta w danych muzyczki znajduje si za wartoci tempa.1-2 -pokazuje w jakich oktawach bd gra y instrumenty. Klawisze k}tre powoduj granie instrumentu s identy- czne jak w CMC, MPT i Delcie.Zamiast tych informacji, niektre pro- cedury w} tym w anie okienku wywiet- laj informacje dla uytkownika. Gasn one natychmiast po wyjciu z tych opcji. Poniej }numerw trackw znajduje siokno Song. Po lewej stronie znajdujesi numer linii songu. Naraz widocznes tylko 3 linie song}u. Ciemniejsze t ookrela, ktra linia jest lini edyto-wan. Kada taka linia zajmuje 2 liniena ekranie, gdy inaczej nie} mog emzmieci 8 trackw. Wartoci w grnymrzdzie s przeznaczone dla kana u le-wego, a w niszym dla prawego. Na ka-d}ym tracku znajduj si 2 wartoci.Pierwsza z zakresu 00-7F to numer pat-ternu grajcego na tym tracku, a drugato transpozy}cja d wikw grajcym w tympatternie. Zamiast numeru patternuna pierwszym tracku moe znajdowa siwarto wiksza od 7F. }Jeeli nastpnawarto jest mniejsza od 80 to oznaczato skok na pozycj w songu o podanymnumerze, a warto wiksza zatrzy}manieodgrywania muzyczki. Z podawaniem nume-ru do ktrego naley skaka trzeba uwa-a, gdy program nie zapisuje ca ychd}anych songu, a tylko linie do pierw-szej linii wygldajcej tak jak powczytaniu programu, za ktr rwnieznajduj si tak} wygldajce linie. Toznaczy, e z tak wygldajcego songu:00 01-00 02-00 03-00 04-00 00-00 00-00 00-00 00-0001 FF-02 7}F-FF 7F-FF 7F-FF 7F-FF 7F-FF 7F-FF 7F-FF02 FF-FF 7F-FF 7F-FF 7F-FF 7F-FF 7F-FF 7F-FF 7F-FF.. ..... ..... ..... ...dal}ej podobnie.Zapisane zostan tylko dwie pierwszelinie. Tymczasem player odgrywajc tensong natrafi na skok do linii drugie}j,ktra nie zosta a zapisana, co moespowodowa dziwne efekty d wikowe.Rwnie nie naley robi tak, aby skokisi zaptl}a y, gdy spowoduje to nie-chybne zawieszenie programu. Zajmijmy si teraz wyjanieniempojcia transpozycji. Jest to p}odnie-sienie d wiku o podan liczb p to-nw. Ca a transpozycja jest zamknitawe wstg o d ugoci 256 p tonw, toznac}zy, e podniesienie d wiku o 256p tonw spowoduje powrcenie do pocz-tkowej wysokoci. C#1 podniesione ojeden p ton to} D-1, a opuszczone ojeden p ton, czyli podniesione o FFp tonw, to C-1. Podniesienie o okta-w to 0C p tonw, a opuszcz}enie ooktaw, to F4 p tonw. Poniewa ca atablica czstotliwoci sk ada si w a-ciwie z 4 tablic, wic podniesienie o40} p tonw nie powoduje podniesieniad wiku, a jedynie pobieranie wartociczstotliwoci z nastpnej tablicy. Poniej o}kna Song znajduje siokno Instrument. Poniej napisu "Ins"znajduje si numer aktualnego d wiku(warto od 00 do 3F). Minu}s przed nu-merem oznacza, e dany d wik nie wys-tpuje w aktualnym patternie pokazywa-nym w oknie Pattern. Plus oznacza, }ewystpuje. Cz okna instrumentu,t znajdujc si na ciemniejszym tle,mona podzieli na pionowe kolumny.Jest ich 21.} Zawieraj one wartoci,ktre s kolejno wsadzane przez playerdo komrek POKEY-w. W kadej kolumnieznajduj si nastpuj}ce wartoci.Od gry:s up pokazujcy g ono obwiedni podstawowej.s up g onoci obwiedni dodatkowej.zniekszta cenie }d wiku.rodzaj akcentu.starsze 4 bity parametru akcentu.m odsze 4 bity parametru akcentu.G ono zORowana ze zniekszt}a ceniemto bezporednia warto wsadzana dokomrek POKEY-w. Czstotliwo zaleyod nuty, typu d wiku itp. Mona jednakd}ok adniej manipulowa czstotliwocid wiku za pomoc akcentw. Zalenie odrodzaju akcenty o danym numerze wywo u-j nast}pujce reakcje:0 -brak akcentu. Czstotliwo zaley tylko od typu d wiku i nuty.1 -parametr jest bezporednio wsadzan}y do komrki czstotliwoci POKEY-a.2 -poprzednia warto wsadzona do POKEY-a, plus parametr, do POKEY-a.3 -oryginalna }warto czstotliwoci przed wsadzeniem do POKEY-a jest po- wikszana o parametr.4 -parametr AND $D20A (RANDOM) jest wsa}dzany do POKEY-a.5 -parametr oznacza numer nuty, ktrej czstotliwo pobierana jest z tablicy czstotliwoci i wsadzana }do POKEY-a.6 -podobnie jak poprzednio, ale przed wsadzeniem do POKEY-a warto jest powikszona o dotychczasow warto }wsadzan do POKEY-a.7 -parametr jest transpozycj nuty.8-F -akcenty te s identyczne z akcen- tami 0-7, z tym, e do kom}rki AUDCTL jest wsadzana zapasowa warto AUDCTL d wiku. Normalnie przy akcencie 0 wsadzana jest tam warto standardowa}, a przy pozosta ych warto 0. W oknie Instrument na jasnym tleznajduj si parametry d wiku. Pierw-szy rzd omiu }parametrw to transpozy-cje d wiku. Na samej grze jest tran-spozycja o numerze 1, na dole o numerze8. Drugi rzd to dzie}wi parametrwd wiku. Kolejno od gry:barwa filtru -jak atwo si domyli uywana przy d wikach filtrowanych. Czsto}tliwo stransponowana przez t warto wsadzana jest do generatora filtrujcego (o numerze o 2 wikszym).standardowa war}to AUDCTL d wiku.zapasowa warto AUDCTL (uywana przy akcentach od 8 do F).szybko opadania obwiedni podstawowej K}iedy player zagra ju wszystkie 21 kolumn obwiedni d wiku, o g onoci decyduje ju tylko g ono na ostat- niej kolumni}e i szybko opadania. Liczona jest ona w iloci wywo a pla- yera. Warto 10 oznacza zmniejszanie g onoci o jeden co $}10 wywo a play- era. 0 to obwiednia sta a.szybko opadania obwiedni dodatkowej.starsze 4 bity oznaczaj typ d wiku. }M odsze 4 to parametr. Poszczeglne typy d wiku to: -0 -d wik normalny. -1 -wibrato. -2 -delikatne wibrato. -3 -wibrat}o liczone w nutach. -4 -opadanie d wiku. -5 -opadanie d wiku liczone w nutach. -6 -sta e podwyszenie wysokoci. -7 -do }pki g ono d wiku na obwied- ni podstawowej jest niezerowa, g o- no obwiedni dodatkowej jest zwik- szana o 1.  }Typy d wiku od 8 do F rni si tym, e parametr jest brany z minusem.oczekiwanie na rozpoczcie danego typu d wiku. D }o tej pory d wik brzmi jak- by by typu 0.najstarsze 2 bity oznaczaj tablic czstotliwoci, z ktrej pobierana b- dz }ie czstotliwo. W rzeczywistoci warto ta jest dodawana do numeru nu- ty tak, e dla drugiej tablicy nuta C-1 ma numer } $41. Pozosta e 6 bitw podaje zmniejszon o 1 ilo wywo a playera po ktrej nastpuje kolejne wywo anie procedury typu }d wiku, zmieniajce odpowiednio d wik.m odsze 4 bity to zmniejszona o jeden ilo wywo a playera, po ktrej od- twarz}ana jest nastpna transpozycja. Starsze 3 bity, to zmniejszona o jeden ilo uywanych transpozycji. Transpo- zycje s odt}warzane od tej o numerze 1 a do tej ktrej numer wybralimy, a nastpnie znowu od tej o numerze 1. Jednake jeeli ilo }transpozycji zwikszymy o 8, to bd one odtwarzane w kolejnoci od tej o numerze 1 w d a do tej ktrej numer wybralim}y, a nastpnie z powrotem w gr do pierw- szej i tak w k ko. Na samym dole ekranu znajduje siokno, w ktrym widzim}y, w postaci s up-kw, czstotliwoci i g onoci odgry-wanych d wikw. W janiejszej czcitego okna widzimy tylko g on}ocid wikw odtwarzanych na poszczeglnychgeneratorach. Teraz pora na rzecz najwaniejsz:obs uga programu. Ca }y Composer jest podzielony na 3osobne, nie zwizane ze sob czci:edycj patternw, songu i instrumentw.Jednake mimo to} cz opcji dzia a wewszystkich tych czciach:(Znak "!" oznacza klawisz Shift, zaznak "^" oznacza klawisz Control.)!}, ! -zmiana numeru instrumentu o 1.!, ! -zmiana oktawy, w ktrej bd gra d wiki.<, > -zmiana tracku, na ktrym bd} gra d wiki.^S -zmiana tempa odgrywania muzyczki. Zmiany dokonujemy klawiszmi  i . Esc bd Return kocz edycj.}^G -zmiana czstotliwoci odgrywania muzyczki na ramk (edycja jak w opcji poprzedniej).!/ -zmiana aktualnego patternu, i}ns- trumentu, pozycji w songu (zalenie, w ktrym oknie si znajdujemy). Podajemy najpierw bardziej znaczc cyfr licz- }by. Jeeli ju po niej naciniemy Re- turn, to zmianie ulegnie tylko ta cyf- ra. Jeeli wprowadzimy rwnie drug cyfr, t}o nie naley ju naciska kla- wisza Return. Esc to wyjcie.Tab -przejscie do nastpnego okna.!^Esc -powrt do Menu. } Zaraz po wejciu do Composera znaj-dujemy si w oknie edycji patternu.Mamy tutaj nastpujce opcje:,  -zmiana numeru }patternu o 1.,  -ruch kursorem po patternie.klawisze nutowe -(czyli te bdce od- powiednikami klawiszy fortepianowych}) wpisywanie na danej pozycji w patter- nie aktualnego instrumentu (automaty- cznie ustawiana jest g ono FF).^, ^ - }zmiana o jeden g onoci obwiedni podstawowej.^, ^ -to samo, ale dla dodatkowej.^0..^9, ^A..^F -bezporednie wpisywa-!} nie g onoci. Najpierw podaje si g ono obwiedni podstawowej, a nas- tpnie program czeka na podanie g o- noci doda"}tkowej, ale moemy rwnie dobrze wybra kad inn opcj (Pa- mitajmy, e wartoci 00 nie mona wpisa).!0 -rozkaz zako#}czenia w tym miejscu odgrywania patternu.!1..!9, !A..!F -rozkaz zmiany tempa.Space -czyszczenie pozycji w patter- nie $}na pozycji kursora.!Space -czyszczenie tylko dodatkowego parametru (zmiana tempa lub koniec odgrywania patternu).!Z -us%}tawia na danej pozycji znacznik (kropka za numerem pozycji).Delete -kopiuje pozycj przy znaczniku na pozycj, w ktrej z&}najduje si kur- sor oraz przesuwa o 1 pozycj w d znacznik i kursor.!Insert -rozsuwa linie w patternie, wstawiajc pu'}st lini na pozycji kur- sora.!Delete -zsuwa linie wstawiajc pust lini na pozycji 3F.^Clear, ^Insert, ^Delete -w pr(}ogramie znajduje si bufor, ktry uywany jest przy kopiowaniu patternw. ^Clear czy- ci pattern i zapisuje go do tego bu)}- fora. ^Insert odzyskuje go, a ^Delete zapisuje pattern do bufora bez kasowa- nia patternu.^T, !T -transpozycja instrum*}entu w patternie. Jeeli w wyniku transpozyc- ji mia by powsta d wik o numerze 0, to poniewa takiego d wiku nie ma, d+}ana pozycja w patternie jest czysz- czona. Numer instrumentu oraz wielko transpozycji podajemy w ma ym oknie pod pattern,}em. Domylnie przyjmowany jest instrument aktualny. Pomidzy jedn wartoci a drug poruszamy si klawiszami , . Warto-}ci moemy poda- wa normalnie, szesnastkowo, albo te za pomoc klawiszy ,  zmieniajcych warto o 1. Return powoduje w.}ykonanie opcji, Esc to wyjcie. !T rni si tylko tym, e kursor ju bdzie usta- wiony na drugiej wartoci.![, !] -tra/}nspozycja aktualnego inst- rumentu o 1.^X, !X -zmiana dowolnego instrumentu w patternie na dowolnie wybrany. Domy- lnie0} przyjmowany jest instrument ak- tualny. Proces pobierania wartoci po- dobnie jak przy transpozycji.!Tab -zmienia numer 1}instrumentu na po- zycji kursora na aktualny oraz przesu- wa kursor o jedn pozycj w d .Return, !Return -odgrywa patter2}n na aktualnym tracku. Jeeli nacinity by Shift, to odgrywanie nastpi od pocztku patternu. W przeciwnym przy- padku 3}bdzie to od pozycji kursora. Dowolny klawisz przerywa odgrywanie.!Inverse, ^Inverse, !Caps, ^Caps - program TMC zosta w4}yposaony w ekspe- rymentaln opcj jak jest wpisywanie nut do patternu na ywo (w czasie rze- czywistym) podczas grania 5}patternu, przy jednoczesnym ods uchiwaniu jego dotychczasowej zawartoci. S u do tego owe cztery opcje. Rni si one 6}w sposb nastpujcy. Klawisz Inverse oznacza, e pattern bdzie puszczony od pocztku, za Caps, e od aktualnej pozycji 7}kursora. Shift oznacza, e pattern zacznie by odgrywany dopiero, kiedy ten klawisz zostanie puszczony, za Control oznacz8}a, e pattern nie zostanie puszczony dopki nie naci- niemy jakiego klawisza. Podczas gdy program oczekuje na nacinieci9}e dowol- nego klawisza nutowego pattern jest w sposb normalny ods uchiwany. Naci- niecie klawisza nutowego powoduje wpi-:} sanie go do patternu na aktualnie od- grywanej pozycji oraz oczywicie zag- ranie wpisywanej nuty. Klawiszami ,  zmien;}iamy aktualn oktaw. Esc powodu- je powrt do edycji patternu. Nastpnym oknem jakie odwiedzamyjest okno edycji instr<}umentu:, , ,  -tymi klawiszami poruszmy si po oknie.^, ^ -jeeli znajdujemy si na tej czci okna z ciemniejszy=}m t em, to te klawisze powoduj zmian g onoci obwiedni podstawowej w danej kolumnie.^, ^ -dotycz obwiedni dodatkowe>}j.!^, !^ -zmieniaj g ono ca ej obwiedni podstawowej.!^, !^ -dotycz obwiedni dodatkowej.0..9, A..F -wpisywanie?} wartoci.^Clear, ^Insert ,^Delete -kopiowanie instrumentw. Dzia a tak samo jak w oknie edycji patternw.klawisze nuto@}we -mimo i klawisze cyf- rowe zajmuj cz z nich, to jednak reszta dzia a i mona za ich pomoc pos ucha sobie d wikuA}. W razie, gdybymy potrzebowali akurat klawisza zajtego przez cyfr, to moemy nacis- n klawisz Shift lub Control (bylB}e nie Control+S lub Control+G). Ostatnim oknem jest okno songu:, , ,  -porusznie si po oknie.0..9, A..F -wpisyC}wanie wartoci (nie mona, za wyjtkiem tracku nr 1, poda numeru patternu wikszego od 7F. W os- tatniej linii na pierwszD}ym tracku moe by tylko rozkaz skoku lub stopu).!Insert -rozsuwa linie w songu, wsta- wiajc zera na aktualnej pozycji.E}!Delete -zsuwa linie songu. Na pozycji 7F wstawiana jest linia "pusta".^X, !X -zmiana 2 trackw. Proces wybo- ru przebieF}ga jak przy wyborze transpo- zycji w edycji patternu. Zamiana doko- nywana jest od pozycji kursora w d , tak wic jeeli G}chcemy zamieni ze sob zawartoci trackw od pozycji 10 do 16 to naley przej na pozycj 10, poda, ktre tracki chcemyH} zamieni, a nastpnie na pozycji 17 poda te same wartoci. Domylnie na pocztku przyj- mowany jest track na ktrym stoiI} kur- sor.^C, !C -tym razem jeden track jest ko- piowany do drugiego. Rwnie jest to robione od pozycji kursora, ale tyJ}m razem z powodu zamazywania starych wartoci nie mona zrobi poprzednio opisanej sztuczki.!Tab -zmiana 2 trackw, ale K}nie trzeba podawa ich numerw. Wymieniane s ze sob: track na ktrym stoi kursor oraz ten sam track tyle, e na przeciwnL}ym kanale. Innymi s owy ta opcja pozwala zmienia kana y lewy z prawym.Return -odgrywa song od aktualnej po- zycji. PodcM}zas odgrywania dzia aj nastpujce klawisze: ,  -zmiana instrumentu. ,  -zmiana oktawy. <, > -zmiana tracku. N} klawisze nutowe -granie wraz z muzyczk. Spacja, Esc -zakoczenie odgrywania. To tyle jeli chodzi o obs ug mo-O}jego programu. Polecam sprawdzeniewszystkiego w naturze.;*---------------** TMC Player **Jaskier/Taquart**---------------* opt 6 org $ac00byte equ $fabajt equ $fbaddr eqQ}u $fcadrsng equ $feplayer equ * jmp init jmp play jmp soundmaxvol dta b(15)volume dta d' 'freqen dta d' R} 'kanal dta d' 'aktwys dta d' 'numdzw dta d' 'audctl dta d' 'aud1 dta b(0)aud2 dta bS}(0)voltab dta d' ' dta d' !!!!!!!!' dta d' !!!!!!!!""""' dta d' !!!!!"""""###' dta d' !!!!"T}"""####$$' dta d' !!!"""###$$$%%' dta d' !!"""##$$$%%&&' dta d' !!""##$$%%&&''''' dta d' !!""##$$%%&&''''(' dta d' !!U}""#$$%%&''''(()' dta d' !!"##$%%&''''())*' dta d' !!"#$$%&''''()**+' dta d' !""#$%&&''()**+,' dta d' !"##$%&''()**+,-' dV}ta d' !"#$%&''''()*+,-.' dta d' !"#$%&''()*+,-./'frqtab dta b(0),b($f1),b($e4),b($d7) dta b($cb),b($c0),b($b5),b($aa) dtW}a b($a1),b($98),b($8f),b($87) dta b($7f),b($78),b($72),b($6b) dta b($65),b($5f),b($5a),b($55) dta b($50),b($4b),b($47),b($X}43) dta b($3f),b($3c),b($38),b($35) dta b($32),b($2f),b($2c),b($2a) dta b($27),b($25),b($23),b($21) dta b($1f),b($1d),b($Y}1c),b($1a) dta b($18),b($17),b($16),b($14) dta b($13),b($12),b($11),b($10) dta b(15),b(14),b(13),b(12) dta b(11),b(10),b(Z}9),b(8) dta b(7),b(6),b(5),b(4) dta b(3),b(2),b(1),b(0) dta b(0),b($f2),b($e6),b($da) dta b($ce),b($bf),b($b6),b($aa) d[}ta b($a1),b($98),b($8f),b($89) dta b($80),b($7a),b($71),b($6b) dta b($65),b($5f),b($5c),b($56) dta b($50),b($4d),b($47),b(\}$44) dta b($3e),b($3c),b($38),b($35) dta b($32),b($2f),b($2d),b($2a) dta b($28),b($25),b($23),b($21) dta b($1f),b($1d),b(]}$1c),b($1a) dta b($18),b($17),b($16),b($14) dta b($13),b($12),b($11),b($10) dta b(15),b(14),b(13),b(12) dta b(11),b(10),b^}(9),b(8) dta b(7),b(6),b(5),b(4) dta b(3),b(2),b(1),b(0) dta b(0),b($ff),b($f1),b($e4) dta b($d8),b($ca),b($c0),b($b5) _}dta b($ab),b($a2),b($99),b($8e) dta b($87),b($7f),b($79),b($73) dta b($70),b($66),b($61),b($5a) dta b($55),b($52),b($4b),b`}($48) dta b($43),b($3f),b($3c),b($39) dta b($37),b($33),b($30),b($2d) dta b($2a),b($28),b($25),b($24) dta b($21),b($1f),ba}($1e),b($1c) dta b($1b),b($19),b($17),b($16) dta b($15),b($13),b($12),b($11) dta b($10),b(15),b(14),b(13) dta b(12),b(11)b},b(10),b(9) dta b(8),b(7),b(6),b(5) dta b(4),b(3),b(2),b(1) dta b(0),b($f3),b($e6),b($d9) dta b($cc),b($c1),b($b5),b($adc}) dta b($a2),b($99),b($90),b($88) dta b($80),b($79),b($72),b($6c) dta b($66),b($60),b($5b),b($55) dta b($51),b($4c),b($48d}),b($44) dta b($40),b($3c),b($39),b($35) dta b($32),b($2f),b($2d),b($2a) dta b($28),b($25),b($23),b($21) dta b($1f),b($1de}),b($1c),b($1a) dta b($18),b($17),b($16),b($14) dta b($13),b($12),b($11),b($10) dta b(15),b(14),b(13),b(12) dta b(11),b(1f}0),b(9),b(8) dta b(7),b(6),b(5),b(4) dta b(3),b(2),b(1),b(0)basslo dta b(0),b($f2),b($33),b($96) dta b($e2),b($38),b($8cg}),b($00) dta b($6a),b($e8),b($6a),b($ef) dta b($80),b($08),b($ae),b($46) dta b($e6),b($95),b($41),b($f6) dta b($b0),b($6eh}),b($30),b($f6) dta b($bb),b($84),b($52),b($22) dta b($f4),b($c8),b($a0),b($7a) dta b($55),b($34),b($14),b($f5) dta b($d8i}),b($bd),b($a4),b($8d) dta b($77),b($60),b($4e),b($38) dta b($27),b($15),b($06),b($f7) dta b($e8),b($db),b($cf),b($c3) dtj}a b($b8),b($ac),b($a2),b($9a) dta b($90),b($88),b($7f),b($78) dta b($70),b($6a),b($64),b($5e)basshi dta b(0),b(13),b(13),k}b(12) dta b(11),b(11),b(10),b(10) dta b(9),b(8),b(8),b(7) dta b(7),b(7),b(6),b(6) dta b(5),b(5),b(5),b(4) dta b(4),b(4),l}b(4),b(3) dta b(3),b(3),b(3),b(3) dta b(2),b(2),b(2),b(2) dta b(2),b(2),b(2),b(1) dta b(1),b(1),b(1),b(1) dta b(1),b(1),m}b(1),b(1) dta b(1),b(1),b(1),b(0) dta b(0),b(0),b(0),b(0) dta b(0),b(0),b(0),b(0) dta b(0),b(0),b(0),b(0) dta b(0),b(0),n}b(0),b(0)czygrx dta d' 'pozwpt dta d' 'delay dta d' 'numptr dta d' 'poddzw dta d' 'o}wysdzw dta d' 'znksz dta d' 'frq dta d' 'vol1ch dta d' 'vol2ch dta d' 'adcvl1 dtp}a d' 'adcvl2 dta d' 'adrsnl dta d' 'adrsnh dta d' 'slupy dta d' 'opad1 dta d' q} 'opad2 dta d' 'lopad1 dta d' 'lopad2 dta d' 'typ dta d' 'param dta d' 'pomoc1r} dta d' 'pomoc2 dta d' 'czekaj dta d' 'dtyp dta d' 'ltyp dta d' 'ilperm dta d' s} 'aperm dta d' 'dperm dta d' 'lperm dta d' 'kolejn dta d' 'tempo dta b(0)ltempo dtat} b(0)pozptr dta b(0)czygrc dta b(0)przeci dta b(4),b(5),b(6),b(7) dta b(0),b(1),b(2),b(3)audtb1 dta b(4),b(2),b(0),b(0)u} dta b(4),b(2),b(0),b(0)audtb2 dta b(0),b(16),b(0),b(8) dta b(0),b(16),b(0),b(8)play lda czygrc beq r1-3 lda pozptr cv}mp #64 bcc r1 dec ltempo beq *+5 jmp sound ldx #7 lda #0p1 sta pozwpt,x sta delay,x dex bpl p1 sta pozptr tax lw}dy #15p2 lda (adrsng),y bpl p3 dey lda (adrsng),y bpl *+5 jmp stop stx addr asl @ asl @ rol addr asl @ rol addr x}asl @ rol addrzm0 adc #0 sta adrsng lda addrzm1 adc #0 sta adrsng+1 bcc p2-2p3 sta numptr,x dey lda (adrsng),y stay} poddzw,x inx dey bpl p2 clc lda adrsng adc #16 sta adrsng bcc *+4 inc adrsng+1 jmp soundr1 dec ltempo bpl r1-3z} inc pozptr lda tempo sta ltempo ldx #7r2 dec delay,x bmi *+5 jmp r14 ldy numptr,xzm2 lda $ffff,y sta addrzm3 lda ${}ffff,y sta addr+1 ldy pozwpt,xr3 lda (addr),y bne r4 jsr nparam jmp r13r4 cmp #$40 bcs r5 adc poddzw,x sta wysdzw,x|} jsr nparam ldy numdzw,x jsr dzwiek jmp r13r5 bne r8 iny inc pozwpt,x lda (addr),y bpl r6 sta bajt jsr nparam lda}} bajtr6 and #$7f bne r7 lda #64 sta pozptr bne r13r7 sta tempo sta ltempo bne r13r8 cmp #$80 bcs r11 and #$3f adc~} poddzw,x sta wysdzw,x iny inc pozwpt,x lda (addr),y and #127 bne r9 lda #64 sta pozptr bne r10r9 sta tempo sta lt}empor10 jsr nparam ldy numdzw,x jsr dzwiek jmp r13r11 cmp #$c0 bcs r12 and #$3f sta numdzw,x iny inc pozwpt,x jmp }r3r12 and #$3f sta delay,xr13 inc pozwpt,xr14 dex bmi sound jmp r2sound ldx #7p5 lda czygrx,x beq p6 jsr graj lda} audctl,x and audtb1,x beq p6 ldy #71 lda (addr),y clc adc aktwys,x sta aktwys+2,x tay lda frqtab,y sec adc pomoc1},x sta frq+2,xp6 dex bpl p5 asl maxvol asl maxvol asl maxvol asl maxvol inx stx addr stx addr+1 ldx #7p9 txa ta}y lda vol1ch,y bne p10 ldy przeci,x lda vol2ch,y bne p10 txa tay lda #0p10 sta byte tya sta kanal,x lda frq,y st}a freqen,x lda audctl,y sta bajt ora addr+1 sta addr+1 lda bajt and audtb1,x beq p11 lda frq+2,y sta freqen+2,xp11 }lda bajt and audtb2,x beq p12 lda aktwys,y and #$3f tay iny sty addr lda basshi-1,y sta freqen,x jmp p13p12 ldy ad}dr beq p13 lda basslo-1,y sta freqen,x lda #0 sta addrp13 lda byte ora maxvol tay lda voltab,y ldy kanal,x ora znk}sz,y sta volume,x cpx #4 bne p14 lda addr+1 sta aud2 lda #0 sta addr+1p14 dex bpl p9 lsr maxvol lsr maxvol lsr ma}xvol lsr maxvol lda addr+1 ldx #3 stx $d21f stx $d20f ldx freqen+4 ldy freqen stx $d210 sty $d200 ldx volume+4 ldy} volume stx $d211 sty $d201 ldx freqen+5 ldy freqen+1 stx $d212 sty $d202 ldx volume+5 ldy volume+1 stx $d213 sty $}d203 ldx freqen+6 ldy freqen+2 stx $d214 sty $d204 ldx volume+6 ldy volume+2 stx $d215 sty $d205 ldx freqen+7 ldy f}reqen+3 stx $d216 sty $d206 ldx volume+7 ldy volume+3 stx $d217 sty $d207 sta aud1 ldx aud2 stx $d218 sta $d208 rt}sgraj lda adrsnl,x sta addr lda adrsnh,x sta addr+1 ldy slupy,x cpy #63 beq n6 inc slupy,x inc slupy,x inc slupy,x} lda (addr),y and #$f0 sta znksz,x lda (addr),y and #15 sec sbc adcvl1,x bpl n1 lda #0n1 sta vol1ch,x iny lda (ad}dr),y and #15 sec sbc adcvl2,x bpl n2 lda #0n2 sta vol2ch,x lda (addr),y and #$f0 beq n8 bpl n3 ldy #73 lda (addr}),y ldy slupy,x dey dey bpl n4n3 lda #0n4 sta audctl,x lda (addr),y and #$70 beq n9 lsr @ lsr @ sta n5+1 lda #0} sta pomoc1,x iny lda (addr),yn5 bcc * nop nop nop nop jmp a1 nop jmp a2 nop jmp a3 nop jmp a4 nop jmp a5 no}p jmp a6 nop jmp a7n6 lda opad1,x beq n7 dec lopad1,x bne n7 sta lopad1,x lda vol1ch,x and #15 beq n7 dec vol1ch,}xn7 lda opad2,x beq n8 dec lopad2,x bne n8 sta lopad2,x lda vol2ch,x and #15 beq n8 dec vol2ch,xn8 ldy #72 lda (ad}dr),y sta audctl,xn9 lda aperm,x clc adc #63 tay lda (addr),y adc wysdzw,x sta aktwys,x tay lda frqtab,y sta frq,x} dec lperm,x bpl m1 lda dperm,x sta lperm,x lda kolejn,x beq m6 clc adc aperm,x sta aperm,x beq m7 cmp ilperm,x b}ne m1 lda #$fem7 clc adc #1 sta kolejn,x bne m1m6 inc aperm,x lda ilperm,x cmp aperm,x bcs m1 lda #0 sta aperm,xm}1 lda czekaj,x beq m2 dec czekaj,x rtsm2 lda pomoc2,x sta byte lda param,x sta bajt jsr m4 dec ltyp,x bpl m4-1 lda} byte sta pomoc2,x lda bajt sta param,x lda dtyp,x sta ltyp,x rtsm4 lda typ,x sta m5+1m5 bpl * jmp typ0 nop jmp t}yp1 nop jmp typ2 nop jmp typ3 nop jmp typ4 nop jmp typ5 nop jmp typ6 nop jmp typ7typ1 lda byte inc byte and #}3 lsr @ bcc t2 bne typ6 lda bajtt1 sta pomoc1,x clc adc frq,x sta frq,xtyp0 rtst2 lda #0 sta pomoc1,x rtstyp2 js}r t5 jmp t1typ3 jsr t5 clc adc aktwys,x jmp a5typ4 lda byte sta pomoc1,x clc adc frq,xt3 sta frq,x lda byte clc }adc bajt sta byte rtstyp5 lda aktwys,x sec sbc byte sta aktwys,x tay lda frqtab,y jmp t3typ6 lda frq,x sec sbc ba}jt sta frq,x sec lda #0 sbc bajt sta pomoc1,x rtstyp7 lda ltyp,x bne typ0 lda bajt bpl t4 lda vol2ch,x beq typ0 }lda vol1ch,x cmp #15 beq typ0 inc vol1ch,x rtst4 lda vol1ch,x beq typ0 lda vol2ch,x cmp #15 beq typ0 inc vol2ch,x }rtst5 ldy byte lda bajt bmi t6 iny inyt6 dey tya sta byte cmp bajt bne t7 lda bajt eor #$ff sta bajtt7 tya rts}a2 adc frq,xa1 sta frq,x rtsa3 ldy wysdzw,x adc frqtab,y sta frq,x tya sta aktwys,x rtsa4 and $d20a sta frq,x rt}sa7 adc wysdzw,xa5 sta aktwys,x tay lda frqtab,y sta frq,x rtsa6 sta aktwys,x tay lda frq,x adc frqtab,y sta frq,x} rtsnparam iny inc pozwpt,x lda (addr),y lsr @ lsr @ lsr @ lsr @ sta adcvl1,x lda (addr),y and #15 sta adcvl2,x} rtssongx jsr stop ldy #15zm4 lda #0 sta adrsngzm5 lda #0 sta adrsng+1d5 txa beq inicd3 lda (adrsng),y bpl d4 dex}d4 clc lda adrsng adc #16 sta adrsng bcc d5 inc adrsng+1 bcs d5playx jsr stop lda #0 sta addr txa asl @ asl @ }rol addr asl @ rol addr asl @ rol addrzm6 adc #0 sta adrsng lda addrzm7 adc #0 sta adrsng+1inic lda #64 sta pozptr} lda #1 sta ltempo sta czygrc rtsinit cmp #$10 bcc songx cmp #$20 bcc playx cmp #$30 bcs *+5 jmp d2 cmp #$40 bc}s i1 txa and #15 beq i1-1 sta tempo rtsi1 cmp #$50 bcc stop cmp #$60 bcs i2 lda #0i3 sta czygrc rtsi2 cmp #$70 }bcc i3 lda #1 sta ltempo lda #64 sta pozptr sty addr stx addr+1 ldy #30 lda (addr),y sta tempo lda addr clc adc }#32 sta zm8+1 bcc *+3 inx stx zm8+2 clc adc #$40 sta zm9+1 bcc *+3 inx stx zm9+2 clc adc #$40 sta zm2+1 bcc *+3} inx stx zm2+2 clc adc #$80 sta zm3+1 bcc *+3 inx stx zm3+2 clc adc #$80 sta adrsng sta zm0+1 sta zm4+1 sta zm6}+1 bcc *+3 inx stx adrsng+1 stx zm1+1 stx zm5+1 stx zm7+1stop ldy #7 lda #0 sta czygrcd9 sta $d200,y sta $d210,y} sta volume,y sta vol1ch,y sta vol2ch,y sta audctl,y sta czygrx,y dey bpl d9 sta $d208 sta $d218 sta aud1 sta aud2} rtsd1 sta vol1ch,x sta vol2ch,x sta audctl,x lda wysdzw,x sta aktwys,x rtsd0 tya eor #$f0 lsr @ lsr @ lsr @ lsr} @ sta adcvl1,x tya and #15 eor #15 sta adcvl2,x rtsd2 and #7 sta addr txa ldx addr and #$3f beq d0 sta wysdzw,x}dzwiek lda #0 sta czygrx,xzm8 lda $ffff,y sta adrsnl,x sta addrzm9 lda $ffff,y sta adrsnh,x sta addr+1 ora addr beq} d1 ldy #74 lda (addr),y sta opad1,x sta lopad1,x iny lda (addr),y sta opad2,x sta lopad2,x iny lda (addr),y and #}$70 lsr @ lsr @ sta typ,x lda (addr),y and #15 sta param,x lda (addr),y bpl d7 lda param,x eor #$ff clc adc #1 s}ta param,xd7 iny lda (addr),y sta czekaj,x iny lda (addr),y and #$3f sta dtyp,x sta ltyp,x iny lda (addr),y and #$}80 beq d8 lda #1d8 sta kolejn,x lda (addr),y and #$70 lsr @ lsr @ lsr @ lsr @ sta ilperm,x bne d6 sta kolejn,xd6} lda (addr),y and #15 sta dperm,x sta lperm,x dey lda (addr),y and #$c0 clc adc wysdzw,x sta wysdzw,x sta aktwys,x} tay lda frqtab,y sta frq,x lda #0 sta slupy,x sta pomoc1,x sta pomoc2,x sta aperm,x lda #1 sta czygrx,x rtsendpl}r end