Ugrás a tartalomhoz

EXOS

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából
EXOS
FejlesztőIntelligent Sofware
Forráskódzárt forráskódú
Programozási nyelvgépi kód
Legelső kiadás1.0 (1984.01)[1]
Stabil verzió2.1 (gyári)[1] / 2.32 (mod)
(1985. május 20. / 1993)
HardverEnterprise 64/128
Kernelmonolitikus
Felhasználói felületkarakteres
Elérhetőangol, német[1]
Licenckereskedelmi
Státuszrajongók által patchelt
Weboldalhttp://www.ep128.hu/Ep_Util/Exos.htm

Az Enterprise eXtendable Operating System (röviden: EXOS) az Enterprise számítógépek operációs rendszere, mely az Enterprise 64 modell megjelenésével vált publikussá.[1] A szoftvert az Intelligent Sofware Ltd. fejlesztette a gépeket kiadó ELAN, majd Enterprise Computers számára.

Elnevezés

[szerkesztés]

A fejlesztés korai szakaszában az Intelligent Software szakemberei az EROS (Elan Rom Operating System) nevet adták a készülő operációs rendszernek. Az Enterprise marketinges szakembere változtatta a nevet EXOS-ra (Enterprise eXtendable Operating System).[1]

Feladatkör, részegységek

[szerkesztés]

Az EXOS feladata az aktuális konfiguráció felderítése, a használható memória leltárba vétele, majd pedig a felhasználói programok ill. különböző rendszer összetevők által támasztott memóriaigények kiszolgálása, nyilvántartás vezetése az aktuálisan foglalt, illetve szabad memória területekről. A hasonló kategóriájú (8-bites) kortárs személyi számítógépeken nem igazán lehet beszélni operációs rendszerről (OS).

Feladatai kapcsán illesztési lehetőséget biztosít a felhasználói program (pl. a gyári IS-BASIC interpreter, vagy más parancsértelmező, illetve rendszerszoftver) és a gép hardvere között. Az EXOS fő jellemzői a csatornaalapú I/O Interfész, valamint a bonyolult memóriakezelési lehetőségek. A I/O, más néven be- és kiviteli rendszer perifériatípustól független kommunikációt tesz lehetővé gépbe beépített (alaplapba integrált) eszközökkel, továbbá a felhasználói bővítőeszközökkel, perifériakezelőkkel is. Az Enterprise ROM-jában az EXOS-kernel (felügyelőprogram) mellett az alábbi, főként perifériakezelő eszközök találhatók meg:[2]

  • Videokezelő, a szöveg és grafika kezeléséhez.
  • Billentyűzetkezelő program, a botkormány, az automatikus ismétlés, valamint a programozható funkcióbillentyűk kezeléséhez.
  • Szövegfeldolgozási lehetőségekkel is rendelkező képernyőszerkesztő (WP).
  • Négyforrásos sztereó hanggenerátor.
  • Magnó fájlkezelő.
  • Centronics-kompatibilis párhuzamos illesztőegység.
  • RS-232 típusú soros illesztőegység.
  • Intelligent Net háromhuzalos hálózati illesztőegység.[2]

Az EXOS működése

[szerkesztés]

Az EXOS futása során, mindig jelen van egy felhasználói felület (Enterprise esetén ez valamilyen karakteres parancssori értelmező), ami ellátja a gép általános vezérlését. E programnak módjában áll hívni az EXOS-t, hogy valamelyik lehetőségét - például a csatorna I/O rendszert vagy a memória lefoglalási funkciót - igénybe vegye. Gyári konfigurációnál az aktuális felhasználói program, illetve felület vagy a beépített szövegfeldolgozó program (WP), vagy pedig az IS-BASIC értelmezőprogram ROM modulja, de lehet bármilyen más program is, ami a ROM bővítő modulról (cartridge) vagy magnóról a RAM-ba került betöltésre a rendszerindítás során.[2]

I/O rendszer

[szerkesztés]

Az EXOS I/O rendszere, perifériakezelők készletéből áll, melyek olyan gépi kódú programok, amelyek tartalmazzák az általuk kiszolgált eszközök vezérléséhez szükséges összes rutint (alprogramot vagy eljárást), és szabványos illesztési lehetőséget (interfészt) nyújtanak az OS felé. A perifériakezelő ténylegesen nem vezérel fizikai berendezést, viszont tisztán szoftver eszközökkel olyan perifériákra jellemző szolgáltatásai vannak, mint például karakterek olvasása vagy írása. Amikor az EXOS futni kezd, először is megkeresi az összes beépített perifériakezelőt és belső listát készít róluk. A lista tartalmazza a számítógéphez csatlakoztatott bővítő ROM-modulokban (cartridge-en), illetve vezérlőkártyákon fellelhető perifériakezelőket is. A listán szereplő minden egyes eszközt egy periférianév azonosít. Például: VIDEO, NET (hálózat) vagy KEYBOARD.[3][2]

Az I/O rendszer csatornaalapú, ami azt jelenti, hogy egy adott perifériával folytatott információforgalmazáshoz először egy csatornát (pipe) kell megnyitni. A csatorna megnyitásához meg kell adni az EXOS számára a kért periféria nevét és az egy csatornaszámot. A csatorna a perifériához egy kommunikációs utat létesít, amelyen át karaktereket küldhetünk mindkét irányba, akár egyenként, akár pedig általunk meghatározott méretű blokkokban, továbbá speciális parancsokat adhatunk az eszköznek.[3][2]

Egy fájlalapú perifériánál (pl. kazettánál vagy lemeznél) a csatornát egyetlen adatátviteli műveletre nyitják meg, majd újra lezárják. Egyéb perifériáknál (pl. billentyűzetnél) a csatornát célszerűen csak egyszer nyitják meg, majd az összes jövőbeni hozzáférés céljára egyszer s mindenkorra nyitva hagyják. Az EXOS lehetővé teszi, hogy egyidejűleg több csatornát nyissunk meg egyetlen perifériához, bár ezt bizonyos eszközök nem engedik meg. Így például a videokezelő tűri a sok csatorna megnyitását, a billentyűzetkezelő viszont csak egyet enged meg. A csatornák mindaddig megnyitva maradnak, ameddig a felhasználó le nem zárja ezeket. Egy csatorna megnyitásakor az EXOS csak annyi memóriaterületet utal ki, amennyit a periféria igényel a pufferek (átmeneti tárolók) és a változók részére.[3][2]

Memóriakezelés

[szerkesztés]

Egy operációs rendszer alap funkcionalitását jelentő memóriakezelés az Enterprise megjelenését megelőzően, 8-bites mikroszámítógépek esetén gyakorlatilag csak a BASIC interpreteren belül létezett. Az EXOS esetén - a rendszer rugalmas bővíthetősége érdekében - a maximálisan kezelhető memória méret 4 megabájtban lett meghatározva. Az Enterprise számítógépek motorját képező Zilog Z80 mikroprocesszor 64 kilobájtos (röviden: KB vagy K) címtartományát az EXOS felosztja 4 db 16K-s lapra, a 4 megabájtot pedig 256 db 16K-s szegmensre.[3] Bármelyik memóriaszegmens belapozható bármelyik lapra, a belapozott szegmens azonosítására alkalmas információkkal együtt.[1] Ezt a memórialapozást és a kapcsolódó címdekódolást a DAVE chip végzi.[4]

Amikor az EXOS működni kezd, megkeres és tesztel minden rendelkezésre álló memóriaszegmenst (RAM és ROM egyaránt), és listát készít róluk. A 0. lap első 256 bájtja bizonyos rendszerbelépési pontokat és rendszerprogramokat (gyakorlatilag az API-t), valamint olyan területeket tartalmaz, amelyek a CP/M emulálására fenntartottak. A nullás lap szegmens többi részét a rendszer nem használja és így az korlátlanul a felhasználó rendelkezésére áll. A rendszerbelépési pontok miatt (amelyek között megszakítási kezdőcím is van) a nullás lap szegmensnek állandóan belapozott állapotban kell lennie.[3][2]

