Béton brut

Dwadzieścia pięć lat minęło
⌜ Technologia ⌟

2010-07-27

Dwadzieścia pięć lat. Dziewięć lat na pierwszej linii innowacji i postępu. Szesnaście lat epickiej opery mydlanej i bratobójczych walk pod każdą długością i szerokością geograficzną. Amiga, jedyna platforma, którego średnia użytkowników chorych psychicznie wypada jakoś jeden i jedna trzecia na użytkownika.

Amiga to taka Polska w wersji binarnej. Pamiętamy jak w 1410 żeśmy tym chrześcijanom spuścili lanie, że tylko my na Moskwę z sukcesem i kiedy tak wspominamy, to przysłowiowe psy srają po chodnikach.

Amiga to też jedyna platforma, której byłem fanbojem. Kiedy mówię fanbojem, to myślę o kimś, kto rozwalał płyty PC-ta dla zabawy. Ktoś, kto nie dorzucił się jakiemuś biednemu człowiekowi ze sceny do biletu po tym, jak zauważył że to użytkownik innej platformy. Ktoś, kto wtedy schylił się tak, aby dało się odczytać z czapki “A M I G A” i powiedział swoim młodzieńczym basem: “chyba gramy dla innej drużyny”.

Mam nadzieję, że czytelnicy poznali mnie na tyle, żeby pojąć, że nie chodziło o czystej krwi totemizm. 1

AmigaOS był genialny. AmigaOS był systemem, który mimo swoich technologicznych problemów potrafił wciągnąć każdego, kto kochał komputery w ten czysty sposób, w jaki można było kochać komputery w 1992, zanim Twoja Stara wrzucała foty na Naszej Klasie.

Dwadzieścia pięć lat później siedzę w domu i piję piwo czytając relacje z różnych imprez związanych z tą, jak to nazwał jeden z portali, “okrągłą rocznicą”. Dopada mnie nostalgia i rzucam się w kierunku laptopa. Zainstaluję sobie AmigaOS 3.1 i powiem Wam, co było w nim fajnego.

Jestem z siebie trochę dumny, a trochę mi żal, że marnuję głowę na takie informacje. Postawiłem cały system od zera, z dwóch dyskietek. W godzinę. Bez większego problemu. Ostatni raz używałem Amigi na poważnie w 2003. Niektóre rzeczy nie chcą wyjść z głowy. Pierwsza dziewczyna, pierwsza wódka, pierwszy komputer, którym rządziłeś.

AmigaOS zachwyca. Jak to nie zachwyca, jak zachwyca?

Przypisano mi te zasoby

Urządzenia w AmigaOS posiadały dwie nazwy: logiczną i fizyczną. To nie jest całkowita prawda, ale to bardzo dobre kłamstwo. Nazwy dysków nie miały znaczenia w takim sensie, w jakim jesteśmy do tego przyzwyczajeni na innych systemach. Główny dysk dysk twardy zwyczajowo przyjmował fizyczną nazwę DH0: co stanowiło logiczne ciągłość, jeżeli wiedziało się, że wewnętrzna stacja dyskietek to DF0:. DH0: to nasz /dev/sda1 lub C:, nic nie stało jednak na przeszkodzie, żeby dysk ten nazywał się Cherbata:. Nic, prócz ortografii.

Kiedy uruchomiłeś swój system z dysku Cherbata:, to w tle działa się czarna magia zwana przypisami. Komputer zaczynał odzywać się do dysku startowego per sys: i doklejał do ważnych katalogów kolejne nazwy. I tak katalog Libs/ na dysku Cherbata: stawał się Libs:, to samo działo się z katalogami C, S, Devs, Fonts i innymi.

