Ú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 | HVĚZDA | SP 830 | PCS 1-QR6000
ZPS | Technické prostředky | Programové vybavení | Dokumentace
POZOR ! Tato uzivatelska prirucka vznikla jako zkraceny vypis z originalniho manualu SAPI-1 ZPS 2 pro soukromou potrebu autora. Nezarucuje tedy uplnost a spolehlivost obsazenych informaci.
Pri editaci prirucky bylo pouzito textoveho editoru TASWORD TWO na mikropocitaci SINCLAIR ZX-Spectrum.
(C) JiM SOFT Ostrava 4/1988
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
KAZETOPASKOVE PROGRAMOVE VYBAVENI
SSSSSS AA PPPPPPP IIIIIIII 1
SSSSSSSS AAAA PPPPPPPP IIIIIIII 11
SS SS AAAA PP PP II 111
SS AA AA PP PP II 1111
SS AA AA PPPPPPPP II 11 11
SSSSSSS AA AA PPPPPPP II ======= 11
SSSSSSS AA AA PP II ======= 11
SS AAAAAAAA PP II 11
SS AAAAAAAA PP II 11
SS SS AA AA PP II 11
SSSSSSSS AA AA PP IIIIIIII 111111
SSSSSS AA AA PP IIIIIIII 111111
VV VV 44 0000
VV VV 44 000000
VV VV 44 00 00
VV VV 44 00 000
VV VV 44 00 0000
VV VV 44 44 00 00 00
VV VV 44444444 0000 00
VV VV 44444444 000 00
VV VV 44 00 00
VVVV 44 00 00
VVVV 44 ** 000000
VV 44 ** 0000
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
UZIVATELSKA PRIRUCKA DUBEN 1985
Obsah 1
================================================================
O B S A H
================================================================
UVOD U
Zakladni programove vybaveni SAPI-1 U-1
-----------------------------------
Obsah programoveho vybaveni
A/ Residentni programy
1/ MONITOR
2/ MONITOR+, MIKOS
B/ Transparentni programy U-2
3/ TOOL ASM-80
4/ BASIC EX
Umisteni programu v pameti U-3
Upravy na deskach
- REM 1
- AND 1
- JPR 1
Doplneni vyznamu tlacitek U-4
MONITOR MO
Popis monitoru V4.0 MO-1
-------------------
Seznam jednotlivych povelu
1/ Seznam povelu zakladniho monitoru
2/ Seznam povelu MONITORu +
3/ Seznam povelu oper. systemu MIKOS MO-1
Popis jednotlivych povelu monitoru
Zakladni sluzby monitoru MO-7
Sluzby COS-80 systemu
Sluzby systemu CP/M MO-8
Sluzby EXFLAG
Rizeni obrazovky
Rizeni tiskarny
Obsah 2
MIKOS MI
Popis operacniho systemu MIKOS MI-1
------------------------------
Povely systemu MIKOS
Strucny prehled prikazu a odpovedi MI-2
Doporuceni pro praci s kazetovym magnetofonem MI-4
Tabulka sluzeb OS MIKOS
Format dat na kazete MI-5
Format funkcnich bloku
TOOL T
TOOL ASM-80 V4.0 T-1
------------------
Seznam povelu
1/ Prekladace T-2
2/ Editor PEDIT T-3
3/ Trasovaci a ladici program
4/ Zpetny prekladac - deassembler T-4
5/ Pomocne prikazy T-5
ASM-80 A
Assembler - jazyk symbolickych adres A-1
------------------------------------
1/ Pravidla zapisu
2/ Direktivy assembleru A-3
3/ Prace s prekladacem assembleru A-4
PEDIT P
Textovy editor PEDIT P-1
--------------------
Rozdeleni obrazovky P-2
Definice videomodu
Popis prikazu editoru P-3
1/ Prikazy pro rizeni videomodu
2/ Prikazovy rezim P-5
3/ Rozsireni editoru P-6
4/ Povely shodne s editorem INTEL V1.7 P-7
5/ Zobrazovane ridici znaky
6/ Priklad P-8
7/ Priklady jednotlivych povelu
Obsah 3
BASIC EX B
BASIC EX B-1
--------
1 Zakladni popis interpretu BASIC B-3
2 Instrukce jazyka B-8
2.1 Definicni a prirazovaci prikazy
2.2 Prikazy pro vetveni programu B-9
2.2.1 Nepodmineny skok
2.2.2 Podmineny skok
2.2.3 Prepinace B-10
2.2.4 Prikazy cyklu
2.3 Podprogramy a zastaveni programu B-12
2.4 Operace vstupu a vystupu
2.4.1 Cteni konstant
2.4.2 Cteni vstupnich promennych
z I/O zarizeni B-13
2.4.2.1 Cteni z klavesnice displeje
(console)
2.4.2.2 Cteni dat ze souboru reader
2.4.3 Zapis dat - vystup na zarizeni B-15
2.4.3.1 Vystup na displej
2.4.3.2 Vystup na tiskarnu
2.4.3.3 Souborove orientovany vystup
2.5 Funkce pro prikaz PRINT B-16
2.6 Specialni funkce pro displej B-17
2.7 Prime vstupni/vystupni operace B-18
2.8 Funkce pro rizeni komunikace s programem
v assembleru
2.9 Standardni funkce B-19
2.10 Retezcove funkce B-20
2.11 Graficke prikazy B-21
3. Povely B-22
4. Chybova hlaseni B-23
5. Test rychlosti BASIC/EX B-24
6. Tvar promennych BASIC/EX
PRILOHA PR
Ukazky pouziti systemovych rutin PR-1
POZOR ! Tato uzivatelska prirucka vznikla jako zkraceny vypis z
originalniho manualu SAPI-1 ZPS 2 pro soukromou
potrebu autora. Nezarucuje tedy uplnost a spolehlivost
obsazenych informaci.
Pri editaci prirucky bylo pouzito textoveho editoru
TASWORD TWO na mikropocitaci SINCLAIR ZX-Spectrum.
(C) JiM SOFT Ostrava 4/1988
Uvod 1
****************************************************************
* *
* ZAKLADNI PROGRAMOVE VYBAVENI *
* *
* SAPI - 1 *
* *
****************************************************************
Verse 4.0 Duben 1985
Programove vybaveni rozsiruje moznosti SAPI-1 vyvinuteho v
Tesla Elstroj, vyrabeneho v Tesla Liberec a dodavaneho Tesla
Eltos-DIZ.
Cela filosofie noveho programoveho vybaveni V4.0 vychazi z
nasledujici konfigurace. Programove vybaveni umoznuje pouzivat
Basic a pracovat s programy v assembleru. Vzorem bylo programove
vybaveni mikropocitacu INTEL, operacniho systemu COS 80 pro
SAPI-80.
Nove programove vybaveni nahrazuje puvodni Mikrobasic.
Programy v Mikrobasicu nejsou bez uprav prenositelne na nove
programove vybaveni.
Programove vybaveni pozaduje nasledujici minimalni
konfiguraci:
- JZS 1 (vcetne SPN 1) /zdroj + sbernice/
- JPR 1 /procesor + porty/
- ANK 1 /klavesnice/
- REM 1 /ROM/
- AND 1 /displej/
- DSM 1 /seriovy kanal/
- RAM 1 /dynamicka RAM/
Periferie:
- ZJS 1 /zobr. jednotka-TVP/
- MKP 1 /kazetovy magnetofon/
Rozsireni - tiskarna Consul 2111
Pripravuje se pripojeni dalsich periferii a nova membranova
klavesnice MK 1.
Programovy system vyzaduje minimalne 16 kB pameti RAM.
Jsou doporuceny nektere upravy na deskach systemu SAPI-1.
OBSAH PROGRAMOVEHO VYBAVENI
---------------------------
A/ Residentni programy (EPROM)
1/ MONITOR
Rozsah 2kB v EPROM (000H-7FFH)
Zakladni funkce rizeni systemu, obsluha klavesnice a TVP
displeje (viz popis monitoru). Zakladni monitor muze
pracovat samostatne bez MONITORU+ a MIKOSu (s omezenim
poskytovanych sluzeb).
2/ MONITOR+, MIKOS
Rozsah 2kB v EPROM (800H-FFFH)
Rozsireni funkci zakladniho monitoru a mikrokazetovy
operacni system. Monitor obsazuje i RAM (4000H-42FFH);
od 4300H lze pouzit pro uzivatelske programy (podprogramy
pro Basic apod.; POZOR ! "TOOL" tuto oblast vyuziva !).
Uvod 2
B/ Transparentni programy
Zavadeji se do RAM z kazety. Programy se zavadi od adresy
4400H a zabiraji prostor po 5FFFH.
3/ TOOL ASM-80
Soubor programu pro praci v assembleru. Sklada se z
nasledujicich programovych modulu:
-ASSEMBLER -absolutni, s pseudoinstrukcemi,pod-
mineny preklad,bez maker
-LINE ASSEMBLER -jednopruchodovy, pro opravy apod.
-PEDIT -CRT editor
-TRACER -ladici program
-DEASSEMBLER -zpetny assembler
-POMOCNE FUNKCE
4/ BASIC EX
Interpret, 7kB od adresy 4400H. Uvedene programove
prikazy pro grafiku nejsou v uvedene verzi zabudovany,
budou az v dalsi verzi pro desku graf. displeje (DGD 1);
rozsah programu bude 9kB.
Pracuje s pohyblivou radovou carkou (4 byte) s
presnosti 6 1/2 cislice v rozsahu 1.70141E+38 az
1.70141E-38. Umoznuje praci s retezci, uzivatelskymi
funkcemi, podprogramy v assembleru, zpracovani dat z kaz.
magnetofonu. Standardni funkce jsou aritmeticke i pro
praci s retezci.
Max. pocet znaku na radku je 132 (vcetne cisla radku a
mezer); max. cislo radku je 9999.
Soucasti BASICu jsou i povely pro ulehceni editace a
ladeni (EDIT TRON TROFF).
Ukonceni prace v BASICu povelem BYE.
BLOKOVE SCHEMA PROGRAMOVEHO VYBAVENI.
-------------------------------------
--------------
| |
| MONITOR | EPROM
| |
--------------
--------------
| |
| MONITOR+ |
| | EPROM
| MIKOS |
| |
--------------
--------------- ------------
| | | |
| TOOL ASM-80 | | BASIC EX | Kazetova
| | | | paska
--------------- ------------
\ /
\ /
Volitelne programy
Uvod 3
UMISTENI PROGRAMU V PAMETI A SDILENI PAMETI PROGRAMY V4.0
---------------------------------------------------------
0000 ------------------------
| MONITOR |
0800 ------------------------
| MONITOR + |
| MIKOS |
1000 ------------------------
| VOLNE EPROM |
2000 ------------------------
| RAM 1kB JPR-1 |
2400 ------------------------
| PORTY 0,1,2 |
| PRERUSENI JPR-1 |
3400 ------------------------
| VOLNE EPROM |
3800 ------------------------
| VIDEO RAM JPR-1 |
4000 ------------------------
| Pracovni oblast |
| MIKOSu a MONITORu |
4300 ---------------------------------------------
| Pracovni oblast TOOL | Uzivatelske rutiny |
4400 ---------------------------------------------
| Program TOOL | BASIC |
6000 ---------------------------------------------
| Programova a datova | Pracovni oblast |
| oblast programu TOOL | BASICu |
FFFF ---------------------------------------------
UPRAVY NA DESKACH
-----------------
Deska REM 1 (povinna uprava)
= zruseni adresace RAM na desce - odpojeni od sbernice
(nestaci vytahnout RAM !)
Provedeni: zrusit dratenou propojku mezi R-2.
Deska AND 1 (doporucene upravy)
= zruseni zadosti o preruseni od zpetneho behu (v
pripade preruseni muze nastat chybna funkce nekterych
programu).
Provedeni: zrusit propojku 49-50.
= uprava proti blikani
Provedeni: prerusit spoj z konektoru X1 (sp.8-RES) na
sp.1 IO D3A. Natahnout propoj dratem z 1 IO D3A na 11
IO D2A (MRQ).
Deska JPR 1 (doporucene upravy)
= pro spravnou funkci tlacitka INT a tiskarny C2111.
Provedeni: zrusit propojku 10-11; prerusit spoj u
spicky 21 D15 (MH 3214, na R29,sp.15 konektoru X3,sp.9
D21-MH 3212). Natahnout spojku ze sp.10 (propojky
10-11) na sp.21 D15.
= odstraneni falesneho pozadavku na preruseni po
zapnuti systemu.
Provedeni: sp.14 obvodu D16 (R 3212) odpojit od R35 a
pripojit na spicku 14 nektereho obvodu D17-D22 (RES).
Uvod 4
DOPLNENI VYZNAMU TLACITEK NA KLAVESNICI ANK 1
----------------------------------------------
ZNAK KLAVESNICE ODPOVIDAJICI ZNAK HEX. HODNOTA
----------------------------------------------------------------
Shift Q CTRL Q 11
Shift W CTRL W 17
Shift A CTRL P 10
Shift S CTRL S 13
Shift X ETX, CTRL C 03
Shift SPACE TAB 09
LF ESC ($) 1B
Shift LF LF 0A
----------------------------------------------------------------
Shift R % 25
Shift D & 26
Shift F \ 5C
Shift C [ 5B
Shift V ] 5D
Shift G _ 5F
----------------------------------------------------------------
Znaky v prvni polovine tabulky jsou doplneny, znaky v druhe
polovine byly jiz v Mikrobasicu.
<shift Q> resp. CTRL Q slouzi k rezervaci "okna" na obrazovce.
Format: ^Qn ;n...pocet rezervovanych radku
^Q ;implicitni rezervace
^Q0 ;zruseni okna
<shift A> resp. CTRL P slouzi k pripojeni tiskarny (paralelne k
displeji). Prvni stisk - pripojeni, druhy - odpojeni.
V dalsim textu bude oznacovano "shift"<ZNAK> jako ^<ZNAK>.
Klavesnice ANK 1 je doplnena programovym "repeat" - pri drzeni
klavesy se automaticky po cca 0.8s bere stisknuta klavesa jako
dalsi vstupni znak.
POZNAMKA:
- Uvedene navody nejsou ucebnici programovani, predpokladaji
znalosti programovani.
- Programove vybaveni se bude dale vyvijet (budou doplneny ovla-
dace periferii atd.).
- Pripravuje se prekladac FORTH.
Monitor 1
****************************************************************
* *
* POPIS MONITORU V4.0 *
* *
****************************************************************
Brezen 1985
Monitor je urcen pro SAPI-1 a rozsirene programove vybaveni
(BASIC, TOOL). Tvori vlastni jadro prog. vybaveni a ostatni
programy na nej navazuji a vyuzivaji jeho sluzeb.
Hlavni funkci je zajisteni styku opratora s mikropocitacem a
obsluha standardnich periferii (KBD, CRT, snimac a derovac,
tiskarna) s moznosti instalovat do systemu jine (uzivatelske)
periferie obdobneho typu. Proto se veskere HW zmeny objevi jen v
monitoru a ne v ostatnich programech.
Dalsi dulezitou funkci monitoru je poskytovani sluzeb pro
uzivatelske programy na smluvenych adresach. Tento monitor
poskytuje nektere zakladni sluzby operacnich systemu CP/M,
ISIS-II a vetsinu sluzeb os COS-80. Mnozina povelu je zvolena
tak, aby bylo mozne provozovat programy jiz se zakladnim 2kB
monitorem.
Jadro monitoru zabira 2kB pameti a na nej navazuje MONITOR+
a MIKOS, ktere rozsiruji zakladni mnozinu povelu. Zakl. Monitor
testuje, zda je pritomen MONITOR+ a umozni provadet rozsirene
prikazy MONITORu+, jinak ohlasi chybu. Zakladni monitor je na
adr. 0-7FFH, MONITOR+ a MIKOS na adr. 800H-FFFH.
Povely monitoru a castecne i filosofie MIKOSu vychazi z
programoveho vybaveni COS-80, ktere je implementovano na SAPI-80
Proto nebude uzivatelum SAPI-80 a obdobnych cinit prechod na
SAPI-1 potize. Progr. vybaveni SAPI-1 zahrnuje nove poznatky z
provozu SAPI-80, je modernejsi a poskytuje vetsi komfort.
SEZNAM JEDNOTLIVYCH POVELU
==========================
1/ Seznam povelu zakladniho monitoru
A 'assign' -prirazeni periferii
C 'clear' -poc. nastaveni dat a podminek
D 'display' -zobrazeni useku pameti
F 'fill' -naplneni pameti konstantou
G 'go to' -start programu s dvemi breakpointy
M 'move' -prekopirovani useku pameti
Q 'querry' -zobrazeni prirazeni periferii
S 'substitute' -zmena obsahu pameti
X 'exchange' -zobrazeni a zmena obsahu registru
2/ Seznam povelu MONITORu+
K 'kazeta' -povel os MIKOS, nasleduje dalsi znak
(viz 3)
J 'jump' -kontrola a start pgm. zavedeneho do
RAM z kazety
I 'input' -def. input-periferie, nastaveni
O 'output' -def. output-periferie, nastaveni
R 'read' -cteni INTEL-HEX souboru
W 'write' -zapis INTEL-HEX souboru
E 'eof' -konec zapisu HEX souboru
N 'null' -derovani prazdnych znaku
P 'PEDIT' -start PEDITu
T 'TRACER' -start TRACERu
B 'BASIC' -start BASICu
Monitor 2
3/ Seznam povelu oper. systemu MIKOS
K-I 'init' -inicializace kazety
K-B 'basic' -nacteni souboru v Mikrobasicu
K-S 'save' -ulozeni binarneho souboru
K-L 'load' -nacteni binarniho souboru
K-D 'directory' -vypis adresare
K-O 'open' -otevreni vyst. souboru
K-C 'close' -uzavreni vyst. souboru
K-F 'find' -otevreni vst. souboru
K-A 'append' -pripojeni dalsiho vyst. souboru
K-M 'motion' -posuv pasky
POPIS JEDNOTLIVYCH POVELU MONITORU
==================================
A = assign device
-----------------
Prirazeni periferii systemu C-console (CRT,TTY,...)
R-reader (snimac,mgf.)
P-punch (derovac,mgf)
L-list (tiskarna...)
Pouzite zkratky zarizeni: CRT -displej s klavesnici
LPR -tiskarna
PTP -derovac
PTR -snimac
USER1-uziv.zarizeni 1 (mgf)
USER2-uziv.zarizeni 2
VYZNAMNE BITY POVEL ZARIZENI CISLO SLUZBY
IOBYTE IODEF
----------------------------------------------------------------
XXXX XX00 C=T CRT+LPR
01 C=C CRT
10 C=B BATCH (IN=RI)
(OUT=LO)
11 C=1 USER (IN=1) 0
(OUT=1) 1
----------------------------------------------------------------
XXXX 00XX R=T CRT
01 R=P PTR
10 R=1 USER1 (mgf) 2
11 R=2 USER2 3
----------------------------------------------------------------
XX00 XXXX P=T CRT
01 P=P PTP
10 P=1 USER1 (mgf) 4
11 P=2 USER2 5
----------------------------------------------------------------
00XX XXXX L=T CRT+LPR
01 L=C CO
10 L=L LPR
11 L=1 USER1 6
----------------------------------------------------------------
- - CONSOLE USER STATUS 7
- - MEMTOP 8
----------------------------------------------------------------
Monitor 3
IOBYTE (adr. 40EDH)
----------------------
-------------------------
cislo bitu - | 7 6 | 5 4 | 3 2 | 1 0 |
-------------------------
rutina monitoru - | LO | PO | RI |CO,CI|
-------------------------
Rozdeleni bitu u IOBYTE pro pridelovani periferii (1.sl.tabulky)
Nastaveni uzivatelskych periferii pomoci rutiny IODEF
-----------------------------------------------------
V registru <C> je cislo sluzby (0-8) a v <DE> je adresa
prislusne rutiny. Cislo sluzby (8) nastavuje MEMTOP - v <DE> je
deklarace konce RAM. MEMTOP nastavuje horni hranici pameti a
zbytek je chranen pred prepsanim systemovymi programy (BASIC,
PEDIT atd.).
Priklad: .A_C=T nastaveni konzoly CRT+LPR
Poznamka: Monitor se ohlasuje znakem "." (tecka).
B = BASIC
---------
Start interpretu Basic, pokud je zaveden v operacni pameti
Text programu se zachova po opetovnem spusteni (prikaz testuje,
zda jde o horky nebo studeny start).
Priklad: .B
C = clear
---------
Mazani promennych monitoru a vsech ridicich promennych
(programovy RESET). Nastavi se takove podminky, ze pri spusteni
PEDITu, TOOLu, BASICu se provede inicializace a rusi se texty,
tabulky symbolu atd. (studeny start - jako RESET). Nutno
pouzivat pri prechodu mezi programy TOOL a BASIC, kde zajistuje
takto ochranu, aby jeden program neposkodil druhy.
Pozn.-pri omylu je mozno zachranit data "horkym startem"-prik. G
Priklad: .C
D = display memory D=<l.adr>=<h.adr>
------------------
Zobrazeni obsahu pameti; vypis lze prerusit libovolnou
klavesou nebo ukoncit ^C nebo <CR>.
Priklad: .D=4400=440F<CR>
4400 C3 50 44 C3 00 00 41 42 .PD...AB
4408 30 32 34 31 33 40 00 FF 02413@..
E = end of file command E=<adr>
-----------------------
Deruje konec souboru a startovaci adresu programu. Je-li
adresa=0, program se nestartuje.
Priklad: .E=7000 startovaci adresa 7000H
.E=0 program se pri cteni (R)
nestartuje
Monitor 4
F = fill memory F=<l.adr>=<h.adr>=<byte>
---------------
Naplneni useku pameti konstantou.
Priklad: .F=F000=FF00=01
G = go to G=<start>=<break1>=<break2>
---------
Start programu a nastaveni bodu preruseni pro ladeni
programu. Pak lze napr. prohlizet registry (.X) apod.
Programy PEDIT, BASIC - "studeny start" na 4400H
"horky start" na 4403H
Programy ze souboru TOOL (assembler, tracer)
"studeny start" na 4C00H
"horky start" na 4C03H
(umozni obnovu dat po RESET nebo povelu .C)
Priklady: .G=20 start od adr. 20H
.G=100=109 start na 100H, prerus na 109H
.G=30=37=45 nastaveni dvou bodu preruseni
.G=<CR> pokracuj od minuleho preruseni
.G=<sp>=30 pokracuj a nastav nove preruseni
I = input device
----------------
Ovladani priznaku otevreni vstupniho souboru (zruseni
otevreni pro vstup dat). Doporucuje se pouzivat vzdy pri
zavedeni noveho programu (napr. zmena TOOL na BASIC apod.),
protoze nastavi priznaky MIKOSu do pocatecniho stavu.
Priklady: .I=1 z kazety (reader user1)
.I=2 z uziv. zarizeni reader user2
.I=R reader - snimac pasky
.I=T console
J = jump
--------
Kontrola souctu v pameti a start programu zavedeneho
prikazem .K_L
Priklad: .J skok na program
K = kazeta
----------
Povely kazetoveho operacniho systemu MIKOS. Podrobny popis
je u popisu MIKOSu.
Format: .K_X kde X je jeden z povolenych prikazu MIKOS
Priklad: .K_L zavedeni bin. programu do pameti
M = move a block of memory M<l.adr.zdr>=<h.adr.zdr>=<cil.a>
--------------------------
Presun useku pameti od zadanych adres do useku daneho poc.
adresou (useky se nesmi prekryvat). Obsah zdroje se nemeni.
Priklad: .M=7000=7006=AD00
Monitor 5
O = output device
-----------------
Ovladani priznaku otevreni vystupniho souboru (obdobne
jako u prikazu .I).
Priklad: .O=1
N = 120 * null punch
--------------------
Derovani blanku (zavadeci jazyk derne pasky).
P = PEDIT
---------
Skok do editoru, zachovava textovy buffer. Pri opetovnem
spusteni po povelu .C se zrusi automaticka ochrana textu (mozna
zachrana - .G4403 ... viz povel G).
Q = querry
----------
Zobrazi stav I/O prirazeni (IOBYTE).
Priklady: .Q C=C R=1 P=1 L=L nastaveni pri MIKOS
.Q C=C R=P P=P L=C nastaveni pouze pri MONITOR
R = read HEX tape R<ofset>
-----------------
Cteni HEX pasky do pameti na adr. urcene adr. baze + ofset
Neuvedeny ofset se povazuje za 0 a program se ulozi dle baze
(podle puvodniho ulozeni pri nahrani).
Hlaseni chyb: S - chyba kontrol. souctu
M - nelze ulozit mimo RAM
: - chybi zacatek souboru
Priklad: Program byl ulozen z adr. 7000H prikazy W a E.
.R=1000 nacte na adresu 8000H
.R=D400 nacte na adresu 4400H
S = substitute memory contents
------------------------------
Zmena obsahu pameti
Format: S=<adr> <obsah>-<novy obsah> ..... <CR>
Po znaku ' (apostrof) lze vlozit ASCII znak
Po znaku , (carka) se zobrazi adresa a dalsi byte
T = TOOL
--------
Skok do souboru programu "TOOL", pokud byl zaveden do
pameti. POZOR ! Je-li zaveden TOOL po BASICu nebo naopak, je
nutne povelem .C zrusit podminky monitoru a inicializovat takto
rizeni automaticke ochrany dat jednotlivych programu.
Monitor 6
W = write to tape HEX W=<l.adr>=<h.adr>
---------------------
Zapis obsahu pameti na pasku, za poslednim W-prikazem musi
nasledovat prikaz E (ukonceni souboru).
Priklad: .W=100=1FF
X = examine and modify register
-------------------------------
Kontrola a pripadna uprava obsahu registru.
Format: X=<registr>-<obsah> [<novy obsah>]...
[<sp>] ... dalsi registr
[<cr>] ... ukonceni
X=<cr>
Priklad: .X=<cr> A-FF B-A3 C- ... obsahy vsech registru
vcetne F(flag),PC,SP
.X=C-FF-01<cr> zmena obsahu registru C
----------------------------------------------------------------
Poznamky:
- u prikazu, ktere maji vice parametru, se zadani jednotlivych
parametru ukoncuje znakem <sp> - mezera; ukonceni prikazu
znakem <cr> - navrat vozu.
- je-li zadana adresa, zadava se v hex. tvaru bez H; system
bere posledni 4 cislice.
- je-li zadan byte, system bere posledni 2 cislice.
SPECIALNI KLAVESY
=================
ANK-1 C 259.11 VYZNAM
-------------------------------------------------------------
^W CTRL W Skok do monitoru
^A CTRL P Prepnuti tiskarny (zap/vyp)
^C CTRL C Preruseni jineho programu
(ETX) nez je monitor (BASIC,TOOL,
PEDIT)
Klavesa ^Q vymezi na obrazovce TV displeje "okno",
ktere se neprepisuje.
Format: ^Qn rezervuje n radku (0-9)
^Q<cr> rezervuje implicitni pocet (11)
^Q0 zrusi "okno"
Monitor 7
ZAKLADNI SLUZBY MONITORU
========================
Protoze monitor je adresovan od 0, je tabulka sluzeb od adr.
100H a ne F800H (Intellec). Ma-li SAPI-1 pamet RAM na F800, lze
povelem .M tabulku sluzeb prekopirovat na F800 a pak bude plne
kompatibilni s ISIS-II.
100H Zacatek tabulky sluzeb
+0 START inicializace monitoru
+3 CI console input <A>
+6 RI reader input <A>, konec pasky CY=1
+9 CO console output <C>
+0C PO punch output <C>
+0F LO list output <C>
+12 CSTS console status <A> ... 0=nestisknuto
+15 IOCHK I/O byte read <A>
+18 IOSET I/O byte set <C>
+1B MEMCK nastav konec RAM; <A>=low,<B>=high adr.
+1E IODEF definuj uzivatelskou periferii
<C>=cislo,<DE>=adresa ovladace ci MEMTOP
+21 SPCL nastav kurzor dle <HL>
SLUZBY COS-80 SYSTEMU (SAPI-80)
================================
100H+24 CRLF novy radek na konzolu
+27 EXPR precti dany pocet <C> 16-bitovych param.
+2A ERROR chybove hlaseni "?", beep a navrat do mon.
+2D ASHEX preved ASCII z <A> na HEX v <A>
+30 DADR zobraz na CO adresu z <HL>
+33 DBYTE zobraz na CO byte z <A>
+36 HILO HL+1 srovnej s DE; HL>DE ... CY=1
+39 NEXT pokracuj v monitoru
+3C SPACE zobraz na CO mezeru
+3F CINCR cti CI, echo a analyza znaku (<cr>-CY=1,
<sp> nebo ',' -Z=1)
+42 TEXT zobraz na CO text (<HL>=adresa, <D>=delka
+45 XY * vyuziva program TOOL
+48 HXASC preved HEX z <A> na ASCII do <A>
+4B EXFLG * ext. ovladani flagu pro rizeni monitoru
+4E ASSIGN * prideleni perifernich zarizeni
Poznamka: Sluzby oznacene "*" jsou upraveny proti COS-80.
Monitor 8
SLUZBY SYSTEMU CP/M
====================
Adresa pro volani sluzeb je spolecna 0005H; jednotlive sluzby se
rozlisuji podle obsahu <C>. Parametry do systemu se predavaji v
<E>, ze systemu v <A>. Jsou implementovany tyto sluzby:
0 COLD START 5 LIST OUTPUT
1 CONSOLE INPUT 6 DIRECT CONSOLE
2 CONSOLE OUTPUT 7 IOCHECK
3 READER INPUT 8 IOSET
4 PUNCHER OUTPUT 11 CONSOLE STATUS
SLUZBY EXFLAG
=============
Rizeni sluzeb systemu. V registru <C> je cislo sluzby a v
registru <A> jsou data pro rizeni sluzby.
C = 0 MODE pro displej A = 0 normalni znaky
A = 40H blikajici znaky
A = 80H podtrzene znaky
A = C0H siroke znaky
= 1 FIND A = 0 pro I = 1
= 2 FIND I = 2 FLAGY pro otevreni
= 3 OPEN A = 0 pro O = 1 souboru
= 4 OPEN O = 2
= 5 SET CURSOR A = cislo radku
= 6 SET CURSOR A = cislo pozice
= 7 RESERVE LINE A = pocet radku ("okno")
RIZENI OBRAZOVKY
----------------
'CONSOLE OUTPUT' simuluje chovani AND-16 a SM-7202. Ridici
znaky 1FH (ERS), 1EH (ERL), 1DH (HOME), 08H (BS) maji shodnou
funkci.
Jako nova funkce je zadani "okna" na obrazovce, ve kterem
muze byt trvale zobrazen text. Okno se zada ^Q, po kterem
nasleduje dalsi znak, ktery urci pocet radku od zacatku
obrazovky jako velikost "okna". Okno se oddeli od ostatniho
textu blikajici carou.
RIZENI TISKARNY
---------------
Tisk na tiskarnu lze ridit pomoci "assign" nebo kdykoliv
pomoci CTRL P (^A). Po prvnim stisknuti vsechny znaky vysilane
na konzolu se soucasne vypisuji i na tiskarne, druhym stisknutim
se tento rezim rusi.
POZOR ! Tiskarna musi byt zapnuta !
POZNAMKY K FUNKCI MONITORU
- Monitor obsahuje progr. funkci "repeat" pro klavesnici
(aut. opakovani znaku pri drzeni klavesy po cca 0.8 s).
- CTRL C (^X) zpusobi preruseni provadeni programu mimo mon.
- CTRL W (^W) zpusobi vystup z programu, vypise obsah
registru a preda rizeni monitoru.
- System MIKOS obsahuje priznaky FLAG pro V/V soubory, ktere
nejsou uzivateli pristupne a ktere ridi stavy
rozpracovanosti souboru. V nekterych pripadech je nutne pro
spravnou funkci systemu mit moznost pocatecniho nastaveni
techto priznaku - slouzi k tomu prikazy I a O, ktere umozni
uzivateli pocatecni nastaveni priznaku. Toto nastaveni je
nutne v pripade nenormalniho ukonceni programu (zacykleni
programu a jeho preruseni ^W atd.).
MIKOS 1
****************************************************************
* *
* POPIS OPERACNIHO SYSTEMU MIKOS *
* *
* (MIkro Kazetovy Operacni System) *
* *
****************************************************************
MIKOS pracuje se zakladni sestavou SAPI-1 s jednim
kazetovym magnetofonem. Umoznuje porizovat data, programy pomoci
editoru PEDIT, prekladat a ladit uziv. programy assemblerem a
tracerem, zpracovavat data BASICem.
MIKOS automaticky formatuje data zapisovana na kazetu do
bloku, ktere zabezpecuje poradovym cislem bloku. Uzivatel
pracuje s daty jako by pracoval se snimacem nebo derovacem
pasky. Veskere ovladani se deje pres monitor a systemove rutiny
(RI,PO). Prikazy (I=1,O=1) nastavi uzivatel 'IOBYTE' na
magnetofon a zada systemu, ze neni otevren zadny vstupni ani
vystupni soubor. System automaticky otevre soubor v okamziku kdy
se provede prvni manipulace s daty. Vystupni soubor se ukonci po
zapsani znaku CTRL Z (SUB) na 'PO' nebo povelem K_C.
Behem vyhledavani souboru se automaticky na prvni radek
obrazovky vypisuje jmeno souboru a poradove cislo bloku, znak
':' indikuje probihajici cteni z kazety, znak '*' indikuje cteni
dat z pasky a jejich ukladani do pameti, znak '#' indikuje, ze
behem vyhledavani byl spatne precten blok.
Zpracovani chyby se provadi po spatnem precteni bloku nebo
jeho vynechani. MIKOS vypise 'ERROR/N' a ceka na obsluhu.
Klavesou 'N' je mozno zadat ignorovani cteni. Po jine klavese
('Y' nebo <sp>) se vypise 'BACK PLAY DONE'. Obsluha previne
pasku (nekolik cm) zpet a prepne na cteni. MIKOS zacne
vyhledavat spatne zpracovany blok (provadi zobrazeni jmena a
cisla bloku) az precte spravne blok. Potom prestane automaticke
vyhledavani a vypise se novy radek, dale pak pokracuje proces,
preruseny chybnym ctenim.
MIKOS ma dve delky meziblokovych mezer. Dlouha mezera umozni
zastavit a potom znovu rozjet magnetofon. Potom nejsou zapis ani
cteni zavisle na rychlosti zpracovani dat uzivatelem (pouziva se
pri zapisu INTEL-HEX formatu, v BASICu atd.). Kratka mezera se
pouziva pri zapisu a cteni binarnich dat (prikazy K_L, K_S).
POVELY SYSTEMU MIKOS
====================
K_A append pripojeni dalsiho vyst. souboru
K_B basic cteni ve formatu Mikrobasicu
K_C close uzavreni vystupniho souboru
K_D directory vypis adresare
K_F find otevreni vstupniho souboru
K_I init inicializace pasky
K_L load nacteni binarniho souboru
K_M motion posuv pasky
K_O open otevreni vystupniho souboru
K_S save ulozeni binarniho programu
W write zapis souboru ve formatu INTEL-HEX
R read cteni souboru INTEL-HEX
E eof zapis ukonceni souboru INTEL-HEX
MIKOS 2
Pasku je mozno inicializovat, t.j. napsat na pasku blok
zahlavi (oznaceni pasky, verze...). Zahlavi se vypisuje pri
prikazech K_D a cteni, pokud je paska na zacatku. Slouzi k
vizualni kontrole vyberu spravne pasky.
Funkce cteni a zapisu je mozne provadet ve dvou typech -
- binarni a INTEL-HEX. Komunikace s obsluhou probiha dialogovym
rezimem, kdy system vypise napovedny text a ceka na provedeni
ukonu obsluhou a potvrzeni, ze ukon byl proveden, stisknutim
klavesy.
STRUCNY PREHLED PRIKAZU A ODPOVEDI
==================================
1/ INICIALIZACE
------------
.K_I
BOT
RECORD DONE ? <Y>
VOLUME NAME
: <oznaceni pasky>
. - navrat do monitoru
2/ CTENI PASKY (binarni - implicitni ulozeni)
-----------
.K_L
NAME
: <jmeno souboru>
PLAY DONE ? <Y>
... vyhledani a nacteni souboru
3/ ULOZENI DAT Z PAMETI NA PASKU (binarni)
-----------------------------
.K_S
=<poc.adr>=<konc.adr>
LAST NAME
: <jmeno predchazejiciho souboru>
PLAY DONE ? <Y>
... hledani
RECORD DONE ? <Y>
NEW NAME
: <jmeno noveho souboru>
... zapis dat na pasku
4/ ZAPIS BEZ VYHLEDAVANI (predchazel-li zapis a paska je za
--------------------- poslednim souborem)
.K_A
RECORD DONE ? <Y>
NEW NAME
: <jmeno noveho souboru>
... zapis hlavicky souboru
.K_S
=<poc.adr>=<konc.adr>
... nahrani souboru
Poznamka: Neprovadi se vyhledavani posledniho souboru.
MIKOS 3
5/ PREVIJENI - POHYB PASKY
-----------------------
.K_M ;zapnuti magnetofonu
DONE ? <Y> ;zastaveni magnetofonu
6/ POMOCNE FUNKCE
--------------
.K_O ;otevreni souboru
LAST NAME pro zapis
: <jmeno>
RECORD DONE ? <Y>
NEW NAME
: <nove jmeno>
.K_C ;uzavreni vyst.souboru
.K_F ;otevreni vst. Souboru
NAME
: <jmeno>
.K_B ;cteni z Mikrobasicu
= <adr. ulozeni>
PLAY DONE ? <Y>
*** nahrane bloky
.K_D ;cteni adresare pasky
PLAY DONE ? <Y>
... vypis adresare
^X
Pri vypisu adresare se provadi kontrolni cteni souboru
vcetne vyhodnoceni chyb pri cteni. Prave cteny blok se
prubezne zobrazuje na prvnim radku obrazovky (nazev a
cislo bloku. V dolni polovine je zobrazen adresar,
ktery obsahuje poradove cislo programu, nazev programu
(11 znaku) a delku programu v blocich. Prikaz K_D se
automaticky neukoncuje, protoze na pasce neni znak
logickeho konce pasky. Proto je nutno ukoncit prikaz
rucne pomoci ^X (ETX, CTRL C).
7/ FORMAT INTEL-HEX
----------------
Posloupnost prikazu pri zapisu na pasku:
.O=1
.W=<poc.adr>=<konc.adr>
... komunikace se systemem
... zapis dat
.E=<start.adr>
Posloupnost prikazu pri cteni z pasky:
.I=1
.R=<ofset>
... komunikace se systemem
... cteni dat
RYCHLE VYHLEDANI SOUBORU
------------------------
Behem vyhledavani lze pouzit rychloposuvy mgf, protoze na
hornim radku se objevi jmeno souboru a cislo prave cteneho
bloku. Na zaklade techto udaju lze zrychlit vyhledani.
MIKOS 4
Poznamky k funkci operacniho systemu MIKOS
------------------------------------------
- Soubory jsou ukladany s max. 11znakovym nazvem. Dale je mozno
ukladat spolecne s nazvem poznamky, napr. cislo verze, datum
porizeni atd. o celkove delce az do 64 znaku.
- Prikazy, ktere vyzaduji nazev souboru srovnavaji zadany nazev
s nazvy na pasce. Srovnava se v delce zadaneho nazvu (tj. Do
prvni mezery nebo 11 znaku).
- Pri zadavani nazvu souboru je mozna i "*" konvence, tj. misto
nazvu zadame *; system precte hlavicku a dotazuje se, zda je
to pozadovany soubor (vyzaduje odpoved Y/N); v pripade kladne
odpovedi provede operaci, jinak pokracuje v hledani souboru.
- Stav rozpracovanosti souboru je rizen priznaky (FLAGY), ktere
jsou soucasti os MIKOS a nejsou pristupne uzivateli. Nekdy je
nutne provest poc. nastaveni techto priznaku (napr. Po
nenormalnim ukonceni programu, ktery pracoval se soubory na
kazete); k tomu slouzi prikazy monitoru I a O.
- OS MIKOS provadi prubezne hlaseni sve cinnosti na obrazovce
displeje. V pripade cteni se na hornim radku obrazovky
zobrazuje signalni znak ':' nebo '*', nazev programu a porad.
cislo bloku (hex). Znak ':' signalizuje cteni do bufferu (bez
dalsiho ulozeni); '*' signalizuje ukladani do bufferu a dalsi
zpracovani (aktualni soubor). Dojde-li pri cteni k chybe, je
chyba signalizovana znakem '#', ktery se tiskne na radku
vyvolani funkce cteni. Pri zapisu na kazetu je provadeno
zkracene hlaseni - tj. na hornim radku se zobrazuje jen
poradove cislo prave zapisovaneho bloku.
Doporuceni pro praci s kazetovym magnetofonem
---------------------------------------------
1/Pozor na umisteni kazetoveho mgf vzhledem k TVP. Vychylovaci
obvody vytvari rusive pole, ktere muze ovlivnit cteci obvody
mgf. Nastavte polohu mgf na nejmensi ruseni - bez kazety
zapnout prehravani (PLAY), reg. hlasitosti na max., natacenim
nebo vzdalovanim od TVP najit misto s nejmensim rusenim.
2/U SAPI-1 neni automaticka kontrola ctenim po zapisu. Proto
udrzujte peclive cistotu hlavy, kazety udrzujte v bezprasnem
prostredi, previnute, v orig. obalu. Kazety EMGETON pouzijte
jen po prezkouseni. Doporucujeme pouzivat kazety ORWO K60
(nebo zahranicni LH). Zaznam zacinejte nejmene 10 sekund od
zacatku kazety, uvodni cast byva znehodnocena slepkou - prosa-
kovanim lepidla.
3/Vzdy zhotovujte nejmene dve kopie souboru (programove vybaveni
to dovoluje). Okamzite po zaznamu si overte prikazem K_D
spravnost souboru.
TABULKA SLUZEB OS MIKOS
=======================
800H zacatek tabulky sluzeb
+0 horky start MIKOSu
+3 studeny start MIKOSu
+6 REZERVOVANO - NEPOUZIVAT !
+9 otevreni vst. souboru - 'find'
+0C otevreni vyst. souboru - 'open'
+0F uzavreni vyst. souboru - 'close'
+12 zavedeni binarniho pgm. - 'load'
+15 ulozeni binarniho pgm. - 'save'
MIKOS 5
FORMAT DAT NA KAZETE
====================
Data jsou ukladana v nasledujicim formatu:
----------------------------------------------------------------
| meziblok.mezera | 10 | 10 | 10 | kod | 255 byte data | nazev |
----------------------------------------------------------------
----------------------------------------------------------------
| c.bloku | c.souboru | kontr.suma | 10 | 00 | meziblok.mezera |
----------------------------------------------------------------
- meziblokova mezera ma dve delky - kratka cca 100 ms (typ B)
dlouha cca 1 s (typ A)
- 10H synchronizacni znaky
- kod 01 zahlavi souboru
04 koncovy blok souboru
: zahlavi pasky (oznaceni pri INIT)
A znakovy soubor
B binarni soubor
- blok dat 255 byte (kod+blok=funkcni blok 256 byte, ostatni
znaky tvori ramec funkcniho bloku pro os MIKOS).
- nazev 11 byte oznaceni souboru
- c.bloku cislo bloku v souboru (hex)
- c.souboru cislo souboru
- kontr.suma kontr. cislo - negace souctu vsech znaku vc. Ramce
- ukonceni ukonceni bloku - 10H, 00H
FORMAT FUNKCNICH BLOKU
----------------------
Nazev kazety
----------------------------------------------------------------
| : | 64 byte nazev kazety | vypln do 256 byte - prazdne 00H |
----------------------------------------------------------------
Hlavicka souboru
----------------------------------------------------------------
| 01 | 11 byte nazev souboru | poznamky do 64 byte | vypln |
----------------------------------------------------------------
Koncovy blok
----------------------------------------------------------------
| 04 | zbytek dat typu 'A' nebo 'B' | vypln |
----------------------------------------------------------------
ASCII blok
----------------------------------------------------------------
| A | ASCII data |
----------------------------------------------------------------
Binarni blok
----------------------------------------------------------------
| B | < | st.adr | konc.adr | > | KS-1 | DATA | KS-2 |
----------------------------------------------------------------
MIKOS 6
Poznamky: - Cisla 10, 01, 04, 00 jsou hexadecimalni.
- znaky A, B, <, > jsou znakove konstanty.
- "04" je poslednim blokem souboru a muze obsahovat
zbytek dat typu A nebo B.
- "A" soubor obsahuje znaky ASCII kodu a data jsou
ukoncena znakem "SUB" (CTRL Z - 1AH). Bloky jsou
oddelovany dlouhou mezerou (cas pro zpracovani dat).
- "B" je binarni soubor. Obsahuje hlavicku, tj. adresu
ulozeni do pameti, koncovou adresu a kontrolni
soucet hlavicky. Adresy jsou ramovany znaky "<" a
">". Kontrolni soucet (KS-1) chrani program pred
nespravnym ulozenim (popr. prepisu). Dale nasleduji
vlastni binarni data, ktera jsou rovnez ukoncena
kontrolnim souctem (KS-2). Format "B" pouziva kratke
meziblokove mezery.
TOOL 1
****************************************************************
* *
* TOOL ASM-80 V4.0 *
* *
****************************************************************
Duben 1985
Soubor programu TOOL obsahuje programy pro praci v
assembleru, editaci, ladeni a predstavuje programove vybaveni
pro "maly" vyvojovy system.
Programy lze rozdelit do peti zakladnich skupin:
1/ ASSEMBLERY - textovy, jednoradkovy
2/ EDITOR PEDIT - priprava,opravy a modifikace
zdrojovych textu
3/ TRASOVACI PGM - pro ladeni assemblerovych pgm.
4/ ZPETNY PREKLADAC - prevod strojoveho kodu do
symbolicke verze
5/ POMOCNE PROGRAMY - zakladni sluzby monitoru a
jeho rozsireni
Soubor programu TOOL poskytuje uzivateli assembleru ucinne
prostredky pro pripravu, preklad a odladeni uzivatelskych
programu.
SEZNAM POVELU
=============
+A assembly start assembleru a volba rezimu
+B begin nulovani tabulky symbolu, podminek,
nastaveni stacku a registru
+C condition nastaveni podminek traceru
+D display zobrazeni oblasti pameti
+E eof derovani konce souboru a start. adresy
+F find vyhledani retezce znaku v pameti
+G go to start od dane adresy s breakpointy
+H hexadecimal hexadecimalni soucet a rozdil
+I input cteni portu
+J jump skok na zavedeny program (viz .J)
+K kazeta prikazy operacniho systemu MIKOS
+L line assembly jednopruchodovy primy prekladac
+M move presun obsahu useku pameti
+N null nulovani registru a podminky (viz +B)
+O output vyslani dat na port
+P PEDIT start editoru PEDIT
+Q quit navrat do monitoru
+R read cteni HEX souboru
+S substitute zmena obsahu pameti
+T trace start traceru, podminky zadane +C
+U undef.code zobrazeni pameti v ASCII
+V verify deassembler - zpetny prekladac
+W write zapis HEX souboru
+X examine r. zobrazeni a zmena obsahu registru
+Y verify+punch deassembly se souc. zapisem na mgf
Poznamka: TOOL se ohlasuje napovednym znakem '+'.
Poznamka pro Verify a Find:
Po znaku "," se prejde do rezimu Substitute; je mozne delat
opravy, zmenit adresu a po <cr> se vratit do puvodniho povelu.
TOOL 2
1/ PREKLADACE
=============
Soucasti souboru TOOL je prekladac absolutniho
assembleru - prekladac "memory assembler" umoznuje
preklad zdrojoveho textu umisteneho v pameti nebo na
uzivatelskem zarizeni (kazeta). Tento prekladac je
dvojpruchodovy. Podrobny popis je uveden v kapitole
Assembler. Zde jsou uvedeny prikazy pro rizeni prekladace
Vyvolani: +A ;vyvolani textoveho prekladace
Dale soubor TOOL obsahuje jednoradkovy jednopruchodovy
assembler, ktery lze pouzit pro opravy nebo jednoduche
programy.
Vyvolani: +L=<adr> ;vyvolani jednoradkoveho assemb.
Po vyvolani se ukazatel na obrazovce nastavi do stredu
nasledujiciho radku a ceka na vstup radku assembleru. Po
<cr> provede preklad (stroj. kod se predradi pred text) a
ceka na vstup noveho textu. Ukonceni se provede zadanim
prazdneho radku (jen <cr> nebo END <cr>). Povelem +L lze
zapsat strojovy kod na libovolnou adresu operacni pameti.
Pri chybe operatora se vrati na puvodni adresu, je mozne
opakovat radek. Je mozne pouzit symbolickych navesti, ale
odkazy jsou mozne jen dopredu (tj. na nizsi adresy).
Priklad: +L=7000
START: MVI A,1 ;zdroj
7000 3E 01 START: MVI A,1 ;po <cr>
.
. ;dalsi vstupy
.
<cr> ;ukonceni
MEMORY ASSEMBLER
----------------
a/ ZADANI MODU PRO PREKLAD
-R "Reader" file - cte zdrojovy text z vnejsi pameti
Druhy pruchod vyzaduje nove vyhledani souboru.
-X Assembly - preklad zdroje ulozeneho v pameti
textovym editorem PEDIT.
b/ RIZENI PRUCHODU (PASS)
-1 1. pruchod se provede automaticky po zadani mode.
-2 2. pruchod a vypis programu
-P 2. pruchod se strankovanim po 20 radcich.
Pokracuje po <sp>.
-S Vypis seznamu symbolu s prirazenymi hodnotami.
-N Pri 2. pruchodu jen vypis chyb (NOLIST).
<cr> Navrat do TOOLu.
^A CTRL P - pripojeni a odpojeni tiskarny.
-Q Navrat do TOOLu.
c/ HLASENI CHYB
U undefined nedefinovany symbol ci instrukce
O operand chybny operand
M multiply vicenasobna definice
L label chyba v navesti
F full table plna tabulka symbolu
W warning neulozen kod (v X-modu >2kB programu)
X expression chyba ve vyrazu
TOOL 3
2/ EDITOR - PEDIT
=================
Editor slouzi priprave, oprave a modifikaci textovych
souboru, ktere mohou byt ulozeny v pameti nebo na vnejsim
mediu, nebo jejich kombinace (doplneni souboru atd.).
Podrobny popis je v kapitole PEDIT.
Vyvolani: +P ;je mozne i z monitoru .P
Po ukonceni edice a ulozeni na kazetu lze program ihned
prelozit (povel +A, mode X).
Pozn. Navrat z PEDITu do TOOLu se provede *J<esc><esc>.
3/ TRASOVACI A LADICI PROGRAM TRACER
====================================
Trasovaci program umoznuje sledovat chovani, chod
programu a provadet v programu zmeny. Velmi zrychluje
ladeni na systemu bez emulatoru. Zpusob prace se ridi
podle nastavenych podminek (viz prikaz +C), nastavenim
pri spusteni Traceru (+T). Dale je mozno i v prubehu
trasovani menit podminky. Mezi trasovaci prikaz lze
zaradit i prikaz G s parametry (breakpointy), kdy dojde k
preruseni chodu programu na zadanych bodech. Useky mezi
breakpointy probihaji v realnem case.
+C - CONDITION Nastaveni podminky pro rizeni trasovani.
-------------- Muze byt zvolena jen jedna podminka.
B brief vypisuje PC a instrukci
C call trasuje jen hlavni program, podprogramy
v realnem case
L loop trasuje jen instrukce skoku
M mask trasovani zvolene instrukce s maskou
<n=1-3> ... pocet byte instrukce
<data> ... zadana data (1-3 byte)
<maska> ... 1-3 byte masky (AND)
N null zruseni podminky (implicitni)
R register vypis jen pri shode dat s registrem
<registr>,<data>
S stack vypis pri vyboceni stacku z dane oblasti
<l.adr>,<h.adr>
W window sleduje program v danem useku pameti
<l.adr>,<h.adr>
Priklady: +C:M=2 ;dvojbyteove instrukce
=00 =52 (nebo 'R) ;hleda instrukci s 'R'
+C:RA=01 ;trasuje jen pri A=01H
+T - VOLBA REZIMU TRASOVANI
---------------------------
+T=<cr> pokracuj od adr. v PC po prvni
breakpoint
+T=<sp>=<break><cr> pokracuj od PC, od break zobrazuj
+T=<adr><cr> start.adr.=break ... ihned trasuje
+T=<start>=<break1>=<break2> usek mezi start a break v
real. case, po breakpointu trasuje
TOOL 4
Priklad vypisu trasovani:
--P-7010 A-00 F-56 B-01 C-00 D-00 E-00
H-70 L-4E S-4380 :FFFF @CD ZPSC
7010 CD 87 70 CALL DUMMY
: oznacuje obsah vrcholu stacku
@ oznacuje data v pameti <HL>
ZPSC jsou rozdekodovane flagy (zero, parity, sign, carry)
Vlastni rizeni prubehu trasovani
<sp> ... dalsi instrukce
<cr> ... konec
, ... nova podminka (+C)
^X (ETX) ... preruseni trasovani
4/ ZPETNY PREKLADAC - DEASSEMBLER
=================================
Umoznuje kontrolu strojoveho kodu prevodem do symb. Tvaru
Vyvolani: +V zobrazovani na obrazovce
+Y zobrazeni a ulozeni na kazetu
Zpetny prekladac pracuje po radcich. Dalsi radek se
zobrazi po <sp>; <cr> ukonci preklad.
Prikazy +V, +Y maji jeden parametr - adresu mista
pameti, odkud se provadi zpetny preklad.
Priklad: +V=7000
... vypis radky
<sp> ... dalsi radek
, ... prechod do Substitute, kde lze provest
zmeny; po <cr> navrat do deassembleru
<cr> ... konec prekladu
Poznamka: Stejny postup plati i pro prikaz +Y (se zapisem).
Pozor, zdroj. program se zapisuje do bufferu a na
kazetu se zapise az po jeho naplneni nebo po
prikazu K_C (uzavreni souboru). K_C se musi
provest vzdy po skonceni zpetneho prekladu, jinak
by pri cteni doslo k chybe.
POZOR ! Pri povelu +B, +N se rusi tabulka symbolu,
porizena pri prekladu. Assembler a deassembler
pouzivaji spolecnou tabulku symbolu, takze
prikazem +L a EQU lze tabulku symbolu behem
deassemblovani doplnovat.
TOOL 5
5/ POMOCNE PRIKAZY
==================
Umoznuji vyuzit sluzeb monitoru bez navratu do monitoru
a zpet do TOOLu. Dale pak rozsiruji nektere moznosti (+H,
+F), nektere prikazy maji jiny vyznam nez v monitoru (I,
O, F, Q).
POPIS PRIKAZU
+B - BEGIN
----------
Pocatecni nastaveni podminek a nulovani tabulky symbolu
(jine nez .B v monitoru).
+D - DISPLAY
------------
Zobrazeni obsahu pameti (viz monitor)
+E - EOF
--------
Zapis koncoveho bloku se start. adresou ve formatu HEX
(viz monitor)
+F - FIND
---------
Vyhledani dane instrukce v pameti a moznost modifikace
(jine nez .F, kde plni pamet).
Format: +F=<l.adr>=<d.adr> ;zadani rozsahu adres
=N ;pocet byte instrukce
=<data1>= ... <dataN> ;hledany obsah
=<mask1>= ... <maskN> ;maska
Program provede log. soucin obsahu pameti s maskou a
vysledek porovna se zadanymi daty. Je-li rovnost, provede
vypis adresy a zdroj. textu instrukce. Tak je mozno volit
i tridu instrukci (napr. IN, OUT) nebo najit instrukce
pracujici s urcitou oblasti pameti (viz priklady).
Priklad: 1/ Pozaduje se nalezeni vsech MOV B,D (kod 42H)
v pametovem useku 7000H-7100H.
+F=7000=7100<sp> ;rozsah pameti
=1<sp> ;1 byte instrukce
=42<sp> ;hledany kod
=FF<sp> ;maska
;vypis vsech nalezenych
... adres a zdroju v danem
rozsahu
<sp> ... pokracuje v hledani
, ... skok do substitute
<cr> ... konec hledani
2/ Vyhledani 3-bytovych instrukci, ktere pracuji
s adresou 20H.
+F=7000=7050<sp>
=3<sp>
=C3=00=20<sp>
=00=FF=FF<sp>
TOOL 6
+G - GO TO
----------
Spusteni programu (viz prikaz monitoru .G).
+H - HEXADECIMALNI SOUCET A ROZDIL
----------------------------------
Format: +H=<xx>=<yy> ;xx a yy jsou hex cisla
ssss rrrr ;vysledek
ssss = soucet
rrrr = rozdil
+I - INPUT
----------
Vstup dat ze zadaneho portu (lisi se od .I v monitoru,
kde nastavuje a nuluje prirazeni User=1,2).
Format: +I=xxxx=<port> ;vypise nastavenou adr.
=dd ;data z portu
Priklad: +I=7000=10<cr> ;port 10H
=F2 ;vstupni data
+J - JUMP
---------
Skok na posledni zavedeny program (viz .J v monitoru).
+K - KAZETA
-----------
Vyvolani systemu MIKOS (viz monitor a MIKOS .K_X).
+M - MOVE
---------
Presun oblasti pameti (viz prikaz .M monitoru).
+N - NULL
---------
Nulovani registru a podminky stejne jako v prikazu +B.
Ma jiny vyznam nez .N v monitoru.
+O - OUTPUT
-----------
Vystup dat na port (jiny vyznam nez .O v monitoru).
Format: +O=xxxx=<port>=<data>
Priklad: +O=10=FF ;vystup na port 10
port ma spravnou adr.
proto staci zadat <sp>
+Q - QUIT
---------
Navrat do monitoru.
TOOL 7
+R - READ
---------
Cteni HEX souboru (viz prikaz .R monitoru).
+S - SUBSTITUTE
---------------
Zmena obsahu pameti (viz prikaz .S monitoru).
+U - UNDEFINED CODE
-------------------
Zobrazeni obsahu pameti v ASCII kodu (nema ekvivalent
v monitoru).
Format: +U=<l.adr>=<h.adr>
+W - WRITE
----------
Zapis programu v HEX formatu (viz .W monitoru). Uzavrit
prikazem +E.
Priklad: +W=4400=5FFF<sp> ;zapis TOOLu
... ;komunikace s MIKOSem
... ;zapis na kazetu
+E=4400 ;ukonceni-zapis start
adresy
+X - EXAMINE REGISTER
---------------------
Zobrazeni a zmena obsahu registru (obdoba .X monitoru,
lisi se tvarem vypisu - v TOOLu se nevypisuji nazvy
registru; je take mozno zadat po apostrofu znak ASCII ).
Format: +X<ozn.reg>=yy ;yy=novy obsah reg.
+X<cr> ;celk. vypis vsech reg.
bez moznosti zmeny
POZOR! Pri zmene registru prikazem .X v monitoru se
zmeny nepromitnou do registru v TOOLu. Zmeny se
musi provadet primo prikazem +X (a naopak).
Registry jsou uchovany pri skoku do monitoru a
pri navratu jsou obnoveny.
ASM-80 1
****************************************************************
* *
* ASSEMBLER - JAZYK SYMBOLICKYCH ADRES *
* *
* ABSOLUTNI PREKLADAC ZE SOUBORU PROGRAMU TOOL *
* *
****************************************************************
TOOL ASM-80 V4.0 Duben 1985
Assembler je strojove orientovany jazyk, ktery umoznuje max.
vyuziti mikroprocesoroveho systemu. Prekladac zpracovava zdroj.
text programu, generuje strojovy kod a uklada jej do operacni
pameti. Assembler umoznuje:
- mnemotechnicky zapis typu operace
- symbolicke oznaceni mista v pameti
- v poli operandu pouzivat vyrazy
Dalsim typem prikazu assembleru jsou direktivy, ktere
negeneruji kod, ale ridi chod prekladu. Direktivy umoznuji:
- definovat jmena promennych prip. priradit hodnoty
- generovani konstant a znakovych retezcu
- rezervovat misto v pameti
- podmineny preklad
- rizeni pocitadla adres
- ukonceni prekladu
1/ PRAVIDLA ZAPISU
==================
TVAR ZDROJOVE RADKY
-------------------
NAVESTI: TYP OPERACE OPERAND(Y) ;KOMENTAR
- Nektera pole nemusi byt pouzita
- Pole musi byt oddelena <sp>, tabulatorem HT <tab>
nebo ";" (u komentare).
- Kazda instrukce, direktiva musi byt cela na jednom
radku, ukoncena <cr> (program pro vstup z klavesnice
doplni <lf> ).
- Pokracovaci radky nejsou povoleny.
- Lze pouzit radek pouze s komentarem.
- Maximalni delka radku je 80 znaku.
MNOZINA ZNAKU
-------------
- pismena A - Z
- cislice 0 - 9
- specialni znaky + - * / , : $ @ ? ' ; . <sp> <cr> <lf>
- libovolny znak v ASCII kodu muze byt v retezcich mezi
apostrofy nebo v komentarich
ASM-80 2
OMEZOVACE A ODDELOVACE
----------------------
<sp> (mezera) - oddeleni poli
, (carka) - oddeleni operandu
' ' (dvojice apostrofu) - omezovac znak. retezcu
; (strednik) - uvadi pole komentaru
: (dvojtecka) - ukonceni navesti
<tab> (tabulator) - oddeleni poli
Poznamka: Mezer a tabulatoru muze byt v zajmu citelnosti
vice i v prip. kombinaci.
POLE NAVESTI
------------
Navesti je nepovinne; musi byt jedinecne a nesmi se
vyskytovat vicekrat. Je mozno jedno misto oznacit vice
navestimi (na prazdne radce).
Delka navesti je 1 az 5 znaku, pripustna jsou
pismena, cislice a znaky ? a @; na prvnim miste musi byt
pismeno. Navesti musi byt ukonceno dvojteckou (u EQU je
v poli navesti jmeno, ktere se neukoncuje dvojteckou,
ale <sp> ci <tab>).
POLE TYPU OPERACE
-----------------
Pole typu operace obsahuje mnemotechnicky nazev
instrukce ci direktivy (podle pravidel assembleru I8080)
POLE KOMENTARU
--------------
Pole komentaru neplni zadnou funkci, musi byt
zahajeno strednikem (;).
TYPY OPERANDU
-------------
Operandy mohou byt ctyr typu, ktere lze zapsat
ruznymi zpusoby.
a/ REGISTR
Jmeno | B C D E H L M A
-----------------------------------
Hodnota | 0 1 2 3 4 5 6 7
b/ DVOJICE REGISTRU
B D H PSW SP
ASM-80 3
c/ PRIMY OPERAND
- Hex. cislo 10H, 0FFH
- Desitkove cislo 16, 16D
- Binarni cislo 10110B
- Znak. konstanta 'A'
- Pocitadlo adres $
- Jmeno s priraz. (napr. DES EQU 10
hodnotou MVI A,DES)
- Navesti
- Vyraz
d/ ADRESA PAMETI
obdobne jako ad c/ mimo znakovou konstantu
Poznamky: - apostrof lze zapsat MVI D,'''
- $ znamena okamzity stav PC s tim, ze ukazuje na
prvni byte instrukce
- ve vyrazu nejsou povoleny zavorky, vyraz se
vyhodnocuje zleva doprava
Pripustne operatory:
+ - * / HIGH LOW NOT AND OR XOR
SHR (posuv o N bitu vpravo, N=0-15)
SHL ( dtto vlevo )
Operatory jsou binarni (krome HIGH, LOW, NOT);
+,- mohou byt unarni ve vyznamu znamenka cisla.
2/ DIREKTIVY ASSEMBLERU
=======================
Slouzi k rizeni prekladace ci definici jmen, konstant atd.
EQU Prirazeni hodnoty jmenu
DB Definice byte; max. 80 znaku retezec nebo max.
10 vyrazu
DW Definice slova (2 byte); max. 5 vyrazu.
Pri pouziti text. retezce (1 az 2 ASCII znaky
mezi apostrofy) se znaky v ramci slova
ukladaji v opacnem poradi; pri zadani vice
znaku je hlasena chyba.
DS Rezervovani mista v pameti
[NAV:] END Ukonceni zdroj. textu; smi byt jen jeden, musi
byt poslednim prikazem textu.
[NAV:] ORG Nastaveni pocitadla adres. Je-li pred ORG
navesti, je mu prirazena hodnota pred
zpracovanim ORG.
.LIST Povoleni vypisu (implicitni).
.XLIST Zakazani vypisu, jen vypis chyb.
TITLE 'NAZEV' Pojmenovani programu; pokud program
nezacina touto direktivou, musi zacinat
prazdnym radkem.
Podmineny preklad umoznuje vytvaret ruzne varianty programu
IF <vyraz> je-li vyraz nenulovy, provede se cast
ELSE mezi IF a ELSE, jinak za ELSE. ( ELSE
ENDIF neni povinne; povolena 1 uroven IF ).
ASM-80 4
3/ PRACE S PREKLADACEM ASSEMBLERU
=================================
Prekladac je soucasti TOOLu (na kazete). Po nahrani
TOOLu systemem se provede prikazem monitoru skok do
programu TOOL - prikaz .T . TOOL se ohlasi znakem "+".
Spusteni assembleru se provede prikazem +A.
Preklad je dvojpruchodovy (1. pruchod se provede
automaticky). Po spusteni se prekladac ohlasi na displeji
a pozaduje zadani modu. Mod urcuje, kde je ulozen zdroj.
text programu.
X - zdrojovy program je v pocitaci po edici PEDITem
(max. 2kB programu)
R - zdrojovy text je na pasce (reader); druhy
prubeh vyzaduje nove vyhledani, proto se
doporucuje nahrat zdrojovy program 2x za sebou
(je to take bezpecnostni kopie). Program se
uklada od adr. 7000H az do konce pameti.
ROZDELENI PAMETI A ZPUSOB ZAPISU PRELOZENEHO PROGRAMU
-----------------------------------------------------
MOD X MOD R
6000H ------------- 6000H -------------
| TABULKA | | TABULKA |
| NAVESTI | | NAVESTI |
7000H ------------- 7000H -------------
| PRELOZENY | | |
| PROGRAM | | PRELOZENY |
7800H ------------- | |
| ZDROJOVY | | PROGRAM |
| TEXT | | |
| . | | . |
| . | | . |
| . | | . |
| | | |
FFFFH ------------- -------------
RIZENI PRUCHODU (PASS)
-----------------------
Urcuje provadeny pruchod prekladacem. V prvnim pruchodu
se vytvari tabulka symbolu, ve druhem pruchodu probiha
vlastni preklad.
1 prvni pruchod (automaticky pri spusteni mody X,R)
2 druhy pruchod (cely program)
P druhy pruchod (strankovany vypis)
Q navrat do TOOLu
S vypis tabulky symbolu (navesti)
N druhy pruchod pouze vypis chyb (NOLIST)
<cr> navrat do TOOLu
^A rizeni tiskarny (shift A,CTRL P), plati i v TOOL
ASM-80 5
HLASENI CHYB PREKLADACEM
------------------------
U undefined nedefinovany symbol
O operand err chybny operand
M multiply vicenasobna definice
L label err chyba v navesti
F full table plna tabulka symbolu
W warning varovani - neulozil
se strojovy kod (>2kB
programu v modu X)
X expression chyba ve vyrazu
PEDIT 1
****************************************************************
* *
* TEXTOVY EDITOR PEDIT *
* *
* Pro TV displej AND 1 Ze souboru programu TOOL *
* *
****************************************************************
Unor 1985
Textovy editor PEDIT (Pidi-EDITor) je urcen k porizovani
textovych souboru. Delka radku neni omezena, na displeji se
zobrazuje 40 znaku. Spodni radek obrazovky slouzi jako prikazovy
radek. Basic muze pracovat s delkou radku 132 znaku, pro
assembler je max. 80 znaku. Editor PEDIT zabira 2kB pameti.
PEDIT ma dva rezimy prace:
1/ PRIMY - "VIDEOMODE", kdy kod povelu je prvnim znakem na
prikazovem radku. Povel se ihned provede a zobrazi se
modifikovany text, bez potvrzeni prikazu dvema znaky
<esc>, ktery se na obrazovce zobrazuje jako $. Tak je
mozno napr. menit polohu kurzoru atd.
2/ PRIKAZOVY - "COMMAND MODE", kdy povel se neprovadi ihned,
zobrazuje se v prikazovem radku; jednotlive povely se
ukoncuji <esc> a provedou se az po zadani dvou <esc>.
Jednopismenove znaky se nemusi oddelovat pomoci <esc>,
napr. 15L3CV$$. Do ukonceni povelu je mozno prikazy
opravovat nebo rusit znakem <del> nebo <bs>.
Prikazy, ktere jsou uvedeny v primem rezimu (videomodu),
pracuji i v prikazovem rezimu, je-li na prvnim miste uveden
pocet opakovani nebo jiny povel.
Napr. *L provede se okamzite posun o radek
*3L$$ posun o 3 radky po zadani 2x<esc>
*3LV$$ posun a zobrazeni textu
*TL$$ provede se az po potvrzeni
Textovy editor pracuje s dynamickym "oknem" - jak vertikalne
tak i horizontalne. Jak bylo uvedeno, radek muze obsahovat napr.
132 znaku, pricemz je zobrazeno "okno" 40-ti znaku na radku,
ktere se automaticky posunuje pri posunu ukazovatka. Ve
vertikalnim smeru se "okno" automaticky posouva a zobrazuje cast
editovaneho textu. Na konci radku se zobrazuje znak "^". Je-li
radek delsi a neni-li konec radku zobrazen, potom se znak ^
nezobrazi. Tak je obsluha informovana, ze radek pokracuje.
Poznamky: - V popisu prikazu je pouzit znak "%" ve vyznamu
volitelneho cisla opakovani (-65535 az 65535).
- Uvede-li se tam, kde je v syntaxi prikazu %, znak #,
tak to znamena "vsechno", tj. nejvyssi kladne cislo.
- Prikazy <CTRL znak> plati pro klavesnici CONSUL 259,
prikazy <shift znak> jsou pro ANK 1.
- Pri tvorbe dlouhych tabulek lze take pouzit
rezervace textu na obrazovce (CTRL Q, shift Q) v
rozmezi nekolika radku a takto nechat trvale
zobrazene napr. zahlavi tabulky.
PEDIT 2
ROZDELENI OBRAZOVKY
===================
------------------------------------
| \ |
| \ |
| \ |
| \ |
| } Zobrazovany text |
| / |
| / |
| / |
| / |
| * Prikazova radka |
------------------------------------
DEFINICE VIDEOMODU
==================
Pro urychleni prace jsou nektere povely provadeny s
okamzitym zobrazenim noveho stavu textoveho bufferu. Videomod
plati jen tehdy, je-li znak prvnim v prikazovem radku. Pak neni
treba potvrzovat <esc><esc>, povel se provede automaticky vcetne
zobrazeni modifikovaneho textu. Videomod plati pro nasledujici
prikazy:
B, Z, I, X, Y, V, +(0-9), CTRL D, CTRL I
CTRL K, L, <cr>, <sp>, <bs>, ^S
TEXTOVY BUFFER OKNO (WINDOW)
---------------- - ------------------------
B...| | | |
| Editovany | | Zobrazovany |
| text | | text |
| | | |
| | | $-<cr> |
---------------- | <bs>-$ * $-<sp> |
Y...| | | $-L |
---------------- | |
V...| . | kurzor | |
---------------- --------------------------
X...| |
----------------
| |
| |
Z...---------------- konec $ - nova poloha kurzoru
| | textu
| | * - stavajici poloha
| volne |
| |
| |
PEDIT 3
POPIS PRIKAZU EDITORU
=====================
1/ PRIKAZY PRO RIZENI VIDEOMODU
-------------------------------
1.1 VKLADANI TEXTU
I zobrazi 6 radku predchoziho textu a vymaze
obrazovku od mista, kde bude vkladan novy text.
<novy text> <esc> <esc>
Po ukonceni vkladani se zobrazi novy text doplneny
novym textem v okoli kurzoru. Behem vkladani lze
znakem <del> a <bs> rusit chybne napsane znaky.
CTRL I vlozi 1 znak na misto, na ktere ukazuje ukazatel a
(tab) zobrazi text. Po <cr> automaticky vlozi <lf>. Znaku
na klavesnici ANK 1 odpovida ^<sp>.
%A precte (z vnejsiho zarizeni RI) % radku a ulozi je
za text v textovem bufferu. V pripade prazdneho
bufferu se uklada od zacatku. Muze se kombinovat s
"W", ktery vyklizi buffer.
Pozn. Pred pouzitim PEDITu je vhodne pouzit prikazu
monitoru .I=1, .O=1 a tim nastavit podminky, ze
neni zadny v/v soubor rozpracovan.
Prikaz %A neni prikazem videomodu, ale je zde
uveden, protoze se casto uziva v kombinaci s
prikazy pro vkladani textu.
1.2 PREMISTOVANI KURZORU
je mozne nasledujicimi znaky:
-----
| B | begin - zacatek bufferu
-----
-----
| Y | posuv okna ? videostranky
-----
- - - - - - - - - - - -
| ------ |
| |<cr>| | posuv o radek
| ------ |
|------ ----- ------|
||<bs>| | V | |<sp>|| posun o znak
|------ ----- ------| zobraz okno "V"
| ----- |
| | L | | posuv o radek
| ----- |
- - - - - - - - - - - -
------
|+0-9| posuv o N radku
------
-----
| X | posuv okna
-----
-----
| Z | end - konec textu
-----
PEDIT 4
B nastavi pointer na zacatek textu a zobrazi buffer
Z nastavi pointer za konec textu a zobrazi buffer
F find - vyhleda a zobrazi hledany text:
*F PAVEL $$ vyhleda a zobrazi text PAVEL
Kurzor se umisti za nalezeny text. Prikaz neni prikazem
videomodu (musi se ukoncovat <esc><esc>).
V view - zobrazi text v okoli kurzoru; automaticky se
provadi po ukonceni nekterych povelu (S, F, CTRL D, ...)
X zobrazi dalsi text (videostranku)
Y zobrazi predchozi text (videostranku)
+% presune kurzor o 0 az 9 radku dolu (zde %=0-9 !);
+0 presune kurzor na zacatek radku
1.3 POSUVY UKAZOVATKA (KURZORU)
L posuv o 1 radek dolu <cr>
<cr> posuv o 1 radek nahoru |
<bs>- - <sp>
<bs> posuv o 1 znak doleva |
<sp> posuv o 1 znak doprava L
1.4 RUSENI TEXTU
CTRL K Vymaz radku z klavesnice CONSUL, u ANK 1 se
%K $$ nepouziva videomod. Text se zrusi od ukazatele
az po konec radku.
CTRL D Vymaz znaku pro CONSUL
%D $$ Vymaz znaku pro ANK 1
1.5 ZMENA TEXTU
S substitute - vyhleda puvodni text a po potvrzeni
znakem "Y" zameni text, jinak vyhleda dalsi pro zamenu
*S PAVEL $ PETR $$ vyhleda text "PAVEL" a po
potvrzeni ho zameni za text
"PETR"
Neni prikazem videomodu (musi se ukoncovat <esc><esc>;
casto se pouziva v kombinaci s videomodem
^S substitute znak - zameni znak, na ktery ukazuje kurzor
novym znakem.
^S A ... neni treba potvrzovat, v miste kurz
se objevi "A"
FIND SUBSTITUTE
---------------------- ----------------------
| . . . | | . . . |
| MOV A,B # | | MOV A,B | "N"
| . . . | | . . . |
| MOV A,B | | MOV A,B # | "Y"
| . . . | | . . . |
| | | |
| *FMOV A,B$$ | | *SMOV A,B$MVI A,1 |
---------------------- ----------------------
# nova poloha ukazatele Zamena radku
PEDIT 5
2/ PRIKAZOVY REZIM
------------------
2.1 VKLADANI TEXTU
%A precte % radku ze vstupniho zarizeni RI a ulozi je za
text v bufferu
2.2 VYHLEDANI A NAHRADA TEXTU
%<Ftext$> find - vyhleda zadany text od ukazatele a v
pripade nalezeni hledany text zobrazi. Ukazatel nastavi
za hledany text. % urcuje pocet hledanych textu, ktery
se preskoci
S substitute - zamena textu. Vyhleda puvodni text a
zobrazi okoli vyhledaneho textu. Po potvrzeni znakem
"Y" provede zamenu textu.
Format: S <hledany> $ <novy> $$
2.3 PREMISTENI KURZORU
Plati stejne prikazy jako pro videomod, je-li na prvnim
miste prikazoveho radku pocet opakovani (napr. *15L$$ )
2.4 RUSENI TEXTU
%D zrusi % znaku od ukazovatka (% muze byt kladny i
zaporny )
%K zrusi % radku
2.5 ZAPIS TEXTU NA VNEJSI PAMET
%W write - zapise % radku na vnejsi medium a zrusi radky v
pameti !
%O output - zapise % radku na vnejsi medium a ponecha je v
pameti
E exit - zapise cely text na vnejsi medium a ukonci vyst.
soubor; text ponecha v pameti
2.6 KOPIROVANI TEXTU V OPERACNI PAMETI
%G get - oznaci a vypise % radku, ktere se budou kopirovat
na jine misto textu
U unsave - premisti % radku textu na misto, kde se
nachazi kurzor. Pokud je kurzor za mistem oznacenym
prikazem *G, je mozno opakovat samostatny prikaz *U
vicekrat.
PEDIT 6
3/ ROZSIRENI EDITORU
--------------------
Povely v prikazovem rezimu lze zadavat s udanim poctu
opakovani, ktere muze mit znamenko (+,-), popr. znak "#",
tj. vsechno (max. kladne cislo 65535). U nekterych prikazu
nelze pouzit zaporne znamenko.
@ novy start PEDITu a smazani textu. Pozor na nezadouci
vymaz celeho textu ! Na klavesnici ANK 1 (shift I)
neni ekvivalentni znaku CTRL I (CONSUL), a prave
oznacuje znak "@" - vymaz
%H hex - zobrazi % radku hexadecimalne (pro kontrolu
vlozenych ASCII znaku)
J skok do programu TOOL
M memory - vypise pocet volnych bytu pro text
%O output - vyderuje % radku od pointeru, ale text ponecha
v operacni pameti
%P print - vytiskne % radku od pointeru na tiskarnu
R read from next file - nastavi podminky pro cteni z
noveho souboru, povoli dalsi cteni (*R # *A)
%A append - precte % radku z vnejsi pameti na konec text.
bufferu
X exchange display - zobrazi nasledujici stranku textu
V view - zobrazi stranku textu kolem kurzoru
Y zobrazi predchazejici stranku textu
Q quit - navrat do monitoru
%G get - oznaci % radku v bufferu a vypise je pro kontrolu
Vzdy plati posledni nastaveni pointeru.
U unsave - na misto, kde je kurzor, prekopiruje obsah
bufferu, ktery byl oznacen povelem *G
POZOR ! Od posledniho povelu *G se nesmi provadet
zadne prikazy, ktere meni pocet znaku v bufferu (napr.
I, D, CTRL D, CTRL I, S, ...). Po kazdem prikazu "U" je
treba nastavit G pro dalsi kopirovani. Pokud se
pozaduje vlozeni textu do oblasti bufferu za kurzorem,
pak neni nutne nove nastaveni pomoci "G". Prikaz *U
rusi ostatni povely na temze prikazovem radku.
PEDIT 7
4/ POVELY SHODNE S EDITOREM V1.7 INTEL
--------------------------------------
%T type text - zobrazi % radku textu. "0TT" odpovida
verifikaci radku. Radky se zobrazi cele (nejsou omezeny
oknem).
%L line - posuv o % radku
%K kill - vymazani % radku od kurzoru
E exit - ukonceni editace, ulozeni editovaneho souboru na
vnejsi pamet. POZOR ! Oproti Editoru INTEL EDIT
nekopiruje zbytek programu z I/O zarizeni !
%W write - zapis % radku na vnejsi pamet
N null - zapis 60 blanku na PO
%C character - posuv o % znaku
%D delete - zruseni % znaku; <cr> a <lf> se smaze naraz !
I insert - vlozeni noveho textu; ukoncit dvojim <esc>
(u ANK 1 klavesa oznacena LF !)
F find - nalezeni retezce
S substitute - nalezeni text. retezcu a jejich zamena.
Kazdou zmenu je po "?" treba potvrdit v prikazovem
radku znake "Y"
Poznamky:
- %<command string>$$ - iterace; opakovani prikazu
uvnitr spicatych zavorek. Max. hloubka =1 !
- <del> nebo <bs> - delete; rusi posledni znak v primem
rezimu (videomodu) nebo v prikazovem rezimu
- % - parametr (-65535 az 65535), v prikazu "+" jen 0-9!
- # - nahrazuje max. kladne cislo (vsechno)
Priklad: #A - precte ze vst. zarizeni (mgf)
vsechny radky a pripoji je za
editovany text
CTRL C (CONSUL)
shiftX (ANK 1) prerusi provadeni prikazu (ETX)
5/ ZOBRAZOVANE RIDICI ZNAKY
---------------------------
ESC -resp. klavesa LF u ANK 1 - zobrazuje se jako $
^ -konec radku
\ -konec textu
_ -kurzor na miste mezery nebo tabulatoru
blik. znak -okamzita poloha kurzoru
overflow -zaplneni textoveho bufferu
"X" illegal-nepovoleny znak v prikazovem radku
NO FIND "X"-nenalezeno "X" od kurzoru po konec bufferu
STACK -prekroceni hloubky vnoreni opakovaciho prikazu
BREAK -Objevi-li se behem psani prikaz. radku za kazdym
znakem "*", pak editor signalizuje malo pameti.
PEDIT 8
6/ PRIKLAD
----------
Pomoci editoru zapiseme text:
*@$$ ;vynulovani textoveho bufferu
*I ;primy prikaz - smaze se CRT,
v levem hornim rohu je znak ^.
zapisujeme pozadovany text:
<cr> nebo TITLE 'PRIKLAD'<cr> ;pro assembler
.
.
.
END<cr>
$$
Povelem J$$ predame rizeni TOOLu, kde povelem +A spustime
prekladac a po upresneni MODE = X se provede preklad a volbou
PASS = napr. P zobrazime vypis programu. Po zjisteni
syntaktickych chyb se vratime do TOOLu a po povelu +P muzeme
pokracovat v editaci.
Ulozeni textu na vystupni zarizeni (mgf) provedeme prikazem
*E$$ (prace s kazetovym magnetofonem viz prikazy MIKOSu).
Potom lze pomoci TOOLu program prelozit a ladit.
Poznamka: .G4403<cr> - skok z monitoru do PEDITu s uchovanim
textu napr. po RESET nebo povelu .C v monitoru. Doporucuje se
pak cely text zapsat na vystupni medium.
7/ PRIKLADY JEDNOTLIVYCH PRIKAZU
--------------------------------
*ITEXT$$ vlozeni "TEXT" za ukazatel (blik. znak nebo "_")
*<tab>A vlozeni "A" na ukazatel - primy mod
(ANK 1 - klavesa ^<sp>, CONSUL - CTRL I)
*10A cteni 10 radku z mgf a ulozeni na konec textu
*B ukazatel na zacatek textu
*Z ukazatel za posledni znak textu
*FDATA$$ nalezeni DATA za ukazatelem; po potvrzeni "Y"
konec, jinak hleda dalsi vyskyt
*V zobrazi text v okoli ukazatele
*X nasledujici videostranka
*Y predchazejici videostranka
*+9 kurzor o 9 radku dolu
*+0 kurzor na pocatek radku
*5K$$ zrus 5 radku od kuzoru
*-10K$$ zrus 10 predchazejicich radku
*#K$$ zrus vse za kurzorem
*3D$$ zrus 3 znaky za ukazatelem
*-5D$$ zrus 5 znaku pred ukazatelem
*SMOV$MVI$$ zamen MOV na MVI
*^SX zamen znak, na kterem stoji kurzor, znakem X
*50W$$ zapis 50 radku na vnejsi pamet (mgf), nuluj bufer
*30O$$ zapis 30 radku na vnejsi pamet, text ponechej
PEDIT 9
*E$$ ukonceni editace, zapis na vnejsi pamet
*15G$$ oznac 15 radku od ukazatele (kopirovani viz *U)
*U$$ uloz za ukazatel data oznacena prikazem *G
*@$$ vynuluj buffer (novy start PEDITu)
*10H$$ zobraz 10 radku hexadecimalne
*J$$ navrat do TOOLu; po povelu +A lze prekladat asm.
*M$$ vypise pocet volnych byte pro text
*50P$$ vytiskne 50 radku od pointeru na tiskarne. Pozor
na nastaveni pomoci .A; tiskarna musi byt zapnuta
*B$#P$$ vytiskne cely text na tiskarne
*R$$ nastav podminky pro cteni z vnejsi pameti
*R$#A$$ precti cely text z vnejsi pameti
*Q$$ navrat do monitoru; po prikazu .P lze pokracovat
*10T$$ zobraz 10 radku textu
*0TT$$ verifikace celeho radku s ponechanim polohy kurz.
Basic 1
****************************************************************
* *
* BASIC EX *
* *
****************************************************************
SAPI-1 V4.0 Duben 1985
Tento navod je strucnym popisem jazyka BASIC a neni ucebnici
jazyka.
Interpret jazyka BASIC poskytuje uzivateli efektivni
prostredky pro vytvareni, udrzbu, ladeni a provozovani programu
interaktivnim zpusobem. Ma takove vlastnosti, ze uzivatel
prakticky vystaci se samotnym BASICem. Funkce vytvareni a
editace zdrojovych programu jsou jiz obsazeny v samotnem
interpretu BASIC.
Uzivatel vsak muze vyuzit editor PEDIT pro vytvareni a
zejmena pro rozsahlejsi upravy sveho programu. Rovnez zavadeni a
ukladani programu se provadi prikazy BASICu. BASIC se proto hodi
pro vyuku a pro programatory, kteri potrebuji rychle vyresit
dany problem a nechteji se zdrzovat pracnym programovanim v
assembleru, porizovanim a prekladem zdrojoveho textu. Na druhe
strane lze vyuzit specialnich moznosti BASICu, napr. Jednoducha
prace s retezci, moznost pripojeni uzivatelskych podprogramu v
assembleru, ktere mu umozni vytvaret efektivnejsi programy a
doplnovat vlastnosti BASICu. Krome bezneho provadeni programu
lze v BASICu tez pracovat v terminalovem rezimu, kdy se prikazy
z terminalu (klavesnice) okamzite provadeji a tim lze pouzivat
BASIC jako kalkulatoru.
V programovem rezimu jsou prikazy zapisovany s cisly radku v
rozsahu 1-9999. Prikazy, ktere nemaji uvedeno cislo radku se
okamzite provadeji - dialogovy rezim.
Delka prikazoveho radku je az 132 znaku (vcetne cisla radku,
mezer a tabulatoru). Na jeden radek lze napsat i vice prikazu,
vzajemne oddelenych oddelovacem ":" - dvojtecka.
BASIC-EX umoznuje praci s cisly real - jednoduche delky
(4 byte) s presnosti sesti dekadickych cislic (sedma cislice je
jiz zaokrouhlovana). Cislo muze byt v rozsahu od 1.70141E-38 az
1.70141E38. Cisla se mohou zapisovat i jako celociselna, tj. bez
desetinne tecky.
Cisla jsou ukladana jako "real" - v pohyblive radove carce v
normalizovanem exponencialnim tvaru (exponent, mantisa) ve 2
slovech (4 byte).
Konstanty se mohou zapisovat v primem tvaru, tj. cislice a
desetinna tecka (napr. 28.75) nebo v exponencialnim tvaru XE+NN,
XE-NN, kde X je cislo v primem tvaru
E oznacuje exponencialni tvar a znaci
"krat 10 na"
+,- znamenko exponentu (+ nepovinne)
NN dvoumistna hodnota exponentu (cele
cislo); musi byt uveden vzdy, tedy
i je-li nulovy (00<=NN<=38)
Lze pouzivat indexovanou promennou (pole) az do 8-mi indexu
(osmirozmerne pole). S poctem indexu rychle narusta spotreba
pameti. BASIC umoznuje praci s retezci - znakovymi promennymi a
konstantami. Dale obsahuje standardni a uzivatelske funkce jak
pro praci s cisly, tak i pro retezce.
Soucasti BASICu EX jsou povely pro ovladani interpretu,
zavedeni s uschovou programu, porizovani vypisu programu, ale i
prikaz pro editaci radku, kdy je mozno nastavit ukazatel na
znak, doplnovat znaky vlevo od ukazatele a rusit znaky a prikaz
pro ruseni useku programu.
Basic 2
Pro snazsi odladeni programu je soucasti BASICu jednoduchy
trasovaci program, ktery na displeji vypisuje cisla provadenych
radku.
Pri zapisu radku na obrazovce TV displeje (pripojeneho pres
desku AND 1) se vyuziva dynamicke "okno", ktere zobrazuje cast
okoli kurzoru (40 znaku), a v pripade potreby se automaticky
posunuje po radku (az do nalezeni znaku <cr> - konec radku nebo
pocatku radku) podle smeru pohybu kurzoru (ukazatele).
BASIC-EX vznikl rozsirenim Basicu-MIT (ktery je napr.
implementovan v systemu COS 80 pro SAPI-80) a plne vyuziva
zakladniho programoveho vybaveni systemu SAPI 1, pod kterym je
implementovan. Navic poskytuje uzivateli tyto skupiny prikazu:
- pro praci s vnejsi pameti (kazetovy magnetofon):
FIND, OPEN, CLOSE, GET, PUT
nebo #P, #R (u INPUT, PRINT)
- pro praci s TV displejem, kdy plne
vyuziva vlastnosti desky AND 1
a pripojene klavesnice
WND, CURS, BEEP, CLS, INKEY
- pro praci s programy v assembleru
CALL, PTR, HEX, CODE
- umoznuje zaklady strukturovaneho programovani
IF / THEN / ELSE
ON GOTO / ELSE
ON GOSUB / ELSE
REPEAT / UNTIL
WHILE
! - komentar na radku
- pro ladeni programu - trasovani
TRON, TROFF
- pro editaci programu
EDIT, DEL
Omezeni: Prikazy IF/THEN/ELSE, WHILE nebo REPEAT/UNTIL nelze
"hnizdit" do vice urovni (tj. v prikazu nelze vyvolat
dalsi prikaz IF, WHILE, REPEAT) a musi byt umisteny v
jedinem radku programu.
Interpret jazyka BASIC pro SAPI 1 je k dispozici ve dvou
verzich:
1/ 7 kB - standardni verze BASIC EX
2/ 9 kB - rozsirena o grafiku BASIC EX/G
Muze pracovat pod Monitorem V4.0 s minimalne 16 kB RAM-1,
doporucuje se verze 48 kB pro plne vyuziti vsech moznosti
interpretu jazyka BASIC.
Basic 3
================================================================
1. ZAKLADNI POPIS INTERPRETU BASIC
================================================================
Povely ovladani a sledovani chodu programu
(commands) (nektere nelze uvadet v programu)
Instrukce prikazy - cinnosti, ktere vykonava
(statements) program nebo ktere lze vyvolat primo
Funkce numericke a retezcove
(functions) (vysledkem funkce je vzdy cislo
nebo retezec)
Operatory logicke, aritmeticke, relacni
REZERVOVANA SLOVA:
END FOR NEXT DATA INPUT DIM READ LET GOTO
RUN IF GOSUB RETURN REM STOP OUT ON RESTORE
WAIT POKE PRINT DEF CONT LIST CLEAR LOAD
SAVE NEW TAB TO SPC FN THEN NOT STEP
AND OR SGN INT ABS USR FRE INP POS
SQR RND LOG EXP COS SIN TAN ATN PEEK
VAL ASC STR$ CHR$ LEFT$ RIGHT$ MID$
ROZSIRENI:
CALL INKEY PRT HEX CLS EDIT LLIST BYE CODE
XOR ELSE TRON TROFF DEL UNTIL WHILE REPEAT DO
FIND GET OPEN PUT CLOSE BEEP MODE WND CURS
! #
GRAFIKA:
SCALE PLOT MOVE AXES LABEL FILL GRAPH DOT COPY
FONT
ARITMETICKE OPERATORY:
+, -, *, /, ^, (, )
RELACNI OPERATORY: (pracuji i s retezcovymi promennymi
a konstantami, napr.
10 IF P$="ANO" THEN 100 )
>, <, =, >=, <=, <>
LOGICKE OPERATORY:
NOT, OR, AND, XOR
Vysvetlivky: V dalsim popisu budou pouzity k definovani typu
promennych, vyrazu a cisel radku symboly, ktere
nemaji vztah k jazyku BASIC a slouzi jen ke
zkraceni popisu. Jedna se o symboly: A, S$, L, N
Basic 4
PROMENNE, RETEZCOVE PROMENNE A KONSTANTY
----------------------------------------
Promenna je symbolicke oznaceni mista v pameti pro ulozeni
dat (cisel, znak. retezcu), ktera se v prubehu zpracovani mohou
menit. Promenna je oznacena jmenem a veskere odkazy se provadeji
pres toto jmeno. Jmeno promenne je slozeno z pismen a cislic.
Pocet znaku neni omezen, ale pro rozliseni promennych se berou
pouze dva prvni znaky. Prvnim znakem jmena musi vzdy byt
pismeno. Promenne jsou prikazy RUN a CLEAR nastaveny na hodnotu
0 resp. retezcove promenne na "prazdne". Znak $ za jmenem
oznacuje retezcovou promennou.
Priklad: ALFA, BETA, GAMA ciselne promenne
ALFA1, ALFA2 totozne ciselne promenne
(berou se 2 znaky - AL)
1CIS chyba, nezacina pismenem
CI-S chyba, nepripustny znak
ALFA, ALFA$ spravne, 1.-cis.promenna
2.-retezcova promenna
Retezcove a ciselne promenne mohou mit stejne jmeno a pritom
jde o dve ruzne promenne. (Jsou vytvareny dve samostatne tabulky
promennych - jedna pro ciselne a druha pro retezcove, odliseni
promennych je dano znakem "$" pro retezce).
Konstanty jsou cisla nebo znakove literaly, ktere nemeni
svuj vyznam v prubehu programu.
POLE
----
Pole je usporadana mnozina promennych (prvku pole), ktere
jsou oznaceny spolecnym jmenem (jmeno pole). Pristup k prvkum
pole je pres jmeno a index, ktery je uveden v kulatych zavorkach
"( )", pole v BASICu EX muze byt az osmirozmerne. Pole zacina
indexem 0 a konci indexem, ktery je uveden v deklaraci pole
prikazem DIM. Pozor, v prikazu DIM se uvadi horni hranice pole,
tj. pocet prvku pole je o 1 vetsi (viz prvek 0). Pole muze byt
pouzito i pro retezcove promenne.
PODPROGRAMY
-----------
Podprogram je posloupnost instrukci, ktera se vyvolava z
programu (podprogramu) a po provedeni se vraci do mista vyvolani
podprogramu. Podprogram musi byt ukoncen prikazem RETURN. Na
rozdil od jinych vyssich jazyku (napr. FORTRAN, PASCAL) neni
poprogram v BASICu volan jmenem, ale pouze cislem radku,
oznacujicim zacatek podprogramu. Je tedy mozno volat tyz
podprogram s ruznymi efekty podle vyvolani (skok na ruzna cisla
adku podprogramu). Pozor pri volani podprogramu, aby volany
radek nebyl vnitrnim radkem cyklu (skokem do cyklu, nikoliv pres
vstup cyklu FOR), takovy skok muze vest k nedefinovanym
vysledkum.
Basic 5
Vyvolani podprogramu:
GOSUB xxxx xxxx - cislo radku (vstupni bod)
ON <podminka> GOSUB xxxx,yyyy ELSE zzzz
xxxx, yyyy, zzzz jsou cisla rad-
ku vstupnich bodu podprogramu v
zavislosti na hodnote podminky
(prepinace). Prikaz ELSE je
volitelny a skok se provede v
ostatnich pripadech.
Zvlastnim pripadem jsou podprogramy v assembleru, volane z
BASICu. Assemblerovske programy musi byt ukonceny instrukci RET.
Vyvolani assemblerovskych podprogramu se provadi prikazy:
X = CALL (ADR) volani podprogramu na adrese ADR
Y = USR (ADR) volani podprogramu na adrese ADR
Rozdily mezi volanimi viz popis komunikace s programy v
assembleru.
Pro primy zapis assemblerovskych programu lze pouzit prikaz
CODE <adr>,<hex.data>, ... <hex.data>
Podprogram muze volat dalsi podprogramy:
HLAVNI PROGRAM PODPROGRAM1 PODPROGRAM2
|
|
v
volani GOSUB -------> |
|
v
pokracovani <------- RETURN
|
|
|
v
volani GOSUB -------> |
v
volani GOSUB -------> |
|
v
pokracovani1 <------- RETURN
|
|
v
pokracovani <------- RETURN
|
|
v
konec programu
Basic 6
FUNKCE
------
Funkce je posloupnost prikazu Basicu a po jejich provedeni
se vraci funkcni hodnota zpet. Vysledkem funkce musi byt ciselna
promenna.
Funkce se definuji prikazem
DEF FN * (P) kde * je jedno z pismen A-Z, oznacujici
uzivatelskou funkci a P je formalni
parametr funkce. Za definici nasleduje
rozvoj funkce
Priklad: DEF FN A (X) = SQR (X^2+1)
Uzivatelske funkce mohou byt definovany pouze pro ciselne
promenne.
Funkce se vola uvedenim jmena funkce (s parametrem volani)
na prave strane prirazovaciho prikazu, vsude tam, kde lze pouzit
promennou.
Krome uzivatelskych funkci je v BASICu rada standardnich
funkci, jak pro praci s ciselnymi promennymi (napr. SIN, COS,
EXP), tak i pro praci s retezcovymi promennymi (napr. VAL, STR,
CHAR) - viz seznam funkci.
LOGICKE OPERACE
---------------
Logicke operace NOT, OR, AND, XOR se provadeji s promennymi,
jejichz delka jsou 2 byte (slovo). Ciselne promenne, ktere jsou
ulozeny v pohyblive radove carce se nejdrive prevedou na
celociselne (do 2 byte - 16 bitu), pokud to cislo dovoli (jinak
je hlasena chyba) a pak se provede logicka operace.
TYPY KONSTANT, PROMENNYCH A VYRAZU
----------------------------------
A ... ciselna konstanta, ciselna promenna nebo aritm. vyraz
konstanta 0 12.3 12.5E-03
promenna B MO N1 DX ALFA
index. promenna BETA(1) GM(I,J)
aritm. vyraz A+R(J)*(C-R)+20-(B^(A/C))
Pouzitelny ciselny rozsah:
-1.70141E+38 az -1E-38, 0, 1E-38 az 1.70141E+38
Dovoleny rozsah indexu:
0 az 32767 (omezeno velikosti pameti)
Spotreba pameti:
4 byte / polozku
Vystupni format:
cislo <0.1 nebo >999999 se zobrazuje v exponencialnim
tvaru, pred a za cislem se tiskne mezera.
Basic 7
S ... retezec (retezcova konstanta), retezcova promenna nebo
retezcovy vyraz
retezec "TEXT" "VAHA" "ALFA 3"
retez. promenna A$ K1$ MN$(3) B$(I,J) OTP$
retez. vyraz A$+K1$ JMENO$+OTP$ A$+"TEXT"
Delku retezcovych promennych neni nutno dimenzovat,
nastavuje se dynamicky, je pouze nutno definovat celkovy
pametovy prostor pro retezcove promenne povelem CLEAR X
(X=pocet byte). Neni mozno spojovat retezce, jejichz
celkova delka by byla vetsi nez pocet znaku
rezervovanych prikazem CLEAR.
L ... logicka konstanta, log. promenna, relace nebo log. Vyraz
log. konstanta 0 (false), -1 (true)
log. promenna promenne nabyvajici hodnot
0 a -1 (NOT 0)
relace A=B DAT(I)>C ALFA<>BETA A(I,J)>10
log. vyraz A=B OR C=D BETA AND A(I)=C
M OR N AND O HEX(80) XOR ALFA
Vysledek relace nebo log. vyrazu lze ulozit do promene
B = ( X > Y )
N ... cislo radku
cele cislo v rozsahu 0 az 9999
P(N)...pole (indexovana promenna)
Pokud je sirka pole vetsi nez 10, musi byt deklarovane
instrukci DIM
Napr. 100 DIM A(5),B(2,4,4),A(2,2)
Pole mohou mit az 8 rozmeru, s poctem rozmeru vsak velmi
rychle roste spotreba pameti.
Uzivame-li pole s mensim poctem prvku nez 11, dosahneme
dimenzovanim pole uspory pameti (interpret jinak
automaticky dimenzuje napr. DIM X(10),Y(10,10), tj.
44 byte pro jeden rozmer, ale jiz 484 pro dva rozmery !)
Basic 8
================================================================
2. INSTRUKCE JAZYKA
================================================================
2.1 DEFINICNI A PRIRAZOVACI PRIKAZY
------------------------------------
CLEAR N Rezervovani prostoru pro retezcove promenne (a
vstupni prikaz INPUT). N je cislo vetsi nez 15,
je-li mensi, hlasi se chyba. Horni rozsah je omezen
volnou kapacitou pameti. Neni-li prikaz CLEAR
uveden, je nastavena implicitni hodnota 256 po RUN.
DIM Definovani sirky pole (poctu prvku pole - 1). Prvky
jsou indexovany od 0 do horni hranice definovane v
prikazu DIM
Priklad: DIM A(15),B(20,M),A$(19)
Pole A - jednorozmerne ciselne pole pro 16 prvku
Pole B - dvourozmerne pole (prvni dimenze pro 21
prvku, druha dynamicka dle M)
Pole A$- jednorozmerne pole pro retezcove
promenne (jine nez pole A pro cisla)
DEF FNA(P) Definice funkce jedne promenne. Muze byt definovano
. . . az 26 funkci. Parametr se nemusi ve vlastni funkci
DEF FNZ(P) vyskytovat, je vsak nutne jej alespon formalne v
nazvu funkce uvest.
Priklad: Definice uzivatel. funkci FNA, FNB, FNR
DEF FNA(P) = P*2+P+10
DEF FNB(N) = FNA(N)+N*2
(PI=3.1415926)
DEF FNR(DEG) = PI/180*DEG
FNA(P) Volani drive definovane funkce. Funkci lze pouzit
... vsude, kde se pouziva promenna.
FNZ(P)
Priklad: RAD = FNR(ALFA)
REM Umisteni komentare do zdrojoveho programu. Prikaz
REM uvadi komentar a vsechny znaky za prikazem az do
konce radku jsou interpretovany jako poznamka (jsou
ulozeny do zdrojoveho tvaru programu, ale nemaji
zadny vykonny charakter). Pouzivaji se pro zvyseni
prehlednosti programu. V ramci uspory mista pameti
se doporucuje pouzivat kratke komentare, popr. V
pripade nutnosti je z (odladenych) programu
odstranit.
Priklad: REM TOTO JE POZNAMKA <cr>
REM * * * * * <cr>
V prvnim pripade je zapsan text "TOTO JE
POZNAMKA" a v druhem se zapisi hvezdicky.
Poznamky REM se vypisi v LIST, LLIST, SAVE.
! Uvodni symbol komentare uvnitr radku. Pred "!" neni
nutne psat ":" a zbytek radku je automaticky
povazovan za poznamku.
Basic 9
LET P=A vyhodnoti vyraz "A" (na prave strane) a vysledek
priradi promenne "P" (na leve strane prirazovaciho
prikazu). Klicove slovo 'LET' neni povinne !!
|
v
--------- graficke znazorneni
| P = A | v blokovych schematech
---------
|
v
Znak "=" v prirazovacich prikazech nema vyznam
"rovna se", ale "prirad vyraz na prave strane
promenne na strane leve" (proto se v nekterych
vyssich programovacich jazycich pouzivaji rozdilne
symboly pro "prirad" napr. ALGOL, PASCAL znaky ":="
a "rovna se" tj. znak "=").
Priklad: LET A = B*C+D/E
LET B$ = A$+B$
A = B*C+D/E
Priklady LET A=B*C+D/E a A=B*C+D/E jsou ve
vysledku stejne.
2.2 PRIKAZY PRO VETVENI PROGAMU
--------------------------------
2.2.1 NEPODMINENY SKOK
Nepodmineny skok prerusuje linearne vzestupne
provadeni programu a pokracuje na jinem miste
programu podle udaneho cisla radku prikazu.
GOTO N Skok do jine casti programu. Cislo "N" je cislo
prikazoveho radku, promenna jako cislo radku neni
povolena !
Priklad: GOTO 1000 skok na radek s cislem 1000
2.2.2 PODMINENY SKOK
Podmineny skok umoznuje vetveni programu v
zavislosti na vyhodnocene podmince. Je-li podminka
splnena, provadi se prikaz (GOTO, THEN), neni-li
splnena, pak se provadi prikazy za ELSE nebo se
provede dalsi radek (neni-li ELSE pouzito).
IF L GOTO N podmineny skok na cislo radku N
IF L THEN N totez
IF L THEN prikaz1 : prikaz2 : ...
podminene provedeni celeho zbytku radku, je-li
splnena podminka L
Priklad: IF X>Y THEN A=4*B
IF A=B THEN PRINT D:A=A+3:GOTO 200
IF/THEN/ELSE Podminene vetveni pro pripad splneni (THEN) a
nesplneni (ELSE) podminky.
Basic 10
Priklad: IF A=B THEN A=1:PRINT"OK" ELSE A=0
Je-li podminka splnena, nastavi se promenna A
na 1 a vytiskne se text OK. V pripade ze A#B
pak A=0.
2.2.3 PREPINACE
Vetveni se provede podle hodnoty vyrazu za
klicovym slovem ON. Je-li hodnota rovna n, provede
se skok na n-te cislo radku, ktere je uvedeno v
seznamu. Pri zaporne hodnote se hlasi chyba.
ON A GOTO seznam Skok na cislo radku dle seznamu
ON A GOSUB seznam Volani podprogramu dle seznamu
U prepinacu lze pouzit klicove slovo ELSE, skok pro
ostatni pripady (tj. je-li cislo mimo rozsah ? pocet
prvku seznamu).
Priklady: ON X+1 GOTO 1010,1050,1200
ON Y GOSUB 2000, 2010,2020
ON Z GOSUB 100,200,300 ELSE 500
2.2.4 PRIKAZY CYKLU
Prikazy FOR - NEXT
Skupina prikazu uzavrena mezi pocatek cyklu (FOR)
a konec cyklu (NEXT) se opakuje tak dlouho, dokud
neni dosazena horni podminka. V kazdem behu cyklu se
pocatecni podminka zvysuje o krok.
FOR P=pocatek TO horni implicitni krok = 1
FOR P=pocatek TO horni STEP krok
P ridici promenna cyklu
pocatek vych. hodnota ridici promenne
horni koncova hodnota ridici promenne,
pri jejim dosazeni se cykl ukonci
krok prirustek ridici promenne
v kazdem pruchodu cyklem
Priklady: FOR I=1 TO 20
FOR ALFA=1 TO MAX STEP 2
FOR B=10 TO -2 STEP -1
FOR A=2*X TO M(I)
Ridici promenna je dostupna i mimo cykl a nabude
hodnoty po ukonceni cyklu HORNI + 1 (resp. HORNI +
KROK, je-li uveden STEP).
Basic 11
Ukonceni cyklu - NEXT
NEXT P konec smycky (nazev promenne neni povinny) pro
jednoduchy cykl
NEXTseznam konec dvou a vice smycek
Je-li spolecne uvedeno vice cyklu, tj. u klicoveho
slova NEXT je uveden seznam, pak promenne v seznamu
musi byt uvedeny v opacnem poradi (tj. ridici
promenna nejvnitrnejsiho cyklu musi byt uvedena jako
prvni a ridici promenna vnejsiho cyklu jako
posledni).
Priklad: FOR I=1 TO 10
FOR J=1 TO 5
FOR K=2 TO 20 STEP 2
telo cyklu
NEXT K,J,I
Cykl FOR/NEXT dovoluje "hnizdit" uvnitr smycky dalsi
cykly, ktere se nesmi prekryvat, tj. vnitrni cykl
nesmi prechazet za vnejsi.
Priklad: FOR I=1 TO M:FOR J=1 TO N
telo cyklu ...DOBRE
NEXT J
zbytek vnejsiho cyklu
NEXT I
FOR I=1 TO M:FOR J=1 TO N
telo cyklu ...CHYBNE
NEXT I
zbytek vnitrniho cyklu
NEXT J
Prikaz WHILE - prikaz cyklu
Dokud je splnena podminka za WHILE, pak provadej
prikazy na radku. Neni-li, skoc na dalsi radek.
Format: WHILE podminka DO prikazy
Priklad: WHILE I<10 DO PRINT "I":I=I+1
Prikaz WHILE se provadi pokud je splnena
podminka a lze jej uzit jen v rozsahu 1 radku.
Prikaz REPEAT - prikaz cyklu
Opakuj prikazy na radku dokud neni splnena
podminka uvedena klicovym slovem UNTIL. Prikaz UNTIL
je soucasti posledniho prikazu a neoddeluje se ":".
Prikaz plati v rozsahu jednoho radku, po splneni
podminky se pokracuje na dalsim radku.
Format: REPEAT prikazy UNTIL podminka
Basic 12
Priklad: REPEAT PRINT I:I=I+3 UNTIL I=30
Prikaz se provadi pokud neni splnena podminka a
plati v rozsahu 1 radku. Misto REPEAT muze byt
pouzito i DO (napr. DO A=A+1 UNTIL A>5).
2.3 PODPROGRAMY A ZASTAVENI PROGRAMU
-------------------------------------
GOSUB N Vyvolani podprogramu. Podprogram se vola cislem
radku (nikoli jmenem podprogramu jako napr. Ve
FORTRANu, PASCALu). Podprogram musi byt ukoncen
navratovym prikazovym slovem RETURN.
RETURN Navrat z podprogramu.
END Ukonceni programu, zobrazi se "OK" (nepovinne; pokud
za hlavnim progamem nasleduji podprogramy, musi se
hlavni program vzdy ukoncit prikazem END).
STOP Preruseni chodu programu, ohlasi se "BREAK IN N",
kde N je cislo radku prikazu STOP a lze pokracovat
prikazem CONT (od dalsiho radku programu). Pouziva
se prevazne pro ladeni programu.
2.4 OPERACE VSTUPU A VYSTUPU
-----------------------------
2.4.1 CTENI KONSTANT
Prikazy DATA, READ, RESTORE slouzi k prirazeni
konstant promennym. Prikazem DATA se deklaruji
konstanty pro prikaz READ, ktery provadi prirazeni.
Prikaz RESTORE umoznuje opetovne pouziti konstant
pro dalsi prirazeni. Prikaz READ posunuje ukazatel
konstant na dalsi konstantu. Na zacatku je ukazatel
nastaven na prvni konstantu, po n-tem cteni READ
ukazuje na polozku n+1, RESTORE umozni vratit (resp.
nastavit) ukazatel.
READseznam prideli hodnoty ze seznamu DATA seznamu promennych.
Nahrazuje radu prirazovacich prikazu typu LET.
Priklady: READ A(1),A(2),A(3),X,B$
READ ALFA,BETA
READ Z$
DATA seznam konstant pro prikaz READ (retez. Konstanty
nemusi byt v uvozovkach)
Priklady: DATA 10,20,30,3.15
DATA 3.5EE03,7.1E-03
DATA "JMENO",12.5,3.2,1000
RESTORE navrat ukazatele v seznamu DATA na pocatek
RESTORE N navrat ukazatele v seznamu DATA na radek N
Basic 13
Priklad: 10 DATA 10,10,5
20 DATA 100,200,300
30 DATA "EMIL","PETR","MILAN"
Prikaz RESTORE (bez cisla) provede nastaveni pro
READ na prvni seznam dat, tj. na cislo radku 10.
Prikaz RESTORE 30 nastavi seznam pro READ na
cteni retezcu na radku 30.
2.4.2 CTENI VSTUPNICH PROMENNYCH Z I/O ZARIZENI
2.4.2.1 Cteni z klavesnice displeje (console)
Pro cteni dat zadavanych z klavesnice displeje
slouzi prikazy INPUT a INKEY. Prikaz INPUT
umoznuje i vypis textu na obrazovce displeje
(kombinace prikazu PRINT a vstupu dat), ktery
umozni v programu vypisovat texty v pozadavcich na
data, zjednodusuje programovani. Pozadavek na data
prikazem INPUT je na obrazovce displeje indikovan
znakem "?"-otaznik. V pripade, ze v prikazu INPUT
je uveden seznam promennych a na vstupu bylo
zadano mene vstupnich dat, na obrazovce se zobrazi
dva otazniky, ktere signalizuji, ze prikaz INPUT
pozaduje dalsi data. V pripade, ze bylo zadano
vice dat nez je v seznamu promennych, pak se
nadbytecna data ignoruji (ztrati se). Data na
vstupu se oddeluji od sebe oddelovacem "," (carka)
Nulova polozka se musi zadavat cislici 0, nestaci
pouhe odmacknuti tlacitka CR, ktere vyvola
zastaveni provadeni programu. V programu lze
pokracovat prikazem CONT.
2.4.2.2 Cteni dat ze souboru - READER
Pri cteni dat ze souborove orientovaneho
zarizeni (napr. kazetovy magnetofon) je nutno
dodrzet postup pro praci se soubory. Nejprve je
nutno soubor otevrit pro cteni dat, tj. nalezt
soubor na pasce, pomoci os MIKOS. Proto je v
BASICu-EX zaveden prikaz FIND.
Po otevreni souboru je mozno pouzivat prikazy
pro cteni dat INPUT #R nebo GET. Prikaz
INPUT #R se pouziva pro data zapsana prikazem
PRINT #P, prikaz GET pro data zapsana prikazem
PUT. Rozdil mezi prikazy INPUT a GET je v tom, ze
GET cte po slabikach (byte), prikaz INPUT precte
znakova data do oddelovace a je-li to cislo,
provede konverzi do vnitrniho tvaru.
Poznamka: Osetreni konce souboru
Posledni znak souboru je znak SUB
(CTRL Z), tj. 1AH nebo 26dek.
Priklad: A=GET:IF A=26 THEN 100 ! KONEC
Basic 14
V textu jsou dale pouzity zkratky pro oznacovani
zarizeni podle konvenci monitoru (viz popis
monitoru a obsluznych rutin).
CI console input CO console output
RI reader input PO punch output
LO list output
Pro rozliseni zarizeni v prikazech INPUT a PRINT
se pouziva oznaceni #R pro READER, #P pro PUNCH a
#L pro LIST. Vstup resp. vystup se provadi na
zarizeni prirazenem v monitoru prikazem ASSIGN
(.A).
INPUTseznam hodnoty nebo retezce z konzoly se priradi
promennym
INPUT "text" seznam totez jako predchozi, navic tisk textu
INPUT #R seznam cteni z RI misto z CI (tj. z pasky)
Priklady: INPUT A
INPUT ALFA,BETA,GAMA
INPUT Z$,K(I),X
INPUT "NAPIS JMENO",JM$
INPUT #R A$,B$,X
INKEY preda hodnotu ASCII kodu prave stisknute klavesy
behem provadeni programu; neni-li stisknuta zadna
klavesa, potom je hodnota INKEY=0
Priklad: 50 IF INKEY>0 THEN 100
80 IF INKEY=0 THEN 50
100 ...
ceka na stisknuti klavesy a pak pokracuje v
programu.
FIND nastavi priznak pro otevreni noveho souboru.
Operacni system automaticky pri cteni znaku (napr.
z kazety) provede vyhledani souboru a precte
1.byte. FIND lze pouzit i k ukonceni cteni ze
vstupniho souboru.
GET cte byte ze vstupniho media RI (snimac pasky nebo
kazeta podle hodnoty IOBYTE).
10 FIND ! otevri soubor
20 A=GET ! 1. cteni - vyhleda soubor a cte byte
30 A1=GET ! 2.byte
40 IF A=0 THEN 90 ELSE INPUT #R B$
...
90 FIND ! jiny soubor nebo uzavreni
Basic 15
2.4.3 ZAPIS DAT - VYSTUP NA ZARIZENI
2.4.3.1 Vystup na displej
Pro vystup na displej se pouziva prikaz PRINT,
nebo lze pouzit zkraceneho zapisu pro PRINT, tj.
znak "?" -otaznik, ktery interpret BASICu prevede
na klicove slovo PRINT. Pro vystup na obrazovku
displeje je mozno vyuzit i specielnich funkci pro
rizeni displeje (napr. WND, CLS, MODE, CURS).
2.4.3.2 Vystup na tiskarnu
Pro tiskovy vystup (na zarizeni LIST) se pouziva
prikazu PRINT #L. Pro formatovani tisku lze pouzit
specialni funkce TAB a SPC (tyto lze pouzit i pro
vystup na displej).
2.4.3.3 Souborove orientovany vystup
Je-li zarizeni PUNCH souborove orientovano
(napr. kazetovy magnetofon), musi se dodrzet
posloupnost pro vystup do souboru. Nejdrive se
musi soubor otevrit pro vystup (musi se vyhledat
konec souboru, tj. misto pro ulozeni noveho
souboru) pod rizenim MIKOSu.
Po otevreni souboru je mozno do souboru
zapisovat data prikazy PRINT #P a PUT. Data se
zapisuji do bufferu a po naplneni bufferu nebo pri
uzavreni souboru sa prepisi na zarizeni.
Po ukonceni zapisu dat se vzdy musi soubor
ukoncit prikazem CLOSE, jinak muze dojit ke ztrate
dat.
V jednom okamziku muze byt otevren pouze jeden
soubor pro vystup.
System MIKOS ma dva nezavisle buffery, jeden pro
vstupni soubor a druhy pro vystupni. Pred
vyvolanim BASICu je nutne provest prikazy monitoru
I=1, O=1 (pokud budeme pracovat se soubory na
kazetovem magnetofonu) nebo prikaz C monitoru.
OPEN nastav priznak pro operacni system pro otevreni
souboru pro zapis. Na kazete muze byt otevren
soubor pro cteni nebo pro zapis.
PUT A zapis byte na periferii typu PO; A=0 az 255, zapis
hodnoty 26 zpusobi uzavreni souboru (PUT HEX(1A)).
Pri zapisu 1. byte je treba otevrit soubor
CLOSE uzavri vystupi soubor
10 OPEN ! otevri soubor pro zapis
11 PUT A ! zapis 1. byte
12 PUT B
13 PRINT #P "DALSI DATA",R,X,Y
100 CLOSE ! uzavreni souboru
110 PRINT "VSTUP DAT"
200 FIND ! otevreni pro cteni
Basic 16
Vystup promennych a konstant
Je-li pouzit prikaz PRINT (?), pak se vystup
promennych provede na terminal nebo na prirazene
zarizeni.
#P ... vystup na mag. pasku
#L ... vystup na tiskarnu
Poznamka: pred znakem "#" musi byt vzdy mezera !
PRINTseznam tisknou se retezcove konstanty, retezcove
promenne, numericke konstanty, numericke promenne,
funkce a vyrazy dle seznamu.
Priklady: PRINT "KOEFICIENT",K,"SILA",S
PRINT A$,ALFA,A$(I)
PRINT NOT 17
PRINT #P seznam vystup na logicky derovac (viz IOBYTE)
PRINT #L seznam vystup na logickou tiskarnu
Poznamky:
- Hodnoty <0.1 a >999999 se zobrazuji ve
vedecke notaci 1000000 ... 1E+06
0.01 ... 1E-02
- Misto prikazu PRINT lze uzit jen zkracene
"?"; listuje se vsak spravne PRINT. Uvnitr
seznamu za prikazem PRINT urcuje typ
oddelovace upravu textoveho radku. Oddeleni
carkou zpusobi posun na nejblizsi tabelacni
pozici. Oddeleni strednikem nevyvola zadne
doplnujici funkce. Oddelovac je mozno pouzit
i na zacatku nebo na konci radku
(PRINT ,,"TEXT";"JMENO",JM$,,
- Pro zapis dat na vnejsi periferii (a pozdeji
cteny prikazem INPUT #R) je nutne oddelit
jednotlive polozky znakem ","-carka nebo
ukoncenim radky -CR.
Priklad: PRINT #P I;",";J;",";K
nebo
PRINT #P I:PRINT #P J:PRINT #P K
2.5 FUNKCE PRO PRIKAZ 'PRINT'
-------------------------------
Pro prikaz vystupu PRINT jsou zavedeny formatovaci
funkce TAB - tabulace a SPC - vymezerovani. Tyto
funkce mohou byt umisteny pouze uvnitr seznamu v
prikazu PRINT. Krome techto funkci maji formatovaci
ucinek i oddelovace "," a ";". Znak carka nastavuje
pozici tisku na dalsi tabelacni sloupec, znak
strednik umistuje vystup dalsich znaku bezprostredne
za predchazejici znaky. Pri vystupu cisel je nutne
uvazovat s mezerou pred a za cislem.
Specialni funkce POS umoznuje programu zjistit
nastaveni pozice v radku pro vystup znaku (tato
funkce muze byt pouzita jak samostatne tak i v
prikazu PRINT).
Basic 17
TAB (A) Dalsi tisk zacne od pozice A. Za TAB(A) neni nutno
uvadet oddelovace "," ci ";".
Priklad: PRINT "VYSLEDEK";V;TAB(30)"HLADINA";B
Pokud je jiz tiskova pozice vetsi nez je uvedena v
TAB, nema zadny ucinek
SPC (A) vytiskne A mezer
Priklad: PRINT SPC(10);"POCET=";P1;SPC(2);"KS"
POS pocet jiz vystoupenych znaku od zacatku radku. (POS
ukazuje pozici tiskove hlavy, tj. misto, kam se bude
tisknout nasledujici znak).
Priklad: PRINT "12345",POS
za funkci POS ze zobrazi "6"
2.6 SPECIALNI FUNKCE PRO DISPLEJ
---------------------------------
BASIC EX je rozsiren o specialni funkce pro
displej s deskou AND 1, ktere plne vyuzivaji
moznosti teto desky. Jsou to funkce pro ovladani
kurzoru, nulovani obrazovky, rezervaci radku
obrazovky a pro ovladani typu vystupnich znaku.
CURS X,Y nastav kurzor na hodnotu X,Y (x...0az39, Y...0az23)
MODE A nastav typ zobrazeni na displej
HEX(0) normalni znaky dek. 0
HEX(C0) siroke znaky dek. 192
HEX(80) podtrzene znaky dek. 128
HEX(40) blikajici znaky dek. 64
HEX(.1) soucasne tiskarna napr. 193
WND K (window) rezervuje K radku (0 az 15) od horniho
okraje obrazovky, tyto radky nebudou prepisovany,
ale po nastaveni CURS X,Y je mozno psat do vyhrazene
casti obrazovky. Nastaveni "okna" se provede
prikazem WND cislo, zruseni pak WND 0.
CLS (clear screen) - vymaz obrazovky mimo rezervovanou
oblast
PTR (X) (pointer) - dosad adresu promenne X
Priklad: DUMMY=CALL(DADR,PTR(X))
tiskne hex adresu promenne
(vyuziva sluzby monitoru DADR=130H)
Retezcove promennejsou ulozeny v pameti neprimo
pomoci ukazatele ... LENGTH, OFF, LOWADR, HIGHADR
Pozn.: Funkce PTR(X) patri svym obsahem do kapitoly
2.8.
Basic 18
2.7 PRIME VSTUPNI / VYSTUPNI OPERACE
-------------------------------------
Prikazy pro prime v/v opeace umoznuji cteni a
zapis byte v plnem rozsahu pameti a cist a psat na
porty. Adresa pameti je v rozsahu 0 az 64k, adresa
pro port 0 az 255. Lze zadavat i hex adresu s
vyuzitim funkce HEX (napr. POKE HEX(C000),10).
PEEK (A) cteni byte z pameti z adresy A (funkce)
POKE A1,A2 zapis byte A2 na adresu A1
INP (A) cteni portu A (funkce)
OUT A1,A2 zapis byte A2 do portu A1
WAIT A1,A2,A3 cekani na vyskyt masky A2 na portu A1; je-li
zadano A3, potom se ceka na shodu. Potom
provedeni dalsi instrukce.
Priklady: WAIT A1,A2
odpovida W0: IN A1 ;cti port
ANI A2 ;maska
CPI A2 ;shoda ?
JNZ W0
WAIT A1,A2,A3
odpovida W1: IN A1
ANI A2
CPI A3
JNZ W1
Poznamka: Bitove operace s daty z portu lze rovnez
provadet pomoci operatoru OR, AND, XOR;
napr. INP(A) AND HEX(40)
2.8 FUNKCE PRO RIZENI KOMUNIKACE S PROGRAMEM V ASSEMBLERU
----------------------------------------------------------
Pouziti assemblerovskych podprogramu rozsiruje
aplikacni moznosti programu v BASICu. Uzivatel si
muze vytvorit podprogramy v Assembleru pro specialni
pozadavky a tyto programy pripojit k programum v
BASICu.
HEX (hex. hodnota) dosadi hex. hodnotu
X=CALL (adr,HL) volani podprogramu na adrese adr, je
mozno nastavit byte do <C> nebo <A>
(plati L=C=A);obsah <HL> po navratu se
ulozi do promenne X - funkce)
Y=USR (adr,C) volani podprogramu na adrese adr, je mozno
nastavit byte do <C> nebo <A> (plati L=C=A)
a po navratu ulozi <A> do Y - funkce.
U funkci USR a CALL je mozno menit registry B,DE,HL.
Basic 19
Priklady: DUMMY=USR(HEX(109),7) ... BELLna CO
X=CALL(1234,HEX(1DE0))... 16 bit prenos
CODE adr;hex.data, ... , hex.data
Prikaz CODE ulozi od zadane adresy data do
pameti. Takto je mozno ulozit do pameti RAM
tabulku nebo podprogram.
Priklady: CODE HEX(4300);3E,20,21,00,00,c9
odpovida 4300: MVI A,' '
LXI H,0
RET ;povinne !
Pricti 100 k 16-bit promenne
CODE 17152;11,64,00,19,c9
PRINT CALL(17152,1000) ! tisk 1100
Zobraz obsah 16-bitove promenne na adr. X
CODE 17152;7E,66,6F,C9
PRINT CALL(17152,X)
Oblast pameti 4300H az 43FFH je rezervovana pro
uzivatelske programy (dekadicky 17152 az 17407).
2.9 STANDARDNI FUNKCE
----------------------
Standardni funkce jsou soucasti interpretu jazyka
BASIC a znacne ulehcuji programovani matematickych
operaci, protoze neni nutne vytvaret programy pro
reseni zakladnich aritmetickych funkci, jako napr.
pro sinus, odmocnonu, logaritmus atd. Rovnez jsou
implementovany i funkce pro praci se znakovymi
retezci.
SGN (A) signum (-1 pro A<0, 0 pro A=0, 1 pro A>0)
INT (A) celociselna cast; ( FRAC=A-INT(A) )
ABS (A) absolutni hodnota
SQR (A) druha odmocnina, A>=0
LOG (A) prirozeny logaritmus, A>0
EXP (A) e umocneno na A
SIN (A) sinus; uhly v radianech (deg=PI/180)
COS (A) cosinus
TAN (A) tangens
ATN (A) arcus tangens; 0 < A < PI/2
FRE (O) delka volne pameti v bytech
FRE (A$) delka volne pameti pro retezce (po RUN 256 byte,
zmena pomoci CLEAR
RND (A) random - nahodne cislo v rozsaho 0 az 1
Je-li A>0, pak se generuje ruzna nahodila
posloupnost.
Je-li A<0, pak se generuje vzdy stejna posloupnost
(vhodne pro ladeni - vzdy steje vysledky nah. cisel)
Basic 20
2.10 RETEZCOVE FUNKCE
----------------------
VAL (S$) celociselna hodnota retezce, prvni nenumericky znak
ukonci prevod retezce do vnitrniho zobrazeni
Priklad: 10 S1$="123"
20 I=VAL (S1$) ! hodnota I=123
STR$ (A) prevod ciselne promenne na znakovy retezec
Priklad: 10 J=4*5
20 S2$=STR$(J) ! S2$ obsahuje "20"
CHR$ (A) prevod ciselne promenne na ASCII znak (modulo 128)
Priklad: 10 I=65
20 PRINT CHR$ (I) ! vytiskne "A"
ASC (S$) prevod prvniho znaku retezce na hodnotu kodu ASCII
Priklad: 10 S3$="BASIC"
20 J=ASC (S3$) ! J=66
LEN (S$) delka retezce (pocet znaku)
Priklad: 10 S3$="BASIC"
20 I=LEN (S3$) ! I=5
LEFT$ (S$,A) extrahuje A znaku retezce zleva
Priklad: S4$=LEFT$ (S3$,3) ! S4$="BAS"
RIGHT$ (S$,A) extrahuje A znaku retezce zprava
MID$ (S$,A) pocinaje A-tym znakem do konce retezce
MID$ (S$,A1,A2) pocinaje znakem A1, pocet znaku A2
Poznamka: Funkce, jejichz nazev konci $, vytvari novy
retezec. K tomu je treba rezervovat prislusny
pametovy prostor prikazem CLEAR na pocatku
programu. Parametr A prikazu udava pocet bytu
rezervovanych pro retezce. Bez tohoto prikazu je
celkova kapacita 256 bytu po RUN.
Basic 21
2.11 GRAFICKE PRIKAZY (jen pro verzi EX/G)
----------------------
Pouze pro informaci o pripravovane verzi. Prikazy
mohou byt prizpusobeny desce DGD 1 po ukonceni
vyvoje desky.
SCALE Xmin, Xmax, Ymin, Ymax ... nastavi meritko pro obraz
X (0 az 320 bodu), Y (0 az 280 bodu)
PLOT X1,Y1 [,PEN1][;X2,Y2,PEN2] ... [Xn,Yn,PENn] ... spoji
uvedene souradnice carou, je mozno zadat typ cary
MOVE X,Y [,PEN] ... nastaveni polohy kurzoru a typu cary
PEN = 0 ... rusi caru
= 255 ... plna cara
= HEX(55) ... teckovana
= HEX(5F) ... cerchovana
AXES X,Y [,PEN] ... vykresli osy s prusecikem X,Y
LABEL MX,MY;"TEXT" ... v danem zvetseni MX a MY zobrazi text
jako PRINT. Zobrazuje znaky od " " po "Z" a ignoruje
CR a LF. Vzdy je nastavena hodnota PEN = 255.
FILL MX,MY,PEN ... vyplni plochu o velikosti MX,MY od kurz.
GRAPH N ... rizeni grafickeho zobrazeni
N = 0 pouze alfanumericke zobrazeni
= 255 vycisti graf. obrazovku, nastavi
PEN=255 a prepne na graficke
zobrazeni
COPY #N X,Y ... zkopiruje na danou priferii okno (39x23);
X a Y jsou souradnice leveho dolniho rohu
N = C console
= L list
= P puncher
DOT ... dosadi hodnotu bodu (0 nebo -1), adresa je
nastavena operaci (MOVE, PLOT, LABEL ...)
FONT adr,hex.data ... uzivatelem definovany typ pisma. Adresa
urcuje oblast dat v pameti RAM (pro 1 pismeno
5 byte).
Basic 22
================================================================
3. POVELY
================================================================
RUN Spusteni vlozeneho programu, muze mit parametr -
cislo radku. Pred exekuci programu se automaticky
nuluji vsechny promenne.
NEW Vymazani pameti programu a vsech promennych
(priprava pro zadavani noveho programu).
CLEAR Smazani tabulek promennych. Eventualni parametr
udava rezervaci pameti pro retezce, porizene
retezcovymi funkcemi nebo prikazem INPUT S$.
CONT Pokracovani programu po STOP nebo CTRL C (ETX), nebo
CR v prikazu INPUT
LIST Listovani programu, event. od cisla radku. Lze
prerusit CTRL C (ETX, shift X u ANK 1) nebo pozasta-
vit CTRL S (shift S u ANK 1). Pokracovat lze stiskem
libovolne klavesy.
Priklad: LIST start ! vypis od radku
LIST start, pocet ! od radku pocet r.
EDIT line Editace radku. Kopirovani radku lze provest prikazem
EDIT, kde se prepise cislo radku na nove. Po
zavolani EDIT se umisti kurzor na konec radku.
<CR> ukonceni editace
<DEL> rusi znak vlevo od kurzoru
<BS> posuv vlevo o znak
<TAB> posuv vpravo o znak (^<SP> u ANK)
<ESC> nastavi kurzor na opacny okraj
radku (<LF> u ANK)
ostatni znaky se ulozi
@ line Zkraceny zapis pro volani EDIT.
DEL start,end ... zrusi usek programu od radku po radek.
BYE Skok do monitoru pres RST 1
LLIST Vypis na tiskarnu; tiskarna musi byt zapnuta !
TRON Start trasovani programu. Vypisuji se cisla radku
provadeneho programu na obrazovce displeje.
TROFF Konec trasovani programu - zruseni vypisu na displej
LOAD Zavadeni programu. Stary program se nemaze,
prepisuji se jen radky se stejnymi cisly - lze
vyuzit k modifikaci programu. Mazani se provadi
povelem NEW.
SAVE Uschova programu. Program se uchovava otevrene v
citelne forme (ASCII). Je mozna uprava editorem
PEDIT.
GOTO Spusteni programu bez nulovani tabulek (pro ladeni).
Basic 23
Poznamky: - ? seznam ... vytiskne hodnoty promennych dle
seznamu (zkracene volani PRINT)
- Prikaz, pred kterym neni cislo radku, se provadi
okamzite. Cislovane radky se umistuji dle cisel
radku zdrojoveho programu. Pri shode cisla je
prislusny radek prepsan.
- Maximalni pocet znaku na instrukcnim radku je 132
vc. cisla radku a mezer. Max. cislo radku je 9999.
Pocet mezer mezi cislem radku a prvni instrukci
zustane pri listingu zachovan.
- Nazvy promennych mohou byt viceznakove (prvni vzdy
pismeno), ale rozhodujici jsou prvni dva znaky.
Cela rezervovana slova se nesmi uzivat jako nazvy
promennych, ani jako cast nazvu za prvnim ci druhym
pismenem nazvu. Pro numericke promenne, retezce a
pole je mozne pouzit stejne nazvy (napr. B, B$,
B(1) jsou ruzne promenne).
- Preruseni chodu programu (po RUN) klavesou CTRL C
(ETX) nebo shift X u klavesnice ANK 1.
- Potlaceni tisku z programu stisknutim CTRL S
(shift S u ANK 1) - obnoveni tisku opakovanim
libovolne klavesy.
================================================================
4. CHYBOVA HLASENI
================================================================
Chyby hlasi interpret ve forme
ERROR XX IN LINE N
kde N je cislo radku, kde doslo k chybe
XX je identifikace chyby dle tabulky
NF next without for
SN syntax error
RG return without gosub
OD out of data
FC function error
OV overflow value
OM overflow memory
US undefined statement
BS bad subscript-index overflow
DD double dimension
/0 division by zero
ID illegal direct
TM type mismatch
OS overflow string space
LS long string (>255)
ST string func. too complex
CN continue error
UF undefined function
* INPUT ERROR
* EXTRA DATA IGNORED
Basic 24
Rozliseni startu programu BASIC
Studeny start (COLD), tj. prvni spusteni
- vymaz obrazovky
- napis na horni radek
Teply start (WARM), tj. opakovane spusteni
- bez vymazu obrazovky a uziv. programu
- nadpis se umisti na dalsi radek.
================================================================
5. TEST RYCHLOSTI BASIC/EX V3.2
================================================================
10 FOR I=1 TO 10000
20 NEXT ... 19s (1.9 ms/cykl)
30 FOR I=1 TO 10000:NEXT ... 15s (1.5 ms/cykl)
40 REPEAT I=I+1 UNTIL I>1000 ... 9.5s (9.5 ms/cykl)
50 E=1000
60 REPEAT I=I+1 UNTIL I>E ... 6s (6 ms/cykl)
================================================================
6. TVAR PROMENNYCH PRO BASIC/EX
================================================================
a/ Cislo typu REAL - adresu ulozeni lze ziskat pomoci PTR
4 byty
------------------------------------
| normalizovana | exponent |
| mantisa (3 byte) | (1 byte |
------------------------------------
b/ retezcova promenna - ulozena pomoci ukazatele
4 byty
--------------------------------
| delka | 0FFH | dolni | horni |
| | | byte adresy |
--------------------------------
Priloha 1
UKAZKY POUZITI SYSTEMOVYCH RUTIN
================================
Demonstracni priklady pouziti podprogramu monitoru, monitoru +
a MIKOSu.
- zmena IOBYTE, napr. tiskarna L=2
CALL IOCHK ;stara hodnota IOBYTE
ANI 3FH ;maska
ORI 11000000B ;nova hodnota
MOV C,A
CALL IOSET
- nalezeni souboru na kazete
XRA A ;0=find
MVI C,1 ;1. sluzba EXFLAG
CALL EXFLAG
CALL RI ;cti prvni data souboru
- ukazka testu na ukonceni souboru
JC KONEC ;konec pasky - CY=1
nebo
CPI 1AH ;CTRL Z ... konc. znak
JZ KONEC
- instalace uzivatelskeho ovladace typu TISK do systemu
MVI C,6 ;uzivatelska tiskarna
LXI D,USRLO ;adresa handleru
CALL IODEF ;instalace do systemu
Ukazka uzivatelskeho handleru
USRLO: IN 90H
RLC
JNC USRLO
MOV A,C
OUT 91H
RET
- kopirovani dat z kazety na tiskarnu (je-li AL=2, pak na
uzivatelskou tiskarnu)
LOOPR: CALL RI
JC KONCR ;konec dat
MOV C,A
CALL LO
JMP LOOPR
Priloha 2
- rezervovani horni casti pameti (255 byte)
CALL MEMCK ;preda v B,A konec RAM
MOV H,B
MOV L,A ;HL = konec RAM
LXI D,-255 ;-(pocet rezerv. byte)
DAD D
XCHG ;novy konec do DE
MVI C,8 ;nastav MEMTOP
CALL IODEF
- rezervovani casti displeje (pro AND 1)
MVI A,20 ;rezervuj 20 radku
MVI C,7 ;sluzba EXFLAG
CALL EXFLG
XRA A ;zrus okno - 0 radku
MVI C,7
CALL EXFLAG
- zapis na kazetu (user 1) s vyuzitim EXFLG C=3 pro otevreni
Vystupniho souboru, A=0
LXI D,KONDT ;konec dat
LXI H,ZACAT ;zacatek dat
MVI C,3 ;OPEN
XRA A ;A=0 ... user1
CALL EXFLG
LOOPW: MOV C,M
CALL PO ;zapis
CALL HILO ;je uz vse?
JNC LOOPW
;UKONCENI SOUBORU
MVI C,1AH ;CTRL Z
CALL PO ;ukonceni souboru
- nacteni hex dat z CI, vypocet rozdilu, zobrazeni na CO
MVI C,2 ;2 vyrazy
CALL EXPR ;cti do stacku
POP D
POP H
MOV A,L
SUB E
MOV L,A
MOV A,H
SBB D
MOV H,A
CALL DADR ;zobrazeni
Priloha 3
- vypis textu na CO
LXI H,MES ;adresa textu
MVI D,LMES ;delka textu
CALL TEXT ;vypis
.
.
.
MES: DB 'ABCD....'
LMES" EQU $-MES
ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt
SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS | FK-1 | HVĚZDA | SP 830 | PCS 1-QR6000
ZPS | Technické prostředky | Programové vybavení | Dokumentace