POPIS PROGRAMU  [ M80.COM ]				strana:19
-----------------------------------------------------------------

4.13. Abecední přehled direktiv.
================================

	Následující přehled direktiv obsahuje všechny  direktivy,
které zpracovává překladač M80, včetně direktiv pro mikroproceso-
ry typu Z80 a direktiv pro vytváření makroinstrukcí a opakovacích
bloků. Direktivy jsou abecedně setříděny podle svých  jmen,  při-
čemž se nebere v úvahu znak tečka nebo dolar, kterými některé di-
rektivy začínají. Popis každé direktivy  začíná  uvedením  jejího
tvaru. Většina  direktiv  může  být  opatřena  návěštím,  návěští
získává hodnotu počítadla adres před zpracováním vlastní direkti-
vy. Na výjimky bude upozorněno.

Direktiva .8080
---------------

	Tato direktiva nastavuje režim, ve kterém překladač zpra-
covává symbolické vyjádření strojových  instrukcí  mikroprocesoru
8080 na rozdíl od mikroprocesoru Z80. Tento režim je  implicitní,
lze jej změnit parametrem /Z při spuštění  překladu  nebo  uvnitř
zdrojového textu direktivou .Z80.

Direktiva ASEG
--------------

	Tato direktiva nastavuje počítadlo adres  do  absolutního
úseku. Následující zdrojový text se překládá na  pevné  absolutní
adresy. Při první  direktivě ASEG se počítadlo adres nastavuje na
absolutní 0, při dalších se nastavuje na  adresu  následující  za
poslední slabikou minulého úseku  ASEG.  Počítadlo  adres  uvnitř
úseků lze nastavovat direktivou ORG. Umístění  absolutního  úseku
je dáno již při překladu a nelze  jej  spojovacím  programem  L80
ovlivnit.

Direktiva .COMMENT  otexto
--------------------------

	Tato direktiva umožňuje  umísťovat  do  zdrojového  textu
rozsáhlejší komentáře. Má výše uvedený tvar, kde:

o	omezovač komentářového textu, první znak operandu rozdíl-
	ný od mezery nebo tabelátoru je chápán jako omezovač

text	vlastní komentář, nesmí obsahovat výše definovaný  omezo-
	vač, může být umístěn na více řádcích

Direktiva COMMON  [jméno]
-------------------------

	Tato direktiva nastavuje počítadlo adres do zadaného úse-
ku COMMON. Počítadlo adres se nastavuje vždy  na  začátek  úseku.
Úseky COMMON jsou datové relativní úseky, jejich konečné umístění
v paměti zajišťuje spojovací program. Úseky COMMON stejného jména
se v paměti navzájem překrývají.

jméno	jméno společného datového úseku COMMON. Pokud  jméno není
	zadáno, jedná se o nepojmenovaný datový úsek COMMON.

POPIS PROGRAMU  [ M80.COM ]				strana:20
-----------------------------------------------------------------

Direktiva COND	výraz
---------------------

	Jedná se o zahájení podmíněně překládaného bloku.  Direk-
tiva patří mezi direktivy Z80 a je  ekvivalentní  direktivám  IF,
nebo IFT.

Direktiva .CREF
---------------

	Tato direktiva  povoluje  vytváření  křížových  odkazů po
předchozím zákazu direktivou .XCREF. Direktivy .CREF a .XCREF ma-
jí smysl pouze tehdy, je-li při spuštění překladače zadán parame-
tr /C (požadavek na vytvoření křížových odkazů). Při zadaném  pa-
rametru /C je direktiva .CREF implicitní.

Direktiva CSEG
--------------

	Tato direktiva nastavuje počítadlo adres  do  relativního
kódového úseku CSEG. Následující zdrojový text se překládá na re-
lativní adresy  kódového  úseku.  Při  první  direktivě  CSEG  se
počítadlo adres nastavuje na relativní 0, při dalších se nastavu-
je na relativní adresu následující za poslední slabikou z minulé-
ho úseku CSEG. Počítadlo adres uvnitř úseku lze nastavovat direk-
tivou ORG. Umístění úseku v paměti je dáno  spojovacím  programem
L80.

Direktiva DB  par [,par]...
---------------------------

	Tato direktiva umísťuje hodnoty výrazů nebo znaků řetězce
do posloupnosti slabik paměti od adresy  dané  počítadlem  adres.
V případě řetězce nejvyšší bit slabik nuluje.

