                    A SZÖVEGSZERKESZTŐ 
                    ------------------- 
  A szövegszerkesztőbe a monitorból az  E  paranccsal lép- 
hetünk be. A monitorba visszalépni az ESC-pel lehet. 
  A szerkesztőbe csak a saját maga  által előállított szö- 
vegfile-ok tölthetők be; ezek a  file-ok  más  szövegszer- 
kesztőben nem használhatók, nem nyomtathatók. (Ennek az az 
oka, hogy a sorokban egymás után álló szóközöket egy byte- 
on tárolja. így tömör, de máshol nem használható adatszer- 
kezet jön létre.) 
  Egy sorban  max. 58 karakter  állhat. A szerkesztő  üres 
sort nem fogad el, ezért  minden sorban  legalább egy, nem 
szóköz karakternek kell állnia. 
  A szerkesztett (módosított) sor akkor kerül be a memóri- 
ába, amikor a sorból kilépünk, ezért a RETURN gomb haszná- 
lata nem kötelező. A sor  memóriába  kerülését  az  jelzi, 
hogy sorszámot kap. A sorszámozás,  átsorszámozás  (sorbe- 
szúráskor, - törléskor) automatikus. A keretszín megválto- 
zása a memória betelését jelzi. Ilyenkor csak a túlcsordu- 
ló sor törlése után módosíthatunk a szövegben. 
   A képernyő alján és tetején scrollozás történik. 
   A BASIC editorban megszokott funkciók itt is  működnek, 
vagyis az INS,  DEL, SHIFT DEL, CTRL I, CTRL K, CTRL N,  a 
CTRL Y és a cursormozgatás. 
 A RETURN a következő sor 8. (mnemonik) pozíciójára  ugrik 
és C cursort állít be. 
  
            A kibővített cursor-funkciók: 
            ----------------------------- 
jobbra / balra           : A a cursor a  következő  karak- 
                           terre lép,  szóközök  esetén  a 
                           következő tabulátor  pozícióra. 
SHIFT fel                : A képernyő  első  sorára állás. 
SHIFT le                 : A képernyő utolsó sorára állás. 
SHIFT balra              : Az 1. pozícióra állás. 
SHIFT jobbra             : Sorvégre állás(a következő üres 
                           pozícióra). 
CTRL  fel   ( = CTRL E ) : Lapozás visszafelé. 
CTRL  le    ( = CTRL X ) : Lapozás előre. 
ALT   fel                : A legelső sorra állás. 
ALT   le                 : A legutolsó sorra állás. 
  
                    Sorra állító parancsok: 
                    ----------------------- 
CTRL  L   : Sorszámot kérdez, majd rááll a megadott sorra. 
CTRL  F   : Bekéri a keresendő szót, majd a cursor sorától 
            kezd keresni.Ha megtalálta rááll az adott sor- 
            ra, egyébként csipog. A keresendő szó nem kez- 
            dődhet és végződhet szóközzel! 
CTRL  R   : Folytatólagos keresés a cursor sorától. 
  
                 Blokk kezelő utasítások: 
                 ------------------------ 
  Lehetőség van a szöveg két blokkjelző (négy cursor négy- 
zet) közé zárt  soraival  műveleteket  végezni.  Egyszerre 
csak egy kijelölt blokk létezhet. 
  
CTRL  @   : Blokkjelző beszúrása. 
           (a blokkjelzőt az őt tartalmazó  sorral  együtt 
           lehet törölni.) 
CTRL  A   : Az  első  blokkjelzőre  állás,  ha az létezik. 
CTRL  Z   : A második blokkjelzőre  állás,  ha az létezik. 
CTRL  -   : A  kijelölt  blokk  törlése  a  blokkjelzőkkel 
            együtt. 
CTRL  C   : A kijelölt blokk bemásolása az adott  sor elé. 
            A blokkon belülre másolás tiltott! 
CTRL  O   : A kijelölt blokk kinyomtatása  sorszámok  nél- 
            kül. Ha a nyomtató  helyén  pl. magnó  van, és 
            van írásra nyitott pufferelt  file, akkor  ha- 
            gyományos szövegszerkesztőbe beolvasható állo- 
            mányt készíthetünk. 
  
                 Egyéb parancsok: 
                 ---------------- 
CTRL  B   : Hardcopy a képernyőtartalomról. 
CTRL  U   : UNDO. (A sor eredeti tartalmának visszaállítá- 
            sa, módosítás után,ha a sorból még nem léptünk 
            ki.) 
          :  A címkemező (1-8. kar.) törlése, majd  a  kö- 
            vetkező sorra állás. 
CTRL  W   : A teljes szöveg törlése,  de csak a CTRL W há- 
            romszori lenyomása után. 
  
  
        A RENDSZER MEMÓRIAKIOSZTÁSA, RENDSZERPARANCSOK 
        ---------------------------------------------- 
   A MNEMONIC IV. programnak két változata  van, a  BOTTOM 
a 19EFH-5BFFH, a TOP pedig 0BE21H-0FFFFH címekre töltődik. 
(A további leírás a BOTTOM változatra  vonatkozik, a  TOP- 
hoz tartozó eltéréseket "[]" zárójelek között közöljük.) 
   A program I/O munkaterületnek a BASIC  rendszerváltozók 
területét használja fel (pl.: BUFFER, COMMAND,stb.). 
    A  maradék memória három részre osztódik fel: 
--- Kódpuffer: 5C00H-7FFFH [19EFH-39EEH]. 
    Alapállapotban az  assembler ide helyezi a lefordított 
    tárgykódot,  és a monitor is itt használható. 
--- Szövegpuffer: 8000H-0DFFFH [39EFH-99EEH]. 
    A szövegszerkesztő tartalma található itt. 
--- Szimbólumtábla:0E000H-0FFFFH [99EFH-0BE20H]. 
    A fordítás során értéket kapott címkék táblázata. 
  
    A program BASIC ROM-ot nem használ,  ezért  a 2-3. lap 
ó1-2. lapÁ szabadon lapozható. 
    A szövegszerkesztőhöz és a  szimbólumtáblához  tartozó 
RAM lapok be- és kilapozása automatikus. 
  
    Mint látható,  a program bejelentkezés után 64k RAM-ot 
tételez  fel, valamint fix  pufferkiosztást  vezet  be.  A 
program nem helyezhető át, de a pufferkiosztás  igen. Erre 
szolgál a V parancs, amellyel pl. 32k-s gépen is  használ- 
ható a program. ótermészetesen csak a BOTTOM verzió!  
 V  n,nn  :  az n-edik  rendszerváltozó értékét  nn-re ál- 
--------    lítja, a puffer eredeti tartalma elveszik! 
              Figyelni  kell a  helyes paraméterezésre, az 
            egymást átfedő pufferkiosztás a rendszer lefa- 
            gyását okozhatja! 
 V  n     : kiírja a változó aktuális értékét. 
  
     A 10 rendszerváltozóból az első 7 írható a V parancs- 
   csal, a többi 3 csak olvasható. 
  
   n értékei: 
   ---------- 
      0:    A kódpuffer kezdőcíme, 
      1:    a kódpuffer vége, 
      2:    a szövegpuffer kezdete, 
      3:    a szövegpuffer vége, 
      4:    a szimbólumtábla kezdete, 
      5:    a szimbólumtábla vége, 
      6:    bit 0=1 :  szimbolikus debugger,  disassembler 
             bekapcsolása. (Ha egy utasítás visszafordítá- 
             sakor annak  címe, vagy  valamely  paramétere 
             egy létező szimbólum értékével  azonos, akkor 
             a számérték helyett a talált szimbólum  nevét 
             írja ki a disassemblált sorban.) 
            bit 1= bit2= 1:  A szimbólumtábla rögzítése az 
             assembler fordítás előtt. (ld. később részle- 
             tesen!) 
            bit 3=1 :  lépésenkénti  nyomkövetéskor  a re- 
             gisztertükör mindig a képernyő tetejére  író- 
             dik, egyébként az adott cursorpozíció sorába. 
            bit 4 - bit 15 : makrobővítés céljára,  jelen- 
             leg nem használt. 
      7     az utoljára kiadott ORG értéke. (Csak olvasha- 
            tó!) 
      8  a) az assembler fordítás után az első szabad byte 
            fizikai címét veszi fel, 
         b) memória terület beolvasása után (ld.  R utasí- 
            tás) a beolvasott file utáni első byte fizikai 
            címét tartalmazza a valtozó. (Csak olvasható!) 
      9     a címzési eltolás értéke. (Csak olvasható!) 
  
    A kódpuffer  címzése eléggé speciális.  Alaphelyzetben 
ugyanis csak  a kódpuffer tartalmát  írhatjuk-olvashatjuk, 
így elkerülhető a többi  puffer és a  MNEMONIC IV  program 
felülírása. A pufferen kívülre  címzésre a "Kifutás a tár- 
ból!" hibaüzenet figyelmeztet. 
   A kódpufferben lehetőség van  címzési eltolás használa- 
tára, erre szolgál az ORG nn  utasítás. 
                     -------- 
   Lássunk erre egy példát: 
   Betöltünk a kódpuffer  elejére egy gépi kódú programot. 
így a program fizikai kezdőcíme 5C00H. A  programról  tud- 
juk, hogy valójában a 19EFH címen kezdődik, ezért  kiadjuk 
az ORG 19EFH parancsot. A monitor ezután már a 19EFH logi- 
kai címen látja a kódpuffert. Ezután pl. a disassemblálás, 
dumpolás címhelyesn történik. Természetesen ez  a  program 
nem indítható el, mert a fizikai és a logikai címe  külön- 
böző. 
   Az ORG nn utasítás  a monitorban  és az assemblerben is 
használható. Assembler fordítás  során csak egy  ORG lehet 
a programban, annak is az elején. Az  ORG nn  kiadása után 
a kódpuffer kezdetét az nn logikai címen látjuk. 
  
ENT vagy ENT  $        A teljes 64K memória elérését teszi 
---      ------        lehetővé, a címzési  eltolást  MEG- 
                       SZÜNTETI. Az assemblerben és a  mo- 
                       nitorban is használható. 
  
            A BASIC-be a 
  
 Q                     utasítással léphetünk ki.  A  kilé- 
---                    péskor lezáródnak a nyitott file-ok 
                       és meleg reset történik. 
                       A BASIC az 5C00H-0BFFFH-ig  [19EFH- 
                       0BE20H-ig] terjedő  memóriát  kapja 
                       vissza. Az előzőleg az erre a terü- 
                       letre lerakott adatok megsérülnek! 
  
            A MNEMONIC IV.-be az  EXT 0 utasítással térhe- 
            tünk vissza: 
  
 EXT 0                 A felhasználói  regisztertükör tör- 
                       lődik, a puffertartalmak  megmarad- 
                       nak. 
 EXT 0,11111           A  felhasználói  regisztertükör,  a 
                       törésponttáblázat, a  szimbólumtáb- 
                       la,  a  szövegszerkesztő  tartalma, 
                       valamint a COM_DEV a REG_DEV  és  a 
                       BRK_DEV változók tartalma is törlő- 
                       dik. A V paranccsal definiált  puf- 
                       ferkiosztás megmarad. 
  
 EXT 0,22222           Hidegindítás; azonos a program újra 
                       betöltésével. 
  
  
                 SZINTAXIS,RÖVIDíTÉSEK 
                 --------------------- 
   A monitor és az assembler max. 58 karakterből  álló so- 
rokat fogad el. 
         A sorok felépítése: 
         ------------------- 
CíMKEMEZŐ:             Az utasításhoz rendelt címke helye, 
                       ha az létezik.  A  címke  a  jobbra 
                       mellette  álló  assembler  utasítás 
                       memóriacímét veszi fel a  fordítás- 
                       kor, értéke később nem változtatha- 
                       tó meg. A címkenévnek a sor  elején 
                       kell kezdődnie, előtte  szóköz  nem 
                       állhat. A szimbólumnév  max. 7  ka- 
                       rakter hosszú lehet, melyben betűk, 
                       ékezetes betűk és számok  lehetnek, 
                       de az első karakter nem lehet szám- 
                       jegy! A címkenév nem  lehet  azonos 
                       regiszternévvel, vagy  feltételszó- 
                       val (C, NC, Z, NZ, PO, PE, P, M)! A 
                       címkenévben a kis- és nagybetűk kü- 
                       lönbözőek, ezért ugyanaz a név kis- 
                       vagy nagybetűvel írva, más-más cím- 
                       két jelöl. 
                         A monitorban címke nem  definiál- 
                       ható, de a már definiáltakra hivat- 
                       kozhatunk. 
  
UTASíTÁS:              Z80 utasítás, monitorparancs,  vagy 
                       assembler direktíva neve. Az utasí- 
                       tásnévben  a  kisbetűk   használata 
                       tiltott. Az assembler forrásszöveg- 
                       ben az utasítások előtt (a címke és 
                       az utasítás  között)  legalább  egy 
                       szóköznek kell állnia. A monitorban 
                       az utasítás előtti szóköz nem köte- 
                       lező, de megenegedett. 
  
PARAMÉTEREK:           Az utasításhoz tartozó első paramé- 
                       tert az utasítástól  egy, vagy több 
                       szóköznek kell elválasztania.  Egy- 
                       mástól  a paramétereket  vessző vá- 
                       lasztja el. A paraméterben álló re- 
                       giszternevek és feltételszavak csak 
                       nagybetűkkel írhatók! 
  
MEGJEGYZÉS:            A pontosvessző után álló feliratok- 
                       kal a fordító és a monitor nem fog- 
                       lalkozik,  azokat megjegyzésnek te- 
                       kinti. 
                         A csak megjegyzést tartalmazó sor 
                       használata megengedett. 
  
        íme egy példa: 
ALFA    CALL    NZ,BÉTA;         feltételes szubrutinhívás 
  
  
 Számkonstansok használata, és az alapértelmezés szerinti 
                 számrendszer fogalma 
---------------------------------------------------------- 
  
  A Mnemonic IV rendszer négyféle számrendszert ismer fel: 
 1.) binárist        (2-es alapút):  xxxb, xxxB vagy %xxx; 
 2.) oktálist        (8-as alapút):  xxxo vagy xxxO; 
 3.) decimálist      (10-es alapút): xxxd, xxxD vagy .xxx; 
 4.) hexadecimálist  (16-os alapút): xxxh, xxxH vagy #xxx; 
   Az "xxx" a számjegyeket jelöli. Ha a  számjegyek előtt, 
vagy után nincs módosítójel, akkor a szám az  alapértelme- 
zett számrendszer szerint értékelődik ki! 
   A MONITOR alapértelmezett számrendszere  a  HEXADECIMÁ- 
LIS, az ASSEMBLER FORDíTÉ DECIMÁLIS! Alapértelmezett  de- 
cimális számrendszernél minden számot decimálisan,  egyéb- 
ként hexadecimálisan ír ki a rendszer. 
   A hexadecimális számok számjegyeket, és  "abcdef"  vagy 
"ABCDEF" betűket tartalmazhatnak, és # jellel, vagy  szám- 
jeggyel kell kezdődniük! 
   így a #ffbc, a 0FFBCH és a 0ffbc alak helyes,az FFBC és 
az ffbch pedig hibás! 
   Alapértelmezett hexadecimális  számrendszer  esetén  az 
