PDP-11‎ > ‎


GDC11 Graphics Device Controller for LSI 11 bus

The following has been pieced together from a series of private communications with Guenter Dotzel from ModulaWare. He was interested in emulating code he had written for PDP-11 systems on a current PC. I have not seen any of these applications run in their original environment, nor the original hardware. It's my understanding from Guenter's emails and the article above that he ported a number of Modula2 programs which originally ran on the Lilith to a PDP-11 running RT-11. This article claims the Lilith was one of the 1st graphics workstations. I'm afraid I'd never heard of them, but it definitely existed. There seem to be more web hits in Europe where it was developed than in the USA. If you are interested in the lilith computer itself, there is a Lilith emulator available to play with.

The key componet of the required PDP-11 hardware was the GDC-11 graphics controller board. All my information on this is 2nd hand and therefore suspect! I hope some of the key players may someday make a little more of the information available to the public. Currently, June 2010, I find very little available on the internet. I did find some images of the board itself: Componet Side, Back Side

I believe "GDC-11" is a trademark of Kassen, Inc. (West Germany) who manufactured the board and that ModulaWare was one of the distributors. Given that the photo's above appeared on the openvmshobbyist site one imagines this board or a related module was also used with some of the early VAX systems. If anyone knows about this I would be interested hearing more...

I was interested in this concept and started an emulation project where I would attempt to emulate the hardware and allow Geunter's code to run on a current PC. My target system was Linux with Xwindows. Guenter sent some sample source code and several RT11 executable programs for me to experiment with. Unfortuantly this collaboration fell apart as we found we were not able to communicate well with eachother. But it had sparked my interest, and I'm documenting what I feel I can make puplic in case someone else is interested in this relatively rare (?) LSI-11 board.

There appear to have been at least 4 related boards:

Name      CSR    Planes    Description
GDC11	 774000	    1      STANDARD
GDCHR	 774010	    1      HIGH RESOLUTION
GDC2	 774240	    2      2 BIT BOARD
GDC4	 774200	    4      4 BIT BOARD
Each had 4 consecutive registers in the io page starting with the octal CSR address above. The GDC11 above had 256 KByte graphic refresh memory. This version of the board had 2048 x 1024 pixels available and as the number of planes (bits per pixel) increased for the other versions of the board the x resolution decreased correspondingly. A manual Guenter produced suggests there was also an 8 Plane version, ie 8 bits per pixel with 508 x 512 pixels available. At least one board seems to have had four more registers at 774070 to control an RGB color lookup table but I don't know much about this, no sample code.

They were all based on the NEC PD7220/GDC chipset. One should reffer to this manual for a description of the functionality that was available. This manual says the 7220 chip only had two byte registers available at a time. One toggled their functionality by changing the chips A0 address line (see page 6-40). As far as I can determine two of the LSI 11 io page addresses map directly to these 7220 registers as follows:

     GDC-11                       7220
read  CSR           A0=0 read Status register byte
write CSR           A0=0 write a parameter byte to Fifo register
read  CSR+2         A0=1 read a byte from Fifo register
write CSR+2         A0=1 write a byte Command byte to the Fifo register

The other two LSI 11 io page address are specific to PDP functionality
Both accept a full word value as opposed to the registers above which appear to
ignore the high order byte in any data access.

write CSR+6         sets PDP buffer address for a DMA data transfer to or from 
                    graphics memory on the board. Used only for DMAR and DMAW.

write CSR+4         seems to be the odd ball in the collection. The zoom
                    value and some other information appears to be written here
                    as a word instead of into the fifo via byte writes to the CSR
                    immediately following a ZOOM command.
                    The significant zoom bits may be 8-11 but I'm not sure.
                    In the sample code I have the ZOOM command is always
                    followed by a write to this register.

Of possible interest to anyone really pursuing this, Geunter did locate a link to C++ source code that included emulation of the NEC 7220 chip in a Win32 environment. I removed 'http://homepage3.nifty.com/takeda-toshiya/common/index.html' as a link as it no longer appears to be active for this code. This emulation was a small part of a larger project that emulates a number of old computers. I found this project source a bit cryptic, the author appears to believe we are all fluent C++ programmers, the files of particular interest in the source *.zip archive are upd7220.h and upd7220.cpp in the source/source/src/vm/ directory.

I would be very interested in any documentation people might have squirreled away for these boards in a file somewhere. Please let me know and make it publically available by sending it to bitsavers.org or some other internet repository. Its my understanding that the NEC 7220 chip was also used in at least some of the DEC Rainbow and Pro 3xx systems. I'm generally interested in these also, ie how was data passed to and from the chip (io addreses etc). If you have any source code or small sample applications that would run on any of these systems please contact me. I'd probably like to experiment with it.

Just for the record, I fear even with today's processor speeds an emulation will be pretty slow! The chip did a lot of stuff by itself. But its still fun.

Rainbow GDC

After doing a little research on the internet I find that the Dec Rainbow did indeed have an Nec 7220 based daughter board option. It is mentioned in a number of places including Hamster's Rainbow Page and the Wikipedia Rainbow Page. Two modes of operation were available:
High Resolution: 2 bitmap planes, 4 colors, with 240 lines of 800 pixels each
Medium Resolution: 4 bitmap planes, 16 colors, with 240 lines of 384 pixels each
Both modes used a color lookup table giving the program control of the actual colors displayed.

I found several sample programs that use this graphics option on my old internet friend and Rainbow Fanatic Jeff Armstrong's site in his Programming Archives. Another archive includes a C language interface library for the Rainbow GDC and code for some sample graphics games built with the library. These examples suggest the io ports 0x56 and 0x57 are respectively the NEC 7220 status and command ports. I eventually found an online programmer's manual that says ports 0x50-0x57 are used to fully initialze and access the graphics option card. I actually seem to have at least one Rainbow PC100-B with the graphics option daughter board installed. As time allows I will play with this more, but I am still interested if anyone can supply additional sample programs, esp with source code!

You can obtain a gzipped copy of the RAINBOW GRAPHICS OPTION PROGRAMMER'S REFERENCE GUIDE AA-AE36A-TV in postscript format. The cover page says its a 'Review Draft', but it appears to have all the io port usage and programming information. In addition a teledisk image of the RX50 cpm GSX software disk is available. GSX was a software toolkit for graphics programming on the Rainbow which was available for both MSDOS and CPM, to date I've only located the CPM version.

I've seen some references that suggest that some of the Dec Pro 3xx series PDP-11 machines and some Decmates also had a daughter board similar to the one produced for the Rainbow which used the NEC 7220 chip. So far I have not seen any other documentation on these.