VGA textový režim - VGA text mode

Textový režim VGA představila v roce 1987 společnost IBM jako součást standardu VGA pro své počítače IBM PS/2 . Jeho použití na kompatibilních počítačích IBM PC bylo rozšířené v devadesátých letech minulého století a přetrvává dodnes u některých aplikací na moderních počítačích. Hlavními rysy textového režimu VGA jsou barevné (programovatelná 16 barevná paleta ) znaky a jejich pozadí, blikání, různé tvary kurzoru (blok/podtržení/skrytá statika/blikání) a načítatelná písma (s různými velikostmi glyfů). Linux konzole tradičně využívá hardware VGA textové režimy a konzoly Win32 prostředí má možnost přepnout na obrazovku textového režimu pro některé velikosti textu okna.

  Charakteristické rysy VGA textu, jak se běžně používá:

  Světle šedé pozadí (obvykle není bílé).

Kreslení boxů.

Různé kombinace
pozadí/popředí
.

Ukázka animace textu VGA.gif 16 barevná paleta CGA – EGA pro popředí.
Blikající text.
  Kurzor.
 
 

Uspořádání dat

Textová vyrovnávací paměť

Každý znak obrazovky je reprezentován dvěma bajty zarovnanými jako 16bitové slovo přístupné CPU v jedné operaci. Nižší neboli znakový bajt je skutečný kódový bod pro aktuální znakovou sadu a vyšší neboli atribut bajt je bitové pole používané k výběru různých atributů videa, jako je barva, blikání, znaková sada atd. Toto schéma párů bajtů patří mezi funkce, které VGA zdědil od EGA , CGA a nakonec od MDA .

Atribut Charakter
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Blikat Barva pozadí Barva popředí Bod kódu
  1. ^ V závislosti na nastavení režimu může být bit atributu 7 buď blikající bit nebo čtvrtý bit barvy pozadí (což umožňuje použít všech 16 barev jako barvy pozadí).
  2. ^ Atribut bit 3 (intenzita popředí) také vybírá mezi písmeny A a B (vizníže). Pokud tedy tato písma nejsou stejná, je tento bit současně dalším bitem bodového kódu.
  3. ^ Atribut bit 0 také umožňuje podtržení, pokud jsou některé další bity atributů nastaveny na nulu (vizníže).

Barvy jsou přiřazovány stejným způsobem jako ve 4bitových indexovaných barevných grafických režimech (viz paleta barev VGA ). Režimy VGA nepotřebují reverzní a jasné atributy MDA, protože barvy popředí a pozadí lze explicitně nastavit.

Zdůraznit

Hardware VGA má schopnost povolit podtržení jakéhokoli znaku, který má nastaven bit 0 atributu. Protože se však jedná o funkci kompatibilní s MDA, musí být bity atributů, které MDA nepoužívá, nastaveny na nulu, jinak se podtržení nezobrazí. To znamená, že souběžně s bitem 0 (podtržení) lze nastavit pouze bity 3 (intenzita) a 7 (blikání). U výchozí palety VGA nastavení bitu 0 pro povolení podtržení také změní barvu textu na modrou. To znamená, že lze podtrhnout text pouze ve dvou barvách (5555FF a 0000AA s výchozí paletou).

Navzdory tomu všemu podtržení není normálně viditelné v barevných režimech, protože umístění podtržení je implicitně nastaveno na čáru skenování pod glyfem znaků, takže je neviditelný. Pokud je umístění podtržení nastaveno na viditelnou čáru skenování (jako je tomu ve výchozím nastavení při přepnutí do režimu monochromatického textu kompatibilního s MDA), zobrazí se podtržení.

Písma

Norton Utilities 6.01, příklad pokročilého TUI, který předefinuje znakovou sadu tak, aby v textovém režimu zobrazovala drobné grafické widgety , ikony a ukazatel šipky.
VGA nám ukazuje kódovou stránku 737 s řeckými písmeny

Obrazová písma používaná v EGA a VGA jsou monospace rastrová písma obsahující 256 glyfů. Všechny glyfy v písmu mají stejnou velikost, ale tuto velikost lze změnit. Glyfy jsou obvykle široké 8 bodů a vysoké 8–16 bodů, výška však může mít libovolnou hodnotu až do maxima 32. Každý řádek glyfu je kódován v 8bitovém bajtu s vysokými bity nalevo od glyf a nízké bity vpravo. Spolu s několika hardwarově závislými písmy uloženými v paměti ROM adaptéru nabízí textový režim 8 načtitelných písem. Dva aktivní ukazatele písem (písmo A a písmo B) vybírají dvě z dostupných písem, ačkoli obvykle ukazují na stejné písmo. Když každý ukazuje na různá písma, bit atributu 3 (viz výše ) funguje jako bit pro výběr písem místo jako bit barvy popředí. Na skutečném hardwaru VGA to má přednost před použitím bitu pro výběr barev, ale na mnoha klonech a emulátorech zůstává výběr barev-což znamená, že jedno písmo je zobrazeno jako normální intenzita a druhé jako vysoká intenzita. Tuto chybu lze překonat změnou registrů palety tak, aby obsahovaly dvě kopie 8barevné palety.

Existují režimy se šířkou pole znaků 9 bodů (např. Výchozí režim 80 × 25), nicméně 9. sloupec slouží k mezerám mezi znaky, takže obsah nelze změnit. Je vždy prázdné a nakreslené aktuální barvou pozadí. Výjimkou je režim Line Graphics Enable , který způsobí, že kódovým bodům 0x C0 až 0xDF včetně bude 8. sloupec opakován jako 9.. Tyto body kódu pokrývají znaky kreslení rámečků, které musí zasahovat až na pravou stranu pole glyfů. Z tohoto důvodu by se nemělo umisťovat znaky podobné písmenům v bodech kódu 0xC0–0xDF. Znaky kreslení rámečků od 0xB0 do 0xBF nejsou rozšířeny, protože neukazují doprava, a proto nevyžadují prodloužení.

Kurzor

Kurzor myši v nástroji Impulse Tracker

Tvar kurzoru je omezen na obdélník po celé šířce pole znaků a je vyplněn barvou popředí znaku v aktuálním umístění kurzoru. Jeho výšku a polohu lze nastavit kdekoli v poli znaků ;. Klony EGA a mnoho VGA umožňovaly kurzor děleného pole (zobrazující se jako dva obdélníky, jeden v horní části pole znaků a jeden v dolní části), nastavením konce kurzoru před začátkem, pokud se to však provádí na původní VGA, kurzor je místo toho zcela skrytý. Standard VGA neposkytuje způsob, jak změnit rychlost blikání, ačkoli běžná řešení zahrnují skrytí kurzoru a použití normálního znakového glyfu k poskytnutí takzvaného softwarového kurzoru.

Myš kurzor TUI (je-li zaveden), obvykle není totéž jako hardwarový kurzor, ale pohybující se obdélník se změněnou pozadí nebo speciálního symbolu.

Některá textová rozhraní, jako například Impulse Tracker , byla ještě větší, aby poskytla hladší a graficky vypadající kurzor myši. Toho bylo dosaženo neustálou re-generací znakových glyfů v reálném čase podle polohy kurzoru na obrazovce.

Přístupové metody

Obecně existují dva způsoby přístupu k textovému režimu VGA pro aplikaci: prostřednictvím rozhraní Video BIOS nebo přímým přístupem k video RAM a I/O portům. Druhá metoda je podstatně rychlejší a umožňuje rychlé čtení vyrovnávací paměti textu, a proto je upřednostňována pro pokročilé programy TUI.

