CROOK-5 - Opis użytkowy translatora CEMMA

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania

Charakterystyka translatora

CEMMA M4 jest specjalizowanym, problemowo zorientowanym językiem symulacyjnym, opracowanym dla potrzeb cyfrowego modelowania układów analogowych. Przy pomocy języka CEMMA można modelować procesy opisywane równaniami lub układami równań różniczkowych zwyczajnych, liniowych lub nieliniowych, z dowolnym typem wymuszeń zdeterminowanych lub z wymuszeniami stochastycznymi o określonych rozkładach prawdopodobieństwa. Inną formą opisu procesu, stosowaną w języku CEMMA, może być schemat strukturalny układu, wskazujący poszczególne elementy obiektu modelowanego z podaniem parametrów i warunków początkowych, typów wymuszeń oraz punktów oddziaływania wymuszeń na obiekt. Program napisany w języku CEMMA składa się ze zdań. Każde zdanie jest sformalizowanym opisem odpowiadającego mu elementu schematu strukturalnego. Wykaz dostępnych opisów elementów można znależć w [1]. Translator języka CEMMA umożliwia korzystanie z jednej z sześciu standardowych metod całkowania oraz z procedury optymalizacyjnej. Możliwa jest optymalizacja maksymalnie sześciu paramatrów obiektu.

Praca translatora

Można wyróżnić trzy zasadnicze etapy pracy translatora CEMMA. Pierwszym z nich, rozwiązanym w sposób konwersacyjny, jest ustalenie konfiguracji sprzętu i pamięci operacyjnej potrzebnej dla pracy programu. Dokonuje się tego poprzez wprowadzanie z konsoli odpowiednich zleceń operatorskich. Zlecenie ma postać nazwy dwuznakowej zakończonej separatorem lub ciągu: <nazwa><separator><parametr><separator>. Separatorem może być odstęp lub przecinek. W jednym wierszu można wprowadzić kilka zleceń operatorskich. Wiersz kończy się znakiem CR w miejsce ostatniego separatora. Wykaz zleceń operatorskich zamieszczony został w rozdziale następnym. Drugim etapem pracy translatora jest translacja programu. W jego pierwszej fazie zostają wczytane i sprawdzone pod względem formalnym a następnie zakodowane i umieszczone w pamięci kolejne zdania programu. W przypadku wystąpienia błędu formalnego, na końcu wiersza na monitorze pojawia się napis podający numer błędu wg specyfikacji błędów wykrywanych przez translator. Jeżeli w pierwszej fazie translacji nie wykryto błędów formalnych, rozpoczyna się druga faza translacji, polegająca na sprawdzeniu poprawności logicznej programu i ustaleniu kolejności obliczeń. Wykrycie błedu w tej fazie translacji sygnalizowane jest pojawieniem się napisu informującego o numerze błędu (według specyfikacji) oraz numerze elementu z którym związany jest błąd. W przypadku bezbłędnego zakończenia translacji, translator przechodzi do trzeciego etapu pracy, jakim jest realizacja modelu opisanego programem. Wyniki obliczeń mogą być wyprowadzane w postaci tabel (dyrektywa DRUKUJ), rysunków wykonywanych na drukarce (dyrektywa RYSUJ) bądż też w postaci zbiorów o dostępie swobodnym (dyrektywa ODYS).Zbiory o dostępie swobodnym tworzone przez translator CEMMA mają typ CEM. Po zakończeniu tego etapu pracy (patrz wykaz przyczyn zakończenia pracy) translator ponownie przechodzi do nasłuchu zleceń operatorskich (etap I).

Wykaz zleceń operatorskich

Zlecenia bez parametrów

BL

Zlecenie powoduje wyprowadzanie na urządzenie wyjściowe translacji jedynie tych wierszy, w których wystąpiły błędy formalne w trakcie translacji programu.

LI

Zlecenie wyprowadzania w skróconej formie programu, który był uprzednio uruchomiony.

OP

Zlecenie wydruku informacji o aktualnym stanie procedury optymalizacyjnej po każdym przebiegu optymalizacji.

OS

Zlecenie zakończenia pracy i przekazania sterowania programowi konwersacji z systemem operacyjnym.

SP

Zlecenie zamknięcia wszystkich zbiorów używanych przez program oraz zakończenia pracy (jak przy OS).

ZL

Zlecenie drukowania pełnego tekstu programu podczas translacji.

Zlecenia z parametrami

DR,<TZ>

Deklaracja urządzenia wyjściowego dla dyrektywy DRUKUJ.

