BASIC-Tutorial (Vorwort, Installation, Kapitel 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

Sound, Shell, CHR$ und ASC

10.1. Tonausgabe

Zur Tonausgabe stehen in BASIC drei Befehle zur Verfügung: BEEP, SOUND und PLAY.

BEEP gibt lediglich einen Standardton (typisches Geräusch des Board-Lautsprechers) aus, wobei SOUND die Angabe der Frequenz (in Hertz) und Dauer (in Millisekunden; 1 Sekunde = 1000 Millisekunden) verlangt.

BEEP braucht lediglich aufgerufen werden:

BEEP

SOUND hat hingegen die folgende Syntax:

SOUND Frequenz, Tondauer

Zum Beispiel ...

SOUND 100, 1000

... gibt einen Ton mit einer Frequenz von 100 Hz (Hertz) 1000 ms (Millisekunden; 1000 ms = 1 sec) lange aus.

PLAY bietet die Möglichkeit, Noten abzuspielen. Aufgrund seiner Komplexität werde ich diesen Befehl nicht näher erklären. Eine kurze Erklärung liefern Thomas Antoni und Frank Neumann in ihrem Tutorial SelfQB (Kap. 17).

10.2. Externe Programme und Shell-Kommandos ausführen

SHELL erlaubt es, Befehle (Kommandos) direkt an die DOS-Eingabeaufforderung zu übergeben:

SHELL Kommando

Beachten Sie, dass Sie den Befehl unter Anführungszeichen (weil ein String!) schreiben müssen, z.B.

SHELL "DIR"

... hätte zur Folge, dass das BASIC-Programm während seines Ablaufs die Dateien anzeigen würde, die sich im aktuellen Verzeichnis befinden. Wenn Sie DIR unter DOS eintippen, hätte das genau die gleiche Wirkung. Nachdem die Dateien angezeigt wurden, läuft das Programm normal weiter (die Ausführung wird fortgesetzt).

Wenn Sie SHELL ohne Parameter aufrufen, gelangen Sie zur DOS-Eingabeaufforderung. Erst nachdem Sie EXIT eingegeben haben, geht die Programmausführung weiter.

10.3. Umwandlungen in ASCII-Code und retour (ASC und CHR$)

Exkurs: ASCII-Code (Grundlagen)

ASCII (Abk. für American Standard Code for Information Interchange) ist ein 7-Bit-Zeichensatz. Mit 7 Bits lassen sich 128 verschiedene Zeichen (27 = 128) darstellen.

Stellen Sie sich eine Menge von Zeichen vor: Buchstaben, Ziffern, Sonderzeichen, usw. Diese sind im ASCII-Zeichensatz definiert. Das bedeutet, dass jedem Zeichen ein Code zugeordnet wird, der sog. ASCII-Code. Das Zeichen a hat beispielsweise den Code 97 (dezimal), das große A hingegen den Code 67 (dezimal).

Daneben existiert der sog. Erweiterte ASCII-Code, der 8 Bit nutzt, somit 28 = 256 Zeichen darstellen kann. Die ersten 7 Bits (dezimal 0 bis 127) stimmen mit dem ursprünglichen ASCII-Code überein. Darüber (dezimal 128-255) werden Sonderzeichen, Blockzeichen und auch die deutschen Umlaute definiert.

Viele heute gängige Zeichensätze sind zu ASCII abwärtskompatibel, d.h. dass die ersten (niederwertigsten) 7 (bzw. 8 Bit) mit ASCII übereinstimmen.

Eine ASCII-Tabelle finden Sie bei GoAscii.de.

Mit ASC und CHR$ den ASCII-Code oder das zugehörige Zeichen anzeigen

CHR$ liefert das zugehörige Zeichen zu einem bestimmten ASCII-Code, ASC (Kurzform für ASCII) macht genau das Gegenteil: ASC liefert den ASCII-Code zu einem Zeichen.

CHR$ können Sie wie folgt verwenden:

CHR$ (ASCII-Code)

CHR$ ist eine Funktion (kein Sprachelement), als Rückgabewert wird das Zeichen eines ASCII-Codes geliefert.

Für ASC gilt:

ASC (Zeichen)

Wie CHR$ ist auch ASC eine Funktion. Das nächste Beispiel gibt alle ASCII-Codes mit Ausnahme der Codes bis 32 auf dem Bildschirm aus. Die ersten 33 Codes (0-32) sind keine darstellbaren Zeichen, sondern Steuerzeichen. Beispielsweise sorgt das Zeichen mit dem Code dezimal 7 dafür, dass ein Ton ausgegeben wird. Gleiches erhalten Sie wenn Sie BEEP aufrufen (entspricht PRINT CHR$(7)).

CLS
FOR i = 33 TO 255
   PRINT i; CHR$(i)
NEXT i
Vorheriges Kapitel Nächstes Kapitel