


                              - 21 -



      bnhx   - konverze 8-mi bitove hodnoty na dve hexadecimalni
               cislice
               vstup:  <A > = konvertovane cislo
                       <HL> = adresa pameti, kde se ma vysledek
                              konverze ulozit
               vystup: <HL> = adresa pameti za ulozenou dvojici
                              znaku
               meni se: <AF>, <HL>

      bndc   - konverze 16 ti bitove hodnoty na retezec decimal-
               nich cislic
               cislo je ulozene v pameti jako retezec ASCII zna-
               ku, predrazene 0 se vypusti
               vstup:  <BC> = konvertovane cislo
                       <HL> = adresa pameti, kde se ma vysledek
                              konverze ulozit
               vystup: <HL> = adresa pameti za retezcem decimal-
                              nich cislic
               meni se: <AF>, <BC>, <DE>, <HL>

      inkey  - cteni jednoho znaku z klavesnice  s  automatickym
               opakovanim. Modul ceka, dokud neni stlaceno  tla-
               citko. Po opetovnem volani  vykonava  automaticke
               opakovani, tj. podrzeni tlacitka ma stejny ucinek
               jako jeho opetovne tisknuti.  Stisknuti  tlacitka
               je indikovano zvukovym signalem.
               vstup:
               vystup: <A > = ASCII kod stisknuteho tlacitka
               meni se: <AF>

      scan   - ohmatani klavesnice. Modul zjisti, zda je nektere
               tlacitko stisknute
               vstup:
               vystup: <A > = 0 kdyz neni  stisknute,  nebo  pri
                              nedovolene kombinaci tlacitek
               meni se: <AF>

      clear  - vymazani obrazovky
               vstup:
               vystup:
               meni se: vse

      outchr - vypisuje znak na pozici oznacenou kurzorem a kur-
               zor posune doprava. Na konci radku prejde na novy
               radek,na konci obrazovky posune obrazovku nahoru.
               OUTCHR spravne osetri tyto ridici znaky:
                  #19 - posun kurzoru vlevo,
                  #18 - posun kurzoru vpravo,
                  #0D - konceni radku a prechod na novy radek.
               Na obrazovce se kurzor nezobrazi (zabezpecuje  to
               modul SETCRS), modifikuje se jen promenna CURSOR.
               vstup:  <A > = kod znaku
               vystup:
               meni se: <AF>


-



                              - 22 -



      cursor - adresa pameti, ktera obsahuje pozici  kurzoru  na
               obrazovce pro modul OUTCHR. Jsou to dva  byty,  v
               prvnim se uchovava cislo sloupce (0-31) a ve dru-
               hem cislo radku (0-23).

      setcrs - na puvodnim miste se kurzor (blikajici ctverecek)
               smaze a na pozici, kterou udava promenna  CURSOR,
               se objevi.
               vstup:  CURSOR = nova pozice kurzoru
               vystup:
               meni se: <AF>

      mrs    - prace s dialogovym radkem. Modul vypise pozadova-
               ny text do dialogoveho radku, nacte vstupni  text
               a podle pozadavku  ho  analyzuje  na  trojznakove
               prikazy. Vyvolanim tohoto modulu  ma  uzivatel  k
               dispozici vsechny funkce, ktere  jsou  popsane  v
               popisu prace s modulem MRS, tzn. ze na  editovani
               textu je mozne vyuzit tlacitka CS+5,8,9,0 , vstup
               textu vzdy ukoncuje tlacitko ENTER.
               vstup:  <A > = cislo pozice v  dialogovem  radku,
                              od ktere se ma vypsat text (0-31)
                       <HL> = adresa vypisovaneho textu
                       <B > = delka vypisovaneho textu. Kdyz <B>
                              = 0, text se nevypisuje
                       <C > = 0, nic se necte, jinak se cte text
                              z klavesnice a uklada se do  bufru
                              od adresy #FE00.
                       <DE> = adresa tabulky trojznakovych  pri-
                              kazu. Kdyz <DE>=0,  nacitany  text
                              se neanalyzuje. V tabulce nasledu-
                              ji za sebou vzdy trojznakova zkra-
                              tka a adresa obsluzneho  programu.
                              Tabulka je zakoncena binarni 0.Po-
                              kud je pozadovana tato analyza,mo-
                              dul nevrati rizeni, dokud uzivatel
                              nenapise radek, ktery zacina  pri-
                              pustnym prikazem.
               vystup: <B > = pocet nacitanych znaku bez  ENTER.
                              Nacitany retezec je ukoncen binar-
                              ni 0.
                       <DE> = adresa nacitaneho  retezce.  Pokud
                              byla pozadovana analyza trojznako-
                              vych prikazu, ukazuje <DE> na prv-
                              ni znak za prikazem.
                       <HL> = Kdyz byla pozadovana analyza troj-
                              znakovych prikazu, obsahuje adresu
                              prislusneho podprogramu.
               meni se: <AF>, <BC>, <DE>, <HL>

      mrs2   - umozni opravit text nacteny modulem MRS. Musi  mu
               predchazet volani modulu MRS se ctenim retezce.




