Ú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