Funkamateur 12/86

 

Ein Speichertestprogramm für den Amateurcomputer "AC1"

Dipl.-Ing. F. HEYDER - Y21SO

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.

Buffer/Chip-Test

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.

Peak-Test

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.

Valley-Test

Dieser Test funktioniert analog dem vorhergenannten, nur wird hier eine "0" durch ein FFH-Byte geschoben.

Worstcase-R/W-Test

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.

Refresh-Test

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.

M1-Test

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.

Testablauf

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.

Literatur

[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