Odczyt Winchestera: Różnice pomiędzy wersjami

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
Nie podano opisu zmian
 
(Nie pokazano 36 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
[[File:Mera-winchester.jpg|thumb|Winchester w zewnętrznej obudowie]]
[[File:Mera-winchester.jpg|thumb|Winchester w zewnętrznej obudowie]]
Jednym z nośników danych zapisanych na MERZE-400, które przetrwały do dziś jest dysk [[Winchester]] zamontowany w minikomputerze znajdującym się w [http://www.muzeumtechniki.warszawa.pl/ Muzeum Techniki] w Warszawie. Minikomputer ten wypożyczony został Muzeum przez Politechnikę Gdańską, gdzie działał w Instytucie Okrętowym jako maszyna, na której m.in. zespół rozwijający [[CROOK-5|CROOK-a]] pracował nad swoim systemem. Sam fakt, że dysk zawiera dane zapisane na MERZE-400 czyni go interesującym, a źródło jego pochodzenia jego wartość tylko podnosi, dając nadzieję na pozyskanie niezwykle cennych danych.
Jednym z nośników danych zapisanych na MERZE-400, które przetrwały do dziś, jest dysk [[Winchester]] zamontowany w minikomputerze znajdującym się w [http://www.muzeumtechniki.warszawa.pl/ Muzeum Techniki] w Warszawie. [[MERA-400 w Muzeum Techniki|Minikomputer ten]] wypożyczony został Muzeum przez Politechnikę Gdańską, gdzie działał w Instytucie Okrętowym jako maszyna, na której m.in. zespół rozwijający [[CROOK|CROOK-a]] pracował nad swoim systemem. Sam fakt, że dysk zawiera dane zapisane na MERZE-400 czyni go interesującym, a źródło pochodzenia wartość nośnika tylko podnosi, dając nadzieję na pozyskanie niezwykle cennych danych.
 
Muzeum umożliwiło dostęp do dysku i przeprowadzenie prób odczytu jego zawartości, za co autor składa podziękowania. Cieszy fakt, że rola Muzeum nie ogranicza się jedynie do gromadzenia zbiorów, a częścią misji jest również ich udostępnianie do prac, które mają na celu choć częściowe przywrócenie eksponatów do życia.


= Nośnik danych =
= Nośnik danych =


[[File:Nec-mera.jpg|thumb|NEC D5126]]
[[File:Nec-mera.jpg|thumb|NEC D5126]]
Nośnik danych to dysk z interfejsem [http://en.wikipedia.org/wiki/ST-506 ST-506], [http://support.necam.com/Legacy/Harddrives/D5126.cfm NEC D5126]. Jego podstawowe parametry:
Nośnik danych to dysk [http://support.necam.com/Legacy/Harddrives/D5126.cfm NEC D5126] z interfejsem [http://en.wikipedia.org/wiki/ST-506 ST-506]. Jego podstawowe parametry to:
* 5.25"
* 20 MB pojemności po sformatowaniu
* pojemność: 20 MB
* 2 talerze
* 2 talerze
* 4 głowice w zespole poruszanym za pomocą silnika krokowego
* 4 głowice w zespole poruszanym za pomocą silnika krokowego
* 615 cylindrów
* 615 cylindrów
* 17 sektorów/ścieżkę
* 17 sektorów/ścieżkę
* brak autoparkowania, ścieżka parkingowa: 664
* brak autoparkowania (ścieżka parkingowa: 664)
* transfer: 5Mbit/s
* transfer: 5Mbit/s
Dysk znajduje się w [[:File:Mt_plix.jpg|zewnętrznej 19" obudowie]], która oprócz niego zawiera również napęd dysków elastycznych 5,25". Elementy te podłączone są osobnymi kablami sygnałowymi do odpowiednich kontrolerów procesora peryferyjnego [[PLIX]]. Poza nimi, w obudowie zamontowany jest jedynie zasilacz +5/+12V oraz duży wentylator z tyłu obudowy.
Dysk znajduje się w [[:File:Mt_plix.jpg|zewnętrznej 19" obudowie]], która oprócz niego zawiera również napęd dysków elastycznych 5,25". Elementy te podłączone są osobnymi kablami sygnałowymi do odpowiednich kontrolerów procesora peryferyjnego [[MULTIX]]. Poza nimi, w obudowie zamontowany jest jedynie zasilacz +5/+12V oraz duży wentylator z tyłu obudowy.


[[:File:Mt_plix_wdc.jpg|Kontroler dysku]] zbudowany przez Amepol opiera się na układzie Intel C82062 zaprojektowanym dla komputerów z procesorami 80186. Realizuje on zapis i odczyt danych w standardzie MFM, który jako pierwszy używany był dla dysków z interfejsem ST-506.
[[:File:ME-WDC-506-front.jpg|Kontroler dysku]] zbudowany przez Amepol opiera się na układzie Intel C82062 zaprojektowanym dla rodziny komputerów z procesorami 80186. Realizuje on zapis i odczyt danych w standardzie MFM, używanym na początku istnienia interfejsu ST-506, zastąpionym później przez RLL.


= Pierwsze próby odczytu =
= Pierwsze próby odczytu =


[[File:Wd1006v-mm1.jpg|thumb|Kontroler MFM WD1006V-MM1]]
[[File:Wd1006v-mm1.jpg|thumb|Kontroler MFM WD1006V-MM1]]
Amepol używał w swoich konstrukcjach standardowych komponentów, używanych również w początkach ery komputerów PC. Pierwszym nasuwającym się sposobem odczytu zawartości dysku było więc użycie odpowiedniego kontrolera dla PC/XT lub AT. Takie komponenty są wciąż dostępne, wymagają jedynie komputera wyposażonego w szynę ISA (8 lub 16-bit, w zależności od typu kontrolera). Złącza ISA obecne są jeszcze w stosunkowo nowych płytach głównych, co pozwala na użycie w miarę współczesnego komputera PC. Zarówno kontrolery MFM jak i dyski tego typu są wciąż obsługiwane przez system operacyjny GNU/Linux, tak więc zbudowanie kompletnego środowiska uruchomieniowego było jak najbardziej możliwe.
[[Amepol]] używał w swoich konstrukcjach standardowych komponentów, używanych również w początkach ery komputerów PC. Pierwszym nasuwającym się sposobem odczytu zawartości dysku było więc użycie odpowiedniego kontrolera dla PC/XT lub AT. Takie komponenty są wciąż dostępne, wymagają jedynie komputera wyposażonego w szynę ISA (8 lub 16-bit, w zależności od typu kontrolera). Złącza ISA obecne są jeszcze w stosunkowo nowych płytach głównych, co pozwala na użycie w miarę współczesnego komputera PC. Zarówno kontrolery MFM jak i dyski tego typu są wciąż obsługiwane przez system operacyjny GNU/Linux, tak więc zbudowanie kompletnego środowiska uruchomieniowego było jak najbardziej możliwe.


Próba odczytu dysku przy użyciu takiego właśnie zestawu z kontrolerem MFM Western Digital WD1006V-MM1 zakończyła się niepowodzeniem. Dysk okazał się być sprawny mechanicznie i elektrycznie, ale kontroler raportował jedynie błędy odczytu.
Próba odczytu dysku przy użyciu takiego właśnie zestawu z kontrolerem MFM Western Digital WD1006V-MM1 zakończyła się niepowodzeniem. Dysk okazał się być sprawny mechanicznie i elektrycznie, ale kontroler raportował jedynie błędy odczytu.


Początkowo nie był znany układ, którego użył Amepol do konstrukcji interfejsu dla Winchestera, istniało więc prawdopodobieństwo, że układ ten realizował zapis w standardzie RLL. Przeprowadzone zostały więc próby odczytu z dwoma różnymi kontrolerami RLL: Western Digital WD1002A-27X oraz WD1003-RA2, zakończone również niepowodzeniem.
Początkowo nie był znany układ, którego użył [[Amepol]] do konstrukcji interfejsu dla Winchestera, istniało więc prawdopodobieństwo, że układ ten realizował zapis w standardzie RLL. Przeprowadzone zostały więc próby odczytu z dwoma różnymi kontrolerami RLL: Western Digital WD1002A-27X oraz WD1003-RA2, zakończone również niepowodzeniem.


= Uniwersalny czytnik dysków Winchester =
= Uniwersalny czytnik dysków Winchester =


Ponieważ próby odczytu za pomocą kontrolera MFM WD1006V-MM1 nie przyniosły pozytywnego rezultatu, należało założyć, że format zapisu danych jest inny od standardu MFM dla dysków ST-506 obsługiwanych przez użyty kontroler. Jest to prawdopodobne, ponieważ na początku ery tego interfejsu kontrolery różnych producentów nie zawsze były ze sobą w pełni kompatybilne. Poszukiwanie odpowiedniego, kompatybilnego kontrolera mogłoby okazać się zadaniem trwającym wieczność, potrzebne więc było alternatywne rozwiązanie, które idealnie pozwoliłoby odczytać dane niezależnie od:
Ponieważ próby odczytu za pomocą kontrolera MFM WD1006V-MM1 nie przyniosły pozytywnego rezultatu, należało założyć, że format zapisu danych jest inny od standardu MFM dla dysków ST-506 obsługiwanych przez użyty kontroler. Jest to prawdopodobne, ponieważ na początku ery tego interfejsu kontrolery różnych producentów nie zawsze były ze sobą w pełni kompatybilne. Poszukiwanie odpowiedniego, kompatybilnego kontrolera mogłoby okazać się zadaniem trwającym wieczność, potrzebne więc było alternatywne rozwiązanie, które pozwoliłoby odczytać dane niezależnie od:
* użytej metody zapisu,
* użytej metody zapisu,
* formatu ścieżki i sektora,
* formatu ścieżki i sektora,
* stanu danych (ewentualne uszkodzenia sektorów).
* stanu danych (ewentualne uszkodzenia sektorów).


Takie rozwiązanie istnieje dzięki temu, że interfejs ST-506 pozwala na dostęp do danych zapisanych na powierzchni nośnika na bardzo niskim poziomie. Sygnał danych wyprowadzony tym interfejsem jest niemalże wprost sygnałem pochodzącym z głowic dysku, bez żadnej obróbki logicznej. Można więc przeprowadzić procedurę, która polegałaby na:
Takie rozwiązanie istnieje dzięki temu, że interfejs ST-506 pozwala na dostęp do danych zapisanych na powierzchni nośnika na bardzo niskim poziomie. Sygnał danych wyprowadzony z dysku jest niemalże wprost sygnałem pochodzącym z głowic, bez żadnej obróbki logicznej. Można więc przeprowadzić procedurę, która polegałaby na:
# Zarejestrowaniu na nośniku zewnętrznym sygnału z głowic dysku, kolejno dla każdej ścieżki i głowicy.
# Zarejestrowaniu na nośniku zewnętrznym sygnału z głowic dysku (kolejno dla każdej ścieżki i głowicy).
# Analizie zapisu i odczytaniu z niego właściwych danych bajtowych.
# Analizie zapisu i odczytaniu z niego właściwych danych bajtowych.


Linia 54: Linia 55:


Urządzenie zostało zaimplementowane w oparciu o cztery główne elementy:
Urządzenie zostało zaimplementowane w oparciu o cztery główne elementy:
* AVR/Atmega162 z zewnętrznym oscylatorem 16MHz w roli kontrolera dysku
* [http://www.atmel.com/devices/atmega162.aspx AVR/Atmega162] z zewnętrznym oscylatorem 16MHz w roli kontrolera dysku
* [http://www.ti.com/product/sn75176b Texas Instruments SN75176BP] użyty do konwersji sygnału [http://en.wikipedia.org/wiki/RS-422 RS-422] do poziomów TTL
* [http://www.ti.com/product/sn75176b Texas Instruments SN75176BP] użyty do konwersji sygnału [http://en.wikipedia.org/wiki/RS-422 RS-422] do poziomów TTL
* Programowalny analizator stanów logicznych użyty jako sampler sygnału danych pracujący z częstotliwością 100MHz
* Programowalny analizator stanów logicznych użyty jako sampler sygnału danych pracujący z częstotliwością 100MHz
Linia 68: Linia 69:
# '''WDA''' (Winchester Data Analyzer, Python) - umożliwia przeprowadzenie analizy fizycznego obrazu dysku i zapisuje bajtowy obraz danych
# '''WDA''' (Winchester Data Analyzer, Python) - umożliwia przeprowadzenie analizy fizycznego obrazu dysku i zapisuje bajtowy obraz danych


= Odczyt danych =
= Odczyt dysku =


Proces obrazowania dysku odbył się w Muzeum Techniki i tym razem zakończył powodzeniem. Następnym krokiem było poznanie sposobu zapisu oraz formatu ścieżki i sektora, użytych przez Amepol. Krok ten ułatwia graficzny analizator zapisu, pokazujący spróbkowany sygnał z nałożonymi na niego wynikami działania algorytmów analizujących jego przebieg.
Proces obrazowania dysku odbył się w Muzeum Techniki i tym razem zakończył powodzeniem. Wykonanie pełnego obrazu dysku trwało około 10 minut i dawało w wyniku około 500MB danych z zapisem sygnału na wszystkich ścieżkach dysku. Tak duży rozmiar (w porównaniu do 20 MB pojemności dysku) wynika z trzech faktów:
* 20 MB to powierzchnia dysku po jego sformatowaniu. Rzeczywista ilość danych na ścieżce jest powiększona o nagłówki sektorów i inne struktury organizujące zapis
* Jeden bit danych zapisywany jest za pomocą dwóch bitów zapisu MFM (zegar i dane)
* Sygnał próbkowany był z częstotliwością dziesięciokrotnie wyższą, niż zegar użyty do zapisu MFM


Operacja obrazowania została powtórzona kilkunastokrotnie, dając w sumie prawie 7 GB danych do późniejszej analizy. Podczas kolejnych powtórzeń zmieniały się warunki odczytu, co zwiększało prawdopodobieństwo uzyskania poprawnego obrazu:
* pierwszy odczyt robiony był na "zimnym" dysku, kolejne na coraz bardziej "rozgrzanym" (zmiany temperatury mogą mieć wpływ zarówno na mechanikę jak i elektronikę napędu),
* następujące po sobie sesje były przeprowadzane przy ruchu głowic naprzemiennie do wewnątrz i na zewnątrz powierzchni dysku (nieprecyzyjności pozycjonowania głowicy mogły dać lepsze rezultaty w jednym bądź drugim przypadku),
* część odczytów została wykonana po serii gwałtownych zmian pozycjonowania głowicy (pozycja zmieniana o kilkaset cylindrów w przód i w tył, powody jak wyżej).
Następnym krokiem było poznanie sposobu zapisu oraz formatu ścieżki i sektora, użytych przez Amepol. Krok ten ułatwił graficzny analizator zapisu, pokazujący spróbkowany sygnał z nałożonymi na niego wynikami działania algorytmów analizujących jego przebieg.
<br /><br />
[[File:Wda.png|center|700px|Graficzny interfejs analizatora zapisu MFM]]
[[File:Wda.png|center|700px|Graficzny interfejs analizatora zapisu MFM]]
 
<br />
Z jego pomocą możliwe było dobranie optymalnych parametrów pracy algorytmów (dających poprawne wyniki analizy dla wszystkich ścieżek). Analiza pokazała, że na dysku użyty został zapis MFM. Znalazła się też odpowiedź na pytanie, dlaczego zawartości dysku nie udało się odczytać kontrolerem MFM używanym wcześniej. Powody były dwa, z których pierwszy był pewną przyczyną niepowodzenia:
Z jego pomocą możliwe było dobranie optymalnych parametrów pracy algorytmów (dających później poprawne wyniki analizy dla wszystkich ścieżek). Analiza pokazała, że na dysku użyty został zapis MFM zgodny ze standardem używanym w napędach ST-506. Powody, dla których nie udała się pierwsza próba odczytu były dwa, z których pierwszy był pewną przyczyną niepowodzenia:
# Amepol sformatował dysk używając 16 sektorów na ścieżkę, a nie 17, jak mówi specyfikacja dysku.
# Amepol sformatował dysk używając 16 sektorów na ścieżkę, a nie 17, jak mówi specyfikacja dysku.
# Układ Intel C82062 użyty przez Amepol korzysta z 16-bit CRC do liczenia zarówno sum kontrolnych nagłówków sektorów, jak i danych w sektorze. Kontroler WD1006V-MM1 używał 16-bit CRC dla nagłówków, ale dane były już zabezpieczane 32-bit CRC.
# Układ Intel C82062 użyty przez Amepol korzysta z 16-bit CRC do liczenia zarówno sum kontrolnych nagłówków sektorów, jak i danych w sektorze. Kontroler WD1006V-MM1 używał 16-bit CRC dla nagłówków, ale dane były już zabezpieczane 32-bit CRC.
Po skonfigurowaniu analizatora (WDA), przeprowadzona została kompletna analiza obrazu, której kroki obejmowały (w nawiasie podane odpowiednie elementy widoczne na powyższym rysunku):
* odtworzenie zegara, który został użyty przy zapisie (jasnoniebieskie znaczniki pod przebiegiem),
* odnalezienie znaczników MFM (fragment sygnału oznaczony fioletowym tłem),
* określenie położenia nagłówka sektora i danych zapisanych w sektorze (rysunek przedstawia kompletny nagłówek sektora)
* pogrupowanie bitów sygnału MFM w pary [zegar, dane] (jasno- i ciemnoszare tło pod przebiegiem)
* rozkodowanie sygnału MFM do bitów i bajtów stanowiących treść struktury sektora ("0" i "1" małą czcionką oznaczają kolejne bity zegara i danych MFM, "0" i "1" dużą czcionką bity danych, złożone niżej w bajty o podanej dużą czcionką wartości i odpowiadających im znakach ASCII)
* odczytanie nagłówków sektorów, zweryfikowanie sum kontrolnych nagłówków, określenie ich adresów (dwie pionowe zielone linie oznaczają zgodną 16-bit sumę CRC)
* odczytanie danych zapisanych w sektorach, zweryfikowanie sum kontrolnych
* złożenie zawartości sektorów w bajtowy obraz ścieżki
* złożenie bajtowych obrazów ścieżek w kompletny obraz dysku
= Zawartość dysku =
Dysk zawiera trzy obszary danych:
# Pierwszy cylinder (4*16 sektorów) jest niedostępny dla systemu MERA-400. Używa go wyłącznie procesor peryferyjny jako obszar do relokacji danych z uszkodzonych sektorów.
# Pozostała przestrzeń dostępna jest dla minikomuptera i zawiera dwa obszary dyskowe zorganizowane przez system operacyjny [[CROOK-5]]:
#* Etykieta "A" (5 MB) - obszar systemowy
#* Etykieta "C" (15 MB) - obszar roboczy dla użytkowników systemu
== Obszar "A" ==
Obszar zawiera 332 zbiory, przede wszystkim binaria dla MERY-400:
* zbiory BOOT i BOOTL - dwa podstawowe elementy procesu [[Ładowanie systemu operacyjnego|ładowania systemu operacyjnego]]
* jądra systemu operacyjnego [[CROOK|CROOK-5]] w kilku [[Wersje systemu CROOK-5|wersjach]]: 62F, N8D, P8E, P8F
* kilkadziesiąt narzędzi dla systemu [[CROOK]]
* assemblery: ASSK, ASSM, GASS
* interpreter BASIC-a
* kompilator C
* FORTRAN
* PASCAL
* Modula-2
* translator CEMMA
* symulator systemu operacyjnego SOM-3
== Obszar "C" ==
Obszar zawiera 1243 zbiory użytkowników, które można podzielić na kilka grup. Poniższa lista nie jest kompletna, pokazuje tylko zakres danych, które dzięki odczytaniu dysku stały się dostępne:
# Binaria
#* system testowy AMETEX Amepolu
#* konfigurator CROOK-5 - ostatni program napisany przez zespół rozwijający CROOK-a
#* niektóre narzędzia systemu UNIX w wersji dla MERY-400
# Dokumentacja
#* opisy systemu operacyjnego [[CROOK]]
#* opisy narzędzi systemowych
#* podręczniki programowania w językach LISP, ALGOL, C, ASSM, FORTRAN, ModRAL, PASCAL
#* opis dBASE III PLUS
#* opis procesorów [[MULTIX]] i [[PLIX]]: instrukcje instalacji, styk z MERĄ-400, opisy protokołów komunikacji
# Teksty różnych autorów traktujące o rozwoju CROOK-a i MERY-400, m.in.:
#* ''"Kierunki rozwoju systemu operacyjnego CROOK dla minikomputera MERA-400"'' – Z. Czerniak, W.J. Martin, M. Nikodemski
#* ''"Szybkie łącze dla lokalnej sieci minikomputerów MERA-400"'' – K. Anzelewicz, W. Bojarski, Z. Czerniak
#* ''"Systemy operacyjne CROOK-4 i CROOK-5 dla minikomputera MERA-400"'' – Z. Czerniak
#* ''"Łącze międzykomputerowe oparte na interface V24 dla minikomputera MX-16 (MERA-400)"'' – Z. Czerniak, M. Nikodemski
#* ''"Urządzenie sprzęgające minikomputery MERA-400"'' – Z. Czerniak
#* ''"System operacyjny sterujący lokalną siecią minikomputerów MERA-400"'' – W. Bojarski, Z. Czerniak
# Źródła
#* biblioteki fortranowe
#* biblioteki C
#* źródła narzędzi UNIX-a (C)
#* źródła narzędzi systemowych CROOK-5 (assembler)
#* źródła oprogramowania procesorów [[MULTIX]] i [[PLIX]] (firmware) (assembler 8085)
#* źródła systemu [[CROOK|CROOK-5]] w [[Wersje systemu CROOK-5|wersjach N76 i N8F]] oraz zbiory poprawek do wersji P76 i P8F (assembler)
{{source|title=Opracowanie własne}}

Aktualna wersja na dzień 08:12, 9 mar 2016

Winchester w zewnętrznej obudowie

Jednym z nośników danych zapisanych na MERZE-400, które przetrwały do dziś, jest dysk Winchester zamontowany w minikomputerze znajdującym się w Muzeum Techniki w Warszawie. Minikomputer ten wypożyczony został Muzeum przez Politechnikę Gdańską, gdzie działał w Instytucie Okrętowym jako maszyna, na której m.in. zespół rozwijający CROOK-a pracował nad swoim systemem. Sam fakt, że dysk zawiera dane zapisane na MERZE-400 czyni go interesującym, a źródło pochodzenia wartość nośnika tylko podnosi, dając nadzieję na pozyskanie niezwykle cennych danych.

Muzeum umożliwiło dostęp do dysku i przeprowadzenie prób odczytu jego zawartości, za co autor składa podziękowania. Cieszy fakt, że rola Muzeum nie ogranicza się jedynie do gromadzenia zbiorów, a częścią misji jest również ich udostępnianie do prac, które mają na celu choć częściowe przywrócenie eksponatów do życia.

Nośnik danych

NEC D5126

Nośnik danych to dysk NEC D5126 z interfejsem ST-506. Jego podstawowe parametry to:

  • 20 MB pojemności po sformatowaniu
  • 2 talerze
  • 4 głowice w zespole poruszanym za pomocą silnika krokowego
  • 615 cylindrów
  • 17 sektorów/ścieżkę
  • brak autoparkowania (ścieżka parkingowa: 664)
  • transfer: 5Mbit/s

Dysk znajduje się w zewnętrznej 19" obudowie, która oprócz niego zawiera również napęd dysków elastycznych 5,25". Elementy te podłączone są osobnymi kablami sygnałowymi do odpowiednich kontrolerów procesora peryferyjnego MULTIX. Poza nimi, w obudowie zamontowany jest jedynie zasilacz +5/+12V oraz duży wentylator z tyłu obudowy.

Kontroler dysku zbudowany przez Amepol opiera się na układzie Intel C82062 zaprojektowanym dla rodziny komputerów z procesorami 80186. Realizuje on zapis i odczyt danych w standardzie MFM, używanym na początku istnienia interfejsu ST-506, zastąpionym później przez RLL.

Pierwsze próby odczytu

Kontroler MFM WD1006V-MM1

Amepol używał w swoich konstrukcjach standardowych komponentów, używanych również w początkach ery komputerów PC. Pierwszym nasuwającym się sposobem odczytu zawartości dysku było więc użycie odpowiedniego kontrolera dla PC/XT lub AT. Takie komponenty są wciąż dostępne, wymagają jedynie komputera wyposażonego w szynę ISA (8 lub 16-bit, w zależności od typu kontrolera). Złącza ISA obecne są jeszcze w stosunkowo nowych płytach głównych, co pozwala na użycie w miarę współczesnego komputera PC. Zarówno kontrolery MFM jak i dyski tego typu są wciąż obsługiwane przez system operacyjny GNU/Linux, tak więc zbudowanie kompletnego środowiska uruchomieniowego było jak najbardziej możliwe.

Próba odczytu dysku przy użyciu takiego właśnie zestawu z kontrolerem MFM Western Digital WD1006V-MM1 zakończyła się niepowodzeniem. Dysk okazał się być sprawny mechanicznie i elektrycznie, ale kontroler raportował jedynie błędy odczytu.

Początkowo nie był znany układ, którego użył Amepol do konstrukcji interfejsu dla Winchestera, istniało więc prawdopodobieństwo, że układ ten realizował zapis w standardzie RLL. Przeprowadzone zostały więc próby odczytu z dwoma różnymi kontrolerami RLL: Western Digital WD1002A-27X oraz WD1003-RA2, zakończone również niepowodzeniem.

Uniwersalny czytnik dysków Winchester

Ponieważ próby odczytu za pomocą kontrolera MFM WD1006V-MM1 nie przyniosły pozytywnego rezultatu, należało założyć, że format zapisu danych jest inny od standardu MFM dla dysków ST-506 obsługiwanych przez użyty kontroler. Jest to prawdopodobne, ponieważ na początku ery tego interfejsu kontrolery różnych producentów nie zawsze były ze sobą w pełni kompatybilne. Poszukiwanie odpowiedniego, kompatybilnego kontrolera mogłoby okazać się zadaniem trwającym wieczność, potrzebne więc było alternatywne rozwiązanie, które pozwoliłoby odczytać dane niezależnie od:

  • użytej metody zapisu,
  • formatu ścieżki i sektora,
  • stanu danych (ewentualne uszkodzenia sektorów).

Takie rozwiązanie istnieje dzięki temu, że interfejs ST-506 pozwala na dostęp do danych zapisanych na powierzchni nośnika na bardzo niskim poziomie. Sygnał danych wyprowadzony z dysku jest niemalże wprost sygnałem pochodzącym z głowic, bez żadnej obróbki logicznej. Można więc przeprowadzić procedurę, która polegałaby na:

  1. Zarejestrowaniu na nośniku zewnętrznym sygnału z głowic dysku (kolejno dla każdej ścieżki i głowicy).
  2. Analizie zapisu i odczytaniu z niego właściwych danych bajtowych.

Praktyczna realizacja zadania polega na:

  1. Zbudowaniu urządzenia, które będzie potrafiło:
    • zgodnie ze specyfikacją ST-506 sterować dyskiem (pozycjonować i wybierać głowice, odczytywać stan dysku)
    • próbkować sygnał danych z odpowiednio wysoką częstotliwością
    • komunikować się z komputerem PC (otrzymywać polecenia, raportować stan dysku, przesyłać próbkowane dane)
  2. Napisaniu oprogramowania (firmware) takiego urządzenia
  3. Napisaniu oprogramowania realizującego proces obrazowania całego dysku
  4. Przeanalizowaniu otrzymanego zapisu w poszukiwaniu sposobu i formatu zapisu danych
  5. Napisaniu oprogramowania analizującego fizyczny obraz dysku i przygotowującego bajtowy obraz wynikowy

Realizacja

"Czytnik" dysków Winchester

Dyski z interfejsem ST-506 wyposażone są w dwa złącze krawędziowe: jedno służy do przesyłania sygnałów sterujących, drugie do przesyłania danych. Wszystkie sygnały sterujące zrealizowane są w standardzie TTL z logiką ujemną (aktywne 0). Sygnały na liniach danych, zarówno odczytu jak i zapisu, to różnicowonapięciowy RS-422.

Urządzenie zostało zaimplementowane w oparciu o cztery główne elementy:

  • AVR/Atmega162 z zewnętrznym oscylatorem 16MHz w roli kontrolera dysku
  • Texas Instruments SN75176BP użyty do konwersji sygnału RS-422 do poziomów TTL
  • Programowalny analizator stanów logicznych użyty jako sampler sygnału danych pracujący z częstotliwością 100MHz
  • FTDI FT232RL jako interfejs USB dla kontrolera, do komunikacji z PC
Schemat blokowy "czytnika" dysków Winchester
Schemat blokowy "czytnika" dysków Winchester

Zarówno kontroler jak i sampler podłączone są do komputera PC za pomocą złącz USB. Kontroler widziany jest jako urządzenie za portem szeregowym, sampler używa własnego protokołu transmisji i jest dostępny dzięki bibliotece dostarczonej przez producenta. W całym systemie są trzy elementy programowe:

  1. WDC (Winchester Disk Controller, C) - oprogramowanie mikrokontrolera AVR, tłumaczące komendy odbierane z portu szeregowego na sekwencje sygnałów sterujących dyskiem i zapewniające jego obsługę zgodnie z wymaganiami standardu
  2. WDS (Winchester Data Sampler, C++) - oprogramowanie automatyzujące proces obrazowania dysku, realizuje dwie funkcje:
    • komunikuje się kontrolerem w celu wybrania dysku, ustalenia pozycji głowic, wybrania głowicy i odczytu stanu napędu
    • komunikuje się z samplerem inicjalizując proces obrazowania ścieżki i zapisuje obrazy kolejnych ścieżek na dysk komputera
  3. WDA (Winchester Data Analyzer, Python) - umożliwia przeprowadzenie analizy fizycznego obrazu dysku i zapisuje bajtowy obraz danych

Odczyt dysku

Proces obrazowania dysku odbył się w Muzeum Techniki i tym razem zakończył powodzeniem. Wykonanie pełnego obrazu dysku trwało około 10 minut i dawało w wyniku około 500MB danych z zapisem sygnału na wszystkich ścieżkach dysku. Tak duży rozmiar (w porównaniu do 20 MB pojemności dysku) wynika z trzech faktów:

  • 20 MB to powierzchnia dysku po jego sformatowaniu. Rzeczywista ilość danych na ścieżce jest powiększona o nagłówki sektorów i inne struktury organizujące zapis
  • Jeden bit danych zapisywany jest za pomocą dwóch bitów zapisu MFM (zegar i dane)
  • Sygnał próbkowany był z częstotliwością dziesięciokrotnie wyższą, niż zegar użyty do zapisu MFM

Operacja obrazowania została powtórzona kilkunastokrotnie, dając w sumie prawie 7 GB danych do późniejszej analizy. Podczas kolejnych powtórzeń zmieniały się warunki odczytu, co zwiększało prawdopodobieństwo uzyskania poprawnego obrazu:

  • pierwszy odczyt robiony był na "zimnym" dysku, kolejne na coraz bardziej "rozgrzanym" (zmiany temperatury mogą mieć wpływ zarówno na mechanikę jak i elektronikę napędu),
  • następujące po sobie sesje były przeprowadzane przy ruchu głowic naprzemiennie do wewnątrz i na zewnątrz powierzchni dysku (nieprecyzyjności pozycjonowania głowicy mogły dać lepsze rezultaty w jednym bądź drugim przypadku),
  • część odczytów została wykonana po serii gwałtownych zmian pozycjonowania głowicy (pozycja zmieniana o kilkaset cylindrów w przód i w tył, powody jak wyżej).

Następnym krokiem było poznanie sposobu zapisu oraz formatu ścieżki i sektora, użytych przez Amepol. Krok ten ułatwił graficzny analizator zapisu, pokazujący spróbkowany sygnał z nałożonymi na niego wynikami działania algorytmów analizujących jego przebieg.

Graficzny interfejs analizatora zapisu MFM
Graficzny interfejs analizatora zapisu MFM


Z jego pomocą możliwe było dobranie optymalnych parametrów pracy algorytmów (dających później poprawne wyniki analizy dla wszystkich ścieżek). Analiza pokazała, że na dysku użyty został zapis MFM zgodny ze standardem używanym w napędach ST-506. Powody, dla których nie udała się pierwsza próba odczytu były dwa, z których pierwszy był pewną przyczyną niepowodzenia:

  1. Amepol sformatował dysk używając 16 sektorów na ścieżkę, a nie 17, jak mówi specyfikacja dysku.
  2. Układ Intel C82062 użyty przez Amepol korzysta z 16-bit CRC do liczenia zarówno sum kontrolnych nagłówków sektorów, jak i danych w sektorze. Kontroler WD1006V-MM1 używał 16-bit CRC dla nagłówków, ale dane były już zabezpieczane 32-bit CRC.

Po skonfigurowaniu analizatora (WDA), przeprowadzona została kompletna analiza obrazu, której kroki obejmowały (w nawiasie podane odpowiednie elementy widoczne na powyższym rysunku):

  • odtworzenie zegara, który został użyty przy zapisie (jasnoniebieskie znaczniki pod przebiegiem),
  • odnalezienie znaczników MFM (fragment sygnału oznaczony fioletowym tłem),
  • określenie położenia nagłówka sektora i danych zapisanych w sektorze (rysunek przedstawia kompletny nagłówek sektora)
  • pogrupowanie bitów sygnału MFM w pary [zegar, dane] (jasno- i ciemnoszare tło pod przebiegiem)
  • rozkodowanie sygnału MFM do bitów i bajtów stanowiących treść struktury sektora ("0" i "1" małą czcionką oznaczają kolejne bity zegara i danych MFM, "0" i "1" dużą czcionką bity danych, złożone niżej w bajty o podanej dużą czcionką wartości i odpowiadających im znakach ASCII)
  • odczytanie nagłówków sektorów, zweryfikowanie sum kontrolnych nagłówków, określenie ich adresów (dwie pionowe zielone linie oznaczają zgodną 16-bit sumę CRC)
  • odczytanie danych zapisanych w sektorach, zweryfikowanie sum kontrolnych
  • złożenie zawartości sektorów w bajtowy obraz ścieżki
  • złożenie bajtowych obrazów ścieżek w kompletny obraz dysku

Zawartość dysku

Dysk zawiera trzy obszary danych:

  1. Pierwszy cylinder (4*16 sektorów) jest niedostępny dla systemu MERA-400. Używa go wyłącznie procesor peryferyjny jako obszar do relokacji danych z uszkodzonych sektorów.
  2. Pozostała przestrzeń dostępna jest dla minikomuptera i zawiera dwa obszary dyskowe zorganizowane przez system operacyjny CROOK-5:
    • Etykieta "A" (5 MB) - obszar systemowy
    • Etykieta "C" (15 MB) - obszar roboczy dla użytkowników systemu

Obszar "A"

Obszar zawiera 332 zbiory, przede wszystkim binaria dla MERY-400:

  • zbiory BOOT i BOOTL - dwa podstawowe elementy procesu ładowania systemu operacyjnego
  • jądra systemu operacyjnego CROOK-5 w kilku wersjach: 62F, N8D, P8E, P8F
  • kilkadziesiąt narzędzi dla systemu CROOK
  • assemblery: ASSK, ASSM, GASS
  • interpreter BASIC-a
  • kompilator C
  • FORTRAN
  • PASCAL
  • Modula-2
  • translator CEMMA
  • symulator systemu operacyjnego SOM-3

Obszar "C"

Obszar zawiera 1243 zbiory użytkowników, które można podzielić na kilka grup. Poniższa lista nie jest kompletna, pokazuje tylko zakres danych, które dzięki odczytaniu dysku stały się dostępne:

  1. Binaria
    • system testowy AMETEX Amepolu
    • konfigurator CROOK-5 - ostatni program napisany przez zespół rozwijający CROOK-a
    • niektóre narzędzia systemu UNIX w wersji dla MERY-400
  2. Dokumentacja
    • opisy systemu operacyjnego CROOK
    • opisy narzędzi systemowych
    • podręczniki programowania w językach LISP, ALGOL, C, ASSM, FORTRAN, ModRAL, PASCAL
    • opis dBASE III PLUS
    • opis procesorów MULTIX i PLIX: instrukcje instalacji, styk z MERĄ-400, opisy protokołów komunikacji
  3. Teksty różnych autorów traktujące o rozwoju CROOK-a i MERY-400, m.in.:
    • "Kierunki rozwoju systemu operacyjnego CROOK dla minikomputera MERA-400" – Z. Czerniak, W.J. Martin, M. Nikodemski
    • "Szybkie łącze dla lokalnej sieci minikomputerów MERA-400" – K. Anzelewicz, W. Bojarski, Z. Czerniak
    • "Systemy operacyjne CROOK-4 i CROOK-5 dla minikomputera MERA-400" – Z. Czerniak
    • "Łącze międzykomputerowe oparte na interface V24 dla minikomputera MX-16 (MERA-400)" – Z. Czerniak, M. Nikodemski
    • "Urządzenie sprzęgające minikomputery MERA-400" – Z. Czerniak
    • "System operacyjny sterujący lokalną siecią minikomputerów MERA-400" – W. Bojarski, Z. Czerniak
  4. Źródła
    • biblioteki fortranowe
    • biblioteki C
    • źródła narzędzi UNIX-a (C)
    • źródła narzędzi systemowych CROOK-5 (assembler)
    • źródła oprogramowania procesorów MULTIX i PLIX (firmware) (assembler 8085)
    • źródła systemu CROOK-5 w wersjach N76 i N8F oraz zbiory poprawek do wersji P76 i P8F (assembler)

Źródło: Opracowanie własne