Hardware > Emulatoren

AtariX => MagicOnLinux

<< < (35/37) > >>

AndreasKromke:
Ich habe tagelang nach dem Gelbfehler im Vierfarb-Interleaved-Modus gesucht, der nur mit NVDI auftrat, und schließlich habe ich als Alternativstrategie nicht mehr im NVDI weitergesucht (fünf Megabyte disassembly...), sondern den schon als fehlerhaft erkannten MVDI-Treiber repariert und schließlich erfolgreich gebaut (verdammter pasm...). Der liegt jetzt erstmal im Programm-Repository, aber sollte noch in das Repository der Kernel-Quellen rein. Ursache ist ein typischer Copy-Paste-Fehler, d.h. die falschen Zeilen wurden aus Unachtsamkeit aus dem 16-Farb-Treiber unverändert übernommen.  :)

Thorsten Otto:
Nice. Hab die Änderungen auch bei mir übernommen. War hoffentlich der letzte Copy/Paste error dieser Art ;)


--- Zitat ---verdammter pasm
Do NOT use PASM, as it corrupts "label(pc)" addressing

--- Ende Zitat ---

Was genau meinst du damit? Die Treiber wurden alle mit PASM übersetzt, hab da bisher noch nichts festgestellt. Welchen Assembler hast du denn dann genommen? Denke nicht, daß die Syntax ohne Änderungen von anderen Assemblern geschluckt wird.

BTW, bei dir in den Original-Sourcen ist immer noch der Aufruf von MM_init: https://gitlab.com/AndreasK/Atari-Mac-MagiC-Sources/-/blob/master/MagiC/KERNEL/VDI/SRC/MAGICVDI.2/MXVDIKNL.S?ref_type=heads#L1432-L1433

Dieser wandelt den alten PixMap-Pointer in die neue VDI_SETUP_DATA-Struktur um. Das funktioniert aber eigentlich nicht mit den MAC-Treibern, weil die immer noch einen PixMap-Pointer erwarten: https://gitlab.com/AndreasK/magiclinux/-/blob/main/kernel/VDI/DRIVERS/MAC/SRC/MFM4IP.S?ref_type=heads#L257-259

AndreasKromke:

--- Zitat von: Thorsten Otto am So 14.12.2025, 04:27:43 ---
--- Ende Zitat ---

Der PASM hat den 4IP-Treiber kaputt-assembliert, d.h. der erzeugte Code war kaputt. Ich hatte ihn im Modus "create DRI object file" aufgerufen, wie ich das immer mache. Mein Disassembler hat dann gezeigt, wo das Teil Mist gebaut hatte. Ich habe dann schließlich die Behnesche prj-Datei verwendet und es mit PureC gemacht, mit der GUI.

Ich habe dann den älteren MASM ausprobiert, und der hat an den Stelle, an denen der PASM Mist gebaut hatte, eine Fehlermeldung ausgespuckt und sich geweigert, das Programm zu assemblieren. Gut so!

Ursache ist wohl, daß die Behne Brothers PC-relativ von TEXT nach BSS referenzieren. Das geht natürlich eigentlich nicht, und weil ich das im Kernel nicht mache, tritt der Fehler nicht auf. Schwein gehabt. Der MASM weigert sich. Gut. Der PASM kann das vermutlich, aber nicht im DRI-Modus, d.h. er glaubt, daß er kann, kann es aber nicht und schreibt an alle solche Stellen eine Null als 16-Bit-Offset. Dumm gelaufen bzw. maximal gemein und fies.

DIe Kernel-Quellen muß ich eh mal abgleichen; ich habe mir einen "issue" geschrieben, als Erinnerung.

PS: Die Quellen für PASM wären nett...

PS/2: Heute das ganze Fsfirst/next/Dopen/read/closedir-Zeugs aufgeräumt. Hoffentlich nicht verschlimmbessert, habe es noch nicht ausgiebig getestet.

