OS-9 modułowy, wielozadaniowy system czasu rzeczywistego

Podobne dokumenty
OS-9 modułowy, wielozadaniowy system czasu rzeczywistego

Funkcje modułów w podsystemie wejścia wyjścia

Demonstracyjna wersja systemu OS-9 dla BCC-01

J adro systemu OS 9 moduł kernel

Działanie systemu operacyjnego

Wykład 3: Implementacja programów wbudowanych

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Systemy Operacyjne - Operacje na plikach

Działanie systemu operacyjnego

Struktury systemów operacyjnych

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

1. Ustanawianie ograniczeń na użycie zasobów

Komputery przemysłowe i systemy wbudowane

Laboratorium - Poznawanie FTP

Bezpieczeństwo systemów informatycznych

DOS COMMAND.COM. Rys. 2. Główne moduły programowe systemu operacyjnego DOS. Interpreter poleceń. Rys. 3. Warstwowa struktura systemu DOS

IEEE Centronics

Warstwy systemu Windows 2000

Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU

Systemy operacyjne system przerwań

Ćwiczenia 2 IBM DB2 Data Studio

projektowanie systemu

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

System operacyjny MACH

Mikroinformatyka. Wielozadaniowość

Dokumentacja instalacyjna i konfiguracyjna Aplikacja ADR. Wersja dokumentu 1.0. Strona 1/9

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Systemy plików i zarządzanie pamięcią pomocniczą. Struktura pliku. Koncepcja pliku. Atrybuty pliku

ZASADY PROGRAMOWANIA KOMPUTERÓW

Linux Kernel III. Character devices

System operacyjny MS-DOS

Struktura i działanie jednostki centralnej

Wprowadzenie do psql i SQL. Język komend psql. Podstawy instrukcji SELECT

Podstawowe zagadnienia

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Sygnały DRQ i DACK jednego kanału zostały użyte do połączenia kaskadowego obydwu sterowników.

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Struktura systemów komputerowych

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

SAP BASIS Architektura systemu klient Server

Politechnika Śląska w Gliwicach Instytut Automatyki 2005/2006

Kurs Zaawansowany S7. Spis treści. Dzień 1

Microsoft Visual SourceSafe uproszczona instrukcja użytkowania

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

klikamy Next 4. Wybieramy zgodność z systemem Virtual Machine hardware compatibility z listy zaznaczamy Workstation 6 Next 5.

Linux Kernel. Wprowadzenie

Instalacja, aktualizacja i migracja do Windows 7

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Podstawowa konfiguracja routerów. Interfejsy sieciowe routerów. Sprawdzanie komunikacji w sieci. Podstawy routingu statycznego

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

PAMIĘĆ OPERACYJNA...107

Struktury systemów operacyjnych

Konfiguracja regulatora PID

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Sterowanie wyświetlacza LCD typu HD44780

OS 9 modułowy, wielozadaniowy system czasu rzeczywistego materiały do wykładu Marek Wnuk

1. Aplikacja LOGO! App do LOGO! 8 i LOGO! 7

OS 9 modułowy, wielozadaniowy system czasu rzeczywistego

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Gostai URBI Power Swith

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Programowanie mikroprocesorów jednoukładowych

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

Architektura komunikacji

Administracja bazy danych Oracle 10g

Platforma webowa IIS

Załącznik I Instrukcja działania FBs-PACK

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

ochrona w systemie operacyjnym

Architektura i administracja systemów operacyjnych

Pakiety podprogramów Dynamiczny SQL

Synchronizacja czasu S i HMI Basic Panels

Pierwsze kroki z easy Soft CoDeSys Eaton Corporation. All rights reserved.

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Shared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.

Artykuł : Aktualizacja ( Cscape 9.70 )

Instrukcja instalacji oprogramowania dla środowiska Windows

Simple Network Management Protocol

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Microsoft IT Academy kurs programowania

Paweł Skrobanek. C-3, pok

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Instalacja NOD32 Remote Administrator

Product Update Funkcjonalność ADR dla przemienników Częstotliwości PowerFlex 750 oraz 525 6

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Narzędzia zarzadzania i monitorowania w systemach Linux

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Wprowadzenie do systemu Minix

Obsługa plików Procesy

Tworzenie sterowników dla FreeBSD. Michał Hajduk

Transkrypt:

RTOS modułowy, wielozadaniowy system czasu rzeczywistego elastyczna, modułowa architektura 100% romowalność, praca bezdyskowa wielozadaniowość i wielodost epność podział czasu z wywłaszczaniem funkcje czasu rzeczywistego we/wy niezależne od sprz etu odporny na awarie system plików zgodność z UNIX-em na poziomie C dost epność j ezyków wyższego rz edu narz edzia do uruchamiania programów na różnych poziomach (User, System, Source) MW-ZPCiR-ICT-PWr 1

Funkcje systemowe RTOS Nadzorowanie procesów process management: utworzenie (create), zaniechanie (abort),zakończenie (terminate), pobranie/ustawienie atrybutów (get/set attributes), przydział/zwalnianie pamieci (allocate/free memory), czekanie czasowe (wait for time), czekanie na zdarzenie (wait for event), sygnalizacja zdarzenia (signal event); Operacje na plikach file management: utworzenie (create), usuniecie (delete), otwarcie (open), zamkniecie (close), czytanie (read), pisanie (write), zmiana położenia (reposition), pobranie/ustawienie atrybutów (get/set attributes); Operacje na urzadzeniach device handling: zamówienie (request), zwolnienie (release), czytanie (read), pisanie (write), zmiana położenia (reposition), pobranie/ustawienie atrybutów (get/set attributes); Utrzymywanie informacji data maintenance: pobranie/ustawienie daty/czasu (get/set date/time), pobranie/ustawienie danych systemowych (get/set system data), pobranie/ustawienie parametrów procesu/pliku/urzadzenia (get/set process/file/device attributes), Komunikacja communication: utworzenie/usuniecie połaczenia (create/delete connection), nadawanie/odbieranie komunikatów (send/receive messages), przekazywanie informacji o stanie (transfer status information), przyłaczanie/odł aczanie urzadzeń zdalnych (attach/detach remote devices). MW-ZPCiR-ICT-PWr 2

Moduły Modułowa budowa systemu OS 9 APLIKACJE MATH KOMENDY CIO REAL-TIME KERNEL PIPE- SBF MAN TAPE PIPE RBF FD HD NFM NET SCF ACIA PIA MW-ZPCiR-ICT-PWr 3

Moduły Budowa modułu 0,' 06L]H 01DPH 03DULW\ 0([HF 1$*àÏ:(. NHUQHO &,$à2 &5& MW-ZPCiR-ICT-PWr 4

Moduły Wspólna cz eść nagłówka modułu adr. C asm znaczenie module.h module.a 00 msync M$ID Znacznik modułu (4AFC) 02 msysrev M$SysRev Numer wersji systemu 04 msize M$Size Wielkość modułu 08 mowner M$Owner Wlaściciel modułu 0C mname M$Name Wskaźnik nazwy modułu 10 maccess M$Accs Zezwolenia na dostep 12 mtylan M$Type,M$Lang Typ i jezyk 14 mattrev M$Attr,M$Revs Atrybuty i wersja modułu 16 medit M$Edit Numer edycji modułu 18 musage M$Usage Wskaźnik komentarzy 1C msymbol M$Symbol Wskaźnik tablicy symboli 20 mident Kod identyf. modułu 22 mspare Zarezerwowane 2E mparity M$Parity Suma kontrolna nagłówka MW-ZPCiR-ICT-PWr 5

Moduły Wybrane pola nagłówka M$Accs: -- -- -- -- -- pe pw pr -- ge gw gr -- ce cw cr p public, g group, c creator, w write pozwala na zapis do modułu, r read pozwala ładować, przyłaczeć i odłaczać moduł, e execute pozwala uruchamiać moduł. M$Type: 1 - Prgm - moduł programowy 2 - Sbrtn - moduł podprogramów 4 - Data - moduł danych 11 - TrapLib - biblioteka 12 - Systm - składnik systemu 13 - Flmgr - moduł zarzadzania plikami 14 - Drivr - moduł sterownika urzadzeń 15 - Desc - moduł deskryptora uradzeń MW-ZPCiR-ICT-PWr 6

Moduły M$Lang: 1 - kod maszynowy 2 - kod pośredni Basic 3 - kod pośredni Pascal 4 - kod pośredni C M$Attr: sharable sticky supervisor -- -- -- -- -- sharable zezwala na równoczesne używanie modułu przez wiele procesów, sticky moduł jest usuwany z kartoteki przy wartości MD$Link= 1, a nie 0, supervisor moduł pracuje w trybie uprzywilejowanym. M$Revs: Pozwala na dynamiczne zastepowanie istniejacych modułów ich nowszymi wersjami (nawet w ROM). Jeśli ładowany moduł ma wyższy numer wersji od istniejacego w kartotece, to funkcja F$Load podstawia w kartotece nowy moduł w miejsce starego. MW-ZPCiR-ICT-PWr 7

