Az ODRA 1204 lengyel fejlesztésű (ELWRO- Wrocławskie Zakłady Elektroniczne), szilícium tranzisztorokból felépített, műszaki-tudományos számításokra orientált, egycímes, gazdag utasításrendszerű, mikroprogramozott számítógép volt, csatorna- és többszintű megszakítási rendszerrel rendelkezett, amely lehetővé és szükségessé tette felügyelőprogram alatti működést. A gép lebegő- és duplaszavas fixpontos aritmetikával is rendelkezett.
Története A wroclawi ELWRO számítástechnikai gyár, amely 1959-1993 között működött, számos önálló fejlesztésű (ODRA 1003, ODRA 1013, ODRA 1103, ODRA 1204) és licenc alapján fejlesztett (ODRA 1304, ODRA 1305, ODRA 1325, R32) számítógépet gyártott, KGST viszonyok között közepes/nagy sorozatban a lengyel és a szocialista piac számára. Magyarországon is számos ELWRO gyártmányú számítógép működött, elsődlegesen a felsőoktatásban. Az ODRA 1204 számítógépből 1967-72 között 179 példányt gyártottak, ebből 114-et export piacra.https://pl.wikipedia.org/wiki/Odra_1204 Magyarországon 8 db ODRA 1204 működött.
Műszaki adatok Architektúra Az ODRA 1204 második generációs, szilícium tranzisztorokból felépített, 24 bites aritmetikával rendelkező, ferritmagos, szószervezésű (egy szó 24 bit), mikroprogramozott, egy címes, komplex utasítás és címzési rendszerrel rendelkező, univerzális célú számítógép volt (CISC).
Regiszterek A gép fő regisztere a 24 bites „A” akkumulátor regiszter, amellyel az aritmetikai és logikai műveletek lettek végrehajtva. A másik a „W” (az akkumulátor meghosszabbítása) regiszter, amelyik a lebegő- és duplaszavas fixpontos műveleteknél került felhasználásra, szintén 24 bites volt.
Ezen kívül még 3 darab, úgynevezett index regiszter („B” regiszter) állt rendelkezésre az utasítás címének módosítására. Érdekességként megemlítjük, hogy ezek memória címen is elérhetők voltak. Az aritmetikai és logikai műveletek automatikusan beállították a 3 db 1 bites feltétel regisztert („U” negatív, „Z” nulla, „Nd” túlcsordulás), amelyek a feltételes programelágazásra szolgáltak. A gép rendelkezett utasításszámlálóval, ami a 16 bites „L” regiszter volt, ez az ugrási utasításoktól eltekintve meghatározta a szekvenciálisan következő utasítás címét.
A fent említetteken kívül a gépnek voltak még egyéb regiszterei is, amelyek csak a felügyelőprogram működésében játszottak szerepet, ezeket itt nem részletezzük.
Számábrázolás A gép a normál (egyszeres pontosságú) fixpontos számokat egy szóban, 24 biten kettes komplemens formában ábrázolta, [-8388608, 8388607] tartományban. A gép a hosszú (kétszeres pontosságú) fixpontos számokat 48 biten kettes komplemens formában ábrázolta, [-140737488355328, 140737488355327] tartományban és tárolta azt az A & W regiszterben, vagy két egymást követő memória szóban. A lebegőpontos számokat 38 bites mantissza (kettes komplemensben) és 10 bites karakterisztikával (eltolt nullpontú értékben) ábrázolta, kerekítve és normalizálva, abszolút értékben [10−153, 10+153] tartományban kb. 11 decimális számjegy pontossággal tárolta az A & W regiszterben, vagy két egymást követő memória szóban.
Memória Az ODRA 1204-nek 6 µs sebességű, szó szervezésű (24 adat+1 paritás bit) ferritgyűrűs memóriája volt. Alapkiépítésben 16 KiW (16384 szó azaz 48 Kibyte) volt a kapacitása, ami az utasítások 14 bites címrészével közvetlenül elérhető volt. Elvileg bővíthető volt 64KiW-ig, de hazánkban csak alapkiépítésű ODRA 1204 üzemelt. A címek (és az utasításrendszer elemeinek leírására is) az oktális (8-as számrendszert) használták (akkoriban még csak kevésbé volt elterjedve a hexadecimális számrendszer használata). A 0-37737 címtartomány állt rendelkezésre a felügyelőprogram és a felhasználói programok számára, míg a 37740-37777 címtartomány az írásvédett fixprogram (STALY) részére szolgált, ami rendszerprogramok bináris lyukszalagokról való betöltését tette lehetővé.
Utasításkészlet Az ODRA 1204 számítógép 24 bites szóban tárolta az utasításokat, amelynek általános formája:
PB OR N P indirekt címzés (1 bit) B az index regiszter kiválasztása (2 bit) OR a művelet kódja (7 bit) N a művelet argumentuma/címe (14 bit)
A PB együtt 3 bit 1 jegyű, az OR 3 jegyű , az N 5 jegyű oktális számmal írható le (pl. 4 025 30015). Az assembly (JAS) nyelv a művelet elnevezésére mnemonikot használt.
Az ODRA 1204 igen gazdag utasításrendszerrel rendelkezett.Kápolnai András - Kőrösi István: Az ODRA-1204 funkcionális leírása és programozása JAS szimbolikus programnyelven. Egyetemi jegyzet, Budapest Tankönyvkiadó, 1972, 138 old. A gép lebegő- és normál/hosszú fixpontos adatok feldolgozására alkalmas utasításokkal is rendelkezett (beleértve a szorzást/osztást), ezen túl számos logikai és szervezési utasítás áll rendelkezésre. Érdekességként megemlítjük a csoportos kereső és adat mozgató utasításokat, a ciklusszervezést megkönnyítő utasításokat, vagy a 8 db felhasználó által definiálható utasítást, mindezek hatékonnyá tették a fordítóprogramok és az általuk generált tárgyprogramok működését.
Röviden érdemes kitérni a tényleges memóriacím kialakítására szolgáló igen komplex és hatékony címmódosítás folyamatára, amely révén direkt, indexelt, indirekt, láncolt indirekt címzést, és kényszermódosítást is képes volt elvégezni a művelet címének kialakításában, elősegítve kis tárigényű programok készítését. Az indirekt címzésnél nem az operandus címe található az utasítás címrészében, hanem annak a tárolóhelynek a címe, ahol az operandus címe van. Ez a címzési mód lehetett többszintű (láncolt indirekt címzés) is. Az adatsorozatokon való műveletvégzés megkönnyítésére szolgált az úgynevezett indexelt címzés, ahol az utasítás címrészében az adatsorozat első elemének a címe található és a „B” regiszterben található az, hogy az adatsorozat hányadik elemével kell az utasításban megadott műveletet elvégezni. A kényszermódosítás módosította az utána következő utasítás címét.
Csatorna és megszakítási rendszer, privilegizált utasítások
Az ODRA 1204 architektúrája lehetővé és szükségessé tette felügyelőprogram (supervisor, operációs rendszer) alkalmazását, amelynek feladata volt a hardver erőforrásainak kezelése, a beviteli/kiviteli fizikai szintű perifériális műveletek lebonyolítása és a számításokkal való átlapolása, a megszakítások kezelése, valamint biztosította a két módú programfuttatást (felhasználói- és rendszermód), a címtartományok védelmét.
Az ODRA 1204-ben két különböző adatcsatorna típus állt rendelkezésre: Karakterátvivő csatorna (pl. lyukszalagos perifériák, monitor írógép, stb. számára) Szóátviteli csatorna (háttértárolók számára) amelyekhez 8-8 úgy nevezett perifériális modul volt kapcsolható, amelyek illesztették a perifériát a gép autonóm működésű csatornájához.
Az ODRA 1204 komplex megszakítási rendszerrel rendelkezett, amely a csatornaműveletekkel kapcsolatos események mellett az aritmetikai egység, a kezelőpult, a memóriavédelem, az óraregiszter megszakításait is kezelte.
Ezen feladatok programozását a felhasználok által nem használható, csak rendszermódban elfogadott, privilegizált utasítások biztosították.
Műveleti idők Az ODRA 1204 a mikroprogramozott, 24 bites aritmetikájával a legegyszerűbb utasításokat 10 µs (100 000 művelet/s) alatt hajtotta végre, de a tipikus műveleti sebessége 60 000 művelet/s volt.
Művelet Végrehajtási idő mikroszekundumban Fixpontos összeadás 15 Fixpontos szorzás 80 Fixpontos osztás 188 Lebegőpontos összeadás 94 Lebegőpontos szorzás 356 Lebegőpontos osztás 1064 Szubrutin hívás 30 Ferritmemória olvasása 6
Beviteli/ kiviteli perifériák lyukszalag olvasó 1000 jel/s lyukszalag lyukasztó 150 jel/s Monitor írógép (Optima/Soemtron 527) Sornyomtató Data Products 2410 (132 karakter szélesség) vagy Data Products 2310 (80 karakter szélesség), 240 – 600 sor/perc sebesség 4 db PB-204 mágnesdob (4*64KiW, 768 Kibyte)
A monitor írógép a felügyelőprogram segítségével az operátorral való kapcsolattartásra, a gép irányítására szolgált. (A BME Építőmérnöki Kar Számítástechnikai Csoportja egy IBM gömbfejes konzolírógéppel helyettesítette az eredeti OPTIMA monitor írógépet).
A sornyomtatók általában nem ELWRO, hanem Data Products gyártmányúak voltak, azokat a BME Központi Karbantartó Csoport illesztette az ODRA 1204 csatornájához.
A 4 mágnesdob kapacitása mai szemmel nézve igen kicsi volt, kb. feleannyi, mint egy, a régebben a PC-knél használt 3,5” floppy kapacitása, de az adatok elérési ideje jóval kisebb (≈10 ms), az átviteli sebessége is jóval nagyobb volt.
A BME Villamosmérnöki Kar Számítástechnikai Csoportjánál, az ODRA 1204-hez közvetlenül hozzákapcsoltak perifériaként egy UCC 3341 plottert, míg máshol lyukszalagon keresztül vezérelt rajzgép segítségével oldották meg az eredmények grafikus megjelenítését.
Ugyancsak a Villamosmérnöki Kar Számítástechnikai Csoportja a Folyamatszabályozási Tanszékkel kooperálva, az utóbbinál kifejlesztett TR-8085-ös mikroprocesszoros rendszerre támaszkodva, illesztett egy MOM 3200-a s 8” floppy diszkes meghajtót (80/160 Kbyte formázott kapacitású lemezek kezeléséhez) az ODRA 1204 szóátviteli csatornájára.
thumb|VILATI Prepamat E 9031-es adat-előkészítő berendezés (FOTO:FORTEPAN/UVATERV)
A géphez szállított szoftver 8 csatornás Optima kódú lyukszalag feldolgozására volt csak alkalmas, amit az NDK (Robotron) gyártmányú OPTIMA 527 lyukszalagos előkészítő berendezéssel lehetett készíteni, javítani, későbbiekben ezt kiegészítette a hazai (VILATI) fejlesztésű ASCII kódú Prepamat valamint néhány szintén ASCII kodu teletype ASR33 lyukszalag előkészítő berendezés. Használható volt még az 5 csatornás telexkódú (CCITT-2, ITA2) lyukszalag is, forrásprogramok (kivéve az ALGOL nyelvű programokat), adatok rögzítésére telex gépek segítségével.
A központi egység szekrénye A központi egység (a háttértároló mágnesdobok nélkül) 1680 x 900 x 510 mm méretű szekrényben helyezkedett el, ettől független volt a kisméretű kezelőpult, a monitor írógép az asztalával és a többi periféria. Megemlítendő, a gép rendelkezett a kezelőpultba épített (az ugró utasítások által vezérelt) hangszóróval, a végtelen programhurkok akusztikus felismerésére.
Szoftver ellátottság Felügyelő programok
SOW (System Operacyjno-Wykonawczy). Mágnesdob nélküli konfiguráció esetén használt felügyelőprogram a JAS, MOST-2, ODRA-ALGOL programokhoz. BOSS (Basic Operating Software System) (verzio 1.0- 5.0), Mágnesdobbal felszerelt konfiguráció esetén használt operációs rendszer FORTRAN-1204, JAS, MOST-2, ODRA-ALGOL programokhoz MASON (Mało Aktywny System Obsługi i Nadzoru) felügyelőprogram, csak az ALGOL-1204-hez (mágnesdob nélküli konfiguráció) MASON D mágnesdobbal felszerelt konfigurációhoz felügyelőprogram, csak az ALGOL-1204-hez BOSS 6.0 minden felsorolt programozási nyelvhez
A felügyelőprogramok az operátor által a monitor írógép segítségével vezérelt (operator-driven shop), egy felhasználós üzemmódot biztosítottak. A beviteli/kiviteli folyamatok pufferezésével és azok a számításokkal való átlapolásával használták ki a hardver adta lehetőségeket.
BOSS 7.0 (1978-tól) A hazai fejlesztésű operációs rendszer, már batch üzemmódban is (offline input/output/simple batch system) és minden felsorolt programozási nyelvhez biztosította a gép a korábbiaknál sokkal hatékonyabb kihasználását. Ez már lehetővé tette mind a hagyományos, operátor által vezérelt, mind a speciális Job control nyelven megadott batch utasítások által vezérelt üzemmódot. A BOSS 7.0 új, fontos lehetősége volt néhány beépített háttérfunkció a futó programokkal párhuzamos futtatása (pl. a batch vezérlő utasítások és a programok inputjának beolvasása, valamint a programok outputjának kivitele).
Programozási nyelvek