MOTIS
MOTIS – język asemblerowy przeznaczony dla minikomputerów serii MERA 300.
Instrukcje podstawowe
Podstawowe instrukcje tego języka stanowią kody mnemoniczne języka wewnętrznego maszyn serii MERA 300. Polecenia te obejmują 34 instrukcje:
- rozkazy arytmetyczne,
- rozkazy logiczne,
- rozkazy sterujące,
- rozkazy we-wy.
Adresowanie pamięci
Adres składa się z dwóch części: adresu strony (8 bitów) i adresu słowa (5 bitów), trzy bity pozostają niewykorzystane. W systemie MERA 306 adres podzielony jest na trzy części: pamięć dodatkowo podzielona jest na tomy.
- Adresowanie bezwzględne: liczba oktalna z zakresu 0-17777.
- Adresowanie względne: przesunięcie względem licznika rozkazów Q (np. skok: SK Q+7).
Do adresowania stosuje się operatory specjalne:
- brak operatora
- S
- L
- M
umożliwiające różną interpretację i modyfikację adresowania.
Rozkazy ekstrakodowe
Są to rozkazy realizowane programowo rozszerzająca listę rozkazów systemu MERA 300. Zostały one wprowadzone w celu ułatwienia pisania programów czasu rzeczywistego.
Użycie rozkazu ekstrakodowego w asemblerze MOTIS wymaga użycia znaku "*" po skrócie mnemonicznym rozkazu, a przed jego argumentem.
Rozkazy ekstrakodowe pozwalają także na użycie stosu systemowego; nie ma takiej możliwości bez ich stosowania, chyba że programista zaprogramuje swój stos.
Stałe i teksty
- Liczby zapisuje się do pamięci poprzedzając zapis liczby symbolem XX liczba.
- Znaki alfanumeryczne wprowadza się poprzedzając symbolem cudzysłowu "znak.
- Znaki alfanumeryczne specjalne wprowadza się jako kod w postaci liczby oktalnej XX kod znaku jako liczba oktalna.
System stosuje dla kodowania znaków zestaw ISO-7.
Symbole definiowane
W języku MOTIS można definiować symbole, które zastępują adresy, znaki lub liczby. Repertuar dostępnych symboli (według współczesnej nomenklatury – identyfikatorów), ograniczony jest do symboli Q1-Q77, którym można nadawać nie tylko dowolną wartość ale też symbole te, nie mając określonego typu, mogą być interpretowane jako liczby, znaki, adresy (zmienne), adresy (etykiety instrukcji).
Symbol Q identyfikuje licznik adresów (rozkazów). Etkiety Q60-Q77 są wykorzystywane do adresowania podprogramów standardowych.
Makrorozkazy
Makrorozkazy języka MOTIS to rozszerzenie w stosunku do języka wewnętrznego maszyn serii MERA 300. Translator tłumaczy każdy makrorozkaz na ciągi rozkazów maszynowych.
Makrorozkazy asemblera MOTIS są ograniczone do standardowej listy i nie ma możliwości definiowania własnych makrorozkazów.
Podprogramy standardowe
MOTIS posługuje się liczbami oktalnymi i jednostkami pamięci – słowami (8 bitów – według współczesnej nomenklatury: 1 bajt). Aby ułatwić programowanie została stworzona biblioteka podprogramów standardowych – wbudowanych (adresowanych symbolami Q60-Q77), działających na liczbach poczwórnej precyzji (4 x słowo = 4 bajty), przy czym są to nadal wyłącznie liczby całkowite. Podprogramy standardowe obejmują instrukcje:
- wejścia-wyjścia z konwersją liczb binarnych na dziesiętne (i odwrotnie),
- instrukcje tzw. arytmometru programowego:
MOTIS jako loader i system
Asembler MOTIS jest translatorem, który wpisuje kod wynikowy od razu do pamięci, a więc może pełnić funkcje loadera. Operator systemu miał do dyspozycji zestaw odpowiednich poleceń (oznaczonych literami, np. A, B, G, U itd.), za pomocą których steruje pracą systemu asemblera, jako programu lub systemu operacyjnego.