Skip to content

Conversation

@rezafouladian
Copy link
Contributor

Work in progress support for the Macintosh Portable.

As of 438235f it is mostly functional with some bugs that need to be fixed.

TODO

Interrupt issues on restart

When using the Restart option to reboot the system, if an ADB interrupt is generated during early boot it will cause the system to crash.

Power manager state issues on reset

Occasionally when resetting, the power manager does not seem to be in the correct state and future handshake attempts fail.

PRAM persistence/saving

PRAM does not currently save/load since the changes that were made to the core RTC at one point have not been implemented into the power manager's PRAM method.

Floppy drive order

This is a minor thing, but the floppy drive order seems a bit off from how the ROM interprets it.

As it is now the order is:

  • Drive 1 in Snow = Upper floppy drive
  • Drive 2 in Snow = External floppy drive
  • Drive 3 in Snow = Lower floppy drive

It could be reordered to Upper, Lower, External, or since the Portable usually only has the lower drive installed it could be Lower, Upper, External.

Memory space with no /DTACK

Certain memory space such as the ROM disk and SLIM ROM space does not normally generate /DTACK. At the moment this just returns open bus but it should likely return a bus error instead.

This does not cause any issues that I have seen other than slightly increased scan time when checking for ROM disks.

ADB auto polling

ADB auto polling has not been implemented yet.

I am not sure what issues this causes if not present.

Combined commit for general Macintosh Portable support.
Most functionality is implemented but there are still some bugs that need fixing and some optimizations to be done.
@twvd
Copy link
Owner

twvd commented Nov 5, 2025

Thank you so much for this! It would be awesome to add Portable as a model to Snow.

Let me know when you feel the PR is ready for review and I'll review it. If there are minor issues left but the system is (mostly) usable, that's fine and it can be iteratively improved.

RE the restart thing: one thing you can check if the CPU receives a RESET instruction during restart. You can implement a reset function on the bus and clear the ADB interrupt to a safe state there. Maybe that helps..

@rezafouladian
Copy link
Contributor Author

RE the restart thing: one thing you can check if the CPU receives a RESET instruction during restart. You can implement a reset function on the bus and clear the ADB interrupt to a safe state there. Maybe that helps..

Unfortunately the Portable specifically does not use the RESET instruction. Apparently there was some sort of issue and the RESET instruction was not to be used, not sure what problem they were worried though.

@twvd
Copy link
Owner

twvd commented Nov 8, 2025

I noticed the mouse cursor seems glitchy when moving around the screen

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

Successfully merging this pull request may close these issues.

2 participants