SIO2PC und ATR-Format-Probleme


SIO2PC und ATR-Format-Probleme

von Dietrich » Mi 9. Apr 2003, 21:16
Hi,

wiedermal ein SIO2PC-Problem:

Heute habe ich mal im Atari800Win+ 3.0 eine DD-ATR-Image (zuvor mit SIO2PC.COM erzeugt) beschrieben und wollte sie vom Atari aus per SIO2PC.COM booten. Zu meinem Erstaunen hängte sich dabei der ATARI auf. Also habe ich das ATR-File mal untersucht und festgestellt, dass SIO2PC.COM erwartet, dass für die ersten 3 Sektoren nur 128 Byte im ATR-File geschrieben werden, während Atari800Win+ hinter jedem der ersten 3 Sektoren jeweils eine Lücke von 128 Byte lässt ?!? Habe dann mal in der SIO2PC-Doku nachgeschaut und festgestellt, dass dort das ATR-Format leider nur sehr ungenau beschrieben ist.

Um die Verwirrung komplett zu machen: Von SIO2PC.COM erzeugte DD-ATR-Files haben eine Länge von 184336 Byte, also genau 180KB+16 Byte. Somit sind für jeden der 720 Sektoren 256 Byte vorgesehen, was eigentlich darauf hindeutet, dass auch SIO2PC.COM hinter jedem der ersten 3 Sektoren eine 128 Byte große Lücke lässt ?!?!?!?

Kann mir jemand dieses wilde ATR-Durcheinander erklären ?
Wie ist denn nun das \"offizielle\" ATR-Format, gibt\'s hier etwa keinen Standard ?
Wo finde ich eine genaue (!) Doku des ATR-Formats ?

Gruß Dietrich (der jetzt erstmal SIO2PC beiseite legt)

SIO2PC und ATR-Format-Probleme

von Bernhard » Mi 9. Apr 2003, 23:00
Also wenn ich mich richtig erinnere setzt sio2pc die ersten 3 (single) Sektoren einer DD-Disk direkt hintereinander und lässt dann 3 x 128 Byte =384 Byte frei. Das Format unterscheidet sich also nur in der Benutzung der ersten drei Sektoren. Eine Dokumentation zum ATR-Format kenne ich auch nur von Nick Kennedy (also sio2pc). Die Schöpfer vom Atari800win haben sich wohl dann am vor Jahren sehr aktuellen XFORMER orientiert. Bei dem war das glaube ich auch so wie bei Atari800win.

Dies schrieb der sich auch schon lange darüber ärgernde Bernhard

SIO2PC und ATR-Format-Probleme

von pps » Do 10. Apr 2003, 10:39
Das mit den DD-Disks ist mir noch nie aufgefallen. Gut, daß das mal erwähnt ist.

Mir fällt dabei ein, daß die meisten ATR-Utilities nur SD & MD unterstützen. Nun weiß ich wohl auch warum...