Az Enterprise számítógépek grafikai megjelenítésért felelős "társprocesszora", a NICK chip csak a belső négy memóriaszegmenst (azaz FCh-tól FFh-ig az első 64 KB-ot) képes megcímezni, azt viszont önállóan teszi, a DAVE chip funkcióinak igénybevétele nélkül. Emiatt ezekre a szegmensekre video-RAM, vagy videomemória néven is hivatkoznak. E szegmensek hozzáférése lassúbb, mivel a Z80-as processzor a címzést a NICK chip-hez kell szinkronizálja (megosztott memóriahozzáférés).[5]

A 0FFh számú szegmenst, amely egyike a video-RAM szegmenseknek, mindig az EXOS használja, ezért ezt rendszerszegmensnek nevezzük, mely a rendszerváltozók, a rendszerveremtár (stack), a beépített perifériakezelő-változók, a sorparaméter-tábla, a RAM- és ROM-szegmenslisták, valamint a bővítő ROM-okhoz a rendelkezésre álló perifériák és a RAM-foglalás céljaira van fenntartva. Ez alatt található az ún. csatorna-RAM terület, melyben meghatározott méretű memóriaterület van hozzárendelve minden megnyitott állapotú csatornához. Az egyes területek nagyságát a csatornához tartozó eszköz határozza meg a csatorna megnyitásakor és néhány bájttól több kilóbájtnyi méretig terjedhetnek. A csatorna-RAM területek mindig a rendszerszegmensben kezdődnek, de tetszés szerinti számú más szegmenst is lefoglalhatnak. A csatorna lezárásakor azonban az adott csatorna részére kiutalt memóriaterület szabaddá válik és így ez a tárkiosztás nem állandó jellegű.[3][2]

Rendszerindítás

[szerkesztés]

A számítástechnikában általánosan alkalmazotthoz hasonlóan kétféle (újra)indítási módot ismer az Enterprise: hidegindítás (cold reset) és melegindítás (warm reset). A reset-áramkör a DAVE chip részét képezi.[4]

Hidegindítási folyamat akkor játszódik le, amikor a gépet először feszültség alá helyezzük, vagy amikor a RESET gombot megnyomjuk (feltételezve, hogy a gomb megnyomása előtt melegindítási cím létrehozása nem történt). A hidegindítás során az EXOS először a 32k kapacitású belső ROM ellenőrző összeg (checksum) vizsgálatát végzi el. Sikeres vizsgálat után megkeresi a rendszerben fellelhető összes RAM-ot és végigvizsgálja (teszteli) a teljes 4 megabájtos címtartományt, szegmensenként és sikeres teszt esetén bejegyzést tesz a rendelkezésre álló RAM-szegmensek listájába. A teszt minden esetleges korábbi adatot töröl. A RAM-teszt után, a rendszer bővítő ROM-okat (cartridge, illetve beépített) keresve ismét végigvizsgálja a 4 MB memóriatartományt és erről ROM-listát készít. Ezután a rendszer különböző belső változókat hoz létre, beleértve a nullás lap szegmens elején található rendszerindítási pontokat is. Az I/O rendszer többi részének inicializálása ezt követően a beépített és bővítőeszközök inicializálásával, valamint az összes ROM-bővítés inicializálásával valósul meg. A következő mozzanat a kijelző program indítása, ami kiírja a villogó "ENTERPRISE" és az "Intelligent Software Ltd. Copyright" üzenetet a képernyőre. Ezek az üzenetek a képernyőn maradnak mindaddig, amíg a felhasználó le nem üt egy billentyűt. Billentyűleütésre a rendszer sorban hívja az egyes ROM-bővítéseket és a felhasználói felület (UI) végrehajt egy ún. EXOS indítás hívást, amivel jogot formál a teljes vezérlés átvételére.[3][2]

