2

The Apple IIgs (last, ROM03 version) came with 128K of standard RAM and 1M of FAST RAM. The distinguishing characteristic of the FAST RAM is that code running from there can run at 2.8 MHz instead of the standard compatibility speed of 1 MHz.

Given that the IIgs can theoretically run Apple II programs, I'd like to run them from FAST RAM for maximum performance. However, 6502 code is normally not position-independent, and I think that most all Apple II programs would therefore need to load and run from their "normal" address locations, which would be in standard RAM. Or, there has to be a fancy loader that can fix-up all the references as the code is relocated, right?

How can I force an Apple II 6502 program (NOT a IIgs native program written for the 65816) to run on the IIgs but relocate the code and data to FAST RAM?

1 Answer 1

3

How can I force an Apple II 6502 program (NOT a IIgs native program written for the 65816) to run on the IIgs but relocate the code and data to FAST RAM?

No need to do so, as this is the default behaviour.

To have it different one needs to set the speed to 1 MHz (in the control panel).


The 'slow' emulation memory is located in Bank E0/E1, while the 'fast' memory starts from bank 00/01 (default up to 7F for 8 MiB). By default all writes of bank 00/01 get also copied to the 'slow' banks. Not a big deal speedwise (see here for more details), but it secures compatibility. All reads from I/O are as well taken via the Mega2 interface (synchronized at 1 MHz)

4
  • That makes sense, but, to be clear, when you say "to have it different one needs to set the speed to 1 MHz", doesn't prevent the load going to FAST RAM, right?
    – Brian H
    Jun 11, 2019 at 21:08
  • And I'm confused now why the SLOW RAM is 128KB, when it seems like they just needed to provide a shadow area for the video memory only.
    – Brian H
    Jun 11, 2019 at 21:11
  • 1
    a) Well, yes, it still gets loaded into normal RAM, but since the machine is running at 1 MHz, it performs like on a standard Apple. Or is here anything special why you insist on a certain memory location to be used. b) is more complex. Sure, as long as its just about internal I/O. But I/O cards can monitor any standard memory location for values. Not to mention DMA as well. In addition there are variaous finer details to make complete compatibility. After all, what you call 'slow RAM' isn't just some RAM, but the whole Mega2 compex - vulgo a whole Apple IIe :)
    – Raffzahn
    Jun 11, 2019 at 22:01
  • Expansion card DMA is a good example. I didn't have it in my head that the whole Mega2 complex was quite so isolated from the "CPU side" of things. I was thinking more in terms of the CPU choosing which memory to access and not the transparent efforts to keep everything in sync between the two memories.
    – Brian H
    Jun 11, 2019 at 23:08

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .