VGA-textläge

VGA-textläge introducerades 1987 av IBM som en del av VGA -standarden för sina IBM PS/2- datorer. Dess användning på IBM PC-kompatibla enheter var utbredd under 1990-talet och kvarstår idag för vissa applikationer på moderna datorer. Huvudfunktionerna i VGA-textläget är färgade (programmerbar palett med 16 färger ) tecken och deras bakgrund, blinkande, olika former av markören (blockera/understryka/dold statisk/blinkande) och laddningsbara typsnitt (med olika glyfstorlekar). Linux -konsolen använder traditionellt hårdvaru-VGA-textlägen, och Win32-konsolmiljön har en förmåga att växla skärmen till textläge för vissa textfönsterstorlekar.

Utmärkande egenskaper hos VGA-text som den vanligtvis används:

Ljusgrå bakgrund (normalt inte vit).

Lådteckning.



Olika bak-/förgrundskombinationer .

VGA text sample animation.gif
CGA-EGA-stil 16 färgpalett för förgrunden. Blinkande text.
  Markör.
 
 

Dataarrangemang

Textbuffert

Varje skärmtecken representeras av två byte inriktade som ett 16-bitars ord som är åtkomligt av CPU:n i en enda operation. Den lägre, eller tecknet, byten är den faktiska kodpunkten för den aktuella teckenuppsättningen, och den högre, eller attribut, byten är ett bitfält som används för att välja olika videoattribut som färg, blinkning, teckenuppsättning och så vidare. Detta byte-parschema är bland funktionerna som VGA ärvt från EGA , CGA , och slutligen från MDA .

Attribut Karaktär
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Blinka Bakgrundsfärg Förgrundsfärg Kodpunkt
  1. ^ Beroende på lägesinställningen kan attributbit 7 vara antingen blinkbiten eller den fjärde bakgrundsfärgbiten (vilket gör att alla 16 färgerna kan användas som bakgrundsfärger).
  2. ^ Attributbit 3 (förgrundsintensitet) väljer också mellan typsnitt A och B (se nedan ). Därför, om dessa teckensnitt inte är samma, är denna bit samtidigt en extra kodpunktsbit.
  3. ^ Attributbit 0 möjliggör också understrykning, om vissa andra attributbitar är nollställda (se nedan ).

Färger tilldelas på samma sätt som i 4-bitars indexerade färggrafiklägen (se VGA-färgpalett ) . VGA-lägen har inget behov av MDA:s omvända och ljusa attribut eftersom förgrunds- och bakgrundsfärger kan ställas in explicit.

Understrykning

VGA-hårdvaran har förmågan att möjliggöra en understrykning på alla tecken som har attributbit 0 inställd. Men eftersom detta är en MDA-kompatibel funktion måste de attributbitar som inte används av MDA:n ställas in på noll annars kommer understrykningen inte att visas. Detta innebär att endast bit 3 (intensitet) och 7 (blinkande) kan ställas in samtidigt med bit 0 (understrykning). Med standard VGA-paletten ändras även textfärgen till blå om du ställer in bit 0 för att aktivera understrykning. Detta innebär att text i endast två färger kan understrykas (5555FF och 0000AA med standardpaletten).

Trots allt detta är understrykningen normalt inte synlig i färglägen, eftersom platsen för understrykningen som standard är en skanningslinje under teckenglyfen, vilket gör den osynlig. Om understrykningsplatsen är inställd på en synlig skanningslinje (som det är som standard när du växlar till ett MDA-kompatibelt svartvitt textläge), kommer understrykningen att visas.

Teckensnitt

VGA visar oss kodsidan 737 med grekiska bokstäver

