Dr Jefyll wrote:
Hm, a very intriguing idea! I'm not laughing, but this project is rather ambitious. It's good that you're treating the upgraded memory as "Part 1" -- a separate and preparatory goal.
-- which is in fact more ambitious than what my summary suggested.
Quote:
I get the part about copying the ROM to the fast RAM that's "underneath" (ie, mapped to the same address range, but initially selected only on write cycles). But where would the code for the copying reside? I'm guessing you'll either provide a small additional ROM or you'll replace the ROM with an (E)EPROM and shoehorn the copying routine into some unused space therein.
VIC's memory map divides 64K into eight 8K "Blocks." BLK0 is shared with the 6560 Video Interface Controller. (Which gives the VIC20 its name.) BLK4 ($8000-$9FFF) is where I/O resides. BLKs 6 & 7 are where the system ROMs live. Enables for BLKs1,2,3 and 5 are available on an edge connector at the back of the case. (Also two 1K enables for external I/O circuitry.)
On start up, after some fundamental initialization steps, Kernal code checks for the presence of auto-starting code in BLK5. Usually this has been in ROM cartridges plugged into the back. I plan to have banks of RAM and EEPROM in BLK5 and the ROM copying routine could be in the EEPROM, where it could auto-start, then continue the rest of system initialization. Or I could call the copy routine manually from Basic before going to Fast mode. There'll be a bit in a Configuration register for that, as well as a mechanical switch that can force Slow mode.
Quote:
As for the clocking business, I'm pretty sure an all-digital solution will be both doable and preferable to using monostables. But as background for those of us reading, can you attach or link to a VIC20 schematic please?
The only version that fits on one sheet is the earliest rev. Later models are on multiple pages. I use Rev D, here:
http://www.zimmers.net/anonftp/pub/cbm/ ... index.htmlThey're actually six
half-pages: I had to paste a couple together to get the Big Picture of the sections relevant to what I want to do.
There's also this
http://mainbyte.com/vic20/n_schematic.pdf redrawn by someone as three sheets. It's quite huge, and the only error I''ve noticed is the "1" is missing from 6502 Ø1 out. There might be others.
Quote:
My hunch is it'll be easiest to disconnect the first stages of VIC's clock generation circuitry and hook in our own replacement instead.
That won't be necessary. What I'm calling True 1MHz (T1M) comes from an open collector 7406 hex inverter. To create a gap in in the high phase I need only pull that output down at the proper time with another open collector -- and there just happens to be one unused 7406 inverter on the Rev D board. Lucky me.
Commodore used two NORs and two inverters to Validate VR/W, and that circuitry should perform correctly when it receives 65C02 Slow/Fast Ø1 and I substitute /2MHz for PØ1. The added memory will need an OR, however, because I want to be able to Write Protect BLKs5,6,7.
VIC chip's operations occur during Clk Low, and that will remain 480nS. Its registers would still be updated at the 1MHz rate because they're in thje Slow region BLK4. I'm more concerned that some "legacy" programs would fail because they use the NMOS illegal op codes. Disabling Fast mode won't fix that.
I plan to use 74ALSxx wherever I think propagation delays might be concerning, keeping mind that some of VIC20's functioning
depends on prop. delays.
I do have an all digital solution in mind, but I haven't worked it all out yet. You guys probably won't like it. The thing about the Monostables design is I can adjust where the Monostable 2 generated gap occurs in True 1MHz High by varying the duration of Monostable 1. So, if I do stick with that design one question remains: What type of capacitor would be best for the timing?
I really appreciate the interactions here. Thanks.
Attachment:
clk_vrw.gif [ 21.04 KiB | Viewed 819 times ]