von HiassofT » Mo 2. Sep 2013, 15:19
Hi!
wwl hat geschrieben:Was genau ist die Standard Geschwindigkeit auf dem SIO?
Standard Geschwindigkeit ist Divisor 40. Zwischen PAL und NTSC Geräten gibt's dadurch einen kleinen Unterschied, das macht aber in der Regel nichts aus, da er sich innerhalb der erlaubten Toleranzen ist (Ausnahme ist wohl IIRC die XF551, da haben die Entwickler was verbockt - evtl auch nur bei den ersten Versionen).
Ist es richtig, daß zunächst über die Standardgeschwindigkeit kommuniziert wird?
Ja, genau.
Werden im High-Speed Fall alle Divisoren durchprobiert? Wie bestätigt das High-Speed Gerät die zutreffende Baudrate?
Der Großteil der Geräte / SIO Emulatoren verwendet das Ultra Speed Protokoll, und diese Geräte unterstützen das SIO Kommando "Get Speed Byte" ($3F). Damit kann der Atari (in Standard Geschwindigkeit) direkt abfragen mit welcher Geschwindigkeit die Highspeed Kommunikation ablaufen kann - oder feststellen, daß das Gerät kein Ultra Speed unterstützt. Durchprobieren muß der Atari dabei nichts.
Anders sieht's bei den anderen Highspeed Protokollen aus (XF551, Warp Speed, 1050 Turbo). Hier muß der Atari ausprobieren ob das Gerät das Protokoll unterstützt. Das geht am einfachsten in dem der Atari ein harmloses Kommando wie "Get Status" im jeweiligen Modus schickt und dann überprüft ob die Floppy korrekt geantwortet hat. In diesen Modi wird der Command Frame jeweils in Standard Geschwindigkeit gesendet und an einem gewissen Punkt auf Highspeed umgeschaltet (XF551 und Warp verwenden Divisor 16, Turbo Divisor 6). Das durchprobieren hält sich da also auch in Grenzen.
Für den Atari ist die Sache also recht einfach, beim ersten Zugriff wird gecheckt ob und wenn ja welche Highspeed Variante zum Einsatz kommen kann, danach können die weiteren Zugriffe mit der zuvor ermittelten Variante stattfinden. Probleme gibt's dadurch aber natürlich, wenn man im laufenden Betrieb zB eine XF551 gegen eine Speedy tauscht - sowas soll man aber eh nicht machen :)
Aufwändiger ist die Sache aber für die SIO Geräte, gerade beim Ultra Speed Protokoll (bei dem auch der Command Frame in Highspeed gesendet wird) müssen sie damit klarkommen, daß sie evtl "Blödsinn" empfangen. Das Gerät muß da tunlichst auf alle möglichen Fehler checken und auf jeden Fall stillhalten wenn irgendwas nicht passt - es könnte ja sein, daß der Atari ein anderes Gerät am Bus anspricht. Sendet ein 2. Gerät plötzlich Daten (und wenn's nur ein Command NAK ist), wird die Kommunikation gestört.
IIRC hat Walter mal geschrieben, daß die Speedy da gerne mal gepatzt hat. Ich selber hatte das Problem bisher noch nicht, bin aber drübergestolpert, daß sich die UARTs im PC zum Teil "weghängen" können, wenn sie Daten mit der "falschen" Geschwindigkeit empfangen.
Frag einfach mal google nach siospecs.pdf, dann findest Du zB das hier:
http://spiflash.org/atari/siospecs.pdfZu den Highspeed Modi findest Du darin aber nichts, da werden (nur) die Grundlagen der SIO erklärt. Ist aber trotzdem gut wenn man das PDF mal gelesen hat, damit wird vieles klarer.
Wenn Du Interesse an weiteren Infos zu Highspeed SIO hast, lies einfach mal das README.txt zu meinem Highspeed SIO Patch, das sollte alle offenen Fragen beantworten :)
http://www.horus.com/~hias/atari/#hipatchso long,
Hias