Die Festplatte (Teil III)

Irgendwie erinnert mich die folgende Beschreibung des Hostadapters an die gute alte Zeit, als Herr Tramiel noch Eigentümer der Firma Commodore war, und den ersten billigen Taschenrechner auf den Markt brachte (Tatsache: Der Taschenrechner von Commodore mit vier Grundrechenarten war mit etwa DM 200,- der erste billige Taschenrechner für eine breite Käuferschicht). Damals muß sich sein Motto "Power without the price” zusammen mit seinen konsequenten Inkonsequenzen geprägt haben. Die Geräte, die im Laufe der Jahre von ihm auf den Markt gebracht wurden, waren zum Beispiel mit hochwertigen Schnittstellen ausgerüstet (der PET hatte einen IEEE-Bus - es soll noch heute Labors geben, die damit Datenerfassungen fahren!), hatten aber keinen Norm-Steckverbinder; oder die Geräte der nachfolgenden Generation waren nicht kompatibel zu ihren Vorgängern.

Als ATARI dann von Herrn Tramiel gekauft wurde und der erste ST als Gerücht seine Runde machte, wollte die Fachwelt ihren Ohren und dann auch Augen nicht trauen: 68000-CPU, RAM bis 4 MByte, RS-232-Anschluß, Centronics-Schnittstelle, Standard-Floppyanschluß usw. Da sah man auch gerne über kleine Unzulänglichkeiten hinweg - z.B. über den Floppy-Stecker (Was soll denn das sein ?) - ganz konnte eres wohl doch nicht lassen. Ach ja - und dann noch das Computer-System-Interface. Aus dem genormten “S” für Small wurde mal wieder ein “A” für ATARI. Es ist doch zum Mäusemelken...

Anrede

Bevor ich jetzt auf die Eigenschaften (oder sagen wir besser Eigenarten) dieser Schnittstelle eingehe, möchte ich zum besseren Verständnis noch einmal die Begriffe kurz erläutern. Das ACSI (ATARI Computer System Interface) ist die Schnittstelle an Ihrem ST. An diese 19-polige Buchse können bis zu acht verschiedene Peripheriegeräte (Targets) angeschlossen werden. Die Belegung der Buchse ist im nebenstehenden Kasten dargestellt. Diese Schnittstelle ist dem Small-Computer-System-Interface (SCSI) sehr ähnlich; da diese aber eine Menge (im Moment) unbenutzter Leitungen mit sich führt, wurde sie wohl aus “Tramielschen” Gründen zur einfacheren ACSI umfunktioniert. Sinnigerweise muß jetzt in der Festplatte diese Schnittstelle wieder auf SCSI regeneriert werden (da sind wohl damals bei ATARI die Herren Entwickler über die eigenen Möglichkeiten gestolpert - ein neuer Festplattencontroller am ACSI-Bus ist doch nicht so einfach...). Beinahe wäre aus dem Hostadapter auch ein vollständiger SCSI-Bus geworden, aber dies wurde noch - oder sollte ich sagen, wieder einmal - verhindert. Warum, das werden Sie weiter unten noch erfahren. Der Adapter sitzt in der Festplatte und ist ein Teil des AHDI (ATARI Hard Disk Interface), der zweite Teil ist die zugehörige Software (AHDI.PRG), die Sie beim Booten über den AUTO-Ordner in den Rechner laden.

**Der ACSI-Bus**

Das ATARI-Computer-System-Interface ist mit einer 19-poligen D-Subminiatur-Buchse ausgestattet. Von ATARI werden daran z.Zt. die Festplattenlaufwerke und der Laserdrucker angeschlossen. In naher Zukunft wird wohl noch der CD-ROM-Spieler dazukommen. Das obige Anschlußbild zeigt die Draufsicht auf die Buchse am Computer bzw. an den Peripheriegeräten. Die Pins sind im einzelnen wie folgt belegt:

Richtung ST - Periph.
Pin 1 - Datenbus Bit 0 <--->
Pin 2 - Datenbus Bit 1 <--->
Pin 3 - Datenbus Bit 2 <--->
Pin 4 - Datenbus Bit 3 <--->
Pin 5 - Datenbus Bit 4 <--->
Pin 6 - Datenbus Bit 5 <--->
Pin 7 - Datenbus Bit 6 <--->
Pin 8 - Datenbus Bit 7 <--->
Pin 9 - CS=Chip Select (Klingelleitung...) —>
Pin 10 - INT=Interrupt (Die Quittung für Daten) <-—
Pin 11 - Masse
Pin 12 - RESET (die Notaus-Taste) --—->
Pin 13 - Masse
Pin 14 - ACK=Acknowledge (Annahme der Bestellung DRQ)>
Pin 15 - Masse
Pin 16 - Al (Fertigmachen zur Befehlsausgabe) —->
Pin 17 - Masse
Pin 18 - R/W-Read/Write (Lesen oder Schreiben) —--->
Pin 19 - DRQ-Data Request (Daten haben will...) <----

(Bei einem Querstrich über einer Bezeichnung ist das Signal Low- Aktiv - es geht auf Nullpegel, wenn es aktiviert wird.)

Satire

Apropos acht Peripheriegeräte - die bisher bekannten sind einmal die Festplatte und dann hat sich noch der Laserdrucker an diese Schnittstelle gemogelt. Die Adresse der jeweiligen Geräte wird über kleine DIP-Schalter (Dual in Line Package) eingestellt. Dieser DIP-Schalter befindet sich in der Festplatte auf der Platine des Hostadapters (bei der SH 205 auf der Platine des Controllers, da hier Adapter und Controller zusammengefaßt sind). Der SCSI-Bus hat ebenfalls die Eigenschaft, bis zu acht Geräte ansteuern zu können. Die Auswahl erfolgt über drei Jumper auf der Controllerplatine - 8 Geräte am ACSI-Bus x 8 Geräte am SCSI-Bus = 64...(merken). Wie Sie in der letzten Folge erfahren haben, kann der Adaptec-Controller bis zu zwei Laufwerke ansteuem - 2x64=128... - ach so. Sie haben schon einen Laserdrucker, das ist natürlich Pech, dadurch entfällt ja ein Gerät an dem ACSI-Port - dann müssen Sie sich eben mit 7x8x2=112 Festplatten zufrieden geben.

'Hart'ware

Bei der nachfolgenden Beschreibung des Hostadapters beziehe ich mich auf die SH-204, da er hier noch separat aufgebaut ist. In der SH-205 fehlen die Puffer-ICs zwischen Adapter und Controller, außerdem wurde er um einen gepufferten DMA(ACSI)-Port erweitert.

Bild 1

Im Bild sehen Sie den Bestückungsplan des Hostadapters. Auf der kleinen Platine ist auf der einen Seite die 19-polige Sub-D-Buchse (Kürzel für D-Subminiatur-Steckverbinder, das D bezieht sich auf die Gehäuseform) für den DMA-Port angeordnet. Auf der anderen Seite befindet sich der 50-polige Pfostenstecker für den SCSI-Anschluß. Rund um den PAL-Chip (kein Hundefutter) sind einige Puffer- und Gatter-ICs angeordnet. Was sich hinter dem Begriff PAL verbirgt, finden Sie nebenstehend erklärt.

Auf der Adapterplatine der ATARI-Festplatte kommt ein PAL16L8 zum Einsatz. Die Kennzeichnung bedeutet, daß dieses PAL über die Programmierung maximal 16 Eingänge und 8 Ausgänge haben kann. Wie Sie anhand des Blockschaltbildes erkennen, übernimmt das PAL eine dominierende Rolle in der Ablaufsteuerung des Hostadapters - und hier liegt auch die Besonderheit dieses Interfaces. In der Beschreibung des Funktionsablaufes ist die Kommandostruktur zur Daten- und Steuerungsabwicklung genau festgelegt:

  1. Command-Phase: Hier wird über einen sechs Bytegroßen Befehl als erstes das auszuführende Kommando vom Initiator zum Target (Ziel) übertragen.
  2. Data-In/Out-Phase: Hier erfolgt die eigentliche Datenübertragung.
  3. Status-Phase: Hier erfolgt die Rückmeldung, in der die ordnungsgemäße Erledigung des Kommandos oder ein Fehlerkode an den Initiator gemeldet wird.

Danach wiederholt sich der Ablauf von Punkt eins bis drei für jeden zu übermittelnden Datenblock. Woran erkennt nun ein Target, daß es Empfänger für das am Datenbus anliegende Signal ist und um welche Art von Signal es sich handelt?

Bild 2: Blockschaltbild des ATARI-Adapters

Fahrplan

Beim Betrachten der ACSI-Anschlußbuchse und der Signale des SCSI-Bus sind Ihnen bestimmt die verschiedenen Steuerleitungen aufgefallen. Durch einen zeitlich genau festgelegten Ablauf der Signale über diese Anschlüsse kann das Target ein Kommando vom Daten- oder Statussignal unterscheiden. Nur sind die Signalleitungen von ACSI und SCSI nicht identisch. Die notwendige Konvertierung übernimmt der Hostadapter. Er setzt also die Signale vom ACSI über Logikschaltungen (in der Hauptsache im PAL) in die notwendigen Steuersignale für das SCSI um. Das Prinzip der Steuerung über Command-/Data- und Status-Phase wird dabei nicht verändert!

Pünktlichkeit

Die Zeitdiagramme der einzelnen Phasen sind im nebenstehenden Bild zu sehen. Wenn man sich beim Betrachten der Diagramme noch die Geschwindigkeiten für die Datenübermittlung über den ACSI-Bus in Erinnerung ruft, wird klar, warum ATARI das Anschlußkabel zur Festplatte so kurz gehalten hat. Jede kleinste Verzögerung durch ein überlagertes Störsignal würde ja den ganzen Busfahrplan durcheinander bringen (ein paar Dezimeter mehr sind trotzdem noch drin; davon in der nächsten Folge mehr).

Bild 3: Die Zeitdiagramme der einzelen Phasen

Hausnummer

Jetzt kann zwar die Art der anliegenden Sendung erkannt werden, aber noch nicht der jeweilige Empfänger. Diese Information wiederum steht in der “Mitteilung”, die wir uns jetzt einmal näher ansehen. Das Kommando ist ein 6-Byte-großer Befehl. Er wird Byte für Byte in der Command-Phase übertragen: (siehe Kasten oben).

Zum besseren Verständnis des Ablaufes sollten Sie sich jetzt auch die Zeitdiagramme noch einmal näher ansehen. Dem Initiator (also unserem ST) obliegt die alleinige Busverwaltung, da kein Belegt-Signal vorhanden ist. Deswegen können auch verschiedene Geräte am ACSI-Port nicht miteinander kommunizieren (beim SCSI-Bus möglich).

**Was ist ein PAL?**

Die Abkürzung PAL steht für Programmable Array Logic, zu deutsch etwa: programmierbares Logik-Feld. Bei den heute gebräuchlichen und auch notwendigen komplexen Schaltungsentwürfen bedarf es einer Vielzahl von logischen Verknüpfungen. Diese werden normalerweise mit herkömmlichen UND-, ODER- und InverterTTL-Bausteinen gelöst. Dabei kann aber leicht ein s.g. IC-Grab entstehen, also eine unverhältnismäßig große Anzahl von diesen Bausteinen notwendig sein. In diesem Zusammenhang sollte man sich an den Hardware-Entwurf für die ST-Serie erinnern, das waren vier etwa 50 x 25 cm große Platinen voll mit ICs!

Man kann natürlich jetzt nach Abschluß der Versuchsphase diese ganzen Funktionen in speziell gefertigte ICs packen. Das Beispiel hierfür sind die vier Spezial-ICs in Ihrem ST: GLUE, DMA-Chip. Shifter und MMU. Das lohnt sich nur bei hohen Stückzahlen und hoher Packungsdichte. Für kleinere Lösungen verwendete man am Anfang PROMs, also programmierbare Festwertspeicher. Diese PROMs sind aber für komplexe Funktionen nicht geeignet, da immer nur ein Ausgangszustand durch Anlegen einer Adresse erzielt wird.

