You're going to cut down on a lot of use cases. No external video cart, no VIC-MIDI (or other RS232 on the expansion port) option, nothing like those. Even UltiMEM plays nice with a cart in the other IO bank (unless you map RAM/ROM there, but I digress.Mike wrote: ↑Sun Jul 19, 2020 3:31 pmI think it's a futile attempt to operate two carts on the VIC-20 that both use the I/O area for registers. Even if the registers don't collide - the carts will very likely kick each other out of operation by kidnapping the KERNAL vectors or other resources.brain wrote:Yes, all of the stuff has to fit in an IO area, and preferably 1 of them (I can see folks wanting to use this cart alongside another than uses another IO bank, like VIC-MIDI or some other expansion IO cart. So, I don't think it's good to tie both 2kB IO areas up.
Again, not sure I understand part of this. Regardless of ROM or RAM at BLK5, one still needs a flag to disable mapping in code at BLK5 to wedge the KERNAL, in case the user wants to soft load a cart at BLK5. Yes, my idea of using 8kB of RAM for init would tamper with RAM (maybe the top 8kB of the RAM address space). But, not having ROM makes the cart cheaper and simpler (no need to support registers for ROM, no need to support re-programming it, no need to buy it or find a place on the PCB for it.I think that's better done with a dedicated ROM (area), mapped in as necessary. A reset, regardless of what kind, should not tamper the RAM. There could be a soft-loaded cartridge in BLK5 RAM, which the user wants to start. See my previous post mentioning a 'soft' reset for this reason.and RAM. Do we hold RESET low and skip ROM, using the uC to load some data into RAM on boot and then release RESET, mapping that RAM into BLK5 to auto-start?
Having the uC prepare the next page of code while the VIC is accessing it is indeed the difficult part of this idea, in my opinion.For RAM banking, probably yes. See above.B&W video @ 15FPS is 4096*15 = ~60K/second. But, one has to assume the uC is fast enough to read, unroll, save, and perform RAM housekeeping to keep up, so one should not need more than 2kB of SRAM to handle the video case. So, it mainly falls to expansion RAM needs for other uses. Is 2MB enough?
With the loop unrolling a transfer rate of 100 KB/s should easily be possible, which gives 25 fps (assuming a 4 KB MINIGRAFIK bitmap as graphics mode). The uC also should prepare the next 'page' of code while the 6502 churns along the current transfer code, otherwise a lot of speed is lost with the 6502 waiting for the uC to build the next chunk of transfer code.
Jim