-



                              - 23 -



               vstup:  Pouzije informace ziskane pri praci modu-
                       lu MRS. Modul MRS2 se musi volat instruk-
                       ci  !!!  JP MRS2  !!!
               vystup: stejny jako u modulu MRS
               meni se: <AF>, <BC>, <DE>, <HL>

      schent - vyhleda vstupni bod v knihovne. Da se vyuzit jako
               napr. jeden program produkuje data,ktere ma zpra-
               civat jiny modul knihovny. Pomoci SCHENT muze da-
               ny program najit tabulku v jinem modulu,  kam  ma
               ulozit data.
               vstup:  <HL> = adresa retezce, ktery udava  poza-
                              dovane  vstupni  navesti.  Retezec
                              musi koncit binarni nulou.
               vystup: <Z flag> = 1 -  chybna  syntaxe,  nebo  v
                              knihovne neni toto jmeno. Jinak
                       <HL> = adresa jmena v knihovne.  Na  teto
                              adrese je 6 znaku  jmeno  a  dalsi
                              dva znaky adresa, kterou toto jme-
                              no oznacuje (napr. adresa tabulky,
                              ktere jmeno je popsane jako ENT).
               meni se: <AF>, <BC>, <DE>, <HL>

      pntchr - vytisknuti jednoho znaku na tiskarne. Vysvetleni
               tohoto modulu viz oddil 2.4.5 Prace s tiskarnou
               vstup:  <A > = kod tisknuteho znaku
               vystup:
               meni se: <AF>

      invpix - invertuje znak obrazovky
               vstup:  <H > = radek (0-23)
                       <L > = sloupec (0-31)
               vystup:
               meni se: <AF>

      ii    - seznam ilegalnich instrukci, viz oddil 2.7.4.

      Vyuziti modulu SYSMOD muze zpocatku delat urcite tezkosti,
nebot v obdobnych systemech se nevyskytuje. Je to vsak velmi po-
hodlny a silny prostredek, jak dokumentuje nasledujici priklad:

      Chceme vymazat obrazovku a v cyklu nacitat znak,  zobrazit
znak na obrazovku, dokud neni nacten znak !.

      ext cursor, outchar, inkey, clear
start call clear
      ld   hl,0
      ld   (cursor),hl
loop  call inkey
      push af
      call outchr
      pop  af
      cp   '!'
      jr   nz,loop
      ret
      end
-



                              - 24 -



      Po prelozeni (prikazem asm) a spojeni (prikazem lnk)  pro-
gramu, je tento pripraveny k praci. Vidime, ze se nemusime  sta-
rat o adresy danych modulu, a program nemusime modifikovat,  ani
kdyz se system MRS zmeni. Zmeni se totiz odpovidajicim  zpusobem
i modul SYSMOD.
      Kdyz pozdeji chceme odstranit zavislost programu na syste-
mu MRS, muzeme prikazem dis modulu EDI  vlozit  prislusne  casti
kodu programu MRS, jak to bylo jiz drive popsane. Proto je  sou-
casti teto prirucky vypis zdrojoveho programu nekterych  modulu.


2.7 Ladici program

2.7.1 Uvod
      Ladici program se spousti prikazem dbg bez parametru.  Na-
vrhu modulu dbg byla venovana velka  pozornost,  protoze  ladeni
programu je nejcastejsi cinnost programatora. Po spusteni  modul
DBG vypise zakladni stavovou  informaci  do  spodnich  radku  ve
tvaru:

x pcpc instrukce           szapc
aa bbcc ddee hhll xhxl yhyl spsp

