Hello, Guest the thread was called692 times and contains 8 replays

last post from Unseen at the

Laufwerkstyp per Software abfragen

  • Hi,
    die Laufwerke (1541,1571 etc.) senden ja direkt nach dem Einschalten beim auslesen des Fehlerkanals eine Kennung welches DOS verbaut ist bzw. um welches Laufwerk es sich handelt.
    Diese Information wird ja aber mit der ersten Operation durch den aktuellen Drivestatus überschrieben.
    Meine Frage: kann ich dies ohne Aus- und einschalten des Drives erneut erfahren?
    Es gibt ja U9 als Kommando welches einen Reset der Floppy und ein initialisieren der Diskette durchführen sollte, aber auch hier wurden mir hinterher der aktuelle Status ausgegeben, nicht mehr die Laufwerksinfo.
    Wie machen das Testprogramme die einem mitteilen welche Floppy angeschlossen ist?
    Gibt es dazu einen DOS-Befehl? Benötige ich ein Maschinenprogramm auf der Floppy?

  • Der DOS-String taugt eigentlich nur, um ihn dem Benutzer anzuzeigen - die verschiedenen Speeder (JiffyDOS, SpeedDOS, PrologicDOS, DolphinDOS, ...) machen eine sichere Erkennung so gut wie unmöglich. Und selbst wenn man alle heute bekannten Versionsstrings kennen und testen würde, wäre das Programm beim nächsten MMC/SD/whateverthefuturemaybring-Massenspeicher wieder aufgeschmissen.
    In vielen Fällen interessiert sich die Software aber gar nicht wirklich für den Laufwerkstyp, sondern vielmehr für das Spur/Sektor-Layout: Manipuliert man z.B. die BAM oder macht direkte Blockzugriffe, so will man zwischen 1541/1571/1581/CMD-Native unterscheiden - d. h. wenn man in einer 1541-Partition auf einer CMD-HD arbeitet, oder in einem .d64 auf einem SD2IEC, dann will man den 1541-Algorithmus benutzen - und sollte sich von der Einschaltmeldung des Laufwerks nicht verwirren lassen. In diesem Fall empfehle ich die Formatkennung, d.h. das erste Byte aus einem mit Sekundäradresse 2 (oder höher) geöffneten Directory.
    Siehe dazu auch den MacBootMake-Thread ab hier.

  • Einerseits ja - andererseits wird eine 1541-Disk mit einem anderen Formatbyte als 'A' als schreibgeschützt behandelt, und dann kann die fragliche Software vermutlich eh nichts damit anfangen... :whistling:


    EDIT: Und bevor die Frage aufkommt: Der einzige sichere Weg, eine 1571-Disk von einer 1541-Disk zu unterscheiden, besteht darin, einen Leseversuch von einem Sektor der Rückseite zu machen.

  • Einerseits ja - andererseits wird eine 1541-Disk mit einem anderen Formatbyte als 'A' als schreibgeschützt behandelt, und dann kann die fragliche Software vermutlich eh nichts damit anfangen...


    die frage ist welches formatbyte die floppy an der stelle liefert.... das echte bei offset $02, oder das aus der directory bei offset $a5. ersteres ist das für den "schreibschutz" relevante, letzteres das was oftmals manipuliert ist.

  • UJ machte das wenn ich mich recht erinnere.... davon ab kann der DOS string nur einen wagen anhaltspunkt geben. gängige abfragen checken zusätzlich noch das laufwerks ROM und raten sich dann das passende zusammen.


    Bewährt haben sich hier die letzten 8 oder 4 Bytes des ROMs. Die sind auch bei den ganzen gängigen DOS-Varianten gleich. Damit kann man schonmal zwischen 1541/1541C/1570/1571, 1581, CMD-Laufwerk und "Sonstiges" unterscheiden. Bei den CMD-Laufwerken wird leider nur eine Copyright-Nachricht anstelle des ROMs augegeben, sobald man im ROM-Bereich per M-R liest, so dass man dort auf diese Weise keine Unterscheidung treffen kann.


    Vom Laufwerks-Reset (UI) kann ich nur abraten. Einige Laufwerke (1541...) blockieren den Bus, sobald man während des Resets auf den IEC-Bus zugreift. Deswegen müsste man 1-2 Sekunden warten, bevor man nach dem Reset auf den Bus zugreift, was störend sein kann. Besonders wenn man mehrere Laufwerke am Bus hat.

  • die frage ist welches formatbyte die floppy an der stelle liefert.... das echte bei offset $02, oder das aus der directory bei offset $a5. ersteres ist das für den "schreibschutz" relevante, letzteres das was oftmals manipuliert ist.


    Wenn man wie weiter oben angegeben das Directory mit einer Sekundäradresse != 0 öffnet dann bekommt man das echte von Offset $02 - das Laufwerk macht dabei nichts anderes, als den ersten Sektor der Directoryspur (bei einer 1541: Track 18 Sektor 0) als Datei zu öffnen.