System information

but it is connected to ground so this means that you can't get interrupts to the Z80 when pressing RESTORE or
from CIA #2. Furthermore, the I/O port registers at addresses 0 and 1 are 8502 specific so you can't change
anything related to those bits when the Z80 is active, i.e. you can't decide if the CPU and the VIC should see
color RAM from bank 0 or 1 (a little known feature), you can't use a Datassette, you can't detect if CAPS LOCK
has been pressed and you can't switch out the character ROM shadow that by default exists in all 4 VIC banks on
the C128. (On the C64 you always have character ROM shadow in two of the VIC banks and never in the other
two but with the C128 with the 8502 active you can select if you want to have character ROM shadow in all four
banks or in none of the banks.)
Commented Z80 example source code for Power Assembler / ZBUD written by me (Christian Johansson) (for
example a VIC text scroller)
.d64 file with the Z80 source code above (uncommented) + some other C128 programs I have written
80-column mode
In addition to the VIC chip, the Commodore 128 also has another graphics chip that the Commodore 64 does not
have. The additional graphics chip is called 8563 and is often referred to as Video Device Controller (VDC).
The output from the VDC chip comes through the RGBI port at the rear of the Commodore 128. RGBI means Red
Green Blue Intensity. Since all these four properties can be either 0 or 1, there are a total of 16 colours. Three of
the 16 colours are different between the VIC chip and the VDC chip. The rest of the colours are the same. The
RGBI port should preferrably be connected to a monitor that can handle RGBI signals. Some Commodore
monitors can handle RGBI signals. All CGA monitors can also do this. The VDC chip is actually a Commodore
implementation of a CGA chip. CGA was a graphics standard that was used by many PCs at the time when
Commodore 128 was launched. (CGA was later followed by EGA, VGA and SVGA). It is possible to connect a cable
between the RGBI port of the C128 and the composite video input of a monitor or a TV set but this gives a
black & white picture only (with a few different shades of grey). I also have an RGBI -> SCART cable but I
haven't tested it so I can't say if it gives colours. In contrast to the VIC chip, it is not possible to connect the
output of the VDC chip to a TV set using an RF cable.
The VDC chip gives 80 columns on the screen in contrast to the VIC chip that only gives 40 columns. This means
that the horizontal resolution is doubled from 320 pixels to 640 pixels when using the VDC chip instead of the
VIC chip. The VDC chip is mostly intended for characters and in contrast to the VIC chip the VDC chip only has
very limited graphics modes. Sprites (movable graphics objects) do not exist at all when using the VDC chip. This
makes the VIC chip much better than the VDC chip for games while the VDC chip is excellent for word processing
and other applications using characters. With the VIC chip it is possible to have 128 different characters + their
reverse counterparts on the screen at the same time. With the VDC chip, if you reverse a character, it does not
mean that the screen code is increased by 128 as for the VIC chip. It simply means that background/foreground
is reversed for all pixels of the character. This makes it possible to have 256 different characters + their reverse
counterparts on the screen at the same time. As if this wasn't enough, it is also possible to specify for each
character if it should be taken from the character set with capitals/graphics or from the character set with small
letters/capitals (for the VIC chip, the character set cannot be selected for each character individually but only for
the whole screen). This gives a total of 512 different characters on the screen at the same time. For each
character it can also be specified if it should be reverse, underlined or blinking (and of course which colour it
should have out of 16 colours where 13 of the colours are the same as for the VIC chip while 3 are VDC
specific).
In contrast to the VIC registers, the VDC registers are not a part of the Commodore 128 memory map. Instead,
all accesses to the 38 VDC registers are made through two C128 registers; the address register at $D600 and
the data register at $D601. A read or write access to a VDC register is made by writing the VDC register number
(0-37) to the C128 register at address $D600 and then wait for bit 7 of the C128 register at address $D600 to
become equal to 1. When it has become equal to 1, a read from or write to the C128 data register at address
$D601 can be performed.
The VDC chip in Commodore 128 DCR (the metal case model that was mainly sold in North America) has 64 kB
of RAM memory while the VDC chip in all other Commodore 128 models by default has 16 kB of memory
(expandable to 64 kB). Commodore 128 computers where the VDC chip has 64 kB of RAM memory have better
graphics capabilities when the VDC chip is used. The VDC memory is not a part of the normal 128 kB of RAM
memory that the Commodore 128 has. The VDC memory is used for the screen memory (which characters or
graphics that are shown on the screen), for character or graphics attributes (for example colours) and for
character definitions. The VDC memory is accessed through VDC registers. Simple access to the VDC memory is
made by writing the VDC memory address to VDC registers 18 and 19 and then read the data from or write the
data to VDC register 31. There are also more advanced operations for copying blocks of data. Memory addresses
are written to VDC registers with the most significant byte in the register with the lowest address in contrast to
C128 registers where the least significant byte of memory addresses is written to the register with the lowest
address.
In contrast to the VIC chip, there is no raster interrupt for the VDC chip. The C128 has exactly the same
interrupt sources (from the VIC and CIA chips) as the C64.