Instrukcje wejścia-wyjścia: Różnice pomiędzy wersjami
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 4: | Linia 4: | ||
# komunikacji z urządzeniami peryferyjnymi. | # komunikacji z urządzeniami peryferyjnymi. | ||
Rozkazy IN i OU są dwuargumentowe: pierwszym argumentem jest rejestr, drugim argument normalny. Najmłodszy bit argumentu | Rozkazy IN i OU są dwuargumentowe: pierwszym argumentem jest rejestr '''r''', drugim argument normalny '''N'''. Najmłodszy bit argumentu '''N''' mówi o tym, czy rozkaz jest kierowany do pamięci (1), czy do urządzeń zewnętrznych (0). Szczegóły pierwszego przypadku użycia opisane są w [[Pamięć operacyjna#Programowy podział pamięci|osobnym dokumencie]], tutaj zajmiemy się jedynie kwestiami ogólnymi oraz szczegółami komunikacji z peryferiami. | ||
= Postać rozkazów IN/OU = | = Postać rozkazów IN/OU = | ||
Podstawowe argumenty rozkazów IN i OU nie różnią się niczym od pozostałych przypadków z grupy z argumentem normalnym - możliwe jest użycie wszystkich dostępnych modyfikacji. Wyjątkowe jest natomiast to, że cztery kolejne słowa pamięci po | Podstawowe argumenty rozkazów IN i OU nie różnią się niczym od pozostałych przypadków z grupy z argumentem normalnym - możliwe jest użycie wszystkich dostępnych modyfikacji. Wyjątkowe jest natomiast to, że cztery kolejne słowa pamięci po rozkazie IN/OU zarezerwowane są dla czterech dodatkowych argumentów. Muszą one zawsze wystąpić i zawierają adresy pamięci, na które ustawiony zostanie licznik rozkazów po wykonaniu rozkazu IN/OU. W zależności od warunków, jakie wystąpiły w trakcie jego wykonywania, wybierany jest jeden z podanych adresów: | ||
* Adres 1 - brak odpowiedzi od kanału bądź urządzenia (brak kanału, brak urządzenia, niesprawność) | * Adres 1 - brak odpowiedzi od kanału bądź urządzenia (brak kanału, brak urządzenia, niesprawność) | ||
Linia 17: | Linia 17: | ||
Tak więc poprawne użycie instrukcji IN/OU może mieć postać: | Tak więc poprawne użycie instrukcji IN/OU może mieć postać: | ||
OU r2, r3 | OU r2, r3 | ||
.word noans, busy, ok, parity | .word noans, busy, ok, parity | ||
Linia 28: | Linia 27: | ||
ok: | ok: | ||
... ; kontyunuacja programu | ... ; kontyunuacja programu | ||
Argumenty '''r''' i '''N''' przekazywane są za pomocą interfejsu do kanału, a dalej do urządzeń zewnętrznych. Ich znaczenie jest różne dla różnych kanałów i urządzeń. W komunikacji z kanałami znakowym i pamięciowym, znaczenie argumentów, i ich poszczególnych bitów jest następujące: | |||
* '''r''' - informacja przekazywana do/z kanału lub adres pola sterującego | |||
* '''N<sub>0-2</sub>''' - kod operacji rozkazu | |||
* '''N<sub>3-7</sub>''' - numer urządzenia lub przedłużenie kodu operacji | |||
* '''N<sub>8-10</sub>''' - numer urządzenia | |||
* '''N<sub>11-14</sub>''' - numer kanału | |||
* '''N<sub>15</sub>''' - 0: rozkaz dotyczy kanału, 1: rozkaz nie dotyczy urządzeń we/wy | |||
W przypadku [[MULTIX]]a i [[PLIX]]a znaczenie argumentów opisane jest w dokumentach [[Styk programowy MERA-MULTIX]] i [[Styk programowy MERA-PLIX]]. |
Aktualna wersja na dzień 05:50, 14 lut 2019
Instrukcje wejścia-wyjścia służą do realizacji dwóch zadań:
- programowego podziału pamięci,
- komunikacji z urządzeniami peryferyjnymi.
Rozkazy IN i OU są dwuargumentowe: pierwszym argumentem jest rejestr r, drugim argument normalny N. Najmłodszy bit argumentu N mówi o tym, czy rozkaz jest kierowany do pamięci (1), czy do urządzeń zewnętrznych (0). Szczegóły pierwszego przypadku użycia opisane są w osobnym dokumencie, tutaj zajmiemy się jedynie kwestiami ogólnymi oraz szczegółami komunikacji z peryferiami.
Postać rozkazów IN/OU
Podstawowe argumenty rozkazów IN i OU nie różnią się niczym od pozostałych przypadków z grupy z argumentem normalnym - możliwe jest użycie wszystkich dostępnych modyfikacji. Wyjątkowe jest natomiast to, że cztery kolejne słowa pamięci po rozkazie IN/OU zarezerwowane są dla czterech dodatkowych argumentów. Muszą one zawsze wystąpić i zawierają adresy pamięci, na które ustawiony zostanie licznik rozkazów po wykonaniu rozkazu IN/OU. W zależności od warunków, jakie wystąpiły w trakcie jego wykonywania, wybierany jest jeden z podanych adresów:
- Adres 1 - brak odpowiedzi od kanału bądź urządzenia (brak kanału, brak urządzenia, niesprawność)
- Adres 2 - kanał lub urządzenie zajęte
- Adres 3 - rozkaz poprawnie przyjęty przez kanał lub urządzenie
- Adres 4 - błąd parzystości pamięci
Tak więc poprawne użycie instrukcji IN/OU może mieć postać:
OU r2, r3 .word noans, busy, ok, parity noans: ... ; obsługa przypadku "brak odpowiedzi" busy: ... ; obsługa przypadku "zajętość" parity: ... ; obsługa przypadku "błąd parzystości" ok: ... ; kontyunuacja programu
Argumenty r i N przekazywane są za pomocą interfejsu do kanału, a dalej do urządzeń zewnętrznych. Ich znaczenie jest różne dla różnych kanałów i urządzeń. W komunikacji z kanałami znakowym i pamięciowym, znaczenie argumentów, i ich poszczególnych bitów jest następujące:
- r - informacja przekazywana do/z kanału lub adres pola sterującego
- N0-2 - kod operacji rozkazu
- N3-7 - numer urządzenia lub przedłużenie kodu operacji
- N8-10 - numer urządzenia
- N11-14 - numer kanału
- N15 - 0: rozkaz dotyczy kanału, 1: rozkaz nie dotyczy urządzeń we/wy
W przypadku MULTIXa i PLIXa znaczenie argumentów opisane jest w dokumentach Styk programowy MERA-MULTIX i Styk programowy MERA-PLIX.