c't-BASIC Versionen und Neuerungen
Version 2.3g
Runderneuertes PS/2-Interface, jetzt interruptgesteuert, sollte nun auch mit Kombi-USB-Tastaturen funktionieren. Für spätere Erweiterungen PS/2-Maus-kompatibel. Benötigt neues main.bit (ebenfalls in sdcard). Anfangsadresse $B000 (45056), bitte ggf. in eigenem BASIC.INI ändern. Zum bequemeren Downdload ist der sdcard-Inhalt jetzt in einem ZIP-Archiv verpackt; Inhalt einfach (ohne Unterordner) komplett auf die SD-Karte kopieren. Keine neuen Tokens, EHBC.EXE bleibt unverändert gültig.
- Unterstützung aller PS/2-Funktionstasten, siehe BASHELP.TXT
- Help-Screen (BASHELP.TXT) mit Taste "H" nach Reset
- Ctrl-Pfeiltaste bewegt Cursor bis zum nächsten/vorherigen Trennzeichen
- Direkter Wechsel zwischen BASIC-Bänken, Terminal und Monitorprogramm mit Funktionstasten
- Neues N-Key-Rollover (keine verlorenen Zeichen mehr - gar keine, versprochen!)
- CAPS-LOCK-Leuchtdiode der Tastatur wird richtig angesteuert
- Verbessertes Terminal-Programm
Version 2.3
Ist ein "major update" - deutlich beschleunigte Textausgabe durch Berechnung der Speicheradressen anhand Column/Row? per FPGA-Hardware-Multiplizierer, Speicherbereich $B000 bis $B3FF wird frei für gemeinsam genutzte Assemblerroutinen oder Daten. Einbindung der PLOTLIB ins BASIC, PLOTLIB.BIN ist damit obsolet und sollte nicht mehr verwendet werden. Neue Anfangsadresse $B000 (45056), bitte BASIC.INI entsprechend anpassen (in Verzeichnis sdcard geändert enthalten). Benötigt neues main.bit (ebenfalls in sdcard). Version für LCD in Vorbereitung. Neue Befehle:
- LABBUS gestattet nun einen optionalen zweiten Parameter für BaudSelect (früher mit POKE $031E,<bdsel>), z.B. LABBUS 2,1 setzt SerialCore (#2) auf 19200 Bd (0=38400, 1=19200, 2=9600 usw. bis 7=300 Bd), Bug in Version 2.2c behoben. Ohne zweiten Parameter wird 38400 Bd eingestellt.
- CURSOR ON|OFF zum Ein- und Ausschalten des Underline-Textcursors
- PLOT CIRCLE <radius>[,<segmbits>] Zeichnet einen Kreis/Kreissegmente? mit letzten PLOT MOVE-Koordinaten als Mittelpunkt, siehe Beispiel CIRCLE.BAS
- FRAME WAIT - Synchronisation mit Frame-Aufbau für flackerfreie Anzeige. Wartet bis VGA-Zeile nach dem Grafik-FRAME erreicht ist.
- PLOT WAVE <adr>,<wert> - Wellenform auf <adr> (Page mit 256 Bytes) anzeigen und um 1 nach links verschieben, neuen <wert> am Ende eintagen, siehe Beispiel WAVE.BAS. Als Datenspeicher empfiehlt sich der freie Bereich ab $B000 bis $B3FF, z.B. PLOT WAVE $B000,Y.
- PLOT MACRO <inst>,<wert> - Messinstrument <inst> (derzeit 0 bis 3) mit angezeigtem Wert (0 bis 100) plotten
- PLOT PRINT <ausdruck> - Zahlen plotten statt Textausgabe, funktioniert wie normales PRINT, kann aber außer "E-+." keine Buchstaben, siehe Beispiel INSTR.BAS
- PLOT SIZE <x>,<y> - Skalierung für PLOT PRINT und PLOT MACRO (0,0 bis 2,2, 0 = normale Größe)
Aufgrund der hinzugekommenen Befehls-Token sollte zur Text-BAS-Konvertierung das aktualisierte EHBC.EXE verwendet werden. Bestehende Token haben sich bis auf SADD() (jetzt LABERR) nicht geändert, ältere Programme sollten also weiterhin laufen.
Version 2.2c
In den letzten Tagen war im SVN einiges durcheinandergeraten - unter anderem war ein fehlerhaftes PLOTLIB.BIN online, das gleich nach dem Start ausstieg, weil eine Variable beim "kalten Kaltstart" noch nicht initialisiert war. Außerdem gab es einen Konflikt von PI und PIXEL im EHBC-Konverter, der PLOT PIXEL in PLOT PI XEL übersetzte. Einfachste Lösung bestand darin, PIXEL in POINT umzubenennen (beim Zurückübersetzen von BASIC-Text in .BAS beachten). Token hat sich nicht geändert, bestehende .BAS-Programme sollten also ohne Änderungen laufen.
- PLOT PIXEL in PLOT POINT umbenannt
- Kaltstart verbessert, löscht Fehlermeldungen des AVR auf Müll-Anfragen, die durch den Startup-Vorgang entstanden (kein [CMDERR] des Moduls nach erstem DIR mehr)
Version 2.2b
- LABREQ verbessert, jetzt mit Timeout und aufwendigerem Parser, so dass falsche oder ausbleibende Antworten erkannt werden, aber nicht zum Aussteigen des BASIC-Programms führen. Im Fehlerfall wird übergebene LABREQ-Variable nicht verändert.
- Fehler kann mit LABERR abgefragt werden, siehe Beispiel LABINP.BAS
- LABINP empfängt jetzt komplette Strings/Werte?, nicht erst ab dem c't-Lab-spezifischen "=". Falls man mal etwas anderes als das c't-Lab dran betreiben will (DMM u.ä.)
- Hierfür neues main.bit vom 2.11.09 verwenden, vorherige Versionen hatten einen Bug bei der Baudraten-Umschaltung. Bei der LCD-Version ist main.bit noch nicht überarbeitet, hier funktioniert die Baudratenumschaltung nicht!
- Neue Statuszeile mit LABERR-Kürzel (T=Timeout, F=False response, M=wrong MainCh, S=wrong SubCh, X=eXtra Characters ignored, oder Fehlermeldung/-nummer des Moduls, wenn auf SubCh 255 geliefert)
- RENUMBER-Routine jetzt extern, kann mit LOAD "RENUMBER.BIN",$BD00 bei Bedarf hinzugeladen werden, Anwendung wie gehabt, Routine ist in allen Bänken verfügbar. RENUMBER-Befehl führt ohne Laden der Routine zum Fehler.
- SADD()-Funktion entfallen
Version 2.1i
- Einige Routinen aufgeräumt
- WriteAcc und GetKey jetzt über Vektoren in Zeropage "verbiegbar"
- Einige zusätzliche Routinen über Jumps verfügbar, siehe defines_cm.asm
- kompatibel mit Grafik-Library PlotLib, siehe Beispiele PLOTLIB.BAS
- Version 2.ij: Erbärmlichen Bug in ClearScreen-Routine behoben, den ich mit 2.1i eingeführt hatte
Version 2.1h
- PEEKs und POKEs jetzt auch über BANKs hinweg möglich, siehe FAQ-Seite
- Jump-Vektoren bei $C000 neu zusammengestellt, VarClear-Jump
- Angepasster Text-BASIC-Konverter EHBC.EXE, nun gleiche Version wie c't-BASIC
- Schwere Bugs in EHBC.EXE beseitigt, einfaches Handling per Drag&Drop, erkennt Files anhand Endung (.BAS oder .TXT)
Version 2.1a
- Neuer Textfenster-Funktionen, IF-THEN-ELSE Konstrukte möglich
- Achtung: benötigt neue FPGA-Konfiguration aus sdcard-Ordner
- Unnötiger LABCLR-Befehl entfallen, Token wurde für ELSE verwendet.
- Version 2.1f: LOAD mit Adressangabe zum Laden von Binärdateien
Version 1.10
- SerialCore RS-232 auf CORERAM-Platine unterstützt (LABBUS 2). LABINP-Befehl zickt noch, LABREQ geht aber.
Version 1.0d
- Unterstütung für Grafik-LCD (in eigenem Ordner sdcard_LCD) QVGA 320x240 anstelle des VGA-Monitors. FPGA-Konfiguration in diesem Ordner angepasst für NAN YA LTBE9S159J1K oder NAN YA LTBE9T372G1K (beide günstig bei Pollin erhältlich) und kompatible.
Version 1.0c
- Autostart-Funktion: Wenn in der ersten Programmzeile 10 REM AUTOSTART steht, wird das Programm nach LOAD oder Bankswitch mit BANK automatisch ausgeführt, ohne das RUN eingegeben werden muss.
Version 1.0b
- "Hochauflösende" farbige Grafik (naja, 256 x 192 Pixel, 8 Farben) und zugehörige Plot-Befehle in BASIC
- Bresenham-Midpoint-Algorithmus für PLOT im FPGA, zeichnet ca. 12 Millionen Pixel pro Sekunde
- Verschiebbares Grafik-Fenster variabler Größe
- Einschaltbares variables Gitterraster mit farbigem Hintergrund
- Demo siehe "GTEST.BAS" in sdcard
Version 0.96
- N-Key-Rollover eingeführt für schnelleres Editieren, Bug in Kommunikationsroutine behoben
- Bessere Unterstützung der INSERT-Taste, Zeile wird automatisch beim Tippen eingerückt
- Übernahme ganzer (editierter) Programmzeilen wie auf dem Bildschirm mit Shift-ENTER
- BANK-Befehl für mehrere BASIC-Programme gleichzeitig im 512 KByte RAM
- RENUMBER-Befehl der eher einfachen Art
