Highspeed SIO Patch V1.0fuer MyIDE OS und XL/XE OS(c) 2006 by ABBUC und HiasSoft,Matthias ReichlDieser Patch erweitert das OS desAtari XL/XE um eine Highspeed SIORoutine fuer so ziemlich alleFloppies und Floppy-Emulatoren:- Ultra Speed (Speedy, Happy,   APE/SIO2PC/AtariSIO, ...)- Turbo 1050- XF551 2xSIO- Warp Speed (Happy 810)Das besondere an diesem Patch ist,dass es speziell fuer den Einsatzmit dem MyIDE OS entwickelt wurde.Alle bisher existierenden HighspeedSIO Patches (zB ape_warp, HappyXLetc) haben Probleme damit, entwederlegen sie das MyIDE komplett lahmoder Highspeed funktioniert nicht inallen Faellen oder sie sind nichtreset-fest.Dieser Patch funktioniert mit demoriginal XL/XE OS, mit demMyIDE OS 3.1, 4.x und 3.xF (also derFlashcart Version). Hinweis: Der Patch ist zur Zeitleider noch nicht kompatibel mitTurboDOS (mit DOS 2.0, DOS 2.5 undMyDOS 4.5x u.a. funkt. er aber).Das Programm HIPATCH.COM installiertden Highspeed SIO Patch. Dabei wirdzuerst ueberprueft, ob das OSkompatibel ist. Falls noetig wirddas OS vom ROM ins RAM kopiert und(wenn noetig) wird ein Reset-Handlerinstalliert.Aus Platzgruenden verwendet derPatch den Bereich $CC00-$CFFF indem sich sonst der internationaleZeichensatz befindet. Der Reset-Handler wird in der Page 1 von$0100-$0108 installiert und verwendetCASINI ($2/$3).Wird HIPATCH.COM ein zweites Malgeladen, wird die Geschwindigkeitaller Floppies zurueckgesetzt.Das ist nur dann noetig, wenn manim laufenden Betrieb zB eine Speedydurch eine XF551 ersetzt, was manaber ohnehin nie machen sollte.Speziell fuer MyIDE-User die MyDOSverwenden empfielt sich der Einsatzdes MyDOS Batchfile Enhancements.HIPATCH.COM kann dann automatischueber die AUTOEXEC.BAT geladenwerden, ggf. mit einem kleinen BFEMenue so dass es auch abschaltbarist. Man kann aber auch HIPATCH.COMin AUTORUN.ARx umbenennen oder es beiBedarf manuell laden.Fuer Programme, die das RAM unter demOS ROM benoetigen (zB SpartaDos,Turbo Basic XL) gibt es eine zweiteVariante:HIPATCHR.COM aendert das OS ROM so,dass es nachher in ein EPROM gebranntwerden kann. Die neue SIO Routinesteht weiterhin im Bereich $CC00 bis$CFFF, alle Variablen werden aberim Bereich $0100-$010C gespeichert.Ausserdem werden, falls noetig, diePruefsummen des OS-ROMs korrigiert.Nach dem Laden von HIPATCHR.COMkann mit dem Programm DUMPOS.COMein Image des aktuellen OS aufDisk geschrieben werden. Dabei wirdman nach einem Filenamen gefragt,diese Datei (ein 16k grosseseins-zu-eins Abbild des OS, ohneCOM-Header) kann nun mit einemEPROM Brenner direkt in ein 16kEPROM programmiert werden.DUMPOS.COM kann man uebrigens auchdazu verwenden, das aktuelle ROM OSoder ein selber gepatchtes OS im RAMauf Disk zu speichern. Im letzterenFall muss man aber selber dafuerSorge tragen, dass die ROM Check=summen stimmen, ansonsten landet mannach dem Einschalten im Selftest.Im Herbst 2006 (nach dem ABBUC SW-Wettbewerb) wird auf meiner Hphttp://www.horus.com/%7Ehias/atari/zusaetzlich ein Programm fuer PCs(Linux und Windows) downloadbar sein,mit dem direkt am PC ein OS-ROM Imagegepatcht werden kann (in erster Liniefuer alle MyIDE OS Benutzer, um dasMyIDE 4.x OS direkt am PC mit derHighspeed SIO Funktion zu erweitern).In der Download-Version ist dann auchder komplette Source Code aller(Atari- und PC-) Programme enthalten.Fuer alle Technik-Freaks, die wissenwollen wie der Patch genaufunktioniert, gibt's hier noch einpaar Hintergrund-Informationen:Der Patch benoetigt insgesamt 13Bytes an RAM (bei HIPATCH.COM$CC00-$CC0C, bei HIPATCHR.COM$0100-$010C). Das erste Byte wird alstemporaerer Speicher fuer dieaktuelle Geschwindigkeit bei jedemZugriff verwendet. Darauf folgen 8Bytes, die die Geschwindigkeit derLaufwerke D1: bis D8: enthalten. 0bedeutet, dass die Geschwindigkeitnoch nicht ermittelt wurde. Werte von1 bis 63 (in der Praxis 8, 9, 10 oder40) bedeuten Standard oder UltraSpeed SIO und werden direkt alsTeiler in das Pokey-Registergeschrieben. 64 bedeutet XF551 Modus,65 Happy Warp Speed und 128 Turbo1050.Beim ersten Zugriff auf eine Floppy(die Tabelle enthaelt den Wert 0)wird automatisch die Geschwindigkeitder Floppy ermittelt. Zuerst wirdversucht per Kommando $3F dasSpeed-Byte der Floppy zu lesen (UltraSpeed SIO). Danach wird versucht, imTurbo 1050 Modus, im XF551 Modus undim Happy Warp Speed Modus ein "GetStatus" Kommando ($53) auszufuehren.Wenn dies alles nicht klappt, wirddie Geschwindigkeit der Floppy aufStandard SIO (Speed Byte 40) gesetzt.Die meisten anderen Highspeed SIOPatches klinken sich direkt in SIOV($E459) ein. Das Problem dabei istdann allerdings, dass entweder MyIDElahmgelegt wird (wenn der Patch alleDiskzugriffe abfaengt) oder derHighspeed SIO Zugriff auf Laufwerke,die durch MyIDE Partitionen verdecktwurden, nicht klappen. Auch diesePatches stellen beim ersten Zugriffauf ein Laufwerk die Geschwindigkeitfest. Da MyIDE aber keine der beiFloppies ueblichen Highspeed-Funktionen unterstuetzt, wird ebenangenommen, dass es sich um eine"langsame" Floppy handelt.Deaktiviert man nun MyIDE (durchSHIFT-CONTROL-D) um auf die zuvor"verdeckten" Floppies zuzugreifen,so geschieht dies in (langsamer)Standard Geschwindigkeit.Dieser Patch umgeht die Problemedadurch, dass er sich nicht in SIOVeinklinkt sondern in den Teil desSIO-Codes, der direkt die "richtigen"SIO-Floppies anspricht. Dieser Codewird nur dann im MyIDE OS verwendet,wenn ein Zugriff auf eine SIO-Floppystattfindet, nicht aber wenn eineMyIDE Partition angesprochen wird.Im XL/XE und MyIDE OS liegt dieseRoutine bei $E971. Dieser Patchueberprueft die ersten 4 Bytes abder Adresse um festzustellen, ob dasOS kompatibel ist.Stimmen die Bytes nicht mit denOriginalwerten ueberein, bricht derPatch die Installation ab und gibt"incompatible OS" aus. Somit isteinigermassen sichergestellt, dassnicht versehentlich ein alternativesOS "zerschossen" wird.Der Reset-Handler ($0100-$0108 beiHIPATCH.COM bzw $010D-$0115 beiHIPATCHR.COM) wird nur danninstalliert, wenn CASINI noch nichtbenutzt wird. Das MyIDE FlashcartOS installiert einen eigenen Reset-Handler in CASINI, der dafuer sorgt,dass nach einem Reset automatischwieder das OS im RAM aktiviert wird.DUMPOS.COM ist so einfach undkompatibel wie nur moeglichgeschrieben. Einzig beim Speicherndes Selftest-ROMs wird das OS-ROMkurz eingeschaltet (bei deaktiviertemOS-ROM kann der Selftest nichteingeblendet werden). BeimAbspeichern von $C000-$CFFF und$D800-$FFFF wird der Wert in $D301nicht veraendert. Damit ist sowohldas Speichern des aktuellen OS ROMsmoeglich als auch das Speichern desOS im RAM inklusive Selftest aus dem ROM OS und es wird immer das geradeaktuell laufende OS gespeichert.