MOS Technology VDC

from Wikipedia, the free encyclopedia

The MOS Technology VDC ( Video Display Controller ) is a video display controller that is responsible for the 80-character output in the Commodore C128 . It is connected to a monitor with RGBI input (e.g. CGA screens). The VDC was originally developed for the CBM 900 , a computer system with a Zilog Z8001 CPU. Two not fully compatible versions were produced, the 8563 and the 8568 . The chip has its own video RAM, which is 16 KB in the old C128 versions and 64 KB in the newer C128DCR, but both can address 64 KB. The chip is clocked asynchronously to the rest of the computer.

Technical specifications

  • 16 or 64 KB memory
  • 16 colors (RGBI)
  • Graphics resolution 640 × 200 pixels , with the 64 KB version also expandable to 800 × 240 or 480 ( interlaced ) pixels
  • Text mode with 80 characters à 25 lines, variable depending on the character size
  • 2 character sets of 256 characters can be used at the same time
  • Character size 2 to 32 raster lines of 8 pixels wide
  • 1 screen-wide background color, 1 foreground color per character and 4 attributes (inverted, flashing, underlined, character set 1 or 2)
  • Color cells in bitmap mode of 8 pixels wide and 2 to 32 pixels high, each cell can use its own foreground and background color.
  • Hardware text cursor
  • Ability to move blocks of data up to 256 bytes in size
  • Horizontal and vertical hardware scrolling

Programming the VDC

The VDC has 36 (8563) or 37 (8568) internal registers . Register 37 was added to the 8568, so the refresh could be clocked faster than its predecessor. The internal registers can only be reached indirectly via two memory cells in the input / output area at the hexadecimal addresses $ D600 and $ D601. In address $ D600 it is specified which register is to be addressed, in address $ D601 the addressed register is then read out or written. You have to wait until bit 7 of $ D600 is set. With the C128 this is easiest with the following two operating system functions (also in Basic):

  • $ CDCC (write the value in the accumulator to the VDC register X)
  • $ CDDA (get the value of the VDC register X into the accumulator)

Address $ D600 has other meanings, when reading it you get:

  • Bit 7 = status bit: here you can find out whether the VDC has finished its last work (0 = done).
  • Bit 6 = light pen
  • Bit 5 = cathode ray return: 1 = return.

the other bits are not used.

Web links