EXOS

Az ENTERPRISE a maga korában, sőt talán a 8 bites gépek történetében nézve összességében is egyedülálló módon rugalmasan bővíthetőre lett megtervezve, így pl. a maximálisan kezelhető memória méret az akkoriban szinte elképzelhetetlen 4 megabájtban lett meghatározva. Mindez ráadásul nagyon tisztán, áttekinthetően lett megoldva: a Z80 64K-s címtartományát felosztjuk 4 db 16K-s lapra, a 4 megabájtot pedig 256 db 16K-s szegmensre. És bármelyik szegmenst belapozhatjuk bármelyik lapra, sőt még azt is megtudhatjuk, hogy melyik lapra melyik szegmens lett belapozva. Sok más gépen csak irigykedni lehet egy ilyen egyszerűen használható rendszerre, pl. csúnya "barkácsolással" lett a Spectrum 48-ból 128-as gép.
Persze a harwware lehetőség kevés, kell mindehhez egy olyan operációs rendszer, ami mindezt tudja kezelni, kihasználni. Szerencsére mi egy igazán remek rendszert kaptunk, amely teljességgel rászolgált az Enterprise eXtendable Operating System névre! 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 ill. szabad memória területekről. Akárcsak egy mai modern operációs rendszer esetén!
A kortárs gépeken nem is igazán lehet operációs rendszerről beszélni, memóriakezelés is gyakorlatilag csak a BASIC interpreteren belül létezik, változók egyebek nyilvántartása. Így pl. egy Spectrum program se tudhatja meg rendszerszinten, hogy 48-as, 128-as vagy netán egy orosz Scorpion 256-os gépen fut.
Enterprise esetén egyrészt alapból is több többé-kevésbé különböző géptípus került kiadásra (64, 128, EXOS 2.0 és 2.1, angol és német), másrészt a különböző bővítésekkel számtalanra növekedett a különböző létező konfigurációk száma. A 128K-s gépünket az EXOS 2.1-es változata működteti, ezt minden Enterprise-tulajdonos tudja, ha máshonnan nem, a gép bekapcsolása után lezajló RAM-tesztből.

EXOS 1.0

Jogos a felvetés, hogy a 2.x-es verzió előtt létezett 1.0-ás is... Azonban 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 mergrendezett Las Vegas-ban a Consumer Electronics Show-on láthatott. A gép megjelenésének csúszása miatt már a 2.0-ás verzióval szállították az első 64K-s példányokat is. Egy utólag előkerült EXOS 1-es dokumentációból már azt is tudjuk, mi nincs az EXOS 1.0-ban:

Egy érdekesség az 1983-as Dave leírásból: itt még úgy szerepel, hogy a DAVE képes engedélyező jelet előállítani a belső 64K bővítésnek (F8-FBh szegmensek), ez tulajdonképpen teljesen is logikus lenne, így a memória legalsó 2x64K (ROM, CART) és legfelső 2x64K-hoz generált volna engedélyező jeleket. Érthetetlen, ez miért nem lett így később? Az EP128 felső RAM panelre kevesebb alkatrész kellett volna.

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, a szabadon marad foglalat a későbbi bővíthetőséget szolgálta! Szövegszerkesztő (WP) még nem volt a gépben. Így értelmet nyer a funkcióbillentyűk rejtélye is (a figyelmesebbek észrevehették, hogy az angol Felhasználói Kézikönyv borítóján illetve a korai prospektusokban számunkra ismeretlen jelentésű funkcióbillentyűk is fellelhetők). Ezekkel a parancsokkal BASIC-en belül lehetett az EDITOR csatornát írógépnek használni: a COPY parancs az egész szöveget kinyomtatja a szövegszerkesztőből, az ECHO üzemmód pedig minden bekezdés beírása után elküldi azt a nyomtatóra.
Ezeken a gépeken - mivel bejelentkező kép még nem volt - rögtön a BASIC jelentkezett be az alábbi üzenettel:

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

Az 1.x-es BASIC-ről kevesebb konkrétumot tudunk, ami biztos:
Rendszeróra hiányában nem meglepő, hogy nincs TIME, WAIT DELAY utasítás, TIMER gépi feltétel és DATE$, TIME$ függvények. (Érdekesség: a Felhasználói kézikönyv példaprogramjait nem javították később, üres FOR-NEXT ciklust használnak várakozásra.)
Nincs még CLEAR FKEYS, CLEAR FONT, EXT, FLUSH, GET utasítás. Nincs DEFAULT CHANNEL, FAST SAVE, NET CHANNEL, NET MACHINE, NET NUMBER, TIMER gépi feltételek valamint ATTRIBUTES, COLOUR video feltételek.
A függvények közül EXSTRING$, JOY(N), PI, RGB, RND(x) hiányzik.
További korlátozás, hogy a CALL és az ALLOCATE utasítás együtt nem alkalmazható egy programban.

Később, ahogy nőttek az újabb verziók szorult ki a BASIC a cartridge-ba, mivel akkoriban még nem voltak 64K-s ROM/EPROM IC-k. Az 1-es szegmensen a maradék helyre, amit nem töltött be az EXOS újabb verziója, rakták be ezután a WP-t.
Érdekesség, hogy a fejlesztés szakaszában az Intelligent Software szakemberei az EROS (Elan Rom Operating System) nevet adták a készülő operációs rendszernek. (Erósz a szerelem és a szexuális vágy istene a görög mitológiában.) Az Enterprise marketinges szakembere változtatta a nevet EXOS-ra (Enterprise eXtendable Operating System) - talán érthető okból.

EXOS 2.0

Az Enterprise 64 az EXOS 2.0-ás változatával működik. Az Intelligent Software fejlesztői szerencsére hasznosan töltötték a Nick chip elhúzódó fejlesztése miatti csúszást. Ördögi kör: ha nem húzódik el a fejlesztés, nem születik meg az operációs rendszer, ami megkülönbözteti az Enterprise-t a többi 8 bites géptől, így viszont csődbe ment a cég...

EXOS 2.1

Ezt jól ismerjük idehaza, a 128K-s gépek operációs rendszere.

EXOS 2.1 Műszaki leírás

EXOS 2.2

Az első - ZozoSoft által készített, módosított verzió a 2.2 volt, amit hamar követett a 2.3, ezért igazán csak ez utóbbi terjedt el. A két verzió közötti különbség a teszt alatt látható segítség képernyőből kiolvasható. A 2.2-es változatban már volt gyorsteszt, de kevesebbet tudott, mint a későbbi verziókban: nem volt még ROM szimulációs lehetőség, és EDCW bővítések megőrzése, és a kijelzés is kevésbé részletes. WP 2.6 és a EXT hibával javított BASIC már benne volt ebben is (lásd később).

EXOS 2.3

Miben is nyújt többet a 2.3-as változat?

A legszembeötlőbb változást rögtön a gép bekapcsolása után tapasztalhatjuk. A hidegindítási után (gyors) RAM-teszt számos újdonságot tartalmaz. (A leírt billentyűket a RESET megnyomásával egyszerre kell lenyomva tartani!)

(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 hagyományos gyorsteszt rutin (256 bájtonként ellenőriz) teszteli, 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). (Akit érdekel, hogy milyen az ENTERPRISE 64, az próbálkozzon az ALT-tal).

4,5,6,7: a megfelelő szegmensig tesztel, így ha valakinek van a cartridge-ben statikus RAM, ezt is felhasználhatja RAM bővítésnek.

Ez a gyorsteszt az első olyan, amely nem csak szegmensenként vizsgálja a RAM-okat, így képes felismerni olyan hibákat, amiket más tesztek nem ismernek fel. Például: egy címvezeték szakadása miatt a 60-6F címtartomány fizikailag ugyanazokat a szegmenseket jelentette, mint a 70-7F tartomány, és más teszteknél  a hibára csak a RAMDISK-ben történő adatromlás derített fényt.
A RAM-teszt villámgyorsan lezajlik, így ha esetleg az EXOS hibás szegmenst talál, nem tudjuk elolvasni, melyik az. Ezen a problémán segít a STOP billentyű: ha hibás szegmenst talál az EXOS, akkor megáll a teszt, hogy el lehessen olvasni, a szegmens számát. Tetszőleges billentyű lenyomásra folytatódik a RAM-teszt.

