6502 Homebrew Projects
Last Updated 01/11/2021 20:16 -0500
Daryl Rictor 6502 SBC Redux & Serial IEC
The first computer I ever used was a Commodore PET 2001. The first computer I ever bought was a VIC-20 back in 1981 (actually, I got it as a gift for my birthday). I did a lot with that machine and ever since then, 6502-based machines have had a special place in my heart.
After Commodore went bust, I set forth to purchase the 8-bit intellectual property (design materials primarily) for preservation purposes from the bankruptcy estate. Well, that didn't happen. Anyway, shortly thereafter, I thought it would be a good intellectual exercise decompiling the VIC-20 kernal and making it into re-compilable source code.
I didn't do much with that until 2003 when I came across two things. First, the 6502 SBC project by Daryl Rictor. This is a very compact and fully-functional 6502-based SBC for which Daryl provides all of the design files and related materials. Not only did I build one of Daryl's boards, I also built one of his composite video boards. Lee Davison has a nice BASIC interpreter that Daryl modified for use with the board.
Second, Mike Naberezny from 6502.org wanted to use Daryl's board with a 1541 disk drive for a data logging project but didn't have a way to connect the two. This was the ideal set of ingredients for a hack project.
Here are the ingredients:
- 6502-based SBC
- Any Commodore-compatible serial IEC disk drive (like the 1541)
- Hacked VIC-20 kernal ROM code.
- A need...
So, I hacked together an IEC interface for the SBC, using the schematic in the B128 book since it was electrically better than the VIC-20 (ferrite beads and diode voltage clamps).
By then, after several years of on-and-off work, I had a recompilable copy of the VIC-20 kernal ROM ready and I hacked it apart and married it to Daryl's monitor ROM and Lee's BASIC to produce an operating system for the SBC that could natively access Commodore Serial IEC peripherals. Then, I added some key disk-related commands from PET BASIC 4.0 (PET BASIC had built-in DOS commands while the VIC-20 and C64 did not) to complete the package.
After a few bug hunts, everything worked fine and I had an inexpensive SBC which could access inexpensive and plentiful printers and disk drives. The first test was the printer (devices 4 and 5), which worked without problem. There were a few issues with the disk drives (devices 8-11) but I ironed those out.
Fast forward to 2014. After working with the N8VEM project for few years, I decided to take Daryl's original design, make some changes, and add my Serial IEC interface to it. To Daryl's original design, I made the following enhancements:
- Increased the size to near-ECB (7.4" x 4.4")
- Removed voltage regulator in exchange for a Mini-B USB connector.
- Added DE9F jack for serial port.
- Added Serial IEC interface circuitry (pdf).
- Added pushbutton reset and NMI "programmer's panic" buttons.
- Added bypass capacitors on all chips.
- Added Tx/Rx NULL jumpers.
- Added an Atari/Commodore joystick port (DE9).
- Added Daryl's single-chip ATMEGA88 video controller.
It's not really as densely packed as it could be. With some work, I can definitely get it to the Eurocard size (160mm x 100mm) and maybe convert the expansion connector to the DIN41612 for use in a Eurocard backplane. Something to work on...
Here is the current code for the board and here's the schematics and the silkscreen. This spreadsheet contains the net list and part numbers where applicable. Here are the jumper settings. Here is an archive containing the firmware for the Atmel video chip. The code archive is is a full distribution including Daryl's monitor ROM code that I modified, Lee's BASIC and my Serial IEC extensions. The code is compiled with the TASS assembler. There is a revised version based on BASIC 2.22 that includes Commodore BASIC 4.0 disk commands.
Since the base Kernal code is derived from the original VIC-20 ROM, it adheres to the original API which means that you could probably use peripherals beyond just the printer and floppy disk drive (although I'm not certain what other peripherals there might have been). I think there may have been a plotter.
Expansion Board for 6502 SBC
In order to do some other things with the SBC, I needed to design a small expansion board for it. I have two designs. The first is a fully-buffered one. The second is straight-through with no buffering. The rev.0 files are in this ZIP archive and contain the two Diptrace schematics, exported netlists for Protel and Tango, and two versions of the simple PC board done for the PCB123 service. The simple boards have no power supply, so it assumes that you connect a 5v regulated supply to the power pads.
The connector that goes to the SBC is a standard 2x25 0.1" DIP header. The buss connectors are from Hirose (PCN10C-50S-2.54DSA(72); Digi-Key H11195-ND). The corresponding connector on the expansion card is Hirose PCN10-50S-2.54DS(72); Digi-Key H11159-ND.
One version of the simple board is a "horizontal" configuration in which the expansion boards would stand perpendicular to the expansion board. The other is a "vertical" configuration like a conventional expansion board like those in the Apple II.
Sound Board for 6502 SBC
Another project that's in the works is a sound synthesizer board for my 6502 SBC. This one is based on the AY-3-8910 3-voice sound chip from General Instruments. This chip was used in the famous Mockingboard sound board products for the Apple ][ as well as in various arcade video games.
I'm working on a schematic now and I'll post it when its done.
Relay Output for 6502 SBC
I had some time this week so I designed an 8-relay output board for the 6502 SBC. It uses eight Omron SPDT relays to provide some handy output capabilities to the SBC. The schematic is below and the board is in process.
Speech Synthesizer Board for 6502 SBC
Yet another project that's in the works -- a speech synthesizer board for my 6502 SBC. This one is based on the SP0256-AL2 from General Instruments.
I'm working on a schematic now and I'll post it when its done.
Copyright (c) 1998-2020 Richard A. Cini, Jr. (rcini at msn dot com) All Rights Reserved. All copyrights of any third parties referred to herein are hereby acknowledged. There is no warranty, either express or implied, relating to any of the content contained herein. The site maintainer shall in no event be liable to anyone for damages, including any loss of profits, lost savings, or other incidental or consequential damages arising out of the use or misuse of the information contained on this Web site. Batteries not included. You may use the information contained herein for NON-COMMERCIAL purposes only and AT YOUR OWN RISK.