Styk programowy MERA-MULTIX
Wersja: J
Data: 19.02.87
Wstęp
Styk software'owy MERA-MULTIX składa się z następujących elementów:
- rozkazy IN, OU wysyłane do procesora MULTIX,
- przerwania zgłaszane do komputera MERA-400,
- pole sterujące umieszczone w bloku nr 0 MERA,
- bufory danych umieszczone w dowolnych blokach MERA.
Procesor komunikacyjny MULTIX przedstawia dla komputera MERA zbiór obiektów składający się z:
- kanału MULTIX,
- zbioru linii logicznych.
Linie logiczne wyróżnione są identyfikatorami od 0 do 255. Identyfikatory przydzielane są przez komputer MERA poleceniem "ustaw konfigurację". Zbiór identyfikatorów powinien być ciągły i zaczynać się od 0. Niespełnienie tych warunków spowoduje dodatkowe zapotrzebowanie na pamięć MULTIX-a.
Rozkazy
Rozkazy IN, OU wysyłane do procesora MULTIX mają wspólne cechy:
- Q = 0
- N/15/ = 0
- N/11-14/ = nr kanału
Rozkazy te dzielą się na trzy grupy:
- rozkazy kanałowe,
- polecenia sterujące ogólne (dla kanału MULTIX),
- polecenia sterujące liniowe (dla linii logicznej).
Rozkazy kanałowe
- Typ: IN
- N/0-2/ = 0
- N/5-10/ = 0
- Odpowiedź I/F: OK
Zeruj moduł
N/3-4/ = 00
Inicjuje zerowanie procesora MULTIX. Po zakończeniu zgłaszane jest przerwanie:
- INSKA - procesor MULTIX jest niesprawny
- IWYZE - procesor został wyzerowany.
Uwaga: każdy sygnał zerowania systemu (CLEAR, MCL, włączenie zasilania) działa identycznie jak rozkaz zeruj moduł.
Sprawdź istnienie modułu
N/3-4/ = 10
Podaj specyfikację przerwania
N/3-4/ = 01
Rozkaz ten jest wysyłany sprzętowo przy obsłudze przerwania. Specyfikacja składa się z numeru przerwania (bity 0-7) i identyfikatora linii (bity 8-15).
Polecenia sterujące ogólne
Odpowiedź I/F: OK lub EN.
Po EN należny powtórzyć polecenie.
Cofnij przerwanie niepokwitowane do kolejki
- Typ: IN
- N/0-2/ = 001
- N/3-10/ = 0
Jeżeli jest zgłoszone przerwanie, którego specyfikacja nie została jeszcze pobrana, to zostaje ono ponownie umieszczone w kolejce przerwań.
Testuj
- Typ: OU
- N/0-2/ = 001
- N/3-10/ = parametr testu
- Informacja: adres pola testu
Program testujący zostaje przepisany do pamięci MULTIX i wykonany. Po poprawnym zakończeniu zgłaszane jest przerwanie IWYTE.
Ustaw konfigurację
- Typ: OU
- N/0-2/ = 101
- Informacja: adres pola sterującego.
Przyporządkowane zostają linie logiczne do urządzeń dołączonych do MULTIX-a (linii fizycznych). Ustalone zostają podstawowe parametry linii. Po zakończeniu ustawiania konfiguracji zgłaszane jest przerwanie:
- INKON - nie wykonano polecenia, bo były błędy w polu sterującym lub konfiguracja była już wcześniej ustawiona.
- IUKON - ustawiono konfigurację
- INKOT - nie wykonano polecenia, bo wystąpiły błędy transmisji MERA-MULTIX.
Uwaga: Ustawiona konfiguracja nie może być zmieniona aż do wyzerowania modułu.
Polecenia sterujące liniowe
- Odpowiedz I/F: OK lub EN. Po EN należny powtórzyć polecenie.
- N/3-10/ = identyfikator linii logicznej.
Każde polecenie potwierdzone przez OK kwitowane jest zgłoszeniem przerwania.
Dołącz linię
- Typ: OU
- N/0-2/ = 010
- Informacja: adres pola sterującego.
Linia logiczna zostaje dołączona do programu. Polecenie "dołącz linię" musi poprzedzać polecenie/a transmisyjne.
Pokwitowanie:
- IDOLI - dołączono linię
- INDOL - nie doliczono bo blednę parametry lub linia już była dołączona
- INKDO - brak linii w konfiguracji
Odłącz linię
- Typ: IN
- N/0-2/ = 010
Linia logiczna zostaje usunięta z programu. Linia fizyczna zostaje wyzerowana.
Pokwitowanie:
- IODLI - odłączono linię
- INODL - linia nie zakończyła transmisji, nie odłączono
- INKOD - brak linii w konfiguracji
Podaj status linii
- Typ: OU
- N/0-2/ = 011
- Informacja: adres statusu
Status zostaje umieszczony pod wskazanym adresem.
Pokwitowanie:
- ISTRE - podano status
- INSTR - odrzucono polecenie (poprzednie polecenie "podaj status" jest w toku)
- INKST - brak linii w konfiguracji
Przesyłaj
- Typ: OU
- N/0-2/ = 100
- Informacja: adres pola sterującego.
Rozpoczynana jest transmisja w linii.
Pokwitowanie:
- IETRA - zakończono przesyłanie poprawnie
- ITRER - zakończono przesyłanie z błędami
- INTRA - odrzucono polecenie (błędne parametry)
- INKTR - brak linii w konfiguracji
- ITRAB - zerwano transmisje poleceniem "zerwij"
Zerwij przesyłanie
- Typ: IN
- N/0-2/ = 011
Przesyłanie zostaje zerwane.
Pokwitowanie:
- IABTR - wykonano zerwanie
- INABT - nie ma transmisji w tej linii
- INKAB - brak linii w konfiguracji
Przerwania
Przerwania zgłaszane przez MULTIX dzielą się na 3 grupy:
- przerwania specjalne
- przerwania ogólne
- przerwania liniowe
Specyfikacja przerwania, pobierana rozkazem "podaj specyfikację przerwania", składa się z numeru przerwania (bity 0-7) oraz identyfikatora linii (bity 8-15). Identyfikator linii ma znaczenie tylko dla przerwań liniowych. Przerwanie specjalne kierowane jest do obu procesorów MERA natychmiast (bez kolejkowania) i bez sprawdzania odpowiedzi I/F. Przerwania ogólne i liniowe umieszczane są w kolejce przerwań. Przerwanie ogólne kierowane jest do tego procesora, który przysłał polecenie będące przyczyna przerwania. Powyższa zasada dotyczy także przerwań "brak linii w konfiguracji". Przerwanie liniowe (prócz "brak linii w konfiguracji") kierowane jest do tego procesora, który przysłał ostatnie polecenie dla danej linii. Przerwania z kolejki zgłaszane są od najstarszego (najdłużej oczekującego), z tym ze przerwania do procesorów zablokowanych są omijane (ale nie usuwane z kolejki). Zablokowanie procesora dla przerwań następuje po braku jego odpowiedzi na zgłoszenie przerwania. Odblokowanie procesora następuje po otrzymaniu od niego dowolnego polecenia sterującego. Zgłoszenie następnego przerwania odbywa się po pobraniu specyfikacji poprzedniego przerwania (rozkaz "podaj specyfikacje") lub po poleceniu "cofnij przerwanie niepokwitowane do kolejki".
Przerwania specjalne
Oznaczenie | Nr | Opis | Proponowane działanie |
---|---|---|---|
INSKA | 1 | niesprawny kanał | powtórzyć zerowanie, gdy to nie pomoże - testować i naprawić moduł |
IWYZE | 2 | wykonano zerowanie | podjąć prace zaczynając od polecenia "ustaw konfiguracje" |
IWYTE | 3 | wykonano test | podjąć pracę zaczynając od rozkazu "zeruj moduł" |
Przerwania ogólne
Oznaczenie | Nr | Opis | Zgłaszane po poleceniu | Uwagi o przyczynach |
---|---|---|---|---|
INKON | 4 | odrzucono "ustaw konfigurację" | ustaw konfigurację | błędy w polu sterującym, za mała pamięć, konfiguracja już ustawiona |
IUKON | 5 | ustawiono konfigurację | ustaw konfigurację | |
INKOT | 6 | nie wykonano "ustaw konfigurację" | ustaw konfigurację | błędy transmisji MERA-MULTIX |
Przerwania liniowe
Oznaczenie | Nr | Opis | Zgłaszane po poleceniu | Uwagi o przyczynach |
---|---|---|---|---|
ISTRE | 7 | podano status | podaj status | |
INSTR | 8 | odrzucono "podaj st." | podaj status | poprzednie "podaj status" jest w toku wykonywania |
INKST | 9 | brak linii w konfig. | podaj status | |
IDOLI | 10 | dołączono linię | dołącz linię | |
INDOL | 11 | odrzucono "dołącz linię" | dołącz linię | błędy w polu, linia dołączona, poprzednie "dołącz" jest w toku |
INKDO | 12 | brak linii w konfig. | dołącz linię | |
IETRA | 13 | zakończono transmisję poprawnie | przesyłaj | |
INTRA | 14 | odrzucono "przesyłaj" | przesyłaj | błędy w polu, linia nie dołączona, poprzednie przesyłanie w toku |
INKTR | 15 | brak linii w konfig. | przesyłaj | |
ITRER | 16 | zakończono transmisję z błędem | przesyłaj | wykryto błąd parzystości lub inny |
ITRAB | 19 | zerwano przesyłanie | przesyłaj | zgodnie z poleceniem "zerwij" |
IABTR | 20 | wykonano zerwij | zerwij przesyłanie | |
INABT | 21 | nie wykonano zerwij | zerwij | brak transmisji w linii |
INKAB | 22 | brak linii w konfig. | zerwij przesyłanie | |
IODLI | 23 | odłączono linię | odłącz linię | |
INODL | 24 | nie odłączono linii | odłącz linię | transmisja w linii |
INKOD | 25 | brak linii w konfig. | odłącz linię | |
INPAO | 32 | brak trans. MERA-MULTIX | dowolne polecenie liniowe | uszkodzenie sprzętu |
IPARE | 33 | błąd parzystości MERA-MULTIX | dowolne polecenie liniowe | uszkodzenie sprzętu |
IOPRU | 34 | zgłoszenia operatora urządzenia | dowolne polecenie liniowe |
Pola sterujące
Pole sterujące jest to obszar pamięci umieszczony w bloku nr 0 MERA, którego adres jest przekazywany po liniach danych podczas wykonywania rozkazu OU, będącego poleceniem sterującym. W polu sterującym wyróżniamy:
- pole parametrów przekazywanych do MULTIX-a
- pole parametrów zwracanych z MULTIX-a
Wykorzystanie tych pól jest następujące:
Polecenie sterujące |
Pole parametrów przekazywanych |
Pole parametrów zwracanych |
---|---|---|
Testuj | tak | tak |
Ustaw konfig. | tak | tak |
Dołącz linię | tak | nie |
Podaj status linii | nie | tak |
Przesyłaj | tak | tak |
W dalszym ciągu zostaną omówione pola poszczególnych poleceń oprócz polecenia "testuj", które jest przedmiotem osobnego opisu. Zawartość pól poleceń "dołącz linię" i "przesyłaj" zależna jest od urządzenia dołączonego do linii, wyróżnionego przez nr protokołu. Opisano pola dla protokołów podstawowych:
- 0 - czytnik taśmy (podstawowe wejście)
- 1 - perforator taśmy (podstawowe wyjście)
- 2 - monitor (podstawowe we-wy)
W miarę dołączania dalszych protokołów opis będzie uzupełniany. Poniżej omówione zostaną pewne właściwości protokołów podstawowych.
Długość pisania (ilość wysyłanych znaków) wyznaczona jest przez parametry pol sterujących:
Parametr:
- 1 - nadawaj wg ilości
- 2 - nadawaj do znaku kończącego wyłącznie
- 3 - nadawaj do znaku kończącego włącznie
- 4 - ilość znaków do nadania
Przypadek | 1 | 2 | 3 | 4 |
---|---|---|---|---|
P1 | 0 | 0 | 0 | x |
P2 | x | x | x | 0 |
P3 | 0 | 1 | 1 | >0 |
0 | 0 | 1 | >0 | |
0 | 1 | 0 | >0 | |
P4 | 1 | 0 | 0 | >0 |
P5 | 1 | 1 | 1 | >0 |
1 | 0 | 1 | >0 | |
1 | 1 | 0 | >0 |
- P1 i P2 - długość jest zerowa, nic nie zostanie wysłane.
- P1 - dla protokołu jednokierunkowego jest błędem - przerwanie INTRA.
- P3 - jeżeli wysłane zostaną wszystkie znaki określone przez ilość ..., a znak kończący nie zostanie wykryty, to nadawanie zostaje zakończone jako błędne - przerwanie ITRER.
- P5 - jeżeli w podanej ilości znaków do nadania znajduje się znak kończący to jego położenie wyznacza długość.
Długość czytania (ilość odebranych znaków) wyznaczona jest przez parametry pól sterujących:
Parametr:
- 1 - odbieraj wg bufora odbiorczego MERA
- 2 - odbieraj do znaku kończącego wyłącznie
- 3 - odbieraj do znaku kończącego włącznie
- 4 - długość bufora odbiorczego MERA
Przypadek | 1 | 2 | 3 | 4 |
---|---|---|---|---|
C1 | 0 | 0 | 0 | x |
C2 | x | x | x | 0 |
C3 | 0 | 1 | 1 | >0 |
0 | 0 | 1 | >0 | |
0 | 1 | 0 | >0 | |
C4 | 1 | 0 | 0 | >0 |
C5 | 1 | 1 | 1 | >0 |
1 | 0 | 1 | >0 | |
1 | 1 | 0 | >0 |
- C1, C2 - długość jest zerowa, nic nie zostanie odebrane
- C1 - dla protokołu jednokierunkowego jest błędem - przerwanie INTRA.
- C3 - jeżeli został zapełniony bufor MERA, a znak kończący nie został wykryty, to odbiór zostaje zakończony jako błędny - przerwanie ITRER.
- C5 - odbiór zostaje zakończony po wykryciu znaku kończącego lub po zapełnieniu bufora.
Działanie protokołu nr 2 zależy od długości pisania i długości czytania określonych przez pole sterujące:
Długość pisania | Długość czytania | Działanie |
---|---|---|
zerowa | zerowa | żadne |
zerowa | niezerowa | tylko odbieranie |
niezerowa | zerowa | tylko nadawanie |
niezerowa | niezerowa | nadawanie, potem odbieranie |
Obserwacja zgłoszenia operatora prowadzona jest w protokołach nr 0 i 2 jeżeli bit "obserwuj zgłoszenie operatora" w polu sterującym został ustawiony na 1. Sposób tej obserwacji zależny od protokołu, rodzaju linii transmisyjnej i aktualnych procesów w linii. Wyróżniamy trzy sposoby obserwacji:
- S0 - zgłoszenie nie jest obserwowane.
- S1 - czytane są znaki i porównywane z kodem zgłoszenia. Znalezienie znaku zgodnego powoduje wysłanie przerwania IOPRU. Pozostałe znaki są ignorowane (gubione).
- S2 - w odbieranych znakach poszukiwany jest znak zgodny z kodem zgłoszenia. Znalezienie takiego znaku powoduje wysłanie przerwania IOPRU oraz natychmiastowe zakończenie odbioru z wysłaniem przerwania ITRER (błąd).
Powyższe sposoby występują w przypadkach:
Protokół | Linia | Nadawanie w toku | Odbiór w toku | Sposób |
---|---|---|---|---|
0 | simplex | - | nie | S1 |
- | tak | S2 | ||
2 | półduplex | nie | nie | S1 |
tak | nie | S0 | ||
nie | tak | S2 | ||
2 | pełny duplex | nie | nie | S1 |
tak | nie | S1 | ||
nie | tak | S2 |
Znacznik końca wejścia odczytany przy bicie "obserwuj znacznik końca wejścia" (w polu sterującym) ustawionym na 1 powoduje zakończenie czytania z wysłaniem przerwania ITRER (błąd).
Uwaga: Jeżeli w polu sterującym ustawiony jest bit "wykonaj XON/XOFF" i linia jest typu pelny-duplex, to otrzymanie sygnału XOFF (#13) podczas nadawania zatrzymuje nadawanie do czasu otrzymania sygnału XON (#11).
Pole sterujące "ustaw konfigurację"
Pole składa się z:
- nagłówka (1 słowo)
- pola parametrów zwracanych (1 słowo)
- pól opisu linii fizycznych
- pól opisu linii logicznej (4 słowa na linię logiczną)
Nagłówek:
Bity | Znaczenie |
---|---|
0-7 | ilość slow opisu linii fizycznych |
8-15 | ilość linii logicznych |
Pole parametrów zwracanych:
Bity | Znaczenie |
---|---|
0-7 | Nr błędu:
|
8-15 |
|
Pole opisu linii fizycznych:
Słowo | Bity | Znaczenie |
---|---|---|
0 | 0-2 | Kierunek:
|
3 | linia użyta | |
4-7 | Typ urządzenia:
| |
11-15 | Liczba linii fizycznych opisanych w powyższy sposób pomniejszona o 1 |
Pole opisu linii logicznej:
Słowo | Bity | Znaczenie |
---|---|---|
0 | 0-7 | nr protokołu |
8-15 | nr linii fizycznej | |
1-3 | 0-15 | parametry protokołu |
Dla protkolu 6 (Winchester) słowo 1 zawiera:
Słowo | Bity | Znaczenie |
---|---|---|
1 | 0-7 | Typ Winchestera:
|
8-15 | protekcja formatowania:
|
Długość całego pola sterującego wynosi: 1 + 1 + <liczba slow opisu l. fiz.> + 4 * <liczba linii logicznych>
Pole sterujące "dołącz linię"
Pole zawiera tylko parametry przekazywane.
Protokół nr 0 - czytnik taśmy
Słowo | Bity | Znaczenie |
---|---|---|
0 | 0 | obserwuj znacznik końca wejścia (taśmy) |
1 | nie sprawdzaj parzystości | |
2 | odd parity | |
3 | przekazuj 8 bitów | |
5 | obsługuj BS oraz CAN | |
7 | obserwuj "zgłoszenie operatora" | |
8-15 | kod znacznika końca wejścia (taśmy) | |
1 | 0-7 | kod zgłoszenia operatora |
8-15 | nr procedury obsługi tekstu:
|
Protokół nr 1 - perforator taśmy
Słowo | Bity | Znaczenie |
---|---|---|
0 | 2 | odd parity |
3 | przesyłaj 8 bitów (= bez parzystości) | |
6 | zamień małe litery na duże | |
8-15 | nr procedury obsługi tekstu:
|
Protokół nr 2 - monitor
Słowo | Bity | Znaczenie |
---|---|---|
0 | 0 | obserwuj znacznik końca wejścia |
1 | nie sprawdzaj i nie generuj parzystości | |
2 | odd parity | |
3 | przekazuj 8 bitów do MERA | |
4 | wykonaj XON/XOFF | |
5 | obsługuj BS oraz CAN | |
6 | zamień małe litery na duże dla nadawania | |
7 | obserwuj "zgłoszenie operatora" | |
8-15 | kod znacznika końca wejścia | |
1 | 0-7 | kod zgłoszenia operatora |
8-15 | nr procedury obsługi tekstu:
| |
2 | 0-15 | parametry procedury obróbki tekstu |
Pole sterujące "podaj status linii"
Pole zawiera tylko parametry zwracane.
Słowo | Bity | Znaczenie |
---|---|---|
0 | 7 | linia jest dołączona |
8 | było zgłoszenie operatora | |
9 | błąd parzystości | |
10 | odebrano znak kończący | |
12 | odbiór jest w toku | |
13 | odbiór był rozpoczęty | |
14 | nadawanie jest w toku | |
15 | nadawanie było rozpoczęte |
Pole sterujące "przesyłaj"
Pole zawiera w pierwszej części parametry przekazywane, a w drugiej, oddzielone linia przerywana - parametry zwracane. W parametrach zwracanych występuje słowo „sposób zakończenia” o strukturze identycznej dla wszystkich protokołów podstawowych. Struktura tego słowa i zastosowanie poszczególnych bitów w konkretnych protokołach pokazane jest w poniższej tabeli.
Sposób zakończenia:
Bit | Znaczenie | Stosuje się do protokołu nr | ||
---|---|---|---|---|
0 | 1 | 2 | ||
0 | timeout | tak | tak | tak |
1 | zgłoszenie operatora | tak | nie | tak |
2 | awaria urządzenia | tak | tak | tak |
3 | koniec znaków przed znakiem kończącym nadawanie | nie | tak | tak |
4 | błąd parzystości | tak | nie | tak |
5 | inny błąd transmisji | tak | nie | tak |
7 | znak końca wejścia | tak | nie | tak |
Jeżeli przesyłanie kończy się prawidłowo to sposób zakończenia /0-7/ = 0.