par	výraz nebo znakový řetězec uzavřený apostrofy  nebo  uvo-
	zovkami. Hodnota výrazu se musí vejít do  jedné  slabiky,
	tzn. vyšší slabika hodnoty musí být nulová nebo musí  být
	rovna 255.

Direktiva DC  řetězec
---------------------

	Tato direktiva umísťuje hodnoty znaků řetězce do posloup-
nosti slabik paměti od adresy dané počítadlem adres. Na rozdíl od
direktivy DB nejvyšší bit u poslední slabiky nastavuje na jednič-
ku, u ostatních slabik nejvyšší bit nuluje. V direktivě  DC  není
přípustný prázdný řetězec.

řetězec	je posloupnost znaků ASCII  uzavřené  do  apostrofů  nebo
	uvozovek.

Direktiva DEFB  výraz[,výraz]...
--------------------------------

	Tato direktiva definuje obsah  slabik  paměti.  Direktiva
patří mezi direktivy Z80 a je ekvivalentní direktivě DB.

POPIS PROGRAMU  [ M80.COM ]				strana:21
-----------------------------------------------------------------

Direktiva DEFL	výraz
---------------------

	Tato direktiva definuje jméno. Patří mezi  direktivy  Z80
a je ekvivalentní direktivě SET.

Direktiva DEFM	řetězec[,řetězec]...
------------------------------------

	Umístění řetězce znaků ASCII do paměti.  Direktiva  patří
mezi direktivy Z80 a je ekvivalentní direktivě DB.

Direktiva DEFS	výraz
---------------------

	Rezervování místa v paměti. Direktiva patří mezi direkti-
vy Z80 a odpovídá direktivě DS.

Direktiva DEFW	výraz[,výraz]...
--------------------------------

	Definování obsahu slov paměti. Direktiva patří  mezi  di-
rektivy Z80 a odpovídá direktivě DW.

Direktiva .DEPHASE
------------------

	Ukončení vložené posloupnosti příkazů zahájené direktivou
.PHASE, která se překládá s počítadlem adres nastaveným  direkti-
vou .PHASE.

Direktiva DS  výraz
-------------------

	Direktiva DS rezervuje místo v paměti tak, že zvětší  po-
čítadlo adres o hodnotu zadaného výrazu. Všechna jména použitá ve
výrazu musí být definována předem, tzn. v průběhu prvního průcho-
du před uvedením v direktivě DS.

výraz	absolutní výraz, jehož hodnotu určuje počet slabik, který
	se má v daném místě rezervovat.

Direktiva DSEG
--------------

	Tato direktiva nastavuje počítadlo adres  do  relativního
datového úseku DSEG. Následující zdrojový  text  se  překládá  na
relativní  adresy datového úseku.  Při první  direktivě  DSEG  se
počítadlo adres nastaví na absolutní 0, při dalších se nastaví na
relativní  adresu  následující za poslední  slabikou  z  minulého
úseku DSEG. Počítadlo adres uvnitř úseku je možné nastavit direk-
tivou ORG. Konečné  umístění úseku v paměti  je  dáno  spojovacím
programem L80.

POPIS PROGRAMU  [ M80.COM ]				strana:22
-----------------------------------------------------------------

Direktiva DW  výraz[,výraz]...
------------------------------

	Tato direktiva slouží k definování posloupnosti slov  pa-
měti.

výraz	výraz, jehož hodnota se umístí do slova na  adresu  danou
	počítadlem adres. Na nižší adresu se umístí nižší slabika
	hodnoty, na vyšší adresu vyšší slabika hodnoty výrazu.

Direktiva ELSE
--------------

	Tato direktiva  umožňuje  rozdělit  podmíněně  překládaný
blok na část, ve které se uplatňuje podmínka  v  původním  smyslu
(mezi IF a ELSE) a na  část, kde se podmínka  uplatňuje v opačném
smyslu (mezi ELSE a ENDIF). Pro dané IF je přípustné pouze  jedno
ELSE. Direktiva ELSE se vztahuje  vždy k naposled  zpracovávanému
IF.

Direktivy $EJECT,*EJECT
-----------------------

	Výše uvedené direktivy způsobí přechod na  novou  stránku
ve výpisu překládaného programu. Tvar $EJECT je zpracováván z dů-
vodu kompatability s překladačem ASM80 ze systému  DOS-MVS.  Tvar
*EJECT patří mezi direktivy Z80. Oba dva tvary odpovídají  direk-
tivě PAGE uvedené bez parametru.