Eines verstehe ich aber trotzdem nicht ganz: warum nutzt Ihr nicht die Formate, die man später mit jedem Diskdrive am echten ATARI nutzen kann SD oder MD(na gut, fast jedem...)? Ich habe bei mir momentan das Problem, daß meine XF den Geist aufgegeben hat, meine 1050 mit Speeder keine Disketten erkennt und ich somit nur eine normale 1050 von ´nem Kumpel am Laufen habe. Ergo habe ich Pech, daß ich meine Disketten, die ich im QUAD mal erstellt hatte überhaupt nicht mehr lesen kann und die DD-Disks erst, wenn meine 1050 mit Speedy wieder laufen sollte...
Ich ärgere mich jetzt immerwieder, daß ich damals so oft auf QUAD gesetzt hatte, da ich nun an viele Sourcen nicht mehr ran komme :(

bye, Ralf

SIO2PC und ATR-Format-Probleme

von HiassofT » Do 10. Apr 2003, 13:24
vorredner hat geschrieben:Um die Verwirrung komplett zu machen: Von SIO2PC.COM erzeugte DD-ATR-Files haben eine Länge von 184336 Byte, also genau 180KB+16 Byte. Somit sind für jeden der 720 Sektoren 256 Byte vorgesehen, was eigentlich darauf hindeutet, dass auch SIO2PC.COM hinter jedem der ersten 3 Sektoren eine 128 Byte große Lücke lässt ?!?!?!?


Das ist ein Bug in SIO2PC:
Wenn Du ein "184k" Image erzeugst, werden am Ende zusätzliche 384 Bytes abgespeichert (deshalb 184336 statt 183952 Bytes).
Wenn Du jedoch beim Image-Erzeugen "custom" anwählst und dann 720 Sektoren eingbist, oder wenn Du unter "more" das 180k Format auswählst, erhältst Du ein korrektes Image.

vorredner hat geschrieben:Kann mir jemand dieses wilde ATR-Durcheinander erklären ?
Wie ist denn nun das "offizielle" ATR-Format, gibt\'s hier etwa keinen Standard ?
Wo finde ich eine genaue (!) Doku des ATR-Formats ?


Die Doku von SIO2PC ist schon korrekt. Hier mal eine Kurzzusammenfassung:

Die ersten 3 Sektoren werden immer mit 128 Bytes abgespeichert. Direkt danach folgen die restlichen Sektoren (mit 128 oder 256 Bytes, je nach Dichte).

Die Größenangabe im ATR-Header enthält die Image-Größe in Bytes geteilt durch 16. Bei einem 180k DD Image sollte dort also 183936/16=11496 (bzw 44 im Hi-Byte und 232 im Lo-Byte) stehen.

Einige Programme (wie zB Atari800) nehmen nun an, daß es sich bei einem 184336 Bytes großen Image um das Format "alle Sektoren mit 256 Bytes" handelt - was aber bei einem mit SIO2PC erzeugten Image dieser Größe falsch ist (es enthält ja nur versehentlich am Ende ein paar zusätzliche Bytes). Dadurch stimmt dann die ganze Sektor-Zuordnung nicht mehr und der Emulator crasht: Sektor 1 passt noch, statt Sektor 2 werden aber die ersten 128 Bytes aus Sektor 3 aus dem Image genommen etc.

Ein weiteres Problem ist, daß im Netz etliche ATR Images mit kaputtem Header "rumschwirren". Ich weiss nicht mehr genau, aus welchem Archiv ich die hatte, jedenfalls gab es da eine ganze Reihe von Images von Spielen, die auf die belegte Größe gekürzt wurden (also zB 12k), nur enthielt der Header die exakt doppelte Größenangabe...

Zur Behbung des 184k-SIO2PC-Problemes hab\' ich mir mal ein kleines C-Programm geschrieben und damit alle selbsterstellten (illegalen) Images auf meiner Platte gefixt. Wenn Du möchtest, kann ich es Dir zumailen.

so long,

Hias

SIO2PC und ATR-Format-Probleme

von Dietrich » Do 10. Apr 2003, 21:20
vorredner hat geschrieben:Das ist ein Bug in SIO2PC:
Wenn Du ein "184k" Image erzeugst, werden am Ende zusätzliche 384 Bytes abgespeichert (deshalb 184336 statt 183952 Bytes).
Wenn Du jedoch beim Image-Erzeugen "custom" anwählst und dann 720 Sektoren eingbist, oder wenn Du unter "more" das 180k Format auswählst, erhältst Du ein korrektes Image.
Hallo Matthias,
großes Dankeschön für die ausführliche Antwort,

habe es gleich ausprobiert - und tatsächlich - mit "Custom" legt SIO2PC.COM ein korrektes Image an, das vom Atari800Win+ auch korrekt beschrieben wird, und sich auch vom Atari aus per SIO2PC-Kabel booten lässt.:):)

Lustigerweise zeigt SIO2PC.COM das Image nun als 179K-Image an - und vorher waren es 184K, hier sollte man SIO2PC.COM mal das Zählen beibringen...;)
Und wenn man in SIO2PC.COM ein "normales" DD-Image (184K) anlegt, dann ist nicht nur die Länge des ATR-File falsch, sondern auch noch der ATR-Header, da steht nämlich als Länge im 3. und 4. Byte des ATR-Files: 0 und 45 (also genau 180 KB), statt wie es richtig heißen müsste: 232 und 44 (also genau 180 KB minus 3*128 Byte). Deshalb hatte der Emulator bei mir auch gar keine Chance, das ATR-Image korrekt zu interpretieren.

Eins ist immerhin positiv: Der Atar800Win+ akzeptiert BEIDE Typen von DD-ATR-Files, solche mit 16+180*1024-3*128 Byte Länge (SIO2PC-konform, nenn ich mal Typ 1), als auch solche mit 16+180*1024 Byte Länge (nenn ich mal Typ 2) und beschreibt/liest beide korrekt.:)

Man kann sogar beide Typen von DD-ATR-Files auseinanderhalten, OHNE auf die Filelänge zu schauen (die kann ja auch kleiner oder größer als 180KB sein):
Ist das 3.Byte des ATR-Files durch 16 teilbar, handelt es sich um ein Typ1-File, lässt es beim Teilen durch 16 den Rest 8, handelt es sich um ein Typ2-File - und ansonsten ist das ATR-File sowieso Schrott. Vielleicht/Hoffentlich benutzt der Atari800Win+ diese Methode, um die beiden Typen auseinanderzuhalten, müsste man mal ausprobieren ...