DW,<liczba znaków>

Ustalenie długości wiersza dla urządzenia zadeklarowanego dyrektywą LP.

GO,<TZ>

Zlecenie przejścia do etapu translacji nowego programu wprowadzanego z zadeklarowanego w zleceniu urządzenia wejściowego (<TZ>).

GO

Zlecenie przejścia do etapu translacji nowego programu wprowadzanego z monitora.

LP,<TZ>

Deklaracja urządzenia wyjściowego dla dyrektywy RYSUJ.

MP,<liczba K-słów>

Deklaracja wielkości obszaru pamięci wymaganej dla pracy programu.

SN,<TZ>

Zlecenie przejścia do etapu translacji następnej sekcji programu wprowadzanej z zadeklarowanego w zleceniu urządzenia wejściowego(<TZ>).

SN

Zlecenie przejścia do etapu translacji następnej sekcji programu wprowadzanej z monitora.

TI,<TZ>

Deklaracja urządzenia wejściowego translacji.

TO,<TZ>

Deklaracja urządzenia wyjściowego, na które ma być wyprowadzany wydruk treści programu podczas translacji.

UWAGA: Parametr <TZ> może być tytułem zbioru lub nazwą urządzenia. CEMMA posiada zdefiniowany dodatkowo monitor jako urządzenie o nazwie MON.

Uzupełnienia w stosunku do "CEMMA M-3"

Dyrektywa SUB

Składnia

<dyrektywa SUB> ::= SUB <nazwa podprogramu> <zakres numerów formalnych> <zakres parametrów formalnych> [<liczba wyjść>] ; <komentarz 1>
<zakres numerów formalnych> ::= N<liczba numerów>
<zakres parametrów formalnych> ::= M<liczba parametrów>

Przykłady

SUB FILTr N1 M2 ;M1=F0 M2=pasmo 3dB
SUB GENX N0 M3 2;Generator kwadraturowy

Znaczenie

Dyrektywa SUB umożliwia wprowadzenie podprogramu binarnego do programu napisanego w języku CEMMA. W tym celu należy uprzednio dokonanać przetłumaczenia podprogramu za pomocą translatora języka symbolicznego (ASSM) oraz umieścić wynikowy program binarny w zbiorze o nazwie odpowiadającej czterem pierwszym znakom nazwy użytej w dyrektywie SUB. Brak deklaracji liczby wyjść oznacza blok jednowyjściowy.

Uwagi na temat podprogramów i ich współpracy z translatorem CEMMA

  1. Przy wejściu do podprogramu rejestr R7 zawiera adres tablicy przechowującej numery i parametry aktualne. Tablica ta jest skonstruowana w następujący sposób:
    • S(R7) - adres Y
    • S(R7+2) - adres wyjściowy z podprogramu
    • S(R7+3) - zanegowana liczba wejść n
    • S(R7+4)...S(R7+n+3) - adresy danych wejściowych X1 do Xn umieszczone w kolejności zgodnej z nagłówkiem zdania ŚUB (razem n adresów)
    • S(R7+n+4)...S(R7+n+m+3) - adresy parametróww aktualnych P1 do Pm umieszczone w kolejności zgodnej z nagłówkiem zdania SUB (razem m adresów)
  2. Zawartość rejestru R7 nie powinna ulegać zmianie podczas pracy procedury.
  3. Przy wyjściu z podprogramu należy:
    • przechować wynik pod adresem podanym w tablicy (Y),a w przypadku bloku wielowyjściowego przechować wszystkie wyniki pod adresem Y1 (podanym w tablicy) oraz pozostałymi adresami (zwiększanymi kolejno o 3);
    • odtworzyć zawartość początkową rejestru R0;
    • załadować do rejestru R7 adres wyjściowy;
    • zwiększyć zawartość rejestru R7 o 1;
    • załadować do rejestru R7 liczbę znajdującą się pod adresem wskazanym przez zawartość rejestru R7;
    • wykonać skok wg zawartości rejestru R7.
    Odpowiada temu sekwencja rozkazów w języku ASSM:
    RF,7'.[ zapamiętanie wyniku ]
    LW,1(SAFE0') [załadowanie do R1 przechowanej zawart. R0]
    LPC,1. [odtworzenie R0]
    LW,7(2&7') [pobranie do R7 adresu tablicy następnego bloku]
    UJ(1&7') [skok do wykonywania następnej procedury]
  4. Procedura musi mieć postać przesuwną, co można uzyskać przez zastosowanie do translacji makrozlecenia o nazwie BASBIN. Parametrami makrozlecenia są: nazwa zbioru zawierającego postać żródłową procedury oraz nazwa procedury (czteroznakowa).

Zdanie strukturalne o operacji SUB

Składnia

<zdanie o operacji SUB> ::= <numer bloku> <nazwa operacji SUB> <lista numerów> <lista parametrów>;<komentarz 1>

Przykłady

10 TRANzystor 5 =2 P1 ;
11 FILTr 3 P2 P5 ;P2 - pasmo, P5 - F0

Znaczenie

Zdanie strukturalne o operacji SUB opisuje element realizujący podprogram dołączony w postaci binarnej do translatora CEMMA za pomocą dyrektywy SUB. W miejsce listy numerów i parametrów formalnych nagłówka procedury opisanego dyrektywą SUB podstawia się listę numerów i parametrów aktualnych, zdefiniowanych w opisie zdania. Liczba numerów występujących w opisie zdania o operacji SUB musi być równa indeksowi "n" występującemu w odpowiedniej dyrektywie SUB, natomiast liczba parametrów powinna być równa indeksowi "m" występującemu w dyrektywie SUB opisującej procedurę binarną. W przypadku procedury wielowyjściowej zajmowane są kolejne numery po numerze bloku. Użycie tych numerów do opisu innych zdań w programie spowoduje zasygnalizowanie błędu formalnego.

Dyrektywa ODYS

Składnia

<dyrektywa ODYS> ::= ODYS [<TZ>] <numer zmiennej> [<początek>]; <komentarz 1>
<początek> ::= <parametr dyrektywy>

Przykłady

ODYS 5 =10 ; zbiór DISCO1
ODYS 3 ;zbiór DISCO2
ODYS SYM/MODEL1 =2 ; zbiór MODEL1 w skorowidzu SYM

Znaczenie

Dyrektywa ODYS umożliwia rejestrację danych w zbiorze dyskowym o dostępie swobodnym. Jako krok rejestracji przyjmuje się parametr DT3 dyrektywy ZEGAR, natomiast jako czas początku rejestracji przyjmuje się parametr <początek> (lub 0 gdy parametr ten nie występuje). W przypadku braku deklaracji nazwy zbioru <TZ>, zbiorom wyjściowym przydzielane są nazwy DISCO<i>, gdzie "i" jest kolejną liczbą, 0<i<8. Utworzony przez CEMMĘ zbiór posiada typ CEM. Parametr PA2=-1, natomiast PA1 zawiera liczbę wartości zapisanych do zbioru.

Zdanie IDYS

Składnia

<zdanie IDYS> ::= <numer bloku> IDYS (<TZ> lub <numer zbioru DISCO>) [<początek>] ; <komentarz 1>
<początek> ::= <parametr>

Przykłady

5 IDYS 3 ; zbiór DISCO3
8 IDYS MODEL/IMPULS ;zbiór IMPULS w skorowidzu MODEL
3 IDYS FORMA =10 ; zbiór FORMA, początek =10

Znaczenie

Zdanie IDYS opisuje element wczytujący dane z zadeklarowanego zbioru o dostępie swobodnym z krokiem DT3 zadeklarowanym w dyrektywie ZEGAR. W przypadku standardowych nazw zbiorów (DISCO<i>) wystarczy podać liczbę "i" występującą w nazwie.

Zdanie GSI

Składnia

<zdanie GSI> ::= <numer bloku> GSI <wzorzec> [<długość impulsu>] ; <komentarz 1>
<wzorzec> ::= <numer>
<długość impulsu> ::= <parametr>

Przykłady

12 GSI 255 =2 ; sekw. 1111111100000000...
 4 GSI 053535 ; sekw. 101010...

Znaczenie

Zdanie GSI opisuje element GSI, który generuje okresowo sekwencję 16 impulsów wg zadanego wzorca. Wzorzec jest liczbą 16-to bitową, której bity (począwszy od najmłodszego) interpretowane są jako amplitudy kolejnych impulsów. Zero na początku liczby powoduje potraktowanie jej jako ósemkowej. Brak parametru <długość impulsu> równoznaczne jest z przyjęciem wartości 1 s.

Literatura

  1. Kapcia J., Rams A.: "CEMMA M-3" Wyd. Politechniki Gdańskiej,1982 r.

Źródło: SYSTEM OPERACYJNY CROOK-5 dla minikomputera MERA-400 (wersja 7), Zbigniew Czerniak, Marek Nikodemski, Gdańsk 1988