debugger: compare and display CPU addresses through the model's bus mask#112
Merged
Merged
Conversation
UI_ADDR_MASK hardcoded A0-A23, so on 020+ machines breakpoints and watches at Zorro III addresses aliased chip RAM and displays truncated 32-bit addresses. Chip-DMA surfaces (copper, blitter) stay 24-bit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
efd7ab7 to
77f48a7
Compare
LinuxJedi
approved these changes
Jul 4, 2026
LinuxJedi
left a comment
Owner
There was a problem hiding this comment.
Completely forgot I needed to fix this. I hit it and then got distracted. Many thanks!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
UI_ADDR_MASK hardcoded A0-A23 across the interactive debugger, so on 020+ machines a breakpoint or watch set at a Zorro III address aliased its 24-bit shadow in chip RAM (both compare sides were masked, so $40001000 and $00001000 were the same breakpoint), and every surface that prints CPU addresses (double-fault OSD, watch/writer reports, stack traces, the memory panel base) truncated 32-bit addresses.
InteractiveBreaks now takes the owning machine's address-bus mask at construction (InteractiveBreaks::new, from address_mask_for_model), the GDB stub and window/console surfaces normalize through machine.ui_addr_mask(), and chip-DMA surfaces (copper breakpoints, blitter pointers) deliberately stay 24-bit. The FIND command still searches the 24-bit space as documented.
Regression test: a Z3 breakpoint under a 32-bit mask no longer matches its chip-RAM alias; the existing 24-bit toggle/mask test is unchanged.
Follow-up to #91's debugger fix; independent of #111.
🤖 Generated with Claude Code