Skärmteckensnitt som används i EGA och VGA är monospace- rasterteckensnitt som innehåller 256 glyfer. Alla tecken i ett teckensnitt har samma storlek, men denna storlek kan ändras. Vanligtvis är glyfer 8 punkter breda och 8–16 punkter höga, men höjden kan vara vilket värde som helst upp till maximalt 32. Varje rad i en glyph är kodad i en 8-bitars byte , med höga bitar till vänster om glyph och låga bitar till höger. Tillsammans med flera hårdvaruberoende teckensnitt lagrade i adapterns ROM , erbjuder textläget 8 laddningsbara teckensnitt. Två aktiva teckensnittspekare (typsnitt A och teckensnitt B) väljer två av de tillgängliga teckensnitten, även om de vanligtvis pekar på samma teckensnitt. När var och en pekar på olika typsnitt, fungerar attributbit 3 (se ovan ) som en teckensnittsvalsbit istället för som en förgrundsfärgsbit. På riktig VGA-hårdvara åsidosätter detta bitens användning för färgval, men på många kloner och emulatorer kvarstår färgvalet – vilket innebär att ett teckensnitt visas med normal intensitet och det andra som högintensivt. Detta fel kan övervinnas genom att ändra palettregistren så att de innehåller två kopior av en 8-färgspalett.

Det finns lägen med en teckenrutabredd på 9 punkter (t.ex. standardläget 80×25), men den 9:e kolumnen används för avstånd mellan tecken, så innehållet kan inte ändras. Den är alltid tom och ritad med den aktuella bakgrundsfärgen. Ett undantag från detta är i Line Graphics Enable , vilket gör att kodpunkterna 0x C0 till och med 0xDF får den 8:e kolumnen att upprepas som den 9:e. Dessa kodpunkter täcker de box-ritande tecken som måste sträcka sig hela vägen till höger sida av glyph box. Av denna anledning bör man undvika att placera bokstavsliknande tecken i kodpunkterna 0xC0–0xDF. Tecknen från 0xB0 till 0xBF förlängs inte, eftersom de inte pekar åt höger och därför inte behöver utökas.

Markör

Muspekare i Impulse Tracker

Markörens form är begränsad till en rektangel i teckenrutans fulla bredd och fylld med tecknets förgrundsfärg vid markörens nuvarande plats. Dess höjd och position kan ställas in var som helst inom en teckenruta;. EGA och många VGA-kloner tillät en markör med delad ruta (visas som två rektanglar, en överst i teckenrutan och en längst ned), genom att ställa in slutet av markören före starten, men om detta görs på den ursprungliga VGA:n är markören helt dold istället. VGA-standarden ger inget sätt att ändra blinkhastigheten, även om vanliga lösningar innebär att dölja markören och använda en vanlig teckenglyph för att tillhandahålla en så kallad mjukvarumarkör.

En muspekare i TUI (när den är implementerad) är vanligtvis inte samma sak som en hårdvarumarkör, utan en rörlig rektangel med ändrad bakgrund eller en speciell glyf.

Vissa textbaserade gränssnitt, som Impulse Tracker , gick ännu längre för att ge en smidigare och mer grafisk muspekare. Detta gjordes genom att ständigt återskapa teckenglyfer i realtid enligt markörens position på skärmen.

Åtkomstmetoder

Det finns i allmänhet två sätt att komma åt VGA-textläge för en applikation: via Video BIOS- gränssnittet eller genom att direkt komma åt video- RAM och I/O-portar. Den senare metoden är betydligt snabbare och möjliggör snabb läsning av textbufferten, varför den är att föredra för avancerade TUI-program.

VGA-textbufferten finns på den fysiska minnesadressen 0xB8000. Eftersom denna adress vanligtvis används av 16-bitars x86 -processer som arbetar i real-mode, är det också den första halvan av minnessegment 0xB800 . Textbuffertdata kan läsas och skrivas, och bitvisa operationer kan tillämpas. En del av textbuffertminnet ovanför det aktuella lägets omfattning är tillgänglig, men visas inte.

Samma fysiska adresser används i skyddat läge . Applikationer kan antingen ha denna del av minnet mappad till sitt adressutrymme eller komma åt det via operativsystemet . När en applikation (på ett modernt multitasking -operativsystem) inte har kontroll över konsolen , får den tillgång till en del av systemets RAM istället för själva textbufferten.

För datorer på 1980-talet var mycket snabb manipulering av textbufferten, med hårdvaran som genererade de enskilda pixlarna så snabbt som de kunde visas, extremt användbar för ett snabbt användargränssnitt. Till och med på relativt modern hårdvara kan överbelastningen av emulering av textläge via hårdvaru- APA (grafik)-lägen (där programmet genererar enskilda pixlar och lagrar dem i videobufferten) vara märkbar.

Lägen och tider

Videosignal

Från monitorns sida är det ingen skillnad i insignal i ett textläge och ett All Points Addressable- läge (APA) av samma storlek. En textlägessignal kan ha samma timings som VESA- standardlägen. Samma register används på adapterns sida för att ställa in dessa parametrar i ett textläge som i APA-lägen. Textlägesutsignalen är i huvudsak densamma som i grafiska lägen, men dess källa är en textbuffert och teckengenerator, inte en rambuffert som i APA.

PC vanliga textlägen

Beroende på vilken grafikadapter som används finns en mängd olika textlägen tillgängliga på IBM PC-kompatibla datorer. De är listade i tabellen nedan:


Läge ( decimaler)

Läge(s) (hexadecimal)
Typ
Text res. (B×H)
Röding. storlek Grafik res.
Färger / minnesmodell
Adaptrar
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, 00001h VGA-text 40×25 8×8 320×200
16 / CTEXT
CGA , EGA
2 0002h VGA-text 80×25 8×8 640×200
16 (grå) / 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 / LINJÄR, 256 / LINJÄR8 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 / LINJÄR Tseng Labs EVA, Tseng ET3000/4000, VEGA VGA, Trident TVGA 8800/8900, Video7 V-RAM VGA, VESA -kompatibel 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 (grå) / TEXT, 16 / CTEXT, 256K / LINJÄR Tseng ET3000, Tseng ET4000, ATI EGA/VGA Wonder, Cirrus CL-GD5420/5422/5426, VESA-kompatibel 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 / LINJÄR VESA-kompatibel Super VGA [ citat behövs ]
34, 51, 99, 2370 0022h, 0033h, 0063h, 0942h VESA-text 132×44 8×8, 9×8 1056×352, 1188×352
16 / CTEXT
Tseng Labs EVA, ATI EGA Wonder, ATI VIP, Genoa SuperEGA
81, 97, 105, 267 0051h, 0061h, 0069h, 010Bh VESA-text 132×50 8×8 1056×400
16 / CTEXT
MORSE VGA, Cirrus 5320, WD90C, VESA-kompatibel Super VGA
33, 82, 30, 268 0021h, 0052h, 001Eh, 010Ch VESA-text 132×60 8×8, 9×8 1056×480, 1188×480
16 / CTEXT
Tseng ET4000, MORSE VGA, Realtek RTVGA, VESA-kompatibel Super VGA
47 002Fh Video7 Text, VGA G 160×50 8×8, . 1280×400, 720×512 16 / CTEXT, 256 / LINJÄR8 Ahead B (Wizard/3270), VEGA VGA, Genua
68, 2372 0044h, 0944h Video7 text 100×60 8×8 800×480
16 / CTEXT
Video7 V-RAM VGA, VEGA VGA, Tatung VGA

VGA och kompatibla kort stöder MDA-, CGA- och EGA-lägen. Alla färgade lägen har samma design av textattribut. MDA-lägen har vissa specifika egenskaper (se ovan ) — en text kan framhävas med ljusa, understrukna, omvända och blinkande attribut.

Det vanligaste textläget som används i DOS-miljöer och initiala Windows-konsoler är standard 80 kolumner gånger 25 rader, eller 80×25 , med 16 färger och 8×16 pixlar stora tecken. VGA-kort har alltid ett inbyggt typsnitt av denna storlek medan andra storlekar kan kräva att du laddar ner ett teckensnitt av annan storlek. Detta läge var tillgängligt på praktiskt taget alla IBM och kompatibla persondatorer.

Linuxkärnan 2.6 och senare antar lägen från 0000h till 00FFh som standard (hexadecimal), om VGA BIOS stöder, och den förstår dem som ökade med 0x0100. Samma för VESA BIOS -lägen från 0100h till 07FFh (Linux ökar dem med 0x0100). Lägen från 0900h till 09FFh är Video7 speciallägen, (vanligtvis 0940h=80×43, 0941h=132×25, 0942h=132×44, 0943h=80×60, 0944h=100×62h, 8=100×4×50, 09 för standarden Video7 BIOS ). Linux 2.x tillåter att kontrollera videoupplösningar som stöds med kärnargumentet "vga=fråga" eller "vga=<MODE_NUMBER>".

Senare versioner av Linux tillåter specificering av upplösning efter lägen från 1000h till 7FFFh . Koden har "0xHHWW" där HH är ett antal rader och WW är ett antal kolumner. T.ex. motsvarar 1950h (0x1950) ett 80×25-läge, 2B84h (0x2b84) till 132×43 etc. (Linux 3.x och senare gör det möjligt att ställa in upplösning med "video=<conn>:<xres>x<yres> ", men det är för videoframebuffer grafiskt läge.)

Två andra VGA-textlägen, 80×40 och 80×50 , finns men är mindre vanliga. Windows NT 4.0 visade sina systemmeddelanden under uppstartsprocessen i 80×50 textläge.

Teckenstorlekar och grafiska upplösningar för de utökade VESA -kompatibla Super VGA- textlägena är tillverkarens beroende . Vissa kort (t.ex. S3 ) stödde anpassade mycket stora textlägen, som 132×43 och 132×25. Precis som i grafiska lägen kan grafikadaptrar från 2000-talet vanligtvis ställa in ett godtyckligt format textläge (i rimliga gränser) istället för att välja dess parametrar från någon lista.

SVGATextMode

Linux- och DOS-system med så kallade SVGA-kort kan ett program som heter SVGATextMode användas för att ställa in snyggare textlägen än EGA- och VGA-standard. Detta är särskilt användbart för stora (≥ 17") skärmar, där det normala 80×25 VGA-textlägets 720×400 pixlars upplösning är mycket lägre än ett typiskt grafikläge skulle vara. SVGATextMode tillåter inställning av pixelklockan och högre uppdateringsfrekvens , större teckenstorlek, markörstorlek, etc., och möjliggör en bättre användning av potentialen hos ett grafikkort och bildskärm. I icke-Windows-system kan SVGATextMode (eller alternativa alternativ som Linux framebuffer ) få en skarp text är avgörande för LCD-skärmar med 1280×1024 (eller högre upplösning) eftersom inget av de så kallade standardtextlägena passar denna matrisstorlek SVGATextMode tillåter också en finjustering av videosignalens timings.

Trots namnet på detta program är det bara ett fåtal av dess stödda lägen som överensstämmer med SVGA-standarder (dvs. VESA).

Allmänna begränsningar

VGA-textläge har vissa hårdvarupålagda begränsningar. Eftersom dessa är för restriktiva för moderna (efter 2000) applikationer, har hårdvarutextläget på VGA-kompatibla videoadaptrar endast en begränsad användning.

Parameter Original VGA Moderna videoadaptrar Anmärkningar

Teckencells (glyph) bredd
8 eller 9 punkter 9 punkter Inte all hårdvara stöder glyfer som är smalare än 8 punkter.

Character cell (glyph) höjd
32 punkter
Antal teckenceller

Minst 4 000 (nås vid 80×50)

16 384 = 2 14 (begränsningar för minnesadressering)
En modern adapter, om den stöder icke-standardiserade lägen, kan ge en ganska tät textskärm även på en stor bildskärm.

Bredd i teckenceller ( tecken per rad )

Minst 80
≤ 256(?)

Höjd i teckenceller (antal rader)


Minst 50 (nås vid 80×50)

Teckensidans storlek (antal olika glyfer som visas samtidigt)

512 = 2 9 (om teckensnitt A ≠ teckensnitt B)
Även 512 är otillräckligt för omfattande Unicode-stöd .

256 = 2 8 (om teckensnitt A = teckensnitt B)
Antal färger förgrund: 16 *

bakgrund: 8 eller 16 **

16 av godtyckligt valda färger, inte fixerade.


* 8 färger kan användas av typsnitt A och andra 8 färger av typsnitt B; Så om teckensnitt A ≠ teckensnitt B (läge 512 tecken), bör paletten halveras och en text kan i praktiken endast använda 8 färger. ** Normalt är de första 8 färgerna i samma palett. Om blinkningen är inaktiverad är alla 16 färgerna tillgängliga för bakgrunden.

Se även