                             PROMTHEUS



                l a d  c    s y s t  m   P R O M  T H E U S



                   I. Trocha sebechvly aneb odkud to pilo



     Pi psan program v assembleru na Spectru lovk brzy naraz na problm

velikosti pamti - do pamti se mus vejt assembler, zdrojov text, peloen

kd a pokud mono njak prostedek pro ladn. Nabzej se dv een, bu si

koupit nco vtho ne je Spectrum - toto een m mal zdrhel, chce to

penze - nebo zskat programy, kter s tm malm mnostvm pamti, kter je k

dispozici , zachzej sporn. Npady jako jsou kompilace pmo z psku jsou

siln kostrbat a pro lid nevlastnc ani disketovou jednotku ani microdrive

prakticky nepouiteln.



     Rozhldne-li se uivatel kolem sebe na nabdku assembler a ladcch

prostedk zjist nsledujc fakta :



     GENS - nejstar a nejrozenj assembler, zdrojov text je uloen

            jako textov soubor, pomr mezi dlkou zdrojovho textu a pe-

            kladu je asi 8:1, snad nejhor editor, kter si lze vymyslet,

            assembler je dlouh piblin 8.5 KB, pekld pomrn rychle,

            siln obtujc je neustl otzka 'Table size:', kde impli-

            citn hodnota obvykle nesta a po hlen 'No table space' je

            nutno kompilaci opakovat s vt tabulkou, tak dotaz 'Option:'

            pi kad kompilaci prci zbyten zdruje, program je reloko-

            vateln, co jeho hodnotu velmi zvyuje, k programu existuje

            monitor MONS - bohuel prce s nm nen pohodln pro uivatele

            nepouvajc hexa soustavu, ani sluby, kter monitor posky-

            tuje u nejsou na rovni doby, monitor je dlouh 5 KB a je re-

            lokovateln



     Rozen verze GENSu

          - GENS3E (Lama) - vylepen verze programu GENS, obsahuje Full

            Screen Editor s automatickou tabelac a 42 znaky na dek,

            program je 12 KB dlouh a zachoval si relokovatelnost



          - Admkovo rozen - podobn jako GENS3E m Full Screen Editor

            s automatickou tabelac, na dku je 64 znak (hor itel-

            nost), program u nen relokovateln



          - MASM (MACROS, ASSEMBLER 90) - u tohoto programu by se dalo po-

            lemizovat, jestli je nebo nen od programu GENS odvozen, m s

            nm vak velk mnostv shodnch prvk (bohuel i patnch),

            dlka programu je 11 KB, nen relokovateln, m Full Screen

            Editor s automatickou tabelac, zn 'neznm instrukce', m

            kov reference, celkov lze ci, e to nen dn revoluce,

            zdrojov text je uloen stejn neefektivn jako u programu GENS



     OCP assembler - program je nerelokovateln, zdrojov text zabr vce

            msta ne stejn u programu GENS, ped kompilac je nutno

            zadvat del posloupnost parametr, m Full Screen Editor,

            chyby na rozdl od programu GENS (i modifikac) nevypisuje

            sly (tzn. mt po ruce tabulku) ale pmo slovy (prce je

            pohodlnj)



     Laser Genius Assembler - program je relokovateln, m dlku kolem

            20 KB (s lopatou na komra), pro svou dlku je tko pouiteln

            bez disketov jednotky nebo microdriv, existuje k nmu Laser

            Genius Monitor, oba programy se vak do pamti najednou tm

            nevejdou







     Memory Resident System - prvn assembler, kter se sna uloit

            efektivn zdrojov text, pomr je okolo 4:1 (tedy pi stejn

            dlce pojme dvakrt tak dlouh zdrojov text), program je

            dlouh 11 KB a nen relokovateln (existuj 3 verze), m Full

            Screen Editor a kontroluje instrukce u pi vkldn (odstran

            se mnoho chyb), ve snaze zkrtit zdrojov text byla pouita

            nkter ne pli astn omezen - maximln 255 nvst, ve

            vrazu se sm pout maximln dva operandy a jeden opertor,

            nelze pout binrn zpis sel (zvlt prvn omezen doslova

            zabj dobr npad), rozporn je tak monitor, doke pi

            trasovn hldat assembler a zdrojov text ped nhodnm

            pepsnm, bohuel vechny vpisy jsou v estnctkov soustav,

            v monitoru se lze odkazovat na existujc nvt v tabulce

            symbol, pi psan MRS byl zejm poadavek na krtkost

            pecenn (program je dlouh 12 KB) ale na kor komfortu obsluhy

            i monost



     PIKASM - program od T.R.C., je 11 KB dlouh, nen relokovateln, m

            Full Screen Editor, zdrojov text ukld v komprimovan form

            (pomr 5-6:1), na rozdl od pedchozch editor m pjemnou

            vlastnost - po kompilaci zstv kurzor na tom mst, kde byl

            ped kompilac (pi vstupu do editoru neske ani na konec ani

            na zatek), assembler tak um pi kompilaci ped kadou

            instrukci dc bh programu (call, jp, ret) vloit voln

            testu klvesy BREAK - uiten pi ladn bez monitoru (lze

            zastavit program, kter se zacyklil (tzv. kousnul)



     MON, MON2 - monitory, dlouh 7.5 a 9 KB oba jsou relokovateln, um

            krokovat instrukce - run i automaticky (s vypisovnm po

            kad instrukci i bez nj - velmi rychl), vypisovat pam,

            mnit obsah pamti, plnit a pesouvat bloky, lze tak

            nadefinovat oblast obrazovky, kam budou mit vpisy (souvisl

            sek dk na obrazovce)



     VAST (FIKOMON, MILIMON, MIKROMON) - monitor dlouh 4.6 KB, umstn v

            obrazovkov pamti - pvodn byl uren pro hledn nekonench

            ivot, lze ho pout i pi ladn program v zvren fzi

            kdy je v pamti mlo msta. Existuje nov verze nazvan DEVAST,

            vylepen o dal sluby, tento program vak na rozdl od

            pedchozch nem na svdom T.R.C. nbr moje malikost,

            existuje i verze pracujc na zvolenm mst v pamti. Pro

            zajmavost : program DEVAST je dlouh asi 4.6 KB a jeho

            zdrojov text v assembleru PROMTHEUS m dlku kolem 16 KB



     Uveden pehled ukazuje autorovi znm stav a jeho nzory na dostupn

programy. Z uvedench program jsou asto pouvan kombinace :

                 GENS + MONS

                 GENS + MON (MON2)

                 OCP + MONS

                 Memory Resident System

                 Laser Genius



     Pi posouzen dostupnch program vznik mylenka vyrobit program, kter

by spojoval vhody vech pedchozch program a neobsahoval jejich nevhody.



     Nejdleitjmi vlastnostmi, kter by takov program ml mt jsou dv :

co nejefektivnj uloen zdrojovho textu a spojen assembleru s monitorem

do jednoho celku, tak, aby mohl monitor pouvat nkter podprogramy z

assembleru a pouvat existujc tabulku symbol pi vpisech. Proto vznikl

tento program.









     Assembler a monitor, ladc systm PROMTHEUS vznikal za pomoci program

GENS3E, GENS 3.1, MON, MON2 a VAST. Program GENS byl pouvn do t doby, ne

se podailo odladit prvn provozuschopnou verzi assembleru PROMTHEUS, dal

vylepovn se provdlo vdy na star verzi - assembler byl pekldn sm

sebou, monitor vznikl pln od zatku na assembleru PROMTHEUS.

Pro srovnn - zdrojov text GENS byl dlouh kolem 40 KB a byl tedy nutn

rozdlen na dva, pekldal se celkem 40 sekund, po petaen zdrojovho textu

do PROMTHEA se zdrojov text zkrtil na polovinu (20 KB), odpadla poteba

msta na tabulku symbol - u obou st asi po 3 KB, text se tedy veel do

pamti najednou (asi 5 KB kdu assembleru jsou tabulky a pracovn msta, kter

nebyla ve zdrojovm textu). Cel zdrojov text byl nyn peloen za 3 sekundy

(tedy 2 KB/s).



             Nejdleitj vlastnosti ladcho systmu PROMTHEUS



                - dlka: 11 KB assembler, 5 KB monitor

                  (celkem 16 KB, monitor lze odpojit a neuvat)



                - cel program je relokovateln, a nen zvisl

                  na systmu Spectra



                - pomr mezi zdrojovm textem a peloenm kdem

                  je 3-4 : 1  (GENS 8 : 1)



                - tabulka symbol je organickou st zdrojovho

                  textu, vytv se hned pi psan textu, vdy je

                  ihned pstupn - tzn. e pro kompilaci u nen

                  teba ani byte navc



                - rychlost kompilace je asi 2-3 KB/s - 10x vc ne

                  GENS



                - editor je dkov orientovan, m automatickou

                  tabelaci - skrolovn a strnkovn je velmi

                  rychl, umouje mazn a koprovn blok, vy-

                  hledvn a nahrazovn etzc, kad dek je

                  pi odesln syntakticky kontrolovn



                - obvykl kazetov operace - SAVE, VERIFY, LOAD,

                  monost vyhrt i pihrt (na libovoln msto)

                  kus zdrojovho textu



                - pkaz GENS umouje nahrt zdrojov text ve

                  formtu assembleru GENS (MASM)



                - monitor chrnc zdrojov text a ladc systm



                - nkolik trasovacch reim



                - monost definovat okna se zkazem zpisu, ten

                  nebo bhu



                - monost zcela ovlivnit sloen, tvar a polohu

                  elnho panelu, poet a zpsob vpisu vech

                  poloek



                - pi krokovn um monitor zjistit asovou

                  nronost krokovanho programu - pot cykly

                  procesoru (tzv. Tka)



     Detailn jsou vlastnosti a monosti tohoto programu popsny v dalm textu.









                        II. Instalace ladcho systmu



     Na kazet je program uloen jako blok CODE dlouh asi 18500 byt - obsahuje

5000 byt monitoru, 11000 byt assembleru, a 2500 byt instalanho programu

a tabulky relokanch adres.



     Program lze nahrt na libovolnou adresu v rozmez adres 24000 a 47000 a od

tto adresy spustit :



      CLEAR adr-1 :LOAD "" CODE adr :RANDOMIZE USR adr



     Po sputn se objev instalan obrazovka obsahujc nsledujc

informace :



     Instalation adress:xxxxx_ - kde xxxxx je adresa kam byl program nahrn -

tuto adresu je mono pepsat pomoc klves 0 a 9 a DELETE (CAPS SHIFT+0) na

libovolnou adresu v rozsahu adres 23296 a 49500 (23296 a 54500 bez monitoru).

Na tuto adresu bude PROMTHEUS umstn a od n ho bude mono z BASICu kdykoliv

opt spustit. Umstte-li program od adresy 23296, nelze se ji vrtit do

BASICu - program pepe systmov promnn. Budete-li pouvat instalaci na

adresu pod nastaven RAMTOP, nelze se ji vrtit do BASICu bezpen. Umstte-li

ladc systm tak, e pepe systmov promnn (tzn. na adresu ni ne

23755), nesm Vae programy pouvat sluby BASICu (tisk znak atd.) a povolovat

peruen v mdu IM 1. Obvykle je nejlpe pout pro instalaci adresu 25000.



     Monitor:Yes - instalovat je mono bu cel ladc systm nebo jen

assembler, zmnu volby doclte stisknutm klvesy M. Instalovat jen samotn

monitor nen mon protoe pouv mnoho podprogram assembleru.



     Dle lze nastavit barvy, kter bude assembler pouvat. Je to barvy papru

 - klvesa P, barva inkoustu - klvesa I a jas tchto dvou barev - klvesa B.

Pi editaci je jeden dek vyznaen jinou barvou - nastaven je obdobn, je

nutn stisknout souasn navc CAPS SHIFT.



     PROMTHEUS um pst dvma druhy psma - obvyklm a dvojnsobn tlustm

(me bt lpe iteln) - pepnn mezi obma typy psma klvesou D.



     Pi editaci vypisuje assembler (i disassembler) instrukce malmi psmeny

a nvt velkmi psmeny, je-li vak nkdo zvykl pouvat jen velk psmena

(jako GENS) nebo mal (MRS), me toto nastaven zmnit klvesou C - vsledek

je hned vidt na instalan obrazovce.



     Posledn vlastnost ladcho systmu, kterou je mono ovlivnit pi instalaci

je klvesnicov echo - mn se klvesou X jednm smrem a klvesami CAPS SHIFT

 + X druhm smrem - souasn nastaven je slyet pi stisku libovoln klvesy.



     Po nastaven poadovanch parametr stisknte klvesu ENTER, program se

pesune na zvolenou adresu, pep se absolutn adresy (relokace) a program se

spust.



     Tuto instalaci mete provdt pi kadm pouit ladcho systmu (obvykle

sta jen stisknout ENTER) nebo si poadovanou konfiguraci vyhrt na pracovn

kazetu - nejlpe nsledovn:



         1 RANDOMIZE USR adr :STOP

      9999 CLEAR adr-1 :LOAD "" CODE :RUN



     Kam msto "adr" a "adr-1" dosadte sla (adresa, kde je program) a na

kazetu ulote pomoc:



      SAVE "PROMETHEUS" LINE 9999

      SAVE "prometheus" CODE adr,16000 (11000 bez monitoru)







     Kde opt msto "adr" bude adresa. Tuto konfiguraci nahrajete pomoc

obyejnho LOAD "" a z basicu budete spoutt jednodue pkazem RUN. Prvn

dek z tohoto programu je dobr vloit vdy - PROMTHEUS se bude spoutt

pkazem RUN a nehroz chyba, kter by mohla vzniknout pi psan "RANDOMIZE USR

 adr", o tom, e funkce USR pouit se patnm argumentem me znan naruit

duevn pohodu uivatele snad nen nutno nijak zdrazovat.



                           III. assembler PROMTHEUS



                                   1. editor



     Assembler obsahuje pohodln dkov editor, kter se hodn podob editoru

BASICu. V editoru se zadvaj tak vechny pkazy - odpad tedy nutnost

neustlho pechzen z editoru do systmu a naopak spojen se ztrtou pozice

v editoru jako je tomu u MRSu a rozench verz GENSu. Editor umouje blokov

operace - mazn a pesouvn - a vyhledvn a nahrazovn etzce v textu.



     Oznaen:



      pstupov (pstupn) dek - barevn odlien

            dek ve vpisu



      editan dek - pln spodn dek, je na nm

            kurzor



      stavov dek obsahuje toto (zleva doprava):

          - sdlen nebo chybov hlen

          - informaci o nastavenm reimu (INSERT/OVERWRITE)

          - adresu poslednho bytu zdrojovho textu

          - adresu poslednho bytu oblasti pro zdrojov text,

               jaksi obdoba RAMTOP v BASICu



     Vkldn pkaz se provd stisknutm klvesy SYMBOL SHIFT a

odpovdajcho psmene pi przdnm editanm dku, tedy kurzor je pln vlevo

a za nm nen dn znak (ani mezera). Nejsou-li tyto podmnky splnny, nape

se znak na dan klvese se SYMBOL SHIFTem, jsou-li splnny, vype se cel

pkaz (jako klov slovo) nebo se ihned provede (nkter pkazy - skok na

konec zdrojovho textu atd.)



     Zpis instrukce - na dek lze zapsat maximln 31 znak, prvnch 9 pozic

je vyhrazeno pro nvt (maximln 8 znakov), dalch 5 pozic je vyhrazeno pro

mnemoniku a zbvajc msta jsou vyhrazena pro operandy. Poznmky je mono pst

pouze na zvltn dek a to hned od zatku za stednk - nelze pst komente

za instrukce (ony by se tam stejn nevely). Pokud se nkomu zd 31 znak mlo,

nezbv mu ne si bu zvyknout nebo pouvat jin assembler. K tomuto omezen

jsem dospl na zklad zkuenost svch i svch ptel, tm nikdo, koho znm

nepe komente do zdrojovho textu (maximln na papr s programem), je to

prce navc a zdrojov text to nemrn prodluuje - a zpomaluje to peklad i

nahrvn (to zvlt). Omezen m tak sv svtl strnky, zdrojov text je

dobe iteln a pehledn.



     Mezernk automaticky tabeluje, instrukce je mono pst libovoln, malmi

nebo velkmi psmeny, program rozli nvt a zkontroluje vkldan dek,

najde-li chybu, ohls ji a dek nezaad do vpisu.













     Editan klvesy:









       CAPS SHIFT + 1 (EDIT) - penese pstupov dek do editanho dku



       CAPS SHIFT + 2 (CAPS LOCK) - zapn / vypn CAPS LOCK, ten pracuje

           trochu jinak ne obvykle, pvodn pe Spectrum pi zapnutm

           CAPS LOCKu pouze velk psmena, nyn funguje spe jako jaksi

           invertor CAPS SHIFTu, kdy je zapnut CAPS LOCK a nen stisknut

           CAPS SHIFT pe Spectrum velk psmena, a je-li stisknut CAPS

           SHIFT, pe Spectrum mal psmena



       CAPS SHIFT + 3 (TRUE VIDEO) - pechod ve vpisu na nsledujc strnku



       CAPS SHIFT + 4 (INV. VIDEO) - pechod ve vpisu na pedchzejc

           strnku



       CAPS SHIFT + 5 (ipka doleva) - posun kurzoru doleva o jeden znak

           v editanm dku



       CAPS SHIFT + 6 (ipka dol) - posun pstupnho dku na pedchoz

           dek ve vpisu



       CAPS SHIFT + 7 (ipka nahoru) - posun pstupnho dku na

           nsledujc dek ve vpisu



       CAPS SHIFT + 8 (ipka doprava) - posun kurzoru vpravo o jeden znak

           v editanm dku



       CAPS SHIFT + 9 (GRAPH) - vyma pstupov dek, posu se na

           pedchoz dek



       CAPS SHIFT + 0 (DELETE) - vyma znak vlevo ped kurzorem a posu

           kurzor doleva



       SYMBOL SHIFT + W - pepnn reim INSERT a OVERWRITE (psmeno O

           nebo I ve stavovm dku), pi stisku EDIT se pepne reim

           OVERWRITE a po odesln se vrt zpt reim INSERT, chcete-li

           zkoprovat jeden dek, vyeditujte ho, pepnte na INSERT a

           vlote na poadovan msto, chcete-li pln pepsat dek,

           napite text, pepnte na OVERWRITE a odelete



       SYMBOL SHIFT + Q - vymazn editanho dku, ne pi przdnm dku



       CAPS SHIFT + SYMBOL SHIFT (EXTEND MODE) - nastav okraj bloku -

           pslunost dku k bloku je signalizovna ernm tvercem na

           devt pozici, mezi nvtm a instrukc - oznaen je vidt

           pouze ve vpisu, nikoliv pi hledn nebo tisku, nen rozlien

           zatek a konec, program si pamatuje vdy dva okraje a pi

           zadn novho odstran ten, co byl zadn dve a pid nov

           okraj, chcete-li nastavit blok, nastavte jeden okraj do

           pstupovho dku, stisknte CAPS SHIFT + SYMBOL SHIFT,

           nastavte druh okraj bloku do pstupovho dku a stisknte

           CAPS SHIFT + SYMBOL SHIFT



       ENTER - odesln instrukce nebo pkazu, odesln instrukce m za

           nsledek jej syntaktickou kontrolu a zaazen do vpisu - podle

           reimu (I/O) se bu zaad za instrukci v pstupnm dku, nebo

           ji pepe



       SYMBOL SHIFT + E - jdi na konec zdrojovho textu, jde o pkaz,

           kter se ihned provede, je ho tedy nutno zadat pi przdnm

           editanm dku



       SYMBOL SHIFT + K - jdi na zatek zdrojovho







           textu, jde o pkaz, kter se ihned provede, je ho tedy nutno

           zadat pi przdnm editanm dku



       SYMBOL SHIFT + H - pepnn vpisu sel mezi destkovou a

           estnctkovou soustavou, ovlivn vpisy ve stavovm dku a v

           tabulce symbol





     Pkazy pro blokov operace:



       COPY (SYMBOL SHIFT + C) - penese nastaven blok ped pstupov

           dek - nelze koprovat blok do sebe



       DELETE (SYMBOL SHIFT + D) - vymae nastaven blok zdrojovho textu







     Pkazy pro vyhledvn a nahrazovn etzc:



       FIND (SYMBOL SHIFT + F) - vyhledvn (viz dle), nerozliuj se

           mal a velk psmena, nen-li etzec nalezen, zstane vpis na

           mst



       REPLACE (SYMBOL SHIFT + Z) - zamovn etzc







     Vyhledvn etzc:



       FIND s:xxxxx - vyhledn etzce 'xxxxx' od zatku zdrojovho

           textu



       FIND s - vyhledn naposledy zadanho etzce od zatku zdrojovho

           textu



       FIND b:xxxxx - vyhledn etzce 'xxxxx' v bloku od jeho zatku

           bloku



       FIND b - vyhledn naposledy zadanho etzce v bloku od zatku

           bloku



       FIND :xxxxx - vyhledn etzce 'xxxxx' od dku, kter je prv

           pstupn bu do konce zdrojovho textu nebo do konce bloku -

           toto v ppad, e posledn byl prohledvn blok



       FIND - vyhledn naposledy zadanho etzce od dku, kter je prv

           pstupn bu do konce zdrojovho textu nebo do konce bloku ,

           opt to zvis na poslednm zpsobu prohledvn



       FIND b:  - tmto pkazem se lze dostat okamit na zatek bloku

           (za dvojteku nutno zapsat jednu mezeru!)





     Pklady:



      - chci vyhledat vechny vskyty nvt 'KAREL', zadm 'FIND s:karel'

           (nerozliuj se mal a velk), po nalezen prvnho vskytu zadm

           pokad jen 'FIND' pro nalezen dalho, jakmile se po zadn

           'FIND' jen obnov vpis na stejnm mst, jedn se o posledn

           vskyt etzce 'KAREL'



      - chci se opt dostat na prvn vskyt etzce 'KAREL'







           zadm jen 'FIND s' a dostanu se na prvn vskyt



      - chci vyhledat vskyt nvt 'KAREL' pouze v poli nvt (toto je

           nejrychlej zpsob jak se dostat ve vpisu na poadovan

           msto), zadm 'FIND s:KAREL ' - za nvt vlom mezeru!



      - chci vyhledat prvn instrukci ld a,(hl) od zatku zdrojovho

           textu, zadm 'FIND s:ld   a,(hl)', mezi mnemoniku a operandy

           musm vloit tolik mezer, aby jejich poet plus poet psmen

           mnemoniky dal souet 5







     Nahrazovn etzc:



       REPLACE :xxxxx - nahrad vechny vskyty etzce 'yyyy' vyhledanho

           pkazem 'FIND :yyyy' v danm dku etzcem 'xxxxx' a vyhled

           dal vskyt etzce 'yyyy'



       REPLACE - nahrad vechny vskyty etzce, kter byl zadn pkazem

           FIND, etzcem, kter byl zadn pkazem REPLACE





     Pklad:



      - chci najt a vymnit nkter vskyty etzce 'KAREL' etzcem

           'JOSEF', zadm pkaz 'FIND s:karel', po nalezen vskytu

           etzce 'KAREL' udlm:

            - bu zadm 'REPLACE :JOSEF' (podruh a dle u jen 'REPLACE')

              kdy budu chtt vskyt nahradit

            - nebo zadm 'FIND' kdy budu chtt tento vskyt ponechat beze

              zmny

           co opakuji tak dlouho dokud neprojdu vechny vskyty etzce

           'KAREL'







     Mazn zdrojovho textu a nastaven prostoru pro nj:



       CLEAR (SYMBOL SHIFT + X) - pkaz vymae zdrojov text a vyist

           tabulku symbol (ponech v n jen uzamen symboly - viz

           kapitolu 4 Tabulka symbol), protoe se jedn o pkaz, jeho

           chybn pouit me znan zvit hladinu adrenalinu v krvi

           uivatele, je nutno jej zadvat ve tvaru 'CLEAR y'



       U-TOP (SYMBOL SHIFT + U) - uivatelsk zarka, toto je posledn

           adresa, kam sm bt uloen zdrojov text a kam sm bt provedena

           kompilace (kap. 3 Peklad). Za pkazem U-TOP muste uvst slo

           nebo matematick vraz (bude vyhodnocen zleva doprava), me

           obsahovat sla i existujc definovan nvt (jinak chyba),

           tento pkaz lze pout i jako kalkulaku, vsledek je trvale

           vidt vpravo nahoe, k nastaven zarky na adresu 65535 pou-

           vejte pkaz 'U-TOP -1', pomoc uivatelsk zarky zskte

           chrnnou oblast pamti, kam mete uloit teba tiskov pod-

           programy a jin, pro assembler i monitor je oblast od zarky a

           do konce pamti nepstupn





     Chyby pi editovn:



      Bad mnemonic     chyba v zpisu mnemoniky, nebo nvt v poli

                       mnemoniky







      Bad operand      v instrukci pouit chybn operand



      Big number       pouit slo je vt ne 65535



      Syntax horror    syntaktick chyba, nkter poloka je del ne me

                       bt, dv operace ve vrazu vedle sebe, ...



      Bad string       patn zadan etzec, uvozovka se pe do etzce

                       dvojit, etzec nesm bt przdn



      Bad instruction  instrukce zapsna formln sprvn, pouit

                       instrukce vak nem monost pracovat s touto

                       kombinac operand



      Memory full      pam pidlen pro zdrojov text je vyerpna,

                       mete se pokusit zkrtit zdrojov text (viz

                       kapitolu 6. Formt zdrojovho textu)



      XXXX unknown     chyba pi pouit nvt, kter v tabulce symbol

                       nen nebo tam je, ale nem definovanou hodnotu -

                       tato chyba je hlena u pkazu U-TOP







                           2. magnetofonov operace





     Assembler PROMTHEUS umouje (kdyby ne, bylo by to na povenou) ukldat,

kontrolovat a st zdrojov texty (i jejich sti) z magnetofonu.



       SAVE (SYMBOL SHIFT + S)



         Pkaz uren pro uloen zdrojovho textu na kazetu.



       SAVE :karel - ulo cel zdrojov text (zdrojov text a tabulku

           symbol) na kazetu, blok bude uloen jako BASICovsk CODE pod

           jmnem 'karel'



       SAVE - ulo cel zdrojov text na kazetu, jako jmno bude vzato

           naposledy pouit jmno - toto se hod jestlie pi verifikaci

           dolo k chyb a je nutno opakovat opt ukldn



       SAVE b:karel - ulo na kazetu st zdrojovho textu (nastaven

           blok) a celou tabulku symbol - vybrn nvt, kter jsou ve

           zvolenm bloku pouita, by bylo asov a pamov nron -

           proto chcete-li na kazetu uloit opravdu jen st zdrojovho

           textu, muste vymazat vechno ostatn a potom vyistit tabulku

           symbol (viz kapitola 4 Tabulka symbol)



       SAVE b - ulo zvolenou st zdrojovho textu se jmnem naposledy

           pouitm v pkazu SAVE nebo LOAD





       LOAD (SYMBOL SHIFT + L)



         Pkaz slouc k pihrn zdrojovho textu z kazety.

Chcete-li nov zdrojov text pouze nahrt, muste ten star nejprve vymazat

(pkazem 'CLEAR y' - SS + X).



       LOAD : - nahraje prvn nalezen zdrojov text z kazety do potae



       LOAD :karel - nahraje do potae zdrojov text se jmnem 'karel'







       LOAD - nahraje do potae zdrojov text se jmnem, kter bylo

           naposledy pouito v pkazech LOAD nebo SAVE



           Pouij-li se msto jmna sam mezery, bude to brno jako kdyby

       nebylo zadno dn jmno a nate se prvn nalezen blok CODE.





           Nahrvn probh nsledovn:



       1.  prohledv se kazeta dokud se nenajde blok CODE se sprvnm

           jmnem



       2.  po nalezen takovho bloku se zjist, zda se blok vejde do voln

           pamti, pokud ne, je hlena chyba Memory full



       3.  blok se nahraje na konec pamti uren pro zdrojov text (adresa

           poslednho bytu je napsna vpravo ve stavovm dku)



       4.  zjist-li se, e se nejedn o zdrojov text tohoto assembleru,

           pkaz je peruen



       5.  zane se vkldn nahranho zdrojovho textu do zdrojovho

           textu, kter je v pamti od minula, pi tto operaci se kad

           nov dek pevede na textov tvar a vlo do  pvodnho textu

           - vkld se stejn jako pi vkldn z klvesnice - za pstupn

           dek, bude-li pi vkldn nalezena chyba, objev se chybov

           hlen a je mono chybu opravit, po oprav program pokrauje ve

           vkldn, pi pihrn bloku se do pamti mus vejt souasn

           dv tabulky symbol, star (ta se zvtuje o nov nvt) a

           nov, ze kter se berou nvt pi pevodu dk na textov

           tvar - tyto podrobnosti Vs nemus zajmat, pokud se pekld za

           zdrojov text (nejastj situace), tak problmy s mstem

           nastanou jen tko



       6.  stav vkldn lze zobrazit stiskem libovoln klvesy



       7.  stiskne-li se pi vkldn klvesa SPACE, vkldn se ukon a v

           editanm dku bude prv vkldan instrukce



       8.  pokud dojde pi vkldn k chyb a v editanm dku je chybn

           instrukce, lze vkldn ukonit vloenm njakho pkazu nebo

           povelu(teba pepnutm mezi destkovou a estnctkovou soustavou)



       9.  vkldn bude chvli trvat - po dobu vkldn je na obrazovce

           npis 'Wait please'





       VERIFY (SYMBOL SHIFT + V)



         Pkaz slouc ke kontrole na psce uloenho textu, je ho nutn

       provst ihned po pkazu SAVE, nepotebuje dn parametry, pouije

       jmno z pkazu SAVE a testuje blok pouze s tmto jmnem





       GENS (SYMBOL SHIFT + G)



         Pkaz slou k pihrn zdrojovho textu ve formtu assembleru

       GENS (MACROS), syntaxe je pln stejn jako u pkazu LOAD, zdrojov

       text nahraje a vkld stejn jako u pkazu LOAD, ped vkldnm

       zdrojovho textu z GENSu je vhodn text nejprve upravit - zkrtit











       dky tak, aby odpovdaly formtu PROMTHEA, pemstit mon

       komente na zvltn dky atd. - je s tm mn prce ne opravovat

       dky a pi vkldn



         Je-li konec prostoru pro zdrojov text nastaven na adresu 65535

       (#FFFF), nebude rozeznn konec souboru a vkldn se zastav na

       chyb - dojde k pokusu vzt jako dek zdrojovho textu nkolik

       prvnch byt z ROM, perute vkldn vloenm njakho povelu - viz

       bod 8. Chcete-li se tomu vyhnout, nastavte konec pamti pro zdrojov

       text teba adresu 65500 (pkaz U-TOP).



       Pokud dojde pi kazetovch operacch ke stisku klvesy BREAK (SPACE), v

editanm dku zstane naposledy zadan povel. Pokud dojde v pkazu LOAD, GENS

nebo VERIFY k chyb, vype se chybov hlen 'Tape error' a opt je v

editanm dku posledn zadan pkaz.



       Pokud budete chtt do assembleru vloit zdrojov text z jinho assem-

bleru, muste ho pevst na formt assembleru GENS, kad dek zan dvma

byty - slo dku (pro PROMTHEUS nen podstatn), potom text dku (sta vdy

jedna mezera msto nkolika) a na konci dku je kd 13, takto upraven zdrojov

text vyhrajte z pamti jako CODE a mete ho pkazem GENS dostat do PROMTHEA.

Dal pouiteln zpsob (mon jednodu) je popsn v kapitole 5.

Ostatn (viz GENSOR).







                                  3. peklad



       ASSEMBLY (SYMBOL SHIFT + A) - pkaz provede kompilaci zdrojovho textu.

Za pkazem ASSEMBLY je mono uvst parametr 'b' (nebo 'B') - v tomto ppad

bude kompilovn pouze nastaven blok zdrojovho textu.



       Pi kompilaci neexistuje kompilan vpis - tato monost byla pro

jednoduchost a zven rychlosti odstranna, upmn eeno autorovi (a nejen

jemu) se zdla zbyten. Pokud se chcete dozvdt, na jak adrese je kter

instrukce (to byla jedin nmitka proti odstrann kompilanho vpisu), napite

tam njak nvt (pokud u tam nen) a po skonen kompilace se podvejte do

tabulky symbol na jeho hodnotu (viz kapitola 4. tabulka symbol), lze tak

samozejm pout disassembler monitoru. Potebujete-li z njakho dvodu (?)

protokol o pekladu, peneste zdrojov text do njakho jinho assembleru (GENS

pomoc programu GENSOR - viz kapitolu 5. ostatn - GENSOR) a s jeho pomoc ho

zskte.



       Kompilace je provdna rychlost piblin 2 KB strojovho kdu za

sekundu - tedy ani dlouh zdrojov text nen pekldn dle ne 3-4 sekundy,

u krtkch zdrojovch text je kompilace tm okamit.



       Kompilace je dvouprchodov, pi prvnm prchodu se pouze zjiuj

hodnoty nvt v poli nvt (nikoliv u pkazu EQU), pi druhm prchodu se

ji generuje strojov kd, nyn mus bt znma vechna nvt. Ukldn

strojovho kdu do pamti je kontrolovno tak, aby nebyl pepsn ladc systm,

zdrojov text a oblast pamti nad uivatelskou zarkou.





      Mon chybov hlen:



      Bad PUT (ORG)   - pi druhm prchodu kompilace dolo k pokusu o

                        pepsn ladcho systmu, zdrojovho textu nebo

                        oblasti nad uivatelskou zarkou strojovm kdem



      XXXXX unknown   - pouit nvt 'XXXXX' nem dosud piazenou

                        dnou hodnotu







      Already defined - pokus o druh definovn hodnoty nvt



      Big number      - pokus o zapsn velkho sla do 8 bit, u pkaz

                        relativnch skok to znamen, e vzdlenost je

                        pli velk, u instrukc typu (ix+d) sm bt d v

                        rozsahu -128 a 127, pkazy typu ld a,N sm bt N

                        v rozsahu -256 a 255 (podrobnji dle)



       Dojde-li k chyb pi kompilaci, peklad se zastav a obnov se vpis tak,

e dek, na kterm dolo k chyb je nyn pstupn (jedn-li se o chybu Already

defined tak ono podruh definovan nvt je samozejm v poli nvt, nikoliv

v poli operand). Pokud kompilace skon spn, vype se hlen 'Assembly

complete'.



       RUN (SYMBOL SHIFT + R) - pkaz slouc ke sputn programu od msta

zadanho pkazem ENT (Entry point - viz dle), ped sputnm programu se vdy

provede kompilace - pkaz zahrnuje pkaz ASSEMBLY (peklad je rychl a nen

teba zadvat dva pkazy), pokud nebude nalezen prv jeden pkaz ENT, vype

se chybov hlen 'ENT ?'. Tak tento pkaz me obsahovat parametr 'b' - ped

sputnm se pelo pouze zvolen blok zdrojovho textu. V program bude

sputn se zakzanm peruenm a proto jej muste ppadn povolit!



      Instrukce:

       PROMTHEUS pekld vechny zkladn instrukce (znm) a tak vtinu

tzv. 'neznmch' instrukc - jedin 'neznm' instrukce, kter assembler nezn

jsou vechny rotace na adrese (ix+d) s nslednm penosem do zvolenho registru,

pokud budete chtt tyto instrukce pout, muste je zapsat pomoc pseudo -

instrukce DEFB (instrukce nebyly zaazeny protoe se v praxi nepouvaj a

zvtily by dlku assembleru). Nsleduje seznam tch 'neznmch' instrukc,

kter assembler pouv:



   Instrukce, kter pouvaj poloviny indexregistr - IX,IY. Doln polovina

   registru IX je znaena LX a horn polovina bude oznaena HX, obdobn pro

   registr IY je LY a HY.



     inc   inc  hx      inc  lx      inc  hy      inc  ly

     dec   dec  hx      dec  lx      dec  hy      dec  ly



     ld    ld   hx,N    ld   lx,N    ld   hy,N    ld   ly,N

           ld   b,hx    ld   b,lx    ld   b,hy    ld   b,ly

           ld   c,hx    ld   c,lx    ld   c,hy    ld   c,ly

           ld   d,hx    ld   d,lx    ld   d,hy    ld   d,ly

           ld   e,hx    ld   e,lx    ld   e,hy    ld   e,ly

           ld   hx,hx   ld   hx,lx   ld   hy,hy   ld   hy,ly

           ld   lx,hx   ld   lx,lx   ld   ly,hy   ld   ly,ly

           ld   a,hx    ld   a,lx    ld   a,hy    ld   a,ly



     add   add  a,hx    add  a,lx    add  a,hy    add  a,ly



     adc   adc  a,hx    adc  a,lx    adc  a,hy    adc  a,ly



     sub   sub  hx      sub  lx      sub  hy      sub  ly



     sbc   sbc  a,hx    sbc  a,lx    sbc  a,hy    sbc  a,ly



     and   and  hx      and  lx      and  hy      and  ly



     xor   xor  hx      xor  lx      xor  hy      xor  ly



     or    or   hx      or   lx      or   hy      or   ly



     cp    cp   hx      cp   lx      cp   hy      cp   ly







   Rotace SLIA (shift left inverted arithmetic - invertovan aritmetick

   posun doleva) - posune doleva zvolen registr, vystupujc bit je uloen

   do CARRY, vstupujc bit je jednika.



     slia  slia b       slia c       slia d       slia e

           slia h       slia l       slia (hl)    slia a



       U instrukc relativnch skok a instrukce DJNZ se jako u ostatnch

assembler pe absolutn adresa. Pi kompilaci se vypote relativn adresa a

ulo se, pokud je relativn adresa mimo rozsah -128 a 127, ohls se chyba

'Big number'.



       Assembler pouv nkter pseudoinstrukce - slou bu k zpisu sel a

text do pamti nebo k ovldn ukazatele kompilace, umstn strojovho kdu a

k nastavovn startu pro pkaz RUN a hodnot nvt - nsleduje seznam:



       ORG vraz - nastav ta adres a ukazatel uloen do pamti na hodnotu

vrazu. Ukazatel uloen do pamti uruje, kam se bude ukldat strojov kd,

ta adres uruje kde bude peloen program pracovat - hodnota tohoto tae

se pouv pi dosazovn hodnot nvt pi prvnm prchodu. Ukazatel uloen

do pamti i ta instrukc se vdy zvtuj o dlku prv peloen instrukce.



       PUT vraz - nastav ukazatel uloen do pamti na hodnotu vrazu. Tento

pkaz se pouv v ppad, e je poteba uloit strojov kd jinam ne bude

sputn. Chcete teba peloit program tak, aby pracoval v obrazovkov pamti

tedy, od adresy 16384, protoe pekldat pmo do obrazovky nen mon, vlote

za pkaz ORG 16384 jet pkaz PUT 60000 - program se bude pekldat tak, aby

pracoval od adresy 16384 ale ukldat se bude od adresy 60000. Nelze pehodit

poad, ve kterm jsou ob pseudoinstrukce uvedeny, protoe pkaz ORG nastavuje

tak ukazatel uloen do pamti! Pkaz PUT byl zaveden jako alternativa k

monosti ukldat peloen program za tabulku symbol bez ohledu na pseudo -

instrukci ORG, kterou poskytuje assembler GENS (MASM), toto een je vak

podstatn pizpsobivj, programtor se nemus starat, kde tabulka symbol

kon a me si sm nastavit, kam se bude peklad ukldat. Chcete-li vyrobit

program, kter se po sputn sm rozmst po pamti, mete to vyrobit teba

takto:



           org  60000



  START    ld   hl,START1   ;adresa, kde je 1. blok uloen

           ld   de,30000    ;adresa, kde m 1. blok pracovat

           ld   bc,BLOK1LEN ;dlka 1. bloku

           ldir             ;pesu 1. blok

           ld   de,35000    ;adresa, kde m 2. blok pracovat

           ld   bc,BLOK2LEN ;dlka 2. bloku

           ldir             ;pesu 2. blok

           jp   30000       ;skok na zatek 1. bloku

  END1

           org  30000       ;prvn blok bude na adrese 30000

           put  END1        ;jeho kd se ukld stle dle

  START1   ???              ;zde je text prvnho bloku

           ???

  BLOK1LEN equ  $-START1    ;BLOK1LEN bude obsahovat dlku

  END2

           org  35000       ;druh blok bude na adrese 35000

           put  END2        ;kd se ukld stle dle

  START2   ???              ;zde je text druhho bloku

           ???

  BLOK2LEN equ  $-START     ;BLOK2LEN bude obsahovat dlku



       nvt EQU vraz - piad pouitmu nvt hodnotu vrazu.V okamiku,

kdy dochz pi druhm prchodu ke zpracovn tto instrukce u mus bt znm







hodnoty vech nvt, kter jsou pouita ve vrazu, jinak dojde k chyb.



  LABEL1   equ  LABEL2+1    ;takhle to bude fungovat, protoe

  LABEL2                    ;nvt LABEL2 bylo definovno

                            ;u pi prvnm prchodu pekladu



  LABEL1   equ  LABEL2+1    ;takhle to bohuel fungovat nebude

  LABEL2   equ  32000       ;protoe nvt LABEL2 jet nem

                            ;definovanou hodnotu



       ENT vraz - tento pkaz slou k nastaven adresy, od kter bude sputn

strojov kd v ppad, e bude pouit pkaz RUN.



           ent  START       ;program bude sputn od msta, na

                            ;nm se nachz nvt START

                            ;v poli nvt



           ent  $           ;program bude sputn od msta, na

                            ;kterm se vyskytuje tento pkaz



       DEFB vraz,vraz,...,vraz - ulo od adresy, na kterou ukazuje ukazatel

uloen do pamti, vsledky vraz jako osmibitov hodnoty - mus leet v roz-

mez -256 a 255, jinak je hlena chyba 'Big number'. Potom jsou zveny

hodnoty tae adres a ukazatele uloen do pamti o poet byt, kter byly

pkazem DEFB naplnny - poet vraz.



       DEFW vraz,vraz,...,vraz - podobn jako pkaz DEFB, ukldaj se est-

nctibitov hodnoty (naped ni byte a potom vy byte). Ukazatel uloen do

pamti a ta adres se zvt o poet byt, kter byly naplnny - poet vraz

krt dva.



       DEFM etzec - uloen etzce do pamti, tento pkaz byl u assembleru

rozen:



           defm "karel"     ;ulo do pamti postupn ASCII

                            ;kdy jednotlivch psmen



           defm 'karel'     ;provede tm tot, posledn

                            ;znak bude mt ASCII hodnotu vt

                            ;o 128 - invertovan znak, pokud

                            ;netute, k emu je to dobr,

                            ;podvejte se na pklady program



       DEFS vraz - vyhodnot se vraz a o jeho hodnotu se zvt ukazatel

uloen do pamti a ta adres. Tato pseudoinstrukce se pouv k vynechn

msta o poadovan dlce.



  BUFFER   defs 100         ;vynechn 100 byt

  BUFFER2  defs 1000        ;vynechn 1000 byt



      Vrazy:



       Assembler umouje vloit na msto, kde je v instrukci seln hodnota,

matematick vraz. Matematick vraz se skld z jednoho nebo nkolika nvt

i konstant oddlench od sebe opertory. Vechna sla jsou pevedena na roz-

sah 0-65535 (zporn sla jsou pitena k slu 65535 a tm jsou pevedena na

rozsah 0-65535), v tomto tvaru jsou provedeny operace a vsledek je pouit podle

poteb instrukce. Vpoet je provdn zleva doprava, nen zachovvna priorita

opertor. Pokud nen mono vraz zapsat tak, aby ho bylo mon provdt zleva

doprava, muste ho rozepsat na dva dky a mezivsledek piadit njakmu n-

vt a to pout na dalm dku, autor se s touto eventualitou jet nesetkal

- nejastj vrazy pouvaj pouze jeden opertor.







      Konstanty:



       Jsou povoleny tyto konstanty:



          destkov:      1234     47       -32



          estnctkov:   #ABCD    -#30     #a3



          dvojkov:       %10111   %111     -%011010



          znakov:        "a"      "aB"     """"

                    uvozovka se mus vloit dvojit



       Je monost odkzat se na aktuln hodnotu tae adres:



          $ - na toto msto bude dosazena hodnota tae adres



  START    ????             ;zde je st textu, jej

           ????             ;dlku potebujeme zjistit

           ????             ;a vloit do nvt LENGTH

  LENGTH   equ  $-START     ;toto je na konci on sti



      Nvt:



         Nvt je posloupnost sel, psmen a znaku '_', kter zan

psmenem. Znak lze pout maximln 8 a pro identifikaci jsou dleit vechny.



      Opertory:



           stn             +

           odtn            -

           nsoben            *

           dlen              /

           zbytek po dlen    ?



       Chcete-li zskat doln byte nvt TAB, vlote TAB?256, horn byte

zskte pomoc TAB/256.



       Dleit upozornn: pi dlen nulou nen hlena chyba a vsledek je

65535.







                              4. Tabulka symbol



       Monosti, kter poskytuje PROMTHEUS s tabulkou symbol jsou jednm ze

znak, kter ho vrazn odliuj od ostatnch assembler.



       Tabulka symbol existuje neustle a je vdy mon prohldnout si abecedn

seazen vpis nvt a jejich hodnot, pokud jim byly njak piazeny.

Neustl existence tabulky symbol se me zdt nevhodn - je to vak

vlastnost, kter umouje vrazn zkrcen zdrojovho textu a tak zrychlen

kompilace.



      Pkazy pro prci s tabulkou:



       TABLE (SYMBOL SHIFT + T) - tento pkaz vype tabulku symbol na

obrazovku, zobraz se jedna strnka (40 nvt) a oekv se stisk njak

klvesy, pokud to bude klvesa SPACE, vypisovn tabulky se skon, pokud to

klvesa SPACE nebude, vype se dal strnka. Nvt jsou vypsna ve dvou

sloupcch, ped nvtm je vypsna bu mezera nebo hvzdika (jej vznam je

popsn dle), za nvtm je vypsna hodnota, kter byla







nvt piazena pi poslednm pekladu, pokud mu dn hodnota piazena

nebyla, je vypsno pt teek. Hodnota nvt je vypsna v nastaven seln

soustav (destkov i estnctkov viz kapitolu 1. Editor). Monost pest si

tabulku symbol lze pout, zajmaj-li Vs adresy nkterch st programu nebo

kdy si nejste jist (u dlouhch text se to obas stane), kter nvt jste u

pouili a kter ne.



       TABLE p - provd vpis tabulky symbol na obrazovku a tak na tiskrnu,

pro podrobnosti se podvejte na pkaz PRINT, na kad dek se vytiskne jedno

nvt a jeho hodnota, jedna strnka obrazovky se tedy vype na 40 dk

papru.



       TABLE c - vyitn tabulky symbol, z tabulky symbol se odstran ta

nvt, kter se nevyskytuj ve zdrojovm textu a nejsou uzamena. Pi vymazn

dku nebo bloku zdrojovho textu se z tabulky symbol neodstran ta nvt,

kter se vyskytovala pouze ve vymazan sti zdrojovho textu - tato akce me

bt asov nronj a nevyplat se j provdt neustle protoe by mohla

zdrovat, tak nkolik byt za to nestoj. Zbyten nvt jsou vidt kdy si

po proveden kompilace vypete tabulku symbol - nemaj definovanou hodnotu

- pokud jejich poet vzroste, tak pouijte pkaz pro vyitn tabulky symbol.

Pokud nemte problmy s volnou pamt (pak je kad byte dobr) mete na tento

pkaz zapomenout, pi kadm peten zdrojovho textu z kazety (tuto akci je

nutno provdt obvykle nkolikrt za den - pi ladn program ve strojovm kdu

nen nouze o stavy, kdy se zkouen program odmt vrtit zpt, ppadn se

rovnou po sputn vymae) se ve zdrojovm textu zachovvaj jen pouit

nvt.



      Oddlen kompilace - kompilace po stech:



       TABLE l - uzamkne vechna nvt v tabulce symbol, tato nvt se pi

kompilaci chovaj tak, jako by byla stle definovna, pkaz TABLE c tato

nvt neodstran. Popsn smyslu tohoto pkazu nsleduje.



       TABLE u - odemkne vechna zamen nvt v tabulce symbol, opak pkazu

TABLE l.



       Dva pedchoz pkazy jsou ureny pro umonn oddlen kompilace

- dvodem me bt velk rozsah zdrojovho textu. Zdrojov text je nutno

rozdlit na jaksi zklad (pomocn podprogramy - tiskov rutiny, prce s

obrazovkou, data,...) a na hlavn st (toto rozdlen me bt i nkolika-

vrstevn), dleit je, aby se zklad (ni rove) neodkazovala na nvt v

hlavn sti (vy rove). Nyn se odlad zklad, zamkne tabulka symbol a

vymae zdrojov text. Po vymazn zdrojovho textu zstanou v pamti vechna

nvt, kter obsahoval a je mono se na n odvolvat v dalm zdrojovm textu.

Tuto monost Vm snad lpe osvtl nsledujc pklad:



       V pkladu je program rozdlen na ti vrstvy, v prvn vrstv jsou uloeny

texty, druh st obsahuje program, kter vytiskne text, jeho adresa mu bude

zadna a posledn (nejvy) vrstva bude volat tisk textu.



           org  65000

  TEXT1    defm "Zkusebni " ;toto je prvn st programu,

           defm 'text c.1'  ;nen v n dn odkaz na

  TEXT2    defm "pokusny "  ;nvt ve vy vrstv

           defm 'text c.2'



       Tuto st programu zkompilujte (ASSEMBLY), zamknte tabulku symbol

(TABLE l) a vymae zdrojov text (CLEAR y).



           org  64000

  PRINT    ld   a,(hl)      ;toto je druh st programu,

           and  127         ;odkaz na ni rove v n







           rst  16          ;sice nen, mohl by vak bt,

           ld   a,(hl)      ;odkaz do vy rovn se

           inc  hl          ;zde vyskytovat nesm

           and  128

           jr   z,PRINT

           ret



       Nyn opt zkompilujte zdrojov text (ASSEMBLY), uzamknte opt tabulku

symbol (TABLE l), nyn jsou v n ji ti nvt, a opt vymate zdrojov text

(CLEAR y).



           org  63000

  MAIN     ld   a,2         ;posledn a nejvy rove

           call #1601       ;programu, me se odkazovat

           ld   hl,TEXT1    ;i na nvt definovan v

           call PRINT       ;obou nich rovnch

           ret



       Po vloen posledn sti zdrojovho textu jsou v tabulce symbol nvt

TEXT1, TEXT2, PRINT a MAIN. Prvn ti nvt jsou uzamena.



       Je zejm, e v uvedenm pklad nem rozdlen tohoto krtkho

zdrojovho textu na kusy smysl, ilustruje vak zpsob, jakm lze zpracovvat i

dlouh zdrojov texty.



       Tento zpsob prce byl pouit pi ladn monitoru, z kompilace zdrojovho

textu byla zachovna tabulka symbol a peloen kd, do pamti byl vkldn

zdrojov text monitoru a ladn - tmto zpsobem bylo mono odladit rozumnm

zpsobem program dlouh 11 KB, odpovdajc zdrojov text by byl dlouh celkem

asi 40 KB a neveel by se za dnch okolnost spolu s assemblerem do pamti,

o poteb msta pro peloen kd ani nemluv.



       Pi kompilaci jednotlivch vrstev je vhodn ni vrstvy chrnit tm, e

se uivatelsk zarka nastav pod n - nehroz nebezpe, e ji hotov sti

budou pepsny zdrojovm textem nebo generovanm strojovm kdem.



       Pi kadm zahjen prce je nutno opt zkompilovat vechny vrstvy, aby

se do tabulky symbol dostala potebn nvt, a vyplat se tedy spe vyhrt

na kazetu celou pam, tedy ladc systm i se zdrojovm textem a ji peloe-

nmi vrstvami programu. Me se to zdt, e se nahrv zbyten velk rozsah

pamti, ale z asovch dvod je to lep, ne pi zapnut potae provdt

nkter akce vdy znovu, navc tento postup umouje mt v pamti i dal

programy a data a nemuset je pokad nahrvat z deseti rznch kazet po dlouhm

hledn a pevjen kazet z jednoho konce na druh, takto popsan zpsob jsem si

nevycucal z palce ale sm jsem ho pouval pi prci na monitoru k tomuto

ladcmu systmu - assembler u byl pln funkn v tto dob. Mete pout

nsledujc modifikaci tohoto zpsobu:



    1. odladte si zkladn vrstvu



    2. pro ladn dal vrstvy si vyrobte jakousi instalaci, ta bude

       obsahovat krtk zavdc BASIC program a dva bloky CODE - prvn

       bude tvoit ladc systm spolu s tabulkou symbol vzniklou

       odladnm zkladn vrstvy, druh pak peloen kd a ppadn njak

       data nebo cokoliv jinho - rozdlen je proto, e mezi ladcm

       systmem a peloenm kdem je obvykle velk mezera a nem smysl

       nahrvat nkolik KB nul, to ovem neplat kdy pekldte ped

       ladc systm a ne za nj.

       Zavdc BASIC me vypadat teba takto:



             1 RANDOMIZE USR 24e3 :STOP

          9999 CLEAR 23999 :LOAD "" CODE :LOAD "" CODE :RUN







       Odpovdajc bloky dostanete na kazetu pomoc pkaz:



               SAVE "Instalace" LINE 9999:

               SAVE "Code 1" CODE 24e3,konec-23999:

               SAVE "Code 2" CODE zatek,dlka



       'konec' je konec zdrojovho textu (prvn slo ve stavov dce,

       zatek a dlka jsou sla urujc polohu a rozsah peloen ni

       vrstvy a ppadn dat, v tomto pkladu je assembler umstn na

       adrese 24000.



    3. v instalaci si mete tak nastavit monitor podle svch poadavk a

       nemuste jej pak pokad nastavovat znovu



    4. po odladn dal vrstvy si vyrobte opt novou dal instalaci - a

       takto pod dokola dokud nen program cel hotov



       Mete samozejm tak zkladn vrstvu peloit a z dalch vrstev se

odkazovat u pmo na adresy, to m nejmn dv nevhody - pi pouvn

monitoru se nebudete moci odkazovat na nvt v ji hotov vrstv (nebudou v

tabulce) a v ppad, e se rozhodnete pro zmnu nkter sti v ni vrstv,

budete muset pepsat kad odkaz na adresy ve vy vrstv protoe se tyto

adresy posunou, pouijete-li ve popsan postup, sta vyrobit si novou

instalaci s novmi hodnotami v tabulce symbol a vy vrstvu nemuste mnit

(pokud ovem nezmnte njak vce zkladn vrstvu - jin nvt, jin smysl).



       Nutnost pouit oddlen kompilace se vak dky znanmu zkrcen

zdrojovho textu (proti GENS je polovin) odsouv a na hranici kolem 5-7 KB

generovanho strojovho kdu, krat strojov kd lze ladit najednou - jak to

m vhody snad nen poteba moc zdrazovat.







                        5. Ostatn pkazy a monosti:



       Doposud nebyly uvedeny nkter pkazy, kter lze v assembleru pouvat,

zde je jejich pehled.



       PRINT (SYMBOL SHIFT + P) - tento pkaz slou k vytitn zdrojovho

textu na tiskrnu nebo plotter. Program bere jednotliv znaky a posl je znak

za znakem do kanlu systmu Spectra #3 - kanl pro tiskrnu. Kad dek je

ukonen kdem 13 (ENTER) a nejsou v nm pouity dn tabeltory - mezery jsou

opravdu titny vechny. Pokud v tomto pkazu pouijete parametr 'b', bude

vytitn pouze nastaven blok. Chcete-li si vytisknout tabulku symbol, pouijte

pkaz 'TABLE p'. Provdn lze zastavit stiskem klvesy SPACE. Jakm zpsobem

si pipojte svou tiskrnu na kanl #3 je Vae vc - sta, aby byl k dispozici

program, kter 'um' LPRINT.



       MONITOR (SYMBOL SHIFT + M) - pkaz slou k pechodu do monitoru (viz

dle). Pouijete-li parametr 'a', provede se ped sputnm monitoru kompilace

zdrojovho textu - je to vhodnj ne zadvat pkazy ASSEMBLY a MONITOR

postupn. Pokud jste si pi instalaci monitor odpojili, sputn se neprovede.



       BASIC (SYMBOL SHIFT + B) - vrt zen do systmu Spectra, do BASICu.

Pokud se Vm vak podailo pepsat nkter systmov promnn Spectra (program

pracujc s obrazovkou Vm 'utekl' a proel pes tuto oblast), pouijte pro

nvrat do BASICu radji pkaz NEW. Pro nov sputn PROMTHEA pouijte adresu,

na kter je instalovn - pi nvratu je assembler ve stejnm stavu v nm jste

ho opustili (pokud jste ho ovem z BASIC njak 'nevylepili'). Pi nvratu se

nastav potebn hodnoty do registr IY a SP, zapne peruen v mdu IM 1 a

provede se skok do hlavn provdc smyky (bude se interpretovat dal pkaz),

pi tomto nvratu nen poteba nastavovat registr HL !







       NEW (SYMBOL SHIFT + N) - pkaz provede stejnou akci jako v BASIC pkaz

NEW - vymae celou pam a po nastaven RAMTOP. Do assembleru byl zaazen

protoe pi trasovn nebo pi bhu se me podait pepsat systmov promnn

a hroz, e se pi nvratu pomoc pkazu BASIC systm zhrout. Pokud nevte,

zda se nepepsala tak systmov promnn RAMTOP, podvejte se na jej hodnotu

(je to hodnota na adresch 23730 a 23731) a ppadn ji opravte pedtm, ne

pouijete pkaz NEW (toto lze provst bu v monitoru nebo tak, e vyrobte

krtk program, kter to provede a ten spustte pkazem RUN:



           org  23296

           ent  $

           ld   hl,23999

           ld   (23730),hl

           ret



       Program pelote a spustte pkazem 'RUN b' - pedtm ho nastavte jako

blok - potom mete bez obav provst pkaz NEW. Pokud pouvte rutiny z ROM

Spectra, kter pepisuj systmov promnn, je nkdy lep pouvat pro nvrat

do systmu vdy pkaz NEW - po skonen Vaeho programu toti nemus bt v tom

stavu, v jakm by bt mly.



       QUIT (SYMBOL SHIFT + Q) - pokud bude tento pkaz pouit tak zaruen

jako posledn, k pouit jinch u nebudete mt monost - provd RESET

(RANDOMIZE USR 0). Tmto pkazem pouze elegantn ukonte prci a zcela

vyistte pota. Protoe tento pkaz je mimodn nebezpen a jeho nechtn

pouit by mohlo vyvolat u uivatele silnou depresi (u se stalo), je nutno za

nj pidat parametr 'y', pouze takto se provede.



      GENSOR:



       Zpsob, jak dostat zdrojov text z programu GENS do tohoto assembleru byl

ji zmnn, me nastat tak opan poteba, k tomuto elu byl vyroben krtk

program GENSOR.



       Program GENSOR se skld z krtk sti v BASICu a piblin z 200 Byt

strojovho kdu. Ke sv innosti potebuje, aby byla oblast pamti od adresy

55000 a ke konci przdn - sem se ukld zdrojov text ve formtu assembleru

GENS (MASM). Nahrajte do pamti PROMTHEUS (mete odpojit monitor aby bylo vce

msta) a instalujte ho teba na adresu 25000. Nahrajte do assembleru zdrojov

text - pokud by pesahoval adresu 55000, budete ho muset rozdlit. Jestlie je

adresa konce zdrojovho textu men ne 55000 mete nahrt program GENSOR

pkazem LOAD 'GENSOR'. Po nahrn pepete v pkazu RANDOMIZE USR adr,

promnnou 'adr' skutenm startem assembleru (nyn 25e3). Nyn mete zadat

pkaz GO TO 0 (ne RUN !), provede se inicializace a program GENSOR se pipoj

na tiskov kanl #3, potom se provede sputn assembleru. Nastavte zatek

bloku na zatek zdrojovho textu a konec dejte o maximln 30 strnek dl, nyn

zadejte pkaz 'PRINT b' - zadan blok pjde msto na tiskrnu do programu

GENSOR, kter ho ukld za sebe - omezen na 30 strnek je dno velikost

pamti, do kter se me zdrojov text ukldat (kdyby byly jednotliv dky

zdrojovho textu del ne je obvykl - data nebo texty vyplujc cel dek -

vlote radji konec bloku dve ne po 30 strnkch). Zadejte pkaz BASIC a

nahrajte prv vytvoenou st zdrojovho textu na kazetu, po nvratu do

assembleru nastavte dal st zdrojovho textu a opakujte dokud cel zdrojov

text nen nahrn na kazet.



       Tento zpsob penesen zdrojovho textu do programu GENS mete pout i

u jinch assembler, mte-li zdrojov text ve formtu pro GENS, mete ho snadno

penst do PROMTHEA.















         6. formt zdrojovho textu a dal podrobnosti o assembleru:



       Tato kapitola je urena vem, kte by se rdi dozvdli jak vypad

zdrojov text, jakm zpsobem je mono ho jet zkrtit (v mezch monost

samozejm) a pro vlastn dosahuje assembler v nkterch ohledech takov vkony

(rychlost a dlka i spe spornost uloen zdrojovho textu) proti jinm

assemblerm.



       Na potku byly tyto mylenky:



         - k tomu, aby se dala instrukce zcela jednoznan rozliit sta

           jej operan kd, informace o prefixech a tvaru ppadnho

           selnho operandu, tedy informace, kter lze zapsat do dvou

           byt, toto een vrazn urychl peklad, bude stait jen brt

           operan kdy a hldat syntaxi pkaz pi kompilaci - tyto akce

           se provdj u pi editovn (v tto dob ek pota na

           lovka a m dost asu aby tyto akce provedl) - vedlejm

           efektem pak je, e u pi psan zdrojovho textu dojde k

           vychytn spousty chyb a peklep



         - nvt ve zdrojovm textu mohou bt uloena jen jako odkazy do

           tabulky symbol, tyto odkazy zaberou jen dva byty, u nvt

           dlouhch alespo ti znaky vznik spora - tabulka symbol se

           bude vytvet ji pi psan zdrojovho textu, nebude tedy

           poteba vytvet ji a pi pekladu, tak kad odkaz na nvt

           bude nasmrovn pi editaci a nebude poteba pi pekladu

           tabulku prohledvat



       Nyn lo o to, jak to provst s nejmenm monm nrokem na as - teba

jedna strnka vpisu vlastn znamen jaksi disassemblovn 20 instrukc - o

rychlosti, s jakou se to provd se mete pesvdit sami (provd se po kadm

odesln instrukce).



       Kad dek zdrojovho textu m tvar:



         - prvn byte je operan kd instrukce, jsou zde ale tak pseudo-

           instrukce a dal 'neinstrukce' jako je przdn dek a

           koment, ty maj tak piazeny sv kdy, aby se odliily od

           obyejnch instrukc, maj v druhm bytu dku (informan byte)

           takovou kombinaci prefix, kterou nem dn instrukce, je

           kombinace prefix #DD a #FD, a v poslednch tech bitech je

           uloeno slo 7 (mimo przdn dek, ten tu m uloenou 0),

           hodnota informanho bytu zvis tak na tom, jestli je nebo

           nen ped instrukc i neinstrukc nvt nebo ne - pro

           signalizaci tto skutenosti je uren 3 bit informanho bytu,

           kdy je nvt pouito, je zde zapsna 1, odpovdajc hodnota

           je zapsna v zvorce, nsleduje pehled kd 'neinstrukc':



            neinstrukce           operan kd           informan byte



             przdn dek             0                     48 (56)

             koment                  1                     55

             ent                       2                     55 (63)

             equ                       3                        (63)

             org                       4                     55 (63)

             put                       5                     55 (63)

             defb                      6                     55 (63)

             defm                      7                     55 (63)

             defs                      8                     55 (63)

             defw                      9                     55 (63)











         - druh byte je informan byte, obsahuje tyto daje:



             7 bit - #CB prefix (203), 0 ne, 1 ano

             6 bit - #ED prefix (237)

             5 bit - #DD prefix (221)

             4 bit - #FD prefix (253)

             3 bit - v poli operand je nvt

             2-0 bit - typ selnho vrazu - podle tohoto se dosazuje

                       vsledek vrazu, vznam hodnoty je nsledujc:



                             0 - instrukce nem seln operand

                             1 - jeden byte, rozsah -256 a 255

                             2 - dva byty, mezi -65535 a 65535

                             3 - jeden byte, rozsah -128 a 128

                             4 - jeden byte, typu (ix+d)

                             5 - typ (ix+d),n

                             6 - rst p (p se vlo do op. kdu)

                             7 - neinstrukce



                       uveden rozsahy je mon pouvat v textu



         - dal byty jsou pouity jen v ppad, e je 3 bit informanho

           bytu nastaven na 1 nebo kdy posledn ti bity informanho bytu

           neobsahuj nuly, tvar je nsledujc:



                 1. bit 3 je 1, bity 0 a 2 jsou vechny 0



                    potom v dalch dvou bytech je zapsno

                    poad danho nvt v tabulce a na

                    konci je slo 192+2 (dlka)



                 2. bit 3 je 0, bity 0 a 2 nejsou jenom 0



                    v dalch bytech je zapsn cel vraz

                    nvt jsou nahrazena svm poadm

                    v tabulce symbol, ostatn znaky jsou

                    zapsny obvyklm zpsobem, na konci je

                    slo 192+dlka vrazu



                    napklad vraz 2*LABEL+#23 je zapsn

                    takto:



                     '2','*',128+H,L,'+','#','2','3',192+8



                    kde H a L jsou horn a doln byte poad

                    nvt LABEL v tabulce symbol;

                    vraz (2*LABEL+#23) bude uloen tak

                    takto, jestli se jedn nebo nejedn o

                    adresu se zjist z operanho kdu



                 3. bit 3 je 1, bity 0 a 2 nejsou jenom 0



                    uloen bude stejn jako v pedchozm

                    ppad, ped vrazem budou dva byty

                    obsahovat poad nvt a dlka bude

                    o dva byty vt



      Monosti zkrcen zdrojovho textu:



       Dostane-li se programtor do situace, e potebuje nkolik destek byt

pamti a tyto nejsou k dispozici, pokus se zkrtit zdrojov text tak, aby byl

pi stejnm obsahu krat. Nkolik zpsob, kter vedou k vsledku:







      1. Vyistte tabulku symbol od zbytench nvt pkazem 'TABLE c'.



      2. Odstrate komente a przdn dky



      3. Pokud se ve zdrojovm textu vyskytuj pkazy DEFB nebo DEFW za sebou,

snate se dostat co nejvce vraz do jednoho pkazu (bude mn operanch kd

a informanch byt) - nap:



           defb 255

  pepisem defb 0      na   defb 255,0,32   uette 4 byty

           defb 32



      4. Zvyknte si pokud pouvte texty s poslednm invertovanm znakem

pouvat rozen pkazu DEFM - sekvenci



           defb "Invertovany tex"      ;v GENSu to jinak

           defb "t"+128                ;nelze udlat



lze zapsat tak takto: defm "Invertovany text" , je to pehlednj a krat

(zvyk bv elezn koile).



      5. U konstant pouijte destkovou soustavu, stejn slo lze zapsat nej-

kratm zpsobem, je to sice mn pehledn, ale d se takto uetit mnoho -

hlavn u binrnho zpisu, poet znak potebn na zpis stejnho sla je

rzn, teba kd mezery je mono zapsat:



                 '32'              v destkov soustav

                 '#20'             v estnctkov soustav

                 '" "'             jako znak

                 '%100000'         ve dvojkov soustav



zpis v destkov soustav je viditeln ze vech nejkrat. Tak je vhodn msto

2+3 pst rovnou 5. Nkdy je vhodn pst sla v zpornm tvaru, teba slo

65535 lze zapsat jako -1, tot plat pro slo 255, pouze vak je-li pouito v

instrukci s osmibitovou konstantou.



      6. Zkrate nvt, o kolik znak zkrtte nvt, o tolik se zkrt

tabulka symbol a tedy i cel zdrojov text, vyplat se ovem zkracovat vt

mnostv nvt najednou, pouvte-li teba nvt LOOP s slem, pak je

vhodn nahradit stejnou st krat sekvenc - teba LP - zde si vak dejte

dobr pozor abyste prohozenm nezpsobili, e dve rzn nvt budou nyn

stejn, po prohozen nvt samozejm muste vyistit tabulku symbol.



      7. Vyskytuje-li se ve zdrojovm textu nkter konstanta velmi asto a

je-li dlouh alespo 3 znaky, je vhodn jej hodnotu piadit nktermu nvt

a nahradit ji vude tmto nvtm - tento postup nen dobr jen pro zkrcen

ale i pro zpehlednn a budete-li chtt konstantu zmnit, sta ji zmnit na

jednom mst a ne vude! Je-li tato konstanta pouita v pkazu DEFB (DEFW) a

pouvte-li jednopsmenn nvt, me se Vm vejt na jeden dek vcekrt

ne pvodn konstanta.



       Uveden zpsoby nejsou doporuenm jak pst zdrojov texty, vedou toti

a na mal vjimky k hor pehlednosti. Je to zpsob, jak se vyhnout nutnosti

pout oddlenou kompilaci. Pokud se Vm poda zjistit, e se zdrojov text

nevejde do pamti u v polovin prac, nezbyde Vm ne ho rozdlit, zanou-li

problmy s pamt a na konci, stoj za pokus zkrtit zdrojov text - obvykle se

to poda - stle je to lep ne se zabvat dlenm zdrojovho textu a pouvat

oddlenou kompilaci.



      Tabulka symbol:



       Tabulka je uloena za zdrojovm textem a m nsledujc tvar:







  ta    dva byty          poet nvt v tabulce



           dva byty          odkazy do vlastn tabulky, poet

           ........          odkaz je roven potu nvt,

  tabulka  ........          v hornm bytu odkazu je v bitech

  vektor  ........          . 6 a 7 uloena informace o

           ........          definovn nebo uzamen danho

           dva byty          nvt



           dva byty, jmno   dva byty obsahuj hodnotu danho

  vlastn  ...............   nvt, posledn znak jmna je

  tabulka  ...............   invertovn, identifiktory jsou

           ...............   abecedn seazeny, jejich poet

           dva byty, jmno   je roven potu nvt



      Podrobnosti editoru:



       Na tomto mst se dozvte o zpsobu, kterm probh pevdn dku z

textovho tvaru do tvaru, ve kterm je uloen. Nejdve se oddl nvt v poli

nvt (pokud tam njak je), potom se rozdl instrukce na mnemoniku a dva

operandy (operand me bt i przdn), zjist se o jak typ mnemoniky a operand

se jedn a prohled se tabulka, jestli takov instrukce existuje. Pi prohle-

dvn operand se nejprve hledaj registry a kdy se nenajdou, sna se

assembler vyhodnotit operand jako vraz, tento zpsob umouje, e je mono

pout jako nvt zcela libovolnou kombinaci znak, nejsou zde dn rezervo-

van slova - pouze u nkterch slov je nutno pout takov zpis, aby byl

vyhodnocen jako vraz:



     nap. chcete pout jako nvt etzec 'SP' - tento etzec by se

     vyhodnotil jako registr SP, napete-li vak SP+0 , bude ve v podku



           ld   hl,sp       ;takto zadan dek bude

                            ;vyhodnocen jako chyba



           ld   hl,sp+0     ;pi tomto zadn u bude

                            ;pijat a slovo 'sp' bude

                            ;vyhodnoceno jako nvt



           ld   hl,+sp      ;pokud to zadte takhle, dojde

                            ;tak k pijet, zmiz vak

                            ;znamnko '+' a pi vyeditovn

                            ;a zptnm vloen bude opt

                            ;hlena chyba (tot pi LOAD)



       Posledn poznmka se tk pouvn zvorek pro oznaen adresy - pokud

je v zvorce seln hodnota (vraz), sta zadat jen tu levou, prav zvorka

bude doplnna. Pokud vak tot udlte a v zvorce m bt registr (nap. (hl)),

bude slovo 'hl' vyhodnoceno jako nvt, nikoliv jako registr - zde je nutno

zvorku uzavt. Pouit zvorek pi uzvorkovn vrazu nen povoleno!



           ld   a,(hl)      ;toto se vezme jako   ld   a,(hl)



           ld   a,(hl       ;toto bude vyhodnoceno jako

                            ;ld   a,(HL), tedy HL je nvt!



           ld   a,(label    ;toto sta k tomu aby to bylo

                            ;brno jako   ld   a,(LABEL)

















                            IV. Monitor PROMTHEUS



     Monitor PROMTHEUS byl vytvoen tak, aby vhodn doplnil monosti, kter

poskytuje assembler PROMTHEUS. Poskytuje mnoho funkc, kter usnaduj ladn

program. Pi nvrhu ovldn byla zachovna shoda s programem VAST od T.R.C

prakticky ve vech shodnch funkcch - uivatel tohoto programu jist rdi tuto

skutenost ocen.



     Po vstupu do monitoru se vymae obrazovka a vype eln panel, pokud nebyl

eln panel pedefinovn, bude vypadat takto:



00000    di                       ;vpis dvou dk strojovho

00001    xor  a                   ;kdu od aktuln adresy



A:000 00000000 .  DI  (SP):45043  ;vpisy registr A,B,C,D,E,H,L

B:175 \                    65297  ;a dvojregistr BC,DE,HL,IX,IY,

C:255   BC:45055 SP:00000 50175  ;SP a vpis stavu peruen

D:001 .  DE:00257 IX:00000 04555  ;vpis zsobnku (5 adres),

E:001 .  HL:00000 IY:23610 23850  ;vpis registr R a F - jsou

H:000 .                           ;vypsny platn podmnky, dle

L:000 . R:000 NZ NC PO P T:00000  ;vpis potadla T-cykl

 UNIVERSUM Control On Call NON    ;stavov a editan dek



     Po vypsn elnho panelu je oekvn stisk njak klvesy ppadn vce

klves, po stisknut klvesy se zjist, odpovd-li stisknut klvesa njak

funkci, pokud ano, pejde zen do tto funkce, pokud ne, opt se ek na stisk

klvesy.





             Pstup k pamti (aktuln adresa) a pomocn funkce:





                   Nvrat do systmu assembleru - klvesa Q



     Po stisku klvesy Q se provede nvrat do assembleru, po nvratu bude

assembler ve stejnm stavu, v jakm byl oputn, toto neplat v ppad, e byla

provedena zptn kompilace.



                     Nastaven aktuln adresy - klvesa M



     Po stisknut klvesy M se ve spodnm dku objev otzka Memory a kurzor,

nyn je mono vloit matematick vraz (pravidla jsou stejn jako v assembleru),

ten bude vyhodnocen zleva doprava, v ppad, e dojde pi vyhodnocovn vrazu

k chyb, zazn zvukov signl a do editanho dku se na nkolik sekund vype

chybov hlen, potom se opt objev editan dek s textem, kter v nm byl

pi odesln a je umonna oprava chyby. Pokud chcete peruit vkldn,

stisknte klvesu EDIT (CAPS SHIFT + 1), zen se vrt do hlavn smyky.

Hodnota vrazu bude piazena aktuln adrese.



               Posun na dal instrukci - klvesy CAPS SHIFT + 6



     Pi pouit tto volby se zjist dlka instrukce na aktuln adrese a

aktuln adresa se zvt o tuto dlku. Po proveden se obnov vpis elnho

panelu.























               Posun o jeden byte zpt - klvesy CAPS SHIFT + 7



     Odeten jedniky od aktuln adresy, Po proveden se obnov vpisu elnho

panelu.



                Vnoen o jednu rove - klvesy CAPS SHIFT + 8



     Pi prohlen programu ve strojovm kdu se asto objev nutnost podvat

se do njakho podprogramu a neztratit pitom souasn msto - v prohlenm

podprogramu me dojt ke stejn poteb. Proto existuje funkce vnoovn - po

zvolen tto funkce se objev dotaz 'Memory', souasn hodnota aktuln adresy

se ulo na zvltn zsobnk (kapacita 10 adres) a aktuln adresa je nastavena

vloenou hodnotou. Pokud je zsobnk pln, pkaz se neprovede. Obnov se vpis

elnho panelu.



               Vynoen o jednu rove - klvesy CAPS SHIFT + 5



     Vynoen je opak funkce vnoen. Funkce odebere ze zsobnku hodnotu a

nastav na ni aktuln adresu, pokud na zsobnku nen dn adresa, nic se

neprovede. Obnov se vpis elnho panelu.



                  Smazn obrazovky - klvesy CAPS SHIFT + 0



     Tato funkce smae obrazovku, nastav barvy, kter pouv assembler

(i monitor) a obnov se vpis elnho panelu.



               Smazn vpisovho okna - klvesy CAPS SHIFT + 2



     Smazn sti obrazovky, kter je urena pro vpisy - tato st obrazovky

je voliteln poet dk - viz Editor vpis.





                   Voln podprogram a pouit BREAKPOINTu:





                 Voln podprogramu - klvesy SYMBOL SHIFT + H



     Po stisku klvesy se objev dotaz 'Call' na adresu, o n m bt voln

podprogram. Po vloen adresy (zadvejte velmi pozorn, pokud se zmlte, me

to mt neodstraniteln nsledky) se nastav vechny registry na hodnoty uveden

v elnm panelu, podle stavu indiktoru se provede zavoln podprogramu bu s

povolenm nebo zakzanm peruenm. Md peruen bude takov, jak byl

nastaven naposledy - ladc systm pracuje pod zakzanm peruenm a nemn

nastaven md, pouze pi nvratu do systmu BASIC je nastaveno IM 1 (pkazy

BASIC, NEW). Po nvratu z podprogramu se ulo vechny registry, zjist se

jestli pi nvratu bylo nebo nebylo povoleno peruen a obnov se vpis elnho

panelu. Pi voln se sprvn ukld tak hodnota registru R. Pi pouit tohoto

pkazu si ovte, zda je registr SP nastaven na sprvn msto - nesm bt

samozejm nastaven do oblasti pamti ROM (1-16385), takto se na zsobnku

neulo nvratov adresa (ROM nelze pepsat) a program se nevrt na sprvn

msto!





























             Nastaven startu pro pouit BREAKPOINTu - klvesa W



     Tato funkce vezme hodnotu aktuln adresy a uschov ji pro potebu bhu s

BREAKPOINTem - viz nsledujc funkce.



              Bh s pomoc BREAKPOINT - klvesy SYMBOL SHIFT + U



     Funkce vyzvedne ti byty na aktuln adrese, uschov je a na jejich msto

vlo skok do monitoru. Potom se nastav vechny registry na hodnoty uveden v

elnm panelu, povol nebo zake se peruen a provede skok na adresu zadanou

stiskem klvesy W. Pokud program probhne mstem s BREAKPOINTem, vrt se zpt

do monitoru, budou uloeny vechny registry, zjitn stav peruen a na sv

msto se opt ulo odebran ti byty. Z uvedenho je zejm, e tato funkce

nen pouiteln v pamti ROM. Opt je sprvn zpracovn registr R. U tto

instrukce nen potebn hldat hodnotu SP, dleit je pouze to, aby procesor

pi provdn programu na BREAKPOINT narazil.



Pklad:



  49999    ...

  50000    ld   hl,START    ;na tomto mst stisknte W

  50003    ld   bc,30000    ;poet prchod

  LOOP     ld   a,(hl)

  50005    cpl

  50006    ld   (hl),a

  50007    inc  hl

  50008    dec  bc

  50009    ld   a,b

  50010    or   c

  50011    jr   nz,LOOP

  50013    call SUBROUT     ;na tomto mst stisknte klvesy

  50016    ...              ;SYMBOL SHIFT + U



     Oznaen 'na tomto mst' znamen, e v okamiku stisknut klvesy W bude

aktuln adresa rovna 50000 a v okamiku stisku klves SYMBOL SHIFT + U bude

aktuln adresa rovna 50013.



     Varovn pklad:



     Pi vybrn msta pro vloen BREAKPOINTu kontrolujte dsledn, aby

BREAKPOINT (3 byty) nepepsal jinou st programu, kterou bude bh potebovat:



  50000    ld   hl,43210    ;na tto instrukci stisknte W

  50003    call PROCEDUR

  50006    ret              ;na tto instrukci m bt konec



  PROCEDUR ld   a,(hl)      ;kdyby byl pouit BREAKPOINT

  50008    inc  hl          ;na adrese 50006, pep se

  50009    ret              ;tak adresy 50007 a 50008 co

                            ;nelze potebovat a je tedy

                            ;nutno zvolit jin zpsob

                            ;projden tto sti programu





                     Pstup na magnetofon - LOAD a SAVE:



                      Uloen bloku na kazetu - klvesa S



     Assembler umouje ukldat na kazetu jak bezhlavikov bloky, tak bloky

CODE (se standardn hlavikou jako v BASICu). Postup je nsledujc:



     - stisknte klvesu S







     - na dotaz 'First' vlote adresu prvnho bytu bloku, kter m bt

       nahrn na kazetu



     - na dotaz 'Last' vlote posledn adresu zvolenho bloku



     - na dotaz 'Leader' mete odpovdt dvma zpsoby:



                 1. vloenm sla - v tomto ppad bude na kazetu uloen

                    bezhlavikov blok, jako leader (znakov byte) bude

                    pouito toto zadan slo, nahrvn se provd hned

                    po odesln, neek se na dal stisk klvesy



                 2. vloenm dvojteky a jmna (pouije se prvnch 10

                    znak, ostatn budou oddleny stejn jako v BASICu) - v

                    tomto ppad bude vytvoena hlavika, ve kter bude

                    uloen zatek bloku (First), jeho dlka (Last-First+1)

                    a zadan jmno, po stisku klvesy ENTER se pok na

                    stisk njak klvesy a pak se zane ukldn bloku na

                    kazetu (magnetofon muste spustit sami)





              Uloen bloku na kazetu - klvesy SYMBOL SHIFT + S



     Tento pkaz pracuje stejn jako pedchzejc pkaz, pouze msto dotazu

na 'Last' se pt na 'Length', tedy dlku ukldanho bloku - zadn parametr

bloku je takto pln stejn jako v BASICu. Chcete-li napklad uloit peloen

program na kazetu, provedete to nejlpe takto:



     - na zatek programu vlote nvt A0START - psmeno A a slo 0

       jsou tam proto, aby pi vpisu tabulky symbol nebylo teba toto

       nvt hledat - bude hned na zatku



     - za konec zdrojovho textu programu vlote sekvenci



           A0LENGTH equ  $-A0START



       psmeno A a slo 0 jsou tu ze stejnch dvod jako u nvt

       A0START



     - provete kompilaci pkazem 'MONITOR a' a v monitoru zvolte nyn

       popisovanou funkci, na dotaz 'First' vlote A0START a na dotaz

       'Length' A0LENGTH



     - nvt A0LENGTH Vm me poskytovat informaci jak dlouh je

       vyroben strojov kd, kter nen nikdy na kodu



                Nahrn bloku z kazety do potae - klvesa J



     Funkce se zept na adresu, kam se m blok nahrvat - dotaz 'First', na

posledn adresu nahrvanho bloku - dotaz 'Last', a na znakov byte nahrvanho

bloku - dotaz 'Leader'. Potom se nahraje prvn blok, kter bude nalezen, v

ppad, e nebude splovat parametry, kter byly zadny, nebo bude zjitna

chyba v parit bude ohleno chybov hlen 'READ/WRITE Error'. Tato chyba bude

hlena tak v ppad, e blok bude zasahovat ladc systm nebo zdrojov text

- dal provdn se peru jet ped zadnm znakovho bytu.



















         Nahrn bloku z kazety do potae - klvesy SYMBOL SHIFT + J



     Funkce pracuje jako funkce pedel, li se jen tm, e se msto dotazu

'Last' pouv dotaz 'Length'.





              Peten hlaviky nebo znakovho bytu - klvesa Y



     Provd se ten hlaviky z kazety - vype se typ bloku (0 je BASIC, 1 je

seln pole, 2 je znakov pole a 3 je CODE), potom jmno bloku, jeho poten

adresu, jeho dlku a dal informaci, jej vznam zvis na typu bloku. Po

vypsn informac se oekv stisk klvesy, pokud se jedn o klvesu J, bude

nahrn blok podle daj zjitnch z hlaviky. Jinak se vrac zen do hlavn

smyky.







                                Pamov vpisy





                Vpis disassembleru - klvesy SYMBOL SHIFT + 4



     Po stisku klvesy se do vpisovho okna vypisuj disassemblovan instrukce.

Vpis lze peruit stiskem klvesy EDIT (CAPS SHIFT + 1). Poten adresa

vpisu je prv nastaven aktuln adresa.





               Vpis disassembleru od zadan adresy - klvesa V



     Pkaz se dote na adresu, od n m bt disassemblovn provdno,

otzkou 'First'. Dal akce jsou stejn jako v pedchozm pkazu.





                Zpsob vpisu adres - klvesy SYMBOL SHIFT + C



     Pi vypisovn hodnot dvojbytovch selnch operand me disassembler

pracovat ve tech reimech, pepnn tchto reim je cyklick:



     1. vype se bnm zpsobem seln hodnota



     2. pokud se hodnota, kter m bt vypsna, rovn hodnot nkterho

        nvt v tabulce symbol, vype se msto sla toto nvt,

        stejn tak se nvt vypisuje msto adresy ped instrukc



     3. vypisuje nvt stejn jako v reimu . 2, navc pokud se hodnota

        zmenena o jednu rovn hodnot nkterho nvt, bude vypsno:

        'nvt+1'



po instalaci ladcho systmu je nastaven vypisovac reim . 3





                   Povolen / zkaz vpisu adres - klvesa C



     Monitor umouje zakzat vpis adres ped instrukcemi, tento zkaz se

netk nvt, kter mohou bt vypisovna ped instrukcemi pi zvolen reim

2 a 3.



















               Zmna seln soustavy - klvesy SYMBOL SHIFT + 3



     Zmna seln soustavy se tk vech sel vypisovanch ve vech typech

pamovch vpis, netk se ovem vpisu registr v elnm panelu - toto lze

ovlivnit v editoru elnho panelu.





                  Vpis disassembleru na tiskrnu - klvesa D



     Program umouje poslat vpis disassembleru na tiskrnu, komunikace se

provd stejn jako v assembleru pes kanl . 3 operanho systmu Spectra.

Pi zvolen tto funkce se program zept na prvn 'First' a na posledn 'Last'

adresu seku, kter m bt vypsn na tiskrnu - instrukce zanajc na posledn

'Last' adrese u vypsna nebude. Vypisovn lze peruit stiskem klves CAPS

SHIFT + ENTER po kad instrukci, kad dek je pro kontrolu tak vypisovn do

vpisovho okna.





         Zptn peklad do zdrojovho textu - klvesy SYMBOL SHIFT + D



     Funkce se podob pedchoz, vpis strojovho textu smuje msto na

tiskrnu do zdrojovho textu v assembleru - vkldn se provd za pstupov

dek (zcela jako pi nap. pkazu LOAD). Opt dotaz na 'First' a 'Last',

instrukce ponajc na adrese 'Last' se tak do zdrojovho textu nedostane.

Pokud dojde k chyb, ohls se chybov hlen a uivateli je dna monost

nalezenou chybu opravit, bude-li hlena chyba 'Memory full', nezbyde ne

stiskem EDIT (CAPS SHIFT + 1) celou akci peruit. Chcete-li pevod pedasn

ukonit, stisknte souasn klvesy CAPS SHIFT + ENTER. Pi zptnm pekladu se

opt kad dek vypisuje do vpisovho okna. Vce Vm pov pklad - viz

plohy.





                       Znakov vpis pamti - klvesa O



     Protoe pi prohlen obsahu pamti nepotebujeme vdy vidt jen strojov

kd, umouje monitor vypisovn sel v pamti jako znak. Kad dek vpisu

obsahuje adresu a dvacet pt znak od tto adresy. Znaky s kdy v rozsahu 0 a

31 jsou nahrazeny tekou. Pokud je kd znaku vt ne 127, odete se slo 128

a znak se vype stejn jako pedtm, pouze bude prohozena barva papru a barva

inkoustu - inverzn vpis. Jako prvn adresa se vezme aktuln adresa. Vpis se

provd tak dlouho, dokud je stisknuta libovoln klvesa. Peruen vpisu a

nvrat do hlavn smyky zajist stisk klvesy EDIT.





           Znakov vpis od zadan adresy - klvesy SYMBOL SHIFT + O



     Naprosto tot jako v pedchozm ppad, vpis se provd od adresy zadan

na dotaz 'First'.





                            Vpis sel - klvesa L



     Posledn vpis umonn monitorem je seln vpis od aktuln adresy. Na

dku bude vypsna adresa, pt jednobytovch sel a pt znak odpovdajcch

tmto slm. Vechno ostatn je shodn jako u znakovho vpisu.





















            Vpis sel od zadan adresy - klvesy SYMBOL SHIFT + L



     Vpis se bude provdt od adresy zadan na dotaz 'First'. Jinak se tato

funkce neli od pedchoz.





                    Vyhledvn posloupnost byt v pamti





          Zadn posloupnosti a vyhledn prvnho vskytu - klvesa G



     Pkaz umouje vyhledvat 5 byt dlouhou posloupnost, nkter byty mohou

bt pro porovnvn nevznamn. Po zvolen se objev dotaz '1. byte' a

'5. byte', mete vloit bu poadovan slo (vraz) nebo dvojteku - takto se

oznauj nevznamn byty v hledan posloupnosti. Po odesln ptho sla se

provede hledn, pokud bude posloupnost nalezena, nastav se na adresu jejho

vskytu aktuln adresa, potom se obnov vpis elnho panelu. Hledn se

provd od adresy, kter je vt o 1 ne aktuln adresa a do konce pamti.



     Pklady:



           hledte vskyt posloupnosti znak 'ABcd', zadejte:



                             1. byte 'A'

                             2. byte 'B'

                             3. byte 'c'

                             4. byte 'd'

                             5. byte :



           hledte instrukci    ld   hl,33333    , zadejte:



                             1. byte #21

                             2. byte 33333?256

                             3. byte 33333/256

                             4. byte :

                             5. byte :



     Kd instrukce ld hl,N bu znte, najdete ho v tabulce nebo do przdnho

msta v pamti tuto instrukci vlote (viz editace pamti) a podvte se na jej

operan kd.





           Vyhledn dalho vskytu zadan posloupnosti - klvesa N



     Aktuln adresa se zvt o jedniku a od tto adresy se hled dal vskyt

posloupnosti zadan pedchozm pkazem, pokud bude posloupnost nalezena,

aktuln adresa se nastav na jej zatek.





                            Penosy a plnn blok





                           Penos bloku - klvesa I



     Program se zept na prvn 'First' adresu bloku, na posledn 'Last' adresu

bloku a na msto, kam m bt blok penesen 'To'. Po zadn se provede kontrola

jestli se msto kam m bt blok penesen nepekrv s ladcm systmem nebo

zdrojovm textem, a provede se pesun. Dojde-li pi testu ke zjitn kolize

tchto dvou st pamti, provdn se peru a vype se chybov hlen

'READ/WRITE Error'. Msta odkud a msta kam se bude penet se mohou pekrvat,

blok bude vdy pesunut dobe.









                    Penos bloku - klvesy SYMBOL SHIFT + I



     Pkaz se od pedchozho li pouze zpsobem zadn parametr bloku, msto

otzky 'Last' je nyn otzka 'Length' na dlku penenho bloku.





                           Plnn bloku - klvesa P



     Program se zept na zatek 'First' a na konec 'Last' bloku, provede se

kontrola, zda blok nezasahuje do pamti obsazen ladcm systmem a zdrojovm

textem - pokud ano, ohls se chyba 'READ/WRITE Error', pokud ne, zept se

program jet na to, m 'With' chcete plnit zvolen blok, potom se blok vypln.





                    Plnn bloku - klvesy SYMBOL SHIFT + P



     Obdoba pedchoz funkce - blok se tentokrt zadv parametry zatek

'First' a dlka 'Length'.





                                Editace pamti





     Vraznou vlastnost monitoru PROMTHEUS je, e umouje zapisovat v

monitoru do pamti pmo instrukce, nen tedy nutno pouvat tabulky operanch

kd. Tato funkce vyuv podprogramy pro kompilaci z assembleru.





                  Jednorzov editace pamti - klvesa SPACE



     Po stisku klvesy SPACE se objev v editanm dku kurzor pln vlevo,

nyn je mono zadat instrukci strojovho kdu a to zcela stejnm zpsobem jako

pi vkldn zdrojovho textu, tedy instrukce zan od destho znaku na dce

- u tohoto pkazu funguje automatick tabelace, sta stisknout jet jednou

mezernk. Po vloen instrukce se provedou oba prchody kompilace a instrukce

bude uloena na aktuln adresu. Pi ukldn instrukce se kontroluje, aby

instrukce nebyla uloena do oblasti ladcho systmu se zdrojovm textem ani za

uivatelskou zarku. Pokud chcete instrukci za uivatelskou zarku pece jen

vloit, muste se vrtit do assembleru, pepsat jej hodnotu, vrtit se do

monitoru a vloit instrukci. Chcete-li do pamti pece jen zapsat slo nebo

text, pouijte odpovdajc zpsob jako ve zdrojovm textu - pseudoinstrukce

DEFB, DEFW, DEFM se stejnm inkem. Tento pkaz sice slou k editovn

pamti, mete ho pout i pro nadefinovn hodnoty njakho (i novho) nvt

- pouijte pseudoinstrukci EQU, vce se dozvte v ploze. Pokud bude ve vloen

instrukci nalezena chyba, ohls se do editanho dku na nkolik sekund

chybov hlen, bude-li to pokus o zpis do zakzan oblasti, vype se chybov

hlen 'Bad PUT (ORG)'. Ve fzi vkldn instrukce do editanho dku lze

funkci peruit stiskem EDIT.



































                     Opakovan editace pamti - klvesa E



     Chcete-li do pamti vloit vce instrukc, nen jednorzov editace pli

pohodln - je nutno neustle peskakovat za prv vloenou instrukci - proto

pouijte tento pkaz. Po zvolen tto funkce se v editanm dku tak objev

kurzor, stejn se funkce chov i dle, po zapsn instrukce do pamti, se

ukazatel posune za vloenou instrukci, obnov se vpis elnho panelu (dleit

jsou dva disassemblovan dky) a je mono vloit dal instrukci. Pi vkldn

mete pouvat ped instrukc tak nvt, bude mu piazena hodnota ukazatele

pro ukldn instrukce. Pi psan se lze odvolvat na vechna ji existujc

definovan nvt - tedy naped nvt pout v poli nvt a pak se na nj

lze odvolat v poli operand, jinak bude hlena chyba, odvolvat se samozejm

lze i na nvt definovan v prbhu posledn kompilace nebo definovan dve

pomoc jednorzov editace pseudoinstrukc EQU - viz ploha.



                        Krokovn a trasovn program



     Krokovn a trasovn jsou nejdleitj funkce, kter monitor poskytuje.

Pi trasovn a krokovn instrukc se provd kontroly jestli instrukce

nepouv zakzan oblasti pro zpis, ten a bh - takovch oblast je mono

pro kadou innost definovat a 5, navc oblast v n se nachz ladc systm

a zdrojov text se kontroluje na vechny innosti. Dle se kontroluje, aby se

nepouila instrukce HALT pi zakzanm peruen. Provdn kontrol je mono

vypnout a rychlost trasovn se piblin zdvojnsob - kontrola na instrukci

HALT se vypnout ned, vypnaj se kontroly na zakzan oblasti pamti vetn

oblasti s ladcm systmem a zdrojovm textem. U instrukc CALL a RST lze volit

ti reimy - obvyklou simulaci, u vybranch adres (mono a 10 adres) se tyto

instrukce provedou pmo (nebude se simulovat voln podprogramu ale cel

podprogram se zavol najednou) anebo se budou vechny instrukce CALL a RST

provdt najednou. Posledn dva reimy zvyuj rychlost trasovn, je tu vak

riziko ztrty kontroly nad programem - reim rychlho voln vybranch

podprogram lze vhodn pout na dokonale odladnch podprogramech pro zven

rychlosti trasovn. V stech programu, kter jsou pmo volny samozejm

neexistuj dn kontroly. V editanm dku jsou vypsny indikace stavu

kontroly (Control ON/OFF) a zpsobu, jakm se budou provdt instrukce CALL a

RST (Call NON/DEF/ALL) (dn/definovan/vechny instrukce se budou pmo

volat).



     Nevypnete-li kontrolu a budete-li krokovat i trasovat sv programy se

zakzanm peruenm, neme se stt, e by monitor ztratil zen programu.

Budete-li pouvat povolen peruen v mdu IM 1 nesmte mnit hodnotu registru

IY (je pouvn systmem jako ukazatel do systmovch promnnch), dvejte si

tak pozor, aby se registr SP (ukazatel na zsobnk) nenastavil do oblasti

pamti ROM. Budete-li povolovat peruen v mdu IM 2, mus bt? nastaveno

sprvn - peruen nen trasovno ani nijak kontrolovno!



     Pi krokovn a trasovn pot monitor tak asovou nronost programu

- potadlo T-cykl (T:00000). Potn cykl se hod pi prci na programech,

kter mus trvat pesn zadanou dobu - programy LOAD a SAVE, hudebn rutiny,

barevn efekty na obrazovce a v borderu. Na zatku nastavte potadlo na nulu

a protrasujte tu st, jej asovou dlku chcete zjistit. Pi trasovn se

nesm dn instrukce CALL nebo RST provdt pmo.



























                     Krokovn - klvesy SYMBOL SHIFT + Z



     Po stisknut klves se provede simulace jedn instrukce na aktuln adrese,

ped provedenm se obnov hodnoty vech registr (vetn R) a ppadn se povol

peruen, po proveden simulace se hodnoty vech registr opt ulo, zaznamen

se stav peruen a obnov se vpis elnho panelu. Pokud je povolena kontrola,

provedou se potebn testy ped vlastn simulac, kdy je zjitna njak

kolize, vype se chybov hlen a ek se na stisk klvesy. Simulace instrukc

CALL a RST se provd podle zvolenho reimu. Aktuln adresa se nastav podle

toho, jak simulovan instrukce zmn obsah tae instrukc.



                         Pomal trasovn - klvesa T



     Funkce provede simulaci instrukce na aktuln adrese, obnov vpis elnho

panelu, zmn aktuln adresu, provede test stisknut klvesy a pokud nen

stisknuta klvesa BREAK (CAPS SHIFT + SPACE) opakuje cel cyklus stle znovu.

Stisknete-li pi trasovn souasn klvesy CAPS SHIFT + ENTER, vynech se po

dobu, kdy budou klvesy stisknuty, obnovovn elnho panelu, tato monost je

uiten pro zrychlen trasovn na krat dobu - teba pro urychlen nkterho

cyklu. Simulace probh stejn jako pi krokovn.



                  Rychl trasovn - klvesy SYMBOL SHIFT + T



     Pi zvolen tto monosti se program zept na adresu instrukce na n by se

ml zastavit - 'Last', a provd cyklicky tyto akce: simuluje instrukci na

aktuln adrese, zmn aktuln adresu, pokud jsou stisknuty klvesy CAPS SHIFT

+ ENTER obnov eln panel, testuje stisk klvesy BREAK (CAPS SHIFT + SPACE) a

testuje, jestli se aktuln adresa nerovn zadan posledn adrese, pokud tomu

tak nen a nen stisknut BREAK, sko opt na zatek cyklu. V opanm ppad

se obnov vpis elnho panelu a rychl trasovn se zastav. Pokud nevte, na

kter adrese by se ml program zastavit (nezle na tom - zastavte ho BREAKem)

vlote teba 0.





                               Prce s registry



              Zmna stavu indiktoru peruen - SYMBOL SHIFT + M



     Pehod hodnotu indiktoru stavu peruen z EI na DI nebo naopak.

Indiktor uruje v jakm stavu peruen se bude simulovat kad instrukce,

volat podprogram nebo provdt bh s pomoc BREAKPOINTu, po skonen kad

takov akce se indiktor nastav podle skutenosti po proveden instrukce.





             Pehozen obsah zkladnch a alternativnch registr



                           klvesy SYMBOL SHIFT + B



     Provede vmnu zkladn a alternativn sady registr, ve strojovm kdu je

to ekvivalentn instrukcm EXX a EX AF,AF'. Pi trasovn nebo krokovn jsou

zkladn vdy ty registry, kter jsou viditeln na elnm panelu. Chcete-li se

tedy pi krokovn podvat na hodnoty alternativnch registr, muste ped

dalm krokovnm registry vrtit.

























             Nastaven obsahu registr - klvesy SYMBOL SHIFT + N



     Po zvolen tto monosti se v editanm dku objev npis 'ld ', vlote

jmno registru, jeho hodnotu chcete zmnit, rku nebo mezeru a napite slo

(vraz), kter chcete do tohoto registru zapsat, registry jsou tyto:



     Jednobytov registry: A,B,C,D,E,H,L,HX,LX,HY,LY,I,R



     Dvoubytov registry : AF,BC,DE,HL,IX,IY,SP



     Potadlo T-cykl   : T



     Pamov ukazatele  : X,Y (viz editor elnho panelu)



     Stavov registr     : F



U stavovho registru (F registr) je mono mnit jednotliv bity nsledujcm

zpsobem:



     ld f,c  -  zmn hodnotu CARRY flagu z NC na C a naopak



     ld f,s  -  zmn hodnotu SIGN flagu z P na M a naopak



     ld f,z  -  zmn hodnotu ZERRO flagu z NZ na Z a naopak



     ld f,p  -  zmn hodnotu PARITY flagu z PO na PE a zpt





                Nastaven zakzanch oblast a jinch parametr



                      Nastaven DEFB oblast - klvesa 1



     Monitor dovoluje nastavovat oblasti, kter budou pi vpisu disassemblerem

vypsny jako jednobytov data, takovch oblast si meme nadefinovat celkem 5.

Kad oblast je zadna prvnm a poslednm bytem (vetn). Po stisku klvesy 1 se

do vpisovho okna vyp souasn nastaven oblasti, kad dek zan slem

oblasti (0 a 4), za nm je vypsna adresa prvnho bytu oblasti a pokud je

stejn jako hodnota njakho nvt, je vypsno tak toto nvt, nakonec je

vypsna adresa poslednho bytu oblasti a ppadn nvt. Nyn mete stisknout

bu klvesu s slem nkter oblasti - tato oblast se vymae a znovu se vype

seznam nastavench oblast (windows-okna), nebo klvesu I, v tomto ppad se

program zept na prvn 'First' a na posledn 'Last' adresu oblasti, prov,

jestli plat, e 'First'<='Last', a pid novou oblast za ji definovan

oblasti, pokud je ji vech pt oblast definovno, klvesa I nebude reagovat.

Stisknete-li jinou klvesu ne 0,1,2,3,4,I, program se vrt do hlavn smyky.

Za oblast s jednobytovmi hodnotami je povaovn tak prostor pamti obsazen

ladcm systmem a zdrojovm textem.



                      Nastaven DEFW oblast - klvesa 2



     Dal typ oblast, kter lze pouvat jsou oblasti s dvoubytovmi hodnotami

(tabulky adres), jejich nastaven je pln stejn jako u oblast DEFB.



             Nastaven oblast, z nich se nesm st - klvesa 3



     Pi ladn programu je vhodn mt jistotu, e program nete data z mst v

pamti, kter k tomu nejsou urena, proto byla do programu dna monost tato

msta instrukcm zakzat. Kad instrukce, kter njakm zpsobem te data z

pamti, nap. pmo z adresy, z adresy v registru, pomoc indexregistr nebo

pes SP registr (tedy i RET, POP a EX (SP),HL), bude nejprve provena, zda tak

nein z oblasti, kde to m zakzno, pokud ano, jej simulace se neprovede a

bude ohleno chybov hlen. Za oblast se zkazem ten je navc povaovn







pamov prostor obsazen ladcm systmem a zdrojovm textem. Vlastn definice

tchto 'No read' oblast je stejn jako u DEFB oblast.



          Nastaven oblast, do nich se nesm zapisovat - klvesa 4



     Dleitj, ne zjiovat, zda program nete data z mst v pamti, z nich

by neml, je mt monost hldat program, aby nezapisoval do jinch ne

povolench sek pamti. U kad instrukce, kter provd zpis do pamti

(vetn instrukc CALL, RST, PUSH, EX (SP),HL) se provede kontrola jestli se

nepep zakzan oblasti, pokud ano, simulace se neprovede a bude hlena

chyba 'READ/WRITE Error'. Nastaven je obdobn jako u DEFB oblast. Oblast s

ladcm systmem a zdrojovm textem je tak povaovna za oblast se zkazem

zpisu - No write.



                 Nastaven oblast se zkazem bhu - klvesa 5



     Poslednm typem oblast, kde je monost nco zakzat, jsou oblasti se

zkazem bhu. Jakmile by se po proveden njak instrukce ocitl program v

oblasti se zakzanm bhem, instrukce se nevykon a ohls se chyba 'RUN Error'.

Zadvn je stejn jako u vech pedchozch. Pouit snad ani nen poteba njak

vysvtlovat - napklad kdy se program nevrac tam, kam by ml, zakate ve,

krom vlastn oblasti s programem, jakmile se njak instrukce pi trasovn

pokus o skok mimo povolenou oblast, bude hlena chyba - tyto problmy vyvolv

nejastji chybn prce se zsobnkem nvratovch adres pomoc instrukc PUSH a

POP - obvykle nco chyb nebo pebv.



                 Definovn adres pro pm voln - klvesa 6



     Vhodn zpsob, jak urychlit trasovn program, je provdt vybran

pkazy CALL a RST pmo (nesimulovat kadou instrukci ve volanch podprogramech

- volat cel podprogram najednou). K tomuto elu si mete zvolit celkem deset

adres. Pokud nastavte reim voln definovanch podprogram (Call DEF) bude se

kad pkaz CALL nebo RST, jeho adresn st je rovna nkter adrese ze

seznamu definovanho tmto pkazem, nahrazovat zavolnm podprogramu na tto

adrese. Pi ladn programu se tato monost vhodn pouv na ji odladn a

dobe fungujc podprogramy (nehroz tu ji nebezpe ztrty kontroly,

podprogram se vrac zpt tam, odkud byl zavoln) - tisk znaku, test klvesnice

pokud nen pouvno peruen - a tak na podprogramy, jejich prci nen mono

zpomalit - nahrvn a zvukov podprogramy. Ukzky pouit v ploze. Editace je

podobn jako u definovn oblast, vymazn je mono navc provdt klvesami 0

a 9.



            Zmna reimu provdn instrukc CALL a RST - klvesa X



     Jak bylo dve uvedeno, mohou se instrukce CALL a RST provdt temi

rznmi zpsoby, kter se li hlavn rychlost a bezpenost - bohuel nepmo

mrn. Tyto reimy jsou indikovny v editanm dku (NON/DEF/ALL) a jejich

vznam u byl popsn dve.



































           Zapnut / vypnut kontroly instrukc - SYMBOL SHIFT + X



     Tmto pkazem lze najednou vypnout provdn vech kontrol, nejmn

dvojnsobn to zv rychlost provdn trasovn. Tuto monost pouvejte

uven.





                             Editor elnho panelu



         Pechod do editoru elnho panelu - klvesy SYMBOL SHIFT + W



     Po pepnut do editoru elnho panelu se vymae obrazovka, obnov vpis

elnho panelu a rozsvt se jedna z poloek v elnm panelu. Nyn je mono pro

kadou poloku definovat jej umstn, zpsob vpisu a dal monosti - viz

dle.

                        Ovldn editoru elnho panelu



     CAPS SHIFT + 1 (EDIT) - oputn editoru elnho panelu





     4 - pechod na nsledujc poloku v seznamu (viz dle)



     3 - pechod na pedchoz poloku v seznamu





     5 - posun poloky o jednu pozici doleva



     6 - posun poloky o jednu pozici dol



     7 - posun poloky o jednu pozici nahoru



     8 - posun poloky o jednu pozici doprava





     A a Z - nastaven velikosti poloky (0 a 25), pro registry znamen,

              jestli se budou nebo nebudou vypisovat, pro pamov vpisy

              se takto mn poet adres, kter se vypisuj





     SYMBOL SHIFT + D - zapnut nebo vypnut vpisu tak v destkov

                        soustav



     SYMBOL SHIFT + H - zapnut nebo vypnut vpisu tak v estnctkov

                        soustav



     SYMBOL SHIFT + B - zapnut nebo vypnut vpisu tak ve dvojkov

                        soustav



     SYMBOL SHIFT + C - zapnut nebo vypnut vpisu tak ve znakov form



     SYMBOL SHIFT + T - zmna typu vpisu u pamovch vpis - vypisuj se

                        bu jednobyty nebo dvoubyty



     SYMBOL SHIFT + S - zmna smru vpisu u pamovch vpis - obsahy

                        jednotlivch adres jsou vypisovny bu vedle sebe

                        nebo pod sebe

















                      Seznam poloek, kter lze pouvat:



     Editan dek - lze ovlivnit pouze, kter dek bude pouvn pro

           tyto ely



     Vpisov okno - lze ovlivnit poet dk, kter budou pouity, lze

           tak zmnit polohu okna



     Vpisov okno disassembleru - pi obnovovn elnho panelu se

           vypisuje nkolik dk instrukc strojovho kdu od aktuln

           adresy, poet dk a polohu okna lze nastavit



     Stav peruen - vpis EI nebo DI



     Jednobytov registry - A,B,C,D,E,H,L,I,R,HX,LX,HY,LY a F - lze volit

           soustavy, ve kterch budou jejich hodnoty vypisovny - registry

           mohou bt vypisovny ve vech najednou, u registru F je mono

           volit (SYMBOL SHIFT + B) mezi binrnm vpisem a vpisem

           splnnch podmnek



     Dvoubytov registry - AF,BC,DE,HL,SP,IX,IY - podob se jednobytovm

           registrm



     Vpis potadla T-cykl - lze nastavit stejn jako dvojbytov registr



     Adresov vpisy od zadan adresy (ukazatele X,Y)

           u tchto vpis lze volit poet byt, kter budou vypisovny,

           lze mnit smr, kterm se jednotliv hodnoty vypisuj, lze mnit

           tak jestli se budou vypisovat jednobytov nebo dvoubytov

           hodnoty



     Adresov vpisy od adresy v dvojregistru - (BC),(DE),(HL),(SP),(IX),

           (IY) - nastavit lze stejn vlastnosti jako u pedchzejc

           poloky



     Nejjistj zpsob, jak si osvojit zpsob pouit editoru elnho panelu,

je ho zkusit pout - nemete nic zkazit.

























































                     V. Pklady prce s ladcm systmem



                          1. Pklad - zptn peklad



     Tento pklad Vm pome vyzkouet a pochopit zpsob jak lze pevst

strojov kd do zdrojovho textu. Provdjte pesn popsan kony a sledujte

vsledky.



     Nahrajte PROMTHEUS na adresu 24000 a instalujte ho vetn monitoru. V

assembleru vlote pkaz MONITOR, objev se vpis elnho panelu, nyn stisknte

klvesu SPACE, doln dek panelu zmiz a objev se kurzor, napite

'ldbytes equ #556' a stisknte ENTER. Nyn stisknte klvesu M a na dotaz

'Memory:' vlote text 'ldbytes'. Po odesln se obnov vpis elnho panelu a

uvidte vpis obsahu pamti ROM od adresy 1366, msto sla 1366 vak bude

vypsno LDBYTES.



     Nyn stisknte klvesy SYMBOL SHIFT (dle SS) a 4, objev se nkolik dk

vpisu disassembleru, a se ve vpisu objev instrukce 'call 1511', perute

vpis klvesou EDIT. Stisknte opt klvesu SPACE a vlote 'ldedge1 equ 1511'.



     Opakujete-li znovu disassemblovn naleznete dal adresu v instrukci

'jr nc,1387'. Vlote 'ldbreak equ 1387' a vylistujte si nkolik instrukc

(SS + 4), nvt LDBREAK se objevilo na vech mstech, kde bylo dve slo

1387, podobn tak nvt LDEDGE1. Vypite si instrukce tak, aby nvt LDBREAK

na zatku dku bylo v horn sti vpisu.



     Dal adresa je slo 1396, vlote 'ldwait equ 1396'. Obnovte vpis.



     Ve vpisu mete vidt instrukci 'jr nc,LDBREAK+1', toto je skok na druhou

instrukci od adresy LDBREAK, pokud by se mezi tyto dv instrukce pozdji u ve

zdrojovm textu vloila dal instrukce, nepracoval by program sprvn. Vlote

tedy radji 'ldstart equ ldbreak+1', uvdomte si, e mete pouvat ji

definovan nvt msto adres, snite si tak pravdpodobnost omylu pi

vkldn.



     Abychom se nezdrovali vlote postupn tato nvt:



                       ldedge2  equ  1507

                       ldleader equ  1408

                       ldsync   equ  1423

                       ldmaker  equ  1480

                       ldflag   equ  1459

                       ldverify equ  1469

                       ldnext   equ  1474

                       lddec    equ  1476

                       ld8bits  equ  1482

                       ldloop   equ  1449



     Prohldnte si disassemblerem pam, v hlavn sti programu je kad

adresa nahrazena nvtm. Nyn se podvme na oba podprogramy: LDEDGE1 a

LDEDGE2 nejprve LDEDGE2, nastavte aktuln adresu na LDEDGE2 (klvesa M) a pi

disassemblovn naleznete adresy 1513 a 1517, vlote nvt LDDELAY a LDSAMPLE,

pokud jste si dobe vimli, je nvt LDEDGE1 na tet instrukci za nvtm

LDEDGE2 a tedy spolen st ji neobsahuje adresy, kter by nebyly nahrazeny

nvtmi.



     Nyn provedeme zptn peklad: Stisknte SS a D, na dotaz 'First:' vlote

'ldbytes' a na dotaz 'Last:' vlote '1540+1'. Po odesln uvidte vpis

disassemblovan sti pamti nyn bez adres ped instrukcemi, pouze s nvtmi.

Po skonen stisknte klvesu C - opt se zapne vpis adres ped instrukcemi.



     Vrate se do assembleru stiskem klvesy Q.







     Pokud jste vechno provedli pesn podle pokyn, ml by zdrojov text

konit na adrese 40607. Stisknte SS+K a dostanete se na zatek zdrojovho

textu. Najdte instrukci 'ld  hl,1343', je to sedm instrukce od zatku,

nastavte do pstupovho dku nsledujc instrukci 'push hl' a stisknte

dvakrt CAPS SHIFT + 9 a vymate tyto dva dky.



     Zatek programu bude po proveden zmn nsledujc:



                       LDBYTES  inc  d

                                ex   af,af'

                                dec  d

                                di

                                ld   a,15

                                out  (254),a

                                in   a,(254)

                                ...



     Zdrojov text bude konit na adrese 40598.



     V tomto okamiku je nejvy as pro uloen zdrojovho textu na kazetu.

Stisknte SS+S a vlote ':loader', spuste volnou kazetu a stisknte njakou

klvesu, po proveden stisknte SS+V (VERIFY) a po odesln vrate kazetu a

zkontrolujte nahrvku, pokud bude chybn, opakujte VERIFY a kdy bude nespn,

opakujte SAVE, nyn u mete odeslat jen SAVE bez nieho a jako jmno se vezme

posledn zadan jmno.



     Nyn pipite ped program instrukce:



                                org  60000

                                ent  $

                       START    ld   ix,16384

                                ld   de,6912

                                ld   a,255

                                scf

                                call LDBYTES

                                ret



     Vezmte kazetu s libovolnou obrazovkou a nastavte ji ped blok dat (za

hlaviku) a zadejte pkaz RUN (SS+R) a spuste magnetofon, po skonen

nahrvn bude program ekat na stisk libovoln klvesy, aby se mohl vrtit do

editoru.



     Vlote 'Find s:or   2', zmnte-li slo 2 na njak slo z rozsahu 0..7,

zmn se barva pruh - zstanou zachovny dvojice:



                             ern - bl

                             modr - lut

                             erven - svtle modr

                             fialov - zelen



     Dal instrukce, kter mn barvy pruh je instrukce CPL, zmte ji za

instrukci xor %11111111, zmnte-li jedniky na poslednch tech mstech za nuly

(ne vechny, rzn zkouejte), mete zskat dal kombinace barev. Posledn

instrukce mnc barvy je instrukce xor 3 za nvtm LDSYNC, kter mn barvy

zavdcch pruh na barvy pi nahrvn.



     Vlote pkaz 'MONITOR a' (SS+M), provede se peklad a skok do monitoru.

Nastavte aktuln adresu na LDEDGE1, stisknte SS+N a zadejte 't,0' - vynuluje

se potadlo T-cykl. Stisknte SS+T a vlote 'ldsample-1' - trasovn do adresy

LDSAMPLE-1. Po skonen ukazuje potadlo T-cykl hodnotu 354. Toto je poet

cykl procesoru potebn na proveden tohoto programu:









                       LDEDGE1  ld   a,22

                       LDDELAY  dec  a

                                jr   nz,LDDELAY



     Tato st programu se provede dvakrt pi nahrn kadho bitu - tedy

celkem 16 krt pi nahrn 1 bytu. Stisknte Q a vrate se do assembleru.



     Nahrate uveden ti dky takto:



                       LDEDGE1  ld   a,7

                       LDDELAY  dec  a

                                set  3,a

                                out  (254),a

                                res  3,a

                                jr   nz,LDDELAY



     Vlote 'MONITOR a', nastavte aktuln adresu na 'ldedge1', nastavte

potadlo T-cykl na 0 a trasujte program a do adresy 'ldsample-1'. Potadlo

T-cykl ukazuje hodnotu 346, tedy o 8 cykl mn, ne by mlo, pidejte dv

instrukce NOP za instrukci 'jr nz,LDDELAY', zopakujte vpoet T-cykl, nyn je

hodnota 354 a tedy stejn jako dve a loader bude pracovat opt bez chyb.



     Spuste program pkazem RUN a vyzkouejte nahrvn, vsledek uvidte

sami.



     Vtina loader reaguje na stisk SPACE, pokud budete chtt tuto monost

vylouit, nahrate instrukci 'ret nc' za nvtm LDSAMPLE instrukc 'nop'.



     Dal monosti u muste vymyslet a vyzkouet sami.





                        2. Pklad - monosti trasovn



     Vlote pkaz 'CLEAR y', napite tento krtk program:



                                ent  $

                       START    xor  a

                                out  (254),a

                       FILL     ld   hl,16384

                                ld   bc,6912

                       FILL2    ld   a,r

                                ld   (hl),a

                                inc  hl

                                dec  bc

                                ld   a,b

                                or   c

                                jr   nz,FILL2

                                ret



     Provete RUN - vsledek nevypad patn, zkuste to znovu, je to jin, tak

ne okliv (pokud nemte barevnou televizi, tak mte smlu).



     To, e po kadm sputn vypad obrzek jinak, m na svdom registr R.

Vlote tedy za instrukci 'xor a' instrukci 'ld r,a', tentokrt bude vsledek

vdy stejn, registr R m vdy pi sputn hodnotu nastavenou na nulu.



     Vlote 'MONITOR a' a pejdte do monitoru, nastavte aktuln adresu na

nvt START, zjistte, na kter adrese je instrukce 'ret', vymate obrazovku

(CS+0) a spuste rychl trasovn (SS+T), na dotaz 'Last' dejte adresu instrukce

'ret'. Po odesln uvidte znan zpomalen vechny akce, kter program provd

- nyn mete:









     a) nedlat nic - pokat a to samo skon



     b) stisknout CAPS SHIFT a ENTER a sledovat co se dje s jednotlivmi

        registry, rychlost trasovn se znan zpomal



     c) stisknout CAPS SHIFT a SPACE a trasovn zastavit, ppadn opt

        spustit nebo krokovat jednotliv instrukce



     Chcete-li pi trasovn sledovat jednotliv registry, pouijte pomal

trasovn (T), znovu mete:



     a) opt nedlat nic - tentokrt program pob tak dlouho, dokud

        nenaraz na instrukci, kter by provdla nebezpenou akci



     b) stisknout CAPS SHIFT + ENTER, te se program naopak zrychl,

        pestanou se vypisovat hodnoty registr



     c) stisknout CAPS SHIFT + SPACE a zastavit trasovn



     Nastavte opt aktuln adresu na nvt START, vymate obrazovku (SS+0) a

vypnte provdn kontrol. Vyzkouejte opt rychl i pomal trasovn - u

rychlho by mlo bt patrn zven rychlosti.



     A se do sytosti pesvdte o rozdlu v rychlostech, kontrolu opt zapnte

(SS+X).



     Zrychlen trasovn vypnnm kontrol radji nepouvejte, a pokud ano, tak

si dobe rozmyslete zda program nebude pchat njak nepstojnosti - pi prvnm

sputn vdy s kontrolami. Nkolik sekund takto uetench Vs me stt

spoustu asu ztracenho nahrvnm programu znovu do potae.



     Vrate se do assembleru a ped instrukci 'ld  hl,16384' vlote tyto dky:



                       LOOP     push af

                                call FILL

                                pop  af

                                inc  a

                                cp   128

                                jr   c,LOOP

                                ret



a takto upraven program spuste pkazem RUN.



     Po skonen se pepnte do monitoru (SS+M) a pepnte reim provdn

instrukc 'call' a 'rst' na reim 'ALL' (X). Stisknte klvesu 3 a nastavte okno

se zakzanm tenm na rozsah 0-1 (po vpisu przdnho seznamu stisknte I a

zadejte ob sla), potom nastavte registr SP na 0. Aktuln adresu nastavte na

START a nyn krokujte (SS+Z), pomalu (T) nebo rychle (SS+T) trasujte dan

program (pozor na SP - vdy na 0). Instrukce 'call FILL' se provede najednou i s

celm podprogramem.



                            3. Pklad - trasovn



     Instalujte PROMTHEUS na adresu 25000, pejdte do monitoru, nastavte

aktuln adresu na #12a2, registry IY na hodnotu 23610 a SP na 0, povolte

peruen (SS+M) a spuste rychl trasovn, jako posledn adresu uvete 0.



     - vymae se obrazovka (uvidte zpomalen CLS)

     - provede se automatick listing (pokud je co vypsat)

     - objev se kurzor v editan zn











     Stisknte klvesu Q, pomalu se vype pkaz PLOT, pipite jet '0,0' a

stisknte ENTER. Po chvli se objev teka, stejn vlote pkaz 'DRAW 255,175',

pi psan muste klvesu dret ponkud dle ne obvykle, pi psan '55' radji

po napsn prvn slice klvesu na chvli puste a potom opt stisknte.

Klvesu mete pustit v okamiku kdy se z potae ozve cvakn - zpomalen

klvesnicov echo.



     Nastavte reim 'DEF' (X) a vlote jako 'Call' adresy hodnoty #F2C, 16 a

#556 (klvesa 6 a I - podobn jako okna). Nastavte registry, aktuln adresu a

peruen jako pedele a zkouejte vloit tyto pkazy:



               PLOT 0,0: DRAW 255,175

               CIRCLE 127,87,87 - trplivost, chvli pokejte

               POKE 25000,0 - program se zastav na instrukci

                     'ld (bc),a', kter realizuje pkaz POKE

               LIST

               LOAD ""SCREEN$ - a samozejm tak puste kazetu

               FOR i=22528 TO 23295: POKE i,PEEK 23672: NEXT i

               CLS

               BEEP .05,40

               RANDOMIZE USR 25000 - program se zastav na adrese

                     25000 a bude chtt trasovat assembler





                     4. Pklad - zdrojov text na ukzku



     Na kazet je tak hudebn rutina za hry SKATE CRAZY, vymate zdrojov text

(CLEAR y) a nahrajte ho do pamti, chvli pokejte, ne se ulo a spuste jej

pkazem RUN.









































































           OBSAH :



           I.   Trochu sebechvly aneb odkud to pilo _____________ 1



           II.  Instalace ladcho sytmu __________________________ 4



           III. Assembler PROMTHEUS _______________________________ 5

                editor _____________________________________________ 5

                magnetofonov operace ______________________________ 9

                peklad ___________________________________________ 11

                tabulka symbol ___________________________________ 15

                ostatn pkazy a monosti ________________________ 18

                formt zdrojovho textu a dal podrobnosti

                o assembleru ______________________________________ 20



           IV.  Monitor PROMTHEUS ________________________________ 24

                pstup k pamti (aktuln adresa)

                a pomocn funkce __________________________________ 24

                voln podprogram a pouit BREAKPOINTU __________ 25

                pstup na magnetofon - LOAD a SAVE _______________ 26

                pamov vpisy ___________________________________ 28

                vyhledn posloupnosti byt v pamti ______________ 30

                penos a plnn blok _____________________________ 30

                editace pamti ____________________________________ 31

                krokovn a trasovn program ____________________ 32

                prce s registry __________________________________ 33

                nastaven zakzanch oblast a jinch parametr ___ 34

                editor elnho panelu _____________________________ 36



           V.   Pklady prce s ladcm systmem _________________ 38

                1. pklad - zptn peklad _______________________ 38

                2. pklad - monosti trasovn ___________________ 40

                3. pklad - trasovn ____________________________ 41

                4. pklad - zdrojov text na ukzku ______________ 42



