Ismerkedés a "lemezes" géppel

Az Enterprise felhasználók jelentős része foglalkozik azzal hogy továbblép a gép lehetőségeinek kihasználásában. Kézenfekvő a gondolat, hogy a lassú és nehézkes kazettás adattárolót fel kellene váltani a sokkal gyorsabb és összehasonlíthatatlanul több szolgáltatást nyújtó lemezegységgel. Következőkben a számítógépet és lemezmeghajtót összekötő "interface"-t, az EXDOS lemezvezérlőt mutatjuk be.

A működtető-programot ROM memóriában (EPROM) tartalmazó bővítőegység az ENTERPRISE jobb oldali rendszercsatlakozójába illeszkedik. Létezik külön dobozolva, de a lemezmeghajtóval és annak tápegységével egybeépítve is. Az elektronika a számítógépből kapja a tápfeszültséget egy stabilizátor IC-a keresztül. Tehát külön tápellátást csak a lemezmeghajtók igényel(nek). Ha csatlakoztattuk az EXDOS vezérlőt a géphez, lemezmeghajtó nélkül is tesztelhetjük azt, és jónéhány szolgáltatását ki is használhatjuk. (Erről bővebben a későbbiekben lesz szó).
A Basic bejelentkezésénél rögtőn feltűnik, hogy a felhasználatlan memória néhány kilobájttal kevesebb, mint szalagos rendszer esetén, az EXDOS-nak ugyanis RAM területre van szüksége a működéshez. A :HELP parancs kiadása után mindjárt az első sorban megjelenik: EXDOS version 1.3
Így tehát az operációs rendszerbe épült a lemezvezérlő működtető programja. A :HELP EXDOS után pedig - verziótól függően - a következő copyright üzenetet kapjuk:


Ez a használható DOS (lemezes operációs rendszer) parancsok listája. (Részletes ismertetésüktől most eltekintünk, hiszen csak egy átfogó képet szeretnénk rajzolni az EXDOS nyújtotta lehetőségekről. A parancsok részletes ismertetését az EXDOS kézikönyv tartalmazza.) Aki MS-DOS rendszerű gépen dolgozott már (pl. IBM AT), annak ismerések ezek a parancsok. Ez az a pont ahol nyomatékosan hangsúlyozni kell az ENTERPRISE megalkotóinak előrelátását, és mindenre kiterjedő figyelmét: Az EXDOS nem csak parancsainak nagy részét tekintve kompatíbilis a leginkább elterjedt rendszerekkel, hanem az adatok (programok, szövegek stb.) lemezre írásának formájában is! Ez azt jelenti hogy az ENTERPRISE-on lemezre rögzített file-ok betölthetők egy PC-be, és ugyanúgy fordítva is. Vigyázat, a programok természetesen nem fognak futni a másik fajta gépen, de a szövegek és pl. a forrásnyelvű (le nem fordított) programok is átvihetők az azonos lemezoperációs rendszernek köszönhetően. Ez a hasonlóság kiterjed a lemezcímkétől a fájlok méretét és létrehozásuk dátumát, időpontját is tartalmazó katalógusig.
A lemezillesztő egy úgynevezett Shugart 410-es szabványnak megfelelő 34 pólusú csatlakozóval rendelkezik. Ehhez kapcsolható a legfeljebb 4 darab lemezmeghajtó. 34 erű szalagkábel köti össze az egységeket. A meghajtókon levő, típusra jellemző kapcsolókkal választható, hogy melyikre milyen betűvel hivatkozhatunk. A: B: C: vagy D: lehet az azonosító jel. Ha csak egy meghajtónk van célszerű azt A:-nak "nevezni". Ebben az esetben az EXDOS ún. mapdisk műveletet is végre tud hajtani, ami abból áll, hogy hivatkozhatunk a nem létező B: meghajtóra, és a képernyőn megjelenik egy üzenet, amikor a B:-be szánt lemezt be kell tennünk az A:-ba. Tehát úgy használhatjuk a gépet mintha két meghajtónk lenne. Ha kazettáról akarunk beolvasni, vagy másolni rá, akkor a TAPE: eszköznévvel kell hivatkoznunk a magnóra, hiszen a lemezvezérlő csatlakoztatásakor a lemezegység lesz az alapértelmezésű ki- és beviteli eszköz..
A használható lemezmeghajtók lehetnek 3,5"-es vagy 5,25"-es méretűek. A vegyes "felállás" nem jelent problémát. Tárolókapacitásuk 180 Kbájttól legfeljebb 720 Kbájtig terjedhet. (Az már más kérdés, hogy ENTERPRISE-al a 720K-s meghajtóval nem csak 720k-ra tudjuk formázni a lemezeket.) Jó az egy vagy kétoldalas egység ugyanúgy mint a negyven vagy nyolcvan sávos. A különböző variációk:

Az utóbbi 720K-a meghajtóval bármely másik három formátumú lemez olvasható és formázható is. Nem probléma a 3.5"-es lemezt átmásolni 5.25"-esre vagy viszont, ha két eltérő méretű lemezmeghajtónk van. Az IBM XT kompatibilis számítógépekhez gyártott 5.25"-es, 360K-s meghajtók általában gond nélkül használhatók az ENTERPRISE-hoz. A Commodore 64 vagy pl. az Atari XL soroztat meghajtói sajnos nem kompatibilisek az említett szabvánnyal, ezért nem kapcsolhatók számítógépünkhöz. (Létezik egyfajta csatlakozó és program amivel Commodore floppy-t használni tudjuk, de annak semmi köze az EXDOS-hoz: CBM Multi File Transfer)
A lemeze írt fájlok neve legfeljebb 8 karakter lehet, majd egy ponttal elválasztva 3 karaker az adat típusára utalhat. Pl. GRAFIKA1.BAS-nál a .BAS kiterjesztés Basic programot jelöl, úgy mint .PAS PASCAL-t; .DAT adatállományt stb. A kiterjesztés használata nem kőtelező, de nagymértékben segíti a fájl azonosítását.
Ha Basic-ből akarunk EXDOS parancsokat küldeni, könnyedén megtehetjük, csak ne felejtsünk kettőspontot tenni eléjük. Ugyanúgy kell eljárni, mintha EXOS parancsokat gépelnénk. Basic programon belül is van lehetőség a lemezkezelésre. Az EXT kulcsszó utáni idézőjelek közé kell írni a futtatáskor aktivizálódó parancsot. Pl:

200 IF A$="i" THEN EXT "DIR A:SPORT"

Az :EXDOS beírásával belépünk az EXDOS command interpreter-be azaz parancsértelmezőbe. Ekkor egy lila árnyalatú mező jelenik meg a képernyőn, minden sor elejére kiíródik egy kettőspont, ezután írhatjuk az operációs rendszernek szánt parancsainkat. Ha végeztünk, az [ESC] gombot megnyomva visszatérünk a korábbi munkaterületre. Ez a művelet nemcsak Basic-ből hajtható végre, hanem a szövegszerkesztőből, vagy akár a Cyrus sakkprogramból is. És ami a lényeg: a visszatérés után minden marad a régiben, azaz folytatható a félig megírt szöveg, vagy tovább sakkozhatunk!
Már történt utalás a lemezmeghajtó nélküli használatra. Ennek egyik módja a RAIMDISK használata átmeneti adattárolásra, vagy "tréningezés" céljára: gyakoroljuk a lemezkezeléssel kapcsolatos utasításokat addig is, amíg nem tudunk "igazi" lemezmeghajtót kapcsolni a gépünkhöz. A lényeg, hogy az ENTERPRISE úgy használja a memóriájának egy részét, mintha létezne egy E: jelű meghajtó. Programokat menthetünk el, másolhatunk onnan szalagra stb. A :RAMDISK 2 parancs hatására 2*16KB méretű memória ezentúl "látszólagos" lemezmeghajtóként működik. Az elmentett programok természetesen csak a kikapcsolásig, vagy egy hidegindításig maradnak meg, de addig ugyanúgy (lényegesen gyorsabban) mozgathatók, másolhatók mint a valóban létező meghajtók esetén. (amennyiben EXOS 2.3 operációs rendszer van a gépben hidegindítás után is megmarad a ramdisk!)
Az EXDOS működtető-program szervesen kapcsolódik az EXOS operációs rendszerhez, többek között kibővíti azt öt új rendszerváltozóval. Természetesen mind a lemezkezeléssel kapcsolatosak. A :VAR paranccsal közvetlenül lekérdezhetők, átírhatók vagy ki- és bekapcsolhatók az ENTERPRISE rendszerváltozói. Harmincnégy hibaüzenet segíti a lemezegység használata közbeni tájékozódást. Az 1.3 változat sajátja, hogy alkalmazkodik a kétnyelvű alapgéphez, németre váltva (:BRD) németül, angolra váltva (:UK angolul írja ki az említett hibaüzeneteket.
Eddig még nem esett szó a lemezegység további - az eddigiekhez képest új távlatoltat nyitó -lehetőségeiről: az IS-DOS (Intelligent Software Disk Operafing System) rendszerről. Az IS-DOS rendszerlemezről tölthető be (vagy ROM-ba égetve tartalmazhatja gépünk), és alkalmassá teszi számítógépűnket a Z80-as processzorú gépek szabványos operációs rendszere, a CP/M 2.2 változatára irt "profi" felhasználói programok futtatására: Turbo-Pascal, Basic, Forth, Prolog nyelvek; különféle (pl. Aztec) C fordítók, Wordstar szövegszerkesztő, dBase adatbáziskezelő, Multiplan táblázatkezelő stb. Íme az ENTERRISE-on futó Wordstar főmenüje:

Ízelítőül talán elég ennyi eme "izgalmas" periféria iránt érdeklődőknek. Nagy valószínűséggel állíthatjuk, hogy akinek módja van lemezegységet használni, és kreatívan ki is használja az EXDOS nyújtotta lehetőségeket, nem bánja meg hogy megmaradt az ENTERPRISE pártján!

Enterpress 91/5.

Mint azt már tudjuk, eredetileg Plug and Play rendszert terveztek a bővítőkártyákhoz, amiből csak a gyári EXDOS és hozzá adott BRIDGE készült el ilyen módon. (Mivel nem volt erről szóló dokumentáció, így sajnos a magyar fejlesztések nem követték ezt a rendszert.) Íme, hogy hogyan számolja ki az EXDOS a WD portcímét:

LD C,0B3H
IN C,(C)
SRL C
BIT 1,C
JR Z,LDCBD
LD C,10H

;C=ROM szegmensszáma
;C=C/2

Ebből kiderül, hogy a lehetséges ROM címekhez, az IO tartomány fele osztható ki, 80H-tól az alaplap jelenlegi, ill. esetleges későbbi eszközei helyezkednek el. A BRIDGE-n 3 darab Socket Address címvezeték helyezkedik el, ez 8 kártyát tesz lehetővé. A kártyákon az eredeti EXOS ROM tesztet figyelembe véve a következő aktív ROM szegmensek és IO címek lehetnek:

0: 10H, 00-0FH
1: 20H,30H, 10-1FH
2: 40H,50H, 20-2FH
3: 60H,70H, 30-3FH
4: 80H,90H, 40-4FH
5: A0H,B0H, 50-5FH
6: C0H,D0H, 60-6FH
7: E0H,F0H, 70-7FH

A fenti SRL-es számítási módot tekintve lehetséges az is, hogy 1 kártya két lehetséges ROM-ja, elossza 8-8 arányban a lehetséges 16 portot. Az EXDOS ezt mindenesetre nem teszi, 10-13H a WD, 18H a kártya vezérlőregisztere.
Még egy érdekesség a fenti rutinról: valószínűleg a fejlesztési fázisból benne maradt egy kivételkezelés, ami gyári konfigurációban akkor lép működésbe, ha a cartridge-ban van az EXDOS ROM, ekkor kiszámolt bázis port címet a jól ismert 10H-val helyettesíti, ami a gyári BRIDGE-hez kötött EXDOS kártyának felel meg.
Anno a Turbo EXDOS fejlesztésekor Zozo tapasztalta, hogy a ROMLOAD-dal betöltött EXDOS ROM nem működött a PNP portcím számítás miatt, hiszen nem a 20H-ra lett töltve. Viszont ennek a kivételkezelésnek az lett a mellékhatása, hogy x4 vagy xC végű szegmensre töltve működik a betöltött EXDOS ROM. (Magyarán egy RAMDISK 3 után mehetett a ROMLOAD)

A portcím-számolgatás még egy másik esetben került elő: egyes magyar gyártású BRIDGE-ekben nem volt megfelelően bekötve SA0-SA2, így más címre dekódolódott az EXDOS, ezért pár program ami fix WD címeket használt, nem működött.

Variációk EXDOS-kártyára

Eredeti EXDOS kártya.
A "gyári" kártyák WD1770-el vannak szerelve. A WD1772-nél a fejléptetésen kívül, néhány egyéb várakozási idő is rövidült, azaz gyorsult (gépi kódú közvetlen programozásnál kell erre figyelni.) Fontos fejlesztés még, hogy a WD1772 02-02 jelű IC "enhanced digital data separator"-ral is rendelkezik, azaz tovább lett fejlesztve az az egység, ami a lemezről érkező jeleket értelmezi, ennek köszönhetően képes olyan sérült és / vagy öreg lemezeket is olvasni, amit más gépek (pl. PC...) nem. Általában a WD1772 02-02 változatot lehet 16Mhz-re húzni HD lemez olvasáshoz. (A 1770 00-02 és 1772 00-02 IC-k csak a 10Mhz-es turbót bírják).
A különálló (angol) EXDOS kártyákon EXDOS 1.0 volt, a németek által készített EP floppyban a kétnyelvű 1.3.
Prototípus verzió
Még van néhány eltérés a végleges változattól, amiből arra lehet következtetni, hogy még nem volt meg a véglegesnek szánt doboz sem: az FDD csatlakozó nem hátrafelé, hanem felfelé néz, a NYÁK közepén lévő furat kisebb, az élcsatlakozó 2 milliméterrel rövidebb.
MICROTEAM memóriabővítős EXDOS
Eredeti EXDOS kártya nem sok jutott az országba és nagyon drágán árulták. A Microteam használta ki a leggyorsabban a hiányt ezzel a memóriabővítéses kártyával. Az ISS4-es MICROTEAM kártyán van egy hiba: a 74LS153 IC 5-ös és 11-es lába nincs összekötve, ez gondot okozott a RAM kezelésnél. Az ISS6-os kártyán már rajta van az összekötés.
Faragó-féle EXDOS kártya (MICROTEAM klón)
A hasonlóság a MICROTEAM kártyájával nem a véletlen műve... A WD1772 és WD1770 chippek hiánycikknek számítottak már a '90-es évek elején is, ezért ezt a kártyát már a WD1772-vel kompatibilis VL1772 chippel szerelték.
MICROTEAM klón
WD1772-vel szerelve.
Holland EXDOS kártya
A hollandok az eredeti megoldásnál sokkal praktikusabb illesztést találtak ki. Az EXDOS kártya a gép tetején kapott helyet, és persze a NYÁK is sokkal kisebb.
   
         
EXDOS-klónok

Enterprise lemezvezérlő kártya kapcsolási rajz

Következzenek itt az eredeti EXDOS ROM-verziók! Emulátorhoz javasolt ZozoSoft által módosított verziókat használni, melyek az EMULÁTOR lapon tölthetünk le!

EXDOS 0.3 - A legkorábbi változat, valószínűleg azért ismeri ez a legtöbb parancsot (ATTR, EXIT, ATDIR, ASSIGN, BUFFERS, MAPDISK), mert később ahogy nőt a kód mérete, egyes kevésbé lényegesnek gondolt parancsokat kihagytak (kár, hogy az ATTR is ide jutott...), úgy tűnik nagyon ragaszkodtak a 16K-s ROM mérethez, pedig a gyári EXDOS kártyán is ott a jumper 32K-s ROM beállításhoz. A kimaradt utasítások az ISDOS-ba költöztek.
Itt még sok dolog nagyon eltérő, az EPDOS el is száll ezzel a verzióval (az alaposan belekotorászik az EXDOS RAM területébe). A hibaüzenetek már tömörítve vannak, de a több más szót (file, disk, stb.) tartalmazó szintén tömörített tábla még külön van. Sok szöveg tömörítetlen. A "file cannot be copied onto itself" hiba még nem létezik, simán el is végzi a műveletet.

EXDOS 1.0 - A gyári EXDOS kártyák verziója, a kód már erősen hasonlít az újabb verziókra, de vannak még eltérések, pl. memóriakezelésben, pl. 1.0 esetén nem lehet a verem a 0. lapon FISH hívás esetén. Ami még szembetűnő, hogy "darabra" meg van minden ami az újabban van, de sok helyen más sorrendben vannak összepakolva a szubrutinok. A hibaüzenetek és szinte minden egyéb szöveg már egy egységes tömörített táblában vannak. Érdekes, hogy valószínűleg a tömörítés jobb hatásfoka érdekében a szöveg eleji nagybetűket kicsire cserélték, utólag nagybetűsíti a rendszer. Itt már kialakult a végleges parancs és hibaüzenet készlet.
Konfigurációs állomány emulátor használóknak

EXDOS 1.1 - Az 1.0-ás verzió német változata. Ez teljesen ismeretlen maradt, mert mire megindult a Németországban az EXDOS forgalmazása, addigra elkészült az 1.3.

EXDOS 1.2 - Korábban számunkra ismeretlen volt. Ez már tekinthető a (jelenleg ismert) végleges változatnak.

EXDOS 1.3 - Ezt már a németek követtek el: a szöveg kezelés lett átalakítva kétnyelvűre, emiatt hízott 32K-sra a ROM. Mivel itt aztán bőven volt hely, a szövegek már nem tömörítve vannak tárolva. Kétnyelvűség miatt a Retry/Abort/Ignore rutinban is átalakítva a billentyűzet kezelés. Ez az angol-német változat a gyári EP floppyba építve került forgalomba.
Egyelőre ismeretlen magyar illető meglátva a sok üres helyet a ROM-ban, nekiállt kibővíteni: bekerült az IS-DOS a ROM-ba, ill. a korábban kimaradt parancsokból 4: ATTR, ATDIR, ASSIGN, MAPDISK, valamint a német üzenetek HUN-osra lettek cserélve. Az eredeti 1.3-as ROM-ban ezért a parancstáblázat átkerült a ROM végére kibővítve, és az üresen maradt helyre került a plusz utasítások rutinja, amelyik a másik szegmenst hívják meg, ténylegesen ott található a végrehajtó kód.
Ebben a verzióban még nincs benne a HELP listában az IS-DOS, és mint kiderült hibás is: nem működött a gyors videokezelő.
Ezt a verziót szerkesztette ZozoSoft újra: egyrészt a hibaüzenetek közé bekerült pár, amire eredetileg nem tartalmazott üzenetet a ROM, az IS-DOS pedig újra berakva a lemezes IS-DOS.SYS-ből kiindulva, és a HELP listába is bekerült az ISDOS. Továbbá az EXDOS inicializációs rutinjába bekerült a 73-as EXOS változó, azaz a fejléptetés sebességének állítása, mivel WD1772-es esetén ezt 3-asra érdemes állítani, a gyorsabb, csendesebb működés érdekében, a ROM fájl 3F99 címén lehet az alapértelmezést beállítani.

Turbo EXDOS - A turbósított EXDOS-kártyákhoz szükséges verzió.

EXDOS 2.0 - Ez sajnos semmilyen forradalmi újdonságot nem tartalmaz, mindössze 8 bájttal több mint az 1.2-es. A WD port kezelésnél lettek egyes várakozások jelentősen megnövelve. Valódi gépen, ennek következtében véletlenszerűen, de rendszeresen kiakad Data error hibával! Ez egyébként nem is valódi data error, hanem csak a Lost data hibához is ugyanazt a EXOS hibakódot rendeli az EXDOS. (Ilyen hiba akkor van, ha olvasáskor a Z80 nem olvassa ki addig az adatot a WD-ből ameddig az beolvassa a lemezről a következőt (ilyenkor elveszik az adott bájt), ill. íráskor nem írja be időben a következőt (ilyenkor 00 íródik a helyére a lemezre). Valószínűleg úgy gondolták, ilyen hiba úgyse fordulhat elő, így még belső hibakódot se pazaroltak rá. Disk Editorban nézve 1 bájttal elcsúszik ilyenkor a beolvasott adat. Viszont ha a gépet 6 Mhz-re kapcsoljuk, akkor hibátlanul működik! EXDOS 1.3-ban (a konkrét címektől eltekintve ugyanez a többi 1.x verzió is) így néz ki az olvasási rutin kezdete:


lde43:


lde4a:
lde4c:

CALL LDF50
OUT (C),A
SET 3,C
JR LDE4C
LD A,00H
IN A,(C)
JP M,LDE65
; WD olvasási műveletek végrehajtó rutinja
; várakozási értékek beállítása
; 12 (13);WD Command kiirása
; 8   (9);EXDOS Status register
; 12 (13);várakozás
; 7   (8);várakozás
; 12 (13);EXDOS Status olvasása
; 10 (11);ugrás, ha DRQ aktív

Itt alapgépen (OUT 191,4) 30 órajel alatt jut el a DRQ állapot beolvasásáig.
2.0-ban:

E05E CD 6F E1
E061 ED 79
E063 CB D9
E065 3E 06
E067 3D
E068 20 FD
E06A ED 78
E06C FA 7F E0
CALL E16F
OUT (C),A
SET 3,C
LD A,06
DEC A
JR NZ,E067
IN A,(C)
JP M,E07F
; várakozási értékek beállítása
; 12 (13); WD Command kiirása
; 8 ( 9); EXDOS Status register
; 7 ( 8)
; 4 ( 5)
; 12 (13), 7 ( 8) ha Z
; 12 (13); EXDOS Status olvasása
; 10 (11); ugrás, ha DRQ aktív

Ez esetben 120 órajel alatt jut el a DRQ beolvasásáig, ami igen jelentős növelés, főleg ha azzal vetjük össze, hogy DD-s lemezről 128 órajelenként jönnek az adatok (4 Mhz-es gépnél). Így akkor már érthető miért csúszik le néha-néha az első adatbájtról. Ennek a jelentős növelésnek csak akkor van értelme, ha jóval gyorsabb CPU-ra bízzuk a végrehajtást, és nem akarjuk, hogy túl gyors végrehajtás miatt Not ready hiba legyen, mert nem várja meg a kód a változatlan sebességű lemezvezérlőt.
Ha minden igaz, abba a bizonyos szuper EP-be tervezett Hitachi Super Z80, nem csak órajelében nagyobb, hanem az utasításokat is rövidebb idő alatt hajtja végre. Így nézve értelmet nyer a dolog.

Van egy baki az EXDOS-ban:

Milyen dolog ez, hogy ott a sok RAM, és még se tudja használni?! RAMDISK 127-nél nagyobbat nem tud kezelni az EXDOS. Valamelyik Intelligent Software-s fiú siethetett haza a munkanap végén, és úgy gondolta, hogy áááá úgyse lesz soha több mint 2 mega RAM egy EP konfigurációban, minek foglalkozni a kérdéssel...
A kérdés amivel foglalkozni kellett volna, az az, hogy a RAMDISK-ben alkalmazott 1 szektoros cluster méret max. 2 megás lemez méretig használható. Az állandó 2 szektoros cluster meg a kis méretű RAMDISK-nél nem lenne célszerű, ott minden egyes elveszett szektorért kár.
Vagyis le kell ellenőrizni a létrehozandó méretet és ennek függvényében változtatni a cluster méretet, valamint módosul a FAT méretének kiszámítása is. Ez nyilvánvalóan pár bájttal hosszabb kódot eredményez, és inkább ezt a pár bájt megtakarítást választották, hiszen úgyse lesz soha egy gépben olyan sok RAM. Viszont ma már valódi gépen se túl nehéz összehozni ennyit, emulátorban meg pláne könnyű! A szükséges plusz kód 10 bájt. Az elején, ha likvidáljuk azt az ellenőrzést, ami azt vizsgálja, hogy 127-nél nagyobb értéket adtunk-e, akkor nyerünk 5 bájtot. Már csak másik 5-öt kell találni. Zozosoft faragta vagy 2 napig a biteket, végül befért!
Itt az eredeti és a módosított rutin forrása valamint az eredeti és módosított ROM-ok.

EXDOS 1.4 - Időrendben ez a legutolsó (2016-os), ZozoSoft által javított verzió. Ez tartalmazza az összes javítást, és a "technika fejlődésével" (SD-kártya illesztő) felmerülő újításokat. Változások az utolsó magyar 1.3-hoz képest:

Disassemblált EXDOS 1.3 - Zozosoft által elkövetve.

EXDOS Felhasználói Kézikönyv

Vissza az Util-hoz
Vissza a Hardware-hoz