EDTASMnav                     - 1 -                  TASWORD TWO
                    EDTASM - návod k použití
                   **************************
 EDTASM je assemblerský systém složený ze tří částí:
    1. editor
    2. assembler
    3. z-bug
Editor je řádkově orientovaný textový editor určený pro přípravu
zdrojového textu pro assembler. Je možné použít jej i samostatně
pro přípravu programů pro překladače vyšších programovacích ja-
zyků (BASIC,PASCAL,C,FORTH ....).
Assembler je překladač jazyka symbolických adres v mnemonice
mikroprocesoru Z-80. Množství pseudooperací včetně podmíněného
překladu a MACRO usnadňuje a zefektivňuje práci programátora.
Assembler generuje cílový kód do paměti na adresu určenou při
překladu nebo generuje tzv. OBJECT na uvedené zařízení.
Z-bug je výkonný ladící prostředek - symbolický zpětný překladač
- Disassembler. Umožňuje krokování programu, nastavení bodů
zastavení, změny registrů, výpis programu v různých formátech,
obsahuje celočíselnou aritmetiku a řadu dalších potřebných
funkcí. Ve verzi 3.3 Z-bug není obsažen.
                         FUNKCE EDITORU
                         ==============
Po spuštění EDTASM se vypíše úvodní text a spustí se EDITOR.
Toto je indikováno výpisem znaku '*'. Příkazy se zadávají ve
formě písmeno (znak) a případný seznam parametrů.
            V parametrech lze použít:
            100      číslo řádky
            200:500  od řádky 200 do řádky 500
            #        první řádka
            *        poslední řádka
            .        aktuální řádka
            500+3    třetí řádka za řádkou 500
            1200-2   druhá řádka před řádkou 1200
            %        celý text ( #:* )
            500!5    5 řádek od řádky 500
            .-16!16  předchozí stránka
 A assembler - spuštění assembleru, další popis viz ASSEMBLER
 B bye - návrat do Basicu se zachováním textu v paměti EDTASMu.
   Nebyl-li text nahrán (save) je nutno potvrdit rozhodnutí Yes.
 C kam,co[,krok] copy - kopírování části textu CO na místo KAM
   Na původním místě se text zachovává, KROK je krok číslování
   na novém místě.
 D [co] delete - smaže část textu CO. Bez uvedeného parametru
   maže aktuální řádek. Řádek je možno smazat rovněž pouhým
   napsáním jeho čísla a odesláním.
                              - 2 -
 E [co] edit - oprava řádků v rozsahu CO. Po E se vypíše číslo
   právě editovaného řádku a očekává se jeho editace. Stisk:
         SPACE - kurzor o znak dál
         DEL   - kurzor o znak zpět
         RETURN- ukončení editace
         [n] D - smazání n znaků před kurzorem
         [n] C - změny n znaků před kursorem
             L - výpis celého řádku
             Q - konec editace
             I - vsunutí textu za kurzor
             X - výpis řádku a editace celého řádku odzadu přímo
 F [kde][^co] find - hledá výskyt textu CO v rozsahu řádek KDE.
   Řádek obsahující CO je vypsán. Samotné F hledá dle minule za-
   daného CO.
 H [co] hardcopy - vytiskne oblast textu CO na tiskárně včetně
   čísel řádek. Bez CO tiskne celý text. Připravenost tiskárny
   je nutno potvrdit RETURN. Tisk lze zastavit pomocí <RESET>.
 I [kam][,krok] insert - zahajuje vsouvání řádek do textu. Bez
   parametru je vsouvání za aktuální řádku. Pokud dojde k tomu
   že číslo vsouvané řádky překročilo číslo další řádky, potom
   jsou vsouvané řádky číslovány stále stejným číslem a po ukon-
   čení editace přečíslován celý text.Insert se ukončuje CTRL/A.
 L [název] load - Provede načtení souboru s určeným názvem. Po-
   kud není uveden je použit naposledy použitý název ( příkaz
   ? ).
 M kam,co[,krok] move - přesun textu CO na místo KAM.Na původním
   místě je text zrušen.
 N [od][,krok] reNum - přečíslování řádek textu.
 O organisation - výpis velikosti volné paměti a případné
   vyhrazení volného místa.
 P [co] page - tisk CO na obrazovku.
 Q [A][Z] quit - umožňuje zrušit Z-bug nebo Assembler pro zisk
   větší paměti. Rozhodnutí je nutno potvrdit RETURN.
             QZ - ruší Z-bug
             QA - ruší Z-bug a Assembler
 R [co][,krok] replace - zruší řádku CO a provede Insert na tom-
   to místě.
 S [kde][^který][^čím] substitute - v rozsahu KDE provede
   nahrazení textu KTERÝ textem ČÍM.
 T [co] typewriter - tisk na tiskárnu bez čísel řádků.
 W [název] write - zápis textu na implicitní nebo uvedené
   zařízení.
 Z z-bug - ukončí práci editoru a předá řízení Z-bugu.
 ? question - vypíše informace o délce souboru, o volné paměti
   pro text a jméno textu.
 CTRL/@ - výpis předchozí řádky
 CTRL/? - výpis následující řádky
 #      - výpis první stránky
 /      - výpis poslední řádky
 @      - výpis následující stránky
 :      - výpis předchozí stránky
 CTRL/L - smazání obrazovky
                         SEZNAM PŘÍKAZŮ
                        ****************
 A - assembler  F - find       P - page       M - move
 B - bye        H - hardcopy   Q - quit       N - renume
 C - copy       I - insert     R - replace    W - write
 D - delete     L - load       S - substitute Z - Z-bug
 E - edit       O - org        T - typewriter ? - question
                              - 3 -
                       Spuštění assembleru
                       ===================
Assembler se spouští z EDITORU příkazem A. Za příkazem mohou
následovat tyto parametry:
 /NL - NO LIST             /AO - ABSOLUTE ORG
 /ST - SYMBOL TABLE        /LP - LINE PRINTING
 /NO - NO OBJECT           /MO - USR ORG ( zrušeno )
 /IM - INTO MEMORY         /NC - NO CHECK
NL - protokol o překladu se nebude vypisovat na displej.Protokol
     obsahuje absolutní adresy, strojové kódy instrukcí, text
     řádky včetně čísla řádky. Na konci protokolu se vypíše
     celkový počet chyb nalezených při překladu.
ST - po překladu se vypíše tabulka symbolů setříděná podle
     abecedy, u každého návěští se vypíše jeho hodnota a
     případné další specifikace:
      M symbol je název MACRO
      U symbol není definován
      D symbol je definován pomocí DEFL
      R symbol je definován vícekrát
      F MACRO je voláno před definicí
NO - negeneruje se kód. Bez tohoto parametru se automaticky
     generuje kód do paměti nebo na magnetofon.
IM - způsobí ukládání kódu do paměti. Adresy ukládání jsou
     kontrolovány takže nemůže dojít k přepsání EDTASMu ani
     textu.
AO - ve spojení s /IM způsobí ukládání kódu do paměti na adresy
     uvedené v programu pomocí pseudoinstrukce ORG. Bez /AO se
     kód ukáldá do paměti hned za text.
LP - provede výstup protokolu a tabulky symbolů na tiskárnu.
MO - zvolí ORG podle hodnoty USRORG definované v EDITORU.
NC - zamezí kontrole umístění překladu. Ve spojení s /IM/AO/NC
     je možno umístit překlad na libovolné místo paměti přímo.
Poznámky:
---------
 Překlad je možno kdykoliv přerušit CTRL/A.
 Pokud je při překladu nalezena chyba je vypsána chybná řádka,
počítač pípne a překlad se pozastaví. Pokračování překladu
dosáhneme stiskem libovolné klávesy kromě C, která způsobí, že
na dalších chybách se již nečeká.
 ASSEMBLER překládá programy ve standardní mnemonice, proto zde
popíšeme pouze odlišnosti:
 Názvy návěští mohou obsahovat písmena, číslice a znaky $,.,@,?
a _ . Návěští nesmí tvořit žádné klíčové slovo assembleru (Z,NC,
LD, atd ).
 Délka návěští není omezena, významných je prvních šest znaků.
Za návěštím nemusí být dvojtečka ( pak tam ale musí být CTR/I ),
ale z hlediska přehlednosti,snadného vyhledávání a slučitelnosti
s jinými assemblery je vhodné za návěští dvojtečku psát. Za ná-
věštím nemusí být žádný text. Návěští musí být na začátku řádky.
 Formální parametry v definici MACRO musí začínat #. Maximální
délka skutečného parametru je 16. V definici MACRO naní možné
volat jiné MACRO.
 ASSEMBLER je tříprůchodový. Při prvém průchodu se tvoří tabulka
symbolů, při druhém se tiskne protokol, případně ukládá text do
paměti a při třetím se generuje kód do souboru.
                              - 4 -
 Pro generování různých návěští při opakovaném volání MACRO
slouží parametr #$YM, který je při každém rozvoji MACRO nahrazen
jiným číslem.
 Pro správnou funkci assembleru je nutno psát všechny zdrojové
texty velkými písmeny a vyvarovat se zápisu CTRL+klávesa do
textu pokud se nejedná o povolený kód který slouží ke psaní.
 Zdrojový text je nutno psát s použitím tabulátoru:
 100 LABEL  LD     A,1FH  ;
          ^   ^         ^
     CTRL/I   CTRL/I    CTRL/I
Prvý tabulátor je povinný, druhý a třetí již není nutný, ale
zvyšuje přehlednost textu. Tabulátory zároveň šetří paměť.
                             Výrazy:
                            ========
 Ve výrazech je možno používat:
1, 10H , 10010B           číselné konstanty
'A',  'ahi'               znakové konstanty
LABEL                     návěští
+ - * / MOD               aritmetické operace
SHL , SHR                 aritmetický posun
EQ,NE,LT,LE,GT,GE         porovnání
< , > , =                 porovnání
LOW , HIGH                nižší, vyšší byte
AND,OR,XOR,NOT,NEQ        logické operace
!,&                       OR,AND NUL
                          ný parametr
( , )                     závorky pro
                          změnu priority
$ , .                     aktuální PC
 Číselné konstanty musí začínat číslicí. Bez označení se berou
jako desítkové nebo podle zvoleného RADIXu nebo jinak:
  B   - binárně     D,T - desítkově
  O,Q - osmičkově   H   - šestnáctkově
  Pseudooperace
  =============
DEFS , DS       definice volného místa
DEFM , DM       definice textu
DEFB , DB       definice slabiky
DEFW , DW       definice slova
DEFC , DC       definice textu
ORG             nastavení PC
END             konec textu, nastavení startovací adresy
EQU             definice hodnoty návěští
DEFL            definice hodnoty návěští kterou je možno měnit
MACRO           definice bloku MACRO
ENDM            konec bloku MACRO
COND,IF,IFF,IFT začátek bloku podmíněného překladu
ELSE            změna stavu podmíněného překladu
ENDC            konec bloku podmíněného překladu
.LIST           povolení tisku protokolu
.XLIST          zákaz tisku protokolu
.RADIX          změna báze číselných konstant
.PRINTX         tisk hlášení na diplej
                              - 5 -
Příklady:
DB      1,40H,'Text', LABEL-1
DEFM    'DEFM je totéž jako DEFB'
DW      1234,100100100111B,56*31 MOD 4
DC      'Text s SET 7 na konci'
END     START
CR      EQU     0DH
LLL     DEFL    LLL+1
AAA     MACRO   #TEXT,#ADRESA
        DC      '#TEXT'
        DW      #ADRESA
        ENDM
        AAA     'LOAD',LOAD  ;volání
        COND    CPM
        .PRINTX 'Verze CP/M'
        ELSE
        .PRINTX 'Verze OS'
        ENDC
        .RADIX  16T     ;hexa
Chybová hlašení při překladu
BAD LABEL             špatný název návěští
BRANCH OUT OF RANGE   relativní skok mimo rozsah
BAD ADRESING MODE     špatný adresní mód instrukce
BAD OPCODE            neznámá mnemonika
NO END STATEMENT      chybí END na konci textu
FIELD OVERFLOW        slabika větší než 255
SYNTAX ERROR          chyba při definici MACRO
NESTED MACROS MACRO   nelze vnořovat MACRA
ENDM WITHOUT MACRO    ENDM bez MACRO
ENDC WITHOUT COND     ENDC bec COND
BAD ADRESS            adresa mimo rozsah
BAD MEMORY            špatná paměť
MISSING INFORMATION   na řádce chybí další text
MULTIPLE DEFINITION   opakovaná definice návěští
MULTIPLY DEF SYMBOL   opakovaně definované návěští
UNDEFINED SYMBOL      nedefinované návěští
BAD EXPRESION         chyba ve výrazu
SYMBOL TABLE OVERFLOW přetekla tabulka symbolů
STACK OVERFLOW        přetekl zásobník
DIVISION BY 0         dělení nulou
MACRO FWD REF         MACRO voláno před def.
Startovací adresy EDTASMu
=========================
 Verze EDTASMv80 je uložena od 8000H a na této adrese je inicia-
lizační start EDT.Na adrese 8003 je start EDT bez smazání textu.
Pokud se během práce v EDTASMu dostanete do Basicu stačí použít
příkaz CALL &8003 a s textem se nic nestane.
Formát generovaného textu v A
=============================
Příkaz A může generovat na zařízení soubor typu .DT.Tento soubor
obsahuje vygenerovaný strojový kód v absolutní podobě a má tento
formát:
 Hlavička, bloky dat, END blok
Bloky dat:
 1. byte    - typ bloku: 01 běžný blok, 02 blok se startovací
              adresou
 2. byte    - délka následujících dat včetně adresy
 3. 4. byte - adresa umístění dat
 5. až X - OBJECT kódy
 Tento soubor je možné otevřít příkazem OPEN neb je typu .DT a
jako k takovému k němu přistupovat.