6500 computer systems

Commodore VIC-20




MOS 6500 microprocessor

MOS 6502 microprocessor

MOS 6500 and Zilog Z80 were the most popular microprocessors for 8-bit microcomputer systems. 6500 is considered a predecessor of RISC since its instruction set was minimal.

6500 was essentially a reduced Motorola 6800. 6800 was more powerful, 6809 had 16-bit arithmetic with MUL/multiply instruction. 6500 instruction set was minimal. 6500 didn't have ADD instruction, rather, it had ADC (Add with Carry), so normal add was done by first executing CLC (Clear Carry). 6500 didn't have any form of multiply/divide instructions, multiply on 6502 required binary version of shift/add arithmetic (author discovered by himself after being puzzled for weeks).

6500 registers:
A : accumulator (8-bit)
X : index (8-bit)
Y : index (8-bit)
PC/IP : program counter (16-bit)
P/SR : processor status register (conditions/flags) (8-bit)
S/SP : stack register (8-bit)

6500 had only 3 computational registers: A, X, Y. How these registers could be used was limited. A was the accumulator where results of operations were stored. X and Y were index registers.

Programming in 6500 assembly language required "spilling registers". Values in registers had to be continually moved to other registers or memory. Worse, register transfer instructions were limited, some register combinations had no transfer instruction, transfer had to be done indirectly.

  LDA LDX LDY
  STA STX STY
  TAX TAY
  TXA TYA

6500 had a variety of addressing modes: direct index, indirect index, zero page, etc. A 6500 "page" was 256 bytes. Stack was hard-wired at page #1 (100...1FF hex) which was indexed by 8-bit stack pointer.




Commodore VIC-20

Commodore VIC-20 13KB running
VIC-20 running with expanded memory (8KB memory cartridge).

VIC-20 was so limited it was practically useless. But a person could learn computer programming and get insights to how computer hardware functioned with a VIC-20. Was fun controlling a TV by changing colors and playing sounds on VIC-20, done by directly POKEing hardware.




Atari 800 vs Commodore 64

Atari 800 lid up
Commodore 64

Atari 800 was one of the best 6500 systems. Better than a Commodore 64 in many ways.

Greatest advantage of Atari 800 over C64 was expandability. 800 had multiple card slots. Later Atari XL/XE were worse by loss of expandability.

Atari was faster, its 6502 ran at 1.7Mhz, C64's 6510 ran at 1.0Mhz.

Atari's graphics had more more colors (base colors plus luminance levels) and more graphics modes (resolutions).

Graphics chip of Atari (ANTIC), like Amiga, was a coprocessor that executed "display lists". Mixed modes were coded in Atari by 6502 placing into RAM "display list instructions" for ANTIC to execute.

Atari had a smooth-scrolling of its "playfield" which C64 had no counterpart.

C64's sprites were better, only area in graphics C64 had an advantage. Atari's "player/missile" sprites had limitations in setting positions. C64's sprites could be set in any position and were larger.

C64's sound was far superior with its SID chip. For a user interested in music, C64 would've been a better system. In games that were ported to both, C64's voices almost sound like real musical instruments, while Atari's voices sounds like a primitive synthesizer.

Atari BASIC was better, having Atari-specific commands, and may have been faster. Atari had its own DOS and could boot into a useful notepad program.