Das große Commodore BASIC Handbuch
Das große Commodore BASIC Handbuch | |||
---|---|---|---|
Sprache | deutsch | ||
Autor(en) | Michael Orkim | ||
Verlag | SYBEX Verlag | ||
Jahr | 1986 | ||
ISBN | ISBN 3-88745-615-7 | ||
Neupreis | DM 58.- SFr 53,40 ÖS 452.- | ||
Datenträger | |||
Seitenzahl | 636 | ||
letzte Auflage | 1. Auflage | ||
Genre | Programmieren | ||
Information |
Buchrückseite[Bearbeiten | Quelltext bearbeiten]
Darauf haben Commodore-Fans schon lange gewartet: BASIC komplett für alle Rechner von VC20 bis C128!
Grundlage des Buches ist BASIC 7.0 — das außerordentlich leistungsstarke und komfortable BASIC des Commodore 128 mit ca. 150 Befehlen. Von diesen Befehlen ausgehend, zeigt das Buch im alphabetisch gegliederten Hauptteil Übereinstimmungen mit und Unterschiede zu den bisherigen, aufwärts kompatiblen BASIC-Versionen. So erhalten Sie detaillierte Informationen zu :
- BASIC 2.0 (VC20, C64, Rechner der 2000-/3000-Serien)
- BASIC 4.0 (Rechner der 4000-/8000-/600-/700-Serien)
- BASIC 3.5 (C16, C116, Plus/4)
- BASIC 7.0 (C128)
Dabei lernen Sie auch, in einer bestimmten Version nicht vorhandene Befehle so zu simulieren, daß die gleiche Funktion erfüllt wird. Zusätzliche Arbeitshilfen für Anfänger und Fortgeschrittene bieten sorgfältig erarbeitete Fakten zu Themen wie:
- Interpreter und Editor
- Programmsteuerung und -strukturierung
- Ein-/Ausgabefunktionen und -geräte
- Dateiverwaltung
Und vor allem: Praktische Tips, wie Sie Programme zwischen den verschiedenen Geräten übertragen und lauffähig machen können!
Richtiq rund wird das Buch durch die ausführlichen Anhänge: Hier finden Sie alphabetische Befehlsübersichten mit Erläuterungen zu den BASIC-Erweiterungen SIMON'S BASIC, EXBASIC und HONEY.AID, die das BASIC 2.0 q1uasi auf die Ebene des BASIC 7.0 anheben.
Ein Muß für alle Commodore-Anwender!
Inhaltsverzeichnis[Bearbeiten | Quelltext bearbeiten]
Einleitung ................................................... 9 Kapitel 1 Ein erstes einfaches Programm ................................ 13 Kapitel 2 Grundlagen für Neugierige - Zusammenspiel von Interpreter, Betriebssystem und Hardware .................................. 21 Platzverteilung im Rechner ................................... 21 Maschinenunabhängigkeit ...................................... 23 Interpretation und Kompilierung .............................. 24 Dem Interpreter auf die Finger geschaut ...................... 26 Speicherverwaltung und Interpreter ........................... 32 Platz für Maschinenprogramme ................................. 38 Der BASIC-Interpreter und die Ein-/Ausgabesteuerung .......... 39 Der Bildschirm-Editor - Teil des Interpreters ................ 43 Fensterbefehle beim C128 ..................................... 59 Externe Editoren ............................................. 62 Kapitel 3 Bestandteile von BASIC ....................................... 63 Generelle Eigenschaften des Commodore-BASIC .................. 63 BASIC-Sprachelemente.......................................... 65 Datentypen und Zuweisungen ................................... 66 Zeichen und Codes ............................................ 69 Primäre und sekundäre Schlüsselwörter ........................ 69 Ausdrücke .................................................... 72 Variablennamen ............................................... 73 Operatoren ................................................... 74 Funktionen ................................................... 83 Reservierte Wörter in BASIC 7.0 .............................. 85 Leerstellen .................................................. 90 Kapitel 4 Ein- und Ausgabe in BASIC .................................... 91 Schnittstellen ............................................... 91 Die Tastatur ................................................. 96 Ausgabe auf den Bildschirm ................................... 98 Ausgabe vom Bildschirm ....................................... 104 Ausgabe auf den Drucker ...................................... 106 Ein- und Ausgabe von Kassette ................................ 108 Ein- und Ausgabe von der Diskette ............................ 109 Kapitel 5 Funktionen.................................................... 113 Gliederung nach Funktionstypen ............................... 114 Mathematische Funktionen ..................................... 115 Zeichenkettenfunktionen ...................................... 144 Grafik- und Sprite-Funktionen ................................ 151 Systemfunktionen ............................................. 155 Kapitel 6 Maschinennahe Befehle und Variablen .......................... 157 Die Systemvariablen .......................................... 164 Kapitel 7 Dateiverwaltung .............................................. 167 Programmdateien .............................................. 168 Benutzerdateien .............................................. 168 Sequentielle Dateien ......................................... 168 Direktzugriffs-Dateien ....................................... 169 Anlegen von sequentiellen und Direktzugriffs-Dateien ......... 169 Kapitel 8 Alphabetische Übersicht über alle BASIC-Schlüsselwörter ...... 173 Kapitel 9 Programmstrukturierung und -Steuerung in BASIC ............... 487 Darstellungshilfsmittel ...................................... 487 Datenorientierte Strukturierung .............................. 494 Ablauforientierte Strukturierung ............................. 496 Kapitel 10 Programmentwicklung und Austesten in BASIC ................... 501 Modulare Programmierung ...................................... 504 Zusammenfassung "Programmentwicklung" ........................ 510 Overlay-Technik .............................................. 510 Prototyping und Bildschirm-Layout ............................ 515 Benutzerführung uns Menütechnik .............................. 518 Austesten von Programmen ..................................... 522 Zusammenfassung "Programme austesten" ........................ 524 Kapitel 11 Übertragbarkeit von BASIC-Programmen ......................... 527 Kompatibilität ............................................... 527 Bildschirmspeicher ........................................... 531 Groß-/Kleinschreibung ........................................ 531 Anhang A BASIC-Befehlserweiterung Simons BASIC für den C64 und C128 ..................................................... 535 Anhang B Befehlserweiterung EXBASIC LEVEL II .......................... 569 Anhang C BASIC-Befehlserweiterung Honey.Aid für den C64 ............... 593 Anhang D BASIC-Befehlserweiterung SUPER EXPANDER 64 ................... 605 Anhang E Alphabetische Befehlsübersicht mit Crossreference aller BASIC-Versionen .............................................. 617 Anhang F Alphabetische Befehlsübersicht nach Funktionen ............... 623 Programmverzeichnis .......................................... 629 Stichwortverzeichnis ......................................... 631
Leseprobe[Bearbeiten | Quelltext bearbeiten]
(Seite 269; Kapitel "BASIC Schlüsselwörter"; Unterkapitel "DOPEN")
(BASIC 4.0,7.0) DOPEN | |
Abkürzung: | D<SHIFT>O |
Typ: | Systembefehl für Ein-/Ausgabe |
Syntax: | DOPEN#Dateinumnmer, "Dateiname" |
DOPEN#Dateinummer, "Dateiname", | |
DLaufwerknummer, UGerätenummer | |
DOPEN#Dateinummer, "Dateiname", | |
LSatzlänge oder W | |
Parameterbereich: | Dateinummern |
Dateinamen | |
Laufwerknummern | |
Gerätenummern |
Der Befehl DOPEN öffnet die über Dateinummer und Dateiname spezifizierte Datei zum Lesen oder Schreiben.
Falls nur ein Laufwerk angeschlossen ist oder wenn sich die Datei auf Laufwerk DO befindet, kann die Laufwerknummer entfallen.
Die Parameter L mit Angabe einer Satzlänge und W sind nur notwendig, wenn die Datei zum Schreiben geöffnet wird. Sind sie nicht angegeben, so ist die Datei zum Lesen geöffnet worden. Der Parameter L wird dabei nur bei relativen Dateien benötigt, um die Satzlänge, beispielsweise L38, anzugeben.
Beispiele
DOPEN#1, "DATEI1",D1,U8
öffnet die Datei mit dem Namen DATEI1 in Laufwerk D1 zum Lesen.
DOPEN#1, "DATEI2",L25
öffnet die relative Datei mit dem Namen DATEI2 und der Satzlänge 25 zum Schreiben.
Anmerkungen
Mit DOPEN werden den Ein-/ und Ausgabevorgängen auch Pufferbereiche zugeordnet, so daß sich-in der Regel mindestens ein Satz, also ein Ergebnis eines Schreib- oder Lesevorgangs, dort befindet. Diese Information kann verlorengehen, wenn der Ein-/Ausgabevorgang nicht ordnungsgemäß mit CLOSE oder DCLOSE beendet wird.
Außerdem bleibt eine mit DOPEN geöffnete Datei bei nicht ordnungsgemäßem Abschluß im Inhaltsverzeichnis der Diskette weiterhin als geöffnet gekennzeichnet, und die Datei erhält kein Endekennzeichen hinter dem letzten Satz. Dies kann zu großen Problemen bei der weiteren Verarbeitung führen.
(Seite 167; Kapitel "Kapitel 7: Dateiverwaltung")
Wenn wir BASIC-Programme entwickeln, speichern wir unsere Informationen in der Regel in Dateien ab. Für den Computer bedeutet eine Datei dasselbe wie für uns ein Karteikasten-System. Das kann z. B. eine Adreßkartei mit Karteikarten sein, auf denen Informationen von Personen festgehalten sind, insbesondere der Name, die Straße, die Postleitzahl und die Stadt. Jeder Karteikarte entspricht beim Computer ein Datensatz und jeder Detailinformation ein Feld. Eine Datei im Computersystem könnte dann etwa folgendermaßen aussehen:
Maria Schneider, Feldweg 33, 5300 Bonn Alfred Schwerte, Parkstr.la, 4600 Dortmund 2 Fred Langer, Am grünen Stein 12, 2000 Hamburg
Diese Datei umfaßt 3 Datensätze, und zwar den Namen und die zugehörige Adreßinformation für 3 Personen. Jeder Satz besteht wiederum aus 3 Satzfeldern:
NAME, STRASSE, PLZSTADT
Es ist in der Regel für ein BASIC-Programm, das mit den Objekten Satzfeld und Satz arbeitet, notwendig, daß alle Sätze dieselbe Anzahl von Feldern enthalten, da sonst nicht klar entschieden werden kann, im wievielten Satz man sich befindet.
Es gibt bei den Commodore-Rechnern im wesentlichen vier Dateitypen, von denen wir zwei näher betrachten wollen. Dabei gehen wir davon aus, daß Sie mit einem Diskettenlaufwerk arbeiten, da die meisten Dateitypen das ohnehin voraussetzen.
Die vier Dateitypen sind:
- Programmdatei (PRG)
- sequentielle Datei (SEQ)
- Direktzugriffs- oder relative Datei (REL)
- Benutzerdatei (USR)
Im Inhaltsverzeichnis der Diskette bibt die jeweilige Abkürzung hinter den Programmnamen Auskunft darüber, um welche Art von Datei es sich jeweils handelt.
Zwei von diesen Dateitypen wollen wir jedoch im Rahmen der Dateiverwaltung nicht näher erläutern.
Programmdateien
Eine Programmdatei ist jedes normale BASIC-Programm, das wir erstellen und abspeichern. Dabei stellt die Programmdatei eine besondere Spezialisierung einer sequentiellen Datei dar. Deshalb ist es durchaus möglich, sie wie eine normale sequentielle Datei zu öffnen und zu lesen. Hierbei muß allerdings der etwas abweichende Dateianfang berücksichitgt werden. Außerdem enthält jede BASIC-Zeile Informationen über die vorhergehende und die nachfolgende BASIC-Programmzeile. Das heißt, wir müssen noch die besondere Datenstruktur des BASIC-Programms, die einer doppelt verketteten Liste entspricht, beachten.
Meist wird man das Programm jedoch mit LOAD laden und mit RUN starten. Korrekturen in den Zeilen sind einfach, wie in Kapitel 2 beschrieben, möglich, so daß es selten vorkommt, daß man sie wie eine Datei liest, um das Programm gezielt zu bearbeiten.
Solche Operationen wären beispielsweise bei der Erstellung von Verwendungslisten von Variablen, Befehlen und Unterprogrammen anzuwenden. Eine weitere Möglichkeit ergibt sich bei einer nachträglichen Strukturierung älterer Programme durch Einfügen von Leerzeilen und Einrückungen, wie bei blockorientierten Sprachen erlaubt ist.
Benutzerdateien
Auf Benutzerdateien werden wir ebenfalls nicht weiter eingehen, da es sich hierbei nicht um ein von BASIC unterstütztes echtes Dateisystem handelt. Man kann zwar seinen eigenen Dateityp aufbauen, aber die gesamte Verwaltung des Lesens und Schreibens muß vollständig vom Benutzerprogramm vorgenommen werden und wird nicht vom System unterstützt. Dieser Dateityp wird deshalb in der Regel nur von sehr anspruchsvollen kommerziellen Programmen, etwa bei einem Datenbankprogramm verwendet.
Sequentielle Dateien
Sequentielle Dateien heißen so, weil auf ihre Datensätze stets nur fortlaufend vom ersten bis zum letzten zugegriffen werden kann. Da sich bei dieser Datenspeicherungsform kaum Leerräume zwischen den einzelnen Sätzen auf dem Datenträger befinden, gehen sequentielle Dateien sehr sparsam mit dem zur Verfügung stehenden Platz um.
Außerdem ist es beim Arbeiten mit dem Kassettenrecorder sowieso die einzige mögliche Form der Dateiverwaltung.
Das Dateiende (EOF - End Of File) kann bei einer sequentiellen Datei im Programm über die reservierte Variable ST (siehe dort) abgefragt werden. Wenn ST nämlich den Wert 64 hat, ist das Dateiende erreicht. In der Datei selbst ist das Dateiende mit CHR$(0) gekennzeichnet.
Ein großer Nachteil von sequentiellen Dateien ist allerdings ihre geringe Flexibilität. Gerade wegen der geringen Zwischenräume zwischen den einzelnen Informationen ist es nicht möglich, beispielsweise bei einer Adresse etwa die Angabe Parkstr. durch die längere Angabe Friedrich-Wilhelm-Str. zu ersetzen, weil dafür der Platz nicht ausreicht. Deshalb ist es sinnvoller, für Dateien, bei denen eine häufige Veränderung der Datensätze vorauszusehen ist, Direktzugriffs-Dateien zu verwenden.
Direktzugriffs-Dateien
Der Name Direktzugriffs-Datei rührt daher, daß die Programme einen einzelnen Datensatz unabhängig von seiner relativen Anordnung innerhalb der Datei direkt auffinden können. Daher ist es nicht notwendig, vor dem Zugriff auf einen Datensatz erst andere Sätze zu lesen.
Direktzugriffs-Dateien haben allerdings den Nachteil, daß sie nicht sehr sparsam mit dem Speicherplatz umgehen. Für jedes Feld und auch für den ganzen Datensatz muß die maximale Größe vorher bestimmt und reserviert werden. Nehmen .wir einmal an, die Satzlänge in einer Direktzugriffs-Datei wäre 100 Bytes; dann wissen wir genau, wo der 9. Satz beginnt, nämlich 800 Bytes vom l. Satz entfernt.
Anlegen von sequentiellen und Direktzugriffs-Dateien
Ob eine Datei als sequentielle oder Direktzugriffs-Datei angelegt werden soll, muß schon beim OPEN-Befehl festgelegt werden. Im OPEN-Befehl (siehe dort) werden nämlich alle Charakteristika einer Datei bestimmt. So kann man den Parameter S für sequentielle Dateien und L für Direktzugriffs-Dateien angeben:
OPEN 1,8,2,"0:SEQDATEI,S,W"
in BASIC 2.0 bzw.
DOPEN#1, "SEQDATEI",W
in den anderen BASIC-Versionen
öffnet die sequentielle Datei mit dem Namen SEQDATEI auf Laufwerk 0 zum Schreiben (W). In eine sequentielle Datei kann allerdings nur geschrieben werden, wenn diese leer ist, sonst werden bereits bestehende Sätze überschrieben.
Wenn eine Direktzugriffs-Datei geöffnet wird, muß stets die Länge ihrer Datensätze dabei angegeben werden. Zusätzlich zu der im ungünstigsten Fall benötigten Anzahl von Zeichen muß dabei noch ein Zeichen für den Zeilen vorschub (carriage return) kalkuliert werden:
OPEN 1,8,2, "DIRDATEI,L,W"+CHR$ (51)
in BASIC 2.0 bzw.
DOPEN#1, "DIRDATEI",L50
inden anderen BASIC-Versionen
öffnet eine Direktzugriffs-Datei mit Namen DIRDATEI, um sie neu anzulegen, deren Sätze eine maximale Länge von 50 Zeichen haben werden. Die Satzlänge darf bei einer relativen Datei die maximale Satzlänge von 254 nicht überschreiten.
Wenn eine relative Datei einmal angelegt ist, darf sie fortan nicht mehr mit einer anderen Satzlänge eröffnet werden, als bei der Neuanlage angegeben wurde, sonst gibt es eine Fehlermeldung. Daher kann es sinnvoll sein, diesen Parameter nur zur Eröffnung zu verwenden. Er bietet allerdings auch einen gewissen Schutz vor Irrtümern. Das heißt, Sie sollten eigentlich immer wissen, welche Datei Sie ansprechen wollen und welche Satzlänge diese Datei hat.
Wir wollen nun als erstes eine sequentielle Datei anlegen.
100 REM****************************** 110 REM* SEQUENTIELLE DATEI ANLEGEN * 120 REM****************************** 130 DOPEN#1, "SEQDATEI",W 140 ANZAHL>20 150 PRINT#1, ANZAHL 160 FOR I=1 TO ANZAHL 170 : PRINT#1,I 180 NEXT I 190 CLOSE 1 200 END
Wir haben die Zahl 20 als Angabe dafür, wieviel Daten sich in der Datei SEQDATEI befinden, als erstes auf die Diskette geschrieben und danach die Zahlen 1 bis ANZAHL. Nun wollen wir sehen, ob es auch geklappt hat, und die Datei wieder auslesen:
100 REM**************************** 110 REM* SEQUENTIELLE DATEI LESEN * 120 REM**************************** 130 DOPEN#1, "SEQDATEI",R 140 INPUT#1, ANZAHL 150 FOR I=1 TO ANZAHL 160 : INPUT#1,2 170 : PRINT 2 180 : IF ST=64 THEN 200 190 NEXT I 200 CLOSE 1 210 END
Obwohl wir genau wissen, wieviel Daten in unserer Datei sind, fragen wir das Dateiende in Zeile 180 sicherheitshalber zusätzlich ab.
Nun wollen wir 20 weitere Daten an unsere Datei anhängen. Zu diesem Zweck lesen wir sie erneut und fügen bei Dateiende unsere weiteren Angaben hinzu. Wir werden dabei aber das Vater-Sohn-Prinzip verfolgen, d. h. aus Sicherheitsgründen wird nicht in derselben Datei wieder geschrieben, sondern die Datei wird noch einmal abgeschrieben und dann erweitert.
100 REM******************************** 110 REM* SEQUENTIELLE DATEI ERWEITERN * 120 REM******************************** 130 MEHR=20 140 DOPEN#1, "SEQDATEI",R 150 DOPEN#2, "SEQDATEI2",W 160 INPUT#1, ANZAHL 170 AM=ANZAHL+MEHR 180 PRINT#2,AM 190 FOR I=1 TO ANZAHL 200 : INPUT#1,A 210 : PRINT#2,A 220 : IF ST=64 THEN 240 230 NEXT I 240 FOR I=ANZAHL+1 TO AM 250 : PRINT#2,I 260 NEXT I 270 CLOSE 1 280 CLOSE 2 290 END
Ob das Anhängen von weiteren Daten geklappt hat, erfahren Sie mit demselben Programm, mit dem Sie vorhin die Datei SEQDATEI gelesen haben. Ändern Sie nur den Dateinamen in Zeile 130 in SEQDATEI2 um:
130 DOPEN#1,"SEQDATEI2",R
Die Programme müssen für BASIC 2.0 so abgewandelt werden, daß die DOPEN-Befehle durch OPEN-Befehle mit entsprechenden Parametern ausgetauscht werden. Beachten Sie noch folgendes: Wenn Sie wiederholt versuchen, in eine Datei gleichen Namens zu schreiben, etwa weil es beim ersten Mal nicht geklappt hat, funktioniert das nur, wenn Sie den Klammeraffen @ vor den Dateinamen setzen. In BASIC 2.0 muß nach dem Klammeraffen noch ein Doppelpunkt stehen:
DOPEN#1, "@SEQDATEI",W
oder
OPEN 1,8,3,"@:SEQDATEI,S,W"
Das Anlegen, Lesen und Ändern von Direktzugriffs-Dateien funktioniert ähnlich. Der Hauptunterschied ist jedoch, daß Daten an beliebiger Stelle in der Datei geschrieben oder gelesen werden können. Dazu muß jeweils ein Zeiger positioniert werden. In BASIC 4.0 und 7.0 ist das leicht mit dem Systembefehl RECORD möglich. In den anderen Versionen ist das Auffinden bestimmter Sätze am leichtesten über eine Satznummer möglich, die der Anwender beim Anlegen der Datei zusammen mit dem Datensatz wegschreibt.