Fit ENHDEBUG in /disks/pc/tools/misc on a 360Kb disk, using: diskdump --path="enhdebug/archive/DEBUG.COM;DEBUG.TXT;README.TXT;HISTORY.TXT;LICENSE" --label=ENHDEBUG --output=enhdebug/ENHDEBUG.json --format=json --overwrite --manifest

This commit is contained in:
Jeff Parsons 2016-04-30 11:13:28 -07:00
commit 80879eb7af
4 changed files with 15 additions and 28 deletions

View file

@ -1,11 +1,11 @@
---
layout: post
title: The Intel 8080 CPU
title: Introducing the Intel 8080 CPU
date: 2016-04-30 14:00:00
permalink: /blog/2016/04/30/
---
We'd like to introduce [PC8080](/modules/pc8080/), a new 8080-based machine emulator recently added to the
Or rather, introducing [PC8080](/modules/pc8080/), a new 8080-based machine emulator recently added to the
PCjs Project.
Our first [8080 Test Machine](/devices/pc8080/machine/test/) loads a copy of the
@ -20,11 +20,11 @@ The good news: PC8080 passes all the 8080 Exerciser tests. And it doesn't do it
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 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, while 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).
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).
The behavior of the Auxiliary Carry flag (AF) and the associated DAA instruction are probably the most significant
(and least understood) *arithmetic* differences between the 8080 and all later x86-based CPUs. Well, there's also

View file

@ -26,11 +26,11 @@ The good news: PC8080 passes all the 8080 Exerciser tests. And it doesn't do it
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).
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.

File diff suppressed because one or more lines are too long

View file

@ -3,25 +3,12 @@
<manifest type="software">
<title>Enhanced DEBUG</title>
<source href="https://sites.google.com/site/pcdosretro/enhdebug">PC DOS Retro: Enhanced DEBUG for PC DOS and MS-DOS</source>
<disk id="disk01" size="737280" chs="80:2:9" dir="enhdebug/archive" href="/disks/pc/tools/misc/enhdebug/ENHDEBUG.json" md5="20db782809660a284e917f7f06e556b5" md5json="5f851e282497996b403194c50c448999">
<disk id="disk01" size="368640" chs="40:2:9" href="/disks/pc/tools/misc/enhdebug/ENHDEBUG.json" md5="8dd4cecc3fa560a7fca7debf066b6e09" md5json="bacd02b2bdfe2656c4371a5201d45cd7">
<name>Enhanced DEBUG 1.32a</name>
<file size="230198" time="2016-04-21 09:40:02" attr="0x20" md5="b7030251a5db56ea70445d5b618ed54b">DEBUG.ASM</file>
<file size="20816" time="2016-04-21 09:40:04" attr="0x20" md5="0b9614b461b8287e536bf77bf7e26329">DEBUG.COM</file>
<file size="27998" time="2016-04-12 11:44:02" attr="0x20" md5="42dca823821dc915dd94abedc5f19c65">DEBUG.TXT</file>
<file size="51176" time="2016-03-11 19:27:38" attr="0x20" md5="92522064c892fbce579f435c53858210">DEBUGTBL.INC</file>
<file size="26198" time="2016-04-21 09:40:04" attr="0x20" md5="98e9b7fec9e2b5c736fd558114c312db">DEBUGX.COM</file>
<file size="3130" time="2016-04-14 09:05:22" attr="0x20" md5="e83d1a16dfabe5ff5b5d1c287ba87362">DPMICL32.ASM</file>
<file size="863" time="2016-04-14 09:05:24" attr="0x20" md5="9e2a390bc4275e251dd85adfa05eb309">DPMICL32.EXE</file>
<file size="7908" time="2014-11-28 14:28:56" attr="0x20" md5="e082a5153ffa32bd99502bd72fa3d892">FPTOSTR.INC</file>
<file size="18800" time="2016-04-21 09:41:42" attr="0x20" md5="b487ba737d363a2d103698a215bfcbc1">HISTORY.TXT</file>
<file size="5740" time="2014-03-10 11:09:28" attr="0x20" md5="f72698d37aeb8d9d02e3f85f83b9eaa8">INSTR.KEY</file>
<file size="576" time="2014-01-25 10:59:50" attr="0x20" md5="f5d0dba9006b655d481f49f875a0bcf3">INSTR.ORD</file>
<file size="9309" time="2016-03-11 19:21:56" attr="0x20" md5="52286ecd1118ce06a9b745b09b8632a3">INSTR.SET</file>
<file size="35141" time="2016-04-03 13:52:33" attr="0x20" md5="84dcc94da3adb52b53ae4fa38fe49e5d">LICENSE</file>
<file size="1320" time="2014-02-04 19:26:56" attr="0x20" md5="4fbdcf8dac8140c70df90b440fa6fb1b">MAKE.BAT</file>
<file size="335" time="2014-01-20 14:34:58" attr="0x20" md5="cec3c20285c5adae18a601d6a339ec2a">MAKEC.BAT</file>
<file size="31542" time="2014-02-26 13:50:00" attr="0x20" md5="adbf4961a3e4ab7c8c4646e003cbb08b">MKTABLES.C</file>
<file size="7118" time="2016-04-15 21:44:30" attr="0x20" md5="1591e603c2b4587ff0f9e26e66448907">README.TXT</file>
<file size="48" time="2016-04-03 13:52:33" attr="0x20" md5="3d312a3c98b11e32ec8293b2095fae02">README.MD</file>
<file size="18800" time="2016-04-21 09:41:42" attr="0x20" md5="b487ba737d363a2d103698a215bfcbc1">HISTORY.TXT</file>
<file size="35141" time="2016-04-03 13:52:33" attr="0x20" md5="84dcc94da3adb52b53ae4fa38fe49e5d">LICENSE</file>
</disk>
</manifest>