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