Commodore BASIC

Commodore BASIC
Typische Büroanwendung in Commodore BASIC auf dem CBM 3032
Screenshot vom Commodore BASIC auf dem C64

Commodore BASIC ist ein Dialekt der Programmiersprache BASIC, die in Commodores 8-Bit-Heimcomputern – beginnend 1977 mit dem PET 2001 bis zum C128 im Jahre 1985 – eingesetzt wurde[1]. Später kam noch eine für den C65 gedachte Version hinzu, die aber nicht mehr fertiggestellt wurde. Das Basic basierte auf 6502-Microsoft BASIC, das von Microsoft für eine Einmalzahlung lizenziert wurde. Einige andere BASICs für 6502-Rechner, beispielsweise Applesoft BASIC, beruhen auf der gleichen Codebasis und sind daher sehr ähnlich.[2]

Besondere Eigenschaften

Ein aus Sicht der damaligen Zeit besonderer Vorteil des im ROM eingebauten Commodore-BASIC-Interpreters gegenüber denen anderer Hersteller war der integrierte, so genannte "Fullscreen-Editor" ("Vollbildschirm-Editor"), der ein komfortables Bearbeiten von Programmen oder sofortiges Ausführen von Befehlen ohne umständliche EDIT-Kommandos, Copy-Cursor-Funktionen, ESCAPE-Tastensequenzen oder sonstige Umwege ermöglichte. Der Editor konnte auch mehrere Bildschirmzeilen zu einer Programmzeile verbinden; die maximal nutzbare Anzahl Bildschirmzeilen je Programmzeile war modellabhängig. Programmzeilen werden durch Betätigen der Eingabe-Taste ("Return") teilweise kompiliert – gefundene Schlüsselwörter übersetzt der Editor in Tokens von nur einem Byte Länge – und dann anhand der Zeilennummer an der richtigen Position in die Verkettete Liste der Zeilen im Arbeitsspeicher abgelegt. Bei der Ausgabe des Programms mittels LIST werden diese Tokens wieder expandiert.

In den ersten Versionen war das System stark kassettenorientiert. Der Interpreter enthielt Funktionen zur Ansteuerung der "Commodore Datasette".

Commodore BASIC arbeitet mit Zeilennummern im Bereich 0 bis 63999. Befehle für strukturierte Programmierung waren in den ersten Versionen so gut wie nicht vorhanden. Die Steuerung des Programmflusses erfolgt durch die Befehle GOTO, GOSUB/RETURN, IF...THEN (ohne ELSE) und ON...GOTO/ON...GOSUB, die jeweils Zeilennummern als Sprungziel erwarten. Nur der Schleifenbefehl FOR/NEXT war eine halbwegs strukturierte Anweisung.

Bekannte Datentypen sind 40-Bit-Gleitkommazahl, 16-Bit-Integer und Zeichenketten mit variabler Länge bis zu 255 Zeichen. Einfache Variablen müssen nicht deklariert werden; sie beginnen zu existieren, wenn sie benutzt werden. Sie sind mit einem Buchstaben oder einem Buchstaben gefolgt von einem weiteren Buchstaben oder einer Zahl benannt; weitere alphanumerische Zeichen können folgen, werden aber ignoriert, sodass zum Beispiel LACH und LABER die gleiche Variable LA bezeichnen. Die meisten Programme verwenden daher grundsätzlich keine Variablennamen von mehr als zwei Zeichen Länge. Die Suffixe $ (Dollarzeichen) und % (Prozentzeichen) machen aus der Variablen, die ansonsten eine Gleitkommazahl aufnehmen würde, eine Zeichenkette beziehungsweise einen Integer; da alle Berechnungen jedoch im Gleitkommaformat durchgeführt werden und alle einfachen Variablen gleich viel Speicher brauchen, wurde durch Integervariablen die Ausführung nicht beschleunigt, sondern sogar verlangsamt, weshalb sie nur selten benutzt wurden. Arrays können durch die DIM-Anweisung deklariert werden; als Arrays sind Integervariablen auch sinnvoll, da sie in diesem Fall nur 40 % des Speichers belegen, der für ein gleich großes Gleitkomma-Array gebraucht wird. Zeichenketten legt der Interpreter hintereinander im Arbeitsspeicher ab. Gelöschte Zeichenketten werden nicht sofort entfernt. Bei Speichermangel wird eine automatische Speicherbereinigung (englisch garbage collection) gestartet, die bei exzessiver Benutzung von Zeichenketten minutenlang dauern konnte und den Benutzer oft einen Systemabsturz vermuten ließ. Spätere Versionen (ab 4.0) speichern Rückzeiger mit den Zeichenketten, welche unnötige Zeichenketten unmittelbar erkenntlich machen und die automatische Speicherbereinigung in Sekundenbruchteilen ablaufen lassen.

Die Funktion PEEK und der Befehl POKE ermöglichen ein direktes Lesen beziehungsweise eine direkte Manipulation des Arbeitsspeichers; aufgrund des unterschiedlichen Speicheraufbaus ist diese Verwendung jedoch nicht kompatibel zwischen den verschiedenen Modellen. Besonders bei den frühen BASIC-Versionen 1.0 und 2.0 sind diverse systemnahe Funktionen, für die es noch keine eigenen Befehle gab, sogar nur über diese Befehle nutzbar. Für die Arbeit mit Programmen in Maschinensprache stehen der Befehl SYS und die Funktion USR zu Verfügung.

Versionen (chronologisch, mit den jeweils neuen Eigenschaften)

  • V1.0: PET 2001 mit "Mickey-Mouse"-Tastatur
    • Bug: Arrays waren auf 256 Elemente limitiert
    • Bug: Die PEEK-Funktion funktioniert nicht bei Adressen oberhalb von $C000 (sollte das Auslesen der ROMs verhindern)
    • Merkwürdigkeit: Im Textmodus des Bildschirms arbeitet die Shift-Taste umgekehrt, ungedrückt ergeben sich Großbuchstaben, gedrückt Kleinbuchstaben.
  • V2.0: PET 2001 mit Schreibmaschinentastatur und ROM-Upgrade, CBM 3000 Serie, VC 20, C64
    • die meisten Bugs aus V1.0 beseitigt
    • Nur PET/CBM: Integrierter RAM-Monitor namens TIM für Anzeige und Manipulation des RAM
    • Nur PET/CBM: Easteregg/Osterei: Gibt man WAIT 6502,x ein (für x beliebige Zahl einsetzen), so erscheint x-Mal das Wort "MICROSOFT!" auf dem Bildschirm.
    • Tastaturfunktion bezüglich Shift-Taste gegenüber V1.0 normalisiert
  • V4.0: CBM 4000, 8000 Serie, CBM-II (CBM 500, 6x0, 7x0)
    • Disketten-Befehle: DLOAD, DSAVE, COPY, SCRATCH, etc (15 im ganzen)
    • Systemvariablen für Disketten-Fehlerkanal: DS, DS$ (DS enthält die Fehlernummer, DS$ die Fehlermeldung im Klartext)
    • Da hierfür mehr ROM-Platz benötigt wurde, wurde gegenüber dem PET 2001 ein weiterer ROM-Sockel ($Bxxx) fest belegt, so dass nur noch zwei freie Sockel für Erweiterungen bereitstanden und die ROM-Kapazität auf 18 KB wuchs.
  • V3.5: Commodore-264-Serie (C16, C116, Plus/4)
    • Sound- und Grafikbefehle
    • Joystick-Abfrage: JOY
    • Hexadezimal-Umwandlung: DEC(),HEX$()
    • Flexibleres Daten-Einlesen: RESTORE [linenumber]
    • Zeichenketten-Suchfunktion: INSTR
    • formatiertes Ausdrucken: PRINT USING,PUDEF
    • Alternative Befehlsausführung: ELSE
    • Zusätzliche Schleifenbefehle: DO,LOOP,WHILE,UNTIL,EXIT
    • Funktionstastenzuweisung: KEY
    • Zusätzliche Editor-Befehle: AUTO,DELETE,RENUMBER
    • Dynamische Fehlerbehandlung: TRAP,RESUME,ERR$()
    • Debugging: TRON,TROFF
  • V7.0: C128
    • Umfasste die Erweiterungen sowohl der Version 4.0 als auch der 3.5.
    • Mehrzeiliges IF: BEGIN, BEND
    • mehr Sound- und Grafikbefehle, sowie zur Sprite-Steuerung
    • Paddle- und Lichtgriffel-Abfrage: POT, PEN
    • Funktion für Exclusives Oder: XOR
    • Ermittlung einer Variablenadresse: POINTER
    • Textfenster: WINDOW
    • Pausenbefehl: SLEEP
    • Verwendung der beiden Systemgeschwindigkeiten: SLOW, FAST
    • Umschaltung auf C64-Modus: GO64
    • Verwendung des erweiterten Adressraumes mittels Bank Switching: BANK
    • Verwendung einer Speichererweiterung (REU): STASH, FETCH, SWAP
    • Zusätzliche Disketten-Befehle: BOOT, BLOAD, BSAVE, DVERIFY, DCLEAR
    • Systembefehle: RREG (ermittelt den Inhalt der CPU-Register nach einem SYS)
    • definierte, aber nicht implementierte Befehle: OFF, QUIT
  • V10: C65
    • nicht fertiggestellt, viele Bugs
    • ähnlich der Version 7.0
    • Verwendung der Genlock-Funktion: GENLOCK
    • Maus-Befehle: MOUSE, RMOUSE
    • Anzeige einer SEQ-Datei auf dem Bildschirm: TYPE
    • Suchen/Ersetzen im Quelltext: FIND/CHANGE
    • Speicherverwaltung: erweiterte FRE-Funktion zur Bestimmung des freien Speichers
    • Farbdefinition: PALETTE
    • Befehl für DMA-Operationen: DMA
    • definierte, aber nicht implementierte Befehle: PAINT, PASTE, CUT, LOCATE, SCALE, WIDTH, QUIT, OFF, SET, VIEWPORT

Quellen

  1. http://www.commodore.ca/manuals/pdfs/Commodore_Basic_4_Users_Reference%20Manual.pdf, Benutzerhandbuch Commodore Basic 4.0
  2. Zeitleiste Microsoft-Basic (pdf-Datei, 36 KB)

Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Commodore BASIC — Commodore BASIC, also known as PET BASIC, is the dialect of the BASIC programming language used in Commodore International s 8 bit home computer line, stretching from the PET of 1977 to the C128 of 1985. The core was based on 6502 Microsoft BASIC …   Wikipedia

  • Commodore Basic V2 — ist der auf dem C64 sowie dem 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… …   Deutsch Wikipedia

  • Commodore-BASIC — Typische Büroanwendung in Commodore Basic auf dem cbm 3032 Screenshot vom Commodore Basic auf dem C64 Commodore BASIC ist ein Dialekt der Programmiersprache …   Deutsch Wikipedia

  • Commodore Basic — Typische Büroanwendung in Commodore Basic auf dem cbm 3032 Screenshot vom Commodore Basic auf dem C64 Commodore BASIC ist ein Dialekt der Programmiersprache …   Deutsch Wikipedia

  • Commodore 64 — Hersteller Commodore …   Deutsch Wikipedia

  • Commodore 64 — Type Home computer Release date August 1982[1] Discontinued …   Wikipedia

  • Commodore 128 — Release date 1985 Discontinued 1989 Operating system Commodore BASIC 7.0 Digital Research CP/M 3.0 …   Wikipedia

  • Commodore PET — 2001 Commodore PET 2001 mit offener Haube Der PET 2001 war der erste PC bzw. Heimcomputer der Firma Commodo …   Deutsch Wikipedia

  • Commodore PET 2001 — mit offener Haube Der PET 2001 war der erste PC bzw. Heimcomputer der Firma Commodo …   Deutsch Wikipedia

  • Commodore DOS — Commodore DOS, aka CBM DOS, was the disk operating system used with Commodore s 8 bit computers. Unlike most other DOS systems before or since which are booted from disk into the main computer s own RAM at startup, and executed there CBM DOS was… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”