Check It Out - Schnittstellentester für alle ATARIs

Computer von ATARI sind bekanntlich mit einer Vielzahl von Schnittstellen versehen. Was tun, wenn einmal ein angeschlossenes Gerät nicht funktioniert? Liegt es am Gerät oder am Rechner? Das Programm Testit beantwortet mit Hilfe von meist einfachen Prüfsteckern, deren Nachbau und Funktion im folgenden vorgestellt wird, diese Frage.

Zudem hat das Programm noch andere nützliche Funktionen, wie Analyse des Rechners, Anzeigen von XBRA-Verkettungen, Test von RAM und ROM. hervorgebracht. Letzterer wird nicht mal mit allen Resourcen genutzt, da die Programme dann nicht mehr abwärtskompatibel wären, außerdem liegt die Binärdatei eines Diagnosemoduls bei, mit dessen Hilfe festgestellt werden kann, ob ein Rechner, der nicht mehr bootet, überhaupt nicht mehr läuft, oder ob "lediglich" ein RAM-Baustein defekt ist. Um Testit für jeden verfügbar zu machen, ist es mit Dokumentation im 1st_Word-Plus-Format in der Mailbox der ST-Computer erhältlich.

Abb.1a: Die Verdrahtung des 9poligen RS-232-Prüfsteckers

Als erstes wird der RS232-Prüfstecker beschrieben. Die Funktionsprüfung dieser Schnittstelle beruht darauf, daß sämtliche Ausgangsleitungen mit entsprechenden Eingängen verbunden werden. Ein Test-String wird über die Leitung TXD ausgegeben und über RXD eingelesen. Wird der Test-String richtig empfangen, sollten TXD und RXD in Ordnung sein. Da die - abhängig vom Rechnertyp und der seriellen Schnittstelle - im ATARI verwendeten Bausteine MFP und SCO in der Lage sind, diese beiden Signale auch chipintern zu verbinden (man nennt diese Betriebsart "Schleife"), wird auch diese Funktion überprüft. Diese Überprüfung funktioniert als einzige ohne Prüfstecker! Ansonsten wird noch das Paar RTS/CTS überprüft sowie DTR als Ausgang mit DSR, DCD und Ring Indicator als Eingänge. Abhängig von der jeweiligen seriellen Schnittstelle können manche Leitungen nicht vorhanden sein; Testit trägt nach dem Test dort Striche ein. Je nachdem, welchen Rechner Sie haben, benötigen Sie den 9- oder 25poligen Prüfstecker. Am besten benutzen Sie zum Nachbau eine Sub-D-Buchse mit Lötanschlüssen. Die meisten Verbindungen (Abb. 1a, 1b) können direkt mit Lötzinn hergestellt werden, die anderen mit Drahtstückchen. Anschließend baut man die Buchse am besten in ein Sub-D-Steckergehäuse ein.

Abb. 1b: Die Verdrahtung des 25poligen RS-232-Prüfsteckers

MIDI-Test

Der MIDI-Test verläuft ähnlich. Auch hier wird die Sende- mit der Empfangsleitung verbunden und ein Test-String gesendet. Zum Test kann ein gewöhnliches MIDI-Kabel verwendet werden. Wer keines hat, kann sich leicht selbst eines löten. Dazu braucht man zwei 5polige DIN-Buchsen (180 Grad!) und eine Stereomikrofonleitung mit gemeinsamer Abschirmung. Die Verdrahtung ist aus Abb. 2 ersichtlich; die Abschirmung kommt an Pin 2 der DIN-Buchsen.

LAN-Test

Auch der LAN-Test beruht auf dem gleichen Prinzip wie die beiden obigen. Die LAN-Schnittstelle dient zur Vernetzung von Rechnern und ist beim Mega STE, TT und Falcon030 vorhanden. Zum Bau des LAN-Prüfsteckers benötigt man eine 8polige Mini-DIN-Buchse, die nach Abb. 3 verschaltet wird.

Joystick/Maus-Port-Test

Zum Test der Joystickports benutzt man am besten einen Joystick, aber auch die Maus kann verwendet werden. Überprüft wird einfach, ob der Joystickport alle Schalterstellungen korrekt anzeigt.

Floppy-Anschlußtest

Die Floppy-Schnittstelle kann nur bei den Rechnern 520ST, 520ST+ und 260ST getestet werden, da hier keine Treiberbausteine bei den Select-Leitungen Verwendung finden und keine Floppy eingebaut ist. Getestet werden nur die Select-Leitungen Drive Select 0 und 1 sowie Side Select! Diese sind auch am kritischsten, da der Soundchip, der diese Leitungen bedient, durch Überlastung leicht zu beschädigen ist, was passieren kann, wenn Pull-Up-Widerstände von deutlich weniger als 3.3 kOhm angeschlossen werden. Die Funktionsweise dieses Tests unterscheidet sich etwas von den bisherigen. Es wird die Tatsache ausgenutzt, daß die Ports des Soundchips sowohl als Ausgang - das ist die normale Einstellung - als auch als Eingang benutzt werden können. Der Prüfstecker (Abb. 4), für den Sie einen ATARI-Floppy-Stecker benötigen, enthält Kondensatoren (47nF), die über Widerstände (3.3k) von den als Ausgang geschalteten Port-Leitungen auf High-bzw. Low-Pegel geladen werden. Sofort nach dem Laden werden die Soundchip-Ports auf Eingang geschaltet und überprüft, ob der Sollpegel vorliegt. Bei defekten Leitungen ist dies nicht der Fall.

Abb. 2: Die Verdrahtung eines MIDI-Kabels

Printer-Port-Test

Der Test des Druckeranschlusses funktioniert nach dem gleich Prinzip wie der Test des Floppy-Anschlusses. Die Leitungen Data 0 bis 7 sowie Strobe werden vom Soundchip bedient und sind daher mit der gleichen Widerstand/Kondensator-Kombination beschaltet. Die Leitung Busy dagegen ist normalerweise ein Eingang und wird vom MFP bedient; glücklicherweise kann auch der MFP sowohl auf Eingang - so wird er in ATARI-Rechnern normalerweise initialisiert - als auch auf Ausgang programmiert werden. Da Busy normalerweise ein Eingang ist, liegt diese Leitung über einen Pull-Up-Widerstand an +5 Volt, was den Test erschwert, da der Widerstand, über den der entsprechende Kondensator geladen wird, sehr klein sein muß im Verhältnis zum Pull-Up-Widerstand, da ja beide Widerstände einen Widerstandsteiler bilden und auch ein Low-Pegel einwandfrei erkannt werden muß. Glücklicherweise hat der MFP starke Ausgangstreiber, die einen Strom von über 100mA liefern können, so daß der Widerstand an Busy 47Ohm klein sein kann. Damit der Pull-Up-Widerstand im Rechner den Kondensator nicht zu schnell, also bevor ein vorher angelegter Low-Pegel ausgelesen werden konnte, auf High-Pegel auflädt, sollte dieser einen Wert von 330nF aufweisen. Da der Printer-Prüfstecker relativ viele Bauteile benötigt, wurde für diesen eine kleine doppelseitige Platine entworfen, die gemäß dem Bestückungsplan (aus Platzgründen ist dieser nur als PCB-Datei in der Redaktionsmailbox abrufbar) bestückt wird (siehe auch Stückliste für Printer-Prüfstecker). Zu beachten ist, daß die in der Stückliste aufgeführten Widerstandsnetzwerke nicht mit den üblichen verwechselt werden dürfen, bei denen alle Widerstände am ersten Pin miteinander verbunden sind! Vielmehr müssen sie so verschaltet sein, wie auf dem Bestückungsplan angedeutet ist. Man bekommt solche Netzwerke z. B. bei Bürklin Elektronik, kann aber genausogut anstatt eines Netzwerks vier einzelne 1/10-Watt-Widerstände benutzen, die dann stehend bestückt werden. Soll der Prüfstecker in ein Gehäuse eingebaut werden, was anzuraten ist, dann darf kein Bauteil höher sein als ca. 5 mm. Kritisch ist dabei eigentlich nur der 330nF-Kondensator, so daß auf der Platine auch zwei parallelgeschaltete 150nF-Kondensatoren Verwendung finden können, falls diese niedriger sind. Notfalls kann der 330nF-Kondensator auch auf der Platine montiert liegend werden; der Anschluß erfolgt dann über kurze Drahtstückchen.

Abb. 3: Die Verdrahtung des LAN-Prüfsteckers

