###################################################
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #              (c) D U H A  series II             #
      #                                                 #
      #          macroassembler AM80 for SORD m5        #
      #                                                 #
      #              /operatorska prirucka/             #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                                                 #
      #                 ####    #    #  #    #   ####   #
      #                 #    #  #    #  #    #  #    #  #
      #                 #    #  #    #  ######  #    #  #
      #                 #    #  #    #  #    #  ######  #
      ################  ####     ####   #    #  #    # ##
                              - 1 -
Format zdrojoveho souboru
-------------------------
DUHA ASM80 zpracovava zdrojove radky zapsane v ASCII kodu.
Umoznuje zpracovani oddelovacu zobrazenych jako mezery, tabela-
tory, nebo komprimovane zaznamy mezer.
Format prikazu
--------------
Zdrojovy soubor sestava z prikazu zapsanych v nasledujicim for-
matu:
- navesti, jmena maker, nebo konstant pri definici musi zacinat
  v 1.sloupci.
- mnemoicka jmena instrukci, pseudoinstrukci, nebo volani maker
  nesmi zacinat v 1. sloupci.
- radek direktiv musi byt uveden znakem dolar na 1. pozici.
Zapis instrukci:
[NAVESTI]       [INSTRUKCE]     [ARGUMENT]      [;komentar....]
Definice konstant pomoci SET, EQU a definice MACRO:
JMENO    SET    hodnota          [;komentar....]
JMENO    EQU    hodnota          [;komentar....]
JMENO    MACRO  [parametry,...]  [;komentar....]
Zapis direktiv:
$DIREKTIVY ODDELENE LIBOVOLNYM POCTEM ODDELOVACU
Poradi direktiv a jejich oddeleni je az na direktivu OFFSET
libovolne.
Symboly
-------
 DUHA ASM80 rozlisuje velka a mala pismena. Jmena instrukci ,
pseudoistrukci a direktiv musi byt psana velkymi pismeny.
Navesti LABEL, label, Label jsou tri ruzna navesti. V tele jmen
jsou dovoleny nasledujici znaky:
A...Z, a...z,  $ _ @  ?   .   < > [ ] { } ! # ^ \
Navesti musi zacinat pismenem. V tele navesti mohou byt libovol-
ne z povolenych znaku. Delka definovanych symbolu neni omezena,
ale pouze prvnich sedm znaku je rozhodujicich pro urceni navesti
Numericke konstanty
-------------------
DUHA ASM80 pracuje s 16 bitovou aritmetikou s druhym doplnkem.
Konstanty je mozne zapisovat dekadicky, hexadecimalne, binarne,
nebo oktalove, ale vzdy musi zacinat cislici s vyjimkou ASCII
konstant. Ty jsou uzareny v apostrofech.
Rozsah konstant je 0....0FFFFH Pro zapis konstant se vyuziva
nasledujiciho formatu:
0FC3FH,15H,32H,200H...hexadecimalni konstanty /ukonceni H/
100,10000,32D.........dekadicke konstanty /bez ukonceni, nebo D/
175Q,25Q,13o..........oktalove konstanty  /ukonceni Q, nebo O/
100000B,1011B.........binarni konstanty   /ukonceni B/
'A', 'X' .............ASCII konstanty   /uzavrene v apostrofech/
                              - 2 -
Retezce
-------
 Textove retezce se stejne jako ASCII kostanty uzaviraji do apo-
strofu. Mohou obsahovat libovolne znky v delce max 64 znaku.
'TOTO JE TEXTOVY RETEZEC'
Vyhodnocni vyrazu
-----------------
Aritmeticke a logicke operatory
-------------------------------
 Nasledujici operatory jso povoleny pro vystavbu aritmetickych a
logickych vyrazu. Operatoy jsou vypsany v poradi od nejvyssi
priority:
          NUL
          LOW, HIGH
          *, /, MOD, SHR, SHL
          - /unipolarni minus
          +, -
          EQ, NE, LE, LT, GT, GE
          NOT
          AND
          OR, XOR
Pro zmenu priority je mozne pouzit zavorky.Vyrazy se vyhodnocuji
zleva doprava. Vsechny operatory mimo +,*,-,/ musi byt oddeleny
od operandu oddelovacem /roli oddelovace muze nekdy prevzit i
zavorka/.
Pseudoinstrukce
---------------
ASEG
----
         ASEG
ASEG provede nastaveni absolutniho sgmentu do programoveho ci-
tace prekladu. Toto nastaveni je implicitni a neni treba jej
provadet.Pouze pokud bylo nastaveni zmeneno jinou pseudoinstruk-
ci pro rizeni segmentoveho citace.
CSEG
----
         CSEG
CSEG provede nastaveni relativniho kodoveho segmentu do progra-
moveho citace prekladu.
DSEG
----
         DSEG
DSEG provede  nastaveni relativniho datovrho segmentu do proga-
moveho citace prekladu.
Segmenty ASEG, CSEG a DSEGlze v programu libovolne stridat. Po
kazde vymene a obnoveni segmentu zustava segmentovy programovy
citac zachovan. Pri prvnim vyvolani segmentu je hodnota progra-
moveho citace 0. Ve vsech pripadech je mozne ji zmenit pseudo-
instrukci ORG, nebo DS /viz dale/.
                              - 3 -
ORG
---
         ORG     <expr>
ORG slouzi k definici nove hodnoty prgramoveho citace prekladu
v ramci prave platneho segmetoveho citace. Operand pseudoin-
strukce ORG musi byt vycislitelny jiz v 1.pruchodu prekladu. Ji-
na dojde u vsech navesti za touto pseudoinstrukci k fazove chy-
be.
DS
--
         DS      <expr>
DS umoznuje rezervovat v pameti potrebny prostor pro promenne.
Stejne jako u pseudoinstrukce ORG musi byt i zde vyraz vycisli-
telny jiz v 1. pruchodu prekladu, jinak dojde k fazove chybe.
DB
--
         DB      <expr>[,<string>,<expr>..]
         DB      <string> [,<expr>,<string,...]
Argument u DB muze byt bud vyraz, nebo ASCII retezec pripadne
kombinace obou variant. Pseudoinstrukce DB zajisi ulozeni hod-
not vyrazu, nebo stringu do okamzite pozice programoveho citace
prekladu. Vyraz musi byt v intervalu 0...255, jinak dojde k
chybe preteceni.
Pr:
0000 0c414243         DB      12,'AB'
0004 64               DB      25*4
DW
--
         DW      <expr> [,<expr>..]
DW uklada hodnotu vyrazu do okamzite pozice citace prekladu.
Vyraz a DW je vyhodnocen jako 16 bitovy /2 byty.
EOT
---
         EOT     <file>    ;jmeno filu
EOT ukonci preklad casti zdrojoveho textu a zacne cist dalsi
cast z vnejsi pameti. U diskove verze DUHA ASM80 vyhleda na
pripojenem disku specifikovany file.
END
---
         END     [<file>   ;jmeno filu, pokud byl EOT]
END ukonci preklad souboru. U diskove verze musi byt posledni
soubor z rady souboru predchazenych pseudoinstrukci EOT opatren
jmenem pocatecniho souboru.
EQU
---
 <konst> EQU     <exr>
EQU priradi hodnotu EXPR do KONST. Vyraz EXPR nesmi byt typu
EXTERNAL. Jestlize je jiz KONST definovana, dojde k chybe vice-
nasobne definice.
                              - 4 -
EXTRN
-----
         EXTRN <name> [,<name>,...]
EXTRN deklaruje navesti,ktera jsou definovana v jinem programo-
vem modulu. Promenne stejneho jmena, jako jsou uvedeny v seznamu
EXTRN nesmi byt jiz v zadnem miste programu definovany, jinak
vznikne chyba dvoji definice.
NAME
----
         NAME     <jmeno modulu>
NAME umoznuje opatrit programovy modul jmenem. Jmeno muze mit
maximalne sest znaku. Prenasi se do protokolu o prekladu /li-
stingu/ do hlavicky assembleru na kazdou stranku. Pokud neni
pseudoinstrukce NAME uvedena, je vypsano jmeno MODULE. U disko-
ve verze DUHA ASM80 se jmeno prenasi i do ciloveho relokativniho
modulu.
SET
---
<konst>  SET     <expr>
Efekt pseudoinstrukce SET je stejny jako u EQU, pouze s tim
rozdilem, ze hodnota konstanty muze byt zmenena dalsi pseudo-
instrukci SET. Je tedy umozneno predefinovani.
IF-ELSE-ENDIF
-------------
         IF      <expr>
         1. cast programu
         [ELSE
         2. cast programu]
         ENDIF
Pokud ma vyraz lichou hodnotu, provede se 1. cast programu, v
opacnem pripade se provede 2. cast programu, je-li uvedena
/cast s ELSE je nepovinna/. Bloky IF-ELSE-ENDIF lze libovolne
vnorovat.
Directivy
---------
Directivy slouzi k rizeni prekladu. Je mozne je uvadet do
zdrojoveho souboru, ale tke do prikazoveho radku volani
ASM80 z operacniho systemu. Pokud jsou sak uvedeny ve zdrojo-
vem souboru, musi stat na radku zacinajicim znakem dolar. Pocet
directiv na radku neni omezen a na poradi obvykle nezalezi,
pokud se directivyfunkcne nevylucuji. Jedina directiva, ktera
musi byt jedina, nebo posledni na raku je directiva OFFSET.
U popisu jednotlivych directiv je v zavorce uvedeno default
nastaveni po zavedeni prekladacedo pameti systemu.
I8080, Z80, MOD85
-----------------
         [Z80]
Tyto directivy slouzi k volbe modu prekladace. Po avedeni do
systemu je vzdy v platnosti Z80. Rozsireni na 8085 provede
MOD85. Mod je mozne v prubehu prekladu libovolne menit.
Pokud se vsak strida 80 a I8080, musi byt pred kazdym usekem
programu uveden typ procesoru. Tim, ze prekladac zpracuje
pseudoinstrukci END se typ procesor nemeni na default hod-
notu Z80.