FENOMASS
Ez fenomenális!
File-név: FENAS.EXT Program neve: FENOMASS 1.2 |
Moonlight & Timelord- 1992 Editor monitor és assembler |
Bevezetésként ismerkedjünk meg a szerzőkkel és a program
nevének ismertetésével, mivel sok találgatásra adhat okot. F.E. = Fast Editor,
NOM = a monitor szó rövidítésének visszafelé történő írása, és végül az ASS
= assembler szó rövidítés. Kicsit bonyolult a név, mi is sokat gondolkodtunk
rajta. A szerzők: Richter István (TIMELORD), és Richter Tamás (MOONLIGHT).
Ennyi bevezető után nézzük mit is tud a FENOMASS.
Hatos fejlécű abszolút rendszerbővítő, igaz már elkészült a ROM-ba égetett
változat is. Kinézetre nagyon hasonlít az eddig elterjedt Asmon-, Simon monitor-assembler
programokhoz. Gyorsaságban és kezelhetőségben azonban felülmúlja azokat és
bizonyos funkciókban az eddig tapasztalt hibákat sem követi el. Szinte minden
funkció ki lett bővítve valami plusz szolgáltatással. Ami nagyon jellemző:
kiválóan támogatja a memória használatát, főleg a bővítettét. A program a
0-ás lapon fut, így tehát a felső 3 lap szabadon használható.
Most pedig röviden ismertetjük a három fő programrészt:
Monitor
A program indítása utána monitor rész jelentkezik be. A képernyő alsó sorában
a regiszter-lista látható. Mindegyik regiszterhez (kivéve az AF regisztert)
memóriadump tartozik. Ez a regiszter értékénél kisebb címen kezdődik, a regiszter
értékénél kisebb címen kezdődik, a regiszter értékét két nyíl mutatja. A AF
regiszternél a dump helyett a jelzőbitek vannak feltüntetve. A képernyő felső
részén információs üzenetek láthatóak, a belapozott szegmensekről, a rendszerben
lévő szabad, működő, hibás szegmensekről. A regiszterek felett látható a parancs
sor, ebben a sorban adhatjuk mi a parancsainkat.
A 'H' billentyűvel megjelennek a főbb menüpontok, a Shift-H lenyomására pedig
újabb parancsokat nézhetünk meg. Az összes Asmon monitor funkció megtalálható,
valahogy kibővítve, például van külön szöveg-Dump, a monitorba az ALT karakterek
is közvetlen írhatók. Új funkciók: DEFB-Block, illetve kód visszafejtés rendesen
címkézve forráskódnak. Szegmenst lehet foglalni perifériának, és a felhasználónak.
Ez főleg a forráskód megvédésére szolgál. Beállítható egy felhasználói LPT
NICK kezdőcíme, és bármikor megnézhető. Ez főleg TRACE-üzemmódnál hasznos.
A TRACE üzemmód is ismer pár plusz szolgáltatást: bármikor megnézhetők, beállíthatók
a regiszterek, egy CALL utasítást végre is hajthatunk vagy bele is léphetünk,
vagy ha ciklust futtatunk beállíthatjuk a Break Point-ot és gyors TRACE-ra
kapcsolunk, akkor visszatér a ciklus végén és nem kell perceket várni a ciklus
futtatására. A parancsokat a hozzá tartozó billentyű lenyomásával kezdeményezhetjük:
Az összes üzemmódból vissza lehet lépni a monitorhoz az ESC billentyű lenyomásával. A program 6-os fejlécű rendszerbővítő, betöltéskor az EXOS 2 szegmenst foglal le a számára. A programot a ":FENAS", ":FENA", ":FEN", ":FE" hívásokkal lehet indítani. A program inicializáláskor az első szegmens tartalmát átmásolja a PAGE0-ántalálható szegmensre, amit lefoglal 100H-3FFFH-ig. Továbbá az FD szegmenst használja képernyőmemóriának és LPT-nek. Szöveglapoknak az EXOS-tól igényel 3 szegmenst. A B1, B2, B3-as port szabadon lapozható futtatható, ezenkívül használja még a töréspontok visszatéréséhez az RSZ0-áz. Nem írja felül sem az EXOS megszakítást, sem az FF szegmenst.
EDITOR
A képkezelés a többi szövegszerkesztőkhöz képest sokkal gyorsabb és ismer
pár plusz szolgáltatást is. Van ki-be kapcsolható automatikus tabulátor pozícióba
állás, insert üzemmód, valamint következő tabulátor pozícióig törlés, beszúrás,
stb. Folyamatosan jelzi az épp szerkesztés alatt lévő forráslista hosszát
sorokban és bájtokban. Egyszerre több (max. 48 Kb-os) forráskód szerkeszthető.
A funkciók: FIND, TAB, FILE, BLOCK.
Find:
Lehet vele stringet címkeként, vagy csak simán keresni, helyettesíteni és
az esetleges fordítási hibákat is megkeresi, valamint megadott sorra mehetünk.
Tab:
Szokásos funkciók: törlés, beállítás és alapba állítás.
File:
Betölthetőek Asmon, Simon, WP, Asmen-turbo illetve Intelligent Save formátumú
fájlok. Ha Intelligent mentésű fájlt tölt, akkor a következő mentést is így
fogja elvégezni. Itt még bővebb információt kaphatunk a szövegről, valamint
törölhetjük azt.
Block:
Sajnos ez a funkció még nem működik. Ez sajnos elég nagy hiányosság, mivel
ha blokkot akarunk törölni, másolni, kénytelenek vagyunk visszatérni más szerkesztőkhöz,
ez pedig elég nehézkes és időigényes dolog.
A kurzormozgatást segítő parancsok:
SHIFT+DEL | - sor törlés |
ALT+DEL | - sor törlése + soremelés |
SHIFT+INS | - sor beszúrása |
ALT+INS | - INSERT mód be-ki kapcsolása |
CTRL+DEL | - Egy tabulátorral töröl |
CTRL+INS | - egy tabulátorral arrébb tól |
TAB | - kurzor mozgatása a következő tabulátor pozícióba |
ALT+TAB | - speciális TAB be-ki kapcsolása |
Assembler
A fordító
is megérdemli a gyors jelzőt, mivel az eddig ismert fordítókat messze felülmúlja
és nem csak sebességben! A fordítási opciókat a forrásszövegben állíthatjuk
be (Var, Load, Org, Phase.) Így fordítás közben is változtathatjuk a fordítás
módját (fordíthatunk memóriába illetve háttértárolóra, különböző fejlécekkel).
Ismer ezenkívül még IF blokkokat valamint For-Next ciklusokat. Lehetőség van
még a szimból-tábla helyének megadására, vagy a szöveg mögött, vagy külön
helyen a memóriában akár be nem lapozott szegmensre is. A fordító ezenkívül
még máshol a memóriában lévő forrásszöveget is hozzáfordít az aktuális fordítási
kódhoz, ezenkívül INCLUDE-olhatunk is, illetve adatállományt MERGE paranccsal
illeszthetünk a kódba. Ezenkívül még feltölthetjük a kódot DEFF-el illetve
DEFC-vel. Sajnos makrókat nem kezel, illetve megadott értékekkel, szavakkal,
a For-Next ciklusok használatával félig meddig kiküszöbölhető, de ez még nem
tökéletes megoldás. A program relatív adatállományt sem tud létrehozni.
A fordító ismeri az összes Z80 utasítást, beleértve az XL, XH,
YL, és YH-val való műveleteket is. Az utasításokat sorszám nélkül kell beírni.
A sor első pozíciójában kezdődő szöveget szimbólumnak (címkéknek) tekinti.
Címke nem kezdődhet számmal, nem lehet regiszterre illetve feltételre utaló
sem (pl. BC, NC) A pontal kezdődő címkét lokális változónak tekinti.
Az utasítások számértékű operandusai megadhatók:
Operandusokban bizonyos műveleteket is végrehajt:
A fordító saját utasításokat is ismer:
VAR N,sztring:
ORG NN
A címszámláló NN értéket vesz fel. Figyelem, nem úgy kezeli le, mint az ASMON,
ASMEN, mert ide tölti a lefordított kódot.
.PHASE NN
ideiglenesen NN értékre állítja a címszámlálót
.DEPHASE
Visszaállítja a címszámlálót, úgy, hogy az elmentetthez hozzáadja a közben lefordított
kód hosszát.
LOAD NN
NN címre tölti a lefordított kódot
NN értéke | 0 szegmens esetén |
4000H-FFFFH
|
1 szegmens esetén |
0-3FFFH
|
|
2 szegmens esetén |
0-7FFFH
|
|
3 szegmens esetén |
0-BFFFH
|
A program támogatja a memórialapozást is:
SEGMENS N,N,N
Ezekre a szegmensekre tölti a kódot
WORKSEGMENS N,N,N
Munkaterület. A fordító ezekre a lapokra gyűjti ki a szimbólumokat. Érdemes
a forrásszöveg elején kiadni, mert az utasítás előtt definiált címkék elvesznek.
PAGE N,N,N
Ezeken a lapokon folytatja a forrásszöveg értelmezését. Fontos, hogy az első
szegmens elején már értelmezhető szöveg legyen. "END" utasításra visszatér
az eredeti szöveghez és ott folytatja a fordítást. Nem egymásba ágyazható!
INCLUDE name
A NAME nevű file-t beolvassa és lefordítva a programba illesztti. Nem egymásba
ágyazható!
MERGE name
A NAME nevű file-t hozzáfűzi a programhoz. INCLUDE file-ban nem használható.
EQU
Szimbólum EQU NN: szimbólumnak NN értéket ad
.SET szimbólum,NN
Új értéket ad a szimbólumnak
.PRINTX SZTRING
Kiírja a képernyőre a sztringet, illetve értéket. A "%" jel utáni
részt értéknek tekinti, addig amíg a kalkulátor értelmezni tudja. A fent maradó
részt sztringként kezeli.
DEFB (DB) N,N,N,N,N,"SZTRING" vagy 'STRING'
1 byte-os értékként kezeli az operandusokat
DEFW (DW) NN,NN,NN,NN
2 byte-os értékként kezeli az operandusokat
DEFC (DC) N,NN,NN,N,N,NN
Ha az operandus relatív értéke kevesebb mint 256 akkor 1 byte-os értékként kezeli,
ha nem akkor 2 byte-os értékként kezeli. Használatával vigyázni kell, mert hiba
esetén általában mindig 1 byte-ot foglal le! (Pl: DC 255 = 1 byte, DC -1 = 1
byte, DC FFFFH = 2 byte, DC 4000H = 2 BYTE)
DEFM (DM) "SZTRING"
A karaktersorozat kódjait elhelyezi a programban
DEFS (DS) NN
NN helyet hagy a programban
DEFF (DF) NN,N,N,N,N,"SZTRING"
NN-szer fordítja le az 1. vessző utáni részt a DEFB szabályai szerint.
EXOS N
Tulajdonképpen az
RST 30H
DEFB N
Fordítódik le.
Vannak a fordítás menetét vezérlő utasítások is:
IF KIFEJEZES
1 RUTIN Ha igaz az állítás
ELSE
2 RUTIN ha hamis az állítás
ENDIF
IFT KIFEJEZÉS - Ha igaz az állítás
IFF KIFEJEZÉS - Ha hamis az állítás
IF1 - Ha a fordítás első menete folyik
IF2 - Ha a fordítás második menete folyik
.COMMENT karakter
Addig nem fordítja a forrásszöveget, amíg az adott karakterhez nem ér.
FOR NN
RUTIN
NEXT
NN-szer befordítja forrásszövegből a rutint. Nem egymásba ágyazható!
.RADIX N
Alapértelmezésű számrendszer alapja. N értéke 2-től 31-ig lehet. Továbbá megadhatók
a fontosabb számrendszerek sztringként is:
2-es:"BIN", 8-as:"OCT", 10-es:"DEC", 16-os:"HEX"
END
Forrásprogram vége.
Az ESC billentyűvel meg lehet szakítani a fordítás menetét. Hibákra különböző szövegekkel figyelmeztet. A könnyebb javíthatóság végett beszúr a szövegbe hibakaraktereket, amiket a szerkesztő F1-F4 billentyűkre megkeres. Túl sok hiba esetén (30 beszúrás) megszakítja a fordítás menetét.
A program az FD video-szegmenst és még két szabad RAM-szegmenst foglal le magának, amit nem ajánlatos felülírni. Mint eddig kiderült a FENOMASS elég jól kihasználja a memóriát és mindent elég gyorsan és kezelhetően végez. Mivel ezt a szerzők maguknak, saját ízlés és kezelhetőség kedvéért írtak, igaz nem hibátlanul, de ha valaki megtanulja kezelni és kicsit igazodik a programhoz, rögtön rájön, hogy ez szinte a legjobb Assembler-Monitor-Editor program a hibái ellenére is. A szerzők még egy bővebb dokumentum fájlt is írtak a programhoz amely nagyon részletesen leírja, hogy mit és hogyan érhetünk el a programban.