Direktiva END  [výraz]
----------------------

	Tato direktiva zakončuje zdrojový text programu. Po jejím
nalezení překladač končí první případně druhý  průchod  překladu.
Startovací adresa je předávána prostřednictvím souboru REL spojo-
vacímu programu L80.

výraz	výraz, jehož hodnota představuje startovací adresu  prog-
	ramu.

Direktiva ENDC
--------------

	Tato  direktiva  zakončuje  blok  podmíněně  překládaného
zdrojového textu. Direktiva ENDC patří mezi direktivy Z80 a odpo-
vídá direktivě ENDIF.

Direktiva ENDIF
---------------

	Tato  direktiva  zakončuje  blok  podmíněně  překládaného
zdrojového textu, zahájený některou z direktiv IF. Každé direkti-
vě ENDIF musí odpovídat jedna direktiva typu IF.

POPIS PROGRAMU  [ M80.COM ]				strana:23
-----------------------------------------------------------------

Direktiva ENDM
--------------

	Tato direktiva zakončuje definici makroinstrukce  zaháje-
nou direktivou MACRO nebo opakovací blok REPT, IRP, IRPC. Ke kaž-
dé direktivě ENDM musí existovat právě jedna z výše uvedených di-
rektiv.

Direktiva ENTRY	jméno[,jméno]...
--------------------------------

	Zveřejnění jmen mimo hranice překládaného modulu. Podrob-
něji viz direktiva PUBLIC, která je synonymem k direktivě  ENTRY.
Dalším synonymem je direktiva GLOBAL pro Z80.

Direktiva     jméno EQU výraz
-----------------------------

	Direktiva EQU umožňuje nezměnitelně nadefinovat jméno.

jméno	jméno, které chceme definovat,
výraz	výraz, jehož hodnota a atribut se přiřadí jménu.
	Výraz nesmí být vnější.

Direktiva EXITM
---------------

	Tato direktiva umožňuje ukončit rozvoj makroinstrukce ne-
bo opakovacího bloku před nalezením konce definice ENDM. Nachází-
li se direktiva EXITM ve vložené makroinstrukci, přechází  se  po
jejím zpracování na rozvoj nejbližší vnější makroinstrukce.

Direktivy EXT, EXTERNAL, EXTRN	jméno[,jméno]...
------------------------------------------------

	Výše uvedené direktivy umožňují označit zadaná jména jako
vnější. Vnější jména jsou jména, která jsou použita v překládaném
modulu v poli operandů, ale definována jsou v jiných modulech, ve
kterých by měla být označena za veřejná (ENTRY, GLOBAL,  PUBLIC).
Výše uvedené direktivy jsou synonyma.  Direktiva  EXTERNAL  patří
mezi direktivy Z80. Místo výše uvedených direktiv je možné použít
k označení vnějšího jména v poli operandů dvojici znaků ##, která
se uvádí bezprostředně za jménem.

jméno	jméno, které chcme definovat jako vnější

Direktiva GLOBAL  jméno[,jméno]
-------------------------------

	Zveřejnění jmen mimo hranice překládaného modulu. Podrob-
něji viz direktiva PUBLIC, která je  synonymem  direktivy  GOBAL.
Direktiva GLOBAL patří mezi direktivy Z80.

POPIS PROGRAMU  [ M80.COM ]				strana:24
-----------------------------------------------------------------

Direktiva IF  výraz
-------------------

	Zahájení podmíněně překládaného bloku. Následující  zdro-
jový text se bude překládat, jestliže výraz bude mít hodnotu růz-
nou od nuly. Direktivy IF, IFT a COND (Z80) jsou synonyma.

výraz	má-li výraz hodnotu různou od nuly, je podmínka splněna.

Direktiva IF1
-------------

	Zahájení podmíněně překládaného bloku. Následující  zdro-
jový text se bude překládat pouze v průběhu 1.průchodu překladu.

Direktiva IF2
-------------

	Zahájení podmíněně překládaného bloku. Následující  zdro-
jový text se bude překládat pouze v průběhu 2.průchodu překladu.

Direktiva IFB	<parametr>
--------------------------

	Zahájení podmíněně překládaného bloku. Následující  zdro-
jový text bude překládán pouze v případě, že parametr je prázdný.

parametr  je-li parametr prázdný, je podmínka  splněna.  Parametr
	  musí být uzavřen do lomených závorek.

Direktiva IFDEF	 jméno
----------------------

	Zahájení podmíněně překládaného bloku. Následující  zdro-
