---------------------------------------¢¢ Instrukcja obsugi programu:¢¢ Theta Music Composer v. 1.11¢¢ cze③⇨ 1¢¢---------------------------------------¢¢¢ Theta Music Composer (w skrcie:¢TMC) to program muzyczny maj⇧cy (w¢zamierzeniu autora) wykorzystywa⇨ w jak¢najwi❎kszej cz❎③ci rozszerzenie kompu-¢terw ATARI XL/XE, jakim jest wbudowa-¢nie w niego drugiego ukadu muzycznego.¢Poniewaə jednak autor nie jest muzykiem¢(chociaə kiedy③ tak mu si❎ wydawao)¢to b❎dzie szczerze wdzi❎czny 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 cao③⇨ z nast❎puj⇧-¢cymi plikami:¢④TMC.COM -program.¢④TMC1.DOC -ta instrukcja.¢④TMC2.DOC -cz❎③⇨ 2 instrukcji.¢④TMCPLAY.ASM -player, ktry odgrywa¢ muzyczki w TMC. Je③li chcesz, moəesz¢ go dowolnie przerabia⇨, aby uəy⇨ w¢ swoim programie, ale nie radz❎ wsadza⇨¢ tego przerobionego playera do TMC za-¢ miast standardowego, chyba əe poszuku-¢ jesz nowych moəliwo③ci zawieszenia¢ systemu.¢④TMCPLAY2.ASM -wersja skrcona playera,¢ dziaaj⇧ca nieco szybciej od oryginal-¢ nego, narzucaj⇧ca jednak pewne ograni-¢ czenia podczas komponowania muzyczki.¢④*.TMC -przykadowe muzyczki.¢¢ Program obsuguje poprawnie takie¢rozszerzenia, w ktrym dost❎p do dru-¢giego POKEY-a otrzymuje si❎ przy poda-¢niu adresw z zakresu $d210-$d21f.¢Je③li tak nie jest, to dziaanie prog-¢ramu b❎dzie identyczne jak na kompute-¢rze bez rozszerzenia.¢¢ Przy pisaniu tej instrukcji przyj⇧-¢em zaoəenie, əe uəytkownik programu¢biegle posuguje si❎ systemem szesnast-¢kowym (ktry niepodzielnie panuje w¢caym programie) oraz zna (przynajmniej¢pobieənie) takie programy muzyczne jak:¢CMC i MPT, ktre byy dla mnie wzorem.¢Ponadto uznaem, əe wi❎kszo③⇨ rozs⇧d-¢nych uəytkownikw pod⇧cza standardowe-¢go POKEY-a na kana lewy, a dodatkowego¢na prawy.¢¢ W komputerach bez rozszerzenia¢wszystkie odwoania do POKEY-w b❎d⇧¢zawsze trafia⇨ do tego samego ukadu,¢poniewaə za③ najpierw wstawiane s⇧¢warto③ci prawego, a nast❎pnie lewego¢kanau, wydawa⇨ by si❎ mogo, əe po¢prostu b❎dzie syszalny tylko lewy¢kana. Niestety tak nie jest. Mimo iə¢pomiedzy obydwoma wpisami mijaj⇧ tylko¢4 cykle,wyra♪nie syszalny jest terkot,¢ktrego go③no③⇨ ro③nie wraz z go③no-¢③ci⇧ prawego kanau. Na szcz❎③cie nie¢jest to jednak taki wielki problem.¢Znacznie gorsz⇧ spraw⇧ jest to, əe¢komrka AUDCTL ($d208) ma chyba pewn⇧¢zwok❎ w odbieraniu sygnau, gdyə je③li¢na prawym kanale nie uəywamy d♪wi❎kw¢filtrowanych, a na lewym tak, to zapom-¢nijmy o tym, əe je usyszymy. Genera-¢tory wydadz⇧ z siebie taki charkot, əe¢trzeba zatyka⇨ uszy. Dlatego pami❎taj!¢Jeəeli piszesz muzyczk❎, ktra ma dob-¢rze brzmie⇨ rwnieə na mono, to jeəeli¢w AUDCTL standardowego POKEY-a usta-¢wiasz jakie③ bity, to musisz je teə¢ustawi⇨ w POKEY-u dodatkowym (ale¢jeəeli na prawym kanale uəywasz filtrw¢to na lewym nie musisz tego robi⇨).¢¢ Wyja③ni❎ teraz kilka zaoəe odno③-¢nie programu. Po pierwsze, dlaczego¢Theta? Niektrzy moəe znaj⇧ program¢muzyczny Delta Music Composer, ktrego¢autorem jest najlepszy koder na ATARI.¢Delta jest czwart⇧ liter⇧ alfabetu gre-¢ckiego i program gra na czterech kana-¢ach, Theta jest sma i gra na o③miu¢kanaach. Rwnieə reszta parametrw¢jest podwojeniem Delty: 128 patternw i¢64 instrumenty. Dodaem tutaj rwnieə¢(w celu zwi❎kszenia jako③ci d♪wi❎kw)¢moəliwo③⇨ wywoywania playera do czte-¢rech razy na ramk❎, to znaczy, əe pro-¢cedura odgrywaj⇧ca jest wywoywana od¢50 do 200 razy na sekunde. Dlatego teə¢nie naleəy si❎ spodziewa⇨ od playera¢(chociaəby z powodu jako③ci d♪wi❎kw,¢ilo③ci trackw i wywoa na ramk❎)¢jakiej③ rewelacyjnej pr❎dko③ci.¢Procedura odgrywaj⇧ca d♪wi❎ki zajmuje w¢maksimum 4000 cykli, a procedura prze-¢szukuj⇧ca pattern i song 2500. Tak wi❎c¢cao③c moəe zajmowa⇨ nawet 18500 cykli.¢No cə. Ten program nie powsta do tego¢aby go umieszcza⇨ w demach, od tego¢jest Delta.¢¢ Wyja③ni❎ teraz jak w moim programie¢robione jest stereo. Jak si❎ juə pewnie¢domy③lie③ nie jest to robione w ten¢sposb, əe s⇧ sobie cztery tracki i¢go③no③ci d♪wi❎kw na nich si❎ znajdu-¢j⇧cych s⇧ w cz❎③ci wsadzane do lewego¢kanau, a w cz❎③ci do prawego. Ale nie¢jest tak rwnieə, əe jest sobie osiem¢trackw i d♪wi❎ki znajduj⇧ce si❎ na¢pierwszych czterech wsadzane s⇧ do le-¢wego kanau, a z czterech nast❎pnych do¢prawego. Obydwa te rozwi⇧zania maj⇧¢pewne wady. W pierwszym z nich nie moə-¢na korzysta⇨ w peni z dobrodziejstw¢o③miu osobnych generatorw POKEY-w, a¢w drugim d♪wi❎ki s⇧ rozmieszczane albo¢na prawym, albo na lewym kanale, a¢umieszczenie ich pomi❎dzy kanaami jest¢znacznie utrudnione (ale moəliwe).¢Rwnieə nie zrobiem tak jak radzili mi¢to niektrzy, to znaczy, nie ⇧cz❎ tra-¢ckw tak aby np: 2 d♪wi❎ki byy stereo,¢2 na lewym i 2 na prawym kanale.¢Po prostu mj program moəe by⇨ kaədym z¢tych typw. To jak brzmi⇧ d♪wi❎ki nie¢zaleəy od jakiego③ dziwnego ustawienia¢znacznikw,ktry track ⇧czy⇨ z ktrym,¢ale od samych d♪wi❎kw. Jeəeli w tracku¢wstawimy 4 d♪wi❎ki stereo, to b❎dzie to¢program pierwszego typu, jeəeli za③ 8¢mono, to drugiego. Oczywi③cie moəliwe¢jest rwnieə kaəde rozwi⇧zanie po③red-¢nie.¢¢ Sprawa jest bowiem bardzo prosta.¢Kaədy d♪wi❎k ma 2 obwiednie. Podstawow⇧¢(zwan⇧ niekiedy gwn⇧) i dodatkow⇧¢(zwan⇧ niekiedy przeciwn⇧). Jeəeli¢d♪wi❎k jest umieszczony na lewym kanale¢to obwiednia podstawowa gra na kanale¢lewym, a dodatkowa na prawym. Oczywi-¢③cie jedn⇧ z nich moəna zostawi⇨ pust⇧¢i wtedy d♪wi❎k b❎dzie gra mono. Jeəeli¢b❎dzie to obwiednia dodatkowa to¢d♪wi❎k umieszczony na lewym kanale¢b❎dzie gra mono na kanale lewym, a¢jeəeli podstawowa, to na kanale prawym.¢Oczywi③cie umieszczaj⇧c d♪wi❎k na pra-¢wym kanale odwracamy sytuacj❎. Kto③¢m⇧dry na pewno juə zauwaəy, əe moəe¢tutaj dochodzi⇨ do konfliktw. Jeəeli¢wstawimy w 8 trackw same d♪wi❎ki¢stereo to b❎dziemy musieli 16 obwiedni¢wsadza⇨ do 8 generatorw obu POKEY-w.¢Konflikt ten rozwi⇧zywany jest w sposb¢nast❎puj⇧cy: pierwszestwo ma obwiednia¢podstawowa. Proste nie?¢¢ Zajmijmy si❎ teraz obsug⇧. Zaleə-¢nie od uəywanego systemu robimy wszyst-¢ko,aby wczyta⇨ program TMC.COM. Podczas¢adowania adnie nam on si❎ przedstawi¢i przy okazji sprawdzi z jakiego urz⇧-¢dzenia (i o jakim numerze) jest on¢wczytywany. To urz⇧dzenie b❎dzie uəyte¢domy③lnie (o ile uəytkownik nie poda¢wasnego) podczas najbliəszej operacji¢wej③cia-wyj③cia. W kaədej nast❎pnej¢operacji za urz⇧dzenie domy③lne b❎dzie¢przyjmowane te ostatnio uəyte w opera-¢cji tego samego typu. Program ma 3 bu-¢fory nazw, a co za tym idzie 3 zwi⇧zane¢z nimi urz⇧dzenia domy③lne, do 3 typw¢operacji: odczytu/zapisu muzyczki b⇧d♪¢zapisu playera, odczytu directory,¢odczytu/zapisu instrumentu.¢Uwaga! W przeciwiestwie do Quick¢Assemblera i innych tego typu progra-¢mw, TMC prawidowo rozpoznaje, əe¢zosta wczytany z ramdysku. (W wi❎kszo-¢③ci przypadkw.)¢¢ Program aduje si❎ od adresu $8000¢do $bc00 oraz pod ROM. Na dane muzyczki¢oraz bufor directory uəywa pami❎ci od¢$2800 do $8000. Naleəy jednak uwaəa⇨,¢gdyə nie sprawdza przepenienia, tak¢wi❎c mimo iə s⇧ to 22kB, to moəna, pi-¢sz⇧c piekielnie dug⇧ muzyczk❎, zawie-¢si⇨ w ten sposb program. Aczkolwiek¢program uəywa pami❎ci z zakresu $bd00-¢$bfff (pami❎⇨ ekranu), to zosta on tak¢napisany, əe moəna swobodnie przej③⇨ do¢DOS-a, a nast❎pnie (o ile nie zmienia-¢li③my nic w pami❎ci powyəej $2800, poza¢tym co robi system, czyli pami❎ci⇧ ek-¢ranu) powrci⇨ do programu komend⇧ RUN.¢¢ Program dzieli si❎ na dwie cz❎③ci:¢④Menu -opisane w tej cz❎③ci instrukcji,¢④Composer -opisany w cz❎③ci nast❎pnej.¢¢ Po wczytaniu programu widzimy ekran¢Menu. U gry jest tytu programu. W¢lewym oknie opcje po ktrych moəna¢porusza⇨ si❎ kursorem. W prawym ukazuje¢si❎ spis directory, po ktrym rwnieə¢moəemy porusza⇨ si❎ kursorem. Poniəej¢znajduje si❎ w⇧ska linia informacji, w¢ktrej program pokazuje swoje komunika-¢ty. Normalnie w linii tej znajduje si❎¢29 znakowa informacja, ktra dodawana¢jest do zapisywanej muzyczki, a przy¢jej odczytywaniu natychmiast jest tu¢umieszczana. Nieco niəej znajduje si❎¢okno z moim adresem, a na dolnej ramce¢umieszczone s⇧ klawisze uaktywniaj⇧ce¢poszczeglne opcje. Po oknie opcji¢moəemy porusza⇨ si❎ kursorem za pomoc⇧¢klawiszy , , a uaktywniamy je klawi-¢szem Return lub naci③ni❎ciem klawisza¢przypisanego tej opcjii.¢¢ Opcje Menu to: (w nawiasach kwadra-¢towych klawisz uaktywnij⇧cy opcj❎)¢④Composer [C]- przej③cie do drugiej¢ cz❎③ci programu.¢④Informacja [F]- wpisywanie w linii¢ informacjii 29 bajtw dodawanych do¢ zapisywanej muzyczki. Klawisz Delete¢ powoduje cofni❎cie kursora, Ctrl Esc,¢ to znak (p) (published). Wyj③cie kla-¢ wiszem Return b⇧d♪ Esc (bez rznicy).¢④Load Music [L]- wczytywanie muzyczki.¢ Po podaniu nazwy, jeəeli nie zawieraa¢ ona rozszerzenia to domy③lnie przyjmo-¢ wane jest .TMC. Jeəeli zawieraa znaki¢ * lub ?, to zostaje wywoana opcja¢ directory. Po wybraniu nazwy pliku¢ zostaje on odczytany, a nast❎pnie¢ sprawdzona jest struktura tego pliku.¢ Jeəeli nie odpowiada ona strukturze¢ pliku .TMC, wy③wietlany jest b⇧d.¢④Save Music [S]- zapisywanie muzyczki.¢ Jest ona zapisywana w formacie akcep-¢ towalnym przez DOS-a. Najpierw program¢ pyta o adres adowania pliku. Na ekra-¢ nie widniej⇧ wtedy 3 liczby: pocz⇧tek¢ adresu adowania, koniec oraz dugo③⇨¢ pliku. Adres podajemy w systemie szes-¢ nastkowym. Klawisze , wybieraj⇧,¢ ktr⇧ cyfr❎ adresu b❎dziemy podawa⇨,¢ Return to zatwierdzenie, Esc to powrt¢ do Menu. Nast❎pnie podajemy nazw❎ pli-¢ ku. Jeəeli nie zawieraa rozszerzenia,¢ to domy③lnym jest .TMC. Jeəeli podana¢ nazwa zawieraa znaki * lub ? to wywo-¢ ywana jest opcja directory.¢④Save Player [P]- zapisywanie programu¢ odgrywaj⇧cego dane muzyczki. Procedura¢ przebiega podobnie jak przy opcji Save¢ Music z tym, əe domy③lnym rozszerze-¢ nime jest .REP. Jest ono wstawiane od¢ razu zamiast rozszerzenia w nazwie¢ ostatnio zapisywanej muzyczki. W prze-¢ ciwiestwie do innych procedur odczytu¢ lub zapisu, podana nazwa pliku nie¢ jest nigdzie zapisywana. Po skoczonej¢ operacji znika bezpowrotnie.¢④Directory [D]- spis plikw na dysku.¢ Wybrana nazwa zostanie wpisana do¢ bufora nazwy dla muzyczki.¢④Instruction [I]- skrtowa instrukcja¢ programu, gwnie klawiszologia cz❎③ci¢ drugiej, ktrej peny opis znajduje¢ si❎ w pliku TMC2.DOC. Stron❎ instruk-¢ cji wybieramy klawiszami , . Return¢ b⇧d♪ Esc to powrt do Menu.¢④New [N]- czy③ci dane muzyczki. Program¢ zapyta si❎, czy jeste③my tego pewni.¢ Naci③ni❎cie klawisza Y powoduje wyko-¢ nanie czynno③ci. Kaədy inny to powrt¢ do Menu.¢④Exit [E]- powrt do DOS-a. Takəe tutaj¢ program zapyta czy jeste③my tego¢ pewni.¢¢ Cztery spo③rd tych opcji: Load¢Music, Save Music, Save Player i Direc-¢tory wywouj⇧ dwie waəne procedury:¢pobranie nazwy oraz wypis directory.¢Oto opis tych procedur.¢④Pobranie nazwy- bufor nazwy moəe mie⇨¢ do 128 znakw. Poniewaə cao③c nie¢ moəe by⇨ naraz widoczna na ekranie, to¢ okno informacji pokazuje tylko ostat-¢ nie 24 znaki z tego bufora. Pierwszy¢ znak za wyrazem "File" wskazuje na¢ stan tego okna. Jeəeli jest to ":", to¢ bufor nazwy ma nie wi❎cej niə 24 znaki¢ czyli okno jest nie przesuni❎te, nato-¢ miast jeəeli jest to strzaka w lewo,¢ to znaczy, əe okno jest tak przesuni❎-¢ te aby pokazywa⇨ ostatnie 24 znaki.¢ Podczas wyboru klawisz Delete powoduje¢ cofni❎cie kursora, Return to zatwier-¢ dzenie nazwy, za③ Esc to powrt do¢ Menu. Kaədy inny klawisz za wyj⇧tkiem¢ spacji powoduje pojawienie si❎ danego¢ znaku w buforze na pozycji kursora.¢ Jednakəe zaraz na pocz⇧tku procedura¢ oczekuje na naci③ni❎cie wa③nie ktre-¢ go③ z klawiszy Delete, Return, Esc,¢ za③ naci③ni❎cie kaədego innego powodu-¢ je wyczyszczenie bufora nazwy i wpisa-¢ nie tego klawisza w pierwsze pole.¢ Podanie na pocz⇧tku bufora nazwy urz⇧-¢ dzenia spowoduje wpisanie go jako¢ urz⇧dzenia domy③lnego dla nast❎pnych¢ operacji. Jeəeli nie chcemy zmienia⇨¢ typu urz⇧dzenia, a jedynie jego numer,¢ to wystarczy poda⇨ ten numer przed¢ znakiem dwukropka.¢④Directory- wedug podanego szablonu¢ odczytywana jest lista plikw, ktra¢ ukazuje si❎ w oknie directory. Moəemy¢ po niej porusza⇨ si❎ kursorem za pomo-¢ c⇧ klawiszy , . Esc powoduje powrt¢ do Menu, za③ Return zatwierdzenie wyb-¢ ranej nazwy. Program wa③ciwie obsu-¢ guje podkatalogi w SpartaDOS-ie i¢ MyDOS-ie 4.5, to znaczy, əe wybrana¢ nazwa wpisywana jest do bufora nazwy¢ za ostatnim znakiem "\" b⇧d♪ ":", to¢ znaczy, əe je③li podamy nazw❎:¢ MUSICS:W*.TMC i wybierzemy nazw❎:¢ WANTED.TMC, to przy prbie odczytu,¢ odczytany zostanie plik, o nazwie:¢ MUSICS:WANTED.TMC.¢¢ Cz❎③ci⇧ skadow⇧ tego fragmentu¢programu, aczkolwiek wywoywan⇧ z¢cz❎③ci drugiej: Composera, jest zapis i¢odczyt pojedyczego instrumentu. Post❎-¢powanie tutaj jest podobne jak w innych¢opcjach. Najpierw podaje si❎ nazw❎. Je-¢əeli zawieraa ona znaki * lub ?, to¢wywoane zostanie directory. Domy③lnym¢rozszerzeniem jest tutaj .INS. Do zapi-¢sywanego d♪wi❎ku (80 bajtw) dodawany¢jest na pocz⇧tku 20 bajtowy nagwek.¢Jest on sprawdzany podczas odczytu.¢¢ Jeəeli podczas operacji wej③cia-¢-wyj③cia nast⇧pi b⇧d, to na ekranie¢podawana jest informacja o typie b❎du.¢Jeəeli program nie przewiduje takiego¢b❎du, to zamiast informacji podawany¢jest tylko jego numer, wyj⇧tkowo w¢systemie dziesi❎tnym. Jest to ③wiadoma¢moja niekonsekwencja. Po prostu numery¢b❎dw funkcjonuj⇧ w caej literaturze¢wa③nie w takiej formie i podawanie ich¢podobnie jak wszystkich innych liczb w¢systemie szesnastkowym byoby niewygod-¢ne dla uəytkownika.¢¢ Teraz cz❎③⇨ nieco mniej interesuj⇧-¢ca dla muzykw, ale znacznie bardziej¢dla koderw. Opis wywoywania playera.¢Na pierwszy ogie idzie player orygi-¢nalny.¢¢ Peny plik ♪rdowy playera znajdu-¢je si❎ w pliku TMCPLAY.ASM, tak wi❎c¢kaədy szanuj⇧cy si❎ koder b❎dzie mg¢go sam przeanalizowa⇨ i zrozumie⇨ jego¢obsug❎. Niniejszy tekst jest wi❎c¢przeznaczony dla leniuchw. Dodaem ten¢plik rwnieə dlatego, əe wielu muzykw¢nie korzysta z penych moəliwo③ci prog-¢ramw muzycznych i dzi❎ki temu kaədy¢koder b❎dzie mg napisa⇨ player spec-¢jalnie przeznaczony dla danej muzyczki.¢¢ Pocz⇧tek playera wygl⇧da nast❎puj⇧-¢co:¢ ORG PLAYER¢a) JMP INIT¢b) JMP PLAY¢c) JMP SOUND¢d) MAXVOL DTA B(15)¢e) VOLUME DTA D' '¢f) FREQEN DTA D' '¢g) KANAL DTA D' '¢h) AKTWYS DTA D' '¢i) NUMDZW DTA D' '¢j) AUDCTL DTA D' '¢k) AUD1 DTA B(0)¢l) AUD2 DTA B(0)¢m) VOLUME 256 bajtowa tablica¢n) FRQTAB 256 bajtowa tablica¢o) BASSLO 64 bajtowa tablica¢p) BASSHI 64 bajtowa tablica¢¢a) Skok do procedury inicjalizuj⇧cej.¢Skacze si❎ tutaj tylko wtedy, gdy chce¢si❎ powiadomi⇨ player co ma robi⇨.¢Parametry przekazuje si❎ w A, X i Y:¢ A=$00 X-numer muzyczki -graj song.¢ Player przeszukuje song w poszukiwa-¢ niu komend stopu i skokw. Po znale-¢ zieniu si❎ za t⇧ o numerze podanym 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 kanau (0-7) X-wysoko③⇨¢ d♪wi❎ku Y-nr.instrumentu -graj inst-¢ rument o danym numerze, kanale i wy-¢ soko③ci (C-1=$1, C#1=$2 itd.), nie¢ jest zmieniana go③no③⇨, trzeba to¢ zrobi⇨ najpierw nast❎pn⇧ opcj⇧.¢ A=$20+numer kanau X=$00 Y-go③no③⇨ -¢ -zmiana go③no③ci d♪wi❎kw na kanale.¢ starsze 4 bity to go③no③⇨ obwiedni¢ gwnej, 4 modsze to dodatkowej.¢ 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 co 6 ramek.¢ A=$40 -skocz gra⇨ (i to natychmiast).¢ A=$50 -przerwij (z wyciszeniem).¢ A=$60 -kontynuuj (od poprzedniego¢ przerwania odgrywania).¢ A=$70 X-starszy bajt adresu muzyczki¢ Y-modszy bajt -inicjacja playera.¢ Jest tutaj robiona rwnieə inicjacja¢ tempa, wi❎c jeəeli chcemy rozpocz⇧⇨¢ granie muzyczki od pocz⇧tku songu,¢ wystarczy wywoa⇨ opcj❎ kontynuuj.¢¢b) Skok do procedury przeszukuj⇧cej¢song i patterny. Naleəy wywoywa⇨ j⇧¢raz na ramk❎. Opcja "przerwij" blo-¢kuje wykonywanie wa③nie tej cz❎③ci¢procedury, dlatego teə d♪wi❎ki mog⇧¢swobodnie wybrzmiewa⇨. Zaraz po zako-¢czeniu si❎ tej cz❎③ci procedury wywo-¢ywana jest procedura odgrywania d♪wi❎-¢kw, dzi❎ki temu jeəeli mamy muzyczk❎¢napisan⇧ do wywoywania raz na ramk❎,¢to nie musimy juə wywoywa⇨ procedury¢nast❎pnej.¢¢c) Skok do procedury odgrywaj⇧cej¢d♪wi❎ki. Naleəy j⇧ wywoywa⇨ o jeden¢raz na ramk❎ mniej niə wywoa na ramk❎¢wymaga dana muzyczka. Z powodu dugiego¢czasu dziaania tej procedury naleəy¢uwaəa⇨ aby nast❎pna procedura nie za-¢czynaa si❎ jeszcze wtedy, gdy nie sko-¢czya si❎ procedura poprzednia. Aby¢muzyczka graa moəliwie najbardziej¢zgodnie z jej brzmieniem w Composerze,¢player naleəy wywoywa⇨ w tych samych¢momentach, jak jest to w programie. Oto¢numery linii ekranu w ktrych wywoywa-¢ny jest player oraz odpowiadaj⇧ca¢warto③⇨ komrki VCOUNT ($d40b):¢¢ razy na ramk❎ -> 1 2 3 4¢¢linia¢ekranu $d40b¢8 8 - - - +¢32 20 - - + -¢88 48 - + - +¢144 76 - - + -¢168 88 - - - +¢¢ - = nic.¢ + = wywoanie procedury SOUND.¢¢ Na przerwaniu VBLANK naleəy zawsze¢wywoywa⇨ procedur❎ PLAY (PLAYER+3,¢patrz punkt b.)¢¢d) Player pozwala na pynne matematy-¢czne podga③nianie i ③ciszanie muzyczki¢w 16 fazach. Robi si❎ to przez wpisanie¢odpowiedniej warto③ci do komrki¢PLAYER+9. 15 to go③no③⇨ maksymalna, 0¢to pene ③ciszenie.¢¢e) Warto③ci z tych komrek s⇧ bezpo③-¢rednio wsadzane do rejestrw POKEY-w.¢Starsze 4 bity to znieksztacenie, a¢modsze 4 to go③no③⇨ d♪wi❎ku.¢¢f) Cz❎stotliwo③⇨ d♪wi❎ku. Warto③⇨ wsa-¢dzana bezpo③rednio do komrek POKEY-w.¢¢g) Z powodw wyja③nionych wcze③niej w¢akapicie dotycz⇧cym d♪wi❎kw stereo,¢moəe si❎ zdarzy⇨, əe d♪wi❎k np.z tracku¢drugiego moəe gra⇨ na kanale prawym, co¢prawda na generatorze drugim, ale jego¢go③no③⇨ w tablicy VOLUME b❎dzie tym¢samym na pozycji pi⇧tej (liczy si❎ tu¢od zera). Aby prawidowo pobra⇨ dane¢d♪wi❎kw graj⇧cych na danym generatorze¢naleəy wykona⇨ rzecz nast❎puj⇧c⇧:¢ LDX #0¢ LDY KANAL,X¢W ten sposb dowiadujemy si❎ z jakiego¢tracku pochodzi d♪wi❎k graj⇧cy na¢zerowym generatorze (pierwszym genera-¢torze standardowego POKEY-a). Zmienia-¢j⇧c liczb❎ w pierwszej linii dowiaduje-¢my si❎ z ktrych trackw pochodz⇧¢d♪wi❎ki graj⇧ce na danych generatorach.¢¢h) Po wykonaniu dwch powyəszych inst-¢rukcji oraz nast❎pnej: LDA AKTWYS,Y,¢moəemy dowiedzie⇨ si❎ jak⇧ nut❎ gra¢d♪wi❎k na danym generatorze. Warto③⇨ t❎¢naleəy zANDowa⇨ warto③ci⇧ $3f, gdyə¢najwyəsze bity oznaczaj⇧ tutaj numer¢tablicy cz❎stotliwo③ci. Warto③c 1 to¢nuta C-1, 2 to C#1 itp. Warto③c 0¢lepiej, əeby si❎ tutaj nie pokazywaa,¢gdyə wwczas z tablicy cz❎stotliwo③ci¢pobierana jest warto③⇨ 0 (baaardzo wy-¢soki d♪wi❎k) i wsadzana do POKEY-a.¢¢i) W podobny sposb jak w poprzednim¢podpunkcie moəemy si❎ tutaj dowiedzie⇨¢jaki numer d♪wi❎ku gra na danym genera-¢torze.¢¢j) I znowu w podobny sposb dowiadujemy¢si❎ o tym, ktre bity komrki AUDCTL¢ustawia dany d♪wi❎k.¢¢k) Jest tutaj juə zORowana warto③⇨,¢wsadzana do komrki $d208.¢¢l) A ta warto③⇨ do komrki $d218.¢¢m) 256-bajtowa tablica uəywana do ③ci-¢szania, jednakəe sugerowabym jej uəy-¢wanie rwnieə w innych przypadkach.¢Cz❎stokro⇨ nie chcemy gwatownie poka-¢zywa⇨ jakiego③ obrazka, tylko powoli go¢rozja③niamy. Dzi❎ki tej tablicy moəemy¢zrobi⇨ to pynnie w 16 fazach. Poniewaə¢tablica jest symetryczna moəemy to zro-¢bi⇨ na dwa sposoby:¢ ASL FAZA LDA KOLOR¢ ASL FAZA TAY¢ ASL FAZA ASL @¢ ASL 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 $2C4¢ STA $2C4¢ LSR FAZA¢ LSR FAZA¢ LSR FAZA¢ LSR FAZA¢¢ Wydawa⇨ by si❎ mogo, əe ten drugi¢sposb jest krtszy, ale jeəeli b❎dzie-¢my zmienia⇨ komrk❎ FAZA co 16, to od-¢padnie nam 8 linii dotycz⇧cych rotacji¢bitw w komrce FAZA dla pierwszego¢sposobu.¢¢n) Z tej tablicy na podstawie warto③ci¢z komrek AKTWYS pobierana jest warto③⇨¢wpisywana nast❎pnie do POKEY-w. S⇧ to¢wa③ciwie 4 tablice. Pierwsza suəy dla¢d♪wi❎kw o znieksztaceniach A i E,¢dwie nast❎pne dla znieksztace C, a¢ostatnia dla 2, przy wy⇧czonym dla¢danego generatora dzielniku cz❎stotli-¢wo③ci (warto③⇨ $20 lub $40 w AUDCTL).¢¢o) Ta tablica jest uəywana podobnie jak¢poprzednia, ale w przypadku d♪wi❎kw¢dwukanaowych ($10 lub 8 w AUDCTL)¢i jest wsadzana do generatora o numerze¢o 1 mniejszym niə generator na ktrym¢ten d♪wi❎k odgrywamy. 2 najstarsze bity¢komrkek AKTWYS s⇧ tutaj ignorowane.¢¢p) Podobnie jak poprzednio, ale ta¢warto③⇨ jest wsadzana dokadnie do tego¢generatora na ktrym gra d♪wi❎k. Wszys-¢tkie tablice cz❎stotliwo③ci s⇧ identy-¢czne jak w programie MPT.¢¢ A teraz pora na opis playera w wer-¢sji skrconej. Zawarty jest on w pliku¢TMCPLAY2.ASM. Od oryginalnego rəni si❎¢wieloma rzeczami. Po pierwsze podczas¢pisania muzyczki trzeba zwraca⇨ uwag❎¢na pewne ograniczenia: nie moəna uəywa⇨¢obwiedni dodatkowej d♪wi❎ku (player nie¢zwraca na ni⇧ w ogle uwagi) i nie moə-¢na uəywa⇨ basw dwukanaowych. Znacznie¢wi❎ksze rənice dotycz⇧ jednak obsugi¢playera. Nie ma tutaj əadnych skokw¢na pocz⇧tku programu. Naleəy skaka⇨¢bezpo③rednio pod odpowiednie etykiety:¢PLAY- raz na ramk❎, (patrz punkt b)¢SOUND- stosownie do muzyczki (patrz c)¢INIT- uruchamia odgrywanie muzyczki.¢ Y=modszy adres muzyczki, X=starszy.¢STOP- zatrzymuje odgrywanie.¢Nie ma teə əadnych udost❎nionych kom-¢rek. Kto chce moəe przeanalizowa⇨¢player i uəywa⇨ czego tylko zechce.¢Ten player to wersja szcz⇧tkowa orygi-¢nau, zawieraj⇧ca wy⇧cznie to, co jest¢do grania potrzebne. Kto potrzebuje¢czego③ wi❎cej, bedzie musia sobie to¢sam dopisa⇨, korzystaj⇧c co najwyəej z¢z procedur w playerze oryginalnym.¢¢ Jak wida⇨ player jest do③⇨ prymity-¢wny. Jednak te oszcz❎dno③ci powoduj⇧¢znaczne (ok. 30%) skrcenie czasu pracy¢playera. To chyba wystarczy aby co¢odwaəniejsi zacz❎li uəywa⇨ go w demach?¢¢ Poniewaə moəe si❎ to okaza⇨ przyda-¢tne, przedstawi❎ jeszcze dokadny for-¢mat pliku muzyczki.¢¢④0-28 -bajty informacyjne.¢④29 -musi by⇨ tu zawsze spacja ($20).¢④30 -tempo, jak juə mwiem, jest to¢ warto③⇨ o jeden mniejsza niə w CMC,¢ MPT lub Delcie.¢④31 -cz❎stotliwo③⇨ odtwarzenia na ramk❎¢ Player nie zwaəa na t❎ komrk❎. To¢ jest informacja dla Ciebie!¢④$20-$5f -modsze bajty adresw instr.¢④$60-$9f -starsze bajty. Jeəeli po¢ zORowaniu daj⇧ 0, to znaczy, əe d♪wi❎k¢ jest pusty.¢④$a0-$11f -modsze bajty adresw patte-¢ rnw.¢④$120-$19f -starsze bajty.¢④$1a0-.... -dane songu. Kaəda pozycja w¢ songu zajmuje 16 bajtw. Jest to kole-¢ jno: transpozycja tracku 8, nr.patter-¢ nu graj⇧cego na tracku 8, nast❎pnie¢ jest podawany track 7 itd.¢④....-.... -dane instrumentw. S⇧ one¢ w formacie:¢ -21 razy trjka bajtw:¢ $ab, $cd ,$ef ,gdzie:¢ a- znieksztacenie d♪wi❎ku,¢ b- go③no③⇨ obwiedni podstawowej,¢ c- typ akcentu,¢ d- go③no③⇨ obwiedni dodatkowej,¢ ef- parametr akcentu,¢ -8 bajtw transpozycji,¢ -9 bajtw parametrw d♪wi❎ku.¢ W sumie 80 bajtw.¢④....-.... -dane patternw. Nast❎puj⇧ce¢ bajty oznaczaj⇧:¢ -0 -zmiana go③no③ci d♪wi❎ku, nast❎-¢ puj⇧ca za nim warto③⇨ jest negacj⇧¢ (EOR #$FF) go③no③ci uəywanej w TMC.¢ -1-$3f -graj nut❎ o tym numerze i¢ ustalonym wcze③niej instrumencie.¢ Nast❎puje po tym bajt go③no③ci.¢ -$40 -nowy parametr, jeəeli ten bajt¢ ma ustawiony najwyəszy bit, to nas-¢ t❎puje jeszcze za nim bajt zmiany¢ go③no③ci.¢ -$41-$7f -graj nut❎ o numerze zANDo-¢ wanym liczb⇧ $3f i ustalonym instru-¢ mencie. Nast❎puje za tym bajt para-¢ metru z ustawionym najwyəszym bitem¢ oraz bajt go③no③ci.¢ -$80-$bf -zmiana aktualnego instrume-¢ ntu. Uəywana przed rozkazem grania¢ nuty tylko przy faktycznej zmianie¢ instrumentu w patternie.¢ -$c0-$ff -linie puste w patternie.¢ $c0 to 1 linia pusta, $ff to puste¢ 64 linie, czyli innymi sowy koniec¢ danych patternu, gdyə dowolnie na¢ ktrej pozycji dotychczas si❎ znaj-¢ dowali③my dodanie do niej 64 powodu-¢ je wyj③cie poza dugo③⇨ patternu.¢ Kaədy pattern koczy si❎ tym bajtem,¢ nawet jeəeli na ostatniej pozycji¢ co③ si❎ znajduje. Najkrtszy pattern¢ (pattern pusty) skada si❎ tylko z¢ tego bajtu. Pattern najduəszy acz-¢ nie z tym bajtem ma 257 bajtw du-¢ go③ci.¢¢ I to tyle na temat oglnej obsugi¢programu. W pliku TMC2.DOC znajdziesz¢dokadny opis drugiej cz❎③ci programu.¢