********* Welcome to iDOC= - the international CBM documentation project! The goal of iDOC= is to preserve (non-English) Commodore related documents in electronic text format that might otherwise cease to exist with the rapid advancement of computer technology and declining interest in 8-bit computers on the part of the general population. If you would like to help by converting Commodore related hardcopy documents to electronic texts please contact the manager of iDOC=, Peter Karlsson, at pk@abc.se. Extensive efforts were made to preserve the contents of the original document. However, certain portions, such as diagrams, program listings, and indexes may have been either altered or sacrificed due to the limitations of plain vanilla text. Diagrams may have been eliminated where ASCII-art was not feasible. Program listings may be missing display codes where substitutions were not possible. Tables of contents and indexes may have been changed from page number references to section number references. Please accept our apologies for these limitations, alterations, and possible omissions. Document names consists of a reasonably short unique title, followed by the document language. Two optional fields follow; first the document version (0 for incomplete texts, version 1 is usually unnumbered), and then the document source, if there are more than one. Finally, the document is given a .txt extension. The author(s) of the original document and members of iDOC= make no representations about the accuracy or suitability of this material for any purpose. This etext is provided "as-is". Please refer to the warranty of the original document, if any, that may included in this etext. No other warranties, express or implied, are made to you as to the etext or any medium it may be on. Neither the author(s) nor the members of iDOC= will assume liability for damages either from the direct or indirect use of this etext or from the distribution of or modification to this etext. Therefore if you read this document or use the information herein you do so at your own risk. ********* The iDOC= etext of the Commodore 128 German User's Manual, converted to text by Christian Janoff et al. c128_de01.txt, November 1999, etext #58. Note from the etexters (in German): ======================== = ÜBER DIESES HANDBUCH = ======================== Dies ist (die erste :-) Version 0.01 des deutschen Commodore 128-Handbuchs. und kann deshalb noch viele Fehler enthalten. Insbesondere die Formatierung ist noch nicht fertiggestellt. Ebenso sind diverse andere Unzulänglichkeiten zwar bekannt, jedoch noch nicht beseitigt. Es sind jedoch alle Kapitel und Anhänge (mehr oder weniger gut formatiert) vorhanden. Deshalb kann diese Version des C128-Handbuchs schon jetzt eine große Hilfe für Leute sein, die zwar einen C128 besitzen, denen jedoch das Handbuch fehlt. Außerdem enthält dieser E-Text das vollständige Kapitel 7 ("CP/M-Handbuch"), das im Original-Handbuch nicht vorhanden ist (wohl aufgrund der über 120 Seiten), sondern als eigenständiges Handbuch separat mitgeliefert wurde. Es wird natürlich, Stück für Stück, weiter an diesem E-Text gearbeitet, die endgültige, fertige Version wird Version 1.00 sein. Die jeweils aktuelle Version dieses Handbuchs kann man jederzeit kostenlos bei iDOC (http://www.softwolves.pp.se/idoc/) herunterladen. Korrektur-/Formatiervorschläge und sonstige Hinweise sind stets willkommen! (bitte per E-Mail an mich: mepk@c64.org) ================ = FORMATIERUNG = ================ - Bei der Formatierung aller Kapitel und Anhänge diente das Original- Handbuch als Vorbild. Die Formatierung wurde jedoch nicht vollständig übernommen, um ein einheitliches Aussehen des ASCII-Textes zu gewaehrleisten. Ziel war also, eine lesbare ASCII-Version schaffen. - Überschriften bzw. Fettschrift wurden im ASCII-Text, wo es sinnvoll erschien, GROSSGESCHRIEBEN, um sie hervorheben zu können. Zukünftige HTML-Versionen dieses E-Textes sollten deshalb auch das Original-Handbuch als Vorbild haben, um statt der Großbuchstaben wieder Fettdruck verwenden zu können (usw.). - Farblich (d.h. blau) hinterlegter Text wurde umrahmt. - Die Seitenzahlen entsprechen denen im Original-Handbuch und stehen, wie dort, am Anfang jeder Seite. Im E-Text wurden sie in eckige Klammern gesetzt. Mit Hilfe eines Textbetrachters (z.B. "less" unter Unix) kann dann nach "[SEITE" gesucht werden, um so leicht von Seite zu Seite blättern zu können. Eine Seitenzahl besteht aus der Zeichenkette "SEITE", der Nummer des Kapitels bzw. dem Buchstaben des Anhangs, gefolgt von einem Bindestrich und der eigentlichen Seitenzahl des jeweiligen Kapitels bzw. dem Buchstaben des Anhangs. (z.B. "[SEITE 2-11]") Seitenzahlen unterbrechen im E-Text, anders als im Original-Handbuch, keinen Satz bzw. Absatz, sondern erscheinen erst NACH dem Satz bzw. Absatz (zur Erhhoehung der Lesbarkeit). In diesem Fall steht dann ein ^ hinter der Seitenzahl, um dies zu kennzeichnen (z.B. steht bei Kapitel 2, Seite 2 "[SEITE 2-2]^"), andernfalls entspricht die Seitenzahl exakt der im Original-Handbuch. Eine Seite, die mit ^ gekennzeichnet ist, beginnt also de facto im Absatz vor der Seitenzahl. - Die Zeilenlaenge wurde auf 78 Zeichen begrenzt. - "Knäuel-Listings" wurden Leerzeichen hinzugefügt, um sie lesbar zu machen. =============================== = FEHLER IM ORIGINAL-HANDBUCH = =============================== Die meisten Fehler des Original-Handbuchs sind in diesem E-Text bereits korrigiert, ohne daß es besonders vermerkt wurde. Die meisten davon waren Rechtschreibfehler, inhaltliche Fehler und Fehler beim Referenzieren von Kapiteln. Dank gebührt hier Marco Baye (für die Fehlerliste) sowie den fleißigen Helfern, die beim Abtippen (bzw. Einscannen) sehr gut aufgepaßt haben! Außerdem wurden: - beim C128 existierende Befehle hinzugefügt, wenn sie nicht im Handbuch vermerkt waren. - unzulässige Wort-Trennungen (z.B. "B- yte") korrigiert (übrigens wurde durchweg nach der "alten" Rechtschreibung korrigiert). ========= = DANKE = ========= Besonderer Dank geht an alle, die zum Entstehen des Handbuchs beigetragen haben (in alphabetischer Reihenfolge): Jürgen Barth Marco Baye (stellte seine lange Fehlerliste zur Verfügung!) Martin Brunner Jens Erler Mathias Gygax Marc-Jano Knopp Stephan Lesch Kurt Ziegenbein ...und nun viel Spaß mit dem Handbuch! Christian Janoff. mepk@c64.org ********* +-----------------------------------------+ | | | C= Commodore 128 PERSONAL COMPUTER | | | | C= Commodore 128D PERSONAL COMPUTER | | | | BEDIENUNGSHANDBUCH | | | +-----------------------------------------+ (C) Copyright der deutschen Ausgabe bei Commodore Büromaschinen GmbH, Frankfurt 1985. GLIEDERUNG DES C128-HANDBUCHES Inhalt 1. Einführung .......................................................... 1- 1 2. Allgemeine Eigenschaften von BASIC 2.1 Betriebsarten von BASIC ........................................ 2- 1 2.2 BASIC-Zeilenformat und -Zeichenvorrat .......................... 2- 2 2.3 Reservierte Wörter ............................................. 2- 3 2.4 BASIC-Konstanten ............................................... 2- 5 2.5 BASIC-Variablen ................................................ 2- 6 2.5.1 Variablennamen und -Typen ...................................... 2- 6 2.5.2 Feldvariablen .................................................. 2- 7 2.6 Genauigkeit numerischer Werte .................................. 2- 8 2.7 Numerische Ausdrücke und Operatoren ............................ 2- 9 2.7.1 Arithmetische Operatoren ....................................... 2- 9 2.7.2 Vergleichsoperatoren ........................................... 2- 9 2.7.3 Logische Operatoren ............................................ 2- 11 2.7.4 Funktionsoperatoren ............................................ 2- 13 2.7.5 Mathematische Hierarchie ....................................... 2- 13 2.8 Ausdrücke und Operatoren mit Zeichenketten ..................... 2- 14 2.8.1 Verkettungsoperatore ........................................... 2- 15 2.8.2 Zeichenkettenfunktionen ........................................ 2- 15 3. Eingeben und Verwalten von BASIC-Programmen 3.1 Tastatur ....................................................... 3- 1 3.2 Eingeben von Programmzeilen .................................... 3- 4 3.3 Ersetzen oder Ändern von Programmzeilen ........................ 3- 6 3.3.1 Ändern von Zeilen mit dem Bildschirmeditor ..................... 3- 6 3.3.2 Ändern von Zeilen mit Syntax-Fehler ............................ 3- 6 3.4 Speichern von BASIC-Programmen ................................. 3- 7 3.5 Laden von BASIC-Programmen ..................................... 3- 7 4. C128-Modus 4.1 Erweiterte Tastaturfunktionen im C128-Modus .................... 4- 1 4.2 Erweiterte Bildschirmfunktionen im C128-Modus .................. 4- 8 4.3 BASIC 7.0 im C128-Modus ........................................ 4- 9 4.4 Struktur von BASIC ............................................. 4- 10 4.5 Struktur und Syntax der Beschreibungen ......................... 4- 11 4.6 Befehle, Anweisungen, Funktionen und Variablen ................. 4- 12 4.7 Farben, Sprites und grafische Effekte .......................... 4-135 4.8 Klänge und Musik mit dem C128 .................................. 4-152 5. C64-Modus 5.1 BASIC 2.0 im C64-Modus ......................................... 5- 1 5.2 Befehle, Anweisungen, Funktionen und Variable .................. 5- 1 5.3 Farben und Grafik im C64-Modus ................................. 5- 74 5.3.1 Sprite-Grafik im C64-Modus ..................................... 5- 84 5.4 Musik im C64-Modus ............................................. 5- 94 6. Floppy-Disk-Betrieb mit BASIC 6.1 Formatierung von Disketten ..................................... 6- 1 6.2 Speicherung von Programmen ..................................... 6- 3 6.3 Verwendung von Jokerzeichen in Dateinamen ...................... 6- 4 6.4 Laden von Programmen ........................................... 6- 5 6.5 Diskettenverzeichnisse ......................................... 6- 6 6.6 Öffnen und Schließen von Dateien ............................... 6- 9 6.7 Schreib-/Lesezeiger in Relativdateien .......................... 6- 11 6.8 Löschen von Diskettendateien ................................... 6- 13 6.9 Weitere Verwaltungsfunktionen .................................. 6- 14 6.9.1 Diskettenbelegung überprüfen und bereinigen .................... 6- 14 6.9.2 Datei kopieren ................................................. 6- 15 6.9.3 Verkettung sequentieller Dateien ............................... 6- 15 6.9.4 Datei umbenennen ............................................... 6- 16 6.9.5 Diskette duplizieren ........................................... 6- 17 7. CP/M-Modus 7.1 Einleitung ....................................................... 7- 1 7.2 Starten von CP/M 3.0 ............................................. 7- 3 7.3 CP/M Dateien ..................................................... 7- 8 7.4 Kopieren der CP/M-Disketten und Dateien .......................... 7- 15 7.5 Steuern der Ein- und Ausgabe ..................................... 7- 19 7.6 Arbeiten unter CP/M .............................................. 7- 24 7.7 Erweiterungen des CP/M 3.0 ....................................... 7- 28 7.8 CP/M 3.0-Befehlsübersicht ........................................ 7- 34 7.9 CP/M 3.0-Befehlsbeschreibungen ................................... 7- 39 8. Fehlermeldungen 8.1 BASIC-Fehlermeldungen .......................................... 8- 1 8.2 Floppy-Disk-Fehlermeldungen .................................... 8- 6 Anhang A: Zeichencode-Tabellen, Steuercodes Anhang B: Speicherorganisation Anhang C: Maschinensprache-Monitor Anhang D: Besonderheiten der DIN-Tastatur Anhang E: Registerzuordnungen beim SID und VIC Anhang F: Musiknotentabelle Anhang G: Besonderheiten im C64-Modus (Funkt.-Tasten, Grafik) Anhang H: Organisation der zero page Anhang I: BASIC-Abkürzungen Anhang J: Definition von anwenderspezifischen Zeichensätzen Anhang K: Abgeleitete mathematische Funktionen Anhang L: Steckerbelegungen Anhang M: Übertragung von BASIC4-Programmen nach BASIC7 ALLGEMEINE HINWEISE ZU DIESEM HANDBUCH Das Bildsignal des 80-ZEICHEN-MODUS IST NUR AM RGBI-AUSGANG vorhanden, nicht am Video- bzw. Fernsehausgang, d.h. bei Anschluß eines Fernsehgerätes oder eines Monitors an der Fernsehbuchse bzw. an der Videobuchse kann nur im 40-Zeichen-Modus gearbeitet werden. Umgekehrt ist der 40-Zeichen-Modus nicht am RGBI-Ausgang verfügbar. Die mitgelieferte CP/M-Systemdiskette ist beidseitig beschreiben. Wir empfeh- len Ihnen, von jeder Seite eine Arbeitskopie anzufertigen und die Original- diskette an einem sicheren Ort aufzubewahren. ALLE INFORMATIONEN, DIE IN DIESEM HANDBUCH UNTER C128 BESCHRIEBEN SIND, GELTEN EBENFALLS FÜR DEN C128D. [SEITE 1-1] ********************* * * * 1. EINFÜHRUNG * * * ********************* Machen Sie Bekanntschaft mit dem neuen C128 von Commodore, dem "großen Bruder" des weltweit bekannten C64. Der neue C128 erlaubt Ihnen die Auswahl zwischen drei Betriebsarten, so daß er nahezu all Ihren speziellen Wünschen und Anforderungen gerecht wird. * Der C128-Modus - Hierfür gibt es das neue BASIC 7.0. Eine um viele Funktionen und Befehle erweiterte BASIC-Version, die einen Speicher von 128 kByte unterstützt. * Der C64-Modus - Ist absolut kompatibel zum C64. Es ist möglich, alle Software des C64 zu nutzen. * Der CP/M-Modus - Ermöglicht den Einsatz sämtlicher Software, die für die Betriebssysteme CP/M 3.0 und CP/M 2.2 geschreiben wurde. Die Umschaltung zwischen den Betriebs-Modi kann programmiert erfolgen. Aufgrund der Softwarekompatibilität zum C64 und zum Betriebssystem CP/M 3.0 ist ein fast unübersehbares Softwareangebot einsetzbar. Damit ist der Commodore 128 einzigartig in seiner Klasse. [SEITE 1-2] DIE KENNZEICHEN DES COMMODORE 128D * 128 kByte Arbeitsspeicher * Erweiterbar bis 512 kByte Speicherkapazität * 40 und 80 Zeichen pro Zeile (80 Zeichen nur in Verbindung mit RGBI- oder Monochrom-Monitor zur Darstellung von 80 Zeichen pro Zeile) * 16 Farben mit hochauflösender Grafik * Integriertes BASIC 7.0 mit mehr als 150 Befehlen * BASIC-Befehle für Grafik und Sound DAS KEYBOARD DES COMMODORE 128D * Ergonomische Tastatur * Numerischer Tastenblock mit 14 Tasten DAS INTEGRIERTE 5,25-ZOLL FLOPPY-LAUFWERK * Doppelseitige Speicherung * MFM Double Density (CP/M) * Lesen von EPSON, IBM, KAYPRO und OSBORNE CP/M-Disketten * Speicherkapazität 336 kByte (formatiert) * Serielle Commodore Schnittstelle * Datenübertragungsrate bis zu 5200 Zeichen/Sekunde * Kompatibel zum Commodore 1541 Floppy-Disk-Drive * Enthält DOS Shell Utility auf der Test-Demo-Diskette DREI VERSCHIEDENE BETRIEBSSYSTEME * COMMODORE 64 (BASIC 2.0) * COMMODORE 128 (BASIC 7.0) * CP/M PLUS VERSION 3.0 [SEITE 2-1] ****************************************************************************** 2. ALLGEMEINE EIGENSCHAFTEN VON BASIC 2.1 Betriebsarten von BASIC 2.2 BASIC-Zeilenformat und -Zeichenvorrat 2.3 Reservierte Wörter 2.4 BASIC-Konstanten 2.5 BASIC-Variablen 2.6 Genauigkeit numerischer Werte 2.7 Numerische Ausdrücke und Operatoren 2.8 Ausdrücke und Operatoren mit Zeichenketten ****************************************************************************** 2. ALLGEMEINE EIGENSCHAFTEN VON BASIC ===================================== Dieses Kapitel enthält wichtige Informationen über viele grundlegende Eigen- schaften des BASIC-Interpreters und sollte vor der Erstellung von BASIC- Programmen von denjenigen Andwendern beachtet werden, die mit dem Programm- ieren in Commodore-BASIC noch keine Erfahrung haben. Aber auch für den Fach- mann enthält dieses Kapitel viel Wissenswertes. 2.1 BETRIEBSARTEN VON BASIC --------------------------- Der BASIC-Interpreter kennt grundsätzlich zwei Betriebsebenen: die Befehls- ebene (Direktmodus) und die Programmebene. Die BEFEHLSEBENE oder der DIREKTMODUS ist aktiv, wenn der Rechner einge- schaltet oder wenn ein BASIC-Programm ordnungsgemäß oder durch Ausgabe einer Fehlermeldung beendet wurde. Sie ist durch die Bildschirmmeldung ,---------------------------------------------. | READY. | `---------------------------------------------' und darunter wartendem Cursor (Positionsanzeiger) gekennzeichnet. In der Befehlsebene können fast alle Befehle, Anweisungen und Funktionen des Interpreters ausgeführt werden, indem diese ohne vorangestellte Zeilennummer eingegeben werden. Drücken der RETURN-Taste schließt in jedem Fall die Eingabe ab und übergibt sie dem Interpreter zur Ausführung. Nach der Ausführung befindet sich BASIC wieder in der Befehlsebene. ,--------------------------------------------. Beispiel 1: | READY. | | PRINT 5*2 | | 10 | | READY. | `--------------------------------------------' Wird dem eingegebenen Befehl, der Anweisung oder Funktion jedoch eine Zahl vorangestellt, so übernimmt der Interpreter diese Zeile als Programmzeile in den Hauptspeicher und führt die darin enthaltenenen Anweisungen erst nach Eingabe des RUN-Befehls oder einer auf diese Zeile bezogenen GOTO-Anweisung aus. Auf diese Weise können Programme eingegeben werden. [SEITE 2-2]^ ,--------------------------------------------. Beispiel 2: | READY. | | 10 PRINT"ERGEBNIS IST"; | | 20 PRINT 5*2 | | RUN | | ERGEBNIS IST 10 | | READY. | `--------------------------------------------' In der PROGRAMMEBENE befindet sich der Interpreter, sobald der Anwender das eingegebene Programm gestartet hat. Der Cursor (Positionsanzeiger) verschwin- det dann (Ausnahme ist hier die INPUT-Anweisung für die Daten-eingabe über Tastatur) und erscheint erst wieder, wenn der Interpreter nach der Programm- ausführung wieder auf die Befehlsebene zurückkehrt (s. oben Beispiel 2). 2.2 BASIC-ZEILENFORMAT UND -ZEICHENVORRAT ----------------------------------------- Ein BASIC-Programm besteht grundsätzlich aus Programmzeilen, die das folgende Format haben müssen: nnnnn Befehl [:Befehl...][:REM Kommentar] 'nnnnn' - Eine Zeilennummer als ganze Zahl zwischen 0 und 63999, die die Reihenfolge der Programmzeilen im Hauptspeicher festlegt und auch als Bezugs- nummer für Programmverzweigungen dient. 'Befehl' - Ein beliebiger BASIC-Befehl oder eine beliebige BASIC-Anweisung, -Funktion oder -Variable (s. Kapitel 4.6 und 5.2). Mehrere solcher Befehle in einer Zeile müssen durch Doppelpunkte (:) voneinander getrennt werden. 'Kommentar' - Freier Text zur Kommentierung des Programms, der nach einer REM- Anweisung folgt. * Anmerkung: Die Gesamtlänge einer BASIC-Programmzeile darf 160 Zeichen nicht überschreiten. (Im C64-Modus max. 80 Zeichen) [SEITE 2-3] Neben den Groß- oder Kleinbuchstaben des lateinischen Alphabets sowie den Ziffern 0 bis 9 kennt BASIC eine Reihe von Sonderzeichen, die eine besondere Bedeutung haben: +----------------------------------------------------------------------------+ | Zeichen Bedeutung | | | | + Plussymbol oder Verkettungssymbol für Zeichenketten | | - Minussymbol oder Bindestrich | | * Multiplikationssymbol oder Stern | | / Divisionssymbol oder Schrägstrich | | ^ Potenzierungssymbol | | = Gleichheitszeichen oder Zuweisungssymbol | | < Kleiner-als-Symbol oder linke spitze Klammer | | > Größer-als-Symbol oder rechte spitze Klammer | | ( linke Klammer | | ) rechte Klammer | | [ linke eckige Klammer | | ] rechte eckige Klammer | | % Typsymbol für ganze Zahlen oder Prozentzeichen | | $ Typsymbol für Zeichenketten oder Dollarzeichen | | . Dezimalpunkt oder Punkt | | , Tabulierungszeichen oder Komma | | : Trennzeichen für Befehle oder Doppelpunkt | | ; Zeilenvorschubunterdrückung oder Semikolon | | " Zeichenketten-Anfang bzw. -Ende oder Anführungszeichen | | ? Abkürzung für PRINT-Anweisung oder Fragezeichen | +----------------------------------------------------------------------------+ Alle diese Zeichen können auch als normale druckbare Zeichen Bestandteil von Zeichenketten sein. Weitere druckbare Zeichen sind in der vollständigen ASCII- Zeichencodetabelle im Anhang A zusammengestellt. 2.3 RESERVIERTE WÖRTER ---------------------- Die für den BASIC-Interpreter reservierten Wörter sind die Bezeichnungen für die verschiedenen Befehle, Anweisungen, Funktionen, Variablen und logischen Operatoren. Sie dürfen nicht als Variablennamen verwendet werden. Im folgenden sind alle reservierten Wörter alphabetisch zusammengestellt. [SEITE 2-4]^ ABS DLOAD INPUT# QUIT STEP AND DO INT STOP APPEND DOPEN RCLR SWAP ASC DRAW JOY RDOT SYS ATN DS READ AUTO DSAVE KEY RECORD TAB DS$ REM TAN BACKUP DVERIFY LEFT$ RENAME TEMPO BANK LEN RENUMBER THEN BEGIN EL LET RESTORE TI BEND ELSE LIST RESUME TI$ BLOAD END LOAD RETURN TO BOOT ENVELOPE LOCATE RGR TRAP BOX ER LOG RIGHT$ TRON ERR$ LOOP RND TROFF BSAVE EXIT RREG BUMP EXP MID$ RSPCOLOR UNTIL MONITOR RSPPOS USING CATALOG FAST MOVSPR RSPRITE USR CHAR FETCH RUN CHR$ FILTER NEW RWINDOW VAL CIRCLE FNxx NEXT VERIFY CLOSE FOR NOT SAVE VOL CLR FRE SCALE CMD OFF SCNCLR WAIT COLLECT GET ON SCRATCH WHILE COLLISION GETKEY OPENM SGN WIDTH COLOR GO OR SIN WINDOW CONCAT GOSUB SLEEP CONT GOTO PAINT SLOW XOR COPY GRAPHIC PEEK SOUND GSHAPE PEN SPC DATA PLAY SPRCOLOR DCLEAR HEADER POINTER SPRDEF DCLOSE HELP POKE SPRITE DEC HEX$ POS SPRSAV DEF POT SQR DELETE IF PRINT SSHAPE DIM INSTR PRINT# ST DIRECTORY INPUT PUDEF STASH [SEITE 2-5]^ 2.4 BASIC-KONSTANTEN -------------------- Konstanten sind aktuelle Werte, die der BASIC-Interpreter während der Pro- grammausführung verwendet. Er unterscheidet dabei zwischen Zeichenketten- Konstanten und numerischen Konstanten. Eine ZEICHENKETTENKONSTANTE ist eine Folge von bis zu 255 beliebigen (alpha- numerischen) Zeichen, die in Anführungszeichen (") eingeschlossen ist. Z.B.: "HAUS" "Hund und Katze" "DM 12.80" NUMERISCHE KONSTANTEN sind positive oder negative Zahlen, die außer dem Vor- zeichen nur einen Dezimalpunkt (KEIN Komma) enthalten dürfen. Der Interpreter unterscheidet drei verschiedene Arten von numerischen Konstanten: GANZZAHLIGE KONSTANTEN sind ganze Zahlen im Bereich zwischen -32768 und +32767 ohne Dezimalpunkt. Z.B.: 125 FESTKOMMAKONSTANTEN sind alle positiven oder negativen reelen Zahlen mit einem Dezimalpunkt. Z.B.: 15.12 GLEITKOMMAKONSTANTEN sind alle positiven oder negativen Zahlen in Exponential- darstellung (wissenschaftliche Darstellung). Sie bestehen aus einer ganzen oder einer Festkommazahl (Mantisse) mit oder ohne Vorzeichen, gefolgt vom Buchstaben E und einer ganzen Zahl im Bereich zwischen -39 und +38 mit oder ohne Vorzeichen, die den Exponenten zur Basis 10 darstellt. Z.B.: [SEITE 2-6]^ 15E-3 gleichbedeutend mit 0.015 146.285E-6 gleichbedeutend mit 0.000146285 Der Interpreter akzeptiert Gleitkommakonstanten im Bereich von 1.7E+38 bis 2.9E-39 und -2.9E-39 bis -1.7E+38. 2.5 BASIC-VARIABLEN ------------------- Variablen sind Namen, die Werte repräsentieren, welche in einem BASIC-Programm verwendet werden. Der Interpreter unterscheidet dabei zwischen * Zeichenketten-Variablen * numerischen Variablen ZEICHENKETTENVARIABLEN dürfen aus bis zu 255 Zeichen bestehen. Die Anzahl dieser Zeichen bestimmt die Länge des Variablenwertes. NUMERISCHE VARIABLEN haben immer einen Wert, der aus einer Zahl besteht. Der Wert einer Variablen kann dieser explizit vom Programmierer oder, als Ergebnis von Programmoperationen, vom Programm zugewiesen werden. Werden Variablen benutzt, ehe ihnen ein Wert zugewiesen wurde, ist ihr Wert im Fall von numerischen Variablen 0 und im Fall von Zeichenkettenvariablen eine leere Zeichenkette der Länge 0 (Leer-String). 2.5.1 VARIABLENNAMEN UND -TYPEN ------------------------------- Der BASIC-Interpreter akzeptiert beliebig lange Variablennamen, interpretiert jedoch nur die ersten 2 Zeichen sowie ggf. das letzte, das den Variablentyp definiert (s.u.) und eines der Sonderzeichen $ oder % sein muß, wenn ein anderer Typ als Gleitkomma definiert werden soll. [SEITE 2-7]^ Ein Variablenname muß als erstes Zeichen einen Buchstaben haben und darf aus Buchstaben und Ziffern in jeder beliebigen Kombination bestehen. Er darf kein reserviertes BASIC-Wort (s. Kapitel 2.4) sein. Beispiele: SIN=101 verboten (SIN-Funktion) FN$="NAME" verboten (Benutzerfunktion DEFFN) Der Name einer Variablen dient nicht nur ihrer Benennung, sondern auch der Definition ihres Typs. ZEICHENKETTENVARIABLEN werden durch ein $ als letztem Zeichen im Namen defi- niert. Z.B.: C$="COMMODORE" NUMERISCHE GANZZAHLVARIABLEN (Typ integer) werden durch ein % als letztem Zei- chen im Namen definiert: TAG%=30 NUMERISCHE GLEITKOMMAVARIABLE (Typ real) haben kein Sonderzeichen am Namens- ende: ZINS=15.84 Je nach Art der numerischen Variablen ist der Platzbedarf bei Ganzzahlvariablen 2 Bytes Gleitkommavariablen 5 Bytes (10 Stellen) 2.5.2 FELDVARIABLEN ------------------- Ein Feld ist eine Gruppe oder Tabelle von numerischen oder Zeichenketten- werten, die durch einen Variablennamen repräsentiert wird. Jeder dieser Werte wird als Feldelement bezeichnet und mit einem Index zum Varaiblennamen be- schrieben. Dieser Index ist eine ganze Zahl oder ein ganzzahliger Ausdruck. Einem Feldvariablennamem sind genausoviele Indizes zugeordnet, wie das Feld Dimensionen hat. Die Dimensionierung eines Feldes, mit der gleichzeitig auch die Benennung verbunden ist, erfolgt mit der Anweisung DIM (s. dort in Kapitel 5.2). Beispiele: [SEITE 2-8] DIMX(25) Ein eindimensionales Gleitkommafeld X mit 26 Elementen (0 bis 25) wird dimensioniert. DIMX$(2,6) Ein zweidimensionales Zeichenkettenfeld mit 21 Elementen (3*7) wird dimensioniert. Mit der Dimensionierung werden alle Feldelemente des dimensionierten Feldes auf Null gesetzt. Der Index bestimmt die Position eines Elementes im Feld. Die maximale Anzahl von Elementen in jeder Dimension ist 32767 und es sind maximal 255 Dimensionen möglich. Auf jeden Fall begrenzt der verfügbare Speicher die Größe eines Feldes. Bei zweidimensionalen Feldern gibt der erste Index grundsätzlich die Zeile und der zweite Index die Spalte der durch ein solches Feld gebildeten Tabelle an. Eindimensionale Felder mit bis zu 11 Elementen brauchen nicht dimensioniert zu werden. Wird in einem Programm z.B. die Anweisung A(6)=12.3 verwendet, ohne daß vorher A dimensioniert wurde, so führt der Interpreter in- tern die Anweisung DIMA(10) aus und dimensioniert damit das Feld selbst. Für die Namensvergabe und den Typ gelten dieselben Regeln wie für einfache Variablen (s. Kapitel 2.5.1). 2.6 GENAUIGKEIT NUMERISCHER WERTE --------------------------------- Numerische Werte können, wie bereits erwähnt, intern als ganze Zahlen oder als reelle Zahlen gespeichert werden. Ganzzahlige Werte werden in zwei Byte des Hauptspeichers abgelegt. Reelle Werte werden als Gleitkommazahlen mit einer Genauigkeit bis zu 10 Stellen gespeichert. [SEITE 2-9] Konstanten, die keine ganzen Zahlen sind, können folgendermaßen geschrieben werden: * bis zu 10 Zeichen z.B. 100.59 * Exponentialdarstellung mit E z.B. 3.57E-05 2.7 NUMERISCHE AUSDRÜCKE UND OPERATOREN --------------------------------------- Ein numerischer Ausdruck kann eine numerische Konstante oder Variable oder eine Kombination aus numerischen Konstanten, Variablen und Operatoren zur Berechnung eines einzelnen Wertes sein. Die Operatoren führen dabei mit den Werten mathematische oder logische Operationen durch. Der BASIC-Interpreter kennt vier verschiedene Kategorien von Operatoren: * arithmetische Operatoren * Vergleichsoperatoren * logische Operatoren * Funktionsoperatoren 2.7.1 Arithmetische Operatoren ------------------------------ Es gibt sechs arithmetische Operatoren. Es sind dies in der Reihenfolge ihrer Berücksichtigung (mathematische Hierarchie) in einem numerischen Ausdruck: Operator Operation Beispiel ^ Potenzierung A^5 - Negation -A *, / Multiplikation, Division A*5, A/5 +, - Addition, Subtraktion A+5, A-5 2.7.2 VERGLEICHSOPERATOREN -------------------------- Vergleichsoperatoren dienen dem Vergleich zweier numerischer oder Zeichen- kettenwerte. Das Ergebnis ist entweder logisch "wahr" mit dem Wert -1 oder logisch "falsch" mit dem Wert 0 (Null) und wird meistens in Verbindung mit der IF-Anweisung (s. dort in Kapitel 5.2) zur Steuerung des Programmablaufes verwendet. [SEITE 2-10] Im folgenden sind die sechs verschiedenen Vergleichsoperatoren, die der BASIC- Interpreter kennt, tabellarisch zusammengestellt. Operator Vergleich auf Beispiel = Gleichheit A=B <>, >< Ungleichheit A<>B, A> größer als A>B <=, =< kleiner als oder gleich A<=B, A==, => größer als oder gleich A>=B, A=>B Wenn in einem Ausdruck sowohl arithmetische als auch Vergleichsoperatoren vor- kommen, so werden zuerst die arithmetischen Operatoren abgearbeitet. Beispiele: A+B < (X-Y) / Z Dieser Ausdruck ist "wahr" (liefert den Wert -1), wenn der Wert von A+B kleiner ist als der Wert X-Y dividiert durch Z. 100 IF SIN(X)<0 THEN 1000 Wenn der SIN(X) negativ wird, liefert der Vergleich ein "wahres" Ergebnis (-1) und das Programm verzweigt nach Zeile 1000. Bei Zeichenkettenvergleichen wird von beiden Ketten zeichenweise der CBM- ASCII-Code verglichen. Es werden alle Zeichen, also auch führende und nachfolgende Leerstellen verglichen. Die Wirkung ist am besten an folgenden Beispielen zu erkennen, die alle logisch "wahr" sind, also den Wert -1 liefern: "AA"<"AB" "Aa"<"AA" "HAUS"="HAUS" "HAUS">"HANS" "A!"<"A$" "U">"U" X$="12":X$<"13" [SEITE 2-11] 2.7.3 LOGISCHE OPERATOREN ------------------------- Logische Operatoren dienen zum Testen von Mehrfachvergleichen, zur Bit- Manipulation oder zum Durchführen Boolescher Operationen mit numerischen Werten. Ein logischer Operator verknüpft zwei Operanden als Kombination aus "wahr"- und "falsch"-Werten bitweise und liefert als Ergebnis einen Wert, der entweder als "wahr" (von Null verschieden) oder als "falsch" (Null) interpretiert wird. Der Interpreter führt Operationen mit logischen Operatoren in einem gemischten Ausdruck NACH den arithmetischen und den Vergleichsoperationen durch. Der Interpreter kennt drei verschiedene logische Operatoren, die im folgenden in der Reihenfolge, wie sie bearbeitet werden, mit ihren Wahrheitstabellen dargestellt werden: Operator Operand 1 Operand 2 Ergebnis NOT (log. Komplement) wahr - falsch falsch - wahr AND (Konjunktion) wahr wahr wahr wahr falsch falsch falsch wahr falsch falsch falsch falsch OR (Disjunktion) wahr wahr wahr wahr falsch wahr falsch wahr wahr falsch falsch falsch Genau wie die Vergleichsoperatoren über ihr Ergebnis zur Steuerung des Pro- grammablaufes beitragen können, kann dies auch durch die Verknüpfung von zwei oder mehreren Vergleichen durch logische Operatoren geschehen, die wiederum "wahr- und "falsch"-Werte liefern (s.a. IF-Anweisung in Kapitel 5.2). [SEITE 2-12] Die folgenden Beispiel-Programmzeilen sollen dies verdeutlichen: ,--------------------------------------------. | 100 IF D<200 AND F<4 THEN 80 | | 110 IF I>10 OR K<0 THEN 50 | | 120 IF NOT P THEN 100 | `--------------------------------------------' Die logischen Operatoren arbeiten intern folgendermaßen: Zunächst werden die beiden Operanden in ganze, vorzeichenbehaftete Zweierkom- plement-16-Bit-Zahlen im Bereich zwischen -32768 und +32767 umgewandelt. Sind die Operanden größer oder kleiner, so wird die Fehlermeldung ,--------------------------------------------. | ILLEGAL QUANTITY ERROR | (unerlaubter Betrag) `--------------------------------------------' angezeigt. Sind die beiden Operanden 0 und/oder -1, so liefert eine logische Operation ebenfalls 0 oder -1. Die Operation wird auf jeden Fall bitweise durchgeführt, d.h. jedes Ergebnis-Bit wird durch die beiden entsprechenden Bits in den Operanden bestimmt. Dabei bedeutet ein 1-Bit "wahr"und ein 0-Bit "falsch". Dadurch ist es möglich, mit Hilfe der logischen Operatoren das Bitmuster von Speicherzellen zu testen. Z.B. kann ein Byte an einer Ein-/Ausgabeschnitt- stelle maskiert werden, um den Zustand eines bestimmten Bits zu testen (s.a. WAIT-Anweisung in Kapitel 5.2). Auch kann mit dem OR-Operator in einem bestimmten Byte ein ganz bestimmtes Bitmuster erzeugt werden. Die folgenden Beispiele sollen die Arbeitsweise der logischen Operatoren erläutern: 63 AND 16 = 16 0000000000111111 63 AND 0000000000010000 16 0000000000010000 = 16 15 AND 14 = 14 0000000000001111 15 AND 0000000000001110 14 0000000000001110 = 14 -1 AND 8 = 8 1111111111111111 -1 AND 0000000000001000 8 0000000000001000 = 8 [SEITE 2-13] 4 OR 2 = 6 0000000000000100 4 OR 0000000000000010 2 0000000000000110 = 6 10 OR 10 = 10 0000000000001010 10 OR 0000000000001010 10 0000000000001010 = 10 -1 OR -2 = -1 1111111111111111 -1 OR 1111111111111110 -2 1111111111111111 = -1 NOT 1 = -2 0000000000000001 1 NOT 1111111111111110 = -2 Der Operator NOT bildet das Einerkomplement des Operanden. 2.7.4 FUNKTIONSOPERATOREN ------------------------- Funktionsoperatoren (BASIC-Funktionen) werden dazu verwandt, an einem Operan- den eine festgelegte Operation auszuführen. Solche im BASIC-Interpreter ent- haltenen Funktionen sind z.B. SQR (Quadratwurzel ziehen) oder SIN (trigono- metrischer Sinus). Es ist auch möglich, mit Hilfe der DEFFN-Anweisung eigene Funktionen zu definieren. Einzelheiten zu den Funktionen sind in den Kapiteln 4.6 und 5.2 ausführlich beschrieben. 2.7.5 MATHEMATISCHE HIERARCHIE ------------------------------ Bei der Bearbeitung numerischer Ausdrücke und Operatoren hält der BASIC- Interpreter folgende mathematische Hierarchie ein (1 höchste, 8 niedrigste Priorität): 1. Funktionsaufrufe 2. Potenzierung (^) 3. Negation (Wandlung von Plus nach Minus u. umgekehrt) 4. Multiplikation und Division (*, /) [SEITE 2-14] 5. Addition und Subtraktion (+, -) 6. logisches Komplement (NOT) 7. Konjunktion (AND) 8. Disjunktion (OR) Aufeinanderfolgende Operatoren derselben Hierarchiestufe werden von links nach rechts abgearbeitet. Die Hierarchie kann durch Verwendung von Klammern aufge- hoben werden. Geklammerte Ausdrücke werden grundsätzlich zuerst bearbeitet. Bei geschalteten Klammerausdrücken wird grundsätzlich der innerste Klammer- ausdruck zuerst bearbeitet. Folgende Beispiele verdeutlichen dies: 4+1*2 ergibt 6 (4+1)*2 ergibt 10 100*4/2-1 ergibt 199 100*(4/2-1) ergibt 100 100*(4/(2-1)) ergibt 400 2.8 ZEICHENKETTENAUSDRÜCKE UND OPERATIONEN MIT ZEICHENKETTEN ------------------------------------------------------------ Ein Zeichenkettenausdruck kann eine Zeichenkettenkonstante oder -Variable oder eine Kombination aus Zeichenkettenkonstanten, -variablen und -operatoren zur Erzeugung einer neuen Zeichenkette sein. Die Operatoren kombinieren dabei Zeichenketten zu neuen Zeichenketten. Der BASIC-Interpreter kennt zwei Typen von Zeichenkettenoperatoren: * Verkettungsoperator * Funktionsoperator oder Zeichenkettenfunktion Da der Zeichenkettenvergleich prinzipiell ein numerischer Vergleich ist, ist er im Kapitel 2.7.2 bei den Vergleichsoperatoren beschrieben. [SEITE 2-15] 2.8.1 VERKETTUNGSOPERATOR ------------------------- Zeichenketten können mit dem Plus-Zeichen (+) aneinandergefügt werden, um neue Zeichenketten zu bilden. Z.B.: ,--------------------------------------------. | 10 A$="REGEN":B$="SCHIRM" | | 20 PRINT A$+B$+"E" | | RUN | | REGENSCHIRME | | READY. | `--------------------------------------------' 2.8.2 ZEICHENKETTENFUNKTIONEN ----------------------------- Wie bei den numerischen Funktionen (s. Kapitel 2.7.4) führt die Zeichenketten- funktion an einem oder mehreren Operanden eine festgelegte Operation aus, die als Ergebnis eine Zeichenkette liefert. Solche im BASIC-Interpreter enthal- tenen Funktionen sind z.B. CHR$ (Bildung einer Ein-Zeichen-Kette aus einem ASCII-Code) oder STR$ (Bildung eines Zeichenkettenäquivalents zu einem numerischen Ausdruck). Es ist jedoch nicht möglich, eigene Zeichenketten- funktionen mit Hilfe der DEF FN-Anweisung zu definieren. Einzelheiten zu den Zeichenkettenfunktionen sind in den Kapiteln 4.6 und 5.2 ausführlich be- schrieben. +--------------------------------------------------------------------+ | | | 3. Eingeben und Verwalten von BASIC-Programmen | | ============================================== | | 3.1 Tastatur | | 3.2 Eingeben von Programmzeilen | | 3.3 Ersetzen oder Ändern von Programmzeilen | | 3.4 Speichern von BASIC-Programmen | | 3.5 Laden von BASIC-Programmen | | | +--------------------------------------------------------------------+ [SEITE 3-1] 3.1 TASTATUR ------------ Abbildung 3.1 auf der nächsten Seite zeigt die Tastatur des C128. Im C128- Modus können alle Tasten verwendet werden, im C64-Modus nur die schraffierten Tasten. In diesem Abschnitt werden alle die Tasten beschrieben, die in beiden Modi verwendet werden können, also die schraffierten Tasten. TASTATURMODI: Die Tastatur des C128 erlaubt zwei Betriebsmodi, nämlich * Großbuchstaben/Grafik-Symbole * Kleinbuchstaben/Großbuchstaben. Nach dem Einschalten des Rechners ist der Großbuchstaben/Grafik-Modus aktiv. Um zwischen den beiden Modi hin- und herzuschalten, werden die Umschalttaste (SHIFT) und die C=-Taste (Commodore-Taste) zusammen gedrückt. SCHREIBMASCHINENTASTATUR: Den Hauptteil der Tastatur nimmt das Schreib- maschinen-Tastenfeld ein, das auch so funktioniert. Neben den Buchstaben- und Zeichentasten gibt es eine Reihe von Bedienungs- tasten, deren Funktion teilweise anders ist als bei der Schreibmaschine. UMSCHALTTASTEN: Die Umschalttasten (SHIFT-Tasten) dienen je nach aktivem Tastaturmodus zur Eingabe von Großbuchstaben oder den Sonderzeichen, die auf den doppelt belegten Tasten oben abgebildet sind (z.B. < >) bzw. von Grafik- symbolen, die vorne auf den Buchstabentasten abgebildet sind. Entweder die linke oder die rechte Umschalttaste muß zusammen mit der entsprechenden Zeichentaste gedrückt werden. Die Umschaltung auf Großbuchstaben kann auch mit der Feststeller-Taste (SHIFT LOCK) verriegelt werden. [SEITE 3-2] Abb. 3.1: Tastatur des C128 Abb. 3.1: Tastatur des C128D [SEITE 3-3] RETURN-Taste: Die Return-Taste entspricht der Wagenrücklauftaste bei elek- trischen Schreibmaschine. Sie schließt die Eingabe einer Zeile ab. RESTORE-Taste: Die RESTORE-Taste dient zusammen mit der RUN/STOP-Taste dazu, den Rechner auf seine Standardparameter (dunkelgrauer Bildschirm mit hell- grünem Rand (C128-Modus) bzw. blauer Bildschirm (C64-Modus) sowie Großbuch- staben/Grafikzeichen-Tastaturmodes) zurückzusetzen. CONTROL-Taste: Die CONTROL-Taste oberhalb der RUN/STOP-Taste dient zum Ein- geben spezieller Zeichen sowie zum Auslösen von besonderen akustischen Signalen, Bildschirm- oder Systemfunktionen. Auch hier wird die CONTROL-Taste niedergehalten und eine weitere Taste gedrückt. Eine häufig verwendete Funk- tion der CONTROL-Taste ist die Einstellung einer Farbe. Zu diesem Zweck werden die Control-Taste und eine der Zifferntasten in der oberen Reihe des Schreib- maschinen-Tastenfeldes gedrückt. Auf der Frontseite dieser Tasten sind die jeweiligen Farben (Zeichenfarbe im Textmodus) vermerkt. RUN/STOP-Taste: Drücken dieser Taste ohne SHIFT-Taste unterbricht die augen- blicklich vom Rechner ausgeführte BASIC-Anweisung und setzt ihn in den Direkt- modus. Zusammen mit der SHIFT-Taste wird das erste auf Kassette (C64-Modus) oder Diskette (C128-Modus) befindliche Protramm geladen und gestartet. C= (Commodore)-Taste: Diese Sondertaste hat zwei Funktionen: 1. Zusammen mit der SHIFT-Taste kann mit dieser Taste zwischen den beiden bereits erwähnten Tastatur-Modi hin- und hergeschaltet werden. 2. Zusammen mit den Zifferntasten in der oberen Reihe der Schreibmaschinen- tastatur kann eine Farbe aus einem zweiten Satz von acht Farben ausgewählt werden. 3. Im C128-Modus können bei eingeschalteter DIN-Tastatur Grafikzeiche eingegeben werden (s. Anhang D). CLR/HOME-Taste: Drücken der HOME-Taste setzt den Cursor in die linke obere Ecke des Bildschirms. Wird gleichzeitig die SHIFT-Taste niedergehalten, so wird zusätzlich der Bildschirm gelöscht. INST/DEL-Taste: Ohne gleichzeitiges Drücken der SHIFT-Taste wird das Zeichen links neben dem Cursor gelöscht. Alle Zeichen rechts vom gelöschten Zeichen werden, falls vorhanden, um eine Stelle nach links versetzt. Bei gleich- zeitigem Drücken der SHIFT-Taste wird an der Cursor-Position eine Leerstelle eingefügt (Einfügemodus). Alle Zeichen rechts davon, falls vorhanden, um eine Stelle nach rechts versetzt. Bei diesem Einfügemodus wird außerdem die direkte Wirkung der Cursor-Steuertasten aufgehoben und stattdessen ihr Steuercode in Form eines inversen Zeichens auf dem Bildschirm angezeigt. [SEITE 3-4]^ CRSR-Taste: Mit SHIFT-Taste wird der Cursor in dieselbe Spalte der darüber- liegenden Zeile gesetzt. In der obersten Zeile des Bildschirms hat diese Taste keine Funktion. Ohne SHIFT-Taste wird der Cursor in dieselbe Spalte der darunterliegenden Zeile gesetzt. In der untersten Zeile des Bildschirms bewirkt diese Taste ein Aufrollen des Bildschirms um eine Zeile. CRSR-Taste: Ohne SHIFT-Taste wird der Cursor um eine Stelle nach rechts in derselben Bildschirmzeile gesetzt. Steht er vorher am Zeilenende, so wird er auf den Anfang der folgenden Zeile gesetzt. In der rechten unteren Ecke des Bildschirms führt diese Taste zum Aufrollen des ganzen Bildschirms um eine Zeile. Mit der SHIFT-Taste wird der Cursor um eine Stelle nach links in der- selben Bildschirmzeile versetzt. Steht er vorher am Zeilenanfang, so wird er ans Ende der vorhergehenden Zeile gesetzt. In der linken oberen Ecke des Bildschirms hat diese Taste keine Funktion. Funktionstasten: Den acht Funktionstasten f1 bis f8, die in einem Block ober- halb der separaten Zehnertastatur angeordnet sind, sind im C128-Modus bestimm- te Zeichenfolgen (häufig benötigte BASIC-Befehle und -Anweisungen) zugeordnet, die beim Drücken der jeweiligen Taste auf dem Bildschirm angezeigt werden. Die Belegung dieser Tasten kann vom Anwender jedoch jederzeit für eigene Zwecke geändert werden (s. Kapitel 4.1, KEY-Anweisung in Kapitel 4.6 sowie Anhang G). 3.2 EINGEBEN VON PROGRAMMZEILEN ------------------------------- Der BASIC-Interpreter faßt jede Textzeile, die mit einer Zahl beginnt, als Programmzeile auf, wobei die Zahl die Zeilennummer darstellt. Eine BASIC-Programmzeile beginnt also immer mit einer Zahl, wird durch die Return-Taste beendet und darf maximal 160 Zeichen einschließlich des der RETURN-Taste zugeordneten Zeichencodes enthalten. Werden mehr Zeichen ein- gegeben, so werden diese beim Drücken der RETURN-Taste abgeschnitten, obwohl sie durch die Eingabe noch auf dem Bildschirm stehen. [SEITE 3-5] Alle BASIC-Schlüsselwörter und -Variablennamen müssen bei aktiviertem Klein- buchstaben/Großbuchstaben-Tastaturmodus grundsätzlich in Kleinbuchstaben eingegeben werden. Wird bei der Eingabe einer Programmzeile das Fragezeichen (?) als Abkürzung für die PRINT-Anweisung (s. dort in Kapitel 3) verwendet, so wandelt der Interpreter dies beim LIST-Befehl in das Schlüsselwort PRINT um, wodurch die Zeile ggf. länger als 80 Zeichen wird. In einem solchen Fall darf die Zeile länger als 80 Zeichen sein. Wird eine Programmzeile mit einer Zeilennummer eingegeben, die kleiner ist als die bis dahin eingegebene größte Zeilennummer, so fügt der Interpreter diese Zeile an der richtigen Stelle ins bereits eingegebene Programm ein. Programm- zeilen brauchen also nicht in der Reihenfolge aufsteigender Zeilennummern eingegeben zu werden. Wird eine Programmzeile mit einer Zeilennummer eingegeben, unter der bereits eine andere Programmzeile existiert, so wird die alte von der neuen Programm- zeile überschrieben. Hinzufügen einer Programmzeile zu einem Programm, das den Hauptspeicher bereits restlos füllt, führt zu der Fehlermeldung ,--------------------------------------------. | OUT OF MEMORY ERROR | (Hauptspeicher `--------------------------------------------' nicht ausreichend) wobei die Zeile nicht mehr hinzugefügt wird. Bei der Eingabe von Programmzeilen erfolgt keine Syntax-Prüfung. Erst wenn die Zeile vom Interpreter ausgeführt wird, wird die Syntax überprüft und ggf. eine Fehlermeldung (s. Kapitel 8.1) angezeigt. Bei Eingabe einer ungeraden Anzahl von Anführungszeichen (") wird der Anführungs-Modus eingeschaltet, bei dem wie beim Einfügungsmodus (s. INST- Taste in Kapitel 3.1) der Code einer ggfs. dann gedrückten Cursor-Steuertaste als inverses Zeichen auf dem Bildschirm dargestellt wird. Auf diese Weise können die Cursor-Steuerfunktionen mit Hilfe von Steuerzeichenketten in Verbindung mit der PRINT-Anweisung programmiert werden. [SEITE 3-6] 3.3 ERSETZEN ODER ÄNDERN VON EXISTIERENDEN PROGRAMMZEILEN --------------------------------------------------------- Wie bereits in Kapitel 3.2 erwähnt, werden existierende Programmzeilen ersetzt, indem eine neue Programmzeile mit der Zeilennummer der zu ersetzenden Zeile eingegeben wird. Dabei kann die neue Programmzeile auch kürzer oder länger als die zu ersetzende Zeile sein. Eine Programmzeile wird gelöscht, indem nur die Zeilennummer eingegeben und dann die RETURN-Taste gedrückt wird. Existiert die zu löschende Zeile nicht, so wird die Eingabe ohne Anzeigen einer Fehlermeldung ignoriert. Das ganze im Arbeitsspeicher befindliche BASIC-Programm kann mit dem Befehl NEW (s. dort in Kapitel 5.2) gelöscht werden. 3.3.1 ÄNDERN VON ZEILEN MIT DEM BILDSCHIRMEDITOR ------------------------------------------------ Jede auf dem Bildschirm sichtbare Zeile kann mit Hilfe des Bildschirmeditors, der immer dann aktiv ist, wenn BASIC sich in der Befehlsebene (Direktmodus) befindet oder ein Programm auf eine Tastatureingabe wartet, geändert werden. Dazu wird der Cursor (Positionsanzeiger) mit Hilfe der Cursor-Steuertasten (s. Kapitel 3.1) auf die gewünschte Position in der zu ändernden Zeile gesetzt, und dann wird die Änderung - ggf. auch unter Verwendung der INST/DEL- Taste - ausgefürht. Durch Drücken der RETURN-Taste wird die Änderung beendet, und die gesamte geänderte Programmzeile wird ins Programm eingefügt. Sollen auf dem Bildschirm nicht sichtbare Programmzeilen geändert werden, so werden diese zunächst mit dem LIST-Befehl (s. dort in Kapitel 5.2) auf dem Bildschirm angezeigt und dann wie oben beschrieben geändert. Die RETURN-Taste, die die Änderung einer Zeile beendet, kann bei jeder belie- bigen Cursor-Postition innerhalb der geänderten Zeile gedrückt werden. Der Interpreter übernimmt in jedem Fall die gesamte Programmzeile ins Programm. 3.3.2 ÄNDERN VON ZEILEN MIT SYNTAX-FEHLERN ------------------------------------------ Erkennt der Interpreter während der Programmausführung einen Syntax-Fehler, so meldet er dies unter Angabe der Zeilennummer, falls das Programm keine pro- grammierte Fehlerverarbeitung enthält. Die fehlerhafte Zeile muß mit LIST oder durch Drücken der HELP-Taste angezeigt und dann mit den oben beschriebenen Techniken geändert werden. Drücken der RETURN-Taste speichert die geänderte Zeile ins Programm, das dann erneut gestartet werden kann. [SEITE 3-7]^ Bei einer solchen Programmänderung müssen folgende Maßnahmen des Interpreters berücksichtigt werden: * Alle Variablen und Felder werden gelöscht (Wert oder Länge Null). * Das Programm kann NICHT mit dem CONT-Befehl (s. dort in Kapitel 5.2) fortgesetzt werden. Sollen vor der Änderung die Inhalte bestimmter Variablen oder Felder überprüft werden, muß der Interpreter durch DrÜcken der Taste RUN/STOP in die Befehls- ebene (Direktmodus) gesetzt werden. Dann kann die Überprüfung durch Anzeigen der betreffenden Variablen oder Felder mit PRINT erfolgen, die Zeile, die Zeile geändert und das Programm neu gestartet werden. 3.4 SPEICHERN VON BASIC-PROGRAMMEN ---------------------------------- Ein neu eingegebenes oder ein geändertes Programm muß für den Erhalt auf Kas- sette oder Diskette gespeichert werden. Diese Maßnahme wird mit dem SAVE- oder dem DSAVE-Befehl durchgeführt. Beide Befehle sind in den Kapiteln 5.2 und 4.6 so ausführlich beschrieben, daß hier eine weitere Erläuterung entfallen kann. 3.5 LADEN UND STARTEN VON BASIC-PROGRAMMEN ------------------------------------------ Um ein auf Kassette oder Diskette gespeichertes BASIC-Programm auszuführen, muß dieses zunächst in den Hauptspeicher des Rechners geladen werden. Diese geschieht im Direktmodus des Rechners mit den Befehlen LOAD, DLOAD oder RUN. Nach dem Laden mit LOAD oder DLOAD wird das Programm mit dem Befehl RUN gestartet. Die Befehle LOAD, DLOAD und RUN sind in den Kapiteln 5.2 bzw. 4.6 so ausführlich beschrieben, daß hier auf eine weitergehende Erläuterung verzichtet werden kann. [SEITE 4-1] KAPITEL 4 *** C128-Modus Der C128 meldet sich in diesem Modus, wenn der Rechner eingeschaltet oder der Reset-Knopf gedrückt wird. In diesem Modus stehen dem Anwender 128KBytes Hauptspeicher, wahlweise eine 40 oder 80 Zeichen breite Bildschirmdarstellung mit 25 Zeilen, ein BASIC- Interpreter mit gegenüber dem C64-Modus (s. Kapitel 5) erheblich erweitertem Befehlsumfang (BASIC 7.0), wahlweise eine deutsche DIN- oder eine amerikanische ASCII-Tastatur mit speziellen Bedienungs- und programmierbaren Funktionstasten sowie ein erheblich schnellerer Diskettenzugriff zur Verfügung. 4.1 Erweiterte Tastatur-Funktionen im C128-Modus Die in Kapitel 3 beschriebene und abgebildete Tastatur enthält eine Reihe von Tasten, denen nur im C128-Modus eine Funktion zugeordnet ist. Zehnertastatur: Rechts neben der Schreibmaschinentastatur befindet sich ein Block mit den zehn Zifferntasten, dem Dezimalpunkt, der Plus- und der Minus-Taste sowie einer Eingabetaste. Die Tasten haben dieselbe Funktion wie die entsprechenden Tasten der Schreibmaschinentastatur. Die ENTER-Taste entspricht dabei der RETURN-Taste. Dieser Tastenblock erleichtert die Eingabe großer Zahlenmengen und erlaubt mit Hilfe eines geeigneten Programms die Simulation eines Taschenrechners. Funktionstasten: Oberhalb der Zehnertastatur befinden sich 4 Funktionstasten für insgesamt 8 verschiedene programmierbare Funktionen. Die Funktionen f1, f3, f5 und f7 werden durch Drücken der entsprechenden Taste und die Funktionen f2, f4, f6 und f8 durch zusätzliches Niederhalten der SHIFT-Taste ausgeführt. Die Funktionen bestehen in simulierten Tastatureingaben und ggfs. dem Ausführen ganzer Befehle oder Befehlsketten. Nach dem Einschalten des Rechners sind den 8 Funktionstasten folgende Befehle zugeordnet: f1 GRAPHIC f2 DLOAD" f3 DIRECTORY f4 SCNCLR f5 DSAVE" f6 RUN f7 LIST f8 MONITOR [SEITE 4-2] Wird f1 gedrückt, so wird das Befehlswort GRAPHIC bei der aktuellen Cursor- Position angezeigt, und es brauchen nur noch die gewünschten Parameter (s. dort in Kapitel 4.6) eingegeben zu werden. Wird f2 (f1 zusammen mit SHIFT) gedrückt, so wird das Befehlswort DLOAD" bei der aktuellen Cursorposition angezeigt, und es braucht nur noch der gewünschte Dateiname mit abschließendem Anführungszeichen eingegeben zu werden. Wird f3 gedrückt, so wird der Befehl DIRECTORY ausgeführt, der das Disketten- verzeichnis der Diskette in einem angeschlossenen Floppy-Disk-Laufwerk mit der Geräteadresse 8 angezeigt. Wird f4 (f3 zusammen mit SHIFT) gedrückt, so wird der aktuelle Bildschirm mit dem Befehl SCNCLR gelöscht. Wird f5 gedrückt, so wird das Befehlswort DSAVE" bei der aktuellen Cursor- position angezeigt, und es braucht nur noch der gewünschte Dateiname mit abschließendem Anführungszeichen eingegeben zu werden. Wird f6 (f5 zusammen mit SHIFT) gedrückt, so wird der Befehl RUN ausgeführt, also das gerade im Hauptspeicher befindliche BASIC-Programm gestartet. Wird f7 gedrückt, so wird der Befehl LIST ausgeführt, also das gerade im Hauptspeicher befindliche BASIC-Programm auf dem Bildschirm gelistet. Wird f8 (f7 zusammen mit SHIFT) gedrückt, so wird der Maschinensprache- monitor mit dem Befehl MONITOR aufgerufen. Die voreingestelle Belegung der Funktionstasten kann jederzeit mit dem KEY-Befehl (s. dort in Kapitel 4.6) für jede beliebige Taste geändert oder einfach nur angezeigt werden. Cursor-Steuertasten: Die vier Tasten mit den Pfeil-Symbolen links neben den Funktionstasten dienen der einfachen Steuerung der Cursor-Bewegungen auf dem Bildschirm. Anders als beim C64-Modus gibt es hier für jede Cursor-Richtung eine separate Taste. Die Richtung wird durch den Pfeil auf der jeweiligen Taste angegeben. HOME-Taste: Wird die HOME-Taste zweimal aufeinanderfolgend gedrückt, so wird ein ggfs. definiertes Bildschirmfenster (s.a. WINDOW-Anweisung in Kapitel 4.6 sowie die Tastensequenzen ESC T und ESC B in diesem Abschnitt) aufgehoben und auf den gesamten Bildschirm zurückgesetzt. [SEITE 4-3]^ NO SCROLL-Taste: Wenn während der Anzeige von Daten auf dem Bildschirm dieser nach oben gerollt wird, so kann dies durch Drücken der NO SCROLL-Taste, die in dem Tastenblock links neben den Cursor-Steuertasten ganz rechts angeordnet ist, verhindert werden. Die Funktion dieser Taste ähnelt der SHIFT LOCK-Taste. Einmaliges Drücken verriegelt die Funktion (Bildschirmrollen unterdrückt). Nochmaliges Drücken entriegelt die Funktion (Bildschirmrollen erlaubt). 40/80 DISPLAY-Taste: Mit Hilfe dieser Taste kann zwischen den beiden Anzeigebreiten des C128-Modus hin- und hergeschaltet werden (gedrückt: 80- Zeichen-Anzeige). Voraussetzung ist jedoch, daß ein 80-Zeichen-Monitor (z.B. Commodore 1902) angeschlossen ist. Auch diese Taste verriegelt sich beim Drücken automatisch und wird bei erneutem Drücken wieder freigegeben. Die Umschaltung muß jedoch vor dem Einschalten oder Rücksetzen (Reset-Taste) des Computers erfolgen. LINE FEED-Taste: Drücken dieser Taste setzt den Cursor auf dieselbe Spalte der folgenden Zeile. HELP-Taste: Findet der Interpreter während der Abarbeitung einer Programmzeile einen Fehler, so meldet er dies mit einer Fehleranzeige (s. Kapitel 8.1). Wird nun die HELP-Taste gedrückt, so wird die fehlerhafte Zeile angezeigt und die Zeile wird ab der fehlerhaften Stelle je nach Bildschirmmodus entweder invers (40-Zeichen-Bildschirm) oder unterstrichen (80-Zeichen-Bildschirm) dargestellt. Auf diese Weise wird die Programmkorrektur sehr erleichtert. ASCII/DIN-Taste: Dies ist eine selbstverriegelnde Taste, mit der zwischen der deutschen DIN- und der amerikanischen ASCII-Tastatur umgeschaltet werden kann. Bei gedrückter (und damit verriegelter) Taste ist die deutsche DIN-Tastatur aktiviert. ALT-Taste: Mit dieser Taste kann eine alternative, selbstdefinierte Tastaturtabelle gewählt werden, in der fast allen Tasten der Schreibmaschinen- tastatur ein anderer Code zugeordnet werden kann. Dies ist z.B. dann hilf- reich, wenn Texte in einer fremden Sprache geschrieben werden müssen. Die Definition solcher Tabellen erfolgt durch Speichern von bestimmten Werten in besonderen Speicherplätzen (s. Anhang J). [SEITE 4-4] TAB-Taste: Drücken der TAB-Taste zusammen mit der SHIFT-Taste setzt an der aktuellen Cursor-Position einen Tabulator-Stop, der durch Drücken der TAB- Taste angesprungen werden kann. Voreingestellt sind Tabulatorstops alle 8 Spalten. ESC-Taste: Die ESC-Taste erlaubt zusammen mit den Buchstabentasten A bis Z eine Reihe von Sonderfunktionen für die Tastatur und den Bildschirm, die im folgenden beschrieben werden. Zur Ausführung der gewünschten Funktion wird zuerst die ESC-Taste gedrückt und wieder losgelassen. Anschließend wird die gewünschte Buchstabentaste gedrückt: Taste Funktion A Der automatische Einfügemodus wird eingeschaltet. Es werden solange Zeichen eingefügt, bis ESC-C gedrückt wird. B Die aktuelle Cursor-Position definiert die untere rechte Ecke eines Bildschirmfensters. C Der automatische Einfügemodus wird ausgeschaltet. D Die aktuelle Bildschirmzeile wird gelöscht und der Bildschirm unterhalb dieser Zeile wird um eine Zeile nach oben gerollt. E Setzt den Cursor-Modus von Blinken auf Konstantanzeige. F Setzt den Cursor-Modus von Konstantanzeige auf Blinken. G Erlaubt akustisches Klingeln durch CTRL-G. H Verbietet akustisches Klingeln durch CTRL-G. I Fügt oberhalb der aktuellen Zeile eine neue Zeile auf dem Bild- schirm ein. J Setzt den Cursor an den Anfang der aktuellen Zeile. K Setzt den Cursor hinter das letzte Zeichen in der aktuellen Zeile. L Erlaubt Bildschirm-Aufrollen. M Verbietet Bildschirm-Aufrollen [SEITE 4-5] N Schaltet den Bildschirm von Invers-Darstellung auf Normal- Darstellung (nur 80-Zeichen-Schirm). O Bewirkt ein Abschalten aller Modi (Blinken, Unterstreichen, Revers). P Die aktuelle Zeile wird vom Anfang bis zur Cursor-Position gelöscht. Q Die aktuelle Zeile wird von der Cursor-Position bis zum Zeilenende gelöscht. R Schaltet den Bildschirm von Normal-Darstellung auf Invers-Darstellung (nur 80-Zeichen-Schirm). S Schaltet Blockdarstellung für den Cursor ein. T Die aktuelle Cursor-Position definiert die obere linke Ecke eines Bildschirmfensters. U Schaltet Strichdarstellung für den Cursor ein (nur 80-Zeichen- Bildschirm) V Rollt den Bildschirm um eine Zeile nach oben. W Rollt den Bildschirm um eine Zeile nach unten. X Schaltet von einem 40-Zeichen-Monitor auf einen 80-Zeichen-Monitor um und umgekehrt. Y Schaltet voreingestelle Tabulatorstops (alle 8 Spalten) ein. Z Löscht alle eingestellen Tabulatorstops. @ Löscht den Bildschirm ab der aktuellen Cursor-Position. CTRL-Taste: Zusätzlich zu den Funktionen, die mit speziellen CTRL-Sequenzen im C64-Modus ausgelöst werden können (z.B. Farbwahl), erlaubt der C128-Modus eine Reihe von weiteren Funktionen, die durch Drücken einer der folgenden Tasten bei niedergehaltener CTRL-Taste ausgelöst werden können: [SEITE 4-6]^ Taste CHR$-Code Funktion B 2 Schaltet den Unterstreichungsmodus für alle angezeigten Zeichen ein (nur 80-Zeichen-Bildschirm) G 7 Löst ein akustisches Klingelzeichen aus. I 9 Löst einen Tabulatorsprung auf den nächsten Tabulator- stop aus. J 10 Führt einen Zeilenvorschub aus. K 11 Verbietet Umschaltung zwischen Klein/Groß- und Groß/Grafik- Zeichensatz. L 12 Erlaubt Umschaltung zwischen Klein/Groß- und Groß/Grafik- Zeichensatz. O 15 Schaltet Blinkdarstellung für alle angezeigten Zeichen ein (nur 80-Zeichen Bildschirm). X 24 Setzt oder löscht einen Tabulator-Stop. [ 27 ESC-Code. [SEITE 4-7] +----------------------------------------------------------------------------+ | ACHTUNG | | Die ESC- und CTRL- Funktionen können auch mit Hilfe der PRINT-Anweisung | | in einem Programm ausgeführt werden. Z.B.: | +----------------------------------------------------------------------------+ PRINT CHR$(27)+"M" verbietet Bildschirmrollen. PRINT CHR$(7) löst ein akustisches Klingelzeichen aus. Bei aktivierter DIN-Tastatur gilt für die Verwendung der Tasten zusammen mit der CTRL-Taste die ASCII-Tastaturbelegung. Besonderheiten der DIN/ASCII-Tastatur Anwender, die eine rein amerikanische Tastatur einsetzen wollen, können mit dem Befehl POKE 2757,129 [nur im 80-Zeichen-Modus] die Unterstützung der Tastaturumschaltung durch das Betriebssystem ausschal- ten. Diese Maßnahme sollte jedoch nur bei vorher aktivierter ASCII-Tastatur (freigegebene ASCII/DIN-Taste) ergriffen werden und kann nur durch Drücken des Reset-Knopfes wieder aufgehoben werden. Eine weitere Besonderheit der DIN-Tastatur stellt die Taste mit den beiden Accents in der obersten Reihe der Schriebmaschinentastatur dar. Wird diese Taste gedrückt, so wird der Accent angezeigt, der Cursor bleibt aber bei dieser Position stehen. Wird dann eine Buchstabentaste gedrückt, so prüft das Tastaturprogramm des Betriebssystems, ob diese Zeichenkombination erlaubt ist. Wenn nicht, wird nur der Buchstabe, andernfalls der akzentuierte Buchstabe angezeigt und der Cursor wird um eine Position nach rechts gesetzt. Damit Sie sich bei jeder aktivierten Tastatur auch zurechtfinden, sind auf einigen Tasten, die bei den beiden wählbaren Tastaturen unterschiedlich belegt sind, sämtliche Belegungen vermerkt. [SEITE 4-8] 4.2 Erweiterte Bildschirm-Funktionen im C128-Modus Im C128-Modus kann der Anwender zwischen einer 40- und 80-Zeichen-Bildschirm- anzeige wählen. Beide Anzeigemodi können in einem Programm verwendet werden. Die 40-Zeichen-Anzeige ist auch die, die für den C64-Modus gültig ist. Außerdem dient sie zur Darstellung all der vielfältigen grafischen Möglichkeiten, die der C128-Modus bietet (s.a. Kapitel 4.7 ff.). Die 80-Zeichen-Anzeige erlaubt die Ausführung professioneller Programme wie Textverarbeitung, Datenbankverwaltung usw. Hochauflösende Grafik ist bei dieser Darstellung nur in Verbindung mit PEEK- und POKE-Vefehlen oder einem Maschinenspracheprogramm möglich. Die Verwendung der grafischen Sonderzeichen aus dem Commodore-Zeichensatz sowie der Hintergrund- und Vordergrundfarben sind ebenfalls möglich. 40/80 DISPLAY-Taste: Mit dieser Taste kann zwischen der 40- und der 80-Zeichen-Anzeige umgeschaltet werden. Die Taste kann zu jeder Zeit gedrückt werden. Die Umschaltung erfolgt jedoch erst dann, wenn * der Rechner aus- und wieder eingeschaltet wird; * die Reset-Taste neben dem Netzschalter gedrückt wird; * die RUN/STOP-Taste mit der RESTORE-Taste gedrückt wird. Diese Taste verriegelt sich wie die SHIFT LOCK-Taste beim Drücken selbsttätig und wird durch erneutes Drücken wieder entriegelt. Im gedrückten Zustand ist die 80-Zeichen-, andernfalls die 40-Zeichen-Anzeige eingeschaltet. VIDEO-ANSCHLÜSSE UND MONITORE: Wie bereits in der Einführung erwähnt, hat der C128-Computer auf der Rückseite zwei unterschiedliche Video-Anschlüsse (VIDEO und RGBI). An den Anschluß VIDEO wird ein 40-Zeichen-Monitor (z.B. Commodore 1701) angeschlossen. An den Anschluß RGBI wird ein 80-Zeichen-Monitor angeschlossen (RGBI- Monitor). Beide Anschlüsse werden benötigt, wenn ein Doppel-Monitor wie der Commodore 1901 angeschlossen wird. Dieser Monitor kann sowohl im 40- als auch im 80-Zeichen-Modus betrieben werden und erlaubt die programmierte Umschaltung zwischen beiden Modi. [SEITE 4-9]^ Werden zwei verschiedene Monitore angeschlossen, so können sowohl grafische als auch Textausgaben gleichzeitig dargestellt werden. BILDSCHIRMUMSCHALTUNG: Einer der großen Vorteile des C128-Modus ist die Möglichkeit, mit bis zu 3 voneinander unabhängigen Bildschirmen zu arbeiten (80-Zeichen-Bildschirm sowie geteilter Bildschirm für grafische und Textwiedergabe). Es kann auf einem Bildschirm ausgegeben werden, ohne die auf den beiden anderen Schirmen angezeigten Daten zu verändern, und es kann zwischen allen drei Bildschirmen ohne Datenverlust hin- und hergeschaltet werden. Außerdem kann zwischen der 40- und der 80-Zeichen-Anzeige umgeschaltet werden, ohne daß der Bildschirm vorher gelöscht werden muß. Diese Umschaltung wird durch aufeinanderfolgendes Drücken der Tasten ESC und X oder durch PRINT CHR$(27)+"X" bewirkt. Zur programmierten Bildschirmumschaltung dient die GRAPHIC-Anweisung (s. dort in Kapitel 4.6). Mit ihr lassen sich in Programmen für den 80-Zeichen-Modus grafische Darstellung auf dem 40-Zeichen-Bildschirm anzeigen. Weitere Informationen siehe Kapitel 4.6 und 4.7 ff. 4.3 BASIC 7.0 im C128-Modus Aufbauend auf dem Commodore-Standard-BASIC 2.0, das ausführlich im Kapitel 5.2 beschrieben wird, bietet das erweiterte BASIC 7.0 dem Anwender viele komfortable Befehle, Anweisungen, Funktionen und Systemvariablen, um die vielfältigen Möglichkeiten, die der C128 bietet, nutzen zu können. Dieser Abschnitt ist kein Leitfaden zum Erlernen allgemeiner Programmier- techniken oder der Programmiersprache BASIC, sondern ein Nachschlagewerk für mit allgemeinen Programmierkonzepten vertraute Anwender, die auf den nachfolgenden Seiten alle wissenswerten Fakten für die Erstellung effektiver BASIC-Programme finden. Anfängern wird die Lektüre der in der Commodore- Sachbuchreihe veröffentlichten BASIC-Kurse empfohlen. Im C128-Modus kann der volle Befehlsumfang sowohl des BASIC 2.0 (s. Kapitel 5) als auch des BASIC 7.0 verwendet werden, so daß hier auch auf das Kapitel 5.2 verwiesen wird. [SEITE 4-10] Ehe jedoch die einzelnen Anweisungen beschrieben werden, hier noch einige allgemeine Anmerkungen zur Struktur der Programmiersprache BASIC und zur Syntax der nachfolgenden Beschreibungen. 4.4 Struktur von BASIC Der Sprachumfang des Commodore-BASIC gliedert sich in: - Befehle - Anweisungen - Funktionen - Variablen BEFEHLE werden dazu benutzt, an Programmen etwas zu bearbeiten, sie zu listen, zu ändern, zu löschen, zu speichern oder zu laden. Deshalb werden Befehle auch meistens in der Befehlsebene (Direktmodus) eingegeben. Sie können aber auch Bestandteil eines Programms sein. ANWEISUNGEN steuern den Programmablauf. Sie sind der eigentliche Inhalt des Programms, können aber auch im Direktmodus eingegeben werden. Die Anweisungen gliedern sich in 3 Gruppen: * Ein-/Ausgabeanweisungen für den Datenverkehr zwischen dem Rech- ner einerseits sowie Tastatur, Bildschirm, Diskettenstation, Festplatte, Drucker oder Datenfernübertragungsschnittstelle andererseits. * Deklarationsanweisungen für die Definition von Daten, benutzereigenen Funktionen, Speichersegmenten oder der Programmumgebung. * Steueranweisungen zur Festlegung des Programmablaufes wie Schleifen, Sprünge, Unterprogramm- und Unterbrechungsaufrufe. FUNKTIONEN liefern als Ergebnis bestimmte Werte zur Weiterverarbeitung an das Programm und gliedern sich in: * Numerische Funktionen, die als Ergebnis ganzzahlige Werte oder Gleit- kommawerte übergeben; * Zeichenkettenfunktionen, die als Ergebnis eine Zeichenkette übergeben. [SEITE 4-11] VARIABLEN der BASIC-Sprache dürfen nicht mit den vom Programmierer frei definierbaren Variablen eines Programms verwechselt werden. Die hier gemeinten System-Variablen haben feste, von BASIC vorgegebene Namen und Funktionen. Ihnen wird beim Aufruf vom Interpreter ein Wert zugewiesen, der bestimmte Funktionszustaende des Interpreters oder Rechnersystems zu einem bestimmten Zeitpunkt beschreibt. Es gibt numerische und Zeichenketten-Systemvariablen. 4.5 Struktur und Syntax der Beschreibungen Im Kapitel 4.6 werden alle Befehle, Anweisungen, Funktionen und Variablen, die der BASIC-Interpreter kennt, detailliert und an Hand von Beispielen beschrieben. Die einzelnen Beschreibungen sind alphabetisch nach den Namen geordnet und nach dem folgenden Schema gegliedert: Format: Hier ist die exakte Schreibweise für einen Befehl, eine Anweisung, Funktion oder Variable angegeben. Dabei gelten die folgenden Syntax-Regeln: 1. Alle Wörter in Großbuchstaben sind BASIC-Schlüsselwörter, deren Schreibweise wie angegeben verbindlich ist. 2. Alle Angaben in kursiver Groß- und Kleinschrift stellen Parameter dar, die vom Anwender eingesetzt werden müssen. {Anm. d. E-Texters: Dies gilt natürlich nicht für diese ASCII-Version, da keine Kursivschrift vorhanden ist} 3. Angaben in eckigen Klammern ([]) sind wahlfrei. 4. Eine Folge von Punkten (...) hinter einer Angabe bedeutet, daß diese Angabe, falls erforderlich, mehrmals spezifiziert werden kann. 5. Alle angegebenen Sonderzeichen außer den eckigen Klammern, also , ; - = ( ) ' " , müssen da, wo sie stehen, auch angegeben werden. [SEITE 4-12] 6. Bei den Parameterangaben haben die dort verwendeten Abkürzungen folgende Bedeutung: x,y,z beliebige numerische Ausdrücke i,j,k,m,n beliebige ganzzahlige Ausdrücke x$,y$ beliebige Zeichenkettenausdrücke v,v$ numerische oder Zeichenkettenvariablen Zweck: Hier wird die Wirkung des jeweiligen Befehls oder der Anweisung, Funktion oder Variablen detailliert beschrieben, und die Parameter und ihre Definitionsbereiche werden erläutert. Bemerkungen: Besondere Eigenschaften der einzelnen Befehle, Anweisungen, Funktionen und Variablen werden hier erläutert. Beispiel: Die bei jeder Beschreibung angegebenen Beispiele zeigen, wie die einzelnen Befehle, Anweisungen, Funktionen und Variablen angewendet werden und weisen auf Besonderheiten hin. 4.6 Beschreibung der einzelnen Befehle, Anweisungen, Funktionen und Variablen Zur Erleichterung des Auffindens eines bestimmten BASIC-Befehls oder einer -Anweisung, -Funktion oder -Variablen sind die nachfolgenden Beschreibungen nicht entsprechend der in Kapitel 4.4 beschriebenen Sprachstruktur von BASIC gegliedert, sondern es sind alle Sprachelemente zusammengefaßt und alphabetisch geordnet. [SEITE 4-13] APPEND-Anweisung Format: APPEND # log Filenr,Dateiname[,DLaufw] [,UGeräteadr] Zweck: Öffnet eine existierende, sequentielle Datei vom Typ SEQ oder USR als Ausgabedatei und positioniert den Schreibzeiger auf das Dateiende, damit weitere Daten angefügt werden können (s.a. Kapitel 6.6). log Filenr Ein ganzzahliger Wert zwischen 1 und 255, der der eröffneten Datei als Kennummer zugeordnet wird. Bei Werten kleiner als 128 wird an die mit der PRINT#-Anweisung ausgegebenen Daten ein Wagenrücklauf- code ausgegeben. Bei Werten über 127 wird zusätzlich ein Zeilenvorschubcode ausgegeben. Dateiname Eine Zeichenkettenkonstante in Anführungsstrichen (") oder -variable von maximal 16 Zeichen Länge für den Namen der zu eröffnenden Datei. Laufw Ein ganzzahliger Wert von 0 oder 1. Voreingestellt ist hier 0. Geräteadr Ein ganzzahliger Wert zwischen 4 und 15 für die Geräteadresse der angeschlossenen Floppy-Disk. Vor- eingestellt ist hier 8. Bemerkungen: Werden für Dateiname, Laufwerk und Geräteadr Variablen verwendet, so müssen diese in Klammer gesetzt werden. Beispiel 1: APPEND#2,"TEXT" Auf der Floppy-Disk mit der Geräteadresse 8 wird die Datei TEXT unter der logischen File-Nummer 2 eröffnet, und der Schreibzeiger wird auf das Ende der Datei gestellt, so daß weitere Daten angefügt werden können. Beispiel 2: APPEND#3,(DA$),D(VAL(AL$))ONU9 Der Dateiname und das Laufwerk werden als Variable übergeben. [SEITE 4-14] AUTO-Befehl Format: AUTO [Schrittw] Zweck: Während der Eingabe von BASIC-Programmzeilen wird am Zeilenanfang eine neue Zeilennummer angezeigt, wenn am Ende der vorhergehenden Zeile die RETURN-Taste gedrückt wurde. Nach Eingabe des Befehls AUTO muß die erste Programm- zeile mit Zeilennummer eingegeben werden. Ab der nächsten Zeile erfolgt die Zeilennumerierung automa- tisch. Bemerkungen: Schrittw gibt die Schrittweite zwischen den Zeilen- nummern an. Wird der AUTO-Befehl ohne Schrittw verwendet, so wird die automatische Zeilennumerierung wieder abgeschaltet. Beispiele: AUTO 10 Es werden automatisch Zeilennummern mit einer Schritt- weite von 10 erzeugt. AUTO Die automatische Zeilennummernerzeugung während der Programmeingabe wird abgeschaltet. [SEITE 4-15] BACKUP-Befehl Format: BACKUP D Quelle TO DZiel[,UGerät] Zweck: Dupliziert eine Diskette auf einem Floppy-Disk- Doppellaufwerk. Quelle Ein Wert von 0 oder 1 für das Laufwerk, in dem die zu duplizierende Diskette eingelegt ist. Ziel Ein Wert von 1 oder 0 für das Laufwerk, in dem die Diskette, auf die kopiert wird, eingelegt ist. Gerät Ein ganzzahliger Wert zwischen 4 und 15 für die Geräte- adresse des angeschlossenen Doppellaufwerkes. Vor- eingestellt ist hier 8. Bemerkungen: Der BACKUP-Befehl ist nur bei einer Floppy-Disk mit zwei Laufwerken möglich. Das Duplikat ist ein exaktes Abbild der Quelldiskette. Der BACKUP-Befehl beinhaltet den Befehl HEADER (s. dort), mit dem die Diskette vor dem Dupliziervorgang formatiert wird. Vor dem Beginn des Dupliziervorganges wird durch die Anfrage ARE YOU SURE? vom Anwender eine Bestätigung (Antwort Y für YES) verlangt, da durch BACKUP ggfs. vorher auf der Zieldiskette vorhandene Daten zerstört werden. [SEITE 4-16] Beispiel 1: BACKUP D0 TO D1 Duplizierung der Diskette in Laufwerk 0 auf die Diskette in Laufwerk 1. Beispiel 2: BACKUP D1 TO D0 ON U9 Duplizierung von Laufwerk 1 auf Laufwerk 0 im Gerät mit der Adresse 9. [SEITE 4-17] BANK-Befehl Format: BANK n Zweck: Definiert eine 64-kByte-Speicherbank für nachfolgende PEEK-, POKE-, SYS- oder WAIT-Anweisungen. n muß zwischen 0 und 15 liegen. Bemerkungen: Der Speicher des C128 ist in 15 Speicherbänke zu je 64 kByte aufgeteilt. Dabei sind jedoch nur die Bänke Nr. 0, 1 und 15 vorhanden (s. a. Speicherverwaltung in Anhang B). Beispiel: 10 REM WERT 20 BEI ADRESSE 1024 IN BANK 15 REM 1 SPEICHERN 20 BANK1:POKE1024,20 [SEITE 4-18] BEGIN- und BEND-Anweisungen Format: IF... THEN BEGIN . . Anweisungen . BEND Zweck: BEGIN und BEND schließen einen beliebig langen Block von BASIC-Anweisungen ein, der auch über mehrere Zeilen gehen darf. Bemerkungen: BEGIN wird immer in Verbindung mit der IF-Anweisung (s. dort) verwendet. Der Vorteil gegenüber der IF THEN ELSE-Anweisung ist der, daß die Anweisungen nach THEN nicht auf eine Programmzeile beschränkt zu sein brauchen. Alle anderen Regeln für die IF...THEN...ELSE-Anweisung bleiben jedoch gültig (s. Beispiel). Beispiel 1: 100 IF X=1 THEN BEGIN:A=5 110 B=6 : C=7 120 PRINT A+B+C : BEND : PRINT"AHA!" 130 ... AHA! wird nur gedruckt, wenn X=1 logisch wahr ist: andernfalls würde das Programm mit Zeile 130 fort- gesetzt. Beispiel 2: 10 INPUT"ZAHL=";Z 20 IF Z>0 THEN BEGIN 30 PRINT"DIE ZAHL IST > 0" 40 BEND : ELSE GOTO 60 50 END 60 PRINT"DIE ZAHL IST <= 0" 70 GOTO 10 Das Programm wird in Zeile 50 beendet, wenn eine positive Zahl eingegeben wurde, andernfalls mit Zeile 10 wiederholt. [SEITE 4-19] BLOAD-Befehl Format: BLOAD Dateiname[,DLaufwerk][,UGerät] [,ON BBank][,PAdr] Zweck: Es wird eine Datei mit binär codiertem Inhalt (z.B. Maschinensprache, Binärdaten) in den Hauptspeicher geladen (s.a. Kapitel 6.4). Dateiname Eine Zeichenkettenkonstante in Anführungszeichen (") oder -variable einer Länge von bis zu 16 Zeichen, die den Namen der zu ladenden Binärdatei angibt. Laufwerk Ein Wert von 0 oder 1 für das Laufwerk, von dem geladen werden soll. Voreingestellt ist hier 0. Gerät Ein ganzzahliger Wert zwischen 4 und 15 für die Geräte- adresse der angeschlossenen Floppy-Disk. Bank Ein ganzzahliger Wert zwischen 0 und 15 für die Speicherbank, in die geladen werden soll. Voreingestellt ist hier 0. Adr Ein ganzzahliger Wert zwischen 0 und 65535, der die Adresse in der gewählten Bank angibt, ab der geladen werden soll. Voreingestellt ist hier die Adresse, die sich aus den ersten beiden Bytes der Binärdatei ergibt. Bemerkungen: Werden für Dateiname, Laufwerk, Gerät, Bank und/oder Adr Variablen verwendet, so müssen diese in Klammern angegeben werden. [SEITE 4-20] Beispiel 1: BLOAD"BIN",ON B1,P1024 Die Datei BIN wird von der Floppy-Disk mit der Geräteadresse 8 in Bank 1 des Hauptspeichers ab Adresse 1024 geladen. Beispiel 2: BLOAD(D$),D(LW),U(GA),ON B(B),P(AD) In diesem Beispiel werden für alle Parameter Variablen verwendet. [SEITE 4-21] BOOT-Befehl Format: BOOT [Dateiname[,DLaufw][,UGerät]] Zweck: Lädt einen ausführbaren Binärfile von Diskette in den Hauptspeicher und startet es bei seiner Startadresse. Dateiname Eine Zeichenkettenkonstante in Anführungszeichen (") oder -variable einer Länge von bis zu 16 Zeichen, die den Namen der zu ladenden Binärdatei angibt. Laufwerk Ein Wert von 0 oder 1 für das Laufwerk, von dem geladen werden soll. Voreingestellt ist hier 0. Gerät Ein ganzzahliger Wert zwischen 4 und 15 für die Geräteadresse der angeschlossenen Floppy-Disk. Bemerkungen: Werden als Parameter Variablen verwendet, so müssen diese in Klammern angegeben werden. Wird BOOT ohne Parameter verwendet, so entnimmt das Betriebssystem dem Sektor 0 in der Spur 1 der Diskette in der Floppy-Disk Nr. 8 die Information, was geladen werden und gestartet werden soll. Diese Information kann mit Hilfe der Direktzugriffsbefehle auf die Diskette gebracht werden. Näheres siehe Floppy-Disk-Handbuch. Beispiel: BOOT"HILFE" Von der Floppy-Disk mit der Geräteadresse 8 wird der ausführbare Binärfile HILFE geladen und bei seiner Startadresse gestartet. [SEITE 4-22] BOX-Anweisung Format: BOX [Farbquelle],x1,y1[,[x2,y2]][,[Winkel][,Ausmal]] Zweck: Es wird ein Rechteck an einer wählbaren Bildschirm- position gezeichnet und wahlweise ausgemalt. Farbquelle Ein ganzzahliger Wert zwischen 0 und 3, der die Quelle für die Farbe definiert, in der gezeichnet wird. Es bedeuten: 0 Hintergrund 1 Vordergrund 2 Zusatzfarbe 1 3 Zusatzfarbe 2 x1,y1, Koordinaten der linken oberen bzw. rechten unteren Ecke x2,y2 des Rechtecks. Die x-Koordinaten gehen von 0 bis 320, und die y-Koordinaten von 0 bis 199. Voreingestellt sind der Punkt links oben im Bildschirm sowie die aktuelle Position des Pixel-Cursors (grafischer Cursor). Winkel Winkel in Grad, um den das Rechteck um seinen Mittel- punkt im Uhrzeigersinn gedreht werden soll. Vor- eingestellt ist der Wert 0. Ausmal Ein ganzzahliger Wert, der festlegt, ob das Rechteck in der gewählten Farbe ausgemalt werden soll (1) oder nicht (0). Bemerkungen: Nach dem Zeichnen des Rechteckes ist der Punkt x2,y2 die aktuelle Position des grafischen Cursors. [SEITE 4-23] Beispiele: BOX 1,10,10,60,60 Zeichnet die Kontur eines Rechteckes in der aktuellen Vordergrundfarbe. BOX , 10,10,60,60,45,1 Zeichnet eine in der aktuellen Vordergrundfarbe ausgefüllte Raute. BOX ,30,90,,45,1 Zeichnet ein um 45 Grad gedrehtes, ausgefülltes Polygon. [SEITE 4-24] BSAVE-Befehl Format: BSAVE Dateiname[,DLaufwerk][,UGerät] [,ON BBank][PAdr1][TO PAdr2] Zweck: Es wird ein Hauptspeicherbereich (z.B. Maschinensprache, Binärdaten) als Binärdatei auf Diskette gespeichert. Dateiname Eine Zeichenkettenkonstante in Anführungszeichen (") oder -variable einer Länge von bis zu 16 Zeichen, die den Namen der zu speichernden Binärdatei angibt. Laufwerk Ein Wert von 0 oder 1 für das Laufwerk, von dem geladen werden soll. Voreingestellt ist hier 0. Gerät Ein ganzzahliger Wert zwischen 4 und 15 für die Geräteadresse der angeschlossenen Floppy-Disk. Bank Ein ganzzahliger Wert zwischen 0 und 15 für die Speicherbank, aus der gespeichert werden soll. Voreingestellt ist hier 0. Adr1, Adr2 Zwei ganzzahlige Werte zwischen 0 und 65535, die die Anfangs- und Endadressen des Speicherbereiches in der gewählten Bank angeben, der gespeichert werden soll. Bemerkungen: Werden für Dateiname, Laufwerk, Gerät, Bank und/oder Adr1 und Adr2 Variablen verwendet, so müssen diese in Klammern angegeben werden. [SEITE 4-25] Beispiel 1: BSAVE"BIN",ON B2,P1024 TO P2047 Der Hauptspeicherbereich von Adresse 1024 bis 2047 einschließlich (1 kByte) in Bank 2 wird als Datei BIN auf Diskette in der Floppy-Disk mit der Geräteadresse 8 gespeichert. Beispiel 2: BSAVE(D$),D(LW),U(GA),ON B(B),P(A1) TO P(A2) Bei diesem Beispiel werden für alle Parameter Variablen verwendet. [SEITE 4-26] BUMP-Funktion Format: v=BUMP(n) Zweck: Liefert die Nummer des Sprites (1 bis 8), das seit der letzten BUMP-Abfrage entweder mit einem anderen Sprite (n=1) oder mit angezeigten Daten (n=2) kollidiert ist. Bemerkungen: Wenn BUMP verwendet wird, braucht die Programmunter- brechung für Sprite-Kollisionen nicht mit der COLLISION-Anweisung (s. dort) aktiviert zu sein. Bei Mehrfachabfragen sollten vorher mit Hilfe der RSPRITE-Funktion die Sprite-Attribute abgefragt werden, um feststellen zu können, welches Sprite womit kollidiert ist. BUMP(n) wird nach einer Abfrage auf Null gesetzt. Beispiel: 100 ON BUMP(2)GOTO120,130,140,150 Wenn Sprite Nr. 1 mit angezeigten Daten kollidiert ist, verzweigt das Programm nach Zeile 120, bei Nr. 2 nach Zeile 130 usw. [SEITE 4-27] CATALOG-Befehl Der CATALOG-Befehl ist mit dem DIRECTORY-Befehl (s. dort) identisch. [SEITE 4-28] CHAR-Anweisung Format: CHAR [Farbquelle].x.y[.Zeichenkette][,Invers] Zweck: Zeigt eine Zeichenkette mit auswählbarer Position auf dem Bildschirm an. Farbquelle Ein ganzzahliger Wert zwischen 0 und 3, der die Farbe definiert, in der der Text angezeigt werden soll. Es bedeuten: 0 Hintergrundfarbe 1 Vordergrund- (Zeichen-)Farbe 2 Zusatzfarbe 1 3 Zusatzfarbe 2 x,y Die Spalten- (x) und die Zeilen (y)-Position, ab der der Text angezeigt werden soll. Spalten: 0 bis 39 bzw. 79; Zeilen: 0 bis 24. Zeichen- kette Der anzuzeigende Text in Anführungszeichen ("). Invers Ein Parameter für die inverse Darstellung des Textes. Hat er den Wert 0, wird der Text normal, hat er den Wert 1, invers dargestellt. Bemerkungen: Im Text-Modus arbeitet die CHAR-Anweisung analog zur PRINT-Anweisung (s. dort in Kapitel 3), d.h. auch eventuelle Cursor-Steuercodes in der Zeichenkette werden ausgeführt. Im Grafik-Modus werden solche Steuercodes nicht aus- geführt. Um im Mehrfarbenmodus (s. Kapitel 4.7) Zeichen in der Zusatzfarbe 2 anzuzeigen, muß Farbquelle auf 0 und Invers auf 1 gesetzt werden. [SEITE 4-29] Um im Mehrfarbenmodus Zeichen in der Zusatzfarbe 1 anzuzeigen, muß Farbquelle auf 1 und Invers auf 0 gesetzt werden. Beispiel: 100 CHAR1,38,12,"GUTEN MORGEN" Der Text "GUTEN MORGEN" wird in der aktuellen Vordergrundfarbe in der Bildschirmmitte angezeigt. [SEITE 4-30] CIRCLE-Anweisung Format: CIRCLE [Farbquelle],[x,y],xr[,[yr] [,[Start][,[Ende][,[Winkel] [,Segmentwinkel] Zweck: Es wird eine Ellipse, ein Kreis oder ein beliebiges Polygon mit dem Mittelpunkt x,y auf dem Bildschirm gezeichnet. Farbquelle Ein ganzzahliger Wert zwischen 0 und 3, der die Farbe definiert. Es bedeuten: 0 Hintergrundfarbe 1 Vordergrund- (Zeichen-)Farbe 2 Zusatzfarbe 1 3 Zusatzfarbe 2 x,y Die skalierten (s. SCALE-Anweisung) Mittelpunktkoordi- naten der Ellipse. Voreingestellt ist hier die aktuelle Position des grafischen Cursors (Pixel-Cursor). xr Radius der Hauptachse (skaliert). yr Radius der Nebenachse (skaliert). Voreingestellt ist hier xr. Start,Ende Numerische Ausdrücke, deren Werte Winkelangaben dar- stellen und die angeben, wo das Zeichnen der Figur beginnen und enden soll. Die Winkel werden entgegen der mathematischen Konvention von 0 in Uhrzeigerrichtung gezählt. Voreingestellt ist hier der Wert 0. Segment- Numerischer Ausdruck, dessen Wert den Winkel angibt, um winkel den jedes Segment der Figur gegenüber dem vorhergehenden versetzt werden soll. Voreingestellt ist hier der Wert 2. [SEITE 4-31] Bemerkungen: Nach dem Zeichnen der Figur ist die aktuelle Position des grafischen Cursors der Endpunkt des Winkels Ende. Jede Drehung der Figur erfolgt grundsätzlich um den Mittelpunkt x,y. Werden xr und yr gleichgesetzt, so wird ein Kreis gezeichnet. Der Parameter Segmentwinkel bestimmt die Anzahl der Seiten (Eckigkeit) der Figur. Kleinere Werte ergeben rundere Konturen. Beispiele: CIRLCE,160,100,65,10 Zeichnet eine Ellipse in der aktuellen Vordergrundfarbe. CIRCLE,160,100,65,50 Zeichnet einen Kreis. CIRCLE,60,40,20,18,,,,45 Zeichnet ein Achteck. CIRCLE,260,40,20,,,,,90 Zeichnet eine Raute. CIRCLE,60,140,20,18,,,,120 Zeichnet ein Dreieck. [SEITE 4-32] COLLECT-Befehl Format: COLLECT [DLaufwerk][ON U Geräteadr] Zweck: Löscht alle nicht geschlossenen Dateien und gibt den solchen Dateien zugewiesenen Speicherplatz auf der Diskette im spezifizierten Laufwerk wieder frei (s.a. Kapitel 6.9.1). Laufwerk Ganzzahliger Wert von 0 oder 1. Voreingestellt ist hier 0. Geräteadr Ganzzahliger Wert zwischen 8 und 15. Voreingestellt ist hier 8. Beispiele: COLLECT COLLECT D1 ON U10 [SEITE 4-33] COLLISION-Anweisung Format: COLLISION Typ[,Zeilennummer] Zweck: Inaktiviert oder aktiviert die Programmunterbrechung für Sprite-Kollisionen und definiert im letzteren Fall eine Programmzeile für Programmverzweigung bei Kollisionen. Typ Ganzzahliger Wert zwischen 1 und 3, der das Ereignis definiert, das zur Unterbrechung führen soll. Es gilt: 1 Sprite-Sprite-Kollision 2 Sprite-Anzeigedaten-Kollision 3 Lichtstift-Aktivierung Zeilen- Eine gültige Programmzeilennummer, zu der bei Unter- nummer brechung verzweigt werden soll. Bemerkungen: Wenn das angegebene Ereignis eintritt, führt der Interpreter die augenblicklich interpretierte Anweisung noch zuende und verzweigt dann mit GOSUB zu der angegebenen Zeilennummer. Das dort zu durchlaufende Unterprogramm muß mit einer RETURN-Anweisung abge- schlossen sein. Anschließend wird das Programm mit der auf die unterbrochene Anweisung folgenden Anweisung fortgesetzt. Wird Zeilennummer weggelassen, wird die Programm- unterbrechung für das spezifizierte Ereignis inakti- viert. Es können mehrere verschiedene Unterbrechungsereignisse gleichzeitig aktiviert sein; es kann jedoch zu einer Zeit immer nur eine Unterbrechung bearbeitet werden. Unterbrechungsschachtelung ist also nicht möglich. Es muß berücksichtigt werden, daß die Ursache für eine Programmunterbrechung eine Zeit lang wirksam sein kann, obwohl bereits eine andere Situation vorliegt oder die Unterbrechung inzwischen inaktiviert wurde. [SEITE 4-34] Verschwindet ein Sprite vom sichtbaren Bereich des Bildschirms, kann es auch keine Unterbrechung mehr auslösen. Um das Sprite zu bestimmen, das seit der letzten Abfrage eine Kollision verursacht hat, kann die BUMP-Funktion (s. dort) verwendet werden. Beispiel: 100 COLLISION2,500 Das Programm verzweigt zu einem Unterprogramm bei Zeile 500, sobald eine Kollision zwischen einem Sprite und angezeigten Daten erfolgt. [SEITE 4-35] COLOR-Anweisung Format: COLOR Farbquelle,Farbcode Zweck: Definiert für jede mögliche Farbquelle eine der 16 möglichen Farben. Farbquelle Folgende Farbquellcodes sind verfügbar: 0 Hintergrund (40-Zeichen-Anzeige) 1 grafischer Vordergrund 2 grafischer Mehrfarbenmodus 1 3 grafischer Mehrfarbenmodus 2 4 Rand 5 Textfarbe 6 Hintergrund (80-Zeichen-Anzeige) Farbcode Folgende Farbcodes sind verfügbar: 1 schwarz 9 hellbraun 2 weiß 10 braun 3 rot 11 rosa 4 grün 12 dunkelgrau 5 violett 13 grau 6 dunkelgrün 14 hellgrün 7 blau 15 hellblau 8 gelb 16 hellgrau Bemerkungen: Die Farbwiedergabe kann bei verschiedenen Farbbildschirmen unterschiedlich ausfallen. Auf Schwarz/Weiß-Bildschirmen erscheinen die Farben als unterschiedliche Grautöne. Beispiel: COLOR0,2:COLOR1,3:COLOR4,1 Der Hintergrund erscheint weiß, der Vordergrund (Text) rot und der Rahmen schwarz. [SEITE 4-36] CONCAT-Befehl Format: CONCAT [DQuelllaufw,]Quelldatei TO [DZiellaufw,]Zieldatei [ON U Geräteadr] Zweck: Fügt eine angegebene sequentielle Datei an das Ende einer anderen angegebenen sequentiellen Datei auf der Diskette im angegebenen Laufwerk an (s.a. Kapitel 6.9.3). Quelllaufw, Ganzzahlige Werte von 0 oder 1. Voreingestellt ist hier Ziellaufw 0. Quelldatei, Zeichenkettenkonstanten in Anführungszeichen (") oder Zieldatei -variablen einer Länge von bis zu 16 Zeichen, die die anzufügende und die zu verlängernde sequentielle Datei bezeichnen. Geräteadr Ein ganzzahliger Wert zwischen 4 und 15, der die Geräteadresse der Floppy-Disk angibt. Voreingestellt ist hier der Wert 8. Beispiele: CONCAT"DATEN1"TO"DATEN2" Die sequentielle Datei DATEN1 wird an die sequentielle Datei DATEN2 auf Laufwerk 0 der Floppy-Disk mit der Geräteadresse 8 angefügt. CONCATD(QL),(D1$)TOD(ZL),(D2$) Bei diesem Beispiel werden für Laufwerk- und Datei- angaben Variablen verwendet. [SEITE 4-37] COPY-Befehl Format: COPY [DQuelllaufw,]Quelldatei TO [DZiellaufw,]Zieldatei [ON U Geräteadr] Zweck: Kopiert eine angegebene Quelldatei unter demselben oder einem neuen Namen auf die Diskette im angegebenen Laufwerk derselben Floppy-Disk-Einheit. Quelllaufw, Ganzzahlige Werte von 0 oder 1. Voreingestellt ist hier Ziellaufw 0. Quelldatei, Zeichenkettenkonstanten in Anführungszeichen (") oder Zieldatei -variablen einer Länge von bis zu 16 Zeichen, die die zu kopierende und die kopierte Datei bezeichnen. Geräteadr Ein ganzzahliger Wert zwischen 4 und 15, der die Geräteadresse der Floppy-Disk angibt. Voreingestellt ist hier der Wert 8. Bemerkungen: Bei der Angabe der Quelldatei können die Jokerzeichen * und ? verwendet werden, um mehrere Dateien in einem Durchgang zu kopieren. Beispiele: COPY"DATEN"TO"ZIEL" Die Datei DATEN auf Diskette in Laufwerk 0 der Floppy-Disk mit der Geräteadresse 8 wird unter dem Namen "ZIEL" dupliziert. COPY"QUELLE"TOD1,"*" Die Datei "QUELLE" wird von Laufwerk 0 auf Laufwerk 1 unter demselben Namen kopiert. COPYD1,"ADR*"TO"*"ONU9 Auf der Floppy-Disk mit der Geräteadresse 9 werden alle Dateien auf Laufwerk 1, deren Namen mit "ADR" beginnen, unter Beibehaltung ihrer Namen auf Laufwerk 0 kopiert. [SEITE 4-38] DCLEAR-Anweisung Format: DCLEAR DLaufwerk [ON UGeräteadr] Zweck: Alle für das angegebene Laufwerk offenen Floppy- Disk-Kanäle (nicht Dateien) werden geschlossen. Laufwerk Ganzzahliger Wert von 0 oder 1. Geräteadr Ein ganzzahliger Wert zwischen 4 und 15, der die Geräteadresse der Floppy-Disk angibt. Voreingestellt ist hier der Wert 8. Bemerkungen: Wird ein Kanal z.B. mit der CMD-Anweisung (s. dort in Kapitel 5.2) eröffnet, so bleibt dieser Kanal aktiv, bis eine Ausgabe mit PRINT# erfolgt oder eine DCLEAR-Anweisung gegeben wird. +-------------------------------------------------------------------+ | Achtung | | DCLEAR schließt keine geöffnete Datei. Das muß vor der Verwendung | | der DCLEAR-Anweisung erfolgen, falls Daten mit der CMD-Anweisung | | ausgegeben wurden. | +-------------------------------------------------------------------+ Beispiel: DCLEAR Alle offenen Kanäle für Laufwerk 0 auf Gerät 8 werden geschlossen. [SEITE 4-39] DCLOSE-Anweisung Format: DCLOSE [#log Dateinr] [ON U Geräteadr] Zweck: Schließt die spezifizierte oder alle offenen Dateien auf der angeschlossenen Floppy-Disk (s.a. Kapitel 6.6). log Dateinr Ein ganzzahliger Wert zwischen 1 und 255, unter dem die Datei mit der OPEN- (s. dort in Kapitel 5.2) oder DOPEN- (s. dort in diesem Kapitel) Anweisung auf Floppy-Disk eröffnet wurde. Geräteadr Ein ganzzahliger Wert zwischen 4 und 15, der die Geräteadresse der Floppy-Disk angibt. Voreingestellt ist hier der Wert 8. Beispiele: DCLOSE Alle für die Floppy-Disk mit der Geräteadresse 8 eröffneten Dateien werden geschlossen. DCLOSE #5 ON U9 Die Datei mit der logischen Dateinummer 5 auf der Floppy-Disk mit der Geräteadresse 9 wird geschlossen. [SEITE 4-40] DEC-Funktion Format: v$=DEC(hex Zeichenkette) Zweck: Liefert den Dezimalwert eines Zahlenwertes in hexa- dezimaler Schreibweise. hex Eine Zeichenkette in Anführungszeichen ("), die einen Zeichen- hexadezimalen Wert im Bereich zwischen 0 und FFFF kette darstellt. Beispiel: PRINT DEC("FFFF") 65535 READY. [SEITE 4-41] DELETE-Befehl Format: DELETE [Zeilennr1] [-Zeilennr2] Zweck: Der angegebene Zeilennummernbereich wird in dem im Hauptspeicher befindlichen Programm gelöscht. Zeilennr1 Nummer der ersten zu löschenden Zeile. Zeilennr2 Nummer der letzten zu löschenden Zeile. Bemerkungen: Der DELETE-Befehl kann nur im Direktmodus verwendet werden. Beispiele: DELETE 10 Zeile 10 wird gelöscht. DELETE 10-200 Zeilen 10 bis 200 werden gelöscht. DELETE -200 Alle Zeilen vom Programmanfang bis Zeile 200 einschließlich werden gelöscht. DELETE 200- Alle Zeilen von einschließlich Zeile 200 bis zum Programmende werden gelöscht. [SEITE 4-42] DIRECTORY-Befehl Format: DIRECTORY [D Laufwerk] [,U Geräteadr] [,Dateiname] Zweck: Zeigt das Verzeichnis der Diskette auf dem spezifizierten Laufwerk oder Teile davon auf dem Bildschirm an (s.a. Kapitel 6.5). Laufwerk Ganzzahliger Wert von 0 oder 1. Voreingestellt ist hier der Wert 0. Geräteadr Ein ganzzahliger Wert zwischen 4 und 15, der die Geräteadresse der Floppy-Disk angibt. Voreingestellt ist hier der Wert 8. Dateiname Wahlweise ein Dateiname als Zeichenkettenkonstante in Anführungsstrichen ("), für den der Verzeichniseintrag angezeigt werden soll. Um Dateien mit gleichen Namensteilen anzuzeigen, dürfen die Jokerzeichen * und ? (s.a. Kapitel 6.3) verwendet werden. Bemerkungen: Die Anzeige langer Verzeichnisse führt zum Aufrollen des Bildschirms. Mit Hilfe der NO SCROLL-Taste (s. Kapitel 5.2) kann die Anzeige angehalten werden, mit der C= (Commodore)-Taste kann sie verlangsamt werden. Beispiele: DIRECTORY Alle Verzeichniseinträge von der Diskette in Laufwerk 0 der Floppy-Disk mit der Geräteadresse 8 werden angezeigt. DIRECTORY D1,U9,"DATEN" Der Verzeichniseintrag der Datei "DATEN" auf der Diskette in Laufwerk 1 der Floppy-Disk mit der Geräteadresse 9 wird, falls vorhanden, angezeigt. [SEITE 4-43] DIRECTORY"AB*" Die Verzeichniseinträge für alle Dateien, deren Namen mit AB beginnen, auf der Diskette in Laufwerk 0 der Floppy-Disk mit der Geräteadresse 8 werden angezeigt. DIRECTORY"DATEI???.ARB" Die Verzeichniseinträge für alle Dateien, deren Namen zwischen den Zeichen DATEI und .ARB drei beliebige Zeichen enthalten, auf der Diskette in Laufwerk 0 der Floppy-Disk mit der Geräteadresse 8 werden angezeigt. +---------------------------------------------------------------------+ | Achtung: | | Um ein Diskettenverzeichnis z.B. von Laufwerk 0 auf der Floppy-Disk | | mit der Geräteadresse 8 auf dem Drucker mit der Geräteadresse 4 | | auszugeben, muß folgende Anweisungssequenz im Direktmodus ein- | | gegeben werden: | | | | LOAD"$0",8 | | OPEN4,4:CMD4:LIST | | PRINT#4:CLOSE4 | +---------------------------------------------------------------------+ [SEITE 4-44] DLOAD-Befehl Format: DLOAD Dateiname [,D Laufwerk] [,U Geräteadr] Zweck: Lädt ein BASIC-Programm von einer angegebenen Diskette in den Hauptspeicher des Rechners s.a. Kapitel 6.6). Dateiname Eine Zeichenkettenkonstante in Anführungsstrichen (") oder eine -Variable in Klammern () einer Länge von bis zu 16 Zeichen, die den Programmdateinamen bezeichnet. Laufwerk Ein ganzzahliger Wert von 0 oder 1. Voreingestellt ist hier 0. Geräteadr Ein ganzzahliger Wert zwischen 4 oder 15, der die Geräteadresse der angeschlossenen Floppy-Disk bezeichnet. Voreingestellt ist hier der Wert 8. Bemerkungen: Innerhalb eines BASIC-Programmes dient der DLOAD-Befehl zum Aufruf und Start eines anderen BASIC-Programmes, das das aufrufende Programm überlagert. Alle Variablen des aufrufenden Programms bleiben erhalten. Wird das spezifizierte Programm nicht gefunden, wird die Fehlermeldung FILE NOT FOUND ERROR angezeigt. [SEITE 4-45] DO-Anweisung Format: DO [UNTIL logischer Ausdruck] . .Anweisungen . ...[EXIT] LOOP [UNTIL logischer Ausdruck] DO [WHILE logischer Ausdruck] . .Anweisungen . ...[EXIT] LOOP [WHILE logischer Ausdruck] Zweck: Definiert und steuert den Ablauf von Programmschleifen. Bemerkungen: Wenn kein Zusatz UNTIL oder WHILE in Verbindung mit logischen Ausdrücken angegeben ist, werden alle Anweisungen der Schleife unendlich oft ausgeführt. Wird der Zusatz EXIT in die Schleifenanweisungen eingefügt, so wird die Schleife an dieser Stelle verlassen, und das Programm wird mit der auf LOOP folgenden Anweisung fortgesetzt. DO ... LOOP-Programmschleifen können nach denselben Regeln geschachtelt werden, wie FOR ... NEXT-Schleifen (s. dort in Kapitel 5.2). Wird der Zusatz UNTIL verwendet, so wird die Schleife solange ausgeführt, bis der nach UNTIL angegebene logische Ausdruck wahr (-1) wird. Wird der Zusatz WHILE verwendet, so wird die Schleife solange ausgeführt, bis der nach WHILE angegebene logische Ausdruck falsch (0) wird. [SEITE 4-46] Beispiel 1: 100 X=10 110 DO UNTIL X=0 OR X=1 120 PRINT"X IST NOCH NICHT 0 ODER 1" 130 X=X-1 140 LOOP 150 ... Die Schleife wird neunmal durchlaufen, dann ist X=1 wahr, und das Programm wird mit Zeile 150 fortgesetzt. Beispiel 2: 100 DO WHILE A$="":GETA$"LOOP Die Programmausführung wird solange angehalten, bis eine Taste gedrückt wird. [SEITE 4-47] DOPEN-Anweisung Format: DOPEN #log Filenr, Dateiname [,LLänge] [,D Laufw] [,U Geräteadr] [,W] Zweck: Eröffnet eine sequentielle oder Relativ-Datei auf Diskette für Daten-Ein- oder -Ausgabe (s.a. Kapitel 6.6). log Filenr Ein ganzzahliger Wert zwischen 1 und 255, der der eröffneten Datei als Kennummer zugeordnet wird. Bei Werten kleiner als 128 wird nach jeder PRINT#-An- weisung ein Wagenrücklaufcode ausgegeben. Bei Werten über 127 wird zusätzlich ein Zeilenvorschubcode aus- gegeben. Dateiname Eine Zeichenkettenkonstante in Anführungsstrichen (") oder -variable einer Länge von bis zu 16 Zeichen, die den Namen der zu eröffnenden Datei bezeichnet. Länge Ein ganzzahliger Wert zwischen 1 und 254 für die Länge der logischen Sätze bei Relativ-Dateien. Laufw Ein ganzzahliger Wert von 0 oder 1. Voreingestellt ist hier 0. Geräteadr Ein ganzzahliger Wert zwischen 4 und 15 für die Geräteadresse der angeschlossenen Floppy-Disk. Voreingestellt ist hier 8. W Wird dieser Parameter angegeben, so wird eine sequen- tielle Datei zum Schreiben eröffnet, andernfalls zum Lesen. Bemerkungen: Werden die Parameter als Variablen übergeben, so müssen diese in Klammern gesetzt werden. LLänge und W dürfen nicht zusammen in einer DOPEN- Anweisung angegeben werden. [SEITE 4-48] Werden zwei Dateien unter derselben logischen Datei- nummer eröffnet, wird die Fehlermeldung FILE OPEN angezeigt. Beispiele: DOPEN#2,"DATEN" Die sequentielle Datei DATEN auf Laufwerk 0 der Floppy-Disk mit der Geräteadresse 8 wird zum Lesen eröffnet. DOPEN#3,"ADRESSEN",D1,U9,W Die sequentielle Datei ADRESSEN auf Laufwerk 1 der Floppy-Disk mit der Geräteadresse 9 wird zum Schreiben eröffnet. DOPEN#5,"KLIENTEN",L112 Die Relativ-Datei KLIENTEN mit einer logischen Satzlänge von 112 Bytes wird auf Laufwerk 0 der Floppy-Disk mit der Geräteadresse 8 eröffnet. [SEITE 4-49] DRAW-Anweisung Format: DRAW [Farbquelle] [,x1,y1] TO x2,y2 ... Zweck: Verbindet beliebig viele spezifizierte Koordinaten durch eine Linie. Farbquelle Ein ganzzahliger Wert zwischen 0 und 3, der die Farbe definiert, in der die Linie(n) gezeichnet werden soll(en). Voreingestellt ist hier die Vordergrundfarbe (1). Es bedeuten: 0 Hintergrundfarbe 1 Vordergrund- (Zeichen-)Farbe 2 Zusatzfarbe 1 3 Zusatzfarbe 2 x1,y1 Koordinaten des Starpunktes der Linie. x2,y2 Koordinaten des Endpunktes der Linie. Bemerkungen: Es können soviele Koordinaten mit davor gestelltem Parameter TO spezifiziert werden, wie in einer Programm- zeile Platz haben. Der Endpunkt der vorhergehenden Linie ist dann gleich- zeitig der Startpunkt für die folgende Linie. Sind Start- und Endkoordinaten gleich, wird ein Punkt gezeichnet. Wird die Startkoordinate nicht angegeben, so gilt die aktuelle Position des grafischen Cursors (Pixel-Cursor) als Startpunkt. [SEITE 4-50] Beispiele: DRAW 1,100,50 Zeichnet einen Punkt, da keine Endkoordinate angegeben ist. 100 DRAW ,10,10 TO 100,60 110 DRAW ,TO 25,30 Zeichnet einen Winkel. DRAW ,10,10 TO 10,60 TO 100,60 TO 10,10 Zeichnet eine Figur. [SEITE 4-51] DSAVE-Befehl Format: DSAVE Dateiname [,D Laufwerk] [,U Geräteadr] Zweck: Speichert ein BASIC-Programm aus dem Hauptspeicher auf Diskette im angegebenen Laufwerk (s.a. Kapitel 6.2). Dateiname Eine Zeichenkettenkonstante in Anführungs- strichen (") oder eine -variable in Klammern () mit einer Länge von bis zu 16 Zeichen, die den Programm- dateinamen bezeichnet. Laufwerk Ein ganzzahliger Wert von 0 oder 1. Voreingestellt ist hier 0. Geräteadr Ein ganzzahliger Wert zwischen 4 oder 15, der die Geräteadresse der angeschlossenen Floppy-Disk bezeichnet. Voreingestellt ist hier der Wert 8. Bemerkungen: Werden die Parameter als Variablen übergeben, so müssen diese in Klammern gesetzt werden. Nach Ausführung von DSAVE kehrt der Interpreter auf jeden Fall in den Direktmodus zurück. Zur Speicherung von Programmen auf Kassette muß die SAVE-Anweisung (s. dort in Kapitel 5.2) verwendet werden. Existiert die angegebene Datei bereits auf Diskette, so wird die Fehlermeldung FILE EXISTS erzeugt, die mit PRINT DS$ angezeigt werden kann. Beispiele: DSAVE"PROG1" Das im Hauptspeicher befindliche Programm wird unter dem Namen PROG1 auf die Diskette in Laufwerk 0 von Gerät 8 gespeichert. DSAVE(A$),D(LW),U(GA) Hier werden die Parameter als Variablen übergeben. [SEITE 4-52] DS- und DS$-Systemvariablen Format: v=DS v$=DS$ Zweck: Liefert den Fehlerstatus als Code (DS) und als komplette Statusmeldung (DS$) des zuletzt angesprochenen Floppy- Disk-Gerätes. Bemerkungen: Ein Statuscode von 0 bedeutet kein Fehler. Die Statusmeldung ist eine Zeichenkette und besteht aus 4 Teilen: Statuscode Statustext Spur-Nr., bei der der Fehler auftrat Sektor-Nr., bei der der Fehler auftrat Durch eine Fehlerabfrage wird der Fehlerstatus zurück- gesetzt. Da DS und DS$ Systemvariablen sind, dürfen sie nicht als anwenderspezifische Variablen in einem Programm verwendet werden. Andernfalls würde der Fehler SYNTAX ERROR angezeigt. Beispiel: PRINT DS$:PRINT DS 32,SYNTAX ERROR,00,00 32 READY. Das zuletzt angesprochene Floppy-Disk-Gerät zeigt einen Syntax-Fehler, weil die übermittelte Befehlszeichenkette zu lang war. [SEITE 4-53] DVERIFY-Befehl Format: DVERIFY Dateiname [,D Laufwerk] [,U Geräteadr] Zweck: Vergleicht ein Programm im Hauptspeicher byteweise mit einer Programmdatei auf einer angegebenen Diskette. Dateiname Eine Zeichenkettenkonstante in Anführungsstrichen (") oder eine -variable in Klammern () einer Länge von bis zu 16 Zeichen, die den Programmdateinamen bezeichnet. Laufwerk Ein ganzzahliger Wert von 0 oder 1. Voreingestellt ist hier 0. Geräteadr Ein ganzzahliger Wert zwischen 4 oder 15, der die Geräteadresse der angeschlossenen Floppy-Disk bezeichnet. Voreingestellt ist hier der Wert 8. Bemerkungen: Wenn nach Ausführung eines SAVE- oder DSAVE-Befehls ein grafischer Bereich reserviert oder wieder freigegeben wird, liefern die Befehle VERIFY oder DVERIFY die Fehlermeldung VERIFY ERROR, obwohl das Programm in Ordnung ist. Dies entsteht dadurch, daß durch die Reservierung oder Freigabe eines grafischen Bereiches ein BASIC-Programm aus seiner ursprünglichen Speicher- position verschoben wird, wodurch die Adreßzeiger inner- halb der BASIC-Zeilen verändert werden und eine byte- weise Übereinstimmung mit dem gespeicherten Programm nicht mehr gegeben ist. [SEITE 4-54]^ Beispiele: DVERIFY"PROG1" Das Programm PROG1 auf Laufwerk 0 in der Floppy-Disk 8 wird mit dem hauptspeicherresidenten Programm byteweise verglichen. DVERIFY"MULT",D1,1 Das Programm MULT auf Laufwerk 1 der Floppy-Disk 8 wird mit einem hauptspeicherresidenten Maschinensprache- programm verglichen, das nicht am Anfang des BASIC- Programmspeichers beginnt. [SEITE 4-55] Format: v=EL Zweck: Liefert die Nummer der Programmzeile, in der ein Fehler aufgetreten ist. Bemerkungen: Da EL eine Systemvariable ist, darf sie nicht als anwenderspezifische Variable in einem Programm verwendet werden. Andernfalls würde der Fehler SYNTAX ERROR angezeigt. Beispiele: 800 IF EL=100 THEN 1000 Wenn EL in einer IF-Abfrage verwendet wird, muß die Vergleichsnummer rechts von der EL-Variablen stehen, damit sie bei einer ggfs. durchgeführten Renumerierung berücksichtigt werden kann. [SEITE 4-56] ENVELOPE-Anweisung Format: ENVELOPE n [,[An] [,[Ab] [,[Ha] [,[Au] [,Wd] [,Ib]]]]]] Zweck: Definiert eine von 10 möglichen Hüllkurven für Musik- instrumente. n Nummer der Hüllkurve (0 bis 9) An Anschlagzeit (0 bis 15) Ab Abschwellzeit (0 bis 15) Ha Haltezeit (0 bis 15) Au Ausklingzeit (0 bis 15) Wf Wellenform: 0 Dreieck 1 Sägezahn 2 Rechteck 3 Rauschen 4 Ringmodulation Ib Impulsbreite (0 bis 4095) Bemerkungen: Ein nicht spezifizierter Parameter behält seinen momen- tanen Wert. Die Impulsbreite ist nur im Zusammenhang mit der Recht- eck-Wellenform (Wf=2) definierbar und wird durch die Formel PULSBREITE=Ib/40.95 % bestimmt, so daß Ib=2048 eine Rechteckwelle erzeugt. [SEITE 4-57] Nach dem Einschalten des Rechners werden für die Parameter folgende Werte voreingestellt: n An Ab Ha Au Wf Ib Instrument 0 0 9 0 0 2 1536 Klavier 1 12 0 12 0 1 Akkordeon 2 0 0 15 0 0 Zirkusorgel 3 0 5 5 0 3 Trommel 4 9 4 4 0 0 Flöte 5 0 9 2 1 1 Gitarre 6 0 9 0 0 2 512 Cembalo 7 0 9 9 0 2 2048 Orgel 8 8 9 4 1 2 512 Trompete 9 0 9 0 0 0 Xylophon Weitere Einzelheiten zur ENVELOPE-Anweisung entnehmen Sie bitte dem Abschnitt "Musikerzeugung mit dem C128" ab Seite 4-156 ff. [SEITE 4-58] ER-Systemvariable Format: v=ER Zweck: Liefert den Code des zuletzt vom Interpreter diagnos- tizierten Fehlers. Im Kapitel 8.1 sind die Fehlermeldungen zusammen mit den ihnen zugeordneten Fehlercodes aufgeführt. Bemerkungen: Da ER eine Systemvariable ist, darf sie nicht als anwenderspezifische Variable in einem Programm verwendet werden. Andernfalls würde der Fehler SYNTAX ERROR angezeigt. Beispiele: 100 IF ER=30 THEN 1000 Wenn die STOP-Taste gedrückt wird, verzweigt das Programm nach Zeile 1000. [SEITE 4-59] ERR$-Funktion Format: v$=ERR$(n) Zweck: Liefert den Text des durch n spezifizierten Fehlers. n Ein ganzzahliger Wert zwischen 1 und 127, der den Fehlercode angibt (s. Kapitel 8.1). Beispiel: 10 TRAP 1000 . .BASIC-Anweisungen . 1000 REM ANALYSE DER FEHLERMELDUNGEN 1001 REM BEI SYNTAX-ERROR PROGRAMMSTOP 1010 IF ER=11 THEN PRINT EL,ERR$:STOP 1011 REM WENN KEIN SYNTAX ERROR, WIRD 1012 REM MELDUNG GEPRUEFT UND GEDRUCKT 1020 IF ER=9 THEN PRINT EL,ERR$(ER):RESUME 100 1030 IF ER=30 THEN RESUME 150 1040 RESUME 975 Die übrigen zur Fehlerverarbeitung benötigten Anwei- sungen sind bei RESUME und TRAP beschrieben. [SEITE 4-60] FAST-Befehl Format: FAST Zweck: Schaltet den Prozessor vom Betrieb im 1-Megahertz-Takt auf Betrieb im 2-Megahertz-Takt um. Der Rechner wird damit doppelt so schnell. Bemerkungen: Der 40-Zeichen-Bildschirm wird durch den FAST-Befehl inaktiviert, d.h. Text- oder Grafikausgaben sind nur noch auf dem 80-Zeichen-Bildschirm sichtbar. Sollten Sie ausschließlich einen Fernsehempfänger oder einen Monitor mit 40-Zeichen-Darstellung benutzen, schalten Sie bitte vor Ausgabe von Texten oder Grafik mit dem Befehl SLOW (s. dort) in den 1-MHz-Betrieb zurück. [SEITE 4-61] FETCH-Befehl Format: FETCH Bytes,Intadr,Extadr,Bank Zweck: Überträgt eine wählbare Anzahl von Bytes aus einer Speichererweiterungs-Bank in den BASIC-Arbeitsspeicher. Bytes Ein ganzzahliger Wert zwischen 0 und 65535, der die Anzahl der zu übertragenden Bytes angibt. Intadr Ein ganzzahliger Wert zwischen 0 und 65535, der die Adresse im BASIC-Arbeitsspeicher angibt, ab der die Bytes abgelegt werden sollen. Extadr Ein ganzzahliger Wert zwischen 0 und 65535, der die Adresse in der Speicherbank angibt, ab der die Bytes geholt werden sollen. Bank Ein ganzzahliger Wert zwischen 0 und 7, der die Speicherbank angibt, aus der die Bytes geholt werden sollen. Bemerkungen: Dieser Befehl kann nur ausgeführt werden, wenn eine RAM-Disk an den Rechner angeschlossen ist. Die RAM-Disk decodiert den entsprechenden Befehl und führt ihn aus. Der Parameter Intadr bezieht sich auf die Bank, die mit dem BANK Befehl eingestellt wurde. Voreingestellt ist Bank 15. Sollen z.B. Daten aus Bank 0 in der RAM-Disk abge- speichert werden, so muß vor dem STASH Befehl 'BANK 0' eingegeben werden. Beispiel: FETCH 1000,52000,2000,7 Überträgt 1000 Bytes aus Speicherbank 7 ab Adresse 2000 in den BASIC-Arbeitsspeicher ab Adresse 52000. +-------------------------------------------------------------------+ | Achtung: | | Um diesen Befehl ausführen zu können, brauchen Sie das Steckmodul | | RAM-Disk. | +-------------------------------------------------------------------+ [SEITE 4-62] FILTER-Anweisung Format: FILTER [Freq] [,[Tp] [,[Bp] [,[Hp] [,[Res]]]]] Zweck: Definiert die Parameter für Klangfilter. Freq Ein ganzzahliger Wert zwischen 0 und 2047, der die Filtergrenzfrequenz festlegt. Tp,Bp,Hp Ein ganzzahliger Wert von 0 oder 1, der das Tiefpaß-, Bandpaß- oder Hochpaß-Filter ein- (1) oder ausschaltet (0). Res Ein ganzzahliger Wert zwischen 0 und 15, der die Resonanz festlegt. Bemerkungen: Bei nicht angegebenen Parametern bleibt der aktuelle Wert gültig. Die tatsächliche Filterfrequenz errechnet sich aus GRENZFREQ=Freq*5.8 + 30 Dieser Wert ist jedoch nur ein Anhaltswert und kann sich von Rechner zu Rechner geringfügig ändern. Die Filterausgänge sind additiv. So können durch gemeinsame Auswahl von Tief- und Hochpaßfiltern Kerbfilter- oder Bandsperr- Effekte erzielt werden. Um hörbare Filtereffekte zu erzielen, muß mindestens ein Filter gewählt und mindestens eine Tonfrequenz durch das Filter geführt werden. Weitere Einzelheiten zur FILTER-Anweisung entnehmen Sie bitte dem Abschnitt "Musikerzeugung mit dem C128" ab Seite 4-162. [SEITE 4-63] FRE-Funktion Format: v=FRE(Bank) Bedeutung: Liefert die Anzahl der noch nicht benutzten Speicherplätze im BASIC-Programm- oder -Arbeitsspeicher. Bank Ein ganzzahliger Wert von 0 oder 1, der die Speicherbank bezeichnet, deren ungenutzte Speicherplätze abgefragt werden sollen. Bemerkungen: Wird FRE(1) aufgerufen, so wird der Speicherbereich für Zeichenketten in der Speicherbank 1 organisatorisch bereinigt, ehe die Anzahl der freien Speicherplätze übergeben wird. Dieser Speicherbereich wird nämlich vom Interpreter dynamisch verwaltet, d.h. Mehrfachzuwei- sungen von Zeichenketten zu ein und derselben Variablen führen zu immer neuem Anlegen dieser Ketten im Speicher. [SEITE 4-64] GETKET-Anweisung Format: GETKEY Liste von Zeichenkettenvariablen Zweck: Die GETKEY-Anweisung ähnelt der GET-Anweisung (s. dort in Kapitel 5.2). Sie wartet jedoch so lange, bis eine Taste auf der Tastatur gedrückt wird und weist dann den ASCII-Code der