jový text bude překládán pouze v  případě,  jestliže  v  okamžiku
zpracování direktivy IFDEF je specifikované jméno definováno nebo
označeno jako vnější.

jméno	je-li jméno definováno, podmínka je splněna.

Direktiva IFE, IFF  výraz
-------------------------

	Zahájení podmíněně překládaného bloku. Následující  zdro-
jový text je překládán pouze v případě, že zadaný výraz má hodno-
tu 0. Direktivy IFE a IFF jsou synonyma.

výraz	má-li hodnotu 0, je podmínka splněna.

Direktiva IFNB	<parametr>
--------------------------

	Zahájení podmíněně překládaného bloku. Následující  zdro-
jový text se bude překládat pouze v  případě,  že  parametr  není
prázdný.

parametr  je-li parametr neprázdný, je podmínka splněna. Parametr
	  musí být uzavřen do lomených závorek.

POPIS PROGRAMU  [ M80.COM ]				strana:25
-----------------------------------------------------------------

Direktiva IFNDEF  jméno
-----------------------

	Zahájení podmíněně překládaného bloku. Následující  zdro-
jový text se překládá pouze v případě, jestliže v okamžiku  zpra-
cováni direktivy IFNDEF specifikované jméno není  definováno  ani
označeno jako vnější.

jméno	není-li jméno definováno, je podmínka splněna.

Direktiva IFT  výraz
--------------------

	Zahájení podmíněně překládaného bloku. Viz direktiva  IF,
která je synonymem direktivy IFT.

Direktivy INCLUDE,$INCLUDE  jspec
---------------------------------

	Direktiva INCLUDE umožňuje přepnout vstup z právě překlá-
daného zdrojového souboru na vstup ze specifikovaného  vedlejšího
zdrojového souboru.  Překladač  při  nalezení  direktivy  INCLUDE
otevře vedlejší zdrojový soubor a překládá jej. Po dosažení konce
souboru se vstup přepne zpět na původní soubor a překlad pokraču-
je prvním řádkem za direktivou INCLUDE.

	Ve výpisu  programu  jsou  řádky  pocházející z vložených
souborů označeny znakem C.

	Ve vedlejších zdrojových souborech není přípustné  použí-
vat direktivu INCLUDE, tzn. není možné vkládat  zdrojové  soubory
do více úrovní (hlásí se chyba O).

	Jestliže specifikovaný vedlejší soubor (zdrojový) neexis-
tuje, hlásí se chyba V a direktiva INCLUDE je ignorována.

	Direktivy INCLUDE,$INCLUDE a MACLIB jsou synonyma.

jspec	jednoznačná specifikace  vkládaného  zdrojového  souboru.
	Implicitní přípona jména souboru je MAC.
	Implicitním zařízením je vybraný disk.

Direktiva IRP  fpar,<[spar][,spar]...>
--------------------------------------

	Tato direktiva zahajuje opakovací blok se seznamem  para-
metrů. Blok musí být zakončen direktivou ENDM. Počet opakování je
dán počtem skutečných parametrů. Při každém opakování je postupně
nahrazován formální parametr  uvedený  v  tělě  bloku  skutečnými
parametry se seznamu skutečných parametrů. V případě,  že  seznam
skutečných parametrů je  prázdný,  provede  se  jedno  opakování,
přičemž formální parametr je z textu odstraněn.

	Následující příklad generuje deset direktiv DB 1 až DB 10.

	IRP	X,<1,2,3,4,5,6,7,8,9,10>
	DB	X
	ENDM

POPIS PROGRAMU  [ M80.COM ]				strana:26
-----------------------------------------------------------------

fpar	formální parametr, který je při rozvoji v těle opakovací-
	ho bloku postupně nahrazován skutečnými parametry spar.

spar	skutečný parametr, seznam skutečných parametrů  musí  být
	uzavřen v lomených závorkách < >.

Direktiva IRPC  fpar,<řetězec>
------------------------------

	Tato direktiva zahajuje opakovací blok se znakovým řetěz-
cem. Blok musí být zakončen  direktivou ENDM. Počet  opakování je
dán počtem znaků řetězce. Při každém  opakování je v textu  bloku
nahrazen formální parametr jedním  znakem  ze  zadaného  řetězce.
Následující příklad generuje deset direktiv DB n+1,
kde n je 0,1 ... 9.

	IRPC	X,0123456789
	DB	X+1
	ENDM

fpar	formální parametr, který je při rozvoji postupně nahra-
	zován jednotlivými znaky řetězce.

