Marcin "Montezuma" Sochacki prezentuje nam dzisiaj swój projekt interfejsu:
SIO2BT czyli Atari i Bluetooth
SIO2BT swoją nazwą nawiązuje do projektów SIO2PC i SIO2SD. Idea projektu to emulacja urządzeń SIO (na przykład stacji dyskietek) na smartfonie i bezprzewodowe przesyłanie danych z/do Atari przez interfejs Bluetooth.
Pewnie gdybym na samym początku postawił sobie takie właśnie cele, to wcale bym się za to nie zabrał :). Na wiosnę 2013 roku postanowiłem poeksperymentować z modułami Bluetooth. Pomysł był prosty – zamiana kabla SIO2PC na połączenie Bluetooth. Testy miały się odbyć na PC-cie z programem AspeQt. Niestety dość szybko okazało się, że rzeczywistość jest bardziej skomplikowana. AspeQt potrzebuje do pracy sygnał Command Line podpięty do portu szeregowego (pod CTS,DSR lub pod RI). Tymczasem stan sygnałów sterujących nie jest przesyłany przez Bluetooth. Na szybko znalazłem w internecie program SIO2BSD autorstwa drac030, który nie potrzebuje do pracy „Command Line”. Program napisany jest wprawdzie pod Linux-a, ale działa także pod Windows w środowisku Cygwin. Pierwszy test i porażka. Podpięty analizator stanów logicznych dał odpowiedź - opóźnienia w transmisji danych przekraczają limity protokołu SIO.
I na tym w zasadzie zakończyłbym swoją zabawę z Bluetooth, gdyby nie xxl, który podesłał mi xbios z własnymi procedurami SIO. Loader załadowałem za pomocą SIO2SD, następnie przepiąłem kabelki i voilà - ładuję grę przez Bluetooth! Teraz wiedziałem już, że się da, ale brakowało mi jeszcze pełnej wiedzy, żeby kontynuować projekt. W międzyczasie zwrócił się do mnie Bernd Herale (jego strona) z propozycją współpracy nad projektem 4MB Flash MegaCart i SIO2BT musiało jeszcze trochę poczekać.
W latach 80-tych nie miałem, niestety, własnego Atari. Kilka lat temu postanowiłem to zmienić. W planach miałem zakup sprzętu i literatury - z zamiarem nadrobienia sporych zaległości. Do mojego „nowego” Atari kupiłem też SIO2SD, ale szybko zorientowałem się, że obsługa tego urządzenia, delikatnie mówiąc, odbiega od ogólnie przyjętych standardów GUI. Szczególnie wyszukiwanie gier z użyciem klawiszy K1-K5 wymagało dużo cierpliwości. Kiedy jednak skopiowałem na kartę SD nowe gry i zorientowałem się, że SIO2SD nie sortuje plików alfabetycznie, postanowiłem napisać program (na PC), który pomaga utrzymać porządek z grami.
Na moim pierwszym Atari party ("NOMAM" w Laboe w 2010 roku) musiałem chyba wprowadzić wszystkich w niezłe zakłopotanie. Nowo poznani koledzy z ABBUC-a pokazali mi wszystkie możliwe wynalazki i rozszerzenia do Atari. Połowa z nich wydawała mi się zupełnie bezużyteczna. Stereo? Mam przecież w PC-cie. Dodatkowa pamięć RAM dla jednego dema? To ja sobie to demo obejrzę w emulatorze. VBXE w cenie trzech komputerów Atari? Może jednak innym razem... Bardzo spodobały mi się natomiast freezer i carty z kolekcjami gier i programów. W rozmowach wykazałem się sporą niewiedzą:
"naprawdę nie słyszałeś nigdy o stacjach TOMS? I nie grałeś nigdy w Hansa Klossa?" TOMS kojarzyło mi się tylko i wyłącznie z TOM TOM-em, ale za to Niemcy grając w Hansa Klossa, nie mieli pojęcia, że wcielają się w największego wroga III Rzeszy („Stawka” znana jest tylko mieszkańcom byłego NRD).
wykazałem się również pewną dozą ignorancji: "poznaj Stefana, autora QMEG-a.", fajnie, "a co to jest QMEG, czy to ma coś wspólnego z MPEG-iem?" Wtedy nie miałem jeszcze pojęcia, że zarażę się od nich chorobą o ładnej nazwie RETRO COMPUTING.
Do SIO2BT wróciłem na wiosnę 2014 roku. Moja praca polegała na początku głównie na zbieraniu informacji. Wiedziałem już, że chcę zmodyfikować Atari OS. Na forum AtariAge Kr0tki zamieścił kody źródłowe i środowisko pozwalające na kompilację dowolnej wersji systemu operacyjnego przy użyciu CC65. Krótka konsultacja ze Stefanem i spatchowany plik OS-ROM był gotowy. Właśnie wtedy doceniłem Ultimate1MB, dzięki któremu testowanie i używanie SIO2BT okazało się proste i wygodne. Za pomocą programu uFlash autorstwa flashjazzcat można bowiem z poziomu Atari wgrać dowolny OS-ROM do pamięci flash rozszerzenia.
Następnym krokiem było dostosowanie AspeQt do komunikacji przez Bluetooth. Gdy i to się udało, zaczęły się intensywne testy. Pozytywne wyniki i namowy kolegów skłoniły mnie do prób z Android-em. Było to dla mnie kolejne wyzwanie. Znałem wprawdzie język Java, ale jeszcze nigdy nie zaprogramowałem żadnej aplikacji na Android-a. Krok po kroku, wykorzystując załączony do ADT (Android Development Toolkit) przykładowy kod projektu „Bluetooth Chat” zacząłem programowanie.
Tutaj mała ciekawostka. Wszystkie nowe projekty tworzone za pomocą ADT, które mają działać na starszych modelach telefonów, dostają od ADT w prezencie bibliotekę kompatybilności, dzięki której nawet na starszych wersjach Androida aplikacje mogą korzystać z nowych elementów GUI.
Cena tego „prezentu” to spory rozmiar gołej aplikacji (która jeszcze nic nie robi) - ponad 2MB. Mając na uwadze ograniczone zasoby starszych telefonów, nie potrafię zrozumieć tej polityki inaczej, niż zmuszanie ludzi do kupowania coraz to nowszych modeli. Na szczęście udało mi się tak skonfigurować projekt, że pakiet instalacyjny ma jedynie 66kB, a aplikacja na telefonie zajmuje poniżej 200kB. Przy czym SIO2BT można uruchomić na smartfonach z Android-em od wersji 2.1 (kolega znalazł gdzieś w szufladzie Sony Ericsson Xperia E15i). Testowałem ją też na Nexus-ie 5 z Android-em 5. Okazało się, że Java, Bluetooth i smartfony dają radę :)
Główna zaleta korzystania ze smartfona to dostęp do internetu i możliwość ściągania najnowszych produkcji. To uświadomiło mi, że bez obsługi plików dyskowych xex, exe, com (przeważających w internecie) SIO2BT niewiele daje. Postanowiłem więc dodać (oprócz obsługi plików atr) również loader do plików xex. Żeby nie wynajdywać koła od nowa przyjrzałem się loaderom z projektów SDRIVE, SIO2SD i AspeQt. Wypróbowałem wszystkie trzy, ale do ostatecznej wersji SIO2BT zdecydowałem się na (moim zdaniem najlepszy) loader z projektu SDRIVE. Ma on bowiem dodatkową zaletę, że pozwala na emulację dyskietek DOS-owych: wybrany w SIO2BT plik *.xex jest widoczny z poziomu DOS-a i może zostać skopiowany na twardy dysk.
Z takim działającym już SIO2BT pojawiłem się w tym roku na party w Głuchołazach. Od samego początku było dla mnie jasne, że nie dogodzę wszystkim użytkownikom i wiele decyzji podjętych w czasie realizacji projektu to kompromisy. Ucieszyłem się, że SIO2BT wzbudziło spore zainteresowanie i z zaciekawieniem wysłuchałem wszystkich uwag. Na przykład Lotharek spojrzał na ekran smartfona w czasie ładowania gry i spytał, dlaczego nic się na nim nie dzieje. Miał absolutną rację. Nawet stacja dyskietek ma diodę, która zapala się w czasie pracy. Dołożyłem więc do aplikacji prostą animację diody, dzięki czemu widać teraz, czy coś się ładuje (nawet gdy ogłosy SIO są wyciszone).
Inna ważna sprawa, to niechęć użytkowników do modyfikacji OS-a. Pomimo, że wiele osób posiada Ultimate 1MB, lub jakikolwiek inny OS-Switch, to dla purystów ingerencja we wnętrzności Atari jest nieakceptowalna. Idąc tym tropem, wpadłem na pomysł napisania krótkiego loader-a, którego celem jest skopiowanie OS-a do RAM-u i modyfikacja parametrów komunikacyjnych SIO „w locie”. Oczywiście taki loader trzeba jakoś załadować, ale praktyka pokazała, że oryginalny OS radzi sobie bez większych problemów z załadowaniem kilku sektorów przez Bluetooth.
Z pomocą Bernda, Stefana i kodów źródłowych Atari OS, udało mi się utworzyć takie ATR-y (128 bajtów danych + 16 bajtów nagłówka) dla systemów operacyjnych serii XL/XE. Niestety kompatybilność tego rozwiązania daje sporo do życzenia. Nie da się w ten sposób załadować gier, które przełączają banki pamięci w czasie ładowania, itp. Z ciekawości przetestowałem pierwszych 60 gier z kolekcji Homesoft. Z ATR-ów wypakowałem najpierw za pomocą Total Commander-a wraz pluginem ATR autorstwa Pajero, wszystkie pliki XEX. Z orginalnym OS-em i z loader-em udało mi się załadować 70% gier. Ze zmodyfikownym OS-em – wszystkie.
Kolejna ważna uwaga dotyczyła legalności rozprowadzania zmodyfikowanych wersji Atari OS. Podobno kod OS-a w dalszym ciągu chroniony jest prawami autorskimi. Żeby uniknąć problemów prawnych, napisałem niewielki program (na PC-ta), który pozwala użytkownikowi, posiadającemu plik ROM, jego modyfikację dla SIO2BT (pliki te są dostępne w internecie i dokumentacja SIO2BT zawiera do nich linki). Przy okazji - dzięki pomocy Stefana – można dopasować nim również QMEG-a w wersji 4.04 do komunikacji przez Bluetooth.
Były też pytania o iPhone-a. Pomijam podwojenie kosztów projektu (konieczność zakupu iPhona, zapłacenia za licencję SDK), a także dodatkowy czas na naukę systemu iOS i na portowanie aplikacji. Apple celowo nie pozwala aplikacjom na korzystanie z „Serial Port Profile” do komunikacji przez Bluetooth. Kiedyś dziwiłem się, że mini konsola do gier iCADE udaje klawiaturę Bluetooth. Po odwiedzeniu strony Apple wszystko stało się jasne...
Jak co roku, pod koniec października odbyło się coroczne zebranie klubu ABBUC. Na zebraniu członkowie klubu oddali głosy na prace zgłoszone do konkursów w kategorii hardware i software. W tym roku zgłoszono aż 7 prac w kategorii hardware. Tym bardziej cieszy mnie uznanie, jakie otrzymał mój projekt zdobywając 1-sze miejsce. To było ładnych kilka miesięcy pracy, która sprawiła mi jednak sporo satysfakcji.
Poniżej moje małe i subiektywne podsumowanie wad i zalet SIO2BT.
Wady:
transmisja danych maksymalnie z prędkością 19200 bodów,
konieczność modyfikacji Atari OS (lub używania specjalnego loader-a, co wiąże się jednak z ograniczeniami),
ograniczona możliwość równoczesnego używania z innymi urządzeniami SIO (z braku informacji o stanie Command Line, SIO2BT analizuje dane przesyłane przez Atari w celu rozpoznawania ramek Command Frame, a taka sekwencja bajtów może się znaleźć przypadkowo, na przykład w sektorze wysyłanym przez Atari do stacji dyskietek). Jeśli inne urządzenie SIO jest używane tylko do odczytu, to nie ma kolizji z SIO2BT.
Zalety:
brak kabli (moduł Bluetooth można zamontować na stałe w Atari lub też we wtyku SIO,
dostęp do najnowszych produkcji na Atari bez konieczności używania PC-ta,
możliwość ładowania gier/dem w formacie xex i kopiowania ich z poziomu DOS-a,
możliwość tworzenia pustych dyskietek, dowolnego ich formatowania i zapisywania na nich danych, (na przykład programów w BASIC-u).
kompatybilność z DOS 2, DOS 2.5, MyDOS (również obsługa bloków PERCOM) i SpartaDOS, jak również z XBIOS-em (wymagana modyfikacja OS),
pokazowa współpraca aktualnych technologii z techniką sprzed 30 lat (może nie jest to żadna zaleta, ale lubię tak myśleć o projekcie SIO2BT).
Dokumentacja do projektu ma 28 stron, jest w języku angielskim i zawiera wiele szczegółowych informacji i zdjęć.
W planach jest także obsługa nowego urządzenia 'N', pozwalającego na komunikację Atari (jako klienta TCP/IP) z internetem. Udało mi się namówić do współpracy xxl-a i mam nadzieję, że wspólnie uda nam się to zrealizować. Być może w najbliższym czasie pojawi się też ciekawy wideoblog stRing-a opowiadający o projekcie SIO2BT (widziałem pierwszą wersję i trzymam kciuki, żeby się udało). Więcej informacji na forum.
Marcin "Montezuma" Sochacki prezentuje nam dzisiaj swój interes. Przepraszam, ale nie mogłem się powstrzymać.
montezuma @2015-01-23 08:43:15
@Alfred Nobel Rozumiem, że mogę liczyć na nagrodę ;-)
@Anon Głodnemu chleb na myśli. Przepraszam, ale nie mogłem się powstrzymać.
xxl @2015-01-23 08:48:59
juz nie moge sie doczekac jak Atari zacznie gadac z internetami :-)
_rocky @2015-01-23 09:47:35
Generalnie projekt mi się podoba, jednakże obsługa rozwiązania wymaga pewnych modyfikacji w Atari (nie chodzi mi oryginalność itp..). Przykładowo ktoś z młodego pokolenia (zupełnie nie znający się na Atari) chce zacząć przygodę z Atari (retro staje się modne) i kupuje/dostaje standardowy egzemplarz. Wiadomo, że magnetofon, czy stacja to egzotyk.. Widzi fajną sprawę, mały gadżet, który pozwala załadować gry z poziomu komórki przez BT.. kupuje i tu zonk.. nie działa jak trzeba, a żeby działało trzeba odprawiać jakaś magię z modyfikacją OS (+ koszty Ulitmate)... Pomijam wolną transmisję, standardowa ma też swój urok retro:) Zgadzam się, że obsługa SIO2SD jest mało wygodna, ale jest to chyba najbardziej kompatybilne rozwiązanie na rynku.
Mi osobiście marzy się sio2sd upakowane we wtyczce (może być nieco większe lub wersja wewnętrzna) ze slotem microSD oraz sterowaniem przez BT z aplikacji na Androida.. Czyli przeniesienie do Androida przycisków i wyświetlacza. Można by też pokusić się o dostęp do karty przez BT/WiFi (kiedyś widziałem nawet takie karty, ale w dużym formacie), żeby można było bezprzewodowo również ładować pliki na kartę..
Niemniej uważam, że to co już powstało jest fajne i chcę to mieć :)
Pozdr.
xxl @2015-01-23 09:55:14
> mały gadżet, który pozwala załadować gry z poziomu komórki przez BT.. kupuje i tu zonk.. nie działa jak trzeba,
dziala jak trzeba. do ladowania gierek nie trzeba modyfikowac OS - w paczce SIO2BT jest xBIOS loader dla BT. - te informacje sa tez na forum.
_rocky @2015-01-23 10:01:10
Wyżej napisane, że: "Z orginalnym OS-em i z loader-em udało mi się załadować 70% gier. Ze zmodyfikownym OS-em – wszystkie."
xxl @2015-01-23 10:12:06
to dotyczy loadera ktory przepisuje OS do RAM - poczytaj na forum :-)
montezuma @2015-01-23 10:45:29
Ten opis powstał na początku grudnia. Wtedy nie było jeszcze xBiosa dla BT, który potrafi załadować większość gier.
mono @2015-01-23 14:17:52
Świetny projekt. Dzięki montezuma! Teraz trzeba się postarać o tego Androida.
_rocky @2015-01-23 16:53:41
Jeśli na gołym atarku odpalą się praktycznie wszystkie gry niewymagające rozszerzeń (wiadomo zawsze coś się znajdzie), to.. super sprawa... Uruchamiaj produkcję :)