Das große Commodore BASIC Handbuch

Aus C64-Wiki
Zur Navigation springenZur Suche springen


Das große Commodore BASIC Handbuch
Cover/Buchdeckel
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.

Meinung[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Katalog der Deutschen Nationalbibliothek: 3-88745-615-7