DiskRx
From Atariki
Wydany przez ICD, Inc., dość rozbudowany monitor dyskowy. Ma wiele opcji specyficznych dla formatu SpartaDOS, pozwala też na otwieranie do edycji plików i katalogów. Ostatnia wersja nosi numer 1.9. Napisany w języku Action!, autorem jest Howard Peters. DiskRx rozprowadzany był jako część pakietu SpartaDOS Toolkit.
Informacje poniżej to przekład firmowej instrukcji do programu znajdującej się na stronach 9-16 dokumentacji SpartaDOS Toolkit.
Przeznaczenie
Program przeznaczony jest do edycji dyskietek w formacie SpartaDOS, śledzenia struktury plików i map sektorów, odzyskiwania zniszczonych katalogów itp. Większość funkcji programu działa tylko na dyskach z systemem plików SpartaDOS-u, ale program można zastosować też do prostych edycji dyskietek w innych formatach.
DiskRx ma dwa tryby pracy: tryb dyskowy i tryb plikowy. Ten drugi może być użyty tylko na dyskach w formacie SpartaDOS. W trybie dyskowym program udostępnia do edycji sektory całego dysku, natomiast w trybie plikowym dostępne sa tylko sektory należące do wskazanego pliku (lub katalogu).
Składnia
- DISKRX
- DISKRX Dn:
- DISKRX [Dn:][path>]filename.ext
W pierwszym przypadku program po uruchomieniu zapyta o numer dysku, jaki ma być otwarty do edycji. W przypadku drugim otwarcie dysku nastąpi automatycznie, a w przypadku trzecim automatycznie nastąpi otwarcie pliku (w trybie plikowym), o ile tylko taki istnieje. Jeśli wskazanego pliku nie ma, następuje otwarcie dysku, na którym miał się on znajdować. Jeśli nie podano numeru napędu, przyjmowany jest napęd domyślny (czyli ten, który jest bieżąco ustawiony w COMMAND.COM). Podawanie ściezki nie jest konieczne - jeśli nie jest podana, DiskRx przeskanuje katalogi wskazanego dysku i otworzy do edycji pierwszy znaleziony plik o podanej nazwie.
Opis
Po uruchomieniu program zgłasza się tak jak to widać na załączonym obrazku. Na samym dole ekranu widnieje linia z podpowiedzią, jak wyświetlić menu oraz jak opuścić program. O linijkę wyżej znajduje się linia poleceń, która ponadto służy do wyświetlania komunikatów. Wyżej jest pole z informacjami o bieżących parametrach pracy programu: trybie, numerze dysku lub nazwie pliku otwartego do edycji, numerze sektora, typie sektora, jego rozmiarze, typie systemu plików oraz czy bieżący sektor jest w mapie bitowej zaznaczony jako zajęty czy nie. W trybie plikowym wyświetlane sa ponadto: numer pierwszego sektora mapy pliku, numer pierwszego sektora danych, numer kolejny sektora w pliku.
Typ sektora reprezentowany jest przez czteroliterowy skrót. DiskRx rozróżnia siedem typów:
- BOOT - sektory od 1 do 3
- BMAP - sektor mapy bitowej dysku
- DIRM - mapa sektorów głównego katalogu
- MDIR - sektory danych katalogu głównego
- SUBM - mapa sektorów podkatalogu
- SDIR - sektory danych podkatalogu
- DATA - wszystkie inne sektory
Na dyskach w formacie obcym dla SpartaDOS, albo na dyskach SpartaDOS, gdzie z powodu uszkodzenia filesystemu program nie jest w stanie przeskanować katalogów, rozróżniane są tylko sektory BOOT i DATA.
Rozmiar sektora to 128 lub 256 bajtów. Typ systemu plików to SpartaDOS (literka 'Y' w polu oznaczonym "sparta") lub każdy inny. Zajętość sektora oznaczona jest przez 'Y' lub 'N' w polu "alloc".
Powyżej pola informacyjnego znajduje się obszar edycyjny. Dzieli się on na dwie części: zawartość bieżącego sektora wyświetlana jest w postaci liczb szesnastkowych po lewej stronie ekranu oraz jako znaki ATASCII po stronie prawej. Na lewym skraju ekranu widnieją indeksy pozwalające zorientowac się w położeniu bajtów w sektorze; mają one zakres od $00 do $78 dla sektorów 128-bajtowych, lub od $00 do $F8 dla sektorów 256-bajtowych. Każdy wiersz obszaru edycyjnego reprezentuje osiem bajtów sektora. Sektory 128-bajtowe wyświetlane są na ekranie w całości, natomiast sektory 256-bajtowe zajmują dwa ekrany. Wciśnięcie ">" powoduje przejście do drugiej połówki sektora, a "<" - powrót do pierwszej.
Menu stanowi rodzaj ściągawki z funkcji dostępnych za pośrednictwem linii poleceń. Po opanowaniu klawiszologii przez użytkownika menu jest w zasadzie niepotrzebne. DiskRx jest ogólnie przyjazny i łatwy w użytkowaniu.
Komendy dostępne z linii poleceń
(A) Arithmetic conversion
Przeprowadza konwersję liczb pomiędzy systemami szesnastkowym, dziesiętnym i binarnym. Domyślny jest system dziesiętny, przełączenie w binarny następuje po wciśnięciu "B",a w szesnastkowy - po wciśnięciu "H" lub "$". Po wprowadzeniu liczby, która ma zostac przeliczona na inny system, trzeba nacisnąć klawisz RETURN lub spację, a potem wskazać system, na jaki ma zostać dokonana konwersja: "D" dziesiętny, "B" binarny lub "H"/"$" szesnastkowy. W każdej fazie wyświetlana jest jasna podpowiedź programu, co robić dalej.
Próby konwersji do tego samego systemu (np. z binarnego na binarny) są ignorowane.
(B) Blank sector
Powoduje wyzerowanie bufora edycyjnego. Można tam potem wpisać potrzebne dane ręcznie, a następnie zapisać we wskazanym miejscu dysku lub pliku.
(C) Change disk
Zmiana dyskietki w napędzie, numeru napędu lub trybu pracy. Przy pracy z dyskiem zapisanym w formacie SpartaDOS wybranie tej funkcji powoduje ponowne odczytanie drzewa podkatalogów. Przydaje się to przy odzyskiwaniu zniszczonej struktury katalogów, żeby zobaczyć, czy prace postępują prawidłowo. W trybie plikowym wybranie tej funkcji powoduje przejście do trybu dyskowego. W takiej sytuacji użytkownik proszony jest o wybranie numeru napędu przez wciśnięcie jednego z klawiszy z zakresu od '1' do '8'. Można też wybrac napęd domyślny wcisnąwszy klawisz RETURN lub spację.
(D) Directory
Ta funkcja działa tylko na dyskach w formacie SpartaDOS. Wyświetlana jest zawartość całego katalogu, łącznie z wpisami oznaczającymi pliki skasowane, nie zamknięte itp. Można też podać ścieżkę do podkatalogu, trzeba tylko pamiętać, że w programie DiskRx wszystkie ścieżki zaczynają się w katalogu głównym (niezależnie od tego, który katalog ustawiony jest jako bieżący pod DOS-em). Katalog wyświetla następujące informacje:
- nazwę pliku i jego rozmiar
- status pliku
- numer pierwszego sektora mapy sektorów pliku
- numer sektora zawierającego wpis katalogowy
Status jest wyświetlany na dole ekranu, a ścieżka - jeśli podano - na górze. Niektóre z kodów statusu są ważne tylko pod SpartaDOS X, natomiast pod SpartaDOS 3.2 są ignorowane. Są to: Archive, Hidden i Open.
(EA) Edit ASCII i (EH) Edit Hex
Kursor umieszczany jest w odpowiednim oknie edycji bieżącego sektora. Położenie kursora można zmieniać przy użyciu klawiszy kursora, edycję kończymy klawiszem Esc. Przy edycji szesnastkowej program przyjmuje jako dane tylko klawisze 0-9 i A-F, natomiast w polu edycji ASCII można wprowadzać wszystkie znaki za wyjątkiem Esc i znaków sterujących kursorem. Jeśli zachodzi potrzeba wprowadzenia tych wartości, trzeba przejść do edycji szesnastkowej i wpisać odpowiednie liczby. Wszystkie zmiany wprowadzane są natychmiast do bufora edycji, a zmienione bajty są podświetlane w oknie edycji hex. Żeby zapisać zmieniony sektor na dysku, należy użyć komendy "W".
(F) File mode
Podaje się tu nazwę pliku, jaki ma być otwarty do obróbki. Gdy podany zostanie tylko numer napędu, funkcja ta działa podobnie do "C". Trzecia możliwość to wyjście bez podawania nazwy pliku - osiąga się to przez wciśnięcie Esc lub RETURN.
DiskRx zakłada, że kazda podana ścieżka dostępu zaczyna się w katalogu głównym. Ścieżka dostępu do pliku niestety nie jest wyświetlana w polu informacyjnym, ze względu na niedostatek wolnego miejsca. Trzeba pamiętać o tym, że program w zasadzie nie potrzebuje ścieżki dostępu, bez tego też znajdzie plik o podanej nazwie, jednak podanie ścieżki dostępu może być niezbędne w sytuacji, kiedy na dysku znajduje się kilka kopii tego samego pliku (lub różne pliki o tej samej nazwie). Komenda "D" pozwala sprawdzić, czy zachodzi taka sytuacja. Z braku miejsca na ekranie wyświetlana ścieżka dostępu może mieć tylko do 38 znaków - jeśli ma być dłuższa, trzeba użyć jokera "*" do skracania nazw podkatalogów.
Gdy w ścieżce dostępu nie podano specyfikacji dysku, przeszukiwany jest dysk bieżąco wybrany w programie DiskRx. Katalogi mogą być otwierane podobnie jak pliki, wystarczy podać nazwę, przy czym nazwa katalogu głównego to "MAIN". Edycja pliku (lub katalogu) jest możliwa tylko w obszarze dysku przezeń zajętym.
(H) Hex
Przełącza wyświetlane przez program wartości numeryczne pomiędzy systemem dziesiętnym a szesnastkowym.
(M) Menu
Wywołanie na ekran ściągawki z komend programu. "P" powoduje przejście do następnej strony, Esc - wyjście. Wszystkie komendy moga być wywołane w czasie przeglądania menu i wszystkie oprócz "H", "P" oraz "Ctrl/P" powodują automatyczne opuszczenie menu i przełączenie na ekran główny.
(O) Override parameters
Ta funkcja przydaje się przy odzyskiwaniu danych na dysku, gdzie zawartość pierwszego sektora została zniszczona, a w związku z tym program nie jest w stanie rozpoznać poprawnie niektórych parametrów niezbędnych do pracy. Zmienić tu można:
- typ filesystemu (SpartaDOS czy nie)
- wielkość dysku w sektorach
- rozmiar sektora w bajtach
- status software'owego zabezpieczenia przed zapisem
Po ustaleniu poprawnych parametrów można je opcjonalnie zapisać do sektora nr 1, o ile nie jest fizycznie uszkodzony.
(QP) Quit program
Wyjście do DOS-u.
(R) Read sector
Odczyt sektora z dysku do bufora edycyjnego. Opcje:
- R - odczyt następnego sektora
- R n - odczyt sektora numer 'n'
- R L - odczyt ostatniego (last) sektora
W trybie dyskowym chodzi o sektory dysku, w trybie plikowym - o sektory pliku liczone od jego początku.
(SH) Search Hex i (SA) Search ASCII
Wyszukiwanie podanej sekwencji bajtów począwszy od bieżącego sektora aż do sektora ostatniego (dysku lub pliku - zależnie od trybu pracy programu). Znak '?' jest jokerem, to znaczy zastępuje każdy inny znak w wyszukiwanej sekwencji. Maksymalna długość sekwencji do wyszukania to 18 bajtów. Gdy znaleziono, w polu edycyjnym wyświetlana jest zawartość sektora, a indeks wewnątrz niego program podaje w linii komend. Pada także pytanie, czy trzeba szukać dalej. Szukanie można przerwać w dowolnym momencie przez wciśnięcie Esc.
(T) Toggle allocation
Powoduje zaznaczenie w mapie bitowej dysku niezajętego sektora jako zajętego i odwrotnie.
(W) Write sector
Zapis na dysk sektora znajdującego się w buforze edycyjnym. Opcje:
- W - zapis do bieżącego sektora
- W n - zapis do sektora o numerze 'n'
W trybie dyskowym chodzi o sektory dysku, w trybie plikowym - o sektory pliku liczone od jego początku.
(>) Read next i (<) Read previous
Odczyt następnego (lub poprzedniego) sektora pliku lub dysku. Dla sektorów 128-bajtowych powoduje to przejście z sektora do sektora. Dla sektorów 256-bajtowych przejście następuje albo do drugiej połówki bieżącego sektora, albo do pierwszej następnego (względnie poprzedniego).
Przy śledzeniu pliku, w którym są luki (tj. takiego, w którym nie wszystkie sektory zostały jeszcze przydzielone, a mapa sektorów pliku wykazuje nieciągłości), taka luka będzie wyświetlona jako pusty sektor w polu edycji, a ponadto ukaże się komunikat "Sector not allocated". W polu informacyjnym znikną też niektóre informacje, tj. numer sektora w pliku (file index), zajętość sektora i numer sektora.
(+) Scan forward i (-) Scan backward
Szybkie przeglądanie zawartości dysku lub pliku w kierunku numerów rosnących (+) lub malejących (-). W trybie plikowym program wyświetla tylko sektory danych przydzielone do pliku. Przeglądanie przerywa naciśnięcie dowolnego klawisza.
(1) Recover: Write tagged sectors to a file
Zapis zaznaczonych sektorów do pliku lub na inny dysk. Po znalezieniu poszukiwanych danych sektor trzeba zaznaczyć do zapisu wciśnięciem spacji. Taki sektor nie może być zapisany więcej niż raz. Plik zostaje zamknięty po wyjściu z funkcji klawiszem '1' lub po opuszczeniu programu DiskRx. Nb. plik z zawartością wskazanych sektorów może być zapisany tylko na inny dysk niż ten, który jest bieżąco otwarty do edycji, a to dlatego, że głównym przeznaczeniem opisywanej funkcji programu jest odzyskiwanie danych z dysku, na którym została zniszczona struktura katalogów.
(2) Recover: Create a file from a sector map
Zapis pliku na inny dysk na podstawie wskazanej na bieżąco obrabianym dysku mapy sektorów pliku. Podobnie jak powyżej, przydatne jest to od odzyskiwania plików z dysku o zniszczonej strukturze katalogowej.
(3) Recover: Create a new directory entry from a sector map
Utworzenie nowego wpisu katalogowego na podstawie wskazanej mapy sektorów pliku. Trzeba podać nazwę pliku i (opcjonalnie) ściezkę dostępu. Nowy wpis katalogowy jest zawsze dodawany na końcu wskazanego katalogu, trzeba przy tym pamiętać, że SpartaDOS ogranicza liczbę wpisów w jednym katalogu do 127 (to ograniczenie nie dotyczy wszelako SpartaDOS X). Nowy wpis dostaje status zwykłego pliku, jeśli ma to być katalog, status trzeba zmienić ręcznie. Jako czas modyfikacji pliku przyjmowana jest bieżąca data i godzina. Koniec katalogu jest wskazywany bajtem statusu o wartości zero, opisywana funkcja dokonuje zapisu w to miejsce, jeśli więc zachodzi potrzeba nadpisania innego wpisu katalogowego, wystarczy wyzerować jego bajt statusu. Patrz też instrukcja obsługi SpartaDOS, rozdział 19.
(4) Recover: Write buffer to any drive/sector
Zapis bufora edycyjnego do dowolnego sektora dowolnego dysku. Bardzo przydatne w sytuacji, kiedy skasowana została zawartość sektora nr 1 któregoś z dysków - można wtedy wziąć takowy z innego dysku w formacie SpartaDOS, a następnie przy użyciu tej funkcji zapisać tam, gdzie trzeba i ręcznie poprawić tak, żeby wszystko pasowało (jeśli dyski są tych samych rozmiarów, można do tego użyć programu CleanUp). Inne możliwe zastosowanie tej funkcji to zapis sektorów systemowych do pliku celem analizy. Patrz też instrukcja obsługi SpartaDOS, rozdział 19.
Pozostała klawiszologia
Ctrl/P
Włącza i wyłącza zapis na drukarkę. Program drukuje odczyty sektorów oraz katalogi. Jeśli drukarka nie jest podłączona, ta funkcja nie będzie widoczna w menu.
Esc
Klawisz Esc powoduje opuszczenie dowolnej funkcji programu DiskRx. Jest to zwykły sposób opuszczenia funkcji Menu, Override, Directory oraz pól edycyjnych.
Inne uwagi
DiskRx ma dwa typy komunikatów błędów:
- "Disk error# [x] at sector [y]" - odnosi się do błędów odczytu lub zapisu na dysk, który jest otwarty do edycji. Najczęściej występujące kody błędów to 138 dla dysku, którego nie ma (nie zgłasza się), albo 144 przy wadliwym sektorze.
- "System error# [x]" odnosi się do błędu wykrytego przez SpartaDOS i wystąpi na ogół w przypadku zastosowania funkcji odzyskiwania (recovery) danych (1) i (2), albo przy podawaniu nazwy pliku tudzieź ścieżki dosŧępu, jeśli są błędne.
Przy obróbce dysku, który nie jest zapisany w formacie SpartaDOS, program może pracować tylko w trybie dyskowym. Komendy "D", "F", "T", "2", "3" nie mogą być użyte.
Po uruchomieniu DiskRx próbuje zmapować strukturę katalogową wybranego dysku. Kiedy jest ona zniszczona, może się to nie udać. Jeśli mapowanie nie przebiega pomyślnie, zawsze można je przerwać klawiszem Esc. Program będzie wtedy pracował w trybie dyskowym a rozróżnianymi typami sektorów będą tylko BOOT i DATA.
Przy wejściu w tryb plikowy program próbuje zmapować sektory pliku, co też można przerwać klawiszem Esc, jeśli operacja ta nie przebiega pomyślnie. Powodem problemów może być zniszczona mapa sektorów wybranego pliku.
Jeśli zniszczona jest zawartość sektora nr 1, program może nie być w stanie ustalić poprawnych parametrów pracy dla tego dysku. Wyświetli wtedy komunikat "Unable to read boot sector" i poprosi o ponowne podanie specyfikacji dysku. Można wtedy wcisnąć Esc, a potem ustawić parametry dysku ręcznie przez funkcję "O" (Override) i w ten sposób uzyskać dostęp do danych.
Funkcje edycyjne przeznaczone są do naprawiania zniszczonej struktury systemu plików. Funkcje plikowe mają zastosowanie przy odzyskiwaniu straconych danych lub odbudowywaniu zniszczonych katalogów. Niemniej program może tez być użyty do wstawiania łatek do istniejących programów, zmiany znajdujących się w nich komunikatów itp.