7

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.)

5
  • 2
    Are 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 Dendo
    Commented 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. Wilcox
    Commented Nov 22, 2021 at 5:57
  • @A.Wilcox : Too much... but thx for the info.
    – EL Dendo
    Commented 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.) Commented Apr 20 at 9:44

1 Answer 1

2

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .