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
HIGH / MED / LOW

-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
SETUP

- 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ü:

  • RamDisk size: xxx - Ramdiszk mérete
  • Open RamDisk - Ramdiszk megnyitása
  • Delete RamDisk - Ramdiszk törlése
Options

- Almenü, a következő opciókkal:

  • Verify - Lemezművelet ellenőrzés ki / be
  • Hidden files - Rejtett file-ok listázása ki / be
  • Dir Mask - A megjelenő file-ok maszkja (Pl *.*)
Load

- File betöltése. A File Manager a következő file típusokat kezeli:

  • EXOS fejlécűek (5, 6, 7 stb)
  • EDCW rendszerbővítő modulok
  • DTF file-ok (A ZOZOTOOLS DL-re hivatkozik)
  • BAT, .INI file-ok (EXDOS parancsértelmezőt használja)
  • TXT, .DOC, .HLP, .ASM, .PAS, .BAK, .TPU, .ASC tokenizálatlan szöveg-file-ok tartalmát megjeleníti.

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...