Odczyt Winchestera: Różnice pomiędzy wersjami
m (→Sprzęt) |
|||
(Nie pokazano 44 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 | 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 ST-506 | 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: | ||
* | * 20 MB pojemności po sformatowaniu | ||
* 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 | * 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 [[ | 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: | [[: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. | |||
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 | 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 | 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 | # 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. | ||
Praktyczna realizacja zadania polega na: | Praktyczna realizacja zadania polega na: | ||
# Zbudowaniu urządzenia, które będzie potrafiło: | # Zbudowaniu urządzenia, które będzie potrafiło: | ||
#* zgodnie ze specyfikacją ST-506 sterować dyskiem (pozycjonować i wybierać głowice, odczytywać | #* 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ą | #* 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) | #* komunikować się z komputerem PC (otrzymywać polecenia, raportować stan dysku, przesyłać próbkowane dane) | ||
Linia 44: | Linia 47: | ||
# Napisaniu oprogramowania realizującego proces obrazowania całego dysku | # Napisaniu oprogramowania realizującego proces obrazowania całego dysku | ||
# Przeanalizowaniu otrzymanego zapisu w poszukiwaniu sposobu i formatu zapisu danych | # Przeanalizowaniu otrzymanego zapisu w poszukiwaniu sposobu i formatu zapisu danych | ||
# Napisaniu oprogramowania analizującego fizyczny obraz dysku i przygotowującego bajtowy obraz | # Napisaniu oprogramowania analizującego fizyczny obraz dysku i przygotowującego bajtowy obraz wynikowy | ||
== Realizacja == | |||
[[File:Czytnik_winchester.jpg|thumb|"Czytnik" dysków Winchester]] | [[File:Czytnik_winchester.jpg|thumb|"Czytnik" dysków Winchester]] | ||
Dyski z [http://en.wikipedia.org/wiki/ST-506 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 [http://en.wikipedia.org/wiki/RS-422 RS-422]. | Dyski z [http://en.wikipedia.org/wiki/ST-506 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 [http://en.wikipedia.org/wiki/RS-422 RS-422]. | ||
Urządzenie zostało zaimplementowane w oparciu o | 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 | * Programowalny analizator stanów logicznych użyty jako sampler sygnału danych pracujący z częstotliwością 100MHz | ||
* [http://www.ftdichip.com/Products/ICs/FT232R.htm FTDI FT232RL] jako interfejs USB dla kontrolera, do komunikacji z PC | * [http://www.ftdichip.com/Products/ICs/FT232R.htm FTDI FT232RL] jako interfejs USB dla kontrolera, do komunikacji z PC | ||
[[File:Wdc-schemat.png|center|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: | |||
# '''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 | |||
# '''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 | |||
# '''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. | |||
<br /><br /> | |||
[[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 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. | |||
# 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
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
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
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:
- 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.
Praktyczna realizacja zadania polega na:
- 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)
- Napisaniu oprogramowania (firmware) takiego urządzenia
- Napisaniu oprogramowania realizującego proces obrazowania całego dysku
- Przeanalizowaniu otrzymanego zapisu w poszukiwaniu sposobu i formatu zapisu danych
- Napisaniu oprogramowania analizującego fizyczny obraz dysku i przygotowującego bajtowy obraz wynikowy
Realizacja
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
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:
- 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
- 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
- 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.
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.
- 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 ł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:
- 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
- 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-5 w wersjach N76 i N8F oraz zbiory poprawek do wersji P76 i P8F (assembler)
Źródło: Opracowanie własne