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 " (Programm laden) 4. Eingabe: "G " (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).