★ HARDWARE ★ MONTAGES ★ Speichererhaltender Reset bei den CPCs ★ |
Löschsperre (Computer Technik) | Hardware Montages |
Zwar läßt sich über einen zusätzlichen Reset-Taster ein irrlaufender CPC jederzeit zur Vernunft bringen, doch dabei geht leider jeglicher Speicherinhalt verloren, was unter Umständen den Verlust wertvoller Daten bedeuten kann. Mit einer cleveren Reset-Logik kann man den störenden Löscheffekt aber verhindern. Allerdings muß man dabei hoffen, daß der amoklaufende Computer die Daten oder Programme nicht bereits zerstört hat, denn dann ist Hopfen und Malz verloren. Falls aber die Systemvariablen des BASIC-Interpreters noch vorhanden sind, braucht man keine neue Initialisierung. Es genügt, wenn man in den Ready-Modus springt. Für die Initialisierung des BASIC-ROM nach einem Reset sorgt das Betriebssystem im Kernel. Die verantwortliche Routine liegt ab Adresse 77h im ROM (das ROM wird ja nach einem Reset grundsätzlich eingeblendet). Nun könnte man dem mit einem eigenen, veränderten ROM (256er EPROM) abhelfen. Das führt allerdings auf die bekannten rechtlichen Probleme und ist auch nicht ganz einfach (ROM meistens eingelötet, EPROM-Brennererforderlich et cetera). Sich einmischen... Statt dessen kann eine kleine Umblendschaltung einen Eingriff in den Rechner überflüssig machen. Ab Adresse 7Dh wird mit dem Befehl LD HL,C00Bh die Einsprungsadresse des BASIC-ROM geladen. Die Schaltung filtert die Adresse 7F.h heraus und blendet das Betriebssystem-ROM aus, gleichzeitig wird ein Bustreiber aktiviert. Dieser hat an seinen Dateneingängen (für den 464) den Wert 64h (binär 01100100) fest verdrahtet. Diesen Wert liest nun die CPU statt 0Bh ein, so daß das HL-Register den geänderten Wert C064h erhält. Beim anschließenden ‘FAR CALL' springt das Betriebssystem direkt zum Ready-Modus. Bei den CPCs 664 6128 liegt die Kernel-Routine auf den gleichen Adressen, nur der Ready-Modus beginnt hier bei C058h. Folglich muß man hier 58h (binär 01011000) fest verdrahten.
Die Schaltung selbst gestaltet sich einfach. IC1 und IC2 filtern die Adresse 7Eh aus. Mit IC3 wird das ROM ausgeblendet und der Bustreiber aktiviert. Wer Strom sparen möchte, sollte (neben HCT-Chips) bei der festen Verdrahtung mit einem Pull-up-Widerstand (etwa 4k7) an Plus gehen. Um das Ganze noch etwas komfortabler zu machen, wurde noch ein Schalter eingefügt. Mit diesem läßt sich der gesamte Umschaltmechanismus abschalten. ... und Erholung gewähren Der abgebildete Reset-Taster ist hier nur eine Primiliv-Lösung, da er keinerlei Rücksicht auf das CPU-Timing und den Refresh der dynamischen Speicher nimmt. Wird die CPU gerade in einem Schreibzyklus von einem Reset ‘überrascht', nimmt der aktuell adressierte Speicher eventuell Unsinn auf. Bei einer außer Kontrolle geratenen CPU muß man aber eh mit dem einen oder anderen zerstörten Byte rechnen, so daß es auf dieses eine Byte nicht unbedingt ankommt, und vielleicht hat man ja Glück ... Auf den Refresh kann der Benutzer aber selbst einwirken. Drückt er den Reset-Taster zu lange, so muß er eben mit umgekippten Speicherzellen rechnen, da in dieser Zeit keinerlei Refresh der dynamischen Speicherzellen stattfindet. Heutzutage halten diese Chips aber ganz schön lange durch (oftmals länger als eine Sekunde). Bei einem kurzen Tastendruck ist das Risiko also gering. Einen wesentlich sicheren Reset kann man durch eine Reset-Logik erreichen, wie sie ‘im Prinzip' auf dem c't-ECB-Anschluß vorhanden ist (timing-gerecht überein Monoflop). Allerdings hat man auch hier leider noch eine refresh-lose Zeit während der Druckdauer. Mit einer kleinen Änderung läßt sich das Problem aber beheben. Damit ist dann der Reset ‘nietund nagelfest'. Auf das LS09 kann mah normalerweise verzichten. Es ist nur nötig, falls von irgendwelchen Peripherie-Geräten ebenfalls ein Reset ausgelöst werden soll. Wer mit dem ECB-Adapter arbeitet. kann die Umblendschaltung bedenkenlos auf einer ECB-Bus-Platine unterbringen, da der Adapter die Signale ROMDIS und ROMEN für die Datenrichtung berücksichtigt und ROMDIS sogar über den Bus geführt werden kann. AS, c't
|