Commodore BASIC
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 ist der integrierte Fullscreen-Editor, der ein komfortables Bearbeiten von Programmen oder sofortiges Ausführen von Befehlen ohne umständliche Edit-Kommandos ermöglicht. Programmzeilen werden durch Betätigen der RETURN Taste teilweise compiliert - gefundene Schlüsselwörter übersetzt der Editor in Token von einem Byte Länge - und dann im Arbeitsspeicher abgelegt.
In den ersten Versionen ist das System stark kassettenorientiert. Der Interpreter enthält Funktionen zur Ansteuerung der Commodore Datasette.
Commodore BASIC arbeitet mit Zeilennummern im Bereich 1 bis 65535. Befehle für strukturierte Programmierung sind in den ersten Versionen nicht vorhanden. Die Steuerung des Programmfluss 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 Varialbe, 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 Features)
- 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)
- Disketten-Befehle:
- 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 einemSYS
) - 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