| |
oziphantom
Registered: Oct 2014 Posts: 490 |
Breakpoints/Freezepoints and the 128
Does anybody know of any cart or program that provides AR5/6 level FreezePoints on the 128. Just something that automatically patches the code for you when and then enters the monitor. |
|
... 5 posts hidden. Click here to view all posts.... |
| |
oziphantom
Registered: Oct 2014 Posts: 490 |
The 128 is a very different beast, to think it is just a 64 with an extra bank tacked on will lead down a garden path.
Problem 1. The Z80 boots first and it only ever sees the internal Z80 portion of the internal ROM and can not be made to see an external ROM.
Problem 2. The 128 has no ultimax mode, to the point it even slightly cripples the 64 modes ultimax mode, this is why the Turbo Chameleon won't work on the 128. I think it also impacts flashing of carts such as the GMOD2.
Problem 3. The 128 ignores EXROM and GAME Lines, in fact you can set them to be outputs on the 128 and use them as extra control signals.
Problem 4. The KERNAL strictly sets FF00 to 0 upon its entry points forcing the code to hit and stay on the built in ROMs. So while you can during the boot sequence make it boot to your external ROMs, ( the 128 has 2 16K ROMS for external use, which are like the 16K on a 64, just its 2x16K not 2x8K thus giving you a full 32K ROM set ), you then must keep it always in your external roms, and can't let the KERNAL/BASIC/Editor/Monitor ROM run internally or it will switch it back to the internal ROM set and you will have to find a vector to hook in order to switch the MMU back to external function rom mode.
So you can not take over the 128, you can only let it yield to you on its terms and when you directly instruct it to. You could say install a custom NMI handler and modify the vector at boot, and then your cart will fire an NMI event to which it then jumps to a custom code routine in the lower shared 4K, which then invokes your external cart for a freeze, but there is nothing to stop somebody changing the NMI vector and or trashing your "bootstrap" and the machine must have the KERNAL banked in. |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
will replacing the ROM's to freeze friendly code do the trick then? I dont know why ultimax is needed for freeze.
maybe a custom ROM NMI handler ? :) |
| |
oziphantom
Registered: Oct 2014 Posts: 490 |
okay, if you don't replace the KERNAL and take over vectors, how do you freeze? I assumed that the AR carts pull into Ultimax mode, and then put their ROM at E000 so it can trap Vector pulls and hence hook into their own code?
replacing the internal KERNAL ROM would let you freeze if you have the KERNAL enabled.. if I bank it out, then it can't help, because I will control the vectors.. |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
so the problem is that a freezer cart cant bank in its own ROM ? |
| |
oziphantom
Registered: Oct 2014 Posts: 490 |
you can bank in external ROM, just you have to ask the MMU to do it. To do so you have to have control of the CPU, so you need a way from pressing a button to get the CPU under your control. Once you have the CPU under your control, you can set the banks, ZP, stack as you please. |
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
So couldn't you make a Z80 based freezer cartridge for C128 mode? |
| |
oziphantom
Registered: Oct 2014 Posts: 490 |
The Z80 code only runs at reset/boot and it won't use an external ROM, it will only execute the internal ROM. If you want to "freeze" by resetting you might be able to hijack the Monitor boot sequence somehow.. or if you have a "looks like CP/M disk", you could perhaps hijack it with one of them, but at this point you are doing a reset
for the monitor entry let me look at the code to see what it does... |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
so replace z80 rom ? I understood not possible VIA software, but what would be the least invasive modification to do it ? |
| |
oziphantom
Registered: Oct 2014 Posts: 490 |
the Z80 ROM is D000-E000 in the "Upper ROM" so you would need to replace one of the ROMs, some 128s have each ROM in a chip and then some have the merged into 1 bigger ROM. |
| |
oziphantom
Registered: Oct 2014 Posts: 490 |
The monitor entry is deep into the KERNAL reset routine and happens after any auto boot external/internal ROMS are checked. So an external function ROM would be better than the Monitor entry as it will have a lot less trashed, although at this point the KERNAL will have installed its custom lda/sta/cmp/jsr FAR routines, soft reset vector and looks like it will have intited the IO chips and installed default VECTORS. |
Previous - 1 | 2 - Next |