MULTIX od środka: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
 
(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, MERA-400 jest jednym z jego urządzeń zewnętrznych. Komunikacja z nią odbywa się przy użyciu przerwania (zgłoszenie polecenia wysyłane przez MERĘ-400) i DMA (wymiana danych między MERĄ-400 a MULTIX-em). Poniższy schemat blokowy przedstawia budowę MULTIX-a (wraz z podziałem na pakiety) i sprzęg z MERĄ-400.
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: 8255 (NEC D8255AC-2)
 
* I/O szeregowe: 8251 (NEC M5L8251AP-5)
=== ME-BI-400 i ME-BM-400 ===
* I/O floppy:
 
** kontroler Zilog Z0765A08PSC
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:
** DMA 8257 (NEC M5L8257P-5)
 
** pamięć RAM 8KB Hitachi HM6264LP-15
* Od strony interfejsu MERY-400:
* I/O winchester:
** dekodowanie i realizację krytycznych rozkazów I/O
** kontroler Intel C82062-00
** zgłaszanie przerwania kanałowego
** pamięć RAM 8KB Hitachi HM6264LP-15
** 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, po wykonaniu czynności z nim związanych. Mówi, na jakie zdarzenie zadanie oczekuje.
* '''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 w procedurach obsługi przerwań. Opisuje przyczynę zgłoszenia zadania.
* '''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
|}

Menu nawigacyjne