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