Ready/Run

Takie sobie archiwum listingów ze starych magazynów komputerowych


Muzyka w przerwaniach
  • Język programu: Basic
  • Platforma: Atari XE/XL
  • Kod zamieszczono w Bajtek 12/1988
  • Autor listingu: Maciej Rempiński
  • Listing nadesłał: Amarok

Stan listingu:

4
Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku

Dzięki wiadomościom zawartym w „Bajtku" przestałem bać się przerwań i napisałem program w języku maszynowym, który jest wykonywany co 1/50 sekundy w czasie przerwania synchronizacji pionowej. Opracowana przeze mnie procedura może wykonywać proste melodie (do 93 nut), lecz nie przeszkadza w normalnej pracy Basica. Można więc wykorzystać ją do uzyskania podkładu muzycznego we własnym programie, zaś przy pisaniu programu może ona umilić pracę.
Dla uzyskania takiego efektu trzeba wpisać zamieszczony program i uruchomić go. Program ten jest potem zbędny i można go skasować instrukcją NEW. Przerwanie pracy programu następuje po naciśnięciu klawisza RESET lub po wpisaniu POKE 548, 138: POKE 549, 194. Ponowne włączenie muzyki uzyskuje się po wpisaniu POKE 548, 0: POKE 549, 6. Jeśli chcemy uzyskać inną melodię, to trzeba wpisać do komórki 1541 liczbę nut pomnożoną przez 2 (maksymalnie 186), a do komórki 1582 wielkość pauzy między nutami (maksymalnie 255). Teraz jest to odpowiednio liczba 132 w wierszu 90 i trzecia liczba 0 w wierszu 100. Następnie trzeba zmienić zawartość instrukcji DATA od wiersza 120. Kolejno trzeba tam wpisać dla każdej nuty wysokość dźwięku (wartości takie jak w instrukcji SOUND) i czas jego trwania. Na końcu w wierszu 70 wpisujemy graniczną wartość pętli FOR/NEXT odpowiednią dla liczby nut wprowadzonych do instrukcji DATA. Dla Czytelników zainteresowanych programowaniem w języku maszynowym podaję dodatkowo źródłowy wydruk procedury w asemblerze MAC/65.

Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

Jak zaladować (najprostsza metoda)

ALTIRRA: 

  • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
  • Cold Reset (Powinien wejść do Basica)
  • LOAD "D0:MUZYKA.BAS"
  • RUN