Az EDC Windows
File-név: EDCW.EXT Program neve: EDC Windows 5.6 |
Exosworm Digital Corporation - 1995 Grafikus felhasználói felület |
BEVEZETŐ
Az ENTERPRISE felhasználók egyik régi vágya egy olyan grafikus felhasználói
felület, amelynek használatával kényelmesen, esztétikus környezetben képesek
dolgozni, ahogy az sok más típusú számítógépen látható. Próbálkozás több is
volt, közöttük nem egy profi munka is akad, de ezek mind leragadtak egyedi programok
kiszolgálásánál. A végső megoldást egy szoftver teremtette meg, ami bármilyen
alkalmazás számára képes ilyen felületet biztosítani, idegen szóval "menedzselni".
Ez az EDC Windows.
Az EDCW teljes egészében grafikus környezetben fut. A felhasználó a rendszert
egy a képernyőn szabadon mozgatható nyilacska (továbbiakban: pointer) használatával
irányíthatja. A képernyőn megjelenő ablakokban láthatóak végrehajtható műveletek,
az eredmények - azaz a felhasználó csak a legritkább esetekben kényszerül a
billentyűzethez nyúlni - az "élet" a képernyőn folyamatosan zajlik.
A felhasználók alapvetően lusták. Nem akarnak zavaros parancsokat, bonyolult
paraméterezést megtanulni - az ő számukra az EDCW kiváló lehet.
Az EDC Windows terjedését csak egyvalami gátolja: Mindezidáig kevés alkalmazás
készült hozzá. Jelen cikksorozatnak is az a célja, hogy minél több felhasználót
ismertessen meg az "új módival" s mások is megpróbálkozzanak egy-egy
EDCW alkalmazás fejlesztésével ebben a kényelmes, komfortos környezetben. Nos,
vágjunk bele!
EDCW ALATT FUTÓ ALKALMAZÁSOK
KONFIGURÁCIÓ
Az EDCW kényelmes használatához szükséges lemezmeghajtó (E nélkül is működik,
de több funkció nem érhető el és néhány program működése bizonytalan) valamint
ajánlott a memóriabővítés is, mert a grafikus felület bizony "falja"
a memóriát. Ez persze nem jelenti azt, hogy ne lehetne igazán jól alkalmazni
egy alapkiépítésű gépen is.
AZ EDCW INICIALIZÁLÁSA
Miután az EDCW rendszerbővítő modulja betöltődött, a :HELP parancs kiadásával
győződhetünk meg róla, hogy valóban a memóriában van-e a rezidens kód. A rendszer
elindításához az :EDCW parancs begépelése szükséges, amely után több paramétert
is megadhatunk:
/M - A bejelentkező képernyő elhagyása
/E - Indítás után azonnal a Setup menü jelenik meg.
/X - Az Extensions menü jelenik meg
/F - A File manager jelenik meg
/Y - A System menü jelenik meg
/S - Memória SETUP figyelmen kívül hagyása
A megadott paraméterektől függően bejelentkezik az EDCW, és néhány információt
jelenít meg a rendserről:
A képernyő legfelső sorában foglal helyet az EDCW státusz sora,
ahol állandóan látható a szabad memória nagysága (Kbyteban és a teljes RAM százalékában
is) valamint a billentyűzet állapotjelzői is.
A jobb alsó sarokban a rendszeróra kapott helyet, tőle balra jelennek meg a
hibaüzenetek. A pointert bármelyik botkormánnyal és az O, P, Q, A billentyűkkel
irányíthatjuk. Az aktuális opció mindig inverzben jelenik meg. Ha ki akarjuk
választani (aktivizálni) a SPACE, ENTER billentyűkön kívül használhatjuk a tűz
gombot is.
A BILLENTYŰZET FUNKCIÓI
Az EDCW az aktuális KEYBOARD: kezelőt használja, azonban rendelkezik néhány
plusz funkcióval is:
Ha az opció szövegében aláhúzott karakter szerepel, akkor az
opció azzal a billentyűvel is elérhető.
Az EDCW automatikusan bekapcsolja a WTOOL KEYBOARD kezelőjét, ha az rezidens.
De mi is az a WTOOL?
A WTOOL
A WTOOL egy az EDCW-hez tartozó, de attól független működésű rendszerbővítő.
Tartalmaz egy új KEYBOARD: eszközt, ami ugyan csak angol billentyűzethez használható,
de jópár kényelmi újítást tartalmaz. Ezek közül is a legfontosabb az, hogy változtatható
méretű puffert hoz létre, azaz nem csak egy lenyomott billentyűre emlékszik
hanem akár 255-re is. Mire jó ez? Nos, előfordulhat, hogy a gép valami hosszabb
folyamat végrehajtásán dolgozik (Pl. fordít). Ilyenkor nem tudja a billentyűzetről
érkező karaktereket fogadni, csak a legutolsót tárolnia későbbi feldolgozáshoz.
Ezt bővíti ki a WTOOL azzal, hogy legfeljebb 255 karaktert egy pufferben megőriz
mindaddig, amíg a gép ismét "ráér" fogadni. Ezt több szempontból is
előnyös, nem csak hosszú műveleteknél, hanem lassú programoknál is, mert folyamatos
gépelést tesz lehetővé.
Ezen kívül az CONTROL1 porton lévő eszközt (pl. joystick) átirányítja a belső
joy-ra is, valamint ha két billentyűt nyomunk le egyszerre, akkor két különböző
karakter is jelenik meg. Természetesen ezeket a szolgáltatásokat csak azokban
a programokban használhatjuk ki, amelyek a standard KEYBOARD: eszközt használják
(a játékprogramok egy-két kivétellel nem ilyenek), de jó szolgálatot tehet akár
BASIC-ben, ASMON-ban, és mindenütt EXOS és EDCW alatt.
A WOOL betöltődése után a kezelő azonnal működni kezd, ha van megnyitott billentyűzet
csatorna, ellenkező esetben a bekapcsolást a ":KEYBOARD" paranccsal
kell elvégezni. Ezt a parancsot máskor is szükséges alkalmazni, mert egyes EXOS
reset hívások az új eszközt kiiktathatják.
A WTOOL EGYÉB PARANCSAI
MACRO makronév:parancssor - Létrehoz egy új EXOS parancsot, amelyhez
tetszőleges szöveget rendelhetünk hozzá. Pl. a "MACRO WIDE:DIR /W /H"
kiadása után már él a "WIDE" parancs, amely "széles" directory-t
ad minden fájlról. Hivatkozhatunk külső batch fájlra is, pl. a "MACRO CMD:EXDOS
CMD.BAT" egy olyan makrót definiál, amely végrehajtatja a lemezen lévő
CMD.BAT-ot a ":CMD" EXOS parancs kiadása esetén.
A MSAVE és MLOAD ezeknek a makrónak az elmentésére és betöltésére
szolgálnak.
EXTS Megjeleníti az EDCW rendszerbővítőit, szegmensszámmal együtt (Hasonló
az egyszerű :HELP-hez).
CLOAD, CSAVE filenév - Az aktuláis karakterkészletet lehet velük kimenetei
vagy betölteni.
BOLD, ITALIC - Vastagítja, vagy megdönti az aktuális karakterkészletet.
FAST, SLOW - Alapkiépítésű gépen 3.5 és 4 Mhz között kapcsolnak.
A WTOOL belső parancsainak .HLP (segítség) fájlalt a HELP alkönyvtárban találjuk, ezek íródnak ki "HELP -parancs-" kiadásakor. Ez a felhasználó által definiált makrókra is érvényes, mert kezelésük egy az egyben megegyezik a beépített parancsok kezelésével (Azaz ":HELP WTOOL" kiadásakor ugyanúgy megjelennek a makrók is, mint pl. a CLOAD vagy a FAST, valamint a saját parancshoz saját HELP-et is készíthetünk).
Miután így tisztáztuk az alapokat, következzék egy részletes leírás az EDCW beépített programjairól.
A SETUP
Amikor az :EDCW parancs begépelésével elindítjuk az EDCW-t, az aktuális meghajtó
gyökérkönyvtárában megkeresi a SETUP file-t, az EDCW.STP-t és megpróbálja betölteni.
Ebben a file-ban vannak azoknak a paramétereknek az értékei, amelyek az EDCW
megjelenését, külsejét szabályozzák (színek, menük pozíciói, változók stb.).
Ha ez a file hiányzik, alapértelmezésű jellemzőkkel fog futni a program. A legtöbb
változó a SETUP menüben állítható be:
Cursor sensivity |
-A pointer érzékenysége állíthatjuk három fokozatban. |
Inverse screen | - Invertálja a képernyőt, azaz megcseréli a papír és tintaszíneket |
Inverse menus | - A menük inverzek lesznek a képernyőhöz képest |
Move screen | - Kép mozgatása jobbra / balra |
Dec/Inc ink number | - A tintaszín növelése/csökkentése |
Bold font | - Megvastagítja a karaktereket |
Recall old font | - Visszamásolja az EXOS karakterkészletét |
Actual menu inv. | - Az aktuális menü inverz lesz a többihez képest ("kipipálva") |
Shadow | - Árnyék ki / be |
Clear screen | - Minden új menü kirakásánál képernyőtörlés ki / be |
Save SETUP |
- Kimenti az új EDCW.STP-t, így az EDCW legközelebbi
elindításakor is ugyanazokkal a paraméterekkel jelentkezik be.
|
Make MEMORY |
- Nem lemezen, hanem a memóriában hozza létre a EDCW.STP-t,
így gyorsabb a betöltés. A Setup EPROM-ba is égethető.
|
Ha van MEMORY SETUP, az EDCW meg sem kísérli lemezről betölteni, hacsak meg nem adjuk a "/S" paramétert.
A FILE MANAGER
Ez a legösszetettebb beépített alkalmazás. Elindításakor egy nagy ablak jelenik meg, ahol egyszerre 20 file-t láthatunk, a méretükkel és attribútumaikkal. Egy műveletet úgy hajthatunk végre, hogy először a parancsra "kattintunk", majd pedig arra a file-ra, amire vonatkozik. Az ablak alsó három sorában foglalnak helyet a parancsok:
Up/Down | - File-lista görgetése fel / le |
CHDIR | - Könyvtárváltás |
DiskInfo | - Megjeleníti a lemez méretét, a szabad hely nagyságát, a formázó program nevét és a lemez azonosítóját. |
Dir | - Újra beolvassa a lemezt |
Delete | - File törlése |
Vol | - Lemez átnevezése |
Drive | - Egy almenüből kiválaszthatjuk a meghajtót |
Copy |
- Másolás. Először be kell írni a cél útvonalat, majd
a másolandó file-okra kattintani. (Ha ENTER-t nyomunk, az utolsó útvonalat
használja)
|
Move | - File mozgatás. Kezelése mint a COPY-é |
MakeDir | - Könyvtár létrehozása |
Rename | - Átnevezés. Először az átnevezendő file-t kell kiválasztani, majd beírni az új nevet. |
Select |
- Alapállapotban nincs funkciója. Ha valamelyik EDCW
bővítés file betöltését igényli, ezzel választható ki a betöltendő file.
|
Cmnd | - Parancsértelmező. A képernyő alján nyílik egy videolap, ahol az üzenetek megjelenhetnek. |
Macro |
- Macro Editor. Öt előre definiált parancs közül választhatunk,
az EDIT opcióval átírhatjuk valamelyiket. (Használata nagyon hosszú parancsszerkezeteknél
előnyös)
|
RamDisk |
- Ramdiszk menü:
|
Options |
- Almenü, a következő opciókkal:
|
Load |
- File betöltése. A File Manager a következő file típusokat kezeli:
|
AZ EXTENSION MANAGER
Hasonlóan a File manager-hez, egy nagy ablak jelenik meg max. tíz a memóriában
lévő EDCW bővítő nevével. A következő parancsokat használhatjuk:
Scroll up/down | - Lista görgetés fel/le |
Extension info | - Rövid információ egy bővítőről |
Delete extension | - Bővítő törlése |
Activate | - Bővítő aktivizálása (így lehet elindítani a betöltött EDCW alkalmazást) |
Az EDCW rendszerbővítői .WIN kiterjesztésűek, 64-es modulfejléccel.
Ha egy ilyen alkalmazást betöltöttünk, az mindaddig a memóriában marad, amíg
hidegindítást nem hajtunk végre, vagy ki nem töröljük (az Extensions menü "Delete
extension" opciójával, esetleg ha van, a ZOZOSOFT féle EXOS 2.3-mal).
A rendszerbővítőket a File Manager "Load" opciójával kell betölteni
(használhatjuk az EXDOS "LOAD" parancsát vagy az EPDOS-t is, persze
csak akkor, ha az EDCW már a memóriában van - ilyenkor azonban gyakran megeshet,
hogy lefagy a gép). Ezekről az alkalmazásokról lesz még szó bőven, mivel itt
kapcsolódhatunk be az EDCW "vérkeringésébe".
EGYÉB ALPROGRAMOK
System menü:
Restart | - Újraindítja az EDCW-t |
Cold reset | - Hideg reset |
EPlogo | - Az ENTERPRISE logo-hoz tér vissza |
MEMÓRIAFELOSZTÁS
Az EDCW minimálisan 4 szegmenet foglal le működéséhez:
- EDCW rendszerbővítő modul szegmense
- FC videoszegmens, képfelépítéshez (76 bájt széles, 210 pont magas, HIRES 2)
- pufferszegmens
- mindenkori nulláslap, az EDCW aktív kódjához
A 0-ás és a 3-as lapot nem szabad megváltoztatni vagy felülírni, mert az a rendszer
összeomlását okozhatja.
PROGRAMOK EDCW ALATT
A .WIN kiterjesztésű EDCW alkalmazásokról már esett szó a bevezetőben. Most
részletesebben is megismerkedünk velük, miként működnek.
A felhasználói program két esetben folytathat kommunikációt az EDCW-vel, egyrészt
az inicializálási folyamat során, másrészt különböző események bekövetkezésekor.
Eseménynek minősül a kattintás, egy opció választása a billentyűzetről, stb.
A főprogramnak meg kell adnia, hogy az egyes eseményekre mi legyen a reakció,
a válasz.
FELHASZNÁLÓI PROGRAMOK INICIALIZÁLÁSI FOLYAMATA
Az EDCW ezt az EXOS-hoz hasonlóan végzi, akciókódok segítségével. Amikor elkezdünk
betölteni egy .WIN fájlt, először a fejléc kerül megvizsgálásra, mert ennek
5. bájtja speciális funkcióval bír, ez határozza meg a futási lapot. Ennek értéke
mindig 1 (4000h-7FFFh). Amennyiben ez az érték nem megfelelő "Invalid running
page" hibaüzenetet kapunk, egyébként a EDCW periféria-szegmenst foglal
az új alkalmazásnak, és betölti azt max. 16368 bájt hosszban. A lefoglalt szegmens
első 16 bájtjába rendszerinformációk kerülnek:
0-13.: | - "EDCW EXTENSION" - azonosító |
14.: | - futási lap |
15. | - szegmensszám |
Így a kód belépési pontja a 16. bájton lesz, az 1. lapon (4010h). Az EDCW itt hívja meg a programot, A-ban az akciókóddal, melynek értéke lehet:
A futás megkezdése után néhány fontos paramétert át kell venni
az EDCW-től, és meg lehet kezdeni az ablakok nyitását. Egyszerre csak egy ablak
lehet aktív. A definiálás a következőképpen történik:
- Könyvtárazni kell az ablakot (számmal kell ellátni)
- A hivatkozás a továbbiakban ezzel a számmal történhet, hasonlóan a I/O csatornákhoz.
Miután már definiálva vannak az ablakok, egyiküket aktuálissá kell tenni, és
egy egyszerű RET-tel vissza kell adni a vezérlést az EDCW-nek. Ha valami történik,
a vezérlést a megfelelő eseményrutin kapja meg.
AZ EDCW ELÉRÉSE
Az EDCW funkcióhívásait az RST 8-on keresztül lehet elérni, az EXOS-hoz hasonló
módon: a funkció számát az RST 8 utasítás utáni bájton kell elhelyezni. Ehhez
a következő makrót érdemes definiálni:
EDCW: MACRO FCODE
RST 8
DB FCODE
ENDM
Így már használhatjuk az EDCW a parancsot, ahol n a funkciókód.
AZ EDCW FUNKCIÓHÍVÁSAI
A nem publikált funkcióhívások élnek ugyan, de használatuk valamilyen szempontból
nem célszerű kompatibilitási vagy koordinációs problémák miatt. (Ilyen pl. az
EDCW 0, amely az egész képernyőt letörli, de bizonytalanná teszi az inverz opciók
kezelését.)
EDCW 1
Szöveg kiírása az aktuális ablakba.
A = kezdő sor (pixelsor, a továbbiakban mindenütt)
B = oszlop (karakterekben, a továbbiakban mindenütt)
HL = szövegre mutat
EDCW 2
EDCW változó állítása
A = változó száma
Ha B=0 átbillentés (CPL)
Ha B=1 beállítás, az új értéknek C-ben kell lennie
Ha B=2 olvasás, kimeneti A = aktuális érték
Beépftett változók:
0 - Árnyék
1 - Aktuális ablak inverz
2 - Képernyő törlés minden ablak kirakásánál
3 - Rejtett fájlok a File Managerben
4 - Lemezellenőrzés
5 - 7 Attributes menü változói
EDCW 3
EDCW újraindítása
EDCW 4
Hibaüzenet kezelése, kiírása az alsó sorba.
A = hibakód
EDCW 5
Belső menü választása, a beépítettekből.
A = új menü száma
EDCW 6
DOS közvetlen hívása.
EDCW 7
Grafika töltése adathordozóról ablakba.
A = bal felső sarok sora
B = oszlop
H = kép vízszintes mérete, bájtban
L = kép függőleges mérete, pixelsorokban
C = már megnyitott csatorna száma, ahonnan olvasni kell.
EDCW 8
Felhasználói ablak könyvtárazása, hogy később rá hivatkozni lehessen.
A = ablak száma (Ha már definiált, "Window exists" üzenetet
kapunk)
BC = ablak adattáblázatára mutat (WPT - Window Parameter Table)
EDCW 9
Felhasználói ablak törlése a nyilvántartásból.
A = ablak száma (Ha nem létezik, "Window does not exist" üzenetet
kapunk)
EDCW 10
Ablak aktuálissá tétele.
A = ablak száma
EDCW 11
Szöveg bevitel kérelmezése a billentyűzetről.
HL = szöveg-puffer (Ha az ablak szövegében mutat valahova, a képernyőn
is látható lesz az eredmény)
A = hány karaktert kell olvasni.
EDCW 12
A legutoljára beolvasott szöveg hosszát adja meg.
A = olvasott karakterek.
EDCW 13
Grafika megjelenítése az aktuális ablakban.
A = bal felső sarok sora
B = oszlop
E = vízszintes méretbájtban
D = függőleges méret, bájtban
HL = képadatokra mutat
EDCW 14
File manager meghívása. A visszatérés nem a verem tartalmától függ, hanem a
bemeneti regiszterek értékeitől.
DE = "Select" opció használata során aktivizálódó rutin címe.
Ilyenkor a DE egy fájlnévre mutat, amit a felhasználó választott.
HL = A "Cancel" rutinjára mutat.
EDCW 15
Egy belső program, az "EXOFF" meghívása. Keretszínt, szabad memória
kijelzést, stb. frissít.
EDCW 16
Annak a rutinnak a beállítása, amely akkor indul el, ha a felhasználó kattint,
de a pointer nem opción van.
Ha A=0 a rutinra hivatkozás törlése, egyébként HL = új eseménykezelőre
mutat.
EDCW 17
Decimális konverzió rutinja.
HL = 0-65535, konvertálandó szám
DE = 5 bájtos puffer a számjegyeknek
A WPT
Az ablak definíciós táblázat felépítése nem éppen egyszerű, de gyors, látványos
kezelést tesz lehetővé. A továbbiakban n = Az ablakban lévő opciók száma (1-42).
1. mező: Opció-információs egység, csak 16 bites szavakból áll. Az első
szó az opciók pozíciótáblázatára mutat, ezt követik a végrehajtó-rutinok címei
és az inverzre váltandó képterületek bal felső sarkának Z80-as címei. (n darab
szó mindkét esetben)
2. mező: Ablak-információs egység, két bájtból és két szóból áll. Az
első bájt az ablak vízszintes mérete bájtokban, a második a függőleges mérete
pixelsorokban. Az első szó az ablak bal felső sarkának Z80-as címe, a második
az ablakban lévő szövegé.
3.mező: Az ablak szövege, 0-val lezárva. Használható vezérlőkódok:
15 -
|
Az aktuális pozíció tárolása. A következő soremelés ehhez képest fog történni. |
13 -
|
Soremelés |
14 -
|
Az előző karakter aláhúzása |
0 -
|
szöveg vége |
A pozíciók Z80-as címét a következőképpen számíthatjuk ki:
Z80-ADDR = 0C000H+76 * sor
+ oszlop
Az opció-információs egység
Csak bájtokból áll. Az első maga az n, ezt a darab négybájtos blokk követi,
melyek egy-egy opciót határoznak meg:
0. bájt: Az opció függőleges pozíciója, pixelsorokban.
1. bájt: Vízszintes pozíció, bájtban.
2. és 3. bájt: Az opció szélessége. (Azonos bájtok, az egyik az érzékelési,
a másik az invertálási szélességet adja meg.)
Végül a sort a HKT (Hot Key Table - az opciók billentyűi) zárja, minden opcióhoz
egy karaktert rendelve.
Az EDCW belső változóinak táblája
Ide mutat az IY inicializáláskor
IY-3: | EDCW pufferszegmens | |
IY-2: | EDCW szegmens | |
IY-1: | Verziószám BCD-ben | |
IY+0 | - IY+1: | Belső karakterkészlet címe |
IY+2 | - IY+3: | A pointer képpont-adataira mutat |
IY+4 | - IY+5: | A pointer maszk adataira mutat |
IY+6 | - IY+7: | Belső ablakok táblázatára mutat |
IY+8 | - IY+9: | Változó tábla címe |
IY+10 | - IY+11: | FCB1 |
IY+12 | - IY+13: | FCB2 |
IY+14 | - IY+15: | FCB3 |
IY+16 | - IY+17: | Extensions menübe visszatérő rutin címe |
IY+18 | - IY+19: | Opciók függőleges méretét tartalmazó cím |
IY+20 | - IY+21: | A kép videó-címe (0000h) |
IY+22 | - IY+23: | A kép függőleges mérete |
IY+24 | - IY+25: | A kép vízszintes mérete |
IY+26 | - IY+27: | WKEY, billentyűzetállapot-változó címe |
IY+28 | - IY+29: | Pointer Z80-as címét tartalmazó cím |
IY+30 | - IY+31: | Óra atokra mutat (hh:mm-re) |
IY+32 | - IY+33: | Aktuális drive betűjére |
IY+34 | - IY+35: | EDCW belső főciklus |
IY+36 | - IY+37: | Felhasználói változók táblázatára mutat |
Példaként álljon itt az FDD TEST egyik menüje, tanulmányozás céljából:
MAINMENU: | DW MAIN-OPTIONS,TEST,VIEW,HELP,EXIT DW 53812,54496,55180,55864 DB 12,37 DW 53735,53812 DB 15,"T",14,"est",13,"V",14,"iew records",13,"I" DB 14,"nfo",13,"Cancel",0 |
MAIN-0PTIONS: | DB 4,60,23,14,14,69,23,14,14,78,23,14,14 DB 87,23,14,14,"tvi",27 |
Végezetül íme egy csendélet az EDC Windows-ból. A képen épp a számítástechnikát új alapokra helyező Gerontopresszioációt kapcsoltuk be, a TapeMast programban...