7

On the Commodore VIC-20, the VIC chip alternates between cycles where it fetches a byte from screen memory that identifies a character (and also a nybble from color memory), and cycles where it computes an address by adding that byte to the character base and fetches a byte holding the shape of one row of that character, with both kinds of cycles occurring on the same bus. Back in the day, I thought this was the normal way character displays worked, but in fact most systems put a ROM containing character-shape data on a bus separate from the one which is used for character-select. From what I understand, the Atari 400/800 fetched data in a different sequence, but still used a common memory for both character and shape fetches.

What was the first computer or other video character generator that fetched both character and shape data using the same bus?

6
  • 3
    I don't know the answer, but you said, "computer." What about "dumb" terminals, which often, also contained a microprocessor? Commented Jun 18 at 16:28
  • 1
    @SolomonSlow: I would count those. Perhaps I should have said "video character generator", since I'd also be interested in things like video production equipment, arcade machines, etc. if any of those happened to use such an architecture before any "computers" did. Edited my question.
    – supercat
    Commented Jun 18 at 16:40
  • @supercat Anything prior to 1970 might be a very special device. After all, Intels 1101 (256x1) was only introduced in 1969 .. and only when Fairchild and other started competition in 1970 prices reached somewhat acceptable regions.
    – Raffzahn
    Commented Jun 18 at 19:47
  • Does Peripheral Processor 9 (which ran the console display) on a CDC 6600 count? The display was a vector display, not bitmapped. But the 'drawing instructions' came from PP local memory.
    – dave
    Commented Jun 18 at 21:51
  • @dave: Interesting question. If the architecture allows characters within a line to be updated by changing only a byte/word or two for each one, I'd count it, but not if code wanting to draw a "3" would need to output a sequence of "move here; line to here; line to here; etc." commands.
    – supercat
    Commented Jun 18 at 22:19

1 Answer 1

8

TL;DR: Cogar C4 of 1972

Not any computer you may have thought of, or was it?

The Cogar C4, aka Singer/ICL 1501 was an all-in-one 8-bit system featuring a built-in 4/8 lines at 32 characters CRT based display, two tape drives, a keyboard and an extension channel.

Its video logic could fetch the screen data from any memory page (256 byte aligned) in main memory. Of each byte, bit 6 allowed underline, and bit 7 blanking, while the lower 6 held the display/character code.

The character code in turn was used to address the character pattern stored in pages 4 and 5, starting at octal 04.000. Characters were defined as 5x8 cells, thus needing 320 bytes for the whole charset.


The Intel 1101 of 1969 was the first 256-bit static RAM, albeit, at more than 100 USD per piece, rather expensive. 1970..72 is thus about the first time that such devices became possible outside an extremely well-funded research setup. Still not cheap but doable for professional applications.

In fact, one of the most remarkable advantages of the Cogar over the Datapoint was the RAM type used. In the Datapoint design, only the CPU internal stack was held in a set of cell 3101 RAMs (64 bits per chip), while main memory and video memory was built from 1405 shift registers. The advantage was price and size, as a 1405 offered 8 times the storage (512 bits) at 1/3rd the price (40 USD vs. 13 USD in 1970).

Of course, building a video memory from shift registers brings an additional advantage of characters being presented in sequence. In the case of the 2200, it took 14 chips to hold all 1024 7-bit characters. Memory boards has 2 KiB built from 32 chips.


The Cogar had also another nice feature only possible with RAM: Each key press was translated by input hardware using a RAM based 'key punch table' located in page 5, offset 100, right after the character bitmap. With this, not only video output but also keyboard input (read layout) was fully defined by software. Creating customer or country specific layout and character set was done fully in software (*2).

I'd say it was a quite flexible setup, using the advantage of random access memory. Even more when considering that the C4 may be considered one of the very first desktop computers, rivaling the Datapoint 2200.


*1 - 64 characters were more than enough to handle any mainframe data - not to mention that even the Apple II stayed within that limit.

*2 - Well, plus new key caps - unless the customer stickers were used :).

4
  • I'd never heard of such a thing, but that's why I asked the question. >:*3 I figured that the Atari and Commodore engineers probably go their design inspiration from some earlier design, even though they were the earliest well known machines to use such a design.
    – supercat
    Commented Jun 18 at 16:43
  • Out of curiosity, do you know whether the screen was scanned in row-major or column-major order? Column-major would seem like it would require far lower memory bandwidth than row-major.
    – supercat
    Commented Jun 18 at 16:48
  • @supercat Manual describes it as vertical scanned. Only 7 bits are uses per column, the 8th position is always set according to underline or not. So for character 002 first 04002 is read/outputted, then 04102, 04202, 04303 and finally 05.002. Of course interleaved with fetching the character a line (32 byte) down and so on. Video fetch happen always during fetch/decode cycle of an instruction, which offers two access slots within 2 µs, first used for char second for bit pattern. Quite relaxed, as there are only 256 char maximum per frame.
    – Raffzahn
    Commented Jun 18 at 19:17
  • If the display system uses something resembling NTSC timings, characters could be displayed at a rate of one every 5 microseconds and still fit on the displayed area of the screen. I agree that's pretty relaxed.
    – supercat
    Commented Jun 18 at 22:38

You must log in to answer this question.

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