Vyrovnávací paměť textu VGA je umístěna na adrese fyzické paměti 0xB8000. Protože tuto adresu obvykle používají 16bitové procesy x86 pracující v reálném režimu, je to také první polovina paměťového segmentu 0xB800. Data vyrovnávací paměti textu lze číst a zapisovat a lze použít bitové operace . Část textové vyrovnávací paměti nad rozsah aktuálního režimu je přístupná, ale není zobrazena.

V chráněném režimu se používají stejné fyzické adresy . Aplikace mohou mít buď tuto část paměti namapovanou do svého adresního prostoru, nebo k ní přistupovat prostřednictvím operačního systému . Když aplikace (na moderním víceúlohovém OS) nemá kontrolu nad konzolou , přistupuje místo skutečné vyrovnávací paměti textu k části systémové paměti RAM.

Pro počítače v 80. letech byla velmi rychlá manipulace s vyrovnávací pamětí textu s hardwarem generujícím jednotlivé pixely tak rychle, jak je bylo možné zobrazit, extrémně užitečná pro rychlé uživatelské rozhraní. I na relativně moderním hardwaru může být patrná režie emulace textového režimu prostřednictvím hardwarových režimů APA (grafika) (ve kterých program generuje jednotlivé pixely a ukládá je do vyrovnávací paměti videa).

Režimy a načasování

Video signál

Ze strany monitoru není žádný rozdíl ve vstupním signálu v textovém režimu a režimu APA stejné velikosti. Signál textového režimu může mít stejná časování jako standardní režimy VESA . K nastavení těchto parametrů v textovém režimu jsou na straně adaptéru použity stejné registry jako v režimech APA. Výstupní signál textového režimu je v podstatě stejný jako v grafických režimech, ale jeho zdrojem je textový buffer a generátor znaků, nikoli framebuffer jako v APA.

Běžné textové režimy PC

V závislosti na použitém grafickém adaptéru je na počítačích kompatibilních s IBM PC k dispozici řada textových režimů . Jsou uvedeny v následující tabulce:

Režim (y)
(desetinné)
Režim (y)
(hex)
Typ Text res.
(Š × V)
Char. velikost Grafické rozlišení Barvy /
paměťový model
Adaptéry
7 0007h VGA text 80 × 25 9 × 14 720 × 350 2 (mono) /
MTEXT
MDA , Hercules
6 0006h VGA G 80 × 25 8 × 8 640 × 200 2 (mono) /
CGA
Hercules, CGA, PCjr , EGA, MCGA
0, 1 0000h, 0001h VGA text 40 × 25 8 × 8 320 × 200 16 /
CTEXT
CGA , EGA
2 0002h VGA text 80 × 25 8 × 8 640 × 200 16 (šedá) /
CTEXT
CGA, EGA
2, 3 0002h, 0003h VGA text 80 × 25 9 × 16 720 × 400 16 /
CTEXT
CGA, EGA
16 0010h VGA G 80 × 25 8 × 14 640 × 350 4 / PL4, 16 / PL16 64k EGA , 256k EGA, VGA
17 0011h VGA G 80 × 30 8 × 16 640 × 480 2 (mono) /
PL1
VGA, MCGA, ATI EGA, ATI VIP
23, 88 0017h, 0058h VGA text 80 × 43 8 × 8 640 × 350, 640 × 348 16 /
CTEXT
NEL Electronics BIOS, EGA
102 0066h VESA Text, VGA G, Video7 G 80 × 50 8 × 8 640 × 400 16 / CTEXT, 256K / LINEAR, 256 / LINEAR8 Video7 V-RAM VGA, WD90C, Diamond Speedstar 24X
38, 67, 82, 264 0026h, 0043h, 0052h, 0108h Video7 Text, VGA G 80 × 60 8 × 8 640 × 480 16 / CTEXT, 256K / LINEÁRNÍ Tseng Labs EVA, Tseng ET3000/4000, VEGA VGA, Trident TVGA 8800/8900, Video7 V -RAM VGA, VESA kompatibilní Super VGA
35, 20, 23, 27, 39, 65, 2369, 265 0023h, 0014h, 0017h, 001Bh, 0027h, 0041h, 0941h, 0109h VESA Text, VGA G 132 × 25 8 × 14, 9 × 14, 8 × 16, 8 × 8 1056 × 350, 1188 × 350, 1056 × 400, 1056 × 200 2 (mono) / MTEXT, 4 (šedý) / TEXT, 16 / CTEXT, 256K / LINEAR Tseng ET3000, Tseng ET4000, ATI EGA/VGA Wonder, Cirrus CL-GD5420/5422/5426, VESA kompatibilní Super VGA
29, 66, 84, 86, 266 001Dh, 0042h, 0054h, 0056h, 010Ah VESA Text, VGA G 132 × 43 9 × 11, 8 × 9, 9 × 9 1188 × 473, 1056 × 387, 1188 × 387 16 / CTEXT, 256K / LINEÁRNÍ VESA kompatibilní Super VGA
34, 51, 99, 2370 0022h, 0033h, 0063h, 0942h Text VESA 132 × 44 8 × 8, 9 × 8 1056 × 352, 1188 × 352 16 /
CTEXT
Tseng Labs EVA, ATI EGA Wonder, ATI VIP, Janov SuperEGA
81, 97, 105, 267 0051h, 0061h, 0069h, 010Bh Text VESA 132 × 50 8 × 8 1056 × 400 16 /
CTEXT
MORSE VGA, Cirrus 5320, WD90C, VESA kompatibilní Super VGA
33, 82, 30, 268 0021h, 0052h, 001Eh, 010Ch Text VESA 132 × 60 8 × 8, 9 × 8 1056 × 480, 1188 × 480 16 /
CTEXT
Tseng ET4000, MORSE VGA, Realtek RTVGA, VESA kompatibilní Super VGA
47 002Fh Video7 Text, VGA G 160 × 50 8 × 8,. 1280 × 400, 720 × 512 16 / CTEXT, 256 / LINEAR8 Ahead B (Wizard/3270), VEGA VGA, Janov
68, 2372 0044h, 0944h Video7 Text 100 × 60 8 × 8 800 × 480 16 /
CTEXT
Video7 V-RAM VGA, VEGA VGA, Tatung VGA

VGA a kompatibilní karty podporují režimy MDA, CGA a EGA. Všechny barevné režimy mají stejný design textových atributů. Režimy MDA mají některé specifické funkce (viz výše ) - text lze zdůraznit jasnými, podtrženými, obrácenými a blikajícími atributy.

Nejběžnějším textovým režimem používaným v prostředích DOS a počátečních konzolách Windows je výchozí 80 sloupců po 25 řádcích nebo 80 × 25 se 16 barvami a 8 × 16 pixely velkými znaky. Karty VGA mají vždy vestavěné písmo této velikosti, zatímco jiné velikosti mohou vyžadovat stažení písma jiné velikosti. Tento režim byl k dispozici prakticky na všech osobních počítačích IBM a kompatibilních.

Linux kernel 2.6 a novější předpokládá režimy od 0000h do 00FFh standardně (hexadecimálně), pokud to VGA BIOS podporuje, a chápe je jako zvýšené o 0x0100. Stejné pro režimy VESA BIOS od 0100h do 07FFh (Linux je zvyšuje o 0x0100). Režimy od 0900h do 09FFh jsou speciální režimy Video7, (obvykle 0940h = 80 × 43, 0941h = 132 × 25, 0942h = 132 × 44, 0943h = 80 × 60, 0944h = 100 × 60, 0945h = 132 × 28 pro standardní Video7 BIOS ). Linux 2.x umožňuje kontrolovat podporovaná rozlišení videa pomocí argumentu jádra „vga = ask“ nebo „vga = <MODE_NUMBER>“.

Pozdější verze Linuxu umožňují specifikovat rozlišení v režimech od 1000h do 7FFFh . Kód má formu "0xHHWW", kde HH je počet řádků a WW je počet sloupců. Například 1950 h (0x1950) odpovídá režimu 80 × 25, 2B84h (0x2b84) až 132 × 43 atd. (Linux 3.x a novější umožňuje nastavit rozlišení pomocí „video = <conn>: <xres> x <yres> “, ale je to pro grafický režim video framebuffer .)

Dva další textové režimy VGA, 80 × 40 a 80 × 50 , existují, ale jsou méně časté. Systém Windows NT 4.0 zobrazoval během zavádění v textovém režimu 80 × 50 své systémové zprávy.

Velikost znaků a grafické rozlišení pro rozšířené textové režimy Super VGA kompatibilní s VESA závisí na výrobci . Některé karty (např. S3 ) podporovaly vlastní velmi velké textové režimy, například 132 × 43 a 132 × 25. Stejně jako v grafických režimech jsou grafické adaptéry 2000s běžně schopné nastavit textový režim libovolné velikosti (v rozumných mezích) namísto výběru jeho parametrů z nějakého seznamu.

SVGATextMode

V systémech Linux a DOS s takzvanými kartami SVGA lze pomocí programu SVGATextMode nastavit lépe vypadající textové režimy než standardní režimy EGA a VGA. To je obzvláště užitečné u velkých (≥ 17 ") monitorů, kde je normální rozlišení textu 80 × 25 VGA v rozlišení 720 × 400 pixelů mnohem nižší, než by byl běžný grafický režim. SVGATextMode umožňuje nastavení taktu pixelů a vyšší obnovovací frekvenci , větší velikost písma, velikost kurzoru atd. a umožňuje lepší využití potenciálu grafické karty a monitoru. V systémech jiných než Windows použití SVGATextMode (nebo alternativních možností, jako je Linux framebuffer ) k získání ostrého textu je rozhodující pro LCD monitory s rozlišením 1280 × 1024 (nebo vyšším), protože žádný z takto pojmenovaných standardních textových režimů nevyhovuje této velikosti matice. SVGATextMode také umožňuje jemné doladění časování video signálu.

Navzdory názvu tohoto programu odpovídá standardům SVGA (tj. VESA) pouze několik jeho podporovaných režimů.

Obecná omezení

Textový režim VGA má určitá hardwarová omezení. Protože jsou pro moderní aplikace (po roce 2000) příliš omezující, má textový režim hardwaru na grafických adaptérech kompatibilních s VGA pouze omezené použití.

Parametr Originální VGA Moderní video adaptéry Poznámky

Šířka znakové buňky (glyf)
8 nebo 9 bodů ≤  9 bodů Ne každý hardware podporuje glyfy užší než 8 bodů.

Výška znakové buňky (glyf)
≤  32 bodů
Počet buněk znaků Nejméně
4000
(dosahováno při 80 × 50)
≤  16 384 = 2 14
(omezení adresování paměti)
Moderní adaptér, pokud podporuje nestandardní režimy, může produkovat přiměřeně hustou textovou obrazovku i na velkém monitoru.
Šířka v buňkách znaků
( znaky na řádek )
Nejméně
80
≤ 256 (?)
Výška v buňkách znaků
(počet řádků)
Nejméně
50
(dosaženo při 80 × 50)
Velikost kódové stránky
(počet různých glyfů zobrazených současně)
≤  512  = 2 9
(pokud písmo A ≠ písmo B)
I 512 nestačí na komplexní podporu Unicode .
≤  256  = 2 8
(pokud písmo A = písmo B)
Počet barev popředí: 16 *

pozadí: 8 nebo 16 **

16 libovolně zvolených barev, není pevné.

* 8 barev může být použito písmem A a dalších 8 barev písmem B; pokud tedy písmo A ≠ písmo B (režim 512 znaků), pak by měla být paleta na polovinu a text může efektivně používat pouze 8 barev.
** Normálně prvních 8 barev stejné palety. Pokud je blikání vypnuto, je pro pozadí k dispozici všech 16 barev.

Viz také

Reference