Ist die Platine voll bestückt, wird sie zwischen die beiden Pin-Reihen des 25poligen Sub-D-Steckers geklemmt und mit jedem Pin verlötet. Vorher allerdings sollten die Lötanschlüsse des Sub-D-Steckers etwas nach oben gebogen werden (dazu muß der Stecker so liegen, daß die Pins 1 bis 13 oben liegen), so daß die Platine nach oben angewinkelt festgelötet werden kann, damitsie auch in das Steckergehäuse hineinpaßt. Um den richtigen Winkel zu treffen, empfiehlt es sich, Stecker und Platine beim Verlöten in eine Gehäusehalbschale zu legen; die Bauteileseite ist dabei unten! Da übliche Steckergehäuse meist zu flach sind, um die bestückte Platine aufzunehmen, sollte eines vom Typ AMP (oder ein anderes "übergroßes") verwendet werden.

ROM-Port-Test

Zum Test des ROM-Ports wird einfach ein ROM-Modul benutzt, das ausgelesen und mit einer Datei verglichen wird. Das ROM-Modul ist jedoch nicht irgendeines, sondern das Diagnosemodul, das zu Testit gehört.

Das Diagnosemodul

Für die Erstellung des Diagnose-Moduls muß die Datei "DIAGNOSE.BIN" auf zwei EPROMs vom Typ 27256 oder 27512 programmiert werden; die EPROMS werden dann in ein ROM-Modul gesteckt. Geeignete ROM-Module waren früher leicht im Handel erhältlich, sind inzwischen aber rar geworden. Wer keines findet, Geld sparen oder einfach nur ein äußerst kompaktes und doch auf volle 128 KB bestückbares ROM-Modul haben möchte, kann es selbst herstellen.

Das Platinen-Layout dazu ist aus Platzgründen ebenfalls nur als PCB-Datei in unserer Redaktionsmailbox abrufbar. Den Bestückungsplan sehen Sie in Abb. 6, die benötigten Bauteile in der Stückliste. Alle Lötpunkte sollten durchkontaktiert werden! Haben Sie das dafür nötige Werkzeug nicht, reicht es auch, die nicht mit Bauteilen belegten Lötpunkte auf der Bestückungs- und Lötseite mit Drahtstückchen zu verbinden sowie die Bauteile auch auf der Bestückungsseite zu verlöten, was aber nur da nötig ist, wo eine Leiterbahn auf der Bestückungsseite zum jeweiligen Pin führt. Die IC-Fassungen sollten dann sog. "flache IC-Fassungen" sein, bei denen die Kelche besonders weit aus dem Kunststoffträger unten herausragen. Da die beiden IC-Fassungen dicht beieinander liegen, ist es ratsam, zuerst die Fassung von IC2 zu bestücken. Übrigens wird das Verlöten der Kelche auf der Bestückungsseite durch Verwendung von SMD-Lot (0.5mm) immens erleichtert.

Durch die Verwendung von Dioden, die die Leitungen ROM SELECT 3 und 4 miteinander verknüpfen, können sowohl EPROMs vom Typ 27256 als auch 27512 verwendet werden, was dann 64 bzw. 128 KB Modulspeicher ergibt. Für das Diagnosemodul reichen zwei 27256er.

Achtung! Das ROM-Modul wird bei ausgeschaltetem Rechner mit der Bestückungsseite nach unten in den Rechner gesteckt! Um es zu aktivieren, muß der Schalter geschlossen werden! Beim Falcon muß der Monitor bei aktiviertem Diagnosemodul ausgeschaltet bleiben, da die Falcon-Video-Hardware nicht initialisiert wird, was zu einer Beschädigung des Monitors führen könnte, falls dieser eingeschaltet und angeschlossen ist!

Die Benutzung des Diagnosemoduls für den Test des ROM-Ports ist eigentlich nur eine Nebensache. Die eigentliche Aufgabe des Diagnosemoduls besteht darin, defekte RAM-Chips im Rechner aufzuspüren, die daran schuld sein können, daß der Rechner nicht mehr bootet.

Abb. 4: Der Schaltplan des Floppy-Prüfsteckers

Stückliste für Printer-Prüfstecker

Widerstände:
R1, R2 Widerstandsnetzwerk, Typ Vitrohm L-3/B, 4 Widerstände (8pol.), 3.3k oder jeweils vier einzelne Widerstände 1/10 Watt (s. Text)

R3 3,3kOhm 1/10 Watt
R4 47Ohm 1/10 Watt

Kondensatoren:
C1-C9 47nF
C10 330nF oder 2x150nF

