Wir schreiben das Jahr 2001. Das CPX-Basic kehrt nach mehrjähriger Abwesenheit zum Planeten Atari zurück um fremde Variablen auszugeben, unbekannte IF-ENDIF-Bedingungen und neue WHILE-WEND-Schleifen.
Atari führte mit dem TT auch ein neues Kontrollfeld ein: XControl. Dieses sollte die vielen kleinen ernsthaften Accessories ersetzen, die sich auf den Bootlaufwerken tummelten. Da die Anzahl von Accessories auf sechs begrenzt war, waren die Anwender sehr wählerisch. Keine leichte Zeit also für "etwas andere" Accessories. Das neue Kontrollfeld war von Atari auch nur dazu gedacht, um Einstellungen vorzunehmen, doch diverse Programmierer verfrachteten den Biorhythmus, Spiele und sogar einen Basic-Interpreter in das kleine CPX-Fenster. Dieses CPX-Basic [1] ist eines der wenigen CPX-Module, das auch im Quelltext verfügbar ist. Auf diversen CDs (u.a. auch der SDK-CD) ist eine Datei des Quelltextes jedoch beschädigt, wodurch eine Compilation fehlschlug. Nach einem öffentlichen Aufrufe im Usenet konnte eine intakte Kopie aufgetrieben werden. Das Resultat ist eine neue Version des auf Chipmunk Basic-basierenden Basic-Interpreters.
Chipmunk Basic ist ein bekannter Basic-Dialekt auf diversen Systemen. Obwohl es aktiv weiterentwickelt wird, orientiert sich das Basic stark an den Basic-Versionen der 80er Jahre. Aufwendige Befehle um Dialogboxen oder Menüleisten zu gestalten, fehlen. Aus den ersten Versionen des Chipmunk Basic entwickelten sich diverse Dialekte - u.a. das CPX-Basic. Unter dem ursprünglichen Namen existiert das Basic auf Mac-Computern, präsentiert sich aber auch dort relativ altmodisch, unterstützt dafür aber AppleScript und Sprachausgabe.
CPX-Basic läuft vollständig im CPX-Fenster ab und arbeitet mit einem eigenen Zeichensatz. Das Basic ist Grafikfähig und arbeitet mit Zeilennummern. Der relativ kleine Bereich des CPX-Fensters schränkt das Basic etwas ein. So sind nur 256x176 Bildpunkte verfügbar und ein 32x22 Zeichen Textdisplay. Das Basic implementiert alle wichtigen Befehle der klassischen Basic-Versionen, so das alte Basic-Programme gut übertragbar sind. Voraussetzung ist natürlich, das keine spezielle Hardware angesprochen wird (zu erkennen z.B. an POKE-Befehlen).
Die Standard-Basic-Befehle sollen hier nicht noch einmal erklärt werden, dazu gibt es genug Fachliteratur und eine ausführliche Dokumentation, die dem Programmarchiv beiliegt. Diese Dokumentation umfaßt allerdings nicht die neuen Befehle der Version 1.10.
Das Modul kommt gleich in vier Ausführungen:
Basic000.cpx: Standardausführung für alle Rechner
BasicA00.cpx: Diese Version benutzt den Systemzeichensatz, was aber nicht ganz sauber ist (LINE-A). Probleme mit Grafikkarten sind daher nicht auszuschließen.
Basic030.cpx: entspricht dem Basic000, benötigt aber mindestens einen 68020-Prozessor und 68881 FPU.
BasicA30.cpx: wie Basic030, jedoch mit Systemzeichensatz.
Getestet wurde Basic000.cpx unter dem Kontrollfeldersatz COPS.
Seit der letzten Version 1.07 sind zwei Updates erschienen, beide vom Autor dieses Artikels. Die Erweiterungen der Version 1.10 bestehen aus neuen Befehlen und alternativen Befehlen für bereits bestehende Kommandos. Der komplette Quelltext des CPX-Basic liegt bei und eignet sich auch dazu, andere Programme in ein CPX-Fenster zu befördern.
Der Autor hat eine persönliche Vorliebe für die Umrechnung von Celsius in Fahrenheit, ohne jemals in den USA gewesen zu sein. Der Befehl celsius(x) rechnet Fahrenheit in Celsius um:
print celsius(80)
ergibt angenehme 26.66666 Grad Celsius. Natürlich gibt es auch Befehle, um die Nachkommastellen abzuschneiden. Die Umkehrfunktion lautet fahrenheit(x):
print fahrenheit(40)
40 Grad Celsius klingen in der Einheit Fahrenheit noch heißer: 104 Grad Fahrenheit.
Die nächsten zwei Befehle sind identisch mit den entsprechenden C-Befehlen und kommen auch im erweiterten Chipmunk Basic für den Mac vor. ceil(x) würde wohl jeder gerne auf seinen Gehaltsscheck anwenden, denn er rundet immer auf:
ceil(4.4)
ceil(4.6)
ceil(4.1)
ergeben alle 5.
Das Gegenstück zu ceil heißt floor und rundet ab - ideal für Rechnungen:
floor(4.4)
floor(4.6)
floor(4.1)
ergeben alle 4.
Ebenfalls dem Mac-Chipmunk und C entlehnt sind moveto und lineto. Mit ihnen können einfache Turtle-Grafiken (bekannt aus Logo) erstellt werden. moveto x,y schiebt den Grafikcursor auf die Position x,y. Es wird dabei noch nichts gezeichnet. lineto x,y zeichnet von der Position des Grafikcursors aus eine Linie auf die neuen Koordinaten x,y.
Damit sich das Umschreiben von Basic-Programmen anderer Dialekte in Grenzen hält, gibt es in CPX-Basic 1.10 alternative Befehle. Aus dem AppleSoft Basic stammt der Befehl "Home". Er setzt den Cursor auf die linke, obere Ecke und löscht den Bildschirm. Um den Cursor zu positionieren gibt es gleich zwei neue Alternativen. Der Original-Befehl ist gotoxy, neu sind Locate (div. Basic-Varianten) und Position (XL-Basic). Nicht aus Basic, sondern aus Fortran kommt Dimension, ein Synonym für Dim. Kommentare sind auch in Kurzform möglich, d.h. "'" statt "REM".
CPX-Basic wird wieder weiterentwickelt, der Quelltext ist so aufgebaut, das relativ einfach neue Befehle hinzugefügt werden können. Denkbar wäre auch eine weitere Anpassung an COPS, womit eine Fenstergröße von 512*384 möglich wäre.
Interessant ist auch das Konzept des CPX-Basic, denn der CPX-Teil und das Basic sind relativ gut voneinander getrennt. Es ist möglich, den Basic-Teil durch eine andere Programmiersprache zu ersetzen oder ein eigenes Programm einzusetzen. CPX-Basic simuliert intern ein VT52-Display, daher könnten viele TOS-Programme in das CPX-Fenster verfrachtet werden.
Im Archiv des CPX-Basic 1.10 befindet sich der komplette Quelltext von CPX-Basic, das unter der GPL (Gnu Public License) vertrieben wird.
CPX-Basic ist kein Konkurrent zu Omikron oder GFA-Basic. Es ist vielmehr ein sauberer, etwas altmodischer Basic-Dialekt, der mit Tausenden alter Basic-Programme kompatibel ist. Diese können dann zur Entspannung neben der Arbeit benutzt werden.
Quellen: [1] http://www.jaapan.de/software/programmiersprachen/ [2] http://www.nicholson.com/rhn/basic/