Am I right in thinking that
LOADloads into RAM (dark grey in the image), ignoring any switched-in banks? For example if the
.prghad header $01 $08 followed by 63486 zero's then
LOADwould effectively zero fill the computers memory from $0801 onward? If I were to switch-out any of BASIC ROM, IO, or Kernal, for example, then
LDAing) those areas would return zero?
If I switch out BASIC ROM do I need to disable any interrupts at all?
If IO and Kernal are not switched-out the CPU will see them and not the underlying RAM, but will the VIC see RAM there regardless? If so I was going to use $C000-$FFFF for graphics (character set and sprites) whilst keeping IO and Kernal switched-in for the CPU to see.
Any time the CPU writes to memory, it writes to RAM or I/O. Your example will zero out all the RAM, but also will zero any I/O locations. That's going to have the effect of disabling sprites, setting their colour to black, turning any sound off, etc etc. It might send a zero byte to the serial port or something as well, I'm a little hazy on exactly how that works. This is going to have an effect on loading from disk also.
So if you want to write anything into this region of RAM, then you can't do so directly from disk. You need to load it into some other region first, and then move it. (That's as well, since you probably want to decompress it etc).
But if the aim is just to load some data to be displayed, then you could try and fit it all into the upper 8 kilobytes and separately configure the VIC-II to display it.
The interrupt handlers are part of the KERNAL, and they don't depend on BASIC. The design of the C64 is precisely so that you can page BASIC out without having worry about that kind of thing. But if you want to page out the KERNAL, then of course you need to set up an interrupt handler first (or disable interrupts until you page KERNAL back in)
3. That's right.
The VIC-II's view of memory is completely different from the CPU's view of memory. If the VIC-II is set to bank 3 (starting at $C000), then it will see RAM all the way through those 16K. It'll be up to you to upload whatever charsets you want.