Honorable Mention - Dennis Ferron
This is a Propeller laptop - with a 6502 co-processor and 64K of static RAM! The Propeller handles all I/O for the 6502 and runs an integrated debugger so you can program the computer. The Propeller serves as the programmable chipset for this 6502 laptop. You could use an FPGA in this capacity, but could you easily do this and implement visual debugger software inside an FPGA? Over the years hardware prototyping has evolved from building-block hardware (TTL) to programmable hardware (PLA’s and FPGA’s). I believe the Propeller represents the next revolution: 100% software-based virtual hardware – and I built this laptop to prove it!
I’ve always want to design a computer from scratch, but modern CPU’s are too complex, run too fast, and have too many fiddly little pins to be any use in a DIY project. An older processor like the 6502 is much easier to work with, yet you can still learn about computer architecture from it. If you think an 8 bit processor is irrelevant because it is old, consider that just because 8 bit technology is out of fashion, does not mean the principles of computing have changed. These principles, like mathematical concepts such as π and square roots, do not become obsolete just because they are old.
The hardware for this computer is minimal. The entire address space of the 6502 is devoted to a single 64K static RAM chip. The system includes no ROM in the 6502 memory map, no startup BIOS, nor any dedicated I/O at any address. How then does the program get loaded? How does it communicate with the outside world? That’s the key to why this system is so great: by not providing any dedicated addresses, the Propeller is free to define the memory map in any way imaginable! I will not say this means that this computer can emulate every other 6502 computer (like the Commodore 64, Apple II, or even Nintendo NES) – because my demo programs don’t go so far as to prove that. But, the possibility that this is true remains. What classic computer would you program this laptop to be?
But how does it actually work? The 6502 is connected to the static RAM chip on its address bus, and its data bus, but the control bus is not directly connected. All the control signals go through the Propeller. So, if the 6502 wants to read or write RAM, the Propeller reads that signal from the 6502 and controls the RAM appropriately. Thing is, the Propeller is under no obligation to do what the 6502 asks it to. Instead of turning on the RAM, the Propeller can say, “Hmmm… I think I’ll intercept this byte myself.” The software on the Propeller can then read or write the Propeller’s hub RAM, but set the data bus up so that the 6502 does not know anything odd happened. Since the Propeller can run objects simultaneously in other cogs, these bytes mapped to hub RAM could be used to map virtual hardware, such as emulating video memory, or the input buffer of a disk controller.
A few notes about the rest of the system:
I built this inside a toy laptop which had a real keyboard. It wasn’t PS/2, just a key matrix. So I figured out how to make it into a PS/2 keyboard: I soldered the toy key matrix to the circuit board from a real PS/2 keyboard! You’d think that wouldn’t work since the key matrix is different, but all that happens is the scan codes generated are for different keys, and I handle that in software.
The screen comes from a portable DVD player. I unfolded its circuit board so it lays flat in the lid.
The batteries are on top so that the lid holds them inside when the laptop is closed.
Propeller Laptop Source Code (.zip)
Propeller Laptop Schematic (.jpg)
Propeller Laptop Video
Full Description and Data (.pdf)
- This unique and imaginative design implements a programmer and debugger for the 6502 by placing a Propeller chip between the 6502 and RAM; has the potential for using the Propeller + 6502 to emulate old 6502 computers, all in a toy laptop case.
- Combining the old with the new, the PROP-6502 Propeller Laptop uses modern technology to help you understand the classic RISC microprocessor; popular for its use in early Apple, Atari, Commodore and Nintendo systems.