MOS Technology VIC-II
Encyclopedia
The VIC-II specifically known as the MOS Technology
MOS Technology
MOS Technology, Inc., also known as CSG , was a semiconductor design and fabrication company based in Norristown, Pennsylvania, in the United States. It is most famous for its 6502 microprocessor, and various designs for Commodore International's range of home computers.-History:MOS Technology, Inc...

 6567/8562/8564 (NTSC
NTSC
NTSC, named for the National Television System Committee, is the analog television system that is used in most of North America, most of South America , Burma, South Korea, Taiwan, Japan, the Philippines, and some Pacific island nations and territories .Most countries using the NTSC standard, as...

 versions), 6569/8565/8566 (PAL
PAL
PAL, short for Phase Alternating Line, is an analogue television colour encoding system used in broadcast television systems in many countries. Other common analogue television systems are NTSC and SECAM. This page primarily discusses the PAL colour encoding system...

), is the microchip
Integrated circuit
An integrated circuit or monolithic integrated circuit is an electronic circuit manufactured by the patterned diffusion of trace elements into the surface of a thin substrate of semiconductor material...

 tasked with generating Y/C
S-Video
Separate Video, more commonly known as S-Video and Y/C, is often referred to by JVC as both an S-VHS connector and as Super Video. It is an analog video transmission scheme, in which video information is encoded on two channels: luma and chroma...

/composite video
Composite video
Composite video is the format of an analog television signal before it is combined with a sound signal and modulated onto an RF carrier. In contrast to component video it contains all required video information, including colors in a single line-level signal...

 graphics and DRAM
Dynamic random access memory
Dynamic random-access memory is a type of random-access memory that stores each bit of data in a separate capacitor within an integrated circuit. The capacitor can be either charged or discharged; these two states are taken to represent the two values of a bit, conventionally called 0 and 1...

 refresh
Memory refresh
Memory refresh is the process of periodically reading information from an area of computer memory, and immediately rewriting the read information to the same area with no modifications. Each memory refresh cycle refreshes a succeeding area of memory. Memory refresh is most often associated with...

 signals in the Commodore 64
Commodore 64
The Commodore 64 is an 8-bit home computer introduced by Commodore International in January 1982.Volume production started in the spring of 1982, with machines being released on to the market in August at a price of US$595...

 and C128
Commodore 128
The Commodore 128 home/personal computer was the last 8-bit machine commercially released by Commodore Business Machines...

 home computer
Home computer
Home computers were a class of microcomputers entering the market in 1977, and becoming increasingly common during the 1980s. They were marketed to consumers as affordable and accessible computers that, for the first time, were intended for the use of a single nontechnical user...

s.

Succeeding MOS's original VIC
MOS Technology VIC
The VIC , specifically known as the MOS Technology 6560 / 6561 , is the integrated circuit chip responsible for generating video graphics and sound in the Commodore VIC-20 home computer...

 (used in the VIC-20
Commodore VIC-20
The VIC-20 is an 8-bit home computer which was sold by Commodore Business Machines. The VIC-20 was announced in 1980, roughly three years after Commodore's first personal computer, the PET...

), the VIC-II was one of the two chips mainly responsible for the C64's success (the other chip being the 6581 SID
MOS Technology SID
The MOS Technology 6581/8580 SID is the built-in Programmable Sound Generator chip of Commodore's CBM-II, Commodore 64, Commodore 128 and Commodore MAX Machine home computers...

).

Development history

The VIC-II chip was designed primarily by Al Charpentier and Charles Winterble at MOS Technology, Inc.
MOS Technology
MOS Technology, Inc., also known as CSG , was a semiconductor design and fabrication company based in Norristown, Pennsylvania, in the United States. It is most famous for its 6502 microprocessor, and various designs for Commodore International's range of home computers.-History:MOS Technology, Inc...

 as a successor to the MOS Technology 6560 "VIC"
MOS Technology VIC
The VIC , specifically known as the MOS Technology 6560 / 6561 , is the integrated circuit chip responsible for generating video graphics and sound in the Commodore VIC-20 home computer...

. The team at MOS Technology had previously failed to produce two graphics chips named MOS Technology 6562 for the Commodore TOI computer, and MOS Technology 6564 for the Color PET, due to memory speed constraints.

