Status einer SD/DD Diskette ermitteln


Status einer SD/DD Diskette ermitteln

von Flash » Mo 10. Sep 2012, 23:47
Eine Menge an den Infos konnte ich aus dem Atari Profibuch entnehmen, vielen Dank dafür.
Ein Problem habe ich jedoch. Durch welche Abfrage kann man z.b. über den CIO oder direkter Diskettenzugriff $E453 den Status ermitteln, der mir zeigt, dass die Diskette mit 128Bytes oder 256 Bytes pro Sektor formatiert wurde.

Flash

Re: Status einer SD/DD Diskette ermitteln

von tfhh » Di 11. Sep 2012, 09:00
Moin,

sende den Status ("S") Befehl an die Floppy. Dieser funktioniert mit allen Modellen und sendet Dir zurück, ob es sich um eine Single-Density (720 Sektoren) oder Medium-Density (1040 Sektoren á 128 Bytes) Diskette handelt. Du kannst mit dem Status auch abfragen, ob überhaupt eine Diskette eingelegt und die Auswertung damit gültig ist.

Im 2. Schritt sendest Du das "N" Kommando. Gibt es einen Fehler, so kennt die Floppy diesen Befehl nicht und es handelt sich um eine 810/1050 ohne Speeder etc., also auch ohne Double-Density. Demzufolge kann die eingelegte Disk nur Single-Density á 128 Bytes/Sektor sein.

Wurde der "N" Befehl (Read Percom-Block) akzeptiert, erhälst Du 12 Bytes zurück, anhand derer Du erkennen kannst, ob es eine Single-Density (720 Sektoren á 128 Bytes) oder Double-Density Disk ist. Bei Double Density sind die ersten 3 Sektoren auch immer 128 Bytes groß, die restlichen 717 Sektoren sind 256 Bytes groß.

Die Infos dazu findest Du alle im neuen Profibuc (ABBUC Version).

Gruß, Jürgen

Re: Status einer SD/DD Diskette ermitteln

von Flash » Di 11. Sep 2012, 21:45
Danke Jürgen für den Tipp. Leider habe ich in der ABBUC Ausgabe des Buches nichts über die Percom Abfrage gefunden, im Netz aber den Hinweis gefunden. NETZ
Was ich bislang herausgefunden habe:
Sektor $168 - das Byte 0 gibt eine "2" bei 90k, eine "3" bei 128k und 180k an. Beim 16MB Atr-File steht dort eine "23".

Flash

Re: Status einer SD/DD Diskette ermitteln

von Mathy » Di 11. Sep 2012, 23:19
Hallo Flash

Vor zehn Jahren gab's als Jahrergabe das Buch "Das Compy Shop ATARI Technik Handbuch". Da ist eine Liste drin die die 12 Bytes des Percom Blocks erklärt. Ist zwar nicht ganz vollständig (nach heutigen Stand der Technik), aber als Anfang nicht schlecht.

Tschüß

Mathy

Re: Status einer SD/DD Diskette ermitteln

von tfhh » Mi 12. Sep 2012, 07:34
Moin,

Flash hat geschrieben:Danke Jürgen für den Tipp. Leider habe ich in der ABBUC Ausgabe des Buches nichts über die Percom Abfrage gefunden, im Netz aber den Hinweis gefunden. NETZ

Doch, da sind alle Informationen enthalten. Siehe Abschnitt 2.25 "Diskettenstation" und die Infos auf Seite 209-211. Dort ist der Aufbau des Konfigurations-Blocks ("PERCOM") beschrieben:

Code: Alles auswählen
Byte Bedeutung
0 Zahl der Spuren (normalerweise 40)
1 Schrittrate (meist 0=6ms, 1=12ms, 2=2ms, 3=3ms)
2,3 Zahl der Sektoren pro Spur
4 Zahl der Schreib-/Leseköpfe -1
5 Aufzeichnungsverfahren (0=FM, 4=MFM)
6,7 Zahl der Bytes pro Sektor
8 Laufwerk aktiv ? (in der Regel $FF)
9 Übertragungsrate
10,11 reserviert

Theoretisch könnte man nur den Percom-Block zur Density-Ermittelung verwenden (sofern vorhanden). Das Byte an Offset 5 ist laut Spezifikation nur bei Single-Density auf 0 (also Aufzeichnungsverfahren "FM"), bei Medium-Density und auch Double-Density wird MFM verwendet. Die Tücke liegt jedoch im Detail, einige ROM-Versionen der Happy 1050 wie auch der US Doubler setzen dieses Bytes bei Medium Density nicht korrekt! Daher empfahl ich auch den vorgeschlagenen Weg... erst Status-Bytes vom Laufwerk lesen, dann schauen ob Percom-Block lesbar, wenn ja und Status-Byte sagt Single-Density, die Sektorlänge prüfen. Ist diese 256 Bytes, dann ist es Double-Density. Nur diese Methode funktioniert einwandfrei mit allen Speedern und Upgrades.

Flash hat geschrieben:Was ich bislang herausgefunden habe:
Sektor $168 - das Byte 0 gibt eine "2" bei 90k, eine "3" bei 128k und 180k an. Beim 16MB Atr-File steht dort eine "23".

Das ist extrem unzuverlässig, da diese Angaben a.) nur bei einem DOS 2.x kompatiblen Dateisystem gelten und b.) auch nicht zwingend bei allen DOS-Versionen identisch sein müssen.

Gruß, Jürgen

Re: Status einer SD/DD Diskette ermitteln

von Flash » Mi 12. Sep 2012, 16:24
Danke Jürgen und Mathy für die Hilfe, damit komme ich weiter.

Flash

Re: Status einer SD/DD Diskette ermitteln

von kbr » Mi 12. Sep 2012, 21:02
tfhh hat geschrieben:Theoretisch könnte man nur den Percom-Block zur Density-Ermittelung verwenden (sofern vorhanden). Das Byte an Offset 5 ist laut Spezifikation nur bei Single-Density auf 0 (also Aufzeichnungsverfahren "FM"), bei Medium-Density und auch Double-Density wird MFM verwendet.


Das höre ich aber zum ersten Mal. Ich dachte, eine 1050 kann nur FM?

Dann müsste es ja theoretisch möglich sein, eine Medium-Diskette auch am PC lesen zu können.

EDIT: Tatsächlich, bei Medium Density wird MFM verwendet. Das weckt ja ganz neue Möglichkeiten :)

Re: Status einer SD/DD Diskette ermitteln

von tfhh » Do 13. Sep 2012, 08:17
Moin,

kbr hat geschrieben:
tfhh hat geschrieben:Theoretisch könnte man nur den Percom-Block zur Density-Ermittelung verwenden (sofern vorhanden). Das Byte an Offset 5 ist laut Spezifikation nur bei Single-Density auf 0 (also Aufzeichnungsverfahren "FM"), bei Medium-Density und auch Double-Density wird MFM verwendet.


Das höre ich aber zum ersten Mal. Ich dachte, eine 1050 kann nur FM?

Ohne MFM wäre es technisch garnicht möglich, 26 Sektoren pro Track zu schreiben. Entscheidend dabei ist nicht an sich das Aufzeichnungsverfahren, sondern die höhere Datenrate. Bei FM wird mit 125 KBit/s geschrieben & gelesen, MFM nutzt das Doppelte = 250 KBit/s (ergo "HD" dann 500 KBit/s). Die Kompatiblität zum PC hängt in erster Linie von dieser Datenrate ab, das Aufzeichnungsverfahren können alle üblichen PC FDC sowieso.

Tools zum Lesen von XL-Disks (Double Density natürlich nur) findest Du hier. Für Medium Density müßte mal wohl ganz eigene PC FDC Routinen programmieren, da die Standardroutinen nur 256 und 512 Byte große Sektoren verkraften.

Was nur unverständlich ist, warum die Atari Ingenieure damals dieses krude Format überhaupt "erfunden" haben. Echtes Double-Density, wie es mit den Speedern aufkam, wäre viel einfacher umzusetzen gewesen. Auch das Anpassen des DOS 2.0 auf DD-Fähigkeiten wäre garantiert einfacher gewesen als DOS 2.5 mit dem dem 2. VTOC Sektor und den ganzen anderen Gedöns. Und das Argument "Abwärtskompatibilität zu DOS 2.0" ist meines Erachtens Unfug. Wer eine 1050er hatte, nutzte natürlich Medium Density, Disketten waren im Verhältnis teuer und da hat man jedes Bytes ausgenutzt. DOS 2.5 war auch schon damals leicht zu bekommen. Und die 810er kann eh keine Medium Density Disks lesen... das muß irgendein Politikum seinerzeit gewesen sein, aber die Antwort darauf wird man wohl nie erfahren.

Gruß, Jürgen

Re: Status einer SD/DD Diskette ermitteln

von HiassofT » Do 13. Sep 2012, 08:23
kbr hat geschrieben:Dann müsste es ja theoretisch möglich sein, eine Medium-Diskette auch am PC lesen zu können.

EDIT: Tatsächlich, bei Medium Density wird MFM verwendet. Das weckt ja ganz neue Möglichkeiten :)

Haken an der Sache: die meisten Floppy-Controller im PC kommen mit MFM und 128 Bytes pro Sektor nicht klar. Manche können das Format schreiben, manche andere auch lesen, manche garnichts davon.

Dann ist da noch das leidige Index-Loch, bzw genauer gesagt der Umstand, daß die 1050 es nicht verwendet. Die PC Floppy-Controller melden einen Fehler, wenn mitten im Sektor das Index-Loch erkannt wird. Deshalb lassen sich Disks die am Atari formatiert de facto nicht am PC lesen.

Vor rund 10 Jahren habe ich mich mit Medium/Enhanced Density etwas genauer beschäftigt, in der WriteAtr Anleitung sind dazu in Abschnitt 9 ein paar Infos zu finden - und WriteAtr 0.92b unterstützt auch Medium/Enhanced Density, falls es der PC/Controller/... auch kann :-)

http://www.horus.com/~hias/atari/#writeatr

so long,

Hias

Re: Status einer SD/DD Diskette ermitteln

von Mathy » Do 13. Sep 2012, 21:04
Hallo Jürgen

tfhh hat geschrieben:Wer eine 1050er hatte, nutzte natürlich Medium Density, Disketten waren im Verhältnis teuer und da hat man jedes Bytes ausgenutzt.

Warum meckern viele rum das man bei der XF die Floppies nicht umdrehen kann, obwohl eine in "quad density" formatierte Diskette mehr Daten speichern kann (und das Handgelenk entlastet) als eine Diskette wobei jeder Seite einzeln beschrieben ist?

Tschüß

Mathy

Re: Status einer SD/DD Diskette ermitteln

von tfhh » Fr 14. Sep 2012, 09:51
Moin,

Mathy hat geschrieben:
tfhh hat geschrieben:Wer eine 1050er hatte, nutzte natürlich Medium Density, Disketten waren im Verhältnis teuer und da hat man jedes Bytes ausgenutzt.

Warum meckern viele rum das man bei der XF die Floppies nicht umdrehen kann, obwohl eine in "quad density" formatierte Diskette mehr Daten speichern kann (und das Handgelenk entlastet) als eine Diskette wobei jeder Seite einzeln beschrieben ist?

Ähm, was hat dieser Beitrag von Dir mit meiner Aussage zu tun? Ich sehe da irgendwie keinen Zusammenhang. Zum einen war von der XF nicht die Rede, zum anderen hatten (also jedenfalls war dies in meinem Dunstkreis so) die wenigsten eine XF551. Warum auch... die 1050 war zuverlässig, und dank Speedy oder Happy auch flott und gut zu verwenden. Das XF "Quad" Format war und ist zu nichts kompatibel. Weder zum PC, noch zu vorherigen XL Floppy-Lösungen. Wer hat´s also wirklich "überwiegend" genutzt? Richtig, kaum jemand. Und die, die eine XF hatten (von denen ich weiß), kauften sich schnell eine (gebrauchte) 1050er dazu, um eben problemlos Disketten anderer User kopieren zu können...

Dennoch sehe ich den Sinn in Bezug auf mein Posting nicht...

Gruß, Jürgen

Re: Status einer SD/DD Diskette ermitteln

von kbr » Sa 15. Sep 2012, 17:25
Danke Jürgen und Hias für die ausführlichen Erläuterungen, jetzt versteh ich es auch.

Ich meine mal irgendwo gelesen zu haben, daß dieses Enhanced hauptsächlich aus Kostengründen entwickelt wurde, weil die 1050 für echtes DD einfach zu wenig RAM hatte, und mehr RAM die Kosten wohl deutlich überstiegen hätte. Da war es wohl billiger, mehr Aufwand in die Entwicklung zu stecken...

Aber das FM-Verfahren scheint deutlich robuster zu sein als MFM. Zumindest konnte ich häufig Disketten, die sich mit Enhanced nicht mehr formatieren liesen, mit Single noch formatieren. Daher hab ich mir mal angewöhnt, wichtige Daten nur auf Single zu speichern.
Und was der Atari gar nicht mehr gepackt hat, ging dann meist noch am C64. Das liegt wohl an deren geschickterer Sektoraufteilung, die ja auf den inneren, kürzeren Spuren weniger Sektoren benutzt.

Klaus

Re: Status einer SD/DD Diskette ermitteln

von tfhh » Mo 17. Sep 2012, 08:53
Moin Klaus,

kbr hat geschrieben:Ich meine mal irgendwo gelesen zu haben, daß dieses Enhanced hauptsächlich aus Kostengründen entwickelt wurde, weil die 1050 für echtes DD einfach zu wenig RAM hatte, und mehr RAM die Kosten wohl deutlich überstiegen hätte. Da war es wohl billiger, mehr Aufwand in die Entwicklung zu stecken...

Hmmm. :? Das wäre natürlich eine klassische Entscheidung á la Tramiel gewesen, aber der war noch nicht im Boot, als die 1050 entwickelt wurde.

Stimmt natürlich, die 1050er hat nur 256 Bytes RAM insgesamt (128 Bytes im 6532 und weitere 128 Bytes im SRAM 6810), aber es ist wirklich fraglich, ob ein 256 Byte SRAM soviel mehr gekostet hätte, als daß es den ganzen Software-Aufwand inkl. neuer Doku etc. wettgemacht hätte. Nunja. Alles rein hypothetisch 8)

kbr hat geschrieben:Aber das FM-Verfahren scheint deutlich robuster zu sein als MFM. Zumindest konnte ich häufig Disketten, die sich mit Enhanced nicht mehr formatieren liesen, mit Single noch formatieren. Daher hab ich mir mal angewöhnt, wichtige Daten nur auf Single zu speichern.

Jop, das ist es natürlich. Hauptsächlich aber nicht wegen der anderen Kodierung, sondern wegen der halbierten Datenrate. Salopp gesagt ist jedes Bit bei FM Codierung (also Single Density beim Atari) doppelt so breit wie ein Bit bei MFM Codierung (Enhanced oder Double Density). Durch die im FDC eingebauten Korrekturfunktionen ist natürlich bei "breiteren" Bits die Störanfälligkeit geringer und die Chance, daß nicht 100% saubere Magnetflußwechsel dennoch richtig gelesen werden, deutlich höher.

kbr hat geschrieben:Und was der Atari gar nicht mehr gepackt hat, ging dann meist noch am C64. Das liegt wohl an deren geschickterer Sektoraufteilung, die ja auf den inneren, kürzeren Spuren weniger Sektoren benutzt.

Diese (intelligentere) Technik hat wiederum kein Einfluß auf die "Datensicherheit", sondern nur auf die Kapazität. Beim XL (bzw. auch bei jedem PC Diskettenformat moderner Art) könnte man auch die äußeren Bereiche mit deutlich mehr als 18 bzw. 26 Sektoren beschreiben, einige Kopierschutzmethoden schreiben bis zu 22 normale 128 Bytes Sektoren auf Track 0-5 (danach gehen nur 21, soweit ich weiß). Hat man aber nicht gemacht, warum auch immer (ich vermute, man hat sich sehr an das damals im "Profibereich" durchaus übliche CP/M angelehnt).

Was die 1541 gegenüber einer 1050 "stabiler" in punkto nicht astreine Disketten macht, ist das Aufzeichungsverfahren GCR. Es hat Vorteile gegenüber FM/MFM in punkto Datensicherheit. Nicht ohne Grund wurden die alten Macs mit GCR ausgestattet. Auch die ersten PCs hatten GCR Floppysysteme an Board, so z.B. der Viktor Sirius 1. Bei dem "PC" schrieb das 5.25 Diskettenlaufwerk 77 Tracks statt 80, nutzte GCR und änderte je nach Trackposition auch die Umdrehungszahl der Floppy. Durch dieses Verfahren konnte man knapp 700 KByte auf eine normale SD Diskette quetschen, und das sehr sicher! Zumal es schon ein uriges Geräusch war, wenn man lange Dateien kopiert hat... ich meine, es gab vier Speedzonen, weiß es aber nicht mehr genau.

Hach, damals... :D

Gruß, Jürgen

Re: Status einer SD/DD Diskette ermitteln

von Mathy » Mi 19. Sep 2012, 19:30
Hallo Jürgen

Ich hab zwar mehrere 1050, hab' die aber nur dann benutzt, wenn irgend einen Kopierschutz die Nutzung einer XF nicht zuließ. Wieso sollte ich auch eine 1050 benutzen, auf einer XF passen ja viel mehr Daten drauf. Zum Datenaustausch hatte ich ein Modem.

Tschüß

Mathy