Hallo!
Ich habe es jetzt geschafft, dass eines meiner Uraltprogramme nun auch dann läuft, wenn es mit dem neuen SDK kompiliert wird.
Codeänderungen/Anmerkungen:
- Erstellt hatte ich das Programm mit dem alten DOS-SDK für den Zoomer. Daher hießen die Dateien EDDIE.GOC, EDDIE.GP und LOCAL.MK. Das verursacht arge Probleme mit dem neuen SDK -> Umbenannt in Eddie.goc, Eddie.gp und local.mk (Ordner heißt "Eddie"). --> Das neue SDK erzeugt trotzdem noch ein heilloses Durcheinander von Schreibweisen. Die erzeugten GEO- und SYM-Dateien werden z.B. komplett klein geschrieben, während die anderen erzeugten Dateinamen (EC, EOBJ, OBJ, ...) alle mit einem großen E anfangen.
- Dem alten SDK war es egal, wie die Groß-/Kleinschreibung der Ressourcen war. Beim neuen SDK muss das exakt im GOC-File so heißen wie im GP. --> Korrigiert
- Das Programm arbeitet "natürlich" mit Zufallszahlen und daher mit Floats, die im neuen SDK noch Probleme bereiten. -> Durch einen eigenen "Pseudozufallscode" ersetzt.
- Das Programm nutzte einen Trick, um auf dem Zoomer im GeoManager zweizeilige Dateinamen zu erzeugen (\r statt eines Leerzeichens im Namen). Das bereitete jetzt Probleme (Punkte statt \r im Fenstertitel, ...), was aber vermutlich nicht am SDK, sondern an der ISUI als "specific UI" liegt). --> Name gekürzt.
- Der DosBox MB6 bereitet Probleme, wenn man ihn als Target benutzt, da das Geos permanent ausgebremst wird. --> Eine "normale DosBox 0.74" parallel installiert und anstelle des MB6 in den Suchpfad gesetzt.
- Im neuen SDK waren mehrere "Platform-Files" entweder viel zu kurz, oder gar nicht erst vorhanden. --> Pull-Request in Git erstellt, Änderungen sollten jetzt im neuen SDK enthalten sein.
- Ich weiß nicht, ob mein Programm "schon immer" nicht korrekt lief, oder ob sich der Watcom etwas "zickiger" verhält. Früher habe ich z.B. einfach ein "word x = ...; byte y = x;" gemacht. Das verursachte nun Probleme mit dem HEAP! --> überall einen "explicit cast" eingebaut und Sicherheitsvorkehrungen à la "word x = ...; byte y = (byte) (x % 256);" getroffen. Und wo ich schon dabei war, habe ich den Code gleich drastisch verschlankt.
- Ich hatte in der local.mk ein "NO_EC = 1". Früher hat es gereicht, das in "NO_EC = 0" zu ändern, um die EC-Variante zu erzeugen. Das klappt jetzt nicht mehr. --> Zeile muss auskommentiert werden, wenn man die EC-Variante erzeugen will.
- Swat findet manchmal die SYM-Dateien nicht, obwohl der vorgeschlagene Pfad stimmt?! --> Pfad kann man händisch eingeben und normal weiterarbeiten. --> Ich muss hier mal vernünftige "Steps to reproduce" herausfinden und einen Fehler auf Github erstellen.
- Der "pmake depend"-Schritt beim "mkmf" liefert immer noch Fehlermeldungen bzgl. angeblich fehlender Header-Dateien. --> Ist nur nerbig, funktioniert aber trotzdem alles. --> Fehler auf Github erstellt.
Gruß
Jörg