M I K R O - P A S C A L ========================= s y s t e m ( verze 010189) 1/ Úvodní informace. -------------------- MIKRO - pascal je verzí Turbo-pascalu v 3.0 firmy Borland Z implementace na MZ800 bez disketové jednotky vyplývaji někte- rá omezení, která jsou popsána dále v textu. Činnost po zavedení: Na dotaz INIT SCREEN 1 - 4 možnost volby 1 - 40 znaků na řádek 4 barvy \ 2 - 40 znaků na řádek 16 barev odpovídá parametru 3 - 80 znaků na řádek 2 barvy INIT "SCR,Mx" BASICU 4 - 80 znaků na řádek 4 barvy / Poté se zadají barvy tisku,pozadí a lowvideo. Základní MENU ------------- W - volba pracovního souboru - pokud chceme nový soubor stisk SHFT/BREAK na požadavek PLAY E - Edit pracovního souboru - pokud není v paměti předchází automaticky funkce W. C - Překlad pracovního souboru R - Spuštení přeloženého programu - nebyl li přeložen předchazí automaticky funkce C. T - Výpis pracovního souboru na LPT. M - Aktivace vestavěného monitoru F - Přepínání typu pracovního souboru MIKRO / FET. O - volba činnosti překladu Od verze 111188 je modul MIKRO.MSG integralni součástí překladače a nezavádí se proto z magnetické pásky. Podle odpovědi na dotaz vložit chybové zprávý se buď aktivuje nebo ne. Editor ------ ovládání ukazatele o znak vlevo CTRL-S šipka vlevo o znak vpravo CTRL-D šipka vpravo o slovo vlevo CTRL-A [ F3 ] o slovo vpravo CTRL-F [ F4 ] o řádek nahoru CTRL-E [šipka nahoru] o řádek dolů CTRL-X [šipka dolů ] o stranu nahoru CTRL-R [shift + šipka nahoru] o stranu dolů CTRL-C [shift + šipka dolů] na začátek řádku CTRL-Q-S [shift + šipka vlevo] na konec řádku CTRL-Q-D [shift + šipka vpravo] na začátek obrazovky CTRL-Q-E na konec obrazovky CTRL-Q-X na začátek souboru CTRL-Q-R na konec souboru CTRL-Q-C na předchozí pozici CTRL-Q-P příkazy vkládání a mazání vkládání/přepisování CTRL-V [ INS ] vložení řádku CTRL-N [ shift + INS] vymazání znaku DELETE vymazání slova CTRL-T vymazání řádku CTRL-Y [ shift + DEL] vymazání do kon rad CTRL-Q-Y [ F2 ] příkazy pro práci s bloky vyznač začátek bloku CTRL-K-B vyznač konec bloku CTRL-K-K kopírování bloku CTRL-K-C přesunutí bloku CTRL-K-V výmaz bloku CTRL-K-Y čti blok ze souboru CTRL-K-R piš blok do souboru CTRL-K-W ukazatel na zač blk CTRL-Q-B ukazatel na kon blk CTRL-Q-K zobrazení bloku Z/V CTRL-K-H příkazy vyhledávání a nahrazování vyhledání řetězce CTRL-Q-F nahrazení řetězce CTRL-Q-A opakování přikazu CTRL-L zrušení příkazu CTRL-U ostatní příkazy ukončení editování CTRL-K-D [ F1 ] obnovení řádku CTRL-Q-L změna odsazování CTRL-Q-I tabulátor CTRL-I [ TAB ] volby pro vyhledání a nahrazení volba vyhledání nahrazení B zpětní hledání zpětní hledání G globální hledání N nahrazení bez dotazu U ignorování rozdilu mezi malými a velkými písmeny W vyhledávaní celých slov n vyhledání n-teho výskytu řetězce 2/Monitor --------- příkazy monitoru Dadr1[,adr2] výpis úseku operační paměti od adr1 do adr2 není-li adr2 uvedeno vypíse se 160 byte zastavení výpisu CTRL-S zrušení zastaveného výpisu CTRL-C Madr1 modifikace obsahu od adresy adr1 ukončení modifikace zadáním 'k' Fadr1,adr2,xx zaplnění úseku paměti od adresy adr1 do adr2 bytem xx (hexadecimálně); Tadr1,adr2,adr3 přesun úseku paměti počínaje adresou adr1 konče adr2 na adresu adr3 Gadr1 vyvolání podprogramu na adrese adr1 pro řadný návrat musí být zásobník na stejné úrovni L[adr] zavedení programu (dat) od adresy adr pokud není adresa uvedena zavede se od adresy v záhlaví Sadr1,adr2,adr3,filename uložení úseku paměti od adresy adr1 do adr2 na pásku pod jménem filename, adr3 je uložena jako start adr do záhlavi (je nutno ji uvést) R návrat zpět do základního menu 3/ Volby kompilace ------------------ Kompilace do paměti - volba M nevytváří se soubor na magn pásce Kompilace na mp - volba C na magnetickou pásku se zapíše knihovna PASCALU + BIOS , pak se provede překlad a zapíše se výsledný program před zápisem BIOS , před vlastním překladem a před zápisem programu zpráva na display Set tape... čeká na CR . V tomto momentě je možno provést výměnu pásky pokud používáme při překladu direktivu {$I jméno souboru} pro vkládáni části textu z magnetické pásky. Kompilace na mp - volba H na magnetickou pásku se zapiše pouze výsledný program. (takto vytvořený program je možno provozovat pod systémem vytvořeným volbou C (po ukončení programu zůstane systém funkční a je možno zavést a spustit další program (uvedením jména) Struktura programu na magnetické pásce program COM na magnetické pásce se skládá ze 4 částí délka zav.adresa 1/ LOADER D6 2BA8 2/ BDOS+BIOS 25E0 DA00 3/ Knihovna PASC 2033 100 4/ Vlastni prog ???? ???? program CHN obsahuje pouze cast 4. Obsazení paměti programem 0000 - 0100 pracovní oblast systemu 0100 - 2033 knihovna Pascalu 2033 - cca 7FF7 překladač PASCAL - v souboru COM volná oblast 7FF7 - nnnn zdrojový text - v souboru COM volna oblast nnnn - D600 přeložený program + HEAP + proměnné D600 - FC00 BDOS + BIOS FC00 - FFE0 případné překryvné programy (GRAF) volnou oblast v programu COM lze využít pro umistění absolutních proměnných. Místo pro cílový program lze zvětšit použitím direktivy {$I soubor} překladače pro minimalizaci velikosti zdrojového textu v paměti. 4/ Restart zadřeného programu ----------------------------- Při běhu programu za volby překladu M tj. překladač je přitomen v paměti je možno použít tlačítka CTRL RESET pro nové nastartování překladače. 5/ Omezení a rozšíření proti přiručce -------------------------------------- Videorutiny ----------- nejsou funkční procedury INSLINE, DELLINE je doplněna procedura PAL (x,y); pričemž x je číslo palety 0 - 3 y je číslo barvy 0 - 15 paleta 0 odpovídá barvě pozadí 1 odpovídá barvě lowvideo 2 odpovídá barvě highvideo 3 odpovídá barvě normvideo Zpracování souborů ------------------ nejsou funkční procedury SEEK , FLUSH , ERASE , RENAME , CHAIN , EXECUTE a funkce FILESIZE Dále není možno používat procedury OVERLAY. je možno současně pracovat jen s jedním souborem tzn mezi přikazy RESET (REWRITE) a CLOSE pro jeden soubor není možno použít přikazy pro jiný soubor (není kontrolováno - použití vede k nedefinovatelným výsledkům) Formáty souboru na magnetické pásce ----------------------------------- Zdrojové i datové soubory na magnetické pásce jsou ve formátu BSD s délkou datové oblasti 8 virtuálních sektorů tj 1024 byte blok je doplněn na začátku 2 bytovým číslem bloku (poslední blok FFFF). Z toho vyplývá problém při kopírování zdrojových textů, které nejdou kopírovat žádným běžným kopírákem. Bohužel kazeta se musí pokoušet imitovat disketový přístup (alespoň sekvenční) takže není jiná možnost. Soubory ve formátu MZ800 ------------------------ Pro zpracování souborů ve formátu MZ800 se používá příkaz BDOS (12,adr(LAB)); přičemž LAB je pole o struktuře LAB = record opByte : byte; fileName : array [1..17] of char; fileSize : integer; loadAddr : integer; startAddr : integer; comment : array [1..104] of char; end; opByte = kod operace 1 .. čtení návěští do pole LAB 2 .. čtení bloku (dle adres v LAB) 3 .. zápis návěští (zapise se LAB) 4 .. zápis bloku (dle adres v LAB) další údaje odpovídají návěští formátu MZ800 Přikaz type ----------- Byl doplněn příkaz Type pro opis pracovního souboru na tiskárně. Soubory ve formátu editoru FET. ------------------------------- Mikro od verze 101088 umožňuje zpracování textových souborů vytvořených editorem FET. Přechod do tohoto režimu se provede volbou F základního menu. Volba je indikována číslem jednotky F v Logged drive. Přechod zpět do základního režimu opětovným stiskem F. Indikace B v Logged drive. V režimu zpracováni souboru FET lze používat pouze příkazy W pro přečtení souboru a S pro zápis souboru na kazetu. Pro práci se soubory ( vkládání do textu ; direktiva $I překladače atd je nutno používat soubory v základním tvaru. POZOR !!! v režimu souboru FET není kontrolováno jestli se soubor vejde do přidělené paměti (když se nevejde - přepíše BDOS a následuje odchod). dalšim omezením je to že system nekontroluje u souboru FET jméno souboru - přečte se první soubor na pásce. údaje reálného času ------------------- Jsou definovány procedury pro nastavení reálného času a zjištění reálného času SETIM (pole) nastavení času GETIM (pole) zjištění času pole je proměnná popsaná jako array [1..3] of byte v prvku pole [1] se předávají hodiny pole [2] minuty pole [3] sekundy příklad nastavení času na 21:12:00 ....... pole [1] := 21; pole [2] := 12; pole [3] := 0; SETIM (pole); Problematika tiskáren ---------------------- Mikro Pascal pracuje se standardním ASCII kodem. Pro připojení tiskáren jsou uvažovány dva typy dialogu. Dialog 1 -------| |---------- Data Strobe | | ------ |--------- Busy | --------------- Dialog 2 --------| |----------- Data Strobe | | ------ |-------------- Busy | ----------- Dialog 1 používají tiskárny s vyrovnávací pamětí např D100 Robotron 6313/14 Dialog 2 používá např plotter MZ-1P16 Dialog adresa na CMT adresa pamet Obsah 1 9C71 EC71 00 00 2 9C71 EC71 20 F8 Konverze malých písmen do kodu SHARP na adrese 9ACC (CMT) EACC (pamět) 01 pokud požadujeme konverzi (stand. 00). Dodávaná verze je s dialogem 1 bez transformace Adresou CMT se rozumí adresa na které je nutno zmodifikovat program po natažení do programu TURBO COPY Zajímavé adresy --------------- aktivní border při čtení MP E991 [9991] F8 neaktivní FF zpracování magnetických pásek 2:1 adresa prg. adresa mp 1:1 2:1 E79B 979B 4C 20 E7A1 97A1 18 0C E7A5 97A5 69 34 barva tisku F9EB mění se použitím normvideo,lowvideo,highvideo vzor kurzoru je na adresách FA06-FA0D na adrese FA0E FF = kursor se zobrazuje 00 = kursor se nezobrazuje MIKRO a základní grafika ======================== pro možnost použití základních grafických elementů v systému MIKRO byl vytvořen překryvný modul MIKRO-GRAF, který umožňuje použití příkazů: PLOT - pro vynesení bodu UNPLOT - pro zrušení bodu LINE - pro vynesení úsečky BLINE - pro zrušení úsečky COLOR - pro zadání grafických parametrů (parametry jsou shodné s obdobným pří- kazem BASIC tj 1.parametr paleta druhý parametr mode). SOUND - pro řízení zvukového generátoru pokud první parametr je 9..83 je příkaz ekvivalentní Basicovemu přikazu SOUND ve formátu 1 tj první parametr výška tónu,druhý délka v 1/100 sec. viz popis BASIC str 6-71. Pokud první parametr je 0..7 je příkaz ekvivalentní formátu 2 tj první operand registr, druhý data viz popis strana 6-72. SCR - init obrazovky. Parametr odpovídá parametru v BASICU nebo úvodní nabídce CURON - kursor se zobrazuje CUROF - kurzor se nezobrazuje CLICK - pípání při stisku klávesy ma dva parametry první výška tónu ( čím větší číslo tím niž- ší tón) druhý délka tónu (čím větší číslo tím delši tón). Implicitní hodnoty jsou 256 a 512. Následující příklad názorně ilustruje použití grafického modulu včetně zavedení do paměti Ve vlastním programu použijeme buď jen ty procedury, které potřebujeme nebo vytvoříme zdrojový modul na pásce a připojujeme ho direktivou {$I soubor} program GRAF; { procedury obsazene v modulu MIKRO-GRAF} procedure PLOT (x,y:integer); external $fc00; procedure UNPLOT (x,y:integer); external $fc03; procedure LINE (x,y,x1,y1:integer); external $fc06; procedure BLINE (x,y,x1,y1:integer); external $fc09; procedure COLOR (pal,mode:integer); external $fc0c; procedure SOUND (vyska,delka:integer); external $fc0f; procedure SCR (typ:integer); external $fc12; procedure CURON; external $fc15; procedure CUROF; external $fc18; procedure CLICK (vyska,delka:integer); external $fc1b; procedure TEXTCOLOR (barva:integer); begin mem[$f9eb]:=barva; end; { procedura pro zavedeni modulu MIKRO-GRAF do pameti } procedure LOAD; var lab:array[1..128] of byte; a1 :integer; bylload : byte absolute $fc00; begin if bylload <> $c3 then begin lab[1]:=1; {cteni navesti} bdos(12,addr(lab)); a1:=2; writeln; {tisk Loading ...} write ('Loading '); repeat write (char(lab[a1])); a1:=succ(a1); until lab[a1]=13; writeln; lab[1]:=2; {cteni tela programu} bdos(12,addr(lab)); end; end; procedure CTVEREC(x,y,r:integer); begin plot (x,y); line (x,y,x+r,y); line (x+r,y,x+r,y+r); line (x+r,y+r,x,y+r); line (x,y+r,x,y); end; { **** P R O G R A M *** } begin load; { ...... sem prijde program ...} write (char(12)); {CLS} ctverec(100,100,40); end. V uvedeném přikladě je použito zavádění překryvné fáze při běhu programu. Je možno ji zavést téz monitorem (příkaz L). Po provedení překladu do souboru (COM) se zapíše BIOS včetně této překryvné části. POZOR !!! pokud zavedeme do pameti modul MIKRO-GRAF neni funkční CTRL - RESET. Grafika na pásce je generována v režimu 320 x 200 bodu 4 barvy. Pokud pracujeme v jinem režimu obrazovky musí prvním příkazem pred použitím grafických přikazu být přikaz SCR , kterým přede- finujeme obrazovku. Při použití SCR (2) - šestnáct barev dochází ke kolizi grafického a textového režimu. Je třeba při vstupu do programu předefinovat PAL (1,1);PAL(2,2);PAL(3,3) a pro barvu tisku po- užívat proceduru TEXTCOLOR ve které uvádíme přímo barvu tisku. Před ukončením programu vrátit PAL(1,lowvideo),PAL(3,normvideo) obnovi se spravné barvy tisku pro funkci editoru. Grafický modul MIKRO-DRAW - rychlá grafika ------------------------------------------ obsahuje procedury : POINT - pro vynesení bodu DRAW - pro vynesení úsečky SCR - init obrazovky. Parametr odpovídá parametru v BASICU nebo úvodní nabídce CURON - kursor se zobrazuje CUROF - kurzor se nezobrazuje CLICK - pípání při stisku klávesy ma dva parametry první výška tónu ( čím větší číslo tím niž- ší tón) druhý délka tónu (čím větší číslo tím delši tón). Implicitní hodnoty jsou 256 a 512. ** pro proceduru DRAW byl použit interpolátor úsečky vypracovaný v SHARP klubu Bratislava ** volání procedur: procedure POINT (x,y,barva:integer); external $fc00; procedure DRAW (x,y,x1,y1,barva:integer); external $fc06; procedure SCR (typ:integer); external $fc12; procedure CURON; external $fc15; procedure CUROF; external $fc18; procedure CLICK (vyska,delka:integer); external $fc1b; Grafický zápis je v modulu MIKRO-DRAW prováděn v režimu OR (viz popis GDG). Pokud chceme použít jiný režim je možno použít proceduru SETGRAFMODE v následujícím tvaru. const GRAFSINGLE = $0; {vsechny konstanty jsou globalni} GRAFEXOR = $20; GRAFOR = $40; GRAFRESET = $60; GRAFREPLACE= $80; GRAFPSET = $C0; procedure SETGRAFMODE (typ:integer); begin mem [$fc60]:=typ; mem [$fdaf]:=typ; end; jinak pro použití modulu MIKRO-DRAW platí vše co bylo řečeno u modulu MIKRO-GRAF. Dalši informace o systemu na adrese Vladimir Svoboda Kpt Jarose 14 415 02 TEPLICE