GENMON V1.1 =========== GENMON je spojenie programov GENS 3M2/SE a MON V4.T s niektorými ------ vylepšeniami. Je určený pre prácu v strojovom kóde a obsahuje veľmi silný assembler s obrazovkovým editorom, spätný assembler a debugger. Assembler je umiestnený v adresách #0000-#3487, disassembler s debuggerom v adresách #B000-#CDA0. Pracuje v MZ-800 móde, formát nahrávania zdrojových programov je CPM a zdrojové programy sú kompatibilné so všetkými odrodami assemblera GENS 3M. Programy MON a GENS sú od seba nezávislé a môžu pracovať samostatne. RAMTOP (prvá voľná adresa za zdrojovým programom) sa nachádza v premennej na adrese #121C. Celá pamäť RAM od RAMTOP vyššie je k dispozícii užívateľovi (ak sa tam nenachádza MON). GENS pracuje so súborom znkov v SHARP kóde. GENS3M2/SE ---------- 1. Příkazy S n ........... Prejde do obrazovkového editora na riadok n. I n,m ......... Režim vkládání s automatickým číslováním, kde n je počátek a m je inkrement. INST ...... Ukončuje režim vkládání. L n,m ......... Výpis programu od řádku n po řádek m. INST ...... Ukončuje listing. ostatní ... Pokračování v listingu. K n ........... Nastaví počet zobrazených řádků pro příkazy L a W. D n,m ......... Vymaže řádky od n do m. M n,m,l ....... Zkopíruje řádky od n do m před řádek l. N n,m ......... Přečísluje zdrojový text; n je počátek a m inkrement. F n,m,f,s ..... Hledání řetězce f od řádku n po řádek m. Je-li nalezen, nahradí se řetězcem s. E n,m ......... Postupná oprava programu od řádku n po řádek m. V ............. Udává celkový počet řádků v text. bufferu. W n,m ......... Výpis programu na tiskárně. Paremetry jsou stejné jeko u příkazu L. X ............. Zobrazí hexadecimálně počáteční a koncovou adresu textového bufferu. ......... Vymaže vkladaný znak. B ............. Návrat do monitora MON V4.T (pozor, bez prítom- nosti monitora sa tento príkaz neodporúča!!!). C ............. Definice velikosti bufferů INCLUDE a MACRO. MACRO buffer má implicitně nulovou hodnotu (nutno nadefinovat před započetím práce). Q ............. Zpackuje zdrojový text (po přečíslování). Pozor, dlhšie texty packuje dlhší čas. H ............. Prepne režim z 40 na 80 znakov na riadok a naopak. Z ............. Prevedie všetky SHARP znaky v zdrojovom texte na ASCII a naopak. Prevod je bijektívny, t. j. dvojnásobné prevedenie príkazu Z za sebou pôvodný text nezmení. 2. a) Subpovely řádkového editoru - po příkazu E space ......... Nastaví kurzor na další znak. DEL ........... Nastaví kurzor na předchozí znak. ............. Vymaže editovaný řádek. CR ............ Ukončení všech změn na editovaném řádku. Q ............. Zruší všechny doposud provedené opravy na řádku a vrátí řádek zpět do textového bufferu. R ............. Zruší všechny provedené změny na řádku. L ............. Zobrazí zbytek editovaného řádku. K ............. Vymaže znak na kterém je nastaven kurzor. Z ............. Zruší vše od kurzoru do konce řádku. F ............. Hledá další výskyt řetězce zadaného příkazem F. S ............. Nahradí nalezený řetězec f řetězcem s a pokračuje v hledání dalšího výskytu. I ............. Umožňuje vložit znaky na pozici kurzoru. .......... Ukončuje režim vkládání znaků. X ............. Vkládání znaků na konec řádku. C ............. Změna znaku na kterém je nastaven kurzor. 2. b) Obsluha obrazovkového editora - po príkaze S šípky ......... Pohyb po texte (po jednom znaku). +šípky .. Pohyb po texte (po stránkach). / .. Mazanie znaku / vkladanie medzery. ......... Tabulátor. + .. Spätný tabulátor. .......... Vloženie prázdneho riadku za aktuálny riadok. .. Mazanie celého riadku. ....... Prechod na grafické znaky. + Prechod na šiftované grafické znaky. ....... Prechod na normálne znaky. + Prechod na malé znaky. + Odchod z obrazovkového editora. 3. Překlad (assembling) a spuštění strojového kódu A ............. Provede assemblaci od prvního řádku textového bufferu. table size: ... Délka návěští + 4 bytes na každé návěští. CR ........ Normální velikost. options: ...... Volba překladače. 1 ... Výpis tabulky symbolických adres. 2 ... Nevytváří strojový kód. 4 ... Nevypisuje protokol o překladu. 8 ... Výpis protokolu o překladu na tiskárně. 16 ... Umístí stroj. kód za tabulku symbol. adres. 32 ... Neprovádí se kontrola umístění stroj. kódu. Volby překladače je možno zadávat i adi- tivně, např. 2 + 8 = 10. SFT+BRK ... Přerušení překladu. E ......... Návrat do editoru resp. možnost editace řádku na kterém se překlad zastavil. ostatní ... Pokračování v překladu. R ............. Spuštění přeloženého strojového kódu od adresy dané pseudoinstrukcí ENT. 4. Příkazy pro manipulaci s magnetofonem P n,m,s ....... SAVE obsahu textového bufferu od řádku n po řádek m se jménem souboru s. Pokud chceme později používat příkaz *F, je nutno provést SAVE příkazem T. G,,s .......... MERGE souboru ke konci textového bufferu. T n,m,s ....... SAVE obsahu textového bufferu od řádku n po řádek m ve tvaru vhodném pro použití v příkaze *F. O ............. Nahrá přeloženej program na pásku. 5. Formátování textového bufferu znakem v 1. sloupci ; ............. Komentářový řádek (nepřekládá se). * ............. Příkaz pro řízení assembleru. CR ............ Řádek je ignorován. space ......... Další znak musí být mnemotechnika Z80. 6. Další používané zkratky $ ............. Nastavení programového čítače (PC). 1026 .......... Dekadická konstanta. #403 .......... Hexadecimální konstanta. %101 .......... Binární konstanta. "A" ........... SHARP znak. LBL2 .......... Symbolická adresa, návěští, konstanta. & ............. Logický AND. ! ............. Logický OR. @ ............. Logický XOR. * ............. Součin. / ............. Podíl. ? ............. Zbytek po dělení (modulo). 7. Pseudoinstrukce ORG x ......... Nastavení logického umístění stroj. kódu. EQU x ......... Přiřadí hodnotu návěští. DEFB x ........ Definice hodnoty délky 1 byte. DEFW x ........ Definice hodnoty délky 2 bytes. DEFM "alfa" ... Definice řetězce znaků. DEFS x ........ Rezervuje x bytes v paměti. ENT x ......... Nastaví adresu PC pro spuštěni přeloženého strojového kódu. IF podmínka ... Podmíněné provádění překladu. Není dovoleno zahnízdění. ELSE ...... Nesplnění této podmínky. END ........... Konec zdrojového textu určeného k překladu. 8. Makroinstrukce MAC ........... Uvádí se za názvem MACRA bez formálních parametrů. Tyto se udávají přimo v instruk- cích např. LD A,=0 ; kde =0 je formální parametr (ASCII znak - podstatné jsou nižší 4 bity). Volání je provedeno udáním názveu MACRA s uvedením aktuálnich (sku- tečných) parametrů. ENDM .......... Konec definice makroinstrukce. Před definicí makroinstrukcí je třeba definovat místo v MACRO bufferu příkazem C. (10 bytes/řádek). příklad: ROUTIN MAC LD A,=0 LD BC,=1 OUT (C),A ENDM volání : ROUTIN 14,#6CF provede: LD A,14 LD BC,#6CF OUT (C),A 9. Příkazy pro řízení překladu v textovém bufferu *E ............ Vloží 3 prázdné řádky. *H s .......... Vytiskne hlavičku s na začátek protokolu o překladu. *S ............ Zastaví výpis protokolu o překladu. Pokra- čování stiskem libovolné klávesy. *L+ ........... Výpis protokolu zapnut. *L- ........... Výpis protokolu vypnut. *D+ ........... Hodnota čítače je zobrazena dekadicky. *D- ........... Hodnota čítače je zobrazena hexadecimálně. *C+ ........... Výpis přeloženého strojového kódu. *C- ........... Potlačení výpisu přeloženého stroj. kódu. *M+ ........... Výpis obsahu makroinstrukce. *M- ........... Potlačení výpisu obsahu makroinstrukce. *F s .......... Zařadí do assembleru textový soubor se jménem s, který byl předtím uchován pří- kazem T. Překladač i uchovaný zdrojový text musí mít tutéž délu buffer size. Řídící kódy zadávané přes klávesu CTRL jsou funkční. Tato verze GENSu již pracuje pod režimem MZ-800 v kódu SHARP s možnosťou prevedenia zdrojového textu na kód ASCII. Odpojeny jsou přitom veškeré ROM paměti a tudíž má daleko větší paměť a to jak pro vlastní zdrojový text, tak i pro stro- jový kód. Fyzicky je tento GENS umístěn v RAM od adresy 0000H. Adresa pro horký (warm) start je 1200H resp. 0000H (CTRL + reset), pro start studený (cold) 1212H, adresa textendu je 121CH. Táto verzia obsahuje aj obrazovkový editor, ktorý sa vyvoláva príkazom S. Všetky pôvodné funkcie GENSu sú zachované okrem starej funkcie S, ktorá sa nepoužívala (slúžila na zmenu oddeľovača). Dĺžka programu zostala zachovaná (v porovnaní s GENS 3M2). Nahrávanie bolo zmenené z módu SINCLAIR 1200 Bd na mód CPM 2400 Bd. Preložené programy nahraté na pásku (príkazom O) treba previesť do normálneho módu pomocou programu INTERCOPY V8. P O Z O R: Táto verzia neprekladá správne konštantu "q", miesto nej ========== treba používať #A0. Ladící systém MON MON je program pro ladění a vypisování programu ve strojovém kódu. V paměti je umístěn od adresy 0B000H do CDA0H. MON pracuje v módu MZ-800. Využívá zobrazení 25 řádků po 40 znacích. Je nazávislý na ROM. Může tedy pracovat i po odpojení ROM pamětí. Vkládání čísel -------------- Po nahrání MON pracuje v šestnáctkové soustavě. Čísla v ní zadáváme přímo (např. AF3B), desítková čísla uvozujeme znakem # (např. #10000). Pokud pomocí přepínače Z změníme nastavení číselné soustavy na desítkovou, tak čísla šestnáctková musíme vkládat pomocí znaku #. Při vstupu dat má tedy znak # funkci přepínače mezi vybranou a zbývající číselnou soustavou. Při výstupu na obrazovku, ale bez ohledu na nastavení aktuální soustavy jsou desítková čísla vypisována přímo a šestnáctková uvozena znakem #. Příkazy ------- Příkazy se vkládají stiskem jedné klávesy a zadáním až tří číselných parametrů, které budeme dále označovat x, y a z. Pokud nebyl zadán parametr funkce monitoru, která jej očeká- vá je místo něj dosazena nula. Parametry se navzájem oddělují čárkou nebo mezerou. Příkaz lze kdykoliv ukončit klávesou TAB nebo CTRL & C. (Příklady: A10,10 parametry 10H, 10H, 0 A10 100 parametry 10H, 100H, A,100 #45 parametry 0, 100H, 45 A parametry 0, 0, 0 ) PŘÍKAZ VÝZNAM POPIS Ax,y ASCII Vypisuje adresu, obsah paměti číselně a ASCII ekvivalenty. V závislosti na aktuální číselné soustavě je na řádku 8 nebo 5 hodnot. B BOOT Skok do IPL. Dx,y DISAS Provádí zpětný překlad strojového kódu v paměti od x do y. Lze zadávat oblasti DEFB, DEFW a DEFM. Odpověď Y na dotaz CLEAR? zruší staré definice těchto oblastí. Pak se po nápovědě DEF dopíše B, W nebo M a adresy začátku a konce oblasti (např. DEFB 100,200). Kromě standartních funkčních kláves, které lze použít ve většině příkazů jsou zde navíc připojeny tyto funkce: I zapne nebo vypne výpis kódů instrukcí J vytiskne jeden řádek podtržení T zadání a výpis textu B, W, M provede DEFB, DEFW nebo DEFM Ex EDIT Editace obsahu paměti od adresy x. Vypíše adresu, obsah paměti číselně a čeká na zadání nové hodnoty. Lze zadat buď číslo (1 nebo 2 byty) nebo text ve formě "text. Fx,y,z FILL Zaplní oblast paměti od x do y konstantou z. Gx GOSUB Zavolá podprogram na adrese x. Ix IN Přečte a zobrazí hodnotu z portu x. Kx FIND Hledá zadaný obsah paměti od adresy x. Každý byte hledané posloupnosti se zadává hodnotou (číslo nebo znak " a nějaký znak) a maskou. Pro ty bity, které mají v masce hodnotu 1 není porovnání prováděno. Zadávání se ukončuje zadáním CR místo hodnoty bytu. Lze zadat maximálně 9 bytů. Lx LOAD Nahrá súbor z CMT a uloží ho od adresy x. Hlavičku uloží od adresy #10F0. Nahráva v móde SHARP. Mx,y,z MOVE Přesun bloku paměti od x do y na adresu z. Ox,y OUT Na port x vyšle hodnotu y. (Adresování portů je šestnáctibitové přes BC registr !) Px,y SHIFT Zadání posunu v adresách pro příkazy A, D, E, K, Q, U a V. x je fyzická adresa (tedy kde program je) y je logická adresa (tedy kde by měl být) Rx,y,z RELOC Přesune oblast paměti x-y na adresu z. Provede přeadresování skoků a ostatních odkazů z oblasti od x do y do oblasti od z do z+x-y. Qx,y,z QRELOC Jako RELOC s tím, že zohledňuje nastavený posun mezi logickými a fyzickými adresami. Sx,y,z SAVE Nahrá na pásku blok od adresy x po adresu y so štartovacou adresou z. Adresu x do hlavičky nezapisuje, pretože táto sa nemusí zhodovať s požadovanou adresou uloženia v hlavičke. Požadovanú adresu uloženia, ako aj typ a názov súboru je treba uložiť príkazom E. Tx TRACE Zapnutí krokovacího režimu a nastavení PC na adresu x. Standartně se při trasování vypisuje adresa a instrukce, která se bude vykonávat, názvy a hodnoty zvolených registrů (AF je rozdělen na číselnou hodnotu A a symbolicky vyjádřené F). Dále se vypisují definovaná okna paměti V a W. Podpříkazy: X Přepne výpis základních nebo záložních registrů. M Přepne styl výpisu. Buď kompletní informace ve zvoleném pracovním okně nebo pouze instrukce. Q Ukončení trasování. . Posun ukazatele mezi registry. = Nastevení obsahu registrů, vybraných ukazatelem. V Nastavení adresy okna V. W Nastavení adresy okna W. Tx Krokování po instrukcích bez výpisu až do adresy x. Bx Nastavení breakpointu na adresu x a spuštění programu. I Definice zobrazení informací při trasování. Postupně se zobrazují názvy registrů a oken a je možné volbou Y nebo N vybírat, které se mají v průběhu trasování zobrazovat. Ux,y TEXT Vytváří zdrojový text pro GENS 3 z oblasti paměti od x do y. Dotazy CLEAR? a DEF mají stejný význam jako u DISAS; WORKSPACE je adresa pracovní oblasti pro tabulku symbolů; TEXT je adresa pro ukládání generovaného textu (je-li uvedena 0, tak se text neukládá); FROM a TO je oblast generování návěští. Vx,y,z VERIFY Srovnává oblasti paměti od x do y s oblastí od z do z+y-x a vypisuje rozdílné obsahy. Wx,y WIND Nastavení okna na obrazovce (pracovní oblasti programu MON) od řádku x do řádku y. Xx ATTR Nastavení barvy pozadí (horní 4 bity) a barvy písma (dolní 4 bity). Yx TRANS Převod zadaného čísla do desítkové a šestnáctkové soustavy. Z HEX/DEC Přepne aktuální soustavu. Poznámky -------- Příkazy A, D, K, T, U, V umožňují kdykoliv v průběhu práce pomocí příkazu Z přepnout mezi šestnáctkovou a desítkovou soustavou. V příkazech A, D, T, V fungují ještě tyto funkční klávesy: GRAPH zadání nové adresy KURZOR DOPRAVA adresa = adresa + 1 KURZOR DOLEVA adresa = adresa - 1 KURZOR NAHORU adresa = adresa - 10 KURZOR DOLU adresa = adresa + 10 E editace paměti (viz EDIT) O připojení nebo odpojení tiskárny CR je-li stisknuto - vypisuje se P vypisuje se až do té doby, pokud není na klávesnici stisknuta nějaká klávesa