E=cmc2W jednym z poprzednich numerów TA opisywałem procedurę odgrywania muzyczki z poziomu assemblera. Użytkownikom BASIC-a przedstawiłem rozwiązania kilku najczęściej występujących problemów, nie zajmując się sposobami odgrywania muzyczki z poziomu BASIC-a. Uważałem, że odgrywaczka dołączona w zestawie jest wystarczjąca. Niestety, nie udało się. Otrzymałem sporo listów z posądzeniem o dyskryminację programistów wysokiego poziomu. Muszę nadrobić tę zaległość. Załadujmy plik.Aby to uczynić, należy podać adres początku nazwy pliku jako parametr dla funkcji USR. Aby np. załadować do pamięci muzyczkę ENOLA.CMC i moduł MODULE.REP piszemy taki programik:10 REM Czytaj Pliki 15 DIM NAZWA$(15):SERV=36864 20 NAZWA$="D1:ENOLA.CMC" 25 REM dla magnetofonu NAZWA$="C:" 30 AD=ADR(NAZWA$) 35 MUZ=USR(SERV,AD) 40 REM teraz odtwarzacz 45 NAZWA$="MODULE.REP" 50 REM dla magnetofonu NAZWA$="C:" 55 MOD=USR(SERV,AD)Należy pamiętać, aby przed wykonaniem tego programiku został wykonany program zamieszczony obok, który umieszcza potrzebne dane w pamięci. Po prawidłowym wykonaniu powyższego fragmentu zmienne MUZ i MOD zawierać będą odpowiednio adres muzyczki i modułu odtwarzającego. Adresy te potrzebne są dla odgrywacza. Włączmy muzyczkę.Aby rozpocząć odgrywanie muzyczki należy dopisać kolejną linię programiku:60 GRAJ=USR(SERV,MUZ,MOD)Przywróćmy błogą ciszę. A robi się to tak: 65 POKE 764,255 70 IF PEEK(764)=255 THEN 70 80 STOP=USR(SERV)W ten sposób działa program. Rodzaj operacji (ładowanie, odgrywanie, zatrzymanie) zależy od ilości parametrów, które przekazujemy razem z funkcją USR. I tak: Brak parametrów oznacza, że trzeba wyłączyć muzyczkę, ale uwaga: nie należy używać tej funkcji bez uprzedniego włączenia muzyczki. Jeden parametr oznacza, że trzeba ładować plik o nazwie, która jest przechowywana pod adresem przez ten parametr wskazywanym. Dwa parametry oznaczają, że należy grać muzyczkę, która zawarta jest pod adresem wskazywanym przez pierwszy parametr, korzystając z modułu, który umieszczony jest pod adresem wskazywanym przez parametr drugi. Zaletą takiego postępowania jest to, że nie trzeba pamiętać wielu adresów do poszczególnych procedur. 0 REM *---------------------------* 1 REM : CMC Player 1.3 : 2 REM : autor: Marek Pasek : 3 REM : (c) 1993 Tajemnice ATARI : 4 REM *---------------------------* 10 I=36864:TRAP 20 15 READ A:POKE I,A:I=I+1:GOTO 15 20 ? "Gotowe.":END 110 DATA 104,240,105,201,1,240,126 120 DATA 104,141,61,145,104,141,60 130 DATA 145,104,141,59,145,104,141 140 DATA 58,145,173,60,145,24,105,3 150 DATA 141,78,144,141,84,144,141 160 DATA 124,144,173,61,145,105,0,141 170 DATA 79,144,141,85,144,141,125 180 DATA 144,173,60,145,24,105,6,141 190 DATA 128,144,173,61,145,105,0,141 200 DATA 129,144,174,58,145,172,59 210 DATA 145,169,112,32,77,144,162,0 220 DATA 138,32,83,144,173,36,2,141 230 DATA 131,144,173,37,2,141,132,144 240 DATA 160,127,162,144,169,7,32,92 250 DATA 228,96,172,131,144,174,132 260 DATA 144,169,7,32,92,228,169,64 270 DATA 162,0,32,123,144,96,32,127 280 DATA 144,76,98,228,104,141,69,145 290 DATA 104,141,68,145,162,16,32,50 300 DATA 145,169,3,157,66,3,173,68 310 DATA 145,157,68,3,173,69,145,157 320 DATA 69,3,169,4,157,74,3,169,128 330 DATA 157,75,3,32,86,228,192,1,208 340 DATA 119,169,7,157,66,3,169,62 350 DATA 157,68,3,169,145,157,69,3 360 DATA 169,6,157,72,3,169,0,157,73 370 DATA 3,32,86,228,173,62,145,201 380 DATA 255,208,7,173,63,145,201,255 390 DATA 240,3,76,43,145,173,64,145 400 DATA 133,212,173,65,145,133,213 410 DATA 169,7,157,66,3,173,64,145 420 DATA 157,68,3,173,65,145,157,69,3 430 DATA 173,66,145,56,237,64,145,141 440 DATA 66,145,173,67,145,237,65,145 450 DATA 141,67,145,173,66,145,24,105 460 DATA 10,157,72,3,173,67,145,105,0 470 DATA 157,73,3,32,86,228,192,136 480 DATA 240,7,192,1,240,3,32,86,245 490 DATA 32,50,145,96,169,12,157,66,3 500 DATA 76,86,228,0,112,0,96,97,116 510 DATA 116,97,99,107,0,0 Marek Pasek
|