
                           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.
   <DEL> ......... 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.
   <CR> .......... 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).
   <CTRL>+šípky .. Pohyb po texte (po stránkach).
   <DEL>/<INST> .. Mazanie znaku / vkladanie medzery.
   <TAB> ......... Tabulátor.
   <CTRL>+<TAB> .. Spätný tabulátor.
   <CR> .......... Vloženie prázdneho riadku za aktuálny riadok.
   <prázdna klávesa> .. Mazanie celého riadku.
   <GRAPH> ....... Prechod na grafické znaky.
   <SHIFT>+<GRAPH> Prechod na šiftované grafické znaky.
   <ALPHA> ....... Prechod na normálne znaky.
   <SHIFT>+<ALPHA> Prechod na malé znaky.
   <SHIFT>+<BREAK> 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
