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.
I'm trying to use the r68k emulator (Great project!) to run some old mac applications from the 90's by creating an abstraction layer for the Macintosh toolbox.
One part of doing that is to map differnt parts of the address space, given prefixes, to differnt implementaitons. For example, one would be the video buffer, one would be the sound buffer, one would be regular RAM (possibly with memory allocation), one would be for emulade global variables.
Since it would be implemented in hardware with a demux on the MSB address bits connected to the chip enable/output enable of the different peripherals, and the lower bits as addresses, it makes sesse to treat the smaller address busses as AddressBus traits too, to keep it generic.
Therefore, I implement a MuxAddressBus, like:
In that way, I can split out the address space.
The problem is the copy_from() method required in the AddressBus trait, which not really corresponds to the physical interface of address lines, data lines and control lines (read/write signals). The copy_from corresponds more to a physical memory, and would be better implenented as part of that interface (LoggedMem / PagedMem).
So I suggest moving copy_from() method to the implementation of those objects, rather than the trait AddressBus