Greetings 6502 land!
Since unpacking my electronics gear into my new workshop last year I've had very little chance to do anything interesting thanks to Life, the Universe, and Other Problems. Over the holidays I had some free time to get back to my projects. Feeling pretty rusty, (and having plenty of spare parts) I thought it might be a good idea to build another whole computer from scratch to remind myself how things work. This one doesn't have a colorful name, but I called the KiCAD project 'Fiat6502,' as in "let it be."
Some of my previous projects have had a lot of moving parts - relocatable I/O windows, clock stretchers, RAM/ROM banking, and so on. Fiat6502 is different - the point of this project is just to be a simple baseline system that I can build from and use for testing other things. And also to be finished! I even soldered the oscillators in place this time!

- Main board:
CPU / RAM / ROM, reset button
As you can see, there's nothing too excitingly new from my previous projects in terms of construction. One thing I did differently for this one is I used luxuriously tall header pins, so I no longer have to be careful about limiting myself to two wraps per pin. Another difference is that I swapped out the `688 comparator I usually use for I/O decoding for an `HC30.
Code: Select all
Memory Map
0000..7EFF System RAM
7F00..7FFF I/O Page
(7F00..7F7F) Undecoded
(7F80..7F8F) VIA 1
(7F90..7F9F) VIA 2
(7FA0..7FAF) ACIA
(7FB0..7FEF) 4 unused I/O decodes
(7FF0..7FFF) CF IDE
8000..FFFF System ROM
I/O devices are located on a second storey board. One new thing from previous projects is that this board has a panic button on NMI controlled by a DS1813 EconoReset. Another new thing is that VIA2 is also connected to NMI for use as a RTC so I can finally get around to starting another one of my long-term projects, which is to do cool OS-dev stuff like porting XINU.

- I/O board:
VIA1, VIA2, ACIA, PANIC! button
On the software side of things, for a while I've been meaning to update my Ben Eater-based ACIA code. I've noticed that when using WOZMON if I paste code into my serial terminal, the first line works fine, but subsequent lines are stepped on and mangled unless I set the line delay on my terminal to 50ms or so. I hypothesize that the reason for this is that, while input is interrupt driven and buffered, output is not! After each line of input WOZMON sends a response back to the serial terminal using the polled output routine. It's been on my to-do list for a while to swap out those routines for fully buffered and interrupt driven routines like the ones in Kevin's (floobydust's) "Micromon." I did that this week, and indeed it fixed the problem pasting into WOZMON!

One thing I've wanted for a while is some kind of mass storage. Although I'm not at all interested in FAT32 (I'm planning to use something UNIXy, like the XINU filesystem, or maybe the MINIX filesystem) I've been following Neil (barnacle's) filesystem thread with interest; particularly the first page. With the help of some of the resources he posted I built this 3rd storey board:

- It's a "hard drive" :D
I had a CF/IDE adapter leftover from a long time ago when I was trying to revitalize an old ThinkPad by replacing its horrendously slow microdrive with a CF card. Unfortunately, the pitch on the adapter's pins is quite small compared to my protoboard. While watching a topical YouTube video I saw that 2.5/3.5 IDE adapter and though "hey, I think I have one of those!" So I dug it out of an old motherboard box, got an old IDE cable out of cable storage (i.e., the Hefty bag under the bed in the guest room) and chained them all together. Amazingly, that monstrosity actually works! At least, so far as I've gotten, which is reading the info block. Still, I was pretty pleased and astonished when I dumped the disk buffer and saw my CF card's ident information (in Big Endian LOL!)
I went ahead and ordered a different CF/IDE adapter that has the right size connector so I can just plug it into the header on my board. When it gets delivered that will hopefully make things much tidier.
One thing I decided *not* to do is transfer my VGA circuit off of breadboards. It would be cool to have a screen running off of my own design, but that design has 14 ICs, plus a really big PLCC adapter for the dual-port RAM. I couldn't find a way to make it all fit on any of the solderable breadboards I have. I figure I can save the VGA board for when/if I eventually learn how to make actual PCBs. Meanwhile, I ordered an
ASCII Video Terminal from Legacy Pixels to use instead. It's not here yet, but I'm looking forward to finally being able to use my 1983 Model M keyboard with a retrocomputer again. I haven't been able to do that since the rickety I/O board I made for Blue April.