Tajemnice ATARI

E=cmc2


    W 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



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2002