xxxb, xxxB, xxxd és xxxD alak természetesen  hexadecimális 
számot jelöl! 
  
            Rövidítések: 
            ------------ 
   nn,mm    : 16 bites aritmetikai kifejezés. 
   n,m      : 8 bites aritmetikai kifejezés. 
  Az aritmetikai kifejezések egymástól  műveleti  jelekkel 
elválasztott, max. 16 bites tagokból állhatnak. 
  A kiértékelt kifejezés értéke 16 bitesre csonkítódik.  A 
tagok és műveleti jelek közötti felesleges szóköz tiltott! 
  
                           A lehetséges tagok: 
                           ------------------- 
   $            :Az aktuális memóriamutató értéke. 
  Szimbólumnév  :az első fordítási menetben értéket kapott 
                 szimbólum (címke, EQU konstans), vagy SET 
                 változó értéke. 
  Regiszternév  :az elmentett felhasználói regiszterérték. 
                 Csak monitorban használható, itt is  csak 
                 kódot nem generáló parancsokban! (Ld. pl. 
                 debugger parancsok.) 
  Számkonstans  :lásd feljebb! 
  ASCII konstans:"a", 'OK' stb. A " jel '-ok között írható 
                 le, és viszont. Pl.: '"', "'" . 
  
                       A lehetséges műveleti jelek: 
                       ---------------------------- 
(, )            : zárójelek. 
                  (pl.: LD E,(n+m)*3 ) 
+               : összeadás, vagy pozitív előjel. 
                  (pl.: LD HL,CíMKE+1 ) 
-               : kivonás,  vagy  negatív  előjel  (kettes 
                  komplemens képzése). 
                  (pl.: LD HL,LAB2-LAB1;  LD A,-3 ) 
NOT             : egyes komplemens képzése. 
                  (pl.: LD B,NOT 9 ) 
*, /, MOD       : szorzás, osztás és osztási maradék  kép- 
                  zése. 
                  (pl.: LD HL,DATA*6;  LD A,28 MOD 3 ) 
AND, OR, XOR    : bitenkénti és, vagy, kizáró vagy művelet 
                  (pl.:  LD A,n XOR m ) 
SHL, SHR        : bitenkénti balra, illetve jobbra  lépte- 
                  tés. A belépő bitek 0-át tartalmaznak. 
                  (pl.:  LD A,2 SHL 3   : A-ba 16-ot tölt; 
                  LD HL,83ACH SHR 4 : HL-be 083AH-t tölt.) 
LOW, HIGH       : alsó, illetve felső byte kiemelése. 
                  (pl.:  LD A,LOW 83ACH : A-ba 0ACH kerül, 
                  LD A,HIGH 83ACH : A-ba 83H kerül.) 
<  vagy LT       
>  vagy GT       Összehasonlítások. Ha  a  reláció  igaz, 
<= vagy LE      akkor -1 -et, ha hamis, akkor  0-át  ka- 
>= vagy GE      punk eredményül. (A logikai műveletek  a 
=  vagy EQ       feltételes fordítást vezérlő utasítások- 
<> vagy NE      ban használhatók fel leginkább.) 
  
   A NOT, MOD, AND, OR, XOR, SHL, SHR, LOW, HIGH, LT,  GT, 
LE, GE, EQ és NE operátorok előtt és után egy és csak  egy 
szóköz írása kötelező! 
  
   A műveletek végrehajtási sorrendje (prioritása): 
1.:     (, ) 
2.:     *, /, MOD, előjelek, NOT, LOW, HIGH, SHL, SHR 
3.:     +, - 
4.:     AND 
5.:     OR, XOR 
6.:     <, >, <=, >=, =, <> (LT, GT,LE, GE, EQ, NE) 
  
  
                       A MONITOR HASZNÁLATA 
                       -------------------- 
  
  A monitorban találhatjuk a memória  vizsgáló,- felülíró, 
I/O és debugger funkciókat, továbbá innen érhető el a szö- 
vegszerkesztő és az assembler fordító is. 
  A monitor sorassemblerként is működik,  azaz a beírt Z80 
assembler utasításokat azonnal lerakja a memóriába, de itt 
címkéket nem definiálhatunk. 
  A monitor full screen editor módban működik, azaz a cur- 
sorral szabadon lehet mozogni,  módosítani a képernyőn.  A 
monitor az utasítássor első öt, inverz karakterét  figyel- 
men kívül hagyja, 58 karakternél hosszabb  logikai  utasí- 
tássort nem fogad el! 
  Az utasítás  végrehajtása után  a következő sor  elejére 
inverzben kiírja az új memóriamutató értékét ($) az aktuá- 
lis számrendszer szerint. 
  
?                         Számkonverziók: 
- 
        ?               :  Az aktuális számrendszer cseré- 
                         je. Nem decimálisból decimálisba, 
                         decimálisból hexadecimálisba vált 
        ?   nn          :  Az nn kifejezés értékének  dec. 
                         és hex. kiírása. Ha a szám  ábrá- 
                         zolható 8 biten  és/vagy  negatív 
                         értékként, akkor úgy is kiírja. 
  
 J nn                   :A memóriamtató ($) nn címre állí- 
------                   tása. 
  
+                       : $:=$+1 
á                                     a cursor helyben marad, 
-                       : $:=$-1  így a funkció ismételhető 
  
 M                        Memória másolás: 
--- 
        M nn,mm         : Az nn címtől mm címig taró memó- 
                          riarészt a  $  címre másolja. Az 
                          átfedés megengedett! 
                          mm>=nn ! 
  
INS                       Beszúrás a memóriába: 
      INS nn,mm       :  A $ címtől nn-ig tartó memóriát 
                          mm db. byte-tal feljebb helyezi. 
                          A felszabaduló részt 0-val tölti 
                          fel. nn>=$ ! 
  
 S nn                   :  A $ címtől nn címig tartó memó- 
------                    riáról 24 bites ellenőrző össze- 
                          get ír ki. nn>=$ ! 
  
 C                        Memóriaterületek összehasonlítá- 
---                       sa: 
        C    nn         :  A $ címen kezdődő memóriát ösz- 
                          szehasonlítja az nn címen kezdő- 
                          dővel.  Eltérés esetén  kiírja a 
                          talált címeket ,az ottlévő byte- 
                          okat,  majd  billentyűlenyomásra 
                          vár: 
                           SPACE : tovább ellenőriz; 
                           ESC   : kilép; 
                           CTRL B: HARDCOPY a nyomtatón! 
                          Egyező blokkok esetén  egy  üres 
                          sort ír ki. 
 F                        Byte-sorozat keresése a memóriá- 
---                       ban: 
 F n,"felirat",m,...    : Megkeresi az adatok első előfor- 
                          dulását a $ címtől kezdve. Sike- 
                          res  kereséskor  kiírja a talált 
                          címet, majd  billentyűlenyomásra 
                          vár : 
                            SPACE  : tovább keres; 
                            ESC    : kilépés 
                            RETURN :  DUMP-ot  ad a talált 
                                     címtől 
                            egyéb  :  kilép, és a $-ba má- 
                                     solja a talált  címet 
 L                        Disassemblálás: 
--- 
        L               : A $ címtől listáz 
        L nn            : Az nn címtől listáz. 
                          Egy sor kiírása után  billentyű- 
                          lenyomásra vár: 
 SPACE           : újabb sort listáz 
 ESC             : kilépés 
 ^                : kilépés, az utolsó listázott sor címe a 
                   $-ba másolódik. 
 @               : DB n listázás ki-bekapcsolása. 
                   A bekapcsolt állapotot a keretszín jel- 
                   zi. 
 INS             : Az EDITOR-ba listázás  ki-bekapcsolása. 
                   Az így listázott sor a  szövegszerkesz- 
                   tőbe is bekerül. A bekapcsolt állapotot 
                   egy cursor-négyzet jelzi a sorban. 
 RETURN          : JP nn, JR nn,  CALL nn  utasítás esetén 
                   a listázást az nn címen folytatja. 
                    A CALL vagy  feltételes  ugró utasítás 
                   címét megjegyzi (max. kb. 500-at). 
 DEL             : visszatér az előző,  a RETURN lenyomása 
                   előtti címre, ha ott CALL vagy feltéte- 
                   les ugró utasítás állt, azaz csak  elá- 
                   gazási pontra tér vissza. 
 CTRL B          : Hardcopy a nyomtatón. 
 D                        Memória listázása,felülírása: 
