Motorola 6845

Last updated
Motorola 6845 CRT controller Motorola MC6845.jpg
Motorola 6845 CRT controller

The Motorola 6845, or MC6845, is a display controller that was widely used in 8-bit computers during the 1980s. [1] [2] Originally intended for designs based on the Motorola 6800 CPU and given a related part number, it was more widely used alongside various other processors, and was most commonly found in machines based on the Zilog Z80 and MOS 6502.

Contents

The 6845 is not an entire display solution on its own; the chip's main function is to properly time access to the display memory, and to calculate the memory address of the next portion to be drawn. Other circuitry in the machine then uses the address provided by the 6845 to fetch the pattern and then draw it. The implementation of that hardware is entirely up to the designer and varied widely among machines. The 6845 is intended for character displays, but could also be used for pixel-based graphics, with some clever programming.

Among its better-known uses is the BBC Micro, Amstrad CPC, and Videx VideoTerm display cards for the Apple II. [1] It is also part of many early graphics adapter cards for the IBM PC, including the MDA, Hercules Graphics Card (HGC), Color Graphics Adapter (CGA) and the Plantronics Colorplus. [3] Its functionality was duplicated and extended by custom circuits in the EGA and VGA PC video adapters.

Design

Originally designed by Hitachi as the HD46505, [4] Hitachi-built versions are in a wide variety of Japanese computers, from Sony, Sharp, Panasonic, and Casio. Cloned later as MB89321A by Fujitsu. [5] It is also known as the 6845 CRTC or the CRTC6845, meaning "cathode-ray tube controller". This version was used on the Apricot PC and Victor 9000 to provide a 800x400 resolution monochrome display.

A common clone of this CRT controller is the United Microelectronics Corporation (UMC) UM6845E CRT controller. During the time of cold war technology embargoes, the 6845 was cloned in Bulgaria under the designation CM607. The 6845 was very similar and related to the later 6545 manufactured by MOS Technology (Commodore Semiconductor Group) and Rockwell (in two versions).

[6]

Overview

The chip generates the signals necessary to interface with a raster display but does not generate the actual pixels, though it does contribute cursor and video-blanking information to the pixel video (intensity) signals. It is used to produce correctly timed horizontal and vertical sync and provide the address in memory from which the next pixel or set of pixels should be read. The process of reading that value, converting it into pixels, and sending it to a CRT is left to other circuits. Because of this, systems using the 6845 may have very different numbers and values of colors, or may not support color at all. [6]

Interlaced and non-interlaced output modes are supported, as is a hardware text cursor. The sync generation includes generation of horizontal and vertical video blanking signals, which are used to condition the external pixel generation circuits. Also, an internal latch is provided which when triggered will duplicate and retain a copy of the video address so that it can later be read back by the CPU. This is useful for light pens and light guns which can function by sending a pulse to the 6845 when the electron beam passes, allowing a running program to read back the location that was pointed at. Because of this feature, most computer video adapters using a 6845 included a light pen interface, though it was usually an internal connector on the board itself, not on the outside of the computer, and it was usually undocumented in the user manual.

Because all aspects of video timing are programmable, a single machine can switch between NTSC and PAL timings in software. The 6845 can be used to drive monitors or any other raster display.

Internals

MC6845 pinout. MC6845.svg
MC6845 pinout.

The chip has a total of 18 8-bit registers controlling all aspects of video timings. Only two addresses are exposed to external components - one to select which internal register is to be read or written to and another to access that register. [7]

N. º of

register

Function
0Total horizontal, in number of characters
1Number of horizontal characters displayed per row
2Horizontal sync position
3Horizontal sync width, in number of characters
4Total vertical
5Vertical total adjustment, in number of scan lines
6Number of rows displayed (vertically)
7Vertical sync position, in # rows of characters
8Interlace mode
9Maximum direction of scan lines
10Start of cursor, in scan line
11End of cursor, in scan line
12Screen Start Address (High)
13Screen Start Address (Low)
14Cursor Address (High)
15Cursor Address (Low)
16Light Pen Address (High)
17Light Pen Address (Low)

The 6845 is intended for character based displays. Every address it generates is composed of two parts - a 14 bit character address and a 5 bit row address. The character address increases linearly. When the chip signals horizontal sync it increases the row address. If the row address does not equal the programmatically set number of rows per character, then the character address is reset to the value it had at the beginning of the scan line that was just completed. Otherwise the row address is reset to zero and the memory address continues increasing linearly. This causes the same sequence of character values to be re-read from the memory for each raster line of each character row, before the 6845 advances the memory address to the next character row and repeats the same pattern.

If the character address is used to look up a character reference in RAM and the row address to index a table of character graphics in ROM an ordinary text mode display is constructed. The character reference read from memory must be combined with the row address to form the address for the character graphics ROM, with the character reference selecting a set of scan line patterns that forms one character and the row address indexing into that set to select one scan line. In other words, the ROM address is split into two parts in order to use the ROM as a two-dimensional array: the first dimension selects a character, and the second selects a row of that character's graphic pattern.

However, the 6845 left to the designer the freedom to route the bits of the memory and row addresses to video RAM as they saw fit. For this reason the word addressed by the 6845 does not have to equal one pixel or one character. In CGA alphanumeric (text) mode, there are two bytes per character, accessed sequentially by the 6845the first byte is a character code byte and the second byte is a character attribute byteand the board uses the contents of the bytes, together with the row address, to read font data from ROM and generate the pixels.

Different routing of the bits, omitting the character ROM, could be used to emulate a frame buffer. Due to its 127 line limitation, the 6845 is not able to provide linear large linear frame buffers. A solution was to combine row address and character address to provide linear scanlines within a non-linear buffer. This has the advantages of easier programming for non-character display and easy smooth horizontal scrolling but can impede smooth vertical scrolling. For example the IBM CGA graphics mode uses a word size of one byte, and each word represents four or eight pixels (in the medium- or high-resolution graphics modes respectively); the 6845 is configured for a 2-pixel character height and the row address bit RA0 is used for bit 13 of the frame buffer address. This way, 200 vertical pixels can be used despite the 127 line limitation. Graphics mode on other systems used a similar trick: in the Hercules Graphics Card, bits 12-13 of the frame buffer address came from row address bits RA0-RA1, providing a vertical resolution of 348 pixels from 87 four-pixel-high "lines"; the Amstrad CPC used a line height of 8 just like in text mode, mapping row address RA0-RA2 to memory address MA11-MA13 and character address CA0-CA10 to memory address MA0-MA10.

These modes of operation were possible because the 6845 did not perform any buffering of character data. In the 1970s, 1980s, and to a lesser extent the 1990s, memory was expensive, fast memory was especially so, and this was an important concern. In the 1970s and early to mid-1980s, chip circuit densities were not very high either, and putting an 80-byte or larger character buffer into a chip like the 6845 might have enlarged the chip die by 50-100%, in turn making it more expensive by a few times that factor due to the exponential growth of chip defect rates and the consequent decline of production yield with die size.

On the other hand, the 6845 put the onus on its users to provide enough memory bandwidth to support rereading data on every line. If a character occupies one "word" in the video buffer, a display of l lines and c columns of characters with s scan lines per character requires l × c words of memory to represent a full screen of characters but takes s times that many memory accesses to complete one refresh cycle: each line of character words is repeatedly read s times before the next line is read. This means that character displays using the 6845 require high memory bandwidth on the order of the bandwidth required for all-points-addressable graphics displays of the same resolution.

A different video display controller that buffers one whole line of character data internally can avoid this repeated reading of each line of characters from the display buffer RAM, reducing the required memory bandwidth and allowing either slower, less expensive memory chips to be used, more time for a system CPU to access the memory, or a combination of both. Adding such a character buffer to the 6845 was deemed to not be cost-effective approach when the chip was introduced; however, only a few years later the VIC-II chip used on the Commodore 64 did include such a character line cache.

Limitations

Using the full address range RA0-RA4:CA0-CA13 the 6845 can address 214+5 = 524,288 words of memory. A word may be any number of bits chosen by the system designer as the memory width: though the number of unique addresses that the 6845 can address is limited to 524,288, the amount of memory that the 6845 can address may be significantly larger than might be assumed because the 6845 imposes no limit on the size of each memory location that it addresses. If the word size is one byte, as is often the case, the 6845 can address 512 KiB. If the word size is 32 bits, e.g. for 32-bit color graphics with one pixel per word, then the 6845 can address 2048 kiB; for 64-bit words, it can address twice as much. These limits arise from the combination of the 6845 and the design of the external memory connected to it, not from the 6845 alone.

Linear framebuffers

As described before, the 6845 cannot ordinarily provide large linear framebuffers. One design could only use 14-bit character addressing and set the number of lines per character to 1 but would be restricted to 128 lines and 16 KB of addressable memory.

Differences from the 6545

Although overwhelmingly compatible, a number of small variations exist between the 6845 and 6545.

The biggest difference is that the 6545 may be configured so that it has sole access to the address bus for video memory. Two additional registers are included for setting any address the CPU wishes to read and the chip alternates between outputting addresses for display generation and the display set for CPU access. [8]

Smaller changes are that the MOS Technology and one variation of the Rockwell 6545 lack interlaced output support and all 6545s include an optional address skew, which delays display enable for one character cycle if set. This second feature was incorporated into later variations of the Motorola 6845. The 6545 may be set to work in linear 14 bit mode using a status bit. On the 6845 the same thing requires adjustment of the character height. [9]

Tricks

The 6845 reads the start address for its display once per frame. However, if the internal timing values on the chip are altered at the correct time it can be made to prepare for a new frame without ending the current one - creating a non-continuous break in generated addresses midway through the display. This is commonly used by demos and much more rarely games to provide one moving area of the display (usually the play field) and one static (usually a status display).

Vertical scrolling appears constrained because only the character start address can be set and the row address is always zeroed at frame start, but by adjusting border times it is possible to shift the position the framebuffer is shown on the raster display for increments in between whole characters. With drawing of blank pixels at the screen edges, this can be made invisible to the user creating just the illusion of a smooth vertical scroll.

See also

Related Research Articles

<span class="mw-page-title-main">Apple II</span> First computer model in the Apple II series

The Apple II is an early personal computer that was created by Apple Inc. It was one of the first successful mass-produced microcomputer products, and it played a significant role in the early development of the personal computer industry. It has an 8-bit microprocessor.

<span class="mw-page-title-main">Amiga Original Chip Set</span> Chipset used in Amiga personal computer

The Original Chip Set (OCS) is a chipset used in the earliest Commodore Amiga computers and defined the Amiga's graphics and sound capabilities. It was succeeded by the slightly improved Enhanced Chip Set (ECS) and the greatly improved Advanced Graphics Architecture (AGA).

<span class="mw-page-title-main">Atari 8-bit family</span> Home computer series introduced in 1979

The Atari 8-bit family is a series of 8-bit home computers introduced by Atari, Inc. in 1979 with the Atari 400 and Atari 800. As the first home computer architecture with coprocessors, it has graphics and sound more advanced than most of its contemporaries. Video games were a major appeal, and first-person space combat simulator Star Raiders is considered the platform's killer app. The "Atari 8-bit family" label was not contemporaneous. Atari, Inc., used the term "Atari 800 [or 400] home computer system", often combining the model names into "Atari 400/800" or "Atari home computers".

<span class="mw-page-title-main">Bally Astrocade</span>

The BallyAstrocade is a second-generation home video game console and simple computer system designed by a team at Midway, at that time the videogame division of Bally. It was originally announced as the "Bally Home Library Computer" in October 1977 and initially made available for mail order in December 1977. But due to production delays, the units were first released to stores in April 1978 and its branding changed to "Bally Professional Arcade". It was marketed only for a limited time before Bally decided to exit the market. The rights were later picked up by a third-party company, who re-released it and sold it until around 1984. The Astrocade is particularly notable for its very powerful graphics capabilities for the time of release, and for the difficulty in accessing those capabilities.

<span class="mw-page-title-main">Atari BASIC</span> Dialect of the BASIC programming language

Atari BASIC is an interpreter for the BASIC programming language that shipped with the Atari 8-bit family of 6502-based home computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC and differs in significant ways. It includes keywords for Atari-specific features and lacks support for string arrays.

<span class="mw-page-title-main">MOS Technology VIC-II</span> Video microchip in the Commodore 64 and C128 home computers

The VIC-II, specifically known as the MOS Technology 6567/6566/8562/8564, 6569/8565/8566 (PAL), is the microchip tasked with generating Y/C video signals and DRAM refresh signals in the Commodore 64 and Commodore 128 home computers.

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">MOS Technology 8563</span>

The 8563 Video Display Controller (VDC) was an integrated circuit produced by MOS Technology. It was used in the Commodore 128 (C128) computer to generate an 80-column RGB video display, running alongside a VIC-II which supported Commodore 64-compatible graphics. The DCR models of the C128 used the later and more technically advanced 8568 [D]VDC controller.

<span class="mw-page-title-main">Television Interface Adaptor</span> Video/audio/input chip of the Atari 2600

The Television Interface Adaptor (TIA) is the custom computer chip, along with a variant of the MOS Technology 6502 constituting the heart of the 1977 Atari Video Computer System game console. The TIA generates the screen display, sound effects, and reads the controllers. At the time the Atari VCS was designed, even small amounts of RAM were expensive. The chip was designed around not having a frame buffer, instead requiring detailed programming to create even a simple display.

<span class="mw-page-title-main">TMS9918</span> Video display controller

The TMS9918 is a video display controller (VDC) manufactured by Texas Instruments, in manuals referenced as "Video Display Processor" (VDP) and introduced in 1979. The TMS9918 and its variants were used in the ColecoVision, CreatiVision, Memotech MTX, MSX, NABU Personal Computer, SG-1000/SC-3000, Spectravideo SV-318, SV-328, Sord M5, Tatung Einstein, TI-99/4, Casio PV-2000, Coleco Adam, Hanimex Pencil II, and Tomy Tutor.

<span class="mw-page-title-main">ANTIC</span> Computer graphics chip

Alphanumeric Television Interface Controller (ANTIC) is an LSI ASIC dedicated to generating 2D computer graphics to be shown on a television screen or computer display. Under the direction of Jay Miner, the chip was designed in 1977–1978 by Joe Decuir, Francois Michel, and Steve Smith for the Atari 8-bit family of home computers first released in 1979 and was patented by Atari, Inc. in 1981. ANTIC is also used in the 1982 Atari 5200 video game console, which shares most of the same hardware as the 8-bit computers.

<span class="mw-page-title-main">CTIA and GTIA</span> Custom chips used in Atari 8-bit computers

Color Television Interface Adaptor (CTIA) and its successor Graphic Television Interface Adaptor (GTIA) are custom chips used in the Atari 8-bit family of computers and in the Atari 5200 home video game console. In these systems, a CTIA or GTIA chip works together with ANTIC to produce the video display. ANTIC generates the playfield graphics while CTIA/GTIA provides the color for the playfield and adds overlay objects known as player/missile graphics (sprites). Under the direction of Jay Miner, the CTIA/GTIA chips were designed by George McLeod with technical assistance of Steve Smith.

<span class="mw-page-title-main">Tangerine Microtan 65</span>

The Tangerine Microtan 65 was a 6502 based single board microcomputer, first sold in 1979, which could be expanded into, what was for its day, a comprehensive and powerful system. The design became the basis for what later became the Oric Atmos and later computers, which has similar keyboard addressing and tape I/O as in the Microtan 65. The Microtan 65 has a single step function that can be used for debugging at the hardware level. The computer was available as ready-built boards or as kits consisting of board and components requiring soldering together.

<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">Acorn MOS</span> Computer operating system

The Machine Operating System (MOS) or OS is a discontinued computer operating system (OS) used in Acorn Computers' BBC computer range. It included support for four-channel sound, graphics, file system abstraction, and digital and analogue input/output (I/O) including a daisy-chained expansion bus. The system was single-tasking, monolithic and non-reentrant.

The AAA chipset was intended to be the next-generation Amiga multimedia system designed by Commodore International. Initially begun as a secret project, the first design discussions were started in 1988, and after many revisions and redesigns the first silicon versions were fabricated in 1992–1993. The project was stymied in 1993 based on a lack of funds for chip revisions.

Apple II graphics debuted on the Apple II in 1977 and were used throughout the Apple II line. They consist of a 16 color low resolution mode and a high resolution mode where visuals are dependent on artifact color. The Apple IIe added "double" versions of each of these, most prominently "double high resolution" with twice the horizontal resolution in 16 colors. Internally, Apple II graphics modes are idiosyncratic and do not simply use a linear frame buffer.

<span class="mw-page-title-main">Tandy Graphics Adapter</span> Computer display standard for the Tandy 1000 series

Tandy Graphics Adapter is a computer display standard for the Tandy 1000 series of IBM PC compatibles, which has compatibility with the video subsystem of the IBM PCjr but became a standard in its own right.

<span class="mw-page-title-main">Orion-128</span> Soviet DIY home computer

The Orion-128 is a DIY computer designed in Soviet Union. It was featured in the Radio magazine in 1990, other materials for the computer were published until 1996. It was the last Intel 8080-based DIY computer in Russia.

References

  1. 1 2 "The 6845 Cathode Ray Tube Controller (CRTC)". www.tinyvga.com. Retrieved 2022-11-18.
  2. "Differences of CRTC models". www.6502.org. Retrieved 2022-11-18.
  3. PC Mag Jul 1983 , p. 435, at Google Books
  4. "Datasheets-hitachi:hd4650" (PDF). Retrieved 2024-02-22.
  5. "Datasheet Archive: MB89321AP datasheet by Fujitsu". Datasheet Archive Search Engine. Retrieved 2024-02-22.
  6. 1 2 "The 6845 Cathode Ray Tube Controller (CRTC)". www.tinyvga.com. Retrieved 2022-11-18.
  7. "The 6845 Cathode Ray Tube Controller (CRTC)". web.archive.org. 2006-01-28. Retrieved 2024-02-22.
  8. "Differences of CRTC models". www.6502.org. Retrieved 2022-11-18.
  9. Fachat, André (2013-11-02). "Differences of CRTC models". 6502.org. Retrieved 2024-02-22.