C 64
Anwendung des Monats

Sprache und Musik digitalisieren

Sprache und Musik aus dem Computer — Diese billig und problemlos aufzubauende Schaltung erfüllt einen langgehegten Traum von vielen Computer-Benutzern.

Farbfoto mehrerer Platinen und zweier stilisierter Ohren auf dunklem Grund

Wir präsentieren Ihnen eine Schaltung zur Digitalisierung von Tönen, die sich mit relativ geringem Hardware-Aufwand und preisgünstig (Kosten: etwa 20 bis 30 Mark) realisieren läßt (Bild).

Mit dieser Schaltung und dem dazugehörigen Steuerprogramm (Basic-Erweiterung) können Sie auf sehr einfache und komfortable Weise Toninformationen, die zum Beispiel aus Ihrem Radiogerät stammen können, in den Computerspeicher einlesen. Die Länge der eingelesenen Musikdaten schwankt je nach Abtastrate (Qualität des aufgenommenen Signals) zwischen 14 und 45 Sekunden.

Ist nun der Speicher mit einer Toninformation gefüllt, kann das im Computer gespeicherte Signal auf vielfältige Weise bearbeitet und wiedergegeben werden.

Möglich sind komplizierte Effekte wie das Verändern der Wiedergabetonhöhe und Abspielgeschwindigkeit. RAP ECHO oder HALL sind ebenso wie das planlose Wiedergeben oder Wiederholen bestimmter Teile der Musikinformation möglich. Alles dies erfolgt sowohl im Direktmodus als auch aus einem Programm heraus.

Dieses Beispiel führt jedem Computerbenutzer wieder einmal die Fähigkeiten und Möglichkeiten vor, die eine so leistungsfähige »Maschine« wie den C 64/ C 128 zum meistverkauften Heimcomputer dieser Zeit machen. Es ist immer wieder aufs Neue erstaunlich, wie viel sich auch nach so »langer« Zeit, die dieser Computer schon existiert, noch aus seinem System herausholen läßt. Noch sind seine Fähigkeiten nicht ausgeschöpft.

(K. Köhntopp/D. Diezemann/dm)

Lassen Sie Ihren Computer sprechen. Diese mit wenig Aufwand und geringen Kosten realisierte Schaltung ermöglicht Ihnen ein komfortables Digitalisieren von Tönen. Die Wiedergabe können Sie durch viele Möglichkeiten beeinflussen.

Speech-Basic besteht aus einer kleinen Schaltung, nämlich einem 2-Bit-Tondigitalisierer und einer 4 KByte langen Basic-Erweiterung. Beides zusammen ermöglicht das einfache und komfortable Arbeiten mit Sprache und Musik am Commodore 64. Die Speech-Basic-Befehle unterstützen sowohl das Arbeiten im Direktmodus (zum Aufnehmen und einfachen Abspielen von akustischen Signalen) als auch im Programm. Damit sind sogar komplizierte Effekte wie RAP ECHO und HALL ohne großen Aufwand möglich. Der maximal 57,5 KByte große Tonspeicher von Speech-Basic ist bei größter Aufnahmegeschwindigkeit in etwa 14 Sekunden voll. Doch selbst wenn diese Zeit bis auf 45 Sekunden gestreckt wird, sind noch Aufnahmen möglich, die in der Qualität deutlich (!) über dem SAM-Sprachsynthesizer liegen. Und das alles mit einer Schaltung, die etwa 20 Mark kostet und einfach nachzubauen ist.

Nachbau der Schaltung

Ein Aufbau auf einer Epoxid-Platine mit dem beiliegenden Layout (Bild 1) wäre am einfachsten, zur Not genügt auch eine Lochraster-Platine in »losem« Aufbau. Gebohrt wird mit einem 0,8-mm-Bohrer, wobei zu beachten ist, daß die Löcher für den Trimmer etwas größer sein müssen. Als erstes wird man die Widerstände liegend einlöten. Dann kommen die Kondensatoren. Bei den beiden Tantal-Perlen ist auf die richtige Polung zu achten. Der Minuspol des 10-µF-Kondensators zeigt nach außen, der des 1-µF-Kondensators zum LM 324 (siehe Bestückungsplan Bild 2). Nachdem der Trimmer seinen Platz gefunden hat, wird der Stecker aufgesteckt und festgelötet. Die 4polige Leiste befindet sich auf der Kupferseite. Der Konstruktion kann mit einigen Tropfen Superkleber etwas mehr Festigkeit verliehen werden.

Platinen-Layout der Digitizer-Schaltung, schwarze Leiterbahnen auf weißem Grund
Bild 1. Das Layout der Schaltung im Maßstab 1:1 (spiegelverkehrt)
Bestückungsplan der Digitizer-Platine mit eingezeichneten Bauteilen und Beschriftungen
Bild 2. Der Bestückungsplan des Digitizers (Oberseite)

Nun kommen die Drahtbrücken. Zwei verlaufen vom Stecker (Pin 1 und 2) zur Platine, die dritte ist auf der Platine zwischen LM 324 und 74LS14. Die vierte Brücke führt vom Minuspol des 1-µF-Kondensators zum Massepol des Einganges. An den Eingang kommt ein 2poliges Kabel.

Wer das Gerät an einen Stereo-Ausgang anschließen will, kann entweder einen Kanal benutzen (wobei Toninformationen verlorengehen) oder beide Kanäle zusammenschalten. Dies sollte nicht durch direkten Kurzschluß beider Phasen geschehen, sondern die zweite Phase muß über einen 44-nF-Kondensator zum Mittelabgriff des Trimmers geführt werden. Zum Schluß löten Sie die drei IC-Fassungen ein. Beim Einsetzen der ICs ist darauf zu achten, daß der LM 324 mit der Kerbe zum Eingang zeigen muß, die beiden anderen ICs zeigen anders herum.

Wer keine Möglichkeit hat, sich Platine und Bauelemente zu besorgen, kann das fertig aufgebaute und getestete Gerät mit Programmdiskette und Demo-Dateien für 60 Mark bei folgender Adresse beziehen:

Daniel Diezemann
Dammstraße 42
2300 Kiel 1
Telefon: 0431/94424

Stückliste

Halbleiter:
1 LM 324 N
1 74 LS 14
1 74 LS 00
Kondensatoren:
1 5.6nF
1 47nF
1 1µF/16V Tantal
1 10µF/16V Tantal
Widerstände: (alle 1/4 Watt, 5%)
2 470 Ohm
2 12 kOhm
2 18 kOhm
2 22 kOhm
Trimmpoti: 1 kOhm, liegend
Sonstiges:
1 Platine
3 IC-Fassungen, 14polig
1 Joystick-Buchse, 9polig
1 2adriges Anschlußkabel
1 Stecker zum Anschluß an Tonquelle, mono

Funktionsprinzip

Töne sind Dichteänderungen in der Luft mit einer Frequenz zwischen zum Beispiel 20 und 15000 Hertz. Damit Computer überhaupt mit Tönen arbeiten können, ist es notwendig, diese Dichteänderungen in eine für das Gerät meßbare Größe umzusetzen. Diese Aufgabe übernimmt etwa ein Mikrofon, indem es Dichteschwankungen in entsprechende Spannungsschwankungen umsetzt. Ein Digitalisierer hat jetzt die Aufgabe, das analoge, unendlich fein gestufte Signal in ein digitales, endlich fein gestuftes Signal umzusetzen (Bild 3). Je größer die Auflösung des Digitalisierers ist, desto feiner sind diese Stufen, desto besser ist also die Qualität bei einer späteren Wiedergabe. Leider ist der Speicherplatzverbrauch aber auch um so höher. Wir glauben, mit einer Auflösung von zwei Bit, also vier Werten, den besten Kompromiß zwischen Speicherkapazität des Computers und Widerstandsfähigkeit der Ohren gefunden zu haben.

Diagramm, das eine stufenlose Analogkurve einer treppenförmigen Digitalkurve gegenüberstellt
Bild 3. Sie erkennen deutlich den Unterschied zwischen Analog/Digital

Der Speech-Basic-Digitalisierer ist an den Kopfhörerausgang eines Diktiergerätes, eines Walkmans, eines Radiorecorders oder einer Stereoanlage anzuschließen. Das analoge Signal wird vom Digitalisierer in einer Kette von drei Operationsverstärkern in vier Werte aufgeteilt. Der nachgeschaltete, invertierende Trigger sorgt dann für saubere und definierte Pegel. Im letzten IC werden die drei Signale noch zu zwei Bit zusammengefaßt, wobei folgende Zuordnungstabelle Anwendung findet:

111 wird zu 00 = Wert 1
110 wird zu 01 = Wert 2
100 wird zu 10 = Wert 3
000 wird zu 11 = Wert 4

Die Schaltung führt diese zwei Bit jetzt zum Joystick-Port 2 als Joystick UP und Joystick DOWN. Dort werden diese beiden Bit dann bis zu 18000 mal pro Sekunde gelesen und zu je vier in einem Byte abgespeichert. Die spätere Wiedergabe erfolgt über das Lautstärkeregister $D418 des Sound-Chips, dafür ist die Schaltung also nicht notwendig. Dabei kann jeder der vier Digitalisierungsstufen eine beliebige Lautstärkestufe zugeordnet werden. Durch dynamische Änderung dieser Zuordnungstabelle sind dann die oben erwähnten Echo- und Halleffekte möglich.

Das erste Mal

Bevor die erste Aufnahme gemacht werden kann, sollte die Hardware einem Funktionstest und einem Abgleich unterzogen werden. Dazu ist die Basic-Erweiterung »Speech-Basic« (Listing 1, bitte mit dem MSE eingeben) und ein C 64 oder C 128 und ein Schraubendreher nötig.

