ABBUC Newsletter vom 16.03.2000

ATASPI für XL/XE Computer

Hallo Leute…

Matthias Belitz schickt uns eine News:

ATASPI für XL/XE Computer
„Atari Advanced SCSI Programming Interface“

Wozu soll das gut sein ?

Mittlerweile gibt es sowohl eine Reihe verschiedener SCSI Interfaces als
auch diverse IDE Interfaces für den kleinen Atari. Bisher musste war jeder
Entwickler gezwungen, saemtliche Treiber und Utilities für sein Produkt neu
zu schreiben, was natuerlich auch einen erheblichen zusaetzlichen
Entwicklungsaufwand bedeutet.
Nicht zuletzt deshalb unterstuetzt meines Wissens z.B. bisher auch nur ein
Interface (msc-IDE) Lesezugriffe auf CD-ROMs, obwohl mindestens zwei
weitere Interfaces (BB SCSI, draco-IDE) von der Hardware dafuer geeignet
waeren.

Eine Loesung für dieses Problem besteht in der Aufteilung in abstracte,
unabhaengige Tools und Hardware-spezifische Treiber, die ueber eine definirte
Software-Schnittstelle miteinander kommunizieren. Dieses Konzept basiert
auf dem ASPI Konzept des PC, das von der Firma ADAPTEC entwickelt wurde.

Der Entwickler eines neuen IDE oder SCSI-Interfaces muesste dann nur die
entsprechenden low-Level Treiber bereitstellen und die Anwender koennten
sofort alle bereits existierenden Programme nutzen.

Hier ein paar Beispiele für solche Anwendungsprogramme:

– ISO 9660 Filesystem (Datenformat auf CD-ROM)
– MS-Dos Filesystem (z.B. für Zip/Harddisk)
– Audio CD-Player
– Scanner ?

Ich moechte hier darlegen, wie eine solche Softwarschnittstelle aussehen
koennte.

Da SCSI-Geraete blockorientiert arbeiten, könnte die SIO des Atari
entsprechend umgewidmet werden.
Der ATASPI Manager wuerde dann aehnlich wie eine Floppy angesprochen.

Hier die entsprechende Neudefiniton des DCB

DDEVIC $70 ASPI manager
DUNIT $01 ..(Nummer des ASPI Manager)
DCOMND $XX ..(Kommando Code)
DSTATS $ ..Datenrichtung $80 Schreiben, $40 Lesen
DBUFR ADR ..Adresse des Datenbuffer
DTIMO ..Timeout Wert
DBYTE ..Anzahl erwarteter Bytes zur Übertragung
DAUX ..Adresse des SCSI Request Block (SRB)

Die Kommandos orientieren sich am ASPI-Standard von ADAPTEC

$00 host adapter inquiry
$01 get device type
$02 execute SCSI command
$03 abort SCSI command
$04 RESET SCSI device
$05 set host adapter parameters
$06 get disk drive information

Der SCSI Request Block enthaelt zusaetzliche Informationen für das Kommando:

SRB
byte TID ID des adressesierten Geraetes
byte CMDLEN Laenge des folgenden SCSI Kommandos in Bytes
6-12 bytes das eigentliche SCSI-Kommando, 6-12 Bytes lang

Am Ende der Entwicklung sollten die entsprechenden Routinen bereits im ROM
des Geraetes enthalten sein, damit sie unter allen DOS direkt erreichbar
sind.

Aufgrund der weltweiten Verbreitung habe ich bereits begonnen, einen
solchen ATASPI-Manager für die Black Box zu schreiben, ein Manager für das
msc-Interface wird irgendwann folgen.

Der Quelltext dieses Projectes sollte meines Erachtens unter Beachtung der
GNU-public-license frei verfuegbar sein.

Wer Interesse an der Mitarbeit hat, sollte sich mit mir in Verbindung
setzen.

Tschoe,

Matthias

P.S.:
roadmap for BB ATASPI

– execute simple commands (INQUIRY) -> done
– basic read DATA subroutines -> done
– handling status requests of target -> done
– handling message requests of target -> done for one byte messages
– handling more DATA expected than could be transfered -> done
– handling less DATA expected than should be transfered
– handling wrong DATA direction expected
– basic write DATA subroutines
– set up manager which could execute ASPI commands as described (at the
moment only „execute command“ possible)
– rebuild manager for BB-ROM patch
– additional burst read subroutines
– additional burst write subroutines
– rewrite code for speed improvements

roadmap tools

– Audio CD-Player -> very basic player done
– ISO 9660 FS


Bis demnaechst!
gtx. Raimund