--- 
        D               : DUMP a $ címtől. 
        D nn            : DUMP az nn címtől. 
                  A képernyő tetején: a listázott 256 byte 
                  kezdete,vége és az aktuális lapkiosztás. 
                  A képernyő alján:  (mm)=nn;n  ahol 
                     mm : a cursor pozíciója a memóriában; 
                     nn : a cursor címén lévő 16 bites; 
                     n  : a cursor címén lévő  8 bites ér- 
                          ték. 
                        A használható funkciók: 
   CTRL B           : hardcopy a nyomtatóra. 
   INS              :  ASCII karakterek 7. bitjének ki-be- 
                      kapcsolása. 
   botkormány       : mozgás a memóriában : 
        SHIFT-tel   : négyesével mozog; 
        CTRL fel/le : a megelőző/következő 240 byte. 
   ALT jobbra/balra :  Grafikus dump szélességének változ- 
                      tatása. A graf. dump a cursor  pozí- 
                      citól kezdődik. A grafikus dump  se- 
                      gítségével lehet a memóriában  ábrá- 
                      kat (pl. sprite-okat) keresni. 
   RETURN           :  a cursor  vált az  ASCII és a hexa- 
                      mező között.  A kijelölt cím  csak a 
                      villogó cursor  helyén írható felül! 
                      A hexadecimális mezőben az A-F szám- 
                      jegyek csak nagybetűvel írhatók! 
   ALT RETURN       :  GRAPHICS mód csere. (csak ha a gra- 
                      fikus dump be van kapcsolva.) 
   CTRL ^           :  a kurzor helyén álló érték szerinti 
                      címre ugrás. 
   DEL              :  visszaállítja a felülírt címek ere- 
                      deti tartalmát az aktuális DUMP kép- 
                      ernyőn. 
   ESC              : visszalép a monitorba (vagy  a  FIND 
                      parancsba). 
  
                        A monitor I/O - kezelő funkciói: 
                        -------------------------------- 
 I                        Az IN_TABLE olvasása,módosítása: 
--- 
        I n             : kiírja az IN_TABLE n. elemét. 
        I n,m           : az IN_TABLE  n. elemébe  m érté- 
                          ket ír. 
  
 O                        Az OUT_TABLE olvasása, módosítá- 
---                       sa: 
        O n;   O n,m    :     ua. mint az I-nél. 
                          Az IN- és OUT_TABLE  módosítása- 
                          kor a program  nem  ellenőrzi  a 
                          beírt adat helyességét! 
  
PORT                      I/O port írása,olvasása: 
---- 
        PORT nn         : kiírja  az  nn portról  olvasott 
                          értéket. 
        PORT nn,n       : az nn portra n értéket küld. 
                           (Megjegyzés:  a  TVC  beépített 
                          portjai csak 8 bites portcímeket 
                          használnak.) 
  
 H                      : Hardcopy a nyomtatón. 
---                       (Nem grafikus !) 
  
 OS                       RST 30h,n rutin végrehajtása: 
---- 
        OS n            : DE-be a $ fiz. címét, BC-be 0-át 
                          tölt,majd végrehajt egy RST 48,n 
                          utasítást. 
        OS n,nn         : DE-be a $ fiz. címét, BC-be nn-t 
                          tölt,majd RST 48,n. 
                          Mindkét esetben kiírja a vissza- 
                          kapott  értékeket.  A<>0  esetén 
                          hibát jelez. 
  
 PAL                      paletta-értékek módosítása: 
----- 
        PAL             : kiírja  az  aktuális (elmentett) 
                          palettaértékeket. 
        PAL param.      : módosítja a paletta aktuális ér- 
                          tékét a paraméterekben  megadott 
                          értékekkel. 
       pl.:PAL 0        : a papírszínt változtatja 
           PAL 0,16,85,4: mind a négy  palettaszínt  módo- 
                          sítja. 
  
 CLS                      képernyő törlés: 
----- 
        CLS             :       -ll- 
        CLS 0           : GRAPHICS 2 
        CLS 1           :   -ll-   4 
        CLS 2           :   -ll-  16 
  
 P                        memória lapozás: 
--- 
        P               : kiírja az aktuális lapkiosztást. 
        P n             : lapozás   az  n  érték  szerint. 
                          (csak a 2-3. ó1-2.Á lapra hajtó- 
                          dik végre!) 
  
OPEN                      file  nyitása  írásra/olvasásra: 
---- 
        OPEN W          : pufferelt file  nyitása  írásra, 
        OPEN W,file-név : név nélkül, illetve névvel. 
        OPEN R          : file nyitása olvasásra név  nél- 
        OPEN R,file-név : kül, illetve névvel. 
  
CLOSE                     file zárása: 
----- 
        CLOSE R         : olvasott file lezárása. 
        CLOSE W         : írt file lezárása. 
  
 W                        memóriaterület mentése: 
--- 
        W file-név      : A lefordított program  kimentése 
                          (V 7 -től V 8-1 címig). 
        W file-név,nn   : A $-tól nn címig  tartó  memória 
                          kimentése. 
        W file-név,SYM  : a szimbólumtábla kimentése. 
        W file-név,TXT  : az assembler forrásszöveg kimen- 
                          tése. 
  
 R                        memóriaterület betöltése. 
--- 
        R               : betöltés  a  kódpuffer  elejére, 
        R file-név      : név nélkül,  vagy  névvel.  Csak 
                          annyi byte-ot  tölt  be, amennyi 
                          bele is fér a kódpufferbe.  (V 8 
                          értékét beállítja a  file  utáni 
                          első byte fizikai címére!) 
        R file-név,nn   : A  $-tól nn címig tartó terület- 
                          re töltés.   (V 8-at beállítja!) 
        R file-név,SYM  : új szimbólumtábla  betöltése;  a 
                          régi törlődik. Az esetleges elő- 
                          ző tábla rögzítést feloldja! 
        R file-név,TXT  : hozzátöltés a már  meglévő  for- 
                          rásszöveghez. 
  
           Az R és a W az U3 RAM területén is használható, 
        ilyenkor a képernyőn zavaros ábra jelenik meg,  de 
        ez nem hiba! (A videomemória átmeneti  adattároló- 
        ként üzemel ilyenkor.) 
        [A TOP nem tud az  U3 RAM  terülületére  tölteni!] 
\                        : VT-DOS kompatibilis floppymeg- 
-                          hajtó esetén  belépés a  BASIC 
                           CLI-be. 
\parancs                   DOS parancs végrehajtása 
--------                       pl.:  \DIR b:*.ASM 
                           Munkaterületnek a  definiálha- 
                           tó karakterek  mátrixát  hasz- 
                           nálja fel. 
  
                   A DEBUGGER FUNKCIÓK: 
                   -------------------- 
  
A debugger funkciók lehetővé teszik a gépi kódra lefor- 
dított programok kipróbálását, tesztelését. Használatuknál 
a következőket kell figyelembe venni: 
          - A debugger közös stacket használ az  operációs 
            rendszerrel, ezért az U0 RAM-ot  kilapozni ti- 
            los, az SP csak az U0 RAM-ba mutathat! 
          - A tesztelni kívánt program logikai és  fizikai 
            címének egyeznie kell, ellenkező  estben  "Nem 
            használható!" hibajelzést kapunk! 
          - A Mnemonic IV rendszer vektoros interrupt  le- 
            kezelésére nincs felkészítve, ezért a  teszte- 
            lendő programban nem lehet IM 2 utasítás! 
  
 X          Az elmentett regiszterkészlet olvasása,  módo- 
---         sítása: 
   X 0    : Az összes regisztert törli; az SP-t  alaphely- 
            zetbe állítja (5800 dec.), a PC-be a  $  érté- 
            két tölti. 
   X      : Kiírja a teljes regisztertükröt; valamint a PC 
            címen lévő utasítás nevét, kódját. A PC  érté- 
            két az aktuális számrendszerben, a regisztere- 
            ket hexadecimálisan, az F-et és  F'-őt  biten- 
            ként írja ki. Az F melletti, név nélküli  adat 
            a PAGE érték; az F' melletti, név nélküli adat 
            az I regiszter értéke. 
  X x     : Kiírja az x értékét. 
  X x,n   : Az x-be 8 vagy 16 bites értéket tölt. 
            x fajtái: 
            --------- 
 AF BC DE HL IX IY AF' BC' DE' HL' SP PC regiszterpár,vagy 
az A F B C D E H L XH XL YH YL A' F' B' C' D' E' H' L' I 
és IFF regiszter, ahol: 
            IFF =0: DI üzemmód, 
            IFF<>0: EI üzemmód. 
  
  A monitorban az "x"-re hivatkozás megengedett. 
            pl.: D HL 
                 D PC 
                 L DE, stb. 
  
 B          Töréspontok definiálása, törlése: 
--- 
  
     - A tesztelendő programban max. 8 db. töréspont hasz- 
       nálható. 
     - Töréspontnak RST 0 utasítást használunk,  ezért  ez 
       másra nem használható! 
     - A rendszer csak a B utasítással definiált töréspon- 
       tot ismeri fel, a memóriába direkt beírt RST 0 uta- 
       sítás hatása a Mnemonic IV EXT 0 utasítással törté- 
       nő újraindításával azonos! 
     - Töréspont csak RAM-ban használható! 
     - Több byte-os utasítás esetén a töréspontot az  első 
       byte-ra kell helyezni! 
     - Lehetőség van úgynevezett többszörös töréspont  de- 
       finiálására, azaz olyan töréspont készíthető,  ahol 
       csak az mm-edik átfutáskor áll meg a  program.  így 
       megszámlálható az  adott  ponton  való  áthaladások 
       száma. 
  
     B      : Kiírja az egész törésponttáblázatot: 
               1. oszlop  a töréspont címe, 
               2. oszlop  a max. átfutásszám, 
               3. oszlop  a még hátralévő átfutások száma. 
  
     B    0 : Törli az egész törésponttáblázatot. 
     B   nn : Az nn címre egyszeres töréspont definiálása. 
     B nn,mm: Az nn címre mm-szeres töréspont definiálása. 
              (Vagy a már meglévő töréspont  átfutásszámá- 
              nak módosítása.) 
     B nn,0 : Az nn címen levő töréspont törlése a  táblá- 
              zatból. 
  
 G            A program  elindítása, folytatása  töréspont 
---           után: 
       A töréspontok a G  utasítás kiadása után kerülnek a 
  programba (az akkor aktuális  lapkiosztás  szerint!),  a 
  törésponttáblázat alapján.  A  monitorba  visszatéréskor 
  visszaáll az eredeti tartalom, azaz a töréspontok eltün- 
  nek a programból, de a törésponttáblázatban megmaradnak. 
  
   G   nn    : Szubrutinhívás az nn címre. A verembe visz- 
               szatérési cím kerül. 
  
   G         : Ugrás az aktuális PC-címre. (nem  a $  cím- 
               re!) A stack-be nem kerül visszatérési cím! 
               Leginkább töréspont utáni folytatáskor  al- 
               kalmazható. 
  
 T             Lépésenkénti  programfuttatás.  RAM-ban  és 
---            ROM-ban is használható.  Kiadásakor  törés- 
               pontok nem  kerülnek a  programba.  Az  RST 
               utasítások rutinjaiba nem lép bele. 
     T       : Lépésenkénti végrehajtás a  PC címtől. Min- 
               den lépés előtt kiírja a regisztertükröt, a 
               soronkövetkező  utasítást,  majd  billentyű 
               lenyomására vár: 
                ESC   : vissza a monitorba. 
                CTRL  : utasítás végrehajtása,  a  szubru- 
                        tinhívásokba "belelép". 
                ALT   : utasítás végrehajtása,  a  szubru- 
                        tinhívásokba nem lép  bele, azokat 
                        egy utasításnak értelmezi. 
                -     : a soronkövetkező utasítás átugrása 
  
     T nn    : A PC-címtől nn darab utasítás végrehajtása. 
               A regisztertükröt csak a lefutás  után írja 
               ki. A  billentyűzetet  most  is  figyeli! A 
               program futási sebessége a  normálisnak kb. 
               1/2000-ed része ! 
                  FIGYELEM az nn nem a kezdő  cím, hanem a 
               végrehajtandó utasítások száma !!! 
  
        Az alábbi utasítások mind az assembler fordítóban, 
      mind a monitorban használhatók. Az adatok a $ címtől 
      kerülnek lerakásra. 
  
LAB                     :  A szimbólumtábla elemeinek lis- 
---                       tázása, a definiálás  sorrendjé- 
                          ben. A listázás bármely  billen- 
                          tyű lenyomásával  szüneteltethe- 
                          tő, illetve folytatható, ESC le- 
                          nyomására  megszakad.  Az  érték 
                          melletti jel a szimbólum típusát 
                          jelzi: 
                           L : címke, 
                           < : EQU-val definiált konstans, 
                           \ : SET-tel definiált változó. 
  
RADIX nn                : Az aktuális számrendszer alapját 
                          nn-re cseréli. nn  csak 2, 8, 10 
                          vagy 16 lehet! 
  
DB n,"felirat",m,...    : 8 bites kifejezések és feliratok 
DB 'szöveg',n,n..         lerakása a memóriába. 
DW nn,mm,nn,mm,...      : 16 bites kifejezések lerakása  a 
                          memóriába, alsó-,felső byte sor- 
                          rendben. 
DS nn                   : A memóriába nn darab  0  byte-ot 
                          helyez. 
D$ n,"felirat",m,...    : Elhelyezi az adatbyte-ok  számát 
                          egy byte-on, majd magát az 'n,"f 
                          elirat",m,...' adatokat. így le- 
                          het pl. egyszerűen  file-neveket 
                          lerakni. 
FILL nn                 : A memóriát az nn címig  0  byte- 
                          tokkal tölti fel. 
FILL nn,n,'felirat',m,..: A memóriát az nn címig  feltölti 
                          az  n,'felirat',m,... adatokkal. 
      A FILL és a DS utasítások nn paraméterében címkene- 
   vet ne használjunk, ez fordítási fázishibához vezethet! 
  
                AZ RST p UTASíTÁSOK SZINTAKTIKÁJA 
                --------------------------------- 
 
    A p az AKTUÁLIS SZÁMRENDSZERnek  megfelelő  szám, vagy 
  használjuk a számrendszer jelöléseket!  (pl.  30H,  .48) 
    Az RST 8 (hibaüzenet) és RST .48  (operációs  rendszer 
rutin hívása) utasítások kétparaméteresek. A második para- 
méter a funkciókód. 
       Pl.: RST 8,1; "Not understood" hibajelzés 
            RST .48,.33; egy karakter kiírása. 
  
  
        A nem szabványos Z80 utasítások használata 
        ------------------------------------------ 
   Mind a monitorban, mind az assemblerben  elérhetjük  az 
