PROFESSIONAL DISPLAY OPERATING SYSTEM 1.1 ----------------------------------------- (HJB) Ten, kto aspoň krátko pracoval so Sinclair-QL už mal možnosť oceniť výhodu práce s oknami. Príkazy CSIZE, WINDOW, LARGE atď. vyvolávajú nadšenie. BETA BASIC 3.1 má síce tieto funkcie zabudované, ale je príliš dlhý a naviac využíva prerušenie IM2. Program PRO-DOS bol napísaný tak, že: - zaberá iba 3787 byte - má jednoduchú obsluhu - nepoužíva prerušenia - má 8 definovateľných okien - príkazy pre grafiku nie sú s ničím viazané - umožňuje písanie ôsmimi smermi a 256 veľkosťami písma - využíva plne obrazovku t.j. 256x192 - dovoľuje použitie hustoty tlače až 64 znakov na riadok - umožňuje uloženie obsahu obrazovky na ľubovoľné voľné miesto v RAM a tým dosiahol vytváranie náročných grafických výstupov a rýchlych zmien obrazu - spolupracuje s Interface 1 Pred použitím programu treba vykonať inicializáciu príkazom RANDOMIZE USR 6E4. Túto inicializáciu je treba vykonať znovu po každom príkaze RUN, alebo CLEAR. Preto vám doporučujem zaradiť túto inicializáciu do prvého riadku v programe. Po každej inicializácii sa vykoná príkaz *NEW, ktorý nastavuje začiatočné podmienky. PRO-DOS vám dáva k dispozícii 31 nových príkazov. Na rozdiel od ZX Basicu im vždy predchádza hviezdička "*" a musia sa napísať celé. Všetky výstupy PRO-DOSu sú spojené s kanálom "P". Výstup na obrazovku umožní príkaz OPEN #2,"P" (vypne OPEN #2,"S"). WINDOWS *NEW - vykoná nasledujúcu sekvenciu príkazov: PRINT INVERSE 0;FLASH 0;OVER 0;BRIGHT 0;INK 0:PAPER 7;AT 0,0;:*WSIZE 0,0,31,23:*PLOT 0,191:*TPAT 0:*GPAT 255 *DIR 8:*CSIZE 1,1:*NORMAL:*CHR:*SCREEN 16384 *CLS - vymaže okno a naplní ho *TPAT *CLEAR mod - mod = 0 .. príkaz je ignorovaný 1 .. nuluje pixel *TPAT 2 .. nuluje atribúty farieb 3 .. nuluje pixel a atribúty ako *CLS *SCROLL mod, smer mod nadobúda rovnaké hodnoty ako pri *CLEAR - smer: 5 .. vľavo Sú povolené aj súčty smeru. 6 .. dole Napr. *SCROLL 3,13 vykoná 7 .. hore scroll vpravo a hore. 8 .. vpravo *ROLL mod, smer - vykoná rolovanie okna. Parametre sú rovnaké, ako pre *SCROLL. Rolovanie však funguje iba vľavo a vpravo. Hore a dole vyvoláva *SCROLL. *WRAP - vypína automatický scroll. Akonáhle je okno zaplnené pokračuje na pozícii AT 0,0. *NOWRAP - zapína automatický scroll *CCHR - prepína na zobrazovanie 64 znakov na riadok *CHR - prepína zobrazenie 32 znakov na riadok. Pokiaľ by sa okno s 64 znakmi nevošlo do okna s 32 znakmi, dostanete hlásenie OUT OF SCREEN. *TPAT byte - byte (0-255) je vzorkou, ktorého binárnou hodnotou je po príkazoch *CLEAR a *CLS vyplnené okno. Vzor rotuje, čím vzniká šikmý motív. *SCREEN adr - adr určuje začiatočnú adresu uloženia kópie obrazovky v RAM. Musí byť medzi RAMTOP a 60000. Po tomto príkaze pracujú grafické príkazy tak, ako by obrazovka začínala na adrese adr. Dĺžka obrazovky je vždy 6912 byte, tak si neprepíšte PRO-DOS, pretože vykonávanie príkazu *SCREEN nie je nijako strážené. Príkaz *SCREEN sa používa predovšetkým pri spracovaní komplikovaných grafických obrazcov, aby nebolo vidieť, ako sa tvoria. *SWAP - kopíruje obsah obrazovky uloženej v pamäti RAM späť do videopamäti na adrese 16384. *WINDOW x - x (0-7) určuje, na ktoré okno sa budú vzťahovať nasledujúce príkazy PRINT a LIST. Na grafické príkazy PRO-DOS nemajú okná vplyv. *WSIZE x1,z1,x2,z2 príkaz definuje veľkosť okna určeného príkazom *WINDOW podľa počtu znakov na riadok takto: *CHR *CCHR x1 .. prvý stĺpec okna 0 - 31 0 - 63 y1 .. prvý riadok okna 0 - 23 0 - 23 x2 .. posledný stĺpec 0 - 31 0 - 63 y2 .. posledný riadok 0 - 23 0 - 23 Musí platiť x1<=x2 a y1<=y2. Neprípustné hodnoty vedú k chybovému hláseniu OUT OF SCREEN. *WPOKE prem, x - príkaz mení systémové premenné PRO-DOS so všetkými dôsledkami, ktoré môžu vyplynúť z jeho ne uváženého použitia. prem = 0-19 (jednotlivé systémové premenné) x = nová hodnota systémovej premennej 0-255 premenná význam 0 x1 okna 1 y1 okna 2 x2 okna 3 y2 okna 4 x-ová súradnica PRINT v okne 5 y-ová súradnica PRINT v okne 6 x-ová súradnica PLOT 7 y-ová súradnica PLOT 8 TPAT 9 GPAT 10 výška *CSIZE 11 šírka *CSIZE 13 prepínače smeru 12 textové prepínače bit 7 - not 7 - nevyužitý 6 - not 6 - (0) *CHR (1) *CCHR 5 - not 5 - (0) *NORMAL (1) *LARGE 4 - not 4 - nevyužitý 3 - vľavo 3 - nevyužitý 2 - dole 2 - (0) *NOWRAP (1) *WRAP 1 - hore 1 - nevyužitý 0 - vpravo 0 - nevyužitý 14 ATTR <-T 15 MASK ><-T > 16 PF <-FLAG 17 LSB display file > 18 MSB display file systémové premenné na adresách 23679,23695-7 sú využívané iba krátkodobo. GRAFICKÉ PRÍKAZY *LARGE - prepína na zväčšené znaky, ktorých veľkosť je určená príkazom *CSIZE. Pozor na to, že so zvolenou veľkosťou pracuje aj príkaz LIST. Ak by ste mali problémy, tak bez obáv použite BREAK. *NORMAL - prepína späť na normálnu veľkosť písma. *CSIZE hgt, len - určuje zväčšenie znaku 8x8 ako násobok jeho pôvodnej veľkosti. (aktivácia *LARGE) *DIR smer - určuje smer, v ktorom majú byť zobrazované zväčšené znaky. Počiatočným bodom je vždy posledná hodnota PRINT, alebo PLOT. K dispozícii je 8 smerov, podobne ako pri *SCROLL. *GPAT byte - určuje vzor, ktorý bude použitý v príkaze PLOT. Byte 0-255 je vzor, pričom normálnemu PLOT zodpovedá hodnota 255. Rovnako ako u *TPAT dochádza k rotovaniu binárnej hodnoty. Tento príkaz ovplyvňuje všetky príkazy, ktoré budú na sledovať v tomto manuáli. *PLOT x,y - zodpovedá normálnemu PLOT, ale súradnica y môže nadobúdať hodnoty 0-191. *PLOT 0,0 = ľavý dolný roh. *DRAW x,y - rovnaké úpravy pre DRAW ako PLOT *LINE x1,z1,x2,z2 - nakreslí čiaru z bodu A (x1,z1) do B (x2,z2). Druhý oddeľovač môže byť pre väčšiu prehľadnosť nahradený iným kľúčovým slovom. Napr. *LINE 0,0 TO 255,191 *BOX x1,y1,x2,y2 - nakreslí obdĺžnik, ktorého hrany sú rovnobežné s osami. Body A(x1,y1) a B(x2,y2) sú súradnicami uhlopriečky. *FBOX x1,y1,x2,y2 - pracuje rovnako ako *BOX, ale vytvorený obdĺžnik je naviac vyplnený vzorom *GPAT. *TRIANGLE x1,y1,x2,y2,x3,y3 - nakreslí trojuholník zadaný troma bodmi. *ELLIPSE x,y,a,b - nakreslí elipsu so stredom S(x,y) a poloosami a,b. Ak a=b bude nakreslená kružnica. *FILL x,y - vyplní uzavretý obrazec. Súradnice x,y musia ukazovať niekam do vnútra tohto obrazca a modifikuje taktiež spôsob, ktorým bude obrazec vyplnený. Príkaz nezávisí od *GPAT a jeho realizácia vyžaduje asi 500 byte voľnej pamäti. Dĺžka voľnej pamäte nie je testovaná. *PAINT x,y - pracuje podobne ako *FILL, ale pre vyplňovanie je použitý vzor *GPAT. Rutina je opäť náročná na voľnú pamäť. *HATCH x,y,adr - vyplní uzavretý obrazec vzorom, ktorý je uložený v 8 bytoch na zadanej adrese. Ak je vzor uložený v UDG, potom môže príkaz vyzerať takto *HATCH x,y,USR "a". *MATCH adr - opäť vyplní obrazec, vyplnený *HATCH, ale môže byť použitý iný vzor. Rutiny *HATCH a *MATCH vyžadujú asi 6 KB RAM a táto tretia obrazovka je automaticky ukladaná na adresu 53000. Preto je nutné vlastné obrazovky ukladané pomocou *SCREEN dávať na adresy nižšie o 6912 byte. Ak tieto príkazy nebudete používať, možno samozrejme túto oblasť bez problémov použiť. Skúste experimentovať a uvidíte, že možno dosiahnuť zaujímavých efektov aj vtedy, keď dáte *SCREEN 53000, čím sa vlastne obe obrazovky prekryjú. FARBY Príkazy pre farby vkladajte pomocou PRINT, napr. takto: PRINT INVERSE 1; OVER 1; *PLOT X,Y Ako riadiace znaky možno používať CHR$ 8 - CHR$ 23