„Commodore Basic V2“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Keine Bearbeitungszusammenfassung
Zeile 5: Zeile 5:


== Sprachelemente ==
== Sprachelemente ==
Basic V2 arbeitet zeilennummernorientiert, d. h. jeder Zeile muss eine Nummer vorangestellt werden, die auch als Parameter für Sprunganweisungen dient, sowie als Bezug bei Fehlermeldungen. Einmal vergebene Zeilennummern können nicht mehr direkt verändert werden. Das Löschen einer Zeile erfolgt ohne Rückfrage durch Eingabe der entsprechenden Zeilennummer und Drücken der Return-Taste. Es gibt kein Systemkommando zur automatischen Renummerierung der Zeilen, daher ist es üblich, Zeilennummern im Abstand von 10 (oder höher) zu vergeben. Sollen dann später Zeilen eingefügt werden, können hierzu die verbleibenden Zahlen zwischen zwei Zeilennummern verwendet werden. In jeder Zeile können beliebig viele Befehle stehen, welche durch Doppelpunkte getrennt werden. Eine Programmzeile darf jedoch nicht länger als 255 Zeichen sein. Der [[Interpreter]] benötigt keinerlei Leer- oder sonstige Formatierungszeichen und akzeptiert auch die Eingabe von Kurzcodes statt der üblichen Schlüsselwörter, welche im Programm dann automatisch ausgeschrieben werden. Strukturierung zur besseren Lesbarkeit ist nur durch Leerzeichen zwischen Schlüsselwörtern möglich, Einrücken der Zeilen jedoch nur durch Einfügen eines Doppelpunktes am Zeilenanfang.
Basic V2 arbeitet zeilennummernorientiert, d. h. jeder Zeile muss eine Nummer vorangestellt werden, die auch als Parameter für Sprunganweisungen dient, sowie als Bezug bei Fehlermeldungen. Einmal vergebene Zeilennummern können nicht mehr direkt verändert werden. Das Löschen einer Zeile erfolgt ohne Rückfrage durch Eingabe der entsprechenden Zeilennummer und Drücken der Return-Taste. Es gibt kein Systemkommando zur automatischen Renummerierung der Zeilen, daher ist es üblich, Zeilennummern im Abstand von 10 (oder höher) zu vergeben. Sollen dann später Zeilen eingefügt werden, können die verbleibenden Zahlen zwischen zwei Zeilennummern verwendet werden. In jeder Zeile können beliebig viele Befehle stehen, welche durch Doppelpunkte getrennt werden. Eine Programmzeile darf jedoch nicht länger als 255 Zeichen sein. Der [[Interpreter]] benötigt keinerlei Leer- oder sonstige Formatierungszeichen und akzeptiert auch die Eingabe von Kurzcodes statt der üblichen Schlüsselwörter, welche im Programm dann automatisch ausgeschrieben werden. Strukturierung zur besseren Lesbarkeit ist nur durch Leerzeichen zwischen Schlüsselwörtern möglich, Einrücken der Zeilen jedoch nur durch Einfügen eines Doppelpunktes am Zeilenanfang.


Neben den üblichen Ein- und Ausgabebefehlen (''PRINT'', ''INPUT'') kann mittels ''GET'' der Wert eines einzelnen Tastendrucks ausgelesen werden.
Neben den üblichen Ein- und Ausgabebefehlen (''PRINT'', ''INPUT'') kann mittels ''GET'' der Wert eines einzelnen Tastendrucks ausgelesen werden.
Zeile 15: Zeile 15:
Einfache [[Variable (Programmierung)|Variablen]] müssen vor ihrer Verwendung nicht deklariert werden, der Variablentyp wird über deren [[Wort_(Theoretische_Informatik)#Suffix|Suffix]] definiert ("$" für Zeichenketten, "%" für Ganzzahlen, ohne Suffix für Fließkommazahlen). Bei [[Feld_(Datentyp)|Indizierten Variablen]] ist jedoch eine Dimensionierung mit ''DIM'' erforderlich, sofern mehr als 10 Elemente pro [[Parameter]] (maximal drei) verwendet werden sollen. Komplexere Variablentypen sind nicht implementiert.
Einfache [[Variable (Programmierung)|Variablen]] müssen vor ihrer Verwendung nicht deklariert werden, der Variablentyp wird über deren [[Wort_(Theoretische_Informatik)#Suffix|Suffix]] definiert ("$" für Zeichenketten, "%" für Ganzzahlen, ohne Suffix für Fließkommazahlen). Bei [[Feld_(Datentyp)|Indizierten Variablen]] ist jedoch eine Dimensionierung mit ''DIM'' erforderlich, sofern mehr als 10 Elemente pro [[Parameter]] (maximal drei) verwendet werden sollen. Komplexere Variablentypen sind nicht implementiert.


Zur Übertragung von Daten von und zu [[Peripheriegerät]]en stehen besondere Varianten der Ein- und Ausgabebefehle zur Verfügung (''PRINT#'', ''INPUT#'', ''GET#''). Hinzu kommen ''OPEN'', ''CLOSE'' und ''CMD'' zur Ansteuerung von Drucker, [[Datasette]] und [[VC1540|Floppy]].
Zur Übertragung von Daten von und zu [[Peripheriegerät]]en stehen besondere Varianten der Ein- und Ausgabebefehle zur Verfügung (''PRINT#'', ''INPUT#'', ''GET#''). Dazu kommen ''OPEN'', ''CLOSE'' und ''CMD'' zur Ansteuerung von Drucker, [[Datasette]] und [[VC1540|Floppy]].


== Codebeispiel ==
== Codebeispiel ==
Zeile 41: Zeile 41:


== Weblinks ==
== Weblinks ==
*[http://homepage.hispeed.ch/commodore/c64_handbuch.html Das C64-Benutzerhandbuch inkl. Basic V2 Referenz]
*[http://homepage.hispeed.ch/commodore/c64_handbuch.html Das C64-Benutzerhandbuch inkl. Basic V2-Referenz]
*[http://www.zock.com/8-Bit/D_Basic2.HTML Dokumentation zum Basic V2 beim 8-Bit Nirvana]
*[http://www.zock.com/8-Bit/D_Basic2.HTML Dokumentation zu Basic V2 bei 8-Bit-Nirvana]
*[http://cbmbasic.sourceforge.net/ CBM Basic V2 Basic Interpreter Windows 32BIT & OSX]
*[http://cbmbasic.sourceforge.net/ CBM Basic V2 Basic Interpreter Windows 32BIT & OSX]



Version vom 25. Juli 2012, 00:58 Uhr

Screenshot des Commodore BASIC V2 auf dem C64

Commodore BASIC V2 ist der auf dem Commodore 64 (C64) sowie dem Commodore VC 20 (VC20) primär eingesetzte BASIC-Dialekt. Beim C64 ist ein Basic V2-Interpreter fest im ROM enthalten und dient gleichzeitig als Benutzerschnittstelle. Diese Benutzerschnittstelle wird durch einen ebenfalls im ROM enthaltenen zeilenorientierten Editor bereitgestellt. Als Eingabe akzeptiert der Editor die Angabe einer Programmzeile mit vorangestellter Zeilennummer (die er kommentarlos übernimmt) oder die Angabe eines Befehls oder Systemkommandos, welche direkt ausgeführt werden (z. B. RUN, LOAD, SYS, PRINT).

Basic V2 basiert auf MBASIC von Microsoft und wurde für den C64 angepasst.

Sprachelemente

Basic V2 arbeitet zeilennummernorientiert, d. h. jeder Zeile muss eine Nummer vorangestellt werden, die auch als Parameter für Sprunganweisungen dient, sowie als Bezug bei Fehlermeldungen. Einmal vergebene Zeilennummern können nicht mehr direkt verändert werden. Das Löschen einer Zeile erfolgt ohne Rückfrage durch Eingabe der entsprechenden Zeilennummer und Drücken der Return-Taste. Es gibt kein Systemkommando zur automatischen Renummerierung der Zeilen, daher ist es üblich, Zeilennummern im Abstand von 10 (oder höher) zu vergeben. Sollen dann später Zeilen eingefügt werden, können die verbleibenden Zahlen zwischen zwei Zeilennummern verwendet werden. In jeder Zeile können beliebig viele Befehle stehen, welche durch Doppelpunkte getrennt werden. Eine Programmzeile darf jedoch nicht länger als 255 Zeichen sein. Der Interpreter benötigt keinerlei Leer- oder sonstige Formatierungszeichen und akzeptiert auch die Eingabe von Kurzcodes statt der üblichen Schlüsselwörter, welche im Programm dann automatisch ausgeschrieben werden. Strukturierung zur besseren Lesbarkeit ist nur durch Leerzeichen zwischen Schlüsselwörtern möglich, Einrücken der Zeilen jedoch nur durch Einfügen eines Doppelpunktes am Zeilenanfang.

Neben den üblichen Ein- und Ausgabebefehlen (PRINT, INPUT) kann mittels GET der Wert eines einzelnen Tastendrucks ausgelesen werden.

Zur Verzweigung innerhalb eines Programms unterstützt Basic V2 die Sprunganweisungen GOTO, GOSUB/ RETURN sowie die bedingte Sprunganweisung ON GOTO. Außerdem kann mit SYS direkt in ein Maschinenspracheprogramm eingesprungen werden. Die Funktion USR(x) ruft ein Maschinenspracheprogramm als Funktion auf und erhält von diesem einen Rückgabewert. Als weitergehende Sprachelemente zur strukturierten Programmierung stehen lediglich Zählschleifen (FOR NEXT) zur Verfügung.

Ebenfalls nicht enthalten sind Befehle zur komfortablen Erstellung von Sound, Grafiken und Sprites. Zum direkten Zugriff auf die Hardware, insbesondere den Speicher, werden die Befehle POKE und die Funktion PEEK(x) bereitgestellt.

Einfache Variablen müssen vor ihrer Verwendung nicht deklariert werden, der Variablentyp wird über deren Suffix definiert ("$" für Zeichenketten, "%" für Ganzzahlen, ohne Suffix für Fließkommazahlen). Bei Indizierten Variablen ist jedoch eine Dimensionierung mit DIM erforderlich, sofern mehr als 10 Elemente pro Parameter (maximal drei) verwendet werden sollen. Komplexere Variablentypen sind nicht implementiert.

Zur Übertragung von Daten von und zu Peripheriegeräten stehen besondere Varianten der Ein- und Ausgabebefehle zur Verfügung (PRINT#, INPUT#, GET#). Dazu kommen OPEN, CLOSE und CMD zur Ansteuerung von Drucker, Datasette und Floppy.

Codebeispiel

 10 input "Geben Sie bitte Ihren Namen ein"; a$
 20 print "Guten Tag "; a$
 30 input "Wie viele Sterne möchten Sie?"; s
 40 for i = 1 to s
 50 s$ = s$ + "*"
 55 next i
 60 print s$
 70 input "Möchten Sie noch mehr Sterne?"; q$
 80 if len(q$) = 0 goto 70
 90 l$ = left$(q$, 1)
 100 if (l$ = "J") or (l$ = "j") then goto 30
 110 print "Auf Wiedersehen";
 120 for i = 1 to 200
 130 print a$; " ";
 140 next i
 150 print