Wenn man sich die Routine "SetValidDrives" anschaut, dann wird dort CopyString verwendet um die Laufwerkstypen aus driveTypes einzulesen. Damit können auch mehr als vier Bytes eingelesen werden (eben bis zum ersten NULL-Byte). Da sollte eher CopyFString und Länge = 4 verwendet werden.
Das geoUMount bei mir unter MP3 startet und unter GEOS64-V2 nicht liegt an der bereits bemängelten Hardware-Erkennung. Unter MP3 hab ich eine RAMLink verwendet, da sind die Register bei $DFxx alle "00", wenn ich GEOS64 nur mit REU starte liegen dort andere Werte und dann bleibt die Routine SetValidDrives in der ebenfalls schon bemängelten und fehlenden Abbruch-Bedingung der Warteschleife hängen. Starte ich GEOS64V2 ohne REU aber mit RAMLink, dann startet auch geoUMount und alle Laufwerke sind als "Invalid" markiert.
Die Routine enableIO in ultimate_geosassembly.s schaltet den I/O-Bereich ein und gibt anschließend den IRQ wieder frei. Normalerweise nimmt man InitForIO, das lässt den IRQ abgeschaltet. Hat man in intBotVector eine eigene Routine installiert die ggf. auf den Speicher unter dem I/O-Bereich zugreift, dann würde das zum Absturz führen. Wenn der I/O-Bereich aktiv ist sollte der Interrupt gesperrt bleiben.
Ich hab geoUMount jetzt fast komplett den entsprechenden C-Routinen aus geoUMount selbst und aus CC65 zugeordnet. Sehr viele Routinen sind zwar eingebunden, werden aber noch nicht ausgeführt (ALPHA halt... wird sicherlich noch mit neuen Funktionen zugeordnet). Zumindest bei einer Routine aus dem CC65 ist das aber sogar von Vorteil, da ich dort fehlerhaften Code vermute. Der ist dann auch in geoUMount enthalten, wird aber zum Glück nicht ausgeführt. Auszug aus libsrc/geos-cbm/system/get_ostype.s:
Kann ja sein das ich das nur nicht verstehe, aber der BRANCH-Befehl scheint mir mehr als fragwürdig, es sei denn rasreg ist immer >127. Die Routine liegt nach $309b im Speicher wenn geoUMount gestartet wurde, wird aber nicht ausgeführt.
Interessant ist auch der "Credits" Hinweis... sieht aus wie eine Dialogbox, ist es aber nicht. Da wird nur ein Fenster mit Schatten gezeichnet, alle Texte per PutString ausgegeben und anschließend ein neues DoIcons-Menü installiert. Kein Fehler, aber verbesserungsfähig...