A co to dawało praktycznie? No cóż, wszystkie zasoby w AmigaOS (czcionki, biblioteki, sterowniki) były w pewnym sensie programami, a przypis mógł wskazywać na więcej niż jedną ścieżkę. Przykład z życia: wpada kolega narysować kolekcję obwisłych penisów, której to kolekcji użyje jako argumentu w podwórkowej dyskusji o wyższości klubów sportowych. Znajomość anatomii pozwala mu szybko ukończyć dzieło, niestety nie posiadam na dysku jego ulubionych fontów. Zamiast przegrywać jego czcionki do mojego systemu, piszę po prostu (zakładając, że dysk kolegi to DH1 w moim systemie):

assign fonts: dh1:fonts add

Raz, dwa, trzy i już może używać swojej ulubionej kombinacji bold-kapitalik-underline-outline.

Inny przykład. Odwiedzając znajomych ze swoim dyskiem, co i raz natrafiałem na system, na którym mój dysk nie chce wystartować z pełnym systemem. Honorową odznaką było posiadanie takiego systemu, który sobie radzi z wieloma rodzajami rozszerzeń i zwężeń dostępnych dla komputerów Amiga. Napisałem mały program, który wykrywał typ procesora i koprocesora oraz innych flaków i wykonywał stosowne przypisy do katalogów z bibliotekami. Możecie o tym myśleć jako o przenośnym systemie, który zależnie od tego, czy jest uruchamiany w środowisku 32- lub 64-bitowym, wybiera stosowny zestaw bibliotek do użycia.

Dzięki odkryciu rozkazu assign zostałem też guru dla wielkiej rzeszy niedomytych amigowców, którzy używali komputera zgodnie z jego przeznaczeniem, to znaczy strzelali do obcych w rytm muzyki techno, kiedy w tle zapieprzała paralaksa z miliardem kolorów, przy których lata sześćdziesiąte wyglądały jak proszona herbatka u babci Jadwigi.

Wspominałem o tym kłamstwie z nazwą logiczną i fizyczną? Dobrze. Robiło się tak. Jeżeli miałeś szczęście, to dyskietka z grą była systemowa (to znaczy zawierała normalną strukturę danych jak katalogi i pliki i dawała się odczytać przez system bez własnego bootloadera) i najczęściej po jej włożeniu do napędu DF0: na ekranie pojawiała się jej ikonka podpisana np. PornPart1 co znaczyło dla nas tyle, że w fizycznym napędzie DF0: dostępny jest logiczny wolumin PornPart1:. Wszystko co musiałeś zrobić, to przegrać pliki ze wszystkich dyskietek do katalogu na twardym dysku i napisać skrypt. O, taki:

assign PornParty1: dh0:gry/pornparty
assign PornParty2: dh0:gry/pornparty
dh0:gry/pornparty/pornparty

Gra, szukając dyskietki pornparty1:, zostanie odesłana do katalogu na dysku. Teraz wystarczy to zapakować, zanieść na giełdę i zebrać obietnice przyszłego piwa, które kupią Ci lamerzy, jak tylko skończysz więcej niż piętnaście lat.

Mała piracka trivia dla lokalnych amigowców. Po tylu latach już chyba mogę? Moim największym osiągnięciem na scenie crackerskiej było przystosowanie zajumanej wersji Sensible World of Soccer do działania na Amidze 500. Piracka wersja sprzedawana w znanym wszystkim miejscu na ulicy Przybyszewskiego nie działała, ku wielkiemu smutkowi większości użytkowników zbyt skąpych na oryginał nie mówiąc już o Amidze 1200. Enter The Emil. Szybki rzut oka na dyskietkę i okazało się, że została ona przygotowana pod nowy system plików, którego A500 nie umiała gryźć. Siedem sekund później już umiała. Odniosłem swoją wersję do sklepu za co uzyskałem stosownie duży kredyt na nowości z katalogu z żółtą okładką.

Jeżeli kupowałeś SWOS-a na dwóch dyskietkach tam, w tym sklepie, i grałeś na swojej ukochanej pięćsetce, to możemy sobie przybić piątkę! Ręka w rękę zadeptaliśmy jakikolwiek sens pisania oprogramowania na naszą platformę. Karma trochę dziwka, ay?

