Dzisiejszy artykuł to skutek kilkunastoletniej epopei, która rozpoczęłą się dla mnie w okolicach 2008 roku, gdy rozpocząłem szukanie człowieka z Wrocławia, którego pamiętałem pod ksywą Brodaty, a który prowadził studio komputerowe, gdzie sprzedawał mi gry do Atari na kasetach, a potem zamontował mi też w magnetofonie Turbo 2000, dając w dzieciństwie dużo szczęścia. Udało mi się namówić go na pojawienie się na Silly Venture w 2011 roku, potem znowu przepadł na wiele lat, aż ponownie się pojawił na zlocie w Gdańsku parę lat temu. Cała historia rozwijana jest w tym wątku.
Kaz czułymi ramionami obejmuje Brodatego (po jego lewej czyli prawej dla czytelnika) i Sebana (po jego prawej czyli czytelnika lewej)
W ostatnim czasie Brodaty zaczął wspierać organizację Silly Venture i w końcu też zaczął regularnie pojawiać się osobiście, ostatnio wraz ze swoim sprzętem z epoki. A także z dyskietkami z epoki, które są głównym przedmiotem dzisiejszej opowieści. A zaczeło się od takiego maila od Brodatego, wysłanego po zimowej edycji SV2025:
"Zapomniałem po ostatnim Silly Venture przesłać Ci owoce ciężkiej pracy Sebastiana (Sebana) odzyskiwania uszkodzonych plików z moich historycznych dyskietek, na którym znajdowało się według napisu na dyskietce jakieś demo mojej firmy z tamtego czasu. I tu ciekawostka. Wychodzi na to, że moje demo "BRODATY DEMO" zostało w tamtym czasie zhakowane i jakiś/jacyś żartownisie puścili w obieg alternatywną jego wersję czyli "GARBATY DEMO". Takie rzeczy się dowiaduję po tylu latach :). Poniżej e-mail z przepięknym opisem odzyskiwania uszkodzonych plików. Pozdrawiam i do zobaczenia w ten weekend. Brodaty"
I w załączeniu email Sebana, którego analityczna, ale przystępna treść, bardzo jasno opisująca proces odzyskiwanie danych z dyskietek, zachwyciła także mnie. I dlatego publikuję całość, za zgodą Brodatego i oczywiście Sebana. Przypomnę kontekst, Seban pisze do Brodatego:
--- CZĘŚĆ PIERWSZA ---
Trochę to trwało, ale po powrocie z wyjazdu udało mi się w końcu zająć Twoimi dyskietkami. Mój napęd TEAC 720k (który jest wmontowany w stację TOMS 720, którą posiadam) był nieco bardziej tolerancyjny w stosunku do Twojej wiekowej już dyskietki i dzięki temu udało mi się, z drobnymi problemami, odzyskać praktycznie całą zawartość strony B tej dyskietki:
Przyjrzyjmy się zatem bliżej jej zawartości. Strona A była całkowicie czysta. To znaczy - wszystkie sektory były zapisane zerami. Co zatem znajdowało się na stronie B? Ponieważ mój napęd poradził sobie z odczytem wszystkich sektorów z tej dyskietki - gdy już miałem kopię - mogłem zacząć eksperymenty na obrazie dyskietki, który udało mi się utworzyć. Gdy za pomocą emulatora odpaliłem obraz dyskietki zobaczyłem to:
Prawdę mówiąc, gdy to ujrzałem, byłem mocno pozytywnie nastawiony, że się powiedzie, bo już prawie udało nam się odzyskać Twoje demo "brodaty". Jednak wybór opcji A spowodował jedynie zwiechę emulatora, więc coś było mocno nie tak. Szybko przyjrzałem się strukturze katalogu na dysku i okazało się ze pierwszy zbiór (opisany jako "DEMO BRODATY") okazał się zbiorem skasowanym, o długości 0 bajtów. Jednak gdy przyjrzeć się strukturze wpisów "katalogu" dysku widać, że...
...pierwszy plik o nazwie "DEM" jest co prawda skasowany i nie ma określonego początku, ale na szczęście drugi z plików o nazwie "DEM", ma już określony początek w systemie plików. Zatem jest nadzieja! Szybki rzut okiem na strukturę katalogu spod DOS-a i widzimy że faktycznie DOS pokazuje plik "DEM" o długości 274 sektorów:
A zatem jest nieźle. Po prostu "Mikro DOS" pokazuje na pozycji "A" nieistniejący plik, więc nie dziwne, że nie może go załadować! Jest jednak plik "B", który nie ma opisu, więc wszystko wskazuje na to że pozycja "B" to może być Twoje demo! Pytanie jednak, czy plik ma poprawną strukturę i czy da się wczytać? Szybka ekstrakcja pliku i sprawdzenie, czy plik DEM jest poprawnym plikiem binarnym Atari DOS. I już widzimy że...
...jest dobrze! mamy poprawny plik w formacie Atari DOS! Zatem nie pozostaje nic innego, jak tylko próba uruchomienia tego pliku. Odpalamy obraz dyskietki z pliku ATR, wciskamy (dla zmyły "B") i co widzimy? A widzimy to. Yes! Wszystko działa! Gry na pozycjach "C", "D", "E" również się wczytują i odpalają. Jedna uwaga: długo myślałem, że latające logo "Info-cell", po tym testowym wstępie, to całe demo... Jednak się okazało, że spacją opala się drugą część, a ponowne wciśnięcie spacji w drugiej części ponownie przenosi użytkownika do części pierwszej.
I teraz: ponieważ pierwsza strona dyskietki była czysta/pusta to pozwoliłem sobie na tę stroną zapisać poprawioną wersję całej dyskietki (po pierwsze świeży zapis i formatowanie, po drugie poprawna struktura logiczna dyskietki bez informacji o skasowanym/uszkodzonym pliku). Czyli: jak uruchomisz sobie obraz tej dyskietki pod emulatorem albo jak zbootujesz pierwszą stronę dyskietki to uruchomi się "odświeżona", poprawiona wersja tego co masz na stronie "B", a powinno wyglądać to tak:
W załączniku do tego e-maila dodaję dwa pliki (archiwa .zip) które zawierają materiały odzyskane z dyskietek, które mi przekazałeś. Archiwum zawierające wszystko, o czym napisałem powyżej, nazywa się info_cell_demo_disk1_recovery.zip, a w środku znajdziesz:
Czyli w podkatalogu "atr_images" masz obrazy dyskietek, jeden z nich ("direct_copy"), to kopia 1:1 tego co było na dyskietce, o której mowa. Z kolei "fixed_copy" to naprawiona wersja obrazu, natomiast w podkatalogu "XEX files" mam wydzielone pliki wykonywalne. Zarówno pliki .ATR jak i .XEX można uruchomić bezpośrednio pod emulatorem. Jeżeli chcesz to uruchomić na prawdziwym sprzęcie to są dwie opcja. Dyskietka (którą oczywiście odeślę) i kabel, o którym wspominałem (SIO2PC), plus oprogramowanie RespeQT, o którym wspominałem podczas naszej rozmowy na Silly Venture. Nad kablem pracę trwają, wyślę Ci go razem z dyskietkami. Na chwilę obecną możesz bawić się załączonymi plikami pod emulatorem (jeżeli używasz komputera z Windows, to na przykład Altirra będzie doskonałym rozwiązaniem). Jeżeli do tej pory nie korzystałeś z emulatora, daj znać, a powiem Ci jak go uruchomić. Potrzebne są pliki ROM z komputera Atari. Co prawda, autor emulatora Altirra dostarcza swoje wersje ROM-ów, ale one nie są w 100% zgodne z oryginalnym Atari OS.
--- CZĘŚĆ DRUGA ---
Skoro już pierwszą dyskietkę mamy za sobą, to teraz pora na opis przygód z drugą dyskietką, z której udało mi się wykonać kopię na miejscu, kopię nagraliśmy na dyskietkę NASHUA i dobrą wiadomością jest to, że kopia również się jakoś się odczytała na TOMS 720. Mówimy o tej dyskietce:
Jak zapewne pamiętasz, na tej dyskietce znajdowały się następujące pliki:
A więc były to:
1) BRODATY.DEM - którego nie udało nam się odpalić
2) INFO.BAS - które udało się nam uruchomić z poziomu BASIC-a za pomocą LOAD "D:INFO.BAS" po wcześniejszym załadowaniu DOS-a z dyskietki;
3) INFO.ZAB - to samo co INFO.BAS, jedynie zabezpieczone przed listowaniem;
4) AUTORUN.SYS - wygląda na coś nagranego niedawno (ma w środku ciąg znaków "2025", co jest raczej dziwnym przypadkiem, nie analizowałem kodu tego programu, bo nie uważałem tego za istotne, mogę to zrobić później);
5) GARB - nie wiedzieliśmy co to jest, ale zaraz wszystko stanie się jasne.
Dyskietka nie bootowała się, ponieważ nie miała zapisanego na pokładzie żadnego DOS-a czy loadera/inicjalizera. Ponieważ pliki numer 2 i 3 nie były już dla nas tajemnicą, postanowiłem się zająć plikami numer 1 i 5. Nie dało się ich załadować spod DOS, co zaraz okaże się jasne i oczywiste. Pierwszym etapem było przeniesienie zawartości dyskietki do obrazu ATR, oczywiście zrobiłem to dokładnie tak samo jak w przypadku dyskietki numer 1. Gdy już miałem plik ATR brodaty_demo.direct_copy.atr na swoim PC to wyciągnąłem pliki z obrazu dysku, tak abym mógł poddać je dalszej analizie.
Zacznijmy zatem od pliku BRODATY.DEM, który nas najbardziej interesował. Ponieważ używam Linuxa, to co będziesz widział poniżej to polecenia z terminala Linux. Podglądamy zatem jak wygląda początek pliku BRODATY.DEM:
Czyli znowu jest nieźle! Wszystko wskazuje na to że jest to plik binary Atari DOS (nagłówek $FF, $FF...). Potem widać tak zwany segment RUN ($e0, $02, $e1, $02), po czym mamy dwa bajty ($00, $5a) określające wektor uruchomienia programu, czyli $5A00. Skoro początek pliku jest obiecujący to można użyć dowolnego narzędzia analizującego budowę takich plików. Jest ich kilka, ja używam swojego prostego skryptu w Python-ie. Mamy taki wynik:
No i wszystko jasne! Aby plik był poprawnym plikiem binarnym w formacie Atari DOS, brakuje mu na końcu dokładnie 7 bajtów! Dlatego przy próbie jego wczytania mieliśmy komunikat o błędzie #136 ("end of file"). Loader plików spod DOS nie mógł wczytać tego segmentu, bo kończyły mu się dane. To znaczy nagłówek segmentu określał, że danych będzie więcej o 7 bajtów niż w rzeczywistości. Co można z tym zrobić? Można uznać że plik po prostu nie został nagrany w całości i niestety nie da się nic więcej z tym zrobić, można jednak zaryzykować i patrząc na koniec pliku...
...uznać, że tak naprawdę to widać tam koniec scrolla, więc można dopełnić ten plik na przykład siedmioma zerami i uznać, że nic więcej istotnego tam nie było. Być może uda się uruchomić tak poprawiony plik? Ryzykowne i mało prawdopodobne że się uda, ale co mamy do stracenia? Być może autor zapisując swój plik wykonywalny pomylił się o wielkość nagłówka? Zatem krótka zabawa edytorem .HEX i mamy co potrzebowaliśmy:
Dopisane 7 zer na końcu, więc teraz analizujemy plik ponownie:
Ha! No teraz to wygląda całkiem spoko! Można próbować uruchamiać! (nie nagrywałem filmików, wrzucę dalej już tylko zrzuty ekranu:
Całość to jeden obrazek, muzyka z gry "BLIP" oraz scroll. Wygląda na to, że to jakaś wcześniejsza wersja całości, jedna z wersji roboczych pewnie. Do tego te pliki w Basicu jako późniejsze intro. Wychodzi na to że na tej dyskietce są zlepki czegoś, co potem stało się pełnoprawnym demkiem "INFO-CELL / BRODATY DEMO". Pozostał jeszcze plik "GARB", który okazał się mniej więcej tym samym co powyżej, tak samo w pliku brakuje trochę danych na końcu:
Wychodzi na to, że brakuje jednego bajtu w segmencie danych $5000-$8633, a także brakuje wektora RUN dla programu, więc nawet po dodaniu jednego brakującego bajtu program się nie uruchomi, ponieważ nie ma poprawnego wektora RUN. Po chwili grzebania i uzupełnieniu pliku o odpowiednie dane, sprawa wygląda tak:
więc można próbować uruchomić już ten plik i o dziwo ta operacja się udaje, a ukazuje się:
Praktycznie to samo co wyżej, tyle że zamiast "BRODATY" widnieje napis "GARBATY", a w skrollu jest "R Bernardzikowski demo by Paweł Mirończuk". Wszystkie pliki z tej dyskietki znajdziesz w drugim archiwum, ta znaczy infocell_demo_disk2_recovery.zip, w środku znajdziesz następującą strukturę plików:
I teraz opis poszczególnych plików, katalog "atr_images" zawiera:
brodaty_demo.direct_copy.atr - to obraz dyskietki którą udało mi się przegrać na party (z tego co pamiętam tej żółtej?);
infocell.speed_init.atr - a tutaj zrobiłem Ci obraz dysku zawierający zwartość tych wszystkich tych plików (z obu dyskietek), wraz z takimi inicjalizerem (speed) który potrafi uruchomić wszystkie te pliki.
katalog "bas_files", zawiera pliki w BASIC, które były na dyskietce, czyli:
info.bas - program, który wyświetla informacje w wersji niezabezpieczonej przez listowaniem;
info.zab - ten sam program co powyżej który zawiera zabezpieczoną przed listowaniem wersję programu info.bas.
katalog "xex_files" zawiera:
brodaty.xex - naprawiona wersja "brodaty demo", tzn. taka która ma poprawną strukturę i się uruchamia;
garb.xex - naprawiona wersja "garbaty demo", oczywiście z poprawioną strukturą i dodanym segmentem RUN;
infocell.xex - pełne demo z pierwszej dyskietki (dodane do kompletu).
Natomiast podkatalog "org", w katalogu "xex_files", zawiera niepoprawione wersje plików, czyli w takiej formie, w jakiej istnieją na dyskietce (czyli ucięte, z nieprawidłową strukturą).
I teraz ostatnie słowo dotyczące obrazu dyskietki infocell.speed_init.atr, ten obraz, jak pisałem, zawiera wszystkie odzyskane i zebrane programy dotyczące INFOCELL/BRODATY, po jej uruchomieniu pod emulatorem lub na prawdziwym sprzęcie zobaczysz takie menu:
Możesz uruchomić dowolną pozycję z menu. Ten inicjalizer uruchamia także programy w Basicu (pod warunkiem, że uruchomiłeś komputer bez OPTION), więc można uruchomić również pozycję "D" (napisaną w Basicu). Jako że druga strona dyskietki NASHUA była pusta, pozwoliłem sobie nagrać na nią właśnie ten obraz dysku. Będziesz miał wszystkie swoje demo-reklamówki na jednej dyskietce. Ufff. Ale się naprodukowałem! Trochę mi to czasu zajęło. Pozdrawiam Cię serdecznie Sebastian (a.k.a Seban/Slight)"
Seban - mnie ciekawi, czy czasem te brakujące bajty w plikach to nie jest skutek używania jakiegoś kopiera "zabezpieczającego" u Brodatego, który kopiując pliki dodawał jakiś nagłówek. Inni mogli o tym nie wiedzieć i nie mieć takiego banalnego zabezpieczacza, więc pliki się u nich nie odpalały.
Kumpel @2026-01-30 23:25:59
Ja od Brodatego gdzieś koło 1999 kupiłem Amigę.
Pisałem o tym w newsie z 2021-08-31 o godzinie 10:05:44 a dzisiejsza powtórka to tak zwana renowacja napisu (pzdrx dla 3 graffitu). Oby ta wiedza nie zaginęła !!!
as... @2026-01-30 23:27:42
Toms 720, nie umie w zabezpieczenia oficjalnie ...
Pabloz @2026-01-31 12:17:00
Zapraszamy na AMIPARTY do Chełma w dniach 13-15.03. Wbrew nazwiej jest to multiplatformowa impreza. Wielu atarowców uczestniczy w tym wydarzeniu, zabierając sporo ciekawego atarowego sprzętu..W tym roku impreza obchodzi 20 lecie. Będzie wiele zaskakujących niespodzianek. ZAPRASZAMY !!!
seban @2026-01-31 14:21:07
Dyskietki nie były zabezpieczone przed kopiowaniem. Problemy z odczytem niektórych miejsc wynikały jedynie z wieku nośnika.
seban @2026-01-31 14:26:23
Brakujące bajty w plikach mogą wynikać z różnych rzeczy, np. złego linkowania, może to wersję robocze plików, może niedokończona robota, powodów może być sporo. Na szczęście było to ma tyle oczywiste że pliki udało się doprowadzić do poprawnej formy.