3012
edycji
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 770: | Linia 770: | ||
|- | |- | ||
|} | |} | ||
= 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 | |||
|- | |||
| 0 || 4 || wykonaj 'xon/xoff' (dla protokołu 5) | |||
|- | |||
| 0 || 7 || obserwuj zgłoszenie operatora | |||
|- | |||
| 0 || 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" | |||
! rowspan="2" | Bit !! rowspan="2" | Znaczenie !! colspan="3" | Stosuje się do protokołu | |||
|- | |||
! 3 !! 4 !! 5 | |||
|- | |||
| 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ńca nad. || nie || tak || tak | |||
|- | |||
| 4 || błąd parzystości || tak || nie || tak | |||
|- | |||
| 5 || inny błąd transmisji || tak || nie || tak | |||
|- | |||
| 6 || wystąpił CAN || nie || nie || tak | |||
|- | |||
| 7 || wystąpił znak końca wejścia || tak || nie || tak | |||
|- | |||
| 8-15 || 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" | 0 || 0 || nie sprawdzaj parzystości | |||
|- | |||
| 1 || odd - parity | |||
|- | |||
| 2 || przekazuj 8 bitów do MERA | |||
|- | |||
| 4 || LF (#0a) jest znakiem nagłówka | |||
|- | |||
| 5 || DEL (#7f) jest znakiem nagłówka | |||
|- | |||
| 6 || ignoruj spacje poprzedzające znak kończący | |||
|- | |||
| 8-15 || timeout [sek]. 1-127 lub 0. | |||
|- | |||
| rowspan="7" | 1 || 0-1 || nr procedury obróbki tekstu: 0=normalnie,1=bin | |||
|- | |||
| 3 || usuwaj LF (#0a) z tekstu odebranego | |||
|- | |||
| 4 || usuwaj DEL (#7f) z tekstu odebranego | |||
|- | |||
| 5 || odbieraj wg długości bufora MERA | |||
|- | |||
| 6 || BS (#08) jest znakiem nagłówka | |||
|- | |||
| 7 || cofnij wskaźnik bufora gdy BS | |||
|- | |||
| 8-15 || kod znacznika końca wejścia | |||
|- | |||
| 2 || 0-15 || długość bufora odbiorczego MERA [bajty] | |||
|- | |||
| 3 || 0-15 || adres bufora odbiorczego MERA [słowowy] | |||
|- | |||
| rowspan="12" | 4 || 0 || ESC (#1b) jest znakiem nagłówka | |||
|- | |||
| 1 || kończ odbiór gdy ESC | |||
|- | |||
| 2 || NUL (#00) jest znakiem nagłówka | |||
|- | |||
| 3 || kończ odbiór gdy NUL | |||
|- | |||
| 4 || CR (#0d) jest znakiem nagłówka | |||
|- | |||
| 5 || kończ odbiór gdy CR | |||
|- | |||
| 6 || CAN (#18) jest znakiem nagłówka | |||
|- | |||
| 7 || zeruj bufor gdy CAN | |||
|- | |||
| 9 || nr bajtu początkowego w buforze odbiorczym | |||
|- | |||
| 10 || obserwuj znacznik końca wejścia | |||
|- | |||
| 11 || zamię małe litery na duże | |||
|- | |||
| 12-15 || nr bloku bufora odbiorczego | |||
|- style="background-color:#ffffe5;" | |||
| 5 || 0-15 || ilość bajtów odebranych i nieprzekazanych do MERA | |||
|- style="background-color:#ffffe5;" | |||
| 6 || 0-15 || ilość bajtów przekazanych do MERA ostatnim poleceniem ster. | |||
|- style="background-color:#ffffe5;" | |||
| 7 || 0-15 || sposób zakończenia | |||
|- | |||
|} | |||
=== Protokół nr 4 - perforator SOM === | |||
{| class="wikitable" | |||
! Słowo !! Bity || Znaczenie | |||
|- | |||
| rowspan="4" | 0 || 0 || nie generuj bitu parzystości | |||
|- | |||
| 1 || odd - parity | |||
|- | |||
| 6-7 || nr procedury obróbki tekstu: 0=normalnie, 1=bin | |||
|- | |||
| 8-15 || timeout [sek]. 1-127 lub 0. | |||
|- | |||
| rowspan="7" | 1 || 0 || nadawaj wg ilości | |||
|- | |||
| 1 || nadawaj do znaku kończącego wyłącznie | |||
|- | |||
| 2 || nadawaj do znaku kończącego włącznie | |||
|- | |||
| 3 || pierwszy znak w buforze jest sterujący | |||
|- | |||
| 4 || poprzedź nadawanie znakami CR, LF (#0d, #0a) | |||
|- | |||
| 5 || poprzedź nadawanie seria nul (rozbiegówka) | |||
|- | |||
| 6-15 || długość rozbiegówki | |||
|- | |||
| 2 || 0-15 || ilość znaków do nadania | |||
|- | |||
| 3 || 0-15 || adres bufora nadawczego MERA [słowowy] | |||
|- | |||
| rowspan="3" | 4 || 0-7 || znak kończący nadawanie | |||
|- | |||
| 9 || nr bajtu początkowego w buforze nadawczym | |||
|- | |||
| 12-15 || nr bloku bufora nadawczego | |||
|- style="background-color:#ffffe5;" | |||
| 5 || 0-15 || ilość bajtów nadanych | |||
|- style="background-color:#ffffe5;" | |||
| 6 || 0-15 || sposób zakończenia | |||
|- | |||
|} | |||
=== Protokół nr 5 - monitor SOM === | |||
{| class="wikitable" | |||
! Słowo !! Bity || Znaczenie | |||
|- | |||
| rowspan="9" | 0 || 0 || nie sprawdzaj i nie generuj parzystości | |||
|- | |||
| 1 || odd - parity | |||
|- | |||
| 2 || przekazuj 8 bitów do MERA | |||
|- | |||
| 3 || generuj echo | |||
|- | |||
| 4 || LF (#0a) jest znakiem nagłówka | |||
|- | |||
| 5 || DEL (#7f) jest znakiem nagłówka | |||
|- | |||
| 6 || ignoruj spacje poprzedzające znak kończący | |||
|- | |||
| 7 || wysyłaj tekst zachęty przed odbiorem | |||
|- | |||
| 8-15 || timeout [sek]. 1-127 lub 0. | |||
|- | |||
| rowspan="9" | 1 || 0 || nadawaj wg ilości | |||
|- | |||
| 1 || nadawaj do znaku kończącego wyłącznie | |||
|- | |||
| 2 || nadawaj do znaku kończącego włącznie | |||
|- | |||
| 3 || pierwszy znak w buforze jest sterujący | |||
|- | |||
| 4 || poprzedź nadawanie znakami CR,LF (#0d,#0a) | |||
|- | |||
| 5 || odbieraj wg długości bufora MERA | |||
|- | |||
| 6 || BS (#08) jest znakiem nagłówka | |||
|- | |||
| 7 || cofnij wskaźnik bufora gdy BS | |||
|- | |||
| 8-15 || kod znacznika końca wejścia | |||
|- | |||
| 2-3 || 0-15 || tekst zachęty uzupełniony nul-ami | |||
|- | |||
| 4 || 0-15 || ilość znaków do nadania | |||
|- | |||
| 5 || 0-15 || adres bufora nadawczego MERA [słowowy] | |||
|- | |||
| rowspan="5" | 6 || 0-7 || znak kończący nadawanie | |||
|- | |||
| 9 || nr bajtu początkowego w buforze nadawczym | |||
|- | |||
| 10 || usuwaj LF (#0a) z tekstu odebranego | |||
|- | |||
| 11 || usuwaj DEL (#7f) z tekstu odebranego | |||
|- | |||
| 12-15 || nr bloku bufora nadawczego | |||
|- | |||
| 7 || 0-15 || długość bufora odbiorczego MERA [bajty] | |||
|- | |||
| 8 || 0-15 || adres bufora odbiorczego MERA [słowowy] | |||
|- | |||
| rowspan="12" | 9 || 0 || ESC (#1b) jest znakiem nagłówka | |||
|- | |||
| 1 || kończ odbiór gdy ESC | |||
|- | |||
| 2 || NUL (#00) jest znakiem nagłówka | |||
|- | |||
| 3 || kończ odbiór gdy NUL | |||
|- | |||
| 4 || CR (#0d) jest znakiem nagłówka | |||
|- | |||
| 5 || kończ odbiór gdy CR | |||
|- | |||
| 6 || CAN (#18) jest znakiem nagłówka | |||
|- | |||
| 7 || zeruj bufor gdy CAN | |||
|- | |||
| 9 || nr bajtu początkowego w buforze odbiorczym | |||
|- | |||
| 10 || obserwuj znacznik końca wejścia | |||
|- | |||
| 11 || zamię małe litery odebrane na duże | |||
|- | |||
| 12-15 || nr bloku bufora odbiorczego | |||
|- style="background-color:#ffffe5;" | |||
| 10 || 0-15 || ilość bajtów nadanych | |||
|- style="background-color:#ffffe5;" | |||
| 11 || 0-15 || ilość bajtów odebranych i nieprzekazanych do MERA | |||
|- style="background-color:#ffffe5;" | |||
| 12 || 0-15 || ilość bajtów przekazanych do MERA ostatnim poleceniem ster. | |||
|- style="background-color:#ffffe5;" | |||
| 13 || 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. |