IX és az IY regiszterpárt regiszterenként is. Az így elér- 
hető alsó regiszterek neve  XL és YL, a felsőké  XH és YH. 
Ezek a regiszterek  a bitműveletek  kivételével  mindenhol 
hassználhatóak, ahol az L és H regiszterek használata  me- 
gengedett. Pl.:  LD A,XL;  OR YH;  ADC A,XH ; stb.  A  két 
indexregiszter egyazon utasításban nem használható.  Ezért 
pl.: az LD XH,YL nemlétező utasítás. Lehetőség van még  az 
SLL param.  utasítás használatára is.  Az SLL funkciója: a 
paraméter bitjet shifteli: 
 
        CY <- (7  <-  0) <-1 
       A paraméterek: A, B, C, D, E, H, L, (HL), (IX+d) és (IY+d) 
lehetnek. Pl.:  SLL (HL); SLL C; stb. 
  
  
                  AZ ASSEMBLER MŰKÖDÉSE 
                  --------------------- 
  
   Az assembler két  menetben fordít;  az első menetben  a 
szimbólumtábla, a  másodikban a kód készül  el.  A második 
menetre csak az első hibátlan lefutása esetén kerül sor. A 
fordítás I/O hiba, vagy a szimbólumtábla megtelése  esetén 
azonnal megszakad. 
   A fordítás bármely gomb lenyomásával szüneteltethető, - 
folytatható, az ESC-pel bármikor kiléphetünk belőle. 
   A fordítás kezdetekor a már meglévő szimbólumtábla tör- 
lődik. A törlést a V 6 rendszerváltozó 1. és  2.  bitjének 
1-be állításával megakadályozhatjuk. A bitek beállításako- 
ri szimbólumtáblázat ezután már soha sem törlődik, csak  a 
később definiált részek. A rendszer a 2. bit  kinullázásá- 
val jelzi a szimbólumtábla alsó felének rögzítését. A tel- 
jes szimbólumtábla ismét törölhető a két bit 0-ázása után. 
   A fordítás végén az első szabad byte fizikai címe a V 8 
változóba, logikai címe a $-ba kerül. 
  
  
 A             A szövegszerkesztő tartalmának lefordítása. 
--- 
  
     A       : A lefordított kód a memóriába (a kódpuffer- 
               be) kerül. 
     A 0     : Kód nem készül;  szintaktikai  ellenőrzésre 
               használható. 
     A file-név:A második menetben a kódot pufferelt file- 
               ba tölti.  File-ba fordításkor mindössze 64 
               byte hosszú kódpufferre van szükség! 
                 A file első két byte-ja az ORG-címet tar- 
               talmazza, a többi byte maga a kód. Magnóin- 
               ításra  "Magnófelvétel  indul!"  felirattal 
               figyelmeztet.File-ba fordítás előtt érdemes 
               ASM 0-val szintaktikai ellenőrzést végezni! 
  
                   ASSEMBLER DIREKTíVÁK: 
                   --------------------- 
   A forrásszövegben  található,  az  assembler  működését 
vezérlő parancsok: 
  
MODE           A fordítás módjának megváltoztatása a  for- 
----           dítás közben: 
     MODE 0  : "A 0" fordítási módot kapcsol be, azaz  in- 
               nentől kezdve kód nem készül, csak szintak- 
               tikai ellenőrzés történik. 
     MODE C  : Kód nem készül, a memóriában már bent  lévő 
               kódot összehasonlítja a forrásszöveg  által 
               előírttal. Az eltérő sorokat kiírja. 
     MODE N  : Visszaállítja a MODE 0  vagy MODE C  előtti 
               fordítási állapotot. 
  
EQU            Számkonstans szimbólum definiálása, nem de- 
---            finiálható újra. 
címke EQU nn : a 'címke'-nevű, nn értékű konstans definiá- 
               lása.Az nn kifejezésben címkenevet ne hasz- 
               náljunk, fordítási fázishibához vezethet ! 
  
SET          : Változó szimbólum definiálása.Az így létre- 
---            hozott szimbólum értéke  egy újabb SET uta- 
címke SET nn   sítással átdefiniálható. 
  
END          : Befejezi a fordítást;  az esetleg hátralevő 
---            forrásszöveget figyelmen kívül hagyja.Hasz- 
               nálata nem kötelező. 
  
INCLUDE file-név: A 'file-név' nevű file tartalmát betölti 
----------------  a szövegpuffer még üres részébe  (ha van 
               elég hely), majd lefordítja. File-vég  után 
               az így betöltött file törlődik, a  fordítás 
               az INCLUDE után következő sorban  folytató- 
               dik. Az INCLUDE utasítások  nem  ágyazhatók 
               egymásba! Magnóindításra mindig  figyelmez- 
               tet. 
                 Az INCLUDE  utasítás  használatával olyan 
               nagy programot is készíthetünk,melynek for- 
               rásszövege egy darabban nem férne be a szö- 
               vegszerkesztőbe. 
  
LIST           Fordítási listát készít a következő sortól. 
----           Ha az A parancs kiadásakor működőkész nyom- 
               tatót, vagy annak helyén más eszközt talál, 
               oda -, ennek hiányában a képernyőre listáz. 
               A lista oszlopai: 
                - sorszám (dec.) 
                - cím     (akt. számrendszer) 
                - kód     (hexa.) 
                - forrássor 
     LIST    : Bekapcsolja a listázást. 
     LIST nn : nn=0 esetében ki-, nn<>0 esetben bekapcsol- 
               ja a listázást. 
  
IF  nn       : Feltételes fordítási blokk  kezdete.  nn<>0 
------         esetén fordít tovább. 
  
IFE nn       : Feltételes fordítási  blokk  kezdete.  nn=0 
------         esetén fordít tovább. 
  
ELSE         : Fordítási mód cseréje.(fordít<->nem fordít) 
---- 
  
ENDIF        : Feltételes  fordítási blokk  vége. Innentől 
-----          ismét minden lefordítódik. 
                 FIGYELEM! A nem fordított  blokkokban  is 
               történik szintaktikai ellenőrzés ! 
  
  
             Áthelyezhető programok készítése 
             -------------------------------- 
  
   Áthelyezhető (relokálható) az a program, amely a  memó- 
ria bármely  részére betöltve  működőképes.  Mivel  a  TVC 
operációs rendszere ilyen programok használatát nem  támo- 
gatja, és a puffereletlen kazettás  file-kezelés  hatékony 
relokáló loader használatát lehetetlenné  teszi,  ezért  a 
relokálható programok hossza mindig nagyobb lesz,  mert  a 
relokáláshoz szükséges adatokat is tartalmazniuk kell. 
  
   A fordítót a forrásszöveg elején  (az  ORG nn  helyett) 
elhelyezett "címke RELOC" paranccsal utasíthatjuk relokál- 
             ----------- 
ható program készítésére. A címke megadása kötelező! 
  
      Az áthelyezhető programok írásának szabályai: 
  
  - Áthelyezhető programot nem lehet  közvetlenül  file-ba 
    fordítani! 
  - relokálni csak a 
       JP címke; 
       JP feltétel,címke; 
       CALL címke; 
       CALL feltétel,címke; 
       LD A,(címke); 
       LD (címke),A; 
       LD dd,címke; 
       LD dd,(címke) és 
       LD (címke),dd 
    utasításokat lehet! A címke  igen  lényeges  feltétel, 
    ugyanis ha az előző utasítások számkonstansokat,  EQU- 
    val, vagy SET-tel definiált  szimbólumokat  tartalmaz- 
    nak, akkor azok nem relokálódnak (fix címre mutatnak)! 
  - A "DW címke1,címke2,... címkex" utasítások  nem  relo- 
    kálhatók, ezért az  ilyen,  ún. ugrótáblákból  felvett 
    értékekhez, amennyiben azok a programon belüli címeket 
    tartalmaznak, mindig hozzá kell adni a program  kezdő- 
    címét! A relokálás után a program kezdőcíme a  Start+2 
    címen lerakva megtalálható, ahol a "Start" a RELOC pa- 
    rancs címkéje. 
  - Az előző pontból következik, hogy  egy  ugrótábla  nem 
    tartalmazhat egyszerre programon belüli és kívüli  cí- 
    meket! 
  - Címkékhez hozzá lehet adni, illetve  címkéből ki lehet 
    vonni konstans értéket. Címkével más műveletet végezni 
    tilos! ( Két, ALFA és BÉTA címke távolságát kiszámíta- 
    ni a "táv SET BÉTA-ALFA"  paranccsal  lehet,  a  "táv" 
    szimbólum értéke már szabadon felhasználható.) 
  
   A relokálható program látszólag a 0000H címre  fordító- 
dik (ORG 0000H), ám szerkezete jelentősen különbözik a ha- 
gyományosétól. A program  egy  42 (dec.) byte-os  relokáló 
rutinnal kezdődik, majd a "valódi" program  következik.  A 
már felsorolt utasítások után 2-2 byte adat kerül a kódba. 
A program így, relokálás nélkül nem futtatható, és nem  is 
fordítható vissza helyesen! 
   A "CODE" címre betöltött program BASIC-ből az 
        USR(CODE,CODE) 
gépi kódból pedig az 
        LD   HL,CODE 
        CALL CODE 
parancsokkal relokálható. A relokáló rutin ekkor négy dol- 
got végez el: 
   - a programban található adatok alapján elvégzi a  cím- 
     kehivatkozások átírását a "CODE" címhez képest, 
   - az adatbyte-okat NOP utasításokra cseréli, 
   - a CODE cím értékét elhelyezi a (CODE+2) címre, hogy a 
     program ugrótáblát kezelő rutinjainak  legyen  honnan 
     felvenniük az eltolási értéket, 
   - a relokáló szubrutint "kikapcsolja" a programból, így 
     az soha többé nem futhat le. (A program így felszaba- 
     duló 5-42. byte-ja ezután bármilyen célra felhasznál- 
     ható.) 
   A relokálás végeztével a vezérlés visszakerül a reloká- 
ló rutin hívójához. Ezután a programkód már bármikor  meg- 
hívható az USR(CODE), illetve a CALL CODE utasításokkal. 
  
  
                A rendszer bővíthetősége 
                ------------------------ 
  
  A Mnemonic IV program a felhasználó részéről bővíthető, 
kiegészíthető. 
  A bővítések számára három belépési pont van.  A belépési 
pontokhoz három 2-2 byte-os  rendszerváltozó  tartozik.  A 
változóknak kell tartalmazni a felhasználó részéről megírt 
bővítőrutin kezdőcímét, hasonlóan a BASIC EXT  utasításai- 
nak ugrótáblájához. Alapesetben  a  kezdőcím 0 . Mindhárom 
bővítőrutinnak RET utasításal kell végződnie! 
  
1.)  A @ monitor utasítás, változója a COM_DEV 
   A felhasználó saját monitor utasítást, utasításokat ír- 
   hat, ezt "@ param1,param2" módon hívhatja meg. Az  áta- 
   dott paraméterstringek a STRING1 és a  STRING2  címekre 
   kerülnek lerakásra a memóriába. 
     (Stringen egy, a memóriába lerakott feliratot értünk, 
   első byte-ja a felirat további byte-jainak számát tar- 
   talmazza.) 
     A paraméterek megadása nem kötelező. A rutinból kilé- 
   péskor az A regiszter hibakódként értelmezett! 
  
2.)  A következő belépési pont a töréspont lekezelő rutin- 
   ban található. A bővítés rutin megléte esetén a  törés- 
   pontnál csak akkor áll meg a tesztelendő program, ha  a 
   bővítésrutin NZ flagtartalommal tér vissza. 
     így lehetőség van 'intelligens' töréspont készítésére 
  Pl. egy adott memóriacím tartalmától, vagy a REG_TAB-ba 
   elmentett regiszter tartalmaktól függő megállásra. 
3.)  Az utolsó belépési pont a REGVIEW rutinban található. 
   Ez a rutin írja ki az elmentett regisztertartalmakat és 
   a PC címen lévő utasítást a képernyőre. Bővítésével el- 
   érhető pl. a felhasználó részéről fontosnak tartott me- 
   móriacímek tartalmának megjelenítése. 
  
  
   Az alábbiakban  felsoroljuk  a  felhasználható  rutinok 
listáját. Ahol nincs más megemlítve ott a paraméterek min- 
dig fizikai címet jelölnek, valamint a regiszterek vissza- 
térő tartalma megváltozik. 
  
                    Kiíró rutinok: 
                    -------------- 
  
CRLF    a cursort a következő sor elejére állítja. 
 
PRINT   a HL címen kezdődő string kiírása, a  224  és  na- 
        gyobb kódú karakterek helyett  kód-223 db. space-t 
        ír ki. 
  
PRINTLN PRINT a sor elején. 
  
PRINTAT PRINT a BC-vel megadott cursorpozíciótól. 
  
INVERZ  a PRINT inverz változata. 
  
SPACE   az A reg. számú space-t ír ki. 
  
FreeLin Ha a képernyőre írunk, a kiírt felirat sokszor nem 
        felülírja, hanem maga alól "kitolja" a már ott lé- 
        vő sorokat. A FreeLin rutin a  HL-ben adott  számú 
        karakterhelyet felszabadít a képernyőn, az  aktuá- 
        lis sor kezdetétől, a kiírás előtt. Ajánlatos  16- 
        tal osztható értéket adni! 
  
REGVIEW a regisztertükröt megjelenítő rutin. 
  
HEXBYTE a B reg. hexadecimális kiírása "H" nélkül. 
  
NUMERIC a HL értékét írja ki az aktuális számrendszer sze- 
        rint. 
  
DECIMAL  a HL értékét írja ki decimálisan. 
HEXANUM  a HL értékét írja ki hexadecimálisan, "H" nélkül. 
  
EQU_NUM  "string=nn" felirat kiírása; a stringre a HL  mu- 
         tat, DE:=nn. 
  
  
                  KONVERZIÓS RUTINOK: 
                  ------------------- 
FPC_RUT  a logikai címből a címzési eltolás szerinti fizi- 
          kai címet állítja elő: in/out=HL 
  
LPC_RUT  a fizikai címből a címzési eltolás szerinti logi- 
         kai címet állítja elő: in/out=HL 
  
FORM_16  a HL címen kezdődő 16 bites numerikus  kifejezést 
         tartalmazó string értékét a HL-be tölti, NZ flag- 
         tartalom esetén az  A  regiszter  hibakóddal  tér 
         vissza. 
  
FORM_8   ugyanez, csak 8 bites kifejezésre, az eredmény az 
         L-be kerül. 
  
LINE     a HL címen kezdődő, C karakter hosszú 'n,n,"feli- 
         rat",n,n,...' típusu szöveget a DE címre lerakott 
         bináris stringgé alakítja.  (ld. a DB utasítást!) 
         Az esetleges hibakód  az  A-ba  kerül. 
  
  
                   ELLENŐRZŐ RUTINOK 
                   ----------------- 
CPHLDE   HL és DE összehasonlítása: 'CP HL,DE'. F az ered- 
         ményt jelzi, HL és DE kezdőértéke megmarad. 
  
T_ADDR   input : HL=logikai cím; 
         output: NZ=hibás cím; A=hibakód;  A=7: kifutás  a 
         tárból, vagy A=11 : HL<$ 
  
KIFUTÁS  input : HL=logikai cím; 
         output: CY=kódpufferen  kívülre  címzés. (kifutás 
         a tárból.) HL=változatlan. 
  