Schalten Sie Ihren Computer aus und stecken Sie den Digitalisierer in den Joystick-Port 2, jedoch noch nicht an eine Tonquelle. Schalten Sie das Gerät wieder ein. Reagieren noch alle Tasten? Sehr gut! Dann haben Sie schon einmal keine groben Fehler beim Aufbau der Schaltung gemacht. Laden Sie jetzt das Programm Speech-Basic mit

LOAD "SPEECH-BASIC",8

und starten Sie es mit RUN. Der Computer sollte sich sofort mit der Meldung »C 64 SPEECH SYSTEM V2.7« zurückmelden. Speech-Basic meldet sich immer im Kleinschriftmodus. Sollte dies einmal nicht der Fall sein (besonders nach <RUN-STOP+RESTORE>), kann durch den Befehl RESET eine Neuinitialisierung ohne Programmverlust durchgeführt werden. Da einige Commodore-Computer eine stark prellende RESTORE-Taste besitzen, kann es sein, daß der Restore mittendrin wieder abgebrochen wird. RESET bringt den Computer wieder in einen definierten Zustand.

Ordnen Sie jetzt den vier Digitalisierungsstufen mit dem Befehl COLDEF 0,11,12,15 vier gut unterscheidbare Farben zu (in diesem Beispiel vier Grautöne). Wenn Sie jetzt den Befehl HEARSPEED l eingeben, gelangen Sie in den Mithörmodus. Der Bildschirm sollte abgeschaltet sein (wie beim Kassettenbetrieb) und eine der vier definierten Farben zeigen. Wenn Sie das Potentiometer auf der Platine vom ganz linken Anschlag bis an den ganz rechten Anschlag drehen, sollte der Bildschirm nacheinander die vier definierten Farben in der Reihenfolge der Definition annehmen. Ist dies der Fall, arbeitet die Schaltung einwandfrei.

Zum Abgleich drehen Sie das Potentiometer ganz langsam und gefühlvoll wieder nach rechts, wobei Sie den Bildschirm im Auge behalten sollten. Wenn die Bildschirmfarbe gerade von Farbe 3 auf Farbe 2 (im Beispiel von mittelgrau auf dunkelgrau) umspringt, ist die Schaltung richtig eingestellt. Sie kann jetzt negative Auslenkungen ungefähr genauso gut umsetzen wie positive.

Achten Sie jedoch darauf, daß Sie Ihren Digitalisierer nicht genau auf den Umschaltpunkt zwischen Stufe 2 und 3 einstellen. Der Bildschirm darf also nicht von selbst zwischen dunkel- und mittelgrau hin- und herspringen. Sonst bekommen Sie später bei der Aufnahme ein störendes Rauschen an den leisen Stellen. Den Mithörmodus beenden Sie durch Drücken der Leertaste.

Einlesen von Ton

Speech-Basic selbst belegt den Speicherbereich von $0800 (2048) bis $1800 (6144). Daran schließt sich direkt der Speicherbereich für Basic-Programme und Variablen an. Dessen obere Grenze heißt HIMEM und liegt normalerweise bei $A000 (40960), kann jedoch mit dem gleichnamigen Befehl innerhalb sinnvoller Bereiche verändert werden. Der Speicherbereich für akustische Signale erstreckt sich dann von HIMEM bis (fast) zum physikalischen Ende des Speichers. Durch Verändern von HIMEM kann man also den Speicher zwischen Basic-Programm und Ton aufteilen. Für das Arbeiten im Direktmodus hat es sich als sinnvoll erwiesen, den Tonspeicher so groß wie möglich zu machen. Mit dem Befehl HIMEM $1A00 reserviert man sich zirka 57,5 Kilobytes für den Tonspeicher. Für das Basic-Steuerprogramm stehen noch 512 Byte zur Verfügung. Sollte Ihnen die aktuelle Speicheraufteilungim Moment entfallen sein, können Sie sich diese durch den Befehl MEM auf den Bildschirm holen.

Weiterhin sollten für die Aufnahme die Zuordnungstabellen der Farbwerte und der Lautstärkewerte sinnvoll belegt sein. Dies geschieht mit den Befehlen COLDEF 0,11,12,15 und VOLDEF 0,5,10,15. Sie können selbstverständlich auch eigene Werte einsetzen. Spulen Sie jetzt die Musikkassette an die gewünschte Stelle und drehen Sie die Lautstärke und die Bässe ganz auf null herunter. Der Digitalisierer muß für die Aufnahme natürlich sowohl an den Computer als auch an den Verstärker angeschlossen sein.

Geben Sie

HEAR:RECORD SPEED 1

(Funktionstaste 4) ein. Der Computer befindet sich jetzt wieder im Mithörmodus, diesmal ist es jedoch ernst! Starten Sie den Musikrecorder und drehen Sie die Lautstärke langsam höher. Achten Sie auf den Klang und auf die Verteilung der Streifen auf dem Bildschirm. Sie werden feststellen, daß der Klang meistens dann am besten ist, wenn alle vier Farben ungefähr gleich stark auf dem Bildschirm vertreten sind. Spielen Sie jetzt ein wenig mit dem Baßregler. Sie werden feststellen, daß zu starke Baßimpulse den Klang »zudecken«. Finden Sie die richtige Einstellung für den Baßregler und merken Sie sich diese. Wenn Sie glauben, daß die Aussteuerung für dieses Stück optimal ist, spulen Sie den Musikrecorder zurück und starten Sie erneut. Sobald Sie die Leertaste drücken, beginnt Speech-Basic damit, die gelesenen Werte auch in den Speicher zu übertragen. Nach ungefähr 14 Sekunden ist der Speicher voll und der Computer meldet sich wieder. Sie können die Aufnahme (und genauso die Wiedergabe) jedoch jederzeit mit Druck auf <RESTORE> (ohne <RUN/STOP>) abbrechen. Wenn Sie dabei im Direktmodus waren, bekommen Sie sogar noch die Abbruchadlresse angezeigt.

Wollen Sie nicht den gesamten Speicher füllen, können Sie beim RECORD-Befehl auch einen Adreßbereich mit angeben. Die vollständige Syntax für RECORD lautet

RECORD FROM anf TO end SPEED x

mit anf und end größer HIMEM und x größer 0. Die Wiedergabe von akustischen Signalen geschieht mit dem PLAY-Befehl (Funktionstaste 3), dessen Syntax der von RECORD entspricht. Mehr darüber später.

Diskettenoperationen

Da Speech-Basic gerade den RAM-Bereich unter den beiden ROMs besonders intensiv nutzt, mußten die LOAD- und SAVE-Routinen neu geschrieben werden. Die neuen Befehle heißen BLOAD und BSAVE und speichern immer den RAM-Inhalt ab. Beide Befehle arbeiten nur mit Diskettenstationen zusammen, da es ziemlich unsinnig wäre, 60 KByte auf Band speichern zu wollen. Um den gesamten Tonspeicher auf Diskette zu speichern, genügt es, »BSAVE "name "« anzugeben. Die vollständige Syntax lautet hier jedoch

BSAVE "name",dv FROM anf TO end

Die Parameter können von hinten nach vorne weggelassen werden.

Die Syntax des BLOAD-Befehles ist mit der von BSAVE identisch. Hier gibt anf die Adresse an, an die die Daten geladen werden sollen. Fehlt sie, werden die Daten an die Originaladresse, von der sie gespeichert wurden, geladen. Der . Wert end gibt einen Maximalwert an, der nicht überschritten wird. Ist die Datei länger als end, werden die überstehenden Bytes ignoriert. Dadurch ist eine vollständige Kontrolle des Ladevorganges möglich.

Weiterhin unterstützt Speech-Basic die Diskettenbefehle DISK und DIR zum Senden von Diskettenbefehlen und zur Anzeige des Inhaltsverzeichnisses der Diskette. Die Syntax dieser Befehle entnehmen Sie bitte der tabellarischen Befehlsübersicht.

Das Isolieren von Worten — Die Blocktabelle

Es ist relativ einfach mit Speech-Basic einzelne Worte, Sätze oder andere Tonteile zu finden und zu isolieren. Dazu sollte man den betreffenden Speicherbereich zweimal mit PLAY abspielen und je einmal vor und hinter dem gewünschten Wort oder Satz die <RESTORE>-Taste bemühen. Dann hat man schon ungefähr die Anfangs- und Endadresse des Speicherblockes mit dem betreffenden Wort. Jetzt kann man sich diesen Bereich mit

FROM anf TO end

anhören, die Grenzen noch ein wenig verschieben, sinnvollerweise seitenweise (also in 256-Byte-Schritten), bis man das Wort genau hat. Es ist aber sehr umständlich, die so gefundenen, mitunter recht »krummen« Zahlenwerte jedesmal wieder neu einzugeben. Viel sinnvoller ist es, diese Adressen in einem BLOCK zu hinterlegen und sich fortan nur noch auf diesen Block zu beziehen.

Ein sogenannter Block wird mit dem gleichnamigen Befehl definiert. Die Syntax lautet

BLOCK x (FROM anf (TO end)) (str)

wobei anf und end die schon bekannten Anfangs- und Endadressen sind; str ist ein beliebiger, maximal acht Zeichen langer Kurzkommentar. Die Blocknummer x kann sich zwischen 1 und 31 bewegen. Dabei ist der Block Nummer 30 mit dem Adreßbereich der Funktionstastenbelegung vorgegeben, so daß diese leicht gespeichert werden kann. Block Nummer 31 enthält die Blocktabelle selbst, damit sich auch diese speichern läßt. Der Block Nummer 0 kann, obwohl er existiert, nicht definiert werden. Er stellt immer die Anfangs- und Endadtresse des letzten BLOAD-Befehles zur Verfügung.

