Semigraphics

Last updated

Image rendered using MDA block graphics Image rendered in MDA text mode using semigraphic blocks.png
Image rendered using MDA block graphics
Color image rendered using Teletext semigraphic characters Level 1 teletext test.png
Color image rendered using Teletext semigraphic characters

Text-based semigraphics, pseudographics, or character graphics 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.

Contents

There are two different ways to accomplish the emulation of raster graphics. The first one is to create a low-resolution all points addressable mode using a set of special characters with all binary combinations of a certain subdivision matrix of the text mode character size; this method is referred to as block graphics, [1] or sometimes mosaic graphics. [2] [3]

The second one is to use special shapes instead of glyphs (letters and figures) that appear as if drawn in raster graphics mode, sometimes referred to as semi- or pseudo-graphics; an important example of this is box-drawing characters.

Semigraphical characters (including some block elements) are still incorporated into the BIOS of any VGA compatible video card, so any PC can display these characters from the moment it is turned on, even when no operating system is yet loaded. Single and double lines are still often drawn with this method when the system uses text mode; for example when running the BIOS setup program.

Many of these historical ideas have been adopted into Unicode, in, for example in the Symbols for Legacy Computing, Block Elements, Box Drawing and Geometric Shapes Unicode blocks. [4]

Block graphics

Sample character set display showing block graphics as used in the TRS-80 Color Computer (CoCo), and Dragon 32/64 Cocobvdg.png
Sample character set display showing block graphics as used in the TRS-80 Color Computer (CoCo), and Dragon 32/64

For example, an 8×12 pixel character could be divided vertically in two halves and horizontally in three parts, and then assigning "ink" and "background" values to the elements of the matrix in a binary pattern, corresponding to the binary sequence of the position in the font table of a 2×3 block mosaic [5] matrix of so-called squots (square dots) [6] or sextants. [7] Less often used versions use a 1×6 "matrix", in which case these six "pixels" are sometimes referred to as sixels. [8] But dividing an 8×8 character in 2×2 "pixels" called quadrants [7] was also common (it was, for example, used in the Sinclair ZX81).

Sometimes the text semigraphical characters are simply incorporated into the systems font-set, sometimes special video hardware is used to directly convert the bit-pattern from video memory into the pixels. In rare cases a character matrix was not dividable vertically by three, for example in an 8×8 matrix the mosaic is sometimes divided so that it uses a 3:2:3 scan line scheme. The Galaksija's graphics mode is an example, although with a 4:5:4 scheme the distortion effect was minimal. [9]

The seminal use of this technology was in the TRS-80 where the only way to get discrete pixels on the screen that could be turned on and off individually, (all points addressable) was by the use of a 2×3 pixel matrix of block graphics. In the case of the TRS-80 these block graphics were not incorporated into a font ROM, as later became the norm, but were generated directly from the logic pattern of six bits from the video RAM using a dedicated circuit made from logic gates. [10] An earlier system using the same pseudo-graphics array of a 2 by 3 matrix was the Video Terminal Interface (VTI) of the Poly-88 by polymorphic systems, an S-100 bus based system predating the TRS-80.

If the system also supported color, the color resolution of the resulting pixels was normally equal to the text resolution, often leading to attribute clash as the color of a pixel could not be changed on a per pixel basis, but only to one "ink", and one "background" color for all pixels within a character position.

Sometimes the number of characters in the font, dedicated to block graphics, could be halved if the system also supported an "invert" attribute, as half the characters in a full block graphics font set are the logical inverse of the other half of the font set. Other tricks that were used to decrease the number of needed characters, was to use a space for the "all bits are zero" character, and to use character 7F hex for the "all bits are on" character, as character 7F hex (decimal 127) was often defined as an "all pixels on" character (this was because when using papertape punching out all seven holes, created the 7F hex "byte" which was considered to be the "DEL" or "rub-out" character).[ citation needed ] The assignment in ASCII of the rub-out character (to the code point 127) led designers of VDUs to use "rub-out" for a character square filled with "ink", which was often used to represent the cursor.[ citation needed ]

Examples of the use of block graphics

Text block graphics set of the ZX-81 ZX81.chars.00-0A.80-8A.png
Text block graphics set of the ZX-81

