[BASIC] Replace ldy #0 + (zp),y addressing with (zp) addressing #350
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.
As the original NMOS 6502 didn't have
(zp)
addressing, it used(zp),y
addressing with a constant .Y = 0 for ZP indirect loads. Not only is this not necessary anymore, as both our target CPUs support(zp)
addressing, it leads to behavior differences whenPOKE
is used on addresses in the IO page: In the extra CPU cycle needed to calculate the target address duringsta (zp),y
, the 65C816 performs a read of an invalid address, while the 65C02 performs a read of what is presumed to be the last fetched instruction byte, causing an extra read from the IO page on the 65C816.This PR replaces all unnecessary
(zp),y
usages in code17.s, where the implementation forPEEK
andPOKE
lives.