Daraus erfolgte die Entwicklung der PALs. Es handelt in erster Linie auch um programmierbare Matrixbausteine, wobei aber im Unterschied zum PROM bereits die logische Funktion programmiert wird. Außerdem kann in der Regel ein Teil der Anschlüsse eines PALs als Ein- oder Ausgang programmiert werden, und es ist zusätzlich eine Rückführung eines Ausgangs in das PAL möglich (Wird ein solcher Ausgang durch die gerade anliegenden Signale ausgeschaltet und damit hochohmig, kann dieser Port als Eingang benutzt werden!). Damit läßt sich aber auch ein solcher Baustein kaum noch kopieren, da man die Funktion als Ein- oder Ausgang nicht mehr erkennen kann. Zusätzlich gibt es eine sogenannte Last-Fuse, nach deren Brennen ein Auslesen verhindert wird (es werden willkürliche Ausgangsmuster erzeugt). Einen besseren Kopierschutz kann man sich wohl kaum vorstellen. Das Anschlußbild des im Hostadapter verwendeten PALs habe ich Ihnen untenstehend aufgezeichnet.

Wenn der Postmann...

Nach Abschluß einer Status-Phase gibt der ATARI den Bus für sich selbst wieder frei. Um nun mit einem beliebigen Gerät in Kontakt zu treten, legt der ATARI das Byte 0 des Kommandoblocks auf den Bus und setzt etwa gleichzeitig die Leitung Al auf Null (natürlich mit Setzen der R/W-Leitung auf “Schreiben”, das können Sie ja aus dem Zeitdiagramm ersehen). In Byte 0 steht in Bit 5 bis Bit 7 die jeweilige Target-"Hausnummer”. Jetzt klingelt der ST mit Chip-Select (CS) bei allen Geräten an. Im Blockschaltbild des Hostadapters sehen Sie den DIP-Schalter, mit dem diese “Hausnummer” eingestellt werden kann.

Das darunterliegende IC vergleicht die eingestellte Nummer mit der auf dem Datenbus (Bit 5 bis 7) anliegenden. Sind diese identisch, so meldet das PAL es über die Interrupt-Leitung (INT) zurück und der Hostadapter bleibt auf Empfang. Im anderen Fall ignoriert er ganz einfach die folgenden Daten. Um den Bus durch eine Schlafmütze nicht zu blockieren, läßt der ATARI den Targets max. 100 ms Zeit (so schnell sind Sie nicht am “Türdrücker”...), ansonsten veranlaßt er einen Time-Out im System. Wenn die Verbindung steht, werden Stück für Stück die restlichen fünf Bytes übertragen. Dazu sehen wir uns diese im einzelnen an:

Inhalt der Sendung

In Byte 0 steht, wie gesagt, die Adresse des Targets und in den Bits 0 bis 4 die Nummer des jeweiligen Kommandos (sie sind weiter unten einzeln aufgeführt). In Byte 1 steht wiederum im Bit 5 bis 7 die Nummer des Laufwerkes (theoretisch bis zu acht Stück). Die restlichen 5 Bits können zusammen mit den Bytes 2 und 3 eine 21-Bit-Blockadresse bilden. Mit dieser Blockadresse ist jeder Sektor auf der Festplatte ansprechbar, sie errechnet sich nach folgender Formel:

Ba = (((Zn * Ak) + Kn) * As) + Sn

Dabei bedeuten:

Ba = Block-Adresse
Zn = Zylinder-Nummer
Ak = Anzahl der Köpfe
Kn = Kopf-Nummer
As = Anzahl der Sektoren
Sn = Sektor-Nummer

In Byte 4 finden wir die Angabe über die Anzahl der in der Datenphase zu über- I tragenden Blöcke und Byte 5 enthält schließlich ein mögliches Kontrollbyte.