kde   x    - status. Je to jeden znak, kterym je uzivatel infor-
             movan o stavu ladiciho programu. Zpravidla je x me-
             zera.
      pcpc - hexadecimalni hodnota registru PC.
      instrukce - vytvori vypis instrukce, ktera se ma  vykonat,
             v symbolickem tvaru. Hodnota adresove casti je  vy-
             jadrena jako hexadecimalni konstanta. Toto pole  je
             na obrazovce vypsane inverzne.
      szapc - indikatory (sign, zero,  auxiliari  cary,  parity,
             carry). Prislusne pismeno znamena, ze  odpovidajici
             indikator je rovny 1, jinak je na dane pozici  znak
             - .
      aa   - hexadecimalni hodnota registru A.
      bbcc - hexadecimalni hodnota registru BC (v tomto poradi).
      ddee - hexadecimalni hodnota registru DE (v tomto poradi).
      hhll - hexadecimalni hodnota registru HL (v tomto poradi).
      xhxl - hexadecimalni hodnota registru IX.
      yhyl - hexadecimalni hodnota registru IY.
      spsp - hexadecimalni hodnota registru SP.

      Zakladni informace se vypisuje vzdy do dialogoveho  radku.
Uzivatel vsak muze zabezpecit opis dialogoveho radku do obrazov-
ky pomoci tlacitka L tak, jak je to popsane dale.

2.7.2 Zadavani hodnoty veliciny pro Ladici program
      Ve vsech pripadech, kdy uzivatel zadava hodnotu nejake ve-
liciny, ma k dispozici tyto moznosti:






-



                              - 25 -



      - decimalni konstanta,
      - hexadecimalni konstanta,
      - navesti,
      - libovolna kombinace uvedenych trech prvku spojenych ope-
        racemi + nebo - s vyjimkou, kdy navesti oznacuje vstupni
        bod v knihovne. V tomto pripade musi byt navesti posled-
        ni clen vyrazu.

      Pritom na syntaxi zapisu jsou kladeny stejne pozadavky ja-
ko pri psani symbolu v modulu EDI. Syntakticky  nespravny  zapis
Ladici program odmitne zvukovym signalem a da moznost opravy.
      Kdyz uzivatel zadal hodnotu jako navesti,  Ladici  program
nejdrive prohledne tabulku symbolu posledne prekladaneho zdrojo-
veho textu a kdyz tam dany symbol nenajde, tak prohleda  tabulku
vstupnich bodu v binarni knihovne. Kdyz se ani tam  dany  symbol
nevyskytuje, zazni zvukovy signal a je mozne chybny symbol opra-
vit. Dana velicina ziska hodnotu prislusneho symbolu, tj. napri-
klad registr PC je mozno nastavit na adresu libovolneho  navesti
v posledne prekladanem modulu nebo na adresu libovolneho  vstup-
niho bodu pomoci jeho symbolickeho jmena bez  toho,  abychom  se
museli starat o ulozeni programu v pameti.
      Na editovani vstupu muzeme vyuzit stejne  prostredky  jako
pri praci s dialogovym radkem.
      Kdyz se odesle prazdny radek, prislusna velicina se nemeni
(viz napr. prikaz pro modifikovani pameti M).

2.7.3 Prikazy pro Ladici program
      Prikazy pro Ladici program jsou jednopismenne. Po  napsani
prislusneho znaku se prikaz ihned vykona, neni tedy mozne  opra-
vit chybny prikaz. Odeslani znaku, kteremu neni predrazeny zadny
prikaz, nevykona nic.
      Nasleduje popis prikazu. Zpusob jejich pouziti viz v oddi-
lu 2.7.4.

      r - prikaz pro nastaveni hodnot registru. Po jeho  napsani
          systen ocekava jmeno registru, tedy jeden ze znaku  p,
          a, b, d, x, s. Kdyz napiseme jiny znak, Ladici program
          reaguje zvukovym signalem a ocekava dalsi  prikaz.  Po
          napsani spravneho jmena registru  se  dialogovy  radek
          vymaze, vypise se:
                rn:
          kde n je jmeno registru, ktery  se  bude  modifikovat.
          Modifikovat muzeme jen 16-ti bitove registry (napr. ne
          pouze C registr, ale vzdy celou dvoujici BC). Kdyz  se
          odesle prazdny radek, hodnota prislusneho registru  se
          nezmeni.
             Pokud uzivatel iniciuje registr P,  automaticky  se
          iniciuje i registr SP na hodnotu, kterou mel pri  spu-
          steni Ladiciho programu.
      i - prikaz pro nastaveni bodu preruseni. Ladici program o-
          cekava hodnotu zadanou dle bodu 2.7.2 a na adresu  da-
          nou touto hodnotou nasadi bod preruseni. Potom do dia-
          logoveho radku vypise:
                n:


