Pliki kasetowe


Stacja robocza Sinclair ZX-81 - rok 1983.

Rodzaje plików kasetowych

Pliki .81

Są to kopie 1 do 1 prawdziwych plików kasetowych, które tworzy ZX-81. W plikach tych zawarta jest kopia obszaru pamięci od $4009 do E_LINE. Nazwa pliku (która jest częścią oryginalnych plików ZX-81) nie jest dołączana do treści tych plików.

 

Pliki .P

W zasadzie są one identyczne z plikami .81. Różnią się tym, iż na końcu każdego pliku mogą być dołączone śmieci. Starsze wersje emulatora Xtender dołączały 1 bajt śmieci. Obecna wersja Xtendera chyba porzuciła ten zwyczaj i zapisuje poprawną długość. Pliki dostępne na ftp.nvg zawierają od 28-38 bajtów śmieci, powstałych prawdopodobnie w programie kopiującym pliki z kaset na dysk. Wydaje się również, iż część plików przeszła przez system plikowy CP/M, który zaokrągla długość plików do wielokrotności 128 bajtów.

Programy, które współpracują z tymi plikami powinny określić poprawną długość z nagłówka pliku (tak robi ZX-81, gdy wczytuje dane z kasety) i odrzucić zbędny nadmiar bajtów.

 

Pliki .C, .S, .V i inne

To w zasadzie nie są prawdziwe pliki ZX-81, programy zawarte na takich plikach nie działałyby na rzeczywistym ZX-81. Emulator Xtender zawiera kilka własnych funkcji, które pozwalają użytkownikowi tworzyć i usuwać katalogi na dysku twardym, prawdopodobnie również go formatować i zapisywać tego rodzaju pliki.

 

Zawartość pliku kasetowego

Obszar danych ZX-81 (bez nazwy pliku)

Obszar danych jest ładowany do pamięci ZX-81 pod adres $4009. Zawiera on obszar systemowy (bez pierwszych 9 bajtów), program w języku BASIC, pamięć wideo oraz obszar zmiennych języka BASIC.

Obszar systemowy powinien zawierać poprawne dane. Pewne adresy posiadają bardzo istotne znaczenie:


    $4014  definiuje adres końcowy (używane do wyliczenia długości pliku)
    $4029  wskazuje na wiersz programu, który ma zostać wykonany po załadowaniu (autostart)
    $403B  informuje, czy program ma pracować w trybie SLOW lub FAST (bit 6)


Pamięć od adresu 403Ch może być wykorzystywana w dowolnym celu. Wymagany jest obszar wideo, w którym powinno się znaleźć 25 instrukcji HALT, jeśli plik został zapisany w trybie SLOW.
 

Maksymalna długość pliku

Pliki zwykle nie powinny przekraczać 16 KB. Procedura rozpoznawania pamięci w ZX-81 zatrzymuje się po 16 KB (na adresie $8000) i inicjuje stos pod tym adresem, nawet jeśli jest dostępna większa pamięć. Zatem załadowanie pliku o rozmiarze 16 KB lub więcej spowodowałoby zniszczenie stosu (chyba że osobny program ładujący przesunąłby wcześniej stos w inne miejsce).

Jednakże większość komputerów ZX-81 nie posiadała więcej niż 16 KB RAM, zatem większe pliki i tak by na nich nie działały.

 

Sygnały kasetowe

Struktura pliku kasetowego komputera ZX-81

x sekund  - twój głos wypowiadający nazwę pliku (opcjonalnie)
x sekund  - szum wideo
5 sekund  - cisza
1-127 bajtów  - nazwa pliku (w ostatnim znaku ustawiony bit 7)
bajty danych  - dane, ładowane pod adres $4009, długość ($4014) - $4009
1 puls  - sygnał powrotu wideo (jeśli ekran został włączony)
x sekund  - cisza / szum wideo

 
Dane zawierają obszar zmiennych systemowych, program w języku BASIC, pamięć obrazu i obszar zmiennych.

 

Koniec pliku

Koniec pliku jest obliczany jak pokazano powyżej. Ostatnim bajtem (czystego) pliku powinien być bajt o wartości $80 (tj. ostatni bajt obszaru zmiennych VARS), po którym może wystąpić tylko szum wideo.

 

Bity i bajty

Każdy bajt składa się z 8 bitów (najstarszy najpierw) beż żadnych bitów startu i stopu, jak jest to przyjęte w transmisji szeregowej. Po jednym bajcie bezpośrednio następuje kolejny bajt. Bit 0 składa się z czterech impulsów, bit 1 składa się z dziewięciu impulsów, po których w obu przypadkach następuje okres ciszy:

 

 

Każdy impuls trwa w stanie wysokim przez 150µs i w stanie niskim również przez 150µs. Po serii impulsów następuje okres ciszy trwający 1300µs. Dla bitów 0 szybkość transmisji wynosi 400 bodów (bitów na sekundę), dla bitów 1 szybkość transmisji spada do 250 bodów. Średnia prędkość transmisji wynosi 307 bodów (38 bajtów na sekundę) dla plików, które posiadają tyle samo bitów równych 0 co 1.

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe