Allgemeines Es wurde viel Wert darauf gelegt, zu früheren Softwareversionen kompatibel zu sein. Leider war dies nicht immer möglich, da viele Module schon Funktio nen implementiert hatten, die bis jetzt "brach" lagen. Leider haben sich dort viele Fehler eingeschlichen. Wenn jetzt z.B. ein oktagon.device ein SSD_SETBLOCKSIZE Kommando absetzt, kracht es heftig mit einem Oktagon SoftSCSI 4.7. Aus diesem Grunde gilt folgendes: Wenn ein Kunde einen bsc Kontroller im System updated, MUSS er ALLE bsc Kontroller im Rechner updaten! Das gilt auch für Kontroller ohne eigenes ROM (z.B. TandemCD)!!!! Die wesentlichen Unterschiede zur Version 4.7 Mount Modul (Alle Kontroller / OktagonMount) Benutzt jetzt TD_GETGEOMETRY um festzustellen, ob ein Gerät einen RDSK Block haben kann. Wird IOERR_NOCMD zurückgegeben, wird von einer Fest platte mit 512 Byte Sektorgröße ausgegangen (Fallback für alte Software). Wird das Mount Modul vom User direkt aufgerufen (OktagonMount von CLI oder Workbench) werden die LastLun/LastID/LastTarget Flags im RDSK Block ignoriert. Dies ermöglicht einfacheres "nachmounten" (ab Mount 5.9) Login Modul (Alle Kontroller / OktagonMount) Bei Kontrollern ohne EEPROM (ALF3/bsc-ATBus) wird nun NOECHO als default verwendet. Der Test, ob OpenWorkbench() gepatcht werden muß, ist nun Anwender freundlicher (Statt das Ergebnis von WorkBenchToBack() auszuwerten, was den Anwender verwirren kann, wenn mehrere Screens offen sind, wird nun IntuitionBase->FirstScreen->NextScreen als Indikator verwendet). oktagon.device (Alle Kontroller) Bugfixes: Variable Blocksize funktioniert endlich, vorher konnte der Rechner abstürzen, wenn Blocksize ungleich 512 war. SSD_SETBLOCKSIZE Kommando wird korrekt abgesetzt. Wechselplatten, die mit fremden Prepprogrammen formatiert wurden, wer den jetzt erkannt. Diskchange wird jetzt besser erkannt. Wechselplatten/CD-Roms ohne Medium konnten nicht geöffnet werden. TD_NUMTRACKS konnte falsche Werte zurückliefern. Verbesserungen: TD_GETGEOMETRY implementiert. Startup ganz neu geschrieben. Alle Timeouts jetzt mit timer.device erzeugt. Code wesentlich optimiert. Verwendet SCSIF_AUTOSENSE nur noch, wenn wirklich benötigt (Workaround für alte SoftSCSIs) Beim öffnen einer nicht vorhanden Unit wird nun TDERR_BadUnitNum anstelle von IOERR_OPENFAIL zurückgeliefert. Dies ist ein Workaraound für einen Bug in Commodores HDToolBox. SoftSCSI_OktagonC9X (Oktagon 2008/508, ALF3 Rev.3) Bugfixes: Variable Blocksize funktioniert endlich, vorher konnte der Rechner abstürzen, wenn Blocksize ungleich 512 war. SSD_SETBLOCKSIZE Kommando wird korrekt interpretiert. Disconnect/Reconnect konnte abstürzen, wenn während eines RequestSen se Kommandos, das durch ein SCSIF_AUTOSENSE abgesetzt wurde, ein Re connect stattfand. Sehr unwahrscheinlich, aber möglich! SSD_READEEPROM und SSD_WRITEEEPROM konnten abstürzen. Rechner konnte abstürzen, wenn eine falsche Manufacturer/Produkt ID im binddrivers Icon angegeben war. Verbesserungen: Reconnect/Disconnect und Transferroutinen komplett neu. Eigener Transfercode für 68020 oder besser unter Ausnutzung des Instruction cache. Transfer Task hat nun default-Priorität 15. Wesentlich intelligenteres Warten: Viel mehr freie Rechenzeit während des Transfers auf 68020 oder besseren Prozessoren. Wesentlich verbessertes Boot-Up für langsame Platten. Intelligenter SCSI-Reset: SCSI-Reset wird nur noch abgesetzt, wenn beim Hochfahren des Rechners der SCSI-Bus "busy" ist (das Bit "SCSIRESET / NOSCSI RESET" im EEPROM wird ignoriert). EEPROM Routinen nun aus Andi's eeprom.lib. SSD_READCONFIG und SSD_WRITECONFIG eingeführt. Neue EEPROM bits: SLOWBOOT und SYNC. SSD_SCSIPREFS erkennt nun RDBF_SYNC bit. Units, die einmal ein Selection-Timeout hatten, werden gesperrt (ein SSD_WRITECONFIG oder SSD_WRITEEEPROM hebt diese Sperre auf). Dies ist ein Workaround für einen Bug im Betriebssystem. Unitstruktur wird gelöscht, wenn Opencount null ist. SoftSCSI_AT (bsc-ATBUS) Bugfixes: Rechner konnte abstürzen, wenn eine falsche Manufacturer/Produkt ID im binddrivers Icon angegeben war. Ein ungültiger RDSK Block wurde nicht auf die Platte geschrieben. (War wohl als "Feature" gedacht ????) Im Startup wurde erst die LUN selektiert und dann getestet, ob etwas am Bus hängt. Verbesserungen: Unitstruktur wird gelöscht, wenn Opencount null ist. Units, die einmal ein Selection-Timeout hatten, werden gesperrt. Dies ist ein Workaround für einen Bug im Betriebssystem. ReadCapacity versteht jetzt ein gesetztes PMI Bit im CDB. (Wichtig für Com modore HDToolBox und Elaborate Bytes EBprep) Ab Version 5.10 funktioniert das sogar. Nach viel Hängen und Würgen den code endlich dazu gebracht, mit OMA übersetzt werden zu können. Grundsätzliche Änderungen: Schickt KEIN INITIALIZE DRIVE PARAMETERS mehr! Liest NICHT mehr den RDSK Block! Verlässt sich ganz und gar auf die Werte, die IDENTIFY liefert! Das kann einigen Platten helfen, die vorher nicht gingen. Es kann aber auch bei anderen Platten zur Nichtfunktion führen. Bitte ausführlich betatesten! Bekannte Bugs: Stürzt ab mit NEC drives. SoftSCSI_C9XA (ALF3 Rev.2) Bugfixes: Variable Blocksize funktioniert endlich, vorher konnte der Rechner abstürzen, wenn Blocksize ungleich 512 war. SSD_SETBLOCKSIZE Kommando wird korrekt interpretiert. Disconnect/Reconnect konnte abstürzen, wenn während eines Requ estSense Kommandos, das durch ein SCSIF_AUTOSENSE abgesetzt wurde, ein Reconnect stattfand. Sehr unwahrscheinlich, aber möglich! SSD_READEEPROM und SSD_WRITEEEPROM konnten abstürzen. Rechner konnte abstürzen, wenn eine falsche Manufacturer/Produkt ID im binddrivers Icon angegeben war. Verbesserungen: Reconnect/Disconnect und Transferroutinen komplett neu. Eigener Transfercode für 68020 oder besser unter Ausnutzung des Instruction cache. Transfer Task hat nun default-Priorität 15. Wesentlich intelligenteres Warten: Viel mehr freie Rechenzeit während des Transfers auf 68020 oder besseren Prozessoren. Wesentlich verbessertes Boot-Up für langsame Platten. Intelligenter SCSI-Reset: SCSI-Reset wird nur noch abgesetzt, wenn beim Hochfahren des Rechners der SCSI-Bus "busy" ist. SSD_SCSIPREFS erkennt nun RDBF_SYNC bit. Units, die einmal ein Selection-Timeout hatten, werden gesperrt. Dies ist ein Workaround für einen Bug im Betriebssystem. Supportprogramme: OktagonConfig 5.x (Oktagon 2008/508, ALF3 Rev.3) : OktagonConfig wiederbelebt. Ist notwendig, um die neuen EEPROM-Bits SLOWBOOT und SYNC für Oktagon zu setzen. Neue Keywords: USE (benutzen, aber nicht speichern) SAVE (benutzen und speichern) CONFIG (zeigt jetzige Konfiguration) EEPROM (zeigt zuletzt gespeichertes) Verwendet jetzt Andi's eeprom.lib. Zahllose Bugs & Enforcer Hits erfolgreich entsorgt. Viel Bier getrunken, um Roland Schwefels code lesen zu können, ohne wahnsinnig zu werden (Spenden für die Ersatzleber bitte auf mein Konto). Al le gotos durch Funktionsaufrufe ersetzt. Code ist jetzt sogar ANSI-kompatibel! Gibt jetzt menschenwürdige Fehlermeldungen. Bekannte Probleme: Benutzt kein ReadArgs(), sondern einen eigenen Parser. (Da habt ihr noch mal Glück gehabt, liebe Kickstart 1.3 Benutzer!) Ist so kompliziert zu bedienen, daß jeder normale Mensch schreiend in die Tastatur beißt. Soll irgendwann durch ein OktagonPrefs mit Workbenchbenutzung (klick, klick!) ersetzt werden (Falls Spenden für die Ersatzleber eingehen). C9Xprefs 5.x (ALF3 Rev. 2): Benutzt kein ARP mehr, sondern ReadArgs (da habt ihr leider Pech gehabt, ihr lieben Kickstart 1.3 Benutzer). Als Nebeneffekt stürzt es jetzt auch nicht mehr mit 68040 Rechnern ab. Erlaubt setzten des SYNC und NORESELCT bits für ALF3 Kontroller. Bekannte Probleme: Die von ARP bekannte Online-Help wurde ersatzlos gestrichen. Ist immernoch mit Aztec 3.6a übersetzt, weil ich zu faul bin, den Code auf SAS-C zu konvertieren. Arbeitet nur mit SoftSCSI version 5.x. 4.x Benutzer brauchen ein ROM Update. Gibt es denn überhaupt noch ALF3 Rev. 2 Benutzer?