Hidegindítás értékelése:
Az eredeti EXOS akkor csinál hidegindítást, ha a melegindítási cím 0 (mint a játék programok nagy részében), vagy a rendszerterület sérült (lapozó rutinok + a "Written by ." szöveg), a 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. Például egy játék betöltése után. Ha egy program nem hagyja magát kiirtani, akkor kétféle módon lehet kilépni:

  • C: hidegindítás
  • ESC: a billentyű elengedése után a bejelentkezéshez ugrik

Ramdisk megőrzés:
Ez a gyorsteszt képes a RAMDISK megőrzésére még teljes hidegindítás esetén is, ha a RAMDISK BOOT szegmense sértetlen. (Ez 128 Kb esetén kevés játéknál teljesül, mivel a programok többsége az F8-FF szegmensekbe az EXOS megkérdezése nélkül ír, ezért bővítős gépen is, ha RAMDISK mellett játékokat akarunk betölteni, akkora RAMDISK-et csináljunk, amekkora még nem lóg be az F8-FF szegmensekbe). Erre már a VENUS gyorstesztje is képes, de ehhez 16 Kb-ot lefoglal, míg az EXOS 2.3-nak csak 3 bájtra van szüksége, és biztosan felismeri a RAMDISK-et!! (A VENUS nem ismeri fel, ha egy már használt szegmensbe került a RAMDISK BOOT.) Ha ki akarjuk törölni a RAMDISK-et, akkor az R billentyűt nyomjuk meg.

ROM-teszt:
Az eredeti EXOS (a cartridge-n kívül) csak a F0, E0, ., 10 szegmenseket vizsgálja, ezért ha egy EPROM-ban például a BASIC és a CHESS van, 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ó, és az eredetileg gyorstesztes EPROM-ok is bárhová rakhatók. Az EXOS 2.3-ban nem törlődnek azok a szegmensek, amelyek 5.-7. bájtja a "ROM" szöveget tartalmazza, így megőrződnek az EPDOS ROMLOAD (1.6-os verziótól LROM) parancsával betöltött bővítők. Akinek nincs EPDOS-a az a ROMLOAD-ot is helyettesítheti így: ASMON-nal betölti a ROM programot, aztán csinál egy hidegindítást. Ha mégis meg akarunk szabadulni a ROM szimulációktól, akkor az F4-et nyomjuk meg.
Az EXOS 2.3 minden ROM bővítőből csak egyet vesz fel a ROM listába, például két BASIC-ből csak az alacsonyabb szegmensű látszik (az első 255 bájt alapján dönti el, hogy azonos-e a két bővítő), az EXOS 2.1 csak a cartridge-ben vizsgálta ezt. Ezt F3-mal letilthatjuk. Például ki akarunk próbálni egy BASIC EPROM-ot, de ezt a 3-as szegmensű belső BASIC letiltaná, ekkor kell az F3.
Az eredeti (EXOS 2.1) ROM-teszt az F2-vel érhető el.
Megőrződnek az EDC Windows bővítései is, ezektől az F5-tel szabadulhatunk meg.
Ez a gyorsteszt letiltja a 4-es szegmensen levőt, ha mégis azt akarjuk futtatni, akkor ezt a "T" billentyűvel érhetjük el, amely hatására minden szegmensen kutat TEST_ROM után.
A teszt alatt megjelenik a billentyűk értelmezése, amelyet a HOLD billentyű használatával el is lehet olvasni.

Előnye AZ EXOS 2.3-nak, hogy a cartridge-ből a BASIC EPROM-ot kivehetjük, mivel ez is bekerült az EXOS 2.3 mellé. Így helyet nyerünk a cartridge-ben. Ezzel Zozosoft - akkor még tudta nélkül - visszatért az Intelligent Software eredeti koncepciójához. Az EXOS 2.3 mellett megtalálató még a SUPER WORD PROCESSOR 2.6 is. Ez javított és továbbfejlesztett változata az SWP 2.5-nek.

Több hiba is ki lett javítva, mind a BASIC-ben, mind az EXOS-ban.
Ezek a következők:

