Symulator EMC ODRA-1204: Różnice pomiędzy wersjami
(Utworzono nową stronę "Elektroniczna maszyna cyfrowa ODRA-1204 jest bogato oprogramowanym komputerem. Istnieje duża ilość programów, które stają się obecnie wcale nieprzydatne w wyniku ...") |
Nie podano opisu zmian |
||
(Nie pokazano 8 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 110: | Linia 110: | ||
'''DUMP''' - wyprowadzenie zarezerwowanej pamięci operacyjnej na taśmę papierową. Jeżeli wystąpi parametr zlecenia to nastąpi wyprowadzenie pamięci do zbioru dyskowego. | '''DUMP''' - wyprowadzenie zarezerwowanej pamięci operacyjnej na taśmę papierową. Jeżeli wystąpi parametr zlecenia to nastąpi wyprowadzenie pamięci do zbioru dyskowego. | ||
# <tt>STOP</tt> | # <tt>STOP</tt> | ||
# K(16) := a<br />K(17) := w<br />K(20) := l<br />a następnie przejście do stanu DUMPING. | # K(16) := a<br />K(17) := w<br />K(20) := l<br />a następnie przejście do stanu <tt>DUMPING</tt>. | ||
# <tt>DUMPED</tt>: zlecenie wykonano.<br /><tt>DUMP ERROR</tt>: błąd w wykonaniu zlecenia. | # <tt>DUMPED</tt>: zlecenie wykonano.<br /><tt>DUMP ERROR</tt>: błąd w wykonaniu zlecenia. | ||
Linia 120: | Linia 120: | ||
'''GO TO A''' - uruchomienie programu od wskazanego rozkazu. | '''GO TO A''' - uruchomienie programu od wskazanego rozkazu. | ||
# STOP. | # STOP. | ||
# L := A<br />przejście do stanu RUNNING. | # L := A<br />przejście do stanu <tt>RUNNING</tt>. | ||
# Patrz | # Patrz '''GO'''. | ||
STOP | '''STOP''' - zatrzymanie pracy maszyny. | ||
# Wykonanie w dowolnym stanie różnym od <tt>STOP</tt>. | |||
# Przejście do stanu <tt>STOP</tt>. | |||
# <tt>STOP</tt>: wykonano w stanie <tt>RUNNING</tt>.<br /><tt>LOAD ERROR</tt>: wykonano w stanie <tt>LOADING</tt>.<br /><tt>DUMP ERROR</tt>: wykonano w stanie <tt>DUMPING</tt>.<br /><tt>TEST ERROR</tt>: wykonano w stanie <tt>TESTING</tt>. | |||
'''D A''' - drukowanie zawartości komórki. | |||
# <tt>STOP</tt>, <tt>RUNNING</tt>. | |||
# Drukowanie K(A) w postaci ósemkowej. | |||
'''DA''' - drukowanie zawartości akumulatora. | |||
# <tt>STOP</tt>, <tt>RUNNING</tt>. | |||
# Drukowanie akumulatora w postaci ósemkowej. | |||
'''DW''' - drukowanie zawartości wydłużenia akumulatora. | |||
# <tt>STOP</tt>, <tt>RUNNING</tt>. | |||
# Drukowanie wydłużenia w postaci ósemkowej. | |||
drukowanie zawartości | '''DL''' - drukowanie zawartości licznika rozkazów. | ||
# <tt>STOP</tt>, <tt>RUNNING</tt>. | |||
# Drukowanie licznika rozkazów w postaci ósemkowej. | |||
'''P A P''' - podstawienie do komórki. | |||
# <tt>STOP</tt>, <tt>RUNNING</tt>. | |||
# K(A) := (MX128 + R)* 16384 + N. | |||
'''PA P''' - podstawienie do akumulatora. | |||
# <tt>STOP<//tt>, <tt>RUNNING</tt>. | |||
# A := P. | |||
'''PW P''' - podstawienie do wydłużenia akumulatora. | |||
# <tt>STOP</tt>, <tt>RUNNING<//tt>. | |||
# W := P. | |||
'''PL P''' - podstawienie do licznika rozkazów. | |||
# <tt>STOP</tt>, <tt>RUNNING</tt>. | |||
# L := P. | |||
'''DK''' - drukuj zawartość kluczy (zlecenie dodatkowe nie będące zleceniem standardowym systemu MASON). | |||
# Wykonalne w dowolnym stanie. | |||
# Drukowanie kluczy w postaci ósemkowej. | |||
'''PK P''' - zmień zawartość kluczy. | |||
PK P | |||
zmień zawartość kluczy. | |||
== Sygnały i komunikaty systemu MASON == | == Sygnały i komunikaty systemu MASON == | ||
Linia 228: | Linia 197: | ||
# Równoważna operacja programu w ALGOLu-1204. | # Równoważna operacja programu w ALGOLu-1204. | ||
KOMÓRKA 21. | '''KOMÓRKA 21.''' | ||
# Zakres pierwszego bloku programu zawierającego komórki o adresach: 1, 2, 3, ..., k(21). | |||
# D 21. | |||
# Można zmienić stosując rozkazy w kodzie wewnętrznym. | |||
'''KOMÓRKA 22.''' | |||
# Adres początku drugiego bloku programu zawierającego komórki o adresach: K(22), K(22)+1, ..., 34737. | |||
# D 22. | |||
# Można zmienić stosując rozkazy w kodzie wewnętrznym. | |||
KOMÓRKA 23. | '''KOMÓRKA 23.''' | ||
# Wartość zmiennej standardowej time (w sekundach). | |||
# P 23 0. PT 14 25 36. | |||
# Time := 0 ; lub zerk (time). | |||
'''KOMÓRKA 31.''' | |||
# Numer wejścia aktualnego. | |||
# P 31 1. | |||
# Setinput /10. | |||
'''KOMÓRKA 32.''' | |||
# Numer wyjścia aktualnego. | |||
# P 32 1. | |||
# Setotput /1. | |||
KOMÓRKA | '''KOMÓRKA 33.''' | ||
# Wartość zmiennej lastchar tzn. ostatnio wczytany znak. | |||
# D 33. | |||
# Print (lastchar). | |||
'''KOMÓRKA 34.''' | |||
# Wartość zmiennej lastinteger tzn. ostatnio wczytana liczba typu integer. | |||
# D 34. | |||
# Print (lastinteger). | |||
'''KOMÓRKI 35 i 36.''' | |||
# Wartość zmiennej lastreal tzn. ostatnia liczba typu real. | |||
# D 35 ; D 36. | |||
# Print (lastreal). | |||
KOMÓRKA | '''KOMÓRKA 41.''' | ||
# Długość bufora czytnika. | |||
# P 41 1. | |||
# Można zmienić stosując rozkazy w kodzie wewnętrznym. | |||
== Wprowadzenie i uruchamianie programów użytkowych == | == Wprowadzenie i uruchamianie programów użytkowych == | ||
Linia 300: | Linia 255: | ||
Pod kontrolą systemu MASON mogą pracować programy użytkowe wydziurkowane na taśmie papierowej wyprodukowane przez translator ALGOL 1204 (B) na zlecenie "PBT", lub przez system operacyjny na zlecenie "DUMP". Programy binarne wyprodukowane przez translator wymagają wprowadzenia podprogramów pomocniczych (PP). Podprogramy pomocnicze muszą być tego samego wydania co translator ALGOL-u użyty do tłumaczenia tego programu. A więc program wyprodukowany przez translator ALGOL-u (B) wyd. II należy uruchamiać następująco: | Pod kontrolą systemu MASON mogą pracować programy użytkowe wydziurkowane na taśmie papierowej wyprodukowane przez translator ALGOL 1204 (B) na zlecenie "PBT", lub przez system operacyjny na zlecenie "DUMP". Programy binarne wyprodukowane przez translator wymagają wprowadzenia podprogramów pomocniczych (PP). Podprogramy pomocnicze muszą być tego samego wydania co translator ALGOL-u użyty do tłumaczenia tego programu. A więc program wyprodukowany przez translator ALGOL-u (B) wyd. II należy uruchamiać następująco: | ||
* wczytać podprogramy pomocnicze zleceniem LOAD (odpowiedź maszyny LOADED) | * wczytać podprogramy pomocnicze zleceniem '''LOAD''' (odpowiedź maszyny <tt>LOADED</tt>) | ||
* wczytać program użytkowy zleceniem LOAD (odpowiedź maszyny LOADED) | * wczytać program użytkowy zleceniem '''LOAD''' (odpowiedź maszyny <tt>LOADED</tt>) | ||
* uruchomić program zleceniami W, W0, W1. | * uruchomić program zleceniami W, W0, W1. | ||
Linia 310: | Linia 265: | ||
Zlecenia niestandardowe służą do uruchamiania programu użytkowego. Wszystkie zlecenia niestandardowe są wykonalne w stanie STOP. Zlecenie niestandardowe nie posiadają parametrów. Nazwa tych zleceń składa się z liter i cyfr o maksymalnej długości czterech znaków rozpoczynających się literą. Pozostałe zasady dotyczące tych zleceń są identyczne z zleceniami standardowymi systemu MASON opisanymi w rozdziale 3.3. Poniżej są zestawione wszystkie zlecenia niestandardowe używane przez programy użytkowe. | Zlecenia niestandardowe służą do uruchamiania programu użytkowego. Wszystkie zlecenia niestandardowe są wykonalne w stanie STOP. Zlecenie niestandardowe nie posiadają parametrów. Nazwa tych zleceń składa się z liter i cyfr o maksymalnej długości czterech znaków rozpoczynających się literą. Pozostałe zasady dotyczące tych zleceń są identyczne z zleceniami standardowymi systemu MASON opisanymi w rozdziale 3.3. Poniżej są zestawione wszystkie zlecenia niestandardowe używane przez programy użytkowe. | ||
W | '''W''' | ||
: Wykonanie instrukcji: <tt>Setinput(1); Setoutput(1)</tt>, uruchomienie programu od początku. | |||
'''END''' | |||
: Program wykonano do końca - do ostatniego <tt>end</tt>. Inne sygnały podano w wykazach sygnałów systemu MASON oraz translatora ALGOL 1204. | |||
'''W0''' | |||
: Wykonanie instrukcji <tt>setinput(0); setoutput(0)</tt> i uruchomienie programu od początku. | |||
'''W1''' | |||
: Wykonanie instrukcji <tt>setinput(1); setoutput(0)</tt> i uruchomienie programu od początku. | |||
'''DITR''' | |||
: Drukowanie śladu retroaktywnego. | |||
'''END''' | |||
: Ślad wydrukowano. | |||
'''SORRY''' | |||
: W programie nie ma możliwości drukowania śladu. | |||
begin | '''TMON''' | ||
setinput( | : Przejście do wykonania programu: | ||
setoutput( | begin | ||
L: outchar(inchar); | setinput(1); | ||
goto L | setoutput(0); | ||
end | L: outchar(inchar); | ||
goto L | |||
end | |||
: bez niszczenia zapisu programu lub translatora w pamięci operacyjnej. Zlecenie umożliwia drukowanie krótkich tasiemek w kodzie OPTIMA lub ISO-7 na monitorze. Jeżeli w czasie wykonywania tego zlecenia jest wciśnięty klawisz 0, to wyjściem aktualnym jest perforator. Umożliwia to kopiowanie tasiemek, ewentualnie z tłumaczeniem z jednego kodu na drugi. <tt>STOP</tt> - operator przerwał działanie programu. | |||
bez niszczenia zapisu programu lub translatora w pamięci operacyjnej. | '''MONT''' | ||
: Przejście do wykonania programu: | |||
OPTIMA lub ISO-7 na perforatorze. | begin | ||
STOP - operator przerwał działanie powyższego programu. | setinput(0); | ||
setoutput(1); | |||
L: outchar(inchar); | |||
goto L | |||
end | |||
: bez niszczenia zapisu programu lub translatora w pamięci operacyjnej. Zlecenie umożliwia perforacje krótkich tasiemek w kodzie OPTIMA lub ISO-7 na perforatorze. <tt>STOP</tt> - operator przerwał działanie powyższego programu. | |||
= Literatura = | = Literatura = | ||
Linia 372: | Linia 321: | ||
# "Pakiet testów tom 2", ELWRO, Wrocław 1970 Nr. 1204-III-20, 31, 32. | # "Pakiet testów tom 2", ELWRO, Wrocław 1970 Nr. 1204-III-20, 31, 32. | ||
# "Pakiet podprogramów pomocniczych", ELWRO, Wrocław 1968 Nr. 1204-V-3. | # "Pakiet podprogramów pomocniczych", ELWRO, Wrocław 1968 Nr. 1204-V-3. | ||
# "System operacyjny CROOK-4 dla minikomputera Mera-400", Andrzej Bobcow, Zbigniew Czerniak, Marek Nikodemski, IOPG, Gdańsk 1985. | # "System operacyjny CROOK-4 dla minikomputera Mera-400", [[Andrzej Bobcow]], [[Zbigniew Czerniak]], [[Marek Nikodemski]], IOPG, Gdańsk 1985. | ||
{{source|title=Symulator EMC ODRA-1204 dla minikomputera MERA-400 w systemie operacyjnym CROOK-4 (wersja-1/A)|author=Janusz Gocałek, Jacek Klauziński, Ryszard Zenker|date=Poznań 1985}} | {{source|title=Symulator EMC ODRA-1204 dla minikomputera MERA-400 w systemie operacyjnym CROOK-4 (wersja-1/A)|author=[[Janusz Gocałek]], [[Jacek Klauziński]], [[Ryszard Zenker]]|date=Poznań 1985}} |
Aktualna wersja na dzień 19:53, 9 cze 2015
Elektroniczna maszyna cyfrowa ODRA-1204 jest bogato oprogramowanym komputerem. Istnieje duża ilość programów, które stają się obecnie wcale nieprzydatne w wyniku wprowadzenia innych maszyn cyfrowych. W celu wykorzystania tych programów, zachodzi konieczność przeniesienia oprogramowania E.M.C ODRA-1204 na minikomputer MERA-400. Ze względu na zupełnie inną listę rozkazów, przeprogramowanie programów jest bardzo uciążliwe i pracochłonne, a w pewnych przypadkach, z powodu braku wydruku programu w wersji źródłowej, wręcz niemożliwe. Problem ten można ominąć poprzez opracowanie programu symulującego. Symulator jest to program interpretujący, który umożliwia eksploatację programów napisanych dla jednego typu komputera za pomocą komputera innego typu. Z zasady komputer na którym symuluje się pracę innego typu komputera powinien mieć większe możliwości niż komputer symulowany. Poprzez większe możliwości należy rozumieć większą pamięć i większą szybkość komputera symulującego. Sposób ten jest praktykowany przez wielu producentów maszyn. Zwłaszcza firma IBM dba o to, by każdy nowy model maszyny tej firmy był wyposażony w symulatory maszyn poprzedniej generacji. Ułatwia to przejście użytkownika ze starego typu maszyny na nowy, bez potrzeby przeprogramowywania eksploatowanych programów. Całkowita symulacja maszyny ODRA-1204 na minikomputerze MERA-400 umożliwi pełną kompatybilność tych dwóch maszyn, a więc umożliwi lepsze ich wykorzystanie.
Ogólna struktura maszyny ODRA-1204
Maszyna cyfrowa ODRA-1204 jest maszyną przeznaczoną zarówno do obliczeń naukowych, technicznych, przetwarzania danych jak i do sterowania w czasie rzeczywistym. Struktura tej maszyny jest mikrooperacyjna, dzięki czemu centralna jednostka jest mała i prosta, pomimo bogatej i rozbudowanej funkcji wewnętrznej. Zasada mikrooperacyjnej struktury jest następująca: w maszynie obowiązują dwie listy rozkazów. Lista rozkazów użytkowych oraz lista mikrorozkazów. Pierwsza lista, zawierająca operacje o złożonej treści, nie posiada realizacji układowej, zaś druga, zawierająca kilkanaście operacji elementarnych, posiada realizację układową. Wykonanie treści rozkazów użytkowych odbywa się przez realizację odpowiedniego ciągu operacji elementarnych. Ciągi te są zapamiętywane w szybko dostępnej pamięci stałej. Rozbudowa lub zmiana funkcji maszyny jest prosta i sprowadza się do zapamiętywania nowych ciągów operacji elementarnych. Dobór listy mikrorozkazów został tak dobrany, aby rozkazy użytkowe były wykonywane z maksymalną szybkością. W centralnej jednostce przetwarzania wyróżnia się dwa 24 bitowe rejestry akumulatora A i wydłużenie W, oraz 16 bitowy rejestr licznika rozkazów L. W rejestrach tych pamięta się jeden z argumentów operacji, zaś po operacji jej wynik. Pamięć operacyjna ferrytowa dzieli się organizacyjnie na 256 bloków, każdy po 256 słów (w większości modeli EMC ODRA-1204 pamięć posiada 64 bloki po 256 słów. Istnieje jednak możliwość dołączenia dodatkowego bloku pamięci aż do uzyskania pamięci 65K słów). Poszczególnym programom przydziela się pewną ilość kolejnych bloków ponumerowanych zawsze względnie od 0, 1, 2, ... Jest to wewnętrzna względność bloków, co oznacza, że programy funkcjonują poprawnie także po dowolnym ich przesunięciu w pamięci operacyjnej. Maszyna posiada bogatą listę rozkazów. Rozkazy umożliwiają wykonanie zadań arytmetycznych oraz logicznych na zawartości akumulatora, wydłużenia, rejestrach oraz komórkach pamięci. Lista rozkazów zawiera również rozkazy służące do organizacji systemów i współpracy jednostki centralnej z urządzeniami zewnętrznymi. Rozkaz maszyny mieści się w jednej 24-bitowej komórce pamięci. Ma maszynie ODRA-1204 dostępne są cztery podstawowe systemy operacyjne:
- System SOW - umożliwia on pracę maszyny w małym zestawie (monitor, czytnik, perforator) oraz umożliwia pracę programów napisanych w językach JAS, MOST-2, ODRA-ALGOL.
- System BOSS - umożliwia pracę maszyny w dużym zestawie (pamięć bębnowa, monitor, czytnik, perforator, drukarka). Jest on rozbudowanym systemem SOW i akceptuje programy napisane w systemie SOW.
- System MASON - umożliwia pracę maszyny w małym zestawie i umożliwia pracę programów napisanych w języku ALGOL-1204.
- System MASON D - umożliwia pracę maszyny w dużym zestawie i jest rozbudowanym systemem MASON.
Założenia symulatora EMC ODRA-1204
Symulator EMC ODRA-1204 składa się z kilku segmentów symulujących pracę poszczególnych części maszyny. Należy symulować:
- pracę jednostki centralnej - symulacja wszystkich rozkazów, pamięć, rejestry A (akumulator), W (wydłużenie), LR (licznik rozkazów).
- rejestry warunków - U (ujemny), Z (zegary), Nd (nadmiaru).
Dla pełnej symulacji należy również symulować pracę systemu operacyjnego. Na maszynie dostępne są cztery systemy operacyjne. Analiza dostępnych systemów operacyjnych ODRY wykazała, że najbardziej celowa jest symulacja systemu MASON. Analiza programu systemu operacyjnego MASON była możliwa po wydrukowaniu jego treści. W analizie wzięto pod uwagę działanie ekstrakodów oraz współpracę operator-maszyna. Po wykonaniu analizy oryginalnego systemu MASON, wykonano program symulujący ten system na minikomputerze MERA-400. Symulator systemu MASON posiada prawie wszystkie własności tego systemu. Zmianie uległy wszystkie części systemu obsługujące urządzenia zewnętrzne. Obsługę urządzeń zewnętrznych oparto na systemie operacyjnym CROOK-4 dla minikomputera MERA-400. [13]. Możliwe jest również użycie dekoderów we/wy służących do wprowadzania i wyprowadzania informacji w dowolnym kodzie (np. ISO-7, OPTIMA, M-2).
Symulacja pamięci ODRY
Symulacja pamięci ODRY-1204 została dokonana w następujący sposób. Słowo ODRY zostało podzielone na dwie części: 10 i 14 bitowe i umieszczone w dwóch słowach MERY-400. Pierwsze 14 bitów umieszczono w pierwszym słowie Mery w bitach 0 do 9. Pozostałe 14 bitów umieszczono w drugim słowie Mery w bitach 0 do 13. W słowie ODRY może być przechowywany rozkaz, liczba, tekst oraz informacje binarne. W symulowanym słowie podział bitów na takie części jest uzasadniony wieloma względami. Podział na części 10 i 14 bitów został dokonany ze względu na budowę rozkazu ODRY i wygodę symulacji rozkazu. Położenie tych części w słowach Mery jest uzasadnione łatwiejszym wykonywaniem działań arytmetycznych w symulatorze.
Symulacja rejestrów
Podstawowymi rejestrami EMC ODRA-1204 są:
- akumulator (A)
- wydłużenie akumulatora (W)
- licznik rozkazów (LR)
- rejestry warunków (U, Z,Nd)
- rejestry modyfikacji (B1, B2, B3)
Akumulator oraz wydłużenie są podstawowymi rejestrami i służą do wykonywania działań arytmetycznych oraz logicznych. W celu symulacji tych rejestrów zarezerwowano cztery komórki pamięci Mery.
Rejestry modyfikacji służą do modyfikacji rozkazów i podobnie jak w ODRZE zajmują trzy pierwsze komórki pamięci symulatora. Licznik rozkazów został zastąpiony rejestrem R7 w Merze. Po wykonaniu rozkazów arytmetycznych ustawiane są w EMC ODRA rejestry warunków (U - wynik operacji ujemny, Z - wynik operacji zerowy, Nd - nadmiar). Rolę tych rejestrów w Merze spełniają odpowiednie bity w rejestrze R0. Bity te przyjmują wartość 1 jeżeli odpowiednie warunki są spełnione. Poza tym bit X rejestru służy jako wskaźnik premodyfikacji.
Symulacja jednostki centralnej
Symulator jednostki centralnej umożliwia realizację wszystkich rozkazów ODRY-1204. Jest to podstawowa część programu symulującego. Praca symulatora jednostki centralnej rozpoczyna się od pobrania rozkazu z pamięci wg. adresu umieszczonego w rejestrze R7. Następnie wycinane są podstawowe części rozkazu takie jak kod operacji, część adresowa oraz modyfikacje. Jeżeli część modyfikacyjna jest różna od zera, wówczas wykonywane są wszystkie zaznaczone modyfikacje. Następnie dokonuje się skok wg. numeru kodu operacji do odpowiedniego podprogramu realizującego treść rozkazu. Realizacja rozkazu polega na wykonaniu odpowiednich operacji na rejestrach akumulatora, wydłużeniach licznika rozkazów, modyfikacji oraz komórkach pamięci. Po wykonaniu podprogramu symulującego pracę rozkazu następuje powrót i analiza następnego rozkazu.
Symulacja systemu operacyjnego
Symulator systemu operacyjnego (przyjęto jako symulację system MASON) składa się z grupy programów symulujących realizację ekstrakodów systemowych, część druga dotyczy komunikacji pomiędzy operatorem i maszyną. Operator steruje maszyną przy pomocy odpowiednich zleceń, natomiast maszyna drukuje odpowiednie komunikaty dla operatora. Obsługę fizyczną przerwań i urządzeń peryferyjnych pominięto przy symulacji. Do tego celu użyto systemu CROOK-4. System MASON rozszerzono o nowe zlecenia operatorskie. Zlecenia te nie występowały w oryginalnej wersji systemu MASON. Są to zlecenia które mają usprawnić pracę symulatora w systemie operacyjnym CROOK-4.
Instrukcja eksploatacyjna symulatora
Symulator EMC ODRA-1204 posiada wszystkie zlecenia standardowe symulowanego systemu MASON. Najważniejsze czynności wykonywane przez system są następujące:
- konwersacja z operatorem, tzn. czytanie i wykonywanie zleceń pisanych przez operatora na monitorze i sygnalizacja na monitorze istotnych dla operatora zdarzeń zachodzących w programie roboczym i urządzeniach,
- organizacja wymiany informacji między programem i urządzeniami, oraz jednoczesna praca tych urządzeń,
- manipulacje (na zlecenie operatora) na rejestrach maszyny, w szczególności wprowadzenie i wyprowadzenie zapisów binarnych oraz programów w różnych kodach (OPTIMA, ISO-7, M-2)
System MASON umożliwia pracę z kilkoma urządzeniami we/wy.
Standardowo przyjęto w zleceniach wejście jako czytnik taśmy papierowej, a wyjście jako perforator, oraz do czytania zleceń i wyprowadzania komunikatów monitor użytkownika. Niestandardowo niektóre zlecenia mogą zawierać TZ (tytuł zbioru), co umożliwia komunikację systemu MASON z dyskiem. (np. zlecenia DUMP, LOAD itd.)
System MASON posiada zestaw ekstrakodów wykorzystywanych przez translator języka ALGOL-1204 i programy użytkowe napisane w tym języku. Istnieje również możliwość pisania i tworzenia zbiorów algolowskich (źródłowych) w systemie CROOK-4 i wykorzystanie ich w systemie MASON.
Stany maszyny
System operacyjny MASON przewiduje kilka stanów maszyny wymienionych niżej:
- STOP - czekaj na pracę;
- RUNNING - praca translatora lub programu;
- LOADING - wprowadzenie programu z taśmy binarnej lub ze zbioru dyskowego do pamięci operacyjnej;
- DUMPING - wyprowadzenie zawartości zarezerwowanej pamięci operacyjnej na taśmę papierową lub do zbioru dyskowego;
- TESTING - porównywanie taśmy binarnej lub zawartości zbioru dyskowego z zawartością pamięci operacyjnej;
Zlecenia systemu MASON
Podany niżej wykaz zawiera wszystkie zlecenia standardowe i niestandardowe systemu MASON. W celu skrócenia opisów zleceń będą stosowane następujące oznaczenia:
- a - zawartość akumulatora
- w - zawartość wydłużenia
- l - wartość licznika rozkazów
- kl - zawartość klawiatury
- A - co najwyżej 5-cyfrowy adres ósemkowy nie większy od 37737
- K(A)-zawartość komórki o adresie A
- P - co najwyżej 8-cyfrowy ciąg cyfr ósemkowych oznaczających 24-bitowe słowo maszynowe
- M - cyfra ósemkowa oznaczająca część P i B słowa maszynowego
- t - stan zegara systemu w sekundach
- R - co najwyżej 3 cyfrowa liczba ósemkowa nie większa od 177, oznaczająca część OR słowa maszynowego
- N - co najwyżej 5 cyfrowa liczba ósemkowa nie większa od 37777, oznaczająca część AR słowa maszynowego
- U - co najwyżej 2 cyfrowa liczba ósemkowa nie większa od 17, oznaczająca numer fizyczny urządzenia we/wy
- TZ - tytuł zbioru wg. opisu systemu CROOK-4
W wykazie stosowany jest następujący układ informacji:
<postać zlecenia> - <krótki opis słowny zlecenia>
- Stany maszyny, w których zlecenie jest wykonalne.
- Interpretacja zlecenia - opis.
- Sygnały drukowane po zakończeniu wykonania zlecenia i ich interpretacja.
System jest gotowy do przyjęcia zlecenia po zgłoszeniu się od nowej linii znakiem "@". Do pisania tekstu zlecenia można używać liter, cyfr i odstępów (spacji), a na zakończenie zlecenia należy napisać znak "CR". Pozostałe znaki są traktowane jako błędne, a napisanie któregokolwiek z nich powoduje skasowanie całego napisanego dotąd tekstu zlecenia i wydrukowanie sygnału złożonego ze znaku zapytania "?" i zmiany wiersza wraz ze znakiem zgłoszenia "@" o gotowości do przyjęcia nowego zlecenia. Pojedyncze odstępy służą do oddzielania kolejnych części zlecenia. Wszystkie odstępy napisane na początku linii (zlecenia) są pomijane. Zlecenie puste, tzn. złożone tylko z symbolu końca (różnego od spacji) oznaczają rezygnację operatora ze zgłoszonego zamiaru pisania zlecenia. Zlecenie niepuste składa się z nagłówka i wykazu parametrów. Wykaz parametrów może być pusty. Nagłówek zlecenia jest co najwyżej czteroznakowym ciągiem liter lub cyfr zaczynających się od litery. Niepusty wykaz parametrów oddziela się od nagłówka pojedynczym odstępem. Tak samo oddziela się pojedyncze kolejne parametry. Parametry mogą być liczbami ósemkowymi lub dziesiętnymi oraz literami. Zlecenia dzielą się na zlecenia:
- standardowe systemu MASON
- niestandardowe systemu MASON
Zlecenia standardowe są rozpoznawane przez system operacyjny, natomiast niestandardowe przez translatory i programy użytkowe. Wszystkie zlecenia należy pisać wg. zasad podanych powyżej.
Wykaz zleceń standardowych:
LOAD - wprowadzenie taśmy binarnej z czytnika taśmy papierowej lub ze zbioru dyskowego jeżeli podany zostanie parametr zlecenia.
- STOP
- Przejście do stanu LOADING, a następnie:
a := K(16)
w := K(17)
l := K(20) - LOADED: zlecenie wykonano.
LOAD ERROR: błąd w czasie realizacji zlecenia
DUMP - wyprowadzenie zarezerwowanej pamięci operacyjnej na taśmę papierową. Jeżeli wystąpi parametr zlecenia to nastąpi wyprowadzenie pamięci do zbioru dyskowego.
- STOP
- K(16) := a
K(17) := w
K(20) := l
a następnie przejście do stanu DUMPING. - DUMPED: zlecenie wykonano.
DUMP ERROR: błąd w wykonaniu zlecenia.
GO - uruchomienie zatrzymanego programu od miejsca zatrzymania.
- STOP
- Przejście do stanu RUNNING.
- STOP: wykonano instrukcję STOP.
GO TO A - uruchomienie programu od wskazanego rozkazu.
- STOP.
- L := A
przejście do stanu RUNNING. - Patrz GO.
STOP - zatrzymanie pracy maszyny.
- Wykonanie w dowolnym stanie różnym od STOP.
- Przejście do stanu STOP.
- STOP: wykonano w stanie RUNNING.
LOAD ERROR: wykonano w stanie LOADING.
DUMP ERROR: wykonano w stanie DUMPING.
TEST ERROR: wykonano w stanie TESTING.
D A - drukowanie zawartości komórki.
- STOP, RUNNING.
- Drukowanie K(A) w postaci ósemkowej.
DA - drukowanie zawartości akumulatora.
- STOP, RUNNING.
- Drukowanie akumulatora w postaci ósemkowej.
DW - drukowanie zawartości wydłużenia akumulatora.
- STOP, RUNNING.
- Drukowanie wydłużenia w postaci ósemkowej.
DL - drukowanie zawartości licznika rozkazów.
- STOP, RUNNING.
- Drukowanie licznika rozkazów w postaci ósemkowej.
P A P - podstawienie do komórki.
- STOP, RUNNING.
- K(A) := (MX128 + R)* 16384 + N.
PA P - podstawienie do akumulatora.
- STOP<//tt>, RUNNING.
- A := P.
PW P - podstawienie do wydłużenia akumulatora.
- STOP, RUNNING<//tt>.
- W := P.
PL P - podstawienie do licznika rozkazów.
- STOP, RUNNING.
- L := P.
DK - drukuj zawartość kluczy (zlecenie dodatkowe nie będące zleceniem standardowym systemu MASON).
- Wykonalne w dowolnym stanie.
- Drukowanie kluczy w postaci ósemkowej.
PK P - zmień zawartość kluczy.
Sygnały i komunikaty systemu MASON
- WRONG EXTRACODE - błędny lub nielegalny ekstrakod.
- WRONG INSTRUCTION - błędny lub "nielegalny" rozkaz w programie. Przejście ze stanu RUNNING do stanu STOP.
- STOP - wykonano instrukcję STOP.
- ?? - odmowa przyjęcia zlecenia. Błędne zlecenie, błędne parametry zlecenia, zlecenie podane w złym stanie maszyny.
- LOADED - wczytano poprawnie tasiemkę binarną lub zawartość zbioru do pamięci zleceniem "LOAD". Przejście ze stanu LOADING do stanu STOP. Program jest gotowy do uruchomienia.
- LOAD ERROR - w trakcie czytania programu zleceniem "LOAD" wystąpił błąd.
- DUMPED - wyperforowano poprawnie tasiemkę binarną lub załadowano poprawnie zawartość pamięci do zbioru dyskowego.
- DUMP ERROR - wystąpił błąd w czasie zapisu zawartości pamięci na taśmę papierową lub do zbioru dyskowego.
- SOURCE FILE IS NOT ENDED - błędne zakończenie zbioru źródłowego (brak na końcu programu znaku "?" i 10 spacji).
Instrukcja eksploatacyjna programów użytkowych
Informacje ogólne
Programy użytkowe pracujące pod kontrolą symulatora są wykonywane podobnie jak w ODRZE-1204. W szczególności stosuje się te same zasady dotyczące wprowadzania ich do pamięci, uruchamiania ich i obsługi operatorskiej, oraz stosowanie kluczy. Program w pamięci składa się z dwóch bloków . Informacji o tych blokach dostarczają komórki 21 i 22. Zawartości tych komórek decydują o sposobie wykonania zlecenia "DUMP". Program użytkowy może korzystać z następujących numerów logicznych urządzeń peryferyjnych:
- urządzenia wejścia
- 0 - monitor
- 1 - czytnik taśmy (lub inne urządzenie wejścia, którego numer fizyczny zadeklaruje operator)
- urządzenia wyjścia
- 0 - monitor
- 1 - perforator taśmy (lub inne urządzenie wejścia, którego numer fizyczny zadeklaruje operator)
Numery logiczne aktualnie wykorzystywanych urządzeń zawarte są w komórkach 31 i 32. Ponieważ istnieje możliwość drukowania i zmiany zawartości komórek, więc celowe jest podanie najważniejszych informacji o początkowym obszarze pamięci. Opis komórek będzie wykonany wg. następujących punktów:
- Zawartość
- Przykład manipulacji operatora
- Równoważna operacja programu w ALGOLu-1204.
KOMÓRKA 21.
- Zakres pierwszego bloku programu zawierającego komórki o adresach: 1, 2, 3, ..., k(21).
- D 21.
- Można zmienić stosując rozkazy w kodzie wewnętrznym.
KOMÓRKA 22.
- Adres początku drugiego bloku programu zawierającego komórki o adresach: K(22), K(22)+1, ..., 34737.
- D 22.
- Można zmienić stosując rozkazy w kodzie wewnętrznym.
KOMÓRKA 23.
- Wartość zmiennej standardowej time (w sekundach).
- P 23 0. PT 14 25 36.
- Time := 0 ; lub zerk (time).
KOMÓRKA 31.
- Numer wejścia aktualnego.
- P 31 1.
- Setinput /10.
KOMÓRKA 32.
- Numer wyjścia aktualnego.
- P 32 1.
- Setotput /1.
KOMÓRKA 33.
- Wartość zmiennej lastchar tzn. ostatnio wczytany znak.
- D 33.
- Print (lastchar).
KOMÓRKA 34.
- Wartość zmiennej lastinteger tzn. ostatnio wczytana liczba typu integer.
- D 34.
- Print (lastinteger).
KOMÓRKI 35 i 36.
- Wartość zmiennej lastreal tzn. ostatnia liczba typu real.
- D 35 ; D 36.
- Print (lastreal).
KOMÓRKA 41.
- Długość bufora czytnika.
- P 41 1.
- Można zmienić stosując rozkazy w kodzie wewnętrznym.
Wprowadzenie i uruchamianie programów użytkowych
Pod kontrolą systemu MASON mogą pracować programy użytkowe wydziurkowane na taśmie papierowej wyprodukowane przez translator ALGOL 1204 (B) na zlecenie "PBT", lub przez system operacyjny na zlecenie "DUMP". Programy binarne wyprodukowane przez translator wymagają wprowadzenia podprogramów pomocniczych (PP). Podprogramy pomocnicze muszą być tego samego wydania co translator ALGOL-u użyty do tłumaczenia tego programu. A więc program wyprodukowany przez translator ALGOL-u (B) wyd. II należy uruchamiać następująco:
- wczytać podprogramy pomocnicze zleceniem LOAD (odpowiedź maszyny LOADED)
- wczytać program użytkowy zleceniem LOAD (odpowiedź maszyny LOADED)
- uruchomić program zleceniami W, W0, W1.
Po poprawnym wykonaniu tych zleceń program rozpoczyna pracę, a dalsze postępowanie wynika z instrukcji eksploatacyjnej danego programu użytkowego. Zakończenie pracy programu sygnalizowane jest sygnałem END lub sygnałem błędu. Sygnał STOP oznacza chwilowe zatrzymanie pracy programu, którą można wznowić zleceniem "GO". W każdej chwili w razie konieczności można zatrzymać program zleceniem "STOP" lub naciśnięcie klawisz OPRQ - przerwanie programu. Wznowienie pracy programu nastąpi po zleceniu "GO". Wczytanie następnego programu użytkowego nie wymaga wprowadzenia ponownie programów pomocniczych. Wystarczy wczytać nowy program i uruchomić go odpowiednim zleceniem. Również możliwe jest wykonywanie wielokrotnie programu użytkowego bez potrzeby wczytywania go ponownie do pamięci. W wyjątkowych przypadkach, jeżeli program działał niepoprawnie i zatrzymał się z wydrukiem komunikatu błędu, będzie konieczne ponowne wprowadzenie podprogramów pomocniczych i programu użytkowego. Programy użytkowe translowane translatorem ALGOL-u 1204 (A) znajdują się gotowe do pracy w pamięci maszyny. Uruchomienie tych programów następuje po zleceniach W, W0, W1.
Zlecenia niestandardowe programów użytkowych
Zlecenia niestandardowe służą do uruchamiania programu użytkowego. Wszystkie zlecenia niestandardowe są wykonalne w stanie STOP. Zlecenie niestandardowe nie posiadają parametrów. Nazwa tych zleceń składa się z liter i cyfr o maksymalnej długości czterech znaków rozpoczynających się literą. Pozostałe zasady dotyczące tych zleceń są identyczne z zleceniami standardowymi systemu MASON opisanymi w rozdziale 3.3. Poniżej są zestawione wszystkie zlecenia niestandardowe używane przez programy użytkowe.
W
- Wykonanie instrukcji: Setinput(1); Setoutput(1), uruchomienie programu od początku.
END
- Program wykonano do końca - do ostatniego end. Inne sygnały podano w wykazach sygnałów systemu MASON oraz translatora ALGOL 1204.
W0
- Wykonanie instrukcji setinput(0); setoutput(0) i uruchomienie programu od początku.
W1
- Wykonanie instrukcji setinput(1); setoutput(0) i uruchomienie programu od początku.
DITR
- Drukowanie śladu retroaktywnego.
END
- Ślad wydrukowano.
SORRY
- W programie nie ma możliwości drukowania śladu.
TMON
- Przejście do wykonania programu:
begin setinput(1); setoutput(0); L: outchar(inchar); goto L end
- bez niszczenia zapisu programu lub translatora w pamięci operacyjnej. Zlecenie umożliwia drukowanie krótkich tasiemek w kodzie OPTIMA lub ISO-7 na monitorze. Jeżeli w czasie wykonywania tego zlecenia jest wciśnięty klawisz 0, to wyjściem aktualnym jest perforator. Umożliwia to kopiowanie tasiemek, ewentualnie z tłumaczeniem z jednego kodu na drugi. STOP - operator przerwał działanie programu.
MONT
- Przejście do wykonania programu:
begin setinput(0); setoutput(1); L: outchar(inchar); goto L end
- bez niszczenia zapisu programu lub translatora w pamięci operacyjnej. Zlecenie umożliwia perforacje krótkich tasiemek w kodzie OPTIMA lub ISO-7 na perforatorze. STOP - operator przerwał działanie powyższego programu.
Literatura
- "Opis funkcjonalny EMC ODRA-1204", ELWRO, Wrocław 1968, Nr. 1204-I-1.
- "ALGOL-1204", Krystyna Jerzykiewicz, Jerzy Szczepkowicz, ELWRO, Wrocław 1970, Nr. 1204-VIII-2.
- "Opis struktury logicznej jednostki centralnej E.M.C. ODRA-1204", ELWRO, Wrocław 1968, Nr. 1204-I-3.
- "Systemy obsługi MASON i MASON D dla ODRY-1204", Jerzy Szczepkowicz, ELWRO, Wrocław 1971.
- "ODRA-ALGOL. PROCEDURY.", "ELWRO", Wrocław 1970, Numery publikacji: 1204-VIII-10 cz.1., 1204-VIII-11 cz.2., 1204-VIII-12 cz.3., 1204-VIII-13 cz.4.
- "Symulator EMC ODRA-1204 i systemu MASON na minikomputer K-202 (Założenia, Projekt techniczny, Oprogramowanie)", Ryszard Zenker, PPiRIPM "BIPROMASZ", Poznań 1973.
- "ALGOL-1204", Krystyna Jerzykiewicz, Jerzy Szczepkowicz, PWN, Warszawa 1973.
- "Język ALGOL 60", Stefan Paszkowski, PWN, Warszawa 1973.
- "Pakiet programów organizacyjnych", ELWRO, Wrocław 1969 Nr. 1204-VI-6, 7,8.
- "Pakiet testów", ELWRO, Wrocław 1968 Nr. 1204-III-2, 3,4.
- "Pakiet testów tom 2", ELWRO, Wrocław 1970 Nr. 1204-III-20, 31, 32.
- "Pakiet podprogramów pomocniczych", ELWRO, Wrocław 1968 Nr. 1204-V-3.
- "System operacyjny CROOK-4 dla minikomputera Mera-400", Andrzej Bobcow, Zbigniew Czerniak, Marek Nikodemski, IOPG, Gdańsk 1985.
Źródło: Symulator EMC ODRA-1204 dla minikomputera MERA-400 w systemie operacyjnym CROOK-4 (wersja-1/A), Janusz Gocałek, Jacek Klauziński, Ryszard Zenker, Poznań 1985