ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt


SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | PP01 | PETR | PLAN-80A | IQ151


ZPS | Technické prostředky | Programové vybavení | Dokumentace


8 bity / SAPI-1 / Dokumentace / ZPS-2 V4


POZOR ! Tato uzivatelska prirucka vznikla jako zkraceny vypis z originalniho manualu SAPI-1 ZPS 2 pro soukromou potrebu autora. Nezarucuje tedy uplnost a spolehlivost obsazenych informaci.

Pri editaci prirucky bylo pouzito textoveho editoru TASWORD TWO na mikropocitaci SINCLAIR ZX-Spectrum.

(C) JiM SOFT Ostrava 4/1988


XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX




               KAZETOPASKOVE  PROGRAMOVE  VYBAVENI




     SSSSSS      AA     PPPPPPP   IIIIIIII               1
    SSSSSSSS    AAAA    PPPPPPPP  IIIIIIII              11
    SS    SS    AAAA    PP    PP     II                111
    SS         AA  AA   PP    PP     II               1111
    SS         AA  AA   PPPPPPPP     II              11 11
    SSSSSSS   AA    AA  PPPPPPP      II     =======     11
     SSSSSSS  AA    AA  PP           II     =======     11
          SS  AAAAAAAA  PP           II                 11
          SS  AAAAAAAA  PP           II                 11
    SS    SS  AA    AA  PP           II                 11
    SSSSSSSS  AA    AA  PP        IIIIIIII            111111
     SSSSSS   AA    AA  PP        IIIIIIII            111111




          VV    VV               44             0000
          VV    VV              44             000000
          VV    VV             44             00    00
          VV    VV            44              00   000
          VV    VV           44               00  0000
          VV    VV          44   44           00 00 00
          VV    VV          44444444          0000  00
           VV  VV           44444444          000   00
           VV  VV                44           00    00
            VVVV                 44           00    00
            VVVV                 44     **     000000
             VV                  44     **      0000




XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX




     UZIVATELSKA  PRIRUCKA                       DUBEN 1985




                                                     Obsah 1

================================================================
                            O B S A H
================================================================




    UVOD                                                   U

      Zakladni programove vybaveni SAPI-1                 U-1
      -----------------------------------

      Obsah programoveho vybaveni

            A/ Residentni programy
               1/ MONITOR
               2/ MONITOR+, MIKOS

            B/ Transparentni programy                     U-2
               3/ TOOL ASM-80
               4/ BASIC EX

      Umisteni programu v pameti                          U-3

      Upravy na deskach
               - REM 1
               - AND 1
               - JPR 1

      Doplneni vyznamu tlacitek                           U-4





    MONITOR                                                MO

      Popis monitoru V4.0                                 MO-1
      -------------------

      Seznam jednotlivych povelu

            1/ Seznam povelu zakladniho monitoru
            2/ Seznam povelu MONITORu +
            3/ Seznam povelu oper. systemu MIKOS          MO-1

      Popis jednotlivych povelu monitoru

      Zakladni sluzby monitoru                            MO-7
      Sluzby COS-80 systemu
      Sluzby systemu CP/M                                 MO-8
      Sluzby EXFLAG

      Rizeni obrazovky
      Rizeni tiskarny




                                                     Obsah 2

    MIKOS                                                  MI

      Popis operacniho systemu MIKOS                      MI-1
      ------------------------------

      Povely systemu MIKOS

      Strucny prehled prikazu a odpovedi                  MI-2

      Doporuceni pro praci s kazetovym magnetofonem       MI-4

      Tabulka sluzeb OS MIKOS
      Format dat na kazete                                MI-5
      Format funkcnich bloku




    TOOL                                                   T

      TOOL  ASM-80  V4.0                                  T-1
      ------------------

      Seznam povelu

            1/ Prekladace                                 T-2
            2/ Editor PEDIT                               T-3
            3/ Trasovaci a ladici program
            4/ Zpetny prekladac - deassembler             T-4
            5/ Pomocne prikazy                            T-5




    ASM-80                                                 A

      Assembler - jazyk symbolickych adres                A-1
      ------------------------------------

            1/ Pravidla zapisu
            2/ Direktivy assembleru                       A-3
            3/ Prace s prekladacem assembleru             A-4




    PEDIT                                                  P

      Textovy editor PEDIT                                P-1
      --------------------

      Rozdeleni obrazovky                                 P-2
      Definice videomodu

      Popis prikazu editoru                               P-3
            1/ Prikazy pro rizeni videomodu
            2/ Prikazovy rezim                            P-5
            3/ Rozsireni editoru                          P-6
            4/ Povely shodne s editorem INTEL V1.7        P-7
            5/ Zobrazovane ridici znaky
            6/ Priklad                                    P-8
            7/ Priklady jednotlivych povelu





                                                     Obsah 3

    BASIC EX                                               B

      BASIC EX                                            B-1
      --------

      1  Zakladni popis interpretu BASIC                  B-3

      2  Instrukce jazyka                                 B-8
         2.1  Definicni a prirazovaci prikazy
         2.2  Prikazy pro vetveni programu                B-9
              2.2.1  Nepodmineny skok
              2.2.2  Podmineny skok
              2.2.3  Prepinace                            B-10
              2.2.4  Prikazy cyklu
         2.3  Podprogramy a zastaveni programu            B-12
         2.4  Operace vstupu a vystupu
              2.4.1  Cteni konstant
              2.4.2  Cteni vstupnich promennych
                     z I/O zarizeni                       B-13
                2.4.2.1  Cteni z klavesnice displeje
                         (console)
                2.4.2.2  Cteni dat ze souboru reader
              2.4.3  Zapis dat - vystup na zarizeni       B-15
                2.4.3.1  Vystup na displej
                2.4.3.2  Vystup na tiskarnu
                2.4.3.3  Souborove orientovany vystup
         2.5  Funkce pro prikaz PRINT                     B-16
         2.6  Specialni funkce pro displej                B-17
         2.7  Prime vstupni/vystupni operace              B-18
         2.8  Funkce pro rizeni komunikace s programem
              v assembleru
         2.9  Standardni funkce                           B-19
         2.10 Retezcove funkce                            B-20
         2.11 Graficke prikazy                            B-21

      3. Povely                                           B-22

      4. Chybova hlaseni                                  B-23

      5. Test rychlosti BASIC/EX                          B-24

      6. Tvar promennych BASIC/EX




    PRILOHA                                                PR

      Ukazky pouziti systemovych rutin                    PR-1



POZOR !  Tato uzivatelska prirucka vznikla jako zkraceny vypis z
         originalniho  manualu  SAPI-1    ZPS  2  pro  soukromou
         potrebu autora. Nezarucuje tedy uplnost a  spolehlivost
         obsazenych informaci.

         Pri editaci prirucky  bylo  pouzito  textoveho  editoru
         TASWORD TWO na  mikropocitaci  SINCLAIR    ZX-Spectrum.



   (C)   JiM SOFT   Ostrava   4/1988





                                                      Uvod 1

****************************************************************
*                                                              *
*               ZAKLADNI   PROGRAMOVE   VYBAVENI               *
*                                                              *
*                           SAPI - 1                           *
*                                                              *
****************************************************************
    Verse 4.0                                     Duben 1985


    Programove vybaveni rozsiruje moznosti SAPI-1  vyvinuteho  v
Tesla Elstroj, vyrabeneho v Tesla  Liberec  a  dodavaneho  Tesla
Eltos-DIZ.
    Cela filosofie noveho programoveho vybaveni V4.0  vychazi  z
nasledujici konfigurace. Programove vybaveni  umoznuje  pouzivat
Basic a pracovat s programy v assembleru. Vzorem bylo programove
vybaveni mikropocitacu INTEL,  operacniho  systemu  COS  80  pro
SAPI-80.
    Nove  programove  vybaveni  nahrazuje  puvodni   Mikrobasic.
Programy v Mikrobasicu nejsou bez  uprav  prenositelne  na  nove
programove vybaveni.

    Programove  vybaveni    pozaduje    nasledujici    minimalni
konfiguraci:
         - JZS 1 (vcetne SPN 1)   /zdroj + sbernice/
         - JPR 1                  /procesor + porty/
         - ANK 1                  /klavesnice/
         - REM 1                  /ROM/
         - AND 1                  /displej/
         - DSM 1                  /seriovy kanal/
         - RAM 1                  /dynamicka RAM/

    Periferie:
         - ZJS 1                  /zobr. jednotka-TVP/
         - MKP 1                  /kazetovy magnetofon/
      Rozsireni - tiskarna Consul 2111

Pripravuje se pripojeni  dalsich  periferii  a  nova  membranova
klavesnice MK 1.
Programovy  system  vyzaduje  minimalne  16  kB   pameti    RAM.
Jsou doporuceny nektere upravy  na   deskach    systemu  SAPI-1.


                   OBSAH PROGRAMOVEHO VYBAVENI
                   ---------------------------

A/ Residentni programy (EPROM)

       1/ MONITOR
          Rozsah 2kB v EPROM (000H-7FFH)
       Zakladni funkce rizeni systemu, obsluha klavesnice a  TVP
       displeje (viz  popis  monitoru).  Zakladni  monitor  muze
       pracovat samostatne bez MONITORU+ a  MIKOSu  (s  omezenim
       poskytovanych sluzeb).

       2/ MONITOR+, MIKOS
          Rozsah 2kB v EPROM (800H-FFFH)
       Rozsireni  funkci  zakladniho  monitoru  a  mikrokazetovy
       operacni system. Monitor obsazuje  i  RAM  (4000H-42FFH);
       od 4300H lze pouzit pro uzivatelske programy (podprogramy
       pro Basic apod.;  POZOR !  "TOOL" tuto oblast vyuziva !).


                                                      Uvod 2

B/ Transparentni programy

       Zavadeji se do RAM z kazety. Programy se zavadi od adresy
       4400H a zabiraji prostor po 5FFFH.

       3/ TOOL ASM-80
          Soubor programu pro praci v assembleru.  Sklada  se  z
       nasledujicich programovych modulu:
           -ASSEMBLER       -absolutni, s pseudoinstrukcemi,pod-
                             mineny preklad,bez maker
           -LINE ASSEMBLER  -jednopruchodovy, pro  opravy  apod.
           -PEDIT           -CRT editor
           -TRACER          -ladici program
           -DEASSEMBLER     -zpetny assembler
           -POMOCNE FUNKCE

       4/ BASIC EX
          Interpret, 7kB od  adresy  4400H.  Uvedene  programove
       prikazy pro grafiku nejsou v  uvedene  verzi  zabudovany,
       budou az v dalsi verzi pro desku graf. displeje (DGD  1);
       rozsah programu bude 9kB.
          Pracuje  s  pohyblivou  radovou  carkou  (4  byte)   s
       presnosti  6  1/2  cislice  v  rozsahu    1.70141E+38  az
       1.70141E-38.  Umoznuje  praci  s  retezci,  uzivatelskymi
       funkcemi, podprogramy v assembleru, zpracovani dat z kaz.
       magnetofonu. Standardni funkce  jsou  aritmeticke  i  pro
       praci s retezci.
          Max. pocet znaku na radku je 132 (vcetne cisla radku a
       mezer); max. cislo radku je 9999.
          Soucasti BASICu jsou i povely pro ulehceni  editace  a
       ladeni (EDIT  TRON  TROFF).
          Ukonceni prace v BASICu povelem BYE.




              BLOKOVE SCHEMA PROGRAMOVEHO VYBAVENI.
              -------------------------------------


                    --------------
                    |            |
                    |  MONITOR   |             EPROM
                    |            |
                    --------------

                    --------------
                    |            |
                    |  MONITOR+  |
                    |            |             EPROM
                    |   MIKOS    |
                    |            |
                    --------------

         ---------------     ------------
         |             |     |          |
         | TOOL ASM-80 |     | BASIC EX |      Kazetova
         |             |     |          |      paska
         ---------------     ------------
                 \              /
                  \            /

                Volitelne programy
                                                      Uvod 3

    UMISTENI PROGRAMU V PAMETI A SDILENI PAMETI PROGRAMY V4.0
    ---------------------------------------------------------

            0000  ------------------------
                  |        MONITOR       |
            0800  ------------------------
                  |       MONITOR +      |
                  |         MIKOS        |
            1000  ------------------------
                  |      VOLNE EPROM     |
            2000  ------------------------
                  |    RAM 1kB   JPR-1   |
            2400  ------------------------
                  |      PORTY 0,1,2     |
                  |    PRERUSENI JPR-1   |
            3400  ------------------------
                  |      VOLNE EPROM     |
            3800  ------------------------
                  |    VIDEO RAM JPR-1   |
            4000  ------------------------
                  |    Pracovni oblast   |
                  |   MIKOSu a MONITORu  |
            4300  ---------------------------------------------
                  | Pracovni oblast TOOL | Uzivatelske rutiny |
            4400  ---------------------------------------------
                  |     Program  TOOL    |       BASIC        |
            6000  ---------------------------------------------
                  |  Programova a datova |   Pracovni oblast  |
                  | oblast programu TOOL |      BASICu        |
            FFFF  ---------------------------------------------



                        UPRAVY NA DESKACH
                        -----------------

Deska  REM 1   (povinna uprava)
         = zruseni adresace RAM na desce - odpojeni od  sbernice
         (nestaci vytahnout RAM !)
         Provedeni: zrusit dratenou propojku mezi R-2.

Deska  AND 1   (doporucene upravy)
         = zruseni zadosti  o  preruseni  od  zpetneho  behu  (v
         pripade preruseni muze nastat chybna  funkce  nekterych
         programu).
         Provedeni: zrusit propojku 49-50.
         = uprava proti blikani
         Provedeni: prerusit spoj z konektoru X1  (sp.8-RES)  na
         sp.1 IO D3A. Natahnout propoj dratem z 1 IO D3A  na  11
         IO D2A (MRQ).

Deska  JPR 1   (doporucene upravy)
         = pro spravnou funkci tlacitka INT  a  tiskarny  C2111.
         Provedeni:  zrusit  propojku  10-11;  prerusit  spoj  u
         spicky 21 D15 (MH 3214, na R29,sp.15 konektoru  X3,sp.9
         D21-MH  3212).  Natahnout  spojku  ze  sp.10  (propojky
         10-11) na sp.21 D15.
         =  odstraneni  falesneho  pozadavku  na  preruseni   po
         zapnuti systemu.
         Provedeni: sp.14 obvodu D16 (R 3212) odpojit od  R35  a
         pripojit na spicku 14 nektereho obvodu  D17-D22  (RES).


                                                      Uvod 4


         DOPLNENI VYZNAMU TLACITEK NA KLAVESNICI  ANK 1
         ----------------------------------------------


 ZNAK KLAVESNICE         ODPOVIDAJICI ZNAK         HEX. HODNOTA
----------------------------------------------------------------

     Shift Q                   CTRL Q                  11
     Shift W                   CTRL W                  17
     Shift A                   CTRL P                  10
     Shift S                   CTRL S                  13
     Shift X                ETX, CTRL C                03
   Shift SPACE                  TAB                    09
        LF                     ESC ($)                 1B
     Shift LF                   LF                     0A

----------------------------------------------------------------

     Shift R                     %                     25
     Shift D                     &                     26
     Shift F                     \                     5C
     Shift C                     [                     5B
     Shift V                     ]                     5D
     Shift G                     _                     5F

----------------------------------------------------------------
  Znaky v prvni polovine tabulky jsou doplneny,  znaky  v  druhe
polovine byly jiz v Mikrobasicu.




<shift Q> resp. CTRL Q slouzi k rezervaci "okna"  na  obrazovce.
          Format: ^Qn    ;n...pocet rezervovanych radku
                  ^Q     ;implicitni rezervace
                  ^Q0    ;zruseni okna

<shift A> resp. CTRL P slouzi k pripojeni tiskarny (paralelne  k
          displeji). Prvni stisk - pripojeni, druhy -  odpojeni.


V dalsim textu bude oznacovano    "shift"<ZNAK>  jako   ^<ZNAK>.


  Klavesnice ANK 1 je doplnena programovym "repeat" - pri drzeni
klavesy se automaticky po cca 0.8s bere stisknuta  klavesa  jako
dalsi vstupni znak.




         POZNAMKA:

- Uvedene navody  nejsou  ucebnici  programovani,  predpokladaji
  znalosti programovani.
- Programove vybaveni se bude dale vyvijet (budou doplneny ovla-
  dace periferii atd.).
- Pripravuje se prekladac FORTH.




                                                   Monitor 1
****************************************************************
*                                                              *
*                     POPIS MONITORU  V4.0                     *
*                                                              *
****************************************************************
                                                 Brezen 1985

    Monitor je urcen pro SAPI-1 a rozsirene programove  vybaveni
(BASIC, TOOL). Tvori vlastni  jadro  prog.  vybaveni  a  ostatni
programy na nej navazuji a vyuzivaji jeho sluzeb.
    Hlavni funkci je zajisteni styku opratora s mikropocitacem a
obsluha standardnich periferii  (KBD,  CRT,  snimac  a  derovac,
tiskarna) s moznosti instalovat do  systemu  jine  (uzivatelske)
periferie obdobneho typu. Proto se veskere HW zmeny objevi jen v
monitoru a ne v ostatnich programech.
    Dalsi dulezitou funkci monitoru je  poskytovani  sluzeb  pro
uzivatelske  programy  na  smluvenych  adresach.  Tento  monitor
poskytuje  nektere  zakladni  sluzby  operacnich  systemu  CP/M,
ISIS-II a vetsinu sluzeb os COS-80. Mnozina  povelu  je  zvolena
tak, aby bylo mozne provozovat programy  jiz  se  zakladnim  2kB
monitorem.
    Jadro monitoru zabira 2kB pameti a na nej navazuje  MONITOR+
a MIKOS, ktere rozsiruji zakladni mnozinu povelu. Zakl.  Monitor
testuje, zda je pritomen MONITOR+ a  umozni  provadet  rozsirene
prikazy MONITORu+, jinak ohlasi chybu. Zakladni  monitor  je  na
adr. 0-7FFH, MONITOR+ a MIKOS na adr. 800H-FFFH.
    Povely monitoru a castecne  i  filosofie  MIKOSu  vychazi  z
programoveho vybaveni COS-80, ktere je implementovano na SAPI-80
Proto nebude uzivatelum SAPI-80 a  obdobnych  cinit  prechod  na
SAPI-1 potize. Progr. vybaveni SAPI-1 zahrnuje nove  poznatky  z
provozu  SAPI-80,  je  modernejsi  a  poskytuje  vetsi  komfort.



                   SEZNAM JEDNOTLIVYCH POVELU
                   ==========================

1/ Seznam povelu zakladniho monitoru
         A   'assign'      -prirazeni periferii
         C   'clear'       -poc. nastaveni dat a podminek
         D   'display'     -zobrazeni useku pameti
         F   'fill'        -naplneni pameti konstantou
         G   'go to'       -start programu s dvemi breakpointy
         M   'move'        -prekopirovani useku pameti
         Q   'querry'      -zobrazeni prirazeni periferii
         S   'substitute'  -zmena obsahu pameti
         X   'exchange'    -zobrazeni a zmena obsahu registru


2/ Seznam povelu MONITORu+
         K   'kazeta'      -povel os MIKOS, nasleduje dalsi znak
                            (viz 3)
         J   'jump'        -kontrola a start pgm. zavedeneho  do
                            RAM z kazety
         I   'input'       -def. input-periferie, nastaveni
         O   'output'      -def. output-periferie, nastaveni
         R   'read'        -cteni INTEL-HEX souboru
         W   'write'       -zapis INTEL-HEX souboru
         E   'eof'         -konec zapisu HEX souboru
         N   'null'        -derovani prazdnych znaku
         P   'PEDIT'       -start PEDITu
         T   'TRACER'      -start TRACERu
         B   'BASIC'       -start BASICu
                                                   Monitor 2

