README - 1 - EIGENTEST
P 8 0 0 0 8-Bit
H a r d w a r e - E I G E N T E S T
Beschreibung der Testschritte
Mit dem Stand-alone-Programm EIGENTEST wird dem Anwender die
Moeglichkeit gegeben, individuelle Hardware-Tests fuer den
8-Bit-Mikrorechnerteil beliebig oft abzuarbeiten. Empfohlen
wird die Verwendung dieses Programms besonders fuer das
Auffinden von Fehlern, die nur zeitweilig auftreten. In
solch einem Fall sollte man das Eigentestprogramm, bzw. den
entsprechenden Einzeltest, laengere Zeit laufen lassen. Das
Programm wird als Dienstprogramm auf der UDOS-Systemdiskette
bereitgestellt.
Das Programm laeuft ohne das OS zu booten im sogenannten
stand-alone-Betrieb und wird mit Hilfe des PROM-MONITOR von
der Systemdiskette geladen und gestartet.
Start des Programms 'EIGENTEST':
1. P8000 einschalten, oder 'RESET'-Taste betaetigen
2. Systemdiskette UDOS 3.1 in Laufwerk 0 einlegen
3. Eingabe: "GE EIGENTEST <cr>" (Programm laden)
4. Eingabe: "G <cr>" (Programm starten)
Das Programm meldet sich mit der Ausschrift:
UDOS 3.1
H a r d w a r e - E i g e n t e s t Vx.x
Die Programmsteuerung erfolgt ueber einen Menuebaum.
Menuebestandteile sind entweder Untermenuenamen oder
Funktionen, die ausgefuehrt werden. Das Programm kommentiert
sich selbst. Dem Anwender werden jeweils alle
Eingabemoeglichkeiten angezeigt. Durch Eingabe eines
Kommandos wird eine Auswahl getroffen und man gelangt in das
naechste Menue. Es besteht die Moeglichkeit Einzeltests
aufzurufen, fuer diese einen Wiederholungszaehler
einzustellen (1...9999 mal) und sie dann abzuarbeiten.
Weiterhin ist es moeglich, die interne Testliste anzuzeigen,
in der alle Einzeltests enthalten sind. Diese Liste kann
vollstaendig, oder beginnend bei einer als "aktuell"
gekennzeichneten Zeile, abgearbeitet werden. Dabei kann fuer
jeden der Tests die Anzahl der Wiederholungen individuell
(bis zu 9999 mal) festgelegt werden.
Werden bei der Abarbeitung der Tests Hardware-Fehler
festgestellt, so erfolgt die Fehlerausgabe auf die
Systemkonsole und in eine Fehlerliste. Der Eintrag in diese
Liste erfolgt unter einer laufenden Nummer die bei 1 beginnt
und bei 32767 ueberlaeuft. Die Fehlerliste kann die jeweils
letzten 200 Fehler speichern und laeuft nicht ueber. Sie ist
organisiert nach dem LIFO-Prinzip und rollendem Eintrag. Die
Fehlerliste kann vom Hauptmenue aufgerufen werden.
README - 2 - EIGENTEST
Das Diagnoseprogramm ist entsprechend den Funktionsgruppen
des 8-Bit-Teils gegliedert und enthaelt gegenwaertig
folgende Tests:
EPROM-CRC-Test
SRAM-Speichertest
UA855-PIO-Test
UA857-CTC-Test
UA856-SIO-Test
U8272-FDC-Test
UA858-DMA-Test
DRAM-Speichertest
Beschreibung der Tests
----------------------
1. EPROM-CRC-Test
~~~~~~~~~~~~~~~~~
Es wird die CRC-Summe des EPROM-Satzes ermittelt und mit den
Sollwerten (EPROM-Adr.: 1FF8...1FFF) verglichen. Treten
Differenzen auf, wird die Nummer des EPROM's (0 oder 1)
sowie Soll-CRC und Ist-CRC angezeigt.
Test-Nr.0 1.EPROM
Test-Nr.1 2.EPROM
2. SRAM-Speichertest
~~~~~~~~~~~~~~~~~~~~
Es wird ein Test der Datenleitungen, der Adressleitungen,
der Datenhaltigkeit durch das Durchschieben von 0 oder 1
durchgefuehrt.
Test-Nr.5 Test der Adressleitungen
Es wird ein besonderes Bitmuster in den SRAM geschrieben und
danach kontrolliert. Der Speicher wird dazu in 8 Seiten
(Seiten-Nr.:20...27) zu je 256 Byte aufgeteilt. Die Bytes
einer Seite werden fortlaufend nummeriert. Das erste Byte
einer Seite ist gleich der Seiten-Nr. d.h. gleich dem High-
Teil der Speicheradresse dieses Bytes. Anschliessend werden
die Seiten nacheinander auf richtigen Dateninhalt getestet.
Test-Nr.6 Test der Datenleitungen
Beschreiben des SRAM (Adr.:2000...27FF) mit 00 bzw. FF und
anschliessendem Test.
Test-Nr.7 Test des Datenbusses
Durchschieben eines 0-Bit bzw. 1-Bit auf dem DBUS und im
Speicher.
3. PIO-TEST
~~~~~~~~~~~
Test-Nr.10
Es werden die PIO0, PIO1 und PIO2 in MODE0 (Ausgabe) ohne
INT programmiert und danach ein Test-Byte ausgegeben und
zurueckgelesen.
README - 3 - EIGENTEST
Testbytes:
55h an PIO0A
D5h an PIO0B
55h an PIO1A
F3h an PIO1B
9Fh an PIO2A
6Fh an PIO2B
Nach Testende liegen die Testbytes an den Portausgaengen an.
4. CTC-Test
~~~~~~~~~~~
Test-Nr.15 Zaehltest ohne INT
Die CTC-Kanaele werden als Zeitgeber ohne INT programmiert
(SW=07h), eine Zeitkonstante geladen, 0.025 ms gewartet, das
Zaehlregister gelesen und der Kanal gestopt.
Test-Nr.16 Zeitkonstanten Ueberpruefung
CTC Kanal TC
---------------------
0 0 40h
0 1 50h
0 2 60h
0 3 70h
1 0 80h
1 1 02h
1 2 90h
1 3 A0h
Test-Nr.17 Test mit INT
Die CTC-Kanaele (nicht CTC1-Kanal1) werden als Zeitgeber mit
INT programmiert (SW=87h), eine Zeitkonstante geladen
(TC=10h), und max. 1ms gewartet in dieser der Kanal einen
INT nach ca. 0.04ms generieren muss. Danach wird
kontrolliert ob in dieser Zeit eine INT-Service-Routine
angesprungen wurde.
5. SIO-Test
~~~~~~~~~~~
Test-Nr.20
Ueberpruefung der Adressierbarkeit und des Datenaustauschs
zwischen der CPU und der SIO durch Ruecklesen des INT-
Vektors aus dem SIO-KanalB.
INT-Vektoren: SIO0 = 20h
SIO1 = 50h dann 30h
Test-Nr.21
Ueberpruefung der Sende- und INT-Faehigkeit der SIO0 und
SIO1. Die Kanaele senden 00h und die CPU wartet auf INT-
'SENDEPUFFER LEER'. Erfolgt die INT-Anmeldung nicht
innerhalb von 0.5s kommt es zu einer Fehlermeldung. SIO0-
KanalB (Consolenausgabe-Kanal) wird nicht auf diese Weise
getestet.
SIO-programmierung: 9600,8,N,2
INT-MODE 3
SAVECT
README - 4 - EIGENTEST
6. FDC-Test
~~~~~~~~~~~
Test-Nr.23
Der FDC-PIO (PIO2B) wird auf MODE 3 (Bitmode Bit4=E)
programmiert und danach wird ein Hardware-Reset fuer den FDC
ausgeloest (Impulsbreite ca. 0.025ms). Nach einer Pause von
weiteren 0.025ms wird der Test fortgesetzt.
Test-Nr.24
An den FDC wird das Kommando 'SPECIFY' gegeben und deren
Ausfuehrung abgewartet.
Parameter: SRT=1 HUT=0FH HLT=2AH ND=1.
Test-Nr.25
An den FDC wird jetzt das Kommando 'SENSE DRIVE STATUS'
gegeben und das Statusregister ST3 in der Ergebnisphase des
FDC gelesen und auf 05H ueberprueft.
Parameter: HDS=1 DS1=0 DS0=1.
Nach Abschluss der Tests wird ein Reset an den FDC gegeben.
7. DMA-Test
~~~~~~~~~~~
Test-Nr.26 Test ohne INT
Der DMA wird programmiert und transferiert 100 Byte von
Adresse 0000 zur Adresse 3000h. Danach wird das
Statusregister und das Zaehlerregister auf Sollwerte
getestet. Der DMA uebernimmt vollstaendig die Bussteuerung
und gibt sie nach der Speicheruebertragung wieder an die CPU
zurueck.
Test-Nr.27 Test mit INT
Der DMA wird auf INT programmiert und uebertraegt 100 Byte
von Adresse 0000 zur Adresse 3000 (wurde vorher geloescht).
Danach wird ueberprueft ob ein INT generiert und durch die
CPU bedient wurde.
Nach erfolgreicher INT-Behandlung wird das Statusbyte
kontrolliert.
Test-Nr.28 movecheck
Es wird der DMA-Transfer durch die CPU ueberprueft. Sie
testet, ob die 100 Bytes vollstaendig uebertragen wurden.
8. DRAM-Speichertest
~~~~~~~~~~~~~~~~~~~~
Es werden ein Test der Adressleitungen, der Datenleitungen,
der Datenhaltigkeit des Speichers durch das Durchschieben
von 0 und 1 durchgefuehrt. Bei auftretenden Fehlern wird der
entsprechende Fehlercode (Test-Nr.) an das Terminal
ausgegeben. Am Terminal werden ausserdem die
Speicheradresse, der geschriebene und der rueckgelesene Wert
angezeigt.
Der Test erfolgt in zwei Teilen.
Teil 1:
Einschalten des DRAM auf den Adressen 0000...FFFF und
testen des Bereiches 8000...FFFF.
README - 5 - EIGENTEST
Teil 2: (nur wenn 1.Teil fehlerfrei!)
MOVE des Bereiches 0000...7FFF nach 8000...FFFF und
testen des Bereiches 0000...7FFF.
Danach remove der Programme SMON und EIGENTEST und verlassen
des DRAM-Tests.
Test-Nr.30 (35)
Test der Adressleitungen im Bereich 8000...FFFF
(0000...7FFF).
Der Speicher wird in Seiten zu je 256 Byte aufgeteilt. Die
Bytes einer Seite werden fortlaufend nummeriert. Das erste
Byte in einer Seite ist gleich dem High-Teil der
Speicheradresse dieses Bytes. Anschliessend werden die
Seiten nacheinander getestet. War der Test der
Datenleitungen fehlerfrei und stimmen die Werte einer Seite
nicht mit den eingegebenen Werten ueberein, dann ist die
Ansteuerung fuer ein oder mehrere Adressbits dieser Seite
fehlerhaft.
Test-Nr.31 (36)
Test der Datenleitungen im Bereich 8000...FFFF
(0000...7FFF). Der Speicherbereich wird zuerst mit 00 und
danach mit FF gefuellt und ueberprueft.
Test-Nr.32 (37)
Durchschieben von 0-Bits in einer Umgebung von 1-Bits im
Bereich von 8000...FFFF (0000...7FFF).