Režim 13h - Mode 13h

Výchozí paleta VGA 256 barev

Režim 13h je standardní 256barevný režim na grafickém hardwaru VGA představený v roce 1987 s IBM PS / 2 . Má rozlišení 320 × 200 pixelů . To bylo používáno značně v počítačových hrách a umění / animační software z konce 1980 a brzy k polovině-1990. „13h“ označuje číslo režimu v systému VGA BIOS . „H“ znamená hexadecimální ; ve skutečnosti je to režim 19 v desítkové soustavě.

Režim 13h poskytuje programátorům lineární blok grafické paměti 320 x 200 , kde každý bajt představuje jeden pixel. To umožňuje snadné programování na úkor přístupu k dalším užitečným funkcím hardwaru VGA.

Vzhledem k poměru stran obrazovky s rozlišením 320 × 200 pro použití na displeji 4: 3 nemá režim 13h čtvercové pixely .

Technické údaje

Režim 13h je něco zvědavého, protože VGA je z hardwarového hlediska planární zařízení a není vhodné pro robustní grafický provoz. VGA má 256  KiB videopaměti skládající se ze 4 bank po 64 KiB, známých jako letadla (nebo „mapy“ v dokumentaci IBM). Uspořádání rovinné paměti rozděluje pixely vodorovně do čtyřčlenných skupin. U libovolného daného bajtu v otvoru videopaměti 64 KiB počítače lze na obrazovce přistupovat ke čtyřem pixelům výběrem požadované roviny. To je pro programátora komplikovanější, ale umožňuje to přístup ke všem dostupným videopaměti a dalším výhodám (viz režim X ).

Režim 13h však umožňuje programátorovi přistupovat k VGA „chunky“ (lineárně), kde každá po sobě jdoucí adresa v cloně představuje po sobě jdoucí pixel na obrazovce. S letadly není třeba manipulovat, abyste vybrali správné pixely, které chcete upravit nebo přečíst. Toho je dosaženo použitím nastavení VGA „Chain 4“, ve kterém jsou nejnižší dva bity 16bitové adresy clony použity k výběru roviny, ze které se má zapisovat / číst. Výsledkem je, že programátor má jednoduchý model přístupu; Nevýhodou je, že nyní je přístupných pouze 2 14 (16 KiB) adresového prostoru video roviny (další 2 bity se používají k výběru rovin), takže je adresovatelných pouze celkem 64 KiB (4 × 16 KiB). Horních 48 KiB každé roviny zůstává v tomto režimu nevyužito.

Na rozdíl od SVGA a vyšších barevných hloubek má režim 13h, který je součástí sady video režimů MCGA , 18 bitů barev, 6 na kanál. Data palety se neukládají do paměti samy o sobě , ale spíše se upravují, čtou a zapisují do nízkoúrovňových volání I / O portů do registrů DAC .

Data barevné palety byla často kopírována z nízkoúrovňových portů jeden po druhém do místa v paměti po datech na obrazovce, takže barvy mohly být uloženy spolu s pixely, ke kterým patřily. Snímání obrazovky v režimu 13 h je pouze 64 000 bajtů hodnot od 0 do 255, každý index barvy ze známé palety více barev. Pokud je paleta barev neuspořádaná nebo zcela nesprávná, zelený list se objeví modrý nebo jakoukoli jinou možnou barvu, v závislosti na tom, pro kterou byla konkrétní barva nastavena, která konkrétní z 256.

Kvůli způsobu, jakým jsou v takovém prostředí přidělovány bloky paměti, lze na bajty na vysoké adrese a nízké adrese hA000 64000 až 64768 zapisovat bez negativních účinků. To umožňuje programátorovi uložit další bajty, 256 (barvy) × 3 (barevné kanály) = 768 bajtů, na konec souboru pro zachycení obrazovky. Je třeba je znovu načíst a zapsat na barevný port, aby se mohly změnit, když se načte obrázek obsahující zápatí s barevnými informacemi. Použitou metodou bylo mít globální paletu a sladit barvy ze staré palety barev s novou paletou barev. To znamenalo změnit index každého pixelu, kde by ukazoval na téměř dokonalou shodu jedné barvy ze staré do nové sady barev. To mělo také nevýhody, protože někdy nebylo dost přechodů a objevovaly se artefakty a podobné věci.

Není nutné nastavovat grafický režim prostřednictvím systému BIOS; je možné přepnout grafický režim do 32bitového chráněného režimu, pokud je to trochu komplikovanější. Zahrnuje zápis dat o velikosti do řadiče VGA.

Varianty

Alternativní rovinný 256barevný režim je k dispozici deaktivací režimu Chain 4 (zrušení rozepnutí). Režimy videa vytvořené pomocí této techniky se souhrnně nazývají Režim X , ačkoli původní použití tohoto výrazu bylo pro režim VGA, který měl také čtvercové pixely. Zatímco tyto režimy (spolu s mnoha dalšími možnými režimy VGA) nebyly IBM konkrétně zdokumentovány, hardwarové funkce a funkce VGA použité k jejich implementaci byly zdokumentovány přinejmenším již v roce 1988 v Technické příručce hardwarového rozhraní PS / 2 .

Zápis

V x86 assembleru je režim zadán, když AL je 13h, AH je 0 a je spuštěn BIOS INT 10h . U jazyků, které tuto metodu notace nepodporují, je však „h“ zrušeno; například je známý jako režim obrazovky 13 v QuickBasicu a jeho spinoffech. (Mělo by však být poznamenáno, že QuickBASIC má své vlastní schéma číslování režimů obrazovky a mnoho režimů obrazovky QuickBASIC má čísla, která se liší od režimů BIOSu, na kterých jsou založeny.) V jazyce C je hexadecimální číslo 13 napsáno 0x13.

Reference

externí odkazy