Funkamateur 12/86 |
Wer sich eine Speichererweiterung z.B. nach [1] oder [2] aufgebaut hat, sollte
feststellen, ob sie auch einwandfrei
funktioniert, und das natürlich für jeden einzelnen
Speicherplatz. Einfache Überprüfungen lassen sich, wie in [1] schon beschrieben, mit Hilfe
des Monitorprogramms durchführen. Genauere und meist auch
schnellere Aussagen liefern
Speichertestprogramme. Wenn solche Programme dann stundenlang ihre
Tests ständig wiederholen und keinen Fehler
finden, so kann man schon mit großer Sicherheit annehmen,
daß der Speicher in Ordnung ist, natürlich in
Abhängigkeit
von der Qualität des Speichertestprogramms selbst.
In [4] wurde ein komfortables,
universelles und relativ umfangreiches Speichertestprogramm
vorgestellt, das mit
verschiedenen Methoden versucht, die Fehler, wenn vorhanden, zu
entdecken. Es ergibt sich aber noch ein weiteres
Problem. Verständlicherweise sollte ein solches Programm nicht in
dem Speicher laufen, der getestet wird. Das
funktioniert ja ausschließlich, wenn der Speicher in Ordnung ist.
Das ist zwar auch eine Aussage, aber sie hilft
einem kaum, den Fehler einzukreisen. Eine Variante in einem besonderen
EPROM ist zu unhandlich und zu teuer. Damit
bleibt im "AC1" für diese Aufgabe nur der auf der
Grundleiterplatte vorhandene RAM-Speicher mit etwa 1,75 KByte
Speicherumfang übrig.
Um das oben genannte Programm in diesen Speicher zu bekommen und noch
etwas Platz für die Prüfsummenroutine [1] zu lassen, mit der man das
Programm nach dem Ersteinschreiben und auch bei seiner Anwendung selbst
kontrollieren
kann, mußte ein Teil des Komforts weggelassen werden. Übrig
bleibt ein Programm, das fest auf dem angegebenen
Adreßbereich läuft, also nicht mehr relocatibel ist. Um noch
mehr Speicherplatz zu sparen, wurden Unterprogramme,
die auch im "AC1"-Monitor vorhanden sind, durch diese ersetzt. An den
eigentlichen Testprogrammen wurde nichts
verändert. Es sind alle Testmöglichkeiten vorhanden, die sich
mit einem Bildschirm mit 32 Zeilen á 64 Zeichen
auswerten lassen. Das Programm holt sich alle Informationen, die es zum
Arbeiten braucht, im Dialog mit dem
Benutzer und zeigt das Testergebnis in tabellarischer Form an.
Das Testprogramm bietet sechs verschiedene Tests, von denen jeder auf
seine Art Fehler finden soll. Ihre
Funktion soll nur kurz dargestellt werden.
Hier wird der Speicher nacheinander geprüft. ob er die Muster 55H und AAH annimmt. Damit lassen sich Aussagen über defekte Speicher-IS, Unterbrechungen, fehlerhafte Treiber-IS usw. treffen.
Der Speicher wird in fortlaufender Reihenfolge mit allen Bitmustem beschrieben, die sich ergeben, wenn man eine "1" durch ein Nullbyte schiebt. Ist der Schreibvorgang beendet, wird getestet, ob noch alles vorhanden ist. Damit jede Speicherzelle auch jedes Muster "abbekommt", geschieht der Vorgang neunmal, natürlich immer um Eins verschoben.
Dieser Test funktioniert analog dem vorhergenannten, nur wird hier eine "0" durch ein FFH-Byte geschoben.
Dieser Test basiert auf den höheren Anforderungen, die der zyklische Blockladebefehl des U 880 D an den Speicher stellt, und zwar meist bei dynamischen RAMs an die Qualität der Spannungsversorgung und deren Abblockung. Hier werden Datenblöcke mit Hilfe des LDDR-Befehls im Speicher kopiert.
Dieser Test soll die Funktion des Auffrischens in dynamischen Speichern überprüfen. Der Speicher wird in acht Zyklen jeweils mit einem Muster beschrieben, das sich aus dem vorherigen Inhalt des Speichers ergibt. Dann wird einige Sekunden gewartet, danach muß das Muster immer noch im Speicher vorhanden sein. Nach [4] kann man diesen Test auch zum Überprüfen des Rechnerbusses verwenden, wobei er aber auf einem Adreßbereich laufen muß, auf dem keine Speicher vorhanden sind. Ist der Bus in Ordnung, so darf keine Fehlermeldung erscheinen. Treten im "AC1" Fehler auf, so kann z.B. einer der Pull-up-Widerstände defekt oder die Bus-Belastung zu groß sein.
Da der U 880 D für Befehlslesezyklen eine kürzere Zugriffszeit des Speichers als bei normalen Lese- oder Schreibzyklen erfordert, kann es vorkommen. daß sich ein Speicher zwar beschreiben und lesen läßt, aber Maschinenprogramme Fehler machen oder ganz abstürzen. Dieser Test soll solche, zumindest grobe Fehler finden. Dazu wird bei diesem Test in dem Speicher ein kleines Maschinenprogramm geschrieben und danach angesprungen. Es soll die Eigenschaft haben, Einzelbitfehler zu erkennen und auch bei deren Auftreten zum Testprogramm zurückzukehren. Als bester M1-Test hat sich beim "AC1" bisher das 8-K-BASIC erwiesen, das bei solchen Fehlern im Zeitverhalten dann meist gleich beim Start abstürzt. Dieser Test erfordert Blöcke, die größer als 20H sind. In nicht vorhandenen Speichern führt er zur Fehlerroutine des Monitors.
Nachdem das Programm
eingetippt, die Prüfsumme kontrolliert, und mindestens eine Kopie
auf Magnetkassette
angefertigt wurde, kann es mit dem Kennbuchstaben "X" gestartet werden.
Die dem Programm folgenden RAM-Zellen
bis 1F6DH benötigt es als Merkspeicher. Das Programm erfragt dann
selbsttätig Anfangs- und Endadresse sowie
die Blocklänge, in die der Speicher unterteilt werden soll, und
außerdem die Tests, die durchgeführt werden sollen.
In der Adreßeingabe kann mit CTRL-C zum Monitor
zurückgekehrt werden.
Der Adreßbereich muß so gewählt werden, daß die
Division durch die Blocklänge ohne Rest aufgeht. Sonst werden
neue Eingabedaten verlangt. Nach dem Teststart werden die Tests so
lange zyklisch durchlaufen, bis man eine
Taste drückt. Danach kann man sich entscheiden, ob ein neuer Test
gemacht werden soll oder das Programm kehrt
zum Monitor zurück. Ein Beispiel des Eingabedialogs ist im Bild 1 gegeben. Wer nur einmal
sehen will, was das
Programm bei den einzelnen Tests macht, kann als Testbereich einen Teil
des Bildwiederholspeichers, z.B. von
1000H bis 13FFH, benutzen, wobei die Blocklänge mindestens 80H
sein sollte.
Zum Testbeginn erscheint auf dem Schirm eine Tabelle, in der die
einzelnen Datenbits spaltenweise und die
Speicherblöcke zeilenweise angeordnet sind. Pro Block und Datenbit
erscheinen sechs Punkte, für jeden Test
einer. Der gerade durchgeführte Test ist in der ersten Zeile unter
dieser Tabelle zu lesen. Findet ein
Test einen Fehler, so wird der dem Block und Bit entsprechende Punkt
durch den Anfangsbuchstaben des Tests
ersetzt. Wie das z.B. für einen Speicher aussieht, in dem der
Speicher-IS für das Bit 1 auf wenigen Zellen
defekt ist, zeigt Bild 3.
Bei manchen, meist sogar trivialen Fehlern, kann es geschehen,
daß plötzlich sehr viele solcher Fehlermeldungen
erscheinen. Man sollte dann aber nicht in Panik verfallen und alle
Speicher austauschen, zumal das ja nicht ganz
einfach ist, sondern versuchen, durch Veränderung der
Testparameter den Fehler einzukreisen. Da die meisten Tests
mit Verschiebeoperationen arbeiten oder auf dem Vorhergehenden
basieren, kann es hier leicht zu Fehldeutungen
kommen. Treten gehäuft B-Fehler auf, so sind diese auf jeden Fall
erst einmal zu beseitigen, da die anderen Tests
sonst keinen Sinn haben. Auch können fehlerhafte
Stützkondensatoren in dynamischen Speichern Fehler in einem ganz
anderen Speicher-IS vortäuschen. Weitere Ausführungen zu
Fehlerbildern und deren Beseitigung sind in [4] gemacht.
Bisher konnten sie mit diesem Programm nicht bestätigt werden, da
glücklicherweise die meisten mit diesem Programm
getesteten Speicherplatten relativ schnell funktionierten und
fehlerhafte Bauelemente dabei eine Seltenheit waren.
Am Schluß sei auch hier angemerkt, daß auch dieses Programm
nur ein Hilfsmittel sein kann. Es erspart
niemandem das Denken, sondern erleichtert es nur, außerdem ist es
natürlich nicht unfehlbar. Ein Programm,
das alle möglichen Speicherbelegungen erzeugt und testet, wird
wohl nie mit dem Prüfen fertig werden. Anders
gesagt, die bisherigen Erfahrungen mit diesem Programm zeigten,
daß die Aussage über die Funktion eines Speichers
relativ sicher getroffen werden kann, aber es gab auch schon eine
Ausnahme.
[1] | Heyder, F.: Speichererweiterung 16 KByte für
Amateurcomputer "AC1", FUNKAMATEUR 35 (1986), H.9, S.464/465 und H.10, S.514...516 |
[2] | Barthels, E.: Ein 32-KByte-RAM für U-880-Mikrorechner, FUNKAMATEUR 34 (1985), H.6, S.306...308 |
[3] | Heyder, F.: Falsche Bytes - schnell gefunden, FUNKAMATEUR 35 (1986), H.11, S.565/566 |
[4] | Krake. H.: Ein außergewöhnliches
Speichertestprogramm, Zeitschrift "mc", Heft 12/1982, Seile 33...41 |
46 KByte | 242 KByte | 64 KByte |
Bild 1 | Listing | Bild 3 |