Az gondolom közismert, hogy eredetileg az IS-BASIC-ben hibás az EXT utasítás:

A példa esetén egy 25 GOTO 30 utasítással ki lehet kerülni a hibát.
Az eredeti EXT végrehajtó része így néz ki:

D850  EXOS 1AH
D852  RST 18H
D853  RET

Az EXOS hívás maga az EXOS parancs kiadása, az RST 18H az EXOS hiba ellenőrzése funkció a BASIC ROM-ban. Kimaradt viszont a BASIC verem kitakarítása! Ez okozza a hibát, ill. ez az amit a GOTO megcsinál...
Ezt egy:

RST 10H
DB 160H,0

kóddal érhetjük el. Viszont hova írjuk be? A HELP BASIC-re adandó help szövegből szedtem le pár szóközt, és az így keletkezett helyre kerül a módosított kód:

FA78  EXOS 1AH
FA7A  RST 18H
FA7B  RST 10H
FA7C  DB 16H
FA7D  DB 00H
FA7E  RET

D850-re pedig JP FA78H
A módosítást ASMON-al könnyen elvégezhetjük:

[O] B1 [ENTER] xx [ENTER] xx:A BASIC szegmens BASIC ROM belapozása az 1. lapra
[C] 4000 [ENTER] 7FFF [ENTER] 8000 [ENTER] BASIC ROM átmásolása a 2. lapra
[C] BA42 [ENTER] BA7F [ENTER] BA3F [ENTER] HELP szöveg első sorának lerövidítése 3 bájttal (bevezető szóközök)
[C] BA5A [ENTER] BA7B [ENTER] BA57 [ENTER] második sor lerövidítése
[M] BA76 [ENTER] 0D 0A F7 1A DF D7 16 00 C9 [ESC] a keletkezett helyre beírásra kerül először a szöveget lezáró CR/LF, majd a szükséges új kód
[M] 8095 [ENTER] 3C [ESC] HELP szöveg hosszának átírása
[M] 9850 [ENTER] C3 78 FA [ESC] kódra ugró JP elhelyezése
[S] 8000 [ENTER] BFFF [ENTER] BASIC.ROM [ENTER] javított ROM fájl kimentése

A javított BASIC.ROM annyira elterjedt, hogy ma már csak azt lehet fel lelni a neten így itt egy eredeti ROM fájl is:

IS-BASIC 2.1

EXOS 2.31

Miben is nyújt többet a 2.31-as változat?

Az Exos 2.31 és 2.32 a 2.3-as változat néhány apróbb - "a technika fejlődésével" - fellelt hiányosságát orvosolja:

EXOS 2.32

Egy titokzatos hiba bujkált az EXOS-ban, aminek a következtében az EXOS 0 (reset) funkcióhívás hívás néha lefagy. Ez a hiba került kijavításra, de egyúttal a javítás a 2.0-ás, 2.1-es változatokba is bekerült (MODIFIED könyvtár).
Ezenkívül a csomagba bekerült a gyorsteszt cartridge-os verziója is, azok számára, akik nem akarják megbontani a gépet (Cartridge könyvtár).

Mit kell tenned ahhoz, hogy használhasd az EXOS 2.3x-et?

Elegánsabb megoldás, ha a foglalatot alakítjuk át (ha már úgyis kivettük az EPROM-ot). A "klasszikus" EXOS 2.3 beépítéshez képest előny, hogy ezután már szabadon csereberélhető a ROM, nem kell mindig forrasztgatni, és az EPROM lábának letörésétől se kell tartani. Hátrány, hogy maradandóan átalakítjuk az alaplapot.

1. Eredeti állapot EXOS 2.1 ROM chippel
2. ROM chip eltávolítva
3. a foglalat egy részét ki kell törni, hogy hozzáférjünk a NYÁK-hoz
4. az 1-28 lábakat összekötő vezeték közelebbről
5. az 1-es lábra menő vezeték átvágva
6. A15 címvezeték bekötése: az EPROM foglalat 1-es lába összekötve az U6 17-es lábával
 
 
 
7. EXOS 2.3 EPROM behelyezve, kész
 

Vissza