Styk programowy MERA-MULTIX: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
Nie podano opisu zmian
 
(Nie pokazano 22 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
Wersja: '''J'''<br/>
Data:  '''19.02.87'''
= Wstęp =
= Wstęp =


Linia 17: Linia 14:


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.
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 =
Linia 24: Linia 20:


* Q = 0
* Q = 0
* N/15/ = 0
* N<sub>15</sub> = 0
* N/11-14/ = nr kanału
* N<sub>11-14</sub> = nr kanału


Rozkazy te dzielą się na trzy grupy:
Rozkazy te dzielą się na trzy grupy:
Linia 35: Linia 31:
== Rozkazy kanałowe ==
== Rozkazy kanałowe ==


* Typ: '''IN'''
* Typ: IN
* N/0-2/ = '''0'''
* N<sub>0-2</sub> = 0
* N/5-10/ = '''0'''
* N<sub>5-10</sub> = 0
* Odpowiedź I/F: '''OK'''
* Odpowiedź I/F: OK
   
   
=== Zeruj moduł ===
=== Zeruj moduł ===


N/3-4/ = '''00'''
N<sub>3-4</sub> = 00


Inicjuje zerowanie procesora MULTIX. Po zakończeniu zgłaszane jest przerwanie:
Inicjuje zerowanie procesora MULTIX. Po zakończeniu zgłaszane jest przerwanie:


* '''INSKA''' - procesor MULTIX jest niesprawny
* INSKA - procesor MULTIX jest niesprawny
* '''IWYZE''' - procesor został wyzerowany.
* IWYZE - procesor został wyzerowany.


Uwaga: każdy sygnał zerowania systemu (CLEAR, MCL, włączenie zasilania) działa identycznie jak rozkaz zeruj moduł.
Uwaga: każdy sygnał zerowania systemu (CLEAR, MCL, włączenie zasilania) działa identycznie jak rozkaz zeruj moduł.
Linia 53: Linia 49:
=== Sprawdź istnienie modułu ===
=== Sprawdź istnienie modułu ===


N/3-4/ = '''10'''
N<sub>3-4</sub> = 10
   
   
=== Podaj specyfikację przerwania ===
=== Podaj specyfikację przerwania ===


N/3-4/ = '''01'''
N<sub>3-4</sub> = 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).
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).
Linia 63: Linia 59:
== Polecenia sterujące ogólne ==
== Polecenia sterujące ogólne ==


Odpowiedź I/F: '''OK''' lub '''EN'''.
Odpowiedź I/F: OK lub EN. Po EN należny powtórzyć polecenie.
 
Po '''EN''' należny powtórzyć polecenie.


=== Cofnij przerwanie niepokwitowane do kolejki ===
=== Cofnij przerwanie niepokwitowane do kolejki ===


* Typ: IN
* Typ: IN
* N/0-2/ = 001
* N<sub>0-2</sub> = 001
* N/3-10/ = 0
* N<sub>3-10</sub> = 0


Jeżeli jest zgłoszone przerwanie, którego specyfikacja nie została jeszcze pobrana, to zostaje ono ponownie umieszczone w kolejce przerwań.
Jeżeli jest zgłoszone przerwanie, którego specyfikacja nie została jeszcze pobrana, to zostaje ono ponownie umieszczone w kolejce przerwań.
 
=== Testuj ===
=== Testuj ===


* Typ: OU
* Typ: OU
* N/0-2/ = 001
* N<sub>0-2</sub> = 001
* N/3-10/ = parametr testu
* N<sub>3-10</sub> = parametr testu
* Informacja: adres pola 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.
Program testujący zostaje przepisany do pamięci MULTIX i wykonany. Po poprawnym zakończeniu zgłaszane jest przerwanie IWYTE.
 
=== Ustaw konfigurację ===
=== Ustaw konfigurację ===


* Typ: OU
* Typ: OU
* N/0-2/ = 101
* N<sub>0-2</sub> = 101
* Informacja: adres pola sterującego.
* Informacja: adres pola sterującego.


Linia 99: Linia 93:


==  Polecenia sterujące liniowe ==
==  Polecenia sterujące liniowe ==
* Odpowiedz I/F: '''OK''' lub '''EN'''. Po '''EN''' należny powtórzyć polecenie.
 
