
               STRUČNÝ NÁVOD PROGRAMU RESOURCE.COM
               -----------------------------------



   Program  RESOURCE.COM je relativně komfortní symbolický disas
sembler souborů obsahujících  strojový kód procesoru Z80 a proce-
sorů směrem dolů kompatibilních. Pracuje v prostředí  CP/M. Prog-
ram RESOURCE a zpracovávaný  program s příponou typu COM jsou bě-
hem práce  v operační paměti  počítače, pomocné soubory typu CTL,
SYM, DOC a výsledný soubor typu ASM  se nahrávají  z  a  ukládají
na aktuální disk. Přesměrování  vstupů a výstupů za běhu programu
je však možné.


	Rozdělení paměti:
	
	0100h       - RESOURCE.COM
	1700h       - zásobník
	1800h       - tabulka pro 512 definicí DS, DB, DW atd.
                      (3 byty na definici)
	1E00h       - tabulka CTL tab. (viz dále)
	2400h       - tabulka symbolů (cca 10 bytů na symbol)
	offset+0100h- začátek zpracovávaného souboru typu COM
                      (z diskety)
	XXXXh       - tabulka komenářů pro výsledný soubor typu
                      ASM

   Z uvedeného vyplývá, že offset musíme volit  tak veliký,  aby
bylo dostatek místa na tabulku symbolů (zpravidla postačí offset
3F00h, pak  je  zpracovávaný  program  uložen  fyzicky od adresy
4000h, program RESOURCE ho však  chápe  jako  uložený  od adresy
100h). V případě, že disassemblujeme CP/M, samotný RESOURCE nebo
jiný program ležící v operační paměti mimo oblast 0100h až 2000h
zadáváme offset=0.

   Nejlépe si můžeme činnost programu RESOURCE osvětlit na přík
ladu zpracovávání hypotetického souboru TEST.COM délky např.8kB,
který máme uložen na aktuální disketě:

1. Spustíme program RESOURCE.COM příkazem RESOURCE [CR], který se
   ohlásí nápovědným znakem * (hvězdička).
2. V souboru TEST.COM uvedené délky lze očekávat cca 800 návěští
   a symbolů, tabulka symbolů  a CTL tab. bude mít délku cca 8kB 
   (2000h), proto:  offset=1E00h+2000h-0100h=3D00h.  Zadáme tedy
   offset velikosti 3D00h příkazem O3D00 [CR].
3. Zavedeme do operační paměti soubor TEST.COM příkazem RTEST.COM 
   [CR].
4. Na displeji se objeví dvě čísla: 5E00 a 2100, která značí fy-
   zický a logický konec programu TEST.COM v operační paměti.
5. Zvolíme počátek tabulky komentářů za fyzickým  koncem souboru 
   TEST.COM, tzn. za adresou 5E00h příkazem U6000 [CR].
6. Zda jsme postupovali správně můžeme ověřit přikazem  ?  [CR],  
   který vypíše na  obrazovce aktuální rozložení paměti:
 	Adress   = 0100
	Symbols  = 2400 2400
	Offset   = 3D00
	Coments  = 6000 6000
	CTL tab  = 1E00 1E00

   Ve výpisu značí: 

	Adress   : aktuální stav počítadla adres
	Symbols  : počáteční a koncová adresa tabulky symbolů
	Offset   : nastavení offsetu
	Coments  : počáteční a koncová adresa tabulky komentářů
	CTL tab  : počáteční a koncová adresa tabulky CTL

7. Zadáme  logickou koncovou adresu  souboru  TEST.COM  příkazem 
   C2100,E [CR].
8. Vytvoříme prvotní tabulku s odkazy na DB, DS, DW atd.příkazem 
   A100,2100 [CR].
9. Vytvoříme prvotní tabulku symbolů příkazem B100,2100 [CR].
10.Disassembler  se  snaží  vytvořit strojový kód  i  v krátkých 
   oblastech DS, DM  atd., takže bývá nutné prvotní, automaticky
   vytvořené tabulky opravit. K tomu slouží příkazy typu CNNNN,X
   a ENNNN,.SYMBOL  (viz přehled příkazů v příloze č. 1),  které
   aktualizují tabulky odkazů a symbolů.  Prakticky  postupujeme
   tak, že příkazem L postupně prohlížíme již vytvořený zdrojový 
   text,snažíme se lokalizovat místa s definicemi DS, DB, DW, DM 
   atd., která zapisujeme do příslušné tabulky příkazem  CNNNN,X
   a symbolická návěští zapisujeme do příslušné tabulky příkazem
   ENNNN,.SYMBOL. Krok 10 opakujeme tak dlouho,dokud všechna ná-
   věští a oblasti DS, DB atd. nejsou ve svých  tabulkách přesně
   zaneseny. Tato činnost je nejdůležitější pro vytvoření správ-
   ného zdrojového textu. Nelze však pro to stanovit přesná pra-
   vidla, záleží na praktických zkušenostech a dovednostech.
11.Po ukončení  práce  pod bodem  10  otevřeme  výstupní  soubor
   TEST.ASM příkazem STEST.ASM [CR](název původního souboru TEST
   samozřejmě nemusíme dodržet).
12.Naplníme  výstupní soubor příkazem  L100,2100  [CR].  Protože
   program RESOURCE narazí  při tom na předem definovanou konco-
   vou adresu (viz. bod 8),výstupní soubor se automaticky uzavře.
13.Opustíme program RESOURCE příkazem X [CR].

    Další práce se souborem  TEST.ASM je pohodlnější,  použijeme-
li některý z editorů zdrojových textů (např. WM.COM). Po přísluš-
ných úpravách ho lze  znovu přeložit programem M80.COM a spojova-
cím programem L80.COM lze vytvořit novou spustitelnou verzi prog-
ramu TEST.









 Přehled příkazů programu RESOURCE.COM                  Příloha 1


Příkaz  Syntaxe		Odezva příkazu
----------------------------------------------------------------
;	;		vypíše celou tabulku komentářů
	;NNNN  		vypíše komentáře od udané (logické) adre-
                        sy NNNNh 
	;NNNN,komentář	zapíše na adresu NNNNh komentář
	;NNNN,		zruší na adrese NNNNh komentář

A	A		vytvoří automaticky  ve zdrojovém textu
                        oblasti  DB,  DS,  DM atd. (delší jak 7
                        znaků) od aktuální adresy pro předvolený
                        počet  bytů  a zaznačí je do tabulky CTL
                        tab.
	ASSSS		dtto, ale od adresy SSSSh
	ASSSS,EEEE	dtto, od adresy SSSSh po adresu EEEEh
	A,EEEE		dtto, od aktuální adresy po adresu EEEEh
	A=NN		nastaví  nový  počet  bytů  zpracovávaný
                        příkazem A  (standartně  nastaveno   80h
                        bytů)

B	B		vytvoří  automaticky ve zdrojovém textu 
                        návěští a symboly od aktuální adresy pro
                        předvolený počet řádek a  zaznačí  je do
                        tabulky symbolů
	BSSSS		dtto, ale od adresy SSSSh
	BSSSS,EEEE	dtto, od adresy SSSSh po adresu EEEEh
	B,EEEE		dtto, od aktuální adresy po adresu EEEEh
	B=NN		nastaví  nový  počet řádek  zpracovávaný
                        příkazem B  (standardně  nastaveno   10h
                        řádek)

C	C		vypíše celou tabulku CTL tab.
	CNNNN		vypíše CTL tab. od adresy NNNNh
	CNNNN,X		definuje  nový formát příkazu C (platí do
                        další definice), kde X se nahradí:
	      B...DB  od adresy NNNNh jsou DEFB
	      W...DW  od adresy NNNNh jsou DEFW
	      S...DS  od adresy NNNNh je oblast DEFS
	      I...    od adresy NNNNh začínají opět instrukce
	      K...    ruší předchozí definici na adrese NNNNh
	      E...    vloží značku konce souboru na adresu NNNNh

