VGA compatible text mode
Encyclopedia
The implementation of computer monitor text mode
Text mode
Text mode is a kind of computer display mode in which the content of the screen is internally represented in terms of characters rather than individual pixels. Typically, the screen consists of a uniform rectangular grid of character cells, each of which contains one of the characters of a...

 on VGA
Video Graphics Array
Video Graphics Array refers specifically to the display hardware first introduced with the IBM PS/2 line of computers in 1987, but through its widespread adoption has also come to mean either an analog computer display standard, the 15-pin D-subminiature VGA connector or the 640×480 resolution...

 compatible hardware is quite complex. Its use on PC compatible computers was widespread in 1980s
1980s
File:1980s decade montage.png|thumb|400px|From left, clockwise: The first Space Shuttle, Columbia, lifted off in 1981; American President Ronald Reagan and Soviet leader Mikhail Gorbachev eased tensions between the two superpowers, leading to the end of the Cold War; The Fall of the Berlin Wall in...

1990s
1990s
File:1990s decade montage.png|From left, clockwise: The Hubble Space Telescope floats in space after it was taken up in 1990; American F-16s and F-15s fly over burning oil fields and the USA Lexie in Operation Desert Storm, also known as the 1991 Gulf War; The signing of the Oslo Accords on...

 (particularly under DOS
DOS
DOS, short for "Disk Operating System", is an acronym for several closely related operating systems that dominated the IBM PC compatible market between 1981 and 1995, or until about 2000 if one includes the partially DOS-based Microsoft Windows versions 95, 98, and Millennium Edition.Related...

 systems), but persists today for some applications even on modern desktop computers. Main features of VGA text mode are colored (arbitrary 16 color palette
Palette (computing)
In computer graphics, a palette is either a given, finite set of colors for the management of digital images , or a small on-screen graphical element for choosing from a limited set of choices, not necessarily colors .Depending on the context In computer graphics, a palette is either a given,...

) characters and their background, blinking, various shapes of the cursor
Cursor (computers)
In computing, a cursor is an indicator used to show the position on a computer monitor or other display device that will respond to input from a text input or pointing device. The flashing text cursor may be referred to as a caret in some cases...

 (block/underline/hidden static/blinking), loadable fonts (with various glyph sizes). Linux console
Linux console
The Linux console is a system console support in the Linux kernel. The Linux console was the first functionality of the kernel, developed as early as in 1991 . On PC architecture, it is common to use VGA-compatible video hardware. Implementations of computer graphics on Linux are excluded from the...

 usually (but not necessarily) uses hardware VGA compatible text modes, and Win32 console
Win32 console
Win32 console is a text user interface implementation within the system of Windows API, which runs console applications. A Win32 console has a screen buffer and an input buffer, and is available both as a window or in text mode screen, with switching back and forth available via Alt-Enter...

 environment has an ability to switch its application to text mode for some text window sizes. |-
| colspan=3 |

  Distinctive features of VGA text as it commonly used:

  Light gray background (normally not white).
|-
| align=right |Box drawing.
Various
back-/foreground
combinations.
|
|CGA–EGA-style 16 color palette for foreground.
Blinking text.
|-

| align=center |Cursor.
 

|}>

Text buffer

Each screen character is actually represented by two bytes
Octet (computing)
An octet is a unit of digital information in computing and telecommunications that consists of eight bits. The term is often used when the term byte might be ambiguous, as there is no standard for the size of the byte.-Overview:...

 aligned as a 16-bit word accessible by CPU at a single operation. The lower, or character byte is the actual code point for the current character set, and the higher, or attribute byte is a bit field
Bit field
A bit field is a common idiom used in computer programming to compactly store multiple logical values as a short series of bits where each of the single bits can be addressed separately. A bit field is most commonly used to represent integral types of known, fixed bit-width. A well-known usage of...

 used to select various video attributes such as color, blinking, character set, and so forth. This byte-pair scheme is among the features that VGA inherited from EGA
Enhanced Graphics Adapter
The Enhanced Graphics Adapter is the IBM PC computer display standard specification which is between CGA and VGA in terms of color and space resolution. Introduced in October 1984 by IBM shortly after its new PC/AT, EGA produces a display of 16 simultaneous colors from a palette of 64 at a...

 and ultimately from CGA
Color Graphics Adapter
The Color Graphics Adapter , originally also called the Color/Graphics Adapter or IBM Color/Graphics Monitor Adapter, introduced in 1981, was IBM's first color graphics card, and the first color computer display standard for the IBM PC....

.
! colspan=8 |Attribute
! colspan=8 |Character
|-
| width=48 align=center |7
| width=48 align=center |6
| width=48 align=center |5
| width=48 align=center |4
| width=48 align=center |3
| width=48 align=center |2
| width=48 align=center |1
| width=48 align=center |0
| width=48 align=center |7
| width=48 align=center |6
| width=48 align=center |5
| width=48 align=center |4
| width=48 align=center |3
| width=48 align=center |2
| width=48 align=center |1
| width=48 align=center |0
|-
| blink**
| colspan=3 |  background
    color
| colspan=4 |*  foreground
     color
| colspan=8 align=center |code point
|}>
* – attribute bit 3 also chooses between fonts A and B (see below), therefore if these font are not the same, this bit is simultaneously an additional code point bit.

** – depending on mode setup, attribute bit 7 may be either the blink bit or the fourth background color bit (which allows to use all 16 colors).

Numeration of bits given in a way usually used in technical documentation.

Colors are assigned in the same way as in 4-bit indexed color graphic modes, see detailed description of VGA palette.
VGA modes have no need in reverse and bright attributes because foreground/background colors can be set explicitly. The VGA hardware has an ability to enable underline
Underline
An underline, also called an underscore, is one or more horizontal lines immediately below a portion of writing. Single, and occasionally double , underlining was originally used in hand-written or typewritten documents to emphasise text...

 on some foreground/background combinations, normally disabled in color modes, therefore an underline feature in a color text mode normally is unavailable. Underline is used, though, in monochrome (MDA-like) text modes, those text buffer has the same arrangement as above.

Fonts

Screen fonts used in EGA and VGA are monospace
Monospace font
A monospaced font, also called a fixed-pitch or non-proportional font, is a font whose letters and characters each occupy the same amount of horizontal space...

 raster fonts containing 256 glyphs with 8 dots glyph width and a some glyph height fixed for each font, less or equal to 32. Each row of a glyph is coded in a 8 bit byte
Octet (computing)
An octet is a unit of digital information in computing and telecommunications that consists of eight bits. The term is often used when the term byte might be ambiguous, as there is no standard for the size of the byte.-Overview:...

, with high bits at the left and low at the right. Along with several hardware-dependent fonts stored in the adapter’s ROM
Read-only memory
Read-only memory is a class of storage medium used in computers and other electronic devices. Data stored in ROM cannot be modified, or can be modified only slowly or with difficulty, so it is mainly used to distribute firmware .In its strictest sense, ROM refers only...

, the text mode offers 8 loadable font storages. Two active font pointers (font A and font B) choose each one of available fonts, they usually (but not necessarily) point to the same font. When font A ≠ font B, the attribute bit 3 (see above) acts both as a foreground color bit and as the ninth (28) code point bit. To make a 512 character set mode (instead of the common 256), available colors should be halved from 16 to 8.

There are modes with 9-dots character box width (e.g. the default 80×25 mode), where an extra column of a character matrix appears, not accessible directly. It may be left empty (all 0s), but may be enabled a special processing of characters with code points 0x
Hexadecimal
In mathematics and computer science, hexadecimal is a positional numeral system with a radix, or base, of 16. It uses sixteen distinct symbols, most often the symbols 0–9 to represent values zero to nine, and A, B, C, D, E, F to represent values ten to fifteen...

B0–0xDF, which are usually box drawing
Box drawing characters
Box drawing characters, also known as line drawing characters, or pseudographics, are widely used in text user interfaces to draw various frames and boxes...

. In this so named Line Graphics Enable mode, that extra column become a duplicate of the rightmost addressable column (encoded by a least significant bit in each row) for 0xB0–0xDF characters, and left empty for the rest of characters. For this reason, placing letter-like characters to code points 0xB0–0xDF should be avoided.

Cursor