Other examples of systems that relied on the use of block graphics are:

  • The ZX80 and ZX81 character sets, where a matrix of 2×2 pixels was used, with the space and invert attribute tricks to keep the number of characters in the ROM needed down to just 7 (of the necessary 16). [11] The ZX Spectrum also supported block graphics as well as "real" higher-resolution graphics. In addition, on the Spectrum the system font (stored in its ROM) could be easily and instantly changed to one stored in RAM, allowing programmers to define their own semigraphical characters to suit their needs.
  • Other systems that used a 2×2 matrix included the Panasonic JR-200 and the Mattel Aquarius. The latter supported not just 2×2 matrix semigraphics but also 2×3 matrix semigraphics, albeit imperfectly, as the semigraphics pixels in a character's middle row were less tall than those in the top and bottom rows, due to imperfect division of the 8×8 pixel character matrix.
  • The Commodore PET also had a few characters to support 2×2 text semigraphics in its PETSCII character set. The PET was also one of the first systems to rely heavily on semigraphical characters, to get any form of graphics on screen.
  • The TRS-80 Color Computer, and the Dragon 32/64 are good examples of systems using 2×2 matrix color semigraphics. But their Motorola 6847 VDC also supported a little used 6-block semigraphics mode. [12] [13]
  • Videotex and teletext systems used a 2×3 matrix and one foreground ("ink"), and one background color, normally out of a set of eight colors (including black and white). Many systems used "Videotex graphics". One of the best known examples is the Acorn BBC Micro's default graphics mode (mode 7). [14] Other systems which used "Videotex"-like graphics are: the ABC 80, the Grundy NewBrain, many of the Acorn Eurocard systems, and the Philips P2000T, which actually used a Teletext chip designed for their TV's.
  • The Matra Alice 32, [15] Matra Alice 90 [16] and Philips VG5000 [17] were based on the Thomson EF9345 graphic chip, only capable of displaying alphanumeric and semigraphic characters. [18]
  • The PC-8001 managed to combine normal text with a full set of 256 text semigraphical "characters" in a 2×4 matrix; the system distinguished the set of 256 semigraphics patterns from the 256-character set used for "normal" fonts via character attribute bytes. [19]
  • One of the last video systems where text semigraphics were a useful option was the Color Graphics Adapter (CGA). This graphics adapter for early IBM-PCs only supported four colors in its high-resolution graphics mode, but in text mode it could display 16 different colors. Although the CGA adapter's font ROM did not contain all of the otherwise typical text semigraphics characters, it was still possible to create a 160 × 100 CGA text semigraphics mode using a semi-documented trick. [20]

Semigraphical characters

PETSCII Chart as displayed on the C64 in shifted and unshifted modes. (Not shown are control codes, as well as characters in the $C0-$FF range, which are the standard uppercase keycodes returned from the keyboard, and which are mirrored to the range $60-$7F.) C64 Petscii Charts.png
PETSCII Chart as displayed on the C64 in shifted and unshifted modes. (Not shown are control codes, as well as characters in the $C0–$FF range, which are the standard uppercase keycodes returned from the keyboard, and which are mirrored to the range $60–$7F.)
The keyboard of the PET 2001 has semigraphical characters indicated for easy entry PET Keyboard.svg
The keyboard of the PET 2001 has semigraphical characters indicated for easy entry

Semigraphical characters are also characters in a font that are intended to give the impression that a system can support high resolution graphics, while in fact the system operates in text mode. Characters such as box-drawing characters, circles and dots, card symbols like ♠, ♣, ♥ and ♦, and "graphical building block" geometric shapes such as triangles gave such systems that appearance.

One of the first systems that used such characters, the canonical example that others followed, was the Commodore PET, which had many of them within its PETSCII font set. [21] The original PET relied to such a degree on these characters that it printed them on its keyboard, as can be seen here, an example that other systems soon copied.

Another good example of a system that relied on semigraphical characters is the venerable Sharp MZ80K, which had no high-resolution graphics, nor reprogrammable characters, but relied fully on an extended font set with many pseudo graphical characters. [22] With these it was still possible to generate games that looked like the system had high-resolution graphics. [23]

Some of the systems that had a programmable font set, but did not have a real high resolution raster graphics hardware, came with default character sets to be uploaded in character set RAM, and these sets often incorporated the ideas mentioned here, although it was often also the case that dedicated semigraphical characters were defined as needed.

Systems that relied on semigraphical characters

Examples of systems that relied heavily on semigraphical characters for their graphics are:

See also

Related Research Articles

<span class="mw-page-title-main">ASCII art</span> Computer art form using text characters

ASCII art is a graphic design technique that uses computers for presentation and consists of pictures pieced together from the 95 printable characters defined by the ASCII Standard from 1963 and ASCII compliant character sets with proprietary extended characters. The term is also loosely used to refer to text-based visual art in general. ASCII art can be created with any text editor, and is often used with free-form languages. Most examples of ASCII art require a fixed-width font such as Courier for presentation.

<span class="mw-page-title-main">Raster graphics</span> Matrix-based data structure

In computer graphics and digital photography, a raster graphic represents a two-dimensional picture as a rectangular matrix or grid of pixels, viewable via a computer display, paper, or other display medium. A raster is technically characterized by the width and height of the image in pixels and by the number of bits per pixel. Raster images are stored in image files with varying dissemination, production, generation, and acquisition formats.

<span class="mw-page-title-main">TRS-80 Color Computer</span> Line of home computers

The RadioShack TRS-80 Color Computer, later marketed as the Tandy Color Computer and nicknamed the CoCo, is a line of home computers developed and sold by Tandy Corporation. Despite sharing a name with the earlier TRS-80, the Color Computer is a completely different, incompatible system and a radical departure in design and compatibility with its Motorola 6809E processor rather than the Zilog Z80 earlier models were built around.

<span class="mw-page-title-main">PETSCII</span> Character encoding on Commodore computers

PETSCII, also known as CBM ASCII, is the character set used in Commodore Business Machines' 8-bit home computers.

<span class="mw-page-title-main">Color Graphics Adapter</span> IBM PC graphic adapter and display standard

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 color graphics card for the IBM PC and established a de facto computer display standard.

<span class="mw-page-title-main">ATASCII</span> Character encoding used by the Atari 8-bit family of home computers

The ATASCII character set, from ATARI Standard Code for Information Interchange, alternatively ATARI ASCII, is a character encoding used in the Atari 8-bit family of home computers. ATASCII is based on ASCII, but is not fully compatible with it.

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; at the same time, contrasted to graphics mode or other kinds of computer graphics modes.

<span class="mw-page-title-main">Attribute clash</span>

Attribute clash is a display artifact caused by limits in the graphics circuitry of some colour 8-bit home computers, most notably the ZX Spectrum, where it meant that only two colours could be used in any 8×8 tile of pixels. The effect was also noticeable on MSX software and in some Commodore 64 titles. Workarounds to prevent this limit from becoming apparent have since been considered an element of Spectrum programmer culture.

<span class="mw-page-title-main">Box-drawing character</span> Unicode block group

Box-drawing characters, also known as line-drawing characters, are a form of semigraphics widely used in text user interfaces to draw various geometric frames and boxes. These characters are characterized by being designed to be connected horizontally and/or vertically with adjacent characters, which requires proper alignment. Box-drawing characters therefore typically only work well with monospaced fonts.

<span class="mw-page-title-main">Video display controller</span> Type of integrated circuit

A video display controller (VDC), also called a display engine or display interface, 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. VDCs were used in the home computers of the 1980s and also in some early video picture systems.

<span class="mw-page-title-main">World System Teletext</span> Teletext standard

World System Teletext (WST) is the name of a standard for encoding and displaying teletext information, which is used as the standard for teletext throughout Europe today. It was adopted into the international standard CCIR 653 of 1986 as CCIR Teletext System B.

<span class="mw-page-title-main">Motorola 6847</span> Video display generator (VDG) by Motorola

The MC6847 is a Video Display Generator (VDG) first introduced by Motorola in 1978 and used in the TRS-80 Color Computer, Dragon 32/64, Laser 200, TRS-80 MC-10/Matra Alice, NEC PC-6000 series, Acorn Atom, and the APF Imagination Machine, among others. It is a relatively simple display generator intended for NTSC television output: capable of displaying alphanumeric text, semigraphics, and raster graphics contained within a roughly square display matrix 256 pixels wide by 192 lines high.

<span class="mw-page-title-main">Sixel</span> Bitmap graphics format

Sixel, short for "six pixels", is a bitmap graphics format supported by terminals and printers from DEC. It consists of a pattern six pixels high and one wide, resulting in 64 possible patterns. Each possible pattern is assigned an ASCII character, making the sixels easy to transmit on 7-bit serial links.

<span class="mw-page-title-main">ZX80 character set</span> Character set

The ZX80 character set is the character encoding used by the Sinclair Research ZX80 microcomputer with its original 4K BASIC ROM. The encoding uses one byte per character for 256 code points. It has no relationship with previously established ones like ASCII or EBCDIC, but it is related though not identical to the character set of the successor ZX81.

<span class="mw-page-title-main">ZX81 character set</span> Character encoding used in the Sinclair ZX81 computers

The ZX81 character set is the character encoding used by the Sinclair Research ZX81 family of microcomputers including the Timex Sinclair 1000 and Timex Sinclair 1500. The encoding uses one byte per character for 256 code points. It has no relationship with previously established ones like ASCII or EBCDIC, but it is related though not identical to the character set of the predecessor ZX80.

The TRS-80 computer manufacturered by Tandy / Radio Shack contains an 8-bit character set. It is partially derived from ASCII, and shares the code points from 32 - 95 on the standard model. Code points 96 - 127 are supported on models that have been fitted with a lower-case upgrade.

Symbols for Legacy Computing is a Unicode block containing graphic characters that were used for various home computers from the 1970s and 1980s and in Teletext broadcasting standards. It includes characters from the Amstrad CPC, MSX, Mattel Aquarius, RISC OS, MouseText, Atari ST, TRS-80 Color Computer, Oric, Texas Instruments TI-99/4A, TRS-80, Minitel, Teletext, ATASCII, PETSCII, ZX80, and ZX81 character sets, as well as semigraphics characters.

<span class="mw-page-title-main">Thomson EF9345</span> Semigraphic microprocessor by SGS-Thomson Microelectronics

The EF9345 from SGS-Thomson Microelectronics, Inc., was a semigraphic microprocessor for video image control, encapsulated in a 40-pin DIP and used primarily in the Matra Alice 32, Matra Alice 90 and Philips VG5000 microcomputers.

References

  1. "R.T.Russell: BBC BASIC for Windows". www.bbcbasic.co.uk.
  2. Freytag (c), Asmus (2020-10-13). "Teletext separated mosaic graphics".
  3. Enhanced Teletext specification (PDF). European Telecommunications Standards Institute. 1997. p. 6.
  4. "Unicode block U25A0 contains geometric shapes" (PDF).
  5. https://www.etsi.org/deliver/etsi_i_ets/300001_300099/300072/01_60/ets_300072e01p.pdf
  6. Goldklang, Ira (2015). "Graphic Tips & Tricks". Archived from the original on 2017-07-29. Retrieved 2017-07-29.
  7. 1 2 Ewell, Doug; Bettencourt, Rebecca G.; Bánffy, Ricardo; Everson, Michael; Silva, Eduardo Marín; Mårtenson, Elias; Shoulson, Mark; Steele, Shawn; Turner, Rebecca (2019-01-04). "5. Graphic characters". Proposal to add characters from legacy computers and teletext to the UCS (PDF). Terminals Working Group (TWG), International Organization for Standardization. p. 3. L2/19-25. Archived (PDF) from the original on 2020-12-24. Retrieved 2021-01-11. p. 3: The word "sextant" is used in this document, by analogy with "quadrant"—a term used for certain UCS characters since 1999—to refer to a semigraphics block consisting of six smaller blocks or "cells" arranged in two columns and three rows. In the teletext specification, characters in this group could be displayed either with the cells joined together, as with the existing quadrant characters, or with a narrow space between cells. A teletext emulator could interpret the control character U+001A ("separated graphics") to display space between cells, or U+0019 ("contiguous graphics") to revert to the default, joined appearance{{cite book}}: |work= ignored (help)
  8. "JayceLand's Weekly Rochester Events #191: All White Sixel". jayceland.com.
  9. "OLD-COMPUTERS.COM Museum ~ GALAKSIJA Galaksija software & screenshots". See the second image from above. The image shows small difference in height of some "pixel"s. Retrieved 2014-01-27.
  10. "Description of TRS-80 block graphics".
  11. Technical details ZX-81 character set and block graphics
  12. "CoCo Semi-graphics-6 display mode".
  13. "Semi-graphics-6 display mode". 2021-02-14. Archived from the original on 2021-02-14.
  14. "R.T.Russell: BBC BASIC for Windows". www.bbcbasic.co.uk.
  15. "MATRA HACHETTE > ALICE". Archived from the original on 2021-10-03. Retrieved 2021-10-03.
  16. "MATRA HACHETTE > ALICE 90". Archived from the original on 2021-10-03. Retrieved 2021-10-03.
  17. "le VG5000µ". Archived from the original on 2021-08-21. Retrieved 2021-10-03.
  18. "EF9345 HMOS2 SINGLE CHIP SEMI-GRAPHIC DISPLAY PROCESSOR, SGS Thomson, March 1995" (PDF). Archived (PDF) from the original on 2021-07-26. Retrieved 2021-06-12.
  19. http://mydocuments.g2.xrea.com/html/p8/vraminfo.html (Source in Japanese; the relevant sentence is "アトリビュートに開始位置とセミグラフィック指定ビット=1 を立てて、テキスト VRAM には文字コードの代わりにドットパターンを書き込みます。" This roughly translates to "At the starting position of semigraphics mode, once the relevant attribute bit is set to one, a dot pattern will be written to the VRAM for the character code instead [of the default graphical letter].")
  20. IBM PC XT Technical Reference, IBM, 1983, p. 1-142, retrieved 2018-08-24
  21. Commodore C64 Manual: Commodore 64 Programmers Reference Guide, Commodore, 1983, p. 379, retrieved 2018-08-24
  22. "old-computers.com Entry on the Sharp MZ80K mentions the lack of graphics capabilities".
  23. "Sharp MZ80K - BASE ZERO game" via www.youtube.com.
  24. "Mattel Aquarius Homecomputer system". www.vdsteenoven.com.
  25. "Games on the MZ-80K relied on its great set of semigraphical characters".