GENSnav.1 TASWORD TWO
Tento manuál byl převzat bez úprav z počítače ZX SPECTRUM.
Na počítačí SORD m.5 existuje program ASM-Z80.CM a jeho upravená
verze ASM-GENS3.CM. Oba programy se startují CALL &8000.
OBSAH:
GENS 3
KAPITOLA 1 SPUSTENI 1
KAPITOLA 2 PODROBNOSTI GENS 3 1
2.0 Jak pracuje GENS 3 1
2.1 Format assemblerovych instrukci 4
2.2 Navesti (labels) 4
2.3 Citac adres 5
2.4 Tabulka symbolu 5
2.5 Vyrazy 5
2.6 Ridici povely assembleru 6
2.7 Podminene pseudoinstrukce 7
2.8 Prikazy assembleru 7
KAPITOLA 3 EDITOR 9
3.1 Uvod do editoru 9
3.2 Prikazy editoru 10
3.2.1 Vkladani textu 10
3.2.2 Vypis textu 10
3.2.3 Uprava textu 10
3.2.4 Prikazy pro pasku 12
3.2.5 Kompilace a spusteni 12
3.2.6 Ostatni prikazy 13
3.3 Priklad pouziti editoru 14
PRILOHA 1 CHYBOVA HLASENI A JEJICH VYZNAM 15
PRILOHA 2 REZERVOVANA SLOVA, MNEMONIKA ATD. 16
PRILOHA 3 FUNKCNI PRIKLAD 16 XXX XXXXX X X XXX XXX
X X X X X X X X X
X X XX X X X
X XXX X X X XXX XX
X XX X X XX X X
X X X X X X X X X
XXX XXXXX X X XXX XXXKAPITOLA 1 SPUSTENI
GENS 3 je vyborny a jednoduse pouzitelny assembler pro Z80,
ktery je velice blizky standardnimu assembleru ZILOG. Na rozdil
od mnoha jinych assembleru pro mikropocitace je GENS 3 rozsahly
profesionalni software a doporucujeme prostudovat nasledujici
kapitoly spolu s prikladem v priloze 3 velmi pozorne jeste pred
pouzitim assembleru. Jste-li uplny zacatecnik, zacnete nejdrive
prilohou 3.
GENS 3 je dlouhy zhruba 7kbyte a pouziva svou vlastni vnitrni
zasobnikovou pamet takze je zcela sobestacny. Obsahuje vlastni
radkovy editor, ktery umistuje textovy soubor ihned za GENS 3
CODE, zatimco tabulka symbolu assembleru se tvori za textovym
souborem. Pri nahrani GENS 3 musite tudiz nechat dostatek mista
pro vlastni assembler, tabulku symbolu a text, ktery budete pri
praci potrebovat. Je proto vhodne umistit GENS 3 do spodni
casti pameti.
Nahrani GENS 3 se provadi nasledovne:
'LOAD "GENS3" CODE xxxxx' ENTER - kde xxxxx je dekadicka adresa
od ktere chcete GENS 3 umistit a spoustet.
Jakmile je do pocitace nahran GENS 3, muzete vstoupit do
assembleru pomoci 'RANDOMIZE USR xxxxx', kde xxxxx je adresa, od
ktere byl GENS 3 nahran. Je-li treba kdykoli pozdeji vstoupit
opet do assembleru, je nutne pouzit adresu xxxxx + 56 pro
studeny start (dojde k vyprazdneni) nebo xxxxx + 61 pro teply
start (zachova se vytvoreny text). Je nutne si uvedomit, ze pres
adresu xxxxx se spusti GENS 3 pouze jednou, nebot dojde k
rozmisteni strojniho kodu.
Napr.: chcete-li nahrat GENS 3 od adresy #5E00 (nebo 24064
dekadicky) - postupujte nasledovne:
LOAD "GENS3"CODE 24064
RANDOMIZE USR 24064
Pro novy studeny start pouzijte 'RANDOMIZE USR 24120' a
'RANDOMIZE USR 24125' k teplemu startu.
Kdyz spustite GENS 3 poprve adresou xxxxx, objevi se zprava
'Buffer size?': mate vlozit cislo od 0 do 9 vcetne, nasledovane
ENTER nebo pouze ENTER, kdy se predpoklada standardni hodnota 4.
Vlozene cislo nebo standardni hodnota urcuje velikost pameti pro
vkladani v jednotkach 256 bytu (viz kapitola 2.8 - vkladani).
Chcete-li minimalizovat prostor zabrany GENS 3 (a
nepotrebujete-li vyuzit moznost vkladani) vlozte 0 nasledovanou
ENTER - tim se vytvori nejmensi mozny prostor, t.j. 64 bytu.
Po zodpovezeni teto otazky se objevi znak '>', ze editor je
pripraven - podivejte se do kapitoly 3, jak vkladat a do
kapitoly 2 co vkladat.
Dulezite upozorneni! : Z duvodu vetsi rychlosti a lepsiho
spojeni je blokovano preruseni. To znamena, ze kazdy program
vyzadujici preruseni musi byt vybaven instrukci pro preruseni
(EI) drive nez toto bude pozadovano. Gens 3 rovnez vyuziva
registr IY.
KAPITOLA 2 PODROBNOSTI GENS 3
2.0 Jak pracuje GENS 3
GENS 3 je rychly assembler pro Z80 se dvema prubehy, ktery
lze prizpusobit vetsine systemu se Z80. Zahrnuje kompilaci vsech
standardnich instrukci Z80 a je vybaven dalsimi moznostmi jako
- 2 -je podminena kompilace a mnoho assemblerovych prikazu vcetne
binarne vetvene tabulky symbolu.
Spustite-li assembler (prikazem 'A' - viz kap. 3) jste
nejprve dotazan na velikost tabulky 'Table size:' (dekadicky).
Je to prostor pameti, ktery bude vyhrazen tabulce symbolu v
prubehu cinnosti. Pri pouhem stisknuti ENTER si GENS 3 zvoli
standardni velikost, kterou povazuje za primerenou velikosti
textu - zpravidla uplne postaci. Uvedomte si, ze pri vkladani je
treba zvolit vetsi prostor pro tabulku symbolu nez je normalni
velikost; assembler nemuze predvidat objem souboru, ktery bude
vlozen.
Po textu 'Table size:' se vas program dotaze, jakou cinnost
'Options:' pozadujete. Vlozte dekadicky soucet indexu cinnosti v
pripade, ze pozadujete vice nez jeden typ podle nasledujici
tabulky:
Cinnost 1 Tvorba seznamu pouzitych symbolu na konci druheho
prubehu assembleru
Cinnost 2 Zabraneni generace strojniho kodu
Cinnost 4 Zabraneni vypisu vysledku kompilace
Cinnost 8 Nasmerovani vypisu kompilace na tiskarnu
Cinnost 16 Umisteni strojniho kodu za tabulku symbolu. Citac
adresy je stale aktualizovan pomoci ORG, takze
strojni kod muze byt umisten v jedne casti pameti,
ale pracovat muze jinde
Cinnost 32 Vypnuti kontroly umisteni strojniho kodu - uzitecne
pro zrychleni kompilacePriklad: Cinnost 36 provede rychlou kompilaci- bez vypisu a bez
kontroly, kam bude strojni kod umisten.
Pri pouziti cinnosti 16 nelze pouzit prikaz assembleru ENT.
Muzete vsak zjistit umisteni strojniho kodu pouzitim prikazu
'X', ktery nalezne konec textu (druhe zobrazene cislo) a k nemu
pricteme velikost tabulky symbolu +2.
Kompilace se provadi ve dvou prubezich; behem prvniho prubehu
GENS 3 hleda chyby a kompiluje tabulku symbolu, pri druhem
prubehu se vytvori strojni kod (pokud neni zvolena cinnost 2).
Behem prvniho prubehu se na obrazovce ani na tiskarne nic
nezobrazi pokud neni objevena chyba. V pripade chyby se zobrazi
chybny radek a pod nim pocet chyb (viz priloha 1). Kompilace je
prerusena - stisknutim 'E' se provede navrat do editoru nebo
libovolnym jinym tlacitkem se pokracuje od nasledujiciho radku.
Na konci prvniho prubehu se objevi zprava:
Pass 1 errors: nn V pripade chyby se assembler zastavi a neprovede 2. prubeh.
Uzije-li se symbolu v poli opeandu, ktery neni definovan v
tabulce, objevi se zprava '*WARNING* label absent' pro kazdou
chybejici definici.
Ve druhem prubehu se vytvori strojni kod (pokud tvorbe neni
zamezeno - cinnost 2). V tomto prubehu se rovnez vytvori vypis
vysledku kompilace pokud nebyla zvolena cinnost 4 nebo prikaz
assembleru *L-. Vypis ma tvar:
C000 210100 25 label
LD HL,1
1 6 15 21 26Na prvnim miste je hodnota citace adres, ktera udava zacatek
zpracovani tohoto radku, pokud nejsou pouzity pseudoinstrukce
jako ORG, EQU nebo ENT (viz kapitola 2.6). Zpravidla je udan
hexadecimalne, ale muze byt zobrazen i dekadicky uzitim prikazu
*D+ (viz kapitola 2.8).
Na druhem miste, od sloupce 6, je az 8 znaku (predstavujicich
4 byty) instrukce - ale vsimnete si prikazu *C uvedeneho nize.
- 3 - Nasleduje cislo radku - cele cislo v rozmezi 1 az 32767
vcetne.
Sloupce 21 - 26 prvniho radku obsahuji prvnich sest znaku
navesti definovaneho na tomto radku.
Nasledujici dva odstavce se tykaji pouze systemu s uzkou
obrazovkou. Systemy s delkou radku vetsi nez 40 maji kazdy radek
assembleru uveden na jednom radku obrazovky.
Po kazdem navesti nasleduje novy radek - na nem je uvedena
instrukce ve sloupcich 21 - 24. Nasleduje pole operandu od
sloupce 26 a nakonec komentar, ktery je vkladan na konec radku a
generuje novy radek pokud je to nutne.
Uvedeny format usnadnuje citelnost u systemu s uzkou
obrazovkou jako je SPECTRUM. GENS 3 nemeni pocet znaku na
obrazovce, nebot by to vyzadovalo rozsireni GENS 3 a nebylo by
mozno pouzit standardni rutiny v ROM.
Prikaz assembleru *C muze byt pouzit ke zkraceni radku a
zpusobi vynechani 9 znaku predstavujicich strojni kod radku a
umozni zobrazeni vice radku na obrazovce (viz kapitola 2.8 nize)
Je mozna modifikace formatu radky zapsanim pomoci POKE do tri
mist GENS 3. Podrobnosti jsou uvedeny dale. Rozlisujeme mezi
radkem assembleru a radkem obrazovky, coz je to co je videt na
obrazovce. Radek assembleru je zpravidla vic nez radek
obrazovky.
1. 'Start GENS 3 + 51 (#33)' urci, na ktere pozici
(sloupec-5) skonci prvni radek vystupu assembleru. Zmenou tohoto
bytu na 0 se vytvori nepreruseny radek (uzitecne u tiskaren s
dlouhym radkem) nebo na hodnotu <256 k ukonceni radku na dane
pozici sloupce.
2. 'Start GENS 3 + 52 (#34)' udava sloupec (pocitano od 1),
kde ma zacinat nasledujici radek na obrazovce.
3. 'Start GENS 3 + 53 (#35)' udava kolik znaku, zbylych z
radku, ma byt zobrazeno na obrazovce po prvnim obrazovkovem
radku.
Jako priklad predpokladejme, ze pozadujeme pro prvni
obrazovkovy radek 20 znaku (t.j. bez pole navesti a potom kazdy
nasledujici obrazovkovy radek ma zacinat na pozici 1 a vyplnit
cely radek. Take predpokladame, ze jste nahrali GENS 3 od adresy
#5E00 nebo 24064 dekadicky. K vyvolani techto zmen provedte
nasledujici:
POKE 24115,20
POKE 24116,1 na zacatku nasledujiciho obrazovkoveho
POKE 24117,31 radku musi byt alespon jedna mezera Vyseuvedene zmeny lze provest jen kdyz nebyl pouzit prikaz
*C- tento prikaz zpusobi v pripade potreby scroll.
Vystup assembleru lze prerusit na konci kazdeho radku
stisknutim CAPS SHIFT a SPACE - nasledujicim stisknutim 'E' se
vracime do editoru nebo stisknutim libovolneho tlacitka
pokracujeme ve vystupu.
Jedina chyba, ke ktere muze dojit pri druhem prubehu je
*ERROR* 10 (viz priloha 1) a 'Bad ORG!' (v pripade, ze by
strojni kod prepsal GENS 3, tabulku symbolu nebo textovy soubor
- toto vyhodnoceni muze byt vypnuto uzitim cinnosti 32. *ERROR*
10 neni podstatna a muzete pokracovat v kompilaci. Zatimco chyby
jako 'Bad ORG!' jsou podstatne a ihned vrati rizeni do editoru.
Zprava na konci druheho prubehu:
Pass 2 errors: nn
se zobrazi nejdrive a po ni nasleduje pripadne upozorneni na
chybejici navesti - viz vyse. Nyni se zobrazi nasledujici
zprava:
Table used: xxxxx from yyyyy
ktera nas informuje o tom jaka cast tabulky symbolu byla vyuzita
ve srovnani s rezervovanym mistem.
V tomto miste, byl-li spravne pouzit prikaz ENT, se objevi
zprava 'Executes nnnnn'. Ta udava pocatecni adresu strojniho
kodu, ktery muzete spustit prikazem 'R'. Pozor na pouziti tohoto