BD 10111101 E 133 85 10000101 ¾ 190 BE 10111110 ZH 134 86 10000110 ¿ 191 BF 10111111 Z 135 87 10000111 A 192 C0 11000000 I 136 88 10001000 B 193 C1 11000001 J 137 89 10001001 V 194 C2 11000010 K 138 8A 10001010 G 195 C3 11000011 L 139 8B 10001011 D 196 C4 11000100 M 140 8C 10001100 E 197 C5 11000101 N 141 8D 10001101 ZH 198 C6 11000110 O 142 8E 10001110 Z 199 C7 11000111 P 143 8F 10001111 I 200 C8 11001000 R 144 90 10010000 J 201 C9 11001001 S 145 91 10010001 K 202 CA 11001010 T 146 92 10010010 L 203 CB 11001011 U 147 93 10010011 M 204 CC 11001100 F 148 94 10010100 N 205 CD 11001101 H 149 95 10010101 O 206 CE 11001110 C 150 96 10010110 P 207 CF 11001111 CH 151 97 10010111 R 208 D0 11010000 SH 152 98 10011000 S 209 D1 11010001 Simvol 10-nyj 16-richnyj dvoichnyj Simvol 10-nyj 16-richnyj dvoichnyj T 210 D2 11010010 shch 233 E9 11101001 U 211 D3 11010011 ® 234 EA 11101010 F 212 D4 11010100 y 235 EB 11101011 H 213 D5 11010101 ' 236 EC 11101100 C 214 D6 11010110 e 237 ED 11101101 CH 215 D7 11010111 yu 238 EE 11101110 SH 216 D8 11011000 ya 239 EF 11101111 SHCH 217 D9 11011001 ¨ 240 F0 11110000 ¬ 218 DA 11011010 ¸ 241 F1 11110001 Y 219 DB 11011011 t 242 F2 11110010 X 220 DC 11011100 u 243 F3 11110011 | 221 DD 11011101 f 244 F4 11110100 YU 222 DE 11011110 h 245 F5 11110101 YA 223 DF 11011111 c 246 F6 11110110 r 224 E0 11100000 ch 247 F7 11110111 s 225 E1 11100001 sh 248 F8 11111000 t 226 E2 11100010 shch 249 F9 11111001 u 227 E3 11100011 ® 250 FA 11111010 f 228 E4 11100100 y 251 FB 11111011 h 229 E5 11100101 ' 252 FC 11111100 c 230 E6 11100110 e 253 FD 11111101 ch 231 E7 11100111 yu 254 FE 11111110 sh 232 E8 11101000 255 FF 11111111 3.3.4 Svodka kodov psevdografiki dlya postroeniya ramok. Nizhe privedeny dlya udobstva nomerov kodov ASCII, dlya simvolov psevdografiki, ispol'zuemyh pri postroenii linij i ramok. 218 194 191 213 209 184 ¬ V ¿ H S ¸ 195 197 180 198 216 181 G E ´ ³ ZH SH µ 179 A B SHCH F P ¾ 192 193 217 212 207 190 D 196 N 205 214 210 183 201 203 187 C T · J L » 199 215 182 204 206 185 Z CH ¶ º M O ¹ 186 U R ½ I K ¼ 211 208 189 200 202 188 3.3.5 Svodnaya tablica rasshirennyh kodov. Znachenie 2-go bajta Sootvetstvuyushchie klavishi 15 Shift + Tab ("back-tab") 16-25 Alt-Q - Alt-P (verhnij ryad bukv) 30-38 Alt-A - Alt-L (srednij ryad bukv) 44-50 Alt-Z - Alt-M (nizhnij ryad bukv) 59-68 Funkcional'nye klavishi F1 - F10 71 Home 72 Cursor-up (strelka vverh) 73 PgUp 75 Cursor-left (strelka vlevo) 77 Cursor-right (strelka vpravo) 79 End 80 Cursor-down (strelka vniz) 81 PgDn 82 Ins 83 Del 84-93 F1-F10 + Shift 94-103 F1-F10 + Ctrl 104-113 F1-F10 + Alt 114 Ctrl + PrtSc 115 Ctrl + Cursor-left 116 Ctrl + Cursor-right 117 Ctrl + End 118 Ctrl + PgDn 119 Ctrl + Home 120-131 Alt + 1 - Alt + = (verhnij ryad) 132 Ctrl + PgUp Glava 4. Vyvod na terminal. Razdel 1. Upravlenie vyvodom na terminal. V etoj glave rassmotreny monohromnyj adaptor, cvetnoj grafi- cheskij adaptor, videosistema PCjr i uluchshennyj graficheskij adap- ter (EGA). Vse 4 sistemy baziruyutsya na mikrosheme Motorola 6845 CRTC (cathode ray tube controller); hotya EGA na samom dele is- pol'zuet zakaznuyu mikroshemu, osnovannuyu na principah 6845. |ta mikroshema vypolnyaet massu tehnicheskih zadach, kotorye obychno ne interesuyut programmista. Odnako, ona takzhe ustanavlivaet rezhim ekrana, upravlyaet kursorom i (dlya cvetnogo graficheskogo adaptora) upravlyaet cvetom. Mikroshema legko programmiruetsya napryamuyu, hotya procedury operacionnoj sistemy pozvolyayut upravlyat' bol'shinstvom ee dejstvij. PCjr imeet vspomogatel'nuyu mikroshemu dlya displeya, "video gate array" (massiv vorot displeya), kotoraya obsuzhdaetsya v etom razdele vmeste s 6845. EGA imeet arhitekturu, otlichayushchuyusya ot vseh ostal'nyh, poetomu on obsuzhdaetsya otdel'no. Sredi ne-EGA sistem imeetsya sovmestimost' po ispol'zovaniyu adresov portov, no est' i nekotorye vazhnye otlichiya. Nekotorye adresa portov EGA takie zhe, kak i u drugih sistem. Vse videosistemy ispol'zuyut bufera, v kotorye otobrazhayutsya dannye dlya izobrazheniya na ekrane. |kran periodicheski obnovlyaetsya skanirovaniem etih dannyh. Razmer i raspolozhenie etih buferov menyaetsya s sistemoj, rezhimom ekrana, a takzhe kolichestvom zaranee otvedennoj pamyati. Kogda v bufere hranitsya neskol'ko obrazov ekrana, to kazhdyj otdel'nyj obraz nazyvayut displejnoj stranicej. Nizhe privedena korotkaya svodka: Monohromnyj adaptor Monohromnyj adaptor imeet 4K bajt pamyati na plate, nachinaya s adresa B0000H (t.e. B000:0000). |toj pamyati hvataet tol'ko dlya hraneniya odnoj 80-simvol'noj stranicy teksta. Cvetnoj graficheskij adaptor. Cvetnoj graficheskij adaptor imeet 16K bajt pamyati na plate, nachinaya s adresa pamyati B8000H. |togo dostatochno dlya otobrazheniya odnogo graficheskogo ekrana, bez stranic, ili ot chetyreh do vos'mi ekranov teksta, v zavisimosti ot chisla simvolov v stroke - 40 ili 80. PCjr. PCjr imeet videosistemu, kotoraya na samom dele yavlyaetsya uluch- shennoj versiej cvetnogo graficheskogo adaptora. Ona unikal'na tem, chto ispol'zuet dlya videobufera obychnuyu operativnuyu pamyat' siste- my. Kogda BIOS inicializiruet sistemu, to verhnie 16K ustanovlen- noj pamyati otvodyatsya pod bufer terminala. Takim obrazom adres bufera zavisit ot togo skol'ko pamyati imeetsya v sisteme. Dlya dobavochnyh displejnyh stranic mogut byt' otvedeny bloki pamyati v drugih mestah, a takzhe nachal'nyj ob®em mozhet byt' umen'shen do 4K i byla podderzhka tol'ko odnogo ekrana teksta. EGA. EGA mozhet byt' snabzhen 64K, 128K ili 256K pamyati. Krome is- pol'zovaniya v kachestve videobufera eta pamyat' mozhet takzhe hranit' bitovye opisaniya vplot' do 1024 simvolov (kak ob®yasneno v [4.3.4]). Startovyj adres bufera displeya programmiruem, poetomu bufer nachinaetsya s adresa A000H dlya uluchshennyh graficheskih rezhi- mov, i s B000H i B800H dlya sovmestimosti so standartnymi monoh- romnym i cvetnym graficheskim rezhimami. V bol'shinstve sluchaev EGA zanimaet dva segmenta s adresami ot A000H do BFFFH, dazhe kogda imeetsya 256K pamyati. |to vozmozhno, poskol'ku v nekotoryh rezhimah dva ili bolee bajtov pamyati displeya schityvayutsya iz odnih i teh zhe adresov. Dostupnoe chislo stranic zavisit kak ot rezhima ekrana, tak i ot kolichestva imeyushchejsya pamyati. Vsledstvie svoej slozhnosti EGA imeet PZU na 16K bajt, kotoroe zamenyaet i rasshiryaet procedury raboty s terminalom BIOS. Nachalo oblasti PZU - adres C000:0000. V tekstovyh rezhimah bufera nachinayutsya s dannyh dlya verhnej stroki ekrana, nachinaya s levogo ugla. Dal'nejshie dannye pereno- syatsya s pravogo konca odnoj stroki na levyj konec sleduyushchej, kak budto ekran predstavlyaetsya odnoj bol'shoj strokoj - i s tochki zreniya videobufera tak ono i est'. Odnako v graficheskih rezhimah bufer mozhet byt' razdelen na 2 ili 4 chasti. U cvetnogo grafiches- kogo adaptora i PCjr razlichnye chasti bufera soderzhat informaciyu, otnosyashchuyusya k kazhdoj vtoroj ili kazhdoj chetvertoj linii tochek na ekrane. U EGA kazhdaya chast' bufera soderzhit odin bit iz dvuh ili chetyreh, kotorye opredelyayut cvet dannoj tochki ekrana. Pri vyvode teksta razlichnye videosistemy rabotayut odinakovo. Dlya ekrana otvoditsya 4000 bajtov, tak chto na kazhduyu iz 2000 pozi- cij ekrana prihoditsya 2 bajta (25 strok * 80 simvolov). Pervyj bajt soderzhit kod ASCII. Apparatura displeya preobrazuet nomer koda ASCII v svyazannyj s nim simvol i posylaet ego na ekran. Vtoroj bajt (bajt atributov) soderzhit informaciyu o tom, kak dol- zhen byt' vyveden dannyj simvol. Dlya monohromnogo displeya on us- tanavlivaet budet li dannyj simvol podcherknut, vydelen yarkost'yu ili negativom, ili ispol'zuet kombinaciyu etih atributov. V cveto- vyh sistemah bajt atributov ustanavlivaet osnovnoj i fonovyj cveta simvola. V lyubom sluchae Vasha programma mozhet pisat' dannye pryamo v bufer terminala, chto znachitel'no povyshaet skorost' vyvoda na ekran. Vse sistemy, krome monohromnoj, predostavlyayut nabor cvetnyh graficheskih rezhimov, kotorye otlichayutsya kak razresheniem, tak i chislom odnovremenno vyvodimyh cvetov. I PCjr i EGA mogut odnovre- menno vyvodit' 16 cvetov, prichem EGA mozhet vybirat' eti 16 iz nabora 64 cvetov. Pri ispol'zovanii 16 cvetov kazhdaya tochka ekrana trebuet chetyreh bit pamyati, poskol'ku 4 bita mogut hranit' chisla ot 0 do 15. Po analogii, chetyrehcvetnaya grafika trebuet tol'ko 2 bita na tochku. Dvuhcvetnaya grafika mozhet upakovat' predstavlenie vos'mi tochek v odin bajt videobufera. Kolichestvo pamyati, trebue- moe dlya dannogo rezhima ekrana mozhet byt' legko vychisleno, esli izvestno kolichestvo vyvodimyh v etom rezhime tochek i kolichestvo bit, neobhodimoe dlya opisaniya odnoj tochki. Tekst legko kombini- ruetsya s grafikoj (BIOS risuet simvoly na graficheskom ekrane) i Vy mozhete sozdavat' svoi special'nye simvoly. 4.1.1 Programmirovanie kontrollera displeya 6845. Vse videosistemy stroyatsya vokrug mikroshemy kontrollera video- terminala Motorola 6845 (EGA ispol'zuet zakaznuyu mikroshemu, osnovannuyu na 6845). Mikroshema ispol'zuetsya vo mnogom analogichno v monohromnom adaptore, v cvetnom adaptore i v PCjr; no EGA ne nastol'ko sovmestim i po etoj prichine my rekomenduem Vam izbegat' pryamogo programmirovaniya mikroshemy, kogda BIOS mozhet vypolnit' rabotu za Vas. Govorya obshchimi slovami, mikroshema 6845 ustanavli- vaet videodisplej v odin iz neskol'kih alfavitnocifrovyh ili graficheskih rezhimov. Ona vypolnyaet osnovnuyu rabotu po interpreta- cii nomerov kodov ASCII i poisku dannyh dlya vyvoda sootvetstvuyu- shchih simvolov v mikrosheme PZU (a inogda v operativnoj pamyati). Ona dekodiruet znacheniya atributov cveta i sootvetstvenno ustanav- livaet ekran. Ona takzhe sozdaet kursor i upravlyaet im. V arhitek- ture EGA chast' etih funkcij raspredelena mezhdu drugimi mikroshe- mami. Mikroshema 6845 imeet 18 upravlyayushchih registrov, pronumerovan- nyh ot 0 do 17. Pervye 10 registrov fiksiruyut gorizontal'nye i vertikal'nye parametry displeya. |ti registry, kak pravilo, nein- teresny dlya programmistov, poskol'ku oni avtomaticheski ustanavli- vayutsya BIOS pri izmenenii rezhima ekrana. Ne sovetuem eksperimen- tirovat' s etimi registrami, poskol'ku imeetsya vozmozhnost' ispor- tit' terminal. Registry imeyut razmer 8 bit, no nekotorye svyazany v pary, chtoby hranit' 16-bitnye velichiny. Pary #10-11 i #14-15 ustanavlivayut formu [4.2.4] i mestopolozhenie [4.2.1] kursora. Para #12-13 upravlyaet stranicami displeya [4.5.3]. Para #16-17 soobshchaet poziciyu svetovogo pera [7.3.2]. Bol'shinstvo registrov dostupno tol'ko dlya zapisi; tol'ko registr adresa kursora mozhno i chitat' i pisat', a registr svetovogo pera prednaznachen tol'ko dlya chteniya. EGA imeet 6 dobavochnyh registrov, kotorye svyazany s teh- nicheskimi detalyami. Registr 20 naibolee interesen; on opredelyaet kakaya liniya skanirovaniya v stroke simvola ispol'zuetsya dlya pod- cherkivaniya. Dostup ko vsem 18 registram osushchestvlyaetsya cherez odin i tot zhe port, adres kotorogo dlya monohromnogo adaptora raven 3B5H. |tot adres raven 3D5H dlya cvetnogo adaptora i PCjr (zametim, chto vse adresa portov dlya monohromnogo adaptora takie zhe, kak i dlya cvet- nogo, za isklyucheniem togo, chto srednej cifroj yavlyaetsya B, a ne D). EGA ispol'zuet odin iz etih dvuh adresov, v zavisimosti ot togo, prisoedinen li k nemu cvetnoj ili monohromnyj monitor. Dlya zapisi v registr monohromnogo adaptora nado snachala v registr adresa, raspolozhennyj v porte 3B4H (3D4H dlya cvetnogo), poslat' nomer trebuemogo registra. Togda sleduyushchij bajt, poslannyj v port s adresom 3B5H budet zapisan v etot registr. Poskol'ku registry, interesnye dlya programmista, ispol'zuyutsya poparno, to nado snacha- la zapisat' v adresnyj registr, potom v pervyj registr pary, potom snova v adresnyj registr i, nakonec, vo vtoroj registr pary. Poskol'ku adresa portov smezhnye, to legche vsego adresovat' ih, ispol'zuya instrukcii INC i DEC, kak v sleduyushchem primere: ;---zapis' v registry 11 i 12 mikroshemy 6845 (dannye v BX) ;---vybiraem registr mladshego bajta MOV DX,3B4H ;port adresnogo registra MOV AL,11 ;nomer registra dlya mladshego bajta OUT DX,AL ;posylaem nomer registra ;---posylaem bajt INC DX ;uvelichivaem adres porta MOV AL,BL ;berem mladshij bajt OUT DX,AL ;posylaem ego v registr 11 ;---vybiraem registr starshego bajta DEC DX ;vosstanavlivaem adres porta MOV AL,12 ;nomer registra dlya starshego bajta OUT DX,AL ;posylaem nomer registra ;---posylaem bajt INC DX ;uvelichivaem adres porta MOV AL,BH ;berem starshij bajt OUT DX,AL ;posylaem ego v registr 12 U monohromnogo i cvetnogo adaptorov imeyutsya eshche tri porta, kotorye vazhny dlya programmistov. Oni imeyut adresa 3B8H, 3B9H i 3BAH dlya monohromnogo i 3D8H, 3D9H i 3DAH - dlya cvetnogo adapto- ra. Pervyj ustanavlivaet rezhim ekrana, vtoroj - svyazan v osnovnom s ustanovkoj cvetov ekrana, a tretij soobshchaet poleznuyu informaciyu o statuse displeya. PCjr ispol'zuet ne vse eti adresa analogichnym obrazom. Vmesto etogo, on derzhit chast' informacii, otnosyashchejsya k etim portam, v mikrosheme massiva vorot displeya, osnovnoe naznachenie kotoroj - obespechit' dopolnitel'noe upravlenie cvetami ekrana. Dostup k massivu vorot displeya osushchestvlyaetsya cherez port s adresom 3DAH. U cvetnogo adaptora etot port vozvrashchaet bajt statusa; u PCjr etot port takzhe vozvrashchaet bajt statusa pri ispol'zovanii instrukcii IN, no on predostavlyaet dostup k massivu vorot, kogda ispol'zuet- sya instrukciya OUT. Massiv vorot displeya imeet sleduyushchie registry: Nomer Naznachenie 0 rezhim upravleniya 1 1 maska nabora cvetov (paletty) 2 cvet granicy 3 rezhim upravleniya 2 4 sbros 10H-1FH naznachenie cvetov paletty Dostup ko vsem registram osushchestvlyaetsya cherez port 3DAH. Sna- chala nado poslat' v etot port nomer trebuemogo registra, a zatem znachenie etogo registra. Port avtomaticheski pereklyuchaetsya mezhdu etimi funkciyami raboty s adresami i s dannymi. CHtoby on nachal ozhidat' vvod adresa, nado prochitat' ego. Otdel'nye registry ob- suzhdayutsya v razlichnyh mestah etoj glavy. Osobyj interes predstavlyayut 16 registrov paletty s nomerami ot 10H do 1FH. Kazhdyj registr imeet razmer vsego 4 bita, chto kak raz dostatochno, chtoby hranit' 16 kodovyh nomerov dlya 16 vozmozhnyh cvetov. Dlya kazhdoj pozicii simvola ili tochki na ekrane videobufer soderzhit dannye, ukazyvayushchie kakim cvetom dolzhen vyvodit'sya etot ob®ekt. |tu informaciyu nazyvayut dannymi atributov. V otlichie ot cvetnogo graficheskogo adaptora PCjr ne ispol'zuet dannye atribu- tov dlya neposredstvennogo opredeleniya cveta, kotoryj budet vyvo- dit'sya. Vmesto etogo dannye atributov yavlyayutsya ukazatelyami na odin iz 16 registrov paletty, a chislo, soderzhashcheesya v etom re- gistre, opredelyaet kakim cvetom budet vyvodit'sya dannyj simvol. Pri takom metode, programme nuzhno izmenit' tol'ko ustanovku re- gistra paletty, i vse simvoly ili tochki s sootvetstvuyushchim atribu- tom izmenyat svoj cvet. Registry paletty rabotayut vo vseh rezhimah, kak tekstovyh, tak i graficheskih. EGA raspredelyaet eti funkcii mezhdu mikroshemoj kontrollera atributov (adres porta 3C0H) i dvumya mikroshemami kontrollera grafiki (adresa portov 3CCH-3CFH). Kontroller atributov soderzhit 16 registrov paletty EGA, pronumerovannyh ot 00 do 0FH. |ti re- gistry mogut soderzhat' 6-bitnye kody cvetov, kogda EGA svyazan s uluchshennym cvetnym displeem, poetomu mogut byt' ispol'zovany lyubye 16 cvetov iz nabora 64-h. V [4.4.1] pokazano kak programmi- rovat' registry paletty dlya PCjr i EGA. 4.1.2 Ustanovka/proverka rezhima displeya. Monohromnyj adaptor podderzhivaet odin rezhim terminala, cvetnoj graficheskij - sem', PCjr - desyat', a EGA - dvenadcat'. Sistema PCjr bolee gibkaya, chem monohromnyj ili cvetnoj adaptory, poskol'- ku ona predostavlyaet shirokij vybor cvetov v rezhimah s dvumya i chetyr'mya cvetami, a takzhe serye teni v cherno-belom rezhime. EGA eshche bolee slozhen, podderzhivaya palettu iz 64 cvetov, grafiku na monohromnom displee i vyvod v 43 stroki. Nizhe priveden perechen' razlichnyh rezhimov: Nomer Rezhim Adaptory 0 40*25 (320*200) B&W alfavitnocifrovoj cvetnoj, PCjr, EGA 1 40*25 (320*200) cvetnoj alfavitnocifrovoj cvetnoj, PCjr, EGA 2 80*25 (640*200) B&W alfavitnocifrovoj cvetnoj, PCjr, EGA 3 80*25 (640*200) cvetnoj alfavitnocifrovoj cvetnoj, PCjr, EGA 4 320*200 4-cvetnaya grafika cvetnoj, PCjr, EGA 5 320*200 B&W grafika (4 teni na PCjr) cvetnoj, PCjr, EGA 6 640*200 B&W grafika cvetnoj, PCjr, EGA 7 80*25 (720*350) B&W alfavitnocifrovoj monohromnyj, EGA 8 160*200 16-cvetnyj grafika PCjr 9 320*200 16-cvetnyj grafika PCjr A 640*200 4-cvetnyj grafika PCjr B zarezervirovan dlya EGA C zarezervirovan dlya EGA D 320*200 16-cvetnyj grafika EGA E 640*200 16-cvetnyj grafika EGA F 640*350 4-cvetnaya grafika na monohromnom EGA 10 640*350 4- ili 16-cvetnaya grafika EGA EGA razreshaet imet' 8 stranic v rezhime 7 - standartnom monoh- romnom tekstovom rezhime. Rezhimy 0-6 polnost'yu sovmestimy, ispol'- zuya pamyat' odinakovym obrazom. Pri uslovii, chto pereklyuchateli na EGA ustanovleny dlya raboty s uluchshennym cvetnym displeem firmy IBM, tradicionnye tekstovye rezhimy vyvodyatsya s vysokim razreshe- niem, ispol'zuya risunok simvolov, sostoyashchij iz 8*14 tochek, a ne obychnye 8*8. BIOS hranit odnobajtnuyu peremennuyu po adresu 0040:0049, v kotoroj soderzhitsya nomer tekushchego rezhima. Bajt po adresu 0040:004A daet chislo simvolov v stroke v tekstovom rezhime. Vysokij uroven'. Bejsik ispol'zuet operatory SCREEN i WIDTH dlya upravleniya rezhimom ekrana. PCjr ispol'zuet eti operatory neskol'ko drugim sposobom, chem monohromnyj i cvetnoj adaptory, i eto budet obsuzh- dat'sya nizhe. Odin operator SCREEN ustanavlivaet rezhim dlya cvetno- go adaptora. Za operatorom stoit nomer koda, ustanavlivayushchij razreshenie, gde: 0 tekstovyj rezhim 1 graficheskij rezhim srednego razresheniya 2 graficheskij rezhim vysokogo razresheniya SCREEN 1 ustanavlivaet graficheskij rezhim srednego razresheniya. Vtoroj parametr vklyuchaet i vyklyuchaet cvet. |tot parametr ne imeet smysla dlya rezhima vysokogo razresheniya na cvetnom adaptore, pos- kol'ku razreshen tol'ko cherno-belyj rezhim. Dlya tekstovyh rezhimov 0 v kachestve vtorogo parametra vyklyuchaet cvet, a 1 - vklyuchaet. Operator SCREEN 0,0 ustanavlivaet tekstovyj cherno-belyj rezhim. Dlya graficheskogo rezhima situaciya obratnaya: 0 - vklyuchaet cvet, a 1 - vyklyuchaet. Poetomu operator SCREEN 1,1 ustanavlivaet cherno-be- lyj graficheskij rezhim srednego razresheniya. Vse rezhimy pervonachal'no pokazyvayutsya cherno-belymi. Operator COLOR (sm. [4.1.3]) dolzhen byt' ispol'zovan, chtoby zakrasit' ekran fonovym cvetom. V graficheskom rezhime odnogo operatora COLOR dostatochno, chtoby izmenit' ves' fon na ukazannyj cvet. No dlya tekstovogo rezhima Vy dolzhny posle operatora COLOR ispol'zovat' operator CLS. V tekstovyh rezhimah v stroke mozhet byt' 40 ili 80 simvolov. Dlya ustanovki trebuemogo chisla simvolov v stroke nado ispol'zo- vat' operator WIDTH. WIDTH 40 daet 40 simvolov v stroke, a WIDTH 80 - 80. Drugie znacheniya nedopustimy. Esli operator WIDTH ispol'- zuetsya v graficheskom rezhime (SCREEN 1 ili SCREEN 2), to WIDTH 40 perevodit ekran v rezhim srednego razresheniya, a WIDTH 80 - v rezhim vysokogo razresheniya. Vot neskol'ko primerov: 100 SCREEN 0,1: WIDTH 40 'cvetnoj tekstovyj rezhim s 40 simvolami 100 SCREEN 0,1: WIDTH 40 'cvetnoj displej kak monohromnyj 100 SCREEN 0,1: WIDTH 40 'cvetnaya grafika srednego razresheniya . . 500 WIDTH 80 'perevodim v rezhim vysokogo razresheniya Monohromnyj monitor mozhet byt' pereveden v rezhim 40 simvolov v stroke operatorami SCREEN 0: WIDTH 40. Dlya vosstanovleniya rezhima s 80 simvolami vvedite WIDTH 80. V rezhime s 40 simvolami oni sohranyayut svoyu obychnuyu shirinu, poetomu budet ispol'zovat'sya tol'- ko levaya chast' ekrana. Stroka perenositsya posle 40-go stolbca i nevozmozhno pomestit' kursor v pravuyu polovinu ekrana s pomoshch'yu operatora LOCATE. CLS chistit tol'ko levuyu chast' ekrana. Trudno predstavit' programmu, kotoraya ispol'zovala by eto svojstvo, no ono dejstvitel'no pozvolyaet programme prinimat' vvod (skazhem, cherez operator INPUT), v to vremya kak pol'zovatel' prodolzhaet pechatat' v levoj polovine ekrana, ostavlyaya pravuyu polovinu ekrana dlya vozmozhnoj korrektirovki vvodimoj informacii. Pri etom lyuboj vyvod v pravuyu polovinu ekrana vozmozhen tol'ko pryamogo obrashcheniya k pamyati displeya, kak ob®yasneno v [4.3.1]. PCjr ispol'zuet v Bejsike 7 nomerov rezhimov: Nomer Rezhim 0 tekstovyj rezhim, shirina mozhet byt' 40 ili 80 1 4-cvetnaya grafika srednego razresheniya 2 2-cvetnaya grafika vysokogo razresheniya 3 16-cvetnaya grafika nizkogo razresheniya 4 4-cvetnyj rezhim srednego razresheniya 5 16-cvetnyj rezhim srednego razresheniya 6 4-cvetnaya rezhim vysokogo razresheniya Poslednie chetyre rezhima trebuyut disketty s Bejsikom. Razmer stranicy opredelyaet kolichestvo pamyati, trebuemoe dlya odnogo ekra- na (displejnye stranicy obsuzhdayutsya v [4.5.3]). Programma dolzhna otvesti sootvetstvuyushchee kolichestvo pamyati pered ustanovkoj rezhi- ma. |to delaetsya operatorom CLEAR. Za operatorom CLEAR dolzhny sledovat' tri chisla, opredelyayushchie otvodimuyu pamyat', tret'e iz etih chisel ustanavlivaet razmer videobufera (pervye dva parametra obsuzhdayutsya v [1.3.1]). Naprimer, razmer dlya videobufera 16K, ustanavlivaemyj po umolchaniyu, vydelyaetsya komandoj CLEAR ,,16384. K sozhaleniyu, razmer videobufera ukazyvaetsya v bajtah, poetomu on ne raven kruglomu chislu tipa 4000 ili 32000, a raven 4096 ili 32768. Pomnite, chto 2K = 2^11, 4K = 2^12, 16K = 2^14, a 32K = 2^15. Dlya vydeleniya treh stranic po 16K, vvedite CLEAR ,,3*2^14. |tot operator dolzhen pomeshchat'sya v samom nachale programmy, pos- kol'ku pri ispol'zovanii operatora CLEAR vse peremennye ochishchayut- sya. Otmetim takzhe, chto pri sozdanii neskol'kih stranic, stranica 0 nachinaetsya s mladshih adresov pamyati. K momentu vyhoda etoj knigi Bejsik ne podderzhivaet dopolni- tel'nye rezhimy terminala EGA. V [4.3.3] privedena podprogramma na mashinnom yazyke, kotoraya pozvolit Vam ustanovit' eti rezhimy. Srednij uroven'. Funkciya 0 preryvaniya 10H ustanavlivaet rezhim displeya. V AL dolzhen nahodit'sya nomer rezhima ot 0 do A. CHtoby ustanovit' cvet- noj graficheskij rezhim srednego razresheniya nado: MOV AH,0 ;nomer funkcii MOV AL,4 ;nomer trebuemogo rezhima INT 10H ;ustanavlivaem rezhim Dlya opredeleniya tekushchego graficheskogo rezhima nado ispol'zovat' funkciyu F preryvaniya 10H. Preryvanie vozvrashchaet nomer rezhima v AL. Ono takzhe daet nomer tekushchej stranicy displeya v BH i chislo simvolov v stroke v AH. MOV AH,0FH ;nomer funkcii INT 10H ;poluchenie informacii o rezhime displeya MOV MODE_NUMBER,AL ;nomer rezhima v AL MOV NUMBER_COLS,AH ;chislo simvolov v stroke v AH MOV CURRENT_PAGE,BH ;nomer tekushchej stranicy v BH MS DOS obespechivaet takzhe Esc-posledovatel'nosti dlya ustanovki i sbrosa rezhimov displeya. Dlya etogo neobhodimo, chtoby Vy predva- ritel'no zagruzili drajver ANSI.SYS, kak ob®yasneno v prilozhenii D. Upravlyayushchaya stroka imeet vid ESC [=#h, gde # - nomer rezhima, ukazannyj kak kod ASCII, a ESC oboznachaet odin simvol s kodom ASCII 27. Naprimer: ;---v segmente dannyh MED_RES_COLOR DB 27, '[=4h$' MED_RES_B&W DB 27, '[=5h$' ;---ustanovka cvetnogo graficheskogo rezhima srednego razresheniya MOV AH,9 ;nomer funkcii vyvoda stroki LEA DX,MED_RES_COLOR ;DS:DX dolzhny ukazyvat' na stroku INT 21H ;izmenenie rezhima Nizkij uroven'. V dannom punkte cvetnoj adaptor, monohromnyj adaptor i PCjr rassmatrivayutsya otdel'no, poskol'ku oni sushchestvenno otlichayutsya. Cvetnoj graficheskij adaptor imeet registr, kotoryj ustanavlivaet rezhim displeya. On raspolozhen v porte s adresom 3D8H. Bity 0, 1, 2 i 4 hranyat ustanovku. Bit 0 ustanavlivaet 40 simvolov v stroke, kogda on raven 0 i 80 - kogda raven 1. Bit 1 ustanavlivaet disp- lej v tekstovyj rezhim, kogda raven 0 i v graficheskij, kogda raven 1. Bit 2 ustanavlivaet cvetnoj rezhim, kogda raven 0 i cherno-be- lyj, kogda raven 1. I, nakonec, bit 4 ustanavlivaet dlya grafiches- kogo rezhima srednee razreshenie, kogda raven 0 i vysokoe razreshe- nie, kogda raven 1 (bit 2 dolzhen byt' raven 1). Nizhe privedeny vozmozhnye kombinacii: Rezhim bity: 5 4 3 2 1 0 0. 40*25, cherno-belyj, tekst 1 0 1 1 0 0 1. 40*25, cvetnoj, tekst 1 0 1 0 0 0 2. 80*25, cherno-belyj, tekst 1 0 1 1 0 1 3. 80*25, cvetnoj, tekst 1 0 1 0 0 1 4. 320*200, cherno-belyj, grafika 0 0 1 1 1 0 5. 320*200, cvetnoj, grafika 0 0 1 0 1 0 6. 640*200, cherno-belyj, grafika 0 1 1 1 1 0 ³ ³ ³ ³ ³ tekst 80*25 ³ ³ ³ ³ grafika 320*200 ³ ³ ³ cherno-belyj ³ ³ razreshenie vyvoda ³ grafika 640*200 miganie Izmenenie etih bitov ne privodit k izmeneniyu rezhima displeya. Nuzhno eshche mnogo shagov, vklyuchayushchih izmenenie parametrov pervyh 10 registrov po adresu porta 3D5H. BIOS zabotitsya obo vsem etom, poetomu ne imeet smysla zanimat'sya vsej etoj deyatel'nost'yu. Odna- ko inogda imeet smysl reinicializirovat' registr rezhima v ego tekushchem rezhime, izmenyaya bity 3 i 5, kotorye na samom dele ne ot- vechayut za ustanovku rezhima. Kogda bit 5 sbroshen v 0, to on zap- reshchaet atribut miganiya simvolov; v etom sluchae, esli starshij bit bajta atributov ustanovlen, to eto privodit k vyvodu fonovogo cveta vysokoj intensivnost'yu (sm. primer v [4.1.3]). Bit 3 etogo registra upravlyaet razresheniem vyvoda. Kogda on raven 0, to ves' ekran zakrashivaetsya v cvet ramki, no videobufer ne ochishchaetsya. Vyvod mgnovenno vozvrashchaetsya, kogda znachenie etogo bita menyaetsya na 1. |to svojstvo polezno ispol'zovat' dlya izbezhaniya interferen- cii ekrana pri sdvigah [4.5.1]. Nekotorye utility ispol'zuyut eto svojstvo dlya togo, chtoby zrya ne utomlyat' fosfornoe pokrytie tru- bki terminala, kogda komp'yuter vklyuchen, no ne ispol'zuetsya. Otme- tim takzhe, chto dva starshih bita registra ne ispol'zuyutsya. Monohromnyj adaptor imeet sootvetstvuyushchij adres porta 3B8H. Imeyut znachenie tol'ko tri bita. Bit 0 ustanavlivaet vysokoe raz- reshenie, kotoroe yavlyaetsya edinstvennym dopustimym rezhimom dlya monohromnogo displeya. Esli etot bit raven 0, to komp'yuter peres- taet rabotat'. Dva drugih znachashchih bita - eto bity 3 i 5, kotorye upravlyayut razresheniem vyvoda i miganiem, v tochnosti tak zhe, kak i dlya cvetnogo adaptora. PCjr raspredelyaet informaciyu, soderzhashchuyusya v odnom porte dlya monohromnog i cvetnogo adaptora. Massiv vorot displeya imeet dva registra rezhima, nomera 0 i 3. Dlya dostupa k etim registram nado poslat' nomer registra v port s adresom 3DAH, a zatem zapisat' dannye po tomu zhe adresu (chtenie etogo porta obespechivaet, chto pervaya zapis' v nego budet vosprinyata, kak ukazanie nomera tre- buemogo registra). Vot znachenie bitov etih registrov: Registr 0: bit 0 1 = tekst, 80*25 i rezhimy 5 i 6, inache 0 0 1 = graficheskij rezhim, 0 = tekstovyj 0 1 = zapret cvetov, 0 = razreshenie cvetov 0 1 = razreshenie vyvoda, 0 = zapret vyvoda 0 1 = 16-cvetnyj rezhim, 0 = vse ostal'nye rezhimy Registr 3: bit 0 vsegda 0 1 1 = razreshenie miganiya, 0 = 16 fonovyh cvetov 2 vsegda 0 3 1 = 2-cvetnaya grafika, 0 = vse ostal'nye rezhimy Kak i v dvuh predydushchih sluchayah, ne stoit ustanavlivat' eti re- gistry pryamo iz programmy, tak kak nuzhno eshche mnogo raboty dlya programmirovaniya mikroshemy 6845. No kazhdyj iz etih registrov soderzhit bit, kotoryj inogda prihoditsya programmno modificiro- vat', a poskol'ku eti registry tol'ko dlya zapisi, to Vam neobho- dimo ponimat' znachenie vseh ih bitov. |ti bity - bit razresheniya vyvoda v registre 0 i bit razresheniya miganiya v registre 3. Ih dejstvie bylo opisano ranee i vozmozhnoe ih ispol'zovanie eshche ne raz budet obsuzhdat'sya v etoj glave (v [4.5.1] i [4.1.3]). EGA imeet dva registra, upravlyayushchih rezhimom displeya. Odin imeet adres porta 3D5H. |tot registr ne soderzhit ni odnogo bita, svyazannogo s chem-libo drugim, poetomu net nikakih prichin obra- shchat'sya k nemu. Vtoroj registr imeet adres porta 3C0H i soderzhit bit, kotoryj vybiraet budet li bit 7 bajta atributov sootvetstvo- vat' miganiyu ili vysokoj intensivnosti. |tot vopros obsuzhdaetsya v [4.1.3]. 4.1.3 Ustanovka atributov/cvetov simvolov. Kogda displej ustanovlen v tekstovyj rezhim v lyuboj iz video sistem, to kazhdoj pozicii simvola na ekrane otvoditsya dva bajta pamyati. Pervyj bajt soderzhit nomer koda ASCII koda simvola, a vtoroj - atributy simvola. Cvetnoj adaptor i PCjr mogut vyvodit' v cvete, kak sam simvol, tak i vsyu oblast', otvedennuyu dannomu simvolu (fonovyj cvet). Monohromnyj adaptor ogranichen tol'ko chernym i belym cvetom, no on mozhet generirovat' podcherknutye simvoly, chego ne mogut delat' cvetnoj adaptor i PCjr. Vse tri sistemy mogut vydavat' migayushchie simvoly i negativnoe izobrazhenie. Vse tri sistemy mogut takzhe sozdavat' simvoly s vysokoj intensiv- nost'yu, hotya dlya cvetnogo adaptora i PCjr povyshennaya intensiv- nost' simvola na samom dele privodit k drugomu cvetu (vosem' osnovnyh cvetov imeyut versii s povyshennoj intensivnost'yu, chto daet nabor 16 cvetov). EGA umeet delat' vse, chto mogut vse os- tal'nye sistemy i mnogoe drugoe. V chastnosti, na uluchshennom disp- lee on mozhet vyvodit' podcherknutye cvetnye simvoly, poskol'ku matrica izobrazheniya simvolov 8*14 daet takuyu vozmozhnost'. Atributy cveta: Dlya ukazaniya cvetov ekrana odni i te zhe nomera kodov ispol'- zuyutsya v Bejsike i preryvaniyami operacionnoj sistemy. Oni takie: 0 - chernyj 8 - seryj 1 - sinij 9 - goluboj 2 - zelenyj 10 - svetlozelenyj 3 - cian 11 - svetlyj cian 4 - krasnyj 12 - svetlokrasnyj 5 - magenta 13 - svetlaya magenta 6 - korichnevyj 14 - zheltyj 7 - belyj 15 - yarkobelyj Mladshie chetyre bita bajta atributov ustanavlivayut cvet samogo simvola (bit 3 vklyuchaet vysokuyu intensivnost'). Sleduyushchie tri bita ustanavlivayut fon simvola. I pri obychnyh obstoyatel'stvah starshij bit vklyuchaet i vyklyuchaet miganie. Takim obrazom: kogda bit 0 = 1, sinij vklyuchaetsya v osnovnoj cvet 1 = 1, zelenyj vklyuchaetsya v osnovnoj cvet 2 = 1, krasnyj vklyuchaetsya v osnovnoj cvet 3 = 1, simvol vyvoditsya s vysokoj intensivnost'yu 4 = 1, sinij vklyuchaetsya v fonovyj cvet 5 = 1, zelenyj vklyuchaetsya v fonovyj cvet 6 = 1, krasnyj vklyuchaetsya v fonovyj cvet 7 = 1, simvoly migayut Bity 0-2 i 4-6 soderzhat odni i te zhe komponenty cvetov dlya samih simvolov i fona. |ti trehbitnye gruppy pozvolyayut 8 vozmozh- nyh kombinacij. Kogda vklyuchaetsya bit vysokoj intensivnosti, to dobavlyayutsya eshche 8 cvetov. SHestnadcat' vozmozhnyh cvetov poluchayutsya iz etih ustanovok bitov sleduyushchim obrazom: Krasnyj Zelenyj Sinij Nizkaya intensivnost' Vysokaya 0 0 0 chernyj seryj 0 0 1 sinij svetlosinij 0 1 0 zelenyj svetlozelenyj 0 1 1 cian svetlyj cian 1 0 0 krasnyj svetlokrasnyj 1 0 1 magenta svetlaya magenta 1 1 0 korichnevyj zheltyj 1 1 1 belyj yarkobelyj Mozhno imet' 16 cvetov i dlya fonovogo cveta. V etom sluchae bit 7 dolzhen sluzhit' ukazatelem vysokoj intensivnosti dlya fona, a ne ukazatelem miganiya simvolov. Dlya cvetnogo adaptora nado izmenit' bit 5 porta s adresom 3D8H v 0, kak pokazano nizhe. Poskol'ku etot port dostupen tol'ko dlya zapisi, to vse ostal'nye bity dolzhny byt' pereustanovleny. |ta vozmozhnost' dostupna tol'ko v dvuh sluchayah: tekstovyh rezhimov s 40 i s 80 simvolami v stroke. Dlya rezhima s 80 simvolami nado poslat' v port chislo 9, a dlya rezhima s 40 simvolami - chislo 8. CHtoby vernut' miganie nado dobavit' k oboim etim znacheniyam 32. Dlya PCjr nado sbrosit' v 0 bit 1 regist- ra 3 massiva vorot displeya. Vse ostal'nye bity dolzhny byt' ravny nulyu, krome nomera 3, kotoryj dolzhen byt' ustanovlen dlya rezhima dvuhcvetnoj grafiki. Krome etogo rezhima, dlya ustanovki bita miga- niya nado snachala prochitat' port s adresom 3DAH, chtoby podgotovit' massiv vorot displeya, zatem poslat' v nego 3, chtoby ukazat' re- gistr, i zatem poslat' 0, chtoby ustanovit' bit miganiya. Pri za- vershenii programmy vsegda nado vosstanavlivat' miganie, tak kak sleduyushchaya programma mozhet polagat'sya na eto. EGA takzhe mozhet razreshat'/zapreshchat' miganie, hotya v etom slu- chae adres porta 3C0H. Snachal nado prochitat' port 3DAH, chtoby poluchit' dostup k adresnomu registru v 3C0H. zatem nado poslat' v 3C0H 10H, chtoby ukazat' sootvetstvuyushchij registr. Nakonec, nado poslat' dannye po tomu zhe adresu. Poskol'ku etot registr tol'ko dlya zapisi, to vse bity dolzhny byt' pravil'no ustanovleny. Miga- nie vklyuchaetsya ustanovkoj bita 3, a vyklyuchaetsya sbrosom etogo bita. Vse ostal'nye bity v cvetnom tekstovom rezhime dolzhny byt' ravny 0. Dlya cvetnogo adaptora, kogda simvoly vyvodyatsya na displej v cvetnom graficheskom rezhime, to oni izobrazhayutsya v tekushchem fonovom cvete. Operatory, kotorye vyvodyat na ekran, kak v Bejsike, tak i v MS DOS (preryvanie 21H) ogranicheny vyvodom simvolov v tret'em cvete ispol'zuemoj paletty (imeyutsya dve paletty iz treh cvetov - sm. [4.4.1]). V palette 0 simvoly zheltye/korichnevye, a v palette 1 oni belye. Procedury vyvoda simvolov BIOS (preryvanie 10H), odnako, mogut ukazat' lyuboj iz treh cvetov paletty. S drugoj storony, dlya PCjr, cvet naznachennyj opredelennoj pozicii paletty mozhet byt' izmenen, poetomu dlya vyvoda simvolov mogut ispol'zova- ny lyubye cveta. Dlya PCjr cveta sootvetstvuyushchie dannym kodovym nomeram mogut byt' izmeneny. Kazhdyj kodovyj nomer svyazan s registrom paletty v massive vorot displeya [4.1.1]. |ti registry pronumerovany ot 10H do 1FH, chto sootvetstvuet kodam ot 0 do 15. Kazhdyj 4-bitnyj re- gistr soderzhit chislo v diapazone 0-15, kotoroe predstavlyaet real'nyj cvet, vyvodimyj kogda operator programmy vstrechaet odin iz kodovyh nomerov. Naprimer, esli v kakom-to meste programmy ukazano, chto simvol dolzhen vyvodit'sya s kodovym nomerom 0, to cvet vyvodimogo simvola opredelyaetsya kodom cveta, hranyashchemsya v registre paletty 0. Nachal'noe znachenie etogo registra 0000, poe- tomu budet vyvodit'sya chernyj cvet. No soderzhimoe etogo registra mozhet byt' izmeneno, skazhem, na 0001, a v etom sluchae kodovyj nomer 0 priveden k vyvodu sinim cvetom. Kodovye nomera, ispol'- zuemye v registrah paletty takie zhe, kak i v operatorah program- my. Na ris. 4-1 pokazana nachal'naya ustanovka registrov paletty dlya vseh registrov, krome registra dlya zelenogo cveta, kotoryj izmenen tak, chtoby vyvodilsya cvet magenta. CHtoby zaprogrammirovat' registr paletty PCjr nuzhno snachala poslat' ego nomer (ot 10H do 1FH) v massiv vorot displeya, adres porta kotorogo 3DAH. Zatem nuzhno poslat' dannye po tomu zhe adre- su. CHtoby byt' uverennym, chto massiv gotov prinyat' nomer regist- ra, a ne dannye, nado snachala prochitat' iz porta 3DAH, otbrosiv prochitannoe. EGA takzhe ispol'zuet 16 registrov paletty. Oni raspolozheny v porte s nomerom 3C0H, a nomera ih menyayutsya ot 00 do 0FH. Nado snachala prochitat' iz porta 3DAH, chtoby pereklyuchit' port na ego adresnyj registr, zatem poslat' nomer registra paletty v 3C0H, a zatem poslat' dannye. Kogda pereklyuchateli na EGA ustanovleny na uluchshennyj rezhim (dlya uluchshennogo cvetnogo displeya IBM), to pa- letta mozhet byt' vybrana iz 64 cvetov. V etom sluchae ustanovka registra paletty imeet dlinu 6 bitov v formate R'G'B'RGB. Bity RGB dayut temnye cvety, a bity R'G'B' - cveta povyshennoj yarkosti. Kogda ustanovleny i R' i R, naprimer, to eto privodit k ochen' yarkomu krasnomu cvetu. Bity mogut smeshivat'sya davaya novye otten- ki. Esli registry paletty, prednaznachennye dlya 64 cvetov, ispol'- zuyutsya ne v uluchshennom rezhime, to 4-j i 5-j bity registra ignori- ruyutsya i soderzhimoe registrov rassmatrivaetsya po obychnoj sheme RGB. Poskol'ku PCjr i EGA ispol'zuyut registry paletty, to vybor fonovogo cveta ne ogranichen ispol'zovaniem bita 7 bajta atributov v kachestve bita miganiya. Monohromnye simvoly: Monohromnye simvoly ispol'zuyut bajt atributov neskol'ko bolee strannym obrazom. Kak i s atributami cveta, bity 0-2 ustanavli- vayut osnovnoj cvet, a bity 4-6 - fonovyj. |ti cveta mogut byt' tol'ko belym i chernym, so sleduyushchim sootvetstviem bitam: Bit Bit Bit Osnovnoj atribut Fonovyj 6 ili 2 5 ili 1 4 ili 0 0 0 0 chernyj chernyj 0 0 1 podcherknutyj belyj belyj 0 1 0 belyj belyj 0 1 1 belyj belyj 1 0 0 belyj belyj 1 0 1 belyj belyj 1 1 0 belyj belyj 1 1 1