Monday, March 06, 2006
The joys of virtual peripherals, 1977-style
The Atari 2600, a video game system which debuted in 1977, is a rather interesting machine. The specs are really not much to speak of. 128 bytes of RAM, 4K of free address space on the cartridge port, a 6507 running 1.19MHz, and a video system that can barely manage to output a line of display without help from the CPU. And yet this system is in many ways more powerful than its contemporaries.
The key to its power lies in the fact that the CPU is responsible for most of the video generation. Although this means that generating a display takes a lot more work (for both the CPU and the programmer) than on other systems, it also allows for extreme flexibility.
The key to producing a practical working display is to come up with some virtual display routines. Arrange the display kernel so that things will be displayed according to what's in certain parts of RAM. Want a bitmap and have room to store it? Make the kernel regard part of memory (RAM or ROM) as a bitmap. Want a character display? Do that.
It's really quite remarkable that a system which was designed to save cost by forcing the CPU do everything turned out to be so versatile because the CPU could do everything. Amazing how much power can be held in a CPU that--even in 1977--would have only cost a few dollars.
The key to its power lies in the fact that the CPU is responsible for most of the video generation. Although this means that generating a display takes a lot more work (for both the CPU and the programmer) than on other systems, it also allows for extreme flexibility.
The key to producing a practical working display is to come up with some virtual display routines. Arrange the display kernel so that things will be displayed according to what's in certain parts of RAM. Want a bitmap and have room to store it? Make the kernel regard part of memory (RAM or ROM) as a bitmap. Want a character display? Do that.
It's really quite remarkable that a system which was designed to save cost by forcing the CPU do everything turned out to be so versatile because the CPU could do everything. Amazing how much power can be held in a CPU that--even in 1977--would have only cost a few dollars.