Emulacja FujiNet w emulatorze Altirra
Data publikacji:15.10.2021
Kilka słów wstępu
Zakładam, że skoro tutaj trafiłeś to doskonale wiesz czym jest FujiNet, a jeżeli jeszcze nie wiesz, to koniecznie odwiedź stronę tego projektu i wracaj tutaj po więcej. Do niedawna aby korzystać z dobrodziejstw jakie daje nam to urządzenie trzeba było mieć fizyczny egzemplarz, ale dzięki wielu zaangażowanym w ten projekt osobom, udało się uruchomić emulację Fujineta w jednym z najlepszych emulatorów ośmiobitowego Atari: Alitirze.
Dla mnie - jako programisty - to super wygoda i ułatwienie podczas pisania programów korzystający z sieci, pomimo, że posiadam fizyczny egzemplarz. Ale i komuś niekoniecznie zainteresowanemu programowaniem, zabawa z FujiNetem może dać dużo radości i pozwoli wypróbować ten genialny wynalazek.
Czego potrzebujemy?
Instrukcja ta zakłada, że mamy system Windows 10. Wykorzystywać będziemy także "Windows Subsystem for Linux" który zaraz wspólnie zainstalujemy. Zakładam, że mamy tez zainstalowanego w systemie gita i pythona. No i oczywiście Altirrę.
Zróbmy sobie wirtualnego FujiNeta
Zacznijmy od emulacji samego urządzenia, a dopiero potem spróbujemy je sprzęgnąć z emulatorem. Do skompilowania kodu wirtualnego urządzenia, będziemy potrzebowali środowisko linuksa, które od niedawna jest łatwo dostępne z poziomu windowsów. Wystarczy doinstalować sobie podsystem WSL i uzyskamy w pełni funkcjonalną linuksową konsole, wraz z wszystkimi potrzebnymi narzędziami.
Zacznijmy od wydania w konsoli windows następującego polecenia:
wsl --install
Polecenie to ustawi naszą domyślną dystrybucję jako ubuntu, pobierze i zainstaluje odpowiednie komponenty i przy okazji każe nam zrestartować komputer. Po instalacji, przy pierwszym uruchomieniu w oknie konsoli zostaniemy zapytani o nazwę użytkownika i hasło. Po ich podaniu mamy gotowy do pracy podsystem linux.
UWAGA! Poniższa instrukcja kompilacji może ulec zmianie wraz z rozwojem aplikacji. Dziś zadziała, jutro może być już nieaktualna, więć zawsze warto postępować w/g aktualnej instrukcji ze strony autora: README.md
Najpierw zainstalujemy sobie wszystkie biblioteki i narzędzia, niezbędne do skompilowania emulatora:
sudo apt update
sudo apt install libbsd-dev libexpat-dev libssl-dev cmake g++
następnie pobieramy najnowsze źródła:
git clone https://github.com/a8jan/fujinet-pc.git
i kompilujemy:
cd fujinet-pc/build
cmake .. -DCMAKE_BUILD_TYPE:STRING=Debug
cmake --build .
cmake --build . --target dist
Wszystkie pliki potrzebne do uruchomienia edytora znajdują się w katalogu dest. W katalogu tym znajduję się także katalog SD. Pliki umieszczone w tym katalogu będą widoczne w naszym #FujiNecie jako zawartość wirtualnej karty SD.
Pozostało nam tylko uruchomić emulator:
cd dist
./run-fujinet
Powinniśmy zobaczyć komunikaty o starcie urządzenia. Zostawiamy to okienko otwarte, będziemy mieli w nim podgląd na komunikaty systemowe, informacje o połączeniach, transferach i ewentualnych błędach. Aby zatrzymać urządzenie naciskamy Ctrl+C.
Aby skonfigurować teraz nasz wirtualny egzemplarz urządzenia, otwieramy przeglądarkę i wpisujemy:
http://localhost:8000/
Wyświetli nam się strona konfiguracyjna urządzenia. Nie będę tutaj opisywał wszystkich funkcji i ustawień, bo nie o tym jest ten poradnik. Skupimy się tylko na tych istotnych dla podpięcia urządzenia do Altirry. Zjeżdżamy sobie zatem na sam dół, aż do sekcji EMULATOR SETTINGS i włączamy transmisję SIO po sieci. Jako adres ustawmy nasz lokalny komputer (127.0.0.1).
Naciskamy SAVE i gotowe. Nasz emulator już nasłuchuje komunikatów SIO w sieci lokalnej. Teraz pozostało nam tylko nauczyć Altirrę jak te komunikaty wysyłać i odebrać i jesteśmy w domu.
Uczymy Altirre jak rozmawiać z FujiNetem
Aby Altirra wiedziała jak komunikować się z naszym wirtualnym urządzeniem, potrzebujemy dwóch rzeczy:
- emulatora samego urządzenia SIO jako wtyczka do Altirry,
- mostka sieciowego, który zepnie nam komunikację SIO pomiędzy wirtualnym FujiNetem a wtyczką
Obydwa narzędzia znajdują się w jednym repozytorium i pobieramy je sobie stąd:
Instrukcja instalacji jest w pliku README.md, ale znajdziesz ją tez poniżej. Gdyby coś jednak poszło nie tak, sprawdź plik README, bo może coś się zmieniło od czasu pisania tego poradnika.
Pierwsze nasze zadanie to skopiować dwa pliki z repozytorium do odpowiednich podkatalogów w katalogu gdzie mamy zainstalowany emulator Altirra. Najpierw plik netsio.atdevice kopiujemy do /extras/sampledevices, a następnie netsio-hub.py do /extras/deviceserver.
W pierwszej kolejności wystartujmy nasz mostek sieciowy, który nam zepnie urządzenia. Wchodzimy do katalogu
python netsio-hub.py
W okienku zobaczymy komunikat o starcie mostka. A przynajmniej powinniśmy o ile mamy zainstalowanego pythona w wersji 3 lub wyższej.
Następnie uruchamiamy Altirrę, wchodzimy do ustawień (Alt-S), wybieramy Peripherials->Devices. Kilkamy Add, przewijamy liste na sam dół, wybieramy Custom Device.
Naciskamy OK i wskazujemy w ścieżce plik netsio.atdevice z katalogu /extras/sampledevices
Następnie wchodzimy w ustawienia Computer->Acceleration i odznaczamy opcję Fast Boot:
Dla pewności warto sprawdzić czy nie mamy nic zamontowanego w emulatorze jako napęd D1 i możemy restarować Altirrę. Jeżeli wszystko zrobiliśmy dobrze, Altirra powinna wystartować i załadować obraz konfiguratora FujiNet z wirtualnego urządzenia:
Wybieramy "wirtualną sieć" Dummy Caffe, podajemy puste hasło i to wszystko. Jesteśmy w sieci!
Teraz wystarczy dodać pierwszego hosta do naszej listy serwerów.
Nacisnij E i wprowadź wybrany adres. Może to być na przykład fujinet.pl. Następnie wybierz i zamontuj sobie wybrany obraz i ciesz się siecią w emulowanym Atari :)
Miłej zabawy!