Lorigraph
File-név: LORIGRAP.BAS Program neve: Lorigraph | Loriciels - 1985 Rajzoló, karakter-tervező |
Sajnos az Enterprise software-parkjából mindig is nagyon hiányzott egy "tisztességes" rajzoló program. Bár történtek próbálkozások, átütő eredményt egyik programnak sem sikerül elérnie. A Lorigraph az első próbálkozás e téren, mérsékelt sikerrel... A program még a Centrum áruházakban is kapható volt, részint ezért, másrészt mert akkoriban ez az egy program jelentette a "választékot", szinte minden géptulajdonos ismerte. Sajnos sokra senki nem tudott vele jutni (ennek okai a későbbiekben kiderülnek).
A programot egy BASIC betöltővel indul, tehát a programot BASIC-ből tudjuk indítani. Indulás után választhatunk az angol és a francia nyelvek között, majd elénk tárul a menü, A készítők megpróbálták "grafikus" ikon-vezérlést megvalósítani a menüben (több kevesebb sikerrel), ennek köszönhetően a program gyorsan megtanulható. A kurzor irányítása a beépített botkormánnyal történik, de időnként a billentyűzethez is hozzá kell nyúlnunk. A program kezelőfelülete három elkülönített részre osztható: a menü, a "rajzasztal", és a karaktertervező képernyő.
Az érdemi munka a rajzasztalon történik, ezért tekintsük át az elérhető funkciókat:
A rajzunk felett, a kiválasztott funkció nevét, és a kurzor koordinátáit követhetjük nyomon.
Sajnos a kurzor sebessége (pontosabban annak lassúsága) egy idő után már zavaró, de szerencsére könnyen segíthetünk rajta! Mivel a program a billentyűzetet az EDITOR: eszközön keresztül kezeli, így a kurzor sebességét a program indítása előtt a SET KEY DELAY, és a SET KEY RATE parancsokkal könnyedén beállíthatjuk. (Javasolt a 5-3 érték használata). Ezt a két utasítást akár a BASIC betöltőbe is beírhatjuk.
Most nézzük át, milyen funkciókat választhatunk ki a menüből! Az ikonokat a bal felső saroktól a jobb alsó sarok felé haladva veszem sorra:
Bár a programban van néhány ötletes megvalósítás, igen súlyos hiányosságokkal kell szembenézniük azoknak, akik a programmal rajzolni szeretnének. A legsúlyosabb hiányosság, hogy a programnak saját file-formátuma van, tehát az elmentett képet nem tudjuk sehol felhasználni. (Úgy árulták a programot, hogy nem mellékeltek hozzá betöltő rutint, sem leírást a file-formátumról!!!) Ez érthetetlen, hiszen kézenfekvő lett volna a VLOAD funkcióval betölthető formátum. A mentés körüli bonyodalmakról már volt szó, ekkora hmmm... "butaságot" (finom voltam?) a Rekordok Könyvébe is be kellene jegyezni. Mindemellett a program használhatóságát drasztikusan csorbítja, hogy nincs benne UNDO funkció (vagyis nem tudjuk visszavonni az utolsó műveletet), így, ha a képpel valami "baleset" történik, nincs más hátra, mint a legutolsó mentés visszatöltése. Ez a megoldás rendkívül nehézkes, ráadásul javasolt a gyakori mentés, ami hosszadalmassá teszi a munkánkat.
A LORIGRAPH rajzolóprogram hasznosítása
A letölthető állományban található LORITOLT.BAS program a képek betöltését végzi el. Így színesebbé, látványosabbá tehetjük akár BASIC programjainkat is. Ahhoz, hogy a program működését megértsük, meg kell ismernünk a LORIGRAPH-al kimentet kép felépítését. Mivel a rajzprogram megengedi a színmód, felbontás, képernyőméret és színek módosítását, s újbóli betöltésnél ezek beállításáról automatikusan gondoskodik, joggal gondolhatjuk, hogy a képpontadatokon kívül ezeket is kimenti háttértárolóra. Ez valóban igaz, a kimentett rajz első 13 bájtja tartalmazza ezeket az adatokat, a következő sorrendben:
0. bájt - videomód (HIRES, LORES)
1. bájt - színmód (2, 4, 16, 256 szín)
2. bájt - a rajzlap vízszintes mérete
3. bájt - a rajzlap függőleges mérete
4-11. bájt - a nyolc palettaszín értékét
12. bájt - a fixbias értéke.
Ezek az adatok akkor is kiíródnak, ha csak kétszínű rajzot készítettünk, s a többi színre nem is lenne szükség! Ez valójában megkönnyíti a rugalmas alkalmazást.
E rövid ismertető után lássuk a program működését:
10 CLOSE £120 20 TEXT Ennek köszönhetően felszabadul a rajz által lefoglalt videomemória. A programmal betölthető rajz mérete a teljes képernyő (X = 42; Y = 27) méretig terjed. Ennél nagyobb Y-méretet nem fogad el, a 280-as sorban hibát jelezne. Magnetofonos rendszer esetén a szalagon a file-ok sorrendjének a következőnek kell lennie: a képbetöltő rutin, a kép, a futtatandó program. |
1. lista LD A,106 LD DE,0 EXOS 1 LD A,106 LD BC,13 LD DE,16000 EXOS 6 RET |
;a csatorna száma ;mutató a file nevére ;csatorna megnyitása funkció ;a csatorna száma ;a beolvasott byte-ok száma ;tárolási cím ;blokk olvasása funkció ;visszatérés a BASIC-hez |
2. lista DI IN A,(0B1h) PUSH AF IN A,(0B2h) PUSH AF IN A,(0B3h) PUSH AF EI LD A,120 LD B,3 EXOS 11 DI LD A,0FFh OUT (0B3h),A DEC A OUT (0B2h),A DEC A OUT (0B1h),A EI PUSH BC POP DE LD BC,(0) LD A,106 EXOS 6 LD A,106 EXOS 3 DI POP AF OUT (0B3H),A POP AF OUT (0B2h),A POP AF OUT (0B1h) EI RET | ;letiltja a megszakítást ;Z80-as 1- lap értékét ;menti el a verembe ;Z80-as 2-es lap értékét ;Z80-as 3-as lap ;újra engedélyezi a megszakítást ;a BASIC-ben VIDEO cs. ;speciális funkció hívás, ami ;visszaadja a VIDEO cs. RAM-ját ;lapozás előtt mindig célszerű ;a VIDEO RAM-ok belapozása ;a megfelelő Z80-as szegmensekre ;BC és DE felcserélése ;BASIC-ből megadott érték olvasása ;blokk olvasási funkció ;a csatorna lezárása ;az eredeti Z80-as szegmensek ; visszaállítása ;visszatérés a BASIC-hez |
|
A LORIGRAPH karaktertervező részével készített karakterek háttértárolóra menthetők. A CHRTOLT.BAS program az így kimentett karakterek betöltését végzi, és átállítja a karakterkészletet a tervezettnek megfelelően. Ez akkor gyorsabb, ha sok karaktert kell átdefiniálni, és az BASIC módszerrel már lassan menne. A felhasználó is jobban elviseli a hosszabb töltési időt, mint ha percekig kell várnia, mire a program életjelt ad magáról. A programban a beolvasó csatorna megnyitása és lezárása nem gépi kódban íródott, hanem BASIC-ből történik. Így könnyebb a fájl nevének megváltoztatása. A képbetöltő programnál is megváltoztathatjuk ilyenre a csatornamegnyitásokat. Abban a programban azért alkalmaztam a gépi kódú megnyitási formát, hogy megismerjék, de jó példának mutatkozott arra is, hogy bemutathassam, hogyan lehet több adatot átadni a gépi kódú rutinjainknak. A program átalakítása nem okozhat gondot, ha a leírást megfelelően tanulmányozzák. A 3. lista a program gépi kódú részének assembly listája, ami tulajdonképpen megfelel a 40-es sor hexadecimális számsorozatának. A programot a 80-as sortól tovább írhatjuk, illetve a meglévő programjainkat MERGE-lhetjük. Ha szalagos rendszerrel dolgozunk, akkor a karakterkészletet a kimentett program mögé vegyük fel. |
3. lista DI IN A,(0B2h) PUSH AF LD A,0FFh OUT (0B2h), EI LD A,106 LD BC,1152 LD DE,0B480 EXOS 6 DI POP AF OUT (OB2h),A EI RET | ;megszakítás letiltás ;A Z-80-as 2-es lap ;tartalmának elmentése ;A 2-es lapra a rendszer- ;szegmens belapozása ;megszakítás engedélyezés ;Csatorna szám ;A file hossza ;A karakter terület RAM-ja ;Blokk olvasása funkció ;A Z-80-as 2-es lap ;tartalmának eredeti állapota ;Vissza a BASIC-hez |