In order to construct the VIC-II, Charpentier and Winterble made a market survey of current home computer
Home computer
Home computers were a class of microcomputers entering the market in 1977, and becoming increasingly common during the 1980s. They were marketed to consumers as affordable and accessible computers that, for the first time, were intended for the use of a single nontechnical user...

s and video games, listing up the current features, and what features they wanted to have in the VIC-II. The idea of adding sprites came from the Texas Instruments TI-99/4A
Texas Instruments TI-99/4A
The Texas Instruments TI-99/4A was an early home computer, released in June 1981, originally at a price of USD $525. It was an enhanced version of the less-successful—and quite rare—TI-99/4 model, which was released in late 1979 at a price of $1,150...

 computer and its TMS9918
Texas Instruments TMS9918
thumb|VDP TMS9918Athumb|VDP TMS9918Athumb|VDP TMS9928AThe TMS9918 is a Video Display Controller manufactured by Texas Instruments.-General information:...

 graphics coprocessor
Video Display Controller
A Video Display Controller or VDC is an integrated circuit which is the main component in a video signal generator, a device responsible for the production of a TV video signal in a computing or game system...

. About 3/4 of the chip surface is used for the sprite functionality.

The chip was partly laid out using electronic design automation
Electronic design automation
Electronic design automation is a category of software tools for designing electronic systems such as printed circuit boards and integrated circuits...

 tools from Applicon (now a part of UGS Corp.), and partly laid out manually on vellum paper. The design was partly debugged by fabricating chips containing small subsets of the design, which could then be tested separately. This was easy since MOS Technology had both its research and development
Research and development
The phrase research and development , according to the Organization for Economic Co-operation and Development, refers to "creative work undertaken on a systematic basis in order to increase the stock of knowledge, including knowledge of man, culture and society, and the use of this stock of...

 lab and semiconductor plant at the same location.

The work on the VIC-II was completed in November 1981 while Robert Yannes was simultaneously working on the SID
MOS Technology SID
The MOS Technology 6581/8580 SID is the built-in Programmable Sound Generator chip of Commodore's CBM-II, Commodore 64, Commodore 128 and Commodore MAX Machine home computers...

 chip. Both chips, like the Commodore 64
Commodore 64
The Commodore 64 is an 8-bit home computer introduced by Commodore International in January 1982.Volume production started in the spring of 1982, with machines being released on to the market in August at a price of US$595...

, were finished in time for the Consumer Electronics Show
Consumer Electronics Show
The International Consumer Electronics Show is a major technology-related trade show held each January in the Las Vegas Convention Center, Las Vegas, Nevada, United States. Not open to the public, the Consumer Electronics Association-sponsored show typically hosts previews of products and new...

 in the first weekend of January 1982.

VIC-II features

  • 16 kB
    Kilobyte
    The kilobyte is a multiple of the unit byte for digital information. Although the prefix kilo- means 1000, the term kilobyte and symbol KB have historically been used to refer to either 1024 bytes or 1000 bytes, dependent upon context, in the fields of computer science and information...

     address space
    Address space
    In computing, an address space defines a range of discrete addresses, each of which may correspond to a network host, peripheral device, disk sector, a memory cell or other logical or physical entity.- Overview :...

     for screen, character and sprite memory
  • 320 × 200 pixels video resolution (160 × 200 in multi-color mode)
  • 40 × 25 characters text resolution
  • Three character display modes and two bitmap modes
  • 16 colors
  • Concurrent handling of 8 sprites per scanline, each of 24 × 21 pixels (12 × 21 multicolor)
  • Raster interrupt
    Raster interrupt
    A raster interrupt is a computer interrupt signal that is used for display timing purposes. It is usually, though not always, generated by the system's graphics chip....

     (see details, below)
  • Smooth scrolling
    Scrolling
    In computer graphics, filmmaking, television production, and other kinetic displays, scrolling is sliding text, images or video across a monitor or display. "Scrolling", as such, does not change the layout of the text or pictures, or but incrementally moves the user's view across what is...

  • Independent dynamic RAM refresh
    Memory refresh
    Memory refresh is the process of periodically reading information from an area of computer memory, and immediately rewriting the read information to the same area with no modifications. Each memory refresh cycle refreshes a succeeding area of memory. Memory refresh is most often associated with...

  • Bus mastering
    Bus mastering
    In computing, bus mastering is a feature supported by many bus architectures that enables a device connected to the bus to initiate transactions...

     for a 6502-style system bus
    Computer bus
    In computer architecture, a bus is a subsystem that transfers data between components inside a computer, or between computers.Early computer buses were literally parallel electrical wires with multiple connections, but the term is now used for any physical arrangement that provides the same...

    ; CPU and VIC-II accessing the bus during alternating half-clock cycles (the VIC-II will halt the CPU when it needs extra cycles)

Programming

The VIC-II was programmed by manipulating its 47 control registers (up from 16 in the VIC), memory mapped to the range $D000–$D02E in the C64 address space. Of all these registers, 34 dealt exclusively with sprite control (sprites being called MOBs, from Movable Object Blocks, in the VIC-II documentation). Like its predecessor, the VIC-II handled light pen
Light pen
A light pen is a computer input device in the form of a light-sensitive wand used in conjunction with a computer's CRT TV set or monitor. It allows the user to point to displayed objects, or draw on the screen, in a similar way to a touch screen but with greater positional accuracy...

 input, and with help from the C64s standard character ROM, provided the original PETSCII
PETSCII
PETSCII , also known as CBM ASCII, is the variation of the ASCII character set used in Commodore Business Machines 's 8-bit home computers, starting with the PET from 1977 and including the VIC-20, C64, CBM-II, Plus/4, C16, C116 and C128...

 character set from 1977 on a similarly dimensioned display as the 40-column PET
Commodore PET
The Commodore PET was a home/personal computer produced from 1977 by Commodore International...

 series.

By reloading the VIC-II's control registers via machine code hooked into the raster interrupt
Raster interrupt
A raster interrupt is a computer interrupt signal that is used for display timing purposes. It is usually, though not always, generated by the system's graphics chip....

 routine (the scanline interrupt), one could program the chip to generate significantly more than 8 concurrent sprites (a process known as sprite multiplexing
Sprite multiplexing
Sprite multiplexing is a computer graphics technique. It is mainly applicable to older video graphics hardware and computer systems.Some video graphics hardware is capable of displaying sprites. Depending on the hardware, there is a finite limit on the number of sprites that may be displayed by the...

), and generally give every program-defined slice of the screen different scrolling, resolution and color properties. The hardware limitation of 8 sprites per scanline could be increased further by letting the sprites flicker rapidly on and off. Mastery of the raster interrupt was essential in order to unleash the VIC-II's capabilities. Many demo
Demo (computer programming)
A demo is a non-interactive multimedia presentation made within the computer subculture known as the demoscene. Demogroups create demos to demonstrate their abilities in programming, music, drawing, and 3D modeling...

s and some later games would establish a fixed "lock-step" between the CPU and the VIC-II so that the VIC registers could be manipulated at exactly the right moment.

Registers

The VIC-II has 47 read/write registers listed below:
Register Hexadecimal Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Description
0
D000
M0X X Coordinate Sprite 0
1
D001
M0Y Y Coordinate Sprite 0
2
D002
M1X X Coordinate Sprite 1
3
D003
M1Y Y Coordinate Sprite 1
4
D004
M2X X Coordinate Sprite 2
5
D005
M2Y Y Coordinate Sprite 2
6
D006
M3X X Coordinate Sprite 3
7
D007
M3Y Y Coordinate Sprite 3
8
D008
M4X X Coordinate Sprite 4
9
D009
M4Y Y Coordinate Sprite 4
10
D00A
M5X X Coordinate Sprite 5
11
D00B
M5Y Y Coordinate Sprite 5
12
D00C
M6X X Coordinate Sprite 6
13
D00D
M6Y Y Coordinate Sprite 6
14
D00E
M7X X Coordinate Sprite 7
15
D00F
M7Y Y Coordinate Sprite 7
16
D010
M7X8 M6X8 M5X8 M4X8 M3X8 M2X8 M1X8 M0X8 MSBs of X coordinates
17
D011
RST8 ECM BMM DEN RSEL YSCROLL Control register 1
18
D012
RASTER Raster counter
19
D013
LPX Light Pen X
20
D014
LPY Light Pen Y
21
D015
M7E M6E M5E M4E M3E M2E M1E M0E Sprite enabled
22
D016
- - RES MCM CSEL XSCROLL Control register 2
23
D017
M7YE M6YE M5YE M4YE M3YE M2YE M1YE M0YE Sprite Y expansion
24
D018
VM13 VM12 VM11 VM10 CB13 CB12 CB11 - Memory pointers
25
D019
IRQ - - - ILP IMMC IMBC IRST Interrupt register
26
D01A
- - - - ELP EMMC EMBC ERST Interrupt enabled
27
D01B
M7DP M6DP M5DP M4DP M3DP M2DP M1DP M0DP Sprite data priority
28
D01C
M7MC M6MC M5MC M4MC M3MC M2MC M1MC M0MC Sprite multicolor
29
D01D
M7XE M6XE M5XE M4XE M3XE M2XE M1XE M0XE Sprite X expansion
30
D01E
M7M M6M M5M M4M M3M M2M M1M M0M Sprite-sprite collision
31
D01F
M7D M6D M5D M4D M3D M2D M1D M0D Sprite-data collision
32
D020
- - - - EC Border color
33
D021
- - - - B0C Background color 0
34
D022
- - - - B1C Background color 1
35
D023
- - - - B2C Background color 2
36
D024
- - - - B3C Background color 3
37
D025
- - - - MM0 Sprite multicolor 0
38
D026
- - - - MM1 Sprite multicolor 1
39
D027
- - - - M0C Color sprite 0
40
D028
- - - - M1C Color sprite 1
41
D029
- - - - M2C Color sprite 2
42
D02A
- - - - M3C Color sprite 3
43
D02B
- - - - M4C Color sprite 4
44
D02C
- - - - M5C Color sprite 5
45
D02D
- - - - M6C Color sprite 6
46
D02E
- - - - M7C Color sprite 7

Colors

In multicolor bitmap mode (160×200 pixels, which most games used) characters had 4×8 pixels (the characters were still approximately square since the pixels were double width) and 4 colors out of 16 colors. The 4th color was the same for the entire screen (the background color), while the other 3 could be set individually for every such 4×8 pixel area. Two colors were loaded from the active text screen, and the third was loaded from color RAM. Sprites in multicolor mode (12×21 pixels) had three colors: two shared among all sprites and one individual. The artist had to pick shared colors such that the combination with individual colors led to a colorful impression. Some games reloaded shared colors during the raster interrupt; for example, the game Turrican II's underwater area (which was vertically distinct) had different colors. Others, such as Epyx
Epyx
Epyx, Inc. was a video game developer and publisher in the late 1970s and throughout the 1980s. The company was founded as Automated Simulations by Jim Connelley and Jon Freeman, originally using Epyx as a brand name for action-oriented games before renaming the company to match in 1983...

's Summer Games
Summer Games
Summer Games is a sports video game developed by Epyx and released by U.S. Gold based on sports featured in the Summer Olympic Games. Released in 1984 for the Commodore 64, it was also eventually ported to the Apple II, Atari 2600, Atari 7800, Atari XL/XE and Sega Master System platforms...

 and COMPUTE!'s Gazette
COMPUTE!'s Gazette
COMPUTE!'s Gazette was a computer magazine of the 1980s, directed at users of Commodore's 8-bit home computers. Publishing its first issue in July 1983, the Gazette was a Commodore-only daughter magazine of the computer hobbyist magazine COMPUTE!....

s Basketball Sam & Ed, overlaid two high-resolution sprites to allow two foreground colors to be used without sacrificing horizontal resolution http://home.arcor.de/cybergoth/gamesa/summer1interview1.html. Of course, this technique reduced the number of available sprites by half.

On PAL
PAL
PAL, short for Phase Alternating Line, is an analogue television colour encoding system used in broadcast television systems in many countries. Other common analogue television systems are NTSC and SECAM. This page primarily discusses the PAL colour encoding system...

 C64s, the PAL delay line
Delay line
Delay line may refer to:* Propagation delay, the length of time taken for something to reach its destination* Analog delay line, used to delay a signal...

 in the monitor or TV which averages the color hue
Hue
Hue is one of the main properties of a color, defined technically , as "the degree to which a stimulus can be describedas similar to or different from stimuli that are described as red, green, blue, and yellow,"...

, but not the brightness, of consecutive screen lines can be used to create seven nonstandard colors by alternating screen lines showing two colors of identical brightness. There are seven such pairs of colors in the VIC chip.

The C64's team did not spend much time on mathematically computing the 16 color palette. Robert Yannes, who was involved with the development of the VIC-II, said:
I'm afraid that not nearly as much effort went into the color selection as you think. Since we had total control over hue, saturation and luminance, we picked colors that we liked. In order to save space on the chip, though, many of the colors were simply the opposite side of the color wheel from ones that we picked. This allowed us to reuse the existing resistor values, rather than having a completely unique set for each color. http://www.pepto.de/projects/colorvic/


The 1993 game Mayhem in Monsterland
Mayhem in Monsterland
Mayhem in Monsterland, released in 1993, was a game produced for the Commodore 64 home computer. Its titular hero, "Mayhem", was a yellow triceratops blessed with the gift of speed. His goal was to return his world from sad to happy, ridding the world of monsters along the way...

 is an example of what can be done if the VIC-II features are used to the maximum. It uses linewise PAL-colorblending, color interlace, a nonstandard way to achieve very fast scrolling and very sophisticated and extremely colorful character-based graphics and very well drawn sprites, some even with hires overlays, to achieve a level of graphical quality that was almost comparable to 16 bit machines of the era.

The VIC-IIe

The 8564/8566 VIC-IIe in the Commodore 128 used 48 pins rather than 40, as it produced more signals, among them the clock for the additional Zilog Z80
Zilog Z80
The Zilog Z80 is an 8-bit microprocessor designed by Zilog and sold from July 1976 onwards. It was widely used both in desktop and embedded computer designs as well as for military purposes...

 CPU of that computer. It also had two extra registers. One for accessing the added numerical keypad and other extra keys of that computer (this function was added to the VIC merely because that proved to be the easiest place in the computer to add the necessary three extra output pins) and the other for toggling between a 1 MHz and a 2 MHz system clock; at the higher speed the VIC-II's video output is merely displaying every second byte in the code as black hires bit-pattern on the screen, suggesting use of the C128's 80-column mode at that speed (via the 8563 VDC
MOS Technology 8563
The 8563 Video Display Controller was an integrated circuit produced by MOS Technology. It was used in the Commodore 128 computer to generate an 80-column RGB video display...

 RGB chip). Rather unofficially, the two extra registers were also available in the C128's C64 mode, permitting some use of the extra keys, as well as double-speed-no-video execution of CPU-bound
CPU bound
In computer science, CPU bound is when the time for a computer to complete a task is determined principally by the speed of the central processor: processor utilization is high, perhaps at 100% usage for many seconds or minutes...

 code (such as intensive numerical calculations) in self-made C64 programs. The extra registers were also one source of minor incompatibility between the C128's C64 mode and a real C64 - a few older C64 programs inadvertently wrote into the toggle bit, which would do nothing at all on a real C64, but would result in a messed-up display on a C128 in C64 mode.

The VIC-IIe has the little-known ability to create an additional set of colors by manipulating the registers in a specific way that puts the color signal out of phase with what other parts of the chip consider it to be in.

Using the specific behavior of the VIC-IIe's test bit, it is furthermore capable of producing a real interlace picture with a resolution of 320×400 (hires mode) and 160×400 (multicolor mode).

List of VIC-II versions

  • PAL
    PAL
    PAL, short for Phase Alternating Line, is an analogue television colour encoding system used in broadcast television systems in many countries. Other common analogue television systems are NTSC and SECAM. This page primarily discusses the PAL colour encoding system...

    • MOS Technology 6569 – (PAL-B)
    • MOS Technology 6572 – (PAL-N)
    • MOS Technology 6573 – (PAL-M)
    • MOS Technology 8565 – HMOS-II version for "C64E" motherboards
    • MOS Technology 8566 – VIC-II E (PAL-B) C128 version
    • MOS Technology 8569 – VIC-II E (PAL-N) C128 version

  • NTSC
    NTSC
    NTSC, named for the National Television System Committee, is the analog television system that is used in most of North America, most of South America , Burma, South Korea, Taiwan, Japan, the Philippines, and some Pacific island nations and territories .Most countries using the NTSC standard, as...

    • MOS Technology 6566 – designed for SRAM/non-muxed
      Multiplexer
      In electronics, a multiplexer is a device that selects one of several analog or digital input signals and forwards the selected input into a single line. A multiplexer of 2n inputs has n select lines, which are used to select which input line to send to the output...

       address lines (used in the Commodore MAX Machine
      Commodore MAX Machine
      The Commodore MAX Machine, also known as Ultimax in the United States and VC-10 in Germany, was a home computer designed and sold by Commodore International in Japan, beginning in early 1982, a predecessor to the popular Commodore 64...

      )
    • MOS Technology 6567 – Original NMOS version
    • MOS Technology 8562 – HMOS-II version
    • MOS Technology 8564 – VIC-II E C128 version

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK