Jak działają kasety na Commodore i Atari?

Profesjonalne komputery korzystały już w tych czasach z dysków twardych, ale ich wielkość, cena i stopień dostępności wykluczał je zdecydowanie z zastosowań cywilnych, zresztą nie zapewniały one możliwości przenoszenia danych, czy dystrybucji oprogramowania.

Oczywistym wyborem zdawały się być dyskietki – które przechodziły właśnie miniaturyzację i korzystać można było już z dość wygodnych i niewielkich, bo zaledwie 5 ¼ calowych w przeciwieństwie do swoich 8-calowych poprzednich wersji.

Niestety cena stacji dyskietek wynosiła często tyle samo, a czasami i więcej co cena samego komputera, a i same dyskietki do najtańszych nie należały.

Nic więc dziwnego, że zainteresowano się innym nośnikiem – używanej już od lat – taśmie magnetycznej.

Rzecz jasna nikt nie zakładał, że w domach pojawią się nagle czytniki profesjonalnych taśm wielkości lodówki, ale tak się składało, że w dużej części domostw na stanie znajdowały się magnetofony i zwykłe kasety audio – służące do słuchania i nagrywania muzyki.

Taki magnetofon można było za pomocą zwykłych kabli audio podłączyć do komputera i gotowe. Nagle praktycznie bezkosztowo, stawaliśmy się posiadaczami własnego systemu do przechowywania danych.

Także kasety audio były dostępne praktycznie dla każdego i za niewielkie pieniążki.

Typowym przykładem komputerów znanych z Polski, które wykorzystywały normalne magnetofony, i kasety, jako nośniki pamięci są ZX Spectrum i rzecz jasna liczne jego klony, np. Timexy.

Wystarczy podłączyć wyjścia i wejścia audio słuchawek i mikrofonu do ich odpowiedników na magnetofonie i gotowe.

Rzecz jasna, jeśli magnetofon nie miał wejścia na zewnętrzny mikrofon – nie można było samodzielnie nagrywać programów, dlatego właśnie najpopularniejsze do użycia z Sinclarami były tzw. magnetofony reporterskie – z jednej strony cechował je mały rozmiar – bo miały być przenośne – z drugiej strony – obecność wejścia mikrofonu.

Komputer musiał jeszcze wiedzieć jak zapisać i odczytać dane na kasecie. Jako, że korzystano z urządzeń przeznaczonych do słuchania i nagrywania muzyki, to właśnie postanowiono się posłużyć muzyką, choć specyficzną.

Musiano jeszcze tylko wybrać w jaki sposób cyfrowe zera i jedynki odzwierciedlane będą w analogowym świecie dźwięku.

Jednym z pierwszych z popularnych standardów to opisujących był CUTS czyli Computer Users’ Tape Standard używany między innymi w maszynach Acorn, BBC Micro, czy komputerach zgodnych ze standardem MSX.

Przewidywał on, że jedynka, zwana znacznikiem będzie na kasecie zapisywana jako sygnał o częstotliwości 2400h (biiip), a zero zwane spacją jako sygnał o częstotliwości 1200h (beeep), a oba sygnały trwać będą tyle samo czasu.

Rzecz, jasna – jak to zwykle bywa – nie był to jedyny standard – była ich cała masa.

Np. tone burst – za jedynkę uznawał obecność sygnału o danej częstotliwości, a za zero po prostu ciszę.

Bardziej cyfrowy PWM, czyli pulse-width modulation, wykorzystywał modulacja szerokości impulsów, czyli mówiąc po polsku rozpoznawał zera i jedynki po długości sygnału i jego braku.

Inne rozpoznawały nie same rodzaje sygnałów, a jego przejścia w ciszę i odwrotnie.

Możliwości i pomysłów było wiele, a część z nich powiązana była z tym, czy taki sygnał mógłby być bez problemów przesyłany przez istiejące linie telefoniczne, dalekopisowe, nadawany w radio, nagrywany w zwykłym magnetofonie domowym, czy w specjalistycznym urządzeniu.

Ano właśnie – komputery takie jak Commodore i Atari nie korzystały już ze zwykłych magnetofonów, a posiadały własne dedykowane ich rodzaje. Dzięki temu komputer miał pewność, że sygnał odbierany i zapisywany, nie będzie zależał np. od ustawienia głośności, czy pokrętła basów, jakie można było znaleźć na większości magnetofonów domowych, a co za tym idzie zapewnić większą niezawodność rozwiązania.

W innych przypadkach sygnał z magnetofonu mógł być za głośny, za cichy lub mieć za bardzo zmienioną barwę dźwięku.

Oprócz dedykowanych magnetofonów dla komputerów Commodore – które nota bene działały z wieloma maszynami – począwszy od PETów, poprzez VIC-20, C64 a na C128 kończąc oraz magnetofonów dla komputerów Atari – równie licznych, często magnetofony wbudowane były w bryłę samego komputera – co stosowano w wielu modelach różnych marek – w tym ZX Spectrum, Amstradzie, itp. Zaletą takiego rozwiązania była kompaktowośc, wadą brak łatwej możliwości jego wymiany – a jako, że magnetofon jest urządzeniem z dużą ilością części mechanicznych – awarie nie były mu obce.

Jak szybkie były te metody zapisu?

Jak można wywnioskować, z powyższych opisów standardów wszystko zależało od czasu trwania pojedynczego sygnału oznaczającego zero lub jeden. Im krótsze były te czasy, tym większa była prędkość. A ją samą podawano w bodach na sekundę.

Zapytacie jednak, czym jest bod? Bod to pojedyncza zmiana sygnału. Jeśli coś ma prędkość 300 bodów/sekundę oznacza, że może 300 razy na sekundę zmienić nadawany przez siebie sygnał.

Jak zmienić prędkość tą na bardziej przyjazne nam bity na sekunde? Bardzo prosto – wystarczy zastanowić się ile wartości może nieść jedna zmiana sygnału i pomnożyć ją przez prędkość w bodach.

A mówiąc po ludzku?

Gdybyśmy mieli np. osiem różnych częstotliwości pisku jeden bod niosłaby informację o o 8-różnych wartościach, czyli o całym bajcie. Jak jednak widzieliście, zazwyczaj w formatach zapisu obecne są tylko dwa rodzaje sygnału – oznaczający zero lub jedynkę, czyli niosący jeden bit informacji.

No i dochodzimy tutaj do wniosku, że w przypadku zapisu na kasecie magnetofonowej 1 bod to właściwie tak naprawdę 1 bit.

W omawianym przeze mnie standardzie CUTS zdefiniowano kilka prędkości. Podstawowa 300 bodów/s charakteryzowała się tym, że sygnał jeden o częstotliwości 2400h trwał 8 cykli fali, a zero, czyli 1200h trwał 4 cykle fali. Z prostego przeliczenia Hz na sekundy, można obliczyć, że oba sygnały trwały około 3,3 ms.

Przy prędkości 1200 bodów czasy te zmniejszono do dwóch cykli 2400Hz i jednego cyklu 1200hz, czyli 4 krotnie – do 0.83 ms.

Przy prędkości 2400 bodów – zamiast skracać ilość cykli – zwiększono dwa razy częstotliwość sygnału – zmniejszając jednocześnie 2 razy czas jego trwania.

Ile więc mieściło się danych na typowej kasecie o długości 30 minut?

W przypadku Atari, którego magnetofon miał prędkość 600 bodów, było to około 132 KB, a w przypadku Commodore 64, którego magnetofon był dość wolny, bo miał prędkość 300 bodów, zaledwie 66KB.

Zauważcie, że nie podaje fizycznej długości taśmy, a czas jej zapisu. Teoretycznie bowiem, jeśli spowolnić silnik magnetofonu dwukrotnie – to ta sama taśma będzie odtwarzana/zapisywana dwukrotnie dłużej, więc i jej pojemność zwiększy się dwukrotnie. Zmniejszając prędkość przesuwu taśmy praktycznie do zera, możemy wręcz jej pojemność zwiększyć praktycznie do nieskończoności.

Rzecz jasna, to tylko teoria, a praktyka mówi nam, że taśmy audio zostały stworzone do zapisu danych czy to muzyki, dla konkretnej prędkości i mają konkretną rozdzielczość wynikającą z ich fizycznej budowy. Zwiększenie gęstości zapisu przez zmniejszenie jego prędkości zwiększyło by najpierw ilość błędów, a w dalszym kroku w ogóle jego możliwości odczytu. Także mało który system zmieniał w jakikolwiek sposób prędkość ich odtwarzania – szczególnie, że i tak gro komputerów korzystało z normalnych magnetofonów.

Zresztą podobna sytuacja miała miejsce w przypadku magnetowidów i kaset video – pewnie wielu z was pamięta system long play, który pozwalał na spowolnienie zapisu dwa razy i zwiększenie dwukrotne pojemności kasety – bardzo przydatne, gdy studiowało się w innym mieście, a w tym samym czasie w domu tygodniowo nagrywały się automatycznie ustawione 5 odcinków magicznych wojowników i 5 odcinków star treka. Spadek jakości nagrania był jednak widoczny gołym okiem.

Przejdźmy teraz do dwóch najbardziej popularnych i konkurujących ze sobą komputerów 8-bitowych – Atari i Commodore 64.

Atari zapisuje dane na magnetofonie z prędkości 600 bodów. Jedynka zapisywana jest jako sygnał 5327 Hz, zero jako 3995 Hz.

Pojedynczy bajt danych zapisywany jest, w formacie – znacznik początku bajtu – zero, 8 – bitów zer lub jedynek i znacznik końca bajtu – jedynka.

Atari nie zapisuje jednak danych na taśmie bajt po bajcie lecz w postaci rekordów po max 128 bajtów długości.

Rekordy te mają następujący format:

Znacznik startu rekordu – dwa bajty o wartości dziesiętnej 85 – pomocne do ustalenia prędkości taśmy, na podstawie długości odczytu tych danych komputer może dostosować się do realnej prędkości taśmy – która nawijana jest na szpule – więc posiada nieco inną prędkość na początku i na końcu kasety.

Następny jest bajt kontrolny – zawierający informacje o długości rekordu, czyli o tym czy jest to pełne 128 bajtów, mniej, czy jest to znacznik końca pliku.

Następnie zapisane jest do 128 bajtów danych.

Na końcu znajduje się bajt z suma kontrolną rekordu – która pozwala na wykrycie części błędów odczytu.

Przed i za każdym rekordem znajduje się jeszcze znacznik oddzielający go od sąsiadujących – o częstotliwości takiej samej jak sygnał jeden.

Sam plik składa się z 20 sekundowego znacznika jeden, dowolnej ilości rekordów z danymi oraz rekordu o zerowej ilości danych oznaczającego koniec pliku.

Jeśli chcemy wystartować program z Atari – na początku jego pliku musi znaleźć się 6 specjalnych bajtów zawierających informacje potrzebne do jego uruchomienia, jak np. adres pierwszej instrukcji w pamięci.

Sam program ładowany jest sekwencyjnie – aż do momenty natrafienie na koniec pliku lub wykrycia błędu w rekordzie poprzez sprawdzanie sumy kontrolnej z 128 bajtów wyliczanej przez komputer z tą zapisaną na taśmie. Każdy błąd powoduje zakończenie ładowania niepowodzeniem.

Commodore 64 zapisuje i odczytuje dane z prędkością 300 bodów w bardziej cyforwy sposób – poprzez zapisywanie bitów jako różnych wzorów fali prostokątnej składających się z dwóch z trzech syganałów: krótkiego, średniego, długiego.

I tak jedynka przedstawia się następująco – jako złożenie sygnałów: średni, krótki

Zero następująco – jako złożenie sygnałów: krótki, średni

