CROOK-5 - Środowisko dla programów i zleceń
System CROOK dopuszcza uruchamianie programów przygotowanych przez użytkownika w języku symbolicznym i przetłumaczonych na kod maszynowy translatorem ASSM. Programy te mogą być uruchamiane bądż na poziomie XOSL (jako procesy bezpośrednio potomne procesu INI), bądż też jako programy pracujące pod kontrolą XOSL.
Komunikacja INI z interpretatorami zleceń
Uwagi zawarte w tym punkcie adresowane są do tych użytkowników systemu CROOK-5 którzy mają potrzebę przygotowania własnego interpretatora zleceń. Wprowadzenie innych niż XOSL interpretatorów może stworzyć wrażenie jednoczesnej pracy użytkowników pod kontrolą różnych systemów operacyjnych. Przykładem może być tu symulator systemu operacyjnego SOM-3. INI obok operacji dopuszczania użytkownika do pracy i wypisywania go, odbiera i odpowiednio przesyła przerwania "zgłoszenie operatora" (BREAK) pochodzące od końcówek. Pierwsze przerwanie przychodzące od końcówki nieaktywnej powoduje przeprowadzenie konwersacji mającej na celu rozpoznanie użytkownika, a następnie uruchomienie odpowiedniego programu obsługi i przesłanie mu komunikatu opisującego użytkownika i końcówkę. Wszystkie programy wywoływane w ten sposób traktowane są jako wielowejściowe (mogące obsługiwać wielu użytkowników). Przerwania pochodzące od końcówki aktywnej powodują przesłanie komunikatu do odpowiedniego interpretatora zleceń. Oba komunikaty przesyłane są poprzez strumień OPR. Wyboru interpretatora zleceń dokonuje INI na podstawie czwartego parametru wiersza przedstawienia się użytkownika lub parametru skorowidza użytkownika ustalanego zleceniem OSL.
Znaczenie poszczególnych słów komunikatu opisu użytkownika:
- 0 - Nr porządkowy końcówki.
- 1 - Uprawnienia użytkownika.
- 2, 3 - Nazwa użytkownika.
- 4 - Liczba obszarów dyskowych.
- Opis obszarów dyskowych (w liczbie równej podwojonej zawartości słowa 4).
- Nazwa zlecenia zadeklarowanego zleceniem OSL (drugi parametr tego zlecenia).
Nr porządkowy końcówki jest identyfikatorem użytkownika przy wymianie informacji między programem obsługi a programem INI. Opisy obszarów dyskowych to trójki liczb (słów) opisujące kolejne talerze (obszary).
Poszczególne liczby w trójkach oznaczają:
- systemowy kod użytkownika. Liczba 0 oznacza talerz niedostępny, liczba ujemna talerz roboczy;
- systemowy kod bieżącego skorowidza;
- budżet sektorów dostępnych użytkownikowi do utrwalania zbiorów.
Ostatnim parametrem przekazywanym do interpretatora zleceń jest umieszczona na dwóch słowach nazwa zadeklarowana przez użytkownika. Dla interpretatora zleceń XOSL jest to nazwa zlecenia, które ma zostać wykonane po rozpoznaniu użytkownika. Interpretator zleceń po wczytaniu komunikatu, może specjalnym ekstrakodem poinformować INI o niemożności obsłużenia użytkownika (np. brak tablic, program jednowejściowy). Zostanie wówczas uruchomione nowe wcielenie interpretatora zleceń. W przypadku zaakceptowania użytkownika interpretator zleceń musi przygotować strumienie WE/WY (na podstawie numeru końcówki) oraz wykonać ekstrakod SDIR (na podstawie opisu obszarów dyskowych). O zgłoszeniu pochodzącym od końcówki aktywnej interpretator zleceń informowany jest komunikatem, w którym parametr 2 (ekstrakod LOAP) równy jest 0, a parametr 1 zawiera numer końcówki. Alarmy pochodzące od interpretatorów zleceń powodują wypisanie stosownego komunikatu i zakończenie sesji użytkownika (bez usuwania zbiorów nietrwałych). Kilka z nich, pochodzących od ekstrakodów o numerach większych od 0340,ma specjalną interpretację. We wszystkich tych ekstrakodach rejestr R4 zawierać musi numer porządkowy końcówki.
INI obsługuje następujące estrakody specjalne:
- 0373 - odrzucenie zgłoszenia operatora;
- 0374 - zakończenie sesji bez usuwania zbiorów nietrwałych;
- 0375 - zakończenie sesji bez usuwania zbiorów nietrwałych z kontrolą budżetu;
- 0376 - zakończenie sesji z usuwaniem zbiorów nietrwałych;
- 0377 - zakończenie sesji z usuwaniem zbiorów nietrwałych i z kontrolą budżetu (zlecenie ES programu XOSL).
Współpraca XOSL z programami podległymi
XOSL dostarcza mechanizmów umożliwiających łatwe tworzenie nowych zleceń. Jak wiadomo (patrz I.4.1.2) rezultatem wykonania zlecenia może być przywołanie zbioru z pamięci dyskowej. Zbiór ten może być zbiorem utworzonym przez dowolnego użytkownika. Jego umiejscowienie w hierarchii systemu zbiorów oraz jego kategorie dostępu decydują o możliwości realizacji zlecenia (programu lub makrozlecenia w nim zawartego) przez różne grupy użytkowników.
Znaczenie atrybutów
Decydujący wpływ na sposób wykonywania zlecenia ma atrybut przywołanego zbioru. Program XOSL analizuje trzy bardziej znaczące bity atrybutu zbioru:
- 010 (050) - zbiór zawiera program, któremu parametry będą przekazywane w rejestrach;
- 020 (060) - zbiór zawiera program, któremu przekazany zostanie przetworzony wiersz zlecenia;
- 030 (070) - zbiór zawiera program, któremu przekazany zostanie wiersz zlecenia;
- 040 - zbiór zawiera makrowzorzec (definicję makrozlecenia) w języku OSL. Zawartość zbioru, zostanie przetworzona programem MACRO, a utworzony zbiór dołączony do strumienia INT. Program XOSL nie nakłada ograniczeń na zagnieżdżanie makrozleceń (z wyjątkiem rekurencji).
Liczby w nawiasach określają atrybuty programów nie przygotowanych do sprzętowego rozszerzenia przestrzeni adresów byte'owych do 64 Ksłów.
W zależności od zawartości przywołanego zleceniem zbioru program podejmuje jedno z dwóch poniższych działań:
- zbiór zawiera program binarny zostaje zdefiniowany i uruchomiony nowy proces. Proces ten będzie działać we własnym bloku pamięci operacyjnej i w szczególności może definiować własne procesy potomne;
- zbiór zawiera makrowzorzec (definicję makrozlecenia) XOSL wywoła automatycznie program przetwarzający MACRO i do utworzonego przez ten program zbioru zawierającego rozwinięte makrozlecenie dołączy strumień INT.
XOSL tworzy środowisko dla programów, wczytuje i dekoduje parametry oraz zapewnia obsługę alarmów powstałych w czasie wykonywania zleceń.
Przygotowanie środowiska dla zleceń i programów
Program XOSL definiuje dwa strumienie. Mogą być one traktowane przez programy jako strumienie globalne. Ich nazwy nie są zastrzeżone, a przedefiniowanie przez program użytkownika nie będzie miało wpływu na działanie programu XOSL.
- INT - Strumień wejściowy zleceń.
- OUT - Strumień wyjściowy komunikatów.
W trybie pracy bezpośredniej strumienie INT i OUT są dołączone do końcówki. Wywołanie makrozlecenia zmienia ich przyporządkowanie. Ponadto definiowany jest lokalny strumień MES dla programów o atrybutach 020 lub 030. Strumień ten dołączany jest tylko wtedy, gdy zlecenie zawiera niepustą listę parametrów. Program XOSL umożliwia przygotowanie innych strumieni globalnych (zlecenia: ASS, REW, APP), przygotowanie zbiorów dyskowych oraz ustalenie sposobu komunikacji z użytkownikiem (zlecenia REP i OUT). Dla każdego użytkownika tworzone jest lokalne urządzenie MON będące końcówką.
Przekazywanie parametrów do programów
Przekazywanie parametrów do uruchamianego programu uzależnione jest od jego atrybutów. Atrybut określa także budowę listy paremetrów. Parametry przekazywane są przy każdym uruchomieniu programu jednakowo.
Atrybut 010 (050)
- Lista parametrów składa się z wyrażeń arytmetycznych. Wartości wyrażeń, po obliczeniu, zostają umieszczone w kolejnych rejestrach uruchamianego programu. Pozostałe rejestry są zerowane.
Atrybut 020 (060)
- Lista parametrów składa się ze standardowych elementów opisanych w punkcie I.4.1.1. Do uruchamianego programu zostaje przesłany komunikat, którego treścią jest wektor zdekodowanych parametrów. Wektor składa się z wartości parametrów poprzedzonych specyfikacjami:
specyfikacja długość typ parametru -1 0 koniec listy parametrów 0 0 parametr pusty 1 1 wyrażenie arytmetyczne 2 1 identyfikator trzyznakowy 3 2 nazwa sześcioznakowa 4 5 tytuł zbioru 5 1 wskazanie opcji 6 tekst zakończony znakiem CR 7 1 przedłużenie nazwy zbioru
Atrybut 030 (070)
- Program XOSL nie przeprowadza żadnej analizy listy parametrów. Do uruchamianego programu zostaje przesłany komunikat, którego treścią jest lista parametrów (w postaci znakowej) zlecenia uruchomienia bez separatora oddzielającego ją od nazwy programu. Pusta lista parametrów powoduje, że komunikat nie jest w ogóle nadawany.
UWAGA: Przy uruchamianiu procesów o atrubutach: 020, 030, 060 i 070 w rejestrach R1, R2 i R3 przesyłane są odpowiednio: słowo stanu, wartość wewnętrzna i liczba wierszy zadeklarowna zleceniem REP LIN. Zawartości pozostałych rejestrów są przypadkowe.
Obsługa alarmów
Program XOSL zapewnia obsługę alarmów spowodowanych przez programy którymi zarządza. Wystąpienie alarmu powoduje wydruk tekstu opisującego przyczynę alarmu. Tekst opatrzony jest nazwą programu i adresem wystąpienia błędu. Niektóre alarmy spowodowane przez ekstrakody służące do komunikacji mają obsługę szczególną. Daje to wrażenie istnienia kilku dodatkowych ekstrakodów. Należy jednak zwrócić uwagę, że dla systemu operacyjnego ekstrakody te oznaczają zwykłe alarmy, a ich znaczenie jest obowiązujące tylko dla procesów potomnych programu XOSL.
Ekstrakody specjalne:
- SCON - ustaw bity A, B i C w słowie stanu według R4.
- TCON - pobierz do R4 słowo stanu. W rejestrach R1 R2 i R3 przesyłane są ponadto: słowo stanu, wartość wewnętrzna oraz liczba wierszy na ekranie.
- END - zakończenie programu.
- BACK - wznowienie pracy programu XOSL. Sam program wykonujący ekstrakod BACK zostanie po obsłużeniu ekstrakodu wznowiony za ekstrakodem i będzie wykonywany w tle.
- ABO - usunięcie programu.
- KILL - usunięcie programu z wyprowadzeniem komunikatu "DELETED".
- EOSL - zakończenie programu z wyprowadzeniem komunikatu "FINISH".
Oprócz wyżej opisanych alarmów program XOSL podaje informacje o błędnym użyciu zleceń i o nieprawidłowościach w realizacji podprogramów wewnętrznych. Adres podawany w tym ostatnim przypadku jest adresem wewnątrz programu XOSL i może mieć znaczenie diagnostyczne dla autorów systemu operacyjnego.
Obsługa komunikatów od procesów potomnych
Procesy potomne programu XOSL mogą, poprzez mechanizm komunikatów, polecić wykonanie zlecenia języka OSL. Zlecenie jest przekazywane jako komunikat którego treścią jest wiersz zlecenia w postaci znakowej (LF, treść zlecenia, CR). Jego długość nie może przekraczać 80 znaków. Komunikat może być przesłany poprzez jeden ze strumieni: MES lub COM. Sposób wykonania zlecenia zależy od nazwy strumienia użytego celem przesłania komunikatu:
- COM - zlecenie zostanie wykonane w tle,
- MES - proces wysyłający komunikat będzie od tego miejsca wykonywany w tle, po zakończeniu zlecenia program XOSL zgłosi gotowość wczytania nowego zlecenia.
Przy używaniu tej formy wywoływania zleceń należy mieć na uwadze możliwość wystąpienia konfliktu przy dostępie do urządzeń. Pomocnym może się tu okazać ekstrakod RELD.
Źródło: SYSTEM OPERACYJNY CROOK-5 dla minikomputera MERA-400 (wersja 7), Zbigniew Czerniak, Marek Nikodemski, Gdańsk 1988