Odczyt Winchestera: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
mNie podano opisu zmian
 
(Nie pokazano 34 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 75: Linia 76:
* Sygnał próbkowany był z częstotliwością dziesięciokrotnie wyższą, niż zegar użyty do zapisu MFM
* Sygnał próbkowany był z częstotliwością dziesięciokrotnie wyższą, niż zegar użyty do zapisu MFM


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.
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 />
<br /><br />
[[File:Wda.png|center|700px|Graficzny interfejs analizatora zapisu MFM]]
[[File:Wda.png|center|700px|Graficzny interfejs analizatora zapisu MFM]]
Linia 83: Linia 89:
# 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:
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,
* odtworzenie zegara, który został użyty przy zapisie (jasnoniebieskie znaczniki pod przebiegiem),
* odnalezienie znaczników MFM, które sygnalizowały początki nagłówków sektorów i początki danych w sektorze
* odnalezienie znaczników MFM (fragment sygnału oznaczony fioletowym tłem),
* pogrupowanie bitów sygnału MFM w pary (zegar, dane), co umożliwiło jego rozkodowanie do bajtów stanowiących treść struktury sektora
* określenie położenia nagłówka sektora i danych zapisanych w sektorze (rysunek przedstawia kompletny nagłówek sektora)
* odczytanie nagłówków sektorów, zweryfikowanie sum kontrolnych nagłówków, określenie ich adresów
* 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
* odczytanie danych zapisanych w sektorach, zweryfikowanie sum kontrolnych
* złożenie zawartości sektorów w bajtowy obraz ścieżki
* złożenie zawartości sektorów w bajtowy obraz ścieżki
* złożenie bajtowych obrazów ścieżek w kompletny obraz dysku
* 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}}

Menu nawigacyjne