* N/3-10/ = identyfikator linii logicznej.
* Odpowiedz I/F: OK lub EN. Po EN należny powtórzyć polecenie.
* N<sub>3-10</sub> = identyfikator linii logicznej.


Każde polecenie potwierdzone przez OK kwitowane jest zgłoszeniem przerwania.
Każde polecenie potwierdzone przez OK kwitowane jest zgłoszeniem przerwania.


=== Dołącz linię ===
=== Dołącz linię ===
* Typ: OU
* Typ: OU
* N/0-2/ = 010
* N<sub>0-2</sub> = 010
* Informacja: adres pola sterującego.
* Informacja: adres pola sterującego.


Linia 112: Linia 108:


Pokwitowanie:
Pokwitowanie:
* IDOLI - dołączono linię
* IDOLI - dołączono linię
* INDOL - nie doliczono bo blednę parametry lub linia już była dołączona
* INDOL - nie dołączono bo błędne parametry lub linia już była dołączona
* INKDO - brak linii w konfiguracji
* INKDO - brak linii w konfiguracji
 
=== Odłącz linię ===
=== Odłącz linię ===
* Typ: IN
* Typ: IN
* N/0-2/ = 010
* N<sub>0-2</sub> = 010


Linia logiczna zostaje usunięta z programu. Linia fizyczna zostaje wyzerowana.
Linia logiczna zostaje usunięta z programu. Linia fizyczna zostaje wyzerowana.


Pokwitowanie:
Pokwitowanie:
* IODLI - odłączono linię
* IODLI - odłączono linię
* INODL - linia nie zakończyła transmisji, nie odłączono
* INODL - linia nie zakończyła transmisji, nie odłączono
Linia 128: Linia 127:
   
   
=== Podaj status linii ===
=== Podaj status linii ===
* Typ: OU
* Typ: OU
* N/0-2/ = 011
* N<sub>0-2</sub> = 011
* Informacja: adres statusu
* Informacja: adres statusu


Linia 135: Linia 135:


Pokwitowanie:
Pokwitowanie:
* ISTRE - podano status
* ISTRE - podano status
* INSTR - odrzucono polecenie (poprzednie polecenie "podaj status" jest w toku)
* INSTR - odrzucono polecenie (poprzednie polecenie "podaj status" jest w toku)
Linia 140: Linia 141:
   
   
=== Przesyłaj ===
=== Przesyłaj ===
*Typ: OU
 
* N/0-2/ = 100
* Typ: OU
* N<sub>0-2</sub> = 100
* Informacja: adres pola sterującego.
* Informacja: adres pola sterującego.


Linia 147: Linia 149:


Pokwitowanie:
Pokwitowanie:
* IETRA - zakończono przesyłanie poprawnie
* IETRA - zakończono przesyłanie poprawnie
* ITRER - zakończono przesyłanie z błędami
* ITRER - zakończono przesyłanie z błędami
Linia 154: Linia 157:
   
   
=== Zerwij przesyłanie ===
=== Zerwij przesyłanie ===
* Typ: IN
* Typ: IN
* N/0-2/ = 011
* N<sub>0-2</sub> = 011


Przesyłanie zostaje zerwane.
Przesyłanie zostaje zerwane.


Pokwitowanie:
Pokwitowanie:
* IABTR - wykonano zerwanie
* IABTR - wykonano zerwanie
* INABT - nie ma transmisji w tej linii
* INABT - nie ma transmisji w tej linii
Linia 256: Linia 261:
Wykorzystanie tych pól jest następujące:
Wykorzystanie tych pól jest następujące:


{| class="wikitable"
{| class="wikitable" style="text-align:center;"
! Polecenie<br/>sterujące !! Pole parametrów<br/>przekazywanych !! Pole parametrów<br/>zwracanych
! Polecenie<br/>sterujące !! Pole parametrów<br/>przekazywanych !! Pole parametrów<br/>zwracanych
|-
|-
| Testuj || tak || tak
| align="left" | Testuj || tak || tak
|-
|-
| Ustaw konfig. || tak || tak
| align="left" | Ustaw konfig. || tak || tak
|-
|-
| Dołącz linię || tak || nie
| align="left" | Dołącz linię || tak || nie
|-
|-
| Podaj status linii || nie || tak
| align="left" | Podaj status linii || nie || tak
|-
|-
| Przesyłaj || tak || tak
| align="left" | Przesyłaj || tak || tak
|-
|-
|}
|}
Linia 316: Linia 321:
* P1 i P2 - długość jest zerowa, nic nie zostanie wysłane.
* P1 i P2 - długość jest zerowa, nic nie zostanie wysłane.
* P1 - dla protokołu jednokierunkowego jest błędem - przerwanie INTRA.
* 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 blednę - przerwanie ITRER.
* 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ść.
* 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ść.


Linia 358: Linia 363:
* 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.
* 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.
* 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:
{| class="wikitable" style="text-align:center;"
! 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:
{| class="wikitable" style="text-align:center;"
! Protokół !! Linia !! Nadawanie w toku !! Odbiór w toku !! Sposób
|-
| rowspan="2" | 0 || rowspan="2" | simplex || - || nie || S1
|-
| - || tak || S2
|-
| rowspan="3" | 2 || rowspan="3" | półduplex || nie || nie || S1
|-
| tak || nie || S0
|-
| nie || tak || S2
|-
| rowspan="3" | 2 || rowspan="3" | 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).
<div>
'''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).
</div>
== 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:
{| class="wikitable"
! width="60" | Bity !! Znaczenie
|-
| align="center" | 0-7 || ilość słów opisu linii fizycznych
|-
| align="center" | 8-15 || ilość linii logicznych
|-
|}
Pole parametrów zwracanych:
{| class="wikitable"
! width="60" | Bity !! Znaczenie
|-
| align="center" | 0-7
| Nr błędu:
* 0 - konfiguracja już ustawiona
* 1 - błędna liczba linii fizycznych lub logicznych
* 2 - błędny typ urządzenia w opisie linii fizycznej
* 3 - niedozwolony kierunek transmisji
* 4 - niekompletny opis linii fizycznej
* 5 - brak protokołu
* 6 - linia fizyczna nie użyta
* 7 - niezgodność kierunku transmisji urządzenia i protokołu
* 8 - linia fizyczna zajęta
* 9 - brak pamięci na tablice
* 10 - niezgodność typu protokołu i typu linii fizycznej
* 11 - błędne parametry protokołu
|-
| align="center" | 8-15
|
* nr linii fiz dla błędu 2, 3, 4
* nr linii log dla błędów 5, 6, 7, 8, 10, 11
|-
|}
Pole opisu linii fizycznych:
{| class="wikitable"
! Słowo !! Bity !! Znaczenie
|-
| rowspan="4" align="center" | 0 || align="center" | 0-2 || Kierunek:
* 100 = output
* 010 = input
* 110 = half-duplex
* 111 = full-duplex
|-
| align="center" | 3 || linia użyta
|-
| align="center" | 4-7 || Typ urządzenia:
* 0 = USART
* 1 = 8255
* 2 = USART synch,
* 3 = winchester, ...
* 4 = taśma magnetyczna, ...
|-
| align="center" | 11-15 || Liczba linii fizycznych opisanych w powyższy sposób pomniejszona o 1
|-
|}
Pole opisu linii logicznej:
{| class="wikitable" cellpadding="10" cellspacing="10"
! Słowo !! Bity !! Znaczenie
|-
| rowspan="2" align="center" | 0 || align="center" | 0-7 || nr protokołu
|-
| align="center" | 8-15 || nr linii fizycznej
|-
| align="center" | 1-3 || align="center" | 0-15 || parametry protokołu
|-
|}
Dla protkolu 6 (Winchester) słowo 1 zawiera:
{| class="wikitable"
! Słowo !! Bity !! Znaczenie
|-
| rowspan="2" align="center" | 1 || align="center" | 0-7 || Typ Winchestera:
* 0 - BASF
* 1 - NEC
|-
| align="center" | 8-15 || protekcja formatowania:
* 0 - formatowanie dozwolone
* inaczek - formatowanie nie wykonywane
|-
|}
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 ===
{| class="wikitable"
! Słowo !! Bity !! Znaczenie
|-
| rowspan="7" align="center" | 0 || align="center" | 0 || obserwuj znacznik końca wejścia (taśmy)
|-
| align="center" | 1 || nie sprawdzaj parzystości
|-
| align="center" | 2 || odd parity
|-
| align="center" | 3 || przekazuj 8 bitów
|-
| align="center" | 5 || obsługuj BS oraz CAN
|-
| align="center" | 7 || obserwuj "zgłoszenie operatora"
|-
| align="center" | 8-15 || kod znacznika końca wejścia (taśmy)
|-
| rowspan="2" align="center" | 1 || align="center" | 0-7 || kod zgłoszenia operatora
|-
| align="center" | 8-15 || nr procedury obsługi tekstu:
* 0 = nic,
* ...
|-
|}
=== Protokół nr 1 - perforator taśmy ===
{| class="wikitable"
! Słowo !! Bity !! Znaczenie
|-
| rowspan="4" align="center" | 0 || align="center" | 2 || odd parity
|-
| align="center" | 3 || przesyłaj 8 bitów (= bez parzystości)
|-
| align="center" | 6 || zamień małe litery na duże
|-
| align="center" | 8-15 || nr procedury obsługi tekstu:
* 0 = nic,
* ...
|-
|}
=== Protokół nr 2 - monitor ===
{| class="wikitable"
! Słowo !! Bity !! Znaczenie
|-
| rowspan="9" align="center" | 0 || align="center" | 0 || obserwuj znacznik końca wejścia
|-
| align="center" | 1 || nie sprawdzaj i nie generuj parzystości
|-
| align="center" | 2 || odd parity
|-
| align="center" | 3 || przekazuj 8 bitów do MERA
|-
| align="center" | 4 || wykonaj XON/XOFF
|-
| align="center" | 5 || obsługuj BS oraz CAN
|-
| align="center" | 6 || zamień małe litery na duże dla nadawania
|-
| align="center" | 7 || obserwuj "zgłoszenie operatora"
|-
| align="center" | 8-15 || kod znacznika końca wejścia
|-
| rowspan="2" align="center" | 1 || align="center" | 0-7 || kod zgłoszenia operatora
|-
| align="center" | 8-15 || nr procedury obsługi tekstu:
* 0 = nic,
* 2 = edytor,
* ...
|-
| align="center" | 2 || align="center" | 0-15 || parametry procedury obróbki tekstu
|-
|}
== Pole sterujące "podaj status linii" ==
Pole zawiera tylko parametry zwracane.
{| class="wikitable"
! Słowo !! Bity !! Znaczenie
|-
| rowspan="8" align="center" | 0 || align="center" | 7 || linia jest dołączona
|-
| align="center" | 8 || było zgłoszenie operatora
|-
| align="center" | 9 || błąd parzystości
|-
| align="center" | 10 || odebrano znak kończący
|-
| align="center" | 12 || odbiór jest w toku
|-
| align="center" | 13 || odbiór był rozpoczęty
|-
| align="center" | 14 || nadawanie jest w toku
|-
| align="center" | 15 || nadawanie było rozpoczęte
|-
|}
== Pole sterujące "przesyłaj" ==
Pole zawiera w pierwszej części parametry przekazywane, a w drugiej, oznaczonej kolorem - 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:
{| class="wikitable" style="text-align:center;"
! rowspan="2" | Bit !! rowspan="2" | Znaczenie !! colspan="3" | Stosuje się do protokołu nr
|-
! 0 !! 1 !! 2
|-
| | 0 || align="left" | timeout || tak || tak || tak
|-
| 1 || align="left" | zgłoszenie operatora || tak || nie || tak
|-
| 2 || align="left" | awaria urządzenia || tak || tak || tak
|-
| 3 || align="left" | koniec znaków przed znakiem kończącym nadawanie || nie || tak || tak
|-
| 4 || align="left" | błąd parzystości || tak || nie || tak
|-
| 5 || align="left" | inny błąd transmisji || tak || nie || tak
|-
| 7 || align="left" | 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.
=== Protokół nr 0 - czytnik taśmy ===
{| class="wikitable"
! Słowo || Bity || Znaczenie
|-
| rowspan="6" align="center" | 0 || align="center" | 0-1 || procedura obróbki: 0=norm., 1=bin
|-
| align="center" | 2 || ignoruj początkowe nule
|-
| align="center" | 3 || odbieraj wg długości bufora MERA
|-
| align="center" | 4 || odbieraj do znaku kończącego wyłącznie
|-
| align="center" | 5 || odbieraj do znaku kończącego włącznie
|-
| align="center" | 8-15 || timeout [sek]. 1-127 lub 0.
|-
| align="center" | 1 || align="center" | 0-15 || długość bufora odbiorczego MERA [bajty]
|-
| align="center" | 2 || align="center" | 0-15 || adres bufora odbiorczego MERA [słowowy]
|-
| rowspan="2" align="center" | 3 || align="center" | 9 || nr bajtu początkowego bufora odbiorczego
|-
| align="center" | 12-15 || nr bloku bufora odbiorczego
|-
| rowspan="2" align="center" | 4 || align="center" | 0-7 || znak kończący odbiór
|-
| align="center" | 8-15 || 0 lub dodatkowy znak kończący odbiór
|- style="background-color:#ffffe5;"
| align="center" | 5 || align="center" | 0-15 || ilość bajtów odebranych i nieprzekazanych do MERA
|- style="background-color:#ffffe5;"
| align="center" | 6 || align="center" | 0-15 || ilość bajtów przekazanych ostatnim poleceniem sterującym
|- style="background-color:#ffffe5;"
| align="center" | 7 || align="center" | 0-15 || sposób zakończenia
|-
|}
=== Protokół nr 1 - perforator taśmy ===
{| class="wikitable"
! Słowo || Bity || Znaczenie
|-
| rowspan="5" align="center" | 0 || align="center" | 0 || nadawaj wg ilości
|-
| align="center" | 1 || nadawaj do znaku kończącego wyłącznie
|-
| align="center" | 2 || nadawaj do znaku kończącego włącznie
|-
| align="center" | 6-7 || procedura obróbki: 0=norm., 1=bin
|-
| align="center" | 8-15 || timeout [sek]. 1-127 lub 0.
|-
| align="center" | 1 || align="center" | 0-15 || ilość znaków do nadania
|-
| align="center" | 2 || align="center" | 0-15 || adres bufora nadawczego MERA [słowowy]
|-
| rowspan="3" align="center" | 3 || align="center" | 0-7 || znak kończący nadawanie
|-
| align="center" | 9 || nr bajtu początkowego w buforze nadawczym
|-
| align="center" | 12-15 || nr bloku bufora nadawczego
|- style="background-color:#ffffe5;"
| align="center" | 4 || align="center" | 0-15 || ilość bajtów nadanych
|- style="background-color:#ffffe5;"
| align="center" | 5 || align="center" | 0-15 || sposób zakończenia
|-
|}
=== Protokół nr 2 - monitor ===
{| class="wikitable"
! Słowo || Bity || Znaczenie
|-
| rowspan="9" align="center" | 0 || align="center" | 0 || nadawaj wg ilości
|-
| align="center" | 1 || nadawaj  do znaku kończącego wyłącznie
|-
| align="center" | 2 || nadawaj  do znaku kończącego włącznie
|-
| align="center" | 3 || odbieraj wg długości bufora MERA
|-
| align="center" | 4 || odbieraj do znaku kończącego wyłącznie
|-
| align="center" | 5 || odbieraj do znaku kończącego włącznie
|-
| align="center" | 6 ||  generuj echo
|-
| align="center" | 7 ||  wysyłaj tekst zachęty przed odbiorem
|-
| align="center" | 8-15 || timeout [sek]. 1-127 lub 0.
|-
| align="center" | 1 || align="center" | 0-15 || ilość znaków do nadania
|-
| align="center" | 2 || align="center" | 0-15 || adres bufora nadawczego MERA [słowowy]
|-
| rowspan="3" align="center" | 3 || align="center" | 0-7 || znak kończący nadawanie
|-
| align="center" | 9 || nr bajtu początkowego w buforze nadawczym
|-
| align="center" | 12-15 || nr bloku bufora nadawczego
|-
| align="center" | 4 || align="center" | 0-15 || długość bufora odbiorczego MERA [bajty]
|-
| align="center" | 5 || align="center" | 0-15 || adres bufora odbiorczego MERA [słowowy]
|-
| rowspan="2" align="center" | 6 || align="center" | 9 || nr bajtu początkowego bufora odbiorczego
|-
| align="center" | 12-15 || nr bloku bufora odbiorczego
|-
| rowspan="2" align="center" | 7 || align="center" | 0-7 || znak kończący odbiór
|-
| align="center" | 8-15 || 0 lub dodatkowy znak kończący odbiór
|-
| align="center" | 8-9 || align="center" | 0-15 || tekst zachęty uzupełniony zerami
|- style="background-color:#ffffe5;"
| align="center" | 10 || align="center" | 0-15 || ilość bajtów nadanych
|- style="background-color:#ffffe5;"
| align="center" | 11 || align="center" | 0-15 || ilość bajtów odebranych i nieprzekazanych do MERA
|- style="background-color:#ffffe5;"
| align="center" | 12 || align="center" | 0-15 || ilość bajtów odebranych/przekazanych ostatnim poleceniem sterującym
|- style="background-color:#ffffe5;"
| align="center" | 13 || align="center" | 0-15 || sposób zakończenia
|-
|}
= Protokoły dla SOM-3 =
Dla systemu SOM-3 przewiduje się 3 protokoły:
* nr 3  czytnik SOM
* nr 4  perforator SOM
* nr 5  monitor SOM
'''Uwaga:''' Zasady podane w części podstawowej niniejszego opisu dla protokołów 0, 1, 2 stosują się odpowiednio do protokołów 3, 4, 5, jeżeli poniżej nie podano inaczej.
== Pole sterujące "dołącz linię" ==
{| class="wikitable"
! Słowo !! Bity !! Znaczenie
|-
| align="center" | 0 || align="center" | 4 || wykonaj 'xon/xoff' (dla protokołu 5)
|-
| align="center" | 0 || align="center" | 7 || obserwuj zgłoszenie operatora
|-
| align="center" | 0 || align="center" | 8-15 || kod zgłoszenia operatora
|-
|}
Pole to występuje dla protokołów nr 3 i 5. Dla protokołu nr 4 polecenie dołącz linię nie korzysta z pola sterującego.
== Pole  sterujące "przesyłaj" ==
Pole zawiera w pierwszej części parametry przekazywane a w drugiej, oznaczonej kolorem - parametry zwracane. W polu tym występuje słowo "sposób zakończenia" o strukturze następującej:
{| class="wikitable" style="text-align:center;"
! rowspan="2" | Bit !! rowspan="2" | Znaczenie !! colspan="3" | Stosuje się do protokołu
|-
! 3 !! 4 !! 5
|-
| 0 || align="left" | timeout || tak || tak || tak
|-
| 1 || align="left" | zgłoszenie operatora || tak || nie || tak
|-
| 2 || align="left" | awaria urządzenia || tak || tak || tak
|-
| 3 || align="left" | koniec znaków przed znakiem końca nad. || nie || tak || tak
|-
| 4 || align="left" | błąd parzystości || tak || nie || tak
|-
| 5 || align="left" | inny błąd transmisji || tak || nie || tak
|-
| 6 || align="left" | wystąpił CAN || nie || nie || tak
|-
| 7 || align="left" | wystąpił znak końca wejścia || tak || nie || tak
|-
| 8-15 || align="left" | znak, który zakończył odbiór lub 255 || tak || nie || tak
|-
|}
=== Protokół nr 3 - czytnik SOM ===
{| class="wikitable"
! Słowo !! Bity || Znaczenie
|-
| rowspan="7" align="center" | 0 || align="center" | 0 || nie sprawdzaj parzystości
|-
| align="center" | 1 || odd - parity
|-
| align="center" | 2 || przekazuj 8 bitów do MERA
|-
| align="center" | 4 || LF (#0a) jest znakiem  nagłówka
|-
| align="center" | 5 || DEL (#7f) jest znakiem nagłówka
|-
| align="center" | 6 || ignoruj spacje poprzedzające znak kończący
|-
| align="center" | 8-15 || timeout [sek]. 1-127 lub 0.
|-
| rowspan="7" align="center" | 1 || align="center" | 0-1 || nr procedury obróbki tekstu: 0=normalnie,1=bin
|-
| align="center" | 3 || usuwaj LF (#0a) z tekstu odebranego
|-
| align="center" | 4 || usuwaj DEL (#7f) z tekstu odebranego
|-
| align="center" | 5 || odbieraj wg długości bufora MERA
|-
| align="center" | 6 || BS (#08) jest znakiem nagłówka
|-
| align="center" | 7 || cofnij wskaźnik bufora gdy BS
|-
| align="center" | 8-15 || kod znacznika końca wejścia
|-
| align="center" | 2 || align="center" | 0-15 || długość bufora odbiorczego MERA [bajty]
|-
| align="center" | 3 || align="center" | 0-15 || adres bufora odbiorczego MERA [słowowy]
|-
| rowspan="12" align="center" | 4 || align="center" | 0 || ESC (#1b) jest znakiem nagłówka
|-
| align="center" | 1 || kończ odbiór gdy ESC
|-
| align="center" | 2 || NUL (#00) jest znakiem nagłówka
|-
| align="center" | 3 || kończ odbiór gdy NUL
|-
| align="center" | 4 || CR (#0d) jest znakiem nagłówka
|-
| align="center" | 5 || kończ odbiór gdy CR
|-
| align="center" | 6 || CAN (#18) jest znakiem nagłówka
|-
| align="center" | 7 || zeruj bufor gdy CAN
|-
| align="center" | 9 || nr bajtu początkowego w buforze odbiorczym
|-
| align="center" | 10 || obserwuj znacznik końca wejścia
|-
| align="center" | 11 || zamię małe litery na duże
|-
| align="center" | 12-15 || nr bloku bufora odbiorczego
|- style="background-color:#ffffe5;"
| align="center" | 5 || align="center" | 0-15 || ilość bajtów odebranych i nieprzekazanych do MERA
|- style="background-color:#ffffe5;"
| align="center" | 6 || align="center" | 0-15 || ilość bajtów przekazanych do MERA ostatnim poleceniem ster.
|- style="background-color:#ffffe5;"
| align="center" | 7 || align="center" | 0-15 || sposób zakończenia
|-
|}
=== Protokół nr 4 - perforator SOM ===
{| class="wikitable"
! Słowo !! Bity || Znaczenie
|-
| rowspan="4" align="center" | 0 || align="center" | 0 || nie  generuj bitu parzystości
|-
| align="center" | 1 || odd - parity
|-
| align="center" | 6-7 || nr procedury obróbki tekstu: 0=normalnie, 1=bin
|-
| align="center" | 8-15 || timeout [sek]. 1-127 lub 0.
|-
| rowspan="7" align="center" | 1 || align="center" | 0 || nadawaj wg ilości
|-
| align="center" | 1 || nadawaj do znaku kończącego wyłącznie
|-
| align="center" | 2 || nadawaj do znaku kończącego włącznie
|-
| align="center" | 3 || pierwszy znak w buforze jest sterujący
|-
| align="center" | 4 || poprzedź nadawanie znakami CR, LF (#0d, #0a)
|-
| align="center" | 5 || poprzedź nadawanie seria nul (rozbiegówka)
|-
| align="center" | 6-15 || długość rozbiegówki
|-
| align="center" | 2 || align="center" | 0-15 || ilość znaków do nadania
|-
| align="center" | 3 || align="center" | 0-15 || adres bufora nadawczego MERA [słowowy]
|-
| rowspan="3" align="center" | 4 || align="center" | 0-7 || znak kończący nadawanie
|-
| align="center" | 9 || nr bajtu początkowego w buforze nadawczym
|-
| align="center" | 12-15 || nr bloku bufora nadawczego
|- style="background-color:#ffffe5;"
| align="center" | 5 || align="center" | 0-15 || ilość bajtów nadanych
|- style="background-color:#ffffe5;"
| align="center" | 6 || align="center" | 0-15 || sposób zakończenia
|-
|}
=== Protokół nr 5 - monitor SOM ===
{| class="wikitable"
! Słowo !! Bity || Znaczenie
|-
| rowspan="9" align="center" | 0 || align="center" | 0 || nie sprawdzaj i nie generuj parzystości
|-
| align="center" | 1 || odd - parity
|-
| align="center" | 2 || przekazuj 8 bitów do MERA
|-
| align="center" | 3 || generuj echo
|-
| align="center" | 4 || LF (#0a) jest znakiem  nagłówka
|-
| align="center" | 5 || DEL (#7f) jest znakiem nagłówka
|-
| align="center" | 6 || ignoruj spacje poprzedzające znak kończący
|-
| align="center" | 7 || wysyłaj tekst zachęty przed odbiorem
|-
| align="center" | 8-15 || timeout [sek]. 1-127 lub 0.
|-
| rowspan="9" align="center" | 1 || align="center" | 0 || nadawaj wg ilości
|-
| align="center" | 1 || nadawaj do znaku kończącego wyłącznie
|-
| align="center" | 2 || nadawaj do znaku kończącego włącznie
|-
| align="center" | 3 || pierwszy znak w buforze jest sterujący
|-
| align="center" | 4 || poprzedź nadawanie znakami CR,LF (#0d,#0a)
|-
| align="center" | 5 || odbieraj wg długości bufora MERA
|-
| align="center" | 6 || BS (#08) jest znakiem nagłówka
|-
| align="center" | 7 || cofnij wskaźnik bufora gdy BS
|-
| align="center" | 8-15 || kod znacznika końca wejścia
|-
| align="center" | 2-3 || align="center" | 0-15 || tekst zachęty uzupełniony  nul-ami
|-
| align="center" | 4 || align="center" | 0-15 || ilość znaków do nadania
|-
| align="center" | 5 || align="center" | 0-15 || adres bufora nadawczego MERA [słowowy]
|-
| rowspan="5" align="center" | 6 || align="center" | 0-7 || znak kończący nadawanie
|-
| align="center" | 9 || nr bajtu początkowego w buforze nadawczym
|-
| align="center" | 10 || usuwaj LF (#0a) z tekstu odebranego
|-
| align="center" | 11 || usuwaj DEL (#7f) z tekstu odebranego
|-
| align="center" | 12-15 || nr bloku bufora nadawczego
|-
| align="center" | 7 || align="center" | 0-15 || długość bufora odbiorczego MERA [bajty]
|-
| align="center" | 8 || align="center" | 0-15 || adres bufora odbiorczego MERA [słowowy]
|-
| rowspan="12" align="center" | 9 || align="center" | 0 || ESC (#1b) jest znakiem nagłówka
|-
| align="center" | 1 || kończ odbiór gdy ESC
|-
| align="center" | 2 || NUL (#00) jest znakiem nagłówka
|-
| align="center" | 3 || kończ odbiór gdy NUL
|-
| align="center" | 4 || CR (#0d) jest znakiem nagłówka
|-
| align="center" | 5 || kończ odbiór gdy CR
|-
| align="center" | 6 || CAN (#18) jest znakiem nagłówka
|-
| align="center" | 7 || zeruj bufor gdy CAN
|-
| align="center" | 9 || nr bajtu początkowego w buforze odbiorczym
|-
| align="center" | 10 || obserwuj znacznik końca wejścia
|-
| align="center" | 11 || zamię małe litery odebrane na duże
|-
| align="center" | 12-15 || nr bloku bufora odbiorczego
|- style="background-color:#ffffe5;"
| align="center" | 10 || align="center" | 0-15 || ilość bajtów nadanych
|- style="background-color:#ffffe5;"
| align="center" | 11 || align="center" | 0-15 || ilość bajtów odebranych i nieprzekazanych do MERA
|- style="background-color:#ffffe5;"
| align="center" | 12 || align="center" | 0-15 || ilość bajtów przekazanych do MERA ostatnim poleceniem ster.
|- style="background-color:#ffffe5;"
| align="center" | 13 || align="center" | 0-15 || sposób zakończenia
|-
|}
== Obróbka sekwencji odbieranej ==
Sekwencja odbierana składa się z:
* nagłówka
* tekstu
Nagłówek jest usuwany z bufora odbiorczego. Nagłówek zostaje zakończony przez dowolny znak,który nie jest zadeklarowany jako znak nagłówka. Na znakach należących do tekstu mogą być - o ile są ustawione odpowiednie bity w polu sterującym - wykonywane operacje:
* zamiana małych liter na duże
* usuwanie znaków LF, DEL
* usuwanie wszystkich odebranych znaków przed znakiem can; Ponadto dla protokołu nr 5: znak CAN nie generuje echa oraz powoduje zakończenie transmisji z przerwaniem "ITRER"
* usuwanie ostatniego znaku przed znakiem BS
* kończenie odbioru po znakach ESC, NUL, CR.
== Znaki sterujące dla nadawania ==
* + - tekst zostaje poprzedzony znakiem CR (#0d)
* 0 - tekst zostaje poprzedzony znakami CR, LF, LF (#0d, #0a, #0a)
* 1 - tekst zostaje poprzedzony znakami CR,FF (#0d, #0c)
* $ - tekst zostaje wyprowadzony bez poprzedzania dodatkowymi znakami
* Kaidy inny - tekst zostaje poprzedzony  znakami CR, LF (#0d, #0a)
Jeżeli po znaku sterującym występuje znak STX (#02) to zostaje on usunięty.
{{source|title=Styk MERA-MULTIX, wersja J|author=Amepol|date=1987-02-19}}

Menu nawigacyjne