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


SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS | FK-1


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


8 bity / SAPI-1 / Programové vybavení / ZPS-2 / Kazetopáskové Programové Vybavení


OCR dokumentace "kazetopáskové programové vybavení"











TESLA
ELTOS
OBOROVÝ
PODNIK
DIZ
SAPI 1


KAZETOPÁSKOVÉ
PROGRAMOVÉ
VYBAVENÍ










OBSAH



ÚVOD

Programové vybavení rozšiřuje možnosti systému SAPI-1 vyvinutého v Tesle Elstroj n.p., vyráběného v Tesle Liberec n.p. a dodávaného Teslou Eltos o.p. Dodavatelsko inženýrský závod (DIZ) .

Celá filozofie nového programového vybaveni V 4 vychází z následující konfigurace systému SAPI-1 a Je této konfiguraci zcela podřízena. Programové vybavení umožňuje používat programovací Jazyk Basic a pracovat s programy v Assembleru. Vzorem programového vybaveni a monitoru bylo programové vybaveni mikropočítačů Intel a operačního systému COS 80 pro mikropočítač SAPI 80. Nové programové vybavení verze V 4 nahrazuje původní programové vybavení systému SAPI-1 - Mikrobasic. Programy v Mikrobasicu nejsou bez úprav přenositelné na nové programové vybavení.

Programové vybavení požaduje následující minimální konfiguraci systému:

-JZS-1Jednotka zdroje a sběrnice (včetně SPN-1 - systémový napájecí panel periferii)
-   JPR-1Deska procesoru s porty
-ANK-1Abecedně číslicová klávesnice
-REM-1Deska paměti RAM a EPROM
-AND-1Deska alfanumerického displeje
-DSM-1Deska sériového přenosu a modemu
-RAM-1   Deska dynamických RAM pamětí

Periferie:

-   ZJS-1Zobrazovací jednotka (např. televizní přijímač - Pluto, Satelit, atd.)
-MKP-1   Magnetická kazeto-pásková paměť (např. kazetový magnetofon K 10)

Rozšíření: Tiskárna C 2111 - mozaiková tiskárna Consul

Dále se připravuje připojení dalších periferii jako např. snímač a děrovač děrné pásky, pružné disky, standardní 1/2" magnetická páska (SM 5300), terminál SM 7202 (resp. SM 1601), klávesnice Consul C259.11 a nová membránová klávesnice MK-1.

Programový systém vyžaduje min. 16KB paměti RAM, optimální velikost paměti RAM je 48 KB (deska RAM-1), která poskytuje dostatečný prostor pro programy a umožní plně využít všech možnosti nového programového vybavení.

Dále se doporučuji některé úpravy na deskách systému SAPI-1.


Obsah programového vybavení

A) Rezidentní programy

nahrané na pamětech EPROM


1) Monitor

Rozsah programu 2 KB v paměti EPROM od adresy 000H-7FFH (posice 0,1 EPROM na desce REM-1).

Obsahuje základní funkce řízení systému, obsluha klávesnice a televizního displeje, (viz popis monitoru) Základní monitor může pracovat samostatné bez Monitoru Plus a Mikosu, s omezením poskytovaných služeb.


2) Monitor Plus, Mikos

Rozsah programu 2K v paměti EPROM od 800H-FFFH (posice 2,3 EPROM na desce REM-1).

Rozšíření funkcí základního monitoru a mikrokazetový operační systém - pro kazetový magnetofon, (viz popis monitoru).

Monitor obsazuje I část paměti RAM od adresy 4000H do 43FFH. část paměti od 4300-43FFH lze použít pro programy uživatele (např. podprogramy v Assembleru pro Basic atd./ Program "TOOL" tuto oblast využívá).


B) Transparentní programy

Zavádějí se do operační paměti z vnější paměti (z kazetové pásky) a sdílejí stejnou oblast paměti RAM. Proto nemohou být současně v paměti, a zavedením z kazety se volí jeden, buď TOOL nebo Basic. Programy se do paměti zavádějí od adresy 4400H a zabírají oblast paměti RAM až do 5FFH.

3) TOOL ASM - 80

Soubor programů pro práci v Assembleru. Programy jsou uloženy na kazetě a podle potřeby se zavádějí do paměti od adresy 4400H. (Rozsah programů 7K).

Skladba programových modulů

-Assemblerabsolutní Assembler, s pseudoinstrukcemi, podmíněným překladem, bez maker.
-line Assemblerjednoprůchodový, řádkový překladač (pro opravu a doplnění programů v Assembleru)
-Peditbrazovkově orientovaný editor (pro televizní displej, s deskou AND-1)
-Tracerladicí a trasovací program pro programy v Assembleru.
-Deassemblerzpětný překladač, ze strojového kódu do Jazyku symbolických adres (JSA)
-   pomocné funkce   


4) BASIC EX

Interpret jazyku Basic, který umožňuje přípravu, ladění a provádění programů. Program je uložen na kazetě a podle potřeby se zavádí do paměti od adresy 4400. (Rozsah programu 7KB). Uvedené příkazy pro grafiku nejsou zatím v uvedené verzi zabudovány a budou v další verzi překladače pro desku grafického displeje (DGD 1), rozsah programu bude 9K.

Interpret Basicu pracuje s pohyblivou řádovou čárkou jednoduché délky (4-Byte) s přesnosti 6 1/2 dekadických číslic. V použitelném rozsahu 1.70141E+38 (-) 1.70141E-38. Interpret umožňuje práci s řetězci, s uživatelskými funkcemi, i s podprogramy v Assembleru a zpracovávat data z kazetového magnetofonu. Standardní funkce obsahují jak aritmetické funkce tak i funkce pro práci s řetězci.

Maximální počet znaků na řádku je 132 (včetně čísla řádku a mezer), a maximální číslo řádku Je 9999.

Součástí interpretu Basic Jsou i povely pro ulehčení práce při zápisu a laděni programu:EDIT - editace programových řádků, TRON, TROFF - trasováni programu. Ukončeni práce v Basicu a návrat do monitoru se provádí povelem BYE.

Blokové schéma programového vybavení


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

         ---------------     ------------ 
         |             |     |          | 
         | TOOL ASM-80 |     | BASIC EX |      Kazetová
         |             |     |          |      páska
         ---------------     ------------
                 \              /
                  \            /
 
                Volitelné programy

Umístění programu v paměti a sdílení paměti programy V 4

            0000H  ------------------------
                   |        MONITOR       |
            0800H  ------------------------
                   |       MONITOR +      |
                   |         MIKOS        |
            1000H  ------------------------
                   |      VOLNÉ EPROM     |
            2000H  ------------------------
                   |    RAM 1kB   JPR-1   |
            2400H  ------------------------
                   |      PORTY 0,1,2     |
                   |    PŘERUŠENÍ JPR-1   |
            3400H  ------------------------
                   |      VOLNÉ EPROM     |
            3800H  ------------------------
                   |    VIDEO RAM AND-1   |
            4000H  ------------------------
                   |    Pracovní oblast   |
                   |   MIKOSu a MONITORu  |
            4300H  ---------------------------------------------
                   | Pracovní oblast TOOL | Uzivatelské rutiny |
            4400H  ---------------------------------------------
                   |     Program  TOOL    |       BASIC        |
            6000H  ---------------------------------------------
                   |  Programová a datová |   Pracovni oblast  |
                   | oblast programu TOOL |      BASICu        |
            FFFFH  ---------------------------------------------

Úpravy na deskách

Deska REM-1:

Povinná úprava: zrušeni adresace RAM na desce - odpojeni výstupu od sběrnice (třetí stav) Pozn.: nestačí vytažení paměti RAM!

Provedení:

Zrušit drátěnou propojku mezi R-2.


Deska AND-1:

Doporučené úpravy: zrušeni žádosti o přerušení od zpětného běhu!

V případě povolení přerušení může nastat chybná funkce některých programů.

Provedení:

Zrušit propojku mezi špičkami 49-50.

Doporučená úprava: - úprava desky proti blikání na displeji

Provedení:

Strana spojů: přerušit spoj z konektoru X1 (šp.8-NON RES) na šp.1 IO D3A. Natáhnout drátěnou propojku ze špičky 1 IO D3A na šp.11 IO D2A (sig. MRQ na schématu desky)


Deska JPR-1:

Doporučená úprava: správná funkce tlačítka INT a tiskárny C2111.

Provedení:

Zrušit propojku 10-11, přerušit spoj u Špičky 21 D15 (MH 3214, NA R29,šp.l5 kon.X3,sp.9 D21-MH 3212). Natáhnout drátěnou spojku ze špičky 10 (propojky 10-11) na šp.21 D15. Doporučená úprava:

Odstranění falešného požadavku na přerušení po zapnutí systému.

Provedení:

Špičku 14 obvodu D16 (NON CLR 3212) odpojit od R35 a připojit na špičku 14 některého z obvodu D17-D22.


Doplněni významu tlačítek na klávesnici ANK-1

Znak klávesnice   odpovídající znakhex. hodnota
SHIFT Q^Q(monitor)11
SHIFT W^W(monitor)17
SHIFT A^P(monitor)10
SHIFT S^S(pedit)13
SHIFT XETX03
SHIFT <SP>TAB(tabulátor)09
Tlačítko<LF>ESC   (¤)1B
SHIFT <LF>LF(nový řádek)   0A
SHIFT R%25
SHIFT D&26
SHIFT F\5C
SHIFT C[5B
SHIFT V]5D
SHIFT G_(podtrženo)5F

Znaky v první polovině tabulky byly doplněny v novém programovém vybavení, znaky ve druhé polovině byly Již obsazeny v Mikrobasicu, ale nejsou označeny na klávesnici ANK-1.

Klávesy "SHIFT Q" (resp. CTRL Q na klávesnici C259.11) slouží k rezervaci "okna" na obrazovce televizního displeje.

Formát:   <SHIFT Q> <N>   N...počet mezer. Řádek
<SHIFT Q>implicitní rezervace
<SHIFT Q> <0>zrušení okna

Klávesy "SHIFT A" (resp. CTRL P na klávesnici C259.11) slouží k připojení a odpojení tiskárny (paralelně k displeji) První stisk-připojení, druhý-odpojeni atd. V dalším textu bude pro označování znaku "SHIFT" znak používáno označeni ^ znak.

Například: SHIFT S Jako ^S.

Znak "¤" Je znakem měny na některých klávesnicích nebo tiskárnách je místo znaku ¤ znak měny "dolar".


Poznámka:

Uvedené návody na použití programového vybaveni nejsou učebnici programování v Assembleru nebo Basicu a u uživatelů se předpokládají základní znalosti programováni. Programové vybavení se bude i nadále rozvíjet, budou doplněny ovladače používaných zařízení (např. děrnopáskové periferie - snímač FS 1503, děrovač DP DAKO pětistopý dálnopis T100,

Standardní 1/2" magnetická páska SM 5300, pružné disky atd.) podle náběhu nových prvků systému SAPI-1 do výroby. Dále se připravuje i překladač Jazyka FORTH.

Přejeme všem uživatelům nového programového vybaveni pro systém SAPI-1 mnoho úspěchů v jejích práci, s novým účinnějším programovým vybavením.



Popis monitoru V4.0

Monitor je určen pro SAPI-1 a rozšířené programové vybavení (Basic, TOOL). Tvoří vlastní jádro programového vybaveni a ostatní programy na něj navazují a využívají jeho služeb.

Hlavní funkcí monitoru je zajištění styku operátora s mikropočítačem a obsluha všech standardních I/O periferii (klávesnice, obrazovka, snímač, děrovač, tiskárna) s možnosti instalovat do systému jiné (uživatelské) periferie obdobného typu. Proto veškeré změny v hardwarové konfiguraci systému se projeví jen změnou programu monitor a ne v ostatních programech systému SAPI-1.

Další důležitou funkcí monitoru je poskytování služeb pro uživatelské programy na smluvených adresách.

Tento monitor poskytuje některé základní služby operačních systémů CP/M, ISIS-II a většinu služeb OS COS-80. Množina povelů monitoru je zvolena tak, aby bylo možné provozovat programy již se základním 2K monitorem.

Jádro monitoru zabírá 2K paměti a na něho navazuje monitor+ (plus) a mikos, které rozšiřují základní množinu povelů. Základní monitor 2K testuje, zda je v operační paměti monitor+ a umožni provádět rozšířené příkazy monit.+, jinak ohlásí chybu. Základní monitor Je uložen na adresách 000H až 7FFH, monitor+ a mikos jsou uloženy na adresách 800H až FFFH. Povely monitoru a některé filosofie mikosu vycházejí z programového vybaveni COS-80, které je implementováno na SAPI-80, proto nebude uživatelům systému SAPI-80 a obdobných systémů činit přechod na systém SAPI-1 potíže. Programové vybaveni SAPI-1 zahrnuje nové poznatky získané z provozu SAPI-80, Je modernější a poskytuje uživateli větší komfort.


Seznam jednotlivých povelů

1) Seznam povelů základního MONITORU 2K

.A"ASSIGN"- přiřazení I/O periferii
.C"CLEAR"- počáteční nastaveni všech dat a podmínek
.D"DISPLAY"- zobrazeni úseku paměti
.F"FILL"- naplněni úseku paměti konstantou
.G"GO TO"- odstartováni programu od zadaná adresy s možností zadáni dvou adres přerušeni
.M   "MOVE"- překopírováni oblasti paměti na zadanou adresu
.Q"QUERY"- zobrazeni stavu přiřazeni I/O periferii
.S"SUBSTITUTE"- zněna obsahu paměti
.X"EXCHANGE"- zobrazeni obsahu registru a nebo jeho zněna


2) Seznán povelů MONITORU+

.K"KAZETA"- povel kazetového operačního systému mikos, následuje další znak (viz 3)
.J"JUMP"- kontrola a spuštění programu zavedeného do RAM z kazety
.I"INPUT"- definováni "INPUT" periferie a nastaveni příznaku začátku souboru
.O"OUTPUT"- definováni "OUTPUT" periferie a nastavení příznaku začátku souboru
.R"READ"- čtení souboru typu INTEL-HEX-FORMAT
.W   "WRITE"- zápis souboru typu INTEL-HEX-FORMAT
.E"EOF"- ukončeni zápisu HEX-FORMATU a zadáni startovací adresy (=ukončeni HEX souboru a automaticky se provede "CLOSE").
.N"NULL"- děrováni blanku (prázdných znaků)
.P"PEDIT"- start programu PEDIT
.T"TRACER"- start programu TRACER
.B"BASIC"- start programu BASIC


3) Seznam povelů operačního systému MIKOS

.K_I"INIT"- inicializace kazety
.K_B"BASIC"- načtení mikrobasicu (startovací adresa)
.K_S"SAVE"- uloženi binárního programu
.K_L"LOAD"- načteni binárního programu
.K_D"DIRECTORY"- výpis adresáře
.K_O"OPEN"- otevřeni výstupního souboru (x)
.K_C"CLOSE"- uzavřeni výstupního souboru (x)
.K_F"FIND"- otevřeni vstupního souboru (x)
.K_A"APPEND"- připojeni dalšího výstupního souboru (po CLOSE)
.K_M   "MOTION"- posuv pásky
(x) - vhodná především pro testování.


Popis Jednotlivých povelů monitoru

A = Assign device

Přiřazení periferií systému.C-console, (systémové zařízeni např. terminál s klávesnicí, teletype atd.), R-READER (čtení - např. snímač děrné pásky, kazetový magnetofon), P-PUNCH (zápis-např. děrovač děrné pásky, kazetový magnetofon), L-LIST (listing-tiskový protokol, např. tiskárna Consul 2111).

Použité zkratky pro označení zařízení:

- CRTdisplej s klávesnicí
- LPRtiskárna
- PTPděrovač děrné pásky
- PTRsnímač děrné pásky
- USER1uživatelské zařízení (kazetový magnetofon)
- USER2   druhé uživatelské zařízení


významné
bity IOBYT
povel   zařízeníčíslo služby
pro IODEF
XXXX XX00C=TCRT+LPR
XXXX XX01C=CCRT
XXXX XX10C=BBATCH(IN:PTR)
(OUT:LPR)
XXXX XX11C=1USER(IN:1)0
(OUT:1)1
XXXX 00XXR=TCRT
XXXX 01XXR=PPTR
XXXX 10XXR=1USER 12
XXXX 11XXR=2USER 23
XX00 XXXXP=TCRT
XX01 XXXXP=PPTP
XX10 XXXXP=1USER 14
XX11 XXXXP=2USER 25
00XX XXXXL=TCRT+LPR
01XX XXXXL=CCRT
10XX XXXX   L=LLPR
11XX XXXXL=1USER 16
--CONSOLE USER STATUS   7
--MEMTOP8


IOBYT

-----------------------------
| , | , | , | , |
 7 6 5 4 3 2 1 0  ...číslo bitu
\___^___^___^___/
 LO  PO  RI CO,CI....rutina monitoru

Rozděleni bitů u IOBYTE pro přidělováni periferii (1.sloupec tabulky).


Nastaveni uživatelských periferii se provádí pomoci rutiny IODEF.

V reg (C) je číslo služby (0-8) a v reg. (DE) je adresa příslušné rutiny, číslo služby (8) - nastaveni MEMTOP (DE) - deklarace konce RAM.

MEMTOP - nastavuje horní hranici paměti a zbytek paměti je chráněn před přepsáním systémovými programy (BASIC,PEDIT atd.).

Poznámka: Monitor se ohlašuje znakem (tečka na displeji).

Přiklad.

.A-C=T nastavení consoly CRT+LPR (pozor tiskárna musí být připojena). Podtržené znaky píše systém.


B = BASIC

B start interpretu Basic, pokud je zaveden v operační paměti. Text programu se zachová po opětovném spuštění!

Přiklad. .B


C = CLEAR

C mazání proměnných monitoru a všech řídicích proměnných. (Programový RESET). Nastaví se takové podmínky, že při spuštění PEDITu, TOOLu, BASICu se provede Inicializace a ruší se texty, tabulky symbolů atd. (studený start jako RESET. Nutno používat při přechodu mezi programy TOOL a BASIC, kde se zajišťuje takto ochrana, aby jeden program nepoškodil druhý.

Poznámka. Při omylu je možno zachránit data "Teplým startem"

- viz příkaz G.

Příklad. .C


D = display memory

D=<L.ADR>=<H.ADR> zobrazení obsahu paměti. Lze přerušit libovolnou klávesou.

Přiklad. 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@..

<CR>...znak návrat vozu'


E = ENO OF FILE COMMAND

E=<ADR>

Děruje konec souboru a startovací adresu programu. Je-li adresa=0, program se nestartuje.

Příklad. .E=7000H   ; startovací adresa 
         .E=0       ; program se nestartuje automaticky při čtení (přikaž R)

F = FILL RAM MEMORY

F=<L.ADR>=<H.ADR>=<BYTE> <CR>

Naplněni úseku paměti konstantou.

Přiklad. .F=F000=FF00=01 ;naplnění paměti od adr. F000H až FF00H konstantou 01.


G = GOTO

G=<start.adr>=<break1>=<break2> <CR>

start programu a nastavení bodu přerušeni pro laděni programu. (.X ...umožni prohlížet registry atd.)

Programy PEDIT, BASIC maji na adrese 4400 T.ZV. "Studený start", který umožní obnovu dat, po nechtěném zrušení (např. po příkazu .C, nebo po stisknutí tlačítka RESET. program TOOL (ASSEMBLER, TRACER) má studený start na adrese 4C00 a teplý na adrese 4C03.

Příklady.

G=20<CR>.start programu na adrese 20H
G=100=109.start od 100H a nastav přerušeni na 109H
G=30=37=45..nastavení 2 bodu přerušení
G=<CR>..pokračuj do minulého přerušení
G=<SP>=30<CR>..pokračuj a nastav nové přerušení
     <SP>...znak 'mezera'

I = INPUT

Ovládání příznaku otevřeni vstupního souboru (zrušení otevření) pro vstup dat.

Doporučuje se příkazy používat vždy při zavedení nového programu (např. změna TOOL na BASIC a podobně), protože nastaví příznaky MIKOSu do počátečního stavu.

I=1z kazety READER USER 1
I=2z uživatelského snímače (READER USER 2)
I=RREADER - snímač pásky
I=T   CONSOLE

Přiklad. .I=1 <CR> ;nastav USER 1


J = JUMP

Start programu zavedeného příkazem (K_L) a kontrola součtu v paměti.

Přiklad. .J ;skok na program


K = kazeta

Povely kazetového operačního systému - MIKOS.

Podrobný popis je uveden v popisu MIKOSu.

Formát: .K_X Kde X je jeden z povolených příkazů Mikosu.

Přiklad. .K_L ;Zavedení binárního programu do paměti.


M - MOVE a BLOCK OF MEMORY

Přesun úseku paměti od zadaných adres (počáteční, koncová) zdrojová oblast do úseku, který je zadán počáteční adresou. Úseky se nesmí překrývat jinak dojde k porušeni dat. (nový přepis).

Formát: .M =<zdroj 1> =<zdroj 2> =<příjemce 1><CR>

Kde ZDROJ 1,2 jsou adresy počátku a konce zdrojové oblasti.
PŘÍJEMCE 1 - je počáteční adresa na kterou se provádí přesun. Obsah zdroje se nemění, přesun se provádí včetně koncové adresy.

Přiklad. .M=7000 =7006 =A000<CR>

Obsah zdroje         Obsah přijímací zóny
41 42 43 44 45 46    00 00 00 00 00 00  Před
41 42 43 44 45 46    41 42 43 44 43 46  Po

O = OUTPUT

Ovládáni příznaku otevření výstupního souboru (zrušení otevření) (pro výstup dat). Pro používání platí stejná doporučení jako u příkazu INPUT.

O=1na kazetu (PUNCHER USER 1)
O=2na uživatelský děrovač (PUNCHER USER 2)
O=Pna děrovač (PTP)
O=T   na console (CRT)

Příklad. .O=1<CR>


N = 120x NULL PUNCH

N děrováni blanku


P = PEDIT

P skok do editoru, zachová text. buffer, při opětovném spuštění po povelu .C se zruší automatická ochrana textu, (možná záchrana - G =4403<CR> ... viz povel .G a uložit text).

Přiklad. .P ;skok do PEDITu


Q = QUERY

Q zobrazí stav I/O přiřazeni (IOBYTE)

Příklad.

.Q C=C R=1 P=1 L=L   ;standardní nastaveni MONITOREM+ MIKOS
.Q C=C R=P P=P L=C   ;standardní nastaveni je-li pouze MONITOR

R - READ HEX.TAPE

Čtení hexadecimální pásky a její uložení do paměti, podle obsahu OFFSETU. Není-li OFFSET uveden,bere se OFFSET 0, a program se uloží dle "Báze=7000H".

OFFSET může být jak v kladném tak i v záporném směru.

Formát:

R=<OFFSET> <CR> LOADER Hlášeni chyb: S- (SUM) chyba kontrolního součtu M- (MEMORY) v cílovém prostoru není RAM :- chybí příznak začátku rekordu

Příklad.

Program byl přeložen v modu X a na pásku zapsán příkazy W,E.

Požadujeme přečtení a uložení programu na adresu 8000H

.R=1000H

Program se uloží na adr. 8000H.

Totéž, ale program uložit na adresu 4400H

.R=D400H ;7000H+D400=>4400H přenos zanedbat


S = SUBSTITUTE MEMORY CONTENS

Formát: S=<ADR> <SP> OBSAH -<NOVÝ OBSAH> . . . <CR>

Záměna obsahu paměti:
- po znaku " ’ " (apostrof) se může vložit zrak jako ASCII kod
- po znaku " , " (čárka) se zobrazí adresa a další byte

Příklad: .S=4400 C3-00            ;na adr 4400 je původní obsah C3, nahrazeno 00
         .S=7000 FF-'A            ;změna FF na 41-kód "A"
         .S=7000 41- 01- 02- 03-  ;postupný výpis bez zněn
         .S=7000 41- 01-,         ;přechod na výpis adresy
         7002= 02,
         7003= 03

T = TOOL

Skok do souboru programu "TOOL", pokud byl zaveden do paměti

Příklad. .T

Pozor! Je-li zaveden program TOOL po BASICu nebo naopak je nutné povelem "C" zrušit podmínky monitoru a inicializovat takto řízeni automatické ochrany dat jednotlivých programů.


W - WRITE TO TAPE HEX

Formát: W = <L .ADR> <SP> =<H.ADR> <CR>

Zápis obsahu paměti do děrné pásky, za posledním w-příkazem musí následovat E-příkaz!

Příklad.

.W=4400=5FFF <CR>


X = EXAMINE AND MODIFY REGISTER

Kontrola a popřípadě úprava obsahu registru. Formát: .X<REGISTER>=OBSAH - [<nový obsah>]...<SP>= dalši reg.,
<SP> ... DALŠÍ REGISTR
<CR> ... UKONČENI

X<CR>

Přiklad.

.X<CR> A=FF B-A0 C-..... Obsahy všech registrů včetně F-FLAG, PC, SP

.XA=FF-01<CR> Nový obsah reg. A


Poznámky:

U příkazů, která maji více parametrů, se zadání jednotlivých parametrů ukončuje znakem <SP> - mezera, ukončeni příkazu znakem <CR> - návrat vozu.

Je-li vyžadována adresa, zadává se v hexadecimálním tvaru bez písmene "H". Dojde-li při zadávání k chybě, lze chybný údaj opravit tak, že se znovu správně napíše (systém bere poslední 4 zapsané číslice). Např. chceme zapsat adresu 7800 a napsali Jsme:77 tudíž pokračujeme v zápisu 800 (celkově 77800) systém vezme správné 7800). Počet vstupních znaků je závislý na typu operace: Slovo (4 HEX. čísla), byte (2 hex.).

Speciální klávesy

ANK-1C259.11význam
SHIFT WCTRL Wskok do monitoru
SHIFT ACTRL Ppřepnuti tiskárny (zap/vyp)
SHIFT QCTRL Qokno
SHIFT XCTRL Cpřerušení jiného programu bez MONITORU (BASIC,TOOL,PEDIT)

Klávesa "SHIFT Q" vymezí na obrazovce televizního displeje "okno", které se nepřepisuje.

Formát:<SHIFT Q><N>... kde N je počet rezervovaných řádka 0-9.
<SHIFT Q><CR>... rezervuje implicitní počet (11)
<SHIFT Q>0... zruší "okno"


Základní služby monitoru

Protože monitor je uložen od adresy "0" je na rozdíl od jiných monitorů tabulka služeb od adresy "100H" a ne od "0F800H" (INTELLEC).

V případě, že systém SAPI-1 má paměť RAM i na adresách 0F800H, povelem MOVE lze tabulku služeb překopírovat na ADR:0F800H a potom bude monitor plně kompatibilní s monitorem ISIS-II.

100Hzačátek tabulky služeb
+0'START'monitoru + inicializace
+3'CI'console INPUT <A>
+6'RI'READER INPUT <A>, CY=1 konec pásky
+9'CO'console output <C>
+0CH'PO'punch output <C>
+0FH'LO'list output <c>
+12H'CSTS'console status <A>
+15H'IOCHK'I/O byte read <A>
+18H'IOSET'I/O byte set <C>
+1BH'MEMCK'nastav konec RAM paměti <A>.. LOW,<B>. HIGH BYTE
+1EH'IODEF'definuj uživatelskou periferii <C>. číslo<DE>.. adresa
+21H'SPCL'V <HL> adresa kurzoru
Služby COS-80 systému SAPI-80
+24H'CRLF'zobraz nový řádek
+27H'EXPR'přečti zadaný počet<C>16-bitových parametrů do zásobníku
+2AHx'ERROR'chybové hlášeni, BEEP a návrat do monitoru
+2DH'ASHEX'převeď ASCII na HEX<A>
+30H'DADR'zobraz adresu uloženou v<HL>na 'CO'
+33H'DBYTE'zobraz byte v<A>..HEX na 'CO'
+36H'HILO' HL+1:DE,IF HL>DE THEN CY=1 ELSE CY=0
+39H'NEXT'pokračuj v programu monitor
+3CH'SPACE'zobraz mezeru na 'CO'
+3FH'CINCR'čti 'CI' proveď ECHO a proveď analýzu znaku (PO <CR> JE CY=1, PO <SP> JE Z=1
+42H'TEXT'zobraz text<HL>.. adr, <D>.. délka na 'CO'
+45Hx'XY'využívá program TOOL
+48H'HXASC'<A> převeď HEX na ASCII
+4BHx   'EXFLG'externí ovládáni FLAGU pro řízení monitoru a MIKOSu
+4EHx'ASSIGN'   přidělení periferních zařízeni

Poznámka: služby označené "x" jsou upraveny proti COS-80.


Služby CP/M

Adresa pro voláni služeb je společná "0005", jednotlivé služby se rozlišuji pomocí obsahu registru<C>!

V monitoru jsou implementovány služby CP/M:

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


Služby EXFLAG

Řízení služeb systému v registru <C> je číslo služby a v registru <A> (akumulátoru) Jsou data pro řízeni služby.

C=0 mode pro displej    A-0   normální znaky
                        A-40H blikající znaky
                        A-80H podtržená znaky
                        A-C0H široké znaky

C=1   FIND    A=0   Pro I=1 FLAG pro otevřeni souboru
C=2   FIND              I=2  "        "        "
C=3   OPEN    A=0   Pro O=1  "        "        "
C=4   OPEN              O=2  "        "        "
C=5  nastav kurzor  A...číslo řádku
C=6  nastav kurzor  A...Číslo posice
C=7  rezerva line   A...počet řádků ("okno")

Řízeni obrazovky

CONSOLE OUTPUT simuluje chování displeje AND-16 a SM 7202. Řidiči znaky 1FH. 1EH, 1DH a 08H maji shodnou funkci. Jako nová funkce je možnost zadáni okna na obrazovce, ve kterém může být trvale zobrazen text. Pro zadání okna Je určen znak "Q", po kterém následuje další znak, který určuje počet řádků od začátku obrazovky jako velikost okna. Okno se oddělí na obrazovce od ostatního textu blikající čárou.


Řízeni tiskárny

Tisk na tiskárnu lze řídit pomoci povelu přiřazení "ASSIGN" nebo kdykoliv pomoci klávesy <CTRL P>- pro klávesnici CONSUL 259.11, <SHIFT A> pro klávesnici ANK-1. Při prvním stisknuti se všechny znaky vysílané na CO (console současně vypisují i na tiskárně, druhým stisknutím se tento režim ruší.

Pozor: K systému musí být připojena a zapnuta tiskárna!!!


Formát dat Intel-hex

Data zapisovaná příkazy W a čtená příkazem R jsou ve formátu INTELLEC HEX. Data jsou členěna do bloku. Každý záznam má označení počátku, délku záznamu, adresu pro umístění dat, vlastní data a jsou ukončena kontrolním součtem. Formát byl navržen firmou INTEL pro programování paměti PROM a EPROM s 8-mi bitovou strukturou. Podniky Tesla převzaly tento formát jako jediný a závazný pro programování pevných pamětí.

Formát:

(:)( L1)( ADR 1)( TYP 1)( DATA 1)( KC1)
 1   2     4       2       2xL1     2   ...počet HEX.číslic
(:)( L2)( ADR 2)( TYP 2)( DATA 2)( KC2)
(:)( LN)( ADR N)( TYP N)( DATA N)( KCN)

Poznámka. Znaky "( )" se ve skutečném formátu nevyskytují a slouží pouze pro grafické oddělení jednotlivých poli záznamu. Záznam je proveden v ASCII kódu, a přípustné znaky jsou pouze hexadecimální číslice tj. 0-9, A-F, a znak " : " (dvojtečka) indikující počátek záznamu.

Význam poli:

- :     dvojtečka - začátek záznamu, délka pole záhlaví -1 znak
- L     délka pole dat ve slabikách (1slabika = 2 hexačíslice v ASCII. Délka pole "L" -2 hexčíslice.
- ADR   Adresa v paměti pro uložení 1. slova dat z pole data.
        Data se ukládají do paměti vzestupně za sebou. Délka pole jsou 4 hexačíslice.
- TYP   Typ záznamu. Zatím jsou stanoveny následující významy:
        =00H Jde o datový záznam
        =01H Jde o záznam s významem "konec souboru" Délka pole -2 HEX. číslice.
- DATA  Vlastní data. Dvě HEX. číslice se ukládají do jedné
        slabiky. Délka pole musí odpovídat dvojnásobku uvedeném v poli "L".
- KC    Kontrolní číslo. Záporně vzatý kontrolní součet (slabik
        v paměti). Poznámka. Součet všech slabik ("L"-"KC" včetně) musí být nulový.

Výpočet hodnoty kontrolního součtu

A) Počínaje polem L a konce polem DATA se hodnota každé dvojice hexadecimálních číslic vyjádři ve formě 8-mi bitového čísla (v přímém binárnim kódu).
B) Tato osmibitová čísla se sečtou
C) záporně vzatý součet se vyjádři ve formě dvojkového doplňku.

Poznámky :

A) Hodnoty poli pro poslední záznam.

