MONSnav.3                                            TASWORD 2
7080  2A0072          LD   HL,(#7200)       ;CAST 1
7083  ED5B0272        LD   DE,(#7202)
7087  CD0071          CALL Mult
708A  7C              LD   A,H
708B  CD1D71          CALL Aout
708E  7D              LD   A,L
708F  CD1D71          CALL Aout
7092  210000          LD   HL,0
.
.
.
7100  AF       Mult   XOR  A                ;CAST 2
7101  ED52            SBC  HL,DE
7103  19              ADD  HL,DE
7104  3001            JR   NC,Mu1
7106  EB              EX   DE,HL
7107  B2       Mu1    OR   D
7108  37              SCF
7109  C0              RET  NZ
710A  B3              OR   E
710B  5A              LD   E,D
710C  2007            JR   NZ,Mu4
710E  EB              EX   DE,HL
710F  C9              RET
7110  EB       Mu2    EX   DE,HL
7111  19              ADD  HL,DE
7112  EB              EX   DE,HL
7113  29       Mu3    ADD  HL,HL
7114  D8              RET  C
7115  1F       Mu4    RRA
7116  30FB            JR   NC,Mu3
7118  B7              OR   A
7119  20F5            JR   NZ,Mu2
711B  19              ADD  HL,DE
711C  C9              RET
711D  F5       Aout   PUSH AF               ;CAST 3
711E  0F              RRCA
711F  0F              RRCA
7120  0F              RRCA
7121  0F              RRCA
7122  CD2671          CALL Nibble
7125  F1              POP  AF
7126  E60F     Nibble AND  %1111
7128  C690            ADD  A,#90
712A  27              DAA
712B  CE40            ADC  A,#40
712D  27              DAA
712E  FD213A5C        LD   IY,#5C3A
7132  D7              RST  #10
7133  C9              RET
.
.
7200  1B2A            DEFW 10779
7202  0300            DEFW 3
Chceme  prosetrit  vyseuvedeny  program,  abychom  zjistili  jak
pracuje, nebo zda vubec pracuje. To muzeme  provest  nasledujici
radou  prikazu  -  nezapomente,  ze  je  to pouze  jeden  zpusob
krokovani v programu a nemusi byt nezbytne  ucinny,  ale  slouzi
jako ukazka krokovani.
M:7080 RETURN Nastavi pametovy ukazatel na &7080
7080          nastavi citac instrukci na &7080
':'           krok
':'           krok
':'           sledujeme volani (CALL)
M:7115 RETURN vynechame pripravu cisel
W             nastavi bod preruseni (BP)
'+'           pokracuje provadeni od &7100 do BP
':'           krok
':'           krok
':'           krok
':'           krok
':'           krok
':'           krok
':'           krok
':'           navrat z podprogramu pro nasobeni
':'           krok
':'           sledujeme volani (CALL)
M:7128 RETRN  nastavi pametovy ukazatel na zajimavou cast
W             nastavi bod preruseni (BP)
'+'           pokracuje v provadeni od &711D do BP
':'           krok
':'           krok
':'           krok
':'           krok
;             podivame se na adresu navratu
W             nastavime na ni bod preruseni
'+'           a pokracujeme
':'           krok
;             navrat z podprogramu Aout
W
'+'
':'           krok
':'           provedeni CALL na Aout
Projdete si prosim uvedeny priklad. Nejdrive  zapiste  instrukce
programu (viz 'zmeny obsahu pameti') nebo pouzijte EDTASM a  pak
provadejte  vyseuvedene  prikazy.  Zjistite,  ze   priklad    je
neobycejne cenny pro porozumeni, jak zjistovat chod programu.
" " "     ( nepracuje uplne )
Prikaz je zcela stejny jako prikaz 'L', krome  toho,  ze  vystup
smeruje na tiskarnu misto  na  obrazovku.  Nezpomente  na  konci
stranky stisknout CTRL X k  navratu  na  celni  panel,  nebo  si
libovolnou klavesou vyzadat dalsi stranku.
 Zmeny obsahu pameti
Obsah adresy, udane pametovym ukazatelem muzeme zmenit  vlozenim
hexadecimalniho cisla, za kterym nasleduje zakoncovaci znak (viz
kapitola 1).
Dve hexadecimalni cislice nejnizzsiho radu (pokud  byla  vlozena
pouze jedna, pak se doplni  zleva  nulou),  se  vlozi  na  misto
adresovane beznou hodnotou adresoveho ukazatele a pak se  prikaz
provede  pokud  byl  pouzit  jako  zakoncovaci  znak.   Neni-li
zakoncovaci znak platnym prikazem, je ignorovan.
Priklad:
F2 RETURN         Vlozi se &F2 a pametovy ukazatel postoupi o 1
123 CTRL ':'      Vlozi se &23 a pametovy ukazatel postoupi o 8
EM:E00_           Vlozi se #0E na pozici pametoveho ukazatele  a
                  pak je pametovy ukazatel aktualizovan na #E00.
                  Vsimnete si, ze mezera ('_') zde byla pouzita
                  pro ukonceni prikazu 'M'.
2A5D_             Vlozi se &5D a pametovy ukazatel  se  nezmeni,
                  jelikoz ukoncovaci znak je mezera a ne prikaz.
Zmeny obsahu registru
Zapiseme-li jako odpoved na naznak  '>'  hexadecimalni  cislo  a
ukoncime je znakem '.', pak dane cislo bude vlozeno do  registru
Z80, bezne adresovaneho ukazatelem '-->'. Pri vstupu do  MONS  3
ukazuje  -->  na  citac  instrukci  a  tak  pouziti  '.'    jako
ukoncovaciho znaku hexadecimalniho cisla,  zmeni  v  prvni  rade
obsah citace instrukci.  Kdybyste  chteli  zmenit  obsah  jineho
registru, pak pouzijete samotny znak '.' a ukazatel --> se  bude
cyklicky posunovat od registru PC k registru AF. Povsimnete  si,
ze  neni  mozne  adresovat  (a  tudiz  zmenit)   ani    ukazatel
zasobnikove pameti (SP) ani registry IR.
Priklad:
Zaciname s ukazatelem v pozici PC.
.      adresujeme IY
.           "     IX
0.     nastavime IX na hodnotu 0
.      adresujeme HL
2AFF   nastavime HL na hodnotu &2AFF
.      adresujeme DE
.           "     BC
E2A7.  nastavime BC na hodnotu &E2A7
.      adresujeme AF
FF00.  nastavime A na hodnotu &FF a vynulujeme indikatory
.      adresujeme PC
8000.  nastavime PC na hodnotu &8000
Nezapomente,  ze  '.'  lze  rovnez  pouzit  ke   zmene    obsahu
alternativnich  registru  -  pokud  jsou  zobrazeny.  Pro  zmenu
zobrazeni souboru registru pouzijte prikaz 'Q'.
PRILOHA - PRIKLAD ZOBRAZENI CELNIHO PANELU
   710C  2007      JR   NZ,`7115
--> PC 710C   20 07 EB C9 EB 19 EB
    SP D0AF   8A 70 06 03 0A 03 0D
    IY CF6A   0D 11 0C 0F 09 18 18
    IX D09F   04 03 04 00 00 00 1B
    HL 2A1B   0F FE 29 28 02 CF 02
    DE 0000   F3 AF 11 FF FF C3 CB
    BC 0004   FF C3 CB 11 2A 5D 5C
    AF 0304       V
    IR 3F7C
   7100  AF   7108  37   7110  EB
   7101  ED   7109  C0   7111  19
   7102  52   710A  B3   7112  EB
   7103  19   710B  5A   7113  29
   7104  30  >710C  20<  7114  D8
   7105  01   710D  07   7115  1F
   7106  EB   710E  EB   7116  30
   7107  B2   710F  C9   7117  FB
  >
Zde je uvedeno pomerne typicke zobrazeni celniho panelu  -  toto
zobrazeni  ziskate  pri  krokovani  v  podprogramu  Mult    (viz
rozsireny priklad na prikaz ':'.
Prvnich devet radku zobrazuje registry  Z80;  nejprve  je  ueden
nazev registru, pak (pro PC - BC) okamzita  hodnota  registru  a
konecne obsah sedmi  pametovych  mist  pameti  pocinaje  adresou
ulozenou v registru. Registr indikatoru je dekodovan, aby ukazal
okamzite nastaveni indikaoru v  poradi  jak  jsou  usporadany  v
registru - ma-li registr indikatoru hodnotu &FF,
pak zobrazeni bude vypadat takto:
                         00FF   SZ HVNC
Coz   znamena,    ze    jsou    nastaveny    indikatory    SIGN,
ZERO,HALFCARRY,PARITY/OWERFLOW,ADD/SUBTRACT A CARRY.
Ukazatel --> oznacuje bezne adresovany registr; viz kapitola 2 -
 Zmeny obsahu registru.
Pod zobrazenim registru nasleduje zobrazeni 24 bytu pameti a  je
usporadano takto:
        adresa       obsah      adresa    obsah    . . .
      2 byty       1 byte     2 byty    1 byte
   tj.4 znaky      2 znaky    4 znaky   2 znaky
Zobrazeni    je    vystredeno    kolem    pozice      pametoveho
ukazatele, oznaceneho '> <'.
Prikaz se zapisuje na spodni radek obrazovky za systemovy naznak
'>'.
Zobrazeni se aktualizuje po provedeni kazdeho prikazu.
 Prikazy  pridane specielne pro SORD m-5:
 vlnovka (ctvrta klavesa zprava v horni rade) - sesouhlasi pame-
            tovy ukazatel M s PC
 #        - aritmeticke vypocty v HEXU
 CTRL Y   - prepnuti do druhe obrazovy
 V        - VERIFY zaznamu MONS
 X        - VSAVE pameti VRAM
 Z        - nacteni zaznamu ZX SPECTRUM do VRAM - nutno zadat  0
            (nefunguje uplne)
 R        - preadresovani a presun programu ve strojovem kodu
----------------------------------------------------------------
Poznámka pro SORDisty:
V klubové knihovně programů jsou k dispozici tyto programy MONS:
 1. MONSvA000.CM
 2. MONSvE000.CM
 3. STARTMONS.BF, MONS 3.VM, LOADMONS.CM
První dva se startují CALL &A000 případně CALL &E000 a nelze je
přemisťovat. Jsou také zbaveny drobných nectností kterými trpí
třetí uvedený MONS, který je ale možné libovolně přemisťovat.