Autor Thema: AtariX => MagicOnLinux  (Gelesen 5859 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline AndreasKromke

  • Benutzer
  • Beiträge: 51
Re: AtariX => MagicOnLinux
« Antwort #160 am: Sa 06.12.2025, 19:48:15 »
Hab' jetzt von von Thorsten Otto alles übernommen, was mit Netzwerk zu tun hat. Ich hoffe, ich habe die richtige Version erwischt. Testen kann ich es leider nicht.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.442
Re: AtariX => MagicOnLinux
« Antwort #161 am: So 07.12.2025, 10:42:05 »
Danke. Leider haben sich durch meinen Code eine paar Probleme für macOS ergeben. Sollten mit https://github.com/th-otto/MagicOnLinux/commit/bfc8df76f86944d77d150e0f2c327b61e287a7ab behoben sein. Vermutlich funktioniert das TunTap-Gedöns unter macOS aber sowieso nicht, in Aranym gab es das zwar auch mal für alte Darwin-Versionen, aber mittlerweile wird dort BPF verwendet, was aber noch nicht portiert ist. Ausserdem würde das auch ein suid-executable (bpf_helper) benötigen.

Ausserdem fehlt für macOS noch ein `include <time.h>` in conversion.h (ist nicht in oben gelinktem commit, weil ich das bei mir schon vorher irgendwo eingefügt hatte).

PS.: falls solche detallierte Diskussionen hier stören, gerne auch per email

Offline AndreasKromke

  • Benutzer
  • Beiträge: 51
Re: AtariX => MagicOnLinux
« Antwort #162 am: Di 09.12.2025, 16:56:38 »
Hab' jetzt ein Nutzerkonto bei "atari-forum.com". Meine email-Adresse ist nicht mehr auf der blacklist.

Offline czietz

  • Benutzer
  • Beiträge: 3.935
Re: AtariX => MagicOnLinux
« Antwort #163 am: Di 09.12.2025, 17:36:41 »
Hab' jetzt ein Nutzerkonto bei "atari-forum.com". Meine email-Adresse ist nicht mehr auf der blacklist.

Sehr schön. Ich wollte auch gerade kommentieren, dass ich heute vom kontaktierten Admin dort eine Antwort bekommen hatte, wonach web.de und GMX nun nicht mehr pauschal ge-blacklist-et seien.

Offline AndreasKromke

  • Benutzer
  • Beiträge: 51
Re: AtariX => MagicOnLinux
« Antwort #164 am: Di 09.12.2025, 20:26:38 »
(..)
Sehr schön. Ich wollte auch gerade kommentieren, dass ich heute vom kontaktierten Admin dort eine Antwort bekommen hatte, wonach web.de und GMX nun nicht mehr pauschal ge-blacklist-et seien.
Es hat sich doch gelohnt, hartnäckig zu bleiben. Ich habe übrigens meinen Nutzernamen jetzt mit dem englischen Forum harmonisiert, damit man mich wiedererkennt und auch ich nicht durcheinanderkomme. Und dann habe ich mir noch einen abgebrochen, weil ich mich "vorstellen" sollte. Na gut, kann man ja machen. Ist ja kein Forum mit Millionen von Mitgliedern.
« Letzte Änderung: Di 09.12.2025, 20:28:32 von AndreasKromke »

Offline AndreasKromke

  • Benutzer
  • Beiträge: 51
Re: AtariX => MagicOnLinux
« Antwort #165 am: Fr 12.12.2025, 15:33:07 »
Bin da gerade auf ein Problem gestoßen, dessen Ursache etwa im Jahr 2005 entstanden ist. Damals habe ich für MagicMacX zwei anscheinend ungültige 68k-Opcodes für die Kommunikation mit dem PPC-Host verwendet. Jetzt wollte ich meinem Disassembler beibringen, die korrekt zu behandeln, ohne aus dem Tritt zu geraten, d.h. den nächsten Opcode zu verschlucken. Und - voilá - mein Disassembler hatte recht, und der von mir verwendete 68k-Emulator Musashi hatte unrecht. Die Opcodes waren scheinbar ungültig. Nämlich doch nicht. Und nun?

Die neue Musashi-Emulator-Version, die ich früher oder später verwende möchte (kann wohl auch Fließkomma) erfordert nicht nur große Umbauten, sondern dekodiert die Befehle cmp2 und chk2 anscheinend auch korrekt. Das sind selten verwendete Befehle im 68020-Befehlssatz.

Wenn ich jetzt alles umbaue auf andere Opcodes, welche Programme laufen dann nicht mehr? Thorstens Netzwerktreiber nutzt den Opcode 0x00c0. Noch jemand? Oder ist das alles? Ich könnte mir andere Opcodes suchen, wenn es noch welche gibt, oder man könnte dahinter immer ein "nop" schreiben. Dann wäre sichergestellt, daß der chk2-Befehl ungültig ist.

Bitgefusel für Insider:

0x00c0 0000 decodiert zu cmp2.b d0,d0
0x00c0 4e71 decodiert zu DC.W $c0; nop
« Letzte Änderung: Fr 12.12.2025, 15:33:46 von AndreasKromke »

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.442
Re: AtariX => MagicOnLinux
« Antwort #166 am: Fr 12.12.2025, 16:51:59 »
Bitgefusel für Insider:

0x00c0 0000 decodiert zu cmp2.b d0,d0
0x00c0 4e71 decodiert zu DC.W $c0; nop

Mit welchem Disassembler? $00c0 is kein gültiger opcode, weder für 68000 noch für 68020+, von daher sehe ich da eigentlich kein Problem (data-register direkt, wie oben ausgegeben, ist keine gültige Addressierungs-Art für cmp2) Nur für Coldfire ist das ein gültiger opcode (bitrev.l d0), aber das kann man hier wohl vernachlässigen ;) (Die von den NatFeats verwendeten Opcodes wären für ColdFire ebenfalls gültig).