TYP=01H, L=00H, DATA=prázdné. ADR=0000H nebo počáteční adresa.

B) Přiklad.

:103150000E01117A31CD40000E09119031CD4000A1
:103160000E0C119231CD40000E09119031CD40006E
:00000001FF


Poznámky k funkci monitoru.

Monitor pro klávesnici ANK-1 obsahuje programovou funkci "REPEAT", která umožňuje automatické opakováni znaku při držení klávesy na klávesnici. Asi po 0.8 sec. se provede zopakováni znaku.

Klávesa SHIFT X (ANK-1) nebo CTRL C (C259.11) způsobí přerušení provádění programu.

Klávesa SHIFT W (CTRL W) způsobí výstup z programu (kromě monitoru) a vypíše obsahy registrů a předá řízení monitoru.

Systém MIKOS obsahuje příznaky "FLAG" pro vstupní a výstupní soubory, které nejsou uživateli přístupné a které řídí stavy rozpracovanosti souboru.

V některých případech je nutné pro správnou funkci systému, mít možnost počátečního nastavení těchto příznaků, a proto jsou v monitoru dva příkazy - "I" "O", které umožní uživateli počáteční nastavení příznaku.

Toto nastavení je nutné v případě nenormálního ukončení programu (např. při zacyklení programu a jeho přerušení ^W atd.)



Popis operačního systému MIKOS

(MI-kro K-ezetový O-perační S-ystém )


"MIKOS" pracuje se základní sestavou SAPI-1 s jedním kazetovým magnetofonem. Umožňuje pořizovat data, programy pomocí editoru PEDIT, překládat a ladit uživatelské programy ASSEMBLEREM a TRACEREM. Zpracovávat data Basicem. "MIKOS" automaticky formátuje data zapisovaná na kazetu do bloku, které zabezpečuje pořadovým číslem bloku. Uživatel pracuje s daty jako by pracoval se snímačem nebo děrovačem pásky. Veškeré ovládání se děje přes monitor a systémové rutiny RI, PO. Příkazy I=1, O=1 nastaví uživatel "IOBYT" na kazetový magnetofon a zadá systému, že není otevřen žádný vstupní ani výstupní soubor. Systém automaticky otevře soubor v okamžiku kdy se provede první manipulace s daty. Výstupní soubor se ukonči automaticky po zapsání znaku <CTRL Z> tj . SUB v ASCII. Může být zadán přímo z klávesnice C259.11 na 'PO' (kazeta nebo děrná páska), nebo povelem K - C. Během vyhledávání souboru se automaticky na první řádek obrazovky vypisuje jméno souboru a pořadové číslo bloku, znak " : " indikuje probíhající čteni z kazety, znak "x" indikuje čteni dat z pásky a jejich ukládáni do paměti, znak '=' indikuje, že během vyhledávání byl špatně přečten blok. Zpracováni chyby se provádí po špatném přečtení bloku nebo jeho vynechání. MKOS vypíše 'ERROR'a čeká na obsluhu. Klávesou "N" je možno zadat ignorování čtení. Po jiné klávese "Y" nebo <SP> vypíše se "BACK PLAY DONE". Obsluha převine pásku (několik CM) zpět a přepne na čtení.

MIKOS začne vyhledávat špatně zpracovaný blok (provádí zobrazeni jména a čísla bloku) až přečte správné blok. Potom přestane automatické vyhledávání a vypíše nový řádek, a pokračuje proces, přerušený chybným čtením. MIKOS má dvě délky meziblokových mezer. Dlouhá mezera umožni zastavit a znovu rozjet magnetofon. Potom nejsou zápis ani čteni závislé na rychlosti zpracováni dat uživatelem (používá se při zápisu HEX formátu, v Basicu atd.). Krátká mezera se používá při zápisu a čteni binárních dat (příkazy K-L, K-S).


Povely systému MIKOS

K_A'APPEND'připojení dalšího výstupního souboru (PO CLOSE)
K_B'BASIC'čteni ve formátu mikrobasicu
K_C'CLOSE'uzavření výstupního souboru
K_D'DIRECTORY'výpis adresáře
K_F'FIND'otevření vstupního souboru
K_I'INIT'inicializace pásky
K_L'LOAD'načtení binárního souboru
K_M   'MOTION'posuv pásky
K_O'OPEN'otevření výstupního souboru
K_S'SAVE'uložení binárního programu
 
W'WRITE'zápis souboru ve formátu INTEL-HEX
R'READ'čteni souboru ve formátu INTEL-HEX
E'END-OF-FILE'   zápis ukončení souboru INTEL-HEX

Pásku je možno inicializovat tj. zapsat na mg. pásku blok záhlaví, ve kterém je možno napsat označení pásky, verzi atd. Záhlaví se vypisuje při příkazech K_D a čteni, pokud je páska na začátku. Slouží k vizuální kontrola výběru správné pásky. Funkce čteni a zápisu je možno provádět ve dvou typech -
- binární, INTEL - HEX formátech.

Komunikace s obsluhou probíhá dialogovým režimem, kdy systém vypíše nápovědný text a čeká na provedení úkonu obsluhou a potvrzení, že úkon byl proveden stisknutím klávesy na klávesnicí.


Stručný přehled příkazů a odpovědí


A) Inicializace

.K_I
BOT
RECORD DONE? <Y>
VOLUME NAME
: <OZNAČENI PÁSKY><CR>
. ;návrat do monitoru - ukončení funkce

B) čtení pásky (binární-implicitní uloženi)

.K_L
NAME
:<JMÉNO SOUBORU><CR>
PLAY DONE? <Y>

... vyhledání a natažení souboru do paměti


C) uložení dat z paměti na pásku (binární)

.K_S
=<XXX><SP>=<YYY><CR>  ;poč.adr.XXXX, koncová adr. YYYY
LAST NAME ;Jméno posledního souboru na pásce
:<JMÉNO SOUBORU> <CR >
PLAY DONE? <Y>        ;hledáni posledního souboru

....hledání

RECORD DOME?<Y>       ;nastavení zápisu na Mg.
NEW NAME
:<JMÉNO NOVÉHO SOUBORU><CR>

...zápis dat na pásku ;po zápisu zastavení


D) Zápis bez vyhledání (předcházel-li zápis, páska za posledním souborem).

.K_A
RECORD DONE? <Y>
NEW NAME
:<JMÉNO NOVÉHO SOUBORU><CR>

...zápis hlavičky souboru

.K_S
=<XXXX><SP> = <YYYY> {CR) 

---nahrání souboru

Pozn. Neprovádí se vyhledávání posledního souboru


E) Převíjení - pohyb pásky

.K_M       ;zapnutí magnetofonu
DONE? <Y>  ;zastavení Mg.

F) Pomocné funkce

.K_O               ;otevření souboru
LAST NAME
:<JMÉNO><CR>
RECORD DONE? <Y>
NEW NAME
:<NOVÉ JMÉNO><CR>  ;otevření souboru pro zápis
.K_C               ;uzavření výstupního souboru
.K_F               ;otevření souboru pro vstup
NAME
:<JMÉNO><CR>
.K_B               ;čtení pásky s mikrobasicem
=<XXXX><CR> ;adresa uložení
PLAY DONE? <Y>

xxx ;signalizace nahrávaných bloků mikrobasicem

K_D                ;čtení adresáře pásky a zobrazení na displeji
PLAY DONE? <Y>

VÝPIS
provádí se kontrolní čtení souboru včetně vyhodnocení chyb při čtení. Právě čtený blok se průběžně zobrazuje na prvním řádku obrazovky název a číslo bloku. v dolní polovině je zobrazen adresář, který obsahuje pořadové číslo programu na pásce (dekadicky), název programu (max. 11 znaků) a délku programu v blocích (hexadecimálně).

<SHIFT X>          ;ukončení výpisu adresáře

Příkaz K_D se automaticky neukončuje, protože na pásce není znak logického konce pásky (z důvodu manipulace s kazetovým magnetofonem) a proto je nutno ukončení příkazu K_D provést ručně stiskem klávesy <SHIFT X> u ANK-1 nebo <CTRL C> u C259.11.


G) INTEL-HEX FORMÁT

Posloupnost příkazu při zápisu dat na pásku

O=1
W=<POČ .ADRESA> <SP>=<KONČ .ADRESA><CR>

---VLASTNÍ KOMUNIKACE SE SYSTEMEM---
---ZÁPIS DAT NA PÁSKU---

E = <STARTOVACÍ ADRESA> <CR>

Posloupnost příkazu pro čtení dat z pásky

I=1
R=<OFFSET><CR>

---VLASTNÍ KOMUNIKACE SE SYSTÉMEM---
---ČTENÍ DAT Z PÁSKY DO PAMĚTI---


Rychlé vyhledáváni souboru

Během vyhledáváni souboru na kazetě, lze využívat i rychloposuvu (vpřed nebo vzad), protože na hornim řádku obrazovky se objeví jméno souboru a číslo právě čteného bloku. Na základě těchto údajů lze podstatně zrychlit dobu pro vyhledáváni souboru na kazetě a tím eliminovat základní nevýhodu kazetového magnetofonu (tj . dlouhá doba přístupu k souboru).


Poznámky k funkci OS MIKOS

Soubory jsou na kazetu ukládány s názvem o maximální délce 11 znaků. Dále je možno ukládat společně s názvem poznámky, např. číslo verze, datum pořízeni atd. a celková délka názvu poznámky může být až do 64 znaků.

Příkazy, které vyžadují název souboru provádějí srovnání zadaného názvu s názvy na pásce. Porovnáni názvu se provádí v délce zadaného názvu (t j . do první mezery v názvu nebo 11 znaků).

Např. na pásce jsou soubory SOUB1, SOUB2, SOUB3 a např. při příkazu K_L NAME <SOU><CR> systém vybere první soubor SOUB1.

Při zavádění názvu souboru je možná i hvězdičková konvence tj., že místo názvu zadáme hvězdičku a systém přečte hlavičku souboru a dotazuje se zda je to požadovaný soubor (vyžaduje odpověď Y/N) v případě kladné odpovědi provede požadovanou operaci, a v případě záporné odpovědi pokračuje v hledání souboru.

Stav rozpracovanosti souboru je řízen příznaky "FLAGY", které jsou součástí OS MIKOS a nejsou přístupné uživateli. V některých případech je nutné provést počáteční nastavení těchto příznaků (např. při nenormálním ukončení programu, který pracoval se soubory na kazetě), a k tomu slouží příkazy monitoru " I " pro vstupní soubor a " O " pro výstupní soubor.

OS MIKOS provádí průběžné hlášeni své činnosti na obrazovce displeje. V případě čtení se na horním řádku obrazovky zobrazuje signální znak " : " nebo " x ", název programu a pořadové číslo bloku v souboru (HEXA), Znak " : " signalizuje provádění čtení do bufferu (bez dalšího ukládání) a znak " x " signalizuje ukládání do bufferu a další zpracování (aktuální soubor). Dojde-li při čtení k chybě je chyba signalizována znakem "#" který se tiskne na řádku vyvolání funkce čtení. Při zápisu na kazetu je prováděno zkrácené hlášení - tj. na horním řádku se zobrazuje pouze pořadové číslo právě zapisovaného bloku.


Formát dat na kazetě.

Data na kazetě jsou ukládána ve formátu:

-----------------------------------------------------------------
| MEZIBLOKOVÁ  MEZERA | 10 | 10 | KOD | 255  BYTE  DATA | NÁZEV |
-----------------------------------------------------------------
-----------------------------------------------------------------
| C.BLOKU | C.SOUBORU | KON.SUMA | 10 | 00 | MEZIBLOKOVÁ MEZERA |
-----------------------------------------------------------------
-MEZIBLOKOVA MEZERA: dvě délky-krátká cca 100ms(typ B)
-dlouhá cca 1s(typ A)

-10Synchronizační znaky
-KÓD01záhlaví souboru
04   koncový blok souboru
:záhlaví pásky (označeni pásky - INIT)
Aznakový soubor
Bbinární soubor
-BLOKDAT 255 byte (KÓD+BLOK - funkci blok 256 byte, ostatní znaky tvoří rámec funkčního bloku pro OS MIKOS).
-NÁZEV11-byte označeni souboru
-C. BLKhexa číslo bloku v souboru
-C. SOUBčíslo souboru
-KONT. SUMAkontrolní číslo - neg. součtu všech znaků včetně rámce (tj. od 10)
-UKONČENI BLOKU10,00


Formát funkčních bloků:

-----------------------------------------------------------------
| :  | NÁZEV KAZETY 64 BYTE |    VYPLŇ DO 256 - PRÁZDNÉ 00      |
-----------------------------------------------------------------
-----------------------------------------------------------------
| 01 | NÁZEV SOUBORU 11 BYTE | POZNÁMKY DO 64 B | VYPLŇ         |
-----------------------------------------------------------------
-----------------------------------------------------------------
| 04 | ZBYTEK DAT TYPU "A" NEBO "B" | VYPLŇ                     |
-----------------------------------------------------------------
-----------------------------------------------------------------
| A  | ASCII SOUBOR                                             |
-----------------------------------------------------------------
-----------------------------------------------------------------
| B  | < | ST .ADR | KONC .ADR |>| KS-1 | DATA 1         | KS-2 |
-----------------------------------------------------------------

Poznámky:

Čísla 10, 01, 04, 00 jsou HEX, znaky: A B jsou zn. konst.

Znak | pouze graficky odděluje jednotlivá pole.

"04" - Je posledním blokem souboru a může obsahovat zbytek dat příslušného souboru typu "A" nebo "B".

"A" soubor obsahuje znaky v ASCII kódu a data jsou ukončena znakem "SUB" (CTRL Z) "1A"-HEX. Bloky souboru A jsou oddělovány dlouhou mezerou (čas pro zpracování dat).

"B" - binární soubor obsahuje hlavičku - tj . adresu uloženi do paměti, koncovou adresu a kontrolní součet hlavičky. Adresy jsou rámovány znaky "<" ">" - Kontrolní součet KS-1 chrání program před nesprávným uložením popř. přepisu. Dále následuji vlastní binární data, která jsou zabezpečena rovněž kontrolním součtem (KS-2). Formát "B" používá krátké meziblokové mezery.


Doporučení pro práci s kazetovým magnetofonem

1) POZOR
Na umístění kazetového mgf vzhledem k televizoru, vychylovací obvody televizoru vytváří rušivé pole, které může ovlivnit čtecí obvody mgf. Nastavte polohu mgf na nejmenší rušeni - bez kazety, zapnout přehráváni (Play), regulátor hlasitosti na max. Natáčením mgf nebo vzdalováním od televizoru najdete místo s nejmenšim rušením.

2) Na rozdíl od profesionálních systémů není u SAPI-1 automatická kontrola čtením po zápisu (nedovoluje to použitý konvenčni mgf). Proto udržujte pečlivě čistotu hlavy mgf. kazety udržujte v bezprašném prostředí, ukládejte vždy převinuté do originálních krytů. Kazety Emgeton použijte jen po přezkoušení. Doporučujeme používat kazety Orwo K60 (nebo zahraniční LH). Záznam začínejte nejméně 10 sekund od začátku kazety, úvodní část bývá znehodnocena slépkou - prosakováním lepidla.

3) Vždy zhotovujte nejméně dvě kopie souboru (programové vybavení to dovoluje). Okamžitě po záznamu si ověřte příkazem K_D správnost souboru.


Tabulka služeb OS MIKOS

800HZačátek tabulky služeb
+0Teplý start MIKOSU
+3Studený start MIKOSU
+6Rezervováno - nepoužívat
+0COtevřeni vstupního souboru FIND
+0CH   Otevřeni výstupního souboru OPEN
+0FHUzavřeni výstupního souboru CLOSE
+12HZavedeni programu v binární formě LOAD
+15HUloženi programu v binární formě SAVE



TOOL ASM80 V4.0

Soubor programu "TOOL" obsahuje programy pro práci v Assembleru-editaci, ladění a představuje programové vybavení pro "malý" vývojový systém.

Programy lze rozdělit do pěti základních skupin:

1)Assemblery - textový, jednořádkový;
2)Editor - Pedit, příprava zdrojových textů a jejich opravy a modifikace;
3)Trasovací program - tracer pro ladění assemblerovských programů;
4)Zpětný překladač - Deassembler, převod strojového kódu programu do symbolické verze;
5)Pomocné programy - základní služby monitoru a rozšířeni.

Soubor programu "TOOL" poskytuje uživateli Assembleru účinné prostředky pro přípravu, překlad a odladění uživatelských programů .


Seznam povelů

+...hlášení na displeji programu TOOL
+AASSEMBLYStart Assembleru a volba režimu překladu "PASS="
+BBEGINNulováni tabulky symbolů, podmínek, nastavení zásobníku (STACK) a registrů
+CConditionNastaveni podmínky TRACERU
+DDisplayZobrazeni obsahu paměti ( <L.ADR> , <H.ADR> )
+EEOFVyděrování konce souboru a zadáni startovací adresy
+FFINDVyhledání řetězce znaku v paměti:
<L.ADR> , < H.ADR> .. Oblast vyhledáváni
<N=1-3> .. Počet vyhledávaných bytů
<DATA1><SP>..<DATAN><SP> .. Vyhledávaná data
<MASKA1>..<MASKAN> .. Maska (log. součin)
+GGOTOStart od žádané adresy s volbou přerušení: < START .ADR > , < BREAK ADR1> , < BREAK ADR2 >
+HHEXADECIMALHexadecimální součet a rozdíl
+IINPUTČtení okamžitých dat ( <PORT> )
+JJUMPSkok na zavedený program - PEDIT (viz příkaz J monitoru)
+KKAZETAPříkaz kazetového OS MIKOS (viz monitor)
+LLINE - ASSEMBLERJednoprůchodový přímý překladač (pro krátké programy a opravy při ladění)
+MMOVEPřesun obsahu paměti do jiné oblasti: <L.ADR> . <H.ADR> , <L.ADR CÍLOVÉ OBLASTI>
+OOUTPUTVysláni dat na port (<PORT> , <DATA> )
+NNULLNulováni registru a podmínky (viz +B)
+PPEDITStart programu PEDIT (editoru)
+QQUITNávrat do monitoru
+RREADČteni souboru v INTEL-HEX-FORMÁTU
+SSUBSTITUTEZáměna obsahu paměti ( ADR ) :
" <-" posun zpět a výpis adresy
","vypíše adresu
"‘X" vloží ASCII kód "X"
+TTRACE (WITH CONDITION)   Start TRACERU, parametry jako příkaz +G a respektuje se nastavená podmínka +C
+UUNDEFINED CODEZobrazení obsahu paměti v ASCII kódu: <L.ADR> , <H.ADR> 32 znaků na řádek
+VVERIFYDeasssmbly (<ADR>) - zpětný symbolický překladač
+W   WRITEZápis souboru v INTEL-HEX-FORMATU
+XEXAMINE REG.Zobrazeni a výměna obsahu registru
+YVERIFY PUNCHDesseably, ale současně zapíše na kazetu zdrojovou část Deasseablovaného programu: ukončit <CR>a uzavřít soubor příkazem "K_C" (KASETTE CLOSE).

Poznámka pro VERIFY a FIND:
Po znaku "," se přejde do režimu SUBSTITUTE:
Je možné udělat opravy, změnit adr. a po znaku<CR>se vrátit do původního povelu.



  1. překladač
  2. Součásti souboru "TOOL" je překladač absolutního assembleru. Překladač "MEMORY ASSEMBLER" umožňuje překlad zdrojového textu umístěného v paměti nebo na uživatelském zařízení (kazeta). Tento překladač je dvouprůchodový. Podrobný popis je uveden v kapitole Assembler, zde jsou uvedeny příkazy pro řízeni překladače.

    Vyvolání:

    +A             ;vyvolání překladače (textového)
    

    Dále soubor "TOOL" obsahuje jednořádkový, Jednoprůchodový překladač Assembleru, který lze použit pro opravy nebo pro jednoduché krátké programy v Assembleru.

    Vyvolání:

    +L= ADR<ADR l> ;vyvolání jednořádkového překladače Assembleru, ADR 1 volitelná poč. adresa
    

    Po vyvolání se ukazatel na obrazovce nastaví do středu následujícího řádku a čeká na vstup řádku Assembleru. Po <CR> provede překlad řádku (strojový kód, předřadí před text), a čeká na vstup nového textu.

    Ukončení překladu se provede zadáním prázdného řádku. ( pouze <CR> nebo END <CR>).

    Povelem (+L) lze zapsat strojový kód na libovolnou adresu v operační paměti. Při chybě operátora se lze vrátit na původní adresu a opakovat řádek. Je možné použít symbolických návěstí, ale odkazy jsou možné jen dopředu tj. na nižší adresy.

    příklad:

                -START: MVI A,10H       ;zdroj
    7000 3E 10   START: MVI A,10H       ;po provedení
                -                       ;očekává se vstup
                ... další řádky
                -<CR>... ukončeni překladu.
    


    Memory Assembler

    1. Zadání modu pro překlad:
    2. -R   "READER" File; čti zdrojový program z vnější paměti.Druhý průchod znovu vyžaduje vyhledání souboru.
      -XAssembly - překlad zdroje uloženého v paměti ("Pedit" zdrojový program je uložen v paměti po edici). Pro MOD "X" musí být program zaveden editorem.

    3. Řízení průchodu (PASS) :
    4. -1První průchod se provede automaticky (MODE:R,X)
      -2Druhý průchod + výpis programu
      -PDruhý průchod a pause (page) : zobrazí (listing) po 20 řádcích (a po<SP>se pokračuje).
      -SSymbol table: Vypíše seznam symbolů s přiřazenými hodnotami
      -NNolist : Vypíše pouze chyby při druhém průchodu
      -<CR>   Návrat do TOOLU
      -^P<CTRL P> pro klávesnici C259.11, <SHIFT A> pro klávesnici ANK-1 - připojení a odpojení tiskárny. (Možno nastavit listing na tiskárnu.)
      -QNávrat do TOOLU

    5. Hlášení chyb
    6. UUNDEFINEDNedefinovaný symbol nebo instrukce
      OOPERAND ERRORChybný operand
      MMULTIPLY DEFINITIONS   Vícenásobná definice
      LLABEL ERRORChyba v návěští
      FFULL SYMBOL TABLEPlná tabulka symbolů
      W   WARNINGNeuložil se strojový kód, délka je > 2K BYTE ( X MODE)
      XEXPRESSION ERRORChyba ve výrazu



  3. Editor-Pedit
  4. Editor slouží k přípravě, opravě a modifikaci textových souborů, které mohou být uloženy v paměti nebo na vnějším mediu, nebo jejich kombinace (doplnění souboru atd.). Podrobný návod na použití editoru je uveden v kapitole PEDIT. Program PEDIT lze vyvolat z Toolu příkazem +P. PEDIT lze. přímo vyvolat i z monitoru příkazem .P. Po ukončení edice a uložení programu na kazetu, lze program okamžitě přeložit (povel +A, mode X).

    příklad :

    +P ;skok do peditu
    

    poznámka : Návrat z peditu do TOOLU se v peditu provede příkazem J<ESC><ESC>



  5. trasovací a ladicí program TRACER
  6. Trasovací program "TRACER" umožňuje uživateli sledovat chování, chod programu a provádět v programu změny. Velmi zrychluje práci při ladění programu na systému, který není vybaven emulátorem. Způsob práce traceru se řídí podle nastavených podmínek (pro nastavení podmínky slouží příkaz +C), nastavením při spuštění traceru (viz. příkaz +T). Dále je možno i v průběhu trasování měnit podmínky trasování. Mezí trasovací příkaz lze zařadit i příkaz G s parametry (BREAK POINTY), kdy dojde k přerušení chodu programu na zadávaných bodech. Úseky mezi break pointy probíhají v reálném čase !!

    +C - CONDITION nastavení podmínky, pro řízení trasování může být nastavena jen jedna podmínka

      B..BRIEF:výpis PC a instrukce
      C..CALL:trasuje pouze hlavni program, podprogramy provádí v reálném čase
      L..LOOP:trasuje pouze instrukce skoku, umožňuje sledovat program v programových smyčkách
      M..MASK:trasováni zvolené instrukce s maskou:
      <N=1-3> .. počet bytů sledované instrukce
      <DATA1>...<DATAN>..zadaná instrukce
      <MASKA1>...<MASKAN>..zadaná maska (log.součin) Při shodě zadané instrukce a sledované s maskou vypíše zprávu o registru
      N..NULL:zrušení podmínky (implicitní podmínka)
      R..REGISTER:   provede výpis při shodě dat v registru <JMÉNO REG.> ,<DATA>>
      S..STACK:provede výpis při vybočení zásobníku z oblasti <L.ADR>,<H.ADR>
      W..   WINDOW:sleduje program v zadaném úseku a vypisuje: <L.ADR:,<H.ADR>

    Příklady:

    +C: B                ;BRIEF výpis PC a instrukcí
    +C: N                ;zrušeni podmínky trasováni - základní nastavení
    +C: W=7000H=7100H    ;trasováni v úseku 7000 až 7100
    +C: M=2              ;2.bytová instrukce
    =00 =41 (RESP.='A')  ;hledaná instrukce, která používá
    =00 =FF (MASKA)      ;znak "A" tj. hex. 41,Vybrat všechny
                         ;které v druhém byte obsahuje 41H.
    +C: RA=01            ;Je-li obsah registru a (akumulátoru)
                         ;roven 01, potom se trasuje, v ostatních
                         ;případech probíhá program v reálném čase.
    

    Jednotlivé režimy trasováni

    T..trasováni a prováděni I/O

    Úsek mezi START.ADR a BREAK ADR se provádí v reálném čase!!! Trasuje se po dosazeni 1.adresy z BREAK POINTU.


    Příklady výpisu trasování:

    A) výpis registru

    --P-7010 A-D0 F-56 B-01 C-00 D-00 E-00
    H-70 L-4E S-4380   :FFFF @CD ZP 
    7010 CD8770    CALL  DUMMY<SP>
    --P-7086 A-D0 F-56 B-01 C-00 D-00 E-00
    H-70 L-4E  S-437E  :7313  @CD  ZP
    7087 3C  DUMMY: INR     A SP
    --P-7087 A-D1 F-86 B-01 C-00 D-00 E-00
    H-70 L-4E  S-437E  :7313  @CD  SP
    7088 C9         RET<CR>
    

    Vysvětlivky:

    PPC - program counter (programový čítač instrukcí)
    A-Lregistry A,B,C,D,E,H,L;A-akumulátor (střadač) F FLAG - příznaky S.Z.AC,P,CY S STACK POINTER - ukazatel zásobníku
    :data (slovo) uložena na vrcholu zásobníku(např. adresa návratu pro RET)
    @obsah paměťového místa adresovaného dvojici reg. HL
    SZPC   rozdekódování stavového slova
    -SSIGN(minus)
    -ZZERO(nula)
    -P   PARITY(sudá parita)
    -CCARRY   (CY-přenos)

    Symboly <SP>,<CR> jsou odpovědi pro trasování, po zadání <SP> se pokračuje v trasování, <CR> trasování ukončí.


    Poznámka:

    Trasovat nelze programy v EPROM, protože TRACER zapisuje do paměti doby přerušení a do paměti ROM nelze zapisovat, lze paměti ROM projit v reálném čase.

    Na displeji se zobrazuje při trasování deasemblovaný program po řádcích (podle nastavených podmínek +C).


    Vlastní řízení průběhu trasování

    "SP"....další instrukce
    "CR" ... .konec
    ,.......nová podmínka (viz "C")
    "ETX"...přerušení trasování

    Přiklad.

    +C: B  ;nastavení podmínky trasováni-výpis PC a instrukce
    +T=7000<CR>  ;trasuje se od startu
    ... výpis instrukce (SP)
    ... další instrukce <,>  ;požaduje se změna podmínky pro trasování
    =L    ;zastavení na skokových instrukcích
    ...běh programu a zastavení (výpis skoku)
    ...
    ...<CR> ;ukončení trasování
    


  7. zpětný překladač-DEASSEMBLER
  8. Zpětný překladač umožňuje kontrolu strojového kódu tim, že převádí strojový kód do symbolického tvaru. Tak je možno při laděni sledovat zda došlo ke změně programu a podobně.

    Pro zpětný překladač jsou dva příkazy TOOLU:

    +V   zobrazování na obrazovce
    +Y   zobrazování na obrazovce a uložení zdrojového textu na výstupní zařízení (kazetu).

    Zpětný překladač pracuje po řádcích. Další řádek zobrazí po <SP>, klávesa <CR> ukonči překlad.

    Příkazy V,Y mají jeden parametr adresu místa paměti odkud se provádí zpětný překlad.


    Přiklad.

    +V =7000
    .... výpis řádky (adr,stroj.kód,zdrojový text)
    <SP>...další řádka
    <CR>...ukončeni překladu
    ...přechod do příkazu SUBTITUTE, kde lze provést
       zněny a po <CR>návrat zpět do zpětného překladače.
    

    Poznámka.

    Stejný postup platí i pro příkaz Y (se zápisem). Pozor zdrojový text se zapisuje do bufferu a na kazetu se zapíše až po naplněni bufferu a nebo po příkazu K_C (CLOSE). Příkaz "K_C" se musí vždy použít po skončení zpětného překladu tak, aby se ukončil výstupní soubor na kazetě. Jinak by při čteni došlo k chybě.

    P O Z O R ! Při povelu (+B,+N) se zruší tabulka symbolů, pořízené při překladu.


    Assembler a deassembler sdílí společnou tabulku symbolů, takže příkazem +L a EQU lze tabulku symbolu běhen deassemblování doplňovat.



  9. pomocné příkazy
  10. Pomocné příkazy umožňují využití služeb monitoru, aniž by bylo nutné vracet se z TOOLU do monitoru a zpět. Dále pak rozšiřuje některé možnosti (např. +H.+F), některé příkazy mají jiný význam než v monitoru (I,O,F,Q).

    Popis příkazů:

    +B BEGIN - počáteční nastavení podmínek a nulování tabulky symbolu. (Jiné než .B v monitoru)

    Přiklad.     +B     ;počát. nastaveni
    

    +D zobrazeni paměti DUMP - výpis hex. paměti

    Formát: + D =<XXXX><SP>=<YYYY><CR>
    XXXX... dolní, YYYY... horní adresa paměti (viz monitor .D)

    Přiklad.

    +D =7000<SP>=700F<CR>
    7000 41 42 43 44 45 46 47 48 ABCDEFGH
    7008 50 51 52 53 00 00 00 00 PQRS....
    

    +E END OF FILE ukončeni hexa pásky (viz monitor)

    Formát: +E =<START.ADRESA><CR>

    Přiklad.

    +E =7000<CR>
    

    +F FIND vyhledání zadané instrukce v paměti a možnost modifikace. (Pozor jiné než .F, kde se plní paměť)

    Formát:

    +F =<XXXX><SP>=<YYYY><SP>       ;za dání rozsahu adres paměti pro hledání
    =N <SP>                         ;počet byte instr.
    =<DATA1><SP>-... =<DATA N><SP>  ;N-1-3 hledaný obsah 
    =<MASK1><SP>-... -<MASK N><SP>  ;- " - MASKA
    

    Program provede log. součin obsahu paměti s maskou a výsledek porovná se zadanými daty. Je-li rovnost, provede výpis adresy a zdrojového textu Instrukce. Takto je možno volit i třídu instrukci (např. IN.OUT) nebo najit instrukce pracující s adresou (viz příklady).

    Přiklad.
    Požaduje se nalezení všech instrukcí MOV B,D (oper. kód 42) v paměti od 7000 až 7100

    +F =7000 =7100
    =1      ;Jednobytová Instrukce
    =42     ;hledaný kód instrukce
    =FF     ;maska testuj všechny bity v paměti
    

    ... výpis všech nalezených adres a zdrojů v rozsahu 7000 až 7100 (vypisuje po řádcích a čeká na SP pro pokračování v hledáni;
    , -skok do SUBSTITUTE (lze provést změnu dat) a nebo <CR> ukončení hledání. Hledání třídy instrukcí IN (DB), OUT (D3). Liší se pouze v jednom bitu.

    +F =7000<SP> =8000<SP>   ;rozsah
    =2<SP>                   ;2.bytová instrukce
    =DB<SP> =00<SP>          ;třída instrukci
    =F7<SP> =00<SP>          ;maska pro třídu
    
    7042 DB16 IN 016H<SP>    ;po <SP> pokračuj
    7800 D35A OUT 05AH<CR>   ;ukončeno
    

    Vyhledání tříbytových instrukcí, které pracují s adresou 20H.

    +F =7000<SP>=7050<SP>
    =3 <SP>
    =C3<SP> =00<SP> =20<SP>
    =00<SP> =FF<SP> =FF<SP>
    

    +G GO - spuštěni programu (viz monitor .G)

    Formát: +G =<START ADR><SP> -<BREAK 1><SP> -<BREAK 2><CR>

    Přiklad.

    +G =4403 ;RESTART PEDIT
    

    +H hexadecimální součet a rozdíl. Pomocná funkce při opravách a změnách v programech.

    Formát:

    +H -<XX><SP>-<YY><CR>   ;XX,YY HEXADECIMÁLNÍ ČÍSLA
    SSSS  RRRR              ;VÝSLEDEK SSSS-SOUČET,RRRR-ROZDÍL
    

    Přiklad:

    +H =11 =9
        1A  8
    

    +I INPUT - vstup ze žádaného portu (pozor jiný význam než v monitoru .I, kde se nastavuje a nuluje přiřazení USER-1,2). Zde se přímo provádí přečtení dat.

    Formát: +I =XXXX <PORT><CR> ;vypíše nastavenou adresu obvykle 7000, pokud nebyl nastaven dřivé příkazy I,O
    DD ...DATA Z PORTU

    Přiklad.

    +I =7000 10<CR>  ;PORT 10
    F2               ;VSTUPNÍ DATA
    

    +J JUMP - skok na poslední zavadaný program (viz monitor příkaz .J)


    +K Vyvolání systému MIKOS (viz MONITOR+MIKOS .K) Popis povelu MIKOSU je uveden v popisu monitoru.


    +M MOVE - přesun úseku paměti (viz monitor .M)

    Formát:

    +M -<ZDROJ 1><SP> -<ZDROJ 2><SP> =<CIL 1><CR>
    

    ZDROJ1-počáteční adresa, ZDROJ2-koncová adresa
    CIL 1 - adresa místa přemístění

    Přiklad.

    +M =7000 =700F =F000<CR>
    

    Přepiše obsah paměti od adresy 7000 až do 700F (včetně) na zónu počínaje adresou F000. (tj. do F00F).


    +O OUTPUT- výstup na port (pozor jiný význam než v monitoru příkaz .O). Jinak platí jako pro přikaž +I ve smyslu výstupu na port.

    Formát:

    +O =<XXXX><SP><PORT><SP> =<DATA> <CR>
    

    Příklad.

    +0 =10 =FF          ;VÝSTUP NA PORT 10 (PORT MÁ SPRÁVNOU ADRESU
                         10 PROTO <SP> , FF-DATA-ZAPNUT MAGNETOFON) .
    

    +N NULL nulováni registru a podmínky. (Jiný význam než .N v monitoru). Stejně jako +B. Formát: +N


    +Q QUIT - návrat do monitoru

    Formát:

    +Q
    

    +R READ - čteni ve formátu INTEL-HEX ze vstupního zařízeni (viz monitor příkaz .R)

    Formát:

    +R =<OFFSET> <CR>
    

    +S SUBSTITUTE - záměna obsahu paměti. (viz monitor .S)

    Formát:

    +S =XXXX YY- ...           ;XXXX-ADRESA. YY-OBSAH
              lze změnit jak adresu, tak obsah. Změna se provede
              zápisem nového HEX. čísla, ponechání<SP> ukončení
              <CR>, návrat k adrese <,> po <<-> znak šipka se
              zobrazí nižší adresa a její obsah a po znaku
              apostrof (') lze zadat ASCII znak.
    

    Přiklad.

    +S = 7000 <SP> C3 - <SP> 20 - <10><SP> 21 - <<-> 7001 10-<CR>
    

    Pozn. hodnotu C3 jsme neměnili (<SP>) hodnotu 20 jsme změnili na 10 a znakem šipka jsme provedli kontrolu zápisu, <CR> ukončeno.


    +U UNDEFINED COOE - zobrazeni obsahu paměti v ASCII kódu (nemá ekvivalent v monitoru).

    Formát:

    +U =<ADR 1><SP>=<ADR2><CR>
    ... výpis v ASCII Jako text ...
    

    +W WRITE - zápis programu ve formátu intel-hex na výstupní zařízeni (viz příkaz .W v monitoru) může být složen z více segmentů).

    pro uzavření se musí použit přikaž +E.

    Formát:

    +W =<ADR 1><SP>=<ADR 2><SP>
    

    Přiklad:

    +W =4400 =5FFF<SP>        ;ZÁPIS TOOLU
    - - - - - - - - -         KOMUNIKACE S MIKOSEM
    - - - - - - - - -         ZÁPIS NA KAZETU
    +E =4400                  UKONČENÍ – ZÁPIS START ADRESY
    

    +X EXAMINE REG. - zobrazeni a změna obsahu registru. (obdoba přikážu .X v monitoru, liší se tvarem výpisu). Zde se nevypisují názvy registru. Je možné také zadat po apostrofu (') znak ASCII.

    Formát:

    +X<OZNAČENÍ REG><SP>YY-     ;YY ... OBSAH REG.
    +X<CR>                      ;CELKOVÝ VÝPIS VŠECH REG.
                                 BEZ MOŽNOSTI ZMĚNY
    

    Pozor! při změně reg. příkazem .X v monitoru, se změny nepromítnou do reg. v TOOLU. Zněny se musí provádět přímo příkazem +X. (Totéž platí i naopak). Registry jsou uchovány při skoku do monitoru a při návratu jsou obnoveny.



ASEMBLER-jazyk symbolických adres

absolutní překladač soubor programu "TOOL"

ASEMBLER Je strojově orientovaný jazyk, který umožňuje maximálně využívat možnosti mikropočítačového systému. Překladač zpracovává zdrojový text programu v ASEMBLERU, generuje absolutní strojový kód a ukládá ho do operační paměti.

ASEMBLER představuje prostředek pro symbolický zápis základních Instrukcí a umožňuje:
- mnemotechnický zápis typu operací,
- označovat symbolicky místa v paměti,
- používat v poli operandu výrazy, která se vyhodnocuji během překladu.

Dalšim typem příkazu ASEMBLERU jsou direktivy, které negenerují strojové instrukce, ale řídí chod překladu.

Direktivy umožňují:
- definovat jména proměnných, popř. jim přiřadit hodnotu,
- generovat konstanty a znakové řetězce,
- rezervovat místo v paměti,
- podmíněný překlad,
- řídit počitadlo adres,
- ukončit překlad.


  1. pravidla zápisu
  2. Pro zápis v jazyce ASEMBLER platí pravidla, která se musí dodržovat.


    Tvar zdrojové řádky:

    Návěští:   Typ operace   Operand(y);Komentář
    Jméno
    Příklad.
    START:LXISP,TOPMEM   ;NASTAV STACK
    DESETEQU10;10-> DESET

    Zdrojový řádek je rozdělán na čtyři pole, z nichž některá nemusí být uvedena. Pole musí být oddělena oddělovači (mezera <SP>, horizontální tabulátor HT <TAB>, nebo znakem ";" středník před komentářem). Každá instrukce, direktiva musí celá na jednom řádku a je ukončena znakem <CR> (program vstupu z klávesnice doplní znak <LF> ).

    Pokračovací řádky nejsou přípustně. Lze použit řádek pouze s komentářem, pro zlepšení čitelnosti programu. Maximální dálka řádku je 80 znaků.


    Množina znaků:
    - písmena A-Z,
    - číslice 0-9,
    - speciální znaky + - x / , : "¤" @ ? ' ; .
       <SP> mezera
       <CR> návrat vozu
       <LF> řádkování
    - jakýkoliv znak kódu ASCII se může vyskytnout v řetězcích uzavřených mezi apostrofy nebo v komentářách.


    Omezovače, oddělovače:

    <SP>oddělaní polí
    , (čárka)oddělovač operandu
    ' ' (dvojice apostrofu)   omezovač znakových řetězců
    <CR>omezovač zdrojové řádky
    ; (středník)uvádí pole komentářů
    : (dvojtečka)omezovač návěstí
    <TAB> (tabulátor)oddělení polí.

    Poznámka.
    Mezer a tabulátorů může být v zájmu čitelnosti použito více (popř. i v kombinaci).


    Pole návěstí.

    Pole je nepovinné. Návěští je jméno, jehož hodnota představuje adresu místa v paměti, na které je instrukce nebo direktiva překládaná (hodnota počitadla adres). Návěští musí být jedinečné a nesmí se vyskytovat vícekrát. Je možno jedno místo označit více návěštími (návěští na prázdně řádce před instrukci).

    Návěští se může skládat z 1 - 5 znaků, přípustná jsou písmena, číslice a znaky "@" a "?". První znak musí být písmeno. Návěstí musí být ukončeno znakem ":" (dvojtečka). U direktiv EQU Je v poli návěsti jméno, které se neukončuje dvoj tečkou !!!!, ala oddělovačem poli (<SP>, <TAB>).


    Pole typu operace.

    V poli se uvidí mnemotechnický název instrukce nebo direktivy. Názvy jsou představovány zkratkami anglických názvů. Seznam instrukci a direktiv je uveden v příloze.


    Pole operandu. Pole operandu identifikuje data, se kterými se bude provádět operace daná typem. Některé instrukce nevyžaduji žádná operandy (RET), Jiná jeden (INR B), nebo dva (MOV A,M), (první-cil,příjemce; druhý zdroj).


    Pole komentářů.

    Pole neplní žádnou funkci při překladu, a používá se pro zvýšení čitelnosti a orientace v programu.

    Programy v Assembleru je nutné dobře komentovat, aby program byl dobře srozumitelný a čitelný všem uživatelům.


    Typy operandu. V základních instrukcích se mohou vyskytovat 4 typy operandů, které lze zapsat různými způsoby.


    A) Registr.
    Jméno   Hodnota   Význam
    B0REG.B
    C1REG.C
    D2REG.D
    E3REG.E
    H4REG.H
    L5REG.L
    M6ODKAZ NA PAMĚT (dle HL)
    A7STŘADAČ (REG.A)

    Poznámka. V ASEM. TOOL lze používat pro zápis registru pouze jméno.


    B) Dvojice registru.

    Jméno   Význam
    BREG. B,C
    DREG. D,E
    HREG. H,L
    PSWstavové slovo (REG. A. REG. PSW)
    SPukazatel zásobníku

    Poznámky. V ASEM. TOOL lze pro zápis dvojice registrů používat pouze Jméno dvojice.

    Hodnota dvojice závisí na typu instrukce a je buď jedno -- nebo dvoubitová, (viz základní instrukce mikroprocesoru 8080).


    C) Přímý operand.

    přímý operand lze zapsat všemi přípustnými způsoby, avšak je nutné brát v úvahu přípustný rozsah pro danou instrukci (1-2 byte).

    - hexadecimální číslo: 10H,0FFH
    - desítkové číslo: 10,100D
    - binární číslo: 101B
    - znaková konstanta: 'A'
    - počitadlo adres: ¤
    - jméno s přiřazenou hodnotou:
    - návěští

    Př.     DESET   EQU     10
                    MVI     A,10
                    JMP     KONEC
            KONEC:  HLT
    - výraz      : jednoduché kombinace výše uvedených
                   způsobů spojených aritmet. nebo log.
                   operátory.
    Přiklad.SKOK:   JMP     ¤+10
                    MVI     A,DESET x2
                    LXI     B,DESET AND 3
                    MVI     D,DESET SHR 2
    

    D) Adresa paměti.

    Operand představující přímou adresu paměti (16-bitů), lze zapsat všemi způsoby (Jako přímý operand), mimo způsobu - znaková konstanta.

    Poznámky.
    Potřebujeme-li zapsat znak apostrof (') lze to provést následujícím způsobem:

            APOS:   MVI      D,'''  ;zápis apostrofu do REG.D
    

    Znak "¤" značí okamžitý stav PC (počitadlo adres), s tím že ukazuje na 1.byte Instrukce.

    U výrazu nejsou přípustné závorky a výraz se vyhodnocuje zleva do prava.

    Přípustné operátory:
    +součet
    -rozdíl
    xnásobení
    /dělení (celočíselná)
    HIGH   horní byte slova (8-15 bit)
    LOVdolní byte slova (0-7 bit (DEFAULT))
    NOTnegace (unární operátor)
    ANDlogický součin
    ORlogický součet
    XORexclusive OR (non ekvivalence)
    SHRposun o N-bitů doprava (N...0-15)
    SHLposun o N-bitů vlevo (N...0-15)
    Operátory jsou binární (kromě HIGH,LOW,NOT)

    Přiklad.       X1+X2
                   X1 AND X2
                   X1 SHR 5
                   NOT X1
    

    Operátory (+,-) nohou být unární ve významu znaménka čísla.


  3. direktivy ASEMBLERU
  4. Direktivy ASEMBLERU slouží k řízeni překladače během překladu. Některé direktivy jako definice dat, rezervace místa se bezprostředně projeví v generovaném kódu.

    Jiné direktivy jako definice jmen, direktivy pro podmíněný překlad, direktivy pro řízeni počitadla adres a spojováni modulu se ve vlastním generovaném kódu projevuji zprostředkovaně.


    EQU.

    Přiřazuje hodnotu výrazu uvedeného v poli operandu, jménu specifikovanému v poli návěští.

    Tvar direktivy:

    Jméno   EQU     Výraz
    

    Přiklad.

    MESIC   EQU     4
    

    Poznámka.
    Jméno nesmí být ukončeno znakem ":" (dvojtečka), protože jde o přiřazení hodnoty do výrazu a ne definování návěští !!!

    Definice konstant a rezervace místa v paměti.

    Tyto direktivy umožňuji ukládat do generovaného kódu konstanty po slabikách nebo po slovech, nebo rezervuji zadaný počet slabik v paměti.


    DB.

    Ukládá specifikované výrazy nebo znaky řetězce do posloupnosti slabik počínaje adresou PC .

    U řetězce může být libovolný počet znaků (omezeno dálkou řádku - 80 znaků), u výrazů je max. počet 10.

    Přiklad.

    DATA:   DB      10H,0FH,10D, 4*2
    ŘEŤEZ:  DB      'ABECEDA'
    

    DW.

    Ukládá specifikované výrazy do posloupnosti slov. U výrazů je maximální počet 5.

    Při použití textového řetězce (1-2 znaky ASCII uzavřené mezi apostrofy) se znaky v rámci slova ukládají v opačném pořadí.

    Je-li zadáno více znaků je hlášená chyba.

    Příklad.

    WORD:   DW      278,0FF00H, 256*4, START
    RETE:   DW      'AB'
    

    Poznámka.
    ASEMBLER TOOL nepřipouští kombinace výrazu a řetězců v jednom řádku.


    DS.

    Rezervuje zadaný počet slabik v paměti.

    Přiklad.

    POLE:   DS      100H    ;rezervuje 256 byte
    

    Podmíněný překlad.

    Technika podmíněného překladu umožňuje vytvářet z jednoho zdrojového textu různé varianty programu.


    Direktivy IF, ELSE, ENDIF.

    Tvar direktivy:

    [NAV:]  IF      VÝRAZ
    [NAV:]  ELSE
    [NAV:]  ENDIF
    

    Překladač vyhodnotí výraz u direktivy IF, a je-li nenulový pak provede všechny příkazy mezi direktivou IF a ELSE (nebo ENDIF, není-li ELSE použito), a je-li výraz nulový pak provede příkazy mezi ELSE a ENDIF.

    Příkaz ELSE není povinný, podmíněný překlad musí být vždy ukončen příkazem ENDIF.

    V direktivách ELSE a ENDIF nejsou operandy přípustné.

    V ASEMBLERU TOOL je přípustná pouze jedna úroveň podmíněného překladu (příkazy IF nelze vkládat do sebe).

    Přiklad.

    DEBUG   EQU     0       ;-1...LADÍCÍ VERZE
    ----------------------------
    ----------------------------
            IF      DEBUG
    RAM     EQU     4400H
            ELSE
    RAM     EQU     0C000H
            ENDIF
    

    V uvedeném příkladě se jménu RAM přiřadí hodnota C000H.


    END.

    Tato direktiva identifikuje konec zdrojového textu a ukončuje průchody překladačem.

    Ve zdrojovém textu může být pouze jedna direktiva END a musí být posledním příkazem zdrojového textu.

    Tvar:

    [NAV:]  END
    

    ORG.

    Direktiva ORG slouží k nastavení počitadla adres PC.

    Tvar:

    [NAV:]  ORG     VÝRAZ
    

    Na základě direktivy ORG vloží překladač do počitadla adres hodnotu zadaného výrazu.

    Přiklad.

    ORG     7000H           ;NASTAV PC NA 7000 HEXA
    

    Poznámka.
    Je-li u direktivy ORG uvedeno návěští, je mu přiřazena hodnota před zpracováním direktivy ORG.

    V instrukcích se lze odkazovat na PC pomocí konstrukce ¤ operátor výraz (př. JMP¤+5 ;skok o 5 byte déle)


    TITLE.

    Direktiva slouží k pojmenování programu a musí být uvedena jako první příkaz zdrojového textu. Překladač ASEMBLERU tuto direktivu přijímá, ala déle nezpracovává.

    Tvar:

    TITLE   'NÁZEV'
    

    Poznámka.
    Doporučuje se tuto direktivu používat; pokud není uvedena musí zdrojový text začínat prázdnou řádkou!!!


    Direktivy .LIST, .XLIST (podle CPM překladačů).

    Tyto direktivy slouží k povoleni resp. potlačeni výpisu překládaného programu.

    .LIST           (implicitní povoleni výpisu)
    .XLIST          ruší výpis listingu, vypisují se pouze chybové řádky. Direktiva platí až do nalezeni direktivy .LIST.
    


  5. práce s překladačem ASEMBLERU
  6. Překladač ASEMBLERU je součásti souboru programu "TOOL", který je dodáván na kazetě. Po natažení progresu "TOOL" systémem se provede příkazem monitoru skok do programu TOOL - příkaz "T". Program TOOL se ohlásí znakem "+" (plus). Spuštění ASEMBLERU se provede příkazem "A". překladač je dvouproudový (při čemž se první průchod provádí automaticky).

    Po spuštění se překladač ohlásí na displeji a požaduje zadání modu.

    Mod určuje, kde je uložen zdrojový text progresu.

    -X   Zdrojový program je uložen v paměti počítače po edici editorem "PEDIT". V tomto případě může být přeložený program max. 2K.

    -R   Zdrojový text je uložen na pásce. (READER) druhý průchod znovu vyžaduje vyhledání souboru, proto v zájmu zrychlení se doporučuje nahrát zdrojový text dvakrát za sebou. (A taká je to bezpečnostní kopie). Program se ukládá od adresy 7000H až do konce paměti. (Tudíž může být větší než 2K).

    Rozdělení paměti a způsob zápisu přeloženého programu:

    MOD X  6000H  ----------------- 
                  |  TAB. NÁVĚSTÍ |
                  |               |
           7000H  -----------------
                  |   PŘELOŽENÝ   |
                  |   PROGRAM     |
           7800H  -----------------
                  |  ZDROJ TEXT   |
                  |  (BUF.PEDIT)  |
                  |               |
    
    MOD R  6000H  ----------------- 
                  |  AB. NAVĚŠTÍ  |
           7000H  -----------------
                  |  PŘELOŽENÝ    |
                  |  PROGRAM      |
                  |               |
                  |               |
    FFFFH         -----------------
    

    Poznámka.
    Povel +L uloží přeloženy program na libovolnou adresu.


    Řízení průchodu (PASS):

    Určuje prováděný průchod překladačem (1.průchod-vytvořeni tabulky symbolů, návěští; 2. průchod-vlastní překlad).

    -1První průchod (provádí se automaticky při spuštění ASEMBLERU módy X,R)
    -2Druhý průchod (celý program)
    -PDruhý průchod (postupně po stránkách)
    -QNávrat do TOOLU
    -SVýpis tabulky symbolu (návěští)
    -NNOLIST - výpis pouze chyb při druhém průchodu
    -<CR>   Návrat do TOOL
    -^PŘízení tiskárny

    Poznámka.
    Výpis na tiskárně se provede klíčem "SHIFT A" na klávesnici ANK-1 (CTRL P - C259.11). Klič<SHIFT A>při prvním stisknuti přípoji tiskárnu (pak se provádí tisk pro kterýkoliv řídicí příkaz řízeni průchodu, klíč platí i pro TOOL), druhé stisknuti <SHIFT A> tiskárnu odpojí.


    Hlášeni chyb překladačem.

    kód chyby   význam
    UUNDEFINEDnedefinovaný symbol
    OOPERAND ERRORchybný operand
    MMULTIPLYvícenásobná definice
    LLABEL ERRORchyba v návěští
    FFULLplná tabulka symbolů
    WWARNINGvarováni - neuložil se strojový kód, délka > 2K (X-MOD)
    XEXPRESSION ERROR    chyba ve výrazu


  7. základní instrukce 8080
    1. instrukce přesunu
      1. Instrukce MOV
      2. Instrukce MOV přesune jeden byte ze zdrojového do cílového operandu. Zdrojový operand se nemění. Instrukce má tři formáty umožňující přesun registru do registru nebo do paměti, anebo z paměti do registru.

        Formát:

                MOV R,R        DÉLKA 1          0 1 C C C Z Z Z
                MOV R.M
                MOV M,R
        

        Cílový operand je uváděn na první posici, zdrojový na druhé. Symbol "M" označuje místo v paměti, které Je určeno obsahem registrové dvojice HL. není přípustný tvar MOV M,M.


      3. Instrukce MVI
      4. Instrukce MVI přesune obsah druhé slabiky do cílového operandu, kterým je registr nebo paměťové místo.

        Formát:

                MVI R,08       DÉLKA 2          0 0 C C C 1 1 0
                MVI M,D8                        D D D D D D D D
        

        Instrukce přesune přímý operand instrukce do cílového pole.

        Přiklad.

                MVI     B,10H           ;NAPLŇ REG HODNOTOU 10 HEX.
                MVI     M,0FFH          ;ULOŽ DO PAMĚTI HODNOTU FF HEX
        

      5. Instrukce LDA
      6. Instrukce náplní střadač "A" obsahem paměťového místa jehož adresa je jako přímý operand této instrukce.

        Formát:

                LDA ADR        DÉLKA 3          0 0 1 1 1 0 1 0
                                                A A A A A A A A ...nižší
                                                A A A A A A A A ...vyšší
        

        Přiklad.

                LDA     200H            ;ULOŽ DO STŘADAČE OBSAH ADRESY 200.
        

      7. Instrukce LDAX
      8. Instrukce LDAX naplní střadač obsahem paměti jehož adresa je v reg. B,C nebo D,E.

        Formát:

                LDAX RP         DÉLKA 1         0 0 0 R 1 0 1 0
                LDAX [B]
                LDAX [D]
        

      9. Instrukce LHLD
      10. Instrukce LHLD náplní registrový pár HL. přímým operandem instrukce. Používá se pro nastavení adresy HL pro adresování paměti "M".

        Formát:

                LHLD ADR        DÉLKA 3         0 0 1 0 1 0 1 0
                                                A A A A A A A A ... nižší
                                                A A A A A A A A ... vyšší
        

      11. Instrukce LXI
      12. Instrukce naplní určený registrový pár nebo ukazatel zásobníku SP hodnotou přímého operandu. Používá se pro nastavení adresy paměťového místa před použitím nějaké výkonné instrukce.

        Formát:

                LXI RP,DATA     DÉLKA 3         0 0 R R 0 0 0 1
                                                D D D D D D D D ... nižší
                                                D D D D D D D D ... vyšší
        

        Přiklad:

                LXI     H,NUM           ;ulož ADR NUM
                MOV     A,M             ;NUM DO "A"
                LXI     SP,STACK        ;NASTAV ADR ZÁSOBNÍKU
        

      13. Instrukce STA
      14. Instrukce STA uloží obsah střádače do paměti na adresu obsaženou jako přímý operand instrukce.

        Formát:

                STA ADR         DÉLKA 3         0 0 1 1 0 0 1 0
                                                A A A A A A A A ... nižší
                                                A A A A A A A A ... vyšší
        

      15. Instrukce STAX
      16. Instrukce STAX uloží obsah střádače do paměti na adresu určenou registrovým párem B,C nebo D,E.

        Formát:

                STAX RP         DÉLKA 1         0 0 0 R 0 0 1 0
                STAX [B]
                STAX [D]
        

      17. Instrukce SHLD
      18. Instrukce SHLD uloží do paměti obsah registrového páru HL, na adresu, která je jako přímý operand instrukce.

        Formát:

                SHLD ADR        DÉLKA 3         0 0 1 0 0 0 1 0
                                                A A A A A A A A ... nižší
                                                A A A A A A A A ... vyšší
        

      19. Instrukce XCHG
      20. Instrukce XCHG vymění vzájemně obsah registrových párů HL a DE. Používá se pro rychlou úschovu HL, nebo pro nové nastavení REG. HL při adresaci "M" (např. v cyklech).

        Formát:

                XCHG            DÉLKA 1         1 1 1 0 1 0 1 1
        

    2. aritmetické instrukce
      1. Instrukce ADD
      2. Instrukce připočte ke střadači jednu slabiku dat, výsledek je uložen ve střadači. Slabika může bít v libovolném registru nebo v paměti "M" (adresovaná reg. párem HL.)

        Ovlivňuje všechny příznaky.
        <A>+<R> -> <A>

        Formát:

                ADD [R]         DÉLKA 1         1 0 0 0 0 Z Z Z Z
                ADD [M]
        

      3. Instrukce ADI
      4. Instrukce ADI připočte ke střadači přímý operand instrukce.

        Ovlivňuje všechny příznaky.
        <A>+DATA -> <A>

        Formát:

                ADI DATA        DÉLKA 2         1 1 0 0 0 1 1 0
                                                D D D D D D D D
        

      5. Instrukce ADC
      6. Instrukce ADC připočte slabiku a obsah přenosu CY ke střadači.

        Ovlivňuje všechny příznaky.
        <A>+CY+<R> -> <A>

        Formát:

                ADC [R]         DÉLKA 1         1 0 0 0 1 Z Z Z Z
                ADC [M]
        

      7. Instrukce ACI
      8. Instrukce ACI připočte ke střadači obsah přenosu CY a přímý operand instrukce.

        Ovlivňuje všechny příznaky.
        <A> +CY+DATA -> <A>

        Formát:

                ACI DATA        DÉLKA 2         1 1 0 0 1 1 1 0
                                                D D D D D D D D
        

      9. Instrukce SUB
      10. Instrukce SUB odečte od střadače jednu slabiku dat, která je uložena v libovolném registru nebo v paměti (M).

        Instrukce provádí odečítání tak, ze odečítanou slabiku převede na dvojkový doplněk a ten připočte ke střadači. Příznakový bit CY se účastní odečítání jako prodloužení střadače k tzv. "vypůjčkám" -(BORROW). Po skočení operace se provede jeho negace, takže příznak přenosu po odečítání vyjadřuje znaménko výsledku.

        Instrukce ovlivňuje všechny příznaky.
        <A> - <R> -> <A>

        Formát:

                SUB [R]         DÉLKA 1         1 0 0 1 0 Z Z Z
                SUB [M]
        

      11. Instrukce SUI
      12. Instrukce SUI odečte od střadače přímý operand instrukce. Operace probíhá stejně jako u instrukce SUB.

        Instrukce ovlivňuje všechny příznaky.
        <A> - DATA -> <A>

        Formát:

                SUI DATA        DÉLKA 2         1 1 0 1 0 1 1 0
                                                D D D D D D D D
        

      13. Instrukce SBB
      14. Instrukce SBB odečte od střadače slabiku dat a přenos CY. Slabika může být v libovolném registru nebo v paměti (M). Odečítaná hodnota se nejprve zvýší o hodnotu CY a výsledek se upraví na dvojkový doplněk, který se připočítá ke střadači.

        Instrukce ovlivňuje všechny příznaky.
        <A> - <R>-CY -> <A>

        Formát:

                SBB [R]         DÉLKA 1         1 0 0 1 1 Z Z Z
                SBB [M]
        

      15. Instrukce SBI
      16. Instrukce SBI odečte od střadače hodnotu přímého operandu a přenosu CY.

        Instrukce ovlivňuje všechny příznaky.
        <A> -DATA-CY -> <A>

        Formát:

                SBI DATA        DÉLKA 2         1 1 0 1 1 1 1 0
                                                D D D D D D D D
        

        Poznámka.
        Pomocné operace při sečítání a odečítání se provádějí v pracovních registrech procesoru, zdrojové operandy se nemění. Instrukce SBI se výhodně používá pro odečítání číselných řetězců tvořených několika slabikami.


      17. Instrukce INR
      18. Instrukce INR připočítá "1" k určené slabice dat, která je uložena v libovolném registru nebo v paměti (M).

        Instrukce ovlivňuje příznaky S,Z,AC,P. (CY se nemění).
        <R> +1 -> <R>

        Formát:

                INR [R]         DÉLKA 1         0 0 C C C 1 0 0
                INR [M]
        

        Poznámka.
        Vzhledem k tomu, že nemění CY lze s výhodou použit pro řízení průchodu cyklem.


      19. Instrukce INX
      20. Instrukce INX zvýši o "1" obsah registrovaného páru, nebo ukazatel zásobníku.

        Instrukce nemění žádné příznaky. S výhodou se používá pro zvyšování adres v cyklech.
        <RP> +1 -> <RP>

        Formát:

                INX RP          DÉLKA 1         0 0 R R 0 0 1 1
        

        Pozor při manipulaci s ukazatelem zásobníku SP.


      21. Instrukce OCR
      22. Instrukce DCR odečte "1" od obsahu určeného registru nebo paměti (M).

        Hodnota přenosu "CY" se nemění, ovlivňuje ostatní příznaky (S,Z,AC,P).
        <R> -1 -> <R>

        Formát:

                DCR [R]         DÉLKA 1         0 0 C C C 1 0 1
                DCR [M]
        

      23. Instrukce DCX
      24. Instrukce DCX odečte "1" od obsahu určeného registrového páru nebo od ukazatele zásobníku.

        Instrukce nemění příznaky. Pozor při manipulaci s ukazatelem zásobníku SP.
        <RP> -1 -> <RP>

        Formát:

                DCX RP          DÉLKA 1         0 0 R R 1 0 1 1
        

      25. Instrukce DAA
      26. Instrukce DAA upraví 8-mi bitový obsah střadače tak, že v něm zformuje dvě čtyřbitové číslice (v kódu BCD).

        Instrukce se používá při sečítání desítkových čísel. Je to jediná instrukce, které využívá příznak AC, proto se umisťuje bezprostředně za aritmetickou instrukci.

        Instrukce má následující průběh:
        - Je-li hodnota 4 nižších řádů střadače větší než 9, nebo je-li AC=1 připočte ke střadači hodnotu 6.
        - Je-li hodnota 4 vyšších řádů střadače větší než 9, nebo Je-li CY=1 připočte ke střadači hodnotu 60H. (nebo 6 k vyšším řádům). Instrukce využívá příznaku AC a CY, ovlivňuje všechny příznaky.

        Formát:

                DAA             DÉLKA 1         0 0 1 0 0 1 1 1
        

      27. Instrukce DAD
      28. Instrukce DAD připočte 16-ti bitovou hodnotu některého registrového páru nebo ukazatel zásobníku SP k registrovému páru HL. Je to jediná instrukce pro sečítání 16-ti bitového slova.

        Ovlivňuje pouze nastavení přenosu CY při překročení rozsahu 16-ti bitového slova. Registrový pár HL plni funkci střadače.
        <HL> + <RP> -> <HL>

        Formát:

                DAD RP          DÉLKA 1         0 0 R R 1 0 0 1
        

    3. logické instrukce
    4. Instrukce mikroprocesoru 8080 umožňuji pracovat s logickými funkcemi AND,OR,XOR. (Bitové operace).

      AND- (logický součin, logické i) výsledek 1 je-li na odpovídajících bitech 1.
      OR- (logický součet, logické nebo) výsledek 1 Je-li na odpovídajících bitech alespoň jedna 1.
      XOR- (exclusive OR nonekvivalence) výsledek 1 pouze tehdy jsou-li odpovídající bity od sebe různé.


      1. Instrukce ANA
      2. Instrukce provádí logickou funkci AND mezi střadačem a určenou slabikou dat, která může být v libovolném registru nebo v paměti.

        Příznaky jsou nastaveny CY=0, AC=0 ostatní ovlivňuje.
        <A> AND <R> -> <A> 0 -> CY, AC

        Formát:

                ANA [R]         DÉLKA 1         1 0 1 0 0 Z Z Z
                ANA [M]
        

      3. Instrukce ANI
      4. Instrukce provádí log. funkci AND mezi střadačem s přímým operandem instrukce. Výsledek ve střadači.

        Příznaky: CY, AC=0 ostatní ovlivňuje.
        <A> AND DATA -> <A>

        Formát:

                ANI DATA        DÉLKA 2         1 1 1 0 0 1 1 0
                                                D D D D D D D D
        

      5. Instrukce ORA
      6. Instrukce provádí logickou funkci OR mezi střadačem a určenou slabikou dat, která je v registru nebo v paměti.

        Příznaky: CY, AC=0 ostatní ovlivňuje.
        <A> OR <R> -> <A>

        Formát:

                ORA [R]         DÉLKA 1         1 0 1 1 0 1 1 0
                ORA [M]
        

        Poznámka:
        ORA A se používá pro nulování přenosu CY (střadač se nemění).


      7. Instrukce ORI
      8. Instrukce provádí log. OR mezi střadačem a přímým operandem instrukce. Výsledek je ve střadači.

        Příznaky: CY, AC=0 Ostatní ovlivňuje.
        <A> OR DATA -> <A>

        Formát:

                ORI DATA        DÉLKA 2         1 1 1 1 0 1 1 0
                                                D D D D D D D D
        

      9. Instrukce XRA
      10. Instrukce provádí logickou funkci XOR mezi střadačem a určenou slabikou dat, která je v registru nebo v paměti (M). Výsledek je uložen v paměti.

        Příznaky: CY, AC=0 Ostatní ovlivňuje.
        <A> XOR <R> -> <A>

        Formát:

                XRA [R]         DÉLKA 1         1 0 1 0 1 Z Z Z
                XRA [M]
        

      11. Instrukce XRI
      12. Instrukce provádí log. XOR mezi střadačem a přímým operandem instrukce. Výsledek je uložen ve střadači.

        Příznaky: CY, AC=0 Ostatní ovlivňuje.
        <A> XOR DATA -> <A>

        Formát :

                XRI DATA        DÉLKA 2         1 1 1 0 1 1 1 0
                                                D D D D D D D D
        

      13. Instrukce RLC
      14. Instrukce nejdříve přepíše nejvyšší bit do CY a potom posune obsah celého střadače o jeden bit vlevo s kruhovým přenosem (nejvyšší bit do nejnižšího řádu).

        Příznaky: Kromě CY další neovlivňuje.
        A7 -> CY A6 -> A7 ... A0 -> A1 CY -> A0

        Formát :

                RLC             DÉLKA 1         0 0 0 0 0 1 1 1
        

      15. Instrukce RRC
      16. Instrukce nejdříve přepíše nejnižší bit do příznaku přenosu CY a pak obsah celého střadače posune o jeden bit vpravo s kruhovým přenosem.

        Příznaky: Kromě CY další neovlivňuje.
        A0 -> CY A1 -> A0 ... A7 -> A6 CY -> A7

        Formát:

                RRC             DÉLKA 1         0 0 0 0 1 1 1 1
        

      17. Instrukce RAL
      18. Instrukce posunu obsah střadače prodlouženého před nejvyšším bitem o přenos CY o jeden bit vlevo, (kruhový posun střadače i přes přenos).

        Příznaky: Ovlivňuje pouze CY, ostatní zůstávají zachovány.
        A7 -> CY A6 -> A7 ... A0 -> A1 CY (původní) -> A0

        Formát:

                RAL             DÉLKA 1         0 0 0 1 0 1 1 1
        

      19. Instrukce RAR
      20. Kruhový posun obsahu střadače (přes CY) o jeden bit vpravo.

        Příznaky: Ovlivňuje pouze CY, ostatní zůstávají zachovány.
        A0 -> CY A1 -> A0 ... A7 -> A6 CY (původní) -> A7

        Formát:

                RAR             DÉLKA 1         0 0 0 1 1 1 1 1
        

      21. Instrukce CMA
      22. Instrukce vytvoří jedničkový doplněk (negace) střadače, tj. zněni 0 na 1 a naopak.

        Příznaky zůstávají zachovány.

        Formát:

                CMA             DÉLKA 1         0 0 1 0 1 1 1 1
        

      23. Instrukce CMC
      24. Instrukce provede negaci přenosu CY. (Změna 0 na 1 a naopak).

        Kromě CY zůstávají ostatní příznaky zachovány.

        Formát:

                CMC             DÉLKA 1         0 0 1 1 1 1 1 1
        

      25. Instrukce STC
      26. Instrukce nastaví hodnotu přenosu CY na jedničku.

        Kromě CY=1, zůstávají ostatní příznaky zachovány.
        1 -> CY

        Formát:

        STC DÉLKA 1 00110111
        

      27. Instrukce CMP
      28. Instrukce porovná obsah určené slabiky s obsahem střadače a vyhodnotí výsledek porovnání tim, že nastaví hodnoty příznaku přenosu (CY) a příznak nuly (Z). Jsou-li hodnoty shodné pak nastaví příznak Z=1. Je-li hodnota střadače větší než hodnota určené slabiky nastaví se CY=0, Je-li menší pak CY=1.

        Porovnání se vyhodnocuje bez ohledu na znaménko !

        Vyhodnoceni se provádí ve vnitřních registrech a proto se obsahy porovnávaných registrů nemění. Porovnání se provede odečtením.

        Příznaky: Instrukce ovlivňuje všechny příznaky. Při své funkci nastavuje CY a Z, ostatní ovlivňuje.

        <A> ? <R>        (<A>-<R>) ...A=R Z=1
                                      A>R Z=0 CY=0
                                      A<R Z=0 CY=1
        

        Formát:

                CMP [R]         DÉLKA 1         1 0 1 1 1 Z Z Z
                CMP [M]
        

      29. Instrukce CPI
      30. Instrukce provede porovnání obsahu střadače s přímým operandem instrukce. Způsob provedení a nastaveni příznaku je stejný jako u instrukce CMP.

        Příznaky: CY a Z, ostatní ovlivňuje.

        <A> ? DATA                 (<A> - DATA ...A=DATA Z=1
                                      A > DATA    Z=0    CY=0
                                      A < DATA    Z=0    CY=1
        

        Formát:

                CPI DATA        DÉLKA 2         1 1 1 1 1 1 1 0
                                                D D D D D D D D
        

    5. instrukce pro větvení programu
    6. Instrukce pro větvení lze rozdělit do čtyř skupin:


      1. Skupina typu JUMP - SKOK
      2. Skoková instrukce JMP slouží k nepodmíněnému skoku podle adresy operandu. Dále je 8 instrukci podmíněného skoku dle hodnot příznaku PSW. Instrukce neovlivňují zásobník.


      3. Skupina instrukci CALL - skok do podprogramu
      4. Instrukce CALL umožňuje přechod do podprogramu se zajištěním návratu (uchovává stav PC v zásobníku). Dále je 8 instrukcí podmíněného skoku do podprogramu podle stavu příznaku v PSW.


      5. Skupina instrukci RETURN - návrat z podprogramu
      6. Instrukce RET zajišťuje návrat z podprogramu (vyvolaného některou z instrukcí skupiny CALL - nepodmíněný návrat a dalších 8 instrukcí pro podmíněný návrat dle stavu příznaku PSW.


      7. Speciální instrukce PCHL a RST.

      Instrukce typu JMP a CALL používají pro podmíněné voláni tvar

      JXX - pro typ JUMP ... XX zkratka podmínky
      CXX - pro typ CALL

      Typy podmínek:

      C- příznak přenosuCY=1(byl přenos)
      NC- příznak přenosuCY=0   (nebyl přenos)
      Z- příznak nulyZ=1(skok při nulovém střadači)
      NZ- příznak nulyZ=0(střadač různý od nuly)
      M- příznak znaménka   S=1(skok při záporné hodnotě)
      P- příznak znaménkaS=0(skok při kladné hodnotě)
      PE- příznak parityP=1(sudá parita)
      PO- příznak parityP=0(lichá parita)


      1. Skokové instrukce typu JUMP
      2. Každá instrukce typu JUMP dosadí do čítače adres (PC) hodnotu přímého operandu, u podmíněných v případě splněni podmínky. Není-li podmínka splněna pokračuje program následující instrukci za JUMP.

        Instrukce nemění žádné příznaky.

        Formát:

                JUMP ADR        DÉLKA 3         X X X X X X X X
                                                A A A A A A A A...nižší
                                                A A A A A A A A...vyšší
        

        Nepodmíněný skok

                JMP ADR                         1 1 0 0 0 0 1 1
        

        Podmíněné skoky

                JC  ADR         CY=1            1 1 0 1 1 0 1 0
                JNC ADR         CY=0            1 1 0 1 0 0 1 0
                JZ  ADR         Z=1             1 1 0 0 1 0 1 0
                JNZ ADR         Z=0             1 1 0 0 0 0 1 0
                JM  ADR         S=1             1 1 1 1 1 0 1 0
                JP  ADR         S=0             1 1 1 1 0 0 1 0
                JPE ADR         P=1             1 1 1 0 1 0 1 0
                JPO ADR         P=0             1 1 1 0 0 0 1 0
        

      3. Instrukce voláni podprogramu - typu CALL
      4. Instrukce pro volání podprogramu vyhodnotí podmínku volání (u podmíněných skoků) vyjádřenou pojmenováním instrukce, a je-li podmínka splněna provede:

        1. uloží čítač adres (PC) na vrchol zásobníku (upraví ukazatel SP)
        2. dosadí do čítače adres hodnotu operandu obsaženého v instrukci. Tím způsobí předáni řízení na tuto adresu.

        Není-li podmínka splněna pokračuje následující instrukci za CALL. Každé instrukci typu CALL má odpovídat při ukončeni podprogramu některá z instrukcí typu RETURN, pro návrat do volajícího programu za instrukci CALL, aby se v zásobníku nevytvářely nadbytečné návratové adresy, které by mohly vést k nesprávné funkci programu.

        Instrukce skupiny CALL sdružují vlastnosti instrukcí PUSH a JUMP. Instrukce nemění hodnotu žádného příznaku.

        Formát:

                CALL ADR        DÉLKA 3         X X X X X X X X
                                                A A A A A A A A ...nižší
                                                A A A A A A A A ...vyšší
        

        Nepodmíněné volání

                CALL ADR                        1 1 0 0 1 1 0 1
        

        Podmíněné volání

                CC   ADR        CY=1            1 1 0 1 1 1 0 0
                CNC  ADR        CY=0            1 1 0 1 0 1 0 0
                CZ   ADR        Z=1             1 1 0 0 1 1 0 0
                CNZ  ADR        Z=0             1 1 0 0 0 1 0 0
                CM   ADR        S=1             1 1 1 1 1 1 0 0
                CP   ADR        S=0             1 1 1 1 0 1 0 0
                CPE  ADR        P=1             1 1 1 0 1 1 0 0
                CPO  ADR        P=0             1 1 1 0 0 1 0 0
        

      5. Instrukce pro návrat z podprogramu - RETURN
      6. Instrukce návratu z podprogramu nejdříve (u podmíněných návratů) vyhodnotí podmínku (dle označení instrukce) a je-li podmínka splněna dosadí do čítače adres (PC) obsah dvou slabik z vrcholu zásobníku a upraví ukazatel zásobníku (SP). Vzhledem k tomu, že při správné funkci byla při volání (CALL) uložena na vrchol zásobníku adresa za instrukci voláni, předá se řízeni zpět do volacího programu za tuto instrukci.

        Není-li podmínka splněna, pokračuje program instrukci následující za RETURN.

        Instrukce RETURN nemají žádný operand.

        Formát:

                RETURN          DÉLKA 1         X X X X X X X X
        

        Nepodmíněný návrat

                RET                             1 1 0 0 1 0 0 1
        

        Podmíněný návrat

                RC              CY=1            1 1 0 1 1 0 0 0
                RNC             CY=0            1 1 0 1 0 0 0 0
                RZ              Z=1             1 1 0 0 1 0 0 0
                RNZ             Z=0             1 1 0 0 0 0 0 0
                RM              S=1             1 1 1 1 1 0 0 0
                RP              S=0             1 1 1 1 0 0 0 0
                RPE             P=1             1 1 1 0 1 0 0 0
                RPO             P=0             1 1 1 0 0 0 0 0
        

      7. Instrukce RST
      8. Instrukce RST - RESTART je zvláštní varianta nepodmíněné instrukce CALL pro přechod do podprogramu, určená hlavně pro zpracování přerušení.

        Činnost instrukce:

        1. Uloží obsah čítače adres do zásobníku (upraví ukazatel SP), tím je zaručen návrat do přerušeného programu.
        2. Potom upraví instrukci RST tak, že bity 3-5 zůstanou zachovány a ostatní bity se vynuluji - takto se získá adresa, která se přenese do čítače adres, a tím se provede skok do podprogramu obsluhy přerušení.

        Program obsluhy by měl končit instrukci ze skupiny RETURN. Pro program obsluhy je rezervováno 8 slabik, pokud tato dimenze nepostačuje, lze přejit skokem JUMP nebo dalším voláním podprogramu CALL do dalších obslužných programů.

        V ASSEMBLERU je u instrukce RST uveden přímý operand v rozmezí 0-7, který se přesune do bitů 3-5 instrukce RST. Instrukce RST se v aplikačních programech používá zřídka, obvykle tuto instrukci vysílají periferijní zařízení žádající o obsluhu.

        Formát:

                RST KÓD         DÉLKA 1         1 1 K K K 1 1 1
        

      9. Instrukce PCHL
      10. Instrukce vloží obsah registrového páru (HL) do čítače adres PC. V důsledku toho je provedeno větvení na adresu určenou registry HL.

        Instrukce neovlivňuje žádné příznaky.

        Formát:

                PCHL            DÉLKA 1         1 1 1 0 1 0 0 1
        

    7. instrukce pro práci se zásobníkem
    8. V systému 8080 je možno vytvořit a používat zásobník. Zásobník je vymezený souvislý úsek paměti RAM, který slouží k přechodnému ukládáni hodnot a adres při voláníi a návratu z podprogramu a přerušení. Zásobník pracuje metodou "LIFO" poslední dovnitř první ven.

      Adresa vrcholu zásobníku se udržuje ve speciálním registru - ukazatel zásobníku SP (STACK POINTER).

      Počáteční hodnota ukazatele se nazývá dno zásobníku a zásobník se plni směrem od vyšších adres k nižším a vyprazdňuje se opačně (směrem k vyšším adresám).

            ----------  dno zásobníku
            |        |
            |        | vyšší adresy
            |        |
            |        | nižší adresy
            |        |
      SP -->|        |
      ukazatel
      

      1. Instrukce PUSH
      2. Instrukce PUSH umístí na vrchol zásobníku obsah určeného registrového páru nebo obsah stavového slova PSW (střadač a registr příznaku - FLAG). Při tom upraví ukazatel zásobníku tak, aby ukazoval na nový vrchol zásobníku, tj. slabiku zásobníku s nejnižší adresou.

        Instrukce neovlivňuje žádné příznaky.

        Formát:

                PUSH RP         DÉLKA 1         1 1 R R 0 1 0 1
        
                PUSH [B]
                PUSH [D]
                PUSH [H]
                PUSH [PSW]
        

      3. Instrukce POP
      4. Instrukce POP odebere z vrcholu zásobníku dvě slabiky dat a umístí je do registrového páru nebo do PSW. Při tom upraví ukazatel zásobníku (SP), tak aby ukazoval na nový vrchol. Instrukce POP neovlivňuje (kromě POP PSW) žádné příznaky.

        V případě instrukce POP PSW obnovuje stav příznaků před uložením.

        Formát:

                POP  RP         DÉLKA 1         1 1 R R 0 0 0 1
        
                POP  [B]
                POP  [D]
                POP  [H]
                POP  [PSW]
        

      5. instrukce SPHL
      6. Instrukce SPHL přesune obsah registrového páru HL do ukazatele zásobníku SP.

        Instrukce neovlivňuje žádná příznaky.

        Formát:

                SPHL            DÉLKA 1         1 1 1 1 1 0 0 1
        

      7. Instrukce XTHL
      8. Instrukce XTHL vzájemně vymění obsah registrového páru HL s obsahem vrcholu zásobníku, který je adresován ukazatelem SP. Nejdříve vymění vrchol s reg. L a pak upraví ukazatel a vymění reg. H s novým vrcholem a obnoví původní ukazatel SP.

        Instrukce neovlivňuje žádné příznaky.

        Formát:

                XTHL            DÉLKA 1         1 1 1 0 0 0 1 1
        

    9. periferní instrukce
      1. Instrukce IN
      2. Instrukce přečte 8 bitů z určeného portu a uloží je do střadače. Struktura a obsah údajů závisí na konkrétním periferním zařízeni, které informaci vyslalo. Instrukce neovlivňuje žádné příznaky.

        Operandem instrukce je adresa portu, jehož prostřednictvím se uskutečňuje komunikace se zařízením. Adresa musí být v rozsahu 0-255 (0H - 0FFH).

        Formát:

                IN PORT         DÉLKA 2         1 1 0 1 1 0 1 1
                                                A A A A A A A A
        

      3. Instrukce OUT
      4. Instrukce vyšle obsah střadače po datové sběrnici a číslo portu (operand instrukce) po adresní sběrnici. Zpracování obou informací musí v plném rozsahu zajistit příslušný port vnějšího zařízeni.

        Instrukce neovlivňuje žádné příznaky.

        Operandem instrukce je adresa portu, jehož prostřednictvím se uskutečňuje komunikace se zařízením, adresa musí být v rozsahu 0-255 (0H - 0FFH).

        Formát:

                OUT PORT        DÉLKA 2         1 1 0 1 0 0 1 1
                                                A A A A A A A A
        

    10. řídící a pomocné instrukce
      1. Instrukce EI
      2. Instrukce EI povoluje zpracování přerušení procesorem. Přerušení je povoleno již během provádění příští instrukce. Přerušení je povoleno až do okamžiku provedení instrukce zákazu přerušení DI. Uvolněni je zpožděno o jednu instrukci tak, aby byl umožněn návrat z podprogramu zpracovávající přerušení zpět, před novým přerušením. V programech využívající přerušení se přerušení zakazuje na nezbytně krátkou dobu, tak aby nedošlo ke ztrátě informace. Instrukce neovlivňuje žádné příznaky (kromě vnitřního registru přerušení, který není dostupný programu). instrukce nemá operand.

        Formát:

                EI              DÉLKA 1         1 1 1 1 1 0 1 1
        

      3. Instrukce DI
      4. Instrukce DI zakazuje zpracování přerušení procesorem, až do provedení instrukce povolení přerušeni EI. Požadavek na přerušení zůstává zapamatován v procesoru.

        Instrukce neovlivňuje žádné příznaky a nemá operand.

        Formát:

                DI              DÉLKA 1         1 1 1 1 0 0 1 1
        

      5. Instrukce HLT
      6. Instrukce HLT zastaví činnost procesoru. Další pokračování programu nastane pouze po vnějším podnětu tj. přerušení, před provedením instrukce HLT musí být povoleno přerušení. Je-li přerušení zakázáno nelze v programu pokračovat a nový start je možný signálem RESET, při čemž PC se nastaví na 0.

        Instrukce neovlivňuje žádné příznaky a nemá operand.

        Formát:

                HLT             DÉLKA 1         0 1 1 1 0 1 1 0
        

      7. Instrukce NOP
      8. Instrukce neprovádí žádnou operaci. Používá se v časových smyčkách, kdy je rychlejší než např. MOV A,A.

        Instrukce neovlivňuje žádná příznaky a nemá operand.

        Formát:

                NOP             DÉLKA 1         0 0 0 0 0 0 0 0
        


Textový editor - PEDIT

Pro televizní displej - AND-1 ze souboru programu "TOOL"

Textový editor "PEDIT" (P-IDI EDITOR) je určen k pořizování zdrojových textových souborů pomoci klávesnice, se zobrazováním na televizním displeji (deska AND-1, televizní přijímač např. PLUTO). Délka řádku není v PEDITU omezena, při čemž na displeji se zobrazuje 40 znaků. Na obrazovce displeje lze zobrazit 24 řádků. Poslední spodní řádek slouží jako příkazový řádek (zadáváni povelů PEDITU).

Basic může pracovat s délkou řádku 132 znaků, délka řádku pro assembler je 80 znaků.

Celý editor PEDIT zabírá 2K paměti.

Textový editor pracuje ve dvou režimech:

1) Přímý - "VIDEO MODE",
kdy kód povelu je prvním znakem na příkazovém řádku, V tomto případě se povel okamžitě provede a zobrazí se modifikovaný text, bez potvrzování příkazu dvěma znaky "ESC", který se na obrazovce zobrazuje jako "¤". Takto je možno např. měnit polohu kurzoru na obrazovce atd.

2) Příkazový - "COMMAND MODE"
v tomto případě se povel okamžitě neprovádí a zobrazuje se v příkazovém řádku, jednotlivé povely se vzájemně oddělují znakem "ESC" a povely se provedou až po zadání dvou znaků "ESC". Jedno-písmenové povely se nemusí oddělovat znakem "ESC" např. 15L3CV¤¤. Do této doby je možno příkazy opravovat nebo rušit znakem "DEL" nebo "<-" (šipka vlevo).

Příkazy, které jsou uvedeny v "přímém režimu - video modu", pracují i v příkazovém režimu je-li na prvním místě uveden počet opakování nebo jiný povel, např. "PŘÍMÝ POVEL":

*L provede okamžitě posun ukazovátka na nový řádek (dolů).

"Příkazový režim":

*3L <ESC><ESC> provede posun ukazovátka o tři řádky (směrem dolů) až po zadání dvou znaků "ESC".
*3LV <ESC><ESC> provede se posun a zobrazí se text
*TL <ESC><ESC> provede se až po potvrzení

Textový editor "PEDIT" pracuje s dynamickým "oknem" -vertikálně tak i horizontálně. Jak bylo uvedeno řádek může obsahovat např. 132 znaků, při čemž se zobrazuje "okno" 40-ti znaků na řádku, které se automaticky posunuje při posunu ukazovátka. Ve vertikálnim směru se "okno" automaticky posouvá a zobrazuje část editovaného textu. Na konci řádku se zobrazuje znak "^" Je-li řádek delší a není-li konec řádku zobrazen, potom se znak "^" nezobrazí. Takto je obsluha informována, že řádek pokračuje.

Poznámky:
V popisu příkazů je použit znak "%" ve významu volitelného čísla opakování (v intervalu -65535 až +65535)

Např. pro přikaž L je uvedeno %L, (viz výše uvedený přiklad). Uvede-li se v přikážu (tem, kde je uveden znak "%") znak "nerovná se" tj. "#", tak to znamená "všechno" - tj. jako by bylo žádáno největší kladné číslo 65535.

Např.: **K<ESC><ESC> zruš všechny řádky od ukazovátka až do konce.

Příkazy "CTRL znak" jsou pro klávesnici Consul 259.11.

Příkazy "SHIFT ZNAK" jsou pro membránovou klávesnici ANK-1.

Při tvorbě dlouhých tabulek lze také použit rezervace textu na obrazovce Q, (SHIFT Q) v rozmezí několika řádků a takto nechat trvale zobrazené záhlaví tabulky atd.


Rozděleni obrazovky

                  ----------------------------
                  |                          |
                  |                          |
textová část ---->|                          |
                  |                          |
                  |       zobrazovaný        |
                  |       text               |
                  |                          |
                  |                          |
                  |                          |
příkazová řádka ->|  *                       |
                  ----------------------------


Definice videomodu

Pro urychlení práce s editorem jsou některé povely prováděny v režimu videomodu s okamžitým zobrazením nového stavu textového bufferu. Videomod PEDITU plat i pro uvedené povely jen tehdy, je-li znak na prvním místě v příkazovém řádku. Potom není třeba potvrzovat povel dvakrát znakem ESCAPE. Povel se provede automaticky vřetně zobrazení modifikovaného textu.

Videomod platí pro příkazy:
B, Z, I, X, Y, V, +(0-9), CTRL D, CTRL I, CTRL K, L, CR, SPACE <SP>. BACKSPACE "<-' (šipka vlevo), ^S(znak).

        Textový buffer                          OKNO (WINDOW)

       ----------------                     ----------------------
B....->|              |  začátek textu      |                    |
       |              |                     |  zobrazovaný text  |
       |              |                     |                    |
       |              |                     |                    |
       |              |                     |  x...<CR>          |
       ----------------                     |    x <-+ x <SP>    |
Y....->|              |  posun zobrazení    |                    |
       ----------------                     |  x...L             |
V....->|   kurzor     |                     |                    |
       ----------------                     ----------------------    
X....->|              |  posun okna
       ----------------                        x...nová poloha
       |              |                            kurzoru
       |              |
       |              |                        +...stávající poloha
       |              |
       |              |                        Povely:<CR>,<SP>,L, <-
Z....->---------------- konec textu


popis příkazů editoru

  1. příkazy pro řízení videomodu

    1. Vkládáni textu

    2. I    Zobrazí šest řádků předchozího textu a vymaže obrazovku od místa kde bude vkládán nový text.

                     NOVÝ TEXT <ESC><ESC>
      

      Nový text se ukončí dvakrát znakem <ESC>/ který není součástí vkládaného textu. Po ukončení vkládáni se zobrazí nový text doplněný původním textem v okolí kurzoru.
      Během vkládání nového textu lze znaky "DEL" a " "<-" rušit chybně zapsané znaky.


      CTRL I    Způsobí posuv ukazatele na další tabelační sloupec směrem vpravo. "CTRL I" odpovídá na klávesnici ANK-1 znak "SHIFT SP".


      %A    Přečte (z vnějšího zařízeni RI:)%-řádku a uloží je za text v textové vyrovnávací paměti (BUFFER).
      V případě prázdného bufferu se ukládá od začátku bufferu. Může se kombinovat s příkazem "W", který vyklízí buffer. (Před použitím PEDITU je vhodné použit příkazu monitoru .I=1 A .O=1 a tim nastavit podmínky, že není rozpracován žádný vstupní ani výstupní soubor). Příkaz není příkazem videomodu. ale je zde uveden, protože se často používá v kombinaci s příkazy pro vkládáni textu.



    3. Přemístění kurzoru
    4. Je nožné těmito znaky (znaky jsou vybrány tak, aby bylo možné použit libovolnou klávesnici):

                 B              begin - začátek textu v bufferu
      
                 Y              posuv okna (video stránky)
      
                CR                               posun o řádek
      
      <-         V             SP                posun kurzoru o znak
                                                 "V" zobraz okno
      
                 L                               posuv o řádek
      
               +0..9            posuv o N řádku
      
                 X              posuv okna
      
                 Z              END – nastavení kurzoru za poslední
                                text v bufferu
      

      B    BEGINNING OF TEXT BUFFER - nastaví pointer na začátku textu a zobrazí text.

      Z    END OF TEXT BUFFER - nastaví pointer za konec textu a zobrazí text.

      F    FIND - vyhledá a automaticky zobrazí hledaný text:
      FPAVEL¤¤. vyhledá a označí text "PAVEL".
      Kurzor se umístí za nalezený text.
      Příkaz není příkazem videomodu (musí se ukončovat znaky <ESC>), používá se pro vyhledání textu pro následné vkládání resp. opravu editovaného textu.

      V    (VIEW) - zobrazí text v okolí kurzoru. Tento povel se automaticky provádí po ukončení jiných povelů (např. S, F, CTRL D, ..). (video stránka)

      X    Zobrazí další text. (video Stránka)

      Y    Zobrazí předchozí text. (video stránka)

      +%    Automaticky přesune kurzor o 0-9 řádků směrem dolů (zde %=0-9 !).
      +0 ...nastaví kurzor na začátek řádku!



    5. Posuny ukazovátka (kurzoru)
    6. L    line - posun dolů o jsden řádek.              CR
                                                         |
      CR   return - návrat nahoru o jeden řádek.   <-  - x - SP 
      
      <--  posun doleva o jeden znak                     |
      
      <SP>  posun dopravo o jeden znak                   L
      


    7. Rušení textu
    8. CTRL K    Výmaz řádku (pro klávesnici Consul), u klávesnice ANK-1, se nepoužívá videomod - %K<ESC><ESC> text se zruší od ukazatele do konce řádku.

      CTRL D    Výmaz znaku (pro Consul), u ANK-1 - %D<ESC><ESC>



    9. Změna textu
    10. S    SUBSTITUTE - vyhledá původní text a po potvrzení znakem "Y" zamění text, jinak vyhledá další text pro záměnu: vyhledává text od ukazatele do konce textu.
      Přiklad. SPAVEL¤PETR¤¤.. vyhledá text "PAVEL" a po potvrzeni ho zamění za text "PETR".
      Příkaz S není příkazem vidéomodu (musí se ukončovat znaky <ESC>). Často se používá v kombinaci s vldeomodem pro opravu editovaného textu.

      ^S    SUBSTITUTE ZNAK - zamění znak, na který ukazuje kurzor, novým znakem.
      ^SA .. není třeba potvrdit, v místě kurzoru se objeví znak "A",

               FIND                            SUBSTITUTE
      
      -------------------------         -------------------------
      | ....                  |         | ...                   |
      |    MOV A,Bx           |         |   MOV A,B         "N" |
      | ....                  |         | ...                   |
      |    MOV A,B            |         |   MOV A,B         "Y" |
      |                       |         |                       |
      |*FMOV A.B¤¤            |         |*SMOV A.B¤MVI A.10H¤¤  |
      -------------------------         -------------------------
      
      x...nová poloha ukazatele           záměna řádku bude:MVI A,10H
      
      Poznámka: Dotaz "Y" se zobrazí v příkazovém řádku.
      


  2. příkazový režim

    1. Vkládáni textu
    2. %A    Přečte %-řádků ze vstupního zařízení (RI:) a uloží je za text v textovém bufferu. (viz videomod).


    3. Vyhledání a náhrada textu
    4. %,<FTEXT%>   FIND-vyhledá žádaný text od ukazatele a v případě nalezeni zobrazí hledaný text. Ukazatel nastaví za hledaný text. (viz videomod) % - určuje počet hledaných textů (%-l se přeskočí).
      Příklad: 5 FPAVEL najdi pátý výskyt textu PAVEL od ukazatele

      S    SUBSTITUTE - Záměna textu. Vyhledá původní text a zobrazí okolí vyhledaného textu. Po potvrzení znakem "Y" provede záměnu textu.
      Formát: SHLEDANÝ TEXT <ESC> NOVÝ TEXT <ESC> <ESC>


    5. Přemístění kurzoru
    6. Platí stejné příkazy jako pro videomod, je-li na prvním místě příkazového řádku počet opakováni (jiný znak než povel videomodu).
      Např.:
      *L ... je příkaz videomodu - posun o řádek
      *15L ... je příkaz v příkazovém režimu pro posun o 15 řádků.


    7. Rušení textu
    8. %D    Zruší % - znaků od ukazovátka. (Počat znaků může být kladný, pak se ruší doprava, při záporném počtu se ruší znaky vlevo).

      %K    Zruší % - řádků od ukazovátka. (Při kladném počtu se zruší řádky směrem ke konci bufferu, při záporném směrem k začátku.)


    9. Zápis textu na vnější paměť
    10. %W    WRITE - zapíše %-řádků na vnější medium a zruší řádky v paměti!

      %O    OUTPUT - zapíše %-řádky na vnější medium a ponechá je v paměti.

      E    EXIT - zapíše celý text z operační paměti na vnější medium a ukonči výstupní soubor!! Text ponechá v paměti.


    11. Kopírováni textu v operační paměti
    12. %G    GET - označí a vypíše %-řádků, která se budou kopírovat na jiné místo textu.

      U    UNSAVE - přemístí %-řádků textu na místo, kde se nachází kurzor. Pokud je kurzor za místem označeným příkazem 'G' je možno opakovat samostatný přikaž 'V' vícekrát.



  3. rozšíření editoru PEDIT
  4. Povely v příkazovém režimu lze zadávat s udáním počtu opakováni, které může mít znaménko (+,-), popřípadě znak "#" tj. všechno (max. kladné číslo 65 535). U některých příkazů nelze použit záporné znaménko.

    @    Nový start PEDITU a smazání textu. Pozor na nežádoucí výmaz celého textu. Na klávesnici ANK-1 "SHIFT I" není ekvivalentní znaku "CTRL I" (Consul), a právě označuje znak "@" - výmaz.

    %H    HEX - zobrazí %-řádků hexadecimálně, pro kontrolu vložených ASCII znaků.

    J    TOOL - skok do programu TOOL.

    M    MEMORY - vypíše počet volných bytů v bufferu pro text.

    %O    OUTPUT - vyděruje od pointru %.řádků, ale ponechá text v operační paměti.

    %P    PRINT - vytiskne od pointru %-řádků na tiskárnu.

    R    READ FROM NEXT FILE - nestaví podmínky pro čtení z nového souboru, povolí další čtení (R#A).

    %A    APPEND - přečte %-řádků z vnější pamětí a uloží je na konec textového bufferu.

    X    EXCHANGE DISPLAY - zobrazí novou stránku textu (slouží k prohlížení textu).

    V    VIEW - zobrazí novou stránku textu v okolí kurzoru (určeno ke kontrole provedených operací).

    Y    zobrazí předcházející stránku textu.

    Q    OUIT - návrat do monitoru.

    %G    GET - označí %-řádků v bufferu a vypíše je pro kontrolu. Vždy platí poslední nastaveni pointru.

    U    UNSAVE - na místo, kde je kurzor, překopíruje obsah bufferu, který byl označen povelem "G".
    Pozor: Od posledního povelu "G" se nesmí provádět žádné příkazy, které mění počet znaků v bufferu.
    (Např. I, D, CTRL D, CTRL I, S, ..).
    Po každém příkazu "U" je potřeba znovu nastavit "G" pro další kopírování. Pokud se požaduje vloženi textu do oblasti bufferu za kurzorem, pak není zapotřebí nové nastavení (příkaz G) Příkaz "U" ruší ostatní povely na tomtéž příkazovém řádku.



  5. povely shodné s editorem V1.7 Intel
  6. %T    TYPE OUT TEXT - zobrazí %-řádků textu. "OTT" odpovídá verifikaci řádku. Sádky se zobrazí celé. (nejsou omezeny oknem).

    %L    LINE - posuv o %-řádků.

    %K    KILL - vymazání %-řádků. (od kurzoru).

    E    EXIT - ukončeni editace, uloženi text. buff. na vnější paměť (pozor, oproti editoru INTEL EDIT nekopíruje zbytek programu z I/O zařízení. Je to podmíněno použitým vstup/výstupním zařízením - kazetovým magnetofonem, který nemůže být současně vstupním i výstupním zařízením.

    %W    WRITE - zápis %-řádků na vnější paměť.

    N    PUNCH 60 NULL CHARACTER - zápis 60 blanků.

    %C    CHARACTER - posuv pointru o %-znaků.

    %D    DELETE CHARACTER - zrušení %-znaků. Vždy se vymaže "CR" a "LF" naráz.

    I    INSERT - vloženi nového textu:
    INOVÝ TEXT¤¤... Vloží "NOVÝ TEXT".
    Ukončit dvojím stisknutím klávesy 'ESC' (ANK-1...LF).

    F    FIND - nalezeni řetězce:
    FTEXT¤¤ .. nalezne a zobrazí "TEXT".

    S    SUBSTITUTE TEXT STRING - nahrazeni textových řetězců. Každou záměnu je potřeba potvrdit po "?" v příkazovém řádku znakem "Y":
    STEXT¤NOVÝ TEXTA¤¤..nalezne "TEXT" a po potvrzení ho nahradí "NOVÝ TEXT".


    POZNÁMKY:

    %<COMMAND STRING>¤¤COMMAND ITERATION    - opakování přikázu uvnitř špičatých závorek do max. hloubky 1.

    Přiklad:

    5<FANNA¤OTT¤>¤¤    Hledej 5x výskyt textu -ANNA"a vypiš celý nalezený řádek (pátý) se jménem ANNA.

    'DEL'NEBO ' -'DELETE CHARACTER    Zrušení posledního znaku, v přímém režimu (videomodu) nebo v příkazovém režimu.

    %    Je parametr v rozsahu -65535 až 65535). (Mimo příkaz +, kde je rozsah 0 až 9).

    #    Lze Jedním znakem nahradit maximální kladné číslo (+65535).

    Přiklad:

    #A    Přečti ze vstupního zařízení (kazetový magnetofon) všechny řádky a připoj za editovaný text.

    CTRL C    Přerušení provádění příkazu (u ANK-1 - "SHIFT X" )



  7. zobrazovací řídící znaky
  8. Znak 'ESC' (resp. LF) se zobrazuje jako ¤.

    "^"... konec řádku
    "\"... konec textu
    "-"... kurzor na místě mezery nebo tabulátoru
    Blikající znak... indikuje okamžitou polohu kurzoru.
    OVERFLOW... zaplněni textové paměti.
    "X" ILLEGAL... nedovolený znak na přikazován řádku.
    NO FIND "X"... nenašel od kurzoru po konec buffaru hledaný znak "X".
    STACK?... překročeni hloubky vnořeni opakovacího příkazu.
    BREAK... objeví-li se během psaní příkazového řádku za každým znakem znak "*", potom editor signalizuje, že zbývá málo paměti a je nutno povel ukončit a zapsat data na vnější medium.



  9. příklad
  10. Chceme zapsat program v asembleru pro násobení dvou čísel bez znaménka, který má tvar:

    NÁSOB:  MVI     B,0     ;0->" VÝSLEDEK
            MVI     E,9     ;NASTAV POČÍT. KROKU
    NAS0:   MOV     A,C     ;NÁSOBITEL
            RAR             ;POSUN,CY-NEJNŽŠÍ BIT NÁSOBITELE
            DCR     E       ;SNIŽ POČÍTADLO
            JZ      KONEC   ;E=0-> KONEC
            MOV     A,B
            JNC     NAS1
            ADD     D       ;PRICTI NÁSOBENEC K VÝSL. JE-LI CY=1
    NAS1:   RAR
            MOV     B,A
            JMP     NAS0
    KONEC:
    

    Pomoci editoru zapíšeme text:


    *e¤¤   Chceme vynulovat textovou paměť
    *I     Provede se přímý příkaz - smaže se obrazovka a v levém horním rohu je znak. Zapisujeme požadovaný text.
    <CR>   Prázdný řádek - potřebuje překladač assemb.
    NEBO:
    TITLE   'DEMONSTRAČNÍ PRÍKLAD'<CR>
            ORG     7000H<CR>
    NÁSOB:  MVI     B,0     ;0->" VÝSLEDEK<CR>
            MVI     E,9     ;NASTAV POČÍT. KROKU<CR>
    NAS0:   MVI     A,C     ;NÁSOBITEL<CR>
            RAR		;POSUN,CY-NEJNŽŠÍ BIT NÁSOBITELE<CR>
            DCR     E       ;SNIŽ POČÍTADLO<CR>
            JZ      KONEC   ;E=0-> KANEC<CR>
            MOV     A,B<CR>
            JNC     NAS1<CR>
            MOV     A,9<CR>
            ADD     D       ;PRICTI NÁSOBENEC K VÝSL. JE-LI CY=1<CR>
    NAS1:   RAR<CR>
            MOV     B,9<CR>
            JMP     NAS0<CR>
    KONEC:  NOP<CR>
            END<CR>
    <ESC> <ESC>
    

    Na obrazovce bude text:

    TITLE   'DEMONSTRAČNÍ PRÍKLAD'^
            ORG     7000H^
    NÁSOB:  MVI     B,0     ;0->" VÝSLEDEK^
            MVI     E,9     ;NASTAV POČÍT. KROKU^
    NAS0:   MVI     A,C     ;NÁSOBITEL^
            RAR             ;POSUN,CY-NEJNŽŠÍ BIT NÁSOBITELE^
            DCR     E       ;SNIŽ POČÍTADLO^
            JZ      KONEC   ;E=0-> KANEC^
            MOV     A,B^
            JNC     NAS1^
            MOV     A,9^
            ADD     D       ;PRICTI NÁSOBENEC K VÝSL. JE-LI CY=1^
    NAS1:   RAR^
            MOV     B,A^
            JMP     NAS0^
    KONEC:  NOP^
            END^
    

    Povelem J¤¤...předáme řízení programu TOOL, kde povelen +A spustíme překladač a po upřesnění "MOOE-X" se provede překlad. Volbou "PASS=" např. "P" zobrazíme výpis programu. Po zjištění syntaktických chyb se vrátíme do programu TOOL a po povelu +P můžeme pokračovat v editaci.

    Nyní jsme zjistili, že jsme udělali chybu u návěští NAS0: kde místo MOV, jsme napsali MVI a potřebujeme opravit text.

    Máme několik možností k provedeni opravy:

    Např. posun ukazovátka na začátek příkazem B - (začátek paměti) a příkazem L nastavit na řádek, pak posunout ukazatel vpravo na znak "M", zrušit dva znaky "VI" a vložit nové dva znaky pomoci povelu IOV <ESC><ESC> nebo opět nalézt písmeno "M" a pomoci povelu ^S zaměnit znaky "V" a "I" na "O" a "V".

    Nejlépe je použit příkazy pro subtitute SMVI¤MOV¤¤ kdy se vyhledá první MVI a žádá potvrzení, odpovíme znakem "N" a program dále hledá MVI, opět odpovíme N a nyní nám zobrazí požadovaný řádek - odpovím znakem "Y" a na obrazovce se provede oprava textu.

    Je možno použit i jiné způsoby, jako např. smazat chybný řádek a znovu ho napsat pomoci INSERT atd.

    Podobně lze opravit poznámku např. *SKANEC¤KONEC¤

    řádek MOV A,9 jsme napsali navíc a můžeme jej zrušit například příkazem

    *FA,9¤OL¤KV¤¤ (ukázka složeného povelu)
    

    nebo

    *B
    *FA,9¤¤
    *OL¤¤
    *K¤¤
    

    Nyní bude na obrazovce:

    TITLE   'DEMONSTRAČNÍ PRÍKLAD'^
            ORG     7000H^
    NÁSOB:  MVI     B,0     ;0->" VÝSLEDEK^
            MVI     E,9     ;NASTAV POČÍT. KROKU^
    NAS0:   MOV     A,C     ;NASOBITEL^
            RAR             ;POSUN,CY-NEJNŽŠÍ BIT NÁSOBITELE^
            DCR     E       ;SNIŽ POČÍTADLO^
            JZ      KONEC   ;E=0-> KANEC^
            MOV     A,B^
            JNC     NAS1^
            ADD     D       ;PRICTI NÁSOBENEC K VÝSL. JE-LI CY=1^
    NAS1:   RAR^
            MOV     B,A^
            JMP     NAS0^
    KONEC:  NOP^
            END^
    

    Uloženi textu na výstupní zařízení (kazetový magnetofon) provedeme příkazem "F". (práce s magnetofonem viz popis MIKOSU). Potom lze pomoci TOOLU program přeložit a ladit.


    Příklady jednotlivých příkazů.

    *ITEXT¤¤vložení textu TEXT za ukazatel (ukazatel - blikající znak. v případě mezery, tabulátoru blikající podtržení)
    *<SHIFT SP>Avložení znaku A za ukazatel, přímý MOD-(SHIF SP-TAB). U klávesnice Consul <CTRL I>.
    *10APřečti 10 řádků z mag. a uložení na konec paměti
    *Bnastav ukazatele na začátek bufferu.
    *Znastav za poslední text
    *FDATA¤vyhledá od ukazatele text "DATA", pokud nalezne nastaví ukazatel za text (po potvrzeni znakem "Y"), jinak se hledá další textový řetězec.
    *Vzobrazí text v okolí ukazatele
    *Xzobraz další videostránku
    *Yzobraz předcházející videostránku
    *+9posun kurzoru o 9 řádků dolů
    *+0nastav kurzor na začátek řádku
    *5K¤¤zruš 5 následujících řádků (od kurzoru)
    *-10K¤¤zruš předcházejících 10 řádků
    *#K¤¤zruš všechny řádky od ukazatele
    *3D¤¤zruš 3 znaky za ukazatelem
    *-50¤¤zruš 5 znaků před ukazatelem
    *SMOV¤MVI¤¤zaměň text "MOV" za "MVI"
    *^SXzaměň znak, na který ukazuje kurzor znakem "X"
    *50W¤¤zapiš 50 řádků na vnější paměť, vynuluj buffer
    *30O¤¤zapiš 30 řádků na vnější paměť, ponech text
    *E¤¤ukončení editace, zápis na vnější paměť
    *15G¤¤označ 15 řádků od ukazatele (kopírování-viz U)
    *U¤¤ulož za ukazatel data označena příkazem G
    *@¤¤vynuluj buffer (nový start PEDITU)
    *10H¤¤zobraz 10 řádků hexadecimálně
    *J¤¤návrat do TOOLU po povelu +A je možno překládat program v ASEMBLERU
    *M¤¤vypíše počet volných byte pro text
    *50P¤¤vytiskne 50 řádků od pointru na tiskárně (pozor na nastavení pomoci ASSIGN v MONITORU a tiskárna musí být připojena a zapnuta).
    *B¤#P¤¤vytiskne vše
    *R¤¤nastav podmínky pro čtení z vnější paměti
    *R¤#A¤¤přečti celý text z vnější paměti
    *Q¤¤návrat do MONITORU, po příkazu .P lze pokračovat v editaci textu
    *10T¤¤zobraz 10 řádků textu
    *OTT¤¤verifikace celého řádku s ponecháním polohy kurzoru.
    *5FXRI¤¤vyhledej 5-tý výskyt textu "XRI"
    *3SXRI¤XRA¤¤3x vyhledej a zaměň text XRI za XRA
    *5<FANA¤OTT¤>¤¤   5x vyhledej text ANA a proveď verifikaci
    .G4403<CR>skok z MONITORU do PEDITU s uchováním textu, např. po RESET nebo po povelu .C v MONITORU doporučujeme potom celý text zapsat na výstupní medium.



BASIC EX

Tento návod je stručným popisem jazyka BASIC (BEGINNERS ALL-PURPOSE SYMBOLIC INSTRUCTION CODE) a není učebnicí jazyka. Uživateli, který je v programování ve vyšších programovacích jazycích úplný začátečník, doporučujeme nejprve prostudovat některou z učebnic jazyka BASIC.

Interpret Jazyka Basic poskytuje uživateli efektivní prostředky pro vytváření, údržbu, ladění a provozování programu interaktivním způsoben. Má takové vlastnosti, že uživatel prakticky vystačí se samotným Basicem. Funkce vytváření a editace zdrojových programů - jsou již obsaženy v samotném interpretu Basic.

Uživatel však může využit editor 'PEDIT' pro vytváření a zejména pro rozsáhlejší úpravy svého programu. Rovněž zavádění a ukládání programu na vnější paměti se provádí příkazy Basicu. Basic se proto hodí pro výuku a pro programátory, kteří potřebují rychle vyřešit daný problém a nechtějí se zdržovat pracným programováním v Assembleru, pořizováním a překladem zdrojového textu. Na druhé straně lze využit speciálních možnosti Basicu, např. jednoduchá práce s řetězci, možnost připojení uživatelských podprogramů v Assembleru, které nu umožní vytvářet efektivnější programy a doplňovat vlastnosti Basicu. Kromě běžného provádění programu lze v Basicu též pracovat v dialogovém režimu, kdy se příkazy z terminálu (klávesnice) okamžitě provádějí a tím lze používat Basic jako kalkulátoru. V programovém režimu jsou příkazy zapisovány s čísly řádku, v rozsahu od 1-9999. Příkazy, které nemají uvedeno číslo řádku se okamžitě provádějí - dialogový režim.

Délka příkazového řádku je až 132 znaků (včetně čísla řádku, mezer a tabulátoru). Na jeden řádek lze napsat i vice příkazů, vzájemně oddělených oddělovačem ":" - dvojtečka. Basic ex umožňuje práci a čísly reál - jednoduché délky (4-Byte) s přesností šesti dekadických číslic (sedmá číslice je již zaokrouhlována). Číslo může být v rozsahu od 1.70141E-38 až 1.70141E+38. Čísla se mohou zapisovat i jako celočíselná tj. bez desetinné tečky.

Čísla jsou ukládané jako "REAL" - v pohyblivé řadové čárce v normalizovaném exponenciálním tvaru (exponent, mantisa) na 2-slovech (4-BYTE).

Konstanty se mohou zapisovat v přímém tvaru tj. číslice a desetinná tečka (např. 28.75) nebo v exponenciálním tvaru: XE+NN, XE-NN, kde X je číslo v přímém tvaru
   E označuje exponenciální tvar a značí "krát 10 na"
   +- znaménko exponentů ( + není povinné)
   NN maximálně dvoumístná hodnota exponentu (celé číslo) musí být vždy uveden i je-li nulový (0 =< NN <=38)

Lze používat indexovanou proměnnou (pole), až do 8-mi indexů (osmi rozměrné pole). S počtem indexů rychle narůstá spotřeba paměti. Basic umožňuje práci s řetězci - znakovými proměnnými a konstantami. Dále pak obsahuje standardní a uživatelské funkce jak pro práci s čísly tak i pro řetězce.

Součástí Baslcu ex jsou povely pro ovládáni interpretu, zavedení a úschovu programu, pořizováni výpisu programu, ale i příkaz pro editaci řádku, kdy je možno nastavit ukazatel na znak, doplňovat znaky vlevo od ukazatele a rušit znaky, příkaz pro rušeni úseku programu. Pro snazší odladění programu je součásti Basicu jednoduchý trasovací program, který na displeji vypisuje čísla prováděných řádků.

Při zápisu řádku na obrazovce televizního displeje (připojeného přes desku AND-1), se využívá dynamické "okno", které zobrazuje část okolí kurzoru (40 znaků), a v případě potřeby se automaticky posunuje do řádku (až do nalezení znaku CR - konec řádku) a nebo počátek řádku podle směru pohybu kurzoru ukazatele.

Basic ex vznikl rozšířením Basic mit, (který je např. implementován v systému COS 80 pro SAPI-80) a plně využívá základního programového vybavení systému SAPI-1, pod kterým je implementován. Navíc poskytuje uživateli tyto skupiny příkazů:

- pro práci s vněšji pamětí (kazetový magnetofon): FIND, OPEN, CLOSE, GET, PUT, nebo #P. #R (u příkazu INPUT a PRINT),
- pro práce s televizním displejem, kdy se plně využívá vlastnosti desky AND-1 a připojené klávesnice: WND, CURS, BEEP, CLS, INKEY,
- pro práci s programy v Assembleru: CAL, PTR, HEX, CODE,
- umožňuje základy strukturovaného programování:

Příkazy:IF/THEN/ELSE
ON GOTO/ELSE
ON GOSUR/ELSE
REPEAT/UNTIL
WHILE
! - komentáře na řádku.

- pro ladění programu – trasování: TRON, TROFF,
- pro editaci programu: EDIT, DEL,
- omezení: Příkazy IF/THEN/ELSE, WHTLE nebo REPEAT/UNTIL nelze "hnízdit" do více úrovní (tj. v příkazu nelze vyvolat další příkaz podmíněného provádění. Např. v příkazu IF nelze vyvolat další IF, WHILE, REPEAT a musí být umístěny v jediném řádku programu.

Interpret jazyka Basic pro systém SAPI-1 je k dispozici ve dvou verzích:
1) 7KB - standardní verze Basic ex
2) 9KB - rozšířená o grafiku Basic ex/G

Může pracovat pod monitorem v 4.0 s minimálně 16KB RAM-1, doporučuje se verze 48K, pro plné využiti všech možností interpretu jazyka Basic.

  1. základní popis interpretu BASIC
  2. Povely: (commands) ovládáni a sledováni chodu programu (některé nelze uvádět v programu)
    Instrukce: (statements) příkazy - činnosti, která vykonává program, nebo které lze vyvolat přímo
    Funkce: (functions) numerické řetězové (výsledkem provedeni funkce je vždy jedno číslo nebo řetěz)
    Operátory: logické, aritnetické, relační


    Rezervovaná 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
    

    Rozdření:

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

    Grafické povely:

    SCALE   PLOT    MOVE    AXES    LABEL   FILI    GRAPH   DOT     COPY
    FONT
    

    Aritmetické operátory:

     +......Plus, sečítání, spojování znakových řetězců
     -......Minus, odečítání
     x......Krát, násobení
     /......Lomeno, Dělení
     ^......Umocněno
    ()......Závorky
    

    Relační operátory

     >......Větší
     <......Menší
     =.....Shodný
    >=......Vetší nebo shodný
    =<......Shodný nebo menši
    <>......Neshodný, různý od
    

    Relační operátory pracuji i s řetězcovými proměnnými a konstantami.

    Přiklad:    IF P¤ ="ANO" THEN 100
    

    Logické operátory:

    NOT......Logická inverze
    OR.......Logický součet
    ANO......Logický součin
    XOR......Logická neekvivalence
    

    Vysvětlivky:
    V dalším popisu budou použity k definováni typů proměnných, výrazů a čísel řádku symboly, které nemají vztah k jazyku "Basic" a slouží jen ke zkráceni popisu. Jedná se o symboly: A, S¤, L, N.


    Proměnné, řetězcové proměnné, konstanty.

    Proměnná je symbolické označeni místa v paměti pro uložení dat (čisel, znakových řetězců), které se v průběhu zpracováni mohou měnit. Proměnné je označená jménem a veškeré odkazy se provádějí přes toto jméno. Jméno proměnné je složeno z písmen a číslic. Počet znaků není omezen, ale pro rozlišení proměnných se berou pouze první dva znaky. Prvním znakem jména musí být vždy písmeno. Proměnné jsou příkazy 'RUN' a 'CLEAR' nastavený na hodnotu 0, resp. řetězcové proměnné na "prázdné". Znak "¤" za jménem označuje řetězcovou proměnnou.

    Příklad.ALFA, BETA. GAMA... jsou číselné proměnné
    ALFA1, ALFA2... jsou totožné číselné proměnné (berou se 2.znaky- "AL")
    1CIS... chybné jméno, nezačíná písmenem
    CI-S... chybné, nepřípustný znak
    ALFA, ALFA¤... správně, 1. číselná proměnná, 2. řetězcová proměnná

    Číselné a řetězcové proměnné mohou mít stejné jméno a při tom jde o dvě různé proměnné. (Jsou vytvářeny dvě samostatné tabulky proměnných - jedna pro čitelné a druhá pro řetězcové, odlišení proměnných je dáno znakem "¤" pro řetězce).

    Konstanty jsou čísla, nebo znakové literáty, které nemění svůj význam v průběhu provádění programu.


    Pole.

    Pole je uspořádaná množina proměnných (prvků pole), které jsou označeny společným jménem (jméno pole). Přistup k prvkům pole je přes jméno a "index", který je uveden v kulatých závorkách "( )", pole v Basicu ex může být až osmirozměrné. Pole začíná indexem "0" a konči indexem, který je uveden v deklaraci pole příkazem DIM. Pozor v příkazu DIM se uvádí horní hranice pole, tj. počet prvků pole je o jeden větší (viz prvek "0"). Pole může být použito i pro řetězcové proměnné.


    Podprogramy.

    Podprogram je posloupnost instrukci, která se vyvolává z programu (podprogramu) a po provedení se vrací do místa vyvolání podprogramu. Podprogram musí být ukončen příkazem "RETURN". Na rozdíl do jiných vyšších jazyků (např. FORTRAN, PASCAL, atd.), není podprogram v Basicu volán jménem, ale pouze číslem řádku, označující začátek podprogramu. Tudíž je možno volat týž program s různými efekty podle vyvoláni (skok na různá čísla řádku). Pozor při voláni podprogramu, aby volaný řádek nebyl vnitřním řádkem cyklu (skokem do cyklu, nikoliv přes vstup cyklu "FOR", takový skok může vést k nedefinovaným výsledkům.).

    Vyvolání podprogramu:

    GOSUB XXXX      XXXX...číslo řádku-vstupní bod podprogramu
    ON PODMÍNKA GOSUB XXXX,YYYY ELSE ZZZZ       XXXX,YYYY,ZZZZ jsou čísla řádků vstupních bodů podprogramu v závislosti na hodnotě podmínky (přepínače). Příkaz "ELSE" je volitelný a skok es provede v ostatních případech.

    Zvláštním případem podprogramu jsou podprogramy v Assembleru, volané z Basicu. Assemblerovské podprogramy musí být ukončeny instrukci "RET". Vyvolání Assemblerovských podprogramů se provádí příkazy:

    X=CALL (ADR)    ...volání podprogramu na adrese ADR
    Y=USR (ADR)     ...volání podprogramu na adrese ADR
    

    Rozdíly mezi voláními viz popis komunikace s programem v Assembleru.

    Pro přímý zápis assemblerovských programů lze použit příkazu

    CODE    ADR     HEX     DATA,...DATA
    

    Podprogram může vyvolávat další podprogramy.

    HLAVNÍ PROGRAM   PODPROGRAM       POOPROGRAM
                     1.               2.
    I
    I
    VOLÁNÍ GOSUB---> !
                     !
                     !
    POKRAČOVÁNÍ <--- ! RETURN
    I
    I
    VOLÁNÍ GOSUB---> !
                     VOLÁNÍ GOSUB---> !
                                      !
                     POKRAČOVÁNÍ 1. <-! RETURN
                     !
                     !
    POKRAČOVÁNÍ <----! RETURN
    I
    :
    KONEC PROGRAMU
    

    Funkce.

    Je posloupnost příkazu Basicu, a po jejich provedení se vrací funkční hodnota zpět. Výsledkem funkce musí být číselné nebo řetězcová proměnná.

    Funkce se definuje příkazem

    DEF FN*(P)      kde * je jedno z písmen A-Z označující uživatelskou funkci, a "P" Je formální parametr funkce. Za definici následuje rozvoj funkce.

    Přiklad.

    DEF FNA (X)=SQR ( X^2+1)
    

    Uživatelské funkce mohou být definovány jak pro číselné tak i pro řetězcové proměnné.

    Funkce se volá uvedením jména funkce (s parametrem volání) na pravé straně přiřazovacího příkazu, všude tam kde lze použit proměnnou.

    Kromě uživatelských funkci je v Basicu řada standardních funkci, jak pro práci s číselnými proměnnými (např. SIN, COS, EXP tak i pro práci s řetězcovými proměnnými (např. VAL, STR . CHAR ). Viz seznam funkcí.


    Logické operace.

    Logické operace NOT, OR, AND, XOR se provádějí s proměnnými, jejichž délka jsou 2 Byte (slovo). Číselné Proměnné, které jsou uloženy v pohyblivé řadové čárce se nejdříve převedou na celočíselné (do 2 Byte - 16 bitů), pokud to číslo dovolí (jinak je hlášená chyba), a pak se provede logická operace.

    Typy konstant, proměnných a výrazů:

    A .. Číselné konstanta, číselná proměnná nebo aritm. Výraz
           konstanta....O 12.3 12.5E+3
           proměnná.....B MO N1 DX ALFA
           index. proměnná....BETA(l) GM(I,J)
           aritm.výraz.......A+R(J)*(C-R)+20-(B^(A/C))
    
           Použitelný číselný rozsah:  1.70141F+38 - 1E-38
                                       0
                                      -1E-38 - -1.70141E+38
           Dovolený rozsah indexu:     0..32767 (omezeno velikosti paměti)
           Spotřeba paměti:            4 byte/položku
           Výstupní formát:            číslo<0.1 nebo > 999 999 se zobrazuje v exponeciálním tvaru, před a za číslem se tiskne mezera
    
    S ....řetěz (řetězovka konstanta), řetězové proměnná nebo řetězový výraz
           řetěz................"TEXT" "VAHA" "ALFA 3"
           řetěz proměnná.......A¤ K1¤ MN¤(3) B¤(I,J) OTP¤JMÉNO¤
           řetěz výraz..........A¤+K1¤ JMÉNO¤+OTP¤ A¤+"TEXT"
    

    Délku řetězových proměnných není nutno dimenzovat, nastavuje se dynamicky, je pouze nutno definovat celkový paměťový prostor pro řetězové proměnné povelem 'CLEAR X' (X počet byte).Není možno spojovat řetězy, jejichž celkové délka by byla větší než počet znaků rezervovaných povelem 'CLEAR'

    Přikaž INPUT X¤ (vstup řetězcové proměnné) používá prostor rezervovaný příkazem 'CLEAR'

    L.,..log. konstanta, log. proměnná, relace nebo log. Výraz
           log. konstanta.. 0(FALSE) -l(TRUE)
           log. proměnná.... proměnná nabývající hodnot 0 nebo -1 (NOT 0)
           relace............A=B DAT (I) >C ALFA<>BETA A(I,J) >10
           log. výraz........A=B OR C=D ALFA BETA AND A (I)=C MOR N ANDO HEX(80) XOR ALFA
           výsledek relace nebo logického výrazu lze uložit do proměnné B=(X>Y)
    
    N…...číslo řádku, 0 až 9 999, celé číslo.
           P,P1,P2....PN parametr (argument)
    

    Pole (indexované proměnné):

    Pokud je šířka pole>10, musí být deklarované Instrukci DIM.

    Na přiklad:

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

    Pole mohou mít až 8 rozměrů, s počtem rozměrů však velmi rychle roste spotřeba paměti.

    Užíváme-li pole s menším počtem prvků než 11, dosáhneme dimenzováním pole úspory paměti (interpret jinak automaticky dimenzuje DIM X(10),Y(10,10), tj. 44 byte pro jeden rozměr, ale již 484 pro dva rozměry!).



    instrukce jazyka

  3. definiční a přiřazovací příkazy
  4. CLEAR N   Rezervování prostoru pro řetězcové proměnné (a vstupní příkaz INPUT). N - číslo větší než 15, je-11 menší hlásí se chyba. Horní rozsah je omezen volnou kapacitou paměti. Není-li příkaz CLEAR uveden je nastavena implicitní hodnota 256 po RUN.


    DIM   Definování šířky pole (počtu prvků pole-1) prvky jsou indexovány od 0 do horní hranice definovaná v příkazu DIM.

    Přiklad.

    DIM A(15),B(20.M),A¤(19)
    

    Pole A jednorozměrné číselné pole pro 16 prvků (0-15), pole B dvourozměrné pole (první dimenze pro 21 prvků, druhá dynamická dle M), pole A jednorozměrné pro řetězcové proměnné, (jiné než pole A pro čísla).


    DEF FNA(P)...DEF FNZ(P)   Definice funkce jedné proměnné. Může být definováno DEF FNZ(P) až 26 funkci. Parametr se nemusí ve vlastní funkci vyskytovat. Je však nutno jej alespoň formálně v názvu funkce uvést

    Příklad.

    Definice uživatelských funkci, FNA,FNR,FNS, FNR. Funkce FNS je pro řetězcové proměnné (spojení řetězců C¤,O¤ a zakončení řetězce znakem tečka.

    DEF FNA(P)-P^2+P+10
    DEF FNB(N)=FNA(N)+N^2
    DEF FNS(A¤)=C¤+D¤+"."
    (PI=3.1415926)
    DEF FNR(DEG)=PI/180*DEG
    

    FNA(P).......FNZ(P) Volání dřivé definované funkce, funkci lze použít všude, kde se používá proměnná.

    Přiklad.

    RAD =FNR(ALFA)
    

    REM..........umístění komentáře do zdrojového programu.

    Přikaž REM uvádí komentář a všechny znaky za příkazem až do konce řádku jsou interpretovány jako poznámka. (Jsou uloženy do zdrojového tvaru programu, ale nemají žádný výkonný charakter).

    Používají se pro zvýšení přehlednosti programu. V rámci úspory místa paměti se doporučuje používat krátká komentáře, popř. v případě nutnosti je z (odladěných) programů odstranit.

    REM TOTO OE POZNAMKA<CR>
    REM* * * * * * * * * * * *<CR>
    

    V prvním případě je zapsán text "TOTO JE POZNÁMKA" a ve druhém se zapíší hvězdičky. Poznámky REM se vypíší v LIST,LLIST,SAVE.


    !............Úvodní symbol komentáře uvnitř řádku

    Přiklad.

    GOTO 100 !ZOBRAZ OBOÉLNÍK
    

    Před "!" není třeba psát ':' a zbytek řádku je automaticky považován za poznámku.


    LET P=A.....vyhodnotí výraz "A" (na pravé straně) a výsledek přiřadí proměnné "P" (na levé straně, přiřazovacího příkazu). Klíčové slovo "LET" není povinné!!

    --------!--------
    !      P=A      !    Grafické vyjádření v blokových
    --------!--------    schématech.
    

    Znak "=" v přiřazovacích příkazech nemá význam "rovné se" ale"přiřaď výraz na pravé straně proměnné na levé". (Proto se v některých vyšších programovacích jazycích používají rozdílné symboly pro "přiřaď" např. ALGOL PASCAL znaky ":=" , a "rovné se" tj. znak "=").

    Přiklad.

    LFT A=R*C+D/E
    LET B¤=A¤+B¤
    A=B*C+D/E
    

    Příklady LET A=B*C+D/E a A=B*C+D/E jsou ve výsledku stejné.



  5. příkazy pro větvení programu
  6. A) Nepodmíněný skok.

    Nepodmíněný skok přerušuje lineárně vzestupné provádění programu a pokračuje na jiném místě programu podle udaného čísla řádku příkazu.

    GOTO N........Skok do jiné části programu.

    Číslo "N" je číslo přikazovaného řádku, proměnná jako číslo řádku není povolena!

    Přiklad. Skok na řádek s číslem 1000.

    GOTO 1000
    

    B) Podmíněný skok.

    Podmíněný skok umožňuje větvení programu v závislosti na vyhodnocené podmínce. Je-li podmínka splněna, provádí se příkaz (GOTO.THEN), není-li splněna pak se provádí příkazy za ELSE nebo se provede další řádek (není-li ELSE použito).

    IF L GOTO N... podmíněný skok na číslo řádku N
    IF L THEN N ... totéž
    IF L THEN PŘÍKAZ1:PŘÍKAZ2:PŘÍKAZ3... podmíněné provedení celého zbytku řádku je-li splněna podmínka L

    Přiklad.

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

    IF/THEN/ELSE Podmíněné větvení pro případ splnění (THEN) a nesplnění ELSE podmínky.

    Přiklad.

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

    je-li podmínka splněna nastaví se hodnota A na 1 a vytiskne se text OK. V případě, že A#B pak A=0 a vytiskne se text BAD.


    C) Přepínače

    Větvení se provede podle hodnoty výrazu za klíčovým slovem ON.
    je-li hodnota rovna n provede se skok na n-té číslo řádku, které je uvedeno v seznamu.
    Při záporné hodnotě se hlásí chyba.

    Formát:

    ON A GOTO SEZNAM Skok na číslo řádku dle seznamu (skok)
    ON A GOSUB SEZNAM Skok do podprogramu s číslem řádku (dle seznamu)
    

    U přepínače lze použit klíčové slovo "ELSE", skok pro ostatní případy (tj. je-li číslo mimo rozsah - počet prvků seznamu).

    -----
    ! I !
    -----
    !
    !                            ON I GOTO P1,P2,...PN,ELSE PM
    !                            ON I GOSUB P1.P2,. ..PN,ELSE PM
    ------------------------------------------------------------
    1!            2!                  . . .    N!         ELSE !
    ------        ------                       --------------------
    ! P1 !        ! P2 !                       ! PN !        ! PM !
    ------        ------                       ------        ------
    

    Příklady.

    ON X+1 GOTO 1010,1050.1200
    ON Y GOSUB 2000,2010,2020
    ON Z GOSUB 100,200,300 ELSE 500
    

    D) Příkazy cyklu.

    Příkazy FOR-NEXT.

    Skupina příkazu uzavřená mezi počátek cyklu (FOR) a konec cyklu (NEXT) se opakuje tak dlouho dokud není dosažena horní podmínka. V každém běhu cyklu se počáteční podmínka zvyšuje o krok.

    Formát:

    FOR P=POČÁTEK TO HORNÍ         (IMPLICITNÍ KROK-1)
    FOR P=POČÁTEK TO HORNÍ STEP KROK
    

    "P"-řídící proměnná cyklu
    POČÁTEK - výchozí hodnota řídící proměnná
    HORNÍ - koncová hodnota řídící proměnná, po jejím dosažení se cykl ukončí
    KROK - přírůstek řídící proměnné, v každém průchodu cyklem.

    Přiklad.

    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)
    

    Řídící proměnná cyklu je dostupná i mimo cykl a nabude hodnoty po ukončení cyklu HORNÍ + 1 (resp. HORNÍ+KROK , Je-li uveden "STEP").


    Ukončení cyklu-NEXT.

    NEXT P....... Konec smyčky, název proměnná není povinný pro jednoduchý cykl
    NEXT SEZNAM...konec 2 a více smyček

    Je-li společně ukončeno více cyklů, tj. u klíčového slova 'NEXT' je uveden seznam, pak proměnné v seznamu musí být uvedeny v opačném pořadí. (tj. řídicí proměnná nejvnitřnějšího cyklu musí být uvedena jako první a řidiči proměnná vnějšího cyklu jako poslední).

    Příklad.

    FOR I=l TO 10
    FOR J=1 TO 5
    FOR K=2 TO 20 STEP 2
      TĚLO CYKLU
    NEXT K,J,I
    

    Cykl FOR/NEXT dovoluje "hnízdit" uvnitř smyčky další cykly, které se nesmí překrývat tj. vnitřní cykl nesmí přecházet za vnější.

    Přiklad.

    FOR I=1 TO M:FOR J=1 TO N
    TĚLO CYKLU                             ... Dobře
    NEXT J: ZBYTEK VNĚJŠÍHO CYKLU :NEXT I
    
    FOR I=1 TO M:FOR J=1 TO N
    TĚLO CYKLU                             ... Chybně
    NEXT I: ZBYTEK VNITŘNÍHO CYKLU :NEXT J
    

    Příkaz WHILE - příkaz cyklu

    Dokud je splněna podmínka (za WHILE) pak prováděj příkazy na řádku. Není-li skoč na další řádek.

    FORMÁT:

    WHILE PODMÍNKA DO PŘÍKAZY

    Přiklad.

    While K<10 do print "I" :I=I+1:.....:B=B*0.25
    

    Příkaz 'WHILE' se provádí pokud je splněna podmínka a lze jej užít jen v rozsahu 1 řádku.


    Příkaz REPEAT - příkaz cyklu

    Opakuj příkazy na řádku dokud není splněna podmínka uvedená klíčovým sloven "UNTIL". Příkaz until je součástí posledního příkazu a neodděluje se ":". Příkaz platí v rozsahu jednoho řádku, po splnění podmínky se pokračuje na dalším řádku.

    Formát:

    REPEAT PŘÍKAZY UNTIL PODMINKA.

    Příklad.

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

    Příkaz se provádí pokud není splněna podmínka a platí v rozsahu 1 řádku. (místo REPEAT může být použito i 'DO')

    DO I=....UNTIL A>3
    



  7. podprogramy a zastavení programu
  8. GOSUB N........vyvolání podprogramu
    Podprogram se volá číslem řádku (nikoliv jménem podprogramu jako v jiných jazycích např. FORTRAN. PASCAL atd.). Podprogram musí být ukončen návratovým příkazovým slovem "RETURN".

    RETURN..........návrat z podprogramu

    END.............ukončení programu, zobrazí se 'OK'
    (nepovinné), pokud za hlavním programem následují podprogramy, musí se vždy hlavní program ukončit příkazem "END".

    STOP............přerušení chodu programu, ohlásí se 'BREAK IN N'
    kde "N" je číslo řádku přikazu STOP a lze pokračovat příkazem 'CONT' (od dalšího řádku programu). Používá se převážné pro ladění programu.



  9. operace vstupu a výstupu

    1. čtení konstant
    2. Příkazy DATA,READ a RESTORE slouží k přiřazení konstant proměnným. Příkazem DATA se deklarují konstanty pro příkaz READ, který provádí přiřazení. Příkaz RESTORE umožňuje opětovné použití konstant pro další přiřazení, příkaz READ posunuje ukazatel konstant na další konstantu.

          +----------RESTORE-----------+
          !                            !
      ----+----------------------------+----------------
      ! DATA1 ! DATA2 !            ! DATA N ! DATA N+1 !
      ----+-------+--------------------+--------+-------
          !       !                    !        !
        READ 1  READ 2               READ N  UKAZATEL
      

      Na začátku je ukazatel nastaven na 1. konstantu, po N-tém READ ukazuje na položku N+1, RESTORE umožní vrátit (resp. nastavit) ukazatel.

      READ 'SEZNAM'...Přidělí hodnoty ze seznamu 'DATA' seznamu proměnných. Nahrazuje řadu přiřazovacích příkazů typu "LET"

      READ A(1), A(2), A(3),X, B¤
      READ ALFA, BETA
      READ Z¤
      

      DATA............seznam konstant pro příkaz "READ" .

      DATA 10, 20, 30, 3.15
      DATA 3.5E-3, 7.1E-3
      DATA "JMÉNO", 12.5, 3.2, 1000
      

      řetězové konstanty nemusí být v uvozovkách.

      RESTORE.........návrat ukazatele v seznamu DATA na počátek

      RESTORE N.......návrat ukazatele v seznamu data na řádek "N"

      Přiklad.

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

      Pak příkaz RESTORE (bez čísla) provede nastavení pro READ na první seznam dat tj. na číslo řádku 10. Příkaz RESTORE 30...nastaví seznam pro READ na čtení řetězců na řádku 30.


    3. čtení vstupních proměnných z I/O zařízení
    4. A) Čtení z klávesnice displeje (console).

      Pro čtení dat zadávaných z klávesnice displeje slouží příkazy INPUT a INKEY. Příkaz INPUT umožňuje i výpis textu na obrazovce displeje (kombinace příkazu PRINT a vstupu dat), který umožní v programu vypisovat texty o požadavcích na data, zjednodušuje programování. Požadavek na data příkazem "INPUT" je na obrazovce displeje indikován znakem "?" - otazník. V případě, že v příkazu INPUT je uveden seznam proměnných a na vstupu bylo zadáno méně vstupních dat, na obrazovce se zobrazí dva otazníky, které signalizuji, že příkaz INPUT požaduje další data.

      V případě, že bylo zadáno více dat než je v seznamu proměnných, pak se nadbytečná data ignoruji (ztratí se). Data na vstupu se od sebe odděluji oddělovačem "," čárka. Nulová položka se musí zadávat číslici "0", nestačí pouhé domáčknutí tlačítka CR, které vyvolá zastavení provádění programu, V programu lze pokračovat zadáním příkazu "CONT".


      B) Čtení dat ze souboru-READER.

      Při čtení dat ze souborově orientovaného zařízeni (např. kazetový magnetofon) je nutno dodržet postup pro práci se soubory. Nejdříve je nutno soubor otevřít pro čteni dat, tj. nalézt soubor na pásce, pomocí OS MIKOS. Proto je v BASICU EX zaveden příkaz FIND.

      Po otevření souboru je možno používat příkazy pro čtení dat "INPUT #R" nebo GET. Příkaz INPUT #R se používá pro data zapsané příkazem "PRINT #P", příkaz GET pro data zapsané příkazem PUT. Rozdíl mezi příkazy INPUT a GET je v tom, že GET čte po slabikách (byte), a přikaž INPUT přečte znakové data do oddělovače, a je-li to číslo, provede konverzi do vnitřního tvaru.

      Poznámka.
      Ošetření konce souboru:
      poslední znak souboru je znak "SUB" (^Z, CTRL .Z) tj. 1AH nebo 26 (dekadicky).

      Přiklad.

      A=GET: IF A=26 THEN 100 !konec
      

      V textu jsou použity zkratky pro označováni zařízení podle konvencí monitoru (viz popis monitoru a obslužných rutin).

      CI:   CONSOLE INPUT           CO:   CONSOLE OUTPUT
      RI:   READER INPUT            PO:   PUNCH OUTPUT
                                    LO:   LIST OUTPUT
      

      Pro rozlišení zařízení v příkazech INPUT a PRINT se používá označení #R pro READER, #P pro PUNCH a #L pro LIST.

      Vstup resp, výstup se provádí na zařízení přiřazeném v monitoru příkazem ASSIGN - (.A).

           --------
           ! FIND !         ...otevři soubor
           --------
              /\
            /    \
          /        \
      -------    ----------
      ! GET !    !INPUT #R! ...čtení dat
      -------    ----------
          \        /
            \    /
              \/
           --------
           ! FIND !         ...uzavření souboru pro vstup
           --------            a otevření nového souboru
               !
      

      Formát:

      INPUT 'SEZNAM'....hodnoty nebo řetězy z konzoly se přidělí proměnným.
      INPUT "TEXT";SEZNAM... totéž jako předchozí, navíc se otiskne text
      INPUT#R "SEZNAM"....čtení z :RI: místo :CI: (tj. z pásky)
      

      Příklady.

      INPUT A ,čti data pro proměnnou A
      INPUT ALFA,BETA,GAMA ,čti více proměnných
      INPUT Z¤,K(I),X
      INPUT "NAPIŠ JMÉNO";JM; NAPIŠ NA DISPLEJI TEXT "NAPIŠ JMÉNO"
                        a přečti znakový řetězec
      INPUT #R A¤.B¤,X ,vstup dvou řetězců a čísla z RI:
      (kazeta)
      

      INKEY-.............předá hodnotu ASCII kódu právě otisknuté klávesy během provádění programu, není-li stisknuta žádná klávese potom je hodnota INKEY=0

      Přiklad.

      IF INKEY> 0 THEN 100
      

      Přiklad čekání na stisknutí klávesy na klávesnici a pak pokračováni v programu.

      50 IF INKEY>0 THEN 60 ELSE 50
      

      FIND..............nastaví příznak pro otevření nového souboru.

      Operační systém automaticky při čtení znaku (např. z kazety) provede vyhledání souboru a přečte 1.byte.

      FIND lze použit i k ukončení čtení ze vstupního souboru.

      GET...............čte byte ze vstupního média "RI" (snímač pásky nebo kazeta podle hodnoty IOBYTE.

      10 FIND! otevři soubor
      20 A=GET ! l.čtení - vyhledá soubor a čte byte
      22 A1=GET ! Čte 2.byte
      30 IF A=0 THEN 100 ELSE INPUT #R B¤
      100 FIND! Jiný soubor nebo uzavření
      


    5. zápis dat-výstup na zařízení
    6. A) výstup na displej

      Pro výstup na displej se používá příkaz "PRINT", nebo lze použit zkráceného zápisu pro PRINT tj. znak "?" otazník, který interpret Basicu provede na klíčové slovo PRINT. Pro výstup na obrazovku displeje je možno využit i specielních funkci pro řízení displeje (např. WND,CLS,MODE,CURS).

      B) výstup na tiskárnu (LIST).

      Pro tiskový výstup (na zařízení LIST) se používá příkazu PRINT #L. Pro formátování tisku lze použit speciální funkce TAB a SPC, (tyto lze použit i pro výstup na displej).

      C) Souborově orientovaný výstup.

      je-li zařízení PUNCH souborově orientováno (např. kazetový magnetofon) musí se dodržet posloupnost pro výstup do souboru. Nejdříve se musí soubor otevřít pro výstup (musí se vyhledat konec souboru, tj. místo pro uložení nového souboru), pod řízením MIKOSU.

      Po otevření souboru je možno do souboru zapisovat data příkazy PRINT #P nebo PUT. Data se zapisují do bufferu a po naplnění bufferu, nebo při uzavřeni souboru se přepíší do souboru. Po ukončení zápisu dat se vždy musí soubor ukončit příkazem CLOSE, jinak může dojit ke ztrátě dat.

      V Jednom okamžiku může být otevřen pouze jeden soubor pro výstup.

           --------
           ! OPEN !         ...otevření výstupního souboru
           --------
              /\
            /    \
          /        \
      -------    ----------
      ! PUT !    !PRINT #P! ...zápis dat
      -------    ----------
          \        /
            \    /
              \/
           ---------
           ! CLOSE !         ...uzavření souboru
           ---------
               !
      

      Systém MIKOS má dva nezávislé buffery. Jeden pro vstupní soubor a druhý pro výstupní. Před vyvolání basicu je nutné provést příkazy monitoru I=1,O=1 (pokud budeme pracovat se soubory na kazetovém magnetofonu) nebo příkaz .C monitoru.

      OPEN.......Nastav příznak pro operační systém pro otevření souboru k zápisu.
      Na kazetě může být otevřen soubor pro čtení nebo pro zápis.

      PUT A......zápis byte na periferii typu "PO" "A"=0...255, zápis hodnoty 26 způsobí uzavření souboru
      PUT HEX (1A)...uzavřeni souboru.
      Při zápisu 1.byts je třeba otevřít soubor

      CLOSE......uzavři výstupní soubor

      10 OPEN! otevři soubor pro zápis
      11 PUT A! a zápis 1.byts
      12 PUT B
      13 PRINT#P "DALŠÍ DATA.. ",R ,X,Y
      100 CLOSE ! uzavření souboru
      110 PRINT "VSTUP DAT"
      200 FIND !otevření pro čtení
      

      Výstup proměnných s konstant.

      Je-li použit příkaz PRINT (?) pak se výstup proměnných provede na terminál nebo na přiřazeném zařízení #P - výstup na magnetickou pásku #L - výstup na tiskárnu

      Poznámka. -před znakem "#" musí být vždy uvedena mezera!!

      Formát:

      PRINT SEZNAM...tisknou se řetězové konstanty, řetězové proměnné numerické konstanty, numerické proměnné funkce a výrazy dle seznánu

      PRINT "KOEFICIENT=",K,"SILA=",S,"KP"
      PRINT A¤, ALFA, R¤ (I),
      PRINT NOT 17
      PRINT #P SEZNAM ...logický děrovač (viz IOBYTE)
      PRINT #L SEZNAM ...logická tiskárna
      

      Poznámky: hodnoty<0.1 a>999 999 se zobrazují ve vědecké notaci 1 000 000...1E+06, 0.01...1E-02. Místo příkazu PRINT lze užit zkráceně jen '?'. Listuje se však správně PRINT, Uvnitř seznamu za příkazem 'PRINT' určuje typ oddělovače úpravu textového řádku. Oddělení čárkou způsobí posun na nejbližší tabelační pozici. Oddělení středníkem nevyvolá žádné doplňující funkce. Oddělovač je možno použit i na začátku nebo na konci řádku.

      PRINT,,"TEXT";"3MÉNO",JM¤;
      

      Pro zápis dat na vnější periferii (a později čtený příkazem INPUT #R) je nutné oddělit jednotlivé proměnné znakem "čárka" nebo"ukončením řádky" - CR.

      Přiklad.

      PRINT #P I;",";J;";";"K
      

      nebo

      PRINT #P I: PRINT #P J: PRINT #P K
      


    7. funkce pro příkaz 'PRINT'
    8. Pro příkaz výstupu PRINT jsou zavedeny formátovací funkce TAB - tabulace a SPC - vymezerování. Tyto funkce mohou být umístěny pouze uvnitř seznamu u příkazu PRINT. Kromě těchto funkci mají formátovací účinek i oddělovače v příkazu PRINT "," a ";". Znak čárka nastavuje posici tisku na další tabelační sloupec, znak středník umísťuje .výstup dalších znaků bezprostředně za předcházející znaky. Při výstupu čisel je nutné uvažovat s mezerami -po jedné před a za číslem.

      Speciální funkce "POS" umožňuje programu zjistit nastavení posice v řádku pro výstup znaků. (Tato funkce může být použita jak samostatně tak i v příkazu PRINT).

      TAB(A)..........Další tisk začne od pozice 'A'
      za TAB(A) není nutno uvádět symboly '; ' ', 'pro tisk. PRINT "VÝSLEDEK" ;V;TAB(30) "HLADINA=" ;B Pokud je již tisková pozice větší než je uvedena v TAB (POS>A), nemá TAB(A) žádný účinek.

      SPC(A)..........vystoupí 'A' mezer
      PRINT SPC (10);"POČET=";P1;SPC(10);"CENA=";C

      POS.............Počet již vystoupených znaků od začátku řádku
      PRINT"12345",POS za funkci POS se zobrazí "6" (POS ukazuje pozici tiskové hlavy, tj. místo kdo se bude provádět tisk).


    9. speciální funkce pro displej
    10. Basic ex je rozšířen o speciální funkce pro displej s deskou AND-1, které plně využívají možnosti této desky. Jsou to funkce pro ovládání kurzoru, nulování obrazovky, rezervace řádku obrazovky a pro ovládání typu výstupních znaků.

      CURS X,Y......nastav kursor na hodnotu X(0-39) a Y(0-23)

      MODE A........nastav mod zobrazení na displej

      HEX(C0)...široké znaky       192 dekadicky
      HEX(80)...podtržené znaky    128
      HEX(40)...blikající znaky    64
      HEX(.1)...současné tiskárna, např. 193
      

      WND K..........(WINDOW) rezervuj k-řádků (0-15) od horního okraje obrazovky, tyto řádky nebudou přepisovány, ale po nastavení CURS X,Y Je možné psát do vyhrazené části obrazovky. Nastavení "okna" se provede příkazem WND číslo a zrušení se provede WND 0.

      CLS..........(CLEAR SCREEN)-výmaz obrazovky mimo rezervovanou oblast

      1 WND 0:CLS:?"PR0GRAM MĚŘENÍ PRŮTOKU"
      2 CURS0, 6
      ..
      30 ?"SONDA1";X,Y,Z!...
      50 CURS0, 1,?"PRUMĚRNÁ HODNOTA";SUMA
      51 ?"ODCHYLKA" ; OD
      100 CURS0,22:PRINT "KONEC MĚŘENÍ"
      

      PTR(X)........(POINTER)-doeaď adresu proměnné X

      Přiklad:

      DUMMY=CALL (DADR,PTR(X))
      

      Tiskni HEX, adresu proměnné. (DADR… je adresa služby monitoru HEX(130) display addres) . Řetězové proměnné jsou uloženy v paměti nepřímo pomocí ukazatele... LFNGHT, OFF, LOW ADR, HIGH ADR)


    11. přímé vstupní/výstupní operace
    12. Příkazy pro přímé I/O operace umožňuji čtení a zápis byte v plném rozsahu paměti a číst a psát na porty. Adresa paměti je v rozsahu 0 - 64K, adresa pro port 0 - 255. Lze zadávat i hexadecimální adresu s využitím funkce "HEX". (např. POKE HEX(C000),10 -zápis 10 na adresu C000H).

      PEEK(A).......čtení byte z paměti z adresy "A"-funkce.
      POKE A1, A2...zápis byte A2 na adresu A1
      INP(A)........čtení portu A - funkce
      OUT A1,A2.....zápis byte A2 do portu A1
      WAIT A1,A2 ,A3 ..čekání na výskyt masky A2 na portu A1, je-li zadáno A3, potom se čeká na shodu, poté provedení další instrukce
      

      Příklady.

              WAIT A1.A2      Odpovídá:
      WAIT0:  IN      A1      ,čti Z A1
              ANI     A2      ,maska
              CPI     A2      ,shoda?
              JNZ     WAIT0   ,ne, čekej dál
      
              WAIT A1.A2.A3   odpovídá:
      WAIT1:  IN      A1
              ANI     A2
              CPI     A3      ,shoda na data?
              JNZ     WAIT1   ,ne, čekej
      

      Poznámka: Bitové operace s daty z portu je nožné též provádět pomocí operátoru 'OR''AND''XOR', např. INP(A) AND HEX(40).



  10. funkce pro řízení komunikace s programem v Assembleru
  11. Použití assemblerovských podprogramů rozšiřuje aplikační možnosti programu v Baaicu. Uživatel si může vytvořit podprogramy v Assmebleru, pro speciální požadavky a tyto programy připojit k programům v Basicu.

    HEX(C000).......dosaď HEX. hodnotu 0C000H

    X=CALL(ADR ,HL )..volání podprogramu na adrese ADR je možné nastavit (16 bitů) do 'HL' (platí L=C=A) obsah reg. 'HL' po návratu se uloží do X

    Y=USR(ADR ,C ).. volání podprogramu na adrese ADR je možné nastavit (8 bitů) do 'C' nebo 'A' (platí HL=C=A), a po návratu z podprogramu se uloží REG. A do proměnné Y. reg. B, DE, HL Je možno měnit u funkce USR a CALL.

    Přiklad.

    DOMMY=USER(HEX(109),7)..pošli BELL na 'CO'
    X=CALL(1234,HEX(1DE0))..16 bitů přenos (HL)
    

    CODE ADR, HEX DATA,....DATA
    příkaz 'CODE' uloží od zadané adresy data do paměti. Takto je možné uložit do paměti RAM tabulku a nebo podprogram

    Přiklad.

    CODE HEX(4300);3E,20,21,0,0,C9 .. odpovídá podprogramu v assembleru (INTEL 8080)

    4300:   MVI     A,' '
            LXI     H,0
            RET             ,povinné!!
    

    přičti 100 k 16 bitové proměnné:

    USER1:  LXI     D,100   CODE 17152;11,64,0,19,C9
            DAD     D       PRINT CALL( 17152, 1000)...VÝSLEDEK 1100.
            RET
    

    zobraz obsah 16 bitové proměnné:

    USER2:  MOV     A,M     COOE 17152;7E,23,66,6F,C9
            INX     H       PRINT CALL (17152,2)...OBSAH 16 BIT PROMĚNNÉ NA ADRESE 2
            MOV     H,M
            MOV     L,A
            RET
    

    Oblast paměti 4300H .. 43FFH je rezervována pro uživatelské programy. (dekadicky 17152...17407).



  12. standardní funkce
  13. Standardní funkce jsou součásti interpretu jazyka basic a značně ulehčují programování matematických operací, protože není nutné vytvářet programy pro řešení základních aritmetických funkci, jako např. pro sinus, odmocninu, logaritmus atd. rovněž jsou implementovány i funkce pro práci se znakovými řetězci.

    SGN(A).....signum (-1 pro A<0, 0 pro A=0, 1 pro A>0)
    INT(A).....celočíselná část (FRAC=A-INT (A) )
    ABS(A).....absolutní hodnota
    SQR(A).....odmocnina. A>=0,
    LOG(A).....přirozený logaritmus, A>0,
    EXP(A).....E umocněno na A
    SIN(A).....sinus, všechny úhly v radiánech !!!
                         (deg=3.1415926/180)
    COS(A).....cosinus
    TAN(A).....tangens
    ATN(A).....arcus tangens, 0< A <(PI/2)
    RND(A).....RANDOM - náhodné číslo v rozsahu 0 až 1
               je-li A>0 pak se generuje různá náhodná posloupnost
               je-li A<0 pak se generuje stejná posloupnost, vhodné
               pro ladění - vždy stejné výsledky náhodných čišel.
    FRE(O).....délka volné paměti v bytech
    FRE(A¤) ....délka volné paměti pro řetězy(256 po 'RUN').
    



  14. řetězové funkce
  15. 8. řetězové funkce

    VAL (S¤)... .číselná hodnota řetězu, první ne numerický znak ukončí převod řetězce do vnitřního zobrazení

    Přiklad.

    10 S1¤="123"
    20 I=VAL(S1¤)          !hodnota proměnné I je 123
    

    STR¤ (A) ....převod číselné proměnné na znakový řetězec

    Přiklad.

    10 J=4*5
    20 S2¤=STR¤ (J)        !řetězec S2 obsahuje znaky 20
    

    CHR¤ (A)....převod číselné proměnné na ASCII znak. Převádí obsah proměnné na znak v ASCII kódu (modulo 128)

    Přiklad.

    10 I=65
    20 PRINT CHR¤ (I)      !vytiskne se znak "A"
    

    ASC(S¤)....převod prvního znaku řetězu na hodnotu kódu ASCII (DEC)

    Přiklad.

    10 S3¤="BASIC"
    20 J=ASC(S3¤)          !hodnota proměnné J je 66
    

    LEN(S¤)....délka řetězu (počet znaků)

    Přiklad.

    10 S3¤="BASIC"
    20 I=LEN (S3¤)         !hodnota I je 5
    

    LEFT¤ (S¤,A) extrahuje počet A znaků řetězů zleva.

    Přiklad.

    40 S4¤=LEFT¤ (S3¤,3)   !S4¤=BAS
    

    RIGHT¤ (S¤,A) extrahuje počet A znaků řetězu zprava.

    Přiklad.

    40 S4¤=RIGHT (S3¤,3)   !S4¤=SIC
    

    MID¤ (S¤,A)..počínaje znakem A do konce řetězu

    Přiklad.

    40 S4¤=MID¤ (S3¤,2,3)  !S4¤=ASI
    

    MID¤ (S¤,A1,A2). .počínaje znakem A1, počet znaků A2 řetězu.

    Poznámka: Funkce jejichž název končí '¤' vytváří nový řetěz. K tonu je třeba rezervovat příslušný paměťový prostor příkazem 'CLEAR A' na začátku programu. Parametr A příkazu udává počet bytů, rezervovaných pro řetězy. Bez tohoto příkazu je celková kapacita 256 bytů (po "RUN").



  16. grafické příkazy
  17. (Jen pro verzi EX/G)

    Pouze pro informaci o připravované verzi. Příkazy mohou být přizpůsobeny desce DGD-1 až po ukončeni vývoje desky.

    SCALE XMIN, XMAX,YMIN,YMAX
    nastavení měřítka pro zobrazováni X(0-320 PIXLU), Y(0-280 PIXLU)

    PR/ SCALE 0,320,0,280
        SCALE -1,1,-1,1
    

    PLOT X1, Y1 [,PEN1] [;X2,Y2 .PEN2] ... [XN,YN ,PENN]
    spojí uvedené souřadnice ‚čarou a je možno zadat typ čáry.

    PR/ PLOT 20,20 .. od polohy kurzoru do 20,20 provede čáru
        PLOT 30,30;X+3,X
        PLOT 10,10,225
    

    MOVE X,Y[,PEN]
    nastavení polohy kurzoru a typu čáry

    PR/ MOVE 0.0
        MOVE 0,0,225
        PEN=0.........ruší Séru
        PEN=225.......plná čára
        PEN=HEX(55)...tečkovaná čára
        PEN=HEX(5F)...čerchovaná čára
    

    AXES X,Y[,PEN]
    vykresli osy s průsečíkem X,Z

    PR/ AXES 0.0
        AXES 20.20,HEX(5F)
    

    LABEL MX,MY;"TEXT"
    v daném zvětšení MX a MY zobrazí text jako PRINT. Zobrazuje znaky od " " po "Z" a ignoruje "CR" a "LF".

    PR/ LABEL 1,1;"BASIC"
        MOVE 30,20:LABEL 2,2;"MIT"
        vždy nastaví hodnotu PEN=225
    

    FILL MX.MY.PEN
    výplní plochu o velikosti MX.MY od kurzoru:

    PR/ FILL 2,2,225
                  xx
             ---->xx< nová poloha kurzoru
    

    GRAPH N
    Řízeni grafického zobrazování:

    N=0....pouze alfanumerické zobrazení
    N=225..vyčistí grafickou obrazovku, nastaví PEN=225 a přepne na grafické zobrazení.
    PR/ GRAPH 225
    

    COPY #N X,Y
    X,Y jsou souřadnice levého dolního rohu okna (39*23), které zkopíruje na zadanou periferii:

    N=C......CONSOLE
    N=L......LIST
    N=P......PUNCHER
    PR/ COPY#L 0,0
        COPY 30,20
    

    DOT
    dosadí hodnotu PIXLU (0 nebo -1), adresa je nastavená operací (MOVE,PLOT, LABEL,..)

    PR/ 10 MOVE 0,0
        15 PX=POINT
    

    FONT ADR,HEXDATA uživatelem definovaný typ písma. Adresa - data v paměti RAM. Pro 1 písmeno je zapotřebí 5 byte.



  18. povely
  19. RUN......Spuštění vloženého programu, může mít parametr – číslo řádku. Před exekucí programu se automaticky nuluji všechny proměnné. (Lze použit v programovém režimu).

    NEW......Vymazání paměti programu a všech proměnných (příprava pro zadávání nového programu).

    CLEAR....Smazání tabulek proměnných. Eventuální parametr udává rezervaci paměti pro řetězy, pořízené řetězovými funkcemi nebo příkazem 'INPUT S¤'.

    CONT.....Pokračování programu po "STOP" nebo 'CTRL/C' (ETX), nebo CR v příkazu 'INPUT'.

    LIST.....Listování programu, event. od čísla řádku. Lze přeruěit 'CTRL/C' (ETX) SHIFT/X. U AND-1 nebo pozastavit CTRL/S SHIFT/S u AND-1.
    Pokračovat lze stisknutím libovolné klávesy. (Lze použit v programovém režimu).

    LIST START............od řádku

    LIST START,POČET......od řádku plus počet řádků

    EDIT LINE.............edice řádků:
    <CR>.....ukončení editace
    <DEL>....ruší znak nalevo od kurzoru
    '<-'....posuv vlevo o znak
    <TAB>....posun vpravo o znak (horizon. tabulátor) u AND-1 SHIFT SP
    'ESC'....nastavit kurzor na druhý okraj řádku (="LF" u AND-1), každý jiný znak se uloží.
    Kopírování řádku lze provést příkazem EDIT, kde se přepíše čislo řádku na nové. Po zavolání EDIT se umístí kurzor na konec řádku. (Lze použit v programovém režimu).

    @LINE.. .zkrácený zápis pro volání EDITU

    DEL.....DEL START LINE,END LINE...zruší úsek programu od řádku po řádek. (Lze použit v programovém režimu ).

    BYE.....Skok do monitoru přes RST 1. (Lze použit v programovém režimu).

    LLIST.....Tisk na tiskárnu. (Lze použit v programovém režimu).

    TRON.....Start trasováni programu. Vypisuji se čísla řádku prováděného programu na obrazovce displeje. (Lze použit v programovém režimu).

    TROFF....Konec trasování programu. Zrušení výpisu na displeji. (Lze použit v programovém režimu).

    LOAD......zavádění programu. Starý program se nesmaže !! Přepisuji se jen řádky se stejnými čísly. Lze využit k modifikaci programu. Mazání se provádí povelem "NEW". (Lze použit v programovém režimu).

    SAVE......Úschova programu. Program se uchovává "otevřeně" v čitelné formě (ASCII). Je možná úprava programu editorem PEDIT. (Lze použit v programovém režimu).

    GOTO......Spuštění programu bez nulování tabulek (pro ladění).

    ? SEZNAM. .Vytištění hodnot proměnných dle seznamu (PRINT seznam).

    Poznámky:

    Příkaz, před kterým není číslo řádku, se provádí okamžitě. Číslované řádky se umisťuji dle čísel řádku do zdrojového programu. Při shodě čísla je příslušný řádek přepsán.

    Maximální počet znaků na instrukčním řádku je 132 včetně čísla řádku a mezer. Maximální číslo řádku je 9999.

    Počet mezer mezi číslem řádku a první instrukci zůstane při listingu uchován:

    PR/ 10 FOR I=1 TO 10
        20   X=X*SIN(I):Z=Z/15+X:PRINT "X=";X,"Z-" ;Z
        30 NEXT
    

    Názvy proměnných mohou být víceznakové (první vždy písmeno), ale rozhodující jsou však první dva znaky.

    Celá rezervovaná slova se nesmí užívat jako názvy proměnných, ani jako část názvu za prvním či druhým písmenem názvu. Pro numerické proměnné, řetězy a pole je možné použit, stejné názvy (např.: "B", "B¤", B"(l) jsou různé proměnné.)

    Přerušení chodu programu (po 'RUN') klávesou 'CTRL/C' (ETX) nebo 'SHIFT/X' u klávesnice AND-1.

    Potlačeni tisku z programu stisknutím 'CTRL/S' 'SHIFT/S' u AND-1.
    Obnovení tisku opakováním libovolné klávesy.

    Rozlišení startu programu Basic

    Studený start (COLD) tj. první spuštění
    - výmaz obrazovky,
    - nápis na horní řádek.

    Teplý start (WARM) tj. opakované spuštění
    - bez výmazu obrazovky a programu uživatele
    - nadpis se umístí na další řádek



  20. hlášeni chyb
  21. ?XX .. ERROR IN N
    NF ... NEXT WITHOUT "FOR"
    SN ... SYNTAX ERROR
    RG ... RETURN WITHOUT "GOSUB"
    OD ... OUT OF DATA (NOTHING TO "READ")
    FC ... FUNCTION ERROR
    OU ... OVERFLOW VALUE
    OM ... OVERFLOW MEMORY
    US ... UNDEFINED STATEMENT (LINE)
    BS ... INDEX OVERFLOW (BAD SUBSCRIPT - SUBSCRIPT OUT OF RANGE)
    DD ... DOUBLE DIMENSION
    /O ... ZERO DIVIDE
    ID ... ELEGAL. DIRECT
    TM ... TYPE MISMATCH
    OS ... OVERFLOW STRING MEMORY SPACE
    LS ... LONG STRING (255)
    ST ... STRING FUNCTION TOO KOMPLEX
    CN ... CONTINUE ERROR
    UF ... UNDEFINED FUNCTION
    
    x INPUT ERROR ... při chybě během vkládáni čísla v přikážu 'INPUT'
    x EXTRA DATA IGNERED ... ignorování nadbytečných dat ve vstupním seznamu INPUT.
    



  22. test rychlosti interpretu BASIC/EX
  23. 10 FOR I=1 TO 10000
    20 NEXT                asi 19 sec., tj. 1.9 ms na průchod
    30 FOR I=1 TO 10000: NEXT asi 15 sec., tj. 1.5 ms na průchod
    40 REPEAT I=I+1 UNTIL I>1000 asi 9.5 sec., tj. 9.5 ms na průchod
    50 E=1000
    60 REPEAT I=I+l UNTIL I>E  asi 6 sec., tj. 6 ms na průchod
    



  24. tabulky
  25. Tabulka kódu ISO-7 (ASCII)

    -------------------------------------------------------------
    JED/DES  3.       4.      5.      6.      7.      8.      9.
    -------------------------------------------------------------
      0 !             (       2       <       F       P       Z
      1 !             )       3       =       G       Q       [
      2 !    <SP>     *       4       >       H       R       \
      3 !    !        +       5       ?       I       S       ]
      4 !    "        ,       6       @       J       T       ^
      5 !    #        -       7       A       K       U       _
      6 !    ¤        .       8       B       L       V
      7 !    %        /       9       C       M       W 
      8 !    &        0       :       D       N       X
      9 !    '        1       ;       E       O       Y
    -------------------------------------------------------------
    
    

    Tabulka řídicích znaků.

    --------------------------------------------
    JED/DES    0.        1.       2.       3.
    --------------------------------------------
    0          NUL       LF       DC4      RS
    1          SOH       VT       NAK      US
    2          STX       FF       SYN
    3          EXT       CR       ETB
    4          EOT       SO       CAN
    5          ENQ       SI       EM
    6          ACK       DLE      SUB
    7          BEL       DC1      ESC
    8          BS        DC2      FS
    9          HT        DC3      GS
    --------------------------------------------
    

    Poznámka: od 96 začínají znaky malé abecedy malá "a"-97 až 127 znak DEL.
    Znak "¤" je znakem měny, na kterých klávesnicích je znak dolar.


    Význam řídicích znaků u terminálu SM 7202 (SM 1601)

    Význam       dekadicky      HEXA       Kód (ISO-7)
    ---------------------------------------------------------------
    šipka vlevo  8              8          BS
    šipka dolů   10             A          LF
    šipka vpravo 24             18         CAN
    šipka nahoru 26             1A         SUB
    ovládání     27             1B         ESC 2 následující znaky:
    kurzoru                                    řádek, pozice
    hone         29             1D         GS
    clear line   30             1E         RS
    clear scrsen 31             1F         US
    

    Poznámka:

    Ovládání kurzoru umožní umístit kurzor na libovolnou pozici na obrazovce displeje. Zadávají se dva znaky, první udává číslo řádku, druhý číslo pozice na řádku. (Znak SP reprezentuje číslo 0,a další znaky dle hodnoty mínus hodnota znaku mezera).

    Poznámka:

    - Pro klávesnici AND-1 je možno použit pro zvukovou signalizaci příkaz BEEP. Udává se bez parametru. Prodlouženi signálu je možné opakovaným použitím příkazu BEEP.







VYDÁNO PRO POTŘEBU UŽIVATELŮ POČÍTAČE SAPI-1
název :KAZETOPÁSKOVÉ PROGRAMOVÉ VYBAVENÍ
zpracoval :TESLA ELTOS DIZ 1985
schválil :TESLA ELTOS DIZ 1985
vydal :TESLA ELTOS DIZ 1985
náklad : 1 500 výtisků
rok:1985




 SAPI-1
 TESLA ELTOS OBOROVÝ PODNIK DIZ

I-------------------------------------------------------I
I  VÝVOJ: TESIA-ELSTROJ, KÚO, KONCERN ES                I
I VÝROBA: TESLA LIBEREC k. p.                           I
I DODÁVÁ: TESLA ELTOS,                                  I
I        DODAVATELSKO INŽENÝRSKÝ ZÁVOD                  I
I        poštovní schránka 27, pošta 45, 145 00 PRAHA 4 I
I-------------------------------------------------------I

(C) TESIA ELTOS 1985
TISK PHAHA



OBSAH



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


SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS | FK-1


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


8 bity / SAPI-1 / Programové vybavení / ZPS-2 / Kazetopáskové Programové Vybavení



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