The 8563 Video Display Controller (VDC) was an
integrated circuit
An integrated circuit or monolithic integrated circuit (also referred to as an IC, a chip, or a microchip) is a set of electronic circuits on one small flat piece (or "chip") of semiconductor material, usually silicon. Large numbers of tiny ...
produced by
MOS Technology
MOS Technology, Inc. ("MOS" being short for Metal Oxide Semiconductor), later known as CSG (Commodore Semiconductor Group) and GMT Microelectronics, was a semiconductor design and fabrication company based in Audubon, Pennsylvania. It is mo ...
. It was used in the
Commodore 128
The Commodore 128, also known as the C128, C-128, C= 128,The "C=" represents the graphical part of the logo. is the last 8-bit home computer that was commercially released by Commodore Business Machines (CBM). Introduced in January 1985 at the ...
(C128) computer to generate an 80-column (640×200
pixel
In digital imaging, a pixel (abbreviated px), pel, or picture element is the smallest addressable element in a raster image, or the smallest point in an all points addressable display device.
In most digital display devices, pixels are the smal ...
)
RGB
The RGB color model is an additive color model in which the red, green and blue primary colors of light are added together in various ways to reproduce a broad array of colors. The name of the model comes from the initials of the three addi ...
video display, running alongside a
VIC-II
The VIC-II (Video Interface Chip II), specifically known as the MOS Technology 6567/8562/8564 (NTSC versions), 6569/8565/8566 (PAL), is the microchip tasked with generating Y/C video signals (combined to composite video in the RF modulator) and D ...
which supported
Commodore 64
The Commodore 64, also known as the C64, is an 8-bit home computer introduced in January 1982 by Commodore International (first shown at the Consumer Electronics Show, January 7–10, 1982, in Las Vegas). It has been listed in the Guinness ...
-compatible graphics. The DCR models (as well as a few D-models) of the C128 used the later and more technically advanced
8568 DC">DC controller.
History and characteristics
Originally intended for a planned (but unreleased)
UNIX
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
-based business computer based around the
Zilog Z8000
The Z8000 ("''zee-'' or ''zed-eight-thousand''") is a 16-bit microprocessor introduced by Zilog in early 1979. The architecture was designed by Bernard Peuto while the logic and physical implementation was done by Masatoshi Shima, assisted by a ...
,
Commodore
Commodore may refer to:
Ranks
* Commodore (rank), a naval rank
** Commodore (Royal Navy), in the United Kingdom
** Commodore (United States)
** Commodore (Canada)
** Commodore (Finland)
** Commodore (Germany) or ''Kommodore''
* Air commodore ...
designed the VDC into several prototype machines. Of these, only the Commodore 128 ever saw production. Unlike earlier MOS video chips such as the popular VIC-II, the VDC had dedicated video memory, 16
kilobyte
The kilobyte is a multiple of the unit byte for digital information.
The International System of Units (SI) defines the prefix ''kilo'' as 1000 (103); per this definition, one kilobyte is 1000 bytes.International Standard IEC 80000-13 Quantiti ...
s (16,384 bytes; upgradable to 64 kilobytes, 65,536 bytes) in the original or "flat" C128 and 64 kilobytes in the
C128DCR. This RAM was not directly accessible by the
microprocessor
A microprocessor is a computer processor where the data processing logic and control is included on a single integrated circuit, or a small number of integrated circuits. The microprocessor contains the arithmetic, logic, and control circu ...
.
The 8563 was more difficult to produce than most of the rest of the MOS Technology line, and initial
yields were very low. The early units also had significant reliability problems and tended to self-destruct from overheating. Also, there were timing issues with the VDC that would cause indirect load and store operations on its registers to malfunction.
Officially, the VDC was a text-only chip, although a careful reading of the technical literature by MOS Technology that was given to the early C128 developers did indicate that a high-resolution
bitmap
In computing, a bitmap is a mapping from some domain (for example, a range of integers) to bits. It is also called a bit array
A bit array (also known as bitmask, bit map, bit set, bit string, or bit vector) is an array data structure that c ...
mode was possible—it simply wasn't described in any detail.
BASIC 7.0
Commodore BASIC, also known as PET BASIC or CBM-BASIC, is the dialect of the BASIC programming language used in Commodore International's 8-bit home computer line, stretching from the PET of 1977 to the C128 of 1985.
The core is based on 6502 ...
, the C128's built-in programming language, only supported high-resolution graphics in 40-column mode via the legacy VIC-II chip.
Shortly after the release of the C128 the VDC's
bitmap
In computing, a bitmap is a mapping from some domain (for example, a range of integers) to bits. It is also called a bit array
A bit array (also known as bitmask, bit map, bit set, bit string, or bit vector) is an array data structure that c ...
mode was described in considerable detail in the
Data Becker
Data Becker GmbH & Co. KG was a German publisher of computer books and a company for software and computer accessories based in Düsseldorf. The company ceased operations in March 2014.
History
It was founded in Düsseldorf on January 7, 1981, ...
book "Commodore 128 - Das große GRAFIK-Buch" (published in late 1985 in the United States by
Abacus Software), and an assembly language program was provided by the German authors Klaus Löffelmann and Dieter Vüllers, in which it was possible to set or clear any pixel or, using
BASIC
BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
to perform the necessary calculations, generate bitmapped geometric shapes on the 80 column screen. In February 1986, less than a year after the
Commodore 128
The Commodore 128, also known as the C128, C-128, C= 128,The "C=" represents the graphical part of the logo. is the last 8-bit home computer that was commercially released by Commodore Business Machines (CBM). Introduced in January 1985 at the ...
's release,
''RUN'' magazine published "''Ultra Hi-Res Graphics''", an article describing the VDC's bitmapped mode and including a
type-in program
A type-in program or type-in listing was computer source code printed in a home computer magazine or book. It was meant to be entered via the keyboard by the reader and then saved to cassette tape or floppy disk. The result was a usable game, ...
(written in
8502 assembly language
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence be ...
) that extended BASIC 7.0's capabilities to support 640×200 high-resolution graphics using the 856
Authors Lou Wallace and David Darus later developed the Ultra Hi-Res utility into a commercial package, ''
BASIC 8.0, BASIC 8''. One of the most popular third-party utilities for the C128, this offered more advanced VDC high-resolution capabilities to a wide audience of programmers.
Commodore finally offered complete official documentation on the VDC in the ''Commodore 128 Programmer's Reference Guide''. VDC bitmap modes were used extensively in the C128 version of the
GEOS operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
.
The VDC lacked
sprite capabilities, which limited its use in
gaming
Gaming may refer to:
Games and sports
The act of playing games, as in:
* Legalized gambling, playing games of chance for money, often referred to in law as "gaming"
* Playing a role-playing game, in which players assume fictional roles
* Playin ...
applications. However, it did contain
blitting
Bit blit (also written BITBLT, BIT BLT, BitBLT, Bit BLT, Bit Blt etc., which stands for ''bit block transfer'') is a data operation commonly used in computer graphics in which several bitmaps are combined into one using a ''boolean function''.
The ...
capabilities to autonomously perform small block memory copies within its dedicated video RAM. While the VDC is performing such a copy, the system CPU can continue running code, provided no other VDC accesses are attempted before the copy is finished. These functions were used by the C128's screen editor
ROM
Rom, or ROM may refer to:
Biomechanics and medicine
* Risk of mortality, a medical classification to estimate the likelihood of death for a patient
* Rupture of membranes, a term used during pregnancy to describe a rupture of the amniotic sac
* ...
to rapidly scroll or clear screen sections.
Technical specifications
*
RGBI output (RGB plus Intensity) compatible with IBM's
CGA video standard.
*
*16 or 64
kilobyte
The kilobyte is a multiple of the unit byte for digital information.
The International System of Units (SI) defines the prefix ''kilo'' as 1000 (103); per this definition, one kilobyte is 1000 bytes.International Standard IEC 80000-13 Quantiti ...
address space for display, character shape and display attribute memory (dedicated, separate from system memory).
*Up to 720×700 pixel video resolution in interlaced mode (maximum with 64 kilobyte video RAM). Other image sizes are possible, depending on programmer's needs, such as 640×200 non-interlaced, 640×400 interlaced, etc.
*80×25 characters text resolution (C128 kernal default); other sizes such as 80×50 or 40×25 are possible.
*8 colors at 2 intensities.
Programming
Addressing the VDC's internal registers and dedicated video memory must be accomplished by indirect means. First the program must tell the VDC which of its 37 internal registers is to be accessed. Next the program must wait until the VDC is ready for the access, after which a read or write on the selected internal register may be performed. The following
assembly code
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence b ...
is typical of a register read:
ldx #regnum ;VDC register to access
stx $d600 ;write to control register
loop bit $d600 ;check bit 7 of status register
bpl loop ;VDC not ready
lda $d601 ;read from VDC register
...
The following code is typical of a register write operation:
ldx #regnum ;VDC register to write to
stx $d600 ;write to control register
loop bit $d600 ;check bit 7 of status register
bpl loop ;VDC not ready
sta $d601 ;write to VDC register
...
The same is feasible in
BASIC
BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
language, calling specific
KERNAL
KERNAL is Commodore's name for the ROM-resident operating system core in its 8-bit home computers; from the original PET of 1977, followed by the extended but strongly related versions used in its successors: the VIC-20, Commodore 64, Plus/4, ...
routines :
This code is typical of a VDC register read, where it's a number between 0 to 36, as show below.
BANK15
...
SYS DEC("CDDA"),, register : RREG VDC
REM $ccda aka 52698 in decimal
PRINT VDC
...
this code is typical of a VDC register write, where it's a number between 0 to 36, and it's a number between 0 to 255, that you wish to place in that register.
BANK15
...
SYS DEC("CDCC"), value, register
REM $ccdc aka 52684 in decimal
...
Owing to this somewhat cumbersome method of controlling the VDC, the maximum possible
frame rate
Frame rate (expressed in or FPS) is the frequency (rate) at which consecutive images (frames) are captured or displayed. The term applies equally to film and video cameras, computer graphics, and motion capture systems. Frame rate may also be ca ...
in
bitmap
In computing, a bitmap is a mapping from some domain (for example, a range of integers) to bits. It is also called a bit array
A bit array (also known as bitmask, bit map, bit set, bit string, or bit vector) is an array data structure that c ...
ped mode is generally too slow for arcade-style action video games, in which bit-intensive manipulation of the display is required.
In standard text mode, the VDC behaves much like the VIC-II except with 2k of screen memory instead of 1k. The power on default configuration places screen memory in and the
color memory at and they can be moved anywhere in VDC memory as long as it's on a 2k boundary. Attributes are handled like the VIC-II's high resolution mode with a global background color and each character foreground color set individually per the color RAM. In addition to color data, the latter also contains attribute data for each character. Bit 4 causes the character to blink if enabled, Bit 5 produces underlined characters, and Bit 6 inverts the character's bitmap pattern. Bit 7 enables the alternate character set. The VDC can use as many as 512 characters. When the alternate character flag for a given character is enabled, the character pattern will be drawn from characters 256-511. Thus if character 65 is displayed, enabling the alternate character flag will display character 321 instead. The alternate character flag is normally used when upper/lowercase mode is set—the flag is enabled for all VDC screen positions, causing the upper/lowercase character set and its reverse video versions to be displayed instead of the default uppercase/graphics character set.
The VDC does not use a character ROM, instead the VIC-II's character ROM patterns are simply copied into VDC RAM as part of the C128's power on initialization including the patterns for reverse video characters even though the VDC is capable of inverting characters in hardware. Character patterns take 16 bytes instead of 8 to store as the VDC has adjustable character height. Since the screen is 25 lines, in practice character height is limited to 8 lines meaning that half the space for character data is left unused and wasted. The power on default configuration places the character data in . contain the patterns for the uppercase/graphics characters, the upper/lowercase characters, while and contain the reverse video patterns for each set. The user may freely define any custom characters and map them into VDC memory.
Register listing
This information was adapted from the ''Commodore 128 Programmer's Reference Guide''
[Commodore Capital, Inc., (1986). ''Commodore 128 programmer's reference guide.'' New York, NY: Bantam Books, Inc.]
References
External links
''Ultra Hi-Res'' self-extracting archive - Volume I''Ultra Hi-Res'' self-extracting archive - Volume II''C= Hacking'' volume 2 - Register listing and description
{{MOS Video/Sound
MOS Technology integrated circuits
Graphics chips
Commodore 64