3013
edycji
Nie podano opisu zmian |
|||
(Nie pokazano 19 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
= 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 | * N<sub>15</sub> = 0 | ||
* N | * 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: | * Typ: IN | ||
* N | * N<sub>0-2</sub> = 0 | ||
* N | * N<sub>5-10</sub> = 0 | ||
* Odpowiedź I/F: | * Odpowiedź I/F: OK | ||
=== Zeruj moduł === | === Zeruj moduł === | ||
N | 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 | ||
* | * 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 | N<sub>3-4</sub> = 10 | ||
=== Podaj specyfikację przerwania === | === Podaj specyfikację przerwania === | ||
N | 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: | Odpowiedź I/F: OK lub EN. Po EN należny powtórzyć polecenie. | ||
Po | |||
=== Cofnij przerwanie niepokwitowane do kolejki === | === Cofnij przerwanie niepokwitowane do kolejki === | ||
* Typ: IN | * Typ: IN | ||
* N | * N<sub>0-2</sub> = 001 | ||
* N | * 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 | * N<sub>0-2</sub> = 001 | ||
* N | * 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 | * 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: | |||
* N | * 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 | * 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 | * 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 | * 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 | * 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 | * 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 | * 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 423: | Linia 428: | ||
! width="60" | Bity !! Znaczenie | ! width="60" | Bity !! Znaczenie | ||
|- | |- | ||
| align="center" | 0-7 || ilość | | align="center" | 0-7 || ilość słów opisu linii fizycznych | ||
|- | |- | ||
| align="center" | 8-15 || ilość linii logicznych | | align="center" | 8-15 || ilość linii logicznych | ||
Linia 461: | Linia 466: | ||
! Słowo !! Bity !! Znaczenie | ! Słowo !! Bity !! Znaczenie | ||
|- | |- | ||
| rowspan="4" | 0 || 0-2 || Kierunek: | | rowspan="4" align="center" | 0 || align="center" | 0-2 || Kierunek: | ||
* 100 = output | * 100 = output | ||
* 010 = input | * 010 = input | ||
Linia 467: | Linia 472: | ||
* 111 = full-duplex | * 111 = full-duplex | ||
|- | |- | ||
| 3 || linia użyta | | align="center" | 3 || linia użyta | ||
|- | |- | ||
| 4-7 || Typ urządzenia: | | align="center" | 4-7 || Typ urządzenia: | ||
* 0 = USART | * 0 = USART | ||
* 1 = 8255 | * 1 = 8255 | ||
Linia 476: | Linia 481: | ||
* 4 = taśma magnetyczna, ... | * 4 = taśma magnetyczna, ... | ||
|- | |- | ||
| 11-15 || Liczba linii fizycznych opisanych w powyższy sposób pomniejszona o 1 | | align="center" | 11-15 || Liczba linii fizycznych opisanych w powyższy sposób pomniejszona o 1 | ||
|- | |- | ||
|} | |} | ||
Linia 485: | Linia 490: | ||
! Słowo !! Bity !! Znaczenie | ! Słowo !! Bity !! Znaczenie | ||
|- | |- | ||
| rowspan="2" | 0 || 0-7 || nr protokołu | | rowspan="2" align="center" | 0 || align="center" | 0-7 || nr protokołu | ||
|- | |- | ||
| 8-15 || nr linii fizycznej | | align="center" | 8-15 || nr linii fizycznej | ||
|- | |- | ||
| 1-3 || 0-15 || parametry protokołu | | align="center" | 1-3 || align="center" | 0-15 || parametry protokołu | ||
|- | |- | ||
|} | |} | ||
Linia 497: | Linia 502: | ||
! Słowo !! Bity !! Znaczenie | ! Słowo !! Bity !! Znaczenie | ||
|- | |- | ||
| rowspan="2" | 1 || 0-7 || Typ Winchestera: | | rowspan="2" align="center" | 1 || align="center" | 0-7 || Typ Winchestera: | ||
* 0 - BASF | * 0 - BASF | ||
* 1 - NEC | * 1 - NEC | ||
|- | |- | ||
| 8-15 || protekcja formatowania: | | align="center" | 8-15 || protekcja formatowania: | ||
* 0 - formatowanie dozwolone | * 0 - formatowanie dozwolone | ||
* inaczek - formatowanie nie wykonywane | * inaczek - formatowanie nie wykonywane | ||
Linia 510: | Linia 515: | ||
1 + 1 + <liczba slow opisu l. fiz.> + 4 * <liczba linii logicznych> | 1 + 1 + <liczba slow opisu l. fiz.> + 4 * <liczba linii logicznych> | ||
== Pole sterujące dołącz linię == | == Pole sterujące "dołącz linię" == | ||
Pole zawiera tylko parametry przekazywane. | Pole zawiera tylko parametry przekazywane. | ||
Linia 519: | Linia 524: | ||
! Słowo !! Bity !! Znaczenie | ! Słowo !! Bity !! Znaczenie | ||
|- | |- | ||
| rowspan="7" | 0 || 0 || obserwuj znacznik końca wejścia (taśmy) | | rowspan="7" align="center" | 0 || align="center" | 0 || obserwuj znacznik końca wejścia (taśmy) | ||
|- | |- | ||
| 1 || nie sprawdzaj parzystości | | align="center" | 1 || nie sprawdzaj parzystości | ||
|- | |- | ||
| 2 || odd parity | | align="center" | 2 || odd parity | ||
|- | |- | ||
| 3 || przekazuj 8 bitów | | align="center" | 3 || przekazuj 8 bitów | ||
|- | |- | ||
| 5 || obsługuj BS oraz CAN | | align="center" | 5 || obsługuj BS oraz CAN | ||
|- | |- | ||
| 7 || obserwuj "zgłoszenie operatora" | | align="center" | 7 || obserwuj "zgłoszenie operatora" | ||
|- | |- | ||
| 8-15 || kod znacznika końca wejścia (taśmy) | | align="center" | 8-15 || kod znacznika końca wejścia (taśmy) | ||
|- | |- | ||
| rowspan="2" | 1 || 0-7 || kod zgłoszenia operatora | | rowspan="2" align="center" | 1 || align="center" | 0-7 || kod zgłoszenia operatora | ||
|- | |- | ||
| 8-15 || nr procedury obsługi tekstu: | | align="center" | 8-15 || nr procedury obsługi tekstu: | ||
* 0 = nic, | * 0 = nic, | ||
* ... | * ... | ||
Linia 546: | Linia 551: | ||
! Słowo !! Bity !! Znaczenie | ! Słowo !! Bity !! Znaczenie | ||
|- | |- | ||
| rowspan="4" | 0 || 2 || odd parity | | rowspan="4" align="center" | 0 || align="center" | 2 || odd parity | ||
|- | |- | ||
| 3 || przesyłaj 8 bitów (= bez parzystości) | | align="center" | 3 || przesyłaj 8 bitów (= bez parzystości) | ||
|- | |- | ||
| 6 || zamień małe litery na duże | | align="center" | 6 || zamień małe litery na duże | ||
|- | |- | ||
| 8-15 || nr procedury obsługi tekstu: | | align="center" | 8-15 || nr procedury obsługi tekstu: | ||
* 0 = nic, | * 0 = nic, | ||
* ... | * ... | ||
Linia 563: | Linia 568: | ||
! Słowo !! Bity !! Znaczenie | ! Słowo !! Bity !! Znaczenie | ||
|- | |- | ||
| rowspan="9" | 0 || 0 || obserwuj znacznik końca wejścia | | rowspan="9" align="center" | 0 || align="center" | 0 || obserwuj znacznik końca wejścia | ||
|- | |- | ||
| 1 || nie sprawdzaj i nie generuj parzystości | | align="center" | 1 || nie sprawdzaj i nie generuj parzystości | ||
|- | |- | ||
| 2 || odd parity | | align="center" | 2 || odd parity | ||
|- | |- | ||
| 3 || przekazuj 8 bitów do MERA | | align="center" | 3 || przekazuj 8 bitów do MERA | ||
|- | |- | ||
| 4 || wykonaj XON/XOFF | | align="center" | 4 || wykonaj XON/XOFF | ||
|- | |- | ||
| 5 || obsługuj BS oraz CAN | | align="center" | 5 || obsługuj BS oraz CAN | ||
|- | |- | ||
| 6 || zamień małe litery na duże dla nadawania | | align="center" | 6 || zamień małe litery na duże dla nadawania | ||
|- | |- | ||
| 7 || obserwuj "zgłoszenie operatora" | | align="center" | 7 || obserwuj "zgłoszenie operatora" | ||
|- | |- | ||
| 8-15 || kod znacznika końca wejścia | | align="center" | 8-15 || kod znacznika końca wejścia | ||
|- | |- | ||
| rowspan="2" | 1 || 0-7 || kod zgłoszenia operatora | | rowspan="2" align="center" | 1 || align="center" | 0-7 || kod zgłoszenia operatora | ||
|- | |- | ||
| 8-15 || nr procedury obsługi tekstu: | | align="center" | 8-15 || nr procedury obsługi tekstu: | ||
* 0 = nic, | * 0 = nic, | ||
* 2 = edytor, | * 2 = edytor, | ||
* ... | * ... | ||
|- | |- | ||
| 2 || 0-15 || parametry procedury obróbki tekstu | | align="center" | 2 || align="center" | 0-15 || parametry procedury obróbki tekstu | ||
|- | |- | ||
|} | |} | ||
Linia 599: | Linia 604: | ||
! Słowo !! Bity !! Znaczenie | ! Słowo !! Bity !! Znaczenie | ||
|- | |- | ||
| rowspan="8" | 0 || 7 || linia jest dołączona | | rowspan="8" align="center" | 0 || align="center" | 7 || linia jest dołączona | ||
|- | |- | ||
| 8 || było zgłoszenie operatora | | align="center" | 8 || było zgłoszenie operatora | ||
|- | |- | ||
| 9 || błąd parzystości | | align="center" | 9 || błąd parzystości | ||
|- | |- | ||
| 10 || odebrano znak kończący | | align="center" | 10 || odebrano znak kończący | ||
|- | |- | ||
| 12 || odbiór jest w toku | | align="center" | 12 || odbiór jest w toku | ||
|- | |- | ||
| 13 || odbiór był rozpoczęty | | align="center" | 13 || odbiór był rozpoczęty | ||
|- | |- | ||
| 14 || nadawanie jest w toku | | align="center" | 14 || nadawanie jest w toku | ||
|- | |- | ||
| 15 || nadawanie było rozpoczęte | | align="center" | 15 || nadawanie było rozpoczęte | ||
|- | |- | ||
|} | |} | ||
Linia 619: | Linia 624: | ||
== Pole sterujące "przesyłaj" == | == Pole sterujące "przesyłaj" == | ||
Pole zawiera w pierwszej części parametry przekazywane, a w drugiej, | 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: | Sposób zakończenia: | ||
{| class="wikitable" | {| class="wikitable" style="text-align:center;" | ||
! rowspan="2" | Bit !! rowspan="2" | Znaczenie !! colspan="3" | Stosuje się do protokołu nr | ! rowspan="2" | Bit !! rowspan="2" | Znaczenie !! colspan="3" | Stosuje się do protokołu nr | ||
|- | |- | ||
! 0 !! 1 !! 2 | ! 0 !! 1 !! 2 | ||
|- | |- | ||
| 0 || timeout || tak || tak || tak | | | 0 || align="left" | timeout || tak || tak || tak | ||
|- | |- | ||
| 1 || zgłoszenie operatora || tak || nie || tak | | 1 || align="left" | zgłoszenie operatora || tak || nie || tak | ||
|- | |- | ||
| 2 || awaria urządzenia || tak || tak || tak | | 2 || align="left" | awaria urządzenia || tak || tak || tak | ||
|- | |- | ||
| 3 || koniec znaków przed znakiem kończącym nadawanie || nie || tak || tak | | 3 || align="left" | koniec znaków przed znakiem kończącym nadawanie || nie || tak || tak | ||
|- | |- | ||
| 4 || błąd parzystości || tak || nie || tak | | 4 || align="left" | błąd parzystości || tak || nie || tak | ||
|- | |- | ||
| 5 || inny błąd transmisji || tak || nie || tak | | 5 || align="left" | inny błąd transmisji || tak || nie || tak | ||
|- | |- | ||
| 7 || znak końca wejścia || 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. | 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}} |