Steve's handy Atari vs. C64 comparison chart SLJ 1998 -------------------------------------------- These are presented more or less without comment. I have tried to summarize what I believe to be the _relevant_ facts and features regarding each computer. Please feel free to email me comments or corrections. Atari ----- Processor: 6502/6502C @ 1.79 MHz (see note 1 in Graphics/Misc section, below) Graphics: o Colors: There are 16 colors (hues) and 8 brightness (luminance) levels available. There are nine color registers: four regs for player/missiles, four regular color regs, and one background color reg. These registers control all colors displayed on screen. o Graphics modes -- 13 modes, most of which are useless (or rarely used). From the FAQ: ANTIC AND THE DISPLAY LIST: ANTIC CIO/BASIC Display Resolution Number of Mode # Graphics # Type (full screen) Colors --------------------------------------------------------------- 2 0 Char 40 x 24 1 * 3 - Char 40 x 19 1 * 4 12 ++ Char 40 x 24 5 5 13 ++ Char 40 x 12 5 6 1 Char 20 x 24 5 7 2 Char 20 x 12 5 8 3 Map 40 x 24 4 9 4 Map 80 x 48 2 A 5 Map 80 x 48 4 B 6 Map 160 x 96 2 C 14 ++ Map 160 x 192 2 D 7 Map 160 x 96 4 E 15 ++ Map 160 x 192 4 F 8 Map 320 x 192 1 * F 9 + Map 80 x 192 1 ** F 10 + Map 80 x 192 9 F 11 + Map 80 x 192 16 *** * 1 Hue; 2 Luminances ** 1 Hue; 16 Luminances *** 16 Hues; 1 Luminance + require the GTIA chip. 1979-1981 400/800's shipped with CTIA ++ Not available via the BASIC GRAPHICS command in 400/800's. ------------------------------------------------------------------- A short explanation is required: In "Char" modes an 8x8 character set is used but displayed in different ways. For example, mode 5 displays characters at double-height, mode 6 at double-width, mode 3 uses "8x10 pixels", etc. Colors are fetched from the color registers. Graphics modes of course use individual bits to control regions of screen pixels. Note that display lists are used to generate graphics; see Miscellaneous section, below. o Custom characters 128 8x8 custom chars are available; chars with high bit set are displayed in reverse-video. o Sprites Ataris have "player-missiles", like the 2600. There are five "players" available. Each player is 8 pixels wide, and is either 128 or 256 lines tall. The horizontal position is controlled by a register; the vertical position is changed by manually moving the bitmap data in memory (each player is a column of a graphics screen). The fifth player may be split into four "missiles", 2-bits wide each, where each missile has its own horizontal position reg. The width and height of the pm resolution may be changed (double the pixel width on the screen, quintuple the pixel height, etc.). There are four different priority schemes; two players may be combined to form a multicolor player (overlap generates third color); all missiles are the same color; can detect collisions with other players and with screen (collisions are indicated in a register). o Miscellaneous - ANTIC display lists. Three instructions are available: display blank lines (1-8 lines), jump (jump and display one blank line, jump and wait on VBI), display line of graphics (plus h/v scroll, generate display list interrupt, and load new scan counter, i.e. change where graphics data is located). Display lists are used to generate the display: to blank the borders, to tell the chip what resolution to display the next line in, to generate scanline interrupts, etc. Each line of graphics is controlled by some instruction. - Overscan is possible. - Scrolling is done via a combination of the display list and scroll-position regs. Vertical scroll reg is 0-7 lines, horizontal scrolling is more complicated, and scrolls double the number of pixels (2 pixels instead of one). Note 1: ANTIC halts the CPU for DMA to read instructions, graphics data, etc.; so e.g. DMA occurs on every scanline in 320x192 mode. Sound: - Four audio channels, 8-bit frequency register (about 3 octaves), square-wave. - Channels may be combined to form two 16-bit frequency channels. - Noise waveform is available. - Frequency clock may be 64KHz or 1.79 MHz. - High-pass filter for channels 1 and 2, as clocked by channels 3 and 4 respectively. Timers/Interrupt Sources: o Keyboard: Keypresses generate an IRQ System Reset generates NMI o Serial input, serial output may generate IRQ o POKEY audio timers. They are strange: see timers, below. o ANTIC: Display list interrupts (DLI) generate an NMI Vertical blank interrupts (VBI) generate an NMI o Timers: - "Real-time" clock and system timers done in software, using VBI - POKEY's "audio timers" may generate an IRQ when they countdown to zero. They are reset via a register write (any value). Someone else will have to explain the details. I believe they always count down from the same starting value, but have never really understood how they work. (Any volunteers?) Hardware I/O: - Joystick ports - Parallel bus interface: memory expansion, etc. (50 pins) - Cartridge slot: ROM cartridges (games or DOS) - SIO (Serial port): main I/O port; disk drives, printers, modems, etc. ========================================================================= Commodore 64: ------------ CPU: 6510 @ 1MHz (see note in graphics/misc) Graphics: o Colors: There are 16 available colors. There are seven color registers (border, 4 background, 2 multicolor sprite regs) and eight sprite color registers (one for each sprite). Screen color is determined from registers and from color RAM; each byte of color RAM determines colors in every 8x8 section of the visible screen. o Graphics modes: There are basically two color modes on the 64: normal and multicolor. Multicolor mode uses two bits to control each pixel, halving the horizontal resolution and making four color choices available. In terms of graphics modes, there is character mode and there is bitmap mode. Character mode displays 8x8 characters; bitmap mode controls individual bits. Multicolor mode halves the resolution in either case, as explained above. Character mode is 40x25 (characters are 8x8 in hires and 4x8 in multicolor); bitmap mode is 320x200 (or 160x200 in multicolor mode). The color in each 8x8 section of memory is determined from VIC registers and from color information in RAM. For example, in normal character mode the background color is taken from the background color register, and the foreground color is taken from color RAM. In hires-bitmap mode (320x200) both the foreground and background color are taken from RAM. Thus different parts of the screen may have different colors without modifying registers. o Custom characters: There are 256 redefinable 8x8 characters. o Sprites: All eight sprites on the 64 are essentially identical. They are 24x21 pixels in size, and both their x- and y- positions are determined by hardware registers (and may be off the visible screen). Horizontal and vertical resolution may be doubled. Multicolor mode halves the resolution, as described above, and each sprite may independently be in hires or multicolor mode, with colors determined from registers. Sprite-to-foreground priority may be selected for each sprite; sprites are enabled individually; sprite-to-sprite and sprite-to- foreground collisions are indicated, and can generate an interrupt (see Interrupts, below). o Miscellaneous: - Fine-scrolling of 0-7 pixels horizontally and vertically - There is an extra graphics mode called "extended background mode" which lets characters take extra background colors (with foreground color still determined from color RAM); 64 characters available. - VIC halts CPU for DMA access every 8th scanline to fetch data; also halts to fetch sprite data; DMA can be forced to fetch new data for each scanline. - By changing registers, pointers, colors etc. on different scanlines, different modes can be combined, more than 8 sprites can be displayed, etc. - Current raster scan line indicated in register. Sound: SID is the 64's sound chip. The designer, Bob Yannes, later founded Ensoniq. There are three voices, and each voice is essentially the same. The following are independently controllable for each voice: - 16-bit frequency (>8 octaves) - 12-bit pulse width for pulse waveform (square wave is special case) - Four waveforms available: triangle, sawtooth, pulse, noise - Attack-decay-sustain-release volume envelope - Synchronize oscillator with previous voice oscillator - Ring modulate oscillator with previous voice In addition, there are three filters: low-pass, high-pass, and band-pass. Filters may be combined, and resonance (sharpen the filtering) is selectable. Each voice may be passed independently through the filters. Finally, the upper eight bits of the voice 3 envelope and waveform is readable (e.g. used to generate random numbers, to modulate voices, etc.). Timers/Interrupts ----------------- o Timers: A software timer is maintained by the system, but the important timers are contained on the CIAs: - There are two CIA chips in the 64. The CIAs perform all major I/O, and each has two 16-bit timers on board; the two timers may be effectively combined into one 32-bit timer. - The current timer value may be read as well as selected. - Timers may count down continuously or once (one-shot). - Timers may count processor cycles (1MHz) or external signals. - Time Of Day (TOD) clock counts hours,minutes,seconds,tenths o Interrupts: Keyboard: generates an NMI when RESTORE key is pressed CIA #1: There are five selectable IRQ sources: - timer A counts to 0 - timer B counts to 0 - TOD clock reaches alarm time - Serial shift register - FLAG line (connected to casette port) CIA #2: Similar to #1, but generates NMIs instead of IRQs, and FLAG is connected to the user port. VIC: There are four selectable IRQ sources: - Raster compare (set an IRQ to occur on specific raster line) - Sprite-to-background collision - Sprite-to-sprite collision - Light pen trigger. Hardware I/O ------------ In addition to the joystick ports, there are: - Serial port - User port (44 pin) -- controllers, modems, hardware projects - Expansion port (24-pin) -- ROM cartridges, expansion devices (UART+modem, accelerators, etc.) ------------------------------------------------------------------------ Finally, my personal opinion: the Atari has some nice specific features, and is a very capable machine; the C64 is much more balanced and versatile, more accessible, and significantly more powerful overall. All done :) -S