D	D		vypíše  předvolený  počet byte operační
                        páměti od aktuální logické adresy
	DSSSS		dtto, ale od adresy SSSSh
	DSSSS,EEEE	dtto, od adresy SSSSh po adresu EEEEh
	D,EEEE		dtto, od aktuální adresy po adresu EEEEh
	D=NN		nastaví  nový  počet  bytů  zpracovávaný
                        příkazem D(standardně nastaveno 80h bytů)
	DS		vypíše celou tabulku symbolů
	DS.SYMBOL	vypíše tabulku symbolů počínaje uvedeným
                        symbolem
 E	ENNNN,.SYMBOL	vloží  do tabulky symbolů nové návěští s
                        adresou NNNNh  (staré  návěští na stejné
                        adrese se přepíše)

F	FNNNN		hledá  od  aktuální adresy výskyt adresy
                        NNNNh
 	FNNNN,SSSS	dtto,  ale od adresy SSSSh
	F		pokračuje v předešlém hledání

K	K.SYMBOL	zruší v tabulce uvedený symbol
	
L	L		vypíše předvolený počet řádků zdrojového
                        textu od aktuální adresy
	LSSSS		dtto, ale od adresy SSSSh
	LSSSS,EEEE	dtto, od adresy SSSSh po adresu EEEEh
	L,EEEE		dtto, od aktuální adresy po adresu EEEEh
	L=NN		nastaví nový počet řádek pro výpis (stan-
                        dardně nastaveno 10h řádek)

O	O		vypíše aktuální offset
	ONNNN		nastaví nový offset na hodnotu NNNNh

P	P		zavede   do  výsledného  souboru  .ASM 
                        instrukce ORG a EQU (samozřejmě jen pokud
                        v textu existují)

Q	Qpříkaz		uvedením Q před libovolný příkaz se tento
                        stane   "opustitelným"   (např.    příkaz
                        QB100,FFFF neproběhne prakticky	přes ce-
                        lou paměť, ale jen po adresu označenou za
                        konec souboru - viz příkaz CNNNN,E)

R	RSOUBOR.COM	zavede  do  operační  paměti z aktuální
                        diskety soubor typu .COM k disassemblová-
                        ní s offsetem + 100h (před názvem souboru
                        je možno uvést zařízení)
	RSOUBOR.CTL	zavede  do  operační paměti  z  aktuální
                        diskety tabulku CTL tab.
	RSOUBOR.SYM	zavede  do  operační  paměti z  aktuální
                        diskety tabulku symbolů
	RSOUBOR.DOC	zavede  do  operační paměti  z  aktuální
                        diskety  tabulku  komentářů  (předtím je
                        nutno zadat příkaz UNNNN)

S	SSOUBOR.ASM	otevře  výstupní  soubor  typu .ASM pro
                        zápis na aktuální disketě (před názvem
                        souboru je možno uvést zařízení)
	SSOUBOR.CTL	zapíše na aktuální disketu tabulku
                        CTL tab.
	SSOUBOR.SYM	zapíše na aktuální disketu tabulku
                        symbolů
	SSOUBOR.DOC	zapíše na aktuální disketu tabulku
                        komentářů


 U	UNNNN		otevře v operační paměti oblast pro uklá-
                        dání  komentářů (nezavádí  se  implicitně
                        jako ostatní tabulky)

X	X		návrat  do operačního systému (volajícího
                        programu)

Z	Z		uzavírá výstupní soubor typu .ASM (před-
                        nost má příkaz 	CNNNN,E !)

?	?		vypíše aktuální rozdělení operační paměti,
                        offset atd. (při disassemblování delších
                        souborů se doporučuje občas zkontrolovat,
                        zda se nezačaly navzájem překrývat
			tabulky, data apod.)








V Brně dne 1.března 1991                   ing. Radomír Svoboda
