3-4 Laufwerken auf Atari - natürlich, es kann steuern alle 4
@Lynxman, ,@Johannes, danke!
@Petari - ich hätte von dir etwas mehr Kreativität erwartet... Du bist eigentlich ein kreativer Kopf, viele geniale Sachen auf deiner Webseite, großartige Sachen die du da entwickelt und veröffentlichst, in den Foren etwas griesgrämig, aber du kannst was. Nur hier vermisse ich deine Phantasie. Aber ok, ich helfe dir - und jedem anderen - mal auf die Sprünge, wie man das machen könnte.Ob es in allen Belangen genau durchdacht ist und so funktioniert, oder ob man noch was verbessern muss, wird man sehen.
Man nehme einen 2 zu 4 Binär-Dekoder. Ein 74LS139 müsste das sein. Dabei darf nicht vergessen werden, dass Drive-Select Low-Aktiv ist. Dessen 2 Eingänge (ich nenne die mal abkürzend YDS) verbindet man mit DS0 und DS1 vom Yamaha-Chip . Am Ausgang des Binärdekoders hat man 4 DS-Signale - FDD-DS - für Floppys. Man muss dabei beachten, diese Signale sind Low-Aktiv.
Logiktabelle (Drive-Select-Signale sind Low-Aktiv!)
YDS -> FDD-DS
0 - 1 .. 0 - 1 - 2 - 3
-------------------------------------------------------------
0 - 0 -> 1 - 1 - 0 - 1 (Laufewk Y:)
0 - 1 -> 1 - 1 - 0 - 1 (Kompatibel zu Normalmodus, Laufwewrk B:)
1 - 0 -> 1 - 0 - 1 - 1 (Komparibel zu Normalmodus Laufwerk A:)
1 - 1 -> 1 - 1 - 1 - 0 (Laufwerk Z:)
Damit habe ich vier lowaktive Drive-Select-Signale.
Problem: Eins davon ist IMMER selektiert. wenn eigentlich gerade kein Laufwerk angesteuert wird, normalerweise Y:. (ich nenne diese Laufwerke jetzt erstmal Y: und Z:, siehe später...)
Lösung: Man verknüpft DS3 und DS4-Signale jeweils mit MOTOR ON. FDD-DS2 und FDD-DS3 werden nur ans Laufwerk durchgeschaltet, wenn Motor-ON aktiv wird.
Der geneigte Leser wird jetzt sagen, moment, TOS kann das nicht. Richtig. Nur A: und B: werden so angesteuert, und für die ändert sich auch nichts. YDS auf 00 und 11 ergibt keinen Sinn, diese Signalkombination wird TOS nicht nutzen können. Richtig.
Aber der gute Pera und einige andere hier sind ja nicht nur begnadete Löter, sondern auch Programmierer.
Lösung: Es braucht ein AUTO-Ordner-Programm, welches Y: und Z: verwaltet. Die beiden Laufwerke reagieren nur auf YDS=00 und YDS=11 wenn auch /Motor-On aktiv ist. Normalerweise ist Motor-On in TOS niemals aktiv, wenn YDS=00 bzw. =11. Den Rest des Ansteuerungscodes dürfte aus dem TOS-Code zu kopieren sein. Man denke dabei auch an die Diskwechsel-Erkennung. Man denke dabei ggf auch an die Ansteuerung von HD-Laufwerken. Analog zu TOS kann auch eine Erkennung implementiert werden, um zu erkennen ob überhaupt ein 3. bzw. 4. LW vorhanden ist, in dem das angesteuerte Laufwerk auf Spur 0 gefahren wird und geschaut wird, ob der Spur-0-Sensoer nach spätestens 84 Tracks nach Außen fahren auf Low geht.
Vorschlag um das AUTO-Ordner-Programm über seinen Dateinamen zu konfigurieren:
4DRIVExy.PRG
x-> Laufwerksbuchstabe für Laufwerk an DS3, "_"=Laufwerk nicht da, "-" nimm den ersten frei verfügbaren Buchstaben
y-> Laufwerksbuchstabe für Laufwerk an DS4, "_"=Laufwerk nicht da, "-" nimm den ersten frei verfügbaren Buchstaben
Falls der jeweilige Laufwerksbuchstabe schon vergeben ist, z.B. durch Plattentreiber, dann ersten frei verfügbaren Buchstaben nehmen.
Beispiele:
4DRIVEYZ.PRG -> Lauferke auf Y: und Z:
4DRIVEZ_.PRG -> Nur ein Laufwerk auf DS3 auf Z:
4DRIVE_H.PRG -> Nur ein Laufwerk auf DS4 auf H:
4DRIVECC.PRG -> Floppys sortieren sich automatisch auf D: und E: wenn (nur) eine Platte C: da ist.
4DRIVE--.PRG -> Gleiches Verhalten wie 4DRIVECC.PRG, es werden die ersten verfügbaren Laufwerksbuchstaben hinter B: benutzt.
4DRIVEC-.PRG -> dito
usw.
Das ändert natürlich nichts an der Unterstützung für irgendwelche Diskmons wie DISKAUX usw. oder Diskettenkopierprogramme, die werden die beiden Zusatzlaufwerke nicht unterstützen. Aber unter TOS wären sie mit den Treiber immerhin nutzbar.
Nachfolgend der Schaltplan der Drive-Select-Generierung. Negative Logik ist nicht so mein Ding (wenn ich es eben mal schnell aus dem Kopf machen soll und nur ein PAINT.EXE zur Verfügung habe), ich hoffe ich habe die Inverter-Gatter richtig platziert.
Anmerkung: Wenn jemand die Idee toll findet und es umsetzt, möchte ich dass sowohl auf der Platine in der Bedruckung als auch in der Treibermeldung vorkommt, das die Idee von mir stammt. Ansonsten habt ihr freie Hand. Umsetzen, oder nicht.