Thanks everyone for your responses.
BigDumbDinosaur wrote:
Well, you'd have a bit of a problem at power-on, because the reset routine needs to be instantly available at that time. There would be no code in RAM at power-on. While you could download an image of the reset handler from ROM into RAM and then jump to it, I don't know what you would expect to gain.
I didn't think about what happens at power-on. I'll have to think that through some more. I can put a custom ROM into my SBC and run some tests.
jds wrote:
It depends how many gate delays are acceptable, assuming this is not a high speed system then we could implement it relatively simply.
Goal is around 2 - 4MHz.
jds wrote:
First let's look at how this is split up. The RAM is 48k. This could be implemented with 3 16k SRAMs, or 1 64k SRAM with 16k wasted
I would probably go with one chip to save board space and just waste the extra RAM. Assuming I don't do a 180 and change my mind on using a PLD or not (still on the fence).
jds wrote:
The IO range is 4k, a small area that increases the address bits needed for decoding. And ROM is 12k, which doesn't fit a single chip nicely. Again, today it's probably easier to use a 16k ROM and waste 4k.........
Thanks for the details! I will have to study that some more. Well, the 12KiB of ROM was mainly because the Apple II used smaller ROM's at the time and by the time the Apple II Plus came out, it was a 48KiB machine with 12KiB of ROM and 4KiB of I/O. Giving it a clean 64KiB space. Well, that's not counting the language cards that banked extra RAM and was eventually included in the Apple IIe.
floobydust wrote:
I guess I'll add my $0.02 as well... so in addition to the current responses, here's some thoughts:
- Exactly what is the plan for the system? Emulate an Apple II, hence mimic the memory map?
- Clock speed, planned I/O devices?
I am designing my third SBC that I hope to improve on my last one. I'm taking "inspiration" from the Apple II, VIC-20 and TI-99/4a. My computer would be a competitor to those systems back in the day (minus a little cheating with SRAM and larger ROM/RAM).
I'm not looking to emulate anything. Well, not really. In my last SBC, I had a decoding logic that mapped the four slots in a similar way the Apple II did. I hope to do the same in this one.
But the real reason is I just like that memory map. And I figured it's a little more difficult than my last SBC and having a mapping system like that would give me some challenge.
Clock speed will hopefully be in the 2 - 4 MHz. But I will be interfacing to some vintage chips so if that becomes a problem, I won't have any issue with running it at 1 MHz.
floobydust wrote:
- A limit on ROM or able to add (ROM) to the open address ranges for specific uses?
- Adapter slots or everything built onto a single board?
Yes, I hope to have some adapter slots. My last SBC had four. I hope to do between 2-8 on this one. Depending on how large the board gets. And I loved the way the Apple II had the slots mapped. It wasn't dynamic, but accessing code on ROM (via a slot) and even being able to boot off a slot was pretty slick for 1977. BTW, I live in the 70's and 80's....lol
floobydust wrote:
I'd also ask if there's a need to mimic the Apple II memory map, or is it just a nice idea... point being, how much I/O space do you think you'll need?
Well, I'm not going to need a ton. I plan on putting some VIA's and ACIA on-board with a few slots. So probably 8 or less but haven't sorted the details yet.
As far as the Apple II memory map, it's just a nice idea for me. I just like it. But I won't fight it for months if that's what it comes to. My goal for this computer isn't emulating anything. It's having fun so if it stops being fun, I will move on and change things.
drogon wrote:
My Ruby is all RAM. The 'trick' is getting the bootstrap code which includes the hardware vectors into the top 256 bytes of RAM before the 65xx comes out of reset. I do this by brute-force of having an ATmega take over the memory system.
I thought about that as well. Like I said, I'm on the fence about PLD's or not (a single ATF1504 would make things so much easier).
In a way, I guess the closest computer I can think of that did something similar was the C64 (and maybe C16/Plus4). There you could pretty much disable the entire ROM and get nearly 100% of all RAM. Obviously, they needed custom chips for that.
Well, you guys have given me a lot to think about. I may beg/borrow/steal some ideas from here if you don't mind.
I will keep you all posted!
Thanks!