3012
edycji
(Nie pokazano 9 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 3: | Linia 3: | ||
= Sprzęt = | = Sprzęt = | ||
MULTIX to komputer zbudowany w oparciu o procesor Intel 8085, z programem sterującym (firmware) zapisanym w pamięci ROM. Z punktu widzenia MULTIX-a | MULTIX to komputer zbudowany w oparciu o procesor Intel 8085, z programem sterującym (firmware) zapisanym w pamięci ROM. Z punktu widzenia MULTIX-a MERA-400 jest jednym z jego urządzeń zewnętrznych, widzianym przez pryzmat sprzęgu znajdującego się pomiędzy magistralami MERY-400 a MULTIX-a. | ||
Komunikacja MERY-400 z MULTIX-em odbywa się przy użyciu: | |||
* jednego z przerwań procesora 8085, które informuje o nadejściu polecenia wysłanego rozkazami IN/OU z MERY-400 | |||
* rejestrów sprzętowych sprzęgu przechowujących odczytane z magistrali MERY-400 argumenty polecenia IN/OU | |||
Komunikacja MULTIX-a z MERĄ-400 odbywa się przy użyciu: | |||
* odczytu/zapisu pamięci MERY-400 (przy użyciu kontrolera DMA) | |||
* zgłoszenia przerwania kanałowego do MERY-400 | |||
Poniższy schemat blokowy przedstawia budowę MULTIX-a (wraz z podziałem na pakiety) i sprzęg z MERĄ-400. | |||
[[File:multix-internals.png|700px|center|Schemat blokowy MULTIX-a]] | [[File:multix-internals.png|700px|center|Schemat blokowy MULTIX-a]] | ||
== Pakiety == | |||
Bloki funkcjonalne MULTIX-a i kontrolery urządzeń wejścia/wyjścia rozlokowane są na "wąskich" pakietach MERY-400. | |||
=== ME-MIK-400 === | |||
ME-MIK-400 to pakiet mikrokomputera zawierający: | |||
* CPU: 8085 3MHz (NEC D8085AC) | * CPU: 8085 3MHz (NEC D8085AC) | ||
Linia 15: | Linia 33: | ||
** kanał 2: taśma | ** kanał 2: taśma | ||
** kanał 3: autoload | ** kanał 3: autoload | ||
* I/O równoległe | |||
=== ME-BI-400 i ME-BM-400 === | |||
ME-BI-400 i ME-BM-400 to pakiety sprzęgu zapewniające komunikację między MULTIX-em a MERĄ-400. Realizują one m.in. następujące funkcje: | |||
* Od strony interfejsu MERY-400: | |||
** dekodowanie i realizację krytycznych rozkazów I/O | |||
** zgłaszanie przerwania kanałowego | |||
** transmisję danych do/z PAO | |||
* Od strony MULTIX-a: | |||
** sprzętowe rejestry I/O | |||
** reset MULTIX-a i urządzeń podległych | |||
** zarządzanie przerwaniem "polecenie sterujące" | |||
=== ME-UTR-400 === | |||
Cztery porty równoległe zrealizowane na dwóch układach 8255 (NEC D8255AC-2). Pakiet występuje w wersjach ME-UTR-1, ME-UTR-2 i ME-UTR-3, pozwalających na podłączenie różnego rodzaju urządzeń równoległych | |||
=== ME-UTS-400 === | |||
Cztery porty szeregowe zrealizowane na czterech układach 8251 (NEC M5L8251AP-5). Pakiet występuje w wersjach ME-UTS-1, ME-UTS-2 i ME-UTS-3, pozwalających na podłączenie urządzeń różnymi interfejsami (V24 lub prądowym z optoizolacją) i dających różne dodatkowe możliwości ich konfiguracji. | |||
=== ME-FDC === | |||
Kontroler czterech stacji dyskietek zrealizowany w oparciu o: | |||
* kontroler Zilog Z0765A08PSC | |||
* DMA 8257 (NEC M5L8257P-5) | |||
* pamięć RAM 8KB Hitachi HM6264LP-15 | |||
=== ME-WDC-506 === | |||
Kontroler czterech dysków ST-506 (winchester) zrealizowany w oparciu o: | |||
* kontroler Intel C82062-00 | |||
* pamięć RAM 8KB Hitachi HM6264LP-15 | |||
= Mapa pamięci = | = Mapa pamięci = | ||
Linia 272: | Linia 317: | ||
Maksymalna długość transmisji wynosi 16 sektorów (z punktu widzenia MERY? czy z punktu widzenia zadania mx?). Linie z Winchesterem nie obsługują polecenia "przerwij transmisję". | Maksymalna długość transmisji wynosi 16 sektorów (z punktu widzenia MERY? czy z punktu widzenia zadania mx?). Linie z Winchesterem nie obsługują polecenia "przerwij transmisję". | ||
=== Sektory zapasowe === | |||
Producenci dysków winchester dopuszczali zazwyczaj występowanie na powierzchni dysku | |||
kilkudziesięciu uszkodzonych sektorów. Wyjątkiem był pierwszy cylinder, który | |||
musiał być wolny od błędów. Fakt ten został przez Amepol wykorzystany do | |||
podniesienia niezawodności dysków winchester pracujących w MULTX-ie. | |||
Cały pierwszy cylinder zarezerwowany jest na kopie uszkodzonych sektorów | |||
i jest dla użytkownika niedostępny. Dwa pierwsze sektory zajęte są przez | |||
tablicę numerów uszkodzonych sektorów (pierwszy sektor) i jej wierną kopię (drugi | |||
sektor). Przy czterech głowicach i 16 sektorach na ścieżkę daje to możliwość zrelokowania do 62 sektorów. | |||
Tablica numerów sektorów ma również 62 pozycje. W zależności od wersji MULTIX-a mają one długość 2 lub 3 bajtów. Każda z nich wskazuje, jaki | |||
sektor (o jakim numerze logicznym) został przeniesiony na daną pozycję obszaru | |||
zapasowego. | |||
Jeśli podczas operacji czytania sektora z dysku wystąpił jeden z warunków: | |||
* pole adresowe sektora nie zostało odnalezione | |||
* sektor oznaczony jest jako uszkodzony | |||
to następuje próba odnalezienia danego sektora w obszarze zapasowym. | |||
Jeśli sektor zostanie znaleziony, to jest stamtąd odczytywany i błąd odczytu nie występuje. | |||
Jeśli sektor nie zostanie odnaleziony, to sygnalizowany jest błąd. | |||
Przenoszenie uszkodzonych sektorów do obszaru zapasowego nie jest wykonywane | |||
automatycznie przez MULTIX-a. Odbywa się za | |||
pomocą polecenia formatowania ścieżki z przeniesieniem uszkodzonych sektorów. | |||
== Floppy == | == Floppy == | ||
Linia 594: | Linia 666: | ||
Druga tablica (adres w ADPZL) przechowuje opis stanów wszystkich zadań dla każdej z linii. Stan opisują dwa bajty: | Druga tablica (adres w ADPZL) przechowuje opis stanów wszystkich zadań dla każdej z linii. Stan opisują dwa bajty: | ||
* '''bajt zawieszenia''' - ustawiany przez zadanie, | * '''bajt zawieszenia''' - ustawiany przez zadanie, opisuje jego stan: | ||
** ustawiony bit 0 mówi, że zadanie jest aktualnie wykonywane | ** ustawiony bit 0 mówi, że zadanie jest aktualnie wykonywane | ||
** nie ustawiony bit 0 mówi, że zadanie jest zawieszone, wtedy bity 7-1 określają przyczynę | ** nie ustawiony bit 0 mówi, że zadanie jest zawieszone (oczekuje na zdarzenie), wtedy bity 7-1 określają przyczynę zawieszenia | ||
* '''bajt warunków''' - ustawiany | * '''bajt warunków''' - ustawiany "z zewnątrz" zadania, opisuje warunki, jakie dla zadania wystąpiły: | ||
** ustawiony bit 0 mówi, że zadanie należy wystartować (rozpocząć) | |||
** bity 7-1 opisują warunki, jakie wystąpiły dla zadania | |||
Jeśli okaże się, że żadna linia nie wymaga obsługi, zgłoszenie zadania jest kasowane. | Jeśli okaże się, że żadna linia nie wymaga obsługi, zgłoszenie zadania jest kasowane. | ||
Linia 620: | Linia 694: | ||
| WATIM || 10000000 || przesyłaj - timeout (timer) | | WATIM || 10000000 || przesyłaj - timeout (timer) | ||
|} | |} | ||
Warunek WAFWI dla winchesterów oznacza zwolnienie kontrolera. Kontroler może w danej chwili obsługiwać tylko jeden dysk. Jeśli inna linia (inny winchester) chce transmitować dane, musi poczekać, aż obecnie transmitująca linia zwolni kontroler. | |||
== Odebranie zadania == | == Odebranie zadania == | ||
Linia 630: | Linia 706: | ||
** wyślij przerwanie liniowe | ** wyślij przerwanie liniowe | ||
** ponownie uruchom manager zadań | ** ponownie uruchom manager zadań | ||
== Status linii == | |||
Polecenie liniowe "podaj status" zwraca status linii opisany strukturą STATL. Dokumentacja opisuje znaczenie tylko niektórych jej bitów, poniżej kompletny opis dwóch bajtów składających się na status. Numeracja bitów MERY-400 (0=MSB, 15=LSB). W słowie statusu jest jeszcze trzeci bajt, niedostępny dla programisty, opisujący status USART-a. | |||
{| class="wikitable" | |||
! Bit !! Opis | |||
|- | |||
| 0 || 0 | |||
|- | |||
| 1 || Nadawanie ostatniego fragmentu | |||
|- | |||
| 2 || Nadawanie zawieszone przez XOFF | |||
|- | |||
| 3 || Zadanie zawieszone przez XOFF | |||
|- | |||
| 4 || - | |||
|- | |||
| 5 || - | |||
|- | |||
| 6 || Aktywna transmisja | |||
|- | |||
| 7 || Linia dołączona | |||
|- | |||
| 8 || OPRQ | |||
|- | |||
| 9 || Błąd parzystości | |||
|- | |||
| 10 || Odebrano znak kończący | |||
|- | |||
| 11 || Stop po CAN (protokół 5) | |||
|- | |||
| 12 || Odbiór w toku | |||
|- | |||
| 13 || Odbiór rozpoczęty | |||
|- | |||
| 14 || Nadawanie w toku | |||
|- | |||
| 15 || Nadawanie rozpoczęte | |||
|} |