Bugfixes
Mit dem MPF-1B wurde ein sehr rudimentäres Basic (TinyBasic) mitgeliefert. Es war mit dem Monitor im 2532 EPROM in U6 (oder als 2716 EPROM in U7) untergebracht. Leider sind darin einige Fehler vorhanden.
LET <var> = P <port>
Dieser Befehl liest den Inhalt eines Z80 Ports in Variable <var>, sofern nicht vorher ein LET P <port> = <Wert>, also eine Port-Schreiboperation, augeführt wurde. In diesem Fall erfolgt anstelle einer Lese- eine weitere Schreiboperation auf den Port, welcher der Adresse von <var> entspricht. Der Grund dafür ist, dass ein Schreib-Flag im Basic nicht rückgesetzt wird, dies erfolgt erst nach der ersten Leseoperation. Dieses Verhalten führt zu SYS-SP oder einem Systemabsturz...
Work-Around
Unmittelbar nach der letzten Schreiboperation ein LET A0 = P0 einfügen. Dies schreibt einen Wert in Port 0 (Low-Byte der Adresse von A0). Dieser Port ist Port A des 8255, der als Eingang funktioniert. Ein Schreibzugriff ist wirkungslos, ausser dass das Schreib-Flag rückgesetzt wird. Alternativ kann die Basic-Erweiterung verwendet werden.
Zusätzliche Auswirkungen
Der Port-Schreibbefehl verhindert auch die korrekte Funktion von
LET M <adresse> = <Wert> (keine Aktion)
CALL <var> (Absturz)
Nach obenanntem Work-Around funktionieren diese Befehle wieder.
LET P <port> = <var>
Dieser Befehl funktioniert nur einmal, die folgenden schreiben immer den gleichen Wert, auch wenn sich <var> verändert hat. Bei Verwendung von <Wert> anstelle <var> tritt das Problem nicht auf.
Work-Around
Entweder über ein Maschinenprogramm, welches den Befehl nachbildet (mit LET M = Befehlen einzgeben) oder Verwenden der unten beschriebenen Basic-Erweiterung.
RUN M <adresse>
Erlaubt das Ausführen eines Basicprogramms von beliebiger Adresse. Dies funktioniert aber nicht, wie auch im Basic Operation Manual auf Seite 39 dokumentiert.
Work-Around
Umprogrammieren des Basic (EP)ROMs (ein einziges Bit), sofern ein 2532 EPROM vorhanden ist (sind inzwischen schwer aufzutreiben)
Korrigiertes Basic
Der nachfolgende Link enthält den Sourcecode des TinyBasic, in dem die Fehler behoben sind. Er lässt sich an beliebige Adresse assemblieren. Falls diese nicht im ROM (0800 oder 2000) ist, wird der User-Stack verwendet, damit debuggen möglich wird (kein SYS-SP bei Breakpoints oder Singe-Step). Fertige EPROM Images weiter unten.