Rounded out the PC8080 portion of the tree

This commit is contained in:
Jeff Parsons 2016-05-01 15:12:52 -07:00
commit e9099c6d38
22 changed files with 154 additions and 21 deletions

View file

@ -0,0 +1,50 @@
---
layout: page
title: 8080 Exerciser Test Machine
permalink: /devices/pc8080/machine/exerciser/
redirect_from:
- /devices/pc8080/machine/test/
machines:
- type: pc8080
id: test8080
debugger: true
---
8080 Exerciser Test Machine
---
This is a test of [PC8080](/modules/pc8080/), a new 8080-based machine emulator being added to the
PCjs Project.
The test machine below loads a copy of the
[8080 Exerciser](https://web.archive.org/web/20151006085348/http://www.idb.me.uk/sunhillow/8080.html)
(specifically, [8080EX1](/devices/pc8080/rom/test/8080EX1.MAC)) and intercepts the exerciser's CP/M console
calls so that you can see its progress in the Control Panel window. This is a "headless" test machine
(no keyboard or display), so that's all you get.
The good news: PC8080 passes all the 8080 Exerciser tests. And it doesn't do it by using all sorts of weird
"flags tables" that most other 8080 emulators seem to fall back on.
Like all the other CPU emulations in the PCjs Project, PC8080 never "calculates" the flags unless/until they are
actually required, which considerably speeds up all arithmetic operations.
Of particular note are the 8080's subtract, compare, and decrement operations, which actually perform addition,
not subtraction, by using two's complement arithmetic in "stages": the first stage (inverting the source operand)
occurs *before* the addition, and the second stage (incrementing the inverted operand) occurs *after* the addition.
And it appears to be the result of the *first* stage, not the second, that determines the state of the Auxiliary
Carry flag (AF).
At 2Mhz, the 8080 Exerciser tests take quite a while, but you can click the speed button while the machine is running
to increase the simulated speed; it will revert to 2Mhz when you exceed the maximum speed that your system supports.
NOTE: The original [8080 Exerciser website](http://www.idb.me.uk/sunhillow/8080.html) is currently unavailable,
so we refer you to the copy on
[archive.org](https://web.archive.org/web/20151006085348/http://www.idb.me.uk/sunhillow/8080.html).
The 8080 Exerciser source code has also been "forked" on [GitHub](https://github.com/begoon/8080ex1).
{% include machine.html id="test8080" %}
8080 Online Resources
---
[8080 Opcode Map](http://pastraiser.com/cpu/i8080/i8080_opcodes.html)

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pc8080/1.22.0/machine.xsl"?>
<machine id="test8080" class="pc8080" border="1" pos="center" background="#FAEBD7">
<name pos="center">8080 Exerciser Test Machine</name>
<computer id="computer" busWidth="16"/>
<cpu id="cpu8080" model="8080" cycles="2000000"/>
<rom id="romTest" addr="0x0100" size="0x1200" file="/devices/pc8080/rom/exerciser/8080EX1.json" writable="true"/>
<ram id="ramTest" addr="0x1300" size="0xED00"/>
<panel ref="/devices/pc8080/panel/wide.xml"/>
<debugger id="debugger"/>
</machine>