MEGA65 / mega65-freezemenu

Freeze Menu Program for the MEGA65
GNU General Public License v3.0
8 stars 11 forks source link

Utility to visualize the current state of memory mapping #60

Open dansanderson opened 1 year ago

dansanderson commented 1 year ago

The MEGA65 memory system has many layers and backwards compatibility features, and it is often confusing to understand the current state of the system. I would love an interactive utility that can visualize the current state of memory mapping. Some things an interactive utility can help explain:

If I understand correctly, these are properties that are captured by a freeze state, and so it's appropriate for a freeze utility to offer this as a way to explore a freeze state. Other hardware properties may or may not also be useful (or possible) to represent in such a utility, such as:

I know MAP registers are not available in userland, and are visible in Matrix Mode. If a freezer utility can ask the Hyppo for these values, it could help illustrate the effect of MAP values in a way that Matrix Mode cannot.

I'm imagining this as interactive memory map visualizations. I would love to be able to zoom into address ranges and understand the "state" of a given set of addresses interactively. For example, the next time I forget that I can't POKE $8000,$BB in the default BANK 128 mode, I can open the utility and zoom to $8000 and the tool will visually explain to me what's going on and help me understand what I need to change. This will require some thought and iteration to capture common developer questions and use cases.

lydon42 commented 1 year ago

sound like something that could be added to the MONITOR

lydon42 commented 1 year ago

Possibly a duplicate of #3

dansanderson commented 1 year ago

Also related: https://github.com/MEGA65/mega65-core/issues/660

A Freezer utility could do it much better than the Monitor because it has access to the environment state and doesn't run in the environment itself. The Monitor can do a few tricks with hardware assistance (e.g. interrupt-frozen registers), but the other aspects of memory and video state mentioned above are lost before entering the monitor. Nothing in userland can access the MAP register.

dansanderson commented 1 year ago

(If you mean the Freezer monitor, then disregard. My comments apply to the MEGA65 Monitor.)

lydon42 commented 1 year ago

That's why I linked the other MONITOR issue as an possible duplicate...