I am building a 8080 emulator. I found some useful test suites here. The emulator passes the first test suite (8080/8085 CPU Diagnostic, version 1.0, by Microcosm Associates), but not the second (DIAGNOSTICS II V1.2 – CPU TEST SUPERSOFT ASSOCIATES). Is there a manual (or other document) for this diagnostic tool? (The tool gives some probably useful diagnostic codes.)
-
2Are you asking for the manual only, or would any documentation that answers what the diagnostic codes are do?– wizzwizz4 ♦Commented May 6, 2017 at 13:41
-
all documentation is welcome– EL DendoCommented May 7, 2017 at 8:33
-
I could not find any other way to contact you; if you want to spend a lot of money for it, there's an actual copy of the original diskettes and manuals available on eBay right now.– A. WilcoxCommented Nov 22, 2021 at 5:57
-
@A.Wilcox : Too much... but thx for the info.– EL DendoCommented Nov 22, 2021 at 9:27
-
Not sure if this is relevant or not? (Just noticed how old this post is, but someone might find the link useful. Seems ironic that a software manual for sale 7 years ago on eBay is still available.)– Noel WhitemoreCommented Apr 20 at 9:44
1 Answer
I have yet to see a manual for this tool, but I have placed here some documentation and a partially annotated disassembly. You don't say what your failure was, but it likely was an opcode test failure. The following is an extract from my documentation:
On failure of an opcode test, a message like the following will be printed:
CPU FAILED:
ERROR COUNT 0001H
INSTRUCTION SEQUENCE WAS 050000H
REGISTER f CONTAINS 46H
BUT SHOULD CONTAIN 56H
REGISTER VALUE BEFORE INSTRUCTION SEQUENCE WAS 02H
TEST NUMBER 0011H
The instruction sequence above gives the opcode and operands that caused
the failure. For 1- and 2-byte instructions the remaining bytes are padded
with NOP ($00) opcodes. In the above example, the failing instruction was
$05
, or DCR B
/ dec b
.
All registers are loaded with test data before executing the instruction
under test, and all are checked after, but only one failure appears to be
shown. In the case above, it's the flags register which had/expected the
following values. (This test was run on an 8080, so note that bit 2 of F is
always 1
when pushed on the stack, represented by =
below, thus the
initial value of $02 rather than $00.)
Before Test F=$02 sz-h-p=c
Expected Result F=$56 sZ-H-P=c
Actual Result F=$46 sZ-h-P=c
From this we can see that the fault detected was that the DCR m
/dec r
instruction is not correctly assigning the auxiliary carry / half carry
flag.