Melegindítás szintén a RESET billentyű lenyomására lehetséges, feltéve, hogy a felhasználó előzetesen már létrehozott egy melegindítási címet, és ha a rendszerváltozók területe ép. A melegindítási cím a rendszerszegmens egy meghatározott helyét jelenti a nullás memórialapon (RAM) és a melegindítás befejezésekor ide fog átadódni a vezérlés. A melegindítási szekvencia nem végez RAM-vizsgálatot vagy ROM-keresést. A felhasználónak kiutalt összes memória ilyenkor ép marad és megmarad minden olyan rendszer-RAM-bővítés vagy felhasználói perifériakezelő is, ami előzetesen a rendszerhez volt kapcsolva. Ezzel szemben lezárásra kerül az összes csatorna, az összes csatlakoztatott eszköz újra inicializálódik, továbbá felszabadul minden olyan RAM, ami csatorna-RAM területként került kiosztásra. A RESET gomb kétszeri gyors megnyomásával mindig hidegindítás jön létre.[3][2]

Rendszerhívások

[szerkesztés]

EXOS-hívás az RST 30h utasítás végrehajtásával valósítható meg. A vezérlésnek az EXOS fő ROM-jára való átadását, valamint annak a felhasználóhoz való visszatérését kezelő programot a 30h-tól az 5Bh-ig terjedő terület tartalmazza. Ezt a területet - kivéve a 3Dh és 3Eh címen található szoftvermegszakítási címet - a felhasználói felületnek módosítania nem szabad. A különböző EXOS-hívásokat egy 1 bájtos funkciókód határozza meg, ami közvetlenül az RST 30h utasítást követi. Az EXOS-hívások számára a paramétereket az A-, BC- és DE-regiszterekben adjuk át és ugyanezekben kapjuk vissza az eredményeket is. Az A-regiszter mindig állapotértéket hoz vissza, ami nulla, ha a hívás sikeres volt, és nem nulla, ha hiba vagy váratlan helyzet állt elő. Az EXOS, valahányszor hívásra kerül, mindig átvált egy, a rendszerszegmensben lévő belső rendszerveremtárra, ezért csak nagyon kevés helyet foglal le a felhasználó veremtárában. Pontosan 8 bájtnak mindig rendelkezésre kell állnia a veremtár tetején. Még ha nincs semmilyen EXOS-hívás, erre a területre akkor is szükség van a megszakítások kiszolgálásánál.[3][2]

Kód Funkció[3][2]
0 A rendszer reset
1 Csatorna megnyitása
2 Csatorna létrehozása
3 Csatorna lezárása
4 Csatorna megszüntetése
5 Karakter olvasása
6 Blokk olvasása
7 Karakter írása
8 Blokk írása
9 Csatorna olvasási állapota
Kód Funkció
10 Csatornaállapot megadása és olvasása
11 Speciális funkció
16 EXOS-változó olvasása / írása / átbillentése
17 Csatorna megszerzése
18 Csatorna átirányítása
19 Alapértelmezésű egységnév beállítása
20 Rendszerállapot lekérdezése
21 Periféria felvétele
22 EXOS-határ olvasása
23 Felhasználói határ beállítása
24 Szegmens kijelölése
Kód Funkció
25 Szabad szegmens
26 Rendszerbővítők letapogatása
27 Csatornapuffer kijelölése
28 Hibakód értelmezése
29 Modul betöltése
30 Áthelyezhető modul betöltése
31 Idő beállítása
32 Idő olvasása
33 Dátum beállítása
34 Dátum olvasása

Verziótörténet

[szerkesztés]

EXOS 1.0

[szerkesztés]

EXOS 1.0-ás gépek nem kerültek forgalomba, csak a forgalmazás előtti (még ELAN címkés) bemutató és tesztpéldányokban futott ez az operációs rendszer. A nagyközönség ilyen gépet pl. csak az 1984 januárban Las Vegas-ban megrendezett Consumer Electronics Show-on láthatott. Az Enterprise 64 modell megjelenésének csúszása miatt már a 2.0-ás verzióval szállították a kiadott példányokat. Egy utólag előkerült dokumentációból[6] tudható, hogy mi nem volt még az EXOS 1.0-ban:[1]

  • Nincs dátum és idő, így az ezek kezeléséhez tartozó 31-34 EXOS hívások is hiányoznak. Hiányzik a TIMER nevű EXOS változó is. A 4-es után lévő változók ezért eggyel előrébb csúsztak.
  • A hálózat kezelőnél hiányzik a MACH_NET változó, így innentől még eggyel elcsúszik a maradék.
  • A magnó kezelőnél nem állítható a kimeneti jelerősség, mivel hiányzik az LV_TAPE változó, a maradék még eggyel csúszik.
  • A rendszerszegmensből hiányzik a 16 bites SECOND_COUNTER.
  • Nincs bejelentkező kép, ezért a bejelentkező képet kikapcsoló CRDISP_FLAG is hiányzik.
  • Nincs EXOS fájlformátum, így a kezeléséhez szükséges hívások is hiányoznak. A ROM bővítőknél nincs modul betöltése, így betölthető rendszerbővítők sincsenek. Gépi kódú programot sem lehet betölteni.
  • ROM bővítőknél nincs még RAM terület kiutalás, és inicializálás. A ROM-ok keresése itt még mind a 256 szegmensben megtörténik.
  • A videókezelő még 256 karakteres készletet használ, mint a PC-k. Valószínűleg helytakarékossági okból tértek át a 128-as készletre.[1]

Az EXOS 1.0 mellett az 1.0-ás BASIC is elfért az alaplapi 32K ROM-ban, ezért ezekhez a gépekhez még nem volt gyári tartozék a cartridge. Szövegszerkesztő (WP) még nem volt a gépben. Ezeken a gépeken - mivel bejelentkező kép még nem volt - rögtön a BASIC jelentkezett be az alábbi üzenettel:[1]

ELAN
I. Standard Basic version 1.0
© 1983 intelligent Software Ltd
Software licensed to ELAN
58000 bytes free

EXOS 2.0

[szerkesztés]

Az Enterprise 64 az EXOS 2.0 változattal került kiadásra, mivel a NICK-chip fejlesztésének elhúzódása miatt az Intelligent Software programozói számos finomhangolást és funkcióbővítést implementáltak az operációs rendszerbe. Ezzel együtt is vannak különbségek a 2.1-es változathoz képest, ezek:[1]

  • Nincs még 38-as SPRITE és a 39-es RANDOM_IRQ EXOS változó.
  • Nincs felhasználói megszakítási rutin, így hiányzik az USER_ISR változó is.
  • Rendszerszegmens számos összetevő máshol van.
  • Ismert hiba, hogy a NICK-chip inicializáláskor nem nulláza a keretszín regisztert, ezért bekapcsoláskor véletlenszerű keretszín jelenik meg.
  • Nem használhatók még a "?" és "*" helyettesítő karakterek.
  • A soros adatátviteli sebesség alapértéke 7200 baud 9600 helyett.
  • A START parancs nem működik lemezes rendszerben a START program betöltésére.[1]

EXOS 2.1

[szerkesztés]

Ez a Magyarországon is forgalmazott Enterprise 128 modellek operációs rendszere és jelen szócikk is ezt taglalja.[1]

EXOS 2.2-2.32

[szerkesztés]

A magyar Németh Zoltán (Zozosoft) által 1992-1993 során készített módosított változatok. A módosítások az operációs rendszer mellett a gyári ROM-ok tartalmát is érintették (WP, IS-BASIC). A 2.2-es változat nem igazán terjedt el, a szerző által készített rendszerintításkori fejlesztett RAM-teszt még szerényebb tudású, de már javított szövegszerkesztő (SWP)[7] és BASIC van benne. Ezeknek a patchelt, vagy módosított változatoknak a közös jellemzője a temérdek hibajavítás implementálása mellett, a memóriateszt funkcióbővítő és felhasználói beavatkozást lehetővé tévő fejlesztése. A gép bekapcsolása, illetve hidegindítás után lefutó ún. "gyorsteszt" beszédes képernyőképet ad a memóriateszt eredményéről, illetve számos új funkciót nyújt a felhasználó számára, melyek között billentyűk lenyomásával lehet választani. Ezek:[1]

  • (E)XOS RESET: a normál EXOS reset rutinnak visszaadja a vezérlést.
  • (C)OLD RESET: teljes hidegindítás történik, akkor is ha egyébként csak meleg reset lenne.
  • (S)LOW TEST: a memóriát nem a gyorsteszt rutin teszteli 256 bájtonként, hanem egy annál lassabb, de a teljes memóriát ellenőrző (mint az eredeti EXOS teszt, de annál 5-ször gyorsabb).
  • (N)ORMAL TEST: az eredeti EXOS rutinnal ellenőriz.
  • F1: csak az F8-as szegmensig tesztel (128 Kb, RAM-bővítés letiltása, egyes programok csak így működnek).
  • 4,5,6,7: a megfelelő szegmensig tesztel, így ha van a cartridge-ben statikus RAM, ez is felhasználható RAM bővítésnek.
  • F2: eredeti EXOS 2.1 ROM-teszt futtatása.
  • F3: azonos ROM-ok ellenőrzésének tiltása.
  • F4: ROM szimulációk törlése.
  • F5: EDCW (EDC Windows) bővítések törlése.
  • STOP: hibás szegmenseknél várakozás. Rendszerindítás közben a gyorsan lefutó tesztképernyő kimerevítése.
  • ESC: ugrás a kezdőképernyőhöz.[1]

A gyorsteszt nem csak szegmensenként vizsgálja a RAM-okat, így képes felismerni olyan hibákat, amikor például egy címvezeték szakadása miatt a 60-6F címtartomány fizikailag ugyanazokat a szegmenseket jelenteti, mint a 70-7F tartomány. Más teszteknél a hibára csak a RAMDISK-ben történő adatromlás utal. Az EXOS 2.3 verzióban csak akkor történik hidegindítás, ha a lapozó rutinok sérülnek meg, egyébként a bejelentkezéshez ugrik, így megmarad a RAMDISK, EXOS-bővítők, TIME, DATE stb.[1]

Az EXOS 2.1 - a cartridge-n kívül - csak a F0, E0, ., 10 szegmenseket vizsgálja, ezért ha egy módosított EPROM-ban például a BASIC és a CHESS (ROM-ba égetett sakkprogram) is benne volt, akkor csak az egyiket találta meg. A 2.3 verzióban a vizsgálat valamennyi szegmensre kiterjed, így egy teljes 64 Kb-os EPROM kihasználható.[1]

Az EXOS 2.3 esetén a cartridge-ből a gyári IS-BASIC kivehető, mivel ez is bekerült az EXOS 2.3 mellé az alaplapi ROM-ba. A gyári 32 kilobájtos ROM helyett a Zozosoft által készített 2.3x változatok 64 kilobájtos, 27C512 típusú EPROM-ba égethetők. A telepítés azonban forrasztást is igényel! Az EXOS 2.3 és az IS-BASIC mellett megtalálható még a Super Word Processor (SWP) 2.6 szövegszerkesztő is. Ez javított és továbbfejlesztett változata a német Enterprise GmbH által kifejlesztett SWP 2.5-nek.[7]

A legutolsó módosított verzió az EXOS 2.32, mely a korábbi változat hibajavításait tartalmazza, de apró funkcióbővülést jelent az SWP 2.6 MP80-as nyomtató támogatása is.[1]

Jegyzetek

[szerkesztés]
  1. a b c d e f g h i j k l m n o p q EXOS (magyar nyelven). ep128.hu . (Hozzáférés: 2023. július 31.)
  2. a b c d e f g h i j k l EXOS 2.1 Műszaki Leírás (magyar nyelven). ep128.hu . (Hozzáférés: 2023. július 31.)
  3. a b c d e f g h i j Enterprise Technical Information – EXOS 2.0 (angol nyelven). Intelligent Software Ltd. (1984. november). Hozzáférés ideje: 2023. augusztus 15. 
  4. a b DPC Sound Chip. DPC/Dave/1 Issue 5 (angol nyelven). ep128.hu , 1984. (Hozzáférés: 2023. augusztus 15.)
  5. Nick Chip Programmers Guide (angol nyelven). ep128.hu , 1984. (Hozzáférés: 2023. augusztus 15.)
  6. Enterprise Technical Information (angol nyelven). Intelligent Software Ltd. (1984. szeptember 11.). Hozzáférés ideje: 2023. augusztus 15. 
  7. a b Super Word Processor 2.5 (magyar nyelven). ep128.hu . (Hozzáférés: 2023. augusztus 15.)