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.
This PR supercedes #14456 and fixes the behavior of C060 and C063 softswitches:
Apple II/II+ with SHIFT key mod enabled now act as expected (MT#8917)
SHIFT key mod is no longer applied to the IIe or IIe Enhanced (pad X6 is a broken diamond) but is still applied to the IIe Platinum (pad X6 is a connected bowtie)
Some cassettes (i.e. "hi" quality WAVs via "Apple Game Server") which previously failed to LOAD with CHKSUM ERROR, now work (and the "lo" WAVs continue to work):


before:
after:
Documentation:
It is unintuitive that PB2 (and SW3 on the IIgs) behaves differently than PB0/PB1.
Apple's documentation about the gameio pushbuttons says things like "the appropriate game input is connected to bit 7 of the data bus" without specifying if they are high or low. But the //c Tech Ref explicitly mentions C063 in context of the shift-key mod and says "0 if it is pressed".
Sather's UTA2E Fig 7.2 shows pull-down resistors on PB0 and PB1, but not PB2.
Also, there is good anecdotal corroboration of what's happening from respected source Michael J. Mahon.
Sather also describes the LM741 inverting the cassette input, in UTA2E 7-8.
Testing:
The previous SWITCHES test shows that the default state of C06X softswitch reads (with or without a joystick attached) now matches hardware behavior, verified against a ][+ clone, //c, Apple IIe Enhanced and Apple IIgs ROM 3: both C060 and C063 default to high bit ON, except on a //c, C060 depends instead on the 40/80 switch.
This PR is a group effort: Shift key behavior was verified across various hardware by folks on Slack; kudos to: SpecLad, Will Scullin, Joshua Bell, and Tom Greene.
Caveats:
m_sysconfigoption bit, if someone wants that.