RE: Stashing data at $ff00-$ff04 in 128 mode?

From: Marko Mäkelä (
Date: 2001-07-26 09:19:45

On Wed, 25 Jul 2001, Ray Bryan wrote:

> I think from my reading of the docs that wrtiing to the $ff00 to $ff04 address
> would write to registers in the MMU -- and 0FF00 - 0ffffh are always used byt he 
> 8502 even in cp/m mode.  (8502 is the out/in put processor)

The OUT (C),xx instruction (actually it is OUT (BC),xx) definitely does
access the I/O area from the Z80.  Quite many years ago, I was in the
process of constructing a memory map for the Z80 mode.  I didn't finish
the task, and my notes have been destroyed.

I cannot come up with ways of writing to $ff00-$ff04 using a stock C128.
You can probably write there from the cartridge port (e.g. using a REU)
without the MMU intercepting the addresses.  From the 8502 side, you can
write there only in C64 mode (from where only a hardware RESET can return
the MMU to the C128 mode) or by mapping the memory area to a different
address.  This is possible with my internal 1 MB expansion that is
partially based on Pekka Pessi's 256 kB expansion for the C64.

The "common memory bank" feature of MMU that allows you to access bank 0
RAM always at some bottom or top memory bank, or both, regardless which
bank has been selected for the middle area, should not be of any help
here, since it doesn't perform any address translation.

Oh, now I got it: you use the zero page or stack page relocation register
and write the data to $100-$104 or to $00-$04 (well, I guess it's easier
for you to write to $100 or $101 than to $00 or $01 (I've done the latter 
without using the MMU)).


       Message was sent through the cbm-hackers mailing list

Archive generated by hypermail 2.1.1.