Sonstiges:
25-pol. Sub-D-Stecker, männlich, mit Lötanschlüssen
Steckergehäuse Typ AMP (s. Text)

Stückliste für ROM-Modul

Widerstände:
R1 4,7kOhm

Kondensatoren:
C1, C2 100nF

Halbleiter
D1, D2 BAT83 oder ähnliche Schottky-Diode
IC1, IC2 EPROMS 27256 oder 27512, je nach Bedarf

Sonstiges
S1 Schalter oder 3pol. Stiftleiste mit Kurzschlußstecker, je nach Bedarf
IC1, IC2 Zwei 28pol. IC-Fassungen mit gedrehten Kontakten

Kein Bild, kein Ton ...

Falls der Rechner einmal keinen Mucks mehr von sich gibt, sollte man zuerst das Diagnosemodul ausprobieren. Folgendes sollte passieren: Ein Testbild erscheint auf dem Monitor (nicht beim Falcon!), die Laufwerksdiode von Floppy A leuchtet, und ein Ton sollte hörbar sein, sofern ein Lautsprecher an den Rechner angeschlossen ist; seltsamerweise ist beim TT nach dem Einschalten ein Reset nötig, um den Ton erklingen zu lassen! Daraufhin werden die untersten 512 KB RAM, die für das Booten des Rechners unabdingbar sind, abzüglich des Bildschirmspeichers, auf Fehler überprüft. Bei Fehlern werden die defekten Bits auf einem am Printer-Port (also nicht ATARI-Laser!) angeschlossenen Drucker ausgegeben.

Abb. 5: Der Bestückungsplan zum Printer-Prüfstecker

Dabei wird immer von 32 Bit Datenbusbreite zu den RAMs ausgegangen, was bei 16-Bit-Maschinen zu berücksichtigen ist, wenn dann der defekte RAM-Baustein auf der Rechner-Platine gesucht wird.

Tritt kein Fehler auf, wird zurück ins TOS gesprungen, der Rechner müßte dann normal booten; tut er das nicht, auch wenn keine Harddisk und kein Floppy-Laufwerk mehr angeschlossen sind, ist vermutlich ein Chip defekt, oder im nichtflüchtigen RAM des Falcon stehen falsche Informationen (s. diverse Leserbriefe und andere Veröffentlichungen). Gibt der Rechner auch mit Diagnosemodul kein Lebenszeichen von sich, liegt ein so schwerer Fehler vor, daß die CPU gestoppt wird, wobei ein "schwerer" Fehler auch darin bestehen kann, daß ein IC im Rechnereinen schlechten Kontakt zur IC-Fassung hat!

Da die Überprüfung des RAMs bei jedem Reset Zeit kostet, sollte das Modul abgesteckt oder ausgeschaltet werden, wenn es nicht benötigt wird. Besonders für KAOS-TOS-Benutzer ist es ratsam, das Modul auszuschalten, wenn es nicht benötigt wird, da KAOS-TOS einige Exception-Vektoren nicht setzt, falls ein Diagnose-Modul angeschlossen ist. Dies wird zwar dadurch abgemildert, daß das Diagnosemodul KAOS-TOS erkennt und alle Exception-Vektoren bis auf einen richtig setzt, übrig bleibt jedoch der Busfehler-Vektor, den KAOS-TOS selbst vorher benutzt, dann aber nicht setzt!

Ein seltsamer Fehler ist in der Testphase auf einem Mega ST mit ICD-Harddisk-Treiber aufgetreten: war das Diagnosemodul beim Booten aktiviert, wurde der Treiber ein zweitesmal gestartet, woraufhin der Rechner anhielt. An diesem Fehler kann eigentlich nicht das Modul schuld sein, vielmehr dürfte das TOS oder der ICD-Treiber den Fehler verschuldet haben; vielleicht kann einer der Leser Licht in die Sache bringen? Will man in so einem Fall den ROM-Port mit Testit überprüfen, darf das Modul erst nach dem Booten eingeschaltet werden.

Abb. 6: Der Bestückungsplan des ROM-Moduls

Achtung

Zu guter Letzt möchte ich noch darauf hinweisen, daß bei fehlerhaftem Aufbau der Prüfstecker der Rechner beschädigt werden kann. Vor allem das ROM-Modul kann Schäden verursachen.

