ZX Spectrum zaprojektowane zostało z myślą o współpracy z magnetofonem lub microdrivem. Nie oznacza to, że zrezygnowano całkowicie z prac nad stacją dysków. Pamięci dyskowe do ZX Spectrum powstały w wielu firmach i charakteryzują sie różnorodnością zastosowanych w nich rozwiązań technicznych. Jednym z najciekawszych urządzeń tego typu jest 3-calowa stacja dysków Timex, umożliwiająca jednoczesne podłączenie do Spectrum 4 napędów dyskowych_sterowanych wspólnym kontrolerem. Użytkownik zyskuje w ten sposób szybki i niezawodny dostęp do ponad 500 kB dodatkowej pamięci.
Pamięć dyskową Timex dołączamy do złącza krawędziowego ZX Spectrum za pośrednictwem interfejsu. Składa się ona z zasilacza, kontrolera i napędów dyskowych umieszczonych w oddzielnych obudowach. Wewnątrz kontrolera znajduje się niemal osobny komputer: mikroprocesor Z80, 16 kB pamięci, sterownik dysku i układy wejścia-wyjścia. Korzystanie z urządzenia odbywa się pod kontrolą dyskowego systemu operacyjnego TOS (Timex Operating System), który ze względu na bogactwo występujących w nim funkcji można śmiało określić angielskim terminem „user friendly” — sprzyjający użytkownikowi.
Już dołączenie jednego napędu znacznie zwiększa możliwości Spectrum. Na jednej stronie dyskietki znajduje się 40 ścieżek podzielonych na sektory po 256 bajtów, co daje łącznie ok. 160 kB. Sam system operacyjny zajmuje ok. 20 kB (16 kB dla systemu oraz 4 kB katalog dysku), a więc dla użytkownika pozostaje 140 kB. Czysta dyskietka przygotowywana jest do pracy przez procedurę formatowania, podczas której tworzone są ścieżki i sektory oraz zapisywany jest sam system operacyjny. Formatowanie jest możliwe po umieszczeniu w napędzie dyskietki już sformatowanej, czyli zawierającej TOS, np. dyskietki demonstracyjnej. Następną czynnością jest podanie komendy:
Format * „nazwa napędu” TO „nazwa dysku”
Nazwami napędów są litery A, B, C, D. W składni komend TOS wykorzystano słowa kluczowe występujące w BASIC-u. Przed zaformatowaniem system żąda potwierdzenia polecenia wyświetlając na ekranie pytanie „Format disk in drive A Y/N ?” oraz zmiany dyskietki wzorcowej na czystą. Ostrożność ta jest niezbędna, bowiem procedura ta niszczy cały poprzedni zapis, co grozi utraceniem bardzo cennych danych lub programów. Po około 30 sekundach dyskietka gotowa jest do pracy. Wszystkie zbiory zapisywane na dysku zorganizowane są w hierarchiczny system zawierający katalog główny oraz podkatalogi. W katalogu głównym oraz każdym podkatalogu umieszczony jest spis zbiorów lub podkatalogów kolejnego poziomu. Struktura ta przypomina rozgałęzione korzenie drzewa.
Katalog zbiorów wyświetlany instrukcją CAT * zawiera szereg istotnych informacji: nazwa aktualnego katalogu, numer aktualnego poziomu w strukturze, nazwę napędu, nazwę, typ, długość, alokację i atrybuty zbiorów. Dolny wiersz informuje o stanie wykorzystania wolnego miejsca. Katalog wyświetlany jest do końca. Jeśli ilość nazw zbiorów przekracza ilość wierszy ekranu, to następuje scroll. Klawisz S zatrzymuje automatyczny scroll w dowolnym miejscu, a Q uruchamia go ponownie.
Nazwa zbioru składa się z ciągu 8 znaków oraz trzyliterowego, oddzielonego kropką rozszerzenia (opcja), oznaczającego typ, np. wszystkim programom w
BASIC-u nadamy rozszerzenie .BAS, a maszynowym .COD. Dla TOS zastrzeżone są rozszerzenia .DIR (katalog) oraz .SCP (Serial Communication Ports). Wszystkie litery w nazwie zamieniane są automatycznie na duże.
Do zapisania lub odczytania programu z dysku nie wystarcza samo określenie jego nazwy. Większość operacji dostępnych w TOS wymaga podania wszystkich nazw podkatalogów występujących na drodze pomiędzy aktualnym katalogiem, a zbiorem docelowym. Poszczególne nazwy składowe tworzą ścieżkę nazw, fachowo zwaną ścieżką dostępu, którą dalej będziemy oznaczać skrótem sd. Na przykład „SPECTRUM GRY.DIR:BRIDGE.BAS” wskazuje sposób dojścia z katalogu głównego do programu BRIDGE.BAS. Inaczej mówiąc ścieżka dostępu jest złożoną nazwą umożliwiającą odszukanie zbioru w hierarchicznej strukturze. Składnia komend dyskowych transmitujących dane lub programy między dyskiem a kompute rem jest taka sama jak komend dotyczących magnetofonu:
SAVE * „sd” OPCJA lub LOAD * „sd” OPCJA
OPCJA oznacza LINE numer (tylko dla SAVE),
SCREEN$, CODE start, długość lub DATA nazwy tablicy
Program BRIDGE.BAS wczytalibyśmy przez LOAD * „SPECTRUM GRY.DIR:BRIDGE.BAS”. TOS umożliwia korzystanie z programu o nazwie START, który wczytuje się automatycznie i uruchamia po naciśnięciu RESET. Może to być jakikolwiek program nagrany przez SAVE * „START” LINE numer, ale najkorzystniej będzie, jeżeli ułatwimy sobie w ten sposób wyświetlenie katalogu dysku i wczytanie dowolnie wybranego innego programu. Komenda SAVE * nie jest wykonywana natychmiast, jeśli TOS stwierdzi istnienie zbioru o podanej nazwie. Jest to przejawem troski o roztargnionych użytkownikach, którzy nieopatrznie mogliby skasować niewłaściwy program. W każdym z podobnych przypadków system informuje, że napotkał już taką nazwę i żąda ponownego zaakceptowania komendy.
Również przed wykonaniem instrukcji ERASE * „sd” użytkownik ma czas zastanowić się jeszcze raz. Służy ona do usuwania z dysku zbędnych już zbiorów. Oprócz konieczności każdorazowego potwierdzenia wszystkich komend powodujących kasowanie poprzedniego zapisu istnieje jeszcze jeden bardzo wygodny sposób ochrony programów. Jest nim zmiana atrybutów zbioru przez ATTR * „sd” p. Litera p pochodzi od „protected” i oznacza, że zbioru nie można skasować, ani zapisać innego o tej samej nazwie do czasu usunięcia zabezpieczenia przez ATTR * „sd” u. Komenda ATTR * „sd” i utrudnia ingerencję innych osób do naszych programów, ponieważ CAT * nie wyświetla ich nazw. Przeciwne znaczenie ma podanie w komendzie litery v. Do zmiany nazwy zbioru lub katalogu wystarczy podanie LET » „stara nazwa” TO „nowa”. Dzięki Instrukcji MOVE * „źródło” TO „przeznaczenie” oraz programom zawartym na dysku demonstracyjnym użytkownik nie ma żadnych kłopotów ze sporządzeniem kopii programów lub całej dyskietki.
Istnieje grupa instrukcji ułatwiających poruszanie się w rozbudowanej strukturze katalogów i podkatalogów. Są one odpowiednikiem instrukcji skoku w Basic-u i powodują przemieszczanie się do dowolnie wybranego podkatalogu. Należy do nich instrukcja GOTO * „sd”, która zmienia bieżący katalog na inny. Dodatkowe opcje GOTO * „” i GOTO „” zmieniają aktualny katalog na katalog znajdujący się jeden lub dwa poziomy wyżej. Instrukcja GO SUB * „xd” łącznie z * DRAW* odpowiada skokowi do podprogramu w BASIC-u. Aktualne położenie w hierarchicznej strukturze zbiorów podaje LIST*.
Ostatnią grupę instrukcji stanowią instrukcje umożliwiające tworzenie i zarządzanie zbiorami danych odostępie sekwencyjnym i bezpośrednim. Instrukcja DIM * „sd” zakłada zbiór lub podkatalog na dysku. Do otwarcia i zamknięcia zbioru w wybranym trybie służą
OPEN # * nr kanału; „sd”; tryb dostępu; [; dług. rekordu]
oraz CLOSE # * nr kanału
Odczyt danych ze zbioru umożliwia instrukcja
INPUT * # nr kanału; nazwa zmiennej a zapis w zbiorze wyrażenie PRINT * # nr kanału;
[; AT nr rekordu]
Instrukcja RESTORE * # nr kanału ustawia wskaźnik zbioru na początek.
Wszystkie instrukcje TOS mają znaczenie zbliżone do odpowiadających instrukcji występujących w BASIC-u. Bardzo ułatwia to użytkownikowi posługiwanie się nimi. Umiejętne ich wykorzystanie w programie pozwala stworzyć bardzo ciekawe oprogramowanie.
Janusz Jarmoch