Magic Disk 64

home to index to html: MD8909-KURSE-DFUE_TEIL_2-1_-_DIE_SACHE_MIT_DEN_1200_BAUD....html
Kommen wir nun zur zweiten  Möglichkeit,
den 1200-Baud-Fehler zu  beheben.  Diese
Lösung ist ebenfalls softwaremäßig, den-
noch hat sie einige Vorteile  im  Gegen-
satz zu der vorherigen. Angenommen, näm-
lich, Sie wollten gar nicht ein  eigenes
Terminalprogramm   schreiben,    sondern
wollten Ihr bisher Gewohntes weiter  be-
nutzen, 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  Komplikati-
onen kommen kann, doch  will  ich  Ihnen
den Lösungsweg erläutern.               
Ich hatte ja Anfangs groß und breit dar-
gelegt,   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  rich-
tigen Wert enthält. Nun, da stellt  sich
uns zunächst noch ein  kleines  Problem.
Da sich diese Tabelle ja im  ROM  befin-
det, 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 folgen-
den POKE-Befehl:                        
POKE 1,53                               
Sollten Sie dies jedoch gleich so versu-
chen, werden Sie ganz schön auf die Nase
fallen, da der  64er  jetzt  höchstwahr-
scheinlich 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  darunterlie-
gende RAM umkopieren,  wenn  wir  diesen
Absturz vermeiden wollen.               
Jetzt dürfen wir POKEn ohne auf  irgend-
welche 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  Herzens-
lust 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 $E4EC (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   LOW-   und
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  fol-
gendermaß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  64er
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  Spei-
cherzelle des Speichers, da der  Monitor
diese nicht kopiert hat  (das  liegt  an
der Art, mit der die Kopierparameter an-
gegeben 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  Pro-
gramm "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  wahr-
scheinlich 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  gespei-
chert  ist,  ganz  einfach  gegen  einen
neuen auswechseln  werden.  Dieser  neue
ROM-Chip wird sich von dem alten in  nur
dieser einen  Speicherzelle  unterschei-
den, 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  Betriebssys-
tem 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  be-
stückten Elektronikfachgeschäft  erhält-
lich sein zu einem Preis  von  ca.  9-15
DM.                                     
Dann brauchen Sie noch  einen  Eprommer.
Mit ihm brennen Sie  nun  das  neue  Be-
triebssystem ("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 64er 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  Zu-
sammenlöten im Prinzip nicht viel kaputt
machen, doch könnten die einzelnen  Pins
falsch verbunden worden sein, weshalb es
Ihnen passieren kann, daß Ihr 64er nach-
her 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!