Rounded out the PC8080 portion of the tree
This commit is contained in:
parent
b04ef7e49f
commit
e9099c6d38
22 changed files with 154 additions and 21 deletions
50
devices/pc8080/machine/exerciser/README.md
Normal file
50
devices/pc8080/machine/exerciser/README.md
Normal 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)
|
||||
11
devices/pc8080/machine/exerciser/machine.xml
Normal file
11
devices/pc8080/machine/exerciser/machine.xml
Normal 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>
|
||||
Loading…
Reference in a new issue