Wer sich dafür interessiert, wie die Programmierung der Prüfroutinen aussieht, kann sich die Listings ansehen, die Auszüge aus dem Programm Testit sind. Das Listing befindet sich natürlich auch mit auf der MegaDisk, die in der Redaktionsmailbox (069-292966) abrufbar ist.

; Auszüge aus dem Testit-Programm 
; (c)1996 by MAXON-Computer 
; Autor: Christian Fuchs

sdrucker:
    lea	$ffff8800,a0
    lea	2(a0),a1
    move.w	sr,d7
    moveq	#15,d5 ;Port B
    moveq	#7,d6
    ori.w	#$700,sr
    move.b d6,(a0) ;paßt zufällig!
    move.b (a0),d4 ;aufheben
    bsr port_aus_sel ;Port auf Ausgang
    move.b (a0),d2 ;aufheben
    st	(a1) ;Port B high
    bsr	wait
    bsr	port_ein_sel	;Port auf Eingang
    move.b (a0),d3 ;Port lesen 
    not.b d3 ;defekte Bits sind 1 
    bsr	port_aus_sel	;Port auf Ausgang
    clr.b	(a1) ;Port B low
    bsr wait
    bsr port_ein_sel ;Port auf Eingang 
    or.b (a0),d3 ;Port lesen 
    move.b d2,(a1)
    lsl.w #8,d3
    moveq #14,d5 ;Port A
    moveq #6,d6
    bsr	port_aus_sel ;Port auf Ausgang
    move.b (a0),d2 
    move.b d2,d1
    bset #5,d1 ;Strobe high 
    move.b d1,(a1) bsr wait
    bsr port_ein_sel ;Port auf Eingang 
    move.b (a0),d3 ;Port lesen 
    not.b d3
    bsr	port_aus_sel	;Port auf Ausgang
    bclr #5,dl ;Strobe low 
    move.b d1,(a1) 
    bsr wait
    bsr port_ein_sel ;Port auf Eingang
    or.b (a0),d3 ;Port lesen
    move.b d2,(a1)
    move.b #7,(a0)
    move.b d4,(a1)
    move.w d7,sr ;Interrupts ausführen
    lea	$fffffa01,a0 ;GPIP-Data
    lea	$fffffa05,a1	;Data-Direction
    lea $fffffa09,a2 ;Interrupt-Enable
    move.b (a0),d4
    move.b (a1),d5
    move.b (a2),d6
    movem.w d4-d6,-(sp)
    ori.w #$700,sr
    bclr #0,d6
    move.b d6,(a2) ;Interrupt aus 
    bset #0,d5
    move.b d5,(a1) ;auf Ausgang 
    bset #0,d4
    move.b d4,(a0) ;Busy high 
    bsr	wait
    bclr #0,d5
    move.b d5,(a1) ;auf Eingang 
    tst.b (a0)
    move.b (a0),d2 ;-auslesen 
    not.b d2 
    bset #0,d5
    move.b d5, (a1) ,-auf Ausgang 
    bclr #0,d4 
    move.b d4,(a0) ;Busy low 
    bsr wait 
    bclr #0,d5
    move.b d5,(a1) ;auf Eingang 
    tst.b (a0)
    or.b (a0),d2 ;auslesen
    movem.w (sp)+,d4-d6
    move.b d5,(a1)
    move.b d4,(a0)
    move.b d6,(a2)
    move.w d7,sr
    andi.b #%00100000,d3
    move.w d3,d0
    andi.b #%00000001,d2
    or.b d2,d0
    rts

port_aus_sel:
    move.b #7,(a0) ;Port auf Ausgang 
    move.b (a0),d0g 
    bset d6,d0 
    move.b d0,(a1)
    move.b d5,(a0) ;Register wählen 
    rts

port_ein_sel:
    move.b #7,(a0) ;Port auf Eingang 
    move.b (a0),d0 
    bclr d6,d0 
    move.b d0,(a1)
    move.b d5,(a0) ;Register wählen 
    rts

wait:	move.l	d0,-(sp)
    moveq #1,d0 ;5-10ms warten 
.wa10:	cmpi.b	#1,$fffffa23
    bne.s .wa10 
.wa20:	cmpi.b	#1,$fffffa23
    beq.s .wa20 
    dbf	d0,.wa10
    move.l (sp)+,d0 
    rts

Christian Fuchs
Aus: ST-Computer 09 / 1996, Seite 32

Links

Copyright-Bestimmungen: siehe Über diese Seite