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 hardware 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.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!)
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. Hidegindítás értékelése:
Ramdisk megőrzés: |
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:
EXOS 2.32 |
Miben is nyújt többet a 2.32-as változat?
Az Exos 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:
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 |