ře-	posloupnost znaků, jejíž jednotlivé znaky se chápou  jako
tězec	skutečné parametry. Obsahuje-li řetězec oddělovače,  musí
        být uzavřen do lomených závorek < >.

Direktiva .LALL
---------------

	Tato direktiva slouží k  řízení  výpisu  rozvoje makroin-
strukcí a opakovacích bloků. Při zadání direktivy .LALL se  vypi-
suje úplný rozvoj makroinstrukce včetně příkazů, které negenerují
cílový kód.

Direktiva .LIST
---------------

	Direktiva slouží k obnovení výpisu po předchozím potlače-
ní výpisu direktivou .XLIST. Direktiva .LIST  je  implicitní.  Má
smysl pouze tehdy, je-li soubor výpisu vytvářen.

Directiva LOCAL	 jméno[,jméno]...
---------------------------------

	Pomocí direktivy LOCAL můžeme v rámci  definice  makroin-
strukce zadat tzv. lokální jméno. Taková jména překladač při roz-
voji makroinstrukce nahradí jedinečnými jmény  ve  tvaru  ..nnnn,
kde nnnn je hexadecimální číslo. použití lokálních jmen  umožňuje
vyhnout se vícenásobné definici návěští při rozvoji makroinstruk-
cí, které obsahují návěští. Překladač  generuje  jména  ve  tvaru
..nnnn tak, že postupně zvyšuje hexadecimální číslo od 0001 až do
FFFF. Programátor by tedy neměl jména výše uvedeného typu  použí-
vat. Pokud direktivu LOCAL použijeme, musí  být  prvním  příkazem
definice makroinstrukce.

POPIS PROGRAMU  [ M80.COM ]				strana:27
-----------------------------------------------------------------

jméno	lokální jméno, za které překladač  při  rozvoji  makroin-
	strukce generuje jedinečné jméno ve tvaru ..nnnn.

Direktiva MACLIB  jspec
-----------------------

	Tato direktiva slouží k přepnutí vstupu z hlavního  zdro-
jového souboru na vedlejší, daný jednoznačnou  specifikací jspec.
Viz direktiva INCLUDE, která je synonymem direktivy MACLIB.

Direktiva jméno MACRO [fpar][,fpar]...
--------------------------------------

jméno	jméno makroinstrukce, pomocí  kterého  se  makroinstrukce
	volá.

fpar	formální parametr.

	Directiva MACRO zahajuje definici makroinstrukce, definu-
je jméno makroinstrukce a formální parametry, které jsou  použity
v definici makroinstrukce. Definice makroinstukce musí být zakon-
čena direktivou ENDIM.

	Při volání makroinstrukce jsou formální parametry použité
v textu definice makroinstrukce nahrazeny  skutečnými  parametry.
Volání makroinstrukce má tvar:

	jméno	[spar][,spar]...

spar	skutečný parametr; obsahuje-li skutečný parametr  oddělo-
	vače, musí se uzavřít do lomených závorek < >.

	Počet skutečných parametrů nemusí odpovídat počtu formál-
ních parametrů. Je-li skutečných parametrů více, jsou  přebytečné
ignorovány. Je-li skutečných parametrů méně, jsou chybějící pova-
žovány za prázdné a při  rozvoji  makroinstrukce  jsou  příslušné
formální parametry z textu bez náhrady odstraněny.

	Následující příklad představuje  definici  makroinstrukce
MACDB s vloženým opakovacím blokem REPT, která po volání  vygene-
ruje deset diektiv DB 1 až DB 10.

	MACDB	MACRO	X
	Y	SET	0
		REPT	X
	Y	SET	Y+1
		DB	Y
		ENDM
		ENDM

Volání makroinstrukce bude potom příkazem:  MACDB 10

POPIS PROGRAMU  [ M80.COM ]				strana:28
-----------------------------------------------------------------

	Následující příklad generuje tentýž  kód,  ilustruje  od-
stranění  jedné  úrovně  lomených závorek při vkládání skutečného
parametru.

	MACDB1	MACRO	X
		IRP	Y,<X>
		DB	Y
		ENDM
		ENDM

Zavoláme-li makroinstrukci: MACDB1	<1,2,3,4,5,6,7,8,9,10>
bude rozvoj makroinstrukce:

	IRP	Y,<1,2,3,4,5,6,7,8,9,10>
	DB 	Y
	ENDM

Direktiva NAME  ('jméno')
-------------------------

	Pomocí této direktivy můžeme  definovat   jméno   modulu.
V případě, že direktivu NAME nepoužijeme, bere se  jméno   modulu
z direktivy TITLE. V případě, že ani direktiva TITLE není  použi-
ta, je jméno modulu vytvářeno ze jména zdrojového souboru.

jméno	jméno modulu, v úvahu se bere pouze prvních 6 znaků.

Direktiva ORG  výraz
--------------------

	Pomocí direktivy ORG lze v rámci právě překládaného úseku
nastavit počítadlo adres na požadovanou  hodnotu.  Všechna  jména
použitá ve výrazu musí být definována předem v průběhu 1. průcho-
du. Hodnota výrazu musí být  absolutní  nebo  musí  příslušet  ke
stejnému úseku jako počítadlo adres.

výraz	výraz, jehož hodnota se umístí do počítadla adres.

Direktiva PAGE  [výraz]
-----------------------

	Pomocí direktivy PAGE je možné nastavit  počet  řádek  na
stránce, implicitně má stránka výpisu 64 řádek. Jestliže v direk-
tivě výraz neuvedeme, zpracovává se jako průchod na novou  strán-
ku. Pro nastavení na novou stránku překladač  generuje  znak  FF,
tedy Form Feed - hodnota 0CH.

výraz	absolutní výraz, jehož  hodnota  určuje  počet  řádek  na
	stránce. Hodnota výrazu se může pohybovat v rozmezí 10 až
	255.

POPIS PROGRAMU  [ M80.COM ]				strana:29
-----------------------------------------------------------------

Direktiva .PHASE  výraz
-----------------------

	Tato direktiva zahajuje blok zdrojového textu,  který  se
bude překládat a absolutním počítadlem adres nastaveným  hodnotou
zadaného výrazu. Generovaný kód  se  však  stane  součástí  právě
překládaného úseku. Takto získaný kód  je  však  před  provedením
zpravidla třeba umístit  na adresu uvedenou v  direktivě  .PHASE.
Blok zahájený direktivou .PHASE se zakončuje direktivou .DEPHASE.

	Čistě ilustrativní příklad:

	0000'	C3	0006'		JMP	ALFA
	0003'	C3	0216'		JMP	BETA
	0006'	C3	0018'	ALFA:	JMP	GAMA

					.PHASE	210H

	0210	C3	0006'		JMP	ALFA
	0213	C3	0216		JMP	BETA
	0216	C3	0018'	BETA:	JMP	GAMA

					.DEPHASE

	0012'	C3	0006'		JMP	ALFA
	0015'	C3	0006'		JMP	BETA
	0018'	C3	0006'	GAMA:	JMP	GAMA

	U bloku .PHASE jsou ve výpisu uvedeny  absolutní ukládací
adresy 210 až 216, nicméně generovaný kód je součástí právě  pře-
kládaného kódového úseku a ukládá se na relativní  adresy  9'  až
11'.

výraz	absolutní výraz, jehož hodnota se dočasně umístí do počí-
	tadla adres.

Direktiva .PRINTX  otexto
-------------------------

	Tato direktiva je užitečná při dlouhých  překladech  nebo
při podmíněném překladu, kdy na  obrazovce  informuje  o  průběhu
překladu. Text  direktivy  .PRINTX  vystupuje  na  obrazovku  jak
v prvním tak v druhém průchodu.  Chceme-li,  aby  text  vystoupil
pouze v jednom průchodu je třeba pro direktivu .PRNTX použít pod-
míněně překládaný blok řízený direktivou IF1 nebo IF2. Například:

	IF2
	IF	BIOS
	.PRINTX	/BIOS VERZE A0/
	ENDIF	
	ENDIF

o	omezovač textu, první znak po typu  operace  rozdílný  od
	mezery nebo tabulátoru je chápán jako omezovač.

text	posloupnost znaků ASCII,  která  vystupuje  na  obrazovku
	terminálu.

POPIS PROGRAMU  [ M80.COM ]				strana:30
-----------------------------------------------------------------

Direktiva PUBLIC  jméno[,jméno]...
----------------------------------

	Tato direktiva slouží k definování veřejných  jmen,  t.j.
jmen, na které je možné se  odvolávat i z jiných modulů.  Všechna
jména musí být v rámci modulu definována (jako návěstí nebo pomo-
cí  direktiv EQU nebo SET), jinak je hlášena  chyba U. V případě,
že jméno je definováno jako vnější nebo je jménem  bloku  COMMON,
je hlášena chyba M. Návěští je možno označit jako veřejné též po-
užitím dvojice  dvojteček  při  jeho  definici.  Direktivy  ENTRY
a GLOBAL (Z80) jsou synonyma direktivy PUBLIC.

jméno	jméno, jehož hodnotu a atributy chceme zveřejnit mimo rá-
	mec překládaného modulu.

Direktiva .RADIX  výraz
-----------------------

	Implicitní číselnou soustavou je soustava desítková.  Di-
rektiva .RADIX umožňuje měnit implicitní základ v rozmezí od 2 do
16. Nově definovaný základ platí do další direktivy  .RADIX.  Čí-
selné konstanty pužité ve výrazu direktivy  .RADIX  bez  indikace
číselné soustavy se chápou vždy v soustavě desítkové.

výraz	výraz, jehož hodnota se stane novým implicitním  základem
	číselných konstant.

Direktiva .REQUEST  jméno[,jméno]...

	Direkiva .REQUEST umožňuje  předat  spojovacímu  programu
L80 prostřednictvím cílového souboru REL jména souborů,  ve  kte-
rých má spojovací program hledat nedefinovaná vnější jména. Jména
souboru musí odpovídat konvencím platným  v  překladači  M80  pro
jména. Specifikace souborů nesmí obsahovat příponu jména  souborů
ani označení disku. Za příponu a disk si spojovací program dosadí
implicitní hodnoty (REL a vybraný disk). Spojovací  program  pro-
hledává knihovny v pořadí v jakém byly zadány.

jméno	jméno souboru, ve kterém má spojovací program hledat  ne-
	definovaná vnější jména.

Direktiva .SALL
---------------

	Tato direktiva slouží k řízení  výpisu  rozvoje  makroin-
strukcí. Po zpracování direktivy .SALL se  při  rozvoji  makroin-
strukce vypisuje pouze generovaný cílový kód.

Direkiva      jméno SET výraz
-----------------------------

	Direktiva SET umožňuje definovat jméno podobně  jako  di-
rektiva EQU s tím rozdílem, že  jméno  definované direktivou  SET
lze jinou direktivou SET předefinovat.

jméno	jméno, které chceme definovat

výraz	výraz, jehož hodnota a atributy se přířadí  jménu.  Výraz
	nesmí být vnější.

POPIS PROGRAMU  [ M80.COM ]				strana:31
-----------------------------------------------------------------

Direktiva SUBTTL  text
----------------------

	Tato direktiva umožňuje umísťovat  do  výpisu  podtitulek
stránky. v programu  může  být  použit  libovolný  počet direktiv
SUBTTL. Text podtitulku je omezen na 60 znaků.

text	posloupnost znaků ASCII, která se objeví jako druhý řádek
	hlavičky každé stránky výpisu.

Direktiva .XALL
---------------

	Direkiva .XALL slouží k řízení  výpisu  rozvoje  makroin-
strukcí. Direktiva .XALL nastavuje režim, při kterém se  vypisuje
generovaný cílový kód a ze zdrojových  řádek  pouze  ty  příkazy,
které tento kód generují. Direktiva .XALL je implicitní.

Direktiva TITLE,$TITLE  text

	Tato direktiva umožňuje umístit do výpisu titulek  strán-
ky. Direktiva TITLE se může v programu uvést pouze  jedna,  jinak
je hlášena chyba Q. V případě, že není  uvedena  direktiva  NAME,
bere se prvních  6  znaků  direktivy  TITLE  jako  jméno  modulu.
V případě, že mezi těmito znaky je mezera nebo  tabulátor,  berou
se za jméno znaky pouze do tohoto oddělovače. V případě, že  není
uvedena ani direktiva TITLE, bere se jméno modulu ze jména  zdro-
jového souboru.

Tvar $TITLE je zpracováván z důvodu kompatability  s  makroassem-
blerem ASM80 ze systému DOS-MVS.

text	posloupnost znaků ASCII, která se objeví jako první řádek
	každé stránky výpisu.

Direktiva .XCREF
----------------

	Tato  direktiva  potlačuje  vytváření  křížových  odkazů.
K obnovení zpracování křížových odkazů  slouží  direktiva  .CREF.
Obě direktivy mají smysl pouze tehdy, je-li při spuštění  překla-
dače zadán arametr /C (požadavek na vytváření křížových odkazů).

Direktiva .XLIST
----------------

	Tato direktiva  potlačuje  výpis  překládaného  programu.
Výpis lze obnovit direktivou .LIST. Obě direkivy mají smysl pouze
tehdy, je-li soubor výpisu vytvářen.

Direktiva .Z80
--------------

	Tato direktiva nastavuje režim, ve kterém překladač zpra-
covává symbolické vyjádření strojových  instrukcí  mikroprocesoru
Z80 na rozdíl od mikroprocesoru 8080. Tento režim lze též  nasta-
vit parametrem /Z při spuštění překladače.

POPIS PROGRAMU  [ M80.COM ]				strana:32
-----------------------------------------------------------------


              5. PŘENOSITELNOST ZDROJOVÉHO TEXTU.
 ----------=========================================----------

	Chceme-li, aby programy byly na úrovni  zdrojového  textu
přenositelné bez větších problémů pod makroassembler ASM80 pracu-
jící na vývojových systémech pod  DOS-MVS  případně  ISIS-II,  je
třeba věnovat pozornost následujícímu doporučení:

a, nepoužívat direktivy:

	.8080, .COMMENT, COMMON, .CREF, COND, DC, .DEPHASE,
	ENTRY, EXT, IF1, IF2, IFB, IFDEF, IFE,  IFF,  IFNB,
	IFNDEF,	IFT, INCLUDE, .LALL, .LIST,  MACLIB,  PAGE,
	.PHASE, .PRINTX, .RADIX, .REQUEST,  .SALL,  SUBTTL,
	TITLE, .XALL, .XCREF, .XLIST, .Z80

b, nepoužívat direktivy pro Z80:

	COND, DEFB, DEFL, DEFM, DEFS, DEWF,  ENDC, * EJECT,
	EXTERNAL, GLOBAL

c, pro některé z výše uvedených direktiv existují  v  jazyku  M80
   synonyma, která jsou přípustná pro ASM80

d, při přechodu pod ASM80  je  možné  některe  z  výše  uvedených
   direktiv nahradit řídícími příkazy překladače ASM80 umístěnými
   ve zdrojovém textu (řádky začínají znakem $)

e, jako omezovače znakových řetězců používat  apostrofy   namísto
   uvozovek

f, ve jménech používat pouze písmena, číslice  a  znaky ?  @, ne-
   používat znaky $ . a podtržítko

g, nepoužívat pro hexadecimální konstanty tvar X'nnnn'

h, obezřetně používat  jména  instrukcí  jako  operandy  (poněkud
   odlišné zpracování)  

i, obezřetně používat operátory HIGH a LOW, v M80 pracují s rela-
   tivními operandy jako s absolutními

j, nepoužívat implicitní direktivu DB, (nezadání typu operace)

k, nedefinovat globální návěští pomocí znaků ::

l, neoznačovat vnější jména v poli operandů pomocí znaků **

m, nepoužívat implicitní nastavení počítadla adres;  pod  M80  je
   implicitní relativní 0 kódového úseku, pod ASM80 absolutní 0.


POPIS PROGRAMU  [ M80.COM ]				strana:33
-----------------------------------------------------------------

	Při přenosu  zdrojového  textu  z  překladače  ASM80  pod
překladač M80 je třeba si uvědomit, že překladač M80:

a, nezpracovává řídící příkazy překladače ASM80 (řádky začínající
   znakem $), výjimku tvoří $EJECT,$TITLE a do jisté míry $INCLU-
   DE

b, nezpracovává  parametry  PAGE  a  INPAGE  v  direktivách  CSEG
   a DSEG, hlásí chybu Q a parametry ignoruje. Z toho vyplývá, že
   překladač M80 generuje přemístitelné úseky pouze po  slabikách
   (volně přemístitelné úseky)

c, nezpracovává vnější jména, jejichž hodnota se  má  ukládat  na
   jednu slabiku

d, operátory HIGH a LOW dodávají v případě  relativních  operandů
   absolutní výsledek

e, může hlásit chyby při zpracování  některých  zápisů  instrukcí
   použitých jako operandy

f, nastavuje počítadlo adres implicitně na relativní  0  kódového
   úseku CSEG

g, nezpracovává jména MEMORY a STACK jako rezervovaná jména,  ale
   jako běžná uživatelská jména a nepřisuzuje jim žádný speciální
   význam.

-----------------------------------------------------------------
 Podle příručky CP/M - Základní programy I  vydané JZD AK Slušo-
 vice upravil:
 Meo'soft - Ing.Jírovec Roman, Komenského 1316, 031 01 L.Mikuláš
 1991.
-----------------------------------------------------------------
