Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Text mode
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Computer display mode based on characters}} {{refimprove|date=October 2010}} '''Text mode''' is a [[computer monitor|computer display]] mode in which content is internally represented on a computer screen in terms of [[character (computing)|character]]s rather than individual [[pixel]]s. Typically, the screen consists of a uniform [[regular grid|rectangular grid]] of ''character cells'', each of which contains one of the characters of a [[character set]]; at the same time, contrasted to [[graphics mode]] or other kinds of [[computer graphics]] modes. Text mode applications communicate with the user by using [[command-line interface]]s and [[Text-based user interface|text user interfaces]]. Many character sets used in text mode applications also contain a limited set of predefined semi-graphical characters usable for [[box-drawing character|drawing boxes]] and other rudimentary graphics, which can be used to highlight the content or to simulate [[Graphical widget|widget]] or control interface objects found in [[Graphical user interface|GUI]] programs. A typical example is the [[IBM]] [[code page 437]] character set. An important characteristic of text mode programs is that they assume [[monospaced font]]s, where every character has the same width on screen, which allows them to easily maintain the vertical alignment when displaying semi-graphical characters. This was an analogy of early mechanical printers which had fixed pitch. This way, the output seen on the screen could be sent directly to the printer maintaining the same format. Depending on the environment, the [[framebuffer|screen buffer]] can be [[Memory-mapped I/O|directly addressable]]. Programs that display output on remote [[computer terminal|video terminal]]s must issue special [[Escape sequence|control sequences]] to manipulate the screen buffer. The most popular standards for such control sequences are [[ANSI escape code|ANSI]] and [[VT100]]. Programs accessing the screen buffer through control sequences may lose synchronization with the actual display so that many text mode programs have a ''redisplay everything'' command, often associated with the {{keypress|Ctrl|L}} key combination. == History == Text mode video rendering came to prominence in the early 1970s, when video-oriented [[text terminal]]s started to replace [[teleprinter]]s in the interactive use of computers. == Benefits == {{refimprove section|date=December 2012}} The advantages of text modes as compared to graphics modes include lower memory consumption and faster screen manipulation.<ref name="Bosch">{{cite journal|last1=Bosch|first1=Winn L.|title=The Perfect PC|journal=PC Magazine|date=July 1992|volume=11|issue=13|page=186|url=https://books.google.com/books?id=X4152M1DLygC&pg=PA186|access-date=15 December 2015}}</ref> At the time text terminals were beginning to replace teleprinters in the 1970s, the extremely high cost of [[random-access memory]] in that period made it exorbitantly expensive to install enough memory for a computer to simultaneously store the current value of ''every'' pixel on a screen, to form what would now be called a [[framebuffer]]. Early framebuffers were standalone devices which cost tens of thousands of dollars, in addition to the expense of the advanced high-resolution displays to which they were connected.<ref name="Smith_Page_363">{{cite book |last1=Smith |first1=Alvy Ray |author1-link=Alvy Ray Smith |title=A Biography of the Pixel |date=2021 |publisher=MIT Press |location=Cambridge |isbn=9780262365215 |page=363 |url=https://books.google.com/books?id=1ukGEAAAQBAJ&pg=PA363 |access-date=1 October 2022}} In this book, Smith recalls that his first framebuffer at the [[New York Institute of Technology Computer Graphics Lab]] cost $80,000 in the mid-1970s. It could store a 512 x 512 array of pixels at 256 colors per pixel (that is, 8-bit [[color depth]]). [[Alexander Schure]] soon bought five more framebuffers for the Lab for $60,000 each. The Lab quickly combined its six framebuffers together, in two groups of three each, to create the first two true 24-bit [[RGB color model|RGB color]] framebuffers. Thus, the first had cost $200,000 and the second had cost $180,000; as Smith points out, adjusting for inflation, these numbers add up to roughly $1.7 million in 2021 dollars, which explains why the Lab's researchers were "thrilled" with Schure's generosity.</ref> For applications that required simple line graphics but for which the expense of a framebuffer could not be justified, [[vector display]]s were a popular workaround. But there were many computer applications (e.g., data entry into a database) for which all that was required was the ability to render ordinary text in a quick and cost-effective fashion to a [[cathode-ray tube]]. Text mode avoids the problem of expensive memory by having dedicated display hardware re-render each line of text from characters into pixels with ''each'' scan of the screen by the cathode ray. In turn, the display hardware needs only enough memory to store the pixels equivalent to one line of text (or even less) at a time. Thus, the computer's [[screen buffer]] only stores and knows about the underlying text characters (hence the name "text mode") and the only location where the actual pixels representing those characters exist as a single unified image is the screen itself, as viewed by the user (thanks to the phenomenon of [[persistence of vision]]). For example, a screen buffer sufficient to hold a standard grid of 80 by 25 characters requires at least 2,000 bytes.<ref name="Bosch" /> Assuming a [[monochrome monitor|monochrome display]], 8 bits per byte, and a standard size of 8 times 8 bits for each character, a framebuffer large enough to hold every pixel on the resulting screen would require at least 128,000 bits, 16,000 bytes, or just under 16 kilobytes. By the standards of modern computers, these may seem like trivial amounts of memory, but to put them in context, the original [[Apple II]] was released in 1977 with only four kilobytes of memory and a price of $1,300 in U.S. dollars (at a time when the [[minimum wage in the United States]] was only $2.30 per hour). Furthermore, from a business perspective, the [[business case]] for text terminals made no sense unless they could be produced and operated more cheaply than the paper-hungry teleprinters they were supposed to replace. Another advantage of text mode is that it has relatively low bandwidth requirements in remote terminal use. Thus, a text mode remote terminal can necessarily update the screen much faster than a graphics mode remote terminal linked to the same amount of bandwidth (and in turn will seem more responsive), since the remote server may only need to transmit a few dozen bytes for each screen update in text mode, as opposed to complex raster graphics [[remote procedure call]]s that may require the transmission and rendering of entire [[bitmap]]s. == User-defined characters == The border between text mode and graphical programs can sometimes be fuzzy, especially on the PC's [[Video Graphics Array|VGA]] hardware, because many later text mode programs tried to push the model to the extreme by playing with the [[Graphics card|video controller]]. For example, they redefined the character set in order to create custom semi-graphical characters, or even created the appearance of a graphical mouse pointer by redefining the appearance of the characters over which the mouse pointer was shown at a given time. Text mode rendering with user-defined characters has also been useful for 2D [[Video game|computer and video games]] because the game screen can be manipulated much faster than with pixel-oriented rendering. {{Clear}} ==Technical basis== {{redirect|Attribute byte|DOS filesystem attributes|Design of the FAT file system#Directory table}} A [[Graphics card|video controller]] implementing a text mode usually uses two distinct areas of [[video random-access memory|memory]]. ''Character memory'' or a ''pattern table'' contains a [[raster font]] in use, where each character is represented by a [[dot matrix]] (a [[matrix (mathematics)|matrix]] of [[bit]]s), so the character memory could be considered as a three-dimensional [[bit array]]. ''Display matrix'' (a ''text buffer'', ''screen buffer'', or ''nametable'') tracks which character is in each cell. In the simple case the display matrix can be just a matrix of [[code point]]s (so named ''character pointer table''), but it usually stores for each character position not only a code, but also ''attributes''. {| width=372 border=1 cellspacing=0 cellpadding=1 align=right style="margin-left: 16px" class="wikitable" |- bgcolor=#99CCFF ! {{diagonal split header|L|C|#FFFFFF}} |<span style="font-family: monospace">0<br>0<br>0<br>0<br>0</span>||<span style="font-family: monospace">0<br>0<br>0<br>0<br>1</span>||<span style="font-family: monospace">0<br>0<br>0<br>1<br>0</span>||<span style="font-family: monospace">0<br>0<br>0<br>1<br>1</span>||<span style="font-family: monospace">0<br>0<br>1<br>0<br>0</span>||<span style="font-family: monospace">0<br>0<br>1<br>0<br>1</span>||<span style="font-family: monospace">0<br>0<br>1<br>1<br>0</span>||<span style="font-family: monospace">0<br>0<br>1<br>1<br>1</span>||<span style="font-family: monospace">00000000<br>11111111<br>00001111<br>00110011<br>01010101</span>||<span style="font-family: monospace">11…<br>00…<br>00…<br>00…<br>01…</span> |- | bgcolor=#FFCC99 |<span style="font-family: monospace">00000</span>|| ||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| || | rowspan=8 align=center | | rowspan=8 | |- | bgcolor=#FFCC99 |<span style="font-family: monospace">00001</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| || || ||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| |- | bgcolor=#FFCC99 |<span style="font-family: monospace">00010</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| ||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| |- | bgcolor=#FFCC99 |<span style="font-family: monospace">00011</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| ||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| |- | bgcolor=#FFCC99 |<span style="font-family: monospace">00100</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| ||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| |- | bgcolor=#FFCC99 |<span style="font-family: monospace">00101</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| || || || || || |- | bgcolor=#FFCC99 |<span style="font-family: monospace">00110</span>|| ||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>||<span style="color:#00C000; font-size:100%;">■</span>|| || || |- | bgcolor=#FFCC99 |00111|| || || || || || || || |- | bgcolor=#FFCC99 |<span style="line-height: 0.8em">01000<br>01001<br>…</span> | colspan=10 align=center |… … … |- | colspan=12 |[[Image:Character generator scheme.svg|384px]]<small><br>A sample of character box and corresponding electronic scheme. The glyph is 8×8 pixels, with 3-bit low parts of scan line and dot counter. The screen is between 20×18 and 32×32 character cells, with 5-bit indices.</small> |} In the case of [[raster scan]] output, which is the most common for computer monitors, the corresponding video signal is made by the ''character generator'', a special electronic unit similar to [[character generator|devices with the same name used in video technology]]. The video controller has two [[processor register|registers]]: scan line counter and dot counter, serving as coordinates in the screen dot matrix. Each of them must be divided by corresponding glyph size to obtain an index in the display matrix; the [[modulo|remainder]] is an index in glyph matrix. If glyph size equals to [[power of two|2<sup><var>n</var></sup>]], then it is possible just to use <var>n</var> low bits of a binary register as an index in glyph matrix, and the rest of bits as an index in the display matrix — see the scheme. The character memory resides in a [[read-only memory]] in some systems. Other systems allow the use of [[Random-access memory|RAM]] for this purpose, making it possible to redefine the [[typeface]] and even the [[character set]] for application-specific purposes. The use of RAM-based characters also facilitates some special techniques, such as the implementation of a pixel-graphics frame buffer by reserving some characters for a bitmap and writing pixels directly to their corresponding character memory. In some historical graphics chips, including the [[TMS9918]], the [[MOS Technology VIC]], and the [[Game Boy]] graphics hardware, this was actually the canonical way of doing pixel graphics. Text modes often assign ''attributes'' to the displayed characters. For example, the [[VT100]] terminal allows each character to be underlined, brightened, blinking or inverse. Color-supporting devices usually allow the color of each character, and often the background color as well, to be selected from a limited [[palette (computing)|palette]] of colors. These attributes can either coexist with the character indices or use a different memory area called ''color memory'' or ''attribute memory''.<ref>[http://wiki.osdev.org/Text_UI#Video_Memory Text mode layout and palette]</ref> Some text mode implementations also have the concept of line attributes. For example, the VT100-compatible line of text terminals supports the doubling of the width and height of the characters on individual text lines. ==PC common text modes== {{main|VGA text mode#PC common text modes}} 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:<ref>[http://www.ctyme.com/intr/rb-0069.htm Text modes on Ralf Browns interrupt list]</ref> {| class="wikitable" ! Text res. ! Char. size ! Graphics res. ! Colors ! Adapters |- | 80×25 | 9×14 | 720×350 | B&W Text | [[IBM Monochrome Display Adapter|MDA]], [[Hercules Graphics Card|Hercules]] |- | 40×25 | 8×8 | 320×200 | 16 colors | [[Color Graphics Adapter|CGA]], EGA |- | 80×25 | 8×8 | 640×200 | 16 colors | CGA, EGA |- | 80×25 | 8×14 | 640×350 | 16 colors | [[Enhanced Graphics Adapter|EGA]] |- | 80×43 | 8×8 | 640×350 | 16 colors | EGA |- | 80×25 | 9×16 | 720×400 | 16 colors | [[Video Graphics Array|VGA]] |- | 80×30 | 8×16 | 640×480 | 16 colors | [[Video Graphics Array|VGA]] |- | 80×50 | 9×8 | 720×400 | 16 colors | VGA |- | 80×60 | | | 16 colors | [[VESA BIOS Extensions|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 |- |} MDA text could be emphasized with bright, underline, reverse and blinking attributes. Video cards in general are backward compatible, i.e. EGA supports all MDA and CGA modes, VGA supports MDA, CGA and EGA modes. 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]] and compatible personal computers. Several programs, such as [[terminal emulator]]s, used only 80×24 for the main display and reserved the bottom row for a [[status bar]]. Two other VGA text modes, 80×43 and 80×50, exist but were very rarely used. The 40-column text modes were never very popular outside games and other applications designed for compatibility with television monitors, and were used only for demonstration purposes or with very old hardware. Character sizes and graphical resolutions for the extended [[VESA BIOS Extensions|VESA]]-compatible [[Super VGA]] text modes are manufacturer-dependent. Also on these display adapters, available colors can be halved from 16 to 8 when a second customized character set is employed (giving a total repertoire of 512 —instead the common 256— different graphic characters simultaneously displayed on the screen). Some cards (e.g. [[S3 Graphics|S3]]) supported custom very large text modes, like 100×37 or even 160×120. In [[Linux]] systems, a program called [[SVGATextMode]] is often used with SVGA cards to set up very large console text modes, such as for use with split-screen [[terminal multiplexer]]s. == Modern usage == Many modern programs with a graphical interface simulate the display style of text mode programs, notably when it is important to preserve the vertical alignment of text, e.g., during [[computer programming]]. There exist also software components to [[emulator|emulate]] text mode, such as [[terminal emulator]]s or command line [[Win32 console|console]]s. In [[Microsoft Windows]], the [[Win32 console]] usually opens in emulated, graphical window mode. It can be switched to full screen, true text mode and vice versa by pressing the [[Alt key|Alt]] and [[Enter key|Enter]] keys together.<ref>[http://support.microsoft.com/kb/81823 Windows uses Alt+Enter to make a terminal full screen]</ref> This is no longer supported by the WDDM display drivers introduced with Windows Vista.<ref>{{Cite web|url=https://support.microsoft.com/en-us/kb/926657|title = Some 16-bit DOS-based Programs and the Command Prompt will not run in full-screen mode in Windows Vista and in Windows 7}}</ref> [[Linux]] [[virtual console]]s operate in text mode. Most Linux distributions support several virtual console screens, accessed by pressing [[Control key|Ctrl]], Alt and a [[function key]] together. The [[AAlib]] [[open source]] library provides programs and routines that specialize in translating standard image and video files, such as [[Portable Network Graphics|PNG]] and [[Windows Media Video|WMV]], and displaying them as a collection of [[ASCII]] characters. This enables a rudimentary viewing of graphics files on text mode systems, and on text mode web browsers such as [[Lynx (web browser)|Lynx]]. ==See also== * [[Text-based user interface]] <!--* [[Text mode demos]] — computer animations generated in text mode. Just for history: "Text mode demos", "tmdc11", "tmdc13" "32x" and "pcdemoscene" removed early (2014).--> * [[Teletext]] * [[Semigraphics|Text semigraphics]] * [[ASCII art]] * [[Twin (windowing system)|Twin]] * [[Hardware code page]] * [[VGA text mode]] VGA-compatible text mode details * [[Line-oriented printer]] * [[Characters per line]] ==References== {{Reflist}} ==External links== * [https://web.archive.org/web/20080213005117/http://www.digitalhermit.com/linux/hiresconsole.html High-Resolution console on Linux] ==Further reading== *{{cite book |title=Signetics MOS Silicon Gate 2500 Series Metal Gate 2000/2400 Series Data Book |location=Sunnyvale, CA, USA |publisher=[[Signetics Corporation]] |date=1972 |pages=65–72 |url=http://bitsavers.trailing-edge.com/pdf/signetics/_dataBooks/1972_Signetics_MOS.pdf |access-date=2016-06-18 |url-status=live |archive-url=https://web.archive.org/web/20160618184245/http://bitsavers.trailing-edge.com/pdf/signetics/_dataBooks/1972_Signetics_MOS.pdf |archive-date=2016-06-18}} (NB. For example: Signetics 2513 MOS ROM.) [[Category:Text mode| ]] [[Category:Text user interface| ]] [[Category:Display technology]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Clear
(
edit
)
Template:Diagonal split header
(
edit
)
Template:Keypress
(
edit
)
Template:Main
(
edit
)
Template:Redirect
(
edit
)
Template:Refimprove
(
edit
)
Template:Refimprove section
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)