PS/3: Jemand eine Idee, warum Signum 3 und 4 wild mit der Maus herumhüpfen und unbedienbar sind? Ich sehe da auch keine Hardware-Zugriffe, und die Grafik scheint OK zu sein. Alt-Cursor geht ja auch nicht, weil die Maus immer zurückspringt. Ich schau mal, ob ich die SDL-Funktion zum Mauszeigerverschieben aufrufen kann.

Thorsten Otto:

--- Zitat von: AndreasKromke am So 14.12.2025, 12:44:56 ---Ich habe dann schließlich die Behnesche prj-Datei verwendet und es mit PureC gemacht, mit der GUI.

--- Ende Zitat ---

Das dürfte eigentlich keinen Unterschied machen. PASM ist nicht in die IDE integriert und wird auch dort extern geladen. Und bei den automatischen Builds (in aranym) wird der auch von einem Mupfel-Skript aufgerufen. Einziger Unterschied ist vermutlich, daß er dann kein DRI-Objekt erzeugt (wozu auch, macht eh nur Probleme mit den 8-Zeichen langen Namen).


--- Zitat ---d.h. er glaubt, daß er kann, kann es aber nicht und schreibt an alle solche Stellen eine Null als 16-Bit-Offset. Dumm gelaufen bzw. maximal gemein und fies.

--- Ende Zitat ---

Dürfte eigentlich nur passieren, wenn das label nicht bekannt ist. In dem Fall müsste es eigentlich vom Linker angemeckert werden. Weisst du noch die Stelle die kaputt geht? Dann könnte ich das mal in dem Treiber aus meinem Archiv kontrollieren.


--- Zitat ---Die Quellen für PASM wären nett...

--- Ende Zitat ---

Hust. Hatte ich vor langer Zeit mal reverse-engineered. War noch nicht ganz perfekt (es gibt da eine ziemlich umfangreiche Funktion von ca 1400 Sourcelines in C, die noch nicht exakt den gleichen Code erzeugt wie das original). Aber insgesamt ist der Code soweit, daß ich damit eine neue Version kompilieren kann. Bei Interesse kann ich dir mal ne Einladung schicken.

PS.: PASM hat noch einen anderen unangenehmen Bug, den ich noch nicht gefunden habe. Eigentlich kommt er auch mit Dateien zurecht, die nur LF als Zeilenende haben. Manchmal scheint es aber vorzukommen, daß er dann den gleichen Befehl zweimal ausspuckt (bisher meist bei "nop" der Fall gewesen, wo das normalerweise nicht weiter tragisch ist, aber ansonsten natürlich Murks).

AndreasKromke:

--- Zitat von: Thorsten Otto am So 14.12.2025, 14:05:03 ---Einziger Unterschied ist vermutlich, daß er dann kein DRI-Objekt erzeugt (wozu auch, macht eh nur Probleme mit den 8-Zeichen langen Namen).

--- Ende Zitat ---
Genau. Aber ich verwende den aln (ich hatte damals wichtige Gründe dafür, und der war immer zuverlässig), und der will DRI-Objektdateien.


--- Zitat ---(..)Weisst du noch die Stelle die kaputt geht? Dann könnte ich das mal in dem Treiber aus meinem Archiv kontrollieren.

--- Ende Zitat ---
Einfach pasm -v -b MFM4IP.SYS. Dann z.B. mit disass68k.sh -ac3 kontrollieren oder alternativ mas statt pasm.

Das mit den pasm-Quellen ist sehr interessant! Aber mit dem Debuggen von pasm würde ich mich verzetteln. Es wäre nur schön, wenn man diesen Fehler in irgendeinem ERRATUM dokumentieren könnte. Übrigens hatte ich noch offiziell eine Version (so etwas habe ich immer freundlicherweise von ASH bekommen) etwa vom Januar 1993 (?), und aus ominöser Quelle habe ich jüngst ein Archiv gefunden mit einem pasm vom Juni desselben Jahres. Das ist hoffentlich das neueste.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln