Chyba każdy posiadacz komputera ośmiobitowego kojarzył w starych czasach system GEOS dla Commodore 64/128. Nie trzeba było być posiadaczem sprzętu z logiem C=, żeby nie zobaczyć gdzieś w "Bajtku" czy na giełdzie, usłyszeć w rozmowach z kolegami z podwórka, że istnieje taki graficzny system operacyjny. Duma posiadaczy Commodore 64, system z 1986 roku, firmy Berkeley Softworks, inspirowany systemem Apple Macintosh, wprowadzał alternatywę w komunikacji użytkownika z komputerem, naśladując systemy z komputerów 16-bitowych. "Przed jego powstaniem jedyną alternatywą było wprowadzanie poleceń z klawiatury i komunikacja z systemem operacyjnym w trybie tekstowym. GEOS udostępniał pulpit z umieszczonymi na nim ikonami oraz kursor poruszany za pomocą joystika, klawiatury lub myszy. Centralnym punktem systemu był górny pasek, w którego skład wchodził zegar oraz menu poleceń. Poprzez rozwijanie poszczególnych pozycji menu uzyskiwało się dostęp do poleceń systemu. Już wcześniej istniały programy udostępniające takie możliwości, ale GEOS był pierwszym środowiskiem graficznym dla komputerów ośmiobitowych" (Wiki). Entuzjastyczne recenzje systemu, pojawiły się również w polskiej prasie, choćby w "Bajtku" numer 3 z 1987 roku, w którym pojawił się artykuł "GEOS czyli jak C-64 może dogonić Macintosha".
My na ośmiobitowym Atari również doczekaliśmy się podobnych rozwiązań, ale żadne nie zdobyło szerokiego uznania czy popularności takiej jak GEOS na C64 (w 1987 roku połowa czytelników Compute!'s Gazette deklarowała jego używanie). Mamy do dziś Diamond GOS z 1988 roku, wzorowany na GEM z Atari ST, jest X-BOSS z 2000 roku, mamy rodzimy TRS Desktop z 2006 roku, a także wyśmienity GUI/GOS z 2011 roku.
Warto dodać, że rok po premierze GEOS przystosowano również do modelu C128 i nieoficjalnie do Commodore +4, a dwa lata później dla Apple II. GEOS jest oprogramowaniem zamkniętym, ale na szczęście dla miłośników tego systemu, w 2016 roku miał miejsce przełom - Michael Steil opublikował na GitHub pełny kod GEOS-a dla kompilatora cc65, pozyskany w wyniku inżynieri wstecznej z wersji 2.0 dla Commodore C64. I to się stało przyczynkiem również do dzisiejszej publikacji na AtariOnline.pl, o czym opowiada autor ciekawego projektu, bazującego na kodzie Steila: GEOS-a dla Atari!
Oto co opowiedział Maciej Witkowiak, znany jako YTM z grupy demoscenowej Elysium, sympatyczny autor tej niespodzianki: "(...) Jestem z obozu C=, ale dawno temu ktoś dał mi w prezencie Atari 65XE. Ostatnio wyremontowałem je, naprawiłem klawiaturę, rozszerzyłem do 128K, dokupiłem cartridge (programator EEPROM już mam) i testowałem sobie różne rzeczy - poczynając od Amaurote :). Zainteresowało mnie, jak nieco szybszy CPU i liniowa organizacja grafiki pomaga w rysowaniu prostokątów. I tak, krok po kroku, w dwa tygodnie, "niechcący" sportowałem GEOS 2.0 z C64 na Atari. Fakt, że nie zatrzymałem się na etapie rysowania prostokątów wynikał z praktycznego rozumowania: nikt nie będzie pisał nowego softu na GEOS dla Atari, ale jeśli jest szansa że przynajmniej część aplikacji i akcesoriów z C64 będzie działać to... warto sprawdzić. I udało się. O ile się orientuję, to nikt tego wcześniej nawet nie próbował. Minimalne wymagania to joystick i 128KB RAM (czyli 130XE), albo lepiej - rozszerzone do 320KB.
Szczęśliwie organizacja pamięci jest podobna i port jest binarnie zgodny z GEOS 2.0 z C64: ładuje ten sam manager plików (DeskTop) i "grzeczne" aplikacje po prostu działają. Te "niegrzeczne" albo odwołują się bezpośrednio do sprzętu (sprajty, dźwięk), albo obchodzą funkcje systemowe dla zaoszczędzenia pamięci. Z tych nielicznych, ale najbardziej pożądanych - pakietu aplikacji producenta: GeoWrite, GeoCalc, GeoPaint, GeoPublish, GeoFile wszystkie będą miały jakieś usterki (choć GeoChart wydaje się działać dobrze). Po prostu wolnej pamięci jest tak mało, że stosowane są różne tricki, które obchodzą funkcje systemu albo bezpośrednio wpisują bajty na ekran, który ma inną organizację: na C64 bitmapa przypomina font, na Atari jest liniowa. Są też bardziej fundamentalne powody - na przykład Desk Accessory (mały program, który można wywołać z wnętrza większej aplikacji), Calculator nie działa - bo do obliczeń odwołuje się do ROM BASICa komputera C64. Za to z tych mniej pożądanych, ale najbardziej dostępnych, z tego, co można pobrać z tej strony, większość powinna działać bez problemu.
W tej chwili wszystko działa z RAM-dysku - jeden XEX ładuje system i zawartość RAM-dysku do rozszerzonej pamięci. Nie wiem jak praktycznie można załadować na Atari ~260K plik. Na tyle się nie znam i po prostu wrzucam go w emulator. Wiem, gdzie moja wiedza i zainteresowanie się kończą - na pewno nie będę się zajmował sterownikiem dysków albo drukarek na SIO, może znajdzie się ktoś kto by chciał to pociągnąć. Cały kod źródłowy i informacje wylądowały na GitHubie.
Nie mamy oryginalnych źródeł. Kod dostępny w sieci wziął się z reverse engineering. W 1998/99 byłem zafascynowanym techniczną stroną GEOSa - jak oni to zrobili. Na czysto, korzystając z dostępnej dokumentacji (podręcznik programisty, nagłówki ze stałymi systemowymi i mapą pamięci) zdezasemblowałem i skomentowałem jądro systemu, dodałem kilka własnych usprawnień i niewiele myśląc wypuściłem w świat jako GEOS2000 poprzez ftp.elysium.pl. Tam też wisiały (na mirrorze są nadal), obrazy dyskietek ze wszystkim, co wówczas miałem. Okazało się, że takie rzeczy są bardzo trwałe - nie wiem kto to zrobił, ale na anglojęzycznej Wikipedii "GEOS 8-bit" do dziś jest ilustrowany obrazkiem z mojego boot dysku, z koślawą ikonką, którą narysowałem do "MasterDiskRmv" (mój mały programik do zdejmowania zabezpieczenia zapisu) i domyślną drukarką CP-80. Kiedy kupiłem SD2IEC sprzedawca dorzucił mi plik ZIP z softem - tam był ten sam obraz dysku z komunikatem "GEOS 2.0 CRACKED BY MACIEJ W."
Kilka lat temu Michael Steil (mist64) wziął te źródła, skonwertował na format ca65 i wykonał fantastyczną pracę: podzielił to wszystko na względnie izolowane funkcje (mnóstwo plików-segmentów) i napisał Makefile, który sprawnie generuje oryginalne binaria (kilka wersji) albo własne wersje. Jego praca jest dostępna tutaj. Napisał w pliku README to, czego i ja się trzymam, przekazując swoją pracę w ramach Public Domain: "For the underlying work on GEOS, please respect its license. The intellectual property added by the reverse-engineering and the subsequent improvements is in the public domain, but the authors request to be credited". Ostatni automatyczny preview znajdziecie tutaj (Artifacts na dole). Jest też kod źródłowy do zbudowania GeoWrite ze zmianami dla Atari, którego binarkę umieszczam w większym XEX. Jest do pobrania stąd.
Do opowieści Maćka dołączamy jeszcze zapis spotkania z nim na zoomie. Początkowo to nagranie nie miało mieć charakteru publicznego, bo było spotkaniem roboczym, żeby zapoznać się z projektem GEOS-a na Atari, wyjaśnić, co tam jeszcze jest do zrobienia. Ale wyszło na tyle ciekawie i edukacyjnie, nie tylko dla potencjalnie chętnych do pomocy, że postanowiliśmy je opublikować:
2022-11-14 13:14 by Kaz
komentarzy: 42
crrn @2022-11-14 13:38:54
Rewelacja. Dzisiaj się temu przyjrzę. Dzięki też za linki do źródeł GEOSa totalnie tym zapomniałem a chciałem jakiś czas temu się pobawić i spróbować napisać coś w CA65 pod grosa. Nie doczytałem może, ale czy programy z GEOSa C64 pójdą pod Atari? i odwrotnie?
Dziękuję Maćku za możliwość pierwszej publikacji takiego fajnego newsa o GEOS-ie na Atari. Cieszy też sposób, w który do nas trafiłeś, czyli przez rekomendację innego pasjonata Commodore, czyli kolegi Brusha, który publikował u nas materiał o konwersji Amaurote, pozwolę sobie zacytować:
"Chciałem przedstawić Maćka Witkowiaka (YTM/Elysium), który niedługo będzie chciał scenę Atari o czymś poinformować, a nie znam lepszego miejsca od atarionline.pl. YTM, poznaj Kaz’a. Gościa który prowadzi portal, którego Atarowcom szczerze zazdroszczę :)"
Bardzo dziękuję za tę przesympatyczną opinię w imieniu swoim i wszystkich osób, które przyczyniły się do stworzenia i trwania AtariOnline.pl.
crrn - tak to powinno działać, że programy z C64 powinny działać na Atari. Niektóre - jak napisał Maciek przede wszystkim te kilka z Berkeley - są jednak blisko sprzętu i powodują kłopoty, tu trzeba by ręcznie je poprawić.
Atarifann @2022-11-14 14:32:47
To teraz czekamy na emulator C64.
mono @2022-11-14 16:00:15
@ytm: W plikach: - kernal/hw/hw1b.s - kernal/start/start_atari.s wektory w RAM są ustawiane za wcześnie - trzeba je przenieść za konfigurację pamięci w PORTB. To powinno poprawić inicjalizację systemu na starcie.
@crrn: Właśnie to jest potężna zaleta tego systemu - programy czysto napisane i niezależne od sprzętu powinny śmigać i na C= i na Atari :)
Dorzuciłem jeszcze info na AtariAge, bo temat na pewno ciekawy dla anglojęzycznych, a przy okazji więcej osób jest w stanie pomóc w ewentualnym developmencie.
Brush - spokojnie, choćby kolega Mono szykuje dla Was niespodzianki :)
YTM @2022-11-14 20:58:49
@mono Dzięki, zanotuję to sobie pod issue #2
@crrn Tak, właśnie o to chodzi, że zobaczyłem szansę aby software z C64 działał bez zmian. Inaczej nie doprowadziłbym tego aż tak daleko. Jeśli chcesz napisać coś nowego to cc65/ca65 jest najprostszą drogą. W wyniku dostaniesz plik CVT (program+metadane) który wystarczy wrzucić w katalog pod ramdisk/ i przebudować XEX.
W ogóle nawet polecałbym zacząć od cc65 i potraktować C jako asembler z makrami wysokiego poziomu.
pin @2022-11-14 21:17:03
Ciekawa sprawa ogólnie, ale finalnie czarno to widzę jakoś. Tzn wątpię, by ktokolwiek to sensownie pociągnął i domniemam, że znaczącą przeszkodą będzie na dzień dobry brak pamięci (podstawowej) na podstawowe sprawy związane z I/O oraz obsługą jakiegoś sensownego filesystemu (sensowny = nie Atari dos...)
Jeszcze mamy w elysium filety pl katalog tools/systems/geos_software
Część jest dobrze opisana, ale np. co jest na tych wszystkich dyskach z kolekcji GeoThek to nawet ja nie wiem
@pin GEOS potrzebuje tylko blokowego I/O. Na sterownik drugiego urządzenia blokowego jest już zarezerwowane 3K w rozszerzonej pamięci. Na tę warstwę jest nałożony filesystem Commodore DOS z metadanymi (ikony i daty) już niezależny od sprzętu - po prostu adresuje ścieżki (1-255) i sektory (0-255) po 256 bajtów. RAM dysk udaje takie urządzenie - ma kilka ścieżek po 128 sektorów.
Zapomniałem jeszcze w systemach desktop o niemieckim X-BOSS, a przecież nawet mam z nim oryginalną dyskietkę z ABBUC-a, więc dodałem jeszcze taką pozycję w pierwszych akapitach artka i link do niej.
Pin @2022-11-15 13:58:31
@mono - no jeśli dostęp do sektora będzie poprzez procedury os, to czemu nie ;)
Cyprian @2022-11-16 01:26:17
Świetna wiadomość. Czyli teraz można pisać programy pod GeOS które zadziałają na /|\ i C64 ?
Cyprian - ...i Apple II oraz C128 i C+4, bo na tych platformach jest GEOS :). Ale sporo programów już jest. Chcesz pisać coś specyficznego? Może nie warto wynajdować koło od nowa tylko sprawdzić, czy już dostępny soft z danej dziedziny w pełni działa - a jeżeli nie to go dostosować do Atari?
Cyprian @2022-11-16 09:58:45
chodziło mi o proste okienko z napisem "Atari rządzi!" ;)
ja tutaj widze jeden problem... w sumie sprzętowy... trzeba wymyśleć (chyba, że już jest) jakąś tanią myszkę, która będzie działać na atari i commodore. szukałem dla c64 myszki i to nie są tanie rzeczy... ale sam zamysł jednego softu dla tych platform to super rozwiązanie :)
zyga64 @2022-11-16 11:44:46
@YTM Gratulacje @Szczepan Do C64 jest dostępny interfejs myszki PS/2 (DYI lub allegro) emulujący C=1351. Mała atarynka też chyba ma jakiś standard ? Coś mi świta że niektóre programy korzystały z myszy amigowskiej ? Jeśli tak to istnieją interfejsy dla myszy PS/2 czy USB
Z tego co pamiętam, to GEOS posiada wsparcie dla myszki w standardzie Amigi, na pewno w którejś dostępnej w sieci wersji taka obsługa była w komplecie w obrazie .d64. A to już jest tanie rozwiązanie, bo amigowych myszek i klonów jest mnóstwo.
pirx @2022-11-16 16:08:46
myszki od st i amigi roznia sie tylko kolejnością bitów, większość softu na małe atari obsługuje obie (jak już widzi mysz). a tak naprawdę to jest atarowski TRAK-BALL CX22 tylko do góry nogami :)
Jacques @2022-11-16 16:44:56
Wszystko się zgadza, dlatego są też myszy z przełącznikiem ST/AMIGA - kwestia zamiany dwóch pinów we wtyczce :-)
pin @2022-11-16 22:27:48
.. no to ten Atarowki GEOS w żaden sposób na podłączenie myszy nie reaguje. Chyba, że to dopiero będzie.
Myszka emulująca joystick jest straszna, już lepiej trzymać się joysticka.
Sterownik (Input driver) można załadować z DeskTopu (C= + I) tylko najpierw musi być napisany :). Pióro świetlne to dobry punkt startowy dla emulatorów - można łatwo przenieść kod z C64.
A co masz na myśli, mówiąc że straszna? My mamy takie myszki od ST/Amigi, które podpina się do portu joya i działają całkiem, całkiem. Są też specjalne interfejsy, dedykowane do podłączenia myszki, ja np. mam DarkMouse PS2.
Mówił o myszce emulującej joystick, czyli z punktu widzenia Atari/C64 widocznej jako joystick. Działa z każdym programem obsługującym joystick. IMHO można dobrze zrobić taką myszkę - w Atari800 oprogramowałem taką emulację i w "Trzmielu" nieźle sobie radziła. Ale też można sknocić na kilka sposobów.
pin @2022-11-20 13:01:58
hehh, miałem gdzieś tę myszkę od komody co emuluje joy'a .. pytanie gdzie to teraz jest..
Misza wykonał polskie napisy do filmu z Maciejem, więc można skorzystać z automatyczne tłumaczenia na inne języki, w tym na angielski, niemiecki i hiszpański. Jeśli więc ktoś ma takich znajomych, który chcieliby się zapoznać z tym materiałem, ale nie znają polskiego - jest teraz możliwość.
ZbyniuR @2022-12-01 01:20:30
Śmiem wątpić w prawdziwość newsa o GEOSie dla AppleII. Raczej komuś sie pomyliło ze systemem GSOS dla Apple 2GS, którego premiera zbiegła sie z GEOSem.
A o GEOSie oprócz Bajtka, było też w Horyzontach Techniki 8/87 str28, oraz znacznie obszerniej w Informik 1/88 str24-27.