Moduły Zmienna cz eść nagłówka modułu Typ modułu adr. C asm znaczenie Flmgr, 30 mexec M$Exec Wskaźnik startu Systm 34 mexcpt M$Excpt Wskaźnik obsługi TRAP Drivr 38 mdata M$Mem Wielkość obszaru danych 3C mstack M$Stack Wielkość obszaru stosu 40 midata M$IData Wskaznik inicjalizacji danych Prgm 44 midref M$IRefs Wskaznik inicjalizacji wskaznikow 48 minit M$Init Wskaźnik inicjalizacji TRAP TrapLib 4C mterm M$Term Wskaźnik zakończenia TRAP MW-ZPCiR-ICT-PWr 8

Moduły Systemowy katalog modułów (Module Directory) adr. asm znaczenie 00 MD$MPtr Adres modułu w pamieci 04 MD$Group Identyfikator grupy modułów (adres pierwszego modułu grupy) 08 MD$Static Wielkość pamieci zajetej przez grupe modułów 0C MD$Link Licznik użytkowników modułu 0E MD$MChk Suma kontrolna nagłówka modułu F$Link - zwraca adres modułu o podanej nazwie, zwi eksza MD$Link; F$Load - ładuje moduł z pliku o podanej ścieżce, wykonuje F$Link; F$UnLink - zmniejsza MD$Link dla modułu o podanym adresie, usuwa moduł i zwalnia pami eć przy MD$Link=0; F$UnLoad - zmniejsza MD$Link dla modułu o podanej nazwie, usuwa moduł i zwalnia pami eć przy MD$Link=0. MW-ZPCiR-ICT-PWr 9

Moduły Funkcje biblioteki C dla modułów Funkcja C Opis crc() obliczenie CRC dla modułu get module dir() pobranie elementu kartoteki modułów make module() utworzenie modułu mkdata module() utworzenie modułu danych (typu Data) modcload() załadowanie modułu do pamieci kolorowanej (colored memory) modlink() dowiazanie do modułu o zadanej nazwie i typie modload() załadowanie modułu do pamieci i dowiazanie modloadp() załadowanie modułu do pamieci z użyciem zmiennej PATH i dowiazanie munlink() usuniecie dowiazania do modułu o zadanym adresie munload() usuniecie dowiazania do modułu o zadanej nazwie MW-ZPCiR-ICT-PWr 10

Moduły Przykład dost epu do modułu danych /* zalozenie: w module typu Data o nazwie "my_module" sa umieszczone dane w postaci struktury o typie my_data; wskaznik dptr ma zostac ustawiony na ich poczatek */ #include <module.h> mh_com *mhptr; /* wskaznik struktury naglowka */ my_data *dptr; /* wskaznik struktury danych */ /* szukanie modulu */ mhptr = modlink("my_module", 0); /* wyjscie z bledem */ if(mhptr == -1) return (errno); /* znalezienie wskaznika do danych */ dptr = (my_data *)((char *)mhptr + mnptr->_mexec); MW-ZPCiR-ICT-PWr 11

Moduły Komendy systemowe dla modułów mdir Syntax: mdir [<opts>] [<mod names>] [<opts>] Function: display module directory Options: -a print language instead of type -e print extended directory listing -t=<type> list modules only of type <type> -u print unformatted listing load Syntax: load [<opts>] {<module> [<opts>]} Function: load a module into memory Options: -d load file from data directory -l print pathlist of file loaded -z get list of file names from std. input -z=<path> get list of file names from <path> MW-ZPCiR-ICT-PWr 12

Moduły link Syntax: link [<opts>] {<modname> [<opts>]} Function: link a module in memory Options: -z get list of module names from std. input. -z=<path> get list of module names from <path> unlink Syntax: unlink [<opts>] {<modname> [<opts>]} Function: unlink modules from memory Options: -z get list of module names from std. input -z=<path> get list of module names from <path> ident Syntax: ident [<opts>] {<modname> [<opts>]} Function: display module information Options: -m ident module in memory -q quick mode, only one line per module -s silent mode: quick, only disp. bad crcs -x ident module in execution directory -z get list of module names from std. input -z=<file> get list of module names from <file> MW-ZPCiR-ICT-PWr 13

