Thanks again!! I appreciate your time and effort here!
Just to be sure, if I am going to use the $C040-$CFFF range as part of a program, are you saying it's okay to enable the ROM for all off $C000 -$CFFF? Same for $8xxx?
Plugging a cart that uses/enables cartridge ROM at $2xxx, $7xxx, or $Exxx into a stock Intellivision is perfectly fine?
Plugging a cart that uses/enables cartridge ROM at $2xxx, $7xxx, or $Exxx into an ECS unit would or could cause bus contention issues?
By the way, I'm currently using a 128K (x 16 bit) memory chip, so I have 64K easily available for bankswitching, and more if I want to get fancier. I also plan to use a 64K (x 16 bit) RAM chip (that can be addressed pretty much anywhere, including the $8040-$9EFF range). I'm guessing jzintv would work just fine with this.
For $4000 - $403F, $8000 - $803F and $C000 - $C03F, the System RAM isolates the CPU side of the bus from the STIC registers, but it does not isolate the STIC from the CPU side of the bus. Furthermore, the STIC side of the bus is only 14 bits, which is how we end up with aliasing. So reads to these locations do not return STIC contents, but the STIC still sees the read as a read in the range $0000 - $003F. (That affects location $21—aliased at $4021/$8021/$C021—as it switches between Color Stack and Foreground/Background mode based on whether $21 was read or written.)
Also, the STIC sees all writes to $4000-$403F, $8000-$803F and $C000-$C03F as writes to $0000-$003F. That only matters if you want to map RAM in those locations, and programs try to write to that RAM. For example, the ECS maps RAM at $4000 - $47FF, but programs only use $4040 - $47FF.
For ROM at $2xxx, $7xxx and $Exxx, it's perfectly safe to map ROM in those locations on an unexpanded Intellivision. If the EXEC detects ROM at $7xxx (upper 6 bits of location $7000 are 0), it will jump to $7000 directly, very early in the EXEC boot sequence. But, there are no bus conflicts or anything else.
If you attach an ECS, you could have bus conflicts with the ECS ROMs when the ECS ROMs are paged in. ECS ROMs map to $2xxx page 1, $7xxx page 0, and $Exxx page 1. So, immediately after reset, $7xxx is visible, but $2xxx and $Exxx are not. However, the ECS boot sequence switches in the ROM at $2xxx. So, if you have unpaged ROM at $2xxx, $7xxx you will end up with bus conflicts.
The ECS has a third segment at $Exxx page 1. This ROM segment isn't consulted by the ECS during bootup. You can safely have an unpaged segment at $Exxx if your game switches $Exxx to page 0 (which, for an unpaged ROM does nothing, but for a paged ROM ensures that only page 0 is selected). Incidentally, this is what WSMLB does, as it has fixed ROM at $Exxx. It just writes $EA50 to $EFFF early in its setup and carries on from there.
So, with 128Kx16-bit of flash/EPROM, you're at about the same ROM capacity as JLP. You should be able to go nuts with page flipping.
And yes, jzIntv should be fine with all of this.
Edited by intvnut, Sat Sep 27, 2014 10:31 PM.