Hardware > Hardware (Classic 16-/32-Bit)
ACSI über PC-ParallelPort
ToPeG:
Auf dem Atari müsste erst mal nichts Programmiert werden. Sofern ordentlich umgesetzt sollte jeder Festplattentreiber den PC als Festplatte erkennen.
Auf dem PC müsste ich (oder jemand anderes der darin Erfahrung hat) in C oder ähnlichem eine ACSI-Festplatte simulieren. Das sollte nicht so kompliziert sein, da die Megafiles z.B. nur vier Basis-Befehle (EDIT: 8 oder so insgesamt) kennen. Zudem kenne ich mich mit dem ACSI Bus und Protokoll etwas aus. Ich sehe keine Unüberwindlichen Hürden, so was zu implementieren.
Ich würde es bei mir zuerst auf Linux Programmieren, da ich mich damit am besten auskenne und der direkte Zugriff auf den Parallelport einfach ist.
Wahrscheinlich werde ich zuerst alles schnell in ein Perl zusammen schustern um es dann ordentlich C umzusetzen, wenn ich mir über die Interne Strukturen klar geworden bin. Aber wie ich schon sagte ich bräuchte dafür zwei Tage Ruhe. Ich habe aber keine Ahnung ob mir meine Familie die in der nächsten Zeit gönnt. ;)
Weiter gedacht sollte es sogar möglich sein alle Laufwerke im PC vom Atari mit benutzen zu lassen. Aber das werde ich wohl nicht so einfach hin bekommen, da mir hier einiges an Erfahrung fehlt. Auch Implementierungen auf anderen Betriebssystemen könnte ich nur Hilfestellung geben.
Auf dem Atari habe ich bisher nur in GFA-Basic umfangreicheres geschrieben. Ein ganz klein wenig C und ein paar Brocken Assembler habe ich auch schon benutzt.
ToPeG:
Um etwas ausführlicher zu werden.
Das Busprotokoll vom ACSI besteht aus 6 Byte, darin wird die Geräteadresse, der Befehl und zusätzliche Informationen zum Befehl untergebracht.
Die Basisbefehle sind:
- Test Drive Ready (Befehl &H00)
- Restore to Zero (Befehl &H01)
- Request sense (Befehl &H03)
- Read Sector (Begehl &H8)
Ohne die wird ein Gerät am ACSI-Bus nicht erkannt.
weiterhin wird dann noch
- Seek (&H0B)
- Format (&H04)
- Write (&H0A)
etc. gebraucht
Das Atari Profibuch gibt ausführlich Informationen darüber.
Auf dem PC wird ein direkter Registerzugriff auf den Parallelport gebraucht, da kein bekanntes Parallelport Protokoll benutzt wird. Ich habe versucht mich recht nahe ans ECP zu halten, aber es gibt einige Abweichungen, auch was einen Buszyklus betrifft.
Wie ich schon schrieb werde ich es auf Linux umsetzen. üder "/dev/port" hat man direkten Zugriff auf alle Hardwareregister im PC.
Grundsätzlich lauscht das Programm am Parallelport ob PaperError (verbunden mit /CS) zusammen mit Select (A1) low wird, dann wird ein Byte über D1-D8 gelesen, wenn die Gerätedresse bekannt ist, dann wird /SelectPrinter(/IRQ) auf low gezogen und die restlichen 5 Bytes geholt.
Alles weitere ist auch nicht komplizierter.
Schwierig wird es wenn man mehr will als eine einfache (Megafile) Festplatte mit bekannter (fester) Größe zu simulieren. Denn da muss man sich Zwangsläufig damit auseinander setzen, wie am Atari der Festplattentreiber Festplattengrößen bestimmt und wie ACSI-SCSI Interfaces intern funktionieren. Das dürfte etwas mehr Arbeit sein und ist nicht an einem Wochenende Gemacht. :-)
ToPeG:
Ich hatte etwas Zeit und habe einen Adapter entworfen mit dem es möglich sein sollte ACSI-Geräte am Parallelport zu betreiben. (Die Idee kam mir gestern Abend noch) Aber auch hier fehlt noch sämtliche Software. Möglicherweise versucht sich jemand an eine Integration in einen Emulator (Hatari Aranym ?)
Das Fehlende "/Reset" wird erzeugt wenn /Strobe und /Autofeed gleichzeitig high sind. Einzeln steuern sie A1 und /ACK an. Das funktioniert, da A1 und /ACK Niemals gleichzeitig aktiv sein dürfen. (auch wenn es von der Atari-Hardware her möglich wäre.)
Wenn ein PC eingeschaltet wird sind /Strobe und /Autofeed per Default High, das bewirkt das /Reset solange aktiv ist bis ein Programm oder Treiber den Parallelport passend nutzt. Das sollte (denke ich) verhindern, dass irgendwelche Systemtreiber oder Programme aus versehen auf einer der Platten herum schreiben.
Arthur:
Finde es immer wieder toll was hier für Ideen umgesetzt werden. Hoffe das alles klappt wie du es dir vorstellst. Schön wäre eine Anbindung an einen der freien Emulatoren wie Hatari oder Steem. Daten hin und her kopieren zu können ist schon eine coole Sache.
ToPeG:
Ein kleiner Zwischenbericht.
Ich habe das Kabel zusammen gelötet. Und eine kleines Testprogramm geschrieben, um auf den Parallelport zugreifen zu können.
Aber wie es Aussieht funken mir die Pullup Widerstände (4.7K??) des Parallelports dazwischen. Vor allem die Datenleitungen und A1 machen da Probleme, da sie auch am Disketten Controller hängen. Eine Festplatte dazwischen sollte das Problem schon lösen. Im STE und TT (wahrscheinlich auch im Falcon) sind auf den Leitungen Treiber-ICs vorhanden, die das Problem auch beheben würden.
Nur in den STs hängt der DMA-IC und FDC und ACSI an den selben Leitungen.
Ich werde mal schauen, ob ich mit ein Paar Widerständen in den Leitungen etwas ändern kann. Aber eventuell werden dann die Signale zu schwach. Mal schauen.
Notfalls muss ich Leitungstreiber einsetzten und die über USB mit Strom versorgen.
Nebenbei Macht sich so eine Störung dadurch bemerkbar, dass Disketten Zugriffe Müll liefern. Kryptische Zeichenfolgen als Datei-/Verzeichnisnamen, nicht existente Dateien/Verzeichnisse, lange Zugriffszeiten.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln