Gdy kolega Tomasz "Płatek" Płatkiewicz zaczął nam nagrywać
ze swoich starych kaset szczątkowe, ale liczne fragmenty audycji
"Radiokomputer" (o czym wkrótce też będzie na AtariOnline.pl),
podesłał przy okazji zdjęcia okładek trzech kaset z innymi
programami. Moją uwagę zwróciły użytki do Turbo 2600 na jednej z
nich i poprosiłem o zgranie ich do pliku dźwiękowego, do dalszej
obróbki na pececie:
Tutaj można posłuchać fragment nagrania z tej kasety, w systemie
Turbo 2600 (kliknij na ikonkę odtwarzania, potem można regulować
głośność ikonką po lewej lub zatrzymać przez kliknięcie ikonki
pauzy po prawej):
Tomasz "Krótki" Krasuski wykorzystał te pliki do
przetestowania stworzonego przez niego nowego systemu A8CAS, który
jako pierwszy w pełni emuluje magnetofon Atari, przydatnego
na przykład do przenoszenia nagrań z kaset do formatu CAS.
Otrzymałem od Krótkiego pliki CAS programów "Trans Code DB", "Trans
Basic DB", "Kopier DB" oraz znanego programu kopiującego "Casdup" w
wersji dla Turbo 2600.
Przypadkowo dowiedziałem się, że Adam "Asal" Salamon, z
którym współpracuję przy kilku projektach, jest miłośnikiem systemu
Turbo 2600, dogłębnie go zbadał i nawet przerobił oprogramowanie do
tego systemu na pliki XEX, które można uruchamiać również pod
emulatorem! Asal analizował bowiem te programy w wersji CAS, a
potem stworzył odpowiedni loader, który miał jak najdokładniej
odwzorować proces ładowania z taśmy. Udało mi się go namówić na
podzielenie się plikami oraz na opis Turbo 2600, w jaki sposób on
działa, jaka jest struktura zapisu na taśmie i tym podobne. Tekst
też przedstawiam poniżej:
Adam "Asal" Salamon:
"Moją pierwszą pamięcią masową używaną z komputerem Atari był
magnetofon XC-12. Dosyć szybko zaczął mi jednak przeszkadzać długi
czas wczytywania programów, przez co zacząłem się interesować
różnymi sposobami przyspieszającymi transmisję. Nie było jeszcze
wtedy Turbo 2000, ale był "Radiokomputer", w którym nocą emitowano
różne ciekawe programy.
najpopularniejsze modele magnetofonów Atari
w Polsce: XC12 (widoczny na zdjęciu), XCA12, CA12, rzadsze: XC11 i
1010
Dwa dźwięki były chlebem codziennym magnetofoniarzy: sygnał
gotowości odczytu z magnetofonu:
oraz sygnał gotowości zapisu:
Kiedyś udało mi się nagrać program kopiujący "Turbo Tape R&R",
który pozwalał ustawiać prędkość transmisji na większą niż
standardowe 600 bodów. Zacząłem zapisywać swoje programy z
prędkością 900 bodów i okazało się, że prawidłowo się one wczytują,
a błędy transmisji pojawiają się dosyć rzadko. Próbowałem
podwyższać prędkość, ale niestety nie dawało to dobrych rezultatów.
Moje Atari żadnym sposobem nie potrafiło wczytać programu
zapisanego z prędkością 1400 ani 1200 bodów. Jak się później
dowiedziałem, magnetofony XC-12 miały nie najlepiej zestrojone
filtry, co mogło częściowo tłumaczyć moje niepowodzenia. Czy było
to jednak jedyną przyczyną?
program "Turbo Tape R&R"
Słuchając dalej "Radiokomputera" dowiedziałem się pewnego razu o
systemie Turbo 2600 i nagrałem kilka programów użytkowych do niego.
System ten oferował możliwość transmisji z prędkościami 600, 800 i
1300 bodów na zwykłym magnetofonie, a nawet 2600 bodów po wykonaniu
pewnej przeróbki. Dodatkowo programy zapisywane były z długimi
rekordami. Deklarowana wysoka prędkość transmisji zrobiła na mnie
spore wrażenie, choć ciężko mi było w nią uwierzyć mając za sobą
poprzednie negatywne doświadczenia.
Przy pomocy jednego z programów wchodzących w skład pakietu
emitowanego w radio - "Trans File DB" spróbowałem zapisać testowo
jedną z gier z prędkością 1300 bodów i odczytać ją ponownie. I oto
stał się cud - program wczytał się bez problemu. Jak to możliwe? Od
tego momentu systemu Turbo 2600 zacząłem używać regularnie ze
zwykłym magnetofonem, aż do zakupu stacji dysków.
Jakim sposobem twórcy systemu Turbo 2600 osiągnęli wysoką prędkość
transmisji 1300 bodów ze zwykłego, nieprzerobionego magnetofonu
Odpowiedź poznałem po kilku latach, gdy przeanalizowałem procedury
obsługi magnetofonu opisane w książce Wojciecha Zientary "Procedury
wejścia-wyjścia" i kod programu "Trans File DB", którego wcześniej
używałem. Okazało się, że w standardowym ROM-ie Atari pod adresem
$edf9 znajduje się następująca tabela:
.BYTE $E8,$03,$43,$04
.BYTE $9E,$04,$F9,$04
.BYTE $54,$05,$AF,$05
.BYTE $0A,$06,$65,$06
.BYTE $C0,$06,$1A,$07
.BYTE $75,$07,$D0,$07
Dane w tabeli są dwubajtowe i określają dopuszczalne prędkości
transmisji z magnetofonu. Ostania wartość ($07d0) odpowiada
prędkości 1789200 / 2 / $7d0 - 7 = 440 bodów i jest najniższą
dopuszczalną dla transmisji ze standardowego magnetofonu. Pierwsza
pozycja z tabeli ($3e8) określa prędkość maksymalną, czyli 1789200
/ 2 / $3e8 - 7 = 887 bodów. Oznacza to, że gdy będziemy próbowali
odczytywać dane z magnetofonu z wyższą prędkością, standardowe
procedury systemu operacyjnego zaprogramują jednak uklad POKEY na
prędkość 887 bodów, gdyż wyższych prędkości nie przewidziano.
Jeżeli będzie to prędkość niewiele większa (np. 900 bodów), wówczas
wszystko będzie jeszcze w porządku, gdyż POKEY dopuszcza pewną
tolerancję długości bitów. Jednak dysponując nawet idealnie
zestrojonym magnetofonem nie uda się nam wczytać programu
zapisanego z prędkością 1200 bodów przy pomocy standardowych
procedur z ROM-u, gdyż źle zaprogramowany POKEY pomyli bity i
spowoduje błąd odczytu.
Z powyższych rozważań wynika, że aby program ze zwykłego
magnetofonu wczytał się z prędkością wyższą niż 900 bodów nie mogą
być wykorzystywane standardowe procedury systemu operacyjnego do
obliczania prędkości. I tak jest w rzeczywistości w systemie Turbo
2600 - prędkość transmisji jest tu obliczana znacznie dokładniej i
może się zmieniać w szerokich granicach.
Poniżej chciałbym zaprezentować kilka informacji technicznych o
systemie Turbo 2600, które pozwolą przybliżyć ten system. Cechy
systemu:
możliwość zapisu i odczytu z prędkościami 600, 800, 1300 i 2600
bodów;
modulacja FSK ze standardowymi częstotliwościami bitów 0 i
1;
podział programu na długie bloki, co dodatkowo zwiększa
prędkość transmisji;
wykorzystanie pamięci 'pod ROM-em' na szybkie procedury
transmisji.
W skład systemu wchodzą następujące programy:
"Trans File DB" - pozwala zapisać program binarny w formacie
Turbo 2600 z długimi blokami;
"Trans Code DB" - pozwala zapisać program binarny z
przyspieszoną prędkością i loaderem Turbo 2600, ale bez długich
bloków;
"Kopier DB" - służy do kopiowania programów zapisanych w Turbo
2600;
"Casdup 2600" - specjalna wersja programu kopiującego "Casdup",
dostosowana do Turbo 2600;
"Anty Boot Protect' i "Trans Basic DB" - nie znam dokładnie
tych programów, ale pierwszy jest rodzajem kopiera dla stacji
dyskietek, a drugi służy pradopodobnie do konwersji programów w
Basic-u na format Turbo 2600.
Proces wczytywania programu zapisanego w Turbo 2600 za pomocą
programu "Trans File DB" wygląda w następujący sposób:
najpierw wczytywane są dwa standardowe rekordy z prędkością 600
lub 800 bodów;
ładowany jest loader w postaci długiego bloku o standardowym
nagłówku rozbiegowym i długości 409 bajtów;
ładowany jest system Turbo 2600 w postaci bloku o specjalnej
postaci i długości 1104 bajtów. Blok ten ładowany jest już z
prędkością "docelową", na przykład 1300 lub 2600 bodów, choć
prędkość może też pozostać niezmieniona;
ładowane są kolejne bloki Turbo 2600 zawierające dane
zasadnicze programu.
Każdy długi blok Turbo 2600 składa się z segmentów następujących
kolejno po sobie. Pomiędzy segmentami może, ale nie musi wystąpić
nagłówek rozbiegowy, służący do automatycznego określenia
prędkości. Nagłówek rozbiegowy to dwanaście bajtów o następujących
wartościach:
$00 $00 $ff $ff $ff $ff $fe $fc $fc $f8 $f0
$c7
Struktura segmentu jest następująca:
dwubajtowy adres początku ładowanych danych;
dwubajtowy adres końca ładowanych danych zwiększony o
1;
dwubajtowy adres procedury, którą loader ma wykonać po
załadowaniu danych. Jeżeli procedury nie ma, wówczas występuje
wartość $c2aa;
jednobajtowy status;
bajt o stałej wartości $65;
jednobajtowa suma kontrolna liczona od początku segmentu, jeśli
nie
jest on poprzedzony nagłówkiem rozbiegowym lub od początku tego
nagłówka;
ładowane dane zakończone sumą kontrolną.
W bajcie statusu mogą być ustawione następujące bity:
bit 0 - oznacza, że następny segment poprzedzony jest
nagłówkiem rozbiegowym;
bit 6 - oznacza, że jest to ostatni segment w bloku;
bit 7 - oznacza, że po załadowania danych ma zostać wykonana
procedura, której adres podany jest na początku segmentu.
Standardowo po każdych 512 bajtach danych następuje segment z
nagłówkiem rozbiegowym.
Program "Trans Code DB" konwertuje programy do innej postaci.
Rekordy o numerach od piątego wzwyż mają równą długość, a każdy z
nich ma następującą strukturę:
dwunastobajtowy nagłówek synchronizujący, w którym drugi bajt
ma wartość $ff zamiast $00;
jednobajtowy, standardowy typ rekordu;
128 bajtów danych;
suma kontrolna.
Niestety, nigdy nie byłem posiadaczem magnetofonu dostosowanego do
systemu Turbo 2600 z najwyższą prędkością, dlatego nie potrafię
podać na temat przeróbki magnetofonu bliższych szczegółów. Jakiś
czas temu postanowiłem za to przekonwertować programy użytkowe tego
systemu do postaci plików *.xex, możliwych do uruchomienia nawet
pod emulatorem. Zadbałem o to, aby proces ich ładowania przypominał
jak najwierniej ładowanie z taśmy."
Tyle relacji Adama, a po programy przez niego wymienione, zarówno
te w formacie XEX, jak i te w formacie CAS uzyskane przez Krótkiego
zapraszam do katalogu użytków, a konkretnie do folderu
programów dla magnetofonu. Można też od razu cały pakiecik pobrać w
jednym pliku 7z.
-----
Uzupełnienie z tego samego dnia:
1. Dalsze losy "rozgryzania" Turbo 2600 można śledzić w tym
wątku
na Forum Atarum.
2. Krótki podkreśla, że częścią projektu "A8CAS" jest
modyfikacja emulatora "Atari800" (nie mylić z "Atari800Win PLus,
który jest portem dla Windows), w którym łatwo można wczytać pliki
CAS także w formacie Turbo 2600. Ponadto będzie narzędzie dla
wiersza poleceń, jak tylko Krótki upora się z kompilacją pod
Windows. Jednak sam nie zrobi GUI czyli obslugi programu okienkami.
Na szczęście A8CAS jest w postaci biblioteki DLL, żeby mogli to
łatwo zrobić inni :D.
3. Adam napisał w uzupełnieniu, że posiada skrypty w
Pythonie (skrypt analizujący pliki *.cas i eksportujący z nich dane
binarne, skrypt analizujący pliki *.xex i eksplorujący podane
bloki, skrypt przerabiający pliki *.xex do plików *.cas, tak jak to
robi "Trans File DB", skrypt będący ulepszonym programem wav2cas
według jego algorytmu, program przerabiający plik *.cas w formacie
Turbo 2600 do postaci pliku *.xex, którego właśnie teraz użył do
przygotowania z plików CAS Turbo 2600 odpowiednio spreparowane
pliki XEX). Podesłał dwa z
tych programów pomocniczych - których działania jest pewien, bo
często z nich korzysta. Program do czytania CAS-ów jest o tyle
przydatny, że analizuje bloki Turbo 2600 łącznie z segmentami.
4. No to panowie i panie - korzystajcie! Kilka osób w
przeszłości narzekało mi, że nie ma jak przerzucić swoich programów
nagranych na kasetach w Turbo 2600, bo albo nie ma już takiego
magnetofonu albo oprogramowania albo komputera... Teraz wystarczy
przegrać kasetę do formatu pliku pecetowskiego, skorzystać z
narzędzi Adama lub Tomka i gotowe. W razie problemów - pytania
kierować na Forum Atarum.
Kaz 2010-01-09 03:19:12
Dzieki Scalakowi moglem wprowadzic do nowinek kolejny multimedialny element - odtwarzanie plikow dzwiekowych. Prosze o uwagi i ewentualnie informacje czy u kogos nie dziala to poprawnie. Kaczor 2010-01-09 10:16:01
Te dzwięki i dzwięk wczytywania się gry to był zwiastun że za dłuższą chwilę będzie się miło giercowało. Miły dzwięk dla atarowca. Powinniście dodać jeden z nienawidzonych dzwięków (brrrryt i selftest albo drrrund i boot error) :-) Kaz 2010-01-09 12:55:16
Dodalem czteropunktowe uzupelnienie artka na koncu.
Kaczor - dobra mysl, zeby zrobic tez inne dzwieczki, przy nastepnej okazji je wstawie :D czesiot 2010-01-09 15:18:33
Nareszcie coś co bardzo zainteresowało mnie po latach a właściwie co odświeżyło moje wspomnienia-używałem tego programu a właściwie całego systemu do momentu przejścia na system TURBO 2001(jakaś mutacja systemu turbo ale na pewno nie związana z TURBO 2000).Pierwsze programy nagrałem z audycji"Radiokomputer nocą" prowadzonej przez świętej pamięci Tomasza Jordana(tu prośba o poświęcenie tej moim zdanie legendarnej osobie oddzielnego artykułu),ale po przejściu na nowe Turbo 2001 na pewno z programów pod system Turbo 2600 używałem programu ERROR COPY, który jak sama nazwa wskazuje służył do kopiowania programów.Ale jakiego kopiowania-program ten w swej funkcji umożliwiał kopiowanie programów z taśmy o złej jakości pod warunkiem że za choćby setnym razem magnetofon odczytał prawidłowo dany rekord(podobnie jak Buldoger Copy) ale miał tę przewagę że umożliwiał odbezpieczenie programów firmy AVALON z kasety magnetofonowej.95 procent programów odbezpieczonych w ten sposób i przerobionych na wersję "file" chodziło bezproblemowo.Dodam że z tak odbezpieczonych programów korzystałem tylko dla swoich potrzeb,co powodowało że programy zajmowały mniej miejsca na kasetach.Po moim małym Atari zostały tylko wspomnienia,nie mam też żadnej kasety z programami,ale uważam że program ERROR COPY był najlepszym kopierem.Pozdrawiam wszystkich atarowców Kaz 2010-01-09 15:31:03
Error Copy jest na jednej z kaset Platka, czekam az bedzie mial czas ja skopiowac. Wolfen 2010-01-09 15:46:48
Kaczor dokladnie! :) Te drytudrytytydrytydryt prttttttttttt i selftest albo boot error dokladnie! :) (horror z dziecinstwa ;D hehe Kaczor 2010-01-09 18:13:56
@ Wolfen - masz racje, zapomniałem o tym jeszcze jednym co wspomniałeś. Jak pognieciona lub w inny sposób zdeformowana taśma ślizga się po głowicy i wydaje zniekształcony wydźwięk a każdy z nas (użytkownicy Atari z magnetem) w tedy nasłuchiwał jak świnka grzmotu czy przejdzie dalej i wgra się ulubione road-race.
Przypomniało mi się i teraz śmiać mi się chce gdy wybierało się grę częściej tę, która miała tak do 150 jednostek na liczniku, czyli bez fajerwerków mimo grywalności. Natomiast te które miały 240 czy 320 jednostek wybierało się po dłuższym zastanowieniu, wiedząc o stanie taśmy i naszego czasu. Nieraz człowiek jak by mógł, to na czas wczytywania gierki obwiązał by pół pokoju taśmą zabezpieczającą przed niepowołanymi domownikami. Ile to razy przy końcowej fazie wczytywania zbyt długiej gry nagle Mama wpadła wytrzeć kurz na telewizorku i na stoliku gdzie znajdował się komputer - panika :-O! gregor 2010-01-09 21:27:04
fajny ficzer z tym odtwarzaniem dźwięków. zrobiony w flashu ? xeen 2010-01-09 23:27:21
boulder dash (krecik) :)))) nie wiem czy to prawidłowość, ale ojcowie mieli takie nawyki, aby dodawać w nawiasach polskie (swoje) nazwy gier. u mnie na kasetach preliminary monty to było piekiełko, river raid to samolocik, tetris - klocki itp. Scalak 2010-01-10 12:25:26
tak to fleszowy "gotowiec" Kaz 2010-01-10 12:31:29
Dobre spostrzezenie xeen. Sadze, ze to bralo sie z mniejszej obecnosci i znajomosci jezyka angielskego niz obecnie, no i trudnosci wymowy. Takie oswajanie obcych terminow jest znanym i naturalnym zjawiskiem - czytalem gdzies, ze pracownicy FSO po przejeciu przez Daewoo nie wymawiali tego ani z koreanska ani z angielska tylko jako "Daj Ewo" :)
Podobne zdrobnienia nazw programow robilo studio TatraSoft - i nawet pod takimi nazwami sprzedawali niektore gry. rchwastek 2010-01-10 14:35:44
Pamiętam jak przy wczytywaniu dowolnej gierki delikatne dotknięcie wtyku SIO od magnetu powodowało w 90% BOOT ERROR. Jednak największym sukcesem ATAROWCÓW było nie mieszanie przy głowicy magnetofonu przez co 99% właścicieli magnetofonów miało identycznie (fabrycznie) ustawiony skos głowicy. mgj30 2010-01-11 02:01:58
Przepraszam, że nie dokładnie w temacie, ale chciałem zapytać przy okazji systemów Turbo na Atari. Czy ktoś z Was pamięta (wie), jak się nazywał system Turbo montowany przez krakowską firmę "Mapasoft" - mieściła się przy ulicy Kościuszki (ten sam typ montował niejaki p. Żurek pod nazwą "Turbo Żurka"). Montowali jakiś układ w magnetofonie. W pierwszej wersji należało samemu wcisnąć przycisk po załadowaniu bootloadera, w późniejszych przełączało się to automatycznie. Na 1 stronę kasety "wchodziło" do 50 gier (to w ostatniej wersji). Przy wczytywaniu było coś jakby na wzór bootloadera składającego się z 8 bloków w wersji pierwszej, później w drugiej 5, a na końcu w trzeciej 3. Niestety nie mam jak podesłać pliku audio, gdyż wszystkie kasety poszły z dymem kilka lat temu :/ Kaz 2010-01-11 02:40:22
mgj30 - Turbo ROM. Xerwer 2010-01-16 19:31:48
Ja miałem przerobiony komp i magnetofon na "turbo 2002" w serwisie Atari w Gdyni przez "Karen" - obecnie firma o tej nazwie naprawia Laptopy - regulowali też głowicę magnetofonu wg swojego wzorca tak więc nie było później problemów z kompatybilnością ustawienia głowicy u kolegów i w "wypożyczalni" - tak jak u znajomego który na komodzie każdą kasetę inaczej miał nagraną i ustawiał śrubokrętem...
Dziś nawet nie wiem jaką on oferował prędkość zapisu/odczytu, ale był bardzo niezawodny, - kolekcje gier które zgrywałem za pomocą swego magnetofonu nigdy nie wyrzucały błędów podczas odczytu...