-



                              - 26 -



          a ocekava decimalni cislo, ktere udava, kolikrat  musi
          program prejit pres bod preruseni, nez se jeho  prova-
          deni zastavi. Pokud se hodnota nezada, program se pre-
          rusi ihned, jakmile narazi na bod preruseni.  Kdyz  se
          zada napr. hodnota 1000, tak se program prerusi tehdy,
          kdyz se narazi na bod preruseni po 1001. Krome toho se
          pri kazdem pruchodu bodem preruseni  testuje  tlacitko
          BREAK a je-li stisknuto, vykonavani programu  se  pre-
          rusi.

                Pri preruseni se rizeni odevzda Ladicimu progra-
          mu, ktery pokracuje vypisem zakladniho stavu a citanim
          prikazu. Pri vypisu zakladniho stavu je na prvni pozi-
          ci znak 'B' (BREAK), ktery signalizuje, ze program na-
          razil na bod preruseni. Ve vykonavani programu je moz-
          no pokracovat bud po odstraneni bodu preruseni  prika-
          zem O, nebo po vykonani  jedne  instrukce  prikazem  S
          (viz dale). V druhem pripade bod preruseni v  programu
          zustal a kdyz program pri dalsim vykonavani  na  tento
          bod narazi, opet se prerusi jeho  vykonavani.    Pocet
          pruchodu bodem  preruseni  musime  opet  specifikovat,
          protoze zustal nastaveni na hodnotu 0.
                Uzivatel muze  specifikovat  nejvise  jeden  bod
          preruseni. Pri zadani noveho se stary automaticky  vy-
          maze.
                Na bod preruseni program reaguje bez  ohledu  na
          zpusob, jakym byl program spusteny, ale pri  prikzu  G
          jen pro programy, ktere nejsou v pameti ROM.
                Bod preruseni je  realizovany  pomoci  instrukce
          RST 10 s vyuziva systemovou promenno CURCHL na  adrese
          #5C51 (23633). Pro uzivatele je tedy tato promenna pri
          praci s Ladicim progamem nepouzitelna.
      o - prikaz pro odstraneni bodu preruseni.
      g - prikaz na spusteni programu. Registry se  iniciuji  na
          hodnoty, ktere je videt pri vypise zakladniho stavu, a
          program se odstartuje. Pokud program uspesne  probehne
          az po posledni instrukci navratu, rizeni se vrati  La-
          dicimu programu. Registr PC je nastaveny opet na zaca-
          tek programu, tj. program je mozno opet  spustit  pri-
          kazem g.
      CS+G - prikaz ma stejnou funkci jako prikaz g, ale vykona-
          vani programu se prerusi  pri  prvnim  pruchodu  bodem
          preruseni bez ohledu na pocet pruchodu.

****************************************************************
System MRS bezi se zakazanymi prerusenimi a praci  s  klavesnici
vykonava vlastnim modulem. Proto po prikazu g musi uzivatel  sam
vykonat instrukci EI, pokud je to potrebne. Pri navratu do Ladi-
ciho programu se opet preruseni zakaze. Upozornujeme, ze pri po-
volenych prerusenich musi byt registr IY roven #5C3A a  na  tuto
hodnotu ho Ladici program iniciuje.
****************************************************************




