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ó). |
![]() |
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 Egy korai EXDOS-kártya, mely WD1770-el van szerelve. (Az EXDOS kártyán WD1770, vagy WD1772 vezérlő-chip lehetett, a két chip csak a fejléptetés sebességében különbözik egymástól, a WD1770 a lassabb). A kártya az EXDOS 1.0-ás verzióját tartalmazza! |
|
Faragó-féle EXDOS kártya A WD1772 és WD1770 chippek hiánycikknek számítottak már a '90-es évek elején is, ezért ez a kártya már a WD1772-vel kompatibilis VL1772 chippet használja. A kártya memória-bővítést is tartalmaz. |
|
| Mészáros-féle EXDOS kártya WD1772-vel szerelt változat. |
|
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óknakEXDOS 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ívItt 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ívEz 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, ill. a módosított ROM-ok:
Disassemblált EXDOS - Zozosoft által elkövetve.