Alles klar, ich hab mir jetzt eine ATR-Datei als Vorlage angelegt, das ich zum Erstellen von DD-Disks benutze. Würde aber trotzdem dein Programm gerne haben, ich schick\' dir noch später eine Email... Wäre aber auch nicht schlecht, es auf deiner Webseite zu veröffentlichen ...

Gruß Dietrich (der sich fragt, wer wohl als nächster auf das SIO2PC-DD-Problem reinfällt...)

SIO2PC und ATR-Format-Probleme

von Dietrich » Do 10. Apr 2003, 21:28
vorredner hat geschrieben:Eines verstehe ich aber trotzdem nicht ganz: warum nutzt Ihr nicht die Formate, die man später mit jedem Diskdrive am echten ATARI nutzen kann SD oder MD(na gut, fast jedem...)? ... Ich ärgere mich jetzt immerwieder, daß ich damals so oft auf QUAD gesetzt hatte, da ich nun an viele Sourcen nicht mehr ran komme
Hi Ralf,

ich finde, dass DD durchaus ein vernünftiges Format ist, da sowohl die 1050 (mit irgendeiner Erweiterung) als auch die XF551 dieses Format unterstützt. Und auf DD lässt sich auch schneller lesen und schreiben als auf SD/MD (ein 256 Byte-Sektor kostet weniger Zeit als zwei 128 Byte-Sektoren).:)

QD ist allerdings eine Sackgasse/Notlösung - da gebe ich dir Recht - weil NUR die XF dieses Format unterstützt und man genauso gut die Disk umdrehen kann, wenn man auf einer Disk 360KB speichern will (wenn man eine Indexlochumgehung hat). Und es gibt für DD einen ATARI-DOS-Standard, was man für QD nicht behaupten kann (alle DOS 2.x kompatiblen DOSse haben für QD ein eigenes Format erfunden ...)

Gruß Dietrich (der alle seine Progs auf DD-Disks speichert)

SIO2PC und ATR-Format-Probleme

von pps » Fr 11. Apr 2003, 01:00
vorredner hat geschrieben:ich finde, dass DD durchaus ein vernünftiges Format ist, da sowohl die 1050 (mit irgendeiner Erweiterung)

naja, das ist ja auch ein Problem... Zumindest im Moment für mich :(
vorredner hat geschrieben:...wenn man auf einer Disk 360KB speichern will (wenn man eine Indexlochumgehung hat).

Das geht bei jeder XF auch ohne Umgehung!!! Man nehme einfach einen Ausstecher, der ca. 5 mm große Löcher macht und "kopiert" die Löcher einfach auch links vom Mittelloch :cool:

Bis der Helmut Engfer damals auf die Idee mit der Umgehung kam, habe ich immer gestanzt ;) Damals hatte ich nämlich nur meine XF.

bye, Ralf

SIO2PC und ATR-Format-Probleme

von CharlieChaplin » Fr 11. Apr 2003, 18:44
Hallo,
das Problem mit den Laengenunterscheiden bei DD-Images hatte ich in einem langen Laberartikel im letzten ABBUC Magazin erwaehnt. Die Loesung dazu lautet ACVT von Jindrich Kubek.

Das Problem liegt wie bereits erwaehnt in den Bootsektoren. der echte atari erlaubt naemlich (im OS) immer nur 128 Bytes fuer die Bootsektoren. Eine Disk wird aber immer komplett in einem Format erstellt (wenn man da nicht irgendwie trickst), d.h. alle Sektoren sind 128 Bytes oder alle Sektoren sind 256 Bytes lang. Damit dann 180k und groessere Disks dennoch bootbar sind \"gaukelt\" die Floppy dem Atari vor, die Bottsektoren waeren nur 128 Bytes lang. D.h. die Floppy schickt immer nur 128 Bytes (und keinerlei Leerbytes, soweit ich weiss) von Sektor 1,2,3 an den Computer. SIO2PC akzeptiert sowohl DD-Images mit 184tausend Bytes, als auch mit 183tausend Bytes.

Wenn ich mich nicht irre, dann akzeptiert die allerneueste Version von Atari 800 das auch endlich. Wenn nicht, wie gesagt mit ACVT oder anderswie das Problem loesen...
gruss, Andreas.

SIO2PC und ATR-Format-Probleme