A shape of the cursor is restricted to rectangle
Rectangle
In Euclidean plane geometry, a rectangle is any quadrilateral with four right angles. The term "oblong" is occasionally used to refer to a non-square rectangle...

 which width occupies all character box and filled
Flood fill
Flood fill, also called seed fill, is an algorithm that determines the area connected to a given node in a multi-dimensional array. It is used in the "bucket" fill tool of paint programs to determine which parts of a bitmap to fill with color, and in games such as Go and Minesweeper for determining...

 by the foreground color of current character box. Its height and position may be arbitrary within a character box; notably, the cursor may be hidden (invisible). There is also a bit which controls cursor blink activity.

A mouse cursor in TUI (when implemented) is not usually the same thing as a hardware cursor, but a moving rectangle with altered background or a special glyph.

Some text-based interfaces, such as that of Impulse Tracker
Impulse Tracker
Impulse Tracker is a multi-track digital sound tracker . It was one of the last tracker programs for the DOS platform. It was authored by Jeffrey "Pulse" Lim, and example music was provided by Jeffrey Lim and Chris Jarvis...

, went to even greater lengths to provide a smoother and more graphic-looking mouse cursor. This was done by constantly re-generating character glyphs in realtime according to the cursor's on-screen position and the underlying characters.

Access methods

There are generally two way to access a VGA text for an application: through a text terminal emulation (usually by OS) or directly via memory mapped I/O. The latter method also allows reading of text buffer, for which reason it is preferred for advanced TUI programs.

From the point of view of 16-bit
16-bit
-16-bit architecture:The HP BPC, introduced in 1975, was the world's first 16-bit microprocessor. Prominent 16-bit processors include the PDP-11, Intel 8086, Intel 80286 and the WDC 65C816. The Intel 8088 was program-compatible with the Intel 8086, and was 16-bit in that its registers were 16...

 x86 application or system software (including BIOS
BIOS
In IBM PC compatible computers, the basic input/output system , also known as the System BIOS or ROM BIOS , is a de facto standard defining a firmware interface....

), the text buffer is just a region of RAM. Its range is 0xB8000—0xBFFFF (a half of segment B800h). The text buffer data can be read and written, bitwise operation
Bitwise operation
A bitwise operation operates on one or more bit patterns or binary numerals at the level of their individual bits. This is used directly at the digital hardware level as well as in microcode, machine code and certain kinds of high level languages...

s may be applied to them. A part of text buffer memory above the scope of the current mode is accessible, but is not shown.

The same physical addresses are used in CPU’s protected mode
Protected mode
In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units...

: application may either have this part of memory mapped to its address space
Address space
In computing, an address space defines a range of discrete addresses, each of which may correspond to a network host, peripheral device, disk sector, a memory cell or other logical or physical entity.- Overview :...

 or access it via operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

. When an application (on modern multitasking
Computer multitasking
In computing, multitasking is a method where multiple tasks, also known as processes, share common processing resources such as a CPU. In the case of a computer with a single CPU, only one task is said to be running at any point in time, meaning that the CPU is actively executing instructions for...

 OS) does not have a control over the console
System console
The system console, root console or simply console is the text entry and display device for system administration messages, particularly those from the BIOS or boot loader, the kernel, from the init system and from the system logger...

, it accesses a part of mainboard RAM instead of actual text buffer.

For computers of 1980s very fast access to text buffer was extremely useful for a fast UI; even on relatively modern hardware an overhead
Computational overhead
In computer science, overhead is generally considered any combination of excess or indirect computation time, memory, bandwidth, or other resources that are required to attain a particular goal...

 of text mode emulation via hardware APA
All Points Addressable
All Points Addressable , in the context of a video monitor, dot matrix or any display device consisting of a pixel array, refers to an arrangement bits or cells which can be individually manipulated, as opposed to rewriting the whole array every time a pixel changes.Generally, text modes are not...

 modes may be noticeable.

Video signal

From the monitor’s side, there is no difference in input signal in a text mode and an APA
All Points Addressable
All Points Addressable , in the context of a video monitor, dot matrix or any display device consisting of a pixel array, refers to an arrangement bits or cells which can be individually manipulated, as opposed to rewriting the whole array every time a pixel changes.Generally, text modes are not...

 mode of the same size. A text mode signal may have the same timings than VESA
