★ APPLICATIONS ★ CREATION MUSICAL ★ Dem Computer zuhören ★ |
RSX Sound (Schneider Magazin) | Applications Creation Musical |
Hören Sie Ihrem Computer doch einmal beim Arbeiten zu! Die folgende RSX-Erweiterung SOUND gibt Ihnen die Möglichkeit dazu. Sie untersucht ständig eine von Ihnen gewählte Speicherstelle und erzeugt einen Ton, dessen Höhe von deren Inhalt abhängt. Besonders amüsant ist es, wenn die Speicherstelle ihren Wert häufig ändert. All dies geschieht im Hintergrund, während ein beliebiges anderes Programm abläuft. SOUND wurde auf dem CPC 464 entwickelt, funktioniert aber auch auf den anderen CPCs. Die RSX-Erweiterung enthält zwei Befehle: |SOUND.ON ,adresse Er schaltet den "Gesang” ein. Die angegebene Adresse wird 50mal je Sekunde abgefragt. Je nach Wert wird (bis zum nächsten Abfragetermin) ein Ton von 15625 Hz (bei 0) bis herunter zu 61,3 Hz (bei 255) erzeugt. Sie können die Adresse auch weglassen. In diesem Fall wird der vorherige |SOUND.ON-Befehl fortgesetzt, auch wenn Sie ihn mit |SOUND.OFF unterbrochen haben. |SOUND.OFF Dieser Befehl stellt, wie wohl leicht zu erraten, die Wirkung von |SOUND.ON ab. Das System wird durch einen |SOUND.ON-Befehl um etwa 4.5% verlangsamt. SOUND dient jedoch nicht nur der Unterhaltung. Sie können damit auch gezielt überwachen, ob eine bestimmte Speicherstelle von Ihrem Programm verändert wird oder nicht. Dies erleichtert speziell den Test von Maschinencodeprogrammen. Da SOUND ständig auf den Tonchip zugreift, werden normale SOUND-Befehle allerdings nur verstümmelt ausgeführt. Bei der Untersuchung der Speicherstelle wird grundsätzlich das RAM gewählt, da SOUND im ROM wenig Sinn hätte. (Ein ROM-Speicherplatz kann seinen Wert ja nicht ändern; es entstünde also ein Ton konstanter Höhe.) Auf Speichererweiterungen wird keine Rücksicht genommen; SOUND liest immer aus der gerade selektierten RAM-Bank. Eintipphilfe Geben Sie zunächst das Basic-Programm (Listing 1) ein und speichern Sie es ab. Anschließend ist mit RUN zu starten. Der Maschinencode wird unterhalb von HIMEM angelegt und HIMEM entsprechend geändert (Zeile 20). Die absoluten Adressen erfahren ihre Anpassung in Zeile 100. In Zeile 120 erfolgt die Initialisierung der RSX. Diese 9 Byte werden nun nicht mehr benötigt, daher der zweite MEMORY-Befehl. Der Speicherbedarf von SOUND beträgt somit 116 — 9 = 107 Byte. Zeile 10 ermöglicht nachfolgende SYMBOL-AFTER-Befehle. Zeile 140 verhindert eine mehrfache Initialisierung. Sie können den Code an beliebigen Stellen (zwischen &4000 und &BFFF) unterbringen, wenn Sie die Zeilen 10,20 und 120 entsprechend ändern. Allerdings muß der Bereich auch frei sein! Für Assembler-Programmierer SOUND arbeitet mit einem Bildrücklaufereignis. Die entsprechende Routine liest die Speicherstelle, multipliziert den Wert mit 8, um eine brauchbare Tonperiode zu erhalten, und beauftragt den Soundchip, einen entsprechenden Ton zu erzeugen. |SOUND.ON schreibt die übergebene Adresse (wenn vorhanden) direkt in den Lesebefehl der erwähnten Routine und trägt das Ereignis in die sogenannte Bildaufbauliste ein. Von nun an wird die Ereignisroutine vom Betriebssystem 50mal je Sekunde aufgerufen. |SOUND.OFF löscht das Ereignis aus der Bildaufbauliste und setzt den Soundchip still. Interessante Adressen Folgende Adressen für den CPC 464 haben sich als recht reizvoll erwiesen: B187 bis B18A enthält die Systemuhr. B187 ist dabei das niedrigstwertige Byte. Ab AE36 findet sich der Basic-Programmzähler. Hier können Sie einem entsprechenden Programm zuhören. Überhaupt liegen in dieser Gegend viele System-variablen von Basic. Von B173 bis B186 sind auch sehr interessante Töne zu hören. Den Bereich ab ca. B500 belegt die Tastaturverwaltung. B53F enthält z.B. einen Zähler, der bei jedem Tastendruck (bei jedem erfolgreichen Aufruf von KM Read Char) erniedrigt wird. Georg Beran, Schneider Magazin
|