September / Dezember 1995

Meinungen, Programme und Hardware

Programmprojekte

Autor: Sven Friedrichs



"Mastertext 128 V2.1" arbeitet mit CMD-Laufwerken

Wer schon mit "Mastertext 128" und der Commodore 1581 zusammengearbeitet hatte, wird sich gewundert haben, warum seine Daten nicht mit einem CMD-Laufwerk geladen werden konnten. Ein Aufleuchten der Laufwerks-LED und dann der Absturz, der nur mit Run-Stop & Restore behoben werden konnte. Das hatte zum einen zur Folge, daß ein Textende nicht richtig gesetzt wurde und zum anderen brachte eine Druckerausgabe seltsame Zeichen aus dem Jenseits ans Tageslicht.

Das ganze war aufgrund einer nicht ganz sauberen Programmierung der Fehlerkanalleseroutine entstanden. Sie funktionierte zwar mit C 1571 und C 1581, jedoch nur im Fastmodus und war zudem sehr absturzgefährdet. Letztlich hatte der Programmierer Martin Pohl jedoch nur vergessen, den STATUS in der Zeropageadresse $90 auf null zu setzten. Wer Interesse hat, kann sich mit dem MONITOR die von Adresse $065ee angesprungene Einklinkroutine ab $09ec9 betrachten, welche den STATUS nun richtig verwaltet.

Die neue Routine wird mit "UPDATE V2.1" in den Programmteil "MASTERTEXT T1" eingewebt und auf eine neue Diskette gespeichert. Somit ist der Fehler endgültig behoben. Damit alles funktioniert, müssen die restlichen Programmteile von "MASTERTEXT V2.0" ebenfalls auf diese Diskette kopiert werden. Als besonderes Sahnebonbon wurde die Möglichkeit integriert, Mastertext von jeder beliebigen Geräteadresse aus zu laden. Nehmen Sie dafür das neue Startprogramm: "MASTERTEXT V2.1" von der Programmservicediskette der 64’er. Zudem gibt es noch das Startprogramm: "MASTERTEXT V2.11" welches die Besonderheiten von Diethelm Kretschmanns Masterdesign aus der 64'er 03/95 unterstützt.

Mastertext V2.0 wurde im 128'er Sonderheft 29 veröffentlich.

Für den Assembler-Programmierer:

Bei Abfrage des Fehlerkanals über direkten Busverkehr (Listen/Unlisten und Talk/Untalk) sollte der STATUS erst gesichert und dann unbedingt auf null gesetzt werden. Erst jetzt kann das Programm den Fehlerkanal lesen und danach den gesicherten Status wiederholen.

Quellcode von Mastertext V2.1 ab $09ec9
lda $90
pha
lda #$00
sta $90
lda $116a
jsr $ffb4
jsr $65f1
tax
pla
sta $90
txa
rts
Den alten Status holen und
auf Stack sichern.
Den Status auf null setzen.

Aktuelles Laufwerk
soll TALKen.
Alte Routine weiterführen.
Neuen Status ins X-Register.
Alten Status wiederholen
und ins Status-Register.
Neuen Status in Akku.
Programm fortsetzen...

Weiter Infos zu Mastertext V2.1:

Die Speicherung der Geräteadresse des Laufwerks erfolgt über die Adresse $1169. Bei den Adressen 8 und 9 muß noch der Wert 48 zuaddiert werden, wohingegegen ab Geräteadresse 10 der Wert 9 abgezogen wird. In Adresse $40d7 pokt das neue Startprogramm dann diesen Endwert zum Initialisieren hinein.

Durch das Patch wird in Adresse $4017 und $4087 von "MASTERTEXT T1" der Befehl LDX ~$08 durch LDX $BA ersetzt. Damit werden auch die vom Assemblercode aus geladenen Programmteile flexibel an die Geräteadressen angepaßt.

Diskette bootfähig machen:

Da die meisten Bootmaker für den C 128 ausschließlich das Laufwerk 8 unterstützen, wurde dem Update kurzerhand eine modifizierte Version des Test-Demo-Bootmakers beigelegt, der von allen Geräteadressen aus startet. Natürlich ist sein Einsatz nicht auf Mastertext V2.1 beschränkt. Wer seine Mastertext-Diskette nun bootfähig machen möchte, tippt einfach: "MASTERTEXT V2.1" oder "MASTERTEXT V2.11" ein.

Am besten sollte das mit einer leeren Disketten gemacht werden und zwar vor irgendeinem Datentransfer auf diese Diskette. Jetzt kann Mastertext problemlos durch einfache Eingabe des Befehls: "BOOT U10" von einer FD-Floppy mit der Geräteadresse 10 gestartet werden. Es findet kein ungewollter Zugriff auf Laufwerk 8 mehr statt.




Inhalt

   
Zurueck