Zitat
die korrekt zu behandeln, ohne aus dem Tritt zu geraten, d.h. den nächsten Opcode zu verschlucken.

Warum verschlucken? Nach dem Opcode kommt nix mehr was zum Interface gehört, Parameter werden in Registern übergeben??


Zitat
Thorstens Netzwerktreiber nutzt den Opcode 0x00c0.

MVDI und  dein HostXFS.s nutzen den ebenfalls.


Zitat
Die neue Musashi-Emulator-Version, die ich früher oder später verwende möchte
In https://github.com/th-otto/AtariX/tree/master/src/AtariX-MT/AtariX hatte ich das  schon umgestellt auf 3.4 (soviel ich weiss die letzte Version). Die Umstellung war, wenn ich mich recht erinnere, nicht allzu dramatisch. Fließkomma-Befehle konnte die aber auch noch nicht.

Fliesskomma korrekt zu emulieren ist sowieso so eine Sache. Problem ist daß bei den meisten Compilern double nur 64bit ist, womit sich die 68k-Fließkomma-Werte nicht korrekt darstellen lassen. Und long-double ist nicht überall verfügbar. Selbst wenn, gibt es da kleine aber feine Unterschiede in der externen Darstellung (nicht nur endian-Probleme, 68k speichert die ohne implizites integer-Bit und hat dadurch 1 bit mehr für die Mantisse als z.B. x86).

Edit: oh, sehe gerade, unter https://github.com/kstenerud/Musashi gibt es eine deutlich neuere Version.
« Letzte Änderung: Fr 12.12.2025, 17:11:15 von Thorsten Otto »

Offline AndreasKromke

  • Benutzer
  • Beiträge: 51
Re: AtariX => MagicOnLinux
« Antwort #167 am: Gestern um 10:47:23 »
$00c0 is kein gültiger opcode, weder für 68000 noch für 68020+, von daher sehe ich da eigentlich kein Problem (data-register direkt, wie oben ausgegeben, ist keine gültige Addressierungs-Art für cmp2)

Danke! Ich hatte mich dumm und dusselig gesucht nach einer Liste der 68k-Befehle und ihrer Codierung. Ich habe ausschließlich "68000_68010_68020_Primer.pdf" gefunden. Das Dokument ist sehr unübersichtlich, und Deine Information fehlt dort. Kennst ein besseres Dokument im pdf-Format?

PS: Hier ist es hübsch: https://oldwww.nvg.ntnu.no/amiga/MC680x0_Sections/chk2.HTML. Dort steht auch, welche Adressierungsarten erlaubt sind. Und tatsächlich, da ist einiges verboten.

PS/2: Disassembler ist korrigiert, und tatsächlich ergeben sich einige Unterschiede, anhand derer ich sehen kann, daß die Korrektur erfolgreich war.
« Letzte Änderung: Gestern um 11:19:27 von AndreasKromke »

Offline czietz

  • Benutzer
  • Beiträge: 3.935
Re: AtariX => MagicOnLinux
« Antwort #168 am: Gestern um 11:07:45 »
Danke! Ich hatte mich dumm und dusselig gesucht nach einer Liste der 68k-Befehle und ihrer Codierung.

Das PRM kennst Du sicherlich? https://www.nxp.com/docs/en/reference-manual/M68000PRM.pdf

Offline AndreasKromke

  • Benutzer
  • Beiträge: 51
Re: AtariX => MagicOnLinux
« Antwort #169 am: Gestern um 12:04:33 »
Danke! Ich hatte mich dumm und dusselig gesucht nach einer Liste der 68k-Befehle und ihrer Codierung.

Das PRM kennst Du sicherlich? https://www.nxp.com/docs/en/reference-manual/M68000PRM.pdf

Nee, bei NXP hätte ich zuletzt gesucht. Aber schönes Dokument, da scheint alles Wichtige drinzustehen Danke!

Offline AndreasKromke

  • Benutzer
  • Beiträge: 51
Re: AtariX => MagicOnLinux
« Antwort #170 am: Heute um 01:21:32 »
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.  :)

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.442
Re: AtariX => MagicOnLinux
« Antwort #171 am: Heute um 04:27:43 »
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

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
« Letzte Änderung: Heute um 05:01:02 von Thorsten Otto »

Offline AndreasKromke

  • Benutzer
  • Beiträge: 51
Re: AtariX => MagicOnLinux
« Antwort #172 am: Heute um 12:44:56 »

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.
« Letzte Änderung: Heute um 13:13:06 von AndreasKromke »

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.442
Re: AtariX => MagicOnLinux
« Antwort #173 am: Heute um 14:05:03 »
Ich habe dann schließlich die Behnesche prj-Datei verwendet und es mit PureC gemacht, mit der GUI.

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.

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...

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).