I wanted to see what the experts think.
I know this is beyond complicated. Especially when compared to more "traditional" memory mapping schemes (ROM/RAM/VIA). But this is my first attempt. I plan on clocking the 65C02 between 1 and 2 MHz.
Code:
--------------------------------
$FFFF | 65C02 ROM, WOZ Monitor |
$E000 | BASIC (ROM copied to RAM) |
|______________________________|
$DFFF | |
$DF00 | Video (Propeller) |
|______________________________|
$DEFF | |
$DEF0 | VIA 2 |
|______________________________|
$DEEF | |
$DEE0 | VIA 1 |
|______________________________|
$D013 | |
$D010 | PIA (Propeller Emulated) |
|______________________________|
$D009 | GENERAL PURPOSE RAM, PAGE 1, |
$0000 | PAGE 0, etc. |
--------------------------------
IC's: 65C02, 128K SRAM (64K used), two 65C22's, two Propellers (two EEPROMS), glue logic.
I wanted to keep the PIA address consistent with the WOZ monitor and use the software PIA Jac wrote for serial communications. But the two VIA's in there are at those addresses because I just think backwards most of the time. They are butted up against the dedicated Propeller for video/audio. I'm not hell-bent on keeping them there.
I also wanted to give the Propeller Video a full 256 registers to play with because I plan on implementing audio and video.
Oh, I received my first 65C51 if you guys think it's worth implementing. I'm just not sure I need it if I follow the emulated PIA route.
Finally, I drew up a bunch of AND/NAND logic on paper to handle this mapping. And I admit, it was pretty "elegant" for me but I realize I have too many gates with lots of propagation delays. Sloppy to the experts but it was fun "solving".
When the system boots up, one Propeller will keep everything disabled except SRAM. It will then copy a ROM image into RAM.
What are your thoughts and suggestions?
------------------------------------------------------------------------------------
Now, a LONG winded explanation....feel free to skip.
First, let me explain some of my logic....
When I was a kid I had a hard time understanding what ROM actually was because I grew up with a Commodore 64 (wasn't my first computer but I learned more on it). The C64 copies ROM into RAM at boot up (or something similar). So pretty much the entire 64K of memory is available to store data. When I was 9 or 10, ROM to me was the game cart I plugged in.
I like the idea of taking a ROM image and copying it to RAM before the CPU is started.
Second, I want something more than another Apple 1 clone. No disrespect to all the guys out there that have built them. Hell, I just bought an L-Star from Jac and can't wait to play with it! I've also built an L-Star on my breadboard...tons of fun.
But I want something with old-school graphics. I've been using the Propeller for a while now and have tons of cool drivers for video. The 65C02 is a perfect fit for it. I have built many Arduino audio players for VGM music using real AY-3-8910's and SN76489's. So I have all this video and audio sitting on micro-controllers. I want to bring them together with an old-school computer.
I will be open-sourcing all of it. Once I get a working prototype. My hopes that others will see that an amateur like me can build something cool that isn't another Arduino shield....maybe they will too.
Thanks!!