Konfigurowanie i start Ładowanie i start systemu OS 9 W chwili startu systemu OS 9 (od punktu wejścia M$Exec modułu kernel ) w pamieci musza sie znajdować: moduły systemowe kernel i init, program uruchamiany jako pierwszy proces (zazwyczaj sysgo), moduł sterownika zegara czasu rzeczywistego, moduły tworzace podsystemy we wy dla konsoli systemowej i dysku systemowego (jeśli sa przewidziane w konfiguracji). UWAGA: Załadowanie tych modułów do pamieci, znalezienie modułu kernel, zainicjalizowanie rejestrów procesora i skok do procedury startowej jadra musi wykonać program spoza systemu, tzw. bootstrap loader, najcześciej rezydujacy w pamieci stałej komputera (ROM) i uruchamiany po sprzetowym restarcie (RESET ). MW-ZPCiR-ICT-PWr 14

Konfigurowanie i start Budowa i funkcje programu bootstrap plik procedura wykonywane zadania źródłowy sysinit.a SysInit pocz boot.a boot.a atkowa inicjalizacja sprzetu budowa tablic skoków do procedur obsługi wyjatków określenie MPUType (typu procesora) sysinit.a SInitTwo dokończenie inicjalizacji sprz etu odblokowanie przerwań boot.a poszukiwanie pamieci i budowa listy pamieci RAM i ROM sysboot.a SysBoot ładowanie systemu (dołaczenie obszaru do listy ROM) i poszukiwanie modułu kernel boot.a ustawienie rejestrów i skok do miejsca startu kernel-a (M$Exec) UWAGA: Plik boot.a jest niezależny od sprz etu (dostarczany przez MICROWARE), a pliki sysinit.a, sysboot.a zależne (tworzone przez autora implementacji). MW-ZPCiR-ICT-PWr 15

Konfigurowanie i start Struktura pami eci przygotowanej przed startem jadra systemu (kernel) Obszar zmiennych w pami eci RAM o wielkości 8 kb: 0 2539 tablica skoków do procedur obsługi wyjatków (2540 bajtów), 2540 4095 obszar na stos roboczy bootloader-a (wskazywany przez rejestr wskaźnika stosu a7), 4096-8191 obszar na globalne zmienne systemowe (D ), wskazywany przez a6. UWAGA: Tablica skoków zawiera 254 elementy stanowiace indywidualne punkty wejścia procedur obsługi błedów: PEA #N*4 adres wektora na stos JMP BadExcpt skok do obslugi w boot.a W sytuacji wyjatkowej na stosie składowany jest adres wektora i nastepuje skok do procedury obslugi (poczatkowo wszystkie prowadza do procedury BadExcpt z pliku boot.a). MW-ZPCiR-ICT-PWr 16

Konfigurowanie i start Lista pamieci RAM i ROM przygotowana przez bootstrap dla kernel Znalezione bloki pamieci RAM sa łaczone w liste wskazywana przez a4: a4 next block... 0 block size block size...... Znalezione bloki pamieci ROM sa zapamietywane na stosie (a7): a7 last block addr last block size... 1-st block addr 1-st block addr MW-ZPCiR-ICT-PWr 17

Konfigurowanie i start Przygotowanie rejestrów do uruchomienia kernel-a d0.l = ilość wolnej pami eci RAM d1.b = typ procesora (MPUType) d2.b = flaga debugger-a (0=brak) d3.l = typ restartu 0-cold (1-quick) d4.l = 0 d5.l = 0 d6.l = 0 d7.l = 0 (a0) = adres startu znalezionego modułu kernel (a1) = adres startu bootstrap (przy błedzie fatalnym) (a2) = 0 (a3) = 0 (a4) = wskaźnik listy wolnej pamieci RAM (a5) = adres tablicy skoków dla wyjatków (a6) = adres obszaru zmiennych globalnych(d ) (a7) = mapa pamieci ROM MW-ZPCiR-ICT-PWr 18

Konfigurowanie i start Procedura startowa jadra systemu (kernel ) 1. Poszukiwanie modułów w pamieci ROM (z listy na stosie), sprawdzanie ich poprawności (CRC) i dodawanie ich do systemowej kartoteki modułów. 2. Dołaczenie (F$Link) do modułu konfiguracyjnego init (jego brak jest błedem fatalnym). 3. Zainicjalizowanie wszystkich tablic i struktur systemowych, otwarcie domyślnych ścieżek we wy systemowych (zazwyczaj /term ) i domyślnych katalogów na dysku systemowym (zazwyczaj /dd ). 4. Uruchomienie (F$Fork) pierwszego procesu (zazwyczaj sysgo ). 5. Uruchomienie procesu systemowego (kod w kernel, ID=1), niewidocznego dla użytkownika, obsługujacego funkcje czasu rzeczywistego (przerwania od RTC). 6. Koniec procedury startowej. MW-ZPCiR-ICT-PWr 19

Konfigurowanie i start Moduł konfiguracyjny init typedef struct { struct modhcom _mh; /* common header info */ long _mmaxmem; /* top limit of free ram */ ushort _mpollsz, /* number of IRQ polling /* tbl entries */ _mdevcnt, /* number of device table /* entries */ _mprocs, /* number of process table /* entries */ _mpaths, /* number of path table /* entries */ _msysparam, /* offset to parameter string for _msysgo */ _msysgo, /* offset to initial module name */ _msysdrive, /* offs. to sys. dev. name */ _mconsol, /* offset to console name */ _mextens, /* offset to customization module name list */ _mclock, /* offset to clock module name */ MW-ZPCiR-ICT-PWr 20

Konfigurowanie i start _mslice, /* number of clock ticks per time slice */ _mip_id; /* interprocessor identif. */ long _msite; /* installation site code */ ushort _minstal; /* installation name offs. */ long _mcputyp; /* cpu class (000/.../070) */ char _mos9lvl[4]; /* system lvl/ver./edition */ ushort _mos9rev, /* offs. to lvl/rev string */ _msyspri, /* initial system priority */ _mminpty, /* initial min. executable priority */ _maxage; /* initial maximum natural process age */ long _mmdirsz; /* nbr of moddir entries */ ushort _mevents; /* number of system event table entries */ char _mcompat, /* ver. change byte #1 */ _mcompat2; /* ver. change byte #2*/ ushort _mmemlist, /* offs. to col. mem. list */ _stacksz, /* IRQ stack size (lwords) */ _mcoldretrys, /* coldstart chd retry ctr */ _mreserved[10];/* reserved space */ }mod_config; MW-ZPCiR-ICT-PWr 21

Konfigurowanie i start Typowy program startowy sysgo Entry lea Intercpt(pc),a0 os9 F$Icpt En0 * WELCOME message move.w #1,d0 std IO path move.l #Msg1Siz,d1 lea Msg1Str(pc),a0 os9 I$WritLn * F$STime move.l #$00080000,d0 00hhmmss move.l #$07c30000,d1 yyyymmdd rtc --> mm = 0: os9 F$STime set from chip bcc.s En1 move #1,d0 move.l #TimESiz,d1 lea TimEStr(pc),a0 os9 I$WritLn MW-ZPCiR-ICT-PWr 22

Konfigurowanie i start En4 * shell -p=" sh> " moveq #0,d0 any type module moveq #0,d1 default memory size moveq #ShellPSiz,d2 parmameter size moveq #3,d3 copy std I/O paths move.w #Priority,d4 medium priority lea ShellStr(pc),a0 process to create lea ShellPar(pc),a1 parameter string os9 F$Fork fork to new primary mod. bcc.s En41 move #1,d0 move.l #ShellESiz,d1 lea ShellEStr(pc),a0 os9 I$WritLn bra En1 En41 os9 F$Wait wait for process to die bra En0 MW-ZPCiR-ICT-PWr 23

Konfigurowanie i start *************************************************** Msg1Str dc.b " sysgo: WELCOME to V2.4",C$CR Msg1Siz equ *-Msg1Str TimEStr dc.b " sysgo: can t set sys clock",c$cr TimESiz equ *-TimEStr ChxEStr dc.b " sysgo: can t change exec dir to " ChxStr dc.b "/dd/cmds",c$cr ChxESiz equ *-ChxEStr ChdEStr dc.b " sysgo: can t change work dir to " ChdStr dc.b "/dd",c$cr ChdESiz equ *-ChdEStr ShellEStr dc.b " sysgo: ERROR - can t fork to " ShellStr dc.b " shell",0," " ShellPar dc.b -p= ",$22,śh> ",$22,C$CR ShellPSiz equ *-ShellPar ShellESiz equ *-ShellEStr MW-ZPCiR-ICT-PWr 24