VESA
VESA is an international standards body for computer graphics founded in 1989 by NEC Home Electronics and eight other video display adapter manufacturers.VESA's initial goal was to produce a standard for 800×600 SVGA resolution video displays...

 standard modes. Same registers are used on adapter’s side to set up these parameters in a text mode as in APA modes. Text mode output signal is essentially the same as in graphic modes, but its source is text buffer and character generator, not framebuffer
Framebuffer
A framebuffer is a video output device that drives a video display from a memory buffer containing a complete frame of data.The information in the memory buffer typically consists of color values for every pixel on the screen...

 as in APA.

PC common text modes

Depending on the graphics adapter used, a variety of text modes are available on IBM PC compatible
IBM PC compatible
IBM PC compatible computers are those generally similar to the original IBM PC, XT, and AT. Such computers used to be referred to as PC clones, or IBM clones since they almost exactly duplicated all the significant features of the PC architecture, facilitated by various manufacturers' ability to...

 computers. They are listed on the table below:
Text res. Char. size Graphics res. Colors Adapters
80×25 9×14 720×350 B&W Text MDA, Hercules
Hercules Graphics Card
The Hercules Graphics Card was a computer graphics controller made by Hercules Computer Technology, Inc. which, through its popularity, became a widely supported display standard. It was common on IBM PC compatibles connected to a monochrome monitor . It supported one high resolution text mode and...

40×25 8×8 320×200 16 colors CGA
Color Graphics Adapter
The Color Graphics Adapter , originally also called the Color/Graphics Adapter or IBM Color/Graphics Monitor Adapter, introduced in 1981, was IBM's first color graphics card, and the first color computer display standard for the IBM PC....

, EGA
80×25 8×8 640×200 16 colors CGA, EGA
80×25 8×14 640×350 16 colors EGA
Enhanced Graphics Adapter
The Enhanced Graphics Adapter is the IBM PC computer display standard specification which is between CGA and VGA in terms of color and space resolution. Introduced in October 1984 by IBM shortly after its new PC/AT, EGA produces a display of 16 simultaneous colors from a palette of 64 at a...

80×43 8×8 640×350 16 colors EGA
80×25 9×16 720×400 16 colors VGA
Video Graphics Array
Video Graphics Array refers specifically to the display hardware first introduced with the IBM PS/2 line of computers in 1987, but through its widespread adoption has also come to mean either an analog computer display standard, the 15-pin D-subminiature VGA connector or the 640×480 resolution...

80×50 9×8 720×400 16 colors VGA
80×60 16 colors VESA
VESA BIOS Extensions
VESA BIOS Extensions is a VESA standard, currently at version 3, that defines the interface that can be used by software to access compliant video boards at high resolutions and bit depths...

-compatible Super VGA
132×25 16 colors VESA-compatible Super VGA
132×43 16 colors VESA-compatible Super VGA
132×50 16 colors VESA-compatible Super VGA
132×60 16 colors VESA-compatible Super VGA


VGA and compatible cards support MDA, CGA and EGA modes. All colored modes have the same design of text attributes. MDA modes have some specific features (see above) – a text could be emphasized with bright, underline, reverse and blinking attributes.

By far the most common text mode used in DOS environments, and initial Windows consoles, is the default 80 columns by 25 rows, or 80×25, with 16 colors. This mode was available on practically all IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...

 and compatible personal computers.

Two other VGA text modes, 90×43 and 90×50, exist but were very rarely used. The 40 column text modes were never very popular, and were used only for demonstration purposes or with very old hardware.

Character sizes and graphical resolutions for the extended VESA
VESA BIOS Extensions
VESA BIOS Extensions is a VESA standard, currently at version 3, that defines the interface that can be used by software to access compliant video boards at high resolutions and bit depths...

-compatible Super VGA text modes are manufacturer's dependent. Some cards (e.g. S3
S3 Graphics
S3 Graphics, Ltd is an American company specializing in graphics chipsets. Although they do not have the large market share that they once had, they still produce graphics accelerators for home computers under the "S3 Chrome" brand name.-History:...

) supported custom very large text modes, like 100×37 or even 160×120. Like as in graphic modes, graphic adapters of 2000s commonly are capable to set up an arbitrarily-sized text mode (in reasonable limits) instead of choosing its parameters from some list. But poor software support deters widespread use of such custom modes.

SVGATextMode

On Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 and DOS systems with so named SVGA cards, a program called SVGATextMode is used to set up on so named SVGA cards better looking text modes than EGA and VGA standard ones. This is particularly useful for large (≥ 17") monitors, where normal VGA 400 lines text mode appear as extremely low resolution. SVGATextMode allows setting of the pixel clock and higher refresh rate
Refresh rate
The refresh rate is the number of times in a second that a display hardware draws the data...

, larger font size, cursor size, etc, and allows a better use of the potential of a video card and monitor. In non-Windows systems, the use of SVGATextMode (or alternative options such as the Linux framebuffer
Linux framebuffer
The Linux framebuffer is a graphic hardware-independent abstraction layer to show graphics on a computer monitor, typically on the console...

) to obtain a sharp text is critical for LCD monitors of 1280×1024 (or higher resolution) because none of so named standard text modes fits to this matrix size. SVGATextMode also allows a fine tuning of video signal timings.

Despite the name of this program, only a few of its supported modes conform to SVGA (i.e. VESA) standards.

General restrictions

Such VGA text modes have some hardware-imposed limitations. Because some of them appear now too restrictive, the hardware text mode on VGA compatible video adapters has only a limited use. !Parameter
!Original VGA
!Modern video adapters
!Remarks
|-
|Character cell
(glyph) width
|8 or 9 dots
|≤ 9 dots
| rowspan=2 |Not all hardware support glyphs narrower than 8 dots;

Even width=9 looks ugly on high resolutions, particularly for people with hyperopia, and is insufficient for East Asian scripts.
Height=32 is more than sufficient.
|-
|Character cell
(glyph) height
| colspan=2 align=center |≤ 32 dots
|-
|Number of character cells
|at least
4000
4000 (number)
4000 is the natural number following 3999 and preceding 4001. It is a decagonal number.- Selected numbers in the range 4001–4999 :* 4005 – triangular number* 4007 – safe prime...


(reached at 80×50)
|≤ 16384 = 214
(memory addressing limitations)
| rowspan=3 |A modern adapter, if supports non-standard modes, may produce a reasonably dense text screen even on a large monitor.
|-
|Width in character cells
(characters per line
Characters per line
In typography and computing characters per line or terminal width refers to the maximal number of monospaced characters that may appear on a single line...

)
|at least
80
80 (number)
80 is the natural number following 79 and preceding 81.- In mathematics :The sum of Euler's totient function φ over the first sixteen integers is 80....


| rowspan=2 |≤ 256(?)
|-
|Height in character cells
(number of lines)
|at least
50
50 (number)
This article discusses the number fifty. For the year 50 CE, see 50. For other uses of 50, see 50 50 is the natural number following 49 and preceding 51.-In mathematics:...


(reached at 80×50)
|-
| rowspan=2 |Code page size
(number of different glyphs displayed simultaneously)
| colspan=2 | ≤ 512
512 (number)
512 is the natural number following 511 and preceding 513.512 is a power of two: 29 and the cube of 8: 83.Also, it is the eleventh Leyland number.- Special use in computers :...

 = 29
(if font A ≠ font B)
| rowspan=2 |Even 512 is insufficient for comprehensive Unicode support.
|-
| colspan=2 | ≤ 256
256 (number)
256 is the natural number following 255 and preceding 257.-In mathematics:256 is a composite number, with the factorization 256 = 28, which makes it a power of two....

 = 28
(if font A = font B)
|-
| rowspan=2 |Number of colors
| colspan=2 |foreground:16*

background:8 or 16**
|16 of arbitrarily chosen colors, not fixed.
|}>
* 8 colors may be used by font A and other 8 colors by font B; so, if font A ≠ font B (512 characters mode), then the palette should be halved and a text may effectively use only 8 colors.

** Normally, first 8 colors of the same palette. If blink is disabled, then all 16 colors are available for background.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK