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-bugEditor 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/IPrvý 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.