Der Inhalt des jeweiligen 6-Byte-Kommandos hängt selbstverständlich vom jeweiligen Befehl ab - was sollte auch die Angabe einer Blockadresse z.B. beim Befehl “Test Unit Ready”? Hier ist nur die Statusmeldung interessant.

Faulpelz...

Aus dem Zeitdiagramm ist ersichtlich, I daß die Leitung Al nur während des Bytes I 0 zurückgesetzt wird. Für die restliche Übertragung bleibt sie auf Eins (High-Pegel), um eine sonst mögliche Adressierung eines anderen Gerätes zu vermeiden. Die sechs Bytes des Kommandoblocks I werden noch einzeln übertragen, da sich der Inhalt der kompletten Nachricht erst aus diesen Daten ergibt.

... und Akkord

In der Daten-In-/Out-Phase geht dann aber richtig die Post ab. denn hier kann der DMA-Chip durch die Übertragung von bis zu 255 Blöcken (à 512 Bytes) in einem Rutsch seine Daseinsberechtigung belegen. Das Ganze wird durch die Statusmeldung abgeschlossen, die unter anderem eine Fehlermeldung enthält. Diese Statusmeldung muß aber in jedem Fall innerhalb von vier Sekunden nach der Command-Phase erfolgen, sonst bricht der ST wiederum mit einem Time-Out die Übertragung ab. Wenn die 255 Blöcke nicht zur Datenübertragung ausgereicht haben, wird der Vorgang - also Command-Phase, Daten-In/Out-Phase usw. - mit den nächsten Daten einfach wiederholt.

Irrtum

Die wenigen Kommandos, die unsere Festplatte vom ST bekommt (der Control- I ler kennt wesentlich mehr), finden Sie im nebenstehenden Kasten erklärt. Dazu möchte ich gleich folgendes ergänzen. In den Orginalunterlagen zu dem AHDI von ATARI werden teilweise falsche Befehle aufgeführt, die der Adaptec-Controller überhaupt nicht versteht. ATARI hat in der Entwicklungszeit der Festplatte mit verschiedenen Controllern experimentiert (unter anderem auch mit einem RLL-Controller!). Die Unterlagen sind aber anscheinend nie korrigiert worden, und so tauchen diese falschen Befehle durchaus auch in aktueller Literatur auf.

Wenn man sich die Befehle betrachtet und mit den Orginal-Befehlen des Controllers vergleicht, fällt im ersten Moment kein Unterschied auf. Aber (Tramiel, s.o.) auf den zweiten Blick -und überhaupt, wo sind denn die Befehle der Gruppen 2? Die Kommandostruktur beim SCSI sieht im Byte 0 nämlich ein klein wenig anders aus: (siehe Kasten vorhergehende Siete unten) Der SCSI-Befehlssatz kann insgesamt bis zu acht Kommandogruppen mit je 32 Kommandos umfassen. Da aber die Gruppennummer im gleichen Moment am SCSI-Bus anliegen müßte, wenn der ST sein Target addressiert, werden die Bits 5 bis 7 am SCSI-Bus einfach per Hardware im Hostadapter für diesen Moment auf Null gelegt. Damit sind aber ausschließlich Gruppe-O-Kommandos möglich.

AHDI Command Set

Das ATARI-Hardisk-Interface hat leider einen recht bescheidenen Befehls-Umfang. Es kommen lediglich sieben Befehle zur Anwendung, die aber zum Betrieb der Festplatte ausreichen.