Immer und überall, wo man eine Anfangs- und Endadresse im Format FROM anf TO end angeben darf, kann man statt dessen auch einen Block im Format BLOCK x angeben. Speech-Basic setzt dann die Anfangs- und Endadresse des Blocks ein. Dies ist der Fall beiden Befehlen PLAY, RECORD, BLOAD, BSAVE, MON und beim BLOCK-Befehl selbst. So ist zum Beispiel folgende Zeile möglich:

BLOCK 1 BLOCK 0 "Guten Tag"

um die Anfangs- und Endadressen der soeben geladenen Worte »Guten Tag« zu retten und so den Block 0 für den nächsten Ladevorgang frei.zu machen. Genauso ist die Konstruktion

BSAVE "f-tasten",8 BLOCK 30

syntaktisch einwandfrei. Das Löschen der Blocktabelle geschieht mit der Schleife

FOR x=1 TO 29:BLOCK x "":NEXT x

Da sowohl die Anfangs- als auch die Endadresse fehlen, werden automatisch die kleinste (HIMEM) und die größte ($FFF8) verfügbare Adresse eingesetzt.

Ansehen kann man sich die Blocktabelle jederzeit mit MAP x-y. Die Syntax ist dieselbe wie bei LIST, also etwa MAP 10, MAP -10 und so weiter. Das Wort BLOCK liegt im übrigen auf der Funktionstaste 6; wenn man sich die gesamte Blocktabelle ansehen will, genügt ein Druck auf <F6> und <RETURN>, denn BLOCK ohne alle Parameter entspricht dem Befehl MAP 0-31. Dadurch wird verhindert, daß man einen Block unbeabsichtigt löscht.

Spezialeffekte — als Programm und als Makro

Hat man erst mal einzelne Worte isoliert, ist es ein leichtes, Spezialeffekte zu programmieren — und das ist das einzige, wozu man den Programmodus noch braucht. Alle anderen Arbeiten erledigt man besser im Dialog. Der einfachste Effekt ist der Rap- oder Breakeffekt, also das mehrmalige Wiederholen von Worten oder Silben. Man definiert sich einfach das zu wiederholende Wort (2), den Satzteil davor (l)und den Teil dahinter (3) als Blöcke. Dann läßt man das Ganze im einfachsten Fall in der Reihenfolge 1,2,2,3 vorsprechen (Listing 2). Dabei kann dann noch die Geschwindigkeit der Wiedergabe verändert werden $scratching«, Listing 3).

Definiert man das Ende (das heißt die letzte Silbe) eines Satzes als Block und wiederholt ihn am Ende mehrmals mit geringer werdender Lautstärke, erzielt man einen Echo- oder Halleffekt (Listing 4). Dabei wird schnell ein Nachteil deutlich: immer wenn ein Befehl beendet ist, blitzt der Bildschirm kurz auf. Außerdem gibt esjedesmal eine kurze, aber hörbare Unterbrechung im Tonablauf eines solchen Jingles. Abhilfe schafft hier der EXEC-Befehl. EXEC kennt nur einen Parameter, einen Kommandostring, der beliebig viele Buchstaben-Befehle enthalten kann. Das Programm 10 PLAY BLOCK 1 SPEED 1

10 PLAY BLOCK 1 SPEED 1
20 PLAY BLOCK 2:PLAY BLOCK 2
30 PLAY BLOCK 3

läßt sich so zu

EXEC "s1p1p2p2p3@"

zusammenfassen. Dabei wird der String wesentlich schneller abgearbeitet als das Programm, außerdem bleibt der Bildschirm bis zur vollständigen Abarbeitung des Strings abgeschaltet.

Sie wissen jetzt, wie man mit Speech-Basic arbeitet und was man mit Speech-Basic erreichen kann. Sie sollten trotzdem die folgende formale (und daher etwas trockene) Befehlsbeschreibunglesen oder zumindest überfliegen. Zum einen finden Sie dort noch weitere Befehle erklärt, die bisher nicht verwendet worden sind, zum anderen entdecken Sie dort ' noch viele wichtige Hinweise, wo Fehler zu suchen sind.

Befehlsliste nach Sachgruppen

Die Befehle in dieser Liste sind nach Sachgruppen geordnet. In der Befehlsbeschreibung bedeuten Großbuchstaben Befehlsworte, Kleinbuchstaben Parameter. Klammern dürfen nicht mit eingegeben werden, sondern geben Parameter an, die weggelassen werden dürfen. »Str« ist, soweit nicht anders angegeben, ein beliebiger Stringausdruck. Blockistein Speicherblock im Format FROM anf TO end oder ‚anf,end oder BLOCKx. A ist ein Zweibyte-Integerwert (Adresse). Nist ein Einbyte-Integerwert. Dv bezeichnet eine Gerätenummer (device number).

Alle Diskettenbefehle benutzen die logische Filenummer 127 zur Datenübertragung. Dieser Kanal wird durch <RUN/ STOP +RESTORE> mit CLOSE geschlossen. Sie sollten diese Filenummer in Ihren Programmen nicht benutzen.

Das Listing kann jederzeit mit <SHIFT> angehalten werden.

Esistüberall die Benutzung von Hex- und Binärzahlen möglich (PRINT $A000, x=$FCE2 * %011011). Hexzahlen werden durch ein vorangestelltes »$« gekennzeichnet, Binärzahlen durch ein »%«. Eine Hexzahl, die die Folge »DEF« enthält, muß »D EF« geschrieben werden, da die Umwandlungsroutine des Betriebssystems sonst ein DEF-Token (vom DEF FN-Befehl) einsetzt. Andernfalls kommt es zu einer Fehlermeldung.

In IF..THEN-Konstruktionen muß nach dem THEN ein Doppelpunkt stehen, wenn neue definierte Befehle folgen. Sonst kommt es zu einem SYNTAX ERROR, obwohl der Befehl richtig wäre.

a) Grundbefehle zur Steuerung der Erweiterung

RESET — löscht den Soundchip, den Videocontroller und die CIAs. Außerdem wird die Vektortabelle des Kernels (ab $0300) neu belegt. RESET sollte der erste Befehl in jedem Programm sein.

BASIC — Abschalten von Speech-Basic. Im Direktmodus bekommen Sie zunächst die Frage »are you sure gestellt, die Sie mit »Y« beantworten müssen, damit der Befehl ausgeführt wird. Im Programmodus geht das System davon aus, daß die Abschaltung gewollt ist, die Sicherheitsabfrage entfällt also. Basic setzt LOMEM nicht wieder auf $0800 und hält ein laufendes Programm nicht an. Lediglich die zusätzlichen Befehle werden abgeschaltet.

HELP — zeigt eine Tabelle der Speech-Basic Befehlstokens. HELP* zeigt eine Tabelle der Basic V2-Tokens.

b) Utilities und Diskettenbefehle

KEY (n;str) — Funktionstasten belegen. KEY zeigt eine ediierfähige Liste der Funktionstastenbelegung an. Das Zeichen »-« kann nicht auf eine Funktionstaste gelegt werden, es repräsentiert ein RETURN ($0D). Es können maximal 15 Zeichen auf eine Funktionstaste gelegt werden. Die Tasten sind mit folgenden Werten vorbelegt:

<F1> — RUN
<F2> — LIST
<F3> — PLAY
<F4> — HEAR:RECORD
<F5> — HELP/DISPLAY KEYS
<F6> — BLOCK
<F7> — DIRECTORY
<F8> — DISK-STATUS

Die Taste <F5> sollte nach einer gewissen Einarbeitungszeit mit »SPEED« umbelegt werden. Die neue Version von Speech-Basic kann dann mit

BSAVE "SPEECH-BASIC",8 FROM $0801 TO $1800

gespeichert werden.

MEM — gibt einen Überblick über die aktuelle Speicherverteilung, etwa in folgender Form:

BASIC : $1801 to $1803— Länge des aktuellen Programmes
SOUND : $a000 to $fff8— der Tonspeicher
KEYS : $0c6f to $0cef— Lage der Funktionstasten
BLOCKS: $165b to $17db— Lage der Blocktabelle

DISK (str(dv)) — Kommandokanal bearbeiten. DISK ohne Parameter liest den Kommandokanal der Diskettenstation aus und zeigt ihn auf dem Bildschirm an. Übergibt man einen Kommandostring, so wird der Fehlerstatus nicht ausgelesen, damit er einer Abfrage mit INPUT# und der entsprechenden Behandlung im Programm zur Verfügung steht.

DIR (str(‚dv)) — Inhaltsverzeichnis anzeigen. DIR ohne Parameter gibt das Diskettendirectory »$« aus. Str kann eine der üblichen Suchmasken sein #$:5*= po).

BLOAD "name'(‚dv) (block) — Die Programmdatei name wird vom Gerät dv geladen. Ist ein Block angegeben, wird die Programmdatei an die Adresse anf geladen, ansonsten übernimmt das Programm die Ladeadresse der Datei. Der Ladevorgang wird bei Erreichen der Adresse end abgebrochen. BLOAD wird wie ein normaler Basic-Befehl abgearbeitet, das laufende Programm startet nicht neu wie bei einem normalen LOAD Die Anfangs- und die Endadresse des geladenen Programmes wird im BLOCK 0 übergeben. BLOAD lädt immer ins RAM, auch im Bereich $D000 bis $DFFF (Wert $34 in Speicherstelle 1).

Beispiele:

BLOAD "s.test"
BLOAD "s.test",8 FROM $A000
BLOAD "s.test",8,$A000,$B000
BLOAD "b.test",8 BLOCK 31:REM blocktabelle laden