von Dietrich » Fr 11. Apr 2003, 22:16
vorredner hat geschrieben:Hallo,
das Problem mit den Laengenunterscheiden bei DD-Images hatte ich in einem langen Laberartikel im letzten ABBUC Magazin erwaehnt.
Tja, nur leider stimmt es nicht so ganz, was im ABBUC-Mag steht: Der Atari800Win+ 3.0 (also nicht gerade die neueste Version) liest/beschreibt nämlich BEIDE ATR-DD-Formate korrekt (hab ich explizit ausprobiert). Außerdem stand da nix von dem oben erwähnten SIO2PC.COM-Bug, so dass mir der Artikel leider nicht weitergeholfen hat. :(
vorredner hat geschrieben:SIO2PC akzeptiert sowohl DD-Images mit 184tausend Bytes, als auch mit 183tausend Bytes.
Sorry, aber das ist falsch, ich habe es wie oben geschrieben explizit ausprobiert: Ein 184000-Image kommt nicht richtig beim Atari an: Wenn ich von einem 184000-Image auf dem Atari den Sektor 3 (via SIO2PC-Kabel und SIO2PC.COM) lese, kriege ich den Inhalt von Sektor 2 (genauso wie Matthias es oben auch gepostet hat). Folglich akzeptiert SIO2PC.COM für den Datentransfer zum/vom Atari NUR das 183000-Format !! Oder genauer ausgedrückt: SIO2PC.COM behandelt 184000-Images beim Datentransfer zum/vom ATARI so als ob es 183000-Images wären. Und wie gesagt, als ich ein korrekt beschriebenes 184000-Image (d.h. mit einer Lücke von 128 Byte nach jedem der ersten 3 Sektoren) vom Atari aus per SIO2PC.COM booten wollte, hat sich der Atari aufgehängt, während es beim 183000-Image geklappt hat.

Hmm, ACVT guck ich mir mal bei Gelegenheit an, ich brauch es eigentlich nicht, da ich lediglich DD-Disks vom Atari zum PC schicke und da muss ich ja nix konvertieren, nur neue Images erstellen. Und das mach ich einfach per "copy" auf dem PC.

Gruß Dietrich (der jetzt bei den ATR-Formaten und SIO2PC voll durchblickt :) )

SIO2PC und ATR-Format-Probleme

von HiassofT » Fr 11. Apr 2003, 22:51
vorredner hat geschrieben:Die Loesung dazu lautet ACVT von Jindrich Kubek.


Sieht interessant aus!

Ich habe mein C Programm jetzt unter http://www.horus.com/~hias/atari/fixatr.c online gestellt. Das Programm ist mehr oder weniger ein Quick-Hack, der einfach die Größe des Images (aus dem Header) überprüft und falls notwendig ein neues Image erzeugt. Programmiert und getestet habe ich das unter Linux, es müsste aber zB mit djgpp oder cygwin auch unter DOS/Windows laufen.

PS: fixatr.c ist nicht von meiner Homepage aus verlinkt, benutzt also bitte die angegebene URL.

so long,

Hias

von dl7ukk » Do 8. Jun 2006, 23:07
Hallo

Gruß Dietrich (der sich fragt, wer wohl als nächster auf das SIO2PC-DD-Problem reinfällt...)


Das Thema ist heute immernoch aktuell und durch eure Beiträge aus dem Jahr 2003 wusste ich was zu tun ist.

Ich hatte jetzt gerade das Problem. Glücklicher Weise fiel mir ein, dass ich schon mal was darüber gelesen hatte.

... gesucht... und gefunden.

Solche Beiträge bitte gut!! aufheben.

Dank an die Autoren.

Gruß Andreas/ dl7ukk

von CharlieChaplin » Fr 9. Jun 2006, 20:47
Hallo,
ich benutze eigentlich ausschliesslich SIO2PC.COM und zwar Version 4.19i. Das lag / liegt daran, dass ich bis Februar 2006 nur eine DOSe, also 486er mit MS DOS 6.22 und Win 3.11 besaß. Und darauf lief Atari 800 Win oder Atari 800 Win Plus natürlich nicht (noch nicht mal die DOS Version von Atari 800 lief darauf, 66Mhz waren wohl zu wenig).

Habe inzwischen so ziemlich alle ATR DD-Images mit ACVT auf 183xxx Bytes umgestellt. Allerdings muss ich bei ACVT immer erst in XFD und dann zurück in ATR konvertieren, um von 184er in 183er Länge zu kommen. Lieber wäre mir natürlich ein Programm, dass das (oder die) DD ATR Image(s) einfach nur entsprechend patcht bzw. kürzt... Das XFormer Problem hatte dagegen ein Freund von mir, hat sich aber inzwischen erledigt... Gruss, Andreas Magenheimer.

P.S.: Seit Februar 2006 habe ich nun einen etwas neueren Rechner (AMD 2600+) mit Win XP drauf, der DOS Rechner wird aber immer noch mit SIO2PC für den Atari benutzt...