ST_END   output: CY=a stack mélysége kisebb mint 200 byte! 
         Regisztert nem módosít! 
  
  
                 KERESŐ RUTINOK 
                 -------------- 
  
CíMZŐ    egy HL címen kezdődő kétbyte-os adatokat  tartal- 
        mazó táblázat A-adik elemét a HL-be  tölti  (első 
         a 0. adat!). A DE az  adat 2.  byte-jának  címére 
         mutat a visszatéréskor. 
  
FINDER0  egy n db. stringet tartalmazó táblázatban  megke- 
         resi a DE címen kezdődő stringet. A táblázat kez- 
         detére a HL mutat. A táblázat végét  egy  0  byte 
         jelzi. Ha megtalálta, akkor A-ba a megtalált elem 
         sorszáma-1; ha nem, akkor A-ba n kerül. 
  
  
                   EGYÉB RUTINOK 
                   ------------- 
CLEAR    a HL címen kezdődő BC-db. byte feltöltése  0-val. 
 
CLEARúA  a HL címen kezdődő BC-db. byte  feltöltése  az  A 
         regiszter tartalmával. 
IOúRUT   LOAD, SAVE, VERIFY az U2-U3+ lapon. A 3.lap hasz- 
         nálata esetén a képernyőn  zavaros  ábra  jelenik 
         meg. File nyitást/zárást a rutin meghívása előtt/ 
         után kell végezni. óCsak a BOTTOM-ban létező  ru- 
         tin!Á 
         Input : A=funkciókód 
                DE=terület kezdete 
                BC=terület nagysága 
         Output: (HIBA)=hibakód. 
  
ASK      inverzben kiírja a  HL  címen  kezdődő  stringet, 
         majd billentyű  lenyomásra  vár.  "I","i","Y","y" 
         lenyomása esetén NC; "N" vagy "n" esetén CY flag- 
         tartalommal tér vissza. 
  
CURSOR   a cursor villogtatása billentyűlenyomásig. A  ka- 
         pott ASCII érték a C és az A regiszterekbe kerül. 
         Nem írja ki a kapott karaktert! 
  
BEEP     kettős pittyegés, a HL  es  DE  értékét  megőrzi. 
  
  
                 A fontosabb változók 
              -------------------------- 
  
Változó byte   leírás 
------- ----   ------ 
  
HIBA      1    Az IO_RUT rutin által visszaadott  hibakód. 
STRING1  57    I/O munkaterület. 
STRING2  55    I/O munkaterület. 
FPC       2    Az aktuális memóriamutató ($) fizikai címe. 
LPC       2    Az aktuális memóriamutató ($) logikai címe. 
EL        2    A címzési eltolás aktuális értéke. 
               (EL = fizikai cím - logikai cím.) 
INICTAB  8*2   A  V 0-V 7  rendszerváltozók alapértékei. A 
               Mnemonic IV program betöltés  után, illetve 
               EXT 0,22222-vel újraindításkor ebből a táb- 
               lázatból veszi a kezdőértékeket. 
RST_TAB  8*1   Az  RST 0  -  RST 56  utasítások hossza  az 
               assembler, a  disassembler  és  a  debugger 
               számára. Értékeik: 
               80H : egybyte-os  (RST 0,  RST 16,  RST 32, 
                     RST 40,  RST 56); 
               81H : kétbyte-os (RST 8, RST 48) 
               82H : többyte-os.  (RST 24) 
REG_TAB 13*2   A debugger regisztertükör értékei; sorrend- 
               ben:  PC, SP, BC, DE, HL, IX, IY, BC', DE', 
               HL' ,AF, AF', I-IFF. (az IFF 2. bitje az EI 
               állapotot jelöli). 
COM_DEV   2    A É utasítás kezdőcíme. 
BRK_DEV   2    A töréspont kiértékelő rutin bővítéscíme. 
REG_DEV   2    a REGVIEW rutin bővítéscíme. 
  
   Az itt leírt változók és  szubrutinok  címei a  BOT_SYM 
[illetve a TOP_SYM] file-ban találhatók meg. A file  szim- 
bólumtáblába töltése után rögzítsük a szimbólumtáblát! 
 
             A HIBAÜZENETEK MAGYARÁZATA 
             -------------------------- 
  
Hibakód      hibaüzenet / magyarázat 
-------      ----------------------- 
  
  1:  Kevés a memória! 
             A fordítás során megtelt a kódpuffer. 
  2:  x/0! 
             Nullával osztás. 
  3:  Ismeretlen parancs! 
             A Mnemonic IV. az utasítást nem ismeri. 
  4:  Túlcsordulás! 
             Az aritmetikai kifejezés (vagy annak egy tag- 
             ja)  nem  ábrázolható  az  adott  szóhosszon. 
             ( 8, illetve 16 biten ). 
  5:  Hibás kifejezés! 
             Az aritmetikai kifejezésben tiltott  karakter 
             található. 
  6:  Hibás paraméterszám! 
             a) Az utasítás több, vagy kevesebb paramétert 
                vár a megadottnál. 
             b) A RELOC, EQU vagy SET utasítás címke  nél- 
                kül áll. 
  7:  Kifutás a tárból! 
             A kódpufferen kívülre hivatkozás. 
  8:  Túl hosszú név! 
             A címke neve hosszabb hét karakternél! 
  9:  Tele a tár! 
             a) A szimbólumtábla megtelt. 
             b) Az INCLUDE file nem fér be a szövegpuffer- 
                be. 
             c) Megtelt a törésponttáblázat. 
 10:  Elérhetetlen! 
             A cím nem érhető el relatív címzéssel! 
 11:  Hibás paraméter! 
             Az utasítás paramétere értelmetlen,  vagy kí- 
             vül esik az értelmezési tartományon. 
 13:  Hibás elnevezés! 
             A címkenévben tiltott karakter található! 
 14:  Védett szó! 
             A címkenév regiszternévvel vagy  feltételszó- 
             val azonos! 
 15:  Nem használható! 
             a) Címzési eltolás van érvényben, a  debugger 
                nem használható. 
             b) Az editorba vagy  a  szimbólumtáblába  nem 
                odaillő file-t próbáltunk betölteni. 
             c) Az utasítás monitor parancs, az assembler- 
                ben nem használható. 
 16:  Újradefiniálás! 
             A címke már létezik! 
 18:  Ismeretlen cím! 
             Definiálatlan címkére hivatkozás. 
 20:  ???! 
             Szintaktikai hiba, az utasítás nem választha- 
             tó szét a paramétereitől, vagy csak címke ta- 
             lálható a sorban. 
 21:  Nem címkézhető! 
             Assembler direktríva ( ORG,LIST,END,...) cím- 
             kézése. 
128-255: I/O hiba! 
             Az operációs rendszer hibajelzései. 
  
       FÁZISHIBA !!! 
                A két fordítási menet különböző hosszúságú 
             kódot állított elő. Ennek az az oka, hogy  az 
             első menet során  valamelyik  'FILL nn',  'DS 
             nn'  vagy 'címke EQU nn'  utasítás nn kifeje- 
             zésében még definiálatlan címkére történt hi- 
             vatkozás. 
  
 12, 17, 19, 22-127: - 
             Nem használt hibakódok. 
  
                   KÖSZÖNETNYILVÁNíTÁS 
                   ------------------- 
   Itt szeretném megköszönni Filó Gusztáv és Gyányi Sándor 
barátaim önzetlen segítségét, amit ezen leírás begépelésé- 
vel, illetve az aritmetikai kifejezéseket kiértékelő rutin 
megírásával tettek nekem! 
  
   Mindenkinek jó munkát kívánok: 
  
  
Bp. 1990. VI. 28.                 Bata László 
                        (1137 Bp. Jászai Mari tér 5. I/4.) 