Wracając do przypisów. Obraz wart tysiąca słów.

Utwór zaczyna się spokojnie, trwa i spokojnie się kończy

Prawdziwego mężczyzny nie poznaje się po tym jak zaczyna, podobno. Podobno też miło jak zaczyna bez skarpetek. Amiga zaczynała proces bootowania bez niczego.

Doszliśmy dziś do momentu, w którym sekwencja startowa systemu to praktycznie system sam w sobie. Dawno zapomniano o prostocie autoexec.bat i config.sys, dziś potrzebne są rekursywne skrypty, event-driven i żeby jeszcze backend koniecznie w XML, a jak się nie da, to jebnijmy jakąś bazę.

Żeby nie było, rozumiem, z jakiego powodu jesteśmy tu, gdzie jesteśmy. Dobrze, gdzie ja jestem, a ja nie jestem w stanie prześledzić całego procesu wczytywania się systemu na swoim laptopie. Ofiary własnego sukcesu.

Były jednak czasy, gdy mężczyźni byli mężczyznami, kobiety kobietami, a pociągi jeździły na węgiel. Czasy prostsze, sielanka pod gruszą i s:startup-sequence, który rozkręcał Amigę.

Prosto i do celu. Mimo całej świadomości, że nie da się utrzymać współczesnego systemu, który zwisałby z jednego skryptu startowego, to lubię wspominać czasy, w których wiedziałem, co też się dzieje pod maską mojego komputera.

Co robi antagonista Jamesa Bonda? Daje mu szansę ucieczki

To jedna z tych rzeczy, o których zapomniałem, że mi ich brakuje. Ktoś mógłby powiedzieć, że w takim razie mi ich nie brakowało, ja znów twierdzę, że pogodziłem się z losem.

Programiści nie są specjalnie znani z ich zamiłowań do dokumentacji, która nie odnosi się bezpośrednio do przekładania bajtów z jednego miejsca na drugie. Podręczniki zawierające informacje co do stylu traktowane są jako delikatna sugestia i nic więcej. Z tym większym zdziwieniem przypomniałem sobie, że prawie każdy program do ustawiania preferencji (programy systemowe zwykły mieć osobny “konfigurator” dostępny gdzieś w sys:prefs) posiada opcję “Use”.

Zanim o tym, kilka słów o przechowywaniu ustawień w AmigaOS. Słyszeliście kiedyś o RAM-dysku? RAM-dysk to taki wirtualny dysk, który znajduje się w pamięci (serio, kapitanie Oczywistość? Dziękujemy!) i jego zawartość ulatuje razem z resetem komputera. W AmigaOS RAM-dysk jest niezbywalną częścią systemu. Co różniło jego implementację (i w pewien sposób wpłynęło na to, że to jedyny system na którym stał się popularny) od innych to fakt, że dokonywał on automatycznie przydziału pamięci. DOS-owy odpowiednik miał określone przy tworzeniu, że zajmie np. megabajt i już. RAM-dysk w Amidze zajmował tyle, ile zajmowały umieszczone tam pliki, a górną granicą była dostępna dla systemu pamięć.

RAM-dysk był używany do trzech rzeczy

  1. rozpakowywania programów celem przetestowania, nie trzeba było sprzątać po sesji
  2. zapisywanie plików tymczasowych
  3. przechowywanie ustawień

Przy starcie komputera system kopiował zawartość katalogu EnvArc: do RAM:Env i przypisywał do niego nazwę Env:, katalog EnvArc (od Environment Archive) zawierał ostatnie zapisane ustawienia, a Env: ich bieżącą kopię. Przejdźmy do slajdu numer następny.

