09.03.2016, 13:55
So zur Info bevor ich es wieder vergesse ;-)
Der Fehler ist gefunden und ich kann ihn verhindern so zu den Details.
Zur Stringvariablen suche durchsucht der Debugger zuerst den Basicvariablen Speicherbereich das funktioniert auch unter OS4. Wird sie da nicht gefunden sucht er auf dem Stack und da ist das Problem die Stackadresse ist unter OS4 (Emulation) immer $00000000. Da keine Überprüfung auf ungleich Null stattfindet HIT und aus. Einfacher Fix dafür Testen ob die Stackadresse ungleich null ist und nur dann Suchen. Da mit der jetzigen Version ab der Stackadresse 32K durchsucht werden ist das auch nicht sicher da das Programm auch weniger als 32k Stack haben könnte, da brauchen wir noch eine andere Lösung wenn der Stack durchsucht werden soll bzw. muss.
Das Problem der OS4 68k Emulation ist das das Register User Stack Pointer kurz usp nicht gesetzt bzw unterstützt wird das zur Ermittelung der Stackadresse benutzt bzw. benötigt wird, man bekommt beim Auslesen immer $00000000 zurück.
PS. Positiver Nebeneffekt der Suche ich habe die Anzeige der Registerinhalte sowie die Disassembleranzeige für OS4 möglich gemacht plus noch ein paar Verbesserungen wie das die Fensterrahmen bei diesen Fenster nicht mehr überschrieben werden, Commit folgt in ein paar Tagen.
Der Fehler ist gefunden und ich kann ihn verhindern so zu den Details.
Zur Stringvariablen suche durchsucht der Debugger zuerst den Basicvariablen Speicherbereich das funktioniert auch unter OS4. Wird sie da nicht gefunden sucht er auf dem Stack und da ist das Problem die Stackadresse ist unter OS4 (Emulation) immer $00000000. Da keine Überprüfung auf ungleich Null stattfindet HIT und aus. Einfacher Fix dafür Testen ob die Stackadresse ungleich null ist und nur dann Suchen. Da mit der jetzigen Version ab der Stackadresse 32K durchsucht werden ist das auch nicht sicher da das Programm auch weniger als 32k Stack haben könnte, da brauchen wir noch eine andere Lösung wenn der Stack durchsucht werden soll bzw. muss.
Das Problem der OS4 68k Emulation ist das das Register User Stack Pointer kurz usp nicht gesetzt bzw unterstützt wird das zur Ermittelung der Stackadresse benutzt bzw. benötigt wird, man bekommt beim Auslesen immer $00000000 zurück.
PS. Positiver Nebeneffekt der Suche ich habe die Anzeige der Registerinhalte sowie die Disassembleranzeige für OS4 möglich gemacht plus noch ein paar Verbesserungen wie das die Fensterrahmen bei diesen Fenster nicht mehr überschrieben werden, Commit folgt in ein paar Tagen.