summaryrefslogtreecommitdiff
path: root/native/Noddybox.Emulation.EightBit.Z80.Test/README
diff options
context:
space:
mode:
Diffstat (limited to 'native/Noddybox.Emulation.EightBit.Z80.Test/README')
-rw-r--r--native/Noddybox.Emulation.EightBit.Z80.Test/README73
1 files changed, 73 insertions, 0 deletions
diff --git a/native/Noddybox.Emulation.EightBit.Z80.Test/README b/native/Noddybox.Emulation.EightBit.Z80.Test/README
new file mode 100644
index 0000000..ecb4c18
--- /dev/null
+++ b/native/Noddybox.Emulation.EightBit.Z80.Test/README
@@ -0,0 +1,73 @@
+File formats
+============
+
+tests.in
+--------
+
+Each test has the format:
+
+<arbitrary test description>
+AF BC DE HL AF' BC' DE' HL' IX IY SP PC
+I R IFF1 IFF2 IM <halted> <tstates>
+
+<halted> specifies whether the Z80 is halted.
+<tstates> specifies the number of tstates to run the test for, in
+ decimal; the number actually executed may be higher, as the final
+ instruction is allowed to complete.
+
+Then followed by lines specifying the initial memory setup. Each has
+the format:
+
+<start address> <byte1> <byte2> ... -1
+
+eg
+
+1234 56 78 9a -1
+
+says to put 0x56 at 0x1234, 0x78 at 0x1235 and 0x9a at 0x1236.
+
+Finally, -1 to end the test. Blank lines may follow before the next test.
+
+tests.expected
+--------------
+
+Each test output starts with the test description, followed by a list
+of 'events': each has the format
+
+<time> <type> <address> <data>
+
+<time> is simply the time at which the event occurs.
+<type> is one of MR (memory read), MW (memory write), MC (memory
+ contend), PR (port read), PW (port write) or PC (port contend).
+<address> is the address (or IO port) affected.
+<data> is the byte written or read. Missing for contentions.
+
+After that, lines specifying AF, BC etc as for .in files. <tstates>
+now specifies the final time.
+
+After that, lines specifying which bits of memory have changed since
+the initial setup. Same format as for .in files.
+
+Why some specific tests are here
+================================
+
+37_{1,2,3}: check the behaviour of SCF with respect to bits 3 and 5
+ (bug fixed on 20040225).
+
+cb{4,5,6,7}{7,f}_1: designed to check that bits 3 and 5 are copied to
+ F only for BIT 3,<arg> and BIT 5,<arg> respectively
+ (bug fixed on 20040225).
+
+ However, later research has revealed the bits 3
+ and 5 are copied on all BIT instructions, so these
+ tests are now essentially redundant.
+
+d{3,b}_{1,2,3}: check for correct port contention on IO in the four
+ relevant states (port high byte in 0x40 to 0x7f or not,
+ port low bit set or reset).
+
+dd00.in, ddfd00.in: test timings of "extended NOP" opcodes DD 00 and
+ DD FD 00; the extra 00 at the end is to check the
+ next opcode executes at the right time (bug fixed
+ on 20060722).
+