Magic Disk 64

home to index to text: MD8909-KURSE-DFUE_TEIL_2-1_-_DIE_SACHE_MIT_DEN_1200_BAUD....txt

Kommen wir nun zur zweiten Möglichkeit, den 1200- Baud-Fehler zu beheben. Diese Lösung ist ebenfalls softwaremäßig, dennoch hat sie einige Vorteile im Gegensatz zu der vorherigen. Angenommen, nämlich, Sie wollten gar nicht ein eigenes Terminalprogramm schreiben, sondern wollten Ihr bisher Gewohntes weiter benutzen, zumal dieses wahrscheinlich auch viel komfortabler ist, als es ein Selbstgeschriebenes wäre. In diesem Fall wäre dieser Lösungsweg der einfachste, wobei es allerdings auch zu Komplikationen kommen kann, doch will ich Ihnen den Lösungsweg erläutern.
Ich hatte ja Anfangs groß und breit dargelegt, daß die Timertabelle im Betriebssystem einen falschen Wert für die Übertragungsgeschwindigkeit 1200 Baud hat. Warum also nicht diese Tabelle ändern, und zwar so, daß sie den richtigen Wert enthält. Nun, da stellt sich uns zunächst noch ein kleines Problem.
Da sich diese Tabelle ja im ROM befindet, können wir hier nicht so einfach einen anderen Wert hineinPOKEn, da der ja vom ROM garnicht angenommen würde.
Also bleibt uns nichts anderes übrig, als das Betriebssystem-ROM in das unter ihm liegende RAM zu kopieren, und dort dann die gefragte Speicherzelle zu verändern. Wir müssen jetzt nur noch das Betriebssystem-ROM abschalten, damit das darunterliegende RAM für den Prozessor sichtbar wird, und er praktisch im " neuen" Betriebssystem arbeiten kann.
Das geschieht ganz einfach durch folgenden POKE-Befehl:
POKE 1,53 Sollten Sie dies jedoch gleich so versuchen, werden Sie ganz schön auf die Nase fallen, da der 64 er jetzt höchstwahrscheinlich mit einem letzten Lächeln auf den Lippen sich in die Abgründe eines Systemabsturzes begeben wird.
Mit dem obigen POKE-Befehl haben wir nämlich nicht nur das Betriebssystem-ROM weggeblendet, sondern auch das BASIC-ROM. Da der C64 sich allerdings immer dort befindet, wenn er auf eine Eingabe Ihrerseits wartet, haben wir ihm also praktisch den Boden unter den Füßen weggezogen, weshalb er ganz einfach abgestürzt ist. Also müssen wir besagtes BASIC-ROM ebenfalls in das darunterliegende RAM umkopieren, wenn wir diesen Absturz vermeiden wollen.
Jetzt dürfen wir POKEn ohne auf irgendwelche Schwierigkeiten zu stoßen.
Wie wir die genannten Speicherbereiche umkopieren, wollen wir vorläufig einmal noch dahingestellt lassen, ich komme hierauf später noch einmal zurück.
Vorläufig genügt es, zu wissen, daß wir nun das Betriebssystem im RAM stehen haben, von wo aus wir es nach Herzenslust verändern können. Somit können wir auch den falschen Tabellenwert ganz einfach verändern.
Schauen wir uns besagte Tabelle doch einfach einmal an:
Speicherauszug des Betriebssystems ab dem Byte $ E4 EC ( dez.58604) :

Hex. Dez. Inhalt(hex.) Wert(dez.) Baud  
--------------------------------------  
$E4EC 58604 19 26         9753      50  
$E4EE 58606 44 19         6468      75  
$E4F0 58608 1A 11         4378     110  
$E4F2 58610 E8 0D         3560   134.5  
$E4F4 58612 70 0C         3184     150  
$E4F6 58614 06 06         1542     300  
$E4F8 58616 02 D1          736     600  
$E4FA 58618 37 01          311    1200  
$E4FC 58620 AE 00          174    1800  
$E4FE 58622 69 00          105    2400  

Hier wurden pro Zeile immer 2 Bytes gleichzeitig angegeben, da diese im LO-HI- Byteformat die Timerwerte ergeben, die für bestimmte Baudraten vonnöten sind.
Wichtig für uns ist die drittletzte Zeile. Wie Ihnen vielleicht aufgefallen ist, steht hier als Timerwert die Zahl 311 . Wir hatten allerdings berechnet, daß 309 der richtige Wert für 1200 Baud sein muß. Hier liegt also der Fehler.
Damit wir diesen " ausbügeln" können, müssen wir also nur das LOWund HIGH-Byte des Wertes 309 in die Stellen 58618 und 58619 POKEn. Die beiden Bytewerte hatten wir ja schon einmal berechnet, demnach sieht das also folgendermaßen aus:

POKE 58618,53                           

POKE 58619,1 Wobei wir uns den letzten POKE-Befehl auch sparen könnten, da in Speicherzelle 58619 ja sowieso schon der Wert 1 steht.
Nach dieser Änderung wird unser 64 er sich nun den richtigen Wert für 1200 Baud aus der Tabelle holen, sollte ein 1200- Baud-Kanal geöffnet werden. Sie können jetzt also ruhig Ihr gewohntes Terminalprogramm laden und es benutzen.
Kommen wir noch zum Umkopieren der Speicherbereiche. Benutzen Sie hierzu ein Monitorprogramm, wie beispielsweise den SMON. Bei diesem Monitor können Sie mit folgenden beiden Befehlen unsere Speicherbereiche kopieren:

w a000c000a000                          
w e000ffffe000                          

Verlassen Sie nun den SMON und kopieren Sie von BASIC aus noch die letzte Speicherzelle des Speichers, da der Monitor diese nicht kopiert hat ( das liegt an der Art, mit der die Kopierparameter angegeben werden) mit folgendem Befehl:

POKE 65535,PEEK(65535)                  

Schalten Sie nun die ROMs ab mit dem oben genannten POKE-Befehl.
Sollte Ihnen das allerdings zuviel Arbeit sein, so können Sie ebenso das auf der Rückseite abgespeicherte Programm " CHANGETAB" benutzen. Es erledigt die ganze Änderung der Tabelle schon für Sie.
Ich möchte Ihnen jetzt allerdings nicht verschweigen, daß dieser Lösungsweg auch seine Nachteile hat. Es könnte nämlich sein, daß Ihr Terminalprogramm gerade die Speicherbereiche, in die wir vorhin die ROMs kopiert haben, für sich selbst beansprucht. Etwa als Speicherplatz für das ASCII-Protokoll, weswegen es wahrscheinlich von selbst auch wieder auf das Betriebssystem-ROM umschalten wird.
Für diesen Fall bleibt uns allerdings noch die dritte und letzte Möglichkeit, die wirklich absolut zuverlässig und endgültig ist. Da hier unser Problem jedoch hardwaremäßig gelöst wird, ist sie mit nicht wenig Aufwand verbunden.
Hardwaremäßig heißt, daß wir den ROM-Chip, in dem das Betriebssystem gespeichert ist, ganz einfach gegen einen neuen auswechseln werden. Dieser neue ROM-Chip wird sich von dem alten in nur dieser einen Speicherzelle unterscheiden, in der 53 stehen sollte anstatt 55 .
Wie realisiert man das Ganze nun?
Als erstes benötigen wir einmal ein korrigiertes Betriebssystem, das wir dann auf ein EPROM brennen wollen. Um dieses Problem zu lösen, habe ich Ihnen ein kleines Programm geschrieben, daß, wenn es mit RUN gestartet wird, die Brenndaten für einen EPROM-Brenner ( oder Eprommer) auf Diskette schreibt.
Es heißt " MAKEKERNEL" und befindet sich auf der Rückseite dieser MAGIC DISK 64 .
Es speichert das geänderte Betriebssystem unter dem Namen " NEWKERNEL" auf die eingelegte Diskette.
Achten Sie bitte darauf, daß Sie noch mindestens 33 Blocks auf dieser Diskette frei haben.
Als Nächstes sollten Sie sich ein EPROM mit der Bezeichnung 2764 kaufen. Es sollte eigentlich in jedem normal bestückten Elektronikfachgeschäft erhältlich sein zu einem Preis von ca.9-15 DM.
Dann brauchen Sie noch einen Eprommer.
Mit ihm brennen Sie nun das neue Betriebssystem (" NEWKERNEL") auf das 2764- Eprom.
Nun benötigen Sie einen Adaptersockel.
Das neu gebrannte EPROM und das alte, das von Commodore ausgeliefert wird und sich schon in Ihrem 64 er befindet, haben nämlich Unterschiede, was die Belegung der Pins angeht. Außerdem hat das alte CBM-Kernel- ROM nur 24 Pins, im Gegensatz zum 2764, der 28 davon aufweist. Diesen Adaptersockel können Sie sich mit Hilfe von ein paar Zentimetern Draht, zwei Präzisionssockeln, einem bißchen Lötzinn und einem Lötkolben zusammenbasteln.
Wenn Sie hierin nicht so bewandert sind, sollten Sie sich vielleicht an jemanden Erfahrenen wenden. Sie können beim Zusammenlöten im Prinzip nicht viel kaputt machen, doch könnten die einzelnen Pins falsch verbunden worden sein, weshalb es Ihnen passieren kann, daß Ihr 64 er nachher beim Einstecken des neuen ROMs in Flammen aufgeht ( ich gebe zu - das ist etwas übertrieben mit den Flammen!) .

Valid HTML 4.0 Transitional Valid CSS!