Diese sind:

  1. Test Unit Ready ($00)
    Mit diesem Kommando kann die Betriebsbereitschaft des Laufwerkes abgefragt werden.
  2. Request Sense ($03)
    Hiermit wird ein spezieller Prüfblock abgerufen, der u.a. eine definierte Fehlermeldung enthalten kann.
  3. Format Unit ($04)
    Ähnlich einer Diskette muß die Festplatte formatiert werden. Die notwendigen Informationen für das Format müssen vorher über den Mode-Select-Befehl übermittelt worden sein, sonst werden voreingestellte Daten benutzt.
  4. Read ($08)
    Entspricht dem Read-Befehl beim Diskettenlaufwerk zum Lesen der Daten von der Festplatte.
  5. Write ($0A)
    Das Ganze umgekehrt. Wie beim Read-Befehl wird ab der angegebenen Blockadresse die in Byte 4 eingetragene Anzahl von Datenblöcken in diesem Fall geschrieben.
  6. Seek ($0B)
    Auf diesen Befehl hin wird sofort die angegebene Blockadresse angesteuert und mit einer Statusmeldung quittiert.
  7. Mode Seleet ($15)
    Ein wichtiger Befehl, mit dem mindestens 12 Bytes an Informationen für die Formatierung der Festplatte übertragen werden.

Original und Fälschung

Aber es kommt noch schlimmer. Der vom Hostadapter erzeugte SCSI-Bus ist gar keiner. Wenn Sie sich an die 128 Festplatten erinnern - sie waren nur durch die Auswahl des Targets und des SCSI-Kanals möglich (bis zu acht Geräten am SCSI-Bus...) - denkste... Wieder spielt uns hier der Hostadapter einen Streich. Das Ablaufprotokoll eines SCSl-Busses sieht etwas umfangreicher aus:

  1. Bus-Free-Phase
  2. Selection-Phase
  3. Commando-Phase
  4. Data-In-/Out-Phase
  5. Status-Phase
  6. Message-Phase

(Es gibt noch ein paar mehr, die aber hier nicht so wichtig sind). Wie oben bereits erklärt, überwacht der ATARI den Bus selber: Punkt 1 fällt also flach und damit eben leider auch die Möglichkeit, Geräte direkt miteinander kommunizieren zu lassen. Punkt 2 findet statt (!), und zwar direkt im Hostadapter. Normalerweise wird zur Selektion eine der acht Datenleitungen gesetzt (das ist die “Hausnummer” für das Gerät am SCSI-Bus) und durch Setzten der Select-Leitung eine Antwortmeldung über die Busy-Leitung vom Target ausgelöst. Damit hat aber auch dann das Target das Sagen im Datenaustausch, denn erst nach Löschen der Busy-Leitung durch das Target können andere Teilnehmer wieder auf den Bus zugreifen!

Geschummelt

In unserem Fall wird einfach nach einem Reset (vom ST - also auch nach dem Einschalten) kurz die Datenleitung 0 und die Select-Leitung am SCSI-Bus vom Hostadapter gesetzt. Der Controller in der SH-204/205 wird also nur ein einziges mal angewählt; darum muß auch die Anlaufphase und Selbstinitialisierung der Festplatte abgewartet werden, eine Kontaktaufnahme mit dem SCSI-Teilnehmer ist sonst nicht mehr möglich. Nichts war’s mit unseren 128 Festplatten, wir kommen maximal auf 8 Targets am ACSI-Bus x 1 Teilnehmer am SCSI-Bus x 2 Festplatten pro Controller = 16 Stück - wenn die Software jetzt noch mithalten könnte.

Frust und Freud

Eine gute und eine schlechte Nachricht zum Schluß - die gute zuerst: in der SH-205 ist der Fehler behoben. Jetzt die schlechte: anscheinend wird durch ein falsches Hardware-Timing im Hostadapter der SH-204 die Datenleitung in dem gleichen Moment auf Null gelegt, in dem eigentlich die Statusmeldung an den ATARI gehen müßte. Jede Art von Fehlermeldung wird also einfach ignoriert. Wehe wenn...

Zum Schluß...

...zu diesem Teil der Festplattenserie muß ich zum “Zum Schluß...” vom letzten mal eine Korrektur vornehmen, ich habe die Kurve einfach nicht gekriegt. Die dort versprochenen Ausführungen zum Thema Formatieren und Umbau mußte ich aus Platzmangel auf die nächste Folge verschieben...

hp



Aus: ST-Computer 03 / 1988, Seite 123

Links

Copyright-Bestimmungen: siehe Über diese Seite