A bajt zapisywany jest formacie – specjalny znacznik początku danych początku (inny niż 0 i 1) – składający się z sygnałów długi, średni, kolejne osiem bitów oraz bit parzystości pozwalający na wykrycie błędu.

Na końcu sekwencji danych, czyli pliku, pojawia się znacznik ich końca składający się z sygnałów długi, średni.

Sam zapis na kasecie ma następujący format:

10 sekund wprowadzenia – krótkie tony – to czas na osiągnięcie przez silnik magnetofonu stałej prędkości, a przy odczycie dostosowanie się do prędkości taśmy.

Plik z nagłówkiem.
Powtórzony plik z nagłówkiem
0,4s ciszy
Plik z danymi właściwymi
Powtórzony plik z danymi właściwymi.

Commodore podczas wgrywania danych sprawdza poprawność każdego bajtu. Wczytywanie nie powiedzie się tylko wtedy, gdy w pierwszym pliku znajdzie się więcej niż 30 błędów lub jeśli nie da się błędnego bajtu z pierwszego odczytu odczytać poprawnie z drugiej kopii pliku.

Dzięki temu magnetofon Commodore był zdecydowanie bardziej niezawodny od magnetofonu Atari. Choć praktycznie czas ładowania tych samych danych był około 4 razy dłuższy trudno było o wystąpienie błędu odczytu.

W przypadku Atari wystarczył bowiem 1 błąd w bloku 128 bajtów, aby zakończyć ładowanie niepowodzeniem, w przypadku Commodore błędów tych musiało być 30 na cały proces lub musiały wystąpić podwójnie.

No dobrze… ale skoro wgrywanie programów na Commodore 64 powinno trwać 4 x dłużej niż na Atari, to czemu właśnie Atari kojarzone jest z długimi czasami ładowania?

To wszystko dzięki turbo loaderom. wszechobecnym na maszynach Commodore.

W przeciwieństwie bowiem do Atari, gdzie sygnały zapisywane na magnetofonie były nie do zmodyfikowania bez modyfikacji fizycznej magnetofonu, Commodore 64 pozwalało na przejęcie przez programistę zarówno ich odczytywanie, jak i generacje.

Jako, że oryginalne funkcje do zapisu i odczytu danych w tym komputerze zostały stworzone mając na celu maksymalizację niezawodności kosztem prędkości, programiści mający możliwość ich zmiany stworzyli coś zupełnie odwrotnego.

Tak naprawdę to stworzyli ich sporą ilość, różniącą się od siebie sposobami implemetacji ogólnego pomysłu na skrócenie zapis zer i jedynek z kombinacji fal prostokątnych do jednej jej iteracji. Zero to sygnał krótki, jedynka to długi (około 3 razy dłuższy).

Jednym z bardziej popularnych i znanych z polskich kartdridży black box i kaset z pirackim oprogramowaniem był Turbo Tape 64. Którego format zapisu był następujący:

Dane rozbiegowe, czyli 256 bajtów o wartości 2, a następnie 10 bajtów odliczających wartości od 10 do 1.

W tym momencie tak naprawdę sprawdzany jest stan kasety i nagrania – jeśli w odczycie wystąpi choć przekłamanie 1 bitu – odczyt całego programu zakończony jest porażką.

Następnie odczytywany jest nagłowek o stałej wielkości – zawierający między innymi nazwę programu oraz adres początkowy i końcowy pamięci wskazujący gdzie go zamieścić.

Teraz kolej na dane samego programu – ich ilość wyliczana jest na podstawie adresów z nagłówka.

Na samym końcu pliku znajduje się jeden jedyny bajt z sumą kontrolną z wszystkich danych.

Prędkość takiego zapisu szacuje się na około 3600 bodów na sekundę, co jest wartością 10 krotnie większą od standardowej transmisji i pięciokrotnie większą od prędkości magnetofonu Atari.

Co to oznacza?

Program o wielkości 32KB na Atari wgrywały się około 7 minut, na Commodore pół godziny, ale dzięki systemowi turbo trwa to tylko półtora minuty (choć pewnie mogło by trwać i trzy – pamiętajmy, że w tym systemie 0 i 1 mają różną długość zapisu na taśmie).

Prędkość rzecz jasna wzrastała kosztem bezpieczeństwa i przez to zdarzało się, że teoretycznie poprawnie wgrany program – nie uruchamial się. Działo się to dlatego, iż pojedynczy bajt z sumą kontrolną to zdecydowanie za mało, by wykrywać wszystkie kombinacje błędów.

Jak wspomniałem programy zapisane w systemie Turbo można w polsce pamiętać ze słynnych kaset z piratami, gdzie na jednej stronie mieściło się ich nawet i 20.

Normalny oryginały ładowały się jednak też nie pół godziny, czy godzinę jak wynika z obliczeń, ale zazwyczaj takżę kilka minut. Dlaczego?

Ano dlatego, że najpierw ładował się program w normalnym trybie, zawierający system turbo, czasami jakąś ładną planszę i muzyczkę, co trwało zazwyczaj minutkę, czy dwie – a następnie ładował on już program właściwy – zapisany w systemie turbo – więc znacznie szybciej.

Kończąc temat commodore należy wspomnieć o słynnym ustawianiu głowicy.

Tylko co to jest głowica, a właściwie głowica elektromagnetyczna?

Ano jest to element magnetofonu, który bezpośrednio zapisuje i odczytuje dane na taśmie. Jak to zwykle bywa jest ona mocowana na śrubach i powinna być ustawiona na stałe nad taśmą magnetofonową pod niezmiennym kontem – takim samym dla wszystkich magnetofonów na świecie.

Jak to zwykle bywa – czasami jako element mechaniczny – głowica nam się przesune – co powoduje problemy z odczytaniem programów zapisanych wcześniej. Trzeba więc ją ponownie dostroić. W przypadku magnetofonów do Commodore można robić to zazwyczaj przez niewielki otwór w obudowie, choć w niektórych modelach go nie było. W takim przypadu i przypadku Atari trzeba magnetofon rozebrać.

Tylko, że jakoś nie słyszało się o tym, by ktoś rozbierał magnetofon do Atari, a polscy właściciele commodorka zawsze mieli srubokret w ręku. Dalczego?

Po pierwsze – w przypadku kasety w systemie turbo – ustawienie głowicy ma większa wagę, bo sam zapis jest bardziej podatny na uszkodzenia. Po drugie w polsce, polscy producenci kaset z grami, zwani popularnie piratami – do ich produkcji stosowali całą masę domowych magnetofonów w różnych konfiguracjach – łącznie z kopiowaniem kaset na popularnych jamnikach z podwójną prędkością odczytu/zapisu.

Rzecz jasna magnetofony te miały głowice nachylone pod praktycznie każdym możliwym kątem, mającym mało wspólnego z kontem fabrycznie wybranym przez konstruktorów C64. Stąd przed wgraniem prawie każdej kasety należało dostroić do niej nachylenie głowicy.

Jeśli jednak kaseta był nagrana poprawnie, a głowica poprawnie dostrojona – błędy zdarząły się rzadko, a nawet jeśli wystąpiły – ponowne wgranie programu trwało góra 5 minut.

Porównajmy to teraz z Atari, gdzie głowicy nie dostarajano – więc prawdopodobnie często niektóre magnetofony przestawały czytać kasety tylko z powodu jej przesunięcia się) – a każdy błąd powodował wgrywanie gry przez kolejne 15-20 minut.

Przy Comodore błędy więc niejako nam nie przeszkadzały, a nawet występujące tak samo często na Atari były boleśnie odczuwalne dla niecierpliwych dzieciaków.

Taka jest przynajmniej moja teoria.

Jakub Rzepecki

Odwiedź nasze Muzeum - zobacz sprzęty z filmu na żywo!

Obejrzy inne filmy, jakie przygotowaliśmy dla Ciebie na naszym kanela YT!

Muzeum Gry i Komputery Minionej Ery
Przegląd prywatności

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.