BSAVE ""name"(dv) (block) — Der Block block wird in der Datei name auf dem Gerät dv gespeichert. Es wird empfohlen, Tondateien durch ein vorangestelltes »s.« oder »snd.« zu kennzeichnen. Für Blocktabellen sollte man »b.« oder »blk.« anhängen. Auf diese Kennzeichnung folgt der Name des Lade- und Vorführprogramms.

Beispiele:

BSAVE "s.test"
BSAVE "s.test",8 FROM $A000 TO $B000
BSAVE "s.test",8,$A000,$B000
BSAVE "b.test",8 BLOCK 31:REM blocktabelle speichern

c) Tonbefehle

HEAR (SPEED n) — erlaubt das Online-Mithören am Digitalisierer. Dabei werden den vier Digitalisierungsstufen bestimmte Farb- und Lautstärkewerte zugeordnet. Die Farbwerte werden in das VIC-Register $D020, die Lautstärken in das SID-Register $D418 geschrieben. Beenden mit der Leertaste.

RECORD (block) (SPEED n) — arbeitet wie HEAR. Gleichzeitig werden die gelesenen Werte im Speicherbereich block mitprotokolliert. Die Aufnahme kann mit <RESTORE> vorzeitig abgebrochen werden. Geschah dies im Direktmodus, wird eine Abbruchadresse ausgegeben $stopped at XxXXXX«). Die maximale Aufnahmegeschwindigkeit ist 1; die langsamste, noch sinnvolle Geschwindigkeit etwa 40. Beispiele:

RECORD
RECORD FROM $A000 TO $D000
RECORD SPEED 1
RECORD BLOCK 1 SPEED 10

PLAY (block) (SPEED n) — ist die Umkehrung von RECORD. Die Daten im angegebenen Block werden als Tondaten interpretiert, die zugeordneten Farb- und Tonwerte ausgegeben. Die maximale Wiedergabegeschwindigkeit ist 0, die PLAY-Routine ist also schneller als die RECORD-Routine.

VOLDEF (n(‚n(‚n(,n))))

COLDEF (n(‚n(‚n(‚n)))) — Lautstärke und Farbzuordnung bestimmen. Die vom Digitalisierer gelieferten vier Werte werden nie direkt als Farbe oder Ton ausgegeben. Statt dessen wird der ihnen zugeordnete Wert in das entsprechende Register geschrieben. Die Befehle VOLDEF und COLDEF beeinflussen diese Zuordnungstabelle entsprechend.

Beispiele:

VOLDEF  0, 1, 2, 3:COLDEF  0,11,12,15 :REM leise und grau
VOLDEF  0, 5,10,15:COLDEF  7, 2, 5, 6 :REM laut  und bunt

d) Erweiterte Tonbefehle

BLOCK n (block) (str) — Definition: Ein Block ist ein durch Anfangs- und Endadresse eingegrenzter Speicherbereich. Anstelle des Formalparameters (»block«) muß entweder die direkte Bezugnahme auf Adressen in der Form »FROM anf TO end« oder kürzer »,anf,end« stehen oder der Verweis auf einen Block der Blocktabelle in der Form »BLOCK n«. Die Endadresse end muß dabei größer als die Anfangsadresse anf und kleiner als $FFF9 sein.

BLOCK ohne Parameter zeigt, analog zu KEY, die gesamte Blocktabelle an. Dadurch wird das versehentliche Löschen eines Blockes verhindert (theoretisch müßten ja HIMEM und $FFF8 als Default eingesetzt werden).

Es existieren die Blöcke 0 bis 31, der Block 0 kann jedoch nicht definiert werden. Er beschreibt den mit dem letzten BLOAD geladenen Speicherbereich. Die Blöcke 30 und 31 beschreiben die Lage der Funktionstastentabelle und der Blocktabelle selbst, können jedoch umdefiniert werden. Sollte das der Fall sein, können die Originalwerte durch MEM erfragt werden.

Der Stringausdruck str kann maximal acht Zeichen lang sein und taucht nur beider Ausgabe der Blocktabelle wieder auf. Er soll den Inhalt eines Blockes (meist nur ein Wort) kurz wiedergeben.

Die Blocktabelle kann durch die Befehlsfolge

FOR n=1 to 29:BLOCK n "":NEXT n

gelöscht werden.

Beispiele:

BLOCK 1 "":REM block 1 löschen
BLOCK 1,$A000:REM endadresse ist $FFF8
BLOCK 1,$A000,$B000:REM kurzform von
BLOCK 1 FROM $A000 TO $B000
BLOCK 1 BLOCK 0:REM block 0 retten
BLOCK 1 BLOCK 0 a$:REM block 0 retten und benennen
BLOCK 1 TO $B000:REM FALSCH!

MAP (x(-(y)))/C-y) — gibt die Blocktabelle in editierbarer Form aus. Der komplizierte Formalparameter hinter MAP ist kein Grund zur Panik. Er beschreibt eine Syntax, die mit der des LIST-Befehles identisch ist. Wie bei LIST dürfen auch hier keine Variablen stehen.

HIMEM a — bezeichnet die obere Grenze des Basic-Speichers. Sie bildet die erste für Tondaten benutzbare Adresse. Der Wert a kann nicht kleiner als die Endadresse des aktuellen Programmes und nicht größer als $A000 sein. Der HIMEM-Befehl beinhaltet den CLR-Befehl.

Beispiele:

HIMEM $1A00:REM größtmöglicher speicher für ton
HIMEM $A000:REM größtmöglicher speicher für basic

PAUSE (a) — ohne Parameter wartet PAUSE auf eine Zustandsänderung am Port 2, das heißt auf ankommende Tondaten. Wegen der Doppelbelegung der CIA mit Joystickport und Tastatur ist der Befehl im Direktmodus unbrauchbar. PAUSE mit Parameter hält ein Programm a Interruptzyklen (etwa a/60 Sekunden) lang an.

EXEC str — interpretiert den übergebenen String als einen Kommandostring, der eine Folge von abzuspielenden Blöcken angibt. Außerdem können Parameter wie Lautstärken oder Farben beschrieben werden. Die Art der Daten wird mit einem vorangestellten Buchstaben (Befehl) beschrieben. Folgende Befehle existieren: p w Block w abspielen

p w Block w abspielen
s w Speedwert setzen
w ww/60stel warten
v w,w,w,w Lautstärketabelle definieren
c w,w,w,w Tontabelle definieren
#str"goto" String str
 Ende Kommandostring

Alle anderen Zeichen führen zum Abbruch von EXEC. Die einzelnen Befehle können, müssen aber nicht immer mit »:« getrennt werden.

Der Parameter w ist eine Konstante oder eine Variable.

WICHTIG: Das Endekennzeichen (Klammeraffe) darf nicht weggelassen werden, sonst werden unter Umständen ungewollte Befehle ausgeführt.

Beispiele:

EXEC "s1:p1:p1:p2:p3:p2:p3:@"
EXEC "s1v0,5,10,15p1#c$"
EXEC a$+" ":REM mit sicherheit beenden
EXEC a$+b$+" "

Auf der Programmservice-Diskette befindet sich ein Beispiel (Pop im Kopp), das von den Möglichkeiten des EXEC-Befehles ausgiebig Gebrauch macht.

e) Sonstige Befehle

HEX und DEZ — kann die Zahlenausgabe bei RESTORE (»stopped at xxxxx«), BLOAD, BSAVE, MEM, MAP und MON beeinflussen. HEX wählt die hexadezimale Zahlenausgabe, DEZ die dezimale Ausgabe an.

SCREEN flag — Bildschirm an oder aus? Normalerweise wird der Bildschirm bei HEAR, RECORD, PLAY und EXEC abgeschaltet. Der SCREEN-Befehl erlaubt den Betrieb von Speech-Basic auch bei eingeschaltetem Bildschirm. Flag ist entweder das Token ON oder OFF oder ein Ausdruck gleich oder ungleich null.

MON (block) und - (Pfeil nach links) — Der Soundmonitor. Mit MON kann ein Speicherblock so, wie er gelesen wurde, auf dem Bildschirm dargestellt werden. Je vier Tonwerte bilden ein Byte. Die einzelnen Werte werden dabei in den ihnen durch COLDEF zugeordneten Werten eingefärbt, um besser unterscheidbar zu sein.

Die Werte können durch Überschreiben geändert werden. Änderungen übernimmt man mit <RETURN>. Der Befehl »+-« bewirkt die Übernahme der Werte. Zur Vermeidung der READY-Meldung springt er jedoch direkt in die Interpreterschleife. Daher kann er nicht im Programm eingesetzt werden. MON ermöglicht die Korrektur kurzer, verrauschter Pausen und das bytegenaue Auffinden von Worten. Außerdem ist MON eine gute Aussteuerungskontrolle. Beispiel:

MON FROM $0400 TO $0401 bewirkt $0400:42444244
Gut       ausgesteuert:$B000:111122344433211
Zu hoch   ausgesteuert:$B000:111114444444111
Zu wenig  ausgesteuert:$B000:222323343322212

In Bild 4 finden Sie noch abschließend den kompletten Schaltplan des Tondigitalisierers. Wir wünschen Ihnen noch viel Spaß mit dieser komfortablen Art der Tondigitalisierung mit dem Computer.

(K. Köhntopp/D. Diezemann/dm)
Schaltplan des Tondigitalisierers mit Operationsverstärker, Widerständen und Kondensatoren
Bild 4. Das Schaltbild des Tondigitalisierers
PROGRAMM : SPEECH BASIC   0801 17E1
-----------------------------------
0801 : 1E 08 C2 07 9E 28 32 30   09
0809 : 38 30 29 20 53 50 45 45   FF
0811 : 43 48 20 42 41 53 49 43   23
0819 : 20 32 2E 37 00 00 00 4C   5D
0821 : C0 09 A6 7A A0 04 84 0F   B9
0829 : BD 00 02 10 07 C9 FF F0   0A
0831 : 3F E8 D0 F4 C9 20 F0 38   89
0839 : 85 08 C9 22 F0 56 24 0F   E9
0841 : 70 2E C9 3F D0 04 A9 99   2A
0849 : D0 26 C9 30 90 04 C9 3C   6D
0851 : 90 1E 84 71 A0 4C 84 0B   D4
0859 : A0 FF 86 7A CA C8 E8 BD   FC
0861 : 00 02 38 F9 60 0A F0 F5   B6
0869 : C9 80 D0 2F 05 0B A4 71   AA
0871 : C8 E8 99 FB 01 C9 00 F0   D3
0879 : 38 38 E9 3A F0 04 C9 49   78
0881 : D0 02 85 0F 38 E9 55 D0   5F
0889 : 9F 85 08 BD 00 02 F0 E0   3A
0891 : C5 08 F0 DC C8 99 FB 01   7D
0899 : E8 D0 F0 A6 7A E6 0B C8   97
08A1 : B9 5F 0A 10 FA B9 60 0A   A1
08A9 : D0 B5 F0 0F BD 00 02 10   76
08B1 : BD 99 FD 01 C6 7B A9 FF   C9
08B9 : 85 7A 60 A0 00 84 0B B9   6B
08C1 : 60 0A D0 02 C8 E8 BD 00   65
08C9 : 02 38 F9 9E A0 F0 F5 C9   36
08D1 : 80 D0 04 05 0B D0 97 A6   3E
08D9 : 7A E6 0B C8 B9 9D A0 10   CD
08E1 : FA B9 9E A0 D0 E0 F0 C4   D5
08E9 : 48 AD 8D 02 C9 01 F0 F9   08
08F1 : 68 10 0F 24 0F 30 0B C9   DC
08F9 : FF F0 07 C9 CC B0 06 4C   6E
0901 : 24 A7 4C F3 A6 38 E9 CB   F6
0909 : AA 84 49 A0 FF CA F0 08   86
0911 : C8 B9 60 0A 10 FA 30 F5   95
0919 : C8 B9 60 0A 30 05 20 47   51
0921 : AB D0 F5 4C EF A6 20 73   D7
0929 : 00 20 30 09 4C AE A7 C9   D3
0931 : CC 90 04 C9 E4 90 06 20   AB
0939 : 79 00 4C ED A7 38 E9 CC   01
0941 : 0A AA BD D3 0A 48 BD D2   0A
0949 : 0A 48 4C 73 00 A9 00 85   51
0951 : 0D 20 73 00 C9 24 F0 0A   E1
0959 : C9 25 F0 41 20 79 00 4C   80
0961 : 8D AE 20 94 09 20 73 00   3F
0969 : 90 0B C9 41 90 1F C9 47   D1
0971 : B0 1B 38 E9 07 38 E9 30   34
0979 : 48 A5 61 F0 07 18 69 04   E9
0981 : B0 0E 85 61 68 F0 DE 20   90
0989 : 7E BD 4C 66 09 4C 79 00   9F
0991 : 4C 7E B9 A9 00 A2 0A 95   28
0999 : 5D CA 10 FB 60 20 94 09   4A
09A1 : 20 73 00 C9 32 B0 E6 C9   8C
09A9 : 30 90 E2 E9 30 48 A5 61   B6
09B1 : F0 04 E6 61 F0 DA 68 F0   F2
09B9 : E7 20 7E BD 4C A1 09 A9   51
09C1 : 01 A0 18 85 2B 84 2C A9   A4
09C9 : 00 8D 00 18 20 D3 09 4C   F0
09D1 : 1F 0A A9 23 8D 04 03 A9   1C
09D9 : 08 8D 05 03 A9 E9 8D 06   76
09E1 : 03 A9 08 8D 07 03 A9 27   EA
09E9 : 8D 08 03 A9 09 8D 09 03   98
09F1 : A9 4E 8D 0A 03 A9 09 8D   23
09F9 : 0B 03 A9 F7 8D 8F 02 A9   A0
0A01 : 0C 8D 90 02 A9 51 8D 18   C4
0A09 : 03 A9 0D 8D 19 03 A9 61   E9
0A11 : 8D 16 03 A9 0D 8D 17 03   3F
0A19 : A9 0F 8D 89 02 60 A5 2B   EE
0A21 : A4 2C 20 08 A4 A9 37 A0   9A
0A29 : 0A 20 1E AB A9 98 A0 E4   EC
0A31 : 20 2D E4 4C 9D E3 93 08   02
0A39 : 0E 0D 20 20 20 20 2A 2A   DA
0A41 : 2A 2A 20 C3 36 34 20 D3   2E
0A49 : 50 45 45 43 48 20 D3 59   7D
0A51 : 53 54 45 4D 20 56 32 2E   A3
0A59 : 37 20 2A 2A 2A 2A 00 52   09
0A61 : 45 53 45 D4 42 41 53 49   4A
0A69 : C3 48 45 4C D0 4B 45 D9   5B
0A71 : 48 49 4D 45 CD 44 49 53   25
0A79 : CB 44 49 D2 42 4C 4F 41   59
0A81 : C4 42 53 41 56 C5 4D 41   AF
0A89 : D0 4D 45 CD 50 41 55 53   16
0A91 : C5 42 4C 4F 43 CB 48 45   B3
0A99 : 41 D2 52 45 43 4F 52 C4   02
0AA1 : 50 4C 41 D9 56 4F 4C 44   3C
0AA9 : 45 C6 43 4F 4C 44 45 C6   96
0AB1 : 48 45 D8 44 45 DA 53 43   59
0AB9 : 52 45 45 CE 45 58 45 C3   8D
0AC1 : 4D 4F CE DF 46 52 4F CD   35
0AC9 : 53 50 45 45 C4 4F 46 C6   AC
0AD1 : 00 01 0B 27 0B 5D 0B A5   0D
0AD9 : 0B 71 0D 97 0D E2 0D 4F   8E
0AE1 : 0E 6E 0F CA 10 E5 0F 80   B1
0AE9 : 10 A4 11 87 12 DC 13 76   C2
0AF1 : 13 55 14 72 14 8B 14 91   13
0AF9 : 14 97 14 BE 14 55 15 F4   E0
0B01 : 15 A9 04 8D 88 02 20 5B   6D
0B09 : FF 20 15 FD 20 53 E4 20   8E
0B11 : D3 09 A9 08 20 D2 FF A9   C0
0B19 : 0E 20 D2 FF A9 00 A2 18   41
0B21 : 9D 00 D4 CA 10 FA 60 24   EF
0B29 : 9D 10 19 A9 4F A0 0B 20   B0
0B31 : 1E AB 20 CF FF 29 7F C9   02
0B39 : 59 08 20 CF FF C9 0D D0   BC
0B41 : F9 28 D0 09 20 15 FD 20   86
0B49 : 53 E4 20 18 E5 60 41 52   24
0B51 : 45 20 59 4F 55 20 53 55   35
0B59 : 52 45 3F 20 00 D0 0B A9   28
0B61 : 60 85 A6 A9 0A 85 A7 4C   67
0B69 : 76 0B A9 9E 85 A6 A9 A0   18
0B71 : 85 A7 20 73 00 A0 00 B1   A9
0B79 : A6 F0 29 48 29 7F 20 D2   9F
0B81 : FF C8 68 10 F2 84 A8 38   67
0B89 : 20 F0 FF 98 38 E9 0A B0   91
0B91 : FC 49 FF 69 01 AA E8 CA   FD
0B99 : D0 05 A4 A8 4C 78 0B 20   1F
0BA1 : 3B AB D0 F3 60 D0 2E A9   FD
0BA9 : 00 48 20 0E 0C A2 00 20   AD
0BB1 : 23 0C 68 48 AA E8 A9 00   96
0BB9 : 20 CD BD A2 05 20 23 0C   79
0BC1 : A5 A6 A4 A7 20 34 0C A2   F0
0BC9 : 08 20 23 0C 68 AA E8 8A   C0
0BD1 : C9 08 D0 D5 60 20 9E B7   7E
0BD9 : CA 10 05 A2 0E 4C 37 A4   AA
0BE1 : E0 08 B0 F7 8A 20 0E 0C   EA
0BE9 : 20 FD AE 20 9E AD 20 A3   D7
0BF1 : B6 C9 10 90 05 A2 17 4C   FC
0BF9 : 37 A4 A8 A9 00 F0 08 B1   ED
0C01 : 22 C9 5F D0 02 A9 0D 91   BE
0C09 : A6 88 10 F3 60 0A 0A 0A   08
0C11 : 0A 18 69 6F 85 A6 A9 0C   BC
0C19 : 69 00 85 A7 60 24 9D 30   D7
0C21 : 01 60 BD 51 0C F0 06 20   8C
0C29 : D2 FF E8 D0 F5 60 A9 0D   72
0C31 : 4C D2 FF 85 A6 84 A7 A0   05
0C39 : 00 B1 A6 F0 12 48 29 7F   E1
0C41 : C9 0D D0 04 68 A9 5F 24   DF
0C49 : 68 20 D2 FF C8 D0 EA 60   F5
0C51 : 4B 45 59 20 00 2C 22 00   83
0C59 : 22 0D 00 42 4C 4F 43 4B   2D
0C61 : 20 00 20 46 52 4F 4D 20   67
0C69 : 00 20 54 4F 20 00 93 52   6D
0C71 : 55 4E 0D 00 20 20 20 20   F5
0C79 : 20 20 20 20 20 20 93 4C   9F
0C81 : 49 53 54 0D 00 20 20 20   EC
0C89 : 20 20 20 20 20 20 50 4C   A2
0C91 : 41 59 20 00 20 20 20 20   4B
0C99 : 20 20 20 20 20 20 48 45   84
0CA1 : 41 52 3A 52 45 43 4F 52   35
0CA9 : 44 20 00 20 20 20 93 48   E3
0CB1 : 45 4C 50 0D 4B 45 59 0D   30
0CB9 : 00 20 20 20 20 20 42 4C   7A
0CC1 : 4F 43 4B 20 00 20 20 20   4B
0CC9 : 20 20 20 20 20 20 93 44   DF
0CD1 : 49 52 0D 00 20 20 20 20   4B
0CD9 : 20 20 20 20 20 20 44 49   BC
0CE1 : 53 4B 0D 00 20 20 20 20   E1
0CE9 : 20 20 20 20 20 20 00 02   2D
0CF1 : 04 06 01 03 05 07 20 48   33
0CF9 : EB A4 C6 88 38 B9 77 02   2C
0D01 : E9 85 B0 01 60 C9 08 B0   CF
0D09 : FB A8 A5 A6 48 A5 A7 48   77
0D11 : B9 EF 0C 20 0E 0C A0 00   8D
0D19 : A6 C6 CA B1 A6 F0 09 9D   5C
0D21 : 77 02 C8 E8 E0 0F D0 F3   9A
0D29 : 86 C6 68 85 A7 68 85 A6   FE
0D31 : 60 18 AD B8 10 6D B9 10   93
0D39 : D0 02 90 11 38 AD B8 10   45
0D41 : E9 01 8D B8 10 AD B9 10   9B
0D49 : E9 00 8D B9 10 4C 31 EA   CB
0D51 : 48 8A 48 98 48 20 BC F6   6A
0D59 : 20 E1 FF F0 03 4C 72 FE   E2
0D61 : A9 7F 20 C3 FF 20 15 FD   9C
0D69 : 20 A3 FD 20 02 0B 6C 02   0C
0D71 : A0 20 2F 0F C9 A0 F0 05   3E
0D79 : 90 07 4C DC 0B E0 00 D0   95
0D81 : F9 C5 2E 90 F5 F0 03 4C   86
0D89 : 8F 0D E4 2D 90 EC 86 37   77
0D91 : 85 38 A9 00 4C 5E A6 A9   42
0D99 : 00 20 BD FF A9 7F A2 08   4A
0DA1 : A0 0F 20 BA FF 20 CB 0D   72
0DA9 : 20 C0 FF A5 B7 D0 12 A2   6D
0DB1 : 7F 20 C6 FF 20 E4 FF C9   AF
0DB9 : 0D F0 06 20 D2 FF 4C B5   8E
0DC1 : 0D 20 CC FF A9 7F 20 C3   B0
0DC9 : FF 60 20 06 E2 20 57 E2   14
0DD1 : 20 06 E2 20 00 E2 E0 08   5C
0DD9 : B0 05 A2 09 4C 37 A4 86   F4
0DE1 : BA 60 A9 01 A2 A6 A0 00   38
0DE9 : 20 BD FF A9 7F A2 08 A0   8B
0DF1 : 00 20 BA FF A9 24 85 A6   CF
0DF9 : 20 CB 0D A9 00 85 90 20   26
0E01 : C0 FF A2 7F 20 C6 FF 20   D2
0E09 : 3F 0E 20 3F 0E 20 3F 0E   3A
0E11 : 20 CD BD A9 20 20 D2 FF   0B
0E19 : 20 E4 FF A6 90 D0 16 20   A8
0E21 : D2 FF D0 F4 AD 8D 02 C9   A8
0E29 : 01 F0 F9 C9 02 F0 06 20   5A
0E31 : 2F 0C 4C 0B 0E 20 CC FF   F0
0E39 : A9 7F 20 C3 FF 60 20 E4   70
0E41 : FF AA 20 E4 FF A4 90 F0   83
0E49 : 05 68 68 4C 36 0E 60 A9   CF
0E51 : 00 85 0A 85 90 20 BD FF   48
0E59 : A9 7F A2 08 A0 00 20 BA   6B
0E61 : FF 20 CB 0D A5 B7 D0 05   6A
0E69 : A2 08 4C 37 A4 20 AF F5   FF
0E71 : 20 C0 FF A2 7F 20 C6 FF   5A
0E79 : 20 E4 FF 48 A5 90 F0 0D   D1
0E81 : 20 CC FF A9 7F 20 C3 FF   44
0E89 : A2 04 4C 37 A4 20 D2 F5   AA
0E91 : 68 20 42 0E 18 20 45 0F   11
0E99 : 20 64 0F A5 AE 8D 5B 16   55
0EA1 : A5 AF 8D 5C 16 20 E4 FF   03
0EA9 : 78 A0 34 84 01 A0 00 91   47
0EB1 : AE A0 37 84 01 58 E6 AE   DA
0EB9 : D0 02 E6 AF A4 90 D0 0C   64
0EC1 : A5 AF C5 A9 D0 DF A5 AE   E4
0EC9 : C5 A8 D0 D9 20 CC FF A9   0D
0ED1 : 7F 20 C3 FF A5 AE 8D 5D   12
0ED9 : 16 A5 AF 8D 5E 16 A2 19   B3
0EE1 : 20 1E 0C A6 AE A5 AF 20   FF
0EE9 : EC 0E 60 24 9D 30 01 60   99
0EF1 : 2C 8B 14 30 03 4C CD BD   33
0EF9 : A8 8A 48 98 48 A9 24 20   AE
0F01 : D2 FF 68 F0 03 20 0A 0F   82
0F09 : 68 48 4A 4A 4A 4A 20 15   13
0F11 : 0F 68 29 0F AA BD 1C 0F   A8
0F19 : 4C D2 FF 30 31 32 33 34   AE
0F21 : 35 36 37 38 39 41 42 43   73
0F29 : 44 45 46 20 FD AE 20 8A   90
0F31 : AD 20 F7 B7 A6 14 A5 15   AF
0F39 : C9 FF D0 07 E0 F9 90 03   3D
0F41 : 4C DC 0B 60 08 20 0E 12   A8
0F49 : A9 12 28 69 00 AA 20 1E   45
0F51 : 0C AE 84 12 AD 85 12 86   74
0F59 : AE 85 AF 20 E4 0E A6 AE   70
0F61 : A5 AF 60 AE 86 12 AD 87   8A
0F69 : 12 86 A8 85 A9 60 A9 00   DD
0F71 : 20 BD FF A9 7F A2 08 A0   13
0F79 : 01 20 BA FF 20 CB 0D A5   19
0F81 : B7 D0 03 4C 69 0E A9 00   98
0F89 : 85 90 20 C0 FF 20 8F F6   A4
0F91 : 20 2F 0C 38 A6 37 A5 38   7E
0F99 : 20 45 0F 20 64 0F A2 7F   6C
0FA1 : 20 C9 FF A5 AE 20 D2 FF   92
0FA9 : A5 AF 20 D2 FF 78 A0 34   37
0FB1 : 84 01 A0 00 B1 AE A0 37   5F
0FB9 : 84 01 58 20 D2 FF A5 90   BD
0FC1 : F0 06 20 CC FF 4C 36 0E   AD
0FC9 : E6 AE D0 02 E6 AF A5 AF   5D
0FD1 : C5 A9 D0 D9 A5 AE C5 A8   12
0FD9 : D0 D3 20 CC FF A9 7F 20   C0
0FE1 : C3 FF 4C DF 0E A9 3B 85   D9
0FE9 : AE A9 10 85 AF A0 00 B1   84
0FF1 : AE 48 C8 B1 AE A8 68 C0   7F
0FF9 : FF F0 2A 20 1E AB A0 02   C5
1001 : 20 27 10 A9 0D 20 67 11   80
1009 : A2 19 20 23 0C A0 04 20   BA
1011 : 27 10 20 2F 0C 18 A5 AE   A4
1019 : 69 06 85 AE A5 AF 69 00   3A
1021 : 85 AF 4C EE 0F 60 B1 AE   87
1029 : 85 A6 C8 B1 AE 85 A7 A0   61
1031 : 00 B1 A6 AA C8 B1 A6 4C   56
1039 : F1 0E 55 10 2B 00 2D 00   F0
1041 : 5E 10 37 00 53 10 67 10   E9
1049 : 79 10 7B 10 70 10 7D 10   49
1051 : 7F 10 F8 FF 42 41 53 49   24
1059 : 43 20 3A 20 00 53 4F 55   C1
1061 : 4E 44 20 3A 20 00 4B 45   DA
1069 : 59 53 20 20 3A 20 00 42   A1
1071 : 4C 4F 43 4B 53 3A 20 00   27
1079 : 6F 0C EF 0C 5B 16 DB 17   70
1081 : 20 79 00 F0 34 20 2F 0F   9B
1089 : 8E B8 10 8D B9 10 78 AD   82
1091 : 14 03 48 AD 15 03 48 A9   CC
1099 : 32 8D 14 03 A9 0D 8D 15   5B
10A1 : 03 58 AD B8 10 D0 FB AD   26
10A9 : B9 10 D0 F6 78 68 8D 15   A8
10B1 : 03 68 8D 14 03 58 60 00   43
10B9 : 00 EA AD 00 DC CD 00 DC   90
10C1 : F0 FB EA EA EA EA EA EA   4E
10C9 : EA 60 08 A9 00 8D 65 11   3F
10D1 : A9 20 8D 66 11 28 F0 28   21
10D9 : 20 79 00 20 72 11 8D 65   6B
10E1 : 11 8E 66 11 20 79 00 F0   A5
10E9 : 17 C9 AB F0 01 60 20 73   68
10F1 : 00 D0 07 A9 20 8D 66 11   7B
10F9 : D0 06 20 72 11 8E 66 11   64
1101 : AD 65 11 48 20 92 11 A2   CE
1109 : 0B 20 23 0C 68 48 AA A9   35
1111 : 00 20 CD BD A9 08 20 67   76
1119 : 11 A2 12 20 23 0C A0 00   19
1121 : 20 88 11 A9 13 20 67 11   F1
1129 : A2 19 20 23 0C A0 02 20   D2
1131 : 88 11 A9 20 20 D2 FF A9   9C
1139 : 1D 20 67 11 A9 22 20 D2   34
1141 : FF A4 A8 A2 08 B9 DB 16   FB
1149 : 20 D2 FF C8 CA D0 F6 A9   4E
1151 : 22 20 D2 FF 20 2F 0C 68   B4
1159 : AA 20 2C A8 E8 8A CD 66   1A
1161 : 11 D0 A0 60 00 00 48 38   A0
1169 : 20 F0 FF 68 A8 18 4C F0   6D
1171 : FF 20 6B A9 A5 15 F0 03   5D
1179 : 4C DC 0B A5 14 C9 20 90   DC
1181 : 03 4C DC 0B AA E8 60 B1   1A
1189 : AE AA C8 B1 AE 20 F1 0E   C4
1191 : 60 0A 0A 48 18 69 5B 85   C7
1199 : AE A9 16 69 00 85 AF 68   8A
11A1 : 0A 85 A8 60 D0 03 4C CB   92
11A9 : 10 20 9E B7 E0 00 F0 04   42
11B1 : E0 20 90 03 4C DC 0B 8A   13
11B9 : 20 92 11 A5 AE 85 A6 A5   18
11C1 : AF 85 A7 A6 37 A5 38 20   B3
11C9 : 0E 12 A0 03 B9 84 12 91   94
11D1 : A6 88 10 F8 20 79 00 F0   8E
11D9 : 33 A4 A8 A2 08 A9 20 99   5E
11E1 : DB 16 C8 CA D0 F9 20 9E   ED
11E9 : AD 20 A3 B6 C9 00 D0 01   48
11F1 : 60 C9 09 90 03 4C F6 0B   0F
11F9 : 86 AA 84 AB A8 88 98 18   CC
1201 : 65 A8 AA B1 AA 9D DB 16   CE
1209 : CA 88 10 F7 60 8E 84 12   CB
1211 : 8D 85 12 A2 F8 A9 FF 8E   34
1219 : 86 12 8D 87 12 20 79 00   05
1221 : C9 D8 D0 1F 20 73 00 20   4C
1229 : 9E B7 E0 20 B0 86 A5 A8   06
1231 : 48 8A 20 92 11 68 85 A8   D4
1239 : A0 03 B1 AE 99 84 12 88   B4
1241 : 10 F8 60 C9 E4 F0 05 C9   9C
1249 : 2C F0 01 60 20 73 00 20   18
1251 : 2F 0F 8E 84 12 8D 85 12   04
1259 : 20 79 00 C9 A4 F0 05 C9   E9
1261 : 2C F0 01 60 20 73 00 20   30
1269 : 2F 0F 8E 86 12 8D 87 12   64
1271 : CD 85 12 F0 05 B0 0B 4C   3E
1279 : DC 0B EC 84 12 B0 03 4C   F2
1281 : DC 0B 60 00 A0 F8 FF 20   0D
1289 : B0 12 AD 00 DC 29 03 AA   26
1291 : BD 4A 14 8D 20 D0 BD 4E   46
1299 : 14 8D 18 D4 A9 00 18 69   E2
12A1 : 00 A8 88 10 FD AD 01 DC   24
12A9 : C9 FF F0 DE 4C 42 13 20   ED
12B1 : 79 00 C9 E5 D0 10 20 73   4E
12B9 : 00 20 9E B7 8E C1 13 8E   C8
12C1 : 9E 12 CA 8E 24 14 2C 55   2B
12C9 : 15 30 21 AD 11 D0 8D 54   6B
12D1 : 14 AD 20 D0 8D 55 14 AD   0D
12D9 : 15 D0 8D 53 14 2C 52 14   38
12E1 : 30 0A A9 00 8D 15 D0 A9   99
12E9 : 0B 8D 11 D0 A9 00 A0 14   5E
12F1 : 99 00 D4 88 10 FA A9 03   56
12F9 : 8D FA FF A9 13 8D FB FF   C6
1301 : 78 60 78 A9 4C 8D 18 14   B6
1309 : 8D BD 13 A9 42 8D 19 14   8C
1311 : 8D BE 13 A9 13 8D 1A 14   26
1319 : 8D BF 13 A9 37 85 01 8D   3F
1321 : 55 15 24 9D 10 0E A9 36   42
1329 : A0 13 20 1E AB A6 AA A5   05
1331 : AB 20 F1 0E 40 53 54 4F   B9
1339 : 50 50 45 44 20 41 54 20   29
1341 : 00 2C 55 15 30 12 AD 53   40
1349 : 14 8D 15 D0 AD 54 14 8D   6C
1351 : 11 D0 AD 55 14 8D 20 D0   B0
1359 : A9 37 85 01 58 A9 8D 8D   43
1361 : 18 14 8D BD 13 A9 18 8D   98
1369 : 19 14 8D BE 13 A9 D4 8D   B4
1371 : 1A 14 8D BF 13 60 A6 37   2E
1379 : A5 38 20 0E 12 20 B0 12   0D
1381 : AD 84 12 85 AA AD 85 12   F8
1389 : 85 AB AD 86 12 8D D1 13   1B
1391 : AD 87 12 8D D7 13 A0 00   D1
1399 : A9 34 85 01 B1 AA 85 A6   B2
13A1 : A9 35 85 01 A0 04 A5 A6   74
13A9 : 0A 69 00 0A 69 00 85 A6   A3
13B1 : 29 03 AA BD 4A 14 8D 20   7A
13B9 : D0 BD 4E 14 8D 18 D4 A2   B0
13C1 : 00 CA 10 FD 88 D0 DF E6   46
13C9 : AA D0 02 E6 AB A5 AA C9   5F
13D1 : 00 D0 C5 A5 AB C9 00 D0   0A
13D9 : BF 4C 42 13 A6 37 A5 38   DC
13E1 : 20 0E 12 20 B0 12 AE C1   6B
13E9 : 13 D0 03 4C DB 17 AD 84   E5
13F1 : 12 85 AA AD 85 12 85 AB   7C
13F9 : AD 86 12 8D 3E 14 AD 87   6A
1401 : 12 8D 44 14 A0 04 AD 00   4E
1409 : DC 29 03 85 A6 AA BD 4A   37
1411 : 14 8D 20 D0 BD 4E 14 8D   C8
1419 : 18 D4 A5 A8 0A 0A 05 A6   6C
1421 : 85 A8 A2 FF CA 10 FD 88   D9
1429 : D0 DC A2 34 86 01 91 AA   A3
1431 : A2 35 86 01 E6 AA D0 02   3B
1439 : E6 AB A5 AA C9 00 D0 C4   1D
1441 : A5 AB C9 00 D0 BE 4C 42   E7
1449 : 13 0E 06 02 0A 07 05 03   18
1451 : 01 00 00 1B FE A9 03 85   0A
1459 : A6 20 9E B7 8A A6 A6 9D   62
1461 : 4E 14 C6 A6 30 0B 20 79   0F
1469 : 00 F0 06 20 FD AE 4C 5A   A2
1471 : 14 60 A9 4A 8D 61 14 A9   F0
1479 : 14 8D 62 14 20 56 14 A9   C7
1481 : 4E 8D 61 14 A9 14 8D 62   A7
1489 : 14 60 80 A9 80 8D 8B 14   ED
1491 : 60 A9 00 8D 8B 14 60 20   93
1499 : 9F 14 8D 52 14 60 C9 91   7F
14A1 : D0 06 20 73 00 A9 80 60   FB
14A9 : C9 E6 D0 06 20 73 00 A9   CB
14B1 : 00 60 20 9E B7 8A C9 00   B4
14B9 : D0 01 60 A9 80 60 20 9E   20
14C1 : AD 20 A3 B6 A5 7A 8D 33   09
14C9 : 15 A5 7B 8D 34 15 86 7A   3C
14D1 : 84 7B 20 C7 12 A9 80 8D   9F
14D9 : 55 15 20 79 00 C9 3A D0   C9
14E1 : 06 20 73 00 4C DB 14 A0   09
14E9 : 05 D9 21 15 F0 15 88 10   C0
14F1 : F8 AD 34 15 85 7B AD 33   C1
14F9 : 15 85 7A A9 00 8D 55 15   91
1501 : 4C 42 13 98 0A A8 B9 27   61
1509 : 15 8D 17 15 B9 28 15 8D   9A
1511 : 18 15 20 73 00 20 E2 FC   B1
1519 : 2C 55 15 10 D4 4C DB 14   7E
1521 : 50 53 57 56 43 23 3E 15   2C
1529 : 47 15 86 10 56 14 73 14   9A
1531 : 35 15 00 00 20 9E AD 20   DF
1539 : A3 B6 4C CF 14 20 28 12   4B
1541 : 20 ED 12 4C 81 13 20 9E   D4
1549 : B7 8E C1 13 8E 9E 12 CA   D6
1551 : 8E 24 14 60 00 A6 37 A5   60
1559 : 38 20 0E 12 AD 84 12 85   BA
1561 : AA AD 85 12 85 AB A9 5F   A1
1569 : 20 D2 FF A6 AA A5 AB 20   8E
1571 : F1 0E A9 06 20 67 11 A9   69
1579 : 3A 20 D2 FF A9 12 20 D2   C9
1581 : FF AD 86 02 48 A9 08 85   36
1589 : A6 78 A2 34 86 01 A0 00   8D
1591 : B1 AA A2 37 86 01 58 20   39
1599 : CF 15 18 E6 AA D0 02 E6   DD
15A1 : AB A5 AB CD 87 12 90 11   31
15A9 : F0 05 68 8D 86 02 60 A5   2D
15B1 : AA CD 86 12 D0 03 4C AB   D3
15B9 : 15 C6 A6 D0 CC 68 8D 86   48
15C1 : 02 A9 0D 20 D2 FF 20 2C   E5
15C9 : A8 F0 DF 4C 67 15 20 DB   C2
15D1 : 15 20 DB 15 20 DB 15 4C   5E
15D9 : DB 15 0A 69 00 0A 69 00   E5
15E1 : 48 29 03 AA BD 4A 14 8D   6E
15E9 : 86 02 8A 49 03 69 31 20   BD
15F1 : D2 FF 68 60 20 2F 0F 86   AE
15F9 : AA 85 AB A9 03 85 A6 20   BD
1601 : 79 00 F0 05 A2 0B 4C 37   79
1609 : A4 20 73 00 F0 45 38 E9   88
1611 : 31 90 F1 C9 05 B0 ED 49   60
1619 : 03 48 A4 A6 B9 57 16 85   F8
1621 : AF 68 A4 A6 F0 06 0A 0A   7E
1629 : 88 4C 25 16 85 AE 78 A9   E6
1631 : 34 85 01 A0 00 B1 AA 25   FF
1639 : AF 05 AE 91 AA A9 37 85   28
1641 : 01 58 C6 A6 10 C3 E6 AA   05
1649 : D0 02 E6 AB A9 03 85 A6   5F
1651 : 4C 0A 16 4C 83 A4 FC F3   EB
1659 : CF 3F 00 A0 F8 FF 00 A0   AD
1661 : F8 FF 00 A0 F8 FF 00 A0   3E
1669 : F8 FF 00 A0 F8 FF 00 A0   46
1671 : F8 FF 00 A0 F8 FF 00 A0   4E
1679 : F8 FF 00 A0 F8 FF 00 A0   56
1681 : F8 FF 00 A0 F8 FF 00 A0   5E
1689 : F8 FF 00 A0 F8 FF 00 A0   66
1691 : F8 FF 00 A0 F8 FF 00 A0   6E
1699 : F8 FF 00 A0 F8 FF 00 A0   76
16A1 : F8 FF 00 A0 F8 FF 00 A0   7E
16A9 : F8 FF 00 A0 F8 FF 00 A0   86
16B1 : F8 FF 00 A0 F8 FF 00 A0   8E
16B9 : F8 FF 00 A0 F8 FF 00 A0   96
16C1 : F8 FF 00 A0 F8 FF 00 A0   9E
16C9 : F8 FF 00 A0 F8 FF 00 A0   A6
16D1 : F8 FF 6F 0C EF 0C 5B 16   1F
16D9 : DB 17 57 4F 52 4B 42 4C   21
16E1 : 4B 2E 20 20 20 20 20 20   13
16E9 : 20 20 20 20 20 20 20 20   E9
16F1 : 20 20 20 20 20 20 20 20   F1
16F9 : 20 20 20 20 20 20 20 20   F9
1701 : 20 20 20 20 20 20 20 20   01
1709 : 20 20 20 20 20 20 20 20   09
1711 : 20 20 20 20 20 20 20 20   11
1719 : 20 20 20 20 20 20 20 20   19
1721 : 20 20 20 20 20 20 20 20   21
1729 : 20 20 20 20 20 20 20 20   29
1731 : 20 20 20 20 20 20 20 20   31
1739 : 20 20 20 20 20 20 20 20   39
1741 : 20 20 20 20 20 20 20 20   41
1749 : 20 20 20 20 20 20 20 20   49
1751 : 20 20 20 20 20 20 20 20   51
1759 : 20 20 20 20 20 20 20 20   59
1761 : 20 20 20 20 20 20 20 20   61
1769 : 20 20 20 20 20 20 20 20   69
1771 : 20 20 20 20 20 20 20 20   71
1779 : 20 20 20 20 20 20 20 20   79
1781 : 20 20 20 20 20 20 20 20   81
1789 : 20 20 20 20 20 20 20 20   89
1791 : 20 20 20 20 20 20 20 20   91
1799 : 20 20 20 20 20 20 20 20   99
17A1 : 20 20 20 20 20 20 20 20   A1
17A9 : 20 20 20 20 20 20 20 20   A9
17B1 : 20 20 20 20 20 20 20 20   B1
17B9 : 20 20 20 20 20 20 20 20   B9
17C1 : 20 20 20 20 20 20 20 20   C1
17C9 : 20 20 46 2D 54 41 53 54   76
17D1 : 45 4E 42 4C 4F 43 4B 54   3C
17D9 : 41 42 20 42 13 4C DC 0B   A9
Listing 1. »Speech-Basic« — Bitte mit dem MSE (ab Seite 76) eingeben
10 REM DEMONSTRATIONSLISTING 1
11 :
15 REM WIEDERHOLEN VON TONTEILEN
16 :
20 REM LADEN EINER VORHER ERSTELLTEN
21 REM BLOCKTABELLE VON DISKETTE
22 :
25 BLOAD"B.DEMO",8 BLOCK 31
26 :
30 REM LADEN DER DAZUGEHOERIGEN TONDATEN
31 :
35 BLOAD"S.DEMO",8
36 :
40 REM ABSPIELEN NACH BLOCKTABELLE
41 :
45 PLAY BLOCK 1 SPEED 10
46 PLAY BLOCK 2 SPEED 10
47 PLAY BLOCK 2 SPEED 10
48 PLAY BLOCK 3 SPEED 10
Listing 2. Wiederholen von Tonteilen
25 BLOAD"B.DEMO",8 BLOCK 31
26 :
30 REM LADEN DER DAZUGEHOERIGEN TONDATEN
31 :
35 BLOAD"S.DEMO",8
36 :
40 REM ABSPIELEN NACH BLOCKTABELLE
41 :
45 PLAY BLOCK 1 SPEED 10
46 :
50 REM BLOCK 2 MIT UNTERSCHIEDLICHEN
51 REM SPEEDWERTEN ABSPIELEN
52 :
55 FORI=1TO5
56 QQ=INT(RND(TI)*8)+6
57 PLAY BLOCK 2 SPEED QQ
58 NEXT I
59 :
60 PLAY BLOCK 3 SPEED 10
Listing 3. Wechselnde Geschwindigkeit
10 REM DEMONSTRATIONSLISTING 3
11 :
15 REM ECHO AM ENDE
16 :
20 REM LADEN EINER VORHER ERSTELLTEN
21 REM BLOCKTABELLE VON DISKETTE
22 :
25 BLOAD"B.DEMO",8 BLOCK 31
26 :
30 REM LADEN DER DAZUGEHOERIGEN TONDATEN
31 :
35 BLOAD"S.DEMO",8
36 :
40 REM ABSPIELEN NACH BLOCKTABELLE
41 :
42 VOLDEF 0,5,10,15
43 :
45 PLAY BLOCK 1 SPEED 10
46 PLAY BLOCK 2 SPEED 10
47 PLAY BLOCK 3 SPEED 10
48 :
50 REM BLOCK 3 WIEDERHOLEN,
51 REM DABEI LEISER WERDEN
52 :
55 FOR I=5 TO 0 STEP-.5
56 VOLDEF 0,I,2*I,3*I
57 PLAY BLOCK 3 SPEED 10
58 NEXT I
Listing 4. Auch Echo ist möglich
1 rem disk "s:p.pop im kopp":save"p.pop im kopp",8
100 ifpeek(2039)=5then300
101 poke2039,5
105 reset:himem $2000
114 poke53280,11:poke53281,0
115 print"{clr}{yel}";:
120 bload "load.828",8:sys828
140 print"{home}{gry1}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}Einen Moment..."
200 load "s.pop im kopp",8,1
300 :
301 reset:poke53280,11:poke53281,0
305 screen0
320 a$="s1v0,3,6,9c0,9,8,7"
325 block1,$2000,$5580"um 16.30"
330 block2,$51a0,$5590"hoerer  "
331 block3,$5591,$7e00"heute .."
335 a$=a$+"p1p2p2p2p3"
340 block4,$6500,$7e00"nichts.."
342 block5,$6f00,$7e00"als-kopp"
345 block6,$7420,$7e00"pop-kopp"
350 a$=a$+"p4p5p6"
360 block7,$7420,$7580"pop     "
361 block8,$7420,$76f0"pop     "
362 block9,$7420,$7780"pop     "
364 block10,$7580,$7e00"im kopp "
370 a$=a$+"p7p8p9s0p9p7p8s1p7p9s2p9p8s0p7p8s1p9p9s0p8p7s1p7p8s2p7p9s1p8p7p10"
380 block11,$7e00,$bca0
385 block12,$c100,$c700
386 block13,$bca0,$bfc0
387 block14,$bfc0,$c100
390 :
400 a$=a$+"p11s3p13s0p13p13s1p13s2p13s1p13p13s0p13p14p12p12#c$@":c$=""
420 fory=3to.5step-.2
430 a=9-y*2.6:gosub800:c$=c$+"s"+b$
440 a=y+1:gosub800:c$=c$+"v1,"+b$
450 a=2*y+1:gosub800:c$=c$+","+b$
460 a=3*y+1:gosub800:c$=c$+","+b$+"p12":next
470 c$=c$+"v0,3,6,9@"
700 print"{clr}{down}{down}{yel}exec a$ : rem pop im kopp!":print"{home}";
750 end
800 b$=right$(str$(int(a)),int(a/10)+1):return
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →