mikeblas wrote:
Hi there!
I've been nostalgic for my SYM-1, which I got out of mothballs earlier in the year. It was my first computer when I was a little boy! I never had the BASIC ROMs for it, so I'm going to burn them and try to get it running and connected to an RS-232 port on my computer. Perhaps I'll also make an expansion board for it ... maybe 48K RAM and 16K ROM, and I can use denser parts on the expansion board.
Anyway, now that I'm retired, I've been thinking about making my own computer from scratch. For now, I'm considering a 65C816, though I might breadboard a 6502-based machine to get started. I'm not yet done reading the 65C816 manuals (and I'm a bit surprised I have to pay for the programming manual!) but I've been wondering what strategies people have for building memory maps for the processor.
Seems like I can have a 64K stack in the zero bank, minus some interrupt vectors. What of the other banks? I've seen some posts which mimic ROM across the banks, and I guess that might be better for reducing long calls and jumps. There will also be some memory-mapped I/O, so do most designs decode that into a special bank, or map it into every bank?
Perhaps people with more experience can share what tradeoffs they've noticed with different designs.
Similar what what Ed said; Ask 10 computer folks, get 11 replies ...
However, like you, I started on the 6502, but maybe a year or 3 later on an Apple II in '78 and recently decided to make my own - started on a breadboard with a WDC 65C02, went to stripboard, then PCB, then adapted that to take the 65C816, then made a dedicated '816 board with 512KB RAM (and Rev 2 can take 1MB).
As for memory map, etc. I've kept the 816 side virtually the same as my 6502 version - Direct page (Zero page in the 6502) is at $0000, stack is a simple 256 bytes at the same $0100 (I have no need for anything more in my applications), hardware is at $FE00 through $FEFF and hardware vectors, etc. are in $FFxx. My system is all RAM, no ROM though - I have a separate "host" processor (an ATmega) that helps me boot it and perform IO)
So my suggestion, based on that, is keep thing simple. You can (with a tiny bit of thought beforehand) make a board that will take either a 65C02 or the 65C816, but starting from scratch? Even if you might never use the '816 side of things, I'd have used the '816 from day 1.
As for '816 books, manuals... There are many freely available online. Just search for them.
Back to breadboard, there is an excellent set of videos (and kits, etc.) from Ben Eater with a 6502 from scratch type of system. Well worth a watch on Youtube.
Keep us informed!
Cheers,
-Gordon
_________________
--
Gordon Henderson.
See my
Ruby 6502 and 65816 SBC projects here:
https://projects.drogon.net/ruby/