Closed ryandesign closed 11 months ago
I updated my program from #1180 that samples the floating bus so that it starts at exactly the same point after detecting the start of vbl so that there is no longer a 7-cycle jitter to account for when comparing different runs.
You can poke it into memory by entering the monitor with:
CALL -151
and then pasting this in:
4000:2C 52 C0 2C 54 C0 2C 57 C0 2C 50
:C0 A9 20 85 E6 20 34 40 A9 00 85 3C
:A9 10 85 3D A9 FF 85 3E A9 17 85 3F
:A9 E2 85 40 A9 40 85 41 20 79 40 20
:AF 40 4C 59 FF A2 BF 8A 20 57 40 8A
:A0 27 91 26 88 10 FB E0 80 90 0B 69
:3F A0 2F 91 26 88 C0 27 D0 F9 CA E0
:FF D0 E0 60 85 27 29 C0 85 26 4A 4A
:05 26 85 26 A5 27 0A 0A 0A 26 27 0A
:26 27 0A 66 26 A5 27 29 1F 05 E6 85
:27 60 18 A0 00 A9 AD 91 40 C8 A9 57
:91 40 C8 A9 C0 91 40 C8 A9 8D 91 40
:C8 A5 3C 91 40 C8 A5 3D 91 40 A5 40
:69 06 85 40 90 02 E6 41 20 BA FC 90
:D2 A0 00 A9 60 91 40 60 38 20 1F FE
:90 2D AD B3 FB C9 06 D0 26 AD C0 FB
:F0 21 2C 19 C0 10 FB 2C 19 C0 30 FB
:A5 00 A9 4A 20 A8 FC A9 18 20 A8 FC
:A9 0C 20 A8 FC 2C 19 C0 EA 10 EB 60
Run it with:
4000G
After running it, the first few rows of data gathered from the first vbl scanlines can be shown with:
1000.103F
Output on my real unenhanced Apple IIe:
1000- 80 80 80 C0 00 00 00 00
1008- 81 81 81 C1 01 01 01 01
1010- 82 82 82 C2 02 02 02 02
1018- 83 83 83 C3 03 03 03 03
1020- 84 84 84 C4 04 04 04 04
1028- 85 85 85 C5 05 05 05 05
1030- 86 86 86 86 C6 06 06 06
1038- 06 87 87 87 C7 07 07 07
Output from Virtual ][ 11.4:
1000- 80 80 80 C0 00 00 00 00
1008- 81 81 81 C1 01 01 01 01
1010- 82 82 82 C2 02 02 02 02
1018- 83 83 83 C3 03 03 03 03
1020- 84 84 84 C4 04 04 04 04
1028- 85 85 85 C5 05 05 05 05
1030- 86 86 86 C6 06 06 06 06
1038- 87 87 87 87 C7 07 07 07
Virtual ]['s output is close to correct but there's a slight timing difference. (Real IIe showed 4 $86's starting at $1030; Virtual ][ showed 4 $87's at $1038.)
Output from OpenEmulator 1.1.1-202203110628:
1000- 80 C0 00 00 00 00 81 81
1008- 81 C1 01 01 01 01 82 82
1010- 82 C2 02 02 02 02 83 83
1018- 83 83 C3 03 03 03 03 84
1020- 84 84 C4 04 04 04 04 85
1028- 85 85 C5 05 05 05 05 86
1030- 86 86 C6 06 06 06 06 87
1038- 87 87 C7 07 07 07 07 88
OpenEmulator's timing is way off (4 $83's at $1016).
Output from Clock Signal 23.09.10:
1000- 84 90 D0 00 00 00 00 00
1008- B8 B8 F8 01 01 01 01 01
1010- B9 B9 F9 02 02 02 02 02
1018- BA BA FA 03 03 03 03 03
1020- BB BB FB 04 04 04 04 04
1028- BC BC FC 05 05 05 05 05
1030- BD BD FD 06 06 06 06 06
1038- BE BE BE FE 07 07 07 07
Timing matches Virtual ][ and the wrong values were mostly fixed by #1182.
Output from Clock Signal 23.10.29:
1000- 80 80 80 D0 00 00 00 00
1008- 81 81 81 F8 01 01 01 01
1010- 82 82 82 F9 02 02 02 02
1018- 83 83 83 FA 03 03 03 03
1020- 84 84 84 FB 04 04 04 04
1028- 85 85 85 FC 05 05 05 05
1030- 86 86 86 FD 06 06 06 06
1038- 87 87 87 87 FE 07 07 07
Better except I still have an error in the last eight bytes of hbl during vbl.
Output from Clock Signal with the bug fix that I will submit shortly is now identical to Virtual ][:
1000- 80 80 80 C0 00 00 00 00
1008- 81 81 81 C1 01 01 01 01
1010- 82 82 82 C2 02 02 02 02
1018- 83 83 83 C3 03 03 03 03
1020- 84 84 84 C4 04 04 04 04
1028- 85 85 85 C5 05 05 05 05
1030- 86 86 86 C6 06 06 06 06
1038- 87 87 87 87 C7 07 07 07
I'm sorry, I must have made a mistake while refactoring my code before submitting #1182 because although "Have an Apple Split" and "Rainbow" now work in Clock Signal 23.10.29, its Apple II floating bus behavior is still not right. Don Lancaster's "Vaporlock", for example, goes into an infinite loop instead of getting a lock. This is just a placeholder report to remind me to investigate and submit another fix.