Aurora Editor 2.0 A PC-n l‚tez“ rengeteg text-editor k”zl az egyik legjobbat van szerencs‚nk bemutatni. Az 1.0-s v ltozat m‚g rengeteg kĄv nnival˘t hagyott maga ut n, de ezek nagy r‚sz‚t sikerlt megoldani az Łj verzi˘ban. Neknk sokkal szimpatikusabb, mint a Multi-edit, b r sokan erre esksznek. A ME-tel nem szenvedtnk tŁl sok ig, Ągy nem akarjuk eld”nteni, melyik a jobb, de v‚lem‚nynk szerint, az AE mindenk‚ppen a dobog˘n van. N‚zzk nagy vonalakban, mit is tud: - K‚nyelmes felhaszn l˘i fellet, Turbo Vision-szer–en fel‚pĄtve, de l‚nyegesen leegyszer–sĄtett - Az alap sz”vegszerkeszt‚si funkci˘kon kĄvl rengeteg extr t kĄn l - Term‚szetesen nem kiadv nyszerkeszt‚shez k‚szlt, hanem pl. norm l text file-ok l‚trehoz s ra, vagy ak r forr sok Ąr s hoz, s ez ut˘bbiban verhetetlen - N‚h ny ismert k”rnyezethez hozz igazĄthatjuk, teh t a billenty–kioszt s v laszthat˘an Borland, WordPerfect, Aurora, stb. stĄlusŁ - Ha ez nem felelne meg, teljesen ŁjraĄrhatjuk az editort a saj t ig‚nyeinknek megfelel“en, csak kicsit bele kell  sni magunkat a be‚pĄtett macro nyelvbe, ami egyszer–-de-nagyszer– elven m–k”dik. A kezdetek Tegyk fel, hogy sikerlt beszerezni az install verzi˘t. Tal n nem okoz tŁl nagy probl‚m t a c‚lk”nyvt r beĄr sa, ‚s a stĄlus kiv laszt sa, k˘dereknek javasoln m pl. a Borland-f‚l‚t, ‚s mondjuk a sok nyomor‚k szĄn”ssze llĄt s k”zl a Green-on-black-et. Ha mindezzel megvagyunk, t”ltsnk be valamilyen text file-t a pr˘b lkoz sokhoz. A m‚retekkel nem lehet gond, s“t! A 64K-s megk”t‚snek term‚szetesen nyoma sincs, de az sem probl‚ma neki, ha kifogyna a mem˘ri b˘l (persze 480K conventional kell neki, meg n‚mi XMS/EMS), ilyenkor swappol. Teh t ak r sok meg s file-okat is szerkeszthetnk vele. N‚zzk nagy vonalakban, a be‚pĄtett menk milyen szolg ltat sokat nyŁjtanak. A billenty–parancsokat nem k”z”ln‚nk le, mivel egyr‚szt mell‚ van Ąrva, m sr‚szt meg Łgyis  t lehet  llĄtani. A File men Ezt tal n nem kell bemutatni, akinek nem vil gosak a funkci˘i, az ink bb ne is olvassa tov bb. N‚h ny dolgot szeretn‚nk kiemelni innen: Open binary: A file-t Łgy nyitja meg, hogy nem text file-k‚nt fogjuk szerkeszteni, hanem bin risan. Ez pl. arra is j˘, hogy tetsz“legesen hosszŁ file-okat sz‚tszabdaljunk, vagy ak r kilopjunk valamilyen zen‚t, ami overlay-k‚nt viselkedik egy demo h t n stb. Term‚szetesen itt is Ąrogathatunk, ennek meg akkor lehet ‚rtelme, ha pl valamilyen zenetet magyarĄtani akarunk egy EXE-ben stb. A szerkeszt“funkci˘k itt is m–k”dnek, teh t a kijel”l‚s (SHIFT-et nyomva tartva, ill. eg‚r bal gomb nyomvatartva ‚s hŁz s  fgg“leges terletet az eg‚rrel lehet kijel”lni, mik”zben az ALT-ot nyomva tartjuk), m sol s, kiv g s  Ągy lehet ak r sz‚tszabdalni vagy ”sszerakni file-okat. Azt, hogy milyen hosszŁak legyenek a sorok bin ris szerkeszt‚skor, a Set/Binary Line Length dialog box ban adhatjuk meg. Term‚szetesen a val˘s gban nem szŁr be Enter-eket a sorok v‚g‚n, mint a legt”bb lame editor, ami ilyen partiz nakci˘kra nem is haszn lhat˘. Open Last: Az utols˘ szerkesztett file-t nyitja meg. K‚nyelmi funkci˘, de visszamen“leg el‚g sok file-nevet megjegyez a szerkeszt“. Open: Ezut n a CTRL-Tab-bal el“hĄvhatunk egy gyors directory list t, ill. sim n a kurzor le/fel-lel az el“z“leg beĄrt file-nevek k”z”tt v logathatunk. A teljes history list t a sor v‚g‚n l‚v“ le-, ill. felfel‚ mutat˘ nyĄlra clickelve kaphatjuk. Ezek a legt”bb dialog boxra szint‚n ‚rv‚nyesek (pl. Search stb). Ha nem tal ln nk, akkor sem kell megijedni, mivel az AE-ban a dialog boxok n‚gy f‚l‚k lehetnek: command line, 1-soros, 2-soros, ‚s sz‚p r‚szletes dialog box. Ezek  t llĄt s r˘l k‚s“bb m‚g lesz sz˘, a makr˘nyelv t rgyal s n l. A Window men Itt is rengeteg ismert funkci˘ k”zl v logathatunk. A kl”nlegesebb dolgok: Pan: A l t˘t‚r mozgat sa. Az AE-ben egy virtu lis, 16384*16384-es desktopon gazd lkodhatunk, ‚s az ablakokat oda rakjuk, ahova akarjuk. Azt, hogy ennek a desktopnak melyik r‚sz‚t l tjuk ‚ppen, itt lehet v ltoztatni. Ez Łgy is megtehet“, hogy a desktopot "megfogjuk" az eg‚r bal gombj val, ‚s "hŁzzuk". A desktop igen nagy, k”nny– elveszni benne, ‚s ilyenkor csak az aktĄv ablakok list ja segĄthet (Window/List). Eg‚szen j˘ ”tlet, b r ritk n van r  egetver“en nagy szks‚g. Style toggle: V ltoztathatjuk vele az adott ablak kin‚zet‚t. Legyen-e mensor, st tuszsor, tool-bar, stb. Prompt toggle: Az el“bb emlĄtett dialog boxok form j t  llĄthatjuk be vele. Figyelem, minden v ltoztat s ut n, miel“tt kil‚pn‚nk, nem  rt egy Set/Save current settings, ami elmenti ezeket. Val˘j ban ez ŁjrafordĄtja a szerkeszt“t, mivel a v ltoztat sok is a makr˘nyelvben Ąrhat˘k le, de ne v gjunk a dolgok el‚be. Block men Term‚szetesen ezek haszn lata el“tt ki kell jel”lni egy blokkot, amin majd elv‚gezzk a m–veleteket. A kl”nlegesebb funkci˘k: Fill: A kijel”lt terletet egy megadott stringgel t”lti fel. A binary m˘dban is hasznos lehet. Reformat: Norm l, balra igazĄtott  teszi a kijel”lt sz”vegr‚szt, ezenkĄvl, ha a m sodik sor beljebb van, akkor a t”bbit is hozz  igazĄtja, az els“t term‚szetesen nem b ntja. Reformat right: Ugyanaz, mint el“bb, de sorkiz r st is v‚gez, teh t a szavak k”z‚ beszŁr space-eket, hogy a sorok v‚ge egybeessen. A jobb marg˘ adja meg az utols˘ karakter hely‚t, amit a Set/Word Processing/Right Margin-nal  llĄthatunk be. Save: A kijel”lt sz”vegr‚szletet menthetjk el. A bin ris m˘dban hasznos. Sort: A kijel”lt r‚sz sorait ABC rendbe szedi, szigorŁan csak n”vekv“ rendbe tud szedni. Lowercase/Uppercase: Az ”sszes bet–t kicsire/nagyra cser‚li. Left/Right Justify, Center: A bekezd‚st balra/jobbra/k”z‚pre igazĄtja. Az AE-ben egy bekezd‚s addig tart, mĄg egy res, csak Enter-t tartalmaz˘ sort nem tal l. Search men Term‚szetesen az alap szolg ltat sokon kĄvl itt is rengeteg extra tal lhat˘: Find: A kapcsol˘k (dialog box m˘dban l tszanak, egy‚bk‚nt a sz”veg ut n /xy-t kell Ąrni. Profiknak lehet, hogy gyorsabb, de ezekkel nem foglalkozunk, aki akar, egy m sodperc alatt ut na n‚zhet a help-ben, hogy melyik kapcsol˘nak mi a jele.) sorban: kis/nagy bet–k figyelmen kĄvl hagy sa; csak teljes szavakat keres, teh t ha "Ąv"-et kerestetnk, akkor a "kVl"-n‚l nem  ll meg; ?? ; csak megsz molja, h nyszor fordul el“ az adott sz”vegr‚sz; visszafel‚ keres; csak a kijel”lt blokkban keres; a teljes sz”vegben; a fold-okat (ld. k‚s“bb) kihagyja a keres‚sb“l. Term‚szetesen history itt is van, mi t”bb, a kapcsol˘kat is kl”n elmenti. Ezek ut n a Replace, ‚s a Repeat nem okozhat gondot. Scan Files: A megadott sz”veget t”bb file-ban is keresi, amik egy k”nyvt rban kell, hogy legyenek. Ez t”k‚letesen helyettesĄti pl. a NU-ban l‚v“ Text Search-et (TS.EXE). Incremental search: Ez egy nagyon ”tletes funkci˘. Haszn lat hoz  lljunk oda, ahonnan a keres‚st kezdeni akarjuk, mivel csak el“re k‚pes haladni (teh t a file v‚ge fel‚). V lasszuk ki a Search menb“l, ‚s kezdjk folyamatosan beg‚pelni a keresend“ sz”veget. Minden karakter let‚se ut n oda ll a legels“ el“fordul sra. Ezzel gyorsan megtal lhatjuk, amit keresnk an‚lkl, hogy feleslegesen be kellene g‚pelni egy hosszabb sz”veget, vagy mindig nyomkodn nk a Repeat last search-et. Find Occurrences: A Find-n l m r emlĄtett funkci˘, csak ott kapcsol˘val kiv lthat˘. Vele teljesen egyen‚rt‚k–. Bookmark: A kurzor hely‚t jegyzi meg, egy hosszabb sz”vegben a fontosabb helyek megjel”l‚s‚re haszn lhat˘. Minden k”nyvjelz“nek kl”n neve van, amik glob lisak, teh t az ”sszes ablakb˘l hĄvhat˘k. A Place Bookmark megk‚rdezi, mi legyen k”nyvjelz“ neve, amit ‚rtelemszer–en c‚lszer– min‚l r”videbbre v lasztani. A Quick Bookmark egy "BookX" nevet ad automatikusan, ahol az X egy sz m. A Prev Bookmark-kal lehet l‚pkedni sorban a k”nyvjelz“k k”z”tt, mĄg a Goto bookmank-n l beĄrhatjuk a konkr‚t nevet, ahova ‚ppen ugrani akarunk. Goto Line/Block start/Block end: A megadott sorsz mŁ sorra (a kijel”lt blokk elej‚re/v‚g‚re) viszi a kurzort. Goto next fold: A k”vetkez“ foldra (ld. k‚s“bb) ugrik. Find matching char: Egy bonyolult kifejez‚sn‚l hasznos. Ha elveszn‚nk a (((((((rengeteg))))))) z r˘jelben (ak r kerek, sz”gletes vagy kapcsos is lehet),  lljunk arra a nyit˘-z r˘jelre (‚rtelmes), aminek a p rj t meg akarjuk keresni, ‚s ha l‚tezik, akkor ez a funkci˘ megtal lja, ‚s kiszĄnezi, hogy sz‚pen l ssuk. Goto compiler error: Ha a fordĄt˘ (merthogy az AE-be term‚szetesen bele van ‚pĄtve a makr˘nyelv fordĄt˘ja) hib t tal l, akkor automatikusan odaugrik. Ha k‚s“bb is oda kellene mennnk, haszn ljuk ezt a funkci˘t. A Fold men Ehhez el“sz”r is egy kis magyar zat. Mi is az a fold? Nos, egy nagyobb sz”vegben k”nny– elveszni. Vegynk egy p‚ld t, amikor egy forr st szerkesztnk. A m r megĄrt, j˘l m–k”d“ rutinok csak arra j˘k, hogy bel‚jk kavarodjon az ember. Ekkor hasznos lenne, ha eltntethetn‚nk “ket, de csak a szemnk el“l, a val˘s gban megmaradn nak. A fold pontosan ezt teszi. ™sszefgg“ sz”vegr‚szeket eltntet Łgy, hogy a file-ban ott maradnak, ‚s mi is b rmikor megn‚zhetjk “ket. Az‚rt, hogy tudjuk, hogy m‚gis van ott valami, az els“ sor t meghagyja a blokknak, ‚s m”g‚ z r˘jelbe odaĄrja, hogy h ny sor tartozik m‚g ide, csak most ‚ppen nem l tszik. Ez a z r˘jel term‚szetesen a kimentett file-ban nem jelenik meg. A foldokat ‚s  llapotukat (nyitott/z rt) term‚szetesen elmenti a file-ba. Ha mondjuk egy ASM-ot szerkesztnk, akkor minden folder k‚t sort ad hozz  a sz”veghez, amiket ";"-vel kezd, Ągy a TASM-n l nem sz mĄt. Egy gond van vele, m‚gpedig az, hogy ezeket a sorokat nem sz molja bele abba az ‚rt‚kbe, amit az ablakok jobb fels“ sark ban jelez. Ezek ugye az aktu lis ‚s az ”sszes sorok sz m t tartalmazz k. Ha mondjuk a TASM azt mondja, hogy hiba az 537. sorban, ‚s a file foldokat is tartalmaz, akkor az ‚letben meg nem tal ljuk. Ennek a probl‚m nak az  thidal s t bemutatjuk majd a makr˘nyelvr“l sz˘l˘ fejezetben. Egy‚bk‚nt meg lehet adni neki, hogy milyen kiterjeszt‚s– file-okn l mit haszn ljon a fold-ok file-ba Ąr s n l, hogy az pl. az adott fordĄt˘t ne hlyĄtse be. Pl. C-n‚l ‚s AML-n‚l (az AE makr˘nyelve) automatikusan a //-t haszn lja, ami szint‚n a megjegyz‚s. El“sz”r t rgyaljuk meg a fontosabb menpontokat, azt n majd n‚znk n‚h ny p‚ld t is. Create fold: L‚trehoz egy teljesen res fold-ot. L thatjuk, hogy a kezdete ‚s a v‚ge m s szĄnnel van jelezve. Fold/Unfold next line: A k”vetkez“ sort belerakja a foldba, ill. kiveszi onnan. Destroy fold: Megsznteti a foldot, amin ‚ppen  llunk (a benne l‚v“ sz”veg term‚szetesen marad, ‚s Łjra l that˘ lesz, ha ‚ppen nem volt). Open/Close fold: Kinyitja/bez rja azt a foldot, amin  llunk (ha be van z rva, akkor term‚szetesen csak az els“ sor n  llhatunk. Fold Block: A kijel”lt blokkot beteszi egy foldba, ‚s be is z rja, teh t csak az els“ sora lesz l that˘. M‚g nem emlĄtettem, hogy term‚szetesen egy foldon bell is lehetnek foldok, teh t egym sba  gyazhat˘k. Ha a blokkon bell voltak m r foldok, akkor azok csak az eggyel magasabb rend– fold kinyit sa ut n v lnak l that˘v . Fold Block flat: Ugyanaz, mint el“bb, de itt nem  gyazza egym sba a foldokat, teh t ha a kijel”lt blokkon bell voltak foldok, akkor azokat megsznteti. Destroy block folds: Azokat a foldokat sznteti meg, amiket Łgy hoztunk l‚tre, hogy blokkb˘l csin ltunk foldot. A Fold next line-nal l‚trehozottakat b‚k‚n hagyja. Open/Close block folds: Szint‚n csak a blokkokb˘l l‚trehozott foldokat nyitja/z rja Destroy/Open/Close all folds: Mint el“bb, de az ”sszes foldon v‚gzik. Export without folds: A sz”veget kimenthetjk a foldok n‚lkl m s n‚ven, teh t pl. az ASM-ban nem lesznek benne a "; [fold]" sorok. Nem kell magyar zni a jelent“s‚g‚t. Export block without folds: Ugyanez, de a kijel”lt sz”vegr‚szt menti foldok n‚lkl. P‚lda a foldok haszn lat ra: Menjnk a Help menbe (ALT-H), ‚s hozzuk be a User's guide-ot. Jel”ljk ki az els“ bekezd‚st a "This is..."-t“l eg‚szen a "FUNCTION.DOX)"-ig. Most Fold/Fold block, ‚s m ris elt–nik a sz”veg, csak az els“ sora marad meg, ‚s a v‚g‚n megjelenik egy hetes, amir“l tudjuk, hogy ott m‚g 7 sor van elrejtve. Most pr˘b ljuk a Fold/Open fold-ot, ill. a Fold/Close fold-ot, persze az open csak akkor m–k”dik, ha a kurzor az egyetlen l tsz˘ soron van, a close pedig, ha a fold b rmelyik sor n. Akkor most jel”ljk ki az "Aurora Macro Users Guide"-t˘l eg‚szen az "Acknowledgements"-ig, ‚s megint Fold/Fold block. Ha az Łjonnan kre lt foldunkat kinyitjuk, csak akkor tudunk hozz f‚rni a r‚gihez, mert az az Łjon bell volt. Ha a Fold block helyett Fold block flat-et nyomunk, akkor a r‚gi foldot megsz–nteti. A foldok f“k‚nt a kl”nb”z“ forr sok Ąr sakor tehetnek nagy szolg latot. J˘ dolog az ”sszes rutint kl”n foldba tenni, s ak r az ”sszetartoz˘kat be gyazni egy magasabb szint–be. Ezzel elkerlhetjk a felesleges p szt z st, ‚s azt, hogy a szemnk ”sszekavarodjon a sokezer sor k”z”tt. Egy apr˘ megjegyz‚s: term‚szetesen ha egy bez rt foldot m solunk, akkor a tartalma is  tm sol˘dik, nem csak az els“ sor. Edit men Az  ltal nosabb funkci˘kat nem lesz neh‚z kital lni itt sem. Amik m‚g kl”n emlĄt‚st ‚rdemelnek: Comment line: Az adott sorb˘l megjegyz‚st k‚szĄt, ill. ha az volt, akkor leszedi r˘la a megjegyz‚s jel‚t. Itt is tudja, hogy pl. az ASM kiterjeszt‚s– file-okn l ";"-t kell tennie, a C,ill. CPP-n‚l "//"-t, stb. Hasznos, ha nagyobb mennyis‚g– ”sszefgg“ programr‚szletet akarunk kiiktatni egy id“re. IdegesĄt“, ha ‚ppen k”zben volt olyan sor, ami val˘di megjegyz‚st (sz”veget) tartalmazott, akkor az el“l kiszedi pl. a pontosvessz“t, Ągy hib s lesz a forr s. Nem  rt teh t Łgy m˘dosĄtani a dolgot, hogy kl”n vesszk a be- ill. kicommentez‚st, ‚s Ągy a val˘di comment sor el‚ is nyugodtan rakhatunk m‚g egy pontosvessz“t, s a kiszed‚sn‚l sem lesznek gondok. Hi nyolom tov bb  a kijel”lt blokk kommentez‚s‚t, b r nem tk”znk semmi akad lyba, ha meg akarjuk csin lni. Enter literal: Ha itt lenyomunk egy billenty–kombin ci˘t, akkor az a megadott ASCII k˘dŁ karaktert teszi a sz”vegbe. Ez akkor hasznos, ha nem akarjuk, hogy a menk aktiv l˘djanak ahelyett, hogy a kĄv nt karakter a sz”vegben megjelenne. Egy‚bk‚nt az ALT-num.pad-del nyugodtan beĄrhatunk b rmilyen ASCII k˘dŁ karaktert, ez f“leg a binary edit-n‚l hasznos. ASCII chart: A teljes ASCII karakterk‚szletet behozza, ‚s amelyik karakteren Enter-t nyomunk, az bekerl a sz”vegbe. EzenkĄvl innen k”nnyen meg llapĄthat˘, hogy egy adott karakternek mi az ALT-k˘dja. Date/time stamp: Az aktu lis d tumot ‚s id“t szŁrja be a sz”vegbe. Term‚szetesen ez nem olyan, hogy mindig a file ment‚sekor aktualiz l˘dik, ami k‚nyelmes lenne pl. ha a forr sba automatikusan bele akarjuk Ąratni a Last edit d tum t. Expand tabs: Ha a sz”vegnk m s szerkeszt“vel k‚szlt, ‚s az bennehagyta a Tab-okat, akkor a k‚p kicsit furcs n fog festeni. Ez a funkci˘ a Tab-okat kicser‚li space-ekre, s m ris olvashat˘bb lesz a sz”veg. Highlight word: A kurzor alatt l that˘ sz˘t ‚s az ”sszes el“fordul˘ ilyet is beszĄnezhetjk, ezzel kiemelkedik a t”bbi k”zl. Ezt nem menti ki sem a file-ba, sem m shova, teh t kil‚p‚s ut n elt–nik. Egy m sik probl‚ma vele, hogy csak az angol ABC bet–it ismeri fel, teh t ha egy magyar ‚kezetes bet– van a sz˘ban, akkor m ris lehet(ne) szidni a program k‚szĄt“it, de ezt kb. 1 perc alatt kijavĄthatjuk, l sd a makr˘nyelvn‚l. Ha megnyomtuk az Edit/Highlight word-”t, akkor el“t–nik egy popup men, aminek segĄts‚g‚vel megadhatjuk az adott sz˘ szĄn‚t. A None-vel  llĄthatjuk vissza a norm l  llapotot. Clip men A clipboard funkci˘kn l csak annyit szeretn‚k kiemelni, hogy a program egyszerre tetsz“leges sz mŁ clipboard-ot kezel, az aktu lisat a Clip/Current clipboard-n l adhatjuk meg. Alap llapotban egy "clip" nev– van, de ha m s nevet Ąrunk be, akkor az lesz az aktu lis, ‚s term‚szetesen a r‚gi clipboard tartalma megmarad, s Łjra haszn lhatjuk is, mihelyt visszakapcsolunk r . Sajnos a history innen kimaradt, Łgyhogy ne felejtsk el a haszn lt clipboardok neveit! Print men Az AE-t nem ‚ppen a sz‚p kiadv nyok nyomtat s ra tal lt k ki, de az‚rt n‚ha hasznos lehet valami source-t kinyomtatni. Az alap dolgokat be llĄthatjuk a Print/Printer settings-ben. Innen hi nyolom a syntax highlighting-ot (l sd k‚s“bb), teh t a sz‚pen kiszĄnezett sz”vegnket ”sszefolyva nyomtatja ki, pedig milyen sz‚p lenne, ha pl. a kulcsszavakat bold-ban, a megjegyz‚seket d“lten lehetne szedetni, de nem... Set men Itt n‚h ny elemi be llĄt st v‚gezhetnk el, a program forr saiba val˘ belefullad s n‚lkl. Az Autoindent az Enter ut n a kurzort automatikusan az el“z“ sor els“ nem space karaktere al  viszi, ez a struktŁr lt forr sokn l nagyon hasznos. A Backup-ot nem nagyon kell magyar zni. Ha be van kapcsolva, akkor .BAK kiterjeszt‚ssel elmenti a r‚gi file-t, ‚s nem Ąrja fell. A kiterjeszt‚s term‚szetesen  t llĄthat˘, de ahhoz m r kicsit turk lni kell (ld. k‚s“bb). Ha a Line Draw be van kapcsolva, akkor a kurzor mozg sa k”zben vonalat rajzol. Azt, hogy milyen vonalat hŁzzon, a Line sytle-ban adhatjuk meg. Match character: A kl”nb”z“ z r˘jelek nyit˘ fel‚nek beĄr sakor automatikusan beĄrja a z r˘ fel‚t, persze csak ha be van kapcsolva. Smart tabs: Bekapcsolt  llapotban a Tab let‚s‚re az el“z“ sorban megkeresi a k”vetkez“ sz˘ elej‚t, ‚s az aktu lis sorban a kurzort ez al  viszi. Syntax highlighting: A kl”nb”z“ programnyelvekn‚l sz‚pen kiemeli a kulcsszavakat, sz”vegeket, sz mokat, mindet m s-m s szĄnnel. Azon kĄvl, hogy sz‚p, igaz n hasznos, ‚s gyors. Tartsuk bekapcsolva, persze csak ha source-t szerkesztnk. Translate: Az AE-nak van egy olyan funkci˘ja, hogy a gyakran elg‚pelt szavakat r”gt”n kijavĄtja. Ezt kapcsolhatjuk be. Alap llapotban nagyon kev‚s dolgot ismer, pl. az "adn"-ot "and"-ra javĄtja, de ez tetsz“leges m‚rt‚kben b“vĄthet“. (ld. macro) Word wrap ‚s Live word wrap: Automatikusan sorokra t”rdeli a sz”veget, mik”zben g‚pelnk, an‚lkl, hogy neknk Enter-eket kellene t”getni. Ha el‚rjk a jobb marg˘t, r”gt”n  tdobja az adott sz˘t a k”vetkez“ sorba, ‚s mi folytathatjuk a sz”vegel‚st. A Live word wrap kicsit kultŁr ltabb. Help A programhoz h romf‚le dokument ci˘ l‚tezik. Mindh rom kl”n text file-ban van elhelyezve, teh t sajnos nincs a k‚nyelmes hypertext. A User's guide-ban a sz”vegszerkeszt“ funkci˘k leĄr sa tal lhat˘, a Language Reference-ben a makr˘nyelv fel‚pĄt‚se ‚s a be‚pĄtett parancsok leĄr sa kapott helyet. Ehhez a kett“h”z tartozik egy Topic is, ami kicsit megk”nnyĄti az‚rt a haszn latukat. Ha pl. egy menpont pontos leĄr s ra vagyunk kĄv ncsiak, jegyezzk meg a nev‚t, hĄvjuk be a User's guide-ot, ‚s Find-del kerestessk meg. Megesik, hogy nem r”gt”n odal‚p, ez kicsit k‚nyelmetlen. Itt egy‚bk‚nt l thatjuk, hogy minden egyes menbeli funkci˘nak megfelel egy fggv‚ny, melynek nev‚t szint‚n leolvashatjuk. A makr˘programoz s k”zben lehet hasznos a Function reference, aminek hĄv sa el“tt  lljunk r  arra az utasĄt sra, amir“ll b“vebb infot szeretn‚nk olvasni. Ekkor megkeresi, ‚s ha alap fggv‚ny, akkor a leĄr s t, vagy ha mell‚kelt‚k, akkor a forr s t olvashatjuk. Macro Az els“ n‚h ny menpont segĄts‚g‚vel felvetethetjk az  ltalunk sorban v‚grehajtott dolgokat, ‚s ezeket j tszhatjuk vissza, egy billenty–kombin ci˘t rendelhetnk hozz , vagy ak r menthetjk/t”lthetjk. Ez csak az‚rt van, hogy a kezd“k is tudjanak n‚h ny egyszer–bb dolgot automatiz lni, de sokkal hat‚konyabb, ha mi magunk Ąrunk n‚h ny makr˘t. A Sample utility macros menpont n‚h ny gy rilag megĄrt p‚ld t t r el‚nk, ezek k”zl igen hasznos a kijel”lt terlet k”r‚ keret rajzol s; a Display key assignments, aminek segĄts‚g‚vel kifil˘zhatjuk, hogy egy Łj funkci˘t melyik billenty–kombin ci˘ra tegynk, hogy biztosan ne legyen kavarod s amiatt, hogy esetleg m r foglalt lenne; a Display keycodes, ami pl. a billenty–zetkezel‚sn‚l segĄthet; valamint a Run installation, amivel Łjrainstall lhatjuk a programot, de ezt csak addig aj nlan m, mĄg nem nyŁlk ltunk bele tŁls gosan, ellenkez“ esetben ugyanis vagy feleslegesen dolgoztunk, vagy rosszabb esetben ”sszeakad valamivel. Az OS command/capture egy-egy DOS parancsot hajt v‚gre (ak r m s programot is indĄthatunk), a capture be is hozza a k‚perny“ tartalm t egy kl”n ablakba. Ennek m‚g nagyon fontos szerepe lesz az egyes programok elindĄtgat s ban (pl. TASM, TD), csak akkor k”zvetlenl a makr˘nyelvi form jukkal hĄvjuk “ket (pl. "runcap", stb). File Manager Nem sz˘ltam m‚g a File managerr“l, ami a File menben tal lhat˘. Ez egy teljesen Łj ablak, ami a file-ok bet”lt‚s‚n kĄvl m sol sra, t”rl‚sre is j˘, sz˘val egy  tlagos file manager, de az‚rt nem egy DosNavigator. Azt hiszem, felesleges lenne v‚gigmenni a menin, hiszen vagy nagyon hasonlĄtanak a sz”vegszerkeszt“ ablakok menire, vagy b rki kital ln , hogy mit csin lnak. Az AML (Aurora Macro Language) El‚rkeztnk v‚gre az editor legkiemelked“bb funkci˘j hoz, a makr˘nyelv‚hez. Most csak ĄzelĄt“t adhatunk a program tud s b˘l, az alapszab lyokb˘l, s aki kedvet kap a nyelv b“vebb megismer‚s‚hez, annak melegen aj nlom, hogy ne sajn ljon r  ak r egy napot is, hogy  tb”ng‚ssze a r‚szletes dokument ci˘t, ‚s pr˘b lkozzon saj t ig‚nyeinek megfelel“ fggv‚nyek Ąr s ra. Az alapok Az AML megtanul sa senkinek sem okozhat gondot, hiszen sokkal egyszer–bb, mint b rmilyen komolyabb programoz si nyelv. Az eg‚sz k”rnyezet objektumorient lt, de ebb“l eleinte nem sokat l tunk, ‚s nem is igaz n kell, teh t nincs meg az a vesz‚ly, hogy belefulladunk a Turbo Vision-be. Minden ablakhoz hozz  van rendelve egy objektum, amiben a szerkeszt“funkci˘k le vannak Ąrva. Ez lehet“v‚ teszi, hogy kl”nb”z“ tĄpusŁ file-ok eset‚ben teljesen m shogy n‚zzenek ki a szerkeszt“ablakok, m sok legyenek a menk, a billenty–kombin ci˘k, egysz˘val mindent testreszabhatunk. L ssuk a nyelv alapelemeit! A v ltoz˘k Az AML-ben tĄpus n‚lkli v ltoz˘k vannak. Ez azt jelenti, hogy nem kell “ket deklar lni, de ugyanakkor nem is ellen“rzi a helyes haszn lat t. A gyakorlatban k‚tf‚le v ltoz˘tĄpus haszn latos: az eg‚sz (32-bites), ‚s a string, ami max. 16000 karakter hosszŁ lehet. Ebb“l ad˘dik, hogy a 0 ugyanaz, mint a "" (res string), att˘l fgg“en, hogy hol haszn ljuk. A v ltoz˘nevek hasonl˘ak a t”bbi nyelvhez, teh t bet–kb“l ‚s sz mokb˘l (‚s m‚g n‚h ny speci lis karakterb“l)  llhatnak, de bet–vel kell kezd“dnik. Az AML nem kl”nb”zteti meg a kis bet–ket a nagy bet–kt“l sem a v ltoz˘nevekn‚l sem m sutt. A kulcsszavak Csak egy r”vid ”sszefoglal˘ a fontosabbakr˘l: and, or, not, shl, shr, mod: logikai vagy matematikai oper torok if, if? then, elseif: felt‚teles el gaz s repeat, until, do, while, loop: ciklusszervez‚s case, when, break: sz‚tv laszt s end: mindennek ezzel kell v‚gz“dnie, mint a Pascalban key: billenty–defini l s menu, item, menubar: mendefini l s object, function, return, var Kezdjnk bele! A pr˘b lgat sokat megel“z“en nem  rthat, ha k‚szĄtnk egy m solatot az eg‚sz szerkeszt“r“l arra az esetre, ha csak rontan nk a helyzeten. El“sz”r t”ltsk be a MAIN.AML-t, amin m ris elkezdhetjk a vizsg l˘d st. L tszik, hogy kl”nb”z“ objektumokat hoz l‚tre, amiket "object" kulcssz˘ vezet be. El“sz”r az "a" nev– objectet hozza l‚tre, amibe belefordĄtja ("include") a DEFINE.AML-t ‚s a SYSTEM.AML-t. Ez az objektum a f“-f“ “s, mindent tartalmaz. Ezut n a "prf" objectet hozza l‚tre, ami a preferences r”vidĄt‚se, ‚s ‚rtelemszer–en a CONFIG.AML-t fordĄtja bele. Mivel m sodszorra hivatkozunk az "a" object-re, m r nem hozza l‚tre (hiszen l‚tezik), csak aktĄvv  teszi az "object" kulcssz˘. L thatjuk, hogy m‚g belefordĄtja az ”sszes .AML-t, amit csak adtak a szerkeszt“h”z. Teh t, amikor nyomunk egy Set/Recompile editor-t, akkor csak lefordĄtja ezt a file-t ‚s l‚trehozza az A.X-et. Ebbe m‚g beleteszi a LIB.X-et ‚s az INSTALL.X-et is. A LIB tartalmazza az alap funkci˘kat, amiknek a forr s t nem mell‚kelik. Menjnk egy kicsit tov bb a n‚zel“d‚ssel: L‚pjnk be a Macro-ba, ‚s hĄvjuk be a Configuration-t. Ez bet”lti neknk a CONFIG.AML-t, amiben a szerkeszt“ legfontosabb jellemz“it Ąrhatjuk  t. Minden be van kommentezve, Ągy nem okozhat kl”n”sebb gondot kital lni, mi mit jelent, de n‚h ny dologra az‚rt felhĄvn m a figyelmet. El“sz”r is, ez egy include file (ak r a t”bbi, kiv‚ve a MAIN.AML-t), ‚s az "a" nev– objectbe fordĄt˘dik bele. A "set" paranccsal a kl”nb”z“ v ltoz˘knak adunk ‚rt‚keket, amiket a t”bbi fggv‚ny megvizsg l, ‚s annak megfelel“en m–k”dik. Mi is l‚trehozhatunk ide b rmilyen v ltoz˘kat, amiknek a lekezel‚s‚r“l term‚szetesen saj t fggv‚nyeinknek kell gondoskodniuk. Ennyit akkor a preferences-r“l. Ha a Macro/Keys-t aktiv ljuk, akkor a KBD.AML t”lt“dik be. Ez m r sokkal ‚rdekesebb. Itt m r van n‚h ny object, pl. az "edit_fmgr" (ami a szerkeszt“ablakok ‚s a file manager k”z”s dolgait tartalmazza), ebb“l k”vetkez“en van kl”n "edit" ‚s "fmgr" is. A "prompt" a dialog boxok‚ (pl. Find, Open), a "win" a mozgathat˘ ablakok‚ Łgy  ltal ban, mĄg a "mon" (tal n ink bb common-nak kellene lennie) a mindenf‚le. Minden esem‚nynek van saj t fggv‚nye, amit a "function" kulcssz˘ vezet be, de a billenty–lenyom sok kicsit kl”nb”znek, mert ezek el“tt "key" van, ‚s <>-ek k”z”tt van a billenty–kombin ci˘. Nem lehet minden lehet“s‚get kihaszn lni, de az‚rt Ągy is el‚g sok van bel“lk. A lehets‚ges billenty–kombin ci˘k list j t a Macro/Sample utility macros/Display key assignments-n‚l olvashatjuk le. Ebb“l kiderl, hogy az ALT-SHIFT-CTRL gombokat nem lehet kombin lni. A "key"-n‚l m‚g l tszik, hogy ha az adott funkci˘ egy sorban elf‚r, akkor ok, ha nem, akkor az utols˘ hozz  tartoz˘ sor ut n kell egy "end" is. A v‚grehajtand˘ funkci˘kn l l‚v“ fggv‚nyekr“l mind k‚rhetnk help-et a SHIFT-F1-gyel (pl. gotomenu, gotobar, call, pageup - ezek mind fggv‚nyek, ‚s azt hiszem, el‚g egy‚rtelm–ek is). L thatjuk, hogy az ”sszes billenty–lenyom s itt van meghat rozva, bele‚rtve a menk aktiv l s t is, teh t minden menfunkci˘nak is kl”n fggv‚nye van. A billenty–kioszt s sz munkra megfelel“  tĄr s val el‚g j˘l el lehet t”lteni az id“t, de ez m‚g csak a kezdet. A t”bbi file-t m r magunknak kell bet”lteni. A DEFINE.AML-ben van pl. az ”sszes be‚pĄtett fggv‚ny deklar ci˘ja, valamint a "color" fggv‚ny, amit a COLOR.AML-ben haszn lunk az egyes elemek szĄneinek meghat roz s ra. A SYNTAX.AML-be is n‚zznk bele, hiszen ez felel“s a Syntax highlighting-‚rt. Az elej‚n van egy "onsyntax" nev– fggv‚ny, amit az "a" objektumba rak. Ez d”nti el, hogy milyen tĄpusŁ a file (a getext a file kiterjeszt‚s‚t adja vissza), ‚s visszat‚r a megfelel“ objektum nev‚vel. A return-t felesleges keresni, alap‚rtelmez‚s, teh t pl. a when ".AML" "AML" sor az "AML"-t adja vissza, persze csak akkor, ha a vizsg lt v ltoz˘ ‚rt‚ke ".AML" volt. Ezek ut n minden file-tĄpushoz tartozik egy kl”n objektum, amit a syntax highlighting kialakĄt s hoz haszn l az editor. Sorban megadhatjuk az egyes elemek felismer‚s‚re, ill. szĄn‚re vonatkoz˘ adatokat, a megjegyz‚sek alapj n nem lesz neh‚z. A szĄnek nevei (deklar ci˘i) a DEFINE.AML-ben vannak. Tal n kital lta m r mindenki, hogy a "keyword" kulcssz˘ ut n az adott nyelv kulcsszavait kell felsorolni, amiket m s szĄnnel jelenĄt meg. EzenkĄvl kl”n is megadhatjuk, hogy egyes szavaknak milyen legyen a szĄnk, ezt teszi az Edit/Highlight word is. Egyszer–en csak megadjuk a nev‚t, egy "_" (al hŁz sjel)-lel az elej‚n, ezzel jelezve, hogy objektum v ltoz˘. Pl. az "asm" objektumba ha beĄrjuk a keyword-”k felsorol sa ut n, hogy "_eax = color white on black", akkor az "eax" (mindegy, hogy kis- vagy nagybet–) fekete alapon feh‚rrel fog megjelenni. Ezt hĄvj k syntax highlighting-nek. N‚h ny megjegyz‚s: Az eredeti, install verzi˘ban kl”n van egy SYNTAX.AML ‚s egy SYNTAX2.AML, ez ut˘bbit m soljuk be az el“bbibe, kis m˘dosĄt s az "onsyntax" fggv‚nyen, ‚s fordĄtsuk Łjra az eg‚szet (Set/Recompile editor). Ez az‚rt kellett, mert a m sodik tartalmazta pl. az asm objectet. A tov bbiakra is igaz, hogy a v ltoztat sok csak akkor l‚pnek ‚letbe, ha a fordĄt s ut n kil‚pnk, ‚s ŁjraindĄtjuk az AE-t. A "syntax" kulcssz˘n l az utols˘ sz m a sok "color" el“tt az az ‚rt‚k, amivel a multi-line comment-eket visszafel‚ is vizsg lja. Pl. a C-ben van ugye a "//", ami azt az egy sort jelenti, ‚s a /* */ p ros, ami t”bb sort. Ha t”rt‚netesen egy nagyobb comment csak mondjuk a k”zep‚t“l l tsz˘dna, akkor a program nem tudhatja, hogy az megjegyz‚s, ‚s Ągy nem szĄnezi  t a syntax highlightingnek megfelel“en. Ha ezt a "no. of lines to scan backward"-ot megemeljk, akkor a szerkeszt“ ennyi sorral mindig visszafel‚ is n‚z, ‚s ‚szreveszi az ilyen nagyobb commenteket. A TRAN.AML-ben a translate objektum kapott helyet. Ez a m r emlĄtett automatikus helyreigazĄt s. Ezt k‚tf‚le m˘don lehet megejteni. Az egyszer–bb, amikor megadjuk, hogy milyen sz˘t mire cser‚ljen, pl. a set "adn" "and" a klasszikus p‚lda. Megtehetjk azonban azt is, hogy valamilyen sz˘ beĄr s ra elinduljon egy fggv‚ny (semmi extr t nem kell nyomni, ez‚rt ezzel a funkci˘val az‚rt vigy zzunk). Ilyenkor "function"-nel kell megadni a fggv‚nyt, a neve pedig a beĄrand˘ sz˘. N‚zzk meg pl. a kiss‚ lentebb tal lhat˘ "dt" function-t, ami az aktu lis d tumot+id“t helyezi el a dt sz˘ helyett. A MENU.AML tartalmazza a menk kin‚zet‚re vonatkoz˘ definĄci˘kat. Ezt sem  rt megvizsg lni kiss‚, miel“tt mindent t”nkretesznk. Nem hiszem, hogy kl”n”sebben sok komment r kellene hozz . A "menu", ill. "menubar" kulcssz˘t k”vet“en "item"-mel bevezetve helyezkednek el a menk nevei, ut nuk pedig a v‚grehajtand˘ funkci˘k. Aki meg akar fulladni, az belen‚zhet az EXT.AML-be is, ebben egy csom˘ hasznos funkci˘ forr sa tal lhat˘, s sokat lehet bel“le tanulni, a help segĄts‚g‚vel. Sajnos mindenre nem tudunk kit‚rni, Ągy aki a nyelv pontos leĄr s ra v gyik (ami az‚rt szks‚ges is a komolyabb  talakĄt sokhoz), javasoln m a Language reference  ttanulm nyoz s t. Ezek ut n pedig egy el‚g hosszŁ AML forr s k”vetkezik, n‚h ny  talakĄt st eszk”z”lv‚n, s Ągy igaz n megk”nnyĄthetjk az ASM-ok Ąr s t. N‚h ny dolog a C forr sokhoz is elk‚szlt, de az m r nem annyira hangsŁlyos. Ezeket a rutinokat el‚g r‚szletesen el fogom magyar zni, Ągy k”nnyebb lesz els“ r n‚z‚sre is meg‚rteni. A MAIN.AML-be illesszk be az al bbi k‚t sort (a v‚g‚re) // Improvements (C) DoT/BEE, 1995 include bootpath "dot1.aml" rtelemszer–en a t”bbi forr st a DOT1.AML-be tegyk. El“sz”r r”viden arr˘l, hogy milyen v ltoztat sokat fogunk eszk”z”lni. Az editor minden file bet”lt‚sekor ‚szre fogja venni a file kiterjeszt‚s‚t, ‚s eld”nti, hogy melyik objektumot rendelje hozz  a szerkeszt“ablakhoz. Az ASM-oknak (valamint az INC ‚s EXT-nek is) elk‚szl egy "asm_edit", a C-nek ‚s CPP-nek egy "cpp_edit" objektum. A menn is alakĄtunk egy kicsit, de csak a File ment defini ljuk  t, ebben is az About-ot, csak a p‚lda kedv‚‚rt. Az asm file-okn l egy kicsit felfejlesztjk az autoindent-et, kicsit hasonlĄt a C64-en l‚v“ Turbo Assembler-hez, amely minden sort ellen“riz, ‚s automatikusan a hely‚re rak. Mi csak ez ut˘bbit fogjuk megoldani. Elk‚szl m‚g n‚h ny fggv‚ny a billenty–zethez rendelve, a k”nnyebb munk t el“segĄtend“. A tov bbiakban a megjegyz‚sek //-rel kezd“dnek // Ez egy objektum annak a dialog boxnak a lekezel‚s‚re, ami az About // kiv laszt s ra nyĄlik object MSGDialog // Ha a bal eg‚rgombot lenyomjuk, meg kell vizsg lni, hogy az OK buttonon // tettk-e ezt function my = (virtorow( getmousey 'e')) // a getmousey a megnyitott ablak bal fels“ sark hoz viszonyĄtva // adja vissza az eg‚r Y koordin t j t. A virtorow ezt a k‚perny“ bal // fels“ sark hoz viszonyĄtva konvert lja. Ez el‚g, mivel az ablakot // Łgysem lehet mozgatni, nem akartuk tŁlbonyolĄtani. mx = (virtocol( getmousex 'e')) // Ugyanez, mint el“bbb, csak az X koordin t ra vonatkoz˘an. if ((my>11) and (mx>31) and (mx<36)) then // Most megvizsg ljuk, hogy az OK gombon volt-e, ‚s ha igen, akkor // szimul ljuk a gomb lenyom s t writestr " OK " (color white on green) 33 12 // az OK-ot eggyel feljebb teszi writestr " " (color black on gray) 32 12 writestr " " (color black on gray) 33 13 // ez pedig eltnteti az  rny‚kot end end function // ha felengedtk az eg‚r bal gombj t, ‚s az az OK buttonon t”rt‚nt, // akkor v‚get vetnk az ablaknak a destroywindow-val. my = (virtorow( getmousey 'e')) mx = (virtocol( getmousex 'e')) if ((my>11) and (mx>31) and (mx<36)) then destroywindow end end key // Ugyanez t”rt‚nik akkor is, ha szimpla Enter-t tnk. destroywindow end // Az "a" objektumba az Łj menk definĄci˘it kell megadni, a r‚giek egy // r‚sz‚t fellĄrva. Az ezekhez tartoz˘ fggv‚nyek is itt kaptak helyet. object a // Ez lesz az ASM-n l az About ablakot lekezel“ fggv‚ny function ASMAbout createwindow // l‚trehozunk egy ablakot, ‚s be llĄtjuk a jellemz“it setwinobj "MSGDialog" // ez annak az objektumnak a neve, amit hozz rendelnk. // Az el“bb Ąrtuk meg! setframe "bn" // van kerete ‚s a tetej‚n sz”veg setborder "1i" // az 1-es a sima keretet jel”li, az i a 3D-t setcolor 0 127 // a h tt‚r szĄne setcolor 5 112 // a sz”veg‚ sizewindow 6 5 72 20 "ad" // az ablak m‚retei ‚s pozĄci˘ja setshadow 2 1 settitle " About " 'ncd' // ez lesz a cĄme // itt pedig j”n a rizsa. A writestr a megadott sz”veget // adott szĄnnel az utols˘ k‚t sz m  ltal meghat rozott // pozĄci˘ba rakja ki. writestr "ASM-style Aurora Editor" (color black on gray) 23 2 writestr "(C) DoT / Binary Empire Entertainment" (color black on gray) 16 4 writestr "Many macros added for edit your ASM-sources easier!" (color black on gray) 8 6 writestr "The editor autodetects the file format from the extension" (color black on gray) 5 7 writestr "and select an edit-mode. " (color black on gray) 24 8 writestr "Make time to learn the functions of Aurora Editor!" (color black on gray) 9 9 writestr "It is the best source/dos text editor around the world" (color black on gray) 7 10 writestr " OK " (color white on green) 32 12 writestr "____" (color black on gray) 33 13 writestr "_" (color black on gray) 36 12 end function CPPAbout // Ez teljesen ugyanaz, mint az el“bb volt, eltekintve att˘l // az apr˘s gt˘l, hogy a C forr sok szerkeszt‚sekor lehet // el“hĄvni. createwindow setwinobj "MSGDialog" setframe "bn" setborder "1i" setcolor 0 127 setcolor 5 112 sizewindow 6 5 72 20 "ad" setshadow 2 1 settitle " About " 'ncd' writestr "C++-style Aurora Editor" (color black on gray) 23 2 writestr "(C) DoT / Binary Empire Entertainment" (color black on gray) 16 4 writestr "Many macros added for edit your C++-sources easier!" (color black on gray) 8 6 writestr "The editor autodetects the file format from the extension" (color black on gray) 5 7 writestr "and select an edit-mode. " (color black on gray) 24 8 writestr "Make time to learn the functions of Aurora Editor!" (color black on gray) 9 9 writestr "It is the best source/dos text editor around the world" (color black on gray) 7 10 writestr " OK " (color white on green) 32 12 writestr "____" (color black on gray) 33 13 writestr "_" (color black on gray) 36 12 end // Az EditMen fggv‚ny az ablakok Łjrarajzol sakor meghĄv˘dik, ‚s megrajzolja // a mensort. Itt lehet“s‚gnk van sz‚tv lasztani a kl”nb”z“ tĄpusŁ file-ok // menit. function EditMen fn = getbufname fext = getext fn // elk‚rjk a file-n‚v kiterjeszt‚s‚t. case fext when ".ASM",".INC", ".EXT" // ha ASM vagy t rsai menubar "" 1 item "&File" "ASMeditFile" // Ezt v ltoztattuk meg! item "&Window" "editWindow" item "&Block" "editBlock" item "&Search" "editSearch" item "F&old" "editFold" item "&Edit" "editEdit" item "&Clip" "editClip" item "&Print" "editPrint" item "Se&t" "editSet" item "&AML" "editMacro" item "&Help" "editHelp" end when ".CPP",".C",".H" // ha C menubar "" 1 item "&File" "CPPeditFile" item "&Window" "editWindow" item "&Block" "editBlock" item "&Search" "editSearch" item "F&old" "editFold" item "&Edit" "editEdit" item "&Clip" "editClip" item "&Print" "editPrint" item "Se&t" "editSet" item "&AML" "editMacro" item "&Help" "editHelp" end // kl”nben marad otherwise menubar "" 1 item "&File" "editFile" item "&Window" "editWindow" item "&Block" "editBlock" item "&Search" "editSearch" item "F&old" "editFold" item "&Edit" "editEdit" item "&Clip" "editClip" item "&Print" "editPrint" item "Se&t" "editSet" item "&AML" "editMacro" item "&Help" "editHelp" end end // CASE end // EditMen // Az almenk megv ltoztat sa menu "ASMeditFile" item " &New " opennew item " &Open.. " askopen item " Open and &Insert.. " askinsert item " Open &Binary.." askopenb item " Open Las&t " openlast item " &Rename.. " askname item " &Save " save item " Sa&ve As.." asksaveas item "-" item " &File Manager.. " open "*.*" item " Ne&xt" nextfile item " &Prev" prevfile item " &List.. " filelist item "-" item " &Close " close item " Close &All " closeall item " Sav&e and Close " close 's' item " Save an&d Close All" closeall 's' item "-" item " Abo&ut.." ASMAbout // itt csak ez az Łj end menu "CPPeditFile" item " &New " opennew item " &Open.. " askopen item " Open and &Insert.. " askinsert item " Open &Binary.." askopenb item " Open Las&t " openlast item " &Rename.. " askname item " &Save " save item " Sa&ve As.." asksaveas item "-" item " &File Manager.. " open "*.*" item " Ne&xt" nextfile item " &Prev" prevfile item " &List.. " filelist item "-" item " &Close " close item " Close &All " closeall item " Sav&e and Close " close 's' item " Save an&d Close All" closeall 's' item "-" item " Abo&ut.." CPPAbout // szint‚n end // ez egy Łn. Popup men, amit valamilyen billenty– lenyom s ra hĄvhatunk // el“. N lunk ez az F12-re fog bek”vetkezni. N‚h ny hasznosabb funkci˘t tartalmaz. menu "ASMpopup" item " &Compile ASM file " call item " &Goto next compiler error " call item "-" item " Compile, link, &debug project " call item " Compile, link and &run " call end // Ez az a szerkeszt“ objektum, amit az ASM file-okhoz fogunk hozz rendelni. // Az edit-b“l sz rmaztatjuk, teh t annak funkci˘it b“vĄtjk ki. object asm_edit (edit) // Compile project of the current edit window. Returns the executable name. /* Szinte mindig fenn ll az az eset, hogy egy programot t”bb forr sr‚szb“l pakolunk ”ssze, ezek ak r kl”nb”z“ nyelven is Ąr˘dhatnak. K‚nyelmes, ha nem kell kil‚pni a szerkeszt“b“l ahhoz, hogy lefordĄtsuk ‚s futtassuk “ket. Ezt el“segĄtend“ hozzunk l‚tre az aktu lis k”nyvt rban egy AE_COMP.CFG file-t ami tartalmaz n‚mi infot a fordĄt sr˘l ‚s linkel‚sr“l, az al bbi form tumban: .... $a src1.asm $a src2.asm $a rout.asm $p mainfunc.pas $c fastgr.cpp #LINKCMD tlink /t /v src1.obj+src2.obj+rout.obj+mainfunc.obj+fastgr.obj,progi.exe #EXENAME prog.exe Tal n nem neh‚z kital lni, hogy pl. az ASM forr soknak $a-val, a C-nek $c-vel stb. kell kezd“dnie. A #LINKCMD azt a DOS parancssort tartalmazza, amit a linkel‚shez v‚gez. Az #EXENAME pedig az indĄt shoz ‚s a debughoz kell. */ function CompileProject // Ez a fggv‚ny megpr˘b l lefordĄtani egy ilyen programhalmazt. // Egyel“re csak ASM-okat ismer, de k”nnyen kib“vĄthet“ // Az aktu lis forr s path-j ban keresi az AE_COMP.CFG-t cfgdir = getbufname cfgdir = getpath cfgdir open cfgdir + "AE_COMP.CFG" // miut n megnyitottuk a file-t, az elej‚re  llunk a kurzorral col 1 row 1 // compile ASM files // AmĄg tal l $a-kat, megkĄs‚rli lefordĄtani while find "$a " do // a filen‚v beolvas sa a bufferb“l fn = gettext ((getcol)+3) (getlinelen) // ElindĄtja a TASM-ot. Figyelem! A backslash-t dupl n kell beĄrni. run "c:\\bp\\bin\\tasm.exe /m2 /zi "+fn +" >nul" end // Megkeressk a linkel‚sre vonatkoz˘ utasĄt ssort, ‚s azt is // v‚grehajtjuk find "#LINKCMD " fn = gettext ((getcol)+9) (getlinelen) run fn +" >nul" down col 1 // a fggv‚ny az indĄthat˘ file nev‚vel t‚r vissza, miut n lez rta // a config file-t find "#EXENAME " fn = gettext ((getcol)+9) (getlinelen) close return fn end // Ezt haszn ljuk a kl”n ll˘ ASM-ok fordĄt s ra. A hibazeneteket az // "errors.lst"-be menti, Ągy megval˘sĄthatjuk az automatikusan-a-hib s-sorra // ugr s k‚nyelmi funkci˘t is. function runcap2 (command options) fn = getpath (options) run command + options + " >c:\\errors.lst" end /* Ez felel“s a k”vetkez“ hib s sorra val˘ ugr s‚rt. Haszn lata: el“sz”r fordĄtsuk le az aktu lis ablakot (F9), persze el“tte nem  rt save. Ezut n nyomhatjuk az Alt-F7-et, ami meghĄvja ezt a fggv‚nyt. Beolvassa az errors.lst- b“l a k”vetkez“ hibazenetet (a TASM-ot direkt megk‚rtk arra, hogy a hib s sort is Ąrja oda, Ągy a fold-ok ellen‚re is meg tudjuk tal lni), ‚s megkeresi az adott sort. Ha nem tal lta, akkor egy Can't find the next error zenetet kld a st tuszsorba (ez lehet fell is!), illetve ha elfogytak volna a hib k, akkor egy No more compiler errors-szal dv”z”l. Ha ez a javĄtgat s v‚geredm‚nye, nem  rt ŁjrafordĄtani (save, F9), ‚s ha ezut n r”gt”n azt Ąrja az Alt-F7, hogy none errors, akkor lehet ”rlni. */ function gotoerror open "c:\\errors.lst" pushcursor row 1 col 1 // Ez egy kicsit kavar s, de ha megn‚zitek, milyen list t produk l // a TASM a hib kr˘l (csillagok, sorsz m a z r˘jelben, stb), akkor // tal n meg lehet ‚rteni. A l‚nyeg, hogy itt keressk meg a k”v. // hib s sort az errors.lst-ben. if find "Ass" 'i' then popcursor if find "*" 'l' then find " " p0 = (getcol) find "(" p1 = getcol find ")" p2 = getcol left ((p2-p0)-1) fn =gettext (getcol) (p1-p0-1) right (p1-p0) line=gettext (getcol) (p2-p1-1) right 2 msg =gettext (p2+2) (getlinelen - (getcol)) up col 1 errline = gettext (1) (getlinelen) down 3 // A TASM a forr sfile nev‚t is megadja (fn-ben van, mire ide‚rnk), Ągy // azt is le tudjuk kezelni, ha v‚letlenl az egyik include file-ban van // a hiba. close open fn if not find errline then // ha nem tal ltuk a hib t if not find errline "r" then say "Can't find the next error" end else display say msg end else close // f“nyerem‚ny. say "No more compiler errors" end else popcursor end end /* Na, ez a m sik aranyos, az autoindent. Akkor hĄv˘dik meg, amikor letjk az Enter-t az adott soron, ‚s a feladata az lenne, hogy kicsit helyrepakolja. Teh t a szimb˘lumokat (csak a kett“spontra v‚gz“d“eket) balra kidobja, az ASM utasĄt sokat a 17. oszlopba rakja, a param‚terket a 25.re. A megjegyz‚seket pedig a 41.-re teszi ki, de ha egy sor csak megjegyz‚sb“l  ll, akkor nem b ntja. Szint‚n b‚k‚n hagyja azokat a sorokat is, ahol az els“ vagy a m sodik sz˘ nem ASM utasĄt s. */ // Ezek itt sz‚pen az ASM utasĄt sok. Kicsit furcs n festenek szeg‚nyek, de // h t nicsenek t”mb”k, ez‚rt kicsit trkk”zni kellett. Tal n sikerl ‚szrevenni, // hogy aszerint vannak csoportosĄtva, hogy h ny karakterb“l  llnak. set AsmCmds "BTINJAJBJCJEJGJLJOJPJSJZOR" set AsmCmd3 "AAAAADAAMAASADCADDANDBSFBSRBTCBTRBTSCBWCDQCLCCLDCLICMCCMPCWDDAADASDECDIVESCHL set AsmCmd4 "ARPLCALLCLTSCMPSCWDEIDIVIMULINTOINVDIRETJCXZJNAEJNBEJNGEJNLELAHFLGDTLIDTLLDTL set AsmCmd5 "BOUNDBSWAPENTERFWAITIRETDJECXZLEAVELODSBLODSDLODSWLOOPELOOPZMOVSBMOVSDMOVSWMO set AsmCmd6 "INVLPGLOOPNELOOPNZPUSHADPUSHFDSETNAESETNGESETNLEWBINWD" set AsmCmd7 "CMPXCHG" // Ez a fggv‚ny eld”nti az str-r“l, hogy asm parancs-e, ha igen, akkor 1-et // ad vissza, egy‚bk‚nt 0-t. Az ar annak a t”mbnek a nev‚t tartalmazza, amelyik- // ben keressen, a size az str m‚ret‚t, mĄg az arsize a t”mb elemeinek sz m t. function CmdSrc(str ar size arsize) bp=1 loop cmpcnt=0 loop if (cmpcnt>=size) then break end if not ((ar[cmpcnt+bp]==str[cmpcnt+1])) then break end cmpcnt=cmpcnt+1 end if (cmpcnt>=size) then return 1 end bp=bp+size arsize=arsize-1 if (arsize<=0) then return 0 end end end // Ez hĄvja az el“z“ funkci˘t a megfelel“ param‚terez‚ssel, a visszaadott // ‚rt‚ket csak sim t tov bbĄtja function IsASMCmd(cw) cwsize=sizeof cw // az adott sz˘ bet–inek sz ma alapj n  gazik el case cwsize when 2 return CmdSrc cw _AsmCmds 2 13 when 3 return CmdSrc cw _AsmCmd3 3 80 when 4 return CmdSrc cw _AsmCmd4 4 55 when 5 return CmdSrc cw _AsmCmd5 5 46 when 6 return CmdSrc cw _AsmCmd6 6 9 when 7 return CmdSrc cw _AsmCmd7 7 1 otherwise return 0 end end function ASMAutoIndent /* Ez a felel“s a helyrerakod s‚rt, b r igen lame, ‚s van benne n‚h ny bug, az‚rt  ltal ban megk”nnyĄti a munk t. El“sz”r megpr˘b ljuk sz‚tv lasztani az aktu lis sort, Łgymint comment, label, cmd ‚s arg-ra. Ezek ut n ha a cmd val˘ban ASM command, akkor megpr˘b ljuk helyrepakolni a dolgokat. Ha mondjuk valami nem f‚r el a sz m ra fenntartott helyen (gondolok itt a labelre), akkor Łj sort nyitunk a t”bbinek. El‚g fav g˘ munka, de nem bonyolult. */ strcset = 'a-zA-Z_@[]().,"\'`~!#$%^&*-+=0123456789' sline = (gettext 1 (getlinelen)) + " " aa = (256-(sizeof sline)) oldline = sline + (copystr " " aa) pcomment = poschar ';' sline if (pcomment<>0) then lcomment = (sizeof sline)-pcomment scomment = sline[pcomment:lcomment] lcomment = lcomment-pcomment if (pcomment ==1) then sline = "" else sline = sline[1:(pcomment-1)] end else lcomment = 0 pcomment = 0 scomment = ' ' end qline = sline p2l = poschar (strcset) qline qline = qline[p2l:0] p3l = poschar ' ' qline p2l = p2l+p3l llabel = (poschar ':' sline) if ((llabel <>0) and (llabel0) then sline = sline[pcmd:0] lcmd = (poschar ' ' sline) scmd = sline[1:(lcmd-1)] sline = sline [lcmd:0] lcmd = sizeof scmd pcmd = pcmd + plabel else lcmd = 0 pcmd = 0 scmd = "" end parg = poschar (strcset) sline if (parg<>0) then larg = poschar (strcset) sline 'r' sarg = sline[parg:(larg-1)] sline = sline[(larg+1):0] parg = parg + llabel + lcmd larg = sizeof sarg else larg = 0 sarg = "" parg = 0 end if ((IsASMCmd (upcase scmd))==1) then sum1=llabel+lcmd+larg if (sum1>0) then col 1 delchar (getlinelen) if (llabel>=16) then labelbefore = 1 writetext slabel enter newline = copystr " " 16 else labelbefore = 0 newline = slabel + (copystr ' ' (16-llabel)) end newline = newline+(scmd+ (copystr ' ' (8-lcmd))) newline = newline+(sarg+ (copystr ' ' (16-larg))) if (lcomment<>0) then if (sum1>=40) then if ((labelbefore == 1) and ((sizeof slabel)<40)) then msgbox "1" col 1 enter up col 41 writetext scomment down else msgbox "2" enter col 41 writetext scomment up end else newline=newline+scomment end end aa = (256-(sizeof newline)) newline = newline + (copystr " " aa) col 1 writetext newline if newline == oldline then return 0 end return 1 else return 0 end // Ja, a fggv‚ny 1-et ad vissza, ha kozmetik zni kellett az adott soron,mĄg // 0-t, ha nem nyŁlt hozz . Ez az‚rt fontos, mert ha egy sor k”zep‚n nyomunk // Enter-t, ‚s m‚g helyre kell rakni, akkor elv‚gzi, ‚s Łgy szŁr be Łj sort, // hogy nem viszi  t a kurzor ut n l‚v“ r‚szt, mĄg ha m r j˘ a sor, akkor // mint ha mi sem t”rt‚nt volna... end end // Ez hĄvja meg az Enter let‚s‚re az autoindent-et, de csak akkor, ha // a Set menben az Autoindent be van kapcsolva (a getsettings k‚rdezi le, // ‚s "a" bet– tal lhat˘ a visszaadott stringben, ha igen). key s = getsettings c = getcol if (pos 'a' s 'i') then pushcursor if (ASMAutoIndent==1) then popcursor col (getlinelen)+1 enter // a kurzort a 17. oszlopra  llĄtjuk, ‚s j”het a k”v. parancs col 17 else popcursor col c enter end else enter end end // Ezek el‚gg‚ egy‚rtelm–ek, csak a k”nnyebb  ttekinthet“s‚g kedv‚‚rt, no // meg a k‚nyelem miatt kerltek bele. key filelist end key instext "; -----------------------------------------------------------------------------" down end key instext "; -----------------------------------------------------------------------------" down end key instext "; down end key instext "; -----------------------------------------------------------------------------" down end // Ez m r egy kicsit furfangosabb. Hasznos dolog minden PROC-ot ezzel l‚tre- // hozni. R”gt”n be is teszi egy fold-ba, teh t egyszer–en ki-be z rhat˘, // valamint l‚trehoz egy kisebb fejl‚cet is, amibe beĄrk lhatunk sok-sok // hasznos dolgot. key c = getcol destroymark markchar instext "; _" insline down col c instext "; __" insline down col c instext "; ___ iN :" insline down col c instext "; ___ OUT:" insline down col c instext "; ______________________________" insline down col 17 instext "PROC" insline down insline down insline down col 17 instext "ret" insline down col 17 markchar instext "ENDP" insline down foldblock destroymark up openfold col c+6 end // Ez beillesz m‚gegy olyan sort, amit az iN-n‚l haszn lunk (pr˘b lj tok ki // ezt a p rat, r”gt”n l that˘ lesz! key col (getlinelen)+1 enter instext "; ___" end // Ugyanez, csak az OUT-ra key col (getlinelen)+1 enter instext "; ___" end // A kl”nb”z“ fggv‚nygy–jtem‚nyek elej‚re tegynk egy LF-et (Alt-12) // ‚s az Alt-PgDn, ill. Alt-PgUp-pal k”zvetlenl ezek k”z”tt ugr lhatunk, // ezzel is gyorsĄthatjuk egy adott fggv‚ny megkeres‚s‚t. key find " " end key find " " "r" end // Ez hĄvja a k”vetkez“ hib ra ugr s nevezet– fggv‚nyt. key gotoerror end // Egy kl”n ll˘ ASM file lefordĄt sa. (Az aktu lis ablak‚) // Ezut n haszn lhat˘ a gotoerror. key fn = getbufname ex = getext fn // Lek‚rdezzk az aktu lis file nev‚t ‚s kiterjeszt‚s‚t // A vizsg lat csak az‚rt van, hogy a rutint k”nnyebb legyen b“vĄteni // esetleg m s tĄpusŁ forr sokkal is. Ekkor m r c‚lszer– az "a" object-be tenni. if ex = "ASM" then runcap2 "c:\\bp\\bin\\tasm.exe " fn + " /m3 /ml /z" open "C:\\errors.lst" col 1 row 5 close say "Source compiled..." end end // LefordĄtja az AE_COMP.CFG  ltal meghat rozott projectet, ‚s elindĄtja // a Turbo Debugger-t. Teh t ki sem kell l‚pnnk az editorb˘l, ‚s vissza is // kerlnk a TD-b“l val˘ kil‚p‚s ut n. key name = CompileProject setdisplay OFF run "c:\\bp\\bin\\td " + name +" >nul" setdisplay ON display "f" // Łjrarajzolja a k‚perny“t end // Szint‚n lefordĄtja a projectet, de megpr˘b lja ”n ll˘an elindĄtani. key name = CompileProject run name display "f" end // Ez megjelenĄti a menkn‚l leĄrt ASMpopup nev– popup ment, ami a fenti // n‚h ny fggv‚ny hĄv s t tartalmazza arra az esetre, ha elfelejten‚nk // a hotkey-ket, no meg a p‚lda kedv‚‚rt, hogy ilyet is lehet csin lni. // Az AE r”gt”n meghĄvja az item-n‚l megadott fggv‚nyt, neknk semmit sem // kell csin lni. key popup "ASMpopup" "ASM-EDIT" end // N‚ha megesik, hogy t”bb p‚ld nyban is meg van nyitva ugyanaz az ablak. // Ilyenkor el“fordulhat, hogy nem detekt lja a file tĄpus t, ergo nem az // asm_edit objectet rendeli hozz . Nem tudom, hogy ez mi‚rt van, tal n // valami bug, de el‚g kil‚pni ‚s Łjra bet”lteni a file-t, ‚s megold˘dik. // Ez a fggv‚ny akkor hĄv˘dik meg, amikor egy ablakr˘l m solatot k‚szĄtnk, // azaz ha pl. t”bb p‚ld nyban szerkesztjk egyszerre. Arra hivatott, hogy // ilyenkor is hozz rendelje a megfelel“ object-et. Nem tudom, hogy ez // szks‚ges-e, minden esetre cs”kkentette a fenti bugok sz m t. function copywin pass fn=getbufname fext=getext (upcase fn) case fext when ".ASM", ".INC" a = getwinbuf setwinobj "asm_edit" setting "abiuvx" 1 otherwise setwinobj "all_edit" end end // Ez t”k ugyanaz, mint az ASM-n l, csak a C-kre szabva. Azt hiszem, nem kell // k‚tszer magyar zni. object cpp_edit (edit) key filelist end key instext "// ----------------------------------------------------------------------------" down end key instext "// ----------------------------------------------------------------------------" down end key instext "// " down end key instext "// ----------------------------------------------------------------------------" down end key c = getcol destroymark markchar instext "// _" insline down col c instext "// __" insline down col c instext "// ___ iN :" insline down col c instext "// ___ OUT:" insline down col c instext "// ______________________________" insline down col c insline down instext "{" insline down col c insline down col c markchar instext "}" insline down foldblock destroymark up openfold col c+6 end key col (getlinelen)+1 enter instext "// ___" end key col (getlinelen)+1 enter instext "// ___" end key find " " end key find " " "r" end object edit // Ez az onopen fggv‚ny akkor hĄv˘dik meg, mikor bet”ltnk egy Łj file-t // Itt van lehet“s‚gnk a kiterjeszt‚st“l fgg“en m s-m s objektumot // hozz rendelni az ablakhoz, valamint n‚mi v ltoztat st is v‚gezhetnk a // flag-eken (amiket a Set menben lehet be llĄtani). function onopen fn=getbufname fext=getext (upcase fn) case fext when ".ASM", ".INC", ".EXT" a = getwinbuf setwinobj "asm_edit" setting "abiuvx" 1 when ".CPP", ".C", ".H" a = getwinbuf setwinobj "cpp_edit" setting "abisux" 1 set TabWidth 16 otherwise setwinobj "all_edit" setting "abiuvx" 1 end end // Ez becsukja az aktu lis ablakot, ‚s ha v ltozott, akkor persze el is menti. // Csak az‚rt van, hogy jobban hasonlĄtson a Borland-f‚le k”rnyezethez. key if (bufchanged?) then save end close end object all_edit (edit) Egy‚bk‚nt a Borland-be llĄt s az‚rt m‚g hagy n‚mi kĄv nnival˘t maga ut n, kl”n”sen a blokkm–veleteket kellene a numerikus billenty–zetr“l a j˘l megszokott Shift-Ins/Ctrl-Ins/Shift-Del-re  ttenni. Ezt a KBD.AML-ben tehetjk meg. Kicsit trkk”zni kell. T”ltsk be a KBD.AML-t, ‚s az "edit" object elej‚re(!) (kb. 240. sor) Ąrjuk be a k”vetkez“ket. Ezek ut n t”r”ljk ki a t”bbi "paste"-ot, "cut"-ot, ‚s "copy"-t hĄv˘ sort (egyszer–en kerestessk meg ezeket a szavakat), de persze csak az "edit" object-b“l. (Pl "grey *"-ra, meg ilyenekre vannak t‚ve). // paste from clipboard to prompt key if shiftkey? then paste else setting 'I' TOGGLE end end // copy from prompt to clipboard key copy key if shiftkey? then cut else delchar2 end end EzenkĄvl m‚g h tra van a Highlight word javĄt sa, hogy a magyar ‚kezeteket haszn l˘ szavakat is ki lehessen szĄnezni. Ehhez a CONFIG.AML-ben keressk meg azt a k‚t sort, ahol a CSetA-t ‚s a CSetB-t defini ljuk (a v‚ge fel‚ van), ‚s m˘dosĄtsuk Łgy, hogy benne legyenek a magyar ‚kezetek is, pl. set CSetA "a-zA-Z0-9_ ‚Ą˘•”™“§Ł—–•" // char set A set CSetB "a-zA-Z0-9_()\-./\\\\@{}~:^!#$%&`' ‚Ą˘•”™“§Ł—–•" // char set B M r csak annyi van h tra, hogy a hiliteword fggv‚nyen m˘dosĄtsunk Łgy, hogy ezeket a karakterk‚szleteket haszn lja. Ehhez t”ltsk be az EXT.AML-t, ‚s kb. a 2090. sorn l kezd“dik a hiliteword fggv‚ny. Van valahol egy olyan sor, hogy w = send "getword" "a-zA-Z_0-9?" ezt m˘dosĄtsuk Ągy: w = send "getword" _CSetA Ez felel“s az‚rt, hogy lek‚rdezze az aktu lis sz˘t, ‚s a CSetA (ill. eredetileg a direkt felsorol s) adja meg, hogy milyen karaktereket tartalmazhat a sz˘. Ha olyat tal l, ami ebben nincs benne, akkor Łgy veszi, hogy addig tart. Az editor a kiszĄnez‚skor viszont a teljes sz˘t keresi, Ągy jogos, hogy nem tal lta. Egy dolgot mondjuk nem ‚rtek. A v ltoz˘nevek megad s n l nem megengedett az ‚kezetes bet–k haszn lata, viszont a hiliteword is annyit csin l, hogy az adott sz˘b˘l egy ugyanolyan nev– v ltoz˘t k‚szĄt, ‚s ennek egy szĄn‚rt‚ket ad. Vegyk ‚szre, hogy ez teljesen egyen‚rt‚k– a Syntax highlighting m˘dszer‚vel, amikor kl”n ll˘ szavak szĄneit adtuk meg. Ennyit akkor az Aurora Editor 2.0-r˘l. Minden codernek aj nlom, igaz n kiv l˘ editor, f“leg, hogy k”nnyen  talakĄthat˘. Nagyon k‚nyelmes tud lenni pl. az az autoindent. Rengeteget lehetne m‚g Ąrni r˘la, de nem lenne tŁl sok ‚rtelme, hiszen a programhoz adott dokument ci˘ szinte minden r‚szletre kiterjed“ leĄr st ad, itt csak a kedvcsin l˘nak volt hely. Ha kicsit bele ssuk magunkat a makr˘nyelv‚be, akkor meglehet“sen cool dolgokat lehet vele m–velni, olyanokat is, amire tal n nem is gondoln nk. Pl. meg lehet oldani ak r azt is, hogy minden ment‚skor megkeresi a forr sban a "Last edited" sz”veget, ‚s ha megtal lta, akkor oda beĄrja az aktu lis d tumot, de a lehet“s‚gek sz ma szinte korl tlan. A fold haszn lat val az ember szinte csod kra k‚pes, s a programoz si id“t is j˘val ler”vidĄti. Akinek kedve van, ak r magyarĄthatja is, esetleg m‚g t”bb speci lis funkci˘t adhatunk hozz , s ak r a kl”n t mogatott file form tumokat is b“vĄthetjk. (pl. Pascal-hoz is Ąrhatunk rutinokat, de ezt csak akkor ‚rdemes, ha ASM-ot is Ąrunk a PAS mell‚, hiszen el kell ismernnk, hogy a Borland Pascalban ha m s nem is, de az editor, ‚s f“leg a be‚pĄtett debuggol s igen j˘. Ha viszont m r jobban megkeverjk a dolgokat, akkor Łgyis a TD-t kell haszn lni.) T‚nyleg, mi lenne, ha egyesĄten‚nk a Borland-ot a Watcom-mal? El“bbi‚k v‚gre megtanuln nak k˘dot optimaliz lni, az ut˘bbiak term‚keire meg r f‚rne n‚mi felhaszn l˘bar ts g, nemde? Van ugyan n‚h ny kĄv nnival˘, valamint bug is (pl. j˘ dolog a 80X50-es m˘d, de a nagyobbat sajnos m r nem engedi meg (pl. VESA m˘dok). Igaz, ezek m r egy sima 14"-os monitoron Łgysem haszn lhat˘k. Ha valakinek egy shareware verzi˘t sikerlt volna szerezni bel“le (kis haz nkban is rajta volt p r Łjs g CD mell‚klet‚n  mindig ‚rdemes ezek k”z”tt tŁrk lni egy kicsit), akkor tal n idegesĄtheti, hogy kil‚p‚sn‚l hosszŁ m sodperceket kell v rakozni. N‚mi segĄts‚g a crackhoz (vagy j˘ kisfiŁ m˘dj ra, nevezzk ink bb "bugfix"-nek): El“sz”r is ki kellene t”m”rĄteni az EXE-t (nem eml‚xem, hogy LZEXE-vel, vagy PKLITE-tal kezelt‚k-e, de l‚tezik egy UNP.EXE, ami szinte az ”sszes EXE t”m”rĄt“t le tudja szedni a progokr˘l). Ezut n TD-b“l indĄtsuk, ‚s l‚pjnk ki. A v rakoz s alatt nyomjuk meg sz‚pen a Ctrl-Break-et. Egy ciklusba kerltnk, ami lek‚rdezi az aktu lis id“t, ‚s egy r‚gebbi ‚rt‚kkel hasonlĄtja ”ssze (van n‚h ny call  a la C). A felt‚teles ugr st kellene kicser‚lni egy JMP-re, ehhez Ąrjuk fel az adott utasĄt s byte-jait, ‚s a k”rny‚k‚t, valamint azt sem  rt tudni, hogy JMP-vel hogy n‚z ki. L‚pjnk ki, ‚s egy hexaeditorral kezeljk meg az EXE-t. Persze nem  rt el“tte egy m sik file-ba is elmenteni, h tha a m–t‚t nem sikerl els“re... Mindenkinek kellemes sz”vegszerkeszt‚st.