GENSnav.1                                            TASWORD TWO
Tento manuál byl převzat bez úprav z počítače ZX SPECTRUM.
Na počítačí SORD m.5 existuje program ASM-Z80.CM a jeho upravená
verze ASM-GENS3.CM. Oba programy se startují CALL &8000.
                          OBSAH:
         GENS 3
         KAPITOLA 1     SPUSTENI                            1
         KAPITOLA 2     PODROBNOSTI GENS 3                  1
                  2.0   Jak pracuje GENS 3                  1
                  2.1   Format assemblerovych instrukci     4
                  2.2   Navesti (labels)                    4
                  2.3   Citac adres                         5
                  2.4   Tabulka symbolu                     5
                  2.5   Vyrazy                              5
                  2.6   Ridici povely assembleru            6
                  2.7   Podminene pseudoinstrukce           7
                  2.8   Prikazy assembleru                  7
         KAPITOLA 3     EDITOR                              9
                  3.1   Uvod do editoru                     9
                  3.2   Prikazy editoru                    10
                  3.2.1 Vkladani textu                     10
                  3.2.2 Vypis textu                        10
                  3.2.3 Uprava textu                       10
                  3.2.4 Prikazy pro pasku                  12
                  3.2.5 Kompilace a spusteni               12
                  3.2.6 Ostatni prikazy                    13
                  3.3   Priklad pouziti editoru            14
         PRILOHA 1      CHYBOVA HLASENI A JEJICH VYZNAM    15
         PRILOHA 2      REZERVOVANA SLOVA, MNEMONIKA ATD.  16
         PRILOHA 3      FUNKCNI PRIKLAD                    16
             XXX    XXXXX   X   X    XXX    XXX
            X   X   X       X   X   X   X  X   X
            X       X       XX  X   X          X
            X       XXX     X X X    XXX     XX
            X  XX   X       X  XX       X      X
            X   X   X       X   X   X   X  X   X
             XXX    XXXXX   X   X    XXX    XXX
KAPITOLA 1    SPUSTENI
GENS 3 je vyborny a  jednoduse  pouzitelny  assembler  pro  Z80,
ktery je velice blizky standardnimu assembleru ZILOG. Na  rozdil
od mnoha jinych assembleru pro mikropocitace je GENS 3  rozsahly
profesionalni software a  doporucujeme  prostudovat  nasledujici
kapitoly spolu s prikladem v priloze 3 velmi pozorne jeste  pred
pouzitim assembleru. Jste-li uplny zacatecnik, zacnete  nejdrive
prilohou 3.
   GENS 3 je dlouhy zhruba 7kbyte a pouziva svou vlastni vnitrni
zasobnikovou pamet takze je zcela sobestacny.  Obsahuje  vlastni
radkovy editor, ktery umistuje textovy soubor ihned  za  GENS  3
CODE, zatimco tabulka symbolu assembleru se  tvori  za  textovym
souborem. Pri nahrani GENS 3 musite tudiz nechat dostatek  mista
pro vlastni assembler, tabulku symbolu a text, ktery budete  pri
praci potrebovat. Je proto  vhodne  umistit  GENS  3  do  spodni
casti pameti.
   Nahrani GENS 3 se provadi nasledovne:
'LOAD "GENS3" CODE xxxxx' ENTER - kde xxxxx je dekadicka  adresa
od ktere chcete GENS 3 umistit a spoustet.
   Jakmile je do pocitace nahran  GENS  3,  muzete  vstoupit  do
assembleru pomoci 'RANDOMIZE USR xxxxx', kde xxxxx je adresa, od
ktere byl GENS 3 nahran. Je-li treba  kdykoli  pozdeji  vstoupit
opet do assembleru, je  nutne  pouzit  adresu  xxxxx  +  56  pro
studeny start (dojde k vyprazdneni) nebo xxxxx +  61  pro  teply
start (zachova se vytvoreny text). Je nutne si uvedomit, ze pres
adresu xxxxx se spusti  GENS  3  pouze  jednou,  nebot  dojde  k
rozmisteni strojniho kodu.
   Napr.: chcete-li nahrat GENS 3 od adresy  #5E00  (nebo  24064
dekadicky) - postupujte nasledovne:
LOAD "GENS3"CODE 24064
RANDOMIZE USR 24064
   Pro novy studeny  start  pouzijte  'RANDOMIZE  USR  24120'  a
'RANDOMIZE USR 24125' k teplemu startu.
   Kdyz spustite GENS 3 poprve adresou xxxxx, objevi  se  zprava
'Buffer size?': mate vlozit cislo od 0 do 9 vcetne,  nasledovane
ENTER nebo pouze ENTER, kdy se predpoklada standardni hodnota 4.
Vlozene cislo nebo standardni hodnota urcuje velikost pameti pro
vkladani v jednotkach 256 bytu (viz kapitola 2.8 - vkladani).
Chcete-li  minimalizovat   prostor    zabrany    GENS    3    (a
nepotrebujete-li vyuzit moznost vkladani) vlozte 0  nasledovanou
ENTER - tim se vytvori nejmensi mozny prostor, t.j. 64 bytu.
   Po zodpovezeni teto otazky se objevi znak '>', ze  editor  je
pripraven - podivejte  se  do  kapitoly  3,  jak  vkladat  a  do
kapitoly 2 co vkladat.
   Dulezite upozorneni! :  Z  duvodu  vetsi  rychlosti a lepsiho
spojeni je blokovano preruseni. To  znamena,  ze  kazdy  program
vyzadujici preruseni musi byt vybaven instrukci pro preruseni
(EI) drive nez toto  bude  pozadovano.  Gens  3  rovnez  vyuziva
registr IY.
KAPITOLA 2    PODROBNOSTI GENS 3
2.0 Jak pracuje GENS 3
   GENS 3 je rychly assembler pro Z80 se  dvema  prubehy,  ktery
lze prizpusobit vetsine systemu se Z80. Zahrnuje kompilaci vsech
standardnich instrukci Z80 a je vybaven dalsimi  moznostmi  jako
                              - 2 -
je podminena kompilace a  mnoho  assemblerovych  prikazu  vcetne
binarne vetvene tabulky symbolu.
   Spustite-li assembler  (prikazem  'A'  -  viz  kap.  3)  jste
nejprve dotazan na velikost tabulky 'Table size:' (dekadicky).
Je to prostor pameti, ktery  bude  vyhrazen  tabulce  symbolu  v
prubehu cinnosti. Pri pouhem stisknuti ENTER  si  GENS  3  zvoli
standardni velikost, kterou  povazuje  za  primerenou  velikosti
textu - zpravidla uplne postaci. Uvedomte si, ze pri vkladani je
treba zvolit vetsi prostor pro tabulku symbolu nez  je  normalni
velikost; assembler nemuze predvidat objem souboru,  ktery  bude
vlozen.
   Po textu 'Table size:' se vas program dotaze,  jakou  cinnost
'Options:' pozadujete. Vlozte dekadicky soucet indexu cinnosti v
pripade, ze pozadujete vice  nez  jeden  typ  podle  nasledujici
tabulky:
Cinnost 1   Tvorba seznamu pouzitych symbolu  na  konci  druheho
            prubehu assembleru
Cinnost 2   Zabraneni generace strojniho kodu
Cinnost 4   Zabraneni vypisu vysledku kompilace
Cinnost 8   Nasmerovani vypisu kompilace na tiskarnu
Cinnost 16  Umisteni strojniho kodu za  tabulku  symbolu.  Citac
            adresy  je  stale  aktualizovan  pomoci  ORG,  takze
            strojni kod muze byt umisten v jedne  casti  pameti,
            ale pracovat muze jinde
Cinnost 32  Vypnuti kontroly umisteni strojniho kodu -  uzitecne
            pro zrychleni kompilace
Priklad: Cinnost 36 provede rychlou kompilaci- bez vypisu a  bez
kontroly, kam bude strojni kod umisten.
   Pri pouziti cinnosti 16 nelze pouzit prikaz  assembleru  ENT.
Muzete vsak zjistit umisteni  strojniho  kodu  pouzitim  prikazu
'X', ktery nalezne konec textu (druhe zobrazene cislo) a k  nemu
pricteme velikost tabulky symbolu +2.
   Kompilace se provadi ve dvou prubezich; behem prvniho prubehu
GENS 3 hleda chyby  a  kompiluje  tabulku  symbolu,  pri  druhem
prubehu se vytvori strojni kod (pokud neni zvolena  cinnost  2).
Behem prvniho prubehu  se  na  obrazovce  ani  na  tiskarne  nic
nezobrazi pokud neni objevena chyba. V pripade chyby se  zobrazi
chybny radek a pod nim pocet chyb (viz priloha 1). Kompilace  je
prerusena - stisknutim 'E' se provede  navrat  do  editoru  nebo
libovolnym jinym tlacitkem se pokracuje od nasledujiciho radku.
Na konci prvniho prubehu se objevi zprava:
          Pass 1 errors: nn
   V pripade chyby se assembler zastavi a neprovede  2.  prubeh.
Uzije-li se symbolu v  poli  opeandu,  ktery  neni  definovan  v
tabulce, objevi se zprava '*WARNING* label  absent'  pro  kazdou
chybejici definici.
   Ve druhem prubehu se vytvori strojni kod (pokud  tvorbe  neni
zamezeno - cinnost 2). V tomto prubehu se rovnez  vytvori  vypis
vysledku kompilace pokud nebyla zvolena cinnost  4  nebo  prikaz
assembleru *L-. Vypis ma tvar:
          C000 210100      25 label
                              LD    HL,1
          1    6        15    21    26
Na prvnim miste je hodnota citace adres,  ktera  udava   zacatek
zpracovani tohoto radku, pokud  nejsou  pouzity  pseudoinstrukce
jako ORG, EQU nebo ENT (viz kapitola  2.6).  Zpravidla  je  udan
hexadecimalne, ale muze byt zobrazen i dekadicky uzitim  prikazu
*D+ (viz kapitola 2.8).
   Na druhem miste, od sloupce 6, je az 8 znaku (predstavujicich
4 byty) instrukce - ale vsimnete si prikazu *C uvedeneho nize.
                              - 3 -
   Nasleduje cislo radku - cele  cislo  v  rozmezi  1  az  32767
vcetne.
   Sloupce 21 - 26 prvniho radku  obsahuji  prvnich  sest  znaku
navesti definovaneho na tomto radku.
   Nasledujici dva odstavce se  tykaji  pouze  systemu  s  uzkou
obrazovkou. Systemy s delkou radku vetsi nez 40 maji kazdy radek
assembleru uveden na jednom radku obrazovky.
   Po kazdem navesti nasleduje novy radek - na  nem  je  uvedena
instrukce ve sloupcich 21  -  24.  Nasleduje  pole  operandu  od
sloupce 26 a nakonec komentar, ktery je vkladan na konec radku a
generuje novy radek pokud je to nutne.
   Uvedeny  format  usnadnuje  citelnost  u  systemu  s    uzkou
obrazovkou jako je  SPECTRUM.  GENS  3  nemeni  pocet  znaku  na
obrazovce, nebot by to vyzadovalo rozsireni GENS 3 a  nebylo  by
mozno pouzit standardni rutiny v ROM.
   Prikaz assembleru *C muze byt  pouzit  ke  zkraceni  radku  a
zpusobi vynechani 9 znaku predstavujicich strojni  kod  radku  a
umozni zobrazeni vice radku na obrazovce (viz kapitola 2.8 nize)
   Je mozna modifikace formatu radky zapsanim pomoci POKE do tri
mist GENS 3. Podrobnosti jsou  uvedeny  dale.  Rozlisujeme  mezi
radkem assembleru a radkem obrazovky, coz je to co je  videt  na
obrazovce.  Radek  assembleru  je  zpravidla  vic   nez    radek
obrazovky.
   1.  'Start  GENS  3  +  51  (#33)'  urci,  na  ktere   pozici
(sloupec-5) skonci prvni radek vystupu assembleru. Zmenou tohoto
bytu na 0 se vytvori nepreruseny radek (uzitecne  u  tiskaren  s
dlouhym radkem) nebo na hodnotu <256 k ukonceni  radku  na  dane
pozici sloupce.
   2. 'Start GENS 3 + 52 (#34)' udava sloupec (pocitano  od  1),
kde ma zacinat nasledujici radek na obrazovce.
   3. 'Start GENS 3 + 53 (#35)' udava  kolik  znaku,  zbylych  z
radku, ma byt zobrazeno  na  obrazovce  po  prvnim  obrazovkovem
radku.
   Jako  priklad  predpokladejme,  ze  pozadujeme   pro    prvni
obrazovkovy radek 20 znaku (t.j. bez pole navesti a potom  kazdy
nasledujici obrazovkovy radek ma zacinat na pozici 1  a  vyplnit
cely radek. Take predpokladame, ze jste nahrali GENS 3 od adresy
#5E00 nebo 24064 dekadicky.  K  vyvolani  techto  zmen  provedte
nasledujici:
       POKE 24115,20
       POKE 24116,1    na zacatku nasledujiciho obrazovkoveho
       POKE 24117,31   radku musi byt alespon jedna mezera
   Vyseuvedene zmeny lze provest jen kdyz  nebyl  pouzit  prikaz
*C- tento prikaz zpusobi v pripade potreby scroll.
   Vystup  assembleru  lze  prerusit  na  konci  kazdeho   radku
stisknutim CAPS SHIFT a SPACE - nasledujicim stisknutim  'E'  se
vracime  do  editoru  nebo  stisknutim   libovolneho    tlacitka
pokracujeme ve vystupu.
   Jedina chyba, ke ktere  muze  dojit  pri  druhem  prubehu  je
*ERROR* 10 (viz priloha 1)  a  'Bad  ORG!'  (v  pripade,  ze  by
strojni kod prepsal GENS 3, tabulku symbolu nebo textovy  soubor
- toto vyhodnoceni muze byt vypnuto uzitim cinnosti 32.  *ERROR*
10 neni podstatna a muzete pokracovat v kompilaci. Zatimco chyby
jako 'Bad ORG!' jsou podstatne a ihned vrati rizeni do editoru.
   Zprava na konci druheho prubehu:
                        Pass 2 errors: nn
se zobrazi nejdrive a po ni  nasleduje  pripadne  upozorneni  na
chybejici navesti  -  viz  vyse.  Nyni  se  zobrazi  nasledujici
zprava:
                  Table used: xxxxx from yyyyy
ktera nas informuje o tom jaka cast tabulky symbolu byla vyuzita
ve srovnani s rezervovanym mistem.
   V tomto miste, byl-li spravne pouzit prikaz  ENT,  se  objevi
zprava 'Executes nnnnn'. Ta  udava  pocatecni  adresu  strojniho
kodu, ktery muzete spustit prikazem 'R'. Pozor na pouziti tohoto