Hi all,
The idea of making a (6502-based) computer on my own dates back as far as 1986 or so, although it never materialized. Lately it came back and developed into a
very ambitious project... but the sensible way was to begin with something much simpler and (hopefully) develop fron that.
So, in late 2012 I decided to build a pretty simple 6502 device on a breadboard -- with the
excuse of teching my students about the underpinnings of a computer! Dubbed
SDd (
Sistema de Desarrollo didáctico, which is Spanish for "Didactic Development System"), it only used 13 out of 16 address lines (for less
cluttered cabling!) and extremely minimalistic decoding, resulting on 2 KB RAM, up to 4 KB EPROM and a 6522 VIA in between (mirrored
lots of times!).
Other than that, nothing fancy: originally it had a row of LEDs connected to the VIA's ports (later it had a buzzer on PB7) and a 2 MHz oscillator can connected thru a 4040 divider, in order to select the speed from
very slow to overclocking attempts. Here's a picture of it... being diagnosed
It went thru several revisions (read:
repairs) and even
RAMless for a while... but even in such a limited configuration, it could do things like
flashing LEDs sequentially or even
play the riff from Smoke on The Water! Obviously, I've been learning
a lot thru all these "revisions"...
After cleaning up the wiring (once again) I was able to mount the SRAM chip again, and do more
useful tasks, like
testing SRAM chips of types unsupported by my tester -- all thru the VIA ports, not connected to the regular busses!
or even running a pretty accurate
digital clock, here with the help of a
bus sniffer I made, which shows in Hex the bits at the VIA ports (or wherever I connect its 16 data lines) -- just a matter of putting the time in BCD at the ports:
But the final intent of this device wasn't executing
ad hoc firmware, but being the first machine to run
minimOS, my Operating System
in the making -- more about that in a separate thread
Anyway, I was in need of a more
human interface device, so I made (again on didactic purposes) a
LED Keypad for some I/O capability. Once again, one of those
HD44780-based LCD modules would have been much easier... and cheaper, but this way my students could see
multiplexing and
debouncing in action
In fact, debugging its
driver has been the most time-consuming task of my system's development, so far
But it works, and here's a pic (deliberately dark to emphasize the displays) of my whole
system (computer + LED keypad) saying hello to the world:
you can type numbers on the keypad and actually see them appear (and scroll!) on the displays...
Now that the snowball is rolling, I won't stop here...
some other machines exist on the roadmap, some of them already under construction:
- Chihuahua: a soldered, compact (7x9 cm, less than 3x4") version of SDd, 100% software compatible. 1 MHz soldered can. The PB7 buzzer is now standard, and can be disabled via CB2. Includes a port for the VIA, and some separate connections for the SS-22 port introduced in this forum, which I intend to support and develop -- alas, without the proposed connector because lack of space. It is built in full and sort-of-works, but with some strange issues
- Chihuahua PLUS: improved design, same size but now has 16 KB of SRAM and up to 32 KB of EPROM, backwards compatible with SDd/Chihuahua. Socketed can. Partly built, hope the previous issues get solved here...
- SDx: the eXpansible Development System, a larger stripboard (hope it works well!) of the same capacity of Chihuahua Plus but with much more I/O: all of the former plus serial (65C51), Real-Time Clock (with its backup battery) and LCD module. Socketed oscillator, ZIF-socketed EPROM, supports 6502, 65C02 (WDC or not) and the 65C102. Has a unique expansion connector. Partially constructed, but has gone thru a few redesigns yet...
- Baja: Still in my mind... 16 K ROM and RAM, 16550 UART, would support 65C816 via jumpers. New expansion socket, VME-based but 6502-friendly. Support for optional MMU, providing bankswitching (two 16 K windows, up to 1 GB addressing) and/or hardware assisted multitasking (bankswitched zeropage + stack)
- Baja Plus: Still in my mind... this is more or less the original idea I had. Similar to the "standard" one but most likely using GALs, with integrated MMU of same specs as the optional module for the Baja. Possible option of cache memory. May integrate the exception-like protection module already discussed
- Veracruz: Top of the range, I think... all SMD and GALs, 65C816 with integrated MMU, cache and God-knows-what-else
...plus some other simpler machines for specific tasks, but supporting my OS for easier development.
On the peripheral side, there are some things to do... Besides the already mentioned
LED-keypad and
bus sniffer:
- A real ASCII keyboard... with integrated 20x4 LCD module. I know, it's pretty easy interfacing to a PS/2 keyboard, and much cheaper... but I wanted to do my own
- A proof-of-concept simple VDU (video card) connected thru the VIA! Awfully slow, I'm afraid, but compatible with the expansion-crippled Chihuahuas... 6845 based, text only (64x30 chars) supporting both a standard VGA monitor and a TV mode
- The expansion port of SDx is intended for alternative processors (6800, 6303, 68020...) -- yup, my OS aims to be multi-platform.
- The VME-like connector of the Baja and higher models will allow all kind of devices: graphic cards (even bit/pixmaps), sound cards, ROM/RAM expansion...
As you can see, there's still a long way to go, but even if I started with a much simpler device, I think it's best not to put brake to imagination! Time will tell how far can I go...
My apologies for the long post... Cheers to all,