Commodore BASIC

Programmiersprache
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. Januar 2005 um 01:28 Uhr durch 217.95.164.205 (Diskussion) (Besondere Eigenschaften). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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. 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.

Besondere Eigenschaften

Ein aus Sicht der damaligen Zeit besonderer Vorteil des im ROM eingebauten Basic-Interpreters 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 ermöglichte. Programmzeilen wurden durch Betätigen der Eingabe-Taste ("Return") teilweise kompiliert - gefundene Schlüsselwörter übersetzte der Editor in Token von einem Byte Länge - und dann im Arbeitsspeicher abgelegt.

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 1 bis 65535. Befehle für strukturierte Programmierung waren in den ersten Versionen nicht vorhanden. Die Steuerung des Programmflusses erfolgt durch die Befehle GOTO, GOSUB / RETURN, IF...THEN...ELSE und ON, die jeweils Zeilennummern als Sprungziel erwarten.

Bekannte Datentypen sind Fließkommazahl, 16-Bit-Integer und String. Einfache Variablen können nicht deklariert werden, sie beginnen zu existieren, wenn sie benutzt werden. Sie sind benannt mit einem Buchstaben oder einem Buchstaben gefolgt von einem weiteren Buchstaben oder einer Zahl; weitere alphanumerische Zeichen werden ignoriert. Die Zusätze $ und % machen aus der Variablen, die ansonsten eine Fließkommazahl aufnehmen würde, einen String bzw. einen Integer. Arrays können durch die DIM-Anweisung deklariert werden. Strings legt der Interpreter hintereinander im Arbeitsspeicher ab. Gelöschte Strings werden nicht sofort entfernt. Bei Speichermangel wird eine Garbage-Collection gestartet.

Die Funktion PEEK und der Befehl POKE ermöglichen ein direktes Lesen bzw. eine direkte Manipulation des Arbeitsspeichers. Einige systemnahe Funktionen, für die es keine eigenen Befehle gibt, sind 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
  • V2.0: PET 2001 mit Schreibmaschinentastatur und ROM-Upgrade, CBM 3000 Serie, VC 20, C64
    • die meisten Bugs aus V1.0 beseitigt
    • Integrierter RAM-Monitor für Anzeige und Manipulation des RAM
    • Osterei: Gibt man WAIT 6502,x ein (für x beliebige Zahl einsetzen), so erscheint x-Mal das Wort "MICROSOFT!" auf dem Bildschirm
  • 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)
  • V3.5: Commodore 264-Serie (C16, C116, Plus/4)
    • Sound- und Grafikbefehle
    • Joystick-Abfrage: JOY
    • Hexadezimal-Umwandlung: DEC(),HEX$()
    • Flexibleres Daten-Einlesen: RESTORE [linenumber]
    • String-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.
    • mehr Sound- und Grafikbefehle, sowie zur Sprite-Steuerung
    • Paddle- und Lightpen-Abfrage: POT,PEN
    • Funktion für Exclusives Oder: XOR
    • Ermittlung einer Variablenadresse: POINTER
    • Textfenster: WINDOW
    • Pausenbefehl: SLEEP
    • Verwendung einer Speichererweiterung (REU): BANK,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
    • Mausbefehle: 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