Save”, “Use” i “Test”. Kliknięcie “Use” powodowało zapisanie zmiany do katalogu Env: (więc na RAM-dysk) i pozwalało przetestować zmiany. Jeżeli udało nam się ustawić czarny tekst na czarnym podkładzie i spowodować aby wskaźnik myszy przesuwał się tylko o cal, to jeden reset dalej czekało nas wybawienie z opresji. To jedna z takich banalnych rzeczy, które cieszą.

Oczywiście dziś trzymam swoje dotfiles w repozytorium GIT-a, co wymagało kilku skryptów 2, drugiego serwera, który utrzymuje te dane i wprawdzie wszystko jest rozproszone i nowoczesne, to jednak nie mogę się jakoś oprzeć wrażeniu, że kopiowanie katalogu ma w sobie jakąś prostotę, przy której moje rozwiązanie jest wymęczone jak Stanisław Lem po maratonie “Na Wspólnej”.

O tym jak kodeki dało się instalować bez “paska narzędziowego” Aleksy dla IE

Dzisiejszym słowem-wytrychem jest skalowalność, wczorajszym była modułowość. Jeżeli program był modularny, to znaczyło, że marketingowiec mógł zawsze powiedzieć o tej rozpieprzonej części programu “wystarczy wymienić moduł”. Zaraz, miało być o tym systemie z lat dziewięćdziesiątych.

AmigaOS miał wbudowany system DataTypes. Co to znaczyło? Wyobraź sobie, że piszesz program graficzny, ale nie masz specjalnie czasu na te wszystkie głupie formaty plików, które krążą po dyskietkach znajomych. Odwołujesz się więc do DataTypes przez standardową bibliotekę systemową i mówisz mu “wczytaj obrazki, o których wiesz jak”. Ta dam!

DataTypes to dekodery (animacji, obrazków, dźwięków) napisane tak, aby używając wspólnego API pozwolić użytkownikowi wczytywać media bez potrzeby zmieniania programu. Jeżeli wczoraj nie było formatu PNG (młodsi mogą nie pamiętać, że nie było. Czasy wielkiej schizmy LZW wywarły piętno na nas wszystkich) a Twój program jest napisany według zasad, to pojutrze ktoś napisze odpowiedni “datatyp”, użytkownik go sobie zainstaluje i gotowe.

Nie mówiąc już o tym, że odpowiednie dekodery mogły być przygotowywane pod specjalne linie procesorów czy też kart graficznych, dzięki czemu mogłeś sobie wybrać coś, co będzie działało jak sobie życzysz.

Po raz kolejny, mimo mojego kompletnego umiłowania do kompilowania programów, co brzmi lepiej dla Zwykłego Usera:

  • Zainstaluj ten program (DataType way)
  • Ściągnij libpng-dev i przekompiluj z —enable-png

Więcej niż piktogramy

Ikona w AmigaOS była czymś więcej niż ikony w innych systemach. Po pierwsze była dodatkowym plikiem, którego nazwa zgadzała się z nazwą pliku, który miała opisywać i rozszerzenia .info. Każda ikona posiadała dwa stany: przed i po kliknięciu. Prawdopodobnie miało to pomóc określić stan w jakim znajduje się ikona, praktycznie skupiło się to na projektowaniu uroczych ikonek, które wyglądały jeszcze zabawniej po kliknięciu. Hipopotamek z zamkniętą buzią. Po kliknięciu z otwartą i nutki. Tak się włączało szlagierowy odtwarzacz muzyki HippoPlayer.

Nie tylko lansem stały ikony. Metadanymi stały też.

Poza standardowymi rzeczami, takimi jak atrybuty pliku, komentarz i data utworzenia, widzimy pole “Default tool”, co jak bardziej rozgarnięci czytelnicy mogą zgadnąć, jest miejscem do wpisania domyślnego programu, który włączy się przy dwumlasku Bieleckiego. Mogłeś więc komponować sobie muzykę w programie muzycznym, zawrzeć nazwę tego programu w polu “Default tool” i klikając wracać do pracy nad nim, ale mogłeś też bez problemu zaciągnąć ikonę do HippoPlayera i posłuchać efektów.

A te “Tool Types”? To nic innego jak dodatkowy sposób na konfigurowanie programu w stylu .ini, zmienna = wartość. Pozwalało to zmienić domyślne ustawienia wywoływanego programu (w przypadku zrzutu ekranu jest to instalator aplikacji).

Wrócę jeszcze do komentarzy. Komentarze to była dopiero super sprawa. Ponieważ AmigaOS nie dostarcza żadnych narzędzi do zarządzania swoim cyfrowym żywotem i do tego jest systemem jednoużytkownikowym, to normą było ręczne kopiowanie plików do systemu. Jak ktoś miał świeższą wersję reqtools.library na dysku, to nie ściągał pakietu instalacyjnego, tylko kopiował go sobie do libs:, przy takim podejściu do systemu komentarze do plików pozwalały mi zachować zmysły.

Przed instalacją programu wpisywałem w konsoli polecenie, które ustawiało komentarze dla wszystkich plików programu na np. “Plik pochodzi z programu XYZ, zainstalowano w marcu”. Potem pozwalałem się mu instalować. Kiedy coś mi nie grało z fontem czy biblioteką, po prostu patrzyłem na komentarze i już wiedziałem, że plik został nadpisany. Jak nie masz dpkg to masz łeb!

A jak było naprawdę?

AmigaOS w tamtym wcieleniu był systemem bardzo dobrym. Na lekko dokarmionej Amidze człowiek pracował jak pszczółka i czuł się jak bóg. Bo i serio nie było specjalnie przeciwników. Apple było praktycznie nieznane, a OS7 powodował tylko pusty śmiech. Microsoft miał dopiero przywalić z Windows 95 i zgarnąć pulę nad długie lata. Atari, poza małą niszą, nigdy nie przekonało nikogo TOS-em, a Falcon spadł z drzewa zanim się dobrze wykluł. Ośmiobitowce dawno już trafiły na karty historii.

Światu nie zabrało długo by dopaść, a później przegonić AmigaOS. Potem wybuchła wojna domowa i dzięki wielkiemu wysiłkowi walczących stron prawie nikt nie przeżył. Powstały trzy największe obozy, tak wielkie, że po ustawieniu ich na łbie od szpilki zostanie miejsce dla kilku milionów diabłów. Ale to już historia na inną okazję. Jeżeli chcecie posłuchać mojej jednostronnej i absolutnie zakłamanej historii współczesnej świata po Commodore, to możecie napisać e-maila. Zbiorę się na pięćdziesięciolecie.

Przekonałeś mnie

Miałeś Amigę i nagle zachciało Ci się klikać? Są opcje.

  • WinUAE dla tych, którzy chcą postrzelać z paralaksą. Używać też pod Linuksem via WINE, chodzi dużo lepiej niż natywne port.
  • Amiga Forever KX Light opcja dla ludzi zainteresowanych emulacją z dozą legalności.
  • Icaros Desktop to dystrybucja open source’owej reimplementacji AmigaOS, AROS-a. Myśl Haiku do BeOS minus binarna kompatybilność.
  • MorphOS, ideowy spadkobierca AmigaOS, działa na Macu Mini i eMacu (w przyszości PowerBook) z procesorami PowerPC. Wersja darmowa działa przez pół godziny
  • AmigaOS 4.1, oficjalny następca. Działa tylko na wybranych płytach. Możesz kupić Samanthę lub Pegasosa.
  • Opcja nerdout: reimplementacja A500 w FPGA.

Full disclosure, kumpluję się z eFUNZINe. Jak coś kupicie powołując się na ten tekst to mogę obiecać, że coś surpresę.

  1. od tego w tamtych czasach miałem ŁKS. Jak powiedział kiedyś nbw: Amiga i ŁKS, zawsze mieliśmy przejebane
  2. żeby mi się .git nie mieszał z katalogiem domowym
QR for Dwadzieścia pięć lat minęło