3/ Seznam povelu oper. systemu MIKOS
         K-I   'init'      -inicializace kazety
         K-B   'basic'     -nacteni souboru v Mikrobasicu
         K-S   'save'      -ulozeni binarneho souboru
         K-L   'load'      -nacteni binarniho souboru
         K-D   'directory' -vypis adresare
         K-O   'open'      -otevreni vyst. souboru
         K-C   'close'     -uzavreni vyst. souboru
         K-F   'find'      -otevreni vst. souboru
         K-A   'append'    -pripojeni dalsiho vyst. souboru
         K-M   'motion'    -posuv pasky




               POPIS JEDNOTLIVYCH POVELU MONITORU
               ==================================


  A = assign device
  -----------------
      Prirazeni periferii systemu  C-console (CRT,TTY,...)
                                   R-reader  (snimac,mgf.)
                                   P-punch   (derovac,mgf)
                                   L-list    (tiskarna...)

      Pouzite zkratky zarizeni:    CRT  -displej s klavesnici
                                   LPR  -tiskarna
                                   PTP  -derovac
                                   PTR  -snimac
                                   USER1-uziv.zarizeni 1 (mgf)
                                   USER2-uziv.zarizeni 2



VYZNAMNE BITY        POVEL         ZARIZENI         CISLO SLUZBY
   IOBYTE                                              IODEF
----------------------------------------------------------------
  XXXX XX00           C=T          CRT+LPR
         01           C=C            CRT
         10           C=B        BATCH (IN=RI)
                                       (OUT=LO)
         11           C=1         USER (IN=1)            0
                                       (OUT=1)           1
----------------------------------------------------------------
  XXXX 00XX           R=T            CRT
       01             R=P            PTR
       10             R=1         USER1 (mgf)            2
       11             R=2           USER2                3
----------------------------------------------------------------
  XX00 XXXX           P=T            CRT
    01                P=P            PTP
    10                P=1         USER1 (mgf)            4
    11                P=2           USER2                5
----------------------------------------------------------------
  00XX XXXX           L=T          CRT+LPR
  01                  L=C            CO
  10                  L=L            LPR
  11                  L=1           USER1                6
----------------------------------------------------------------
      -                -       CONSOLE USER STATUS       7
      -                -           MEMTOP                8
----------------------------------------------------------------
                                                   Monitor 3

      IOBYTE    (adr. 40EDH)
      ----------------------
                                 -------------------------
                  cislo bitu  -  | 7 6 | 5 4 | 3 2 | 1 0 |
                                 -------------------------
             rutina monitoru  -  |  LO |  PO |  RI |CO,CI|
                                 -------------------------
Rozdeleni bitu u IOBYTE pro pridelovani periferii (1.sl.tabulky)


      Nastaveni uzivatelskych periferii pomoci rutiny IODEF
      -----------------------------------------------------
V registru <C>  je  cislo  sluzby  (0-8)  a  v  <DE>  je  adresa
prislusne rutiny. Cislo sluzby (8) nastavuje MEMTOP - v <DE>  je
deklarace konce RAM. MEMTOP nastavuje  horni  hranici  pameti  a
zbytek je chranen pred prepsanim  systemovymi  programy  (BASIC,
PEDIT atd.).

    Priklad:   .A_C=T           nastaveni konzoly CRT+LPR

    Poznamka: Monitor se ohlasuje znakem "." (tecka).


  B = BASIC
  ---------
      Start interpretu Basic, pokud je zaveden v operacni pameti
Text programu se zachova po opetovnem spusteni (prikaz  testuje,
zda jde o horky nebo studeny start).

    Priklad:   .B


  C = clear
  ---------
      Mazani promennych monitoru  a  vsech  ridicich  promennych
(programovy RESET). Nastavi se takove podminky, ze pri  spusteni
PEDITu, TOOLu, BASICu se provede inicializace a rusi  se  texty,
tabulky  symbolu  atd.  (studeny  start  -  jako  RESET).  Nutno
pouzivat pri prechodu mezi programy TOOL a BASIC, kde  zajistuje
takto ochranu, aby jeden program neposkodil druhy.
Pozn.-pri omylu je mozno zachranit data "horkym startem"-prik. G

    Priklad:   .C


  D = display memory            D=<l.adr>=<h.adr>
  ------------------
      Zobrazeni obsahu pameti;  vypis  lze  prerusit  libovolnou
klavesou nebo ukoncit  ^C nebo <CR>.

    Priklad:   .D=4400=440F<CR>
                4400  C3 50 44 C3 00 00 41 42    .PD...AB
                4408  30 32 34 31 33 40 00 FF    02413@..


  E = end of file command       E=<adr>
  -----------------------
      Deruje konec souboru a startovaci adresu  programu.  Je-li
adresa=0, program se nestartuje.

    Priklad:   .E=7000          startovaci adresa 7000H
               .E=0             program se pri cteni (R)
                                nestartuje
                                                   Monitor 4

  F = fill memory               F=<l.adr>=<h.adr>=<byte>
  ---------------
      Naplneni useku pameti konstantou.

    Priklad:   .F=F000=FF00=01


  G = go to                     G=<start>=<break1>=<break2>
  ---------
      Start programu  a  nastaveni  bodu  preruseni  pro  ladeni
programu. Pak lze napr. prohlizet registry (.X) apod.

      Programy PEDIT, BASIC  -  "studeny start" na 4400H
                                "horky start"   na 4403H
      Programy ze souboru TOOL (assembler, tracer)
                                "studeny start" na 4C00H
                                "horky start"   na 4C03H
           (umozni obnovu dat po RESET nebo povelu .C)

   Priklady:   .G=20            start od adr. 20H
               .G=100=109       start na 100H,  prerus  na  109H
               .G=30=37=45      nastaveni  dvou  bodu  preruseni
               .G=<CR>          pokracuj  od  minuleho preruseni
               .G=<sp>=30       pokracuj a nastav nove preruseni


  I = input device
  ----------------
      Ovladani  priznaku  otevreni  vstupniho  souboru  (zruseni
otevreni  pro  vstup  dat).  Doporucuje  se  pouzivat  vzdy  pri
zavedeni noveho programu (napr.  zmena  TOOL  na  BASIC  apod.),
protoze nastavi priznaky MIKOSu do pocatecniho stavu.

    Priklady:  .I=1             z kazety  (reader user1)
               .I=2             z uziv. zarizeni reader user2
               .I=R             reader - snimac pasky
               .I=T             console


  J = jump
  --------
      Kontrola souctu  v  pameti  a  start  programu  zavedeneho
prikazem  .K_L

    Priklad:   .J               skok na program


  K = kazeta
  ----------
      Povely kazetoveho operacniho systemu MIKOS. Podrobny popis
je u popisu MIKOSu.

    Format:    .K_X    kde X je jeden z povolenych prikazu MIKOS

    Priklad:   .K_L             zavedeni bin. programu do pameti


  M = move a block of memory    M<l.adr.zdr>=<h.adr.zdr>=<cil.a>
  --------------------------
      Presun useku pameti od zadanych adres do useku daneho poc.
adresou (useky se nesmi  prekryvat).  Obsah  zdroje  se  nemeni.

    Priklad:   .M=7000=7006=AD00
                                                 Monitor 5

  O = output device
  -----------------
      Ovladani priznaku  otevreni  vystupniho  souboru  (obdobne
jako u prikazu .I).

    Priklad:   .O=1


  N = 120 * null punch
  --------------------
      Derovani blanku (zavadeci jazyk derne pasky).


  P = PEDIT
  ---------
      Skok do editoru, zachovava textovy buffer.  Pri  opetovnem
spusteni po povelu .C se zrusi automaticka ochrana textu  (mozna
zachrana - .G4403  ...  viz povel G).


  Q = querry
  ----------
      Zobrazi stav I/O prirazeni (IOBYTE).

    Priklady:  .Q  C=C R=1 P=1 L=L   nastaveni pri MIKOS
               .Q  C=C R=P P=P L=C   nastaveni pouze pri MONITOR


  R = read HEX tape             R<ofset>
  -----------------
      Cteni HEX pasky do pameti na adr. urcene adr. baze + ofset
Neuvedeny ofset se povazuje za 0 a program  se  ulozi  dle  baze
(podle puvodniho ulozeni pri nahrani).

               Hlaseni chyb:    S - chyba kontrol. souctu
                                M - nelze ulozit mimo RAM
                                : - chybi zacatek souboru

    Priklad:   Program byl ulozen z adr. 7000H prikazy W a E.
               .R=1000          nacte na adresu 8000H
               .R=D400          nacte na adresu 4400H


  S = substitute memory contents
  ------------------------------
      Zmena obsahu pameti

    Format:    S=<adr> <obsah>-<novy obsah>  .....  <CR>
               Po znaku ' (apostrof) lze vlozit ASCII znak
               Po znaku , (carka) se zobrazi adresa a dalsi byte


  T = TOOL
  --------
      Skok do souboru programu  "TOOL",  pokud  byl  zaveden  do
pameti.  POZOR !  Je-li zaveden TOOL po BASICu nebo  naopak,  je
nutne povelem .C zrusit podminky monitoru a inicializovat  takto
rizeni automaticke ochrany dat jednotlivych programu.



                                                   Monitor 6

  W = write to tape HEX         W=<l.adr>=<h.adr>
  ---------------------
      Zapis obsahu pameti na pasku, za poslednim W-prikazem musi
nasledovat prikaz E (ukonceni souboru).

    Priklad:   .W=100=1FF


  X = examine and modify register
  -------------------------------
      Kontrola a pripadna uprava obsahu registru.

    Format:    X=<registr>-<obsah> [<novy obsah>]...
                                   [<sp>] ... dalsi registr
                                   [<cr>] ... ukonceni
               X=<cr>

    Priklad:   .X=<cr>  A-FF B-A3 C-   ... obsahy vsech registru
                                           vcetne F(flag),PC,SP
               .X=C-FF-01<cr>          zmena obsahu registru C

----------------------------------------------------------------

Poznamky:
  - u prikazu, ktere maji vice parametru, se zadani jednotlivych
    parametru ukoncuje znakem <sp> -  mezera;  ukonceni  prikazu
    znakem <cr> - navrat vozu.
  - je-li zadana adresa, zadava se v hex. tvaru  bez  H;  system
    bere posledni 4 cislice.
  - je-li zadan byte, system bere posledni 2 cislice.





                        SPECIALNI KLAVESY
                        =================


        ANK-1        C 259.11            VYZNAM
   -------------------------------------------------------------
         ^W           CTRL W         Skok do monitoru
         ^A           CTRL P         Prepnuti tiskarny (zap/vyp)
         ^C           CTRL C         Preruseni  jineho  programu
                       (ETX)         nez je monitor (BASIC,TOOL,
                                     PEDIT)



     Klavesa ^Q vymezi na obrazovce TV displeje "okno",
     ktere se neprepisuje.
        Format:  ^Qn            rezervuje n radku (0-9)
                 ^Q<cr>         rezervuje implicitni pocet (11)
                 ^Q0            zrusi "okno"

                                                   Monitor 7

                    ZAKLADNI SLUZBY MONITORU
                    ========================

    Protoze monitor je adresovan od 0, je tabulka sluzeb od adr.
100H a ne F800H (Intellec). Ma-li SAPI-1 pamet RAM na F800,  lze
povelem .M tabulku sluzeb prekopirovat na F800 a pak  bude  plne
kompatibilni s ISIS-II.

       100H           Zacatek tabulky sluzeb
        +0   START    inicializace monitoru
        +3   CI       console input <A>
        +6   RI       reader input <A>, konec pasky CY=1
        +9   CO       console output <C>
       +0C   PO       punch output <C>
       +0F   LO       list output <C>
       +12   CSTS     console status <A>  ... 0=nestisknuto
       +15   IOCHK    I/O byte read <A>
       +18   IOSET    I/O byte set <C>
       +1B   MEMCK    nastav konec RAM; <A>=low,<B>=high adr.
       +1E   IODEF    definuj uzivatelskou periferii
                      <C>=cislo,<DE>=adresa ovladace ci MEMTOP
       +21   SPCL     nastav kurzor dle <HL>



                SLUZBY COS-80 SYSTEMU  (SAPI-80)
                ================================

   100H+24   CRLF     novy radek na konzolu
       +27   EXPR     precti dany pocet <C>  16-bitovych  param.
       +2A   ERROR    chybove hlaseni "?", beep a navrat do mon.
       +2D   ASHEX    preved ASCII z <A> na HEX v <A>
       +30   DADR     zobraz na CO adresu z <HL>
       +33   DBYTE    zobraz na CO byte z <A>
       +36   HILO     HL+1 srovnej s DE; HL>DE ... CY=1
       +39   NEXT     pokracuj v monitoru
       +3C   SPACE    zobraz na CO mezeru
       +3F   CINCR    cti CI, echo a analyza  znaku  (<cr>-CY=1,
                      <sp> nebo ',' -Z=1)
       +42   TEXT     zobraz na CO text (<HL>=adresa,  <D>=delka
       +45   XY     * vyuziva program TOOL
       +48   HXASC    preved HEX z <A> na ASCII do <A>
       +4B   EXFLG  * ext. ovladani flagu pro rizeni monitoru
       +4E   ASSIGN * prideleni perifernich zarizeni



   Poznamka: Sluzby oznacene "*" jsou upraveny proti COS-80.

                                                   Monitor 8


                      SLUZBY SYSTEMU  CP/M
                      ====================

Adresa pro volani sluzeb je spolecna 0005H; jednotlive sluzby se
rozlisuji podle obsahu <C>. Parametry do systemu se predavaji  v
<E>, ze systemu v <A>. Jsou implementovany tyto sluzby:

      0     COLD START            5     LIST OUTPUT
      1     CONSOLE INPUT         6     DIRECT CONSOLE
      2     CONSOLE OUTPUT        7     IOCHECK
      3     READER INPUT          8     IOSET
      4     PUNCHER OUTPUT        11    CONSOLE STATUS


                          SLUZBY EXFLAG
                          =============

     Rizeni sluzeb systemu. V registru <C> je cislo sluzby  a  v
registru <A> jsou data pro rizeni sluzby.

  C = 0   MODE pro displej      A = 0     normalni znaky
                                A = 40H   blikajici znaky
                                A = 80H   podtrzene znaky
                                A = C0H   siroke znaky

    = 1   FIND      A = 0  pro  I = 1
    = 2   FIND                  I = 2    FLAGY pro otevreni
    = 3   OPEN      A = 0  pro  O = 1        souboru
    = 4   OPEN                  O = 2

    = 5   SET CURSOR            A = cislo radku
    = 6   SET CURSOR            A = cislo pozice
    = 7   RESERVE LINE          A = pocet radku   ("okno")



                        RIZENI OBRAZOVKY
                        ----------------

     'CONSOLE OUTPUT' simuluje chovani AND-16 a SM-7202.  Ridici
znaky 1FH (ERS), 1EH (ERL), 1DH (HOME), 08H  (BS)  maji  shodnou
funkci.
     Jako nova funkce je zadani "okna" na obrazovce,  ve  kterem
muze byt trvale zobrazen  text.  Okno  se  zada  ^Q,  po  kterem
nasleduje  dalsi  znak,  ktery  urci  pocet  radku  od   zacatku
obrazovky jako velikost "okna".  Okno  se  oddeli  od  ostatniho
textu blikajici carou.



                         RIZENI TISKARNY
                         ---------------

     Tisk na tiskarnu lze ridit pomoci  "assign"  nebo  kdykoliv
pomoci CTRL P (^A). Po prvnim stisknuti vsechny  znaky  vysilane
na konzolu se soucasne vypisuji i na tiskarne, druhym stisknutim
se tento rezim rusi.
     POZOR !    Tiskarna musi byt zapnuta !




                   POZNAMKY K FUNKCI MONITORU

   - Monitor obsahuje  progr.  funkci  "repeat"  pro  klavesnici
     (aut. opakovani znaku pri drzeni klavesy po cca 0.8 s).
   - CTRL C  (^X) zpusobi preruseni provadeni programu mimo mon.
   - CTRL W  (^W) zpusobi  vystup  z  programu,  vypise  obsah
     registru a preda rizeni monitoru.
   - System MIKOS obsahuje priznaky FLAG pro V/V soubory,  ktere
     nejsou  uzivateli  pristupne    a    ktere    ridi    stavy
     rozpracovanosti souboru. V nekterych pripadech je nutne pro
     spravnou funkci systemu mit moznost  pocatecniho  nastaveni
     techto priznaku - slouzi k tomu prikazy I a O, ktere umozni
     uzivateli pocatecni nastaveni priznaku. Toto  nastaveni  je
     nutne v pripade nenormalniho ukonceni  programu  (zacykleni
     programu a jeho preruseni ^W atd.).




                                                     MIKOS 1

****************************************************************
*                                                              *
*                POPIS OPERACNIHO SYSTEMU MIKOS                *
*                                                              *
*               (MIkro Kazetovy Operacni System)               *
*                                                              *
****************************************************************



     MIKOS  pracuje  se  zakladni  sestavou  SAPI-1  s    jednim
kazetovym magnetofonem. Umoznuje porizovat data, programy pomoci
editoru PEDIT, prekladat a ladit uziv.  programy  assemblerem  a
tracerem, zpracovavat data BASICem.
     MIKOS automaticky formatuje data zapisovana  na  kazetu  do
bloku,  ktere  zabezpecuje  poradovym  cislem  bloku.   Uzivatel
pracuje s daty jako  by  pracoval  se  snimacem  nebo  derovacem
pasky. Veskere ovladani se deje pres monitor a systemove  rutiny
(RI,PO).  Prikazy  (I=1,O=1)  nastavi  uzivatel   'IOBYTE'    na
magnetofon a zada systemu, ze neni  otevren  zadny  vstupni  ani
vystupni soubor. System automaticky otevre soubor v okamziku kdy
se provede prvni manipulace s daty. Vystupni soubor se ukonci po
zapsani znaku CTRL Z (SUB) na 'PO' nebo povelem K_C.
    Behem vyhledavani souboru  se  automaticky  na  prvni  radek
obrazovky vypisuje jmeno souboru a poradove  cislo  bloku,  znak
':' indikuje probihajici cteni z kazety, znak '*' indikuje cteni
dat z pasky a jejich ukladani do pameti, znak '#'  indikuje,  ze
behem vyhledavani byl spatne precten blok.
    Zpracovani chyby se provadi po spatnem precteni  bloku  nebo
jeho vynechani.  MIKOS  vypise  'ERROR/N'  a  ceka  na  obsluhu.
Klavesou 'N' je mozno zadat ignorovani cteni.  Po  jine  klavese
('Y' nebo <sp>) se vypise  'BACK  PLAY  DONE'.  Obsluha  previne
pasku  (nekolik  cm)  zpet  a  prepne  na  cteni.  MIKOS   zacne
vyhledavat spatne zpracovany blok  (provadi  zobrazeni  jmena  a
cisla bloku) az precte spravne blok. Potom prestane  automaticke
vyhledavani a vypise se novy radek, dale pak  pokracuje  proces,
preruseny chybnym ctenim.
    MIKOS ma dve delky meziblokovych mezer. Dlouha mezera umozni
zastavit a potom znovu rozjet magnetofon. Potom nejsou zapis ani
cteni zavisle na rychlosti zpracovani dat uzivatelem (pouziva se
pri zapisu INTEL-HEX formatu, v BASICu atd.). Kratka  mezera  se
pouziva pri zapisu a cteni binarnich  dat  (prikazy  K_L,  K_S).




                      POVELY SYSTEMU MIKOS
                      ====================

         K_A     append      pripojeni dalsiho vyst. souboru
         K_B     basic       cteni ve formatu Mikrobasicu
         K_C     close       uzavreni vystupniho souboru
         K_D     directory   vypis adresare
         K_F     find        otevreni vstupniho souboru
         K_I     init        inicializace pasky
         K_L     load        nacteni binarniho souboru
         K_M     motion      posuv pasky
         K_O     open        otevreni vystupniho souboru
         K_S     save        ulozeni binarniho programu

          W      write       zapis souboru ve formatu INTEL-HEX
          R      read        cteni souboru INTEL-HEX
          E      eof         zapis ukonceni souboru INTEL-HEX
                                                     MIKOS 2

    Pasku je mozno inicializovat,  t.j.  napsat  na  pasku  blok
zahlavi (oznaceni pasky,  verze...).  Zahlavi  se  vypisuje  pri
prikazech K_D a cteni, pokud  je  paska  na  zacatku.  Slouzi  k
vizualni kontrole vyberu spravne pasky.
    Funkce cteni a zapisu je mozne provadet  ve  dvou  typech  -
- binarni a INTEL-HEX. Komunikace s obsluhou probiha  dialogovym
rezimem, kdy system vypise napovedny text a  ceka  na  provedeni
ukonu obsluhou a potvrzeni, ze  ukon  byl  proveden,  stisknutim
klavesy.



               STRUCNY PREHLED PRIKAZU A ODPOVEDI
               ==================================

  1/ INICIALIZACE
     ------------
                   .K_I
                    BOT
                    RECORD DONE ?   <Y>
                    VOLUME NAME
                   : <oznaceni pasky>
                   .     -    navrat do monitoru


  2/ CTENI PASKY   (binarni - implicitni ulozeni)
     -----------
                   .K_L
                    NAME
                   : <jmeno souboru>
                    PLAY DONE ?     <Y>
                        ...   vyhledani a nacteni souboru


  3/ ULOZENI DAT Z PAMETI NA PASKU  (binarni)
     -----------------------------
                   .K_S
                   =<poc.adr>=<konc.adr>
                    LAST NAME
                   : <jmeno predchazejiciho souboru>
                    PLAY DONE ?     <Y>
                        ...   hledani
                    RECORD DONE ?   <Y>
                    NEW NAME
                   : <jmeno noveho souboru>
                        ...   zapis dat na pasku


  4/ ZAPIS BEZ VYHLEDAVANI  (predchazel-li zapis a paska  je  za
     ---------------------  poslednim souborem)
                   .K_A
                    RECORD DONE ?   <Y>
                    NEW NAME
                   : <jmeno noveho souboru>
                        ...   zapis hlavicky souboru
                   .K_S
                   =<poc.adr>=<konc.adr>
                        ...   nahrani souboru

         Poznamka: Neprovadi se vyhledavani posledniho souboru.



                                                     MIKOS 3

  5/ PREVIJENI - POHYB PASKY
     -----------------------
                   .K_M                   ;zapnuti magnetofonu
                    DONE ?          <Y>   ;zastaveni magnetofonu


  6/ POMOCNE FUNKCE
     --------------
                   .K_O                   ;otevreni souboru
                    LAST NAME                pro zapis
                   : <jmeno>
                    RECORD DONE ?   <Y>
                    NEW NAME
                   : <nove jmeno>

                   .K_C                   ;uzavreni vyst.souboru

                   .K_F                   ;otevreni vst. Souboru
                    NAME
                   : <jmeno>

                   .K_B                   ;cteni z Mikrobasicu
                   = <adr. ulozeni>
                    PLAY DONE ?     <Y>
                   ***                     nahrane bloky

                   .K_D                   ;cteni adresare pasky
                    PLAY DONE ?     <Y>
                        ...   vypis adresare
                   ^X

         Pri vypisu adresare se provadi kontrolni cteni  souboru
         vcetne vyhodnoceni chyb pri cteni. Prave cteny blok  se
         prubezne zobrazuje na prvnim radku obrazovky  (nazev  a
         cislo bloku. V  dolni  polovine  je  zobrazen  adresar,
         ktery obsahuje poradove cislo programu, nazev  programu
         (11 znaku) a delku programu v blocich.  Prikaz  K_D  se
         automaticky neukoncuje,  protoze  na  pasce  neni  znak
         logickeho konce pasky. Proto je  nutno  ukoncit  prikaz
         rucne pomoci ^X (ETX, CTRL C).


  7/ FORMAT INTEL-HEX
     ----------------
                   Posloupnost prikazu pri zapisu na pasku:
                   .O=1
                   .W=<poc.adr>=<konc.adr>
                        ...   komunikace se systemem
                        ...   zapis dat
                   .E=<start.adr>

                   Posloupnost prikazu pri cteni z pasky:
                   .I=1
                   .R=<ofset>
                        ...   komunikace se systemem
                        ...   cteni dat


                    RYCHLE VYHLEDANI SOUBORU
                    ------------------------
    Behem vyhledavani lze pouzit rychloposuvy  mgf,  protoze  na
hornim radku se objevi  jmeno  souboru  a  cislo  prave  cteneho
bloku. Na zaklade techto udaju lze zrychlit vyhledani.
                                                     MIKOS 4

           Poznamky k funkci operacniho systemu MIKOS
           ------------------------------------------

- Soubory jsou ukladany s max. 11znakovym nazvem. Dale je  mozno
  ukladat spolecne s nazvem poznamky, napr. cislo  verze,  datum
  porizeni atd. o celkove delce az do 64 znaku.
- Prikazy, ktere vyzaduji nazev souboru srovnavaji zadany  nazev
  s nazvy na pasce. Srovnava se v delce zadaneho nazvu  (tj.  Do
  prvni mezery nebo 11 znaku).
- Pri zadavani nazvu souboru je mozna i "*" konvence, tj.  misto
  nazvu zadame *; system precte hlavicku a dotazuje se,  zda  je
  to pozadovany soubor (vyzaduje odpoved Y/N); v pripade  kladne
  odpovedi provede operaci, jinak pokracuje v  hledani  souboru.
- Stav rozpracovanosti souboru je rizen priznaky (FLAGY),  ktere
  jsou soucasti os MIKOS a nejsou pristupne uzivateli. Nekdy  je
  nutne  provest  poc.  nastaveni  techto  priznaku  (napr.   Po
  nenormalnim ukonceni programu, ktery pracoval  se  soubory  na
  kazete); k tomu slouzi prikazy monitoru I a O.
- OS MIKOS provadi prubezne hlaseni sve  cinnosti  na  obrazovce
  displeje.  V  pripade  cteni  se  na  hornim  radku  obrazovky
  zobrazuje signalni znak ':' nebo '*', nazev programu a  porad.
  cislo bloku (hex). Znak ':' signalizuje cteni do bufferu  (bez
  dalsiho ulozeni); '*' signalizuje ukladani do bufferu a  dalsi
  zpracovani (aktualni soubor). Dojde-li pri cteni k  chybe,  je
  chyba signalizovana znakem  '#',  ktery  se  tiskne  na  radku
  vyvolani funkce cteni.  Pri  zapisu  na  kazetu  je  provadeno
  zkracene hlaseni -  tj.  na  hornim  radku  se  zobrazuje  jen
  poradove cislo prave zapisovaneho bloku.


          Doporuceni pro praci s kazetovym magnetofonem
          ---------------------------------------------

1/Pozor na umisteni kazetoveho mgf vzhledem k  TVP.  Vychylovaci
  obvody vytvari rusive pole, ktere muze ovlivnit  cteci  obvody
  mgf. Nastavte polohu mgf  na  nejmensi  ruseni  -  bez  kazety
  zapnout prehravani (PLAY), reg. hlasitosti na max.,  natacenim
  nebo vzdalovanim od  TVP  najit  misto  s  nejmensim  rusenim.
2/U SAPI-1 neni automaticka kontrola  ctenim  po  zapisu.  Proto
  udrzujte peclive cistotu hlavy, kazety udrzujte  v  bezprasnem
  prostredi, previnute, v orig. obalu. Kazety  EMGETON  pouzijte
  jen po prezkouseni.  Doporucujeme  pouzivat  kazety  ORWO  K60
  (nebo zahranicni LH). Zaznam zacinejte nejmene  10  sekund  od
  zacatku kazety, uvodni cast byva znehodnocena slepkou - prosa-
  kovanim lepidla.
3/Vzdy zhotovujte nejmene dve kopie souboru (programove vybaveni
  to dovoluje). Okamzite  po  zaznamu  si  overte  prikazem  K_D
  spravnost souboru.



                     TABULKA SLUZEB OS MIKOS
                     =======================

           800H      zacatek tabulky sluzeb
            +0       horky start MIKOSu
            +3       studeny start MIKOSu
            +6       REZERVOVANO - NEPOUZIVAT !
            +9       otevreni vst. souboru - 'find'
           +0C       otevreni vyst. souboru - 'open'
           +0F       uzavreni vyst. souboru - 'close'
           +12       zavedeni binarniho pgm. - 'load'
           +15       ulozeni binarniho pgm. - 'save'
                                                     MIKOS 5

                      FORMAT DAT NA KAZETE
                      ====================

     Data jsou ukladana v nasledujicim formatu:

----------------------------------------------------------------
| meziblok.mezera | 10 | 10 | 10 | kod | 255 byte data | nazev |
----------------------------------------------------------------

----------------------------------------------------------------
| c.bloku | c.souboru | kontr.suma | 10 | 00 | meziblok.mezera |
----------------------------------------------------------------

- meziblokova mezera ma dve delky  - kratka cca 100 ms (typ B)
                                     dlouha cca  1 s   (typ A)
- 10H         synchronizacni znaky
- kod         01   zahlavi souboru
              04   koncovy blok souboru
              :    zahlavi pasky (oznaceni pri INIT)
              A    znakovy soubor
              B    binarni soubor
- blok dat    255 byte (kod+blok=funkcni blok 256 byte,  ostatni
              znaky tvori ramec funkcniho bloku pro  os  MIKOS).
- nazev       11 byte oznaceni souboru
- c.bloku     cislo bloku v souboru (hex)
- c.souboru   cislo souboru
- kontr.suma  kontr. cislo - negace souctu vsech znaku vc. Ramce
- ukonceni    ukonceni bloku - 10H, 00H



                     FORMAT FUNKCNICH BLOKU
                     ----------------------

Nazev kazety
----------------------------------------------------------------
| :  | 64 byte nazev kazety | vypln do 256 byte - prazdne 00H  |
----------------------------------------------------------------

Hlavicka souboru
----------------------------------------------------------------
| 01 | 11 byte nazev souboru | poznamky do 64 byte |   vypln   |
----------------------------------------------------------------

Koncovy blok
----------------------------------------------------------------
| 04 | zbytek dat typu 'A' nebo 'B' |        vypln             |
----------------------------------------------------------------

ASCII blok
----------------------------------------------------------------
| A  | ASCII data                                              |
----------------------------------------------------------------

Binarni blok
----------------------------------------------------------------
| B  | < | st.adr | konc.adr | > | KS-1 |  DATA         | KS-2 |
----------------------------------------------------------------



                                                     MIKOS 6

Poznamky: - Cisla 10, 01, 04, 00 jsou hexadecimalni.
          - znaky A, B, <, > jsou znakove konstanty.
          - "04" je poslednim blokem souboru  a  muze  obsahovat
            zbytek dat typu A nebo B.
          - "A" soubor obsahuje znaky ASCII  kodu  a  data  jsou
            ukoncena znakem "SUB" (CTRL Z  -  1AH).  Bloky  jsou
            oddelovany dlouhou mezerou (cas pro zpracovani dat).
          - "B" je binarni soubor. Obsahuje hlavicku, tj. adresu
            ulozeni  do  pameti,  koncovou  adresu  a  kontrolni
            soucet hlavicky. Adresy jsou ramovany  znaky  "<"  a
            ">". Kontrolni soucet  (KS-1)  chrani  program  pred
            nespravnym ulozenim (popr. prepisu). Dale  nasleduji
            vlastni binarni data,  ktera  jsou  rovnez  ukoncena
            kontrolnim souctem (KS-2). Format "B" pouziva kratke
            meziblokove mezery.




                                                      TOOL 1

****************************************************************
*                                                              *
*                      TOOL  ASM-80  V4.0                      *
*                                                              *
****************************************************************
                                                 Duben 1985


     Soubor  programu  TOOL  obsahuje  programy  pro  praci    v
assembleru, editaci, ladeni a  predstavuje  programove  vybaveni
pro "maly" vyvojovy system.

   Programy lze rozdelit do peti zakladnich skupin:
         1/ ASSEMBLERY        -   textovy, jednoradkovy
         2/ EDITOR  PEDIT     -   priprava,opravy  a  modifikace
                                  zdrojovych textu
         3/ TRASOVACI PGM     -   pro ladeni assemblerovych pgm.
         4/ ZPETNY PREKLADAC  -   prevod  strojoveho  kodu  do
                                  symbolicke verze
         5/ POMOCNE PROGRAMY  -   zakladni  sluzby  monitoru  a
                                  jeho rozsireni

     Soubor programu TOOL poskytuje uzivateli assembleru  ucinne
prostredky  pro  pripravu,  preklad  a  odladeni   uzivatelskych
programu.


                          SEZNAM POVELU
                          =============

   +A  assembly       start assembleru a volba rezimu
   +B  begin          nulovani tabulky symbolu, podminek,
                      nastaveni stacku a registru
   +C  condition      nastaveni podminek traceru
   +D  display        zobrazeni oblasti pameti
   +E  eof            derovani konce souboru a start. adresy
   +F  find           vyhledani retezce znaku v pameti
   +G  go to          start od dane adresy s breakpointy
   +H  hexadecimal    hexadecimalni soucet a rozdil
   +I  input          cteni portu
   +J  jump           skok na zavedeny program (viz .J)
   +K  kazeta         prikazy operacniho systemu MIKOS
   +L  line assembly  jednopruchodovy primy prekladac
   +M  move           presun obsahu useku pameti
   +N  null           nulovani registru a podminky (viz +B)
   +O  output         vyslani dat na port
   +P  PEDIT          start editoru PEDIT
   +Q  quit           navrat do monitoru
   +R  read           cteni HEX souboru
   +S  substitute     zmena obsahu pameti
   +T  trace          start traceru, podminky zadane +C
   +U  undef.code     zobrazeni pameti v ASCII
   +V  verify         deassembler - zpetny prekladac
   +W  write          zapis HEX souboru
   +X  examine r.     zobrazeni a zmena obsahu registru
   +Y  verify+punch   deassembly se souc. zapisem na mgf


Poznamka: TOOL se ohlasuje napovednym znakem '+'.

Poznamka pro Verify a Find:
Po znaku "," se prejde do  rezimu  Substitute;  je  mozne  delat
opravy, zmenit adresu a po <cr> se vratit do puvodniho povelu.
                                                      TOOL 2

1/ PREKLADACE
=============
         Soucasti  souboru  TOOL  je    prekladac    absolutniho
       assembleru  -  prekladac  "memory  assembler"    umoznuje
       preklad zdrojoveho textu  umisteneho  v  pameti  nebo  na
       uzivatelskem  zarizeni  (kazeta).  Tento  prekladac    je
       dvojpruchodovy.  Podrobny  popis  je  uveden  v  kapitole
       Assembler. Zde jsou uvedeny prikazy pro rizeni prekladace

    Vyvolani: +A                ;vyvolani textoveho prekladace


         Dale soubor TOOL obsahuje jednoradkovy  jednopruchodovy
       assembler, ktery lze pouzit pro  opravy  nebo  jednoduche
       programy.

    Vyvolani: +L=<adr>          ;vyvolani jednoradkoveho assemb.

       Po vyvolani se ukazatel na obrazovce  nastavi  do  stredu
       nasledujiciho radku a ceka na vstup radku assembleru.  Po
       <cr> provede preklad (stroj. kod se predradi pred text) a
       ceka na vstup noveho textu. Ukonceni se  provede  zadanim
       prazdneho radku (jen <cr> nebo END <cr>). Povelem +L  lze
       zapsat strojovy kod na libovolnou adresu operacni pameti.
       Pri chybe operatora se vrati na puvodni adresu, je  mozne
       opakovat radek. Je mozne pouzit symbolickych navesti, ale
       odkazy jsou mozne jen dopredu (tj. na nizsi adresy).
           Priklad:  +L=7000
                                   START: MVI  A,1 ;zdroj
                      7000  3E 01  START: MVI  A,1 ;po <cr>
                                     .
                                     .             ;dalsi vstupy
                                     .
                                   <cr>            ;ukonceni


    MEMORY ASSEMBLER
    ----------------
       a/ ZADANI MODU PRO PREKLAD
           -R  "Reader" file - cte zdrojovy text z vnejsi pameti
               Druhy pruchod vyzaduje nove vyhledani souboru.
           -X  Assembly -  preklad  zdroje  ulozeneho  v  pameti
               textovym editorem PEDIT.

       b/ RIZENI PRUCHODU  (PASS)
           -1  1. pruchod se provede automaticky po zadani mode.
           -2  2. pruchod a vypis programu
           -P  2.  pruchod  se  strankovanim  po  20    radcich.
               Pokracuje po <sp>.
           -S  Vypis seznamu symbolu  s  prirazenymi  hodnotami.
           -N  Pri 2. pruchodu jen vypis chyb (NOLIST).
          <cr> Navrat do TOOLu.
           ^A  CTRL P - pripojeni a odpojeni tiskarny.
           -Q  Navrat do TOOLu.

       c/ HLASENI CHYB
            U  undefined   nedefinovany symbol ci instrukce
            O  operand     chybny operand
            M  multiply    vicenasobna definice
            L  label       chyba v navesti
            F  full table  plna tabulka symbolu
            W  warning     neulozen kod (v X-modu >2kB programu)
            X  expression  chyba ve vyrazu
                                                      TOOL 3

2/ EDITOR - PEDIT
=================
         Editor slouzi priprave, oprave a  modifikaci  textovych
       souboru, ktere mohou byt ulozeny v pameti nebo na vnejsim
       mediu, nebo jejich  kombinace  (doplneni  souboru  atd.).
       Podrobny popis je v kapitole PEDIT.

    Vyvolani: +P                ;je mozne i z monitoru .P

         Po ukonceni edice a ulozeni na kazetu lze program ihned
       prelozit (povel +A, mode X).
       Pozn. Navrat z PEDITu do TOOLu se  provede  *J<esc><esc>.



3/ TRASOVACI A LADICI PROGRAM TRACER
====================================
         Trasovaci  program  umoznuje  sledovat  chovani,   chod
       programu a provadet v  programu  zmeny.  Velmi  zrychluje
       ladeni na systemu bez emulatoru.  Zpusob  prace  se  ridi
       podle nastavenych podminek (viz  prikaz  +C),  nastavenim
       pri spusteni Traceru (+T). Dale  je  mozno  i  v  prubehu
       trasovani  menit  podminky.  Mezi  trasovaci  prikaz  lze
       zaradit i prikaz G s parametry (breakpointy), kdy dojde k
       preruseni chodu programu na zadanych bodech.  Useky  mezi
       breakpointy probihaji v realnem case.



    +C - CONDITION      Nastaveni podminky pro rizeni trasovani.
    --------------      Muze byt zvolena jen jedna podminka.

          B  brief      vypisuje PC a instrukci
          C  call       trasuje jen hlavni program, podprogramy
                        v realnem case
          L  loop       trasuje jen instrukce skoku
          M  mask       trasovani zvolene instrukce s maskou
                             <n=1-3> ... pocet byte instrukce
                             <data>  ... zadana data (1-3 byte)
                             <maska> ... 1-3 byte masky (AND)
          N  null       zruseni podminky (implicitni)
          R  register   vypis jen pri shode dat s registrem
                             <registr>,<data>
          S  stack      vypis pri vyboceni stacku z dane oblasti
                             <l.adr>,<h.adr>
          W  window     sleduje program v danem useku pameti
                             <l.adr>,<h.adr>

        Priklady:    +C:M=2              ;dvojbyteove instrukce
                      =00 =52 (nebo 'R)  ;hleda instrukci s 'R'
                     +C:RA=01            ;trasuje jen pri A=01H


    +T - VOLBA REZIMU TRASOVANI
    ---------------------------

          +T=<cr>             pokracuj od adr.  v  PC  po  prvni
                              breakpoint
          +T=<sp>=<break><cr> pokracuj od PC, od break zobrazuj
          +T=<adr><cr>        start.adr.=break ... ihned trasuje
          +T=<start>=<break1>=<break2> usek mezi start a break v
                              real. case, po breakpointu trasuje

                                                      TOOL 4

     Priklad vypisu trasovani:

                 --P-7010 A-00 F-56 B-01 C-00 D-00 E-00
                  H-70 L-4E S-4380 :FFFF  @CD   ZPSC
                  7010  CD 87 70     CALL  DUMMY

        : oznacuje obsah vrcholu stacku
        @ oznacuje data v pameti <HL>
     ZPSC jsou rozdekodovane flagy (zero, parity, sign, carry)


     Vlastni rizeni prubehu trasovani
                  <sp>     ...  dalsi instrukce
                  <cr>     ...  konec
                   ,       ...  nova podminka (+C)
                  ^X (ETX) ...  preruseni trasovani



4/ ZPETNY PREKLADAC - DEASSEMBLER
=================================
       Umoznuje kontrolu strojoveho kodu prevodem do symb. Tvaru

    Vyvolani: +V                zobrazovani na obrazovce
              +Y                zobrazeni a ulozeni na kazetu

       Zpetny prekladac  pracuje  po  radcich.  Dalsi  radek  se
       zobrazi po <sp>; <cr> ukonci preklad.
         Prikazy +V, +Y  maji  jeden  parametr  -  adresu  mista
       pameti, odkud se provadi zpetny preklad.

    Priklad:  +V=7000
                    ...   vypis radky
              <sp>  ...   dalsi radek
               ,    ...   prechod do Substitute, kde lze provest
                          zmeny; po <cr> navrat do deassembleru
              <cr>  ...   konec prekladu

    Poznamka: Stejny postup plati i pro prikaz +Y (se  zapisem).
              Pozor, zdroj. program se zapisuje do bufferu a  na
              kazetu se zapise  az  po  jeho  naplneni  nebo  po
              prikazu  K_C  (uzavreni  souboru).  K_C  se   musi
              provest vzdy po skonceni zpetneho prekladu,  jinak
              by pri cteni doslo k chybe.

    POZOR !   Pri  povelu  +B,  +N  se  rusi  tabulka   symbolu,
              porizena pri  prekladu.  Assembler  a  deassembler
              pouzivaji  spolecnou  tabulku    symbolu,    takze
              prikazem  +L  a  EQU  lze  tabulku  symbolu  behem
              deassemblovani doplnovat.

                                                      TOOL 5

5/ POMOCNE PRIKAZY
==================
         Umoznuji vyuzit sluzeb monitoru bez navratu do monitoru
       a zpet do TOOLu. Dale pak rozsiruji nektere moznosti (+H,
       +F), nektere prikazy maji jiny vyznam nez v monitoru  (I,
       O, F, Q).



                     POPIS PRIKAZU


    +B - BEGIN
    ----------
         Pocatecni nastaveni podminek a nulovani tabulky symbolu
       (jine nez .B v monitoru).

    +D - DISPLAY
    ------------
         Zobrazeni obsahu pameti (viz monitor)

    +E - EOF
    --------
         Zapis koncoveho bloku se start. adresou ve formatu  HEX
       (viz monitor)

    +F - FIND
    ---------
         Vyhledani dane instrukce v pameti a moznost  modifikace
       (jine nez .F, kde plni pamet).

       Format:       +F=<l.adr>=<d.adr>  ;zadani rozsahu adres
                       =N                ;pocet byte instrukce
                       =<data1>= ... <dataN>    ;hledany obsah
                       =<mask1>= ... <maskN>    ;maska

         Program provede log. soucin obsahu pameti  s  maskou  a
       vysledek porovna se zadanymi daty. Je-li rovnost, provede
       vypis adresy a zdroj. textu instrukce. Tak je mozno volit
       i tridu instrukci (napr. IN, OUT)  nebo  najit  instrukce
       pracujici s urcitou oblasti pameti (viz priklady).

       Priklad: 1/ Pozaduje se nalezeni vsech MOV B,D (kod 42H)
                   v pametovem useku 7000H-7100H.
                     +F=7000=7100<sp>    ;rozsah pameti
                       =1<sp>            ;1 byte instrukce
                       =42<sp>           ;hledany kod
                       =FF<sp>           ;maska
                                         ;vypis vsech nalezenych
                         ...              adres a zdroju v danem
                                          rozsahu
                           <sp> ... pokracuje v hledani
                            ,   ... skok do substitute
                           <cr> ... konec hledani

                2/ Vyhledani 3-bytovych instrukci, ktere pracuji
                   s adresou 20H.
                     +F=7000=7050<sp>
                       =3<sp>
                       =C3=00=20<sp>
                       =00=FF=FF<sp>


                                                      TOOL 6

    +G - GO TO
    ----------
         Spusteni programu (viz prikaz monitoru .G).


    +H - HEXADECIMALNI SOUCET A ROZDIL
    ----------------------------------
       Format:       +H=<xx>=<yy>        ;xx a yy jsou hex cisla
                     ssss    rrrr       ;vysledek
                                            ssss = soucet
                                            rrrr = rozdil


    +I - INPUT
    ----------
         Vstup dat ze zadaneho portu (lisi se od .I v  monitoru,
       kde nastavuje a nuluje prirazeni User=1,2).

       Format:       +I=xxxx=<port>      ;vypise nastavenou adr.
                       =dd               ;data z portu

       Priklad:      +I=7000=10<cr>      ;port 10H
                       =F2               ;vstupni data


    +J - JUMP
    ---------
         Skok na posledni zavedeny program (viz .J v  monitoru).


    +K - KAZETA
    -----------
         Vyvolani systemu MIKOS (viz monitor a MIKOS  .K_X).


    +M - MOVE
    ---------
         Presun oblasti pameti (viz prikaz .M monitoru).


    +N - NULL
    ---------
         Nulovani registru a podminky stejne jako v prikazu  +B.
       Ma jiny vyznam nez .N v monitoru.


    +O - OUTPUT
    -----------
         Vystup dat na port (jiny vyznam nez .O v monitoru).

       Format:       +O=xxxx=<port>=<data>

       Priklad:      +O=10=FF            ;vystup na port 10
                                          port ma spravnou adr.
                                          proto staci zadat <sp>


    +Q - QUIT
    ---------
         Navrat do monitoru.



                                                      TOOL 7

    +R - READ
    ---------
         Cteni HEX souboru (viz prikaz .R monitoru).



    +S - SUBSTITUTE
    ---------------
         Zmena obsahu pameti (viz prikaz .S monitoru).


    +U - UNDEFINED CODE
    -------------------
         Zobrazeni obsahu pameti v ASCII kodu  (nema  ekvivalent
       v monitoru).

       Format:       +U=<l.adr>=<h.adr>



    +W - WRITE
    ----------
         Zapis programu v HEX formatu (viz .W monitoru). Uzavrit
       prikazem +E.

       Priklad:      +W=4400=5FFF<sp>    ;zapis TOOLu
                         ...             ;komunikace s MIKOSem
                         ...             ;zapis na kazetu
                     +E=4400             ;ukonceni-zapis start
                                          adresy



    +X - EXAMINE REGISTER
    ---------------------
         Zobrazeni a zmena obsahu registru (obdoba .X  monitoru,
       lisi se tvarem vypisu  -  v  TOOLu  se  nevypisuji  nazvy
       registru; je take mozno zadat po apostrofu  znak ASCII ).

       Format:       +X<ozn.reg>=yy      ;yy=novy obsah reg.
                     +X<cr>              ;celk. vypis vsech reg.
                                          bez moznosti zmeny

       POZOR!  Pri zmene registru  prikazem  .X  v  monitoru  se
               zmeny nepromitnou do registru v TOOLu.  Zmeny  se
               musi  provadet  primo  prikazem  +X  (a  naopak).
               Registry jsou uchovany pri skoku  do  monitoru  a
               pri navratu jsou obnoveny.




                                                   ASM-80  1

****************************************************************
*                                                              *
*            ASSEMBLER  -  JAZYK SYMBOLICKYCH ADRES            *
*                                                              *
*         ABSOLUTNI PREKLADAC ZE SOUBORU PROGRAMU TOOL         *
*                                                              *
****************************************************************
    TOOL ASM-80  V4.0                             Duben 1985


    Assembler je strojove orientovany jazyk, ktery umoznuje max.
vyuziti mikroprocesoroveho systemu. Prekladac zpracovava  zdroj.
text programu, generuje strojovy kod a uklada  jej  do  operacni
pameti. Assembler umoznuje:
            - mnemotechnicky zapis typu operace
            - symbolicke oznaceni mista v pameti
            - v poli operandu pouzivat vyrazy

    Dalsim  typem  prikazu  assembleru  jsou  direktivy,   ktere
negeneruji kod, ale ridi chod prekladu. Direktivy umoznuji:
            - definovat jmena promennych prip. priradit hodnoty
            - generovani konstant a znakovych retezcu
            - rezervovat misto v pameti
            - podmineny preklad
            - rizeni pocitadla adres
            - ukonceni prekladu




1/ PRAVIDLA ZAPISU
==================

         TVAR ZDROJOVE RADKY
         -------------------

    NAVESTI:       TYP OPERACE       OPERAND(Y)      ;KOMENTAR

        - Nektera pole nemusi byt pouzita
        - Pole musi byt oddelena  <sp>,  tabulatorem  HT  <tab>
          nebo ";" (u komentare).
        - Kazda instrukce, direktiva musi byt  cela  na  jednom
          radku, ukoncena <cr> (program pro vstup z  klavesnice
          doplni <lf> ).
        - Pokracovaci radky nejsou povoleny.
        - Lze pouzit radek pouze s komentarem.
        - Maximalni delka radku je 80 znaku.




         MNOZINA ZNAKU
         -------------

        - pismena  A - Z
        - cislice  0 - 9
        - specialni znaky + - * / , : $ @ ? ' ; . <sp> <cr> <lf>
        - libovolny znak v ASCII kodu muze byt v retezcich  mezi
          apostrofy nebo v komentarich




                                                   ASM-80  2

         OMEZOVACE A ODDELOVACE
         ----------------------

        <sp>  (mezera)            - oddeleni poli
         ,    (carka)             - oddeleni operandu
        ' '   (dvojice apostrofu) - omezovac znak. retezcu
         ;    (strednik)          - uvadi pole komentaru
         :    (dvojtecka)         - ukonceni navesti
        <tab> (tabulator)         - oddeleni poli

        Poznamka: Mezer a tabulatoru muze byt v zajmu citelnosti
                  vice i v prip. kombinaci.



         POLE NAVESTI
         ------------

           Navesti je nepovinne; musi byt jedinecne a  nesmi  se
        vyskytovat vicekrat. Je mozno jedno misto  oznacit  vice
        navestimi (na prazdne radce).
           Delka  navesti  je  1  az  5  znaku,  pripustna  jsou
        pismena, cislice a znaky ? a @; na prvnim miste musi byt
        pismeno. Navesti musi byt ukonceno dvojteckou (u EQU  je
        v poli navesti jmeno, ktere  se  neukoncuje  dvojteckou,
        ale <sp> ci <tab>).



         POLE TYPU OPERACE
         -----------------

           Pole  typu  operace  obsahuje  mnemotechnicky   nazev
        instrukce ci direktivy (podle pravidel assembleru I8080)



         POLE KOMENTARU
         --------------

           Pole  komentaru  neplni  zadnou  funkci,  musi    byt
        zahajeno  strednikem (;).



         TYPY OPERANDU
         -------------

           Operandy  mohou  byt  ctyr  typu,  ktere  lze  zapsat
        ruznymi zpusoby.

           a/ REGISTR
                      Jmeno    | B  C  D  E  H  L  M  A
                     -----------------------------------
                      Hodnota  | 0  1  2  3  4  5  6  7


           b/ DVOJICE REGISTRU

                       B   D   H   PSW   SP



                                                   ASM-80  3

           c/ PRIMY OPERAND

                     - Hex. cislo         10H, 0FFH
                     - Desitkove cislo    16, 16D
                     - Binarni cislo      10110B
                     - Znak. konstanta    'A'
                     - Pocitadlo adres    $
                     - Jmeno s priraz.    (napr. DES EQU 10
                       hodnotou                      MVI  A,DES)
                     - Navesti
                     - Vyraz


           d/ ADRESA PAMETI

                     obdobne jako ad c/ mimo znakovou konstantu


    Poznamky:  - apostrof lze zapsat     MVI D,'''
               - $ znamena okamzity stav PC s tim, ze ukazuje na
                 prvni byte instrukce
               - ve vyrazu nejsou  povoleny  zavorky,  vyraz  se
                 vyhodnocuje zleva doprava
                 Pripustne operatory:
                          + - * / HIGH LOW NOT AND OR XOR
                          SHR (posuv o N bitu vpravo, N=0-15)
                          SHL (   dtto  vlevo   )
                 Operatory jsou binarni (krome HIGH, LOW,  NOT);
                 +,- mohou byt unarni ve vyznamu znamenka cisla.




2/ DIREKTIVY ASSEMBLERU
=======================

      Slouzi k rizeni prekladace ci definici jmen, konstant atd.

           EQU    Prirazeni hodnoty jmenu
           DB     Definice byte; max. 80 znaku retezec nebo max.
                  10 vyrazu
           DW     Definice slova (2 byte); max. 5 vyrazu.
                  Pri pouziti text. retezce (1 az 2 ASCII  znaky
                  mezi  apostrofy)  se  znaky  v  ramci    slova
                  ukladaji v opacnem  poradi;  pri  zadani  vice
                  znaku je hlasena chyba.
           DS     Rezervovani mista v pameti
   [NAV:]  END    Ukonceni zdroj. textu; smi byt jen jeden, musi
                  byt poslednim prikazem textu.
   [NAV:]  ORG    Nastaveni  pocitadla  adres.  Je-li  pred  ORG
                  navesti,  je  mu  prirazena    hodnota    pred
                  zpracovanim ORG.
           .LIST  Povoleni vypisu (implicitni).
           .XLIST Zakazani vypisu, jen vypis chyb.
           TITLE  'NAZEV'   Pojmenovani programu; pokud  program
                  nezacina  touto  direktivou,   musi    zacinat
                  prazdnym radkem.

     Podmineny preklad umoznuje vytvaret ruzne varianty programu

           IF  <vyraz>     je-li vyraz nenulovy, provede se cast
           ELSE            mezi IF a ELSE, jinak za ELSE. ( ELSE
           ENDIF           neni povinne; povolena 1 uroven IF ).
                                                   ASM-80  4

3/ PRACE S PREKLADACEM ASSEMBLERU
=================================

         Prekladac je soucasti TOOLu  (na  kazete).  Po  nahrani
       TOOLu systemem  se  provede  prikazem  monitoru  skok  do
       programu TOOL - prikaz .T . TOOL se  ohlasi  znakem  "+".
       Spusteni assembleru se provede prikazem +A.
         Preklad  je  dvojpruchodovy  (1.  pruchod  se   provede
       automaticky). Po spusteni se prekladac ohlasi na displeji
       a pozaduje zadani modu. Mod urcuje, kde je ulozen  zdroj.
       text programu.

           X  -  zdrojovy program je v pocitaci po edici PEDITem
                 (max. 2kB programu)
           R  -  zdrojovy  text  je  na  pasce  (reader);  druhy
                 prubeh  vyzaduje  nove  vyhledani,  proto    se
                 doporucuje nahrat zdrojovy program 2x za  sebou
                 (je to take  bezpecnostni  kopie).  Program  se
                 uklada od adr. 7000H az do konce pameti.




    ROZDELENI PAMETI A ZPUSOB ZAPISU PRELOZENEHO PROGRAMU
    -----------------------------------------------------


             MOD X                     MOD R

         6000H -------------       6000H -------------
               |  TABULKA  |             |  TABULKA  |
               |  NAVESTI  |             |  NAVESTI  |
         7000H -------------       7000H -------------
               | PRELOZENY |             |           |
               |  PROGRAM  |             | PRELOZENY |
         7800H -------------             |           |
               |  ZDROJOVY |             |  PROGRAM  |
               |   TEXT    |             |           |
               |     .     |             |     .     |
               |     .     |             |     .     |
               |     .     |             |     .     |
               |           |             |           |
         FFFFH -------------             -------------





    RIZENI PRUCHODU  (PASS)
    -----------------------

         Urcuje provadeny pruchod prekladacem. V prvnim pruchodu
       se vytvari tabulka symbolu, ve  druhem  pruchodu  probiha
       vlastni preklad.

           1   prvni pruchod (automaticky pri spusteni mody X,R)
           2   druhy pruchod (cely program)
           P   druhy pruchod (strankovany vypis)
           Q   navrat do TOOLu
           S   vypis tabulky symbolu (navesti)
           N   druhy pruchod pouze vypis chyb (NOLIST)
          <cr> navrat do TOOLu
           ^A  rizeni tiskarny  (shift A,CTRL P), plati i v TOOL
                                                   ASM-80  5

    HLASENI CHYB PREKLADACEM
    ------------------------

           U   undefined     nedefinovany symbol
           O   operand err   chybny operand
           M   multiply      vicenasobna definice
           L   label err     chyba v navesti
           F   full table    plna tabulka symbolu
           W   warning       varovani  -   neulozil
                             se strojovy kod  (>2kB
                             programu v modu X)
           X   expression    chyba ve vyrazu




                                                     PEDIT 1

****************************************************************
*                                                              *
*                    TEXTOVY EDITOR   PEDIT                    *
*                                                              *
*     Pro TV displej  AND 1       Ze souboru programu  TOOL    *
*                                                              *
****************************************************************
                                                   Unor 1985


    Textovy editor PEDIT (Pidi-EDITor)  je  urcen  k  porizovani
textovych souboru. Delka radku  neni  omezena,  na  displeji  se
zobrazuje 40 znaku. Spodni radek obrazovky slouzi jako prikazovy
radek. Basic  muze  pracovat  s  delkou  radku  132  znaku,  pro
assembler je max. 80 znaku. Editor PEDIT zabira 2kB pameti.


    PEDIT ma dva rezimy prace:

 1/ PRIMY - "VIDEOMODE", kdy kod  povelu  je  prvnim  znakem  na
          prikazovem radku. Povel se ihned provede a zobrazi  se
          modifikovany text, bez potvrzeni prikazu  dvema  znaky
          <esc>, ktery se na obrazovce zobrazuje jako $. Tak  je
          mozno napr. menit polohu kurzoru atd.

 2/ PRIKAZOVY - "COMMAND MODE", kdy povel  se  neprovadi  ihned,
          zobrazuje se v prikazovem radku; jednotlive povely  se
          ukoncuji <esc> a provedou se az po zadani dvou  <esc>.
          Jednopismenove znaky se nemusi oddelovat pomoci <esc>,
          napr. 15L3CV$$. Do ukonceni povelu  je  mozno  prikazy
          opravovat nebo rusit znakem <del> nebo <bs>.

      Prikazy, ktere jsou uvedeny v primem  rezimu  (videomodu),
    pracuji i v prikazovem rezimu, je-li na prvnim miste  uveden
    pocet opakovani nebo jiny povel.

          Napr.  *L            provede se okamzite posun o radek
                 *3L$$         posun o 3 radky po zadani 2x<esc>
                 *3LV$$        posun a zobrazeni textu
                 *TL$$         provede se az po potvrzeni



    Textovy editor pracuje s dynamickym "oknem" - jak vertikalne
tak i horizontalne. Jak bylo uvedeno, radek muze obsahovat napr.
132 znaku, pricemz je zobrazeno "okno"  40-ti  znaku  na  radku,
ktere  se  automaticky  posunuje  pri  posunu  ukazovatka.    Ve
vertikalnim smeru se "okno" automaticky posouva a zobrazuje cast
editovaneho textu. Na konci radku se zobrazuje znak  "^".  Je-li
radek delsi a neni-li konec radku  zobrazen,  potom  se  znak  ^
nezobrazi. Tak  je  obsluha  informovana,  ze  radek  pokracuje.


Poznamky: - V popisu prikazu  je  pouzit  znak  "%"  ve  vyznamu
            volitelneho cisla opakovani  (-65535 az 65535).
          - Uvede-li se tam, kde je v syntaxi prikazu %, znak #,
            tak to znamena "vsechno", tj. nejvyssi kladne cislo.
          - Prikazy <CTRL znak> plati pro klavesnici CONSUL 259,
            prikazy <shift znak> jsou pro  ANK 1.
          - Pri  tvorbe  dlouhych  tabulek  lze   take    pouzit
            rezervace textu na obrazovce (CTRL  Q,  shift  Q)  v
            rozmezi  nekolika  radku  a  takto  nechat    trvale
            zobrazene napr. zahlavi tabulky.
                                                     PEDIT 2


                       ROZDELENI OBRAZOVKY
                       ===================

               ------------------------------------
               |      \                           |
               |      \                           |
               |      \                           |
               |      \                           |
               |      } Zobrazovany text          |
               |      /                           |
               |      /                           |
               |      /                           |
               |      /                           |
               |     *  Prikazova radka           |
               ------------------------------------






                       DEFINICE VIDEOMODU
                       ==================


    Pro  urychleni  prace  jsou  nektere   povely   provadeny  s
okamzitym zobrazenim noveho stavu  textoveho  bufferu.  Videomod
plati jen tehdy, je-li znak prvnim v prikazovem radku. Pak  neni
treba potvrzovat <esc><esc>, povel se provede automaticky vcetne
zobrazeni modifikovaneho textu. Videomod plati  pro  nasledujici
prikazy:
            B, Z, I, X, Y, V, +(0-9), CTRL D, CTRL I
                 CTRL K, L, <cr>, <sp>, <bs>, ^S




     TEXTOVY BUFFER                     OKNO (WINDOW)

    ----------------              - ------------------------
B...|              |              |                        |
    |   Editovany  |              |      Zobrazovany       |
    |     text     |              |         text           |
    |              |              |                        |
    |              |              |  $-<cr>                |
    ----------------              |    <bs>-$  *  $-<sp>   |
Y...|              |              |  $-L                   |
    ----------------              |                        |
V...|      .       | kurzor       |                        |
    ----------------              --------------------------
X...|              |
    ----------------
    |              |
    |              |
Z...---------------- konec          $ - nova poloha kurzoru
    |              | textu
    |              |                * - stavajici poloha
    |    volne     |
    |              |
    |              |


                                                     PEDIT 3

                      POPIS PRIKAZU EDITORU
                      =====================


1/ PRIKAZY PRO RIZENI VIDEOMODU
-------------------------------

         1.1 VKLADANI TEXTU

       I     zobrazi  6  radku  predchoziho  textu   a    vymaze
             obrazovku od mista, kde  bude  vkladan  novy  text.

                        <novy text> <esc> <esc>

             Po ukonceni vkladani se zobrazi novy text  doplneny
             novym textem v okoli kurzoru.  Behem  vkladani  lze
             znakem <del> a <bs>  rusit  chybne  napsane  znaky.

    CTRL I   vlozi 1 znak na misto, na ktere ukazuje ukazatel  a
     (tab)   zobrazi text. Po <cr> automaticky vlozi <lf>. Znaku
             na klavesnici ANK 1 odpovida  ^<sp>.

      %A     precte (z vnejsiho zarizeni RI) % radku a ulozi  je
             za text v textovem  bufferu.  V  pripade  prazdneho
             bufferu se uklada od zacatku. Muze se kombinovat  s
             "W", ktery vyklizi buffer.
             Pozn. Pred pouzitim PEDITu je vhodne pouzit prikazu
             monitoru .I=1, .O=1 a  tim  nastavit  podminky,  ze
             neni zadny v/v soubor rozpracovan.
             Prikaz %A  neni  prikazem  videomodu,  ale  je  zde
             uveden,  protoze  se  casto  uziva  v  kombinaci  s
             prikazy pro vkladani textu.


         1.2 PREMISTOVANI KURZORU

             je mozne nasledujicimi znaky:
                      -----
                      | B |            begin - zacatek bufferu
                      -----
                      -----
                      | Y |            posuv okna ? videostranky
                      -----
             - - - - - - - - - - - -
             |        ------       |
             |        |<cr>|       |   posuv o radek
             |        ------       |
             |------  -----  ------|
             ||<bs>|  | V |  |<sp>||   posun o znak
             |------  -----  ------|   zobraz okno "V"
             |        -----        |
             |        | L |        |   posuv o radek
             |        -----        |
             - - - - - - - - - - - -
                      ------
                      |+0-9|           posuv o N radku
                      ------
                      -----
                      | X |            posuv okna
                      -----
                      -----
                      | Z |            end - konec textu
                      -----
                                                     PEDIT 4

    B   nastavi  pointer  na  zacatek  textu  a  zobrazi  buffer
    Z   nastavi  pointer  za  konec  textu  a  zobrazi    buffer
    F   find - vyhleda a zobrazi hledany text:
                 *F PAVEL $$       vyhleda a zobrazi text  PAVEL
        Kurzor se umisti za nalezeny text. Prikaz neni  prikazem
        videomodu (musi se ukoncovat <esc><esc>).
    V   view - zobrazi text  v  okoli  kurzoru;  automaticky  se
        provadi po ukonceni nekterych povelu (S, F, CTRL D, ...)
    X   zobrazi dalsi text (videostranku)
    Y   zobrazi predchozi text (videostranku)
   +%   presune kurzor o 0 az 9  radku  dolu    (zde  %=0-9  !);
        +0 presune kurzor na zacatek radku



         1.3 POSUVY UKAZOVATKA  (KURZORU)

    L     posuv o 1 radek dolu                  <cr>
   <cr>   posuv o 1 radek nahoru                  |
                                            <bs>-   - <sp>
   <bs>   posuv o 1 znak doleva                   |
   <sp>   posuv o 1 znak doprava                  L



         1.4 RUSENI TEXTU

   CTRL K        Vymaz radku z klavesnice CONSUL,  u  ANK  1  se
   %K $$         nepouziva videomod. Text se zrusi od  ukazatele
                 az po konec radku.

   CTRL D        Vymaz znaku pro CONSUL
   %D $$         Vymaz znaku pro ANK 1



         1.5 ZMENA TEXTU

    S     substitute -  vyhleda  puvodni  text  a  po  potvrzeni
          znakem "Y" zameni text, jinak vyhleda dalsi pro zamenu
                 *S PAVEL $ PETR $$  vyhleda text "PAVEL"  a  po
                                     potvrzeni ho zameni za text
                                     "PETR"
          Neni prikazem videomodu (musi se ukoncovat <esc><esc>;
          casto se pouziva v kombinaci s videomodem

    ^S    substitute znak - zameni znak, na ktery ukazuje kurzor
          novym znakem.
                 ^S A   ...  neni treba potvrzovat, v miste kurz
                                     se objevi "A"

                FIND                    SUBSTITUTE
       ----------------------     ----------------------
       |       . . .        |     |       . . .        |
       |    MOV A,B #       |     |    MOV A,B         |  "N"
       |       . . .        |     |       . . .        |
       |    MOV A,B         |     |    MOV A,B #       |  "Y"
       |       . . .        |     |       . . .        |
       |                    |     |                    |
       |  *FMOV A,B$$       |     |  *SMOV A,B$MVI A,1 |
       ----------------------     ----------------------

      #  nova poloha ukazatele         Zamena radku
                                                     PEDIT 5

2/ PRIKAZOVY REZIM
------------------

         2.1 VKLADANI TEXTU

   %A    precte % radku ze vstupniho zarizeni RI a ulozi  je  za
         text v bufferu


         2.2 VYHLEDANI A NAHRADA TEXTU

  %<Ftext$>    find - vyhleda  zadany  text  od  ukazatele  a  v
         pripade nalezeni hledany text zobrazi. Ukazatel nastavi
         za hledany text. % urcuje pocet hledanych textu,  ktery
         se preskoci

    S    substitute -  zamena  textu.  Vyhleda  puvodni  text  a
         zobrazi okoli vyhledaneho textu.  Po  potvrzeni  znakem
         "Y" provede zamenu textu.
         Format:     S <hledany> $ <novy> $$


         2.3 PREMISTENI KURZORU

         Plati stejne prikazy jako pro videomod, je-li na prvnim
         miste prikazoveho radku pocet opakovani (napr. *15L$$ )


         2.4 RUSENI TEXTU

   %D    zrusi % znaku  od  ukazovatka  (%  muze  byt  kladny  i
         zaporny )

   %K    zrusi % radku



         2.5 ZAPIS TEXTU NA VNEJSI PAMET

   %W    write - zapise % radku na vnejsi medium a zrusi radky v
         pameti !

   %O    output - zapise % radku na vnejsi medium a ponecha je v
         pameti

    E    exit - zapise cely text na vnejsi medium a ukonci vyst.
         soubor; text ponecha v pameti


         2.6 KOPIROVANI TEXTU V OPERACNI PAMETI

   %G    get - oznaci a vypise % radku, ktere se budou kopirovat
         na jine misto textu

    U    unsave - premisti  %  radku  textu  na  misto,  kde  se
         nachazi kurzor. Pokud je  kurzor  za  mistem  oznacenym
         prikazem *G, je mozno  opakovat  samostatny  prikaz  *U
         vicekrat.

                                                     PEDIT 6


3/ ROZSIRENI EDITORU
--------------------

      Povely v prikazovem rezimu  lze  zadavat  s  udanim  poctu
    opakovani, ktere muze mit znamenko (+,-),  popr.  znak  "#",
    tj. vsechno (max. kladne cislo 65535). U  nekterych  prikazu
    nelze pouzit zaporne znamenko.


    @    novy start PEDITu a smazani textu. Pozor  na  nezadouci
         vymaz celeho textu !  Na klavesnici  ANK  1  (shift  I)
         neni ekvivalentni znaku    CTRL  I  (CONSUL),  a  prave
         oznacuje znak "@" - vymaz

   %H    hex -  zobrazi  %  radku  hexadecimalne  (pro  kontrolu
         vlozenych ASCII znaku)

    J    skok do programu TOOL

    M    memory - vypise pocet volnych bytu pro text

   %O    output - vyderuje % radku od pointeru, ale text ponecha
         v operacni pameti

   %P    print - vytiskne % radku od pointeru na tiskarnu

    R    read from next file -  nastavi  podminky  pro  cteni  z
         noveho souboru, povoli dalsi cteni  (*R # *A)

   %A    append - precte % radku z vnejsi pameti na konec  text.
         bufferu

    X    exchange display - zobrazi nasledujici stranku textu

    V    view - zobrazi stranku textu kolem kurzoru

    Y    zobrazi predchazejici stranku textu

    Q    quit - navrat do monitoru

   %G    get - oznaci % radku v bufferu a vypise je pro kontrolu
         Vzdy plati posledni nastaveni pointeru.

    U    unsave - na misto, kde  je  kurzor,  prekopiruje  obsah
         bufferu, ktery byl oznacen povelem *G
         POZOR !  Od posledniho  povelu  *G  se  nesmi  provadet
         zadne prikazy, ktere meni pocet znaku v bufferu  (napr.
         I, D, CTRL D, CTRL I, S, ...). Po kazdem prikazu "U" je
         treba  nastavit  G  pro  dalsi  kopirovani.  Pokud   se
         pozaduje vlozeni textu do oblasti bufferu za  kurzorem,
         pak neni nutne nove nastaveni  pomoci  "G".  Prikaz  *U
         rusi ostatni povely na temze prikazovem radku.

                                                     PEDIT 7

4/ POVELY SHODNE S EDITOREM V1.7 INTEL
--------------------------------------

   %T    type text - zobrazi %  radku  textu.    "0TT"  odpovida
         verifikaci radku. Radky se zobrazi cele (nejsou omezeny
         oknem).

   %L    line - posuv o % radku

   %K    kill - vymazani % radku od kurzoru

    E    exit - ukonceni editace, ulozeni editovaneho souboru na
         vnejsi pamet. POZOR !    Oproti  Editoru    INTEL  EDIT
         nekopiruje zbytek programu z I/O zarizeni !

   %W    write - zapis % radku na vnejsi pamet

    N    null - zapis 60 blanku na PO

   %C    character - posuv o % znaku

   %D    delete - zruseni % znaku; <cr> a <lf> se smaze naraz  !

    I    insert - vlozeni noveho  textu;  ukoncit  dvojim  <esc>
         (u ANK 1 klavesa oznacena LF !)

    F    find - nalezeni retezce

    S    substitute - nalezeni text. retezcu  a  jejich  zamena.
         Kazdou zmenu je po  "?"  treba  potvrdit  v  prikazovem
         radku znake "Y"


   Poznamky:
       - %<command  string>$$    -  iterace;  opakovani  prikazu
              uvnitr spicatych zavorek. Max. hloubka =1 !
       - <del> nebo <bs>   - delete; rusi posledni znak v primem
              rezimu (videomodu) nebo v prikazovem rezimu
       - %  - parametr (-65535 az 65535), v prikazu "+" jen 0-9!
       - #  - nahrazuje max. kladne cislo (vsechno)
              Priklad:  #A - precte ze vst. zarizeni (mgf)
                             vsechny radky a pripoji je za
                             editovany text
      CTRL C  (CONSUL)
      shiftX  (ANK 1)   prerusi provadeni prikazu (ETX)




5/ ZOBRAZOVANE RIDICI ZNAKY
---------------------------

   ESC        -resp. klavesa LF u ANK 1 - zobrazuje se jako $
    ^         -konec radku
    \         -konec textu
    _         -kurzor na miste mezery nebo tabulatoru
   blik. znak -okamzita poloha kurzoru
   overflow   -zaplneni textoveho bufferu
   "X" illegal-nepovoleny znak v prikazovem radku
   NO FIND "X"-nenalezeno "X" od kurzoru po konec bufferu
   STACK      -prekroceni hloubky vnoreni opakovaciho prikazu
   BREAK      -Objevi-li se behem psani prikaz. radku za  kazdym
               znakem "*", pak editor signalizuje  malo  pameti.
                                                     PEDIT 8

6/ PRIKLAD
----------

     Pomoci editoru zapiseme text:

               *@$$            ;vynulovani textoveho bufferu
               *I              ;primy prikaz - smaze se CRT,
                                v levem hornim rohu je znak ^.

               zapisujeme pozadovany text:

               <cr> nebo TITLE  'PRIKLAD'<cr> ;pro assembler

                     .
                     .
                     .

               END<cr>
               $$


     Povelem J$$ predame rizeni TOOLu, kde povelem  +A  spustime
   prekladac a po upresneni MODE = X se provede preklad a volbou
   PASS  =  napr.  P  zobrazime  vypis  programu.  Po   zjisteni
   syntaktickych chyb se vratime do TOOLu a po povelu +P  muzeme
   pokracovat v editaci.

     Ulozeni textu na vystupni zarizeni (mgf) provedeme prikazem
   *E$$ (prace s kazetovym  magnetofonem  viz  prikazy  MIKOSu).
   Potom lze pomoci TOOLu program prelozit a ladit.

Poznamka: .G4403<cr> - skok z monitoru  do  PEDITu  s  uchovanim
   textu napr. po RESET nebo povelu .C v monitoru. Doporucuje se
   pak cely text zapsat na vystupni medium.




7/ PRIKLADY JEDNOTLIVYCH PRIKAZU
--------------------------------

   *ITEXT$$    vlozeni "TEXT" za ukazatel (blik. znak nebo "_")
   *<tab>A     vlozeni "A" na ukazatel - primy mod
               (ANK 1 - klavesa ^<sp>, CONSUL - CTRL I)
   *10A        cteni 10 radku z mgf a ulozeni na konec textu
   *B          ukazatel na zacatek textu
   *Z          ukazatel za posledni znak textu
   *FDATA$$    nalezeni DATA za  ukazatelem;  po  potvrzeni  "Y"
               konec, jinak hleda dalsi vyskyt
   *V          zobrazi text v okoli ukazatele
   *X          nasledujici videostranka
   *Y          predchazejici videostranka
   *+9         kurzor o 9 radku dolu
   *+0         kurzor na pocatek radku
   *5K$$       zrus 5 radku od kuzoru
   *-10K$$     zrus 10 predchazejicich radku
   *#K$$       zrus vse za kurzorem
   *3D$$       zrus 3 znaky za ukazatelem
   *-5D$$      zrus 5 znaku pred ukazatelem
   *SMOV$MVI$$ zamen MOV na MVI
   *^SX        zamen znak, na kterem stoji kurzor, znakem X
   *50W$$      zapis 50 radku na vnejsi pamet (mgf), nuluj bufer
   *30O$$      zapis 30 radku na vnejsi pamet, text ponechej
                                                     PEDIT 9


   *E$$        ukonceni editace, zapis na vnejsi pamet
   *15G$$      oznac 15 radku od ukazatele  (kopirovani viz *U)
   *U$$        uloz za ukazatel data oznacena prikazem *G
   *@$$        vynuluj buffer (novy start PEDITu)
   *10H$$      zobraz 10 radku hexadecimalne
   *J$$        navrat do TOOLu; po povelu +A lze prekladat asm.
   *M$$        vypise pocet volnych byte pro text
   *50P$$      vytiskne 50 radku od pointeru na tiskarne.  Pozor
               na nastaveni pomoci .A; tiskarna musi byt zapnuta
   *B$#P$$     vytiskne cely text na tiskarne
   *R$$        nastav podminky pro cteni z vnejsi pameti
   *R$#A$$     precti cely text z vnejsi pameti
   *Q$$        navrat do monitoru; po prikazu .P lze pokracovat
   *10T$$      zobraz 10 radku textu
   *0TT$$      verifikace celeho radku s ponechanim polohy kurz.




                                                     Basic 1

****************************************************************
*                                                              *
*                           BASIC  EX                          *
*                                                              *
****************************************************************
    SAPI-1 V4.0                                   Duben 1985


    Tento navod je strucnym popisem jazyka BASIC a neni ucebnici
jazyka.

    Interpret  jazyka  BASIC  poskytuje   uzivateli    efektivni
prostredky pro vytvareni, udrzbu, ladeni a provozovani  programu
interaktivnim  zpusobem.  Ma  takove  vlastnosti,  ze   uzivatel
prakticky  vystaci  se  samotnym  BASICem.  Funkce  vytvareni  a
editace  zdrojovych  programu  jsou  jiz  obsazeny  v   samotnem
interpretu BASIC.
    Uzivatel vsak muze  vyuzit  editor  PEDIT  pro  vytvareni  a
zejmena pro rozsahlejsi upravy sveho programu. Rovnez zavadeni a
ukladani programu se provadi prikazy BASICu. BASIC se proto hodi
pro vyuku a pro programatory,  kteri  potrebuji  rychle  vyresit
dany problem a nechteji  se  zdrzovat  pracnym  programovanim  v
assembleru, porizovanim a prekladem zdrojoveho textu.  Na  druhe
strane lze vyuzit specialnich moznosti BASICu, napr.  Jednoducha
prace s retezci, moznost pripojeni uzivatelskych  podprogramu  v
assembleru, ktere mu umozni  vytvaret  efektivnejsi  programy  a
doplnovat vlastnosti BASICu. Krome  bezneho  provadeni  programu
lze v BASICu tez pracovat v terminalovem rezimu, kdy se  prikazy
z terminalu (klavesnice) okamzite provadeji a tim  lze  pouzivat
BASIC jako kalkulatoru.
    V programovem rezimu jsou prikazy zapisovany s cisly radku v
rozsahu 1-9999. Prikazy, ktere nemaji  uvedeno  cislo  radku  se
okamzite provadeji - dialogovy rezim.
    Delka prikazoveho radku je az 132 znaku (vcetne cisla radku,
mezer a tabulatoru). Na jeden radek lze napsat i  vice  prikazu,
vzajemne oddelenych oddelovacem ":" - dvojtecka.
    BASIC-EX umoznuje praci s  cisly  real  -  jednoduche  delky
(4 byte) s presnosti sesti dekadickych cislic (sedma cislice  je
jiz zaokrouhlovana). Cislo muze byt v rozsahu od 1.70141E-38  az
1.70141E38. Cisla se mohou zapisovat i jako celociselna, tj. bez
desetinne tecky.
    Cisla jsou ukladana jako "real" - v pohyblive radove carce v
normalizovanem exponencialnim tvaru  (exponent,  mantisa)  ve  2
slovech (4 byte).
    Konstanty se mohou zapisovat v primem tvaru, tj.  cislice  a
desetinna tecka (napr. 28.75) nebo v exponencialnim tvaru XE+NN,
XE-NN, kde         X je cislo v primem tvaru
                   E oznacuje exponencialni tvar a znaci
                      "krat 10 na"
                   +,- znamenko exponentu (+ nepovinne)
                   NN dvoumistna hodnota exponentu (cele
                      cislo); musi byt uveden vzdy, tedy
                      i je-li nulovy (00<=NN<=38)
    Lze pouzivat indexovanou promennou (pole) az do 8-mi  indexu
(osmirozmerne pole). S poctem  indexu  rychle  narusta  spotreba
pameti. BASIC umoznuje praci s retezci - znakovymi promennymi  a
konstantami. Dale obsahuje standardni a uzivatelske  funkce  jak
pro praci s cisly, tak i pro retezce.
    Soucasti BASICu EX  jsou  povely  pro  ovladani  interpretu,
zavedeni s uschovou programu, porizovani vypisu programu, ale  i
prikaz pro editaci radku, kdy  je  mozno  nastavit  ukazatel  na
znak, doplnovat znaky vlevo od ukazatele a rusit znaky a  prikaz
pro ruseni useku programu.
                                                     Basic 2

    Pro snazsi odladeni programu je soucasti  BASICu  jednoduchy
trasovaci program, ktery na displeji vypisuje cisla  provadenych
radku.
    Pri zapisu radku na obrazovce TV displeje (pripojeneho  pres
desku AND 1) se vyuziva dynamicke "okno", ktere  zobrazuje  cast
okoli kurzoru (40 znaku), a v  pripade  potreby  se  automaticky
posunuje po radku (az do nalezeni znaku <cr> - konec radku  nebo
pocatku radku) podle smeru pohybu kurzoru (ukazatele).

    BASIC-EX  vznikl  rozsirenim  Basicu-MIT  (ktery  je   napr.
implementovan v systemu COS  80  pro  SAPI-80)  a  plne  vyuziva
zakladniho programoveho vybaveni systemu SAPI 1, pod  kterym  je
implementovan. Navic poskytuje uzivateli tyto  skupiny  prikazu:

       - pro praci s vnejsi pameti (kazetovy magnetofon):
                 FIND, OPEN, CLOSE, GET, PUT
                 nebo #P, #R (u INPUT, PRINT)

       - pro praci s TV displejem, kdy plne
         vyuziva vlastnosti desky AND 1
         a pripojene klavesnice
                 WND, CURS, BEEP, CLS, INKEY

       - pro praci s programy v assembleru
                 CALL, PTR, HEX, CODE

       - umoznuje zaklady strukturovaneho programovani
                 IF / THEN / ELSE
                 ON GOTO / ELSE
                 ON GOSUB / ELSE
                 REPEAT / UNTIL
                 WHILE
                 ! - komentar na radku

       - pro ladeni programu - trasovani
                 TRON, TROFF

       - pro editaci programu
                 EDIT, DEL


Omezeni: Prikazy IF/THEN/ELSE,  WHILE  nebo  REPEAT/UNTIL  nelze
       "hnizdit" do vice urovni (tj.  v  prikazu  nelze  vyvolat
       dalsi prikaz IF, WHILE, REPEAT) a  musi  byt  umisteny  v
       jedinem radku programu.



Interpret jazyka BASIC  pro  SAPI  1  je  k  dispozici  ve  dvou
verzich:
         1/ 7 kB  -  standardni verze       BASIC EX
         2/ 9 kB  -  rozsirena o grafiku    BASIC EX/G

Muze pracovat pod  Monitorem  V4.0  s  minimalne  16  kB  RAM-1,
doporucuje se verze  48  kB  pro  plne  vyuziti  vsech  moznosti
interpretu jazyka BASIC.

                                                     Basic 3

================================================================
               1. ZAKLADNI POPIS INTERPRETU BASIC
================================================================

       Povely            ovladani a sledovani chodu programu
       (commands)        (nektere nelze uvadet v programu)

       Instrukce         prikazy - cinnosti, ktere vykonava
       (statements)      program nebo ktere lze vyvolat primo

       Funkce            numericke a retezcove
       (functions)       (vysledkem funkce je vzdy cislo
                         nebo retezec)

       Operatory         logicke, aritmeticke, relacni



REZERVOVANA SLOVA:

 END    FOR    NEXT   DATA   INPUT  DIM    READ   LET    GOTO
 RUN    IF     GOSUB  RETURN REM    STOP   OUT    ON     RESTORE
 WAIT   POKE   PRINT  DEF    CONT   LIST   CLEAR  LOAD
 SAVE   NEW    TAB    TO     SPC    FN     THEN   NOT    STEP
 AND    OR     SGN    INT    ABS    USR    FRE    INP    POS
 SQR    RND    LOG    EXP    COS    SIN    TAN    ATN    PEEK
 VAL    ASC    STR$   CHR$   LEFT$  RIGHT$ MID$


ROZSIRENI:

 CALL   INKEY  PRT    HEX    CLS    EDIT   LLIST  BYE    CODE
 XOR    ELSE   TRON   TROFF  DEL    UNTIL  WHILE  REPEAT DO
 FIND   GET    OPEN   PUT    CLOSE  BEEP   MODE   WND    CURS
 !      #


GRAFIKA:

 SCALE  PLOT   MOVE   AXES   LABEL  FILL   GRAPH  DOT    COPY
 FONT


ARITMETICKE OPERATORY:

 +, -, *, /, ^, (, )


RELACNI OPERATORY:           (pracuji i s retezcovymi promennymi
                             a konstantami, napr.
                                  10 IF P$="ANO" THEN 100  )
 >, <, =, >=, <=, <>


LOGICKE OPERATORY:

 NOT, OR, AND, XOR


Vysvetlivky: V dalsim popisu budou  pouzity  k  definovani  typu
             promennych, vyrazu a  cisel  radku  symboly,  ktere
             nemaji  vztah  k  jazyku  BASIC  a  slouzi  jen  ke
             zkraceni popisu. Jedna se o symboly:  A, S$, L, N
                                                     Basic 4


            PROMENNE, RETEZCOVE PROMENNE A KONSTANTY
            ----------------------------------------

    Promenna je symbolicke oznaceni mista v pameti  pro  ulozeni
dat (cisel, znak. retezcu), ktera se v prubehu zpracovani  mohou
menit. Promenna je oznacena jmenem a veskere odkazy se provadeji
pres toto jmeno. Jmeno promenne je slozeno z  pismen  a  cislic.
Pocet znaku neni omezen, ale pro rozliseni promennych  se  berou
pouze dva  prvni  znaky.  Prvnim  znakem  jmena  musi  vzdy  byt
pismeno. Promenne jsou prikazy RUN a CLEAR nastaveny na  hodnotu
0 resp. retezcove  promenne  na  "prazdne".  Znak  $  za  jmenem
oznacuje retezcovou promennou.

    Priklad:   ALFA, BETA, GAMA        ciselne promenne
               ALFA1, ALFA2            totozne ciselne promenne
                                       (berou se 2 znaky  - AL)
               1CIS                    chyba, nezacina pismenem
               CI-S                    chyba, nepripustny znak
               ALFA, ALFA$             spravne, 1.-cis.promenna
                                       2.-retezcova promenna

    Retezcove a ciselne promenne mohou mit stejne jmeno a pritom
jde o dve ruzne promenne. (Jsou vytvareny dve samostatne tabulky
promennych - jedna pro ciselne a druha pro  retezcove,  odliseni
promennych je dano znakem "$" pro retezce).
    Konstanty jsou cisla nebo  znakove  literaly,  ktere  nemeni
svuj vyznam v prubehu programu.



                              POLE
                              ----

     Pole je usporadana mnozina promennych (prvku  pole),  ktere
jsou oznaceny spolecnym jmenem (jmeno pole).  Pristup  k  prvkum
pole je pres jmeno a index, ktery je uveden v kulatych zavorkach
"( )", pole v BASICu EX muze byt az  osmirozmerne.  Pole  zacina
indexem 0 a konci indexem, ktery  je  uveden  v  deklaraci  pole
prikazem DIM. Pozor, v prikazu DIM se uvadi horni hranice  pole,
tj. pocet prvku pole je o 1 vetsi (viz prvek 0). Pole  muze  byt
pouzito i pro retezcove promenne.




                           PODPROGRAMY
                           -----------

     Podprogram je posloupnost instrukci, ktera  se  vyvolava  z
programu (podprogramu) a po provedeni se vraci do mista vyvolani
podprogramu. Podprogram musi byt  ukoncen  prikazem  RETURN.  Na
rozdil od jinych vyssich jazyku  (napr.  FORTRAN,  PASCAL)  neni
poprogram  v  BASICu  volan  jmenem,  ale  pouze  cislem  radku,
oznacujicim  zacatek  podprogramu.  Je  tedy  mozno  volat   tyz
podprogram s ruznymi efekty podle vyvolani (skok na ruzna  cisla
adku podprogramu). Pozor  pri  volani  podprogramu,  aby  volany
radek nebyl vnitrnim radkem cyklu (skokem do cyklu, nikoliv pres
vstup  cyklu  FOR),  takovy  skok  muze  vest  k   nedefinovanym
vysledkum.



                                                     Basic 5

Vyvolani podprogramu:

         GOSUB  xxxx            xxxx - cislo radku (vstupni bod)

         ON <podminka> GOSUB xxxx,yyyy ELSE zzzz
                                xxxx, yyyy, zzzz jsou cisla rad-
                                ku vstupnich bodu podprogramu  v
                                zavislosti na  hodnote  podminky
                                (prepinace).  Prikaz  ELSE    je
                                volitelny a skok  se  provede  v
                                ostatnich pripadech.

     Zvlastnim pripadem jsou podprogramy v assembleru, volane  z
BASICu. Assemblerovske programy musi byt ukonceny instrukci RET.
Vyvolani assemblerovskych podprogramu se provadi prikazy:

         X = CALL (ADR)         volani podprogramu na adrese ADR
         Y = USR (ADR)          volani podprogramu na adrese ADR

Rozdily  mezi  volanimi  viz  popis  komunikace  s  programy   v
assembleru.

     Pro primy zapis assemblerovskych programu lze pouzit prikaz

         CODE <adr>,<hex.data>, ... <hex.data>


     Podprogram muze volat dalsi podprogramy:

         HLAVNI PROGRAM         PODPROGRAM1          PODPROGRAM2
               |
               |
               v
         volani GOSUB    ------->    |
                                     |
                                     v
         pokracovani     <------- RETURN
               |
               |
               |
               v
         volani GOSUB    ------->    |
                                     v
                               volani GOSUB   ------->    |
                                                          |
                                                          v
                               pokracovani1   <------- RETURN
                                     |
                                     |
                                     v
         pokracovani     <------- RETURN
               |
               |
               v
        konec programu

                                                     Basic 6

                             FUNKCE
                             ------

    Funkce je posloupnost prikazu Basicu a po  jejich  provedeni
se vraci funkcni hodnota zpet. Vysledkem funkce musi byt ciselna
promenna.
    Funkce se definuji prikazem

       DEF FN * (P)      kde * je jedno z pismen A-Z, oznacujici
                         uzivatelskou funkci  a  P  je  formalni
                         parametr funkce. Za definici  nasleduje
                         rozvoj funkce

    Priklad:   DEF FN A (X) = SQR (X^2+1)

    Uzivatelske funkce mohou byt definovany  pouze  pro  ciselne
promenne.
    Funkce se vola uvedenim jmena funkce (s  parametrem  volani)
na prave strane prirazovaciho prikazu, vsude tam, kde lze pouzit
promennou.
    Krome uzivatelskych funkci je  v  BASICu  rada  standardnich
funkci, jak pro praci s ciselnymi promennymi  (napr.  SIN,  COS,
EXP), tak i pro praci s retezcovymi promennymi (napr. VAL,  STR,
CHAR) - viz seznam funkci.



                         LOGICKE OPERACE
                         ---------------

    Logicke operace NOT, OR, AND, XOR se provadeji s promennymi,
jejichz delka jsou 2 byte (slovo). Ciselne promenne, ktere  jsou
ulozeny  v  pohyblive  radove  carce  se  nejdrive  prevedou  na
celociselne (do 2 byte - 16 bitu), pokud to cislo dovoli  (jinak
je hlasena chyba) a pak se provede logicka operace.



               TYPY KONSTANT, PROMENNYCH A VYRAZU
               ----------------------------------

  A ... ciselna konstanta, ciselna promenna nebo aritm. vyraz

           konstanta         0     12.3     12.5E-03
           promenna          B   MO   N1   DX   ALFA
           index. promenna   BETA(1)   GM(I,J)
           aritm. vyraz      A+R(J)*(C-R)+20-(B^(A/C))

        Pouzitelny ciselny rozsah:
           -1.70141E+38 az -1E-38, 0, 1E-38 az 1.70141E+38

        Dovoleny rozsah indexu:
           0 az 32767  (omezeno velikosti pameti)

        Spotreba pameti:
           4 byte / polozku

        Vystupni format:
           cislo <0.1 nebo >999999 se zobrazuje v exponencialnim
           tvaru, pred a za cislem se tiskne mezera.



                                                     Basic 7

  S ... retezec (retezcova konstanta), retezcova  promenna  nebo
        retezcovy vyraz

           retezec           "TEXT"  "VAHA"  "ALFA 3"
           retez. promenna   A$  K1$  MN$(3)  B$(I,J)  OTP$
           retez. vyraz      A$+K1$  JMENO$+OTP$  A$+"TEXT"

        Delku  retezcovych  promennych  neni  nutno  dimenzovat,
        nastavuje se dynamicky, je pouze nutno definovat celkovy
        pametovy prostor pro retezcove promenne povelem CLEAR  X
        (X=pocet byte). Neni  mozno  spojovat  retezce,  jejichz
        celkova  delka  by  byla  vetsi    nez    pocet    znaku
        rezervovanych prikazem CLEAR.



  L ... logicka konstanta, log. promenna, relace nebo log. Vyraz

           log. konstanta    0 (false), -1 (true)
           log. promenna     promenne nabyvajici hodnot
                             0 a -1  (NOT 0)
           relace            A=B  DAT(I)>C  ALFA<>BETA A(I,J)>10
           log. vyraz        A=B OR C=D     BETA AND A(I)=C
                             M OR N AND O   HEX(80) XOR ALFA

        Vysledek relace nebo log. vyrazu lze ulozit do promene
                             B = ( X > Y )



  N ... cislo radku

           cele cislo v rozsahu  0 az 9999



 P(N)...pole (indexovana promenna)

        Pokud je sirka pole vetsi nez 10, musi  byt  deklarovane
        instrukci DIM

           Napr.     100 DIM A(5),B(2,4,4),A(2,2)

        Pole mohou mit az 8 rozmeru, s poctem rozmeru vsak velmi
        rychle roste spotreba pameti.
        Uzivame-li pole s mensim poctem prvku nez 11,  dosahneme
        dimenzovanim  pole  uspory  pameti   (interpret    jinak
        automaticky  dimenzuje  napr.  DIM  X(10),Y(10,10),  tj.
        44 byte pro jeden rozmer, ale jiz 484 pro dva rozmery !)

                                                     Basic 8

================================================================
                       2. INSTRUKCE JAZYKA
================================================================


2.1  DEFINICNI A PRIRAZOVACI PRIKAZY
------------------------------------

 CLEAR N    Rezervovani  prostoru  pro  retezcove  promenne   (a
            vstupni prikaz INPUT). N  je  cislo  vetsi  nez  15,
            je-li mensi, hlasi se chyba. Horni rozsah je  omezen
            volnou  kapacitou  pameti.  Neni-li  prikaz    CLEAR
            uveden, je nastavena implicitni hodnota 256 po  RUN.

 DIM        Definovani sirky pole (poctu prvku pole - 1).  Prvky
            jsou indexovany od 0 do horni hranice  definovane  v
            prikazu DIM

            Priklad:    DIM A(15),B(20,M),A$(19)

                Pole A - jednorozmerne ciselne pole pro 16 prvku
                Pole B - dvourozmerne pole (prvni dimenze pro 21
                         prvku, druha dynamicka dle M)
                Pole A$- jednorozmerne  pole  pro    retezcove
                         promenne (jine nez pole A pro cisla)

 DEF FNA(P) Definice funkce jedne promenne. Muze byt  definovano
   . . .    az 26 funkci. Parametr se nemusi ve  vlastni  funkci
 DEF FNZ(P) vyskytovat, je vsak nutne  jej  alespon  formalne  v
            nazvu funkce uvest.

            Priklad:    Definice uzivatel. funkci FNA, FNB, FNR

                DEF FNA(P) = P*2+P+10
                DEF FNB(N) = FNA(N)+N*2
                (PI=3.1415926)
                DEF FNR(DEG) = PI/180*DEG

 FNA(P)     Volani drive definovane funkce.  Funkci  lze  pouzit
  ...       vsude, kde se pouziva promenna.
 FNZ(P)
            Priklad:    RAD = FNR(ALFA)

 REM        Umisteni komentare do  zdrojoveho  programu.  Prikaz
            REM uvadi komentar a vsechny znaky za prikazem az do
            konce radku jsou interpretovany jako poznamka  (jsou
            ulozeny do zdrojoveho  tvaru  programu,  ale  nemaji
            zadny vykonny charakter). Pouzivaji se  pro  zvyseni
            prehlednosti programu. V ramci uspory  mista  pameti
            se doporucuje pouzivat  kratke  komentare,  popr.  V
            pripade  nutnosti  je  z    (odladenych)    programu
            odstranit.

            Priklad:    REM  TOTO JE POZNAMKA <cr>
                        REM  * * * * * <cr>

                V  prvnim  pripade  je  zapsan  text  "TOTO   JE
                POZNAMKA"  a  v  druhem  se  zapisi   hvezdicky.
                Poznamky REM se vypisi v LIST, LLIST, SAVE.

 !          Uvodni symbol komentare uvnitr radku. Pred "!"  neni
            nutne  psat  ":"  a  zbytek  radku  je   automaticky
            povazovan za poznamku.
                                                     Basic 9

 LET P=A    vyhodnoti vyraz "A" (na  prave  strane)  a  vysledek
            priradi promenne "P" (na leve  strane  prirazovaciho
            prikazu). Klicove slovo 'LET' neni povinne !!
                      |
                      v
                  ---------       graficke znazorneni
                  | P = A |       v blokovych schematech
                  ---------
                      |
                      v
            Znak  "="  v  prirazovacich  prikazech  nema  vyznam
            "rovna  se",  ale  "prirad  vyraz  na  prave  strane
            promenne na  strane  leve"  (proto  se  v  nekterych
            vyssich programovacich jazycich  pouzivaji  rozdilne
            symboly pro "prirad" napr. ALGOL, PASCAL znaky  ":="
            a "rovna se" tj. znak "=").

            Priklad:    LET A = B*C+D/E
                        LET B$ = A$+B$
                        A = B*C+D/E

                Priklady  LET  A=B*C+D/E  a  A=B*C+D/E  jsou  ve
                vysledku stejne.



2.2  PRIKAZY PRO VETVENI PROGAMU
--------------------------------

            2.2.1  NEPODMINENY SKOK

              Nepodmineny  skok  prerusuje  linearne   vzestupne
            provadeni  programu  a  pokracuje  na  jinem   miste
            programu podle udaneho cisla radku prikazu.

 GOTO N     Skok do jine casti  programu.  Cislo  "N"  je  cislo
            prikazoveho radku, promenna jako  cislo  radku  neni
            povolena !

            Priklad:    GOTO 1000    skok na radek s cislem 1000


            2.2.2  PODMINENY SKOK

              Podmineny  skok  umoznuje  vetveni   programu    v
            zavislosti na vyhodnocene podmince.  Je-li  podminka
            splnena, provadi se  prikaz  (GOTO,  THEN),  neni-li
            splnena, pak se provadi  prikazy  za  ELSE  nebo  se
            provede dalsi radek (neni-li ELSE pouzito).

 IF L GOTO N     podmineny skok na cislo radku N
 IF L THEN N     totez
 IF L THEN prikaz1 : prikaz2 : ...
                 podminene provedeni celeho zbytku radku,  je-li
                 splnena podminka L

            Priklad:    IF X>Y THEN A=4*B
                        IF A=B THEN PRINT D:A=A+3:GOTO 200

 IF/THEN/ELSE    Podminene vetveni pro pripad splneni  (THEN)  a
                 nesplneni (ELSE) podminky.


                                                    Basic 10

            Priklad:    IF A=B THEN A=1:PRINT"OK" ELSE A=0

                 Je-li podminka splnena, nastavi se  promenna  A
                 na 1 a vytiskne se text OK. V  pripade  ze  A#B
                 pak A=0.



            2.2.3  PREPINACE

              Vetveni  se  provede  podle  hodnoty  vyrazu    za
            klicovym slovem ON. Je-li hodnota rovna  n,  provede
            se skok na n-te cislo  radku,  ktere  je  uvedeno  v
            seznamu. Pri zaporne hodnote se hlasi chyba.

 ON A GOTO seznam       Skok na cislo radku dle seznamu

 ON A GOSUB seznam      Volani podprogramu dle seznamu

            U prepinacu lze pouzit klicove slovo ELSE, skok  pro
            ostatni pripady (tj. je-li cislo mimo rozsah ? pocet
            prvku seznamu).

            Priklady:   ON X+1 GOTO 1010,1050,1200
                        ON Y GOSUB 2000, 2010,2020
                        ON Z GOSUB 100,200,300 ELSE 500



            2.2.4  PRIKAZY CYKLU

                Prikazy FOR - NEXT

              Skupina prikazu uzavrena mezi pocatek cyklu  (FOR)
            a konec cyklu (NEXT) se opakuje  tak  dlouho,  dokud
            neni dosazena horni podminka. V kazdem behu cyklu se
            pocatecni podminka zvysuje o krok.

 FOR P=pocatek TO horni              implicitni krok = 1

 FOR P=pocatek TO horni STEP krok

                P         ridici promenna cyklu
                pocatek   vych. hodnota ridici promenne
                horni     koncova hodnota ridici promenne,
                          pri jejim dosazeni se cykl ukonci
                krok      prirustek ridici promenne
                          v kazdem pruchodu cyklem

            Priklady:   FOR I=1 TO 20
                        FOR ALFA=1 TO MAX STEP 2
                        FOR B=10 TO -2 STEP -1
                        FOR A=2*X TO M(I)

            Ridici promenna je dostupna i  mimo  cykl  a  nabude
            hodnoty po ukonceni cyklu HORNI + 1 (resp.  HORNI  +
            KROK, je-li uveden STEP).

                                                    Basic 11

                Ukonceni cyklu - NEXT

 NEXT P     konec  smycky  (nazev  promenne  neni  povinny)  pro
            jednoduchy cykl
 NEXTseznam konec dvou a vice smycek

            Je-li spolecne uvedeno vice cyklu, tj.  u  klicoveho
            slova NEXT je uveden seznam, pak promenne v  seznamu
            musi  byt  uvedeny  v  opacnem  poradi  (tj.  ridici
            promenna nejvnitrnejsiho cyklu musi byt uvedena jako
            prvni  a  ridici  promenna  vnejsiho   cyklu    jako
            posledni).

            Priklad:    FOR I=1 TO 10
                        FOR J=1 TO 5
                        FOR K=2 TO 20 STEP 2
                           telo cyklu
                        NEXT K,J,I

            Cykl FOR/NEXT dovoluje "hnizdit" uvnitr smycky dalsi
            cykly, ktere se nesmi prekryvat,  tj.  vnitrni  cykl
            nesmi prechazet za vnejsi.

            Priklad:    FOR I=1 TO M:FOR J=1 TO N
                            telo cyklu             ...DOBRE
                        NEXT J
                            zbytek vnejsiho cyklu
                        NEXT I

                        FOR I=1 TO M:FOR J=1 TO N
                            telo cyklu             ...CHYBNE
                        NEXT I
                            zbytek vnitrniho cyklu
                        NEXT J




                 Prikaz  WHILE  -  prikaz cyklu

              Dokud je splnena podminka za WHILE,  pak  provadej
            prikazy na radku. Neni-li, skoc na dalsi radek.

            Format:     WHILE  podminka  DO  prikazy

            Priklad:    WHILE I<10 DO PRINT "I":I=I+1

                Prikaz  WHILE  se  provadi  pokud  je    splnena
                podminka a lze jej uzit jen v rozsahu  1  radku.




                 Prikaz  REPEAT  -  prikaz cyklu

              Opakuj  prikazy  na  radku  dokud  neni    splnena
            podminka uvedena klicovym slovem UNTIL. Prikaz UNTIL
            je soucasti posledniho prikazu a neoddeluje se  ":".
            Prikaz plati v rozsahu  jednoho  radku,  po  splneni
            podminky se pokracuje na dalsim radku.

            Format:     REPEAT  prikazy  UNTIL  podminka

                                                    Basic 12

            Priklad:    REPEAT PRINT I:I=I+3 UNTIL I=30

                Prikaz se provadi pokud neni splnena podminka a
                plati v rozsahu 1 radku. Misto REPEAT  muze  byt
                pouzito i DO  (napr.  DO A=A+1 UNTIL A>5).



2.3  PODPROGRAMY A ZASTAVENI PROGRAMU
-------------------------------------

 GOSUB N    Vyvolani  podprogramu.  Podprogram  se  vola  cislem
            radku  (nikoli  jmenem  podprogramu  jako  napr.  Ve
            FORTRANu,  PASCALu).  Podprogram  musi  byt  ukoncen
            navratovym prikazovym slovem RETURN.

 RETURN     Navrat z podprogramu.

 END        Ukonceni programu, zobrazi se "OK" (nepovinne; pokud
            za hlavnim progamem nasleduji podprogramy,  musi  se
            hlavni program vzdy ukoncit prikazem END).

 STOP       Preruseni chodu programu, ohlasi se  "BREAK  IN  N",
            kde N je cislo radku prikazu STOP a  lze  pokracovat
            prikazem CONT (od dalsiho radku  programu).  Pouziva
            se prevazne pro ladeni programu.




2.4  OPERACE VSTUPU A VYSTUPU
-----------------------------

            2.4.1  CTENI KONSTANT

              Prikazy  DATA, READ, RESTORE  slouzi  k  prirazeni
            konstant  promennym.  Prikazem  DATA  se   deklaruji
            konstanty pro prikaz READ, ktery provadi  prirazeni.
            Prikaz RESTORE umoznuje  opetovne  pouziti  konstant
            pro dalsi prirazeni. Prikaz READ  posunuje  ukazatel
            konstant na dalsi konstantu. Na zacatku je  ukazatel
            nastaven na prvni konstantu,  po  n-tem  cteni  READ
            ukazuje na polozku n+1, RESTORE umozni vratit (resp.
            nastavit) ukazatel.

 READseznam prideli hodnoty ze seznamu DATA seznamu  promennych.
            Nahrazuje radu prirazovacich prikazu typu LET.

            Priklady:   READ A(1),A(2),A(3),X,B$
                        READ ALFA,BETA
                        READ Z$

 DATA       seznam konstant pro prikaz  READ  (retez.  Konstanty
            nemusi byt v uvozovkach)

            Priklady:   DATA 10,20,30,3.15
                        DATA 3.5EE03,7.1E-03
                        DATA "JMENO",12.5,3.2,1000

 RESTORE    navrat ukazatele v seznamu DATA na pocatek
 RESTORE N  navrat ukazatele v seznamu DATA na radek N


                                                    Basic 13

            Priklad:    10 DATA 10,10,5
                        20 DATA 100,200,300
                        30 DATA "EMIL","PETR","MILAN"

                Prikaz RESTORE (bez cisla) provede nastaveni pro
                READ na prvni seznam dat, tj. na cislo radku 10.
                Prikaz RESTORE 30 nastavi  seznam  pro  READ  na
                cteni retezcu na radku 30.


            2.4.2  CTENI VSTUPNICH PROMENNYCH Z I/O ZARIZENI

              2.4.2.1  Cteni z klavesnice displeje (console)

                Pro cteni dat zadavanych z  klavesnice  displeje
              slouzi  prikazy  INPUT  a  INKEY.  Prikaz    INPUT
              umoznuje  i  vypis  textu  na  obrazovce  displeje
              (kombinace prikazu  PRINT  a  vstupu  dat),  ktery
              umozni v programu vypisovat texty v pozadavcich na
              data, zjednodusuje programovani. Pozadavek na data
              prikazem INPUT je na obrazovce displeje  indikovan
              znakem "?"-otaznik. V pripade, ze v prikazu  INPUT
              je uveden  seznam  promennych  a  na  vstupu  bylo
              zadano mene vstupnich dat, na obrazovce se zobrazi
              dva otazniky, ktere signalizuji, ze  prikaz  INPUT
              pozaduje dalsi data. V  pripade,  ze  bylo  zadano
              vice dat nez  je  v  seznamu  promennych,  pak  se
              nadbytecna data  ignoruji  (ztrati  se).  Data  na
              vstupu se oddeluji od sebe oddelovacem "," (carka)
              Nulova polozka se musi zadavat cislici 0,  nestaci
              pouhe  odmacknuti  tlacitka  CR,   ktere    vyvola
              zastaveni  provadeni  programu.  V  programu   lze
              pokracovat prikazem CONT.


              2.4.2.2  Cteni dat ze souboru - READER

                Pri  cteni  dat  ze   souborove    orientovaneho
              zarizeni  (napr.  kazetovy  magnetofon)  je  nutno
              dodrzet postup pro praci se  soubory.  Nejprve  je
              nutno soubor otevrit pro  cteni  dat,  tj.  nalezt
              soubor na pasce,  pomoci  os  MIKOS.  Proto  je  v
              BASICu-EX zaveden prikaz  FIND.
                Po otevreni souboru je  mozno  pouzivat  prikazy
              pro cteni dat    INPUT  #R    nebo    GET.  Prikaz
              INPUT #R se  pouziva  pro  data  zapsana  prikazem
              PRINT #P, prikaz GET  pro  data  zapsana  prikazem
              PUT. Rozdil mezi prikazy INPUT a GET je v tom,  ze
              GET cte po slabikach  (byte), prikaz INPUT  precte
              znakova data  do  oddelovace  a  je-li  to  cislo,
              provede konverzi do vnitrniho tvaru.

                Poznamka: Osetreni konce souboru
                          Posledni znak souboru je znak SUB
                          (CTRL Z), tj. 1AH nebo 26dek.

              Priklad:    A=GET:IF A=26 THEN 100 ! KONEC

                                                    Basic 14

                V textu jsou dale pouzity zkratky pro oznacovani
              zarizeni  podle  konvenci  monitoru  (viz    popis
              monitoru a obsluznych rutin).

                 CI  console input       CO  console output
                 RI  reader input        PO  punch output
                                         LO  list output


              Pro rozliseni zarizeni v prikazech INPUT  a  PRINT
              se pouziva oznaceni #R pro READER, #P pro PUNCH  a
              #L pro LIST. Vstup  resp.  vystup  se  provadi  na
              zarizeni prirazenem  v  monitoru  prikazem  ASSIGN
              (.A).


 INPUTseznam  hodnoty  nebo  retezce  z  konzoly   se    priradi
              promennym

 INPUT "text" seznam     totez jako predchozi, navic tisk  textu

 INPUT #R seznam         cteni z RI misto z CI (tj. z pasky)

              Priklady: INPUT A
                        INPUT ALFA,BETA,GAMA
                        INPUT Z$,K(I),X
                        INPUT "NAPIS JMENO",JM$
                        INPUT #R A$,B$,X


 INKEY        preda hodnotu ASCII kodu prave  stisknute  klavesy
              behem provadeni programu; neni-li stisknuta  zadna
              klavesa, potom je hodnota INKEY=0

              Priklad:  50  IF INKEY>0 THEN 100
                        80  IF INKEY=0 THEN 50
                        100   ...

                ceka na stisknuti  klavesy  a  pak  pokracuje  v
                programu.


 FIND         nastavi  priznak  pro  otevreni  noveho   souboru.
              Operacni system automaticky pri cteni znaku (napr.
              z  kazety)  provede  vyhledani  souboru  a  precte
              1.byte. FIND lze pouzit  i  k  ukonceni  cteni  ze
              vstupniho souboru.

 GET          cte byte ze vstupniho media RI (snimac pasky  nebo
              kazeta podle hodnoty IOBYTE).


              10 FIND    ! otevri soubor
              20 A=GET   ! 1. cteni - vyhleda soubor a cte byte
              30 A1=GET  ! 2.byte
              40 IF A=0 THEN 90 ELSE INPUT #R B$
               ...
              90 FIND    ! jiny soubor nebo uzavreni

                                                    Basic 15

            2.4.3  ZAPIS DAT - VYSTUP NA ZARIZENI

              2.4.3.1  Vystup na displej

                Pro vystup na displej se pouziva  prikaz  PRINT,
              nebo lze pouzit zkraceneho zapisu pro  PRINT,  tj.
              znak "?" -otaznik, ktery interpret BASICu  prevede
              na klicove slovo PRINT. Pro  vystup  na  obrazovku
              displeje je mozno vyuzit i specielnich funkci  pro
              rizeni displeje (napr. WND, CLS, MODE, CURS).


              2.4.3.2  Vystup na tiskarnu

                Pro tiskovy vystup (na zarizeni LIST) se pouziva
              prikazu PRINT #L. Pro formatovani tisku lze pouzit
              specialni funkce TAB a SPC (tyto lze pouzit i  pro
              vystup na displej).


              2.4.3.3  Souborove orientovany vystup

                Je-li  zarizeni  PUNCH  souborove    orientovano
              (napr.  kazetovy  magnetofon),  musi  se   dodrzet
              posloupnost pro vystup  do  souboru.  Nejdrive  se
              musi soubor otevrit pro vystup (musi  se  vyhledat
              konec  souboru,  tj.  misto  pro  ulozeni   noveho
              souboru) pod rizenim MIKOSu.
                Po  otevreni  souboru  je  mozno   do    souboru
              zapisovat data prikazy PRINT #P  a  PUT.  Data  se
              zapisuji do bufferu a po naplneni bufferu nebo pri
              uzavreni souboru sa prepisi na zarizeni.
                Po ukonceni  zapisu  dat  se  vzdy  musi  soubor
              ukoncit prikazem CLOSE, jinak muze dojit ke ztrate
              dat.
                V jednom okamziku muze byt otevren  pouze  jeden
              soubor pro vystup.
                System MIKOS ma dva nezavisle buffery, jeden pro
              vstupni  soubor  a  druhy  pro   vystupni.    Pred
              vyvolanim BASICu je nutne provest prikazy monitoru
              I=1, O=1 (pokud  budeme  pracovat  se  soubory  na
              kazetovem magnetofonu) nebo prikaz C monitoru.

 OPEN         nastav priznak pro operacni  system  pro  otevreni
              souboru pro zapis.  Na  kazete  muze  byt  otevren
              soubor pro cteni nebo pro zapis.
 PUT A        zapis byte na periferii typu PO; A=0 az 255, zapis
              hodnoty 26 zpusobi uzavreni souboru (PUT HEX(1A)).
              Pri zapisu 1. byte je treba otevrit soubor
 CLOSE        uzavri vystupi soubor

              10  OPEN   ! otevri soubor pro zapis
              11  PUT A  ! zapis 1. byte
              12  PUT B
              13  PRINT #P "DALSI DATA",R,X,Y
              100 CLOSE  ! uzavreni souboru
              110 PRINT "VSTUP DAT"
              200 FIND   ! otevreni pro cteni

                                                    Basic 16

                         Vystup promennych a konstant

                Je-li pouzit prikaz PRINT  (?),  pak  se  vystup
              promennych provede na terminal nebo  na  prirazene
              zarizeni.
                       #P  ...  vystup na mag. pasku
                       #L  ...  vystup na tiskarnu
              Poznamka: pred znakem "#" musi byt vzdy  mezera  !

 PRINTseznam  tisknou  se   retezcove    konstanty,    retezcove
              promenne, numericke konstanty, numericke promenne,
              funkce a vyrazy dle seznamu.

              Priklady: PRINT "KOEFICIENT",K,"SILA",S
                        PRINT A$,ALFA,A$(I)
                        PRINT NOT 17

 PRINT #P seznam        vystup na logicky derovac (viz IOBYTE)
 PRINT #L seznam        vystup na logickou tiskarnu

              Poznamky:
                  - Hodnoty  <0.1  a  >999999  se  zobrazuji  ve
                    vedecke notaci     1000000 ... 1E+06
                                          0.01 ... 1E-02
                  - Misto prikazu PRINT lze  uzit  jen  zkracene
                    "?"; listuje se vsak spravne  PRINT.  Uvnitr
                    seznamu  za  prikazem  PRINT   urcuje    typ
                    oddelovace upravu textoveho radku.  Oddeleni
                    carkou zpusobi posun na nejblizsi  tabelacni
                    pozici. Oddeleni strednikem  nevyvola  zadne
                    doplnujici funkce. Oddelovac je mozno pouzit
                    i na zacatku nebo na konci radku
                       (PRINT ,,"TEXT";"JMENO",JM$,,
                  - Pro zapis dat na vnejsi periferii (a pozdeji
                    cteny prikazem INPUT #R)  je  nutne  oddelit
                    jednotlive  polozky  znakem  ","-carka  nebo
                    ukoncenim radky -CR.
                    Priklad:    PRINT #P I;",";J;",";K
                                  nebo
                                PRINT #P I:PRINT #P J:PRINT #P K





2.5  FUNKCE PRO PRIKAZ  'PRINT'
-------------------------------

              Pro prikaz vystupu PRINT jsou zavedeny formatovaci
            funkce TAB - tabulace a  SPC  -  vymezerovani.  Tyto
            funkce mohou byt umisteny  pouze  uvnitr  seznamu  v
            prikazu PRINT. Krome techto funkci maji  formatovaci
            ucinek i oddelovace "," a ";". Znak carka  nastavuje
            pozici  tisku  na  dalsi  tabelacni  sloupec,   znak
            strednik umistuje vystup dalsich znaku bezprostredne
            za predchazejici znaky. Pri vystupu cisel  je  nutne
            uvazovat s mezerou pred a za cislem.
              Specialni funkce  POS  umoznuje  programu  zjistit
            nastaveni pozice v  radku  pro  vystup  znaku  (tato
            funkce muze byt  pouzita  jak  samostatne  tak  i  v
            prikazu PRINT).


                                                    Basic 17

 TAB (A)    Dalsi tisk zacne od pozice A. Za TAB(A)  neni  nutno
            uvadet oddelovace "," ci ";".

            Priklad:    PRINT "VYSLEDEK";V;TAB(30)"HLADINA";B

            Pokud je jiz tiskova pozice vetsi nez je  uvedena  v
            TAB, nema zadny ucinek

 SPC (A)    vytiskne A mezer

            Priklad:    PRINT SPC(10);"POCET=";P1;SPC(2);"KS"

 POS        pocet jiz vystoupenych znaku od zacatku radku.  (POS
            ukazuje pozici tiskove hlavy, tj. misto, kam se bude
            tisknout nasledujici znak).

            Priklad:    PRINT "12345",POS
                za funkci POS ze zobrazi "6"





2.6  SPECIALNI FUNKCE PRO DISPLEJ
---------------------------------

              BASIC  EX  je  rozsiren  o  specialni  funkce  pro
            displej  s  deskou  AND  1,  ktere  plne   vyuzivaji
            moznosti teto desky. Jsou  to  funkce  pro  ovladani
            kurzoru,  nulovani  obrazovky,    rezervaci    radku
            obrazovky a pro ovladani typu vystupnich znaku.


 CURS X,Y   nastav kurzor na hodnotu X,Y (x...0az39, Y...0az23)

 MODE A     nastav typ zobrazeni na displej
                HEX(0)    normalni znaky      dek. 0
                HEX(C0)   siroke znaky        dek. 192
                HEX(80)   podtrzene znaky     dek. 128
                HEX(40)   blikajici znaky     dek. 64
                HEX(.1)   soucasne tiskarna   napr. 193

 WND K      (window) rezervuje K radku  (0  az  15)  od  horniho
            okraje obrazovky, tyto  radky  nebudou  prepisovany,
            ale po nastaveni CURS X,Y je mozno psat do vyhrazene
            casti  obrazovky.  Nastaveni  "okna"   se    provede
            prikazem WND cislo, zruseni pak WND 0.

 CLS        (clear screen) - vymaz obrazovky  mimo  rezervovanou
            oblast

 PTR (X)    (pointer) - dosad adresu promenne X

            Priklad:    DUMMY=CALL(DADR,PTR(X))
                tiskne hex adresu promenne
                (vyuziva sluzby monitoru DADR=130H)

            Retezcove  promennejsou  ulozeny  v  pameti  neprimo
            pomoci ukazatele ... LENGTH, OFF, LOWADR, HIGHADR

            Pozn.: Funkce PTR(X) patri svym obsahem do kapitoly
                   2.8.

                                                    Basic 18

2.7  PRIME VSTUPNI / VYSTUPNI OPERACE
-------------------------------------

              Prikazy pro prime  v/v  opeace  umoznuji  cteni  a
            zapis byte v plnem rozsahu pameti a cist a  psat  na
            porty. Adresa pameti je v rozsahu 0 az  64k,  adresa
            pro port 0 az  255.  Lze  zadavat  i  hex  adresu  s
            vyuzitim funkce HEX (napr. POKE HEX(C000),10).

 PEEK (A)   cteni byte z pameti z adresy A (funkce)

 POKE A1,A2 zapis byte A2 na adresu A1

 INP (A)    cteni portu A (funkce)

 OUT A1,A2  zapis byte A2 do portu A1

 WAIT A1,A2,A3    cekani na vyskyt masky A2 na portu  A1;  je-li
                  zadano A3,  potom  se  ceka  na  shodu.  Potom
                  provedeni dalsi instrukce.

            Priklady:   WAIT A1,A2
                         odpovida W0: IN  A1  ;cti port
                                      ANI A2  ;maska
                                      CPI A2  ;shoda ?
                                      JNZ W0

                        WAIT A1,A2,A3
                         odpovida W1: IN  A1
                                      ANI A2
                                      CPI A3
                                      JNZ W1

            Poznamka: Bitove operace s daty z portu  lze  rovnez
                      provadet pomoci operatoru  OR,  AND,  XOR;
                      napr.   INP(A) AND HEX(40)





2.8  FUNKCE PRO RIZENI KOMUNIKACE S PROGRAMEM V ASSEMBLERU
----------------------------------------------------------

              Pouziti  assemblerovskych  podprogramu   rozsiruje
            aplikacni moznosti programu v  BASICu.  Uzivatel  si
            muze vytvorit podprogramy v Assembleru pro specialni
            pozadavky a tyto programy  pripojit  k  programum  v
            BASICu.

 HEX (hex. hodnota)  dosadi hex. hodnotu

 X=CALL (adr,HL)     volani podprogramu na adrese adr, je
                     mozno  nastavit  byte  do  <C>  nebo  <A>
                     (plati L=C=A);obsah <HL>  po  navratu  se
                     ulozi do promenne X - funkce)

 Y=USR (adr,C)       volani podprogramu na adrese adr, je  mozno
                     nastavit byte do <C> nebo <A> (plati L=C=A)
                     a po navratu ulozi <A> do Y - funkce.

            U funkci USR a CALL je mozno menit registry B,DE,HL.

                                                    Basic 19

            Priklady:   DUMMY=USR(HEX(109),7) ... BELLna CO
                        X=CALL(1234,HEX(1DE0))... 16 bit prenos


 CODE adr;hex.data, ... , hex.data
                     Prikaz CODE ulozi od zadane adresy data  do
                     pameti. Takto je mozno ulozit do pameti RAM
                     tabulku nebo podprogram.

            Priklady:   CODE HEX(4300);3E,20,21,00,00,c9
                          odpovida   4300:  MVI A,' '
                                            LXI H,0
                                            RET     ;povinne !


                  Pricti 100 k 16-bit promenne

                        CODE 17152;11,64,00,19,c9
                        PRINT CALL(17152,1000)    ! tisk 1100


                  Zobraz obsah 16-bitove promenne na adr. X

                        CODE 17152;7E,66,6F,C9
                        PRINT CALL(17152,X)


            Oblast pameti 4300H  az  43FFH  je  rezervovana  pro
            uzivatelske programy (dekadicky 17152 az 17407).




2.9  STANDARDNI FUNKCE
----------------------

              Standardni funkce jsou soucasti interpretu  jazyka
            BASIC a znacne ulehcuji  programovani  matematickych
            operaci, protoze neni nutne  vytvaret  programy  pro
            reseni zakladnich aritmetickych funkci,  jako  napr.
            pro sinus, odmocnonu, logaritmus  atd.  Rovnez  jsou
            implementovany  i  funkce  pro  praci  se  znakovymi
            retezci.


 SGN (A)    signum (-1 pro A<0, 0 pro A=0, 1 pro A>0)
 INT (A)    celociselna cast; ( FRAC=A-INT(A) )
 ABS (A)    absolutni hodnota
 SQR (A)    druha odmocnina, A>=0
 LOG (A)    prirozeny logaritmus, A>0
 EXP (A)    e umocneno na A
 SIN (A)    sinus; uhly v radianech  (deg=PI/180)
 COS (A)    cosinus
 TAN (A)    tangens
 ATN (A)    arcus tangens; 0 < A < PI/2
 FRE (O)    delka volne pameti v bytech
 FRE (A$)   delka volne pameti pro retezce  (po  RUN  256  byte,
            zmena pomoci CLEAR
 RND (A)    random - nahodne cislo v rozsaho 0 az 1
            Je-li A>0, pak se generuje ruzna nahodila
            posloupnost.
            Je-li A<0, pak se generuje vzdy  stejna  posloupnost
            (vhodne pro ladeni - vzdy steje vysledky nah. cisel)

                                                    Basic 20

2.10  RETEZCOVE FUNKCE
----------------------

 VAL (S$)   celociselna hodnota retezce, prvni nenumericky  znak
            ukonci prevod retezce do vnitrniho zobrazeni

            Priklad:    10 S1$="123"
                        20 I=VAL (S1$)     ! hodnota I=123


 STR$ (A)   prevod ciselne promenne na znakovy retezec

            Priklad:    10 J=4*5
                        20 S2$=STR$(J)     ! S2$ obsahuje "20"


 CHR$ (A)   prevod ciselne promenne na ASCII znak (modulo 128)

            Priklad:    10 I=65
                        20 PRINT CHR$ (I)  ! vytiskne "A"


 ASC (S$)   prevod prvniho znaku retezce na hodnotu kodu ASCII

            Priklad:    10 S3$="BASIC"
                        20 J=ASC (S3$)     ! J=66


 LEN (S$)   delka retezce (pocet znaku)

            Priklad:    10 S3$="BASIC"
                        20 I=LEN (S3$)     ! I=5


 LEFT$ (S$,A)     extrahuje A znaku retezce zleva

            Priklad:    S4$=LEFT$ (S3$,3)  ! S4$="BAS"


 RIGHT$ (S$,A)    extrahuje A znaku retezce zprava


 MID$ (S$,A)      pocinaje A-tym znakem do konce retezce

 MID$ (S$,A1,A2)  pocinaje znakem A1, pocet znaku A2




      Poznamka: Funkce, jejichz  nazev  konci  $, vytvari   novy
                retezec. K tomu je  treba  rezervovat  prislusny
                pametovy  prostor  prikazem  CLEAR  na   pocatku
                programu. Parametr A prikazu  udava  pocet  bytu
                rezervovanych pro retezce. Bez tohoto prikazu je
                celkova kapacita 256 bytu po RUN.


                                                    Basic 21

2.11  GRAFICKE PRIKAZY   (jen pro verzi EX/G)
----------------------

            Pouze pro informaci o  pripravovane  verzi.  Prikazy
            mohou byt  prizpusobeny  desce  DGD  1  po  ukonceni
            vyvoje desky.



 SCALE  Xmin, Xmax, Ymin, Ymax    ...  nastavi meritko pro obraz
            X (0 az 320 bodu), Y (0 az 280 bodu)


 PLOT X1,Y1 [,PEN1][;X2,Y2,PEN2] ...  [Xn,Yn,PENn]    ...  spoji
            uvedene souradnice carou, je mozno zadat typ cary


 MOVE X,Y [,PEN]   ...  nastaveni polohy kurzoru a typu cary

                 PEN =  0      ...  rusi caru
                     = 255     ...  plna cara
                     = HEX(55) ...  teckovana
                     = HEX(5F) ...  cerchovana


 AXES X,Y [,PEN]   ...  vykresli osy s prusecikem X,Y


 LABEL MX,MY;"TEXT"  ... v danem zvetseni MX a MY  zobrazi  text
            jako PRINT. Zobrazuje znaky od " " po "Z" a ignoruje
            CR a LF. Vzdy je nastavena hodnota PEN = 255.


 FILL MX,MY,PEN    ...  vyplni plochu o velikosti MX,MY od kurz.


 GRAPH  N   ...  rizeni grafickeho zobrazeni

                   N =  0       pouze alfanumericke zobrazeni
                     = 255      vycisti graf. obrazovku, nastavi
                                PEN=255  a  prepne  na  graficke
                                zobrazeni


 COPY #N X,Y  ...  zkopiruje na  danou  priferii  okno  (39x23);
            X a Y jsou souradnice leveho dolniho rohu

                   N = C        console
                     = L        list
                     = P        puncher


 DOT        ...  dosadi hodnotu bodu  (0  nebo  -1),  adresa  je
            nastavena operaci (MOVE, PLOT, LABEL ...)


 FONT adr,hex.data  ...  uzivatelem definovany typ pisma. Adresa
            urcuje oblast dat v pameti  RAM  (pro   1    pismeno
            5 byte).


                                                    Basic 22

================================================================
                           3.  POVELY
================================================================


 RUN        Spusteni vlozeneho programu,  muze  mit  parametr  -
            cislo radku. Pred exekuci  programu  se  automaticky
            nuluji vsechny promenne.

 NEW        Vymazani  pameti  programu  a    vsech    promennych
            (priprava pro zadavani noveho programu).

 CLEAR      Smazani  tabulek  promennych.  Eventualni   parametr
            udava  rezervaci  pameti  pro   retezce,    porizene
            retezcovymi funkcemi nebo prikazem  INPUT S$.

 CONT       Pokracovani programu po STOP nebo CTRL C (ETX), nebo
            CR v prikazu INPUT

 LIST       Listovani  programu,  event.  od  cisla  radku.  Lze
            prerusit CTRL C (ETX, shift X u ANK 1) nebo pozasta-
            vit CTRL S (shift S u ANK 1). Pokracovat lze stiskem
            libovolne klavesy.

            Priklad:    LIST  start         ! vypis od radku
                        LIST  start, pocet  ! od radku pocet r.

 EDIT line  Editace radku. Kopirovani radku lze provest prikazem
            EDIT,  kde  se  prepise  cislo  radku  na  nove.  Po
            zavolani EDIT se umisti kurzor na konec radku.

                       <CR>    ukonceni editace
                       <DEL>   rusi znak vlevo od kurzoru
                       <BS>    posuv vlevo o znak
                       <TAB>   posuv vpravo o znak (^<SP> u ANK)
                       <ESC>   nastavi kurzor na opacny okraj
                               radku (<LF> u ANK)
                      ostatni znaky se ulozi

 @ line     Zkraceny zapis pro volani EDIT.

 DEL start,end  ...  zrusi usek programu od radku po radek.

 BYE        Skok do monitoru pres RST 1

 LLIST      Vypis na tiskarnu; tiskarna musi byt zapnuta !

 TRON       Start trasovani programu. Vypisuji  se  cisla  radku
            provadeneho programu na obrazovce displeje.

 TROFF      Konec trasovani programu - zruseni vypisu na displej

 LOAD       Zavadeni  programu.  Stary  program    se    nemaze,
            prepisuji se jen  radky  se  stejnymi  cisly  -  lze
            vyuzit k  modifikaci  programu.  Mazani  se  provadi
            povelem NEW.

 SAVE       Uschova programu. Program  se  uchovava  otevrene  v
            citelne forme  (ASCII).  Je  mozna  uprava  editorem
            PEDIT.

 GOTO       Spusteni programu bez nulovani tabulek (pro ladeni).

                                                    Basic 23

 Poznamky: - ?  seznam  ...  vytiskne  hodnoty  promennych   dle
             seznamu (zkracene volani PRINT)
           - Prikaz, pred kterym neni cislo  radku,  se  provadi
             okamzite. Cislovane radky  se  umistuji  dle  cisel
             radku  zdrojoveho  programu.  Pri  shode  cisla  je
             prislusny radek prepsan.
           - Maximalni pocet znaku na instrukcnim radku  je  132
             vc. cisla radku a mezer. Max. cislo radku je  9999.
             Pocet mezer mezi cislem  radku  a  prvni  instrukci
             zustane pri listingu zachovan.
           - Nazvy promennych mohou byt viceznakove (prvni  vzdy
             pismeno), ale rozhodujici  jsou  prvni  dva  znaky.
             Cela rezervovana slova se nesmi uzivat  jako  nazvy
             promennych, ani jako cast nazvu za prvnim ci druhym
             pismenem nazvu. Pro numericke promenne,  retezce  a
             pole je mozne pouzit stejne  nazvy  (napr.  B,  B$,
             B(1) jsou ruzne promenne).
           - Preruseni chodu programu (po RUN)  klavesou  CTRL C
             (ETX) nebo shift X u klavesnice ANK 1.
           - Potlaceni  tisku  z  programu   stisknutim   CTRL S
             (shift S u  ANK  1)  -  obnoveni  tisku  opakovanim
             libovolne klavesy.





================================================================
                       4.  CHYBOVA HLASENI
================================================================

Chyby hlasi interpret ve forme

                       ERROR XX IN LINE N
            kde  N je cislo radku, kde doslo k chybe
                XX je identifikace chyby dle tabulky

                    NF      next without for
                    SN      syntax error
                    RG      return without gosub
                    OD      out of data
                    FC      function error
                    OV      overflow value
                    OM      overflow memory
                    US      undefined statement
                    BS      bad subscript-index overflow
                    DD      double dimension
                    /0      division by zero
                    ID      illegal direct
                    TM      type mismatch
                    OS      overflow string space
                    LS      long string (>255)
                    ST      string func. too complex
                    CN      continue error
                    UF      undefined function

                     * INPUT ERROR
                     * EXTRA DATA IGNORED





                                                    Basic 24


 Rozliseni startu programu BASIC

             Studeny start (COLD), tj. prvni spusteni
                        - vymaz obrazovky
                        - napis na horni radek

             Teply start (WARM), tj. opakovane spusteni
                        - bez vymazu obrazovky a uziv. programu
                        - nadpis se umisti na dalsi radek.



================================================================
               5.  TEST RYCHLOSTI  BASIC/EX  V3.2
================================================================


          10 FOR I=1 TO 10000
          20 NEXT                         ... 19s  (1.9 ms/cykl)

          30 FOR I=1 TO 10000:NEXT        ... 15s  (1.5 ms/cykl)

          40 REPEAT I=I+1 UNTIL I>1000    ... 9.5s (9.5 ms/cykl)

          50 E=1000
          60 REPEAT I=I+1 UNTIL I>E       ... 6s   (6 ms/cykl)





================================================================
                6.  TVAR PROMENNYCH PRO  BASIC/EX
================================================================


     a/ Cislo typu REAL - adresu ulozeni lze ziskat pomoci PTR

           4 byty
              ------------------------------------
              | normalizovana         | exponent |
              |    mantisa  (3 byte)  |  (1 byte |
              ------------------------------------



     b/ retezcova promenna - ulozena pomoci ukazatele

           4 byty
                --------------------------------
                | delka | 0FFH | dolni | horni |
                |       |      |  byte adresy  |
                --------------------------------



                                                   Priloha 1


                UKAZKY POUZITI SYSTEMOVYCH RUTIN
                ================================


  Demonstracni priklady pouziti podprogramu monitoru, monitoru +
a MIKOSu.


   - zmena IOBYTE, napr. tiskarna L=2

                   CALL  IOCHK           ;stara hodnota IOBYTE
                   ANI   3FH             ;maska
                   ORI   11000000B       ;nova hodnota
                   MOV   C,A
                   CALL  IOSET


   - nalezeni souboru na kazete

                   XRA   A               ;0=find
                   MVI   C,1             ;1. sluzba EXFLAG
                   CALL  EXFLAG
                   CALL  RI              ;cti prvni data souboru


   - ukazka testu na ukonceni souboru

                   JC    KONEC           ;konec pasky - CY=1
                     nebo
                   CPI   1AH             ;CTRL Z ... konc. znak
                   JZ    KONEC


   - instalace uzivatelskeho ovladace typu TISK do systemu

                   MVI   C,6             ;uzivatelska tiskarna
                   LXI   D,USRLO         ;adresa handleru
                   CALL  IODEF           ;instalace do systemu

               Ukazka uzivatelskeho handleru

            USRLO: IN    90H
                   RLC
                   JNC   USRLO
                   MOV   A,C
                   OUT   91H
                   RET


   - kopirovani dat z kazety na tiskarnu  (je-li  AL=2,  pak  na
     uzivatelskou tiskarnu)

            LOOPR: CALL  RI
                   JC    KONCR           ;konec dat
                   MOV   C,A
                   CALL  LO
                   JMP   LOOPR





                                                   Priloha 2


   - rezervovani horni casti pameti (255 byte)

                   CALL  MEMCK           ;preda v B,A konec RAM
                   MOV   H,B
                   MOV   L,A             ;HL = konec RAM
                   LXI   D,-255          ;-(pocet rezerv. byte)
                   DAD   D
                   XCHG                  ;novy konec do DE
                   MVI   C,8             ;nastav MEMTOP
                   CALL  IODEF


   - rezervovani casti displeje (pro AND 1)

                   MVI   A,20            ;rezervuj 20 radku
                   MVI   C,7             ;sluzba EXFLAG
                   CALL  EXFLG

                   XRA   A               ;zrus okno - 0 radku
                   MVI   C,7
                   CALL  EXFLAG


   - zapis na kazetu (user 1) s vyuzitim EXFLG  C=3 pro otevreni
     Vystupniho souboru, A=0

                   LXI   D,KONDT         ;konec dat
                   LXI   H,ZACAT         ;zacatek dat
                   MVI   C,3             ;OPEN
                   XRA   A               ;A=0 ... user1
                   CALL  EXFLG
            LOOPW: MOV   C,M
                   CALL  PO              ;zapis
                   CALL  HILO            ;je uz vse?
                   JNC   LOOPW

            ;UKONCENI SOUBORU
                   MVI   C,1AH           ;CTRL Z
                   CALL  PO              ;ukonceni souboru


   - nacteni hex dat z CI, vypocet rozdilu, zobrazeni na CO

                   MVI   C,2             ;2 vyrazy
                   CALL  EXPR            ;cti do stacku
                   POP   D
                   POP   H
                   MOV   A,L
                   SUB   E
                   MOV   L,A
                   MOV   A,H
                   SBB   D
                   MOV   H,A
                   CALL  DADR            ;zobrazeni











                                                   Priloha 3


   - vypis textu na CO

                   LXI   H,MES           ;adresa textu
                   MVI   D,LMES          ;delka textu
                   CALL  TEXT            ;vypis
                      .
                      .
                      .
            MES:   DB    'ABCD....'
            LMES"  EQU   $-MES






ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt


SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | PP01 | PETR | PLAN-80A | IQ151


ZPS | Technické prostředky | Programové vybavení | Dokumentace


8 bity / SAPI-1 / Dokumentace / ZPS-2 V4



SAPI.cz - web o československých osmibitech, zejména SAPI-1. Provozuje EC1045 od roku 2011
Za korekce češtiny dekuji: MELSOFTovi, Silliconovi, Martinu Lukáškovi a NOSTALCOMPovi

Když začínám blbnout z 8bitů tak se chodím léčit mezi otaku.
Animefest.cz