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

1 Mitglieder und 12 Gäste betrachten dieses Thema.

Offline AndreasKromke

  • Benutzer
  • Beiträge: 121
Re: AtariX => MagicOnLinux
« Antwort #320 am: Gestern um 18:29:22 »
Ich sehe daß du extra Programme dafür geschrieben hast. Kann man machen, aber einfacher ist es dafür das Tool von freemint zu nehmen: https://github.com/freemint/freemint/tree/master/tools/mktbl

Das kann Text-Dateien lesen, und Mint- oder Magic-Spezifische Dateien erzeugen. Mit und ohne Deadkeys.

Diverse Tastatur-Tabellen sind dort auch vorhanden.
Wenn ich das gewußt hätte... Aber warum habe ich auch nicht gefragt?  >:(

Offline AndreasKromke

  • Benutzer
  • Beiträge: 121
Re: AtariX => MagicOnLinux
« Antwort #321 am: Gestern um 18:30:46 »
Soll ich ein Ticket aufmachen, oder wie hast du das Procedere am liebsten?
Längst erledigt: [https://gitlab.com/AndreasK/magiclinux/-/issues/54]

Offline AndreasKromke

  • Benutzer
  • Beiträge: 121
Re: AtariX => MagicOnLinux
« Antwort #322 am: Gestern um 18:41:34 »
Was passiert denn bei »atari_screen_colour_mode = 5« (»4ip«)? GEM_TEST sagt »4 Stifte, >32k Abstufungen“.
Denn wenn ich das setze, werden Fensterelemente in der horizontalen um Faktor 2 ausgedehnt. Egal ob NVDI an oder aus ist. Ich sehe das bei keinem anderen Modus.

Das ist "ST-Medium", zwei Bit interleaved, also vier Farben. Das ist ein Schweine-Modus, weil die Pixel dann auf dem ST doppelt so hoch wie breit sind. Starte mal mit den Parametern "-astd-mid". Und - Bumms! -sind alle Fensterelemente wieder quadratisch, praktisch und gut.

Die Amis haben ja den ST damals meist mit dem teuren Farbmonitor gekauft. Ich fand das g-r-a-u-e-n-v-o-l-l. Sowas von häßlich! Die "niedrige" Auflösung war nur zum Zocken, und die "mittlere" Auflösung ein übler Notbehelf.

Offline AndreasKromke

  • Benutzer
  • Beiträge: 121
Re: AtariX => MagicOnLinux
« Antwort #323 am: Gestern um 18:44:30 »
Ich habe noch eine DE-ISO-Tastaturbelegung nach EXTRAS gelegt. Vielleicht sollte die auch Standard werden. Ich denke, damit kann man besser arbeiten im Emulator. Hat vermutlich noch einige Fehler, bei AltGr oder so. Leider habe ich AltGr-E ums Verrecken nicht hingekriegt  :( :( :(

PS: Bin beeindruckt von mktbl. Sogar mit meinen kruden Tottasten! Aber eine DE-ISO-Tastatur war noch nicht drin.
« Letzte Änderung: Gestern um 18:48:48 von AndreasKromke »

Offline goetz @ 3rz

  • Benutzer
  • Beiträge: 2.217
Re: AtariX => MagicOnLinux
« Antwort #324 am: Gestern um 21:14:45 »
Was passiert denn bei »atari_screen_colour_mode = 5« (»4ip«)? GEM_TEST sagt »4 Stifte, >32k Abstufungen“.
Denn wenn ich das setze, werden Fensterelemente in der horizontalen um Faktor 2 ausgedehnt. Egal ob NVDI an oder aus ist. Ich sehe das bei keinem anderen Modus.

Das ist "ST-Medium", zwei Bit interleaved, also vier Farben. […]

Die Amis haben ja den ST damals meist mit dem teuren Farbmonitor gekauft. Ich fand das g-r-a-u-e-n-v-o-l-l. Sowas von häßlich! Die "niedrige" Auflösung war nur zum Zocken, und die "mittlere" Auflösung ein übler Notbehelf.

Aaaaah, okay, das brauche ich genau null, v.a. nicht unter MagiC. Danke.

(Und auch sonst: Der SM124 bzw. ST-Hoch war einer der Hauptgründe mir einen ST zu kaufen. Neben dem Preis.)
« Letzte Änderung: Gestern um 21:18:23 von goetz @ 3rz »
Wider dem Signaturspam!

Offline AndreasKromke

  • Benutzer
  • Beiträge: 121
Re: AtariX => MagicOnLinux
« Antwort #325 am: Gestern um 21:56:21 »
(...)
Aaaaah, okay, das brauche ich genau null, v.a. nicht unter MagiC. Danke.

(Und auch sonst: Der SM124 bzw. ST-Hoch war einer der Hauptgründe mir einen ST zu kaufen. Neben dem Preis.)

Tatsächlich braucht man das für ein paar "spezielle" Programme. GfaBasic oder OmikronBasic oder ein paar andere aus der Ära, wobei man dann aber besser "ST-High" verwendet. Auch der 16-Farben-"interleaved"-Modus ist nur aus Kompatidings da. Er ist unpraktisch und langsam. Der andere 16-Farben-Modus funktioniert dagegen bei Programmen nicht, die am Bildspeicher herumpfuschen. Übrigens ist der 256-Farben-Modus von Atari auch "interleaved", weshalb, sofern ich mich richtig erinnere, die Behne für diesen Quatsch auch keinen Treiber gemacht haben.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.493
Re: AtariX => MagicOnLinux
« Antwort #326 am: Heute um 05:17:03 »
Als Atari-Treiber schon (mfa256.s), wird ja schliesslich auch für TT gebraucht. Für Emulator aber nur in der pixel-packed Version (mfm256.s). Offscreen-Treiber gibt es aber für beide Formate.

Offline AndreasKromke

  • Benutzer
  • Beiträge: 121
Re: AtariX => MagicOnLinux
« Antwort #327 am: Heute um 09:30:58 »
Richtig. Ich korrigiere: Die BBs haben für mich keinen entsprechenden Treiber gemacht.

Der letzte Fehler, mit der falschen Palette, der nur mit NVDI auftrat, lag letztendlich am MVDI. Ich habe mich mit dem disassemblierten NVDI dumm und dusselig gesucht, aber bin damit nur extrem mühsam weitergekommen. Dann erst hatte ich die Idee, erst den Fehler im MVDI-Treiber zu beheben, den ich schon vorher im Quelltext gesehen hatte (klassischer Copy-Paste-Fehler). Beim Debuggen des NVDI bin ich also letztlich steckengeblieben, wenn auch nicht stecken geblieben, denn ich steckte vorher ja nicht.

Das wird wieder gruselig, wenn ich den VT52-Fehler suchen will, ich befürchte das Schlimmste. Vielleicht schaue ich auch erstmal in die entsprechenden MVDI-Treiber.
« Letzte Änderung: Heute um 09:38:50 von AndreasKromke »

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.493
Re: AtariX => MagicOnLinux
« Antwort #328 am: Heute um 10:00:21 »
Die BBs haben für mich keinen entsprechenden Treiber gemacht.

Wozu auch ;) Die waren ja ursprünglich für Mac gedacht, und da gibt es so ein Format ja nicht.

Wäre vermutlich kein grosser Aufwand, einen entsprechenden Treiber zu bauen. Fragt sich nur ob das Sinn macht, wird sicherlich langsamer sein als pixel-packed. Einzigen Grund den ich mir vorstellen könnte ist, wenn es Programme gibt, die mit pixel-packed bei 256 Farben nicht zurecht kommen. Aber die würden dann mit einer Grafik-Karte vermutlich auch nicht funktionieren.

Offline don_apple

  • Benutzer
  • Beiträge: 33
Re: AtariX => MagicOnLinux
« Antwort #329 am: Heute um 12:33:30 »
Nachdem sich MagicOnLinux auf dem MacBook Air M3 mit macOS Sonoma (15.7.3) ohne Probleme bauen läßt , hab' ich das jetzt auch mal auf einem Intel Mac mit macOS Ventura (13.7.8) versucht.

Da scheitert das compilieren komischerweise allerdings bei der Datei src/MagiC.cpp mit den folgenden Fehlern:
/Users/frank/Source/magiclinux/src/MagiC.cpp:138:23: error: expected expression
    *criticalRegion = PTHREAD_MUTEX_INITIALIZER;
                      ^
In file included from /Users/frank/Source/magiclinux/src/MagiC.cpp:32:
In file included from /Users/frank/Source/magiclinux/inc/emulation_globals.h:4:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/atomic:526:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__thread/timed_backoff_policy.h:18:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__threading_support:37:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/pthread.h:185:35: note:
      expanded from macro 'PTHREAD_MUTEX_INITIALIZER'
#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
                                  ^
/Users/frank/Source/magiclinux/src/MagiC.cpp:175:36: warning: cast between pointer-to-function and pointer-to-object is an extension
      [-Wpedantic]
    jump_table[jump_table_len++] = (void *) callback;
                                   ^~~~~~~~~~~~~~~~~
/Users/frank/Source/magiclinux/src/MagiC.cpp:278:28: error: expected expression
    m_KbCriticalRegionId = PTHREAD_MUTEX_INITIALIZER;
                           ^
In file included from /Users/frank/Source/magiclinux/src/MagiC.cpp:32:
In file included from /Users/frank/Source/magiclinux/inc/emulation_globals.h:4:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/atomic:526:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__thread/timed_backoff_policy.h:18:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__threading_support:37:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/pthread.h:185:35: note:
      expanded from macro 'PTHREAD_MUTEX_INITIALIZER'
#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
                                  ^
/Users/frank/Source/magiclinux/src/MagiC.cpp:280:29: error: expected expression
    m_ScrCriticalRegionId = PTHREAD_MUTEX_INITIALIZER;
                            ^
In file included from /Users/frank/Source/magiclinux/src/MagiC.cpp:32:
In file included from /Users/frank/Source/magiclinux/inc/emulation_globals.h:4:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/atomic:526:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__thread/timed_backoff_policy.h:18:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__threading_support:37:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/pthread.h:185:35: note:
      expanded from macro 'PTHREAD_MUTEX_INITIALIZER'
#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
                                  ^
/Users/frank/Source/magiclinux/src/MagiC.cpp:301:20: error: expected expression
    m_EventMutex = PTHREAD_MUTEX_INITIALIZER;
                   ^
In file included from /Users/frank/Source/magiclinux/src/MagiC.cpp:32:
In file included from /Users/frank/Source/magiclinux/inc/emulation_globals.h:4:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/atomic:526:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__thread/timed_backoff_policy.h:18:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__threading_support:37:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/pthread.h:185:35: note:
      expanded from macro 'PTHREAD_MUTEX_INITIALIZER'
#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
                                  ^
/Users/frank/Source/magiclinux/src/MagiC.cpp:302:24: error: expected expression
    m_ConditionMutex = PTHREAD_MUTEX_INITIALIZER;
                       ^
In file included from /Users/frank/Source/magiclinux/src/MagiC.cpp:32:
In file included from /Users/frank/Source/magiclinux/inc/emulation_globals.h:4:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/atomic:526:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__thread/timed_backoff_policy.h:18:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__threading_support:37:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/pthread.h:185:35: note:
      expanded from macro 'PTHREAD_MUTEX_INITIALIZER'
#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
                                  ^
/Users/frank/Source/magiclinux/src/MagiC.cpp:303:14: error: expected expression
    m_Cond = PTHREAD_COND_INITIALIZER;
             ^
In file included from /Users/frank/Source/magiclinux/src/MagiC.cpp:32:
In file included from /Users/frank/Source/magiclinux/inc/emulation_globals.h:4:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/atomic:526:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__thread/timed_backoff_policy.h:18:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__threading_support:37:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/pthread.h:214:34: note:
      expanded from macro 'PTHREAD_COND_INITIALIZER'
#define PTHREAD_COND_INITIALIZER {_PTHREAD_COND_SIG_init, {0}}
                                 ^
Meine C/C++ Kenntnisse reichen leider nicht aus um herauszufinden wie man diese Fehler beheben kann. Laut Google fehlt da wohl irgendwo ein "pthread_mutex_t", aber wo genau konnte ich nicht rausfinden.

Laut https://stackoverflow.com/questions/14320041/pthread-mutex-initializer-vs-pthread-mutex-init-mutex-param wird heutzutage wohl auch empfohlen pthread_mutex_init() anstatt PTHREAD_MUTEX_INITIALIZER zu verwenden.

Offline AndreasKromke

  • Benutzer
  • Beiträge: 121
Re: AtariX => MagicOnLinux
« Antwort #330 am: Heute um 14:31:53 »
(..)
Laut https://stackoverflow.com/questions/14320041/pthread-mutex-initializer-vs-pthread-mutex-init-mutex-param wird heutzutage wohl auch empfohlen pthread_mutex_init() anstatt PTHREAD_MUTEX_INITIALIZER zu verwenden.
Probieren geht über Studieren. Und es gibt fast soviele Studierende, die keine Studenten sind, wie es Studenten gibt, die nicht studieren.
Fazit: einfach mal ausprobieren. Wenn es compiliert, wird es vermutlich auch funktionieren.

OT: Mein antiker Mac hat noch Mojave, und ich war erschüttert, als ich neulich mal nachlesen mußte, wie die Amis "Mojave" pronunzieren.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.493
Re: AtariX => MagicOnLinux
« Antwort #331 am: Heute um 15:10:45 »
PTHREAD_MUTEX_INIITIALIZER ist eigentlich nur für statische Variablen gedacht. An der Stelle müsste also tatsächlich
pthread_mutex_init(criticalRegion, nullptr);
verwendet werden. Wundert mich eigentlich das es bisher überhaupt funktioniert hat.

Offline don_apple

  • Benutzer
  • Beiträge: 33
Re: AtariX => MagicOnLinux
« Antwort #332 am: Heute um 16:00:52 »
Probieren geht über Studieren. Und es gibt fast soviele Studierende, die keine Studenten sind, wie es Studenten gibt, die nicht studieren.
Fazit: einfach mal ausprobieren. Wenn es compiliert, wird es vermutlich auch funktionieren.
Einen Teil der Fehler könnte ich jetzt mit folgenden Änderungen beheben:
% git diff   
diff --git a/src/MagiC.cpp b/src/MagiC.cpp
index 4666eef..1bf3d6f 100644
--- a/src/MagiC.cpp
+++ b/src/MagiC.cpp
@@ -275,9 +275,9 @@ CMagiC::CMagiC()
     m_EventId = 0;
     m_InterruptEventsId = 0;
 
-    m_KbCriticalRegionId = PTHREAD_MUTEX_INITIALIZER;
+    pthread_mutex_t m_KbCriticalRegionId = PTHREAD_MUTEX_INITIALIZER;
     // m_AECriticalRegionId = PTHREAD_MUTEX_INITIALIZER;    // remnant from MagicMac(X) and AtariX
-    m_ScrCriticalRegionId = PTHREAD_MUTEX_INITIALIZER;
+    pthread_mutex_t m_ScrCriticalRegionId = PTHREAD_MUTEX_INITIALIZER;
 
     //m_iNoOfAtariFiles = 0;  // remnant from MagicMac(X) and AtariX
     m_pKbWrite = m_pKbRead = m_cKeyboardOrMouseData;
@@ -298,9 +298,9 @@ CMagiC::CMagiC()
     m_bEmulatorIsRunning = false;
 
     // inter-thread synchronisation
-    m_EventMutex = PTHREAD_MUTEX_INITIALIZER;
-    m_ConditionMutex = PTHREAD_MUTEX_INITIALIZER;
-    m_Cond = PTHREAD_COND_INITIALIZER;
+    pthread_mutex_t m_EventMutex = PTHREAD_MUTEX_INITIALIZER;
+    pthread_mutex_t m_ConditionMutex = PTHREAD_MUTEX_INITIALIZER;
+    pthread_mutex_t m_Cond = PTHREAD_COND_INITIALIZER;
 
     atomic_init(&gbAtariVideoBufChanged, false);
 }
Den folgenden Fehler zu beheben übersteigt allerdings meine Kenntnisse:
/Users/frank/Source/magiclinux/src/MagiC.cpp:138:23: error: expected expression
    *criticalRegion = PTHREAD_MUTEX_INITIALIZER;
                      ^
In file included from /Users/frank/Source/magiclinux/src/MagiC.cpp:32:
In file included from /Users/frank/Source/magiclinux/inc/emulation_globals.h:4:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/atomic:526:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__thread/timed_backoff_policy.h:18:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__threading_support:37:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/include/pthread.h:185:35: note:
      expanded from macro 'PTHREAD_MUTEX_INITIALIZER'
#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
Wenn ich da ebenfalls versuche ein pthread_mutex_t zu ergänzen bekomme ich andere komische Fehler  :(

Offline AndreasKromke

  • Benutzer
  • Beiträge: 121
Re: AtariX => MagicOnLinux
« Antwort #333 am: Heute um 17:11:02 »
Ich kann das jetzt auf die Schnelle nicht überprüfen, aber das hier:

 pthread_mutex_t m_EventMutex = PTHREAD_MUTEX_INITIALIZER;

sieht so aus, als hättest Du eine neue (!) Variable eingeführt. Du mußt aber das Attribut verwenden, das zur Klasse gehört (class member), damit die Variable nur einmal existiert, sonst kann man damit nicht die Threads synchronisieren. Klassenattribute werden in der .h-Datei deklariert. Wenn sie statisch sind, also zur Klasse gehören und nicht jeweils zu jedem Objekt der Klasse, müssen sie in der .cpp-Datei noch definiert werden, weil sie nicht Teil eines neu erzeugten Objekts sind.