It has been requested that the title of this article be changed to VGA text mode . Please see the relevant discussion. The page should not be moved unless the discussion is closed with a summary describing the consensus achieved in support of the move. |
VGA text mode was introduced in 1987 by IBM as part of the VGA standard for its IBM PS/2 computers. [1] Its use on IBM PC compatibles was widespread through the 1990s and persists today for some applications on modern computers. [2] The main features of VGA text mode are colored (programmable 16 color palette) characters and their background, blinking, various shapes of the cursor (block/underline/hidden static/blinking), [3] and loadable fonts (with various glyph sizes). [4] The Linux console traditionally uses hardware VGA text modes, [5] and the Win32 console environment has an ability to switch the screen to text mode for some text window sizes.
Each screen character is represented by two bytes aligned as a 16-bit word accessible by the CPU in 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 used to select various video attributes such as color, blinking, character set, and so forth. [6] This byte-pair scheme is among the features that the VGA inherited from the EGA, CGA, and ultimately from the MDA.
Attribute | Character | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Blink [n 1] | Background color | Foreground color [n. 2] [n. 3] | Code point |
Colors are assigned in the same way as in 4-bit indexed color graphic modes (see VGA color palette). VGA modes have no need for the MDA's reverse and bright attributes because foreground and background colors can be set explicitly.
The VGA hardware has the ability to enable an underline on any character that has attribute bit 0 set. However, since this is an MDA-compatible feature, [7] the attribute bits not used by the MDA must be set to zero or the underline will not be shown. [6] This means that only bits 3 (intensity) and 7 (blink) can be set concurrently with bit 0 (underline). With the default VGA palette, setting bit 0 to enable underline will also change the text colour to blue. This means text in only two colors can be underlined (5555FF and 0000AA with the default palette).
Despite all this, the underline is not normally visible in color modes, as the location of the underline defaults to a scanline below the character glyph, rendering it invisible. [6] If the underline location is set to a visible scanline (as it is by default when switching to an MDA-compatible monochrome text mode), then the underline will appear.
Screen fonts used in EGA and VGA are monospace raster fonts containing 256 glyphs. All glyphs in a font are the same size, but this size can be changed. Typically, glyphs are 8 dots wide and 8–16 dots high, however the height can be any value up to a maximum of 32. Each row of a glyph is coded in an 8 bit byte, with high bits to the left of the glyph and low bits to the right. Along with several hardware-dependent fonts stored in the adapter's ROM, the text mode offers 8 [6] loadable fonts. Two active font pointers (font A and font B) select two of the available fonts, although they usually point to the same font. When they each point to different fonts, attribute bit 3 (see above) acts as a font selection bit instead of as a foreground color bit. On real VGA hardware, this overrides the bit's use for color selection, but on many clones and emulators, the color selection remains — meaning one font is displayed as normal intensity, and the other as high-intensity. This error can be overcome by changing the palette registers to contain two copies of an 8-color palette.
There are modes with a character box width of 9 dots (e.g. the default 80×25 mode), however the 9th column is used for spacing between characters, so the content cannot be changed. It is always blank, and drawn with the current background colour. [6] An exception to this is in Line Graphics Enable mode, which causes code points 0xC0 to 0xDF inclusive [6] to have the 8th column repeated as the 9th. These code points cover those box drawing characters which must extend all the way to the right side of the glyph box. For this reason, placing letter-like characters in code points 0xC0–0xDF should be avoided. The box drawing characters from 0xB0 to 0xBF are not extended, as they do not point to the right and so do not require extending.
The shape of the cursor is restricted to a rectangle the full width of the character box, and filled with the foreground color of the character at the cursor's current location. Its height and position may be arbitrary within a character box;. [8] The EGA and many VGA clones allowed a split-box cursor (appearing as two rectangles, one at the top of the character box and one at the bottom), by setting the end of the cursor before the start, however if this is done on the original VGA, the cursor is completely hidden instead. [8] The VGA standard does not provide a way to alter the blink rate, [8] although common workarounds involve hiding the cursor and using a normal character glyph to provide a so-called software cursor.
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, 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 real-time according to the cursor's on-screen position and the underlying characters.[ citation needed ]
This section possibly contains original research . (November 2019) (Learn how and when to remove this template message) |
There are generally two ways to access VGA text-mode for an application: through the Video BIOS interface or by directly accessing video RAM [4] and I/O ports. The latter method is considerably faster, and allows quick reading of the text buffer, for which reason it is preferred for advanced TUI programs.
The VGA text buffer is located at physical memory address 0xB8000. [9] Since this is usually used by 16-bit x86 processes operating in real-mode, it is the first half of memory segment 0xB800. The text buffer data can be read and written, and bitwise operations can be applied. 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 protected mode. Applications may either have this part of memory mapped to their address space or access it via the operating system. When an application (on a modern multitasking OS) does not have control over the console, it accesses a part of system RAM instead of the actual text buffer.
For computers in the 1980s, very fast manipulation of the text buffer, with the hardware generating the individual pixels as fast as they could be displayed, was extremely useful for a fast UI. Even on relatively modern hardware, the overhead of text mode emulation via hardware APA (graphics) modes (in which the program generates individual pixels and stores them into the video buffer) may be noticeable.
From the monitor's side, there is no difference in input signal in a text mode and an APA mode of the same size. A text mode signal may have the same timings as VESA standard modes. The same registers are used on adapter's side to set up these parameters in a text mode as in APA modes. The text mode output signal is essentially the same as in graphic modes, but its source is a text buffer and character generator, not a framebuffer as in APA.
Depending on the graphics adapter used, a variety of text modes are available on IBM PC compatible computers. They are listed on the table below: [10]
Text res. | Char. size | Graphics res. | Colors | Adapters |
---|---|---|---|---|
80×25 | 9×14 | 720×350 | B&W Text | MDA, Hercules |
40×25 | 8×8 | 320×200 | 16 colors | CGA, EGA |
80×25 | 8×8 | 640×200 | 16 colors | CGA, EGA |
80×25 | 8×14 | 640×350 | 16 colors | EGA |
80×43 | 8×8 | 640×350 | 16 colors | EGA |
80×25 | 9×16 | 720×400 | 16 colors | VGA |
80×50 | 9×8 | 720×400 | 16 colors | VGA |
80×60 | 16 colors | VESA-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.
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 and 8×16 pixels large characters. VGA cards always have a built-in font of this size whereas other sizes may require downloading a differently sized font. [11] This mode was available on practically all IBM and compatible personal computers.
Two other VGA text modes, 80×40 and 80×50, exist but are less common. Windows NT 4.0 displayed its system messages during the boot process in 80×50 text mode. [12]
Character sizes and graphical resolutions for the extended VESA-compatible Super VGA text modes are manufacturer's dependent. Some cards (e.g. S3) supported custom very large text modes, like 132×43 and 132×25. [13] 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.
On Linux and DOS systems with so named SVGA cards, a program called SVGATextMode [14] can be used to set up better looking text modes than EGA and VGA standard ones. This is particularly useful for large (≥ 17") monitors, where the normal 80×25 VGA text mode's 720×400 pixel resolution is far lower than a typical graphics mode would be. SVGATextMode allows setting of the pixel clock and higher refresh rate, 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) 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.
VGA text mode has some hardware-imposed limitations. Because these are too restrictive for modern (post 2000) applications, the hardware text mode on VGA compatible video adapters only has a limited use.
Parameter | Original VGA | Modern video adapters | Remarks |
---|---|---|---|
Character cell (glyph) width | 8 or 9 dots [6] | ≤ 9 dots | Not all hardware support glyphs narrower than 8 dots. |
Character cell (glyph) height | ≤ 32 dots | ||
Number of character cells | At least 4,000 (reached at 80×50) | ≤ 16,384 = 214 (memory addressing limitations) | A modern adapter, if it supports non-standard modes, may produce a reasonably dense text screen even on a large monitor. |
Width in character cells (characters per line) | At least 80 | ≤ 256(?) | |
Height in character cells (number of lines) | At least 50 (reached at 80×50) | ||
Code page size (number of different glyphs displayed simultaneously) | ≤ 512 = 29 (if font A ≠ font B) | Even 512 is insufficient for comprehensive Unicode support. | |
≤ 256 = 28 (if font A = font B) | |||
Number of colors | 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.
Video Graphics Array (VGA) is a graphics standard for video display controller first introduced with the IBM PS/2 line of computers in 1987, following CGA and EGA introduced in earlier IBM personal computers. Through widespread adoption, the term has also come to mean either an analog computer display standard, the 15-pin D-subminiature VGA connector, or the 640×480 resolution characteristic of the VGA hardware.
The Hercules Graphics Card (HGC) is a computer graphics controller made by Hercules Computer Technology, Inc. that combines IBM's text-only MDA display standard with a bitmapped graphics mode. This allows the HGC to offer both high-quality text and graphics from a single card. The HGC was very popular, and became a widely supported de facto display standard on IBM PC compatibles connected to a monochrome monitor. The HGC standard was used long after more technically capable systems had entered the market, especially on dual-monitor setups.
The Enhanced Graphics Adapter (EGA) is an IBM PC computer display standard from 1984 that superseded and exceeded the capabilities of the CGA standard introduced with the original IBM PC, and was itself superseded by the VGA standard in 1987.
Super Video Graphics Array or Ultra Video Graphics Array, almost always abbreviated to Super VGA, Ultra VGA or just SVGA or UVGA is a broad term that covers a wide range of computer display standards.
The Color Graphics Adapter (CGA), originally also called the Color/Graphics Adapter or IBM Color/Graphics Monitor Adapter, introduced in 1981, was IBM's first graphics card and first color display card for the IBM PC. For this reason, it also became that computer's first color computer display standard.
The Multi-Color Graphics Array or MCGA is a video subsystem built into the motherboard of the IBM PS/2 Model 30, introduced on April 2, 1987, and Model 25, introduced later on August 11; no standalone MCGA cards were ever made.
Text-based user interfaces (TUI), alternately terminal user interfaces, to reflect a dependence upon the properties of computer terminals and not just text, is a retronym parallel to the concept of graphical user interfaces (GUI). Like GUIs, they may use the entire screen area and accept mouse and other inputs. They may also use color and often structure the display using special graphical characters such as ┌ and ╣, referred to in Unicode as the "box drawing" set. The modern context of use is usually a terminal emulator.
The Monochrome Display Adapter is IBM's standard video display card and computer display standard for the PC introduced in 1981. The MDA does not have any pixel-addressable graphics modes. It has only a single monochrome text mode, which can display 80 columns by 25 lines of high resolution text characters or symbols useful for drawing forms.
Text mode is a computer display mode in which content is internally represented on a computer screen 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 character set. Text mode is contrasted to all points addressable (APA) mode or other kinds of computer graphics modes.
The Windows Console is the Windows API-based infrastructure for text-based user interfaces and console applications in Microsoft Windows. An instance of a Windows 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 keys. The latter was not supported in Windows Vista, 7, 8, and 8.1, due to the system not supporting full-screen mode, but was made supported again in Windows 10.
The Plantronics Colorplus is a graphics card for IBM PC computers, first sold in 1982. It is a superset of the then-current CGA standard, using the same monitor standard and providing the same pixel resolutions. It was produced by Frederick Electronics, of Frederick, Maryland.
A video display controller or VDC is an integrated circuit which is the main component in a video signal generator, a device responsible for the production of a TV video signal in a computing or game system. Some VDCs also generate an audio signal, but that is not their main function.
In computing, indexed color is a technique to manage digital images' colors in a limited fashion, in order to save computer memory and file storage, while speeding up display refresh and file transfers. It is a form of vector quantization compression.
The Linux console is a system console internal to the Linux kernel. The Linux console provides a way for the kernel and other processes to send text output to the user, and to receive text input from the user. The user typically enters text with a computer keyboard and reads the output text on a computer monitor. The Linux kernel supports virtual consoles – consoles that are logically separate, but which access the same physical keyboard and display. The Linux console are implemented by the VT subsystem of the Linux kernel, and do not rely on any user space software. This is in contrast to a terminal emulator, which is a user space process that emulates a terminal, and is typically used in a graphical display environment.
Text-based semigraphics or pseudographics is a primitive method used in early text mode video hardware to emulate raster graphics without having to implement the logic for such a display mode.
Tandy Graphics Adapter is a computer display standard for an IBM PC compatible video subsystem that improved on IBM's Color Graphics Adapter (CGA) technology. Whereas CGA could display only four colors at a time at a screen resolution of 320×200 pixels, a TGA system could display up to 16 colors. While not strictly an adapter—the TGA hardware was available only integrated onto computer motherboards, not on a separate card—TGA is so called to parallel CGA, to which TGA is related and with which it competed.
On x86 platforms, the Solaris kernel terminal emulator module (tem) uses VGA text mode exclusively to interact with the vgatext module. The vgatext module uses industry standard VGA text mode to interact with x86 compatible frame buffer devices.
The corresponding byte in plane 1 is used to specify the attributes of the character possibly including color, font select, blink, underline and reverse.
Unlike IBM's original video adapters, the CGA and the MDA, which store character bitmaps in ROM where they can't be altered, the EGA and the VGA store them in RAM.
If fbcon is detached from the console layer, your boot console driver (which is usually VGA text mode) will take over.
16 different colors can be displayed at the same time. Characters are 8×16 pixels large, and a font consists of 256 characters. A built-in font of this size is always present on a VGA card.
On obvious difference between Windows 2000/XP and Windows NT 4.0 is the fact that all system messages that appear during the Windows NT 4.0 boot process are displayed in 80×50 text mode, while Windows 2000 and Windows XP display these messages in VGA mode.
The S3 ViRGE supports 132×43 and 132×25 extended text modes for text applications. This also allows you to emulate terminals requiring 132 columns of text.
SVGATextMode uses extra features on SVGA cards to enhance Linux textmodes. It allows setting of the pixel clock, H/V timings, font size, cursor size, etc, and lets you use your video card and monitor to their full potential in textmode.