-



                              - 27 -



      s - prikaz na vykonani jedne instrukce.  Vykona  se  jedna
          instrukce s hodnotami registru, ktere jsou  videt  pri
          vypisu zakladniho stavu. Po jejim vykonani  se  rizeni
          vrati Ladicimu programu. Vypis zakladniho stavu zacina
          znakem 'S' (STEP), ktery signalizuje krokovaci  rezim.
          Jestlize si uzivatel zabezpeci opis dialogoveho  radku
          do obrazovky (tlacitkem l), ziska podrobny  prehled  o
          vykonavani sveho programu.
                Pred vykonanim se instrukce analyzuje, zda nepo-
          rusuje nekterou uzivatelem stanoveou ochranu (viz  od-
          dil 2.7.4).
                Analyzovani instrukce typu LDIR muze trvat az 20
          s, je to mozne  odstranit  krokovanim  pomoci  klavesy
          CS+S (viz dale).
                Krokovat je mozno i programy v pameti ROM.

   CS+S - Krokovani  programu  s  ignorovanim  ochran  (viz  od-
          dil 2.7.4).
      c - prikaz ma stejnou funkci jako prikaz s, ale  krokovani
          programu se vykona tak, ze za instrukci se  vlozi  bod
          preruseni a instrukce se vykona normalne. Tento inter-
          ni bod preruseni nesouvisi s bodem  preruseni  zadanym
          uzivatelem krome pripadu, ze bod preruseni zadany uzi-
          vatelem je v podprogramu, ktery krokujeme prikazem  c.
          V tomto pripade se vykonani programu prerusi v podpro-
          gramu, ale uz ne po vystupu z neho.
                Vyznam prikazu je predevsim v tom,  ze  odladene
          podprogramy volane instrukci CALL se vykonaji  v  nor-
          malnim rychlem rezimu. Podobne jako pri prikazu i (IN-
          SERT BREAK) se funkce neda pouzit na programy v  pame-
          ti ROM.
                Stejne jako pri krokovani prikazem s se instruk-
          ce pred vykonanim analyzuje.
   CS+C - ma stejnou funkci jako prikaz c, ale instrukce se  vy-
          kona i kdyz analyza zjistila naruseni nektere ochrany.
   CS+J - timto prikazem se instrukce vypisuji, ale  nevykonava-
          ji (v tomto pripade se samozrejme ani nic  nekontrolu-
          je). Registr PC se nastavi na dalsi instrukci.  Prikaz
          CS+J slouzi k  preskoceni  instrukce,  ktera  se  nema
          vykonavat  (napr.  chcemem  ukoncit  predcasne  prikaz
          cyklu, tj. nevykoname instrukci DJNZ,  ale  preskocime
          ji prikazem CS+J).
      t - program se vykona ve sledovacim rezimu.Jedna se vlast-
          ne o opakovany krokovaci rezim. Ladici program  kazdou
          instrukci pred vykonanim interpretuje a zjisti, zda je
          pripustna. Pripustne instrukce vykona, vypise zakladni
          stav do dialogoveho radku, ale bez vypisu instrukce  v
          symbolickem stavu, protoze tuto instrukci ve  sledova-
          cim rezimu nestihne uzivatel v dialogovem radku sledo-
          vat. Jestlize pozada o opis dialogoveho radku do obra-
          zovky (tlacitkem l), zacinaji tyto  radky  znakem  'T'
          (TRACE), ktery signalizuje sledovaci rezim, a obsahuji
          take vypis instrukce v symbolickem tvaru. Popis mozno-
          sti, ktere poskytuje sledovaci rezim viz oddil 2.7.4.


-



                              - 28 -



      n - program se vykona  ve  zrychlenem  sledovacim  rezimu.
          Moznosti tohoto rezimu jsou stejne jako pri prikazu t,
          ale po vykonani instrukce se nevypisuje zakladni stav,
          a tim se znacne urychli vykonavani sledovaneho progra-
          mu.
      w - prikaz umoznuje nastavit pametove okna a okna pro  re-
          gistr PC. Po zadani  prikazu  Ladici  program  ocekava
          znak 'M' (MEMORY), kdyz se  budou  definovat  pametova
          okna, nebo znak 'P' (PROGRAM COUNTER), kdyz  se  budou
          definovat okna pro registr PC.  Kdyz  uzivatel  napise
          jiny znak, Ladici program prejde do zakladniho  stavu,
          jinak vypise hodnoty prislusnych oken - ctyri  dvojice
          hexadecimalnich cisel, kde kazda dvojice definuje jed-
          no okno. Kdyz chce uzivatel zmenit  nektere  z  techto
          osmi cisel, zada jeho poradove cislo pomoci cislice  v
          rozsahu 1-8. Po napsani  jineho  znaku  prejde  Ladici
          program do zakladniho  stavu,  jinak  ocekava  hodnotu
          hranice, ktera se zada podle oddilu  2.7.2.  Po  jejim
          zapsani prejde Ladici program do zakladnih stavu.
            Funkce pametovych oken je vysvetlena v oddilu 2.7.4.
      p - prikaz na zobrazeni pametoveho  okna.  Ladici  program
          vypise do dialogoveho radku text:
                p:
          a ocekava hodnotu dle zasad popsanych v oddilu  2.7.2.
          Potom vypise:
                l:
          a ocekava desitkove cislo. Adresa definuje zacatek pa-
          metoveho okna a cislo l udava jeho delku ve ctvericich
          bytu (tj. pocet radku vypisu pameti). Kdyz se v  libo-
          volnem sledovacim rezimu zmeni obsah tohoto pametoveho
          okna, zobrazi se na obrazovku vypis pameti od dane ad-
          resy l radku (viz tez prikaz d).
      m - prikaz na modifikovani obsahu pameti.  Ladici  program
          vypise do dialogoveho radku text:
                m:
          a ocekava hodnou dle zasad popsanych v  oddilu  2.7.2.
          Potom do dialogoveho radku vypise adresu a obsah 4 by-
          tu od teto adresy vcetne. Vypis je jednak hexadecimal-
          ni, jednak znakovy. Uzivatel  muze  modifikovat  pamet
          zadavanim hexadecimalnich konstant a vyuziva  nasledu-
          jici ridici tlacitka:
          - CS+5 - prechod na predchazejici znak. Mezery,  ktere
                   oddeluji  byty,  se  automaticky  preskakuji.
                   Kdyz je kurzor na prvnim znaku, posune se vy-
                   pis o jeden znak smerem k nizsi adrese.
          - CS+8 - prechod na nasledujici  znak.  Mezery,  ktere
                   oddeluji  byty,  se  automaticky  preskakuji.
                   Kdyz je kurzor na poslednim znaku, posune se
                   vypis o jeden znak smerem k vyssim adresam.
          - CS+1 - zobrazi a modifikuji se predchazejici 4 byty.
          - CS+4 - zobrazi a modifikuji se nasledujici 4 byty.





-



                              - 29 -



          - CS+SS - byty modifikovane na obrazovce se  vrati  do
                   puvodniho stavu. Vseobecne do pameti se zapi-
                   se modifikovana ctverice znaku az tehdy, kdyz
                   se posunou po obrazovce  tak,  ze  nektery  z
                   nich zmizi z obrazovky.
          - ENTER - modifikovane byty se ulozi do pameti a rize-
                   ni se vrati Ladicimu programu,  ktery  vypise
                   zakladni stav.
          - ASCII znak -  representujici  hexadecimalni  cislici
                   (0-9 nebo A-F) prepise cislici, na  ktere  je
                   kurzor. Kurzor se posune o jednu pozici, pri-
                   cemz mezery se preskakuji.
          - mezera - tento znak je akceptovany, jen kdyz je kur-
                   zor na prvnim znaku dvojice. System po nem o-
                   cekava dalsi znak. Jeho kod se ulozi na misto
                   oznacene kurzorem.
          - staceni jineho tlacitka je chyba. Zazni zvukovy sig-
                   nal a nic se neprovede.
          Prikaz m (a prikaz d) nejcasteji vyuziva tu  vlastnost
          vstupu, ze odeslani prazdneho radku  nezmeni  uvedenou
          hodnotu, tj. kdyz napr.  prikazem  m:#4000  prohlizime
          pamet od adresy #4000, tak kdyz  nejblizsi  prikaz  m:
          ukoncime hned tlacitkem ENTER, opet se  zobrazi  pamet
          od adresz #4000.
      d - prikaz na zobrazeni pameti. System vypise do  dialogo-
          veho radku
                d:
          a zobrazi na obrazovku hexadecimalni a  znakovy  vypis
          64 bytu od adresy, kterou zadal uzivatel. Kdyz odeslal
          prazdny radek, tak se pouzije naposledy zadana adresa.
          Vypis ridi uzivatel temito tlacitkz:
                CS+6 - zobrazi se nasledujicich 64 bytu,
                CS+7 - zobrazi se predchazejicich 64 bytu,
                a    - specifikuje znakovy retezec (viz dale),
                h    - specifikuje retezec hexadecimalnich
                       konstant (viz dale),
                ENTER - rizeni se vrati Ladicimu programu.
          Jine klavesy jsou povazovany za chybne.
             Kdyz uzivatel pouzije prikaz a resp. h, system  vy-
          pise do dialogoveho radku
                a:    resp.  h:
          a ocekava retezec znaku resp.  hexadec.  konstant. Pri
          jejich zadani je mozne opravovat chyby tlacitkem CS+0,
          retezec se ukonci tlacitkem ENTER. Pri chybne  zadanem
          retezci zazni zvukovy signal.
             Editor vyhleda retezec v pameti a udela jeho  vypis
          na obrazovku. Neni-li dany  retezec  v  pameti,  zazni
          zvukovy signal. Kdyz se pri hledani retezce zjisti ko-
          nec pameti, system automaticky pokracuje od zacatku.
             Kdyz se zada prazdny retezec, system  vyhleda  novy
          vyskyt drive zadaneho retezce. Pokud jeste nebyl rete-
          zec zadany,hleda se vyskyt prvniho bytu vypisu pameti.
      a - prikaz na zpetny preklad s vypisem  na  obrazovku.  Do
          dialogoveho radku se vypise text
                a:

-



                              - 30 -



          a na obrazovku se zobrazi zpetny preklad 21  radku  od
          adresy, kterou  zada  uzivatel.  Opetovnym  stisknutim
          tlacitka a se vypise vzdy dalsi radek zpetneho prekla-
          du. Stisknutim tlacitka ENTER se system vrati  do  za-
          kladniho stavu.
      x - toto tlacitko slouzi jako  prepinac.  Jeho  stisknutim
          vymenime sadu registru za registry  alternativni,  tj.
          vykoname instrukci EXX i instrukci EX AF,AF'.
      l - timto prikazem urci uzivatel, kolik radku se ma zobra-
          zit na obrazovce. System do dialogoveho radku vypise
                n:
          a ocekava pocet radku. Pred vypisem  zakladniho  stavu
          se potom posouva obrazovka o 2 radky nahoru, a tim  se
          predchazejici stavovy radek opise do  obrazovky,  pri-
          cemz se na to vyuzije n dvojradku obrazovky. Kdyz n=0,
          pouziva se jen dialogovy radek, ale v rezimu T se  vy-
          pisuje i instrukce ve zdrojovem tvaru. Kdyz  se  misto
          cisla stiskne ENTER, tak se tato vlastnost zrusi.
      q - rizeni se preda systemu MRS.


2.7.4 Ladeni programu
      Sledovaci rezim (prikazy t nebo n) je velmi silny prostre-
dek na ladeni programu. Pri jeho navrhu byl sledovany hlavni cil
- uzivatel ve sledovacim rezimu nesmi  ztratit  vladu  nad  svym
programem. Kontrolu nad programem muze ztratit trojim zpusebem:
      - prepsanim pameti,
      - vykonanim zakazane instrukce,
      - zacyklenim programu.
   Ladici program tedy musi poskytnout uzivateli moznost chranit
libovolnou cast pameti pred prepsanim, filtrovat nektere instru-
kce a umoznit preruseni programu. Toto lze dosahnout nasledovne:
      - ve sledovacim rezimu neni mozne prepsat  adresy  pameti,
        ktere se nachazeji v nekterem pametovem okne. Kdyz  tedy
        mame nektere pametove okno nastavene jako interval  aaaa
        bbbb, tak adresy od aaaa do bbbb vcetne  neni  mozne  ve
        sledovacim rezimu prepsat. Pri pokusu o jejich modifiko-
        vani se rizeni vrati Ladicimu programu, ktery vypise za-
        kladni stav. Tento vypis zacina znakem 'M'  (MEMORY),  a
        tim signalizuje, ze doslo k pokusu modifikovat chranenou
        pamet.
           Kdyz uzivatel spustil program pomoci prikazu  Editoru
        ald, je prvni pametove okno iniciovano tak, ze je  chra-
        neny zdrojovy text uzivatele.
      - v zakladnim modulu knihovny je 16 bytu, pomoci nichz  u-
        zivatel muze definovat ilegalni instrukce. Kdyz pri  vy-
        konani programu prikazem s, c, t nebo n  Ladici  program
        zjisti, ze se ma vykonat instrukce,  ktera  je  v  tomto
        seznamu, vykonavani programu se prerusi a do dialogoveho
        radku se vypose zakladni stav, pricemz se  nastavi  sta-
        tus 'I' (ILLEGAL).
           Uvedenych 16 bytu je pod vstupnim bodem ii, tj.  uzi-
        vatel definuje ilegalni instrukce normalne prikazem  mo-
        dify (m:ii), seznam ilegalnich instrukci musi byt zakon-
        cen instrukci NOP (00), ktera tudiz nemuze byt ilegalni.

-



                              - 31 -



           Instrukce se zadavaji jednim  bytem  (operacnim  zna-
        kem), krome instrukci s prefixem #ED, ktere se  zadavaji
        dvema byty (tj. #ED a jeste jeden  byt).  Jako  ilegalni
        instrukci muzeme definovat celou tridu instrukci s  pre-
        fixem #CB (rotace, posuny, bitove  operace),  instrukce,
        ktere pracuji s registrem IX (prefix #DD), ale  i  napr.
        konkretni instrukci LDIR (byty #ED, #B0) nebo  instrukci
        EXX (byt #D9).
           V zakladnim modulu SYSMOD je jako ilegalni definovana
        instrukce HALT (#76). Instrukce definovane jako ilegalni
        je mozno vykonat prikazy CS+S nebo CS+C.
           Krome ilegalnich instrukci definovanych uzivatelem se
        stejnym zpusobem vyhodnocuji byty, jejichz kombinace ne-
        ma pro procesor Z80 vyznam (napr. byty #DD, #FD). V tom-
        to pripade je tez status ve vypisu Ladiciho programu 'I'
        (ILLEGAL), ale krokovanim s vypustenim kontroly  (prika-
        zy CS+S nebo CS+C) se takovato ilegalni instrukce  nevy-
        kona, ale preskoci se jeji prvni byt.
      - pred vykonanim kazde instrukce v sledovacim rezimu zjis-
        tuje Ladici program,zda nebylo stisknuto tlacitko BREAK.
        Pokud bylo, vykonavani programu se prerusi a Ladici pro-
        gram prejde do zakladniho stavu. Timto tlacitkem je moz-
        no prerusit program behem vykonavani a  pokracovat  dale
        krokovanim nebo spustit normalne program prikazem g.
      - obdobnou funkci jako pametove okno maji i okna  pro  re-
        gistr PC. Jejich vyuziti neni tak kriticke, jako vyuziti
        pametovych oken, nebot Ladici program muze sledovat nebo
        krokovat i programy v pameti ROM, tzn. ze i kdyz ma  re-
        gistr PC jakoukoliv hodnotu, neznamena to ztratu kontro-
        ly na programem. I tak je pouziti oken pro PC  uzitecne,
        uzivatel pomoci nich muze realizovat dalsi body, ba  do-
        konce cele oblasti preruseni. Na  rozdil  od  pametovych
        oken, ktere zakazuji vykonani instrukce, okna pro  regi-
        str PC je naopak povoluji, tzn. ze instrukce  se  vykona
        jen tehdy, kdyz hodnota registru PC padne aspon do  jed-
        noho okna. Pri spusteni programu je prvni okno pro regi-
        str PC iniciovan na interval 0000-FFFF, tj.  registr  PC
        muze nabyvat jakekoliv hodnoty.


















-



                              - 32 -



Kapitola 3 -  ZAVER

      System MRS byl vyvinuty na Ustavu  aplikovane  kybernetiky
a jeho vlastnikem je tento ustav. Pro pocitace  ZX  Spectrum  je
volne pristupny, ale distribuovat je povelene jen verzi oficial-
ne schvalenou a jen za podminek uvedenych v  Copyright  (program
zadarmo).
      Stejne tak je zakazano prenaset program  na  jine  systemy
bez souhlasu Ustavu aplikovanej kybernetiky. Autori MRS jsou  o-
chotni prenest programove vybaveni do jineho  technickeho  pros-
tredi za predpokladu, ze dany pocitac bude zapujcen na Ustav ap-
likovanej kybernetiky, a ze je moznost prenosu souboru do tohoto
pocitace, at uz pres seriovy nebo paralelni interface, nebo  ne-
jake nosne medium.
      Jeste mi pripada mila pozornost vzpomenout vsech, kteri se
na tvorbe systemu podileli, nebot jinak z toho nic nemaji.
      Ivan Jedlicka navrhl system a realizoval moduly  EDI,  LNK
a LIB.
      Igor Titka realizoval modul DBG.
      Milan Tvarozek realizoval modul ASM a ty casti modulu EDI,
ktere souvisi s prekladacem (vytvareni zhusteneho formatu  zdro-
joveho textu a jejich prevod do textoveho tvaru,zpetny preklad).
      Ivan Fedorko realizoval modul prace s klavesnici.
      Peter Ondris a Martin Prikryl realizovali paralelni inter-
face pro ZX Spectrum, a tim vlastne umoznili, aby se MRS do  po-
citace vubec dostal.
      Miroslav Adamy nasel v pracovni verzi vic chyb nez  kdoko-
liv jiny.
      Robert Vasicek dal uzivatelske prirucce jeji pekny tvar.
      No a samozrejme i vedeni Ustavu  aplikovanej  kybernetiky,
ktere celou praci umoznilo.
      Pripadne dalsi informace o systemu a i o dalsich  realizo-
vanych programech muze podat

                          RNDr. Ivan Jedlicka
                          Ustav aplikovanej kybernetiky
                          Hanulova 5/A
                          Bratislava
                          8 4 4 1 6
