Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

24-bit addressing support #12

Closed
autc04 opened this issue Feb 23, 2019 · 4 comments
Closed

24-bit addressing support #12

autc04 opened this issue Feb 23, 2019 · 4 comments

Comments

@autc04
Copy link
Owner

autc04 commented Feb 23, 2019

Originally, Macs used 24-bit addressing. Apple introduced 32-bit addressing as an option with System 7 on 68020 and later processors, and made it mandatory some time later. This caused compatibility problems for quite a few applications.
Executor only implements 32-bit addressing and shows a warning for applications that are not explicitly marked as 32-bit compatible by their developers.

Background: The original 68000 processor ignored the upper 8 bits of every 32-bit address. Some programs took advantage of that and stored other information there, others even relied on the Memory Manager storing some information there in some situations.

TODO:

  • implement a 24-bit address mapping mode for syn68k
  • make sure that executor's memory use "fits" in 4 * 4MB
  • make the memory manager store its attribute bits where old apps expect them

Affected Apps (that are known to crash for this reason):

  • Turbo Pascal 1.0
@MaddTheSane
Copy link

To my knowledge, PowerPC never implemented 24-bit addressing, so if it ends up being a launch-time switch, perhaps disabling PowerPC code translation could speed some things up.

@autc04
Copy link
Owner Author

autc04 commented Feb 23, 2019

Yes, 24-bit was dead long before the PowerPC came along, so all PowerPC programs are definitely 32-bit compatible.

I don't think it's even easy to make it a launch-time switch - the first attempt will be a compile time thing.

The SYN68K_TO_US macro (defined in syn68k_public.h) is the central point for translating addresses, this is where it should be done. Unfortunately, adding an extra "if" there will already slow things down considerably.

@Godzil
Copy link

Godzil commented Jun 26, 2019

How does Apple cope with that on a 32bit clean system?

@autc04
Copy link
Owner Author

autc04 commented Jun 27, 2019

@Godzil, cope with what exactly?

They didn't have the SYN68K_TO_US problem, because the processor does that, and they just didn't support 24-bit mode on later systems.

@autc04 autc04 closed this as completed Nov 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants