28

Suppose you were trying to build a computer with a color graphics display in 1980, you have limited engineering resources and time to market is critical, so you want to get as many of the parts off the shelf as possible. Was there an off-the-shelf video chip available at that time that could be used? Requirements:

  • A bitmapped display, resolution as high as possible.

  • Some form of color.

  • It's for a workstation not a games machine, so there is no requirement for sprites or hardware scrolling.

If it makes a difference, the CPU is the 68000.

12
  • 3
    IIRC, the MC68000 was only being sampled in 1980, production quantities were not readily available until a year or so later.
    – hotpaw2
    Commented Sep 4, 2017 at 6:36
  • 1
    You say this is workstation-class rather than home market, so I guess the budget for hardware would be reasonable?
    – Jules
    Commented Sep 4, 2017 at 12:05
  • 1
    @hotpaw2 - Wikipedia says samples in February 1980 with commercial availability in November.
    – Jules
    Commented Sep 4, 2017 at 12:11
  • 1
    Re, "no requirement for sprites," One sprite, for the mouse pointer, is a nice-to-have feature. Commented Mar 26, 2020 at 12:15
  • 2
    @TonyM, Too exciting. Spent so much time in computer labs when I was supposed to be in the library checking out books, or in my dorm room banging on my typewriter... Never graduated. I was a full-time code-monkey before my classmates got their degrees, and I've been one ever since. P.S., Keyboard entry? You were lucky! Back in old days, we had it tough. Had to carve own holes in recycled punch cards wit' a dull tooth-pick, and when we missed a deadline... Oops! Sorry. Commented Mar 27, 2020 at 10:48

10 Answers 10

30

There were. A couple of examples are the Motorola MC6845 and the MC6847. These chips were flexible and allowed various resolutions and colors depending on how they were implemented.

The MC6845 was used in the Acorn BBC Micro, the Amstrad CPC and the IBM PC MDA and CGA video adapters.

The MC6847 was used in the Tandy TRS-80 [Model 1], the Acorn Atom, the Tandy Color Computer, the Dragon 32, and the V-Tech Laser 200.

Some companies made their own custom video chips and didn't allow anyone else use them. Examples would be Atari (TIA, ANTIC/GTIA, MARIA, Shifter), Commodore (VIC, VIC-II, TED, Agnus/Denise), Apple (with the IIgs), and Tandy (with the GIME in the CoCo3).

Other companies made video chips with fixed abilities, usually more powerful than the Motorola chips but with fixed resolutions, colors, and sprites, and sold them for other companies to use in their own systems.

Examples are General Instruments' AY-3-8900-1 (used in the Mattel Intellivision), Texas Instruments' TMS9918 (used in the MSX, TI-99/4(A), Coleco ADAM, and ColecoVision), and Yamaha's V9938 (used in various MSX2 systems), V9958 (used in various MSX2+ systems), and the V9990 (not sure where it was used).

6
  • 4
    The 6845 was not a standalone solution, it needed some external circuitry to actually read pixel data and convert it to pixel colours, but it supported higher resolutions, limited at the time by high DRAM prices. Commented Sep 2, 2017 at 17:47
  • 1
    The Yamaha chips and the proprietary controllers were AFAIK not available in 1980. Commented Sep 2, 2017 at 17:49
  • 2
    @berendi : As examples of the external circuitry needed around a MC6845, here is a photo of the famous IBM CGA adapter : upload.wikimedia.org/wikipedia/commons/5/55/…. Or the text-only MDA : upload.wikimedia.org/wikipedia/commons/5/55/…
    – Grabul
    Commented Sep 3, 2017 at 18:38
  • @TEMLIB Your two links appear to be the same image.
    – JAB
    Commented Sep 4, 2017 at 2:33
  • 1
    @JAB : Here is the MDA : upload.wikimedia.org/wikipedia/commons/a/a1/KL_MDA_Unknown.jpg ;-) I still have a CGA card, It is probably still working but I fried (30 years ago ?) one PCB trace near the 6 pins header when I tried to to plug a light pen. Because the MC6845 supports light pens...
    – Grabul
    Commented Sep 4, 2017 at 19:14
22

I designed a color graphics card for the Z80 ECB bus back in 1984 or so, based on the 6845.

The 6845 was "just" a timing and addressing generator. It was meant for character-based displays. So it divided the display area in character cells. Each character cell could span some horizontal pixels (to be serialized outside of the 6845) and some vertical scan lines. So it had:

  • the horizontal character number
  • the vertical text line number
  • the vertical pixel-in-character number.

This chip could easily be used for graphics as well as the necessary RAMs became available:

  • A character was e.g. defined to be 8 pixels wide and 8 pixels high.
  • The horizontal character number became the higher bits of the x pixel coordinate (the lower 3 bits generated by additional hardware clocked at 8 times the 6845 speed)
  • The vertical pixel-in-character number made the lower 3 bits of the y pixel coordinate.
  • The line number gave the higher bits of y.

My card was a 768*512 8-color RGB, memory-mapped occupying 384 KByte of address space (only the lower three bits of the byte used), with hardware zoom by 2 or 4 (reprogramming the 6845 and using a slower clock speed), resulting in 384*256 resp. 192*128, making it easier to see details on a "big" 14-inch CRT screen.

9
  • 2
    1984 is stretching the question a little, but up-voting anyway because your answer was interesting.
    – RichF
    Commented Sep 2, 2017 at 21:06
  • When the 6845 was available is the main thing.
    – wizzwizz4
    Commented Sep 3, 2017 at 14:32
  • 1
    6845 is one of the realy early CRT controllers and arround since at least 1977.
    – Raffzahn
    Commented Sep 3, 2017 at 18:11
  • Some questions: in the simple case for a character display, who pointed to the glyph data? Did the 6845 output an address for those 8 bits, or did it simply say "you should draw this bit of the screen now, and it's character $14 line 5" and then you had to figure out where those 8-bits were in your own memory? Commented Sep 29, 2017 at 14:04
  • The 6845 simply output the character address plus the vertical pixel-in-character number. You typically wired the 6845 character address to the text display RAM. The RAM's 8 data output lines (giving the ASCII code), together with the vertical pixel-in-character number, went to a 4KByte (12 address lines) character generator ROM, which produced the black-white pattern for 8 pixels. These were fed into a shift register, finally driving the video output line. Commented Sep 29, 2017 at 14:32
16

The Motorola MC6847, used in the TRS-80 Color Computer, or the Texas Instruments TMS9918 would be good candidates. Both were available in 1980, and could display 256x192 pixel colour images.

10

In 1980? Ouch. That timeframe is pretty limiting for a 'workstation' using commodity chips stuff. If you eschew the custom chip route, and you didn't do something like license someone else's design (in 1980? E&S if you have the $$$. PERQ, maybe? Apollo?), I think about all you have are:

  • MC6845 (and numerous derivatives and second sources): CGA resolution, limited color graphics
  • TMS9918: CGA-ish resolution, limited color graphics
  • Dumb frame buffer: a la the Mac...some (v)ram and a video shift register (maybe something fun like the Fujitsu MB14241). Not that many chips, but without some pretty sophisticated tricks somewhere you won't get many color planes before you crushed a 68000 (1 almost did in the original Mac), so this is more in the realm of idle speculation.
  • Smart frame buffer: As above, but use another processor to handle most of the drawing tasks (bitblt, mouse, etc.). Trade hardware for software. Could be another 68000, or one of the 8-bitters (the 6809 was introduced in 1978). More chips, but much less risk than rolling your own silicon.

N.B. - the MC6847 was around before 1980, but as I recall it was intended to drive a TV and have very limited resolution, so isn't really a workstation graphics chip.

Now, if you could wait just another two years or so, the whole world changes. In particular:

  • 1982: NEC uPD7220, Up to 1k x 1k, 4-planes, fast and cascadeable for more colors. Second sourced by Intel and evolved into uPD72120 and uPD72220.
  • 1982: Thomson EF936x, described above, chips in the series from 512 x 256 to 512 x 1024 with lots of extras. Nice chips.
  • 1982: Various V-series derivatives of the TMS9918.
  • 1982: faster 68000s & 68010 for better frame buffers (and better performance in general).
  • 1983: the TI32010 DSP came out, which people did some very interesting graphics stuff with, but I don't think this really meets the OP's requirements :-)
  • 1984: the HD63484 chipset, awesome 4k x 4k and up to 16-bit color
  • 1984: the mc68020, frame buffers, again

Then in 1985 some folks started a company called ATI and things in the graphics world started to really change.

2
  • 1
    I think a more immediate change in 1985 was the introduction of the ARM processor. Those early Acorn workstations had much better video performance than anything else I saw for years.
    – Jules
    Commented Sep 29, 2017 at 10:41
  • I'm afraid compared to things like ATI, the Amiga 1000, the Atari ST and the Mac, the Acorn was irrelevant outside of the UK. Commented Sep 30, 2017 at 23:44
9

Well, beside building it from scratch with TTL components I guess that is. Right?

As already described you could go ahead and 'extend' some existing chips. But if you want an integrated graphics solution more like today's systems, the Thomson EF9365/66 would be the most appropriate selection.

Caveat: I'm not sure if they where already available in 1980, as the earliest data book I own, including them is from 1981.

Also, while in capabilities beyond what contemporary homecomputers did, they're still roughly within the limits of TV alike screens. But that border was quite lower back en and they have have been used like in a professional CAD setup with the EF936x driving a high-res graphics screen while commands and parameters where edited on a separate text screen. Windowing early 1980s style :))

Features included

  • Resolution 64x64, 128x128, 256x256 and 512x512 (last one only interlaced)
  • additionally 512x256 non interlaced on the EF9366
  • logical operation on a 4096x4096 space
  • DRAM controller for 16 and 64 k chips
  • lightpen support
  • (interrupt) signals for Lightpen, VBLANK and READY
  • (almost) unlimited number of bitplanes
  • 1,2,4 or 8 Bit per plane per pixel
  • on-chip character generator
  • scalable and rotatable character set (1..16 times width and height separate)
  • vector (line) drawing capabilities with 4 line types

Especially the last five points set it apart from any other controller at that time (I know). All syncing signals, timing and pixel clock is provided by the controller, bitplane selection, shift register(s) and colour generation (from the clocked data) is to be added. This makes the EF936x series extreme flexible. A 512x512 display in 24 Bit colour wouldn't be a big deal. Since the plane addressing was quite flexible, the signal generation could add many tricks like a layer for transparency (TV overlay) or other special function modes.

I always wanted to build a graphics system using that chip, as examples where like out of the world for back then. The chips are still somewhere, but I never went through.

2
  • 2
    According to en.wikipedia.org/wiki/Thomson_EF936x those chips were only actually released in 1982, but upvoted anyway as an interesting example of what could be done around that time.
    – rwallace
    Commented Sep 4, 2017 at 0:08
  • 1
    Hard to decide without proof of real sales. I wouldn't realy trust Wiki on such dates.
    – Raffzahn
    Commented Sep 5, 2017 at 12:51
7

Bitmap displays are easy. Basically, all they require is some address counters and multiplexing logic. The only difficult part is getting adequate memory bandwidth to achieve adequate performance, and that's a fairly straightforward cost vs. performance trade-off. Things like sprites are used to increase what can be done with a given amount of memory bandwidth, but otherwise there's really nothing about straight bitmap that would require custom circuitry.

4
  • 3
    Right. A 74LS90 and a 74LS93 can be easily wired to count to 40 or 80 for display columns, while a 74LS393 can count pixel-within-row (bits 0-2) and rows (bits 3-7). A simple state machine (another 74LS93 as state counter, and a 74LS188 to decode state to logic activation controls) pulls data out of RAM (deasserting /DTACK to make sure the 68K is disconnected from the bus) for either character, then colour, then bitmap for the row of the character (text mode) or a foreground/background bitmap and a pair of colour values (graphics mode), combine with simple circuitry into video output.
    – Jules
    Commented Sep 4, 2017 at 16:44
  • 2
    You need those 5 chips for this control circuit, plus a handful of standard logic chips to turn the counter values into addresses, and a handful of registers to store temporary data. Entire system has about 15 ICs, and probably takes a competent designer much less than a week to put together, and that's assuming the designer has never done it before. If you're trying to optimize for production cost or space it's a little harder, but most 80s-era workstations didn't worry too much about either. They left that the home computer guys.
    – Jules
    Commented Sep 4, 2017 at 16:47
  • 2
    @Jules: Things can work out especially nicely if one is using DRAM and is willing to allocate a power-of-two number of bytes per row. Each access cycle consists of a number of clock phases where the horizontal counter is put on the bus, /RAS is asserted, the vertical counter is put on the bus, and data is read with /CAS. CPU accesses would require putting the lower and upper parts of the CPU address on the bus in order, along with /RAS and /CAS.
    – supercat
    Commented Sep 4, 2017 at 19:17
  • 2
    of course... and I guess that's at least part of the reason why the Sinclair Spectrum had such a weird memory layout.
    – Jules
    Commented Sep 4, 2017 at 20:15
7

A lot of the coin operated video games of 1980's and early 1990's used 6845 or 6545 CRTC, plus a lot of game video were design around TTL chips with built in hardware character sprites for the slow CPU's. You can search for schematic of the game boards on the inter-web to get some ideas on how they are implemented. My favorite is QIX by Taito it uses 6545 with 2x 6809 CPU's.

6

It likely was not the graphics chips (or for that matter complexity of a solution built from non application specific chips) that limited practical high resolutions at a price point - you still need a framebuffer memory for a raster display, and even to realize, for example, a 1024x1024 resolution without any color or grayscale capability you would need 1 megabit (128 Kilobyte) of RAM - which was more than what some computers had as system memory, and expensive. Offering a high number of colors made this even worse, and adds the problem of needing to ímplement a good DAC (precision isn't as much the issue here as speed! BTW, dirty secret of most VGA cards: "true color" is not 32/24-bit but 18 bit in hardware. Look up some RAMDAC datasheets...).

Mid 70s to early 80s high resolution graphics systems tended to use vector-oriented graphics generators, that either constantly redrew the vectors from a program (like the IBM 2250) or used inherently persistent displays (like the Tektronix 4016, which is listed with a 1979 price of almost $20k)...

5

If you really wanted to save money, you could use the CPU to generate the display. Many older machines did that, notably the Sinclair ZX80.

Essentially all you need is a memory mapped buffer chip and an R2R DAC made of passive resistors, and then some output buffer op-amps. Possibly some kind of encoder if you wanted to output composite video or similar. You could even forego the DAC if you could live with basic digital colour.

Such a system would have a low resolution, limited by the CPU clock rate. To increase it you could use dual port RAM, with the CPU enabling the video side outputs and simply stepping through addresses as fast as possible. The outputs would create digital colour or feed an R2R DAC as above.

An improved version of this could use an address generating counter to step the RAM through addresses for each scanline. The CPU then only needs to set up the starting scanline address and trigger the counter to begin (and perhaps end). Using dedicated RAM would obviate the need for dual port RAM in that configuration. Adjusting the frequency of the counter also allows for different resolutions.

4
  • 2
    I was about to add an answer quite like this one, but saw this when I refreshed the page. This is a good idea for a low cost machine, but for a workstation class machine as OP described it would probably be difficult to justify: tying up the CPU for ~30% of the time for just drawing the screen is hard to justify for a machine whose selling point is likely to be power. But: if you have the budget for it, why not add an extra CPU to handle this? You'd need bus contention management, but you probably need that in a workstation anyway (you do have DMA, right?). The CPU could be a ...
    – Jules
    Commented Sep 4, 2017 at 16:14
  • 1
    ... relatively cheap one (say a 6502 or a Z80) and during the time it's not managing the display hardware could be used to offload simple operations (the 6502 is particularly good at memory bulk transfer operations -- being able to handle about 500KB of data per second if it doesn't need to perform any interesting transformations on it -- while a Z80A can manage about 400KB/second) such a bitmap copies, scrolling, etc.
    – Jules
    Commented Sep 4, 2017 at 16:21
  • As far as I understood did the OP ask for a high resolution bitmap display for a workstation, using standard components. not some cost saving hack
    – Raffzahn
    Commented Sep 5, 2017 at 12:52
  • R2R DACs, eg directly wired to FPGA outputs, are making kind of a comeback even in signal generators these days ... but there is quite a difference in the speed and linearity possible with today's CMOS outputs versus even purpose made but affordable FET switches 40 years ago.... Commented Sep 17, 2017 at 11:50
4

Slightly bananas answer: MC68000.

Okay, I know, it's not a graphics chip. But, you can take some inspiration from the Xerox Alto, which would presumably have been a somewhat familiar source of inspiration to somebody working in graphical workstations in 1980. Since the Alto didn't have access to a modern off the shelf RAMDAC for displaying the contents of the framebuffer memory, it used the CPU to read the framebuffer in software. During intensive operations like compiling code, the screen would goo black for a moment while it wasn't doing framebuffer readout.

So, given the fabulous cost of enough RAM to have a high res color framebuffer and enough additional RAM for running programs efficiently enough to justify that framebuffer, a second 68000 CPU would probably not have been a huge cost. Too much for a cheap home computer. But not insane for a workstation. Since you already have experience writing 68000 assembly for writing the OS of this thing, and you've sourced the chips, etc. It would probably be the fastest way to get to market using what you already know and have access to. Even if a 68000 is crazy overkill for something basically just used as a RAM DAC.

You should have something like 7 MB/sec of memory bandwidth to work with. So, make a dedicated RAM pool that the application CPU is only allowed to write to while the graphics CPU is idle. (And probably a separate non-graphics memory area that the graphics CPU can't write too, but the application CPU can use at full speed.) You should be able to support something like the 512x384 resolution (Still pretty "high res" by the standards of color graphics in 1980.) with 8 bit color. You need actual DAC hardware attached to the graphics CPU to actually drive the analog RGB monitor it would presumably be connected to. Dunno if you can effectively do the color palette lookups in the CPU with the leftover CPU time while using basically all of the memory bandwidth at 100%. Maybe a 68k wizard would be able to work out some way to do it efficiently. If not, you'd need another circuit to go from the raw framebuffer data to the values feeding the three DACs.

4
  • 1
    A similar technique was used in a real system: the 6809-based Fujitsu FM-7, released in 1982. It had a second 6809 processor handling video/keyboard/etc., with its own RAM for the frame buffer. (Cost seemed no object for Fujitsu.) Commands sent from the main CPU instructed the sub-CPU to draw characters, graphics etc. Simple 74LS166 shift registers shifted frame buffer data out into a custom (but fairly simple) DAC that generated the 640×200 RGB video signal. Schematic here.
    – cjs
    Commented Mar 27, 2020 at 1:55
  • 1
    This is up the same alley as the Atari VCS and ZX81. But it could not be done and not thought through, I'm afraid, just an wild wish and far from an answer. The 68000 would be miles too slow to keep up with the display speed at OP's resolution, far less have spare processing capacity. Add some simple screen time arithmetic to your answer, along with 1980 IC speeds and costs. On latter, it'd be a huge waste of money, much cheaper (10% ?) to use a 74xx circuit to do the basic RAM-to-pixels display task. I know it's fun to explore ideas on this site but we can't just write anything :-)
    – TonyM
    Commented Mar 28, 2020 at 7:33
  • OP didn't specify a resolution. I specified a second CPU so it wouldn't need much spare capacity. As far as being a waste of money, yes somewhat. But we are probably talking about a machine with tens of thousands of dollars worth of DRAM to be a useful color graphics workstation in 1980. A few hundred for a "GPU" is a fairly small percentage of the cost, especially if time to market is a main focus.
    – wrosecrans
    Commented Mar 28, 2020 at 16:46
  • The Xerox Alto was built from discrete logic, not the MC68000 as this answer suggests. Nor did its successors use the MC68000: the Xerox Star used bitsliced AMD chips, and the Xerox Daybreak used the 80186.
    – DrSheldon
    Commented Aug 5 at 7:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .