Blog

Juli08

Atari800 7.0.0 unter Mac OS X Tiger bauen

Vor einigen Tagen, genau genommen am 19. und 20.06.2026, wurden die neuen Versionen 6.0.0 und 6.1.0 von Atari800, dem portablen und quelloffenen Atari 8 Bit Emulator erstellt.
Diese waren nur ganz kurze Zeit aktuell, aber bilden immerhin die Basis für eine neue Version von Colleen im Google Play Store.

Doch bereits gestern, am 27.06.206, erschien Version 7.0.0.
Und hier gibt es gute Nachrichten für alle Mac-Freunde: Es lässt sich unter Mac OS X Tiger auf PowerPC bauen - allerdings ohne die neuen Funktionen ROMs laden und FujiNet-Emulation: $ ./configure --with-video=sdl --with-sound=sdl --with-readline=no --with-sdl-prefix=/usr/local --disable-download --disable-netsio && make macht es möglich.
Ob es sich lohnt oder nicht, diese Version ohne neue Funktionen unter Tiger zu bauen, ich werde so oder so neue Versionen meiner gepatchten Versionen erstellen und diese vielleicht sogar als Änderung für GitHub vorschlagen. Weiterhin werde ich prüfen, ab welcher Version von Mac OS X die neuen Funktionen genutzt werden können oder ob der Quelltext mit älteren Versionen von GCC kompatibel gemacht werden kann.

--disable-netsio entfernen

Ja, ja, die KI. Doch ChatGPT war es, das mir folgenden Ersatz für eine Funktion in netsio.c anbot, wodurch wir auch die NetSIO-Funktion erhalten, um uns mit FujiNetPC zu verbinden:
void netsio_wait_for_sync(void)
{
    struct timespec deadline;
    struct timeval now;

    gettimeofday(&now, NULL);

    deadline.tv_sec = now.tv_sec;
    deadline.tv_nsec = now.tv_usec * 1000;

    /* add 40 ms */
    deadline.tv_nsec += 40 * 1000000L;

    if (deadline.tv_nsec >= 1000000000L) {
        deadline.tv_sec += deadline.tv_nsec / 1000000000L;
        deadline.tv_nsec %= 1000000000L;
    }

    pthread_mutex_lock(&netsio_sync_mutex);
    while (netsio_sync_wait) {
#ifdef DEBUG
        Log_print("netsio: waiting for sync response");
#endif
        if (pthread_cond_timedwait(&netsio_sync_cond,
                                    &netsio_sync_mutex,
                                    &deadline) == ETIMEDOUT) {
            netsio_sync_wait = 0;
            break;
        }
    }
    pthread_mutex_unlock(&netsio_sync_mutex);
}

Jetzt ist es möglich, atari800 7.0.0 nach einem ./configure --with-video=sdl --with-sound=sdl --with-readline=no --enable-opengl-by-default --with-sdl-prefix=/usr/local --disable-download zu bauen.

Es lebt!

Nun wollen wir doch mal die Funktionalität des FujiNet bzw. NetSIO testen. Hierzu setze ich FujinetPC auf einem Debian 12 Rechner ein und quäle mich durch die Installation inklusive Bauen des Ganzen.
In der fsconfig.ini trage ich noch eine Änderung ein, und zwar HOST=>IP des Rechners, auf dem atari800 läuft<. Ich starte atari800 --netsio 9997, damit der Emulator aus dem Netz bootet, und siehe da,
Fujinet-Emuation unter Mac OS X Tiger auf einem iBook G4 mit PowerPC-Prozessor
es funktioniert!

Das fertige Mac-App-Bundle

Nach dem das Bauen und der Test auf Netzwerkfunktionalität erfolgreich verlief, habe ich die Patches aus meiner vorherigen Version 5.2.0 auch auf diese Version 7.0.0 angewendet und die Quellen zur Verfügung gestellt: atari800-7.0.0-Tiger_Patches_src.zip.
Bisher steht ein fertiges Mac-App-Bundle für Mac OS X Tiger (PowerPC) zur Verfügung (weitere Versionen bzw. das Universal-Binary folgen): Atari800_7.0.0_Tiger_PPC_patches_App_Bundle.zip.

Universal Binary

Noch schnell das schöne schwarze MacBook2,1 ausgepackt und Tiger i386 gebootet, um die 32-Bit-Intel-Version zu bauen, und schon kann ich Snow Leopard booten und die 64 Bit Version bauen. Aus den drei einzelnen Versionen mache ich danach das Universal Binary. Die Ergebnisse sind unter Downloads zu finden.

Wie ich NetSIO getestet habe

NetSIO ist nur die halbe Miete, um Fujinet-Emulation zu haben. Die eigentliche Fujinet-Emulation kommt von einem anderen PC, denn die aktuelle Version von Fujinet-PC läuft mit Nichten auf dem alten Tiger-Mac mit PowerPC-Prozessor. Also ein Debian-Rechner her, mein klitzekleines HP-Elitebook 2170p ist es diesmal, von dem aus ich die Erfahrungen auf dem selbigen sammle und mit Euch teile. Zunächst müssen erst einmal einige Pakete auf dem Debian-Rechner vorhanden sein. Um die Sache abzukürzen, hier die Befehle, um alles nötige zu installieren:
sudo apt install build-essential cmake python3 python3-venv python3-pip libssl-dev libmbedtls-dev
git clone https://github.com/FujiNetWIFI/fujinet-firmware.git
cd fujinet-firmware/
./build.sh -p ATARI -b

Fujinet-PC sollte nun eigentlich gebaut werden und in dem Verzeichnis build/ als ausführbares Programm ./fujinet abgelegt worden sein. Eigentlich hatte ich an meinem debian 12 PC noch die fsconfig-Datei geändert, um bei host= die IP meines Tiger-Macs einzutragen. Doch diesmal, auf meinem HP mit debian 13, wurde diese Datei nicht angelegt. Also kopiere ich mir diesmal die Datei fnconfig aus einem Ordner mit Beispielen:
cd build/
cp ../data/webui/device_specific/BUILD_ATARI/fnconfig.ini ./

Ich trage noch folgende Zeilen in die Datei ein, ganz einfach, weil sie beim letzten mal auch eingetragen wurden (obwohl sie schon da waren und nur noch editiert werden mussten):
[BOIP]
enabled=1
host=127.0.0.1
port=

Ich starte nun atari800, welches ich vorher in Version 7.0.0 auf dem debian 13 Rechner gebaut und installiert habe, und danach Fujinet-PC:
atari800 -netsio 9997
in einem Terminal (am besten nicht im Vollbild) und danach ./fujinet
in einem anderen Terminal und irgendwann hat es tatsächlich geklappt und der Atari-Emulator bootet vom Fujinet-PC-Gerät.

Tags: