1

Witam
Opracowałem nowy program przeznaczony do naprawiania plików CAS. Ponieważ jest to wersja testowa może działać różnie.
Program jest pewnym dopełnieniem wav2cas. Ci, co używali wiedzą, że konwersja plików wav na cas narażona jest na wiele błędów. Najczęściej są to pojedyncze błędy, które uniemożliwiają poprawny odczyt. Im plik dłuższy tym większe prawdopodobieństwo błędnego pliku jako całości. Większość z tych błędów można łatwo naprawić. Można się domyśleć, że jak zrobimy sobie np. trzy pliki cas tego samego programu to jest duża szansa, że z tych trzech da się skompletować jeden poprawny. Ręczna robota jest możliwa, ale bardzo żmudna. Więc dlaczego nie kazać robić tego automatycznie? No kazałem ?

Program uruchamiamy skryptem (może w przyszłości zrobię gui dla wszystkich programów z rodziny cas):

cas2cas plik1.cas plik2.cas plik3.cas plik_dobry.cas

Program przyjmuje też format hex jako wejście i wyjście (przyjęta zostanie domyślna transmisja 600 bodów)
Czyli np:

cas2cas plik1.hex plik2.hex plik3.hex plik_dobry.hex

Oczywiście można hex z cas mieszać. I na przykład podstawić dwa pliki cas i jeden hex lekko przerobiony przez nas,

Poprawny kod (według algorytmu) zostanie zapisany w plik_dobry

Program można użyć jako np. konwertera hex na cas i odwrotnie. Wystarczy podać jako plik wejściowy trzy razy tą samą nazwę:

cas2cas plik.hex plik.hex plik.hex plik_dobry.hex

Plik wyjściowy zostaje znormalizowany (prędkość, przerwy między blokami) oraz zostaje poprawiona suma kontrolna (dla standartowych bloków). Można, więc sobie pogrzebać w pliku cas (jakieś zabezpieczenia, nieśmiertelności) a następnie wygenerować plik z poprawnymi sumami kontrolnymi.

Teraz przedstawię jak program dokonuje korekcji, żeby zrozumieć jak go najlepiej używać. Jeśli ktoś ma jakieś ciekawe pomysły to bardzo proszę o podzielenie się ze mną. To jest wersja testowa, więc zrobiłem to, co wydawało mi się za najprzydatniejsze. Zależało mi żeby program możliwie maksymalnie był automatyczny.

Program wczytuje plik cas lub hex do pamięci w postaci recordów.
Analiza rozpoczyna się od nadania statusu w postaci liczby każdemu rekordowi.
1- Jeżeli rekord ma długość 132 i ma poprawną sumę kontrolną
2- Jeżeli rekord ma długość 132 i suma jest błędna
4- Jeżeli rekord ma inną długość i ma poprawną sumę
5- Jeżeli rekord ma inną długość i ma nie poprawną sumę.
Następnie program skanuje rekordy od początku i jeżeli trafi na rekord o statusie 5 to może mu zmienić status na 3 (Rekord, który powinien mieć długość 132) gdy znajduje się choć jeden rekord za nim o długości 132. Wyłapujemy w tym miejscu, które bloki są niepełne.
Teraz robimy sortowanie. Wybierany jest blok z trzech dostępnych plików według priorytetu.
Jeżeli chociaż jeden z trzech plików jest ?1? to go wybieram. Gdy wszystkie mają 2 analizuję bajt po bajcie wszystkich 3 i wybieram najbardziej możliwą wersję, a następnie korekcja sumy. Gdy trafiam na rekord o statusie 3 (a nie ma 1 w pozostałych) to szukam brakującego ciągu znaków. Gdy trafiam na rekord 4 to pozostawiam go bez zmian. Gdy trafiam na rekord 5 to już nic się nie da zrobić.
Przy wielu błędach "3", porgram może się powiesić gdyż nie może zaskoczyć gdzie jest następny blok. Czasami poprawienie na oko, chociaż jednego hexa może poprawić wynik.

Następnie przerwy w pliku wynikowym są normalizowane i poprawiane są sumy kontrolne. Na koniec plik jest zapisany.

Pozdrawiam

2

Brawo! Gienek! teraz wrescie dostalem instrukcje wiec dzis biore sie za testowanie ;]
a tu mozecie sobie go sciagnac:
cas2cas

"wszystko się kiedyś kończy......."

3

Super może pomoże mi ten program

4

a ja bym poprosil o wersje DOSowa i byc moze zrodelka (portowanie na inne platformy rula ^_-)...

Powszechnie wiadomo, że kamień potrafi myśleć. Na tym fakcie opiera się cała elektronika.

Terry Pratchett - Równoumagicznienie

5

..... byc moze zrodelka (portowanie na inne platformy rula ^_-)...

Voy - źródła sa juz w archiwum ;] w linku wyżej.

"wszystko się kiedyś kończy......."

6

Wygląda na to, że więcej z plików cas nie można wydusić. Trzeba by opracować inny format zapisu obrazu taśm. Pośredni pomiędzy wav a cas. Format ten musi jak najbardziej odwzorować zachowanie magnetofonu. Taki format dawałby możliwość maksymalnego uniknięcia błędów. Proszę zauważyć, że czasami plik, który na oryginalnym ATARI jeszcze się wczytuje po przeróbce na cas już nie. Nie wspominając już o niestandardowych plikach. Należało by zrobić emulator magnetofonu (może to śmieszne ale?). W magnetofonie dane z taśmy w postaci sygnału przesyłane są do filtrów pasmowo przepustowych. Rezultatem działania tej elektroniki jest ciąg zer i jedynek. Czyli tak naprawdę z wyjścia magnetofonu biegnie jeden kabel z sygnałem, w którym sygnał ma raz 0 a raz 1. Czas trwania zera lub jedynki zależy od transmisji i danych. Jeżeli włożymy kasetę np. z muzyką to także otrzymamy ciąg zer i jedynek. Po prostu, jeżeli pojawi się harmoniczna w zakresie działania filtrów to na wyjściu coś otrzymamy. A teraz proszę sobie wyobrazić inną sytuację (Stryker ty to wiesz), mamy oryginalną kasetę i ma ona zabezpieczenie w postaci zakłócenia. Loader sprawdza czy dane zakłócenie jest, ale może go zobaczyć tylko pod postacią 0 lub 1. Czyli zakłócenie musi być w zakresie działania filtrów. Jeżeli jest znaczy, że mamy oryginał, jeżeli nie fałszywka. Plik CAS w żaden sposób nie może tego odwzorować, a plik, który był by odzwierciedleniem strumienia tak. A co z nietypowymi blokami? Żaden problem, przecież mamy strumień, który to odwzorowuje. A co z wszystkimi rodzajami TURBO, które przesyłają dane przez ten sam kabel? Działają przecież w innym zakresie częstotliwości i gdyba tak te częstotliwości dołożyć to ? Domyślcie się sami.
Dodatkowo taki plik idealnie nadaje się do przekonwertowania go na poprawny plik cas. Dlaczego? Jeżeli plik wczytuje się na oryginalnym magnetofonie to znaczy, że mimo szumów i wielu zakłóceń w zakresie działania filtrów sygnał jest ok. Jeżeli plik co chwile staje w jednym miejscu ale raz na 10 razy się wczytuje to znaczy że dało by się ten fragment przesamplować kilka razy i puścić na kilka filtrów np. z rożnymi szerokościami i zobaczyć który daje najlepszy rezultat.
Ja to widzę tak:
Sygnał w postaci pliku wav (albo bezpośrednio próbkowany z linii) zostaje puszczony na filtry. Pod pojęciem filtru rozumiem równanie matematyczne, które pozwala wydobyć interesujące harmoniczne. W rezultacie otrzymuje ciąg zer i jedynek taki, jaki dałby mi magnetofon. Np. 0000000000111111000000111111000000 ? Takie coś zajmuje kupę miejsca, (ale mniej niż wav) więc zapisuję to w postaci np. 10,134 (czyli 128 +6),6,134,6,.. .
Teraz trochę mniej, ale trudno to jest plik pośredni między wav a cas. Oczywiście dla standartowych bloków mogę sobie przerobić to na cas  (metodą podobną do wav2cas). Poszukiwanie błędów w takim pliku jest dużo łatwiejsze. Zwłaszcza, że można wygenerować plik z innymi harmonicznymi żeby wyczaić np. czy jest jakieś załamanie na taśmie.
Wychodzi tutaj problem z emulacją. Przydałoby się żeby emulator przyjął taki plik. Tzn. żeby bezpośrednio kopiował te zera i jedynki na port SIO. System wtedy zacznie już kombinować, ustali prędkość i zacznie ładować program. Jeśli będą jakieś zabezpieczenia to nie ma problemu, bo mamy je odwzorowane.

Tak to widzę, wiem, że wiele osób ma stare taśmy a jakość ich z biegiem lat maleje. Format cas niestety nie spełnia wszystkich oczekiwań. Wiem też, że było wiele osób w Polsce, których nie było stać na stację dysków. Teraz można sobie emulować (i nie tylko) nawet twardziela. Tylko, że wspomnienia ?ja miałem magnetofon? są niezapomniane. To było jak siedzenie przed sonarem na łodzi podwodnej.

Pozdrawiam.

Gienek
plug@poczta.fm

P.S. jeśli było by wsparcie takiego formatu w emulatorze to ja oczywiście zrobię soft zamienijący wav na ten format, na cas i odwrotnie.

7

Gienek jeżeli chodzi o format cas to jest on jaki jest ale jakos sobie z nim radzic trzeba ;] Pare e-maili do autora i juz wyszła trzy razy poprawiona wersja wav2cas ktora odczytuje juz dluzsze bloki ;] ale dzialaja niestety tylko pod APE bo emulator narazie nie zostal jeszcze poprawiony a niewiem do kogo sie zglosic ?! w tej sprawie ( pisalem juz do FOX'a ale narazie bez odpowiedzi ;( ) Co do zabezpieczen to tez sobie jakos radzimy z Freetlesem odbezpieczajac loader ( a fajnie by bylo jakby np. emulator i nowe APE emulowalo ten sygnal ktorego w cas'ie niema wtedy by nietrzeba bylo odbezpieczac cas'a - podobno program cas2sio emuluje ten sygnal tak przynajmniej pisze autor.....
A i jeszcze jedna rzecz odnosnie cas2cas czy moglbys dodac opcje ktora po konwersji cas na hex dawala by orginalne czasy odstepow miedzy blokami ?! bo niewszystkie giery dzialaja na przerwach 250....z gory dzieki
Jeżeli chodzi o nowy format to jestem jaknajbardziej za ;]

A i jeszcze jedno prosilbym o przetlumaczenie instrukcji na j.angielski ;] i podeslanie mi na maila lub umieszczenie na forum )

pozdr.
STRYKER

MW: Stryker! Dopisuj w swoich postach używając przycisku zmień!

"wszystko się kiedyś kończy......."

8

dobra tekst jest juz przetlumaczony ( thx. Detox i Theo-Klex) znajduje sie w archiwum lub tu: http://atariage.com/forums/viewtopic.php?t=40327
pozdr.
STRYKER

"wszystko się kiedyś kończy......."

9

stad sciagniecie nowa wersje:
CAS2CAS v0.2 
poprawiono:
Cas2Cas z opcją -orgsp
czyli nie zmienia przerw

"wszystko się kiedyś kończy......."