You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
test(conformance): hold the model to both appendices of the manuals
Appendix A of the Hardware Manual prints the address bus and the read
write line for every cycle of every addressing mode; all 27 tables are
now recorded and driven. Appendix B of the Programming Manual gives each
instruction its opcode, length, timing and flags; all 151 opcodes are
recorded and checked against the table, the cycle counts and 257 flag
absolutes.
Four places where the pages and the part disagree are recorded with the
evidence: the address of the discarded indexed read, written two ways in
one appendix; the branch table, whose address rows sit a row lower than
they run; the stack sums, which stop at the edge of page one; and two
rows printed without the page-crossing mark their neighbours carry.
Also ignores virtualenvs, which were failing the format gate on
vendored files.
Copy file name to clipboardExpand all lines: README.md
+59-1Lines changed: 59 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -123,7 +123,7 @@ Pure Python, standard library only. The release tooling is the sole `node_module
123
123
124
124
### Read from the datasheets
125
125
126
-
Every hardware fact this project relies on is in [`conformance/hardware.json`](conformance/hardware.json) with the sentence it was read from. Where a manufacturer's document and the recorded cycles disagree, [`conformance/divergences.json`](conformance/divergences.json) carries both and says what would settle it.
126
+
Every hardware fact this project relies on is in [`conformance/hardware.json`](conformance/hardware.json) with the sentence it was read from, every cycle of every NMOS addressing mode is in [`conformance/addressing-cycles.json`](conformance/addressing-cycles.json) as Appendix A prints it, and all 151 documented opcodes are in [`conformance/instruction-set.json`](conformance/instruction-set.json) as Appendix B prints them. Where a manufacturer's document and the recorded cycles disagree, [`conformance/divergences.json`](conformance/divergences.json) carries both and says what would settle it.
127
127
128
128
</td>
129
129
</tr>
@@ -232,6 +232,59 @@ cpu.a, cpu.x, cpu.y
232
232
233
233
`SparseMemory` holds only what has been written and hashes the address for everything else, so a test that touches a dozen bytes does not pay for sixteen megabytes to stay unclean. Both take a `seed`, so a differential run against another implementation stays comparable.
234
234
235
+
### The appendix, cycle by cycle
236
+
237
+
Appendix A of the MCS6500 Hardware Manual prints the address bus, the data bus
238
+
and the read write line for every cycle of every addressing mode. It is the only
239
+
manufacturer statement of NMOS bus behaviour this project has found, so all
240
+
twenty-seven of its tables are in
241
+
[`conformance/addressing-cycles.json`](conformance/addressing-cycles.json) with
242
+
the manual's own address expressions rather than a paraphrase.
0 commit comments