Re: ULTIMAX horror! From: Nicolas Welte Reply to: welte@chemie.uni-konstanz.de Date: Fri, 27 Nov 1998 21:27:54 +0100 Organization: InterNetNews at News.BelWue.DE (Stuttgart, Germany) References: <73jimk$94s$1@fu-berlin.de> <365E71E5.3521@chemie.uni-konstanz.de> <73mpbt$b57@journal.concentric.net> Cameron Kaiser wrote: > Since we have all these ROM banking gurus, someone want to explain why FCIII > uses Ultimax mode for freezing to begin with (or any other freeze cart for th at > matter)? I'm curious to see what advantage that gives it. I think the reason is quite a simple one: Somehow the freezer has to take over, and the processor has to be interrupted. This can be done by an IRQ, NMI or RESET. All of these events fetch their hardware vector at $fffx and the freezer has to be sure that its own vectors are there. So it simply maps its ROM into that area using Ultimax mode and the processor jumps to the freezer vectors. And now, after having arrived at home and having done some experiments with my trusty 128D, I have to correct my statement of today morning about the accessibility of the $d000 part of ROMs in the C128. I was mislead by the MMU register description in the C128 manual which says that it is only possible to have RAM, I/O or the Char ROM at $d000. What is actually mapped in there is controlled by three bits in the MMU coniguration register. Bit 0 is the I/O bit, if it is 0, I/O maps into the $d area. If it is 1, RAM or ROM is mapped in. Which is used there is controlled with bits 4 and 5 of the same register, and they normally ($c000-$ffff except $d000-$dfff) mean: 00 System ROM 01 internal function ROM 10 external function ROM 11 RAM (bank selected though bit 6) But in the $d000-dfff area it's different: 00 Character ROM 01 internal function ROM 10 external function ROM 11 RAM (bank selected though bit 6) So the character ROM stuff only replaces the System ROM, the function ROMs are not affected by this. The manual is clearly wrong here and I consider to follow Andreas' advice about throwing it into the fire. BTW, I also did some Z80 experiments and the mapping of the Z80 ROM to $0000 is not affected by these bits of the MMU. But the function ROMs can be activated at $d000, just like in 8502 mode. Nicolas