Merge branch 'next-release'

This commit is contained in:
Jeff Parsons 2016-10-15 17:55:46 -07:00
commit c54a27e2e5
434 changed files with 18628 additions and 3770 deletions

View file

@ -0,0 +1,265 @@
@CHARSET "UTF-8";
/**
@author Jeff Parsons (@jeffpar)
@website http://www.pcjs.org/
@created 2013-05-05
@modified 2014-02-23
@license http://www.gnu.org/licenses/gpl.html
*/
body {
margin: 0;
background: #202020;
}
h1, h2 {
margin-top: 0;
color: #cccccc;
}
h1, h2, h3, h4 {
word-wrap: break-word;
}
h4 a {
color: #cccccc !important;
}
p {
line-height: 1.5em;
}
img {
max-width: 100%;
}
a img {
vertical-align: bottom;
}
pre, code {
color: #000000;
background-color: #cccccc;
font-family: Monaco, Consolas, "Lucida Console", monospace;
font-size: 12px;
}
pre {
margin: 1em 2em;
padding: 1em;
border-radius: 5px;
overflow: auto;
}
code {
padding: 1px;
}
pre a, code a {
color: #006400 !important;
}
.common {
width: 100%;
margin: 0 auto;
color: #cccccc;
}
.common a {
color: #7fc07f;
text-decoration: none;
}
.common hr {
border-color: #808080;
}
.common a:hover {
text-decoration: underline;
}
.common, .machine {
font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
font-size: 15px;
}
.machine {
margin: 15px;
overflow: hidden;
}
.c1pjs {
overflow: visible;
}
.machine-placeholder {
text-align: center;
font-weight: bold;
}
.common-top {
background: #202020;
font-size: small;
}
.common-top-left {
float: left;
width: 60%;
}
.common-top-left ul {
line-height: 1.5em;
list-style-type: none;
margin: 0;
padding: 1em 1em 1em 9px;
overflow: hidden;
}
.common-top-left ul li {
display: block;
float: left;
}
.common-top-left ul li a {
border-right: 1px solid #6f6f6f;
padding: 2px 6px 2px 6px;
}
.common-top-left ul li:last-child a {
border-right: none;
}
.common-top-right {
float: right;
width: 40%;
}
.common-top-right p {
float: right;
margin: 0;
padding: 1em;
}
.common-middle {
clear: both;
padding: 1px 1em 1px 1em;
background: #404040;
}
.common-sidebar {
float: left;
font-size: small;
width: 140px;
padding-bottom: 20px;
overflow: hidden;
white-space: nowrap;
word-wrap: break-word;
}
.common-list {
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
padding-left: 0;
}
.common-list li {
padding-bottom: 7px;
}
.common-list-data {
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
padding-left: 0;
}
.common-list-data li {
line-height: 1.5em;
}
.common-list-data-items, .common-list-data-subitems {
font-size: x-small;
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
padding-left: 2em;
}
.common-list-data-items li, .common-list-data-subitems li {
padding-bottom: 0;
}
.common-main {
margin-left: 150px;
}
.common-main blockquote {
text-align: justify;
}
.common-image-gallery {
margin: 0 auto;
text-align: center;
}
.common-image-gallery:after {
content: '';
display: block;
}
.common-image-frame {
display: inline-block;
margin: 8px;
text-align: center;
}
.common-image-link {
padding: 5px;
border: 1px solid black;
border-radius: 5px;
background-color: #FAEBD7;
}
.common-image-label {
font-size: x-small;
}
.common-bottom {
clear: both;
padding-top: 1em;
}
.common-bottom:after {
content: '';
display: block;
clear: both;
}
.common-reference {
float: left;
font-size: x-small;
}
.common-reference a {
text-decoration: none;
}
.common-copyright {
float: right;
font-size: x-small;
}
.common-copyright a {
text-decoration: none;
}
.md-list {
}
.md-list li {
line-height: 1.5em;
margin-bottom: 1em;
}
.md-list li p {
padding-left: 2em;
}
.md-list-compact {
}
.md-list-compact li {
margin-bottom: 0;
}
.md-list-none {
list-style-type: none;
padding-left: 2em;
}
.md-list-none li {
margin-bottom: 0;
}
@media screen and (max-width: 900px) {
.common-sidebar {
width: 100%;
white-space: normal;
}
.common-list {
padding-left: 0;
}
.common-list-data {
padding-left: 0;
}
.common-sidebar h4, .common-list li, .common-list-data li, .common-list-data-items li {
width: 130px;
float: left;
overflow: hidden;
vertical-align: top;
padding-right: 1em;
margin-top: 0;
}
.common-list-data-subitems {
display: none;
}
.common-main {
clear: both;
margin-left: 0;
padding-left: 0;
padding-right: 0;
}
.md-list-none {
padding-left: 1em;
}
}

View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY ne "&#8800;"> <!ENTITY le "&#8804;"> <!ENTITY ge "&#8805;">
<!ENTITY times "&#215;"> <!ENTITY sdot "&#8901;"> <!ENTITY divide "&#247;">
<!ENTITY copy "&#169;"> <!ENTITY Sigma "&#931;"> <!ENTITY sigma "&#963;"> <!ENTITY sum "&#8721;"> <!ENTITY lbrace "&#123;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template name="commonStyles">
<meta charset="utf-8"/>
<link rel="apple-touch-icon" sizes="57x57" href="/versions/icons/current/pc-icon-57.png"/>
<link rel="apple-touch-icon" sizes="72x72" href="/versions/icons/current/pc-icon-72.png"/>
<link rel="apple-touch-icon" sizes="76x76" href="/versions/icons/current/pc-icon-76.png"/>
<link rel="apple-touch-icon" sizes="114x114" href="/versions/icons/current/pc-icon-114.png"/>
<link rel="apple-touch-icon" sizes="120x120" href="/versions/icons/current/pc-icon-120.png"/>
<link rel="apple-touch-icon" sizes="144x144" href="/versions/icons/current/pc-icon-144.png"/>
<link rel="apple-touch-icon" sizes="152x152" href="/versions/icons/current/pc-icon-152.png"/>
<link rel="apple-touch-icon" sizes="180x180" href="/versions/icons/current/pc-icon-180.png"/>
<link rel="apple-touch-icon" sizes="192x192" href="/versions/icons/current/pc-icon-192.png"/>
<link rel="apple-touch-icon" href="/versions/icons/current/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="192x192" href="/versions/icons/current/pc-icon-192.png"/>
<link rel="shortcut icon" type="image/x-icon" href="/versions/icons/current/favicon.ico"/>
<link rel="stylesheet" type="text/css" href="/versions/pc8080/1.30.1/common.css"/>
</xsl:template>
<xsl:template name="commonTop">
<div class="common-top">
<div class="common-top-left">
<ul>
<li><a href="/">PCjs</a></li>
<li><a href="/apps/pcx86/">Demos</a></li>
<li><a href="/devices/">Devices</a></li>
<li><a href="/disks/">Disks</a></li>
<li><a href="/docs/">Docs</a></li>
<li><a href="/pubs/">Pubs</a></li>
<li><a href="/docs/about/">About</a></li>
</ul>
</div>
<div class="common-top-right">
<p>Powered by JavaScript and <a href="http://github.com/jeffpar/pcjs" target="_blank">GitHub</a></p>
</div>
</div>
</xsl:template>
<xsl:template name="commonBottom">
<div class="common-bottom">
<p class="common-reference"></p>
<p class="common-copyright">
<span class="common-copyright"><a href="http://www.pcjs.org/">pcjs.org</a> website © 2012-2016 by <a href="http://twitter.com/jeffpar">@jeffpar</a></span><br/>
<span class="common-copyright"><a href="http://github.com/jeffpar/pcjs">PCjs Project</a> released under <a href="http://gnu.org/licenses/gpl.html">GPL version 3 or later</a></span>
</p>
</div>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,173 @@
@CHARSET "UTF-8";
*:not(input,textarea) {
-webkit-user-select: none;
}
.pcjs-embed {
}
.pcjs-embed:after {
clear:both;
}
.pcjs-machine {
}
.pcjs-name, .pcjs-menu {
clear: both;
font-weight: bold;
padding-bottom: 4px;
}
.pcjs-menu {
float: left;
}
.pcjs-canvas {
width: 100%;
height: auto;
}
.pcjs-container {
color: #000000;
position: relative;
}
.pcjs-label {
font-size: small;
line-height: 20px;
vertical-align: middle;
float: left;
font-family: Monaco, "Lucida Console", monospace;
}
.pcjs-controls textarea {
font-family: Monaco, "Lucida Console", monospace;
font-size: x-small;
}
.pcjs-fieldset {
border: none;
margin: 0;
padding: 0;
}
.pcjs-flag {
font-family: Monaco, "Lucida Console", monospace;
font-size: small;
text-align: center;
line-height: 20px;
vertical-align: middle;
}
.pcjs-register {
font-family: Monaco, "Lucida Console", monospace;
font-size: small;
text-align: center;
line-height: 20px;
vertical-align: middle;
border: 1px solid black;
}
.pcjs-switches {
float: left;
}
.pcjs-bitBucket {
float: left;
width: 19px;
height: 38px;
}
.pcjs-bitCell {
float: left;
width: 19px;
height: 19px;
margin-right: -1px;
margin-bottom: -1px;
border: 1px solid black;
text-align: center;
line-height: 19px;
}
.pcjs-bitCellLeft {
border-left: 1px solid black;
}
.pcjs-bitLabel {
font-size: xx-small;
text-align: center;
}
.pcjs-description, .pcjs-status {
font-size: x-small;
line-height: 2em;
}
.pcjs-key {
border: 1px solid black;
font-size: x-small;
text-align: center;
position: absolute;
height: 34px;
line-height: 34px;
background-color: #ffffff;
}
.pcjs-panel-group {
color: #ffffff;
background-color: #404040;
}
.pcjs-tripled {
padding: 1px;
}
.pcjs-tripled-label {
text-align: right;
padding: 8px;
}
.pcjs-ledpad {
line-height: 32px;
background-color: #000000;
}
.pcjs-led {
float: left;
width: 8px;
height: 8px;
margin: 4px;
border: 1px solid black;
text-align: center;
vertical-align: middle;
background-color: #000000;
}
.pcjs-rled {
width: 8px;
height: 8px;
margin: 4px;
border: 1px solid black;
border-radius: 50%;
text-align: center;
vertical-align: middle;
background-color: #ff0000;
}
.pcjs-screen {
clear: both;
height: auto;
position: relative;
line-height: 0;
}
.pcjs-screen textarea {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
opacity: 0;
border: 0;
padding: 0;
line-height: 0;
}
.pcjs-reference {
float: left;
font-size: x-small;
}
.pcjs-reference a {
text-decoration: none;
}
.pcjs-copyright {
float: right;
font-size: x-small;
}
.pcjs-copyright a {
text-decoration: none;
}
@media screen and (max-width: 900px) {
.pcjs-textarea {
width: 100% !important;
}
.pcjs-registers {
width: 100% !important;
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,162 @@
@CHARSET "UTF-8";
.page {
margin: 2% 2%;
padding: 2% 2%;
min-width: 30em;
overflow: auto;
font-size: large;
font-family: Helvetica, Arial, sans-serif;
background: #303030;
color: #ccc;
}
.page-header {
}
.page-header-title {
text-align: center;
}
.page a {
color: #7fc07f;
text-decoration: none;
}
a.footlink, a.paralink {
text-decoration: none;
}
a.footlink:link, a.paralink:link {
color: blue;
}
a.footlink:visited, a.paralink:visited {
color: blue;
}
.galleryitem {
float: left;
width: 200px;
}
.item {
float: left;
width: 2em;
text-indent: 1em;
}
.list {
margin-left: 3em;
text-indent: 0;
text-align: justify;
}
ul {
list-style: none;
}
div.pnumber {
float: left;
width: 2em;
text-indent: 1em;
}
div.pitem {
margin-left: 10em;
}
p.indent, .justified p {
text-indent: 2em;
text-align: justify;
line-height: 1.5em;
}
p.noindent {
text-indent: 0;
text-align: justify;
}
p.center, .center {
text-align: center;
}
li.para {
margin-top: 1em;
margin-bottom: 1em;
}
.left {
text-align: left;
}
.right {
text-align: right;
}
blockquote.tag {
font-size: small;
font-family: Monaco, Fixed, monospace;
margin-top: 0;
margin-bottom: 0;
}
.blockquote {
padding-left: 1em;
text-indent: 0;
text-align: justify;
}
.italics {
font-style: italic;
}
.medium {
font-size: medium;
}
.small {
font-size: x-small;
}
.smallcaps {
font-variant: small-caps;
}
.strike {
text-decoration: line-through;
}
.summation, .bracelist {
display: inline-block;
position: relative;
vertical-align: middle;
text-align: center;
margin-bottom: 0.5ex;
text-indent: 0;
}
.bracelist-symbol {
font-size: 3em;
vertical-align: -40%;
}
.summation .summation-lower, .summation .summation-upper, .bracelist-item {
display: block;
font-size: 75%;
text-align: center;
}
.summation .summation-upper {
margin-bottom: 0;
margin-left: 0.8ex;
font-style: italic;
}
.summation .summation-lower{
margin-bottom: -0.6ex;
font-style: italic;
}
.summation .summation-symbol {
font-size: 2em;
}
p sup {
vertical-align: baseline;
position: relative;
bottom: .5em;
font-size: small;
}
p sub {
vertical-align: baseline;
position: relative;
bottom: -.5em;
font-size: small;
}
.footnote {
font-size: medium;
text-indent: 1em;
text-align: justify;
margin-top: .5em;
}
.image-right {
float: right;
margin-left: 1em;
margin-top: 1em;
margin-bottom: 1em;
}
.image-caption {
font-size: small;
text-align: center;
}

View file

@ -0,0 +1,452 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY ne "&#8800;"> <!ENTITY le "&#8804;"> <!ENTITY ge "&#8805;">
<!ENTITY times "&#215;"> <!ENTITY sdot "&#8901;"> <!ENTITY divide "&#247;">
<!ENTITY copy "&#169;"> <!ENTITY Sigma "&#931;"> <!ENTITY sigma "&#963;"> <!ENTITY sum "&#8721;"> <!ENTITY lbrace "&#123;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template name="documentStyles">
<link rel="stylesheet" type="text/css" href="/versions/pc8080/1.30.1/document.css"/>
</xsl:template>
<xsl:template match="title">
<h1><xsl:apply-templates/></h1>
</xsl:template>
<xsl:template name="p">
<xsl:if test="@id">
<a name="{@id}"></a>
</xsl:if>
<xsl:choose>
<xsl:when test="not(@class)">
<p><xsl:apply-templates/></p>
</xsl:when>
<xsl:otherwise>
<p class="{@class}"><xsl:apply-templates/></p>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="p">
<xsl:call-template name="p"/>
</xsl:template>
<xsl:template match="br">
<br/>
</xsl:template>
<xsl:template match="p[@number]">
<div class="pnumber">
<xsl:choose>
<xsl:when test="not(@number) or @number = ''">&nbsp;</xsl:when>
<xsl:otherwise><xsl:value-of select="@number"/></xsl:otherwise>
</xsl:choose>
</div>
<div class="pitem">
<xsl:call-template name="p"/>
</div>
</xsl:template>
<xsl:template match="span">
<xsl:choose>
<xsl:when test="not(@class)">
<span><xsl:apply-templates/></span>
</xsl:when>
<xsl:when test="@class = 'italics'">
<em><xsl:apply-templates/></em>
</xsl:when>
<xsl:otherwise>
<span class="{@class}"><xsl:apply-templates/></span>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="h2">
<h2><xsl:apply-templates/></h2>
</xsl:template>
<xsl:template match="h3">
<h3><xsl:apply-templates/></h3>
</xsl:template>
<xsl:template match="h4">
<h4><xsl:apply-templates/></h4>
</xsl:template>
<xsl:template match="h5">
<h5><xsl:apply-templates/></h5>
</xsl:template>
<xsl:template match="h6">
<h6><xsl:apply-templates/></h6>
</xsl:template>
<xsl:template match="em">
<em><xsl:apply-templates/></em>
</xsl:template>
<xsl:template match="strong">
<strong><xsl:apply-templates/></strong>
</xsl:template>
<xsl:template match="a">
<a href="{@href}" target="{@target}"><xsl:apply-templates/></a>
</xsl:template>
<xsl:template match="ol">
<blockquote><ol><xsl:apply-templates/></ol></blockquote>
</xsl:template>
<xsl:template match="ul">
<blockquote><ul><xsl:apply-templates/></ul></blockquote>
</xsl:template>
<xsl:template match="li">
<li><xsl:apply-templates/></li>
</xsl:template>
<xsl:template match="img">
<div><img src="{@src}" alt="image"/></div>
</xsl:template>
<xsl:template match="pre">
<pre><xsl:apply-templates/></pre>
</xsl:template>
<xsl:template match="figure">
<xsl:choose>
<xsl:when test="@pos">
<div class="{@pos}"><img src="{@ref}" alt="{.}"/><br/><xsl:value-of select="."/></div>
</xsl:when>
<xsl:otherwise>
<div><img src="{@ref}" alt="{.}"/><br/><xsl:value-of select="."/></div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="sub">
<sub><xsl:apply-templates/></sub>
</xsl:template>
<xsl:template match="sup">
<sup><xsl:apply-templates/></sup>
</xsl:template>
<xsl:template match="lt">&lt;</xsl:template>
<xsl:template match="gt">&gt;</xsl:template>
<xsl:template match="ne">&ne;</xsl:template>
<xsl:template match="le">&le;</xsl:template>
<xsl:template match="ge">&ge;</xsl:template>
<xsl:template match="times">&times;</xsl:template>
<xsl:template match="dot">&sdot;</xsl:template>
<xsl:template match="divide">&divide;</xsl:template>
<xsl:template match="sigma">&sigma;</xsl:template>
<xsl:template match="summation">
<span class="summation">
<span class="summation-upper"><xsl:value-of select="@upper"/></span>
<span class="summation-symbol">&sum;</span>
<span class="summation-lower"><xsl:value-of select="@lower"/></span>
</span>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="bracelist">
<span class="bracelist-symbol">&lbrace;</span>
<span class="bracelist">
<xsl:for-each select="item">
<span class="bracelist-item"><xsl:apply-templates/></span>
</xsl:for-each>
</span>
</xsl:template>
<xsl:template match="footlink">
<xsl:variable name="docID" select="/document/@id"/>
<a class="footlink" id="fn{$docID}_ref{@n}" href="#fn{$docID}_{@n}"><sup><xsl:if test="@quoted"><xsl:text>[</xsl:text></xsl:if><xsl:value-of select="@n"/><xsl:if test="@quoted"><xsl:text>]</xsl:text></xsl:if></sup></a>
</xsl:template>
<xsl:template match="footnote">
<xsl:variable name="docID" select="/document/@id"/>
<div class="footnote"><a id="fn{$docID}_{@n}" href="#fn{$docID}_ref{@n}"><sup><xsl:value-of select="@n"/></sup></a><xsl:text> </xsl:text>
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template name="authors">
<xsl:for-each select="author"><xsl:if test="position() != 1"><xsl:text>, </xsl:text></xsl:if><xsl:if test="position() != 1 and position() = last()"><xsl:text>and </xsl:text></xsl:if><xsl:value-of select="."/></xsl:for-each>
</xsl:template>
<xsl:template name="formatDate">
<xsl:param name="date"/>
<xsl:param name="format">MDY</xsl:param>
<xsl:variable name="year">
<xsl:value-of select="substring-before($date,'-')"/>
</xsl:variable>
<xsl:variable name="mon-day">
<xsl:value-of select="substring-after($date,'-')"/>
</xsl:variable>
<xsl:variable name="mon">
<xsl:value-of select="substring-before($mon-day,'-')"/>
</xsl:variable>
<xsl:variable name="full-day">
<xsl:value-of select="substring-after($mon-day,'-')"/>
</xsl:variable>
<xsl:variable name="day">
<xsl:choose>
<xsl:when test="substring($full-day,1,1) = '0'"><xsl:value-of select="substring($full-day,2)"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$full-day"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$mon = '01'">January </xsl:when>
<xsl:when test="$mon = '02'">February </xsl:when>
<xsl:when test="$mon = '03'">March </xsl:when>
<xsl:when test="$mon = '04'">April </xsl:when>
<xsl:when test="$mon = '05'">May </xsl:when>
<xsl:when test="$mon = '06'">June </xsl:when>
<xsl:when test="$mon = '07'">July </xsl:when>
<xsl:when test="$mon = '08'">August </xsl:when>
<xsl:when test="$mon = '09'">September </xsl:when>
<xsl:when test="$mon = '10'">October </xsl:when>
<xsl:when test="$mon = '11'">November </xsl:when>
<xsl:when test="$mon = '12'">December </xsl:when>
<xsl:when test="$mon = '00'"/> </xsl:choose>
<xsl:if test="$day != '0' and $format = 'MDY'">
<xsl:value-of select="$day"/><xsl:text>, </xsl:text>
</xsl:if>
<xsl:value-of select="$year"/>
</xsl:template>
<xsl:template match="gallery">
<h2><xsl:value-of select="description"/></h2>
<div class="gallery">
<xsl:apply-templates select="item" mode="gallery"/>
</div>
<div style="clear:both;"></div>
</xsl:template>
<xsl:template match="item" mode="gallery">
<div class="galleryitem">
<a href="{@ref}"><img src="/versions/images/current/pdf-192.jpg" alt="{.}"/></a><br/>
<div style="font-size:small; text-align:center;"><xsl:value-of select="."/></div>
</div>
</xsl:template>
<xsl:template match="list[@type = 'timeline']">
<xsl:if test="not(description)">
<h2>Timeline</h2>
</xsl:if>
<xsl:if test="description">
<h2><xsl:value-of select="description"/></h2>
</xsl:if>
<blockquote>
<xsl:apply-templates select="item" mode="timeline"/>
</blockquote>
</xsl:template>
<xsl:template match="item" mode="timeline">
<xsl:if test="@ref">
<xsl:variable name="documentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($documentFile)/document" mode="withDate">
<xsl:with-param name="itemRef" select="@ref"/>
</xsl:apply-templates>
</xsl:if>
<xsl:if test="not(@ref)">
<h3><xsl:call-template name="formatDate"><xsl:with-param name="date" select="@date"/></xsl:call-template></h3>
<blockquote>
<xsl:value-of select="."/>
</blockquote>
</xsl:if>
</xsl:template>
<xsl:template match="list[@type = 'people']">
<xsl:if test="not(description)">
<h2>People</h2>
</xsl:if>
<xsl:if test="description">
<h2><xsl:value-of select="description"/></h2>
</xsl:if>
<blockquote>
<xsl:apply-templates select="item" mode="people"/>
</blockquote>
</xsl:template>
<xsl:template match="item" mode="people">
<h3><xsl:value-of select="name"/></h3>
<xsl:apply-templates select="list"/>
</xsl:template>
<xsl:template match="list[@type = 'documents']">
<xsl:if test="description"><h2><xsl:value-of select="description"/></h2></xsl:if>
<ul>
<xsl:apply-templates select="item" mode="document"/>
</ul>
</xsl:template>
<xsl:template match="item" mode="document">
<xsl:variable name="documentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
<xsl:apply-templates select="document($documentFile)/document">
<xsl:with-param name="itemRef" select="@ref"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="document">
<xsl:param name="itemRef"/>
<li>
<xsl:call-template name="documentSummary"><xsl:with-param name="itemRef" select="$itemRef"/></xsl:call-template>
</li>
</xsl:template>
<xsl:template match="document" mode="withDate">
<xsl:param name="itemRef"/>
<h3><xsl:call-template name="formatDate"><xsl:with-param name="date" select="date"/><xsl:with-param name="format" select="MY"/></xsl:call-template></h3>
<blockquote>
<p>
<xsl:call-template name="documentSummary"><xsl:with-param name="itemRef" select="$itemRef"/><xsl:with-param name="multiLine" select="'true'"/></xsl:call-template>
</p>
</blockquote>
</xsl:template>
<xsl:template name="documentSummary">
<xsl:param name="itemRef"/>
<xsl:param name="multiLine">false</xsl:param>
<xsl:choose>
<xsl:when test="content|include">
<a href="{$itemRef}"><xsl:value-of select="title"/></a>
<xsl:if test="@ref">
<span class="small">
<xsl:text> [</xsl:text><a href="{@ref}">Original</a><xsl:text>]</xsl:text>
</span>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<a href="{$itemRef}"><xsl:value-of select="title"/></a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="copy">
<span class="small">
<xsl:text> [</xsl:text><a href="{copy/@ref}"><xsl:value-of select="copy"/></a><xsl:text>]</xsl:text>
</span>
</xsl:if>
<xsl:if test="author"><xsl:if test="$multiLine = 'true'"><br/></xsl:if><span class="medium"><xsl:text> by </xsl:text><xsl:call-template name="authors"/></span></xsl:if>
<xsl:if test="source">
<span class="small">
<br/>
<xsl:text>[Source: </xsl:text>
<xsl:if test="site">
<a href="{site/@url}"><xsl:value-of select="site"/></a>
</xsl:if>
<xsl:if test="not(site)">
<a href="{source/@url}"><xsl:value-of select="source"/></a>
</xsl:if>
<xsl:text>]</xsl:text>
</span>
</xsl:if>
</xsl:template>
<xsl:template match="list[@type = 'resources']">
<xsl:if test="not(description)">
<h2>Resources</h2>
</xsl:if>
<xsl:if test="description">
<h2><xsl:value-of select="description"/></h2>
</xsl:if>
<blockquote>
<xsl:apply-templates select="item" mode="resources"/>
</blockquote>
</xsl:template>
<xsl:template match="item" mode="resources">
<h3><xsl:value-of select="description"/></h3>
<xsl:apply-templates select="list"/>
</xsl:template>
<xsl:template match="list[@type = 'links']">
<xsl:if test="description">
<h4><xsl:value-of select="description"/></h4>
</xsl:if>
<ul>
<xsl:apply-templates select="item" mode="links"/>
</ul>
</xsl:template>
<xsl:template match="item" mode="links">
<li><a href="{@ref}"><xsl:value-of select="."/></a></li>
</xsl:template>
<xsl:template match="list[not(@type)]">
<xsl:if test="description">
<h2><xsl:value-of select="description"/></h2>
</xsl:if>
<blockquote>
<xsl:apply-templates select="item|tag" mode="outer"/>
</blockquote>
</xsl:template>
<xsl:template match="item" mode="outer">
<xsl:if test="description">
<h3><xsl:value-of select="description"/></h3>
</xsl:if>
<xsl:apply-templates select="list|item|tag" mode="inner"/>
</xsl:template>
<xsl:template match="list" mode="inner">
<xsl:if test="description">
<h4><xsl:value-of select="description"/></h4>
</xsl:if>
<ul>
<xsl:apply-templates select="list|item|para|tag" mode="inner"/>
</ul>
</xsl:template>
<xsl:template name="innerlist">
<xsl:if test="description">
<xsl:value-of select="description"/>
</xsl:if>
<ul>
<xsl:apply-templates select="list|item|para|tag" mode="inner"/>
</ul>
</xsl:template>
<xsl:template match="item" mode="inner">
<xsl:choose>
<xsl:when test="@ref">
<li><a href="{@ref}"><xsl:apply-templates/></a></li>
</xsl:when>
<xsl:when test="description">
<li><xsl:call-template name="innerlist"/></li>
</xsl:when>
<xsl:otherwise>
<li><xsl:apply-templates/></li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="para" mode="inner">
<li class="para"><xsl:apply-templates/></li>
</xsl:template>
<xsl:template match="tag" mode="outer">
<xsl:call-template name="tag"/>
</xsl:template>
<xsl:template match="tag" mode="inner">
<xsl:call-template name="tag"/>
</xsl:template>
<xsl:template name="tag">
<blockquote class="tag">
<xsl:text>&lt;</xsl:text><xsl:if test="@href"><a href="{@href}"><xsl:value-of select="@name"/></a></xsl:if><xsl:if test="not(@href)"><xsl:value-of select="@name"/></xsl:if><xsl:for-each select="attr"><xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:text>="</xsl:text><xsl:value-of select="@value"/><xsl:text>"</xsl:text></xsl:for-each>
<xsl:choose>
<xsl:when test="tag"><xsl:text>&gt;</xsl:text><xsl:apply-templates mode="inner"/><xsl:text>&lt;/</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></xsl:when>
<xsl:when test="normalize-space(.) != ''"><xsl:text>&gt;</xsl:text><xsl:value-of select="."/><xsl:text>&lt;/</xsl:text><xsl:value-of select="@name"/><xsl:text>&gt;</xsl:text></xsl:when>
<xsl:otherwise><xsl:text>/&gt;</xsl:text></xsl:otherwise>
</xsl:choose>
</blockquote>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY sect "&#167;"> <!ENTITY copy "&#169;"> <!ENTITY para "&#182;"> <!ENTITY ndash "&#8211;"> <!ENTITY mdash "&#8212;">
<!ENTITY lsquo "&#8216;"> <!ENTITY rsquo "&#8217;"> <!ENTITY ldquo "&#8220;"> <!ENTITY rdquo "&#8221;"> <!ENTITY dagger "&#8224;"> <!ENTITY Dagger "&#8225;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-system="about:legacy-compat" method="html"/>
<xsl:include href="/versions/pc8080/1.30.1/common.xsl"/>
<xsl:include href="/versions/pc8080/1.30.1/components.xsl"/>
<xsl:template match="/machine">
<html lang="en">
<head>
<title><xsl:value-of select="$SITEHOST"/></title>
<xsl:call-template name="commonStyles"/>
<xsl:call-template name="componentStyles"/>
</head>
<body>
<div class="common">
<xsl:call-template name="commonTop"/>
<div class="common-middle">
<p></p>
<div id="{@id}" class="machine {@class}js">
<xsl:call-template name="component">
<xsl:with-param name="machine" select="@id"/>
<xsl:with-param name="component" select="'machine'"/>
<xsl:with-param name="class"><xsl:value-of select="@class"/>js</xsl:with-param>
<xsl:with-param name="parms"><xsl:if test="@parms">,<xsl:value-of select="@parms"/></xsl:if></xsl:with-param>
</xsl:call-template>
</div>
</div>
<xsl:call-template name="commonBottom"/>
</div>
<xsl:call-template name="componentScripts">
<xsl:with-param name="component">
<xsl:choose>
<xsl:when test="debugger"><xsl:value-of select="@class"/>-dbg</xsl:when>
<xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,247 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2014-04-10" modified="2014-04-10" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY sect "&#167;"> <!ENTITY copy "&#169;"> <!ENTITY para "&#182;"> <!ENTITY ndash "&#8211;"> <!ENTITY mdash "&#8212;">
<!ENTITY lsquo "&#8216;"> <!ENTITY rsquo "&#8217;"> <!ENTITY ldquo "&#8220;"> <!ENTITY rdquo "&#8221;"> <!ENTITY dagger "&#8224;"> <!ENTITY Dagger "&#8225;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-system="about:legacy-compat" method="html"/>
<xsl:include href="/versions/pc8080/1.30.1/common.xsl"/>
<xsl:include href="/versions/pc8080/1.30.1/components.xsl"/>
<xsl:template match="/manifest[@type = 'document']">
<html lang="en">
<head>
<title><xsl:value-of select="$SITEHOST"/></title>
<xsl:call-template name="commonStyles"/>
<xsl:call-template name="componentStyles"/>
</head>
<body>
<div class="common">
<xsl:call-template name="commonTop"/>
<div class="common-middle">
<h4>Document Manifest</h4>
<div class="common-sidebar">
<ul class="common-list-data">
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Title'"/>
<xsl:with-param name="node" select="title"/>
<xsl:with-param name="default">None</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Version'"/>
<xsl:with-param name="node" select="version"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Source'"/>
<xsl:with-param name="node" select="source"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Documents'"/>
<xsl:with-param name="node" select="document"/>
<xsl:with-param name="default"><xsl:value-of select="title"/> <xsl:if test="version != ''"><xsl:text> </xsl:text><xsl:value-of select="version"/></xsl:if></xsl:with-param>
</xsl:call-template>
</ul>
</div>
<div class="common-main">
<p><xsl:value-of select="desc"/></p>
<xsl:call-template name="commonBottom"/>
</div>
</div>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="/manifest[@type = 'software' or not(@type)]">
<xsl:variable name="machineClass">
<xsl:choose>
<xsl:when test="machine/@class"><xsl:value-of select="machine/@class"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$APPCLASS"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<html lang="en">
<head>
<title><xsl:value-of select="$SITEHOST"/></title>
<xsl:call-template name="commonStyles"/>
<xsl:call-template name="componentStyles"/>
</head>
<body>
<div class="common">
<xsl:call-template name="commonTop"/>
<div class="common-middle">
<h4>Software Manifest</h4>
<div class="common-sidebar">
<ul class="common-list-data">
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Title'"/>
<xsl:with-param name="node" select="title"/>
<xsl:with-param name="default">None</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Version'"/>
<xsl:with-param name="node" select="version"/>
<xsl:with-param name="default">Unknown</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Type'"/>
<xsl:with-param name="node" select="type"/>
<xsl:with-param name="default">None</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Category'"/>
<xsl:with-param name="node" select="category"/>
<xsl:with-param name="default">None</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Created'"/>
<xsl:with-param name="node" select="creationDate"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Creators'"/>
<xsl:with-param name="node" select="creator"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label"><xsl:if test="creationDate">Updated</xsl:if><xsl:if test="not(creationDate)">Released</xsl:if></xsl:with-param>
<xsl:with-param name="node" select="releaseDate"/>
<xsl:with-param name="default">Unknown</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Company'"/>
<xsl:with-param name="node" select="company"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Authors'"/>
<xsl:with-param name="node" select="author"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Contributors'"/>
<xsl:with-param name="node" select="contributor"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Publisher'"/>
<xsl:with-param name="node" select="publisher"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'License'"/>
<xsl:with-param name="node" select="license"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Source'"/>
<xsl:with-param name="node" select="source"/>
<xsl:with-param name="default" select="''"/>
</xsl:call-template>
<xsl:call-template name="listItem">
<xsl:with-param name="label" select="'Disks'"/>
<xsl:with-param name="node" select="disk"/>
<xsl:with-param name="default"><xsl:value-of select="title"/> <xsl:if test="version != ''"><xsl:text> </xsl:text><xsl:value-of select="version"/></xsl:if></xsl:with-param>
</xsl:call-template>
</ul>
</div>
<div class="common-main">
<xsl:for-each select="machine[not(@type) or @type = 'default']">
<xsl:call-template name="machine">
<xsl:with-param name="href" select="@href"/>
<xsl:with-param name="state" select="@state"/>
</xsl:call-template>
</xsl:for-each>
<xsl:if test="not(machine[not(@type) or @type = 'default'])">
<p>No default machine specified for '<xsl:value-of select="title"/>' in manifest.xml</p>
</xsl:if>
<xsl:call-template name="commonBottom"/>
</div>
</div>
</div>
<xsl:call-template name="componentScripts">
<xsl:with-param name="component">
<xsl:choose>
<xsl:when test="machine/@debugger"><xsl:value-of select="$machineClass"/>-dbg</xsl:when>
<xsl:otherwise><xsl:value-of select="$machineClass"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</body>
</html>
</xsl:template>
<xsl:template name="listItem">
<xsl:param name="label"/>
<xsl:param name="node"/>
<xsl:param name="default">Unknown</xsl:param>
<xsl:if test="$node != '' or $default != ''">
<li><xsl:value-of select="$label"/>
<ul class="common-list-data-items">
<xsl:for-each select="$node">
<xsl:variable name="desc">
<xsl:choose>
<xsl:when test="desc"><xsl:value-of select="desc"/></xsl:when>
<xsl:when test="org"><xsl:value-of select="org"/></xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<li title="{$desc}">
<xsl:variable name="value">
<xsl:choose>
<xsl:when test="name">
<xsl:value-of select="name"/>
</xsl:when>
<xsl:when test="normalize-space(./text()) != ''">
<xsl:value-of select="normalize-space(./text())"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$default"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="href">
<xsl:if test="@href"><xsl:value-of select="@href"/></xsl:if>
</xsl:variable>
<xsl:choose>
<xsl:when test="$href != ''">
<a href="{$href}"><xsl:value-of select="$value"/></a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$value"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="page">
<ul class="common-list-data-subitems">
<xsl:for-each select="page">
<li>
<xsl:if test="@href">
<a href="{$href}{@href}"><xsl:value-of select="."/></a>
</xsl:if>
<xsl:if test="not(@href)">
<xsl:value-of select="."/>
</xsl:if>
</li>
</xsl:for-each>
</ul>
</xsl:if>
</li>
</xsl:for-each>
<xsl:if test="not($node)">
<xsl:if test="@href">
<a href="{@href}"><xsl:value-of select="$default"/></a>
</xsl:if>
<xsl:if test="not(@href)">
<xsl:value-of select="$default"/>
</xsl:if>
</xsl:if>
</ul>
</li>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY sect "&#167;"> <!ENTITY copy "&#169;"> <!ENTITY para "&#182;"> <!ENTITY ndash "&#8211;"> <!ENTITY mdash "&#8212;">
<!ENTITY lsquo "&#8216;"> <!ENTITY rsquo "&#8217;"> <!ENTITY ldquo "&#8220;"> <!ENTITY rdquo "&#8221;"> <!ENTITY dagger "&#8224;"> <!ENTITY Dagger "&#8225;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-system="about:legacy-compat" method="html"/>
<xsl:include href="/versions/pc8080/1.30.1/common.xsl"/>
<xsl:include href="/versions/pc8080/1.30.1/document.xsl"/>
<xsl:include href="/versions/pc8080/1.30.1/components.xsl"/>
<xsl:template match="/outline">
<xsl:variable name="machineClass">
<xsl:choose>
<xsl:when test="machine/@class"><xsl:value-of select="machine/@class"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$MACHINECLASS"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<html lang="en">
<head>
<title><xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/></title>
<xsl:call-template name="commonStyles"/>
<xsl:call-template name="documentStyles"/>
<xsl:call-template name="componentStyles"/>
</head>
<body>
<div class="common">
<div class="page justified">
<xsl:apply-templates/>
</div>
</div>
<xsl:call-template name="componentScripts">
<xsl:with-param name="component">
<xsl:choose>
<xsl:when test="debugger"><xsl:value-of select="$machineClass"/>-dbg</xsl:when>
<xsl:otherwise><xsl:value-of select="$machineClass"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,282 @@
(function(){/*
http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/memory.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpu.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpustate.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpuops.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/chipset.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/rom.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/ram.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/serialport.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2016
*/
var l,m={me:1,ne:3,oe:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ub:65,Hc:66,Jc:67,Xb:68,E:69,Mc:70,Nc:71,Oc:72,Pc:73,Wc:74,Xc:75,Zb:76,dd:77,ed:78,gd:79,hd:80,Q:81,od:82,rd:83,xd:84,yd:85,zd:86,Ad:87,Cd:88,Dd:89,Ed:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Ve:97,We:98,Xe:99,d:100,e:101,Ye:102,Ze:103,$e:104,af:105,bf:106,k:107,cf:108,
df:109,n:110,ef:111,p:112,q:113,r:114,ff:115,t:116,hf:117,jf:118,kf:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126};
function aa(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==e&&
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function ba(a,b,c){var d="";b?11<b&&(b=11):b=a&-65536?11:6;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;)d=String.fromCharCode((a&7)+48)+d,a>>=3;return(c?"0o":"")+d}function t(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function ca(a){return t(a,2,!0)}
function u(a){return t(a,4,!0)}function ea(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function fa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ha(){var a=ja();return-1!==a.indexOf("pcjs.org",a.length-8)}var ka={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function la(a){return a.replace(/[&<>"']/g,function(a){return ka[a]})}
function ma(a,b){return(a+" ").slice(0,b)}function na(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var oa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};
function pa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}var qa=Date.now||function(){return+new Date};function ra(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function sa(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
function va(a,b,c,d){var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,f,e))});if(b&&"object"==
typeof b){var k="",n;for(n in b)b.hasOwnProperty(n)&&(k&&(k+="&"),k+=n+"="+encodeURIComponent(b[n]));k=k.replace(/%20/g,"+");h.open("POST",a,!!c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,!!c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}function ja(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function wa(){return window?window.navigator.userAgent:""}function w(a){window&&window.alert(a)}function xa(a){var b=!1;window&&(b=window.confirm(a));return b}var ya=null;function za(){if(null==ya){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ya=a}return ya}
function Aa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Ba(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ca(a){if(window){var b=wa();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Da(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Ea(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Ia={init:[],show:[],exit:[]},Ja=!1,Ka=!1,La=!0;function Ma(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Na(a){Ia.init.push(a)}
function Oa(a){if(La)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Pa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Qa(a){!La&&a?(La=!0,Ja&&Sa("init"),Ka&&Sa("show")):La=a}function Sa(a){Ia[a]&&Oa(Ia[a])}Ma("onload",function(){Ja=!0;Oa(Ia.init)});Ma("onpageshow",function(){Ka=!0;Oa(Ia.show)});Ma(Ca("Opera")||Ca("iOS")?"onunload":"onbeforeunload",function(){Oa(Ia.exit)});
function z(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.ec=b.comment;this.Ld=b;b=this.id.indexOf(".");0>b?this.cb=this.id:(this.Bb=this.id.substr(0,b),this.cb=this.id.substr(b+1));this[a]=c;this.C={ready:!1,sb:!1,Kb:!1,xa:!1,error:!1};this.Eb=null;this.C.error=!1;this.N={};this.H=null;this.ta=d||0;Ta.push(this)}var Ua=void 0,Va={};
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Ya=/\+/g,Za=/([^&=]+)=?([^&]*)/g;Wa=Za.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Ya," "))]=decodeURIComponent(Wa[2].replace(Ya," "))}function $a(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
function A(a,b){b||(b=z);a.prototype=$a(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var ab=window.PCjs.Machines||(window.PCjs.Machines={}),Ta=window.PCjs.Components||(window.PCjs.Components=[])}else ab={},Ta=[];function bb(a,b,c){ab[a]&&b&&(ab[a][b]=c)}function Pa(a,b,c){b||w((c?c+": ":"")+a)}
function cb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ta.length;b++){var d=Ta[b];a&&d.id.indexOf(a)||c.push(d)}return c}function db(a){if(void 0!==a){var b;for(b=0;b<Ta.length;b++)if(Ta[b].id===a)return Ta[b]}return null}function eb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<Ta.length;d++)if(c)c==Ta[d]&&(c=null);else if(!(a!=Ta[d].type||b&&Ta[d].id.indexOf(b)))return Ta[d]}return null}
function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){w(c.message+" ("+a+")")}return b}function fb(a,b){b=D(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),k=0;k<h.length;k++)switch(g=h[k],g){case "pc8080-binding":(g=B(f))&&g.binding&&a.pa(g.type,g.binding,f,g.value),k=h.length}}}}
function D(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
z.prototype={constructor:z,parent:null,toString:function(){return this.name?this.name:this.id||this.type},pa:function(a,b,c){switch(b){case "clear":return this.N[b]||(this.N[b]=c,c.onclick=function(a){return function(){a.N.print&&(a.N.print.value="")}}(this)),!0;case "print":return this.N[b]||(this.Ga=this.N[b]=c,c.value="",this.g=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
this.ka=function(a){this.g(a,this.cb)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.cb+": "+a)},ka:function(a,b,c){Pa(a,b,c||this.type)},Ea:function(){return this.C.xa=!0},Ia:function(a,b){b&&(this.C.xa=!1);return!0}};function E(a,b,c,d,e,f,g){a.H&&(!0===g?g=0:null==g&&(g=a.ta),gb(a.H,a,b,c,d,e,f,g))}function hb(a,b){a.H&&ib(a,0)&&a.H.message(b,void 0)}function ib(a,b){if(a.H){a===a.H?b|=0:b=b||a.ta;var c=a.H.ta&b;return!!b&&c===b||!!(c&a.H.Id)}return!1}
function jb(a,b){if(a.C.Kb)return a.C.sb=!1,a.C.Kb=!1;if(a.C.error)return a.g(a.toString()+" error"),!1;a.C.sb=b;return a.C.sb}function kb(a,b){a.C.sb&&(b?a.C.Kb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.C.sb}function F(a){if(!a.C.error&&(a.C.ready=!0,a.C.ready)){var b=a.Eb;a.Eb=null;b&&b()}}function lb(a,b){b&&(a.C.ready?b():a.Eb=b);return a.C.ready}function ob(a,b){a.C.error=!0;a.ka(b)}
Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
var pb="undefined"!==typeof ArrayBuffer,qb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],rb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function sb(a){z.call(this,"Panel",a,sb)}A(sb);l=sb.prototype;
l.pa=function(a,b,c,d){return this.B&&this.B.pa(a,b,c,d)||this.b&&this.b.pa(a,b,c,d)||this.J&&this.J.pa(a,b,c,d)||this.H&&this.H.pa(a,b,c,d)?!0:this.parent.pa.call(this,a,b,c,d)};l.Pa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;this.J=tb(a,"Keyboard")};l.Ea=function(a,b){b||ub();return!0};l.Ia=function(){return!0};l.Ja=function(){};function ub(){for(var a=!1,b=D(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=B(d),f=db(e.id);f||(a=!0,f=new sb(e));fb(f,d);a&&F(f)}}Na(ub);
function vb(a,b,c){z.call(this,"Bus",a,vb);this.b=b;this.H=c;this.K=a.busWidth||16;this.L=Math.pow(2,this.K);this.w=this.L-1|0;this.ia=(this.K>>1)+2;10>this.ia&&(this.ia=10);15<this.ia&&(this.ia=15);this.Ha=1<<this.ia;this.M=this.Ha>>2;this.u=this.Ha-1;this.J=this.L/this.Ha|0;this.G=this.J-1;this.B=[];this.j=[];this.I=this.D=!1;this.O=[];this.P=[];a=new H;wb(a,this.H);this.X=Array(this.J);for(b=0;b<this.J;b++)this.X[b]=a;F(this)}A(vb);l=vb.prototype;l.reset=function(){};
l.Ea=function(a,b){b||this.reset();return!0};function xb(a,b,c,d){for(var e=b,f=c,g=e>>>a.ia;0<f&&g<a.X.length;){var h=a.X[g],k=g*a.Ha,n=a.Ha-(e-k);n>f&&(n=f);if(h&&h.size){if(h.type==d){if(e+f<=h.F)return h.yb+=h.F-e,h.F=e,!0;if(e>=h.F+h.yb){n=h.size-(e-k);n>f&&(n=f);h.yb=e-h.F+n;e=k+a.Ha;f-=n;g++;continue}}return yb(1,e,f)}e=new H(e,n,a.Ha,d);wb(e,a.H,h);a.X[g++]=e;e=k+a.Ha;f-=n}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+zb[d]+" at "+u(b)),!0):yb(2,b,c)}
l.aa=function(a){return this.X[(a&this.w)>>>this.ia].jb(a&this.u,a)};function Ab(a,b){return a.X[(b&a.w)>>>a.ia].wb(b&a.u,b)}l.$a=function(a){var b=a&this.u,c=(a&this.w)>>>this.ia;return b!=this.u?this.X[c].Ac(b,a):this.X[c++].jb(b,a)|this.X[c&this.G].jb(0,a+1)<<8};function Bb(a,b){var c=b&a.u,d=(b&a.w)>>>a.ia;return c!=a.u?a.X[d].Pb(c,b):a.X[d++].wb(c,b)|a.X[d&a.G].wb(0,b+1)<<8}l.va=function(a,b){this.X[(a&this.w)>>>this.ia].lb(a&this.u,b&255,a)};
function Db(a,b,c){a.X[(b&a.w)>>>a.ia].zb(b&a.u,c&255,b)}l.Ib=function(a,b){var c=a&this.u,d=(a&this.w)>>>this.ia;c!=this.u?this.X[d].Cc(c,b&65535,a):(this.X[d++].lb(c,b&255,a),this.X[d&this.G].lb(0,b>>8&255,a+1))};function Eb(a){for(var b=0,c=[],d=0;d<a.J;d++){var e=a.X[d];if(e.Na||e.xc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,k=[];g<e.length;){for(var n=e[g],p=g+1;p<e.length&&e[p]===n;)p++;k[h++]=p-g;k[h++]=n;g=p}k.length<e.length&&(e=k)}c[f]=e}}return c}
function Fb(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Pb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.B[k]?w("Input port "+u(k)+" already registered"):f.B[k]=[h,!1]}}
function Qb(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.B[b],h=a.O[b]||1,k=1==h?255:2==h?65535:-1,n=k;void 0!==g?(g[0]&&(n=g[0](b,c),void 0===n?n=k:n&=k),a.H&&a.I!=g[1]&&Rb(a.H,b,n)):a.H&&(gb(a.H,a,b,null,c),a.I&&Rb(a.H,b,n));e|=n<<f;f+=h<<3;b+=h;d-=h}return e}function Sb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.j[b]&&(a.j[b]=[null,!1]);a.j[b][1]=!a.j[b][1];return a.j[b][1]}
function Tb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.j[k]?w("Output port "+u(k)+" already registered"):f.j[k]=[h,!1]}}function Ub(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.j[b],h=a.P[b]||1,k=1==h?255:2==h?65535:-1,k=(c>>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,d);a.H&&a.D!=g[1]&&Vb(a.H,b,k)}else a.H&&(gb(a.H,a,b,k,d),a.D&&Vb(a.H,b,k));f+=h<<3;b+=h;e-=h}}
function yb(a,b,c){w("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Wb;if(pb){var Xb=new ArrayBuffer(2);(new DataView(Xb)).setUint16(0,256,!0);Wb=256===(new Uint16Array(Xb))[0]}else Wb=!1;var Yb=Wb;
function H(a,b,c,d){this.id=Zb+=2;this.b=null;this.F=a;this.yb=b;this.size=c||0;this.type=d||$b;this.N=d==ac;wb(this);this.Na=this.xc=!1;if(c)if(pb)this.I=new ArrayBuffer(c),this.D=new DataView(this.I,0,c),this.u=new Uint8Array(this.I,0,c),this.J=new Uint16Array(this.I,0,c>>1),this.b=new Int32Array(this.I,0,c>>2),bc(this,Yb?cc:dc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;bc(this,ec)}else bc(this)}var $b=0,ac=2,zb=["NONE","RAM","ROM","VID","H/W"],Zb=0;
H.prototype={constructor:H,parent:null,save:function(){var a,b;if(pb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(pb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.Na=!0}return!1},Za:function(a,b){b?this.j++||fc(this,gc,!1):this.B++||hc(this,gc,!1)},K:function(){this.H&&ib(this.H,129)&&this.H.message("attempt to read invalid block %"+t(this.F),!0);return 255},
w:function(a,b){this.H&&ib(this.H,129)&&this.H.message("attempt to write "+u(b)+" to invalid block %"+t(this.F),!0)},L:function(a,b){return this.jb(a++,b++)|this.jb(a,b)<<8},G:function(a,b,c){this.lb(a++,b&255,c++);this.lb(a,b>>8,c)},Y:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},fa:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},la:function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Na=!0},za:function(a,b){var c=a>>
2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<<a)|b<<a:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Na=!0},O:function(a,b){if(this.H&&null!=this.F){var c=this.H;ic(c,this.F+a,1,c.O)&&c.qa(!0)}return this.wb(a,b)},ca:function(a,b){if(this.H&&null!=this.F){var c=this.H;ic(c,this.F+a,2,c.O)&&c.qa(!0)}return this.Pb(a,b)},ja:function(a,b,c){if(this.H&&null!=this.F){var d=this.H;ic(d,this.F+a,1,d.D)&&d.qa(!0)}this.N?this.w(a,b,c):this.zb(a,b,c)},ma:function(a,b,c){if(this.H&&
null!=this.F){var d=this.H;ic(d,this.F+a,2,d.D)&&d.qa(!0)}this.N?this.w(a,b,c):this.Tb(a,b,c)},M:function(a){return this.u[a]},P:function(a){return this.u[a]},ba:function(a){return this.D.getUint16(a,!0)},ea:function(a){return a&1?this.u[a]|this.u[a+1]<<8:this.J[a>>1]},ha:function(a,b){this.u[a]=b;this.Na=!0},cb:function(a,b){this.u[a]=b;this.Na=!0},ra:function(a,b){this.D.setUint16(a,b,!0);this.Na=!0},wa:function(a,b){a&1?(this.u[a]=b,this.u[a+1]=b>>8):this.J[a>>1]=b;this.Na=!0}};
function wb(a,b,c){a.H=b;a.B=a.j=0;c&&((a.B=c.B)&&hc(a,gc,!1),(a.j=c.j)&&fc(a,gc,!1))}function jc(a,b){b?--a.j||(a.lb=a.N?a.w:a.zb,a.Cc=a.N?a.G:a.Tb):--a.B||(a.jb=a.wb,a.Ac=a.Pb)}function fc(a,b,c){c&&a.j||(a.lb=!a.N&&b[1]||a.w,a.Cc=!a.N&&b[3]||a.G);if(c||void 0===c)a.zb=b[1]||a.w,a.Tb=b[3]||a.G}function hc(a,b,c){c&&a.B||(a.jb=b[0]||a.K,a.Ac=b[2]||a.L);if(c||void 0===c)a.wb=b[0]||a.K,a.Pb=b[2]||a.L}function bc(a,b){b||(b=kc);hc(a,b,void 0);fc(a,b,void 0)}
var kc=[],ec=[H.prototype.Y,H.prototype.la,H.prototype.fa,H.prototype.za],gc=[H.prototype.O,H.prototype.ja,H.prototype.ca,H.prototype.ma];if(pb)var dc=[H.prototype.M,H.prototype.ha,H.prototype.ba,H.prototype.ra],cc=[H.prototype.P,H.prototype.cb,H.prototype.ea,H.prototype.wa];
function lc(a,b){z.call(this,"CPU",a,lc,1);var c=a.multiplier||1;this.Y=a.cycles||b;this.Ra=c;this.ha=Math.round(this.Y/1E4)/100;this.ab=this.ha*this.Ra;this.C.Aa=!1;this.C.Sb=!1;this.C.rb=a.autoStart;this.C.vc=!1;this.C.fb=!1;this.tb=this.O=0;this.ub=a.csStart;this.hb=a.csInterval;this.ib=a.csStop;this.w=[];this.Fa=this.bb.bind(this);F(this)}A(lc);var mc=["power","reset"];l=lc.prototype;
l.Pa=function(a,b,c,d){this.B=a;this.u=b;this.H=d;for(b=0;b<mc.length;b++)(c=this.N[mc[b]])&&this.B.pa(null,mc[b],c);this.I=tb(a,"ChipSet");a=zc(a,"autoStart");null!=a&&(this.C.rb="true"==a?!0:"false"==a?!1:!!a);F(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
l.Ea=function(a,b){if(!b){if(a&&this.restore){Ac(this);if(!this.restore(a))return!1;Bc(this)}else this.reset();this.H?(a=this.H,a.g("Type ? for help with PC8080 Debugger commands"),a.Ja(),a.za&&(b=a.za,a.za=null,Cc(a,b))):this.g("No debugger detected")}Dc(this);return!0};l.Ia=function(a){return a?this.save():!0};l.rb=function(){return this.C.rb||!this.H&&void 0===this.N.run?(this.bb(!0),!0):!1};l.yc=function(){return 0};
function Bc(a){void 0===a.ub&&(a.ub=0);void 0===a.hb&&(a.hb=-1);void 0===a.ib&&(a.ib=-1);a.C.fb=0<=a.ub&&0<a.hb;a.C.fb&&(a.tb=0,a.O=a.ub-a.M)}function Ec(a,b){if(a.C.fb){var c=!1;a.tb=a.tb+a.yc()|0;a.O-=b;0>=a.O&&(a.O+=a.hb,c=!0);0<=a.ib&&a.ib<=Fc(a)&&(a.hb=a.ib=-1,Bc(a),a.qa(),c=!0);c&&a.g(Fc(a)+" cycles: checksum="+t(a.tb))}}
l.pa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.N[b]=c;a=!0;break;case "run":this.N[b]=c;c.onclick=function(){var a;if(a=d.B)if(a=d.B,a.C.xa)a=!0;else{var b=null,c,h=cb(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.C.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.C.xa);c++);c==h.length&&(b=a);w("The "+b.type+" component ("+b.id+") is not "+(b.C.ready?"powered yet":"ready yet"+(b.Eb?" (waiting for notification)":""))+".");a=!1}a&&(d.C.Aa?d.qa():d.bb())};
a=!0;break;case "speed":this.N[b]=c;a=!0;break;case "setSpeed":this.N[b]=c,c.onclick=function(){Gc(d,d.Ra<<1,!0)},c.textContent=this.ab.toFixed(2)+"Mhz",a=!0}return a};function Hc(a,b,c){a.M+=b;c&&(a.L=a.b=0)}function Ic(a,b){var c=1;b&&1<a.Ra&&a.J&&(c=a.J/a.ha);a.wa=Math.round(1E3/30);a.fa=Math.floor(a.Y/30*c);b||(a.P=a.fa);a.ja=0}function Fc(a){return a.M+a.G+a.L-a.b}function Ac(a){a.J=0;a.za=0;a.M=a.G=a.L=a.b=0;Bc(a);Gc(a,1)}
function Gc(a,b,c){var d=!1;if(void 0!==b){.8>a.J/a.ab?b=1:d=!0;a.Ra=b;b=a.ha*a.Ra;if(a.ab!=b){a.ab=b;b=a.ab.toFixed(2)+"Mhz";var e=a.N.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.B&&a.B.xb()}Hc(a,a.G);a.G=0;a.D=qa();a.K=0;Ic(a);return d}function Jc(a,b){var c=a.w.length;a.w.push([-1,b]);return c}function Kc(a,b,c){0<=b&&b<a.w.length&&0>a.w[b][0]&&(c*=a.Y*a.Ra/1E3,a.w[b][0]=c+Lc(a))}function Lc(a,b){var c=a.L-=a.b;a.b=0;b&&(a.L=0);return c}
l.bb=function(a){if(jb(this,!0)){if(!this.C.Aa){Gc(this);this.B&&this.B.start(this.D,Fc(this));this.C.Aa=!0;this.C.Sb=!0;this.I&&this.I.start();var b=this.N.run;b&&(b.textContent="Halt");this.B&&(this.B.Ja(!0),a&&this.B.xb(!0))}this.ja>=this.Y&&Ic(this,!0);this.ba=0;this.ea=qa();this.K&&(a=this.ea-this.K,a>this.wa&&(this.D+=a,this.D>this.ea&&(this.D=this.ea)));try{do{for(var c,d=this.C.fb?1:this.fa,e=this.w.length-1;0<=e;e--){var f=this.w[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.kb(c);c=Lc(this,!0);this.ba+=
c;this.G+=c;Ec(this,c);a=c;for(var g=this.w.length-1;0<=g;g--){var h=this.w[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.P-=c;if(0>=this.P){this.P+=this.fa;15<=++this.za&&(this.B&&this.B.Ja(),this.za=0);break}}while(this.C.Aa)}catch(k){this.qa();Dc(this);this.B&&this.B.stop(qa(),Fc(this));jb(this,!1);ob(this,k.stack||k.message);return}c=setTimeout;d=this.Fa;this.K=qa();e=this.wa;this.ba&&(e=Math.round(e*this.ba/this.fa));e-=this.K-this.ea;if(f=this.K-this.D)this.J=Math.round(this.G/(10*f))/
100,864E5<=f&&(this.M=0,Gc(this));if(0>e||this.J<this.ab)-1E3>e&&(this.D-=e),e=0;this.ja+=this.ba;this.K+=e;c(d,e)}else Dc(this),this.B&&this.B.stop(qa(),Fc(this))};l.kb=function(){return 0};l.qa=function(a){kb(this,!0);Lc(this);Hc(this,this.G);this.G=0;if(this.C.Aa){this.C.Aa=!1;this.I&&this.I.stop();var b=this.N.run;b&&(b.textContent="Run")}this.C.complete=a};function Dc(a,b){if(a.B){for(var c=a.B,d=0;d<c.G.length;d++)Mc(c.G[d],b);a.B.Ja(b)}}
function Nc(a){this.Wd=+a.model||8080;lc.call(this,a,1E6);this.la=Oc;Ac(this);this.C.complete=this.C.Kd=!1;this.ma=0;this.ca=[];this.ra=0;Pc(this)}A(Nc,lc);function Qc(a,b){a.ca.push(b)}l=Nc.prototype;l.reset=function(){this.C.Aa&&this.qa();Pc(this);Ac(this);this.C.error=!1;this.parent.reset.call(this)};function Pc(a){a.i=0;a.S=0;a.T=0;a.U=0;a.V=0;a.W=0;a.Z=0;a.oa=0;I(a,a.ra);Rc(a,0);a.j=0}function Sc(a,b){a.ra=b;I(a,b)}
l.yc=function(){var a=this.i+this.S+this.T+this.U+this.V+this.W+this.Z|0;return a=a+this.oa+this.R+Tc(this)|0};l.save=function(){var a=new J(this);a.set(0,[this.i,this.S,this.T,this.U,this.V,this.W,this.Z,this.oa,this.R,Tc(this)]);a.set(1,[this.j,this.M,this.Ra]);a.set(2,Eb(this.u));return a.data()};
l.restore=function(a){var b=a[0];this.i=b[0];this.S=b[1];this.T=b[2];this.U=b[3];this.V=b[4];this.W=b[5];this.Z=b[6];this.oa=b[7]&65535;I(this,b[8]);Rc(this,b[9]);b=a[1];this.j=b[0];this.M=b[1];Gc(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.M){for(var f=0,g=Array(b.M),h=0;h<e.length-1;)for(var k=e[h++],n=e[h++];k--;)g[f++]=n;e=g}f=b.X[d];if(!f||!f.restore(e)){w("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
l.pa=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.N[b]=c;this.ma++;a=!0;break;default:a=this.parent.pa.call(this,a,b,c)}return a};function Uc(a){return a.S<<8|a.T}function Vc(a,b){a.S=b>>8&255;a.T=b&255}function Wc(a){return a.U<<8|a.V}function Xc(a,b){a.U=b>>8&255;a.V=b&255}function K(a){return a.W<<8|a.Z}
function Yc(a,b){a.W=b>>8&255;a.Z=b&255}function I(a,b){a.R=b&65535}function Zc(a){return a.da&256?1:0}function $c(a,b){a.da=a.da&255|b}function ad(a){return qb[a.ga&255]?4:0}function bd(a){return(a.ga^a.ya)&16?16:0}function cd(a){return a.da&255?0:64}function dd(a){return a.ga&128?128:0}function Tc(a){return a.ua&-214|dd(a)|cd(a)|bd(a)|ad(a)|Zc(a)}function Rc(a,b){a.da=a.ga=a.ya=0;b&1&&(a.da|=256);b&4||(a.ga|=1);b&16&&(a.ya|=16);b&64||(a.da|=255);b&128&&(a.ga^=192);a.ua=a.ua&-726|b&512|2}
function ed(a,b){a.ya=a.i^b;return a.ga=(a.da=a.i+b)&255}function fd(a,b){a.ya=a.i^b;return a.ga=(a.da=a.i+b+(a.da&256?1:0))&255}function gd(a,b){a.da=a.ga=a.ya=a.i&b;(a.i|b)&8&&(a.ya^=16);return a.da}function hd(a,b){a.ya=b^255;b=a.ga=b+255&255;a.da=a.da&-256|b;return b}function id(a,b){a.ya=b;b=a.ga=b+1&255;a.da=a.da&-256|b;return b}function Dd(a,b){return a.ga=a.da=a.ya=a.i|b}function L(a,b){b^=255;a.ya=a.i^b;return a.ga=(a.da=a.i+b+1^256)&255}
function Ed(a,b){b^=255;a.ya=a.i^b;return a.ga=(a.da=a.i+b+(a.da&256?0:1)^256)&255}function Fd(a,b){return a.ga=a.da=a.ya=a.i^b}l.aa=function(a){return this.u.aa(a)};l.va=function(a,b){this.u.va(a,b)};function M(a){var b=a.aa(a.R);I(a,a.R+1);return b}function O(a){var b=a.u.$a(a.R);I(a,a.R+2);return b}function P(a){var b=a.u.$a(a.oa);a.oa=a.oa+2&65535;return b}function Q(a,b){a.oa=a.oa-2&65535;a.u.Ib(a.oa,b)}
function Gd(a){if(a.b&&a.j&255&&a.ua&512){for(var b=0;8>b&&!(a.j&1<<b);b++);a.j&=~(0>b?255:1<<b);a.ua&=-513;a.j&=-257;a.la[199|b<<3].call(a)}return a.j&256?(Lc(a),!1):!0}function Hd(a,b){a.j|=1<<b;a.ua&512&&Lc(a)}function R(a,b,c,d){d=d||2;a.N[b]&&(void 0===c&&(ob(a,"Value for "+b+" is invalid"),a.qa()),c=!a.C.Aa||a.C.vc?t(c,d):"--------".substr(0,d),a.N[b].textContent!=c&&(a.N[b].textContent=c))}
l.Ja=function(a){this.ma&&(a||!this.C.Aa||this.C.vc)&&(R(this,"A",this.i),R(this,"B",this.S),R(this,"C",this.T),R(this,"BC",Uc(this),4),R(this,"D",this.U),R(this,"E",this.V),R(this,"DE",Wc(this),4),R(this,"H",this.W),R(this,"L",this.Z),R(this,"HL",K(this),4),R(this,"SP",this.oa,4),R(this,"PC",this.R,4),a=Tc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.N.speed)a.textContent=
this.C.Aa&&this.J?this.J.toFixed(2)+"Mhz":"Stopped"};l.kb=function(a){this.C.complete=!0;var b=this.C.Kd=this.H&&Id(this.H),c=a?this.C.Sb?0:1:-1;this.C.Sb=!1;this.L=this.b=a;if(Gd(this)){do{if(b){if(Jd(this.H,this.R,c)){this.qa();break}c=1}this.la[M(this)].call(this)}while(0<this.b)}return this.C.complete?this.L-this.b:void 0===this.C.complete?0:-1};Na(function(){for(var a=D(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Nc(d);fb(d,c)}});function Kd(){this.b-=4}
function Ld(){I(this,O(this));this.b-=10}function Md(){I(this,P(this));this.b-=10}function Nd(){var a=O(this);Q(this,this.R);I(this,a);this.b-=17}
var Oc=[Kd,function(){Vc(this,O(this));this.b-=10},function(){this.va(Uc(this),this.i);this.b-=7},function(){Vc(this,Uc(this)+1);this.b-=5},function(){this.S=id(this,this.S);this.b-=5},function(){this.S=hd(this,this.S);this.b-=5},function(){this.S=M(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|a>>8;$c(this,a&256);this.b-=4},Kd,function(){var a;Yc(this,a=K(this)+Uc(this));$c(this,a>>8&256);this.b-=10},function(){this.i=this.aa(Uc(this));this.b-=7},function(){Vc(this,Uc(this)-1);this.b-=
5},function(){this.T=id(this,this.T);this.b-=5},function(){this.T=hd(this,this.T);this.b-=5},function(){this.T=M(this);this.b-=7},function(){var a=this.i<<8&256;this.i=(a|this.i)>>1;$c(this,a);this.b-=4},Kd,function(){Xc(this,O(this));this.b-=10},function(){this.va(Wc(this),this.i);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.U=id(this,this.U);this.b-=5},function(){this.U=hd(this,this.U);this.b-=5},function(){this.U=M(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|
Zc(this);$c(this,a&256);this.b-=4},Kd,function(){var a;Yc(this,a=K(this)+Wc(this));$c(this,a>>8&256);this.b-=10},function(){this.i=this.aa(Wc(this));this.b-=7},function(){Xc(this,Wc(this)-1);this.b-=5},function(){this.V=id(this,this.V);this.b-=5},function(){this.V=hd(this,this.V);this.b-=5},function(){this.V=M(this);this.b-=7},function(){var a=this.i<<8;this.i=(Zc(this)<<8|this.i)>>1;$c(this,a&256);this.b-=4},Kd,function(){Yc(this,O(this));this.b-=10},function(){var a=O(this);this.u.Ib(a,K(this));
this.b-=16},function(){Yc(this,K(this)+1);this.b-=5},function(){this.W=id(this,this.W);this.b-=5},function(){this.W=hd(this,this.W);this.b-=5},function(){this.W=M(this);this.b-=7},function(){var a=0,b=Zc(this);if(bd(this)||9<(this.i&15))a|=6;if(b||154<=this.i)a|=96,b=1;this.i=ed(this,a);$c(this,b?256:0);this.b-=4},Kd,function(){var a;Yc(this,a=K(this)+K(this));$c(this,a>>8&256);this.b-=10},function(){var a;a=O(this);a=this.u.$a(a);Yc(this,a);this.b-=16},function(){Yc(this,K(this)-1);this.b-=5},function(){this.Z=
id(this,this.Z);this.b-=5},function(){this.Z=hd(this,this.Z);this.b-=5},function(){this.Z=M(this);this.b-=7},function(){this.i=~this.i&255;this.b-=4},Kd,function(){this.oa=O(this)&65535;this.b-=10},function(){this.va(O(this),this.i);this.b-=13},function(){this.oa=this.oa+1&65535;this.b-=5},function(){var a=K(this);this.va(a,id(this,this.aa(a)));this.b-=10},function(){var a=K(this);this.va(a,hd(this,this.aa(a)));this.b-=10},function(){this.va(K(this),M(this));this.b-=10},function(){this.da|=256;this.b-=
4},Kd,function(){var a;Yc(this,a=K(this)+this.oa);$c(this,a>>8&256);this.b-=10},function(){this.i=this.aa(O(this));this.b-=13},function(){this.oa=this.oa-1&65535;this.b-=5},function(){this.i=id(this,this.i);this.b-=5},function(){this.i=hd(this,this.i);this.b-=5},function(){this.i=M(this);this.b-=7},function(){$c(this,Zc(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.S=this.T;this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.V;this.b-=5},function(){this.S=this.W;
this.b-=5},function(){this.S=this.Z;this.b-=5},function(){this.S=this.aa(K(this));this.b-=7},function(){this.S=this.i;this.b-=5},function(){this.T=this.S;this.b-=5},function(){this.b-=5},function(){this.T=this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.W;this.b-=5},function(){this.T=this.Z;this.b-=5},function(){this.T=this.aa(K(this));this.b-=7},function(){this.T=this.i;this.b-=5},function(){this.U=this.S;this.b-=5},function(){this.U=this.T;this.b-=5},function(){this.b-=
5},function(){this.U=this.V;this.b-=5},function(){this.U=this.W;this.b-=5},function(){this.U=this.Z;this.b-=5},function(){this.U=this.aa(K(this));this.b-=7},function(){this.U=this.i;this.b-=5},function(){this.V=this.S;this.b-=5},function(){this.V=this.T;this.b-=5},function(){this.V=this.U;this.b-=5},function(){this.b-=5},function(){this.V=this.W;this.b-=5},function(){this.V=this.Z;this.b-=5},function(){this.V=this.aa(K(this));this.b-=7},function(){this.V=this.i;this.b-=5},function(){this.W=this.S;
this.b-=5},function(){this.W=this.T;this.b-=5},function(){this.W=this.U;this.b-=5},function(){this.W=this.V;this.b-=5},function(){this.b-=5},function(){this.W=this.Z;this.b-=5},function(){this.W=this.aa(K(this));this.b-=7},function(){this.W=this.i;this.b-=5},function(){this.Z=this.S;this.b-=5},function(){this.Z=this.T;this.b-=5},function(){this.Z=this.U;this.b-=5},function(){this.Z=this.V;this.b-=5},function(){this.Z=this.W;this.b-=5},function(){this.b-=5},function(){this.Z=this.aa(K(this));this.b-=
7},function(){this.Z=this.i;this.b-=5},function(){this.va(K(this),this.S);this.b-=7},function(){this.va(K(this),this.T);this.b-=7},function(){this.va(K(this),this.U);this.b-=7},function(){this.va(K(this),this.V);this.b-=7},function(){this.va(K(this),this.W);this.b-=7},function(){this.va(K(this),this.Z);this.b-=7},function(){var a=this.R-1;if(this.ca.length)for(var b=0;b<this.ca.length;b++)if(this.ca[b](a))return;this.b-=7;this.j|=256;Lc(this);this.H&&ib(this,-2147483648)?(I(this,a),this.H.qa()):this.ua&
512||(this.H&&I(this,a),this.qa())},function(){this.va(K(this),this.i);this.b-=7},function(){this.i=this.S;this.b-=5},function(){this.i=this.T;this.b-=5},function(){this.i=this.U;this.b-=5},function(){this.i=this.V;this.b-=5},function(){this.i=this.W;this.b-=5},function(){this.i=this.Z;this.b-=5},function(){this.i=this.aa(K(this));this.b-=7},function(){this.b-=5},function(){this.i=ed(this,this.S);this.b-=4},function(){this.i=ed(this,this.T);this.b-=4},function(){this.i=ed(this,this.U);this.b-=4},
function(){this.i=ed(this,this.V);this.b-=4},function(){this.i=ed(this,this.W);this.b-=4},function(){this.i=ed(this,this.Z);this.b-=4},function(){this.i=ed(this,this.aa(K(this)));this.b-=7},function(){this.i=ed(this,this.i);this.b-=4},function(){this.i=fd(this,this.S);this.b-=4},function(){this.i=fd(this,this.T);this.b-=4},function(){this.i=fd(this,this.U);this.b-=4},function(){this.i=fd(this,this.V);this.b-=4},function(){this.i=fd(this,this.W);this.b-=4},function(){this.i=fd(this,this.Z);this.b-=
4},function(){this.i=fd(this,this.aa(K(this)));this.b-=7},function(){this.i=fd(this,this.i);this.b-=4},function(){this.i=L(this,this.S);this.b-=4},function(){this.i=L(this,this.T);this.b-=4},function(){this.i=L(this,this.U);this.b-=4},function(){this.i=L(this,this.V);this.b-=4},function(){this.i=L(this,this.W);this.b-=4},function(){this.i=L(this,this.Z);this.b-=4},function(){this.i=L(this,this.aa(K(this)));this.b-=7},function(){this.i=L(this,this.i);this.b-=4},function(){this.i=Ed(this,this.S);this.b-=
4},function(){this.i=Ed(this,this.T);this.b-=4},function(){this.i=Ed(this,this.U);this.b-=4},function(){this.i=Ed(this,this.V);this.b-=4},function(){this.i=Ed(this,this.W);this.b-=4},function(){this.i=Ed(this,this.Z);this.b-=4},function(){this.i=Ed(this,this.aa(K(this)));this.b-=7},function(){this.i=Ed(this,this.i);this.b-=4},function(){this.i=gd(this,this.S);this.b-=4},function(){this.i=gd(this,this.T);this.b-=4},function(){this.i=gd(this,this.U);this.b-=4},function(){this.i=gd(this,this.V);this.b-=
4},function(){this.i=gd(this,this.W);this.b-=4},function(){this.i=gd(this,this.Z);this.b-=4},function(){this.i=gd(this,this.aa(K(this)));this.b-=7},function(){this.i=gd(this,this.i);this.b-=4},function(){this.i=Fd(this,this.S);this.b-=4},function(){this.i=Fd(this,this.T);this.b-=4},function(){this.i=Fd(this,this.U);this.b-=4},function(){this.i=Fd(this,this.V);this.b-=4},function(){this.i=Fd(this,this.W);this.b-=4},function(){this.i=Fd(this,this.Z);this.b-=4},function(){this.i=Fd(this,this.aa(K(this)));
this.b-=7},function(){this.i=Fd(this,this.i);this.b-=4},function(){this.i=Dd(this,this.S);this.b-=4},function(){this.i=Dd(this,this.T);this.b-=4},function(){this.i=Dd(this,this.U);this.b-=4},function(){this.i=Dd(this,this.V);this.b-=4},function(){this.i=Dd(this,this.W);this.b-=4},function(){this.i=Dd(this,this.Z);this.b-=4},function(){this.i=Dd(this,this.aa(K(this)));this.b-=7},function(){this.i=Dd(this,this.i);this.b-=4},function(){L(this,this.S);this.b-=4},function(){L(this,this.T);this.b-=4},function(){L(this,
this.U);this.b-=4},function(){L(this,this.V);this.b-=4},function(){L(this,this.W);this.b-=4},function(){L(this,this.Z);this.b-=4},function(){L(this,this.aa(K(this)));this.b-=7},function(){L(this,this.i);this.b-=4},function(){cd(this)||(I(this,P(this)),this.b-=6);this.b-=5},function(){Vc(this,P(this));this.b-=10},function(){var a=O(this);cd(this)||I(this,a);this.b-=10},Ld,function(){var a=O(this);cd(this)||(Q(this,this.R),I(this,a),this.b-=6);this.b-=11},function(){Q(this,Uc(this));this.b-=11},function(){this.i=
ed(this,M(this));this.b-=7},function(){Q(this,this.R);I(this,0);this.b-=11},function(){cd(this)&&(I(this,P(this)),this.b-=6);this.b-=5},Md,function(){var a=O(this);cd(this)&&I(this,a);this.b-=10},Ld,function(){var a=O(this);cd(this)&&(Q(this,this.R),I(this,a),this.b-=6);this.b-=11},Nd,function(){this.i=fd(this,M(this));this.b-=7},function(){Q(this,this.R);I(this,8);this.b-=11},function(){Zc(this)||(I(this,P(this)),this.b-=6);this.b-=5},function(){Xc(this,P(this));this.b-=10},function(){var a=O(this);
Zc(this)||I(this,a);this.b-=10},function(){var a=M(this);Ub(this.u,a,this.i,this.R+-2&65535);this.b-=10},function(){var a=O(this);Zc(this)||(Q(this,this.R),I(this,a),this.b-=6);this.b-=11},function(){Q(this,Wc(this));this.b-=11},function(){this.i=L(this,M(this));this.b-=7},function(){Q(this,this.R);I(this,16);this.b-=11},function(){Zc(this)&&(I(this,P(this)),this.b-=6);this.b-=5},Md,function(){var a=O(this);Zc(this)&&I(this,a);this.b-=10},function(){var a=M(this);this.i=Qb(this.u,a,this.R+-2&65535)&
255;this.b-=10},function(){var a=O(this);Zc(this)&&(Q(this,this.R),I(this,a),this.b-=6);this.b-=11},Nd,function(){this.i=Ed(this,M(this));this.b-=7},function(){Q(this,this.R);I(this,24);this.b-=11},function(){ad(this)||(I(this,P(this)),this.b-=6);this.b-=5},function(){Yc(this,P(this));this.b-=10},function(){var a=O(this);ad(this)||I(this,a);this.b-=10},function(){var a=P(this);Q(this,K(this));Yc(this,a);this.b-=18},function(){var a=O(this);ad(this)||(Q(this,this.R),I(this,a),this.b-=6);this.b-=11},
function(){Q(this,K(this));this.b-=11},function(){this.i=gd(this,M(this));this.b-=7},function(){Q(this,this.R);I(this,32);this.b-=11},function(){ad(this)&&(I(this,P(this)),this.b-=6);this.b-=5},function(){I(this,K(this));this.b-=5},function(){var a=O(this);ad(this)&&I(this,a);this.b-=10},function(){var a=K(this);Yc(this,Wc(this));Xc(this,a);this.b-=5},function(){var a=O(this);ad(this)&&(Q(this,this.R),I(this,a),this.b-=6);this.b-=11},Nd,function(){this.i=Fd(this,M(this));this.b-=7},function(){Q(this,
this.R);I(this,40);this.b-=11},function(){dd(this)||(I(this,P(this)),this.b-=6);this.b-=5},function(){var a=P(this);Rc(this,a&255|this.ua&-256);this.i=a>>8;this.b-=10},function(){var a=O(this);dd(this)||I(this,a);this.b-=10},function(){this.ua&=-513;this.b-=4},function(){var a=O(this);dd(this)||(Q(this,this.R),I(this,a),this.b-=6);this.b-=11},function(){Q(this,Tc(this)&255|this.i<<8);this.b-=11},function(){this.i=Dd(this,M(this));this.b-=7},function(){Q(this,this.R);I(this,48);this.b-=11},function(){dd(this)&&
(I(this,P(this)),this.b-=6);this.b-=5},function(){this.oa=K(this)&65535;this.b-=5},function(){var a=O(this);dd(this)&&I(this,a);this.b-=10},function(){this.ua|=512;this.b-=4;Gd(this)},function(){var a=O(this);dd(this)&&(Q(this,this.R),I(this,a),this.b-=6);this.b-=11},Nd,function(){L(this,M(this));this.b-=7},function(){Q(this,this.R);I(this,56);this.b-=11}];
function S(a){z.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!Od[b]&&Pa("Unrecognized ChipSet model: "+b);this.w=Od[b]||{};a.sound&&(this.fa=null,window&&(this.fa=window.AudioContext||window.webkitAudioContext),this.fa&&new this.fa);F(this)}A(S);
var U={Ba:1978.1,vd:{Ca:0,qe:1,ue:16,Be:32,Ke:64,Je:128,mb:14},Ya:{Ca:1,Kc:1,nd:2,jd:4,kd:16,ld:32,md:64,mb:8},wd:{Ca:2,pe:3,Se:4,re:8,Fe:16,Ge:32,He:64,se:128,mb:0},Oe:{Ca:3},Me:{Ca:2,Ce:7},Qe:{Ca:3,Te:1,Pe:2,Ie:4,ze:8,te:16,je:32},Ne:{Ca:4},Re:{Ca:5,ve:1,we:2,xe:4,ye:8,Ue:16}},V={Ba:100,Ka:{Ca:66,mc:1,bc:2,fd:4,Ee:8,De:16,dc:32,cc:64,Yb:128},Ic:{Ca:66,INIT:0},Ta:{Ca:194,le:0,Wb:16,pd:32,ic:48,Sc:0,Tc:32},Ab:{Ca:162,Le:0,Vc:0,Rc:0,Uc:0,Qc:0},La:{Ae:{Ca:98},Sa:{Fc:0,Ec:1,sd:2,Bd:4,Lc:5,qd:6,td:7},
Cb:16383}},Od={SI1978:U,VT100:V};S.prototype.pa=function(){return!1};S.prototype.Pa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;this.B=a;this.J=tb(a,"Keyboard");this.Fa=tb(a,"SerialPort");this.video=tb(a,"Video");Pb(b,this,this.w.Gb);Tb(b,this,this.w.Hb);if(d){var e=this;Pd(d,16384,function(){for(var a="",b=0;b<e.I.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=u(e.I[b]);e.H.g(a)})}};S.prototype.Ea=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};
S.prototype.Ia=function(a){return a?this.save():!0};U.INIT=[[U.vd.mb,U.Ya.mb,U.wd.mb,0,0,0,0]];
V.INIT=[[V.Ic.INIT,V.Ka.bc|V.Ka.fd],[V.Ta.Sc,V.Ta.Tc],[V.Ab.Vc,V.Ab.Rc,V.Ab.Uc,V.Ab.Qc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];l=S.prototype;l.reset=function(){this.w.INIT&&!this.restore(this.w.INIT)&&this.ka("reset error")};
l.save=function(){var a=new J(this);switch(this.w.Ba){case U.Ba:a.set(0,[this.wa,this.G,this.za,this.Y,this.ea,this.ra,this.ma]);break;case V.Ba:a.set(0,[this.ha,this.K]),a.set(1,[this.L,this.M]),a.set(2,[this.D,this.ba,this.la,this.ja]),a.set(3,[this.P,this.j,this.O,this.ca,this.I])}return a.data()};
l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Ba){case U.Ba:return this.wa=b[0],this.G=b[1],this.za=b[2],this.Y=b[3],this.ea=b[4],this.ra=b[5],this.ma=b[6],!0;case V.Ba:return this.ha=b[0],this.K=b[1],b=a[1],this.L=b[0],this.M=b[1],b=a[2],this.D=b[0],this.ba=b[1],this.la=b[2],this.ja=b[3],b=a[3],this.P=b[0],this.j=b[1],this.O=b[2],this.ca=b[3],this.I=b[4],!0}return!1};l.start=function(){};l.stop=function(){};l.Qd=function(a,b){var c=this.wa;E(this,a,null,b,"STATUS0",c,!0);return c};
l.Rd=function(a,b){var c=this.G;E(this,a,null,b,"STATUS1",c,!0);return c};l.Sd=function(a,b){var c=this.za;E(this,a,null,b,"STATUS2",c,!0);return c};l.Pd=function(a,b){var c=this.Y>>8-this.ea&255;E(this,a,null,b,"SHIFT.RESULT",c,!0);return c};l.$d=function(a,b,c){E(this,a,b,c,"SHIFT.COUNT",null,!0);this.ea=b};l.be=function(a,b,c){E(this,a,b,c,"SOUND1",null,!0);this.ra=b};l.ae=function(a,b,c){E(this,a,b,c,"SHIFT.DATA",null,!0);this.Y=b<<8|this.Y>>8};
l.ce=function(a,b,c){E(this,a,b,c,"SOUND2",null,!0);this.ma=b};l.de=function(a,b,c){E(this,a,b,c,"WATCHDOG",null,!0)};function Qd(a){var b=0,c=0,d=~a.P;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
l.Td=function(a,b){var c=this.K,c=c&~V.Ka.cc;if((Fc(this.b)&64)<<1&&(c|=V.Ka.cc,c!=this.K)){var d,e;d=this.O&1;e=this.O>>1&7;switch(e){case V.La.Sa.td:break;case V.La.Sa.Ec:this.P=this.P<<1|d;break;case V.La.Sa.Lc:d=Qd(this);this.I[d]=V.La.Cb;hb(this,"doNVRCommand(): erase data at addr "+u(d));break;case V.La.Sa.Fc:this.j=this.j<<1|d;break;case V.La.Sa.Bd:d=Qd(this);e=this.j&V.La.Cb;this.I[d]=e;hb(this,"doNVRCommand(): write data "+u(e)+" to addr "+u(d));break;case V.La.Sa.qd:d=Qd(this);e=this.I[d];
null==e&&(e=V.La.Cb);this.j=e;hb(this,"doNVRCommand(): read data "+u(e)+" from addr "+u(d));break;case V.La.Sa.sd:this.j<<=1;this.ca=this.j&V.La.Cb+1;break;default:hb(this,"doNVRCommand(): unrecognized command "+ca(e))}}c&=~V.Ka.dc;this.ca&&(c|=V.Ka.dc);c&=~V.Ka.Yb;if(d=this.J){d=this.J;if(e=d.D)e=d.b,e=Fc(d.b)>=d.K+e.Y*e.Ra/1E3*1.2731488;e&&(d.D=!1);d=!d.D}d&&(c|=V.Ka.Yb);c&=~V.Ka.mc;this.Fa&&this.Fa.Da&1&&(c|=V.Ka.mc);this.K=c;E(this,a,null,b,"FLAGS",c);return c};
l.ee=function(a,b,c){E(this,a,b,c,"BRIGHTNESS");this.ha=b};l.he=function(a,b,c){E(this,a,b,c,"NVR.LATCH");this.O=b};l.ge=function(a,b,c){E(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.D=this.D&-4|a;break;case 1:this.D=this.D&-13|a<<2;this.video&&(b=this.video,a=this.D,hb(b,"updateScrollOffset("+a+")"),b.eb!==a&&((b.eb=a)?Mc(b,!0):b.ob=!0));break;case 2:switch(a){case 0:this.ba=~this.ba;break;case 2:case 3:this.la=3-a}break;case 3:this.ja=a}};
l.fe=function(a,b,c){E(this,a,b,c,"DC011");b&V.Ta.pd?(b&=V.Ta.ic,this.M!=b&&(this.M=b,this.video&&(a=this.video,b=this.M==V.Ta.ic?50:60,hb(a,"updateRate("+b+")"),a.qc=b))):(b&=V.Ta.Wb,this.L!=b&&(this.L=b,this.video&&(a=this.L==V.Ta.Wb?132:80,b=this.video,hb(b,"updateDimensions("+a+","+(80<a&&this.K&V.Ka.bc?14:24)+")"),b.ca=a,b.sa=b.fc,80<a&&b.sa--,Rd(b)&&Sd(b))))};U.Gb={0:S.prototype.Qd,1:S.prototype.Rd,2:S.prototype.Sd,3:S.prototype.Pd};
U.Hb={2:S.prototype.$d,3:S.prototype.be,4:S.prototype.ae,5:S.prototype.ce,6:S.prototype.de};V.Gb={66:S.prototype.Td};V.Hb={66:S.prototype.ee,98:S.prototype.he,162:S.prototype.ge,194:S.prototype.fe};Na(function(){for(var a=D(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new S(d);fb(d,c)}});
function Td(a){z.call(this,"ROM",a,Td);this.B=null;this.D=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.I=a.file;this.J=ea(this.I);if(this.I){a=this.I;var b=fa(this.J);"json"!=b&&"hex"!=b&&(a=ja()+"/api/v1/dump?file="+this.I+"&format=bytes&decimal=true");var c=this;va(a,null,!0,function(a,b,f){Ud(c,a,b,f)})}}A(Td);var Vd=[0,5];Td.prototype.Pa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;Wd(this)};
Td.prototype.Ea=function(){if(this.Qa){if(this.H){var a=this.H,b=this.id,c=this.D,d=this.j,e=this.Qa,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,n=h.a;if(void 0!==k){var p=f,k=[k>>>0,g],q=pa(p,k,a.uc);0>q&&p.splice(-(q+1),0,k)}n&&(h.a=n.replace(/''/g,'"'))}a.G.push({gf:b,F:c,Vd:d,Qa:e,tc:f})}delete this.Qa}return!0};Td.prototype.Ia=function(){return!0};
function Ud(a,b,c,d){if(d)a.ka("Unable to load system ROM (error "+d+": "+b+")");else{bb(a.Bb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.B=f;else if(g)for(a.B=Array(4*g.length),d=c=0;c<g.length;c++)a.B[d++]=g[c]&255,a.B[d++]=g[c]>>8&255,a.B[d++]=g[c]>>16&255,a.B[d++]=g[c]>>24&255;else a.B=e;a.Qa=e.symbols;if(!a.B.length){w("Empty ROM: "+b);return}if(1==a.B.length){w(a.B[0]);return}}catch(h){a.ka("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.B=Array(b.length),e=0;e<b.length;e++)a.B[e]=aa(b[e],16);Wd(a)}}
function Wd(a){if(!lb(a))if(!a.I)F(a);else if(a.B&&a.u){a.j||(a.j=a.B.length);if(a.B.length!=a.j)ob(a,"ROM size ("+t(a.B.length,8,!0)+") does not match specified size ("+t(a.j,8,!0)+")");else if(Xd(a,a.D)){var b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,g=d.j,h=[],k=d.D>>>f.ia;0<g&&k<f.X.length;)h.push(f.X[k++]),g-=f.Ha;f=d.u;d=d.j;g=0;for(e>>>=f.ia;0<d&&e<f.X.length;){k=h[g++];if(!k)break;f.X[e++]=k;d-=f.Ha}}delete a.B}F(a)}}
function Xd(a,b){if(xb(a.u,b,a.j,a.G?1:ac)){var c;for(c=0;c<a.B.length;c++)Db(a.u,b+c,a.B[c]);if(a.G&&256==b){for(c=0;c<Vd.length;c++)Db(a.u,Vd[c],118);Qc(a.b,function(a){return function(b){if(0<=Vd.indexOf(b)){var c=!1,d=a.b,e=a.H;if(5==b)switch(c=!0,d.T){case 2:Yd(a,String.fromCharCode(d.V));break;case 9:for(var k=Wc(d),n="",p=255;p--;){var q=a.b.aa(k++);if(36==q)break;n+=String.fromCharCode(q)}Yd(a,n);break;default:c=!1}c?Md.call(d):e&&(a.g("\nCP/M vector "+u(b)),I(d,b),e.qa());b=!0}else b=!1;
return b}}(a));Sc(a.b,b)}return!0}return!1}function Yd(a,b){b=b.replace(/\r/g,"");a.Ga&&(a.Ga.value+=b,a.Ga.scrollTop=a.Ga.scrollHeight)}Na(function(){for(var a=D(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Td(d);fb(d,c)}});function Zd(a){z.call(this,"RAM",a,Zd);this.w=a.addr;this.j=a.size;this.B=!1}A(Zd);l=Zd.prototype;l.Pa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;F(this)};l.Ea=function(a,b){b||this.reset();return!0};l.Ia=function(a){return a?this.save():!0};
l.reset=function(){!this.B&&this.j&&xb(this.u,this.w,this.j,1)&&(this.B=!0);this.B||w("No RAM allocated")};l.save=function(){return null};l.restore=function(){return!0};Na(function(){for(var a=D(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Zd(d);fb(d,c)}});function $d(a){z.call(this,"Keyboard",a,$d,65536);(a=a.model)&&!ae[a]&&Pa("Unrecognized Keyboard8080 model: "+a);this.u=ae[a]||{};this.reset();F(this)}A($d);var be={};be[m.Ub]=37;be[m.Xb]=39;be[m.Zb]=32;
var ce={Ba:1978.1,A:{},Vb:be,pb:{},Xa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},W={Ba:100,A:{},Vb:{},pb:{},Xa:{setup:120},Gc:{Ca:130,INIT:127},Ma:{Ca:130,bd:1,ad:2,$c:4,Zc:8,cd:16,ac:32,$b:63,ud:64,ke:128,INIT:0},Yc:127};W.A[46]=3;W.A[m.hd]=5;W.A[m.gd]=6;W.A[m.Dd]=7;W.A[m.xd]=8;W.A[m.Ad]=9;W.A[m.Q]=10;W.A[39]=16;W.A[221]=20;W.A[219]=21;W.A[m.Pc]=22;W.A[m.yd]=23;W.A[m.od]=24;W.A[m.E]=25;W.A[49]=26;W.A[37]=32;W.A[40]=34;W.A[117]=35;W.A[19]=35;W.A[192]=36;W.A[189]=37;W.A[57]=38;W.A[55]=39;
W.A[52]=40;W.A[51]=41;W.A[27]=42;W.A[38]=48;W.A[114]=49;W.A[112]=50;W.A[8]=51;W.A[187]=52;W.A[48]=53;W.A[56]=54;W.A[54]=55;W.A[53]=56;W.A[50]=57;W.A[9]=58;W.A[103]=64;W.A[115]=65;W.A[113]=66;W.A[96]=67;W.A[118]=68;W.A[220]=69;W.A[m.Zb]=70;W.A[m.Xc]=71;W.A[m.Nc]=72;W.A[m.Mc]=73;W.A[m.Ub]=74;W.A[104]=80;W.A[2013]=81;W.A[98]=82;W.A[97]=83;W.A[222]=85;W.A[186]=86;W.A[m.Wc]=87;W.A[m.Oc]=88;W.A[m.Xb]=89;W.A[m.rd]=90;W.A[110]=96;W.A[116]=97;W.A[101]=98;W.A[100]=99;W.A[13]=100;W.A[190]=101;W.A[188]=102;
W.A[m.ed]=103;W.A[m.Hc]=104;W.A[m.Cd]=105;W.A[119]=106;W.A[105]=112;W.A[99]=113;W.A[102]=114;W.A[109]=115;W.A[191]=117;W.A[m.dd]=118;W.A[m[" "]]=119;W.A[m.zd]=120;W.A[m.Jc]=121;W.A[m.Ed]=122;W.A[120]=123;W.A[17]=124;W.A[16]=125;W.A[20]=126;W.pb={l4:W.Ma.bd,l3:W.Ma.ad,l2:W.Ma.$c,l1:W.Ma.Zc,locked:W.Ma.cd,local:W.Ma.ac,online:~W.Ma.ac};var ae={SI1978:ce,VT100:W};
$d.prototype.pa=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.N[e]){if("led"==a&&this.u.pb[b])return this.N[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return de(d,a,!0)},c.onkeyup=function(a){return de(d,a,!1)},!0;default:if(this.u.Xa&&void 0!==this.u.Xa[b])return this.N[e]=c,a=function(a,b){return function(c){c.preventDefault();ee(a,b,!0)}}(this,this.u.Xa[b]),b=function(a,b){return function(){ee(a,b,!1)}}(this,this.u.Xa[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};$d.prototype.Pa=function(a,b,c,d){this.B=a;this.b=c;this.H=d;this.I=tb(a,"ChipSet");Pb(b,this,this.u.Gb);Tb(b,this,this.u.Hb)};$d.prototype.Ea=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};$d.prototype.Ia=function(a){return a?this.save():!0};W.INIT=[[W.Ma.INIT,W.Gc.INIT,!1,0,-1]];l=$d.prototype;l.reset=function(){this.j=[];this.u.INIT&&!this.restore(this.u.INIT)&&this.ka("reset error")};
l.save=function(){var a=new J(this);switch(this.u.Ba){case W.Ba:a.set(0,[this.J,this.G,this.D,this.K,-1])}return a.data()};l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.u.Ba){case ce.Ba:return!0;case W.Ba:return this.J=b[0],fe(this,this.J&W.Ma.$b),this.G=b[1],this.D=b[2],this.K=b[3],this.w=b[4],!0}return!1};function fe(a,b){for(var c in a.u.pb){var d=a.N["led-"+c];if(d){var e=a.u.pb[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
function de(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.u.Vb[e]||e,!a.u.A[e]){for(var f in a.u.Xa)if(a.u.Xa[f]===e){e=f;break a}e=null}e&&(d=ee(a,e,c),b.preventDefault());return d}
function ee(a,b,c){var d;a:{for(d=0;d<a.j.length;d++)if(a.j[d].Rb==b)break a;d=-1}if(c)0>d?a.j.push({Rb:b,Ob:Date.now(),Db:!1}):(a.j[d].Ob=Date.now(),a.j[d].Db=!1);else if(0<=d){if(!a.j[d].Db){var e=a.j[d].Ob;if(e&&100>Date.now()-e)return a.j[d].Db=!0,ge(a),!0}a.j.splice(d,1)}if(a.I){d=0;switch(b){case "1p":d=U.Ya.jd;break;case "2p":d=U.Ya.nd;break;case "coin":d=U.Ya.Kc;break;case "left":d=U.Ya.ld;break;case "right":d=U.Ya.md;break;case "fire":d=U.Ya.kd}d&&(a=a.I,b=d,a.G&=~b,c&&(a.G|=b))}return!0}
function ge(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Db){var d=a.j[b].Rb,e=100-(Date.now()-a.j[b].Ob);if(0<e){if(0>c||c>e)c=e}else{ee(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){ge(a)},c)}l.Ud=function(a,b){var c=this.G;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=W.A[c.Rb],c&128&&(c&=127)):(this.w=-1,c=W.Yc),this.G=c,Hd(this.b,1));E(this,a,null,b,"KBDUART.ADDRESS",c);return c};
l.ie=function(a,b,c){E(this,a,b,c,"KBDUART.STATUS");this.J=b;this.D=!0;this.K=Fc(this.b);fe(this,b&W.Ma.$b);b&W.Ma.ud&&(this.w=0,Hd(this.b,1))};W.Gb={130:$d.prototype.Ud};W.Hb={130:$d.prototype.ie};Na(function(){for(var a=D(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new $d(d);fb(d,c)}});
function he(a,b,c,d,e){var f=this;this.kc=Ca("Gecko/");var g=["","moz","ms","webkit"];z.call(this,"Video",a,he,262144);this.Y=a.screenWidth;this.O=a.screenHeight;this.Ua=a.bufferAddr;this.Hd=a.bufferRAM;var h=a.bufferFormat;this.ma=h&&ie[h.toUpperCase()]||je;this.ca=a.bufferCols;this.wa=a.bufferRows;this.fc=this.sa=a.cellWidth||1;this.na=a.cellHeight||1;this.za=null;this.jc=!1;this.Va=a.bufferBits||1;this.Jd=a.bufferLeft||0;if(this.w=a.bufferRotate)this.w=this.w%360,0<this.w&&(this.w-=360),-90!=this.w&&
(this.ka("unsupported buffer rotation: "+this.w),this.w=0);this.Wa=a.interruptRate;this.rc=a.refreshRate||60;this.M=b;this.I=c;this.la=(this.Md=d)||b||null;this.Dc=this.Y;this.Gd=this.O;this.gc=this.Y/this.ca|0;this.hc=this.O/this.wa|0;1<this.na&&(this.wa++,this.eb=0,this.ob=!1);b=a.smoothing;(c=Va.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.I[d]){this.I[d]=b;break}if(this.D=a.screenRotate)this.D=this.D%
360,0<this.D&&(this.D-=360),-90!=this.D?(this.ka("unsupported screen rotation: "+this.D),this.D=0):(this.I.translate(0,this.O),this.I.rotate(this.D*Math.PI/180),this.I.scale(this.O/this.Y,this.Y/this.O));if(this.j=e)if(this.j.gb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.j.gb){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){ke(f,document.fullscreenElement||document.msFullscreenElement||
document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){ke(f,null)},!1);break}}if(this.ea=a.fontROM)"json"!=fa(this.ea)&&(this.ea=ja()+"/api/v1/dump?file="+this.ea+"&format=bytes"),va(this.ea,null,!0,function(a,b,c){le(f,a,b,c)});this.Jb={}}A(he);var je=0,ie={SI1978:1,VT100:2};
function Rd(a){a.K=a.ca*a.sa;a.ba=a.wa*a.na;var b=a.K,c=a.ba;a.w&&(b=a.ba,c=a.K);a.P=0;if(!a.Hd&&(a.P=(a.K*a.Va>>3)*a.ba,!xb(a.u,a.Ua,a.P,3)))return!1;a.P?(a.lc=a.I.createImageData(b,c),a.oc=16/a.Va|0,me(a,a.P>>1)):me(a,(a.ca+1)*a.wa);a.L=document.createElement("canvas");a.L.width=b;a.L.height=c;a.nb=a.L.getContext("2d");a.fa={};a.ra=1<<a.Va;a.ha=Array(a.ra+2);a.ha[0]=[0,0,0,255];a.ha[1]=[255,255,255,255];1==a.ma&&(a.ha[a.ra+0]=[255,255,0,255],a.ha[a.ra+1]=[0,255,0,255]);2==a.ma&&(a.qc=60,a.qb=!1,
a.Fa=Array(a.ca));return!0}he.prototype.Pa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;Rd(this);if(this.J=tb(a,"Keyboard")){for(var e in this.Jb)this.J.pa("led",e,this.Jb[e]);this.M&&this.J.pa(this.Md?"textarea":"canvas","kbd",this.la)}var f=this;this.sc=Jc(this.b,function(){Mc(f)});Kc(this.b,this.sc,1E3/Math.max(this.rc,this.Wa));this.pc=0;this.ea||F(this)};
function le(a,b,c,d){if(d)a.ka("Unable to load font ROM (error "+d+": "+b+")");else{bb(a.Bb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){w("Empty font ROM: "+b);return}if(1==f.length){w(f[0]);return}if(2048==f.length)a.za=f,Sd(a);else{a.ka("Unrecognized font data length ("+f.length+")");return}}catch(g){a.ka("Font ROM data error: "+g.message);return}(a.I||a.H)&&F(a)}}
function Sd(a){a.za&&(a.jc=2==a.ma,a.fa[96]=[ne(a,a.sa,a.na),ne(a,a.sa,a.na,a.qb)],a.fa[64]=[ne(a,2*a.sa,a.na),ne(a,2*a.sa,a.na,a.qb)],a.fa[32]=a.fa[0]=[ne(a,2*a.sa,2*a.na),ne(a,2*a.sa,2*a.na,a.qb)])}
function ne(a,b,c,d){var e=8>=a.fc?8:16,f=8<e?15:0,g=a.za.length/e,h=!1===d,k={sa:b,na:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=g/16*c;k.context=k.canvas.getContext("2d");for(var n=k.context.createImageData(b,c),p=0;p<g;p++){for(var q=0,x=q;q<a.na;q++)for(var v=p*e+(f+q&e-1),v=d&&8==q?255:a.za[v],r=0;r<c/a.na;r++){for(var y=0,G=0,ga=G;G<a.sa;G++){for(var C=v&128>>(7<G?7:G),y=a.jc&&!C&&y?y:C,T=0;T<b/a.sa;T++)h&&(y=!y),oe(a,n,ga,x,y?1:0),ga++;y=C}x++}k.context.putImageData(n,
(p&15)*b,(p>>4)*c)}return k}he.prototype.Ea=function(){return!0};he.prototype.pa=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Jb[b]=c,!0;switch(b){case "fullScreen":return this.N[b]=c,this.j&&this.j.gb?c.onclick=function(){d.gb()}:c.parentNode.removeChild(c),!0}return!1};
he.prototype.gb=function(){var a=!1;if(this.j){if(this.j.gb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.Y/this.O;b>c&&(a=Math.round(c/b*100)+"%")}this.kc?(this.M.style.width=a,this.M.style.width=a,this.M.style.display="block",this.M.style.margin="auto"):(this.j.style.width=a,this.j.style.height="auto");this.j.style.backgroundColor="black";this.j.gb();a=!0}this.la&&this.la.focus()}return a};
function ke(a,b){!b&&a.j&&(a.kc?a.M.style.width=a.M.style.height="":a.j.style.width=a.j.style.height="");hb(a,"notifyFullScreen("+b+")")}function me(a,b){a.nc=b;a.ja=!1;if(void 0===a.G||a.G.length!=a.nc)a.G=Array(a.nc)}function oe(a,b,c,d,e){d=a.w?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ma&&(208<=c&&236>c?e=a.ra+0:28<=c&&72>c&&(e=a.ra+1));a=a.ha[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Mc(a,b){var c=!0;if(!b){a.Wa&&(120==a.Wa?a.pc&1?(Hd(a.b,2),c=!1):Hd(a.b,1):Hd(a.b,4));if(c&&a.ja&&a.P){for(var d=a.u,e=a.P,f=!0,g=a.Ua>>>d.ia;0<e&&g<d.X.length;)d.X[g].Na&&(d.X[g].Na=f=!1,d.X[g].xc=!0),e-=d.Ha,g++;f&&(c=!1)}Kc(a.b,a.sc,1E3/Math.max(a.rc,a.Wa));a.pc++}if(c)if(1<a.sa)switch(a.ma){case 2:for(var c=a.Ua,d=-1,e=0,f=60==a.qc?2:5,h=g=0,k=-1;e<a.wa;){var n=0,p=c,q=d,x=a.ca;for(96!=q&&(x>>=1);;){var v=Ab(a.u,p++);if(127==(v&127)){var r=Ab(a.u,p++),d=r&96,c=(r&15)<<8|Ab(a.u,p),c=c+
(r&16?8192:16384);break}if(n<x)a.Fa[n++]=v;else break}if(f)f--;else{for(;n<a.Fa.length;)a.Fa[n++]=0;if(0<=q)for(p=a.ja&&a.G[g]==x,a.G[g++]=x,x=0;x<n;x++){v=a.Fa[x];if(!p||v!==a.G[g]){a.G[k=g]=v;var r=a,y=a.nb,G=v&127;if(v=r.fa[q][v&128?1:0]){var ga=(G&15)*v.sa,G=(G>>4)*v.na,C,T,da,X,ta=v.sa,Cb=v.na;y?(C=x*r.sa,T=e*r.na,da=r.sa,X=r.na):(C=x*r.gc,T=e*r.hc,da=r.gc,X=r.hc);v.sa>r.sa&&(C*=2,da*=2);v.na>r.na&&(q||(G+=r.na),Cb=r.na);y?y.drawImage(v.canvas,ga,G,ta,Cb,C,T,da,X):(C+=0,T+=0,r.I.drawImage(v.canvas,
ga,G,ta,Cb,C,T,da,X))}h++}g++}e++}}a.ja=!0;!b&&a.ob&&1==h&&(a.G[k]=-1,h=0);a.ob=!1;(h||b)&&a.nb&&a.I.drawImage(a.L,0,a.eb,a.K,a.ba-a.na,0,0,a.Dc,a.Gd)}else{e=a.Ua;f=e+a.P;k=h=g=0;b=a.K;n=0;c=a.ba;q=d=0;p=a.Va;x=(1<<p)-1;a.Jd&&(p=-p,q=16+p);for(;e<f;){r=Bb(a.u,e);if(a.ja&&r===a.G[g])h+=a.oc;else{a.G[g]=r;(y=q)&&(r=r>>8|(r&255)<<8);h<b&&(b=h);for(v=a.oc;v--;)ga=r>>y&x,oe(a,a.lc,h++,k,ga),y+=p;h>n&&(n=h);k<c&&(c=k);k>=d&&(d=k+1)}e+=2;g++;if(h>=a.K&&(h=0,k++,k>a.ba))break}a.ja=!0;b<a.K&&(e=n-b,d-=c,a.w&&
(f=b,g=e,b=c,e=d,c=a.K-(f+g),d=g),a.nb.putImageData(a.lc,0,0,b,c,e,d),a.I.drawImage(a.L,0,0,a.L.width,a.L.height,0,0,a.Y,a.O))}}
Na(function(){for(var a=D(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=B(c),e=document.createElement("canvas");if(!e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=wa().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Va.aspect);f&&.3<=f&&3.33>=f&&(Ma("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ca("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var g=e.getContext("2d"),d=new he(d,e,g,f,c);fb(d,c)}});
function pe(a){this.fa=+a.adapter;switch(this.fa){case 0:this.ha=0;this.la=2;break;default:w("Unrecognized serial adapter #"+this.fa);return}this.j=this.w=null;this.ja=a.tabSize;this.ea=a.charBOL;this.D=0;this.ba=!1;z.call(this,"SerialPort",a,pe,8388608);var b=a.binding;if("console"==b)this.w="";else{var c;a=qe;b&&(void 0===c&&(c="Panel"),(c=eb(c,this.id))&&(b=c.N[b])&&this.pa(null,a,b))}this.G="";this.J=this.M=null;this.exports={connect:this.zc,receiveData:this.Qb}}A(pe);
var re=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],se=[!1,0,0,133,142,39,238],qe="buffer";l=pe.prototype;
l.pa=function(a,b,c,d){var e=this;switch(b){case qe:return this.N[b]=this.j=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),te(e,b);return!0},c.onkeypress=function(a){a=a||window.event;te(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.N[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Qb(d);return!0},
!0}return!1};l.Pa=function(a,b,c,d){this.B=a;this.u=b;this.b=c;this.H=d;var e=this;this.ra=Jc(this.b,function(){e.Qb()});this.ma=Jc(this.b,function(){e.Da|=5});this.I=tb(a,"ChipSet");Pb(b,this,ue,this.ha);Tb(b,this,ve,this.ha);F(this)};
l.zc=function(){if(!this.J){var a=zc(this.B,"connection");if(a){var b=a.split("->");if(2==b.length){var c=na(b[0]);if(c!=this.cb)return;b=na(b[1]);if(this.J=db(b)){var d=this.J.exports;if(d){var e=d.connect;e&&e.call(this.J);if(this.M=d.receiveData){this.status(this.Bb+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};l.Ea=function(a,b){if(!b)if(this.zc(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
l.Ia=function(a){return a?this.save():!0};l.reset=function(){we(this)};l.save=function(){var a=new J(this),b=0,c=[];c[b++]=this.L;c[b++]=this.Y;c[b++]=this.ca;c[b++]=this.Da;c[b++]=this.K;c[b++]=this.P;c[b]=this.O;a.set(0,c);return a.data()};l.restore=function(a){return we(this,a[0])};function we(a,b){var c=0;b||(b=se);a.L=b[c++];a.Y=b[c++];a.ca=b[c++];a.Da=b[c++];a.K=b[c++];a.P=b[c++];a.O=b[c];return!0}
function xe(a,b){var c=a.O&b;b&15||(c>>=4);b=re[c];c=((a.K&12)>>2)+6;a.K&16&&c++;c+=((a.K&192)>>6)+1>>1;return 1E3/Math.round(b/c)}function te(a,b){hb(a,"receiveByte("+ca(b)+"), status="+ca(a.Da));return a.ba||a.Da&2?!1:(a.Y=b,a.Da|=2,Hd(a.b,a.la),!0)}l.Qb=function(a){null!=a&&(this.G="number"!=typeof a?a:this.G+String.fromCharCode(a));this.G&&(te(this,this.G.charCodeAt(0))&&(this.G=this.G.substr(1)),this.G&&this.b&&Kc(this.b,this.ra,xe(this,15)));return!0};
l.Od=function(a,b){var c=this.Y;E(this,a,null,b,"DATA",c);this.Da&=-3;return c};l.Nd=function(a,b){var c=this.Da;E(this,a,null,b,"STATUS",c);return c};
l.Zd=function(a,b,c){E(this,a,b,c,"DATA");this.ca=b;this.Da&=-6;hb(this,"transmitByte("+ca(b)+")");if(19==b)this.ba=!0;else if(17==b)this.ba=!1;else if(this.M&&this.M.call(this.J,b),this.j)8==b?(this.j.value=this.j.value.slice(0,-1),0<this.D&&this.D--):(a=(a=oa[b])?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.ja||8,c=b-this.D%b,this.ja&&(a=ma("",c))):13==b&&(this.D=c=0,a="\n"),this.ea&&!this.D&&c&&(a=String.fromCharCode(this.ea)+a),this.j.value+=a,this.j.scrollTop=this.j.scrollHeight,
this.D+=c);else if(null!=this.w){if(10==b||1024<=this.w.length)this.g(this.w),this.w="";10!=b&&(this.w+=String.fromCharCode(b))}this.b&&Kc(this.b,this.ma,xe(this,240))};l.Yd=function(a,b,c){E(this,a,b,c,"CONTROL");this.L?(this.P=b,this.P&64&&(this.L=!1)):(this.K=b,this.L=!0)};l.Xd=function(a,b,c){E(this,a,b,c,"BAUDRATES");this.O=b};var ue={0:pe.prototype.Od,1:pe.prototype.Nd},ve={0:pe.prototype.Zd,1:pe.prototype.Yd,2:pe.prototype.Xd};
Na(function(){for(var a=D(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new pe(d);fb(d,c)}});function ye(a){z.call(this,"Debugger",a,ye);this.Va=a.base||16;this.ba=this.ma=this.K=0;this.P=!1;this.j=-1;this.w=[];this.ea={}}A(ye);var ze={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};ye.prototype.Mb=function(){return-1};ye.prototype.Nb=function(){};
ye.prototype.Fb=function(a,b,c){if(b)if(a){0>this.j&&this.w.length&&(this.j=0);if(0>this.j||a!=this.w[this.j])this.w.splice(0,0,a),this.j=0;this.j--}else this.P?a="end":a=this.w[this.j+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(na(a.substring(d,f))),d=f+1}}return b};
function Ae(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0}
function Be(a,b,c){var d;if(b){b=Ce(a,b);for(var e=0,f=!1,g=b,h=[],k=[],n=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<n.length;){var p=n[e++],q=p.length,p=na(p);if(!p){f=!0;break}p=De(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}h.push(p);if(e==n.length)break;var p=n[e++],x=p.length;k.length&&ze[p]<ze[k[k.length-1]]&&Ae(h,k,1);k.push(p);b=b.substr(q+x)}Ae(h,k)&&1==h.length||(f=!0);f?c&&a.g("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Ee(a,null,
d))}return d}function Ce(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Be(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Fe(a,e):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(;c=b.match(/\$([a-z]+)/i);){d=null;switch(c[1].toLowerCase()){case "ops":d=a.ba-a.ma}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
function De(a,b,c,d){var e;null!=b?(e=a.Mb(b),0<=e?e=a.Nb(e):(e=a.ea[b],null==e&&(e=aa(b,a.Va))),null!=e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function Ee(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=0,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var k=d&255,n=8,p="";n?32<n&&(n=32):n=32;if(null==k||isNaN(k))for(;0<n--;)p="?"+p;else for(;0<n--;)p=(k&1?"1":"0")+p,k>>=1;g=p+g;d>>=8}d=t(c,0,!0)+" "+c+". "+ba(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.g((null!=b?b+": ":"")+d);return e}function Ge(a,b){if(b)return Ee(a,b,a.ea[b]);var c=0;for(b in a.ea)Ee(a,b,a.ea[b]),c++;return 0<c}
function Fe(a,b){switch(a.Va){case 8:a=ba(b,NaN);break;case 10:a=b.toString();break;default:a=t(b,NaN)}return a}function He(a){ye.call(this,a);this.style=Ie;this.M=Y();this.Ua=Y();this.ca=Y();this.G=[];this.I=this.O=this.D=[];Je(this);this.ja=0;Ke(this);this.wa={};Le(this,a.messages);this.za=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Cc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Cc(b,a)})}A(He,ye);
var Me={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},
Ie=8080,Ne="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),Oe="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),
Pe="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Qe=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963,
2579],[41,18963,115],[23,2579],[28,1297],[22,1297],[44,1297,32],[16,18193],[45,32768],[42,2835,32],[70,115,18193],[29,2835],[28,1617],[22,1617],[44,1617,32],[72],[45,32768],[21,18963,2835],[39,18193,115],[23,2835],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1617],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1617],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,
785],[43,529,1041],[43,529,1297],[43,529,1617],[43,529,1809],[43,785,17],[43,785,273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,785,1617],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1617],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1617],[43,1297,1809],[43,1617,17],[43,1617,273],[43,1617,529],[43,1617,785],[43,1617,1041],[43,1617,1297],[26],[43,1617,1809],
[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],[43,1809,1297],[43,1809,1617],[43,1809,1809],[3,18193,17],[3,18193,273],[3,18193,529],[3,18193,785],[3,18193,1041],[3,18193,1297],[3,18193,1617],[3,18193,1809],[2,18193,17],[2,18193,273],[2,18193,529],[2,18193,785],[2,18193,1041],[2,18193,1297],[2,18193,1617],[2,18193,1809],[73,18193,17],[73,18193,273],[73,18193,529],[73,18193,785],[73,18193,1041],[73,18193,1297],[73,18193,1617],[73,18193,1809],[66,18193,17],[66,18193,273],[66,
18193,529],[66,18193,785],[66,18193,1041],[66,18193,1297],[66,18193,1617],[66,18193,1809],[5,18193,17],[5,18193,273],[5,18193,529],[5,18193,785],[5,18193,1041],[5,18193,1297],[5,18193,1617],[5,18193,1809],[76,18193,17],[76,18193,273],[76,18193,529],[76,18193,785],[76,18193,1041],[76,18193,1297],[76,18193,1617],[76,18193,1809],[46,18193,17],[46,18193,273],[46,18193,529],[46,18193,785],[46,18193,1041],[46,18193,1297],[46,18193,1617],[46,18193,1809],[18,18193,17],[18,18193,273],[18,18193,529],[18,18193,
785],[18,18193,1041],[18,18193,1297],[18,18193,1617],[18,18193,1809],[58],[50,2067],[34,51],[30,51],[11,51],[51,2067],[4,18193,33],[65,128],[62],[54],[38,51],[30,32819],[15,51],[7,51],[1,18193,33],[65,128],[57],[50,2323],[33,51],[48,33,18193],[10,51],[51,2323],[74,18193,33],[65,128],[55],[54,32768],[31,51],[27,18193,33],[8,51],[7,32819],[67,18193,33],[65,128],[61],[50,2579],[37,51],[78,19283,18963],[14,51],[51,2579],[6,18193,33],[65,128],[60],[49,2579],[36,51],[75,18963,18707],[13,51],[7,32819],[77,
18193,33],[65,128],[59],[50,3603],[35,51],[24],[12,51],[51,3603],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,18193,33],[65,128]];l=He.prototype;
l.Pa=function(a,b,c,d){this.u=b;this.b=c;this.B=a;(a=zc(a,"messages"))&&Le(this,a);this.Fa=Qe;Pd(this,64,function(a){a:{var b=d.u.X,c=a[0],e=a=0,k=b.length;if(c){a=Re(Se(d,c));if(-1===a){d.g("invalid address: "+c);break a}e=a>>>d.u.ia;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,n=0;k--;){var p=b[e];p.type==c?n++||d.g("..."):(c=p.type,n=zb[c],p&&d.g(t(p.id)+" %"+t(e<<d.u.ia)+" %%"+t(p.F)+" "+u(p.yb)+" "+
u(p.size)+" "+n),c!=$b&&(c=-1),n=0);a+=d.u.Ha;e++}}});F(this)};
l.pa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ha=this.N[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Cc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.j<d.w.length-1&&(b=d.w[++d.j])):40==a.keyCode&&(0<d.j?b=d.w[--d.j]:(b="",d.j=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.N[b]=c,Ea(c,function(){if(d.ha){var a=d.ha.value;
d.ha.value="";Cc(d,a,!0);return!0}return!1}),!0;case "step":return this.N[b]=c,Ea(c,function(a){var b=!1;kb(d,!0)||(jb(d,!0),b=d.kb(a?1:0),jb(d,!1));return b}),!0}return!1};l.xb=function(){this.ha&&this.ha.focus()};function Re(a){a=a&&a.F;null==a&&(a=-1);return a}l.aa=function(a,b){var c=255,d=Re(a);-1!==d&&(c=Ab(this.u,d),b&&sf(a,b));return c};l.$a=function(a,b){var c=65535,d=Re(a);-1!==d&&(c=Bb(this.u,d),b&&sf(a,b));return c};
l.va=function(a,b,c){var d=Re(a);-1!==d&&(Db(this.u,d,b),c&&sf(a,c),Dc(this.b,!0))};l.Ib=function(a,b,c){var d=Re(a);if(-1!==d){var e=this.u,f=d&e.u,g=(d&e.w)>>>e.ia;f!=e.u?e.X[g].Tb(f,b&65535,d):(e.X[g++].zb(f,b&255,d),e.X[g&e.G].zb(0,b>>8&255,d+1));c&&sf(a,c);Dc(this.b,!0)}};function Y(a){return{F:a,Oa:!1}}function tf(a){return[a.F,a.Oa]}function uf(a){return{F:a[0],Oa:a[1]}}
function Se(a,b,c){var d;c=(c?a.M:a.Ua).F;if(void 0!==b){d=b=Ce(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].Qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=Y(d));break}}if(d=e)return d;c=Be(a,b,void 0)}null!=c&&(d=Y(c));return d}function vf(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Fd=a.Fb(b.Bc=c[2]))}function sf(a,b){null!=a.F&&(a.F+=b||1)}function Z(a){return t(a,4)}
function wf(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.aa(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Le(a,b){a.H=a;a.ta=a.Id=536870912;a.la=null;a.ra=[];b=a.Fb(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in rb)0<=sa(b,c)&&(a.ta|=rb[c],a.g(c+" messages enabled"))}function Pd(a,b,c){for(var d in rb)if(b==rb[d]){a.wa[d]=c;break}}
l.Mb=function(a,b){var c;a=a.toUpperCase();null==b?c=sa(Pe,a):(c=sa(Pe,a.substr(b,2)),0>c&&(c=sa(Pe,a.substr(b,1))));return c};function xf(a,b){var c=0;a=a.Nb(b);if(void 0!==a)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?t(a,c):"??"}
l.Nb=function(a){var b;if(0<=a){var c=this.b;switch(a){case 7:b=c.i;break;case 0:b=c.S;break;case 1:b=c.T;break;case 8:b=Uc(c);break;case 2:b=c.U;break;case 3:b=c.V;break;case 9:b=Wc(c);break;case 4:b=c.W;break;case 5:b=c.Z;break;case 10:b=K(c);break;case 6:b=c.aa(K(c));break;case 11:b=c.oa;break;case 12:b=c.R;break;case 13:b=Tc(c);break;case 14:b=Tc(c)&255|c.i<<8}}return b};
function yf(a,b){b=Ce(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Mb(b,c+1),0<=e&&(b=b.substr(0,c)+xf(a,e)+b.substr(c+1+Pe[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=aa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Se(a,e))?(d=e+' "'+wf(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Se(a,e))?(sf(d),d=e+
' "'+wf(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+Z(Y(this.b.R).F));this.ta&1073741824?this.ra.push(a):this.la&&a==this.la||(this.la=a,this.ta&-2147483648&&(this.qa(),a+=" (cpu halted)"),this.g(a),this.b&&(a=this.b,Lc(a),a.P=0,Dc(a)))};
function gb(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ta&h)!=h||a.message(b.cb+"."+(null!=d?"outPort":"inPort")+"("+u(c)+","+(f?f:"unknown")+(null!=d?","+ca(d):"")+")"+(null!=g?": "+ca(g):"")+(null!=e?" at "+Z(e):""))}
function Ke(a){var b;if(Id(a)){if(!a.L||!a.L.length){a.L=Array(1E3);for(b=0;b<a.L.length;b++)a.L[b]=Y();a.fa=0;a.g("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.L&&a.L.length&&a.g("instruction history buffer freed"),a.fa=0,a.L=[],a.J=[]}l.bb=function(a){if(!zf(this))return!1;this.b.bb(a);return!0};
l.kb=function(a,b,c){if(!zf(this))return!1;this.K=0;a||Id(this)&&Jd(this,this.b.R,0);try{var d=this.b.kb(a);0<d&&(this.K+=d,Hc(this.b,d,!0),Ec(this.b,d),this.ba++)}catch(e){"number"!=typeof e&&(this.K=0,ob(this.b,e.stack||e.message))}!1!==c&&Dc(this.b);this.Ja(b||!1);return 0<this.K};l.qa=function(a){this.b&&this.b.qa(a)};l.Ja=function(a){void 0===a&&(a=!0);this.M=Y(this.b.R);a&&1!=this.Y?Af(this):Bf(this)};
function zf(a){var b;if(b=a.b&&lb(a.b))b=a.b,b.C.xa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!kb(a.b)?(a=a.b,a.C.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}l.Ea=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};l.Ia=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){Ke(this);this.ba=this.ma=0;this.la=null;this.K=0;this.M=Y(this.b.R);this.C.Aa=!1;Cf(this);a||this.Ja()};
l.save=function(){var a=new J(this);a.set(0,tf(this.M));a.set(1,tf(this.ca));a.set(2,[this.w,this.P,this.ta]);a.set(3,this.G);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.M=uf(a[b++]),this.ca=uf(a[b++]),this.w=a[b][0],"string"==typeof this.w&&(this.w=[this.w]),this.P=a[b][1],this.ta|=a[b][2]);a[3]&&(this.G=a[3]);return!0};l.start=function(a,b){this.Y||this.g("running");this.C.Aa=!0;this.nb=a;this.ob=b};
l.stop=function(a,b){if(this.C.Aa){this.C.Aa=!1;this.K=b-this.ob;if(!this.Y){b="stopped";if(this.K){a-=this.nb;var c=0<a?Math.round(1E3*this.K/a):0;b+=" (";Id(this)&&(b+=this.ba+" opcodes, ",this.ma-=this.ba,this.ba=0);b+=this.K+" cycles, "+a+" ms, "+c+" hz)"}else ib(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.g(b)}this.Ja(!0);this.xb();Cf(this,this.b.R)}};function Id(a){return 1<a.I.length||!!a.ja}
function Jd(a,b,c){var d=a.b;if(0<c&&(a.ja&&!--a.ja||ic(a,b,1,a.I)))return!0;0<=c&&a.J.length&&(a.ba++,b=Ab(a.u,b),null!=b&&(a.J[b][1]++,b=a.L[a.fa],b.F=d.R,b.Oa=!1,++a.fa==a.L.length&&(a.fa=0)));return!1}function Rb(a,b,c){a.g("break on input from port "+u(b)+": "+t(c));a.qa(!0)}function Vb(a,b,c){a.g("break on output to port "+u(b)+": "+t(c));a.qa(!0)}
function Je(a){var b,c;a.I=["bp"];if(a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.u;jc(d.X[Re(c)>>>d.ia],!1)}a.O=["br"];if(a.D)for(b=1;b<a.D.length;b++)c=a.D[b],d=a.u,jc(d.X[Re(c)>>>d.ia],!0);a.D=["bw"];a.Wa=0}l.Za=function(a,b,c){var d=!0;c||Df(this,a,b,!1,!0);if(a!=this.I){var e=Re(b);if(-1===e)this.g("invalid address: "+Z(b.F)),d=!1;else{var f=this.u;f.X[e>>>f.ia].Za(e&f.u,a==this.D)}}d&&(a.push(b),c?b.Oa=!0:(Ef(this,a,a.length-1,"set"),Ke(this)));return d};
function Df(a,b,c,d,e){var f=!1;c=Re(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==Re(h)&&(!d||h.Oa)){f=!0;h.Oa||e||Ef(a,b,g,"cleared");b.splice(g,1);b!=a.I&&(d=a.u,jc(d.X[c>>>d.ia],b==a.D));h.Oa||Ke(a);break}}return f}function Ff(a,b){for(var c=1;c<b.length;c++)Ef(a,b,c);return b.length-1}function Ef(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.F)+(d?" "+d:c.Bc?' "'+c.Bc+'"':""))}
function Cf(a,b){if(void 0!==b)ic(a,b,1,a.I,!0),a.Y=0;else for(b=1;b<a.I.length;b++){var c=a.I[b];if(c.Oa){if(!Df(a,a.I,c,!0))break;b=0}}}
function ic(a,b,c,d,e){var f=!1;if(!a.Wa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Oa)for(var k=Re(h),n=0;n<c;n++)if(b+n==k){var p,f=!0;h.Oa&&(Df(a,d,h,!0),e=!0);if(p=h.Fd){for(var f=!1,q=0;q<p.length;q++)if(!Gf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var x=q+1;x<p.length&&p[x].indexOf("else");x++)q++;if(x==p.length){f=!0;break}}a.b.C.Aa||(f=!0)}if(f){e||Ef(a,d,g,"hit");break}}}a.Wa--;return f}
function Hf(a,b,c,d){for(var e=Y(b.F),f=a.aa(b,1),g=a.Fa[f],h="",k=(8086!=a.style?Ne:Oe)[g[0]],n=g.length-1,p=0,q,x=1;x<=n;x++){var v="";q=g[x];if(void 0!==q&&!(q&16384&&a.style==Ie)){var r=q&240;if(r){var y=q&15;y?p=y:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{v=a;r=q;y=b;switch(r&15){case 1:y=t(v.aa(y,1),2);break;case 2:y=t(v.aa(y,1)<<24>>24,4);break;case 3:y=t(v.$a(y,2),4);break;default:v="imm("+u(r)+")";break a}8086==v.style&&r&64?y="["+y+"]":r&16||(y=(v.style==Ie?"$":"0x")+y);v=y}else r&16?
(v=(q&3840)>>8,r=Pe[v],8086==a.style&&q&64&&(6==v&&(r="HL"),r="["+r+"]"),v=r):r&128&&(v=(f>>3&7).toString());if(!v||!v.length){h="INVALID";break}0<h.length&&(h+=",");h+=v||"???"}}}f="";g=Z(e.F)+" ";if(-1!==e.F&&-1!==b.F){do if(f+=t(a.aa(e,1),2),null==e.F)break;while(e.F!=b.F)}g+=ma(f,10);g=g+(q&32768?"*":" ")+ma(k,7);h&&(g+=" "+h);c&&(g=ma(g,40)+";"+c,g=a.b.C.fb?g+("cycles="+Fc(a.b).toString()+" cs="+t(a.b.tb)):g+(null!=d?"="+d.toString():""));return g}
function If(a,b){switch(b){case "IF":a=a.b.ua&512;break;case "SF":a=dd(a.b);break;case "ZF":a=cd(a.b);break;case "AF":a=bd(a.b);break;case "PF":a=ad(a.b);break;case "CF":a=Zc(a.b);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Jf(a,b){return Pe[b]+"="+xf(a,b)+" "}function Kf(a){return Jf(a,7)+Jf(a,8)+Jf(a,9)+Jf(a,10)+Jf(a,11)+If(a,"IF")+If(a,"SF")+If(a,"ZF")+If(a,"AF")+If(a,"PF")+If(a,"CF")}l.uc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Lf(a,b,c){var d=[],e=Re(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],g=f.F>>>0,h=f.Vd;if(e>=g&&e<g+h){e=pa(f.tc,[e-g],a.uc);0<=e?Mf(a,b,e,d):c&&(e=~e,Mf(a,b,e-1,d),Mf(a,b,e,d));break}}return d}function Mf(a,b,c,d){var e={},f=a.G[b].tc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.G[b].Qa[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
function Nf(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c=0;if(a.J)if("clear"==b){for(b=0;b<a.J.length;b++)a.J[b]=[b,0];a.g("frequency data cleared");c++}else if(void 0!==b)a.g("unknown frequency command: "+b),c++;else{var d=a.J.slice();d.sort(function(a,b){return b[1]-a[1]});var e=8086!=a.style?Ne:Oe;for(b=0;b<d.length;b++){var f=d[b][0],g=d[b][1];g&&(a.g((e[a.Fa[f][0]]+" ").substr(0,5)+" ("+ca(f)+"): "+g+" times"),c++)}}c||a.g("no frequency data available")}}
function Of(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ge(a)||a.g("no variables"),!0;if(!c[2])return Ge(a,c[1]);if(!c[3])return delete a.ea[c[1]],!0;b=Be(a,c[3]);return void 0!==b?(a.ea[c[1]]=b,!0):!1}a.g("invalid assignment:"+b);return!1}
function Pf(a,b,c){var d=null;if(b=Se(a,b,!0)){var e=Lf(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.F-e[1])&&(g=" + "+u(f)),f=e[0]+" ("+Z(e[1])+")"+g,c&&a.g(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.F)&&(g=" - "+u(f)),f=e[4]+" ("+Z(e[5])+")"+g,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function Qf(a,b){switch(b[1]){case "8080":a.style=Ie;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.hb=c;break;case "start":a.b.ub=c;break;case "stop":a.b.ib=c;break;default:a.g("unknown cs option");return}void 0!==c&&Bc(a.b);a.g("checksums "+(a.b.C.fb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Gc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.ab.toFixed(2)+"Mhz")+" ("+
a.b.Ra+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.style+"-style mnemonics enabled")}
function Af(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(b&&1<b.length){var e=b[1],f=e.indexOf("=");if(0<f)b=e.substr(f+1),e=e.substr(0,f);else if(2<b.length)b=b[2];else{a.g("missing value for "+b[1]);return}f=Be(a,b);if(void 0===f)return;switch(e.toUpperCase()){case "A":d.i=f&255;break;case "B":d.S=f&255;break;case "BC":d.S=f>>8&255;case "C":d.T=f&255;break;case "D":d.U=f&255;break;
case "DE":d.U=f>>8&255;case "E":d.V=f&255;break;case "H":d.W=f&255;break;case "HL":d.W=f>>8&255;case "L":d.Z=f&255;break;case "SP":d.oa=f&65535;break;case "PC":I(d,f);a.M=Y(d.R);break;case "PS":Rc(d,f);break;case "PSW":Rc(d,f&255|d.ua&-256);d.i=f>>8;break;case "CF":d.da=f?d.da|256:d.da&255;break;case "PF":f?ad(d)||(d.ga^=1):ad(d)&&(d.ga^=1);break;case "AF":d.ya=f?~d.ga&16|d.ya&-17:d.ga&16|d.ya&-17;break;case "ZF":d.da=f?d.da&-256:d.da|255;break;case "SF":f?dd(d)||(d.ga^=192):dd(d)&&(d.ga^=192);break;
case "IF":d.ua=f?d.ua|512:d.ua&-513;break;default:a.g("unknown register: "+e);return}Dc(d);a.g("updated registers:")}a.g(Kf(a));c&&(a.M=Y(d.R),Bf(a,Z(a.M.F)))}}function Rf(a,b){b=na(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(yf(a,c[2])):Be(a,b,!0)}function Sf(a,b,c){var d="t"!=b;c=De(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Da(c,function(){return jb(a,!0)&&a.kb(e,d,!1)},function(){Dc(a.b);jb(a,!1)})}
function Bf(a,b,c,d){if(b=Se(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Se(a,c,!0);if(!d||d.F<b.F)return;e=d.F-b.F;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=kb(a,!1)||a.Y?a.K:null;var g=null!=f?"cycles":null,h=Lf(a,b),k=b.F;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var n=h[0]+":";h[2]&&(n+=" "+h[2]);a.g(n)}h[3]&&(g=h[3],f=null);f=Hf(a,b,g,f);a.g(f);a.M=b;e-=b.F-k;c++}}}
l.Fb=function(a,b,c){if(b)if(a){0>this.j&&this.w.length&&(this.j=0);if(0>this.j||a!=this.w[this.j])this.w.splice(0,0,a),this.j=0;this.j--}else this.P?a="end":a=this.w[this.j+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(na(a.substring(d,f))),d=f+1}}return b};
function Gf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.P&&(a.g("ended assemble at "+Z(a.ca.F)),a.M=a.ca,a.P=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.la=null;if(lb(a)&&0<b.length){a.P&&(b="a "+Z(a.ca.F)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var g=f[0],h=g.charAt(0),k=1;k<g.length;k++){var n=g.charAt(k);if("?"==h||"r"==h||"a">n||"z"<n){f[0]=g.substr(k);f.unshift(g.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=Se(a,f[1],!0);if(p)if(a.ca=
p,void 0===f[2])a.g("begin assemble at "+Z(p.F)),a.P=!0,Dc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.va(p,q[x],1);a.g(Hf(a,a.ca))}}break;case "b":a:{var v=f[0],r=f[1],y=b;if("?"==r)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),a.g("\tbc [a]\tclear breakpoint at addr [a]"),
a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var G=v.charAt(1);if("l"==G){var ga;ga=0+Ff(a,a.I);ga+=Ff(a,a.O);(ga+=Ff(a,a.D))||a.g("no breakpoints")}else if("n"==G)a.ja=De(a,r),a.g("break after "+a.ja+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var C=Y();if("*"!=r&&(C=Se(a,r,!0),!C))break a;r=u(C.F);"c"==G?null==C.F?(Je(a),a.g("all breakpoints cleared")):Df(a,a.I,C)||Df(a,a.O,C)||Df(a,a.D,C)||a.g("breakpoint missing: "+Z(C.F)):
"i"==G?a.g("breakpoint "+(Fb(a.u,C.F)?"enabled":"cleared")+": port "+r+" (input)"):"o"==G?a.g("breakpoint "+(Sb(a.u,C.F)?"enabled":"cleared")+": port "+r+" (output)"):null!=C.F&&(vf(a,C,y),"p"==G?a.Za(a.I,C):"r"==G?a.Za(a.O,C):"w"==G?a.Za(a.D,C):a.g("unknown breakpoint command: "+G))}}}break;case "c":a.Ga&&(a.Ga.value="");break;case "d":a:{var T,da=f[0],X=f[1],ta=f[2],Cb=f[3];if("?"==X){var mb="";for(T in rb)a.wa[T]&&(mb&&(mb+=","),mb+=T);mb+=",state,symbols";a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");
a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");mb.length&&a.g("dump extension commands:\n\t"+mb)}else if("state"==X){var Te=Tf(a.B,!0);"console"==ta?console.log(Te):(a.Ga&&(a.Ga.value=""),a.g(Te))}else if("symbols"==X)for(var jd=0;jd<a.G.length;jd++){var kd=a.G[jd],nb;for(nb in kd.Qa)if("."!=nb.charAt(0)){var Ue=kd.Qa[nb].o;if(void 0!==Ue){var Ve=kd.Qa[nb].l;Ve&&(nb=Ve);a.g(Z(Ue)+" "+nb)}}}else{if("d"==
da){for(T in rb)if(f[1]==T){var We=a.wa[T];We?(f.shift(),f.shift(),We(f)):a.g("no dump registered for "+X);break a}X||(da=a.qb||"db")}else a.qb=da;if("dh"==da){var Xe=X,Ye=ta,Ze="",$e=0,ua=a.fa,Fa=a.L;if(Fa.length){var ia=+Xe||a.eb,Gb=+Ye||10;isNaN(ia)?ia=Gb:Ze="more ";ia>Fa.length&&(a.g("note: only "+Fa.length+" available"),ia=Fa.length);ua-=ia;0>ua&&(null==Fa[Fa.length-1].F?(ia=ua+ia,ua=0):ua+=Fa.length);var ld=[];"call"==Ye&&(Gb=1E5,ld=["CALL"]);for(void 0!==Xe&&a.g(ia+" instructions earlier:");0<
Gb&&ua!=a.fa;){var af=Fa[ua++];if(null==af.F)break;var Hb=Y(af.F),kg=ia--,bf=Hf(a,Hb,"history",kg);(!ld.length||0<=bf.indexOf(ld[0]))&&a.g(bf);Hb.Lb&&(ua+=Hb.Lb,Gb-=Hb.Lb,ia-=Hb.Lb);ua>=Fa.length&&(ua=0);a.eb=ia;$e++;Gb--}}$e||(a.g("no "+Ze+"history available"),a.eb=void 0)}else{var nc=Se(a,X);if(nc){var oc=0;ta&&("l"==ta.charAt(0)&&(ta=ta.substr(1)||Cb),oc=De(a,ta)>>>0,65536<oc&&(oc=65536));for(var Ib="",pc="dd"==da?4:"dw"==da?2:1,qc=pc*oc||128,lg=qc+15>>4||1;lg--&&0<qc;){var rc=0,md=0,Jb,nd="",
cf="",X=Z(nc.F);for(Jb=16;0<Jb&&0<qc;Jb--){var sc=a.aa(nc,1),rc=rc|sc<<(md++<<3);md==pc&&(nd+=t(rc,2*pc),nd+=1==pc?9==Jb?"-":" ":" ",rc=md=0);cf+=32<=sc&&128>sc?String.fromCharCode(sc):".";qc--}Ib&&(Ib+="\n");Ib+=X+" "+nd+(Jb?"":" "+cf)}Ib&&a.g(Ib);a.Ua=nc}}}}break;case "e":if("else"==f[0])break;var tc=1,df=255,ef=a.aa,ff=a.va;"ew"==f[0]&&(tc=2,df=65535,ef=a.$a,ff=a.Ib);var gf=tc<<1,hf=f[1];if(null==hf)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");
else{var uc=Se(a,hf);if(uc)for(var vc=2;vc<f.length;vc++){var Kb=Be(a,f[vc]);if(void 0===Kb){a.g("unrecognized value: "+f[vc]);break}Kb&~df&&a.g("warning: "+t(Kb)+" exceeds "+tc+"-byte value");var mg=ef.call(a,uc);a.g("changing "+Z(uc.F)+" from "+t(mg,gf,!0)+" to "+t(Kb,gf,!0));ff.call(a,uc,Kb,tc)}}break;case "f":Nf(a,f[1]);break;case "g":a:{var jf=f[1],ng=b;if(void 0!==jf){var od=Se(a,jf,!0);if(!od)break a;vf(a,od,ng);a.Za(a.I,od,!0)}a.bb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var pd;if(a.C.Aa)pd="halting",a.qa();else{if(kb(a,!0))break a;pd="already halted"}c||a.g(pd)}break;case "i":if("if"==f[0]){var qd;var Lb=b.substr(2),Lb=na(Lb);Be(a,Lb)?(c||a.g("true: "+Lb),qd=!0):(c||a.g("false: "+Lb),qd=!1);qd||(d=!1);break}if("int"==f[0]){var wc;var og=f[1];if(a.b.ua&512){var rd=Be(a,og);null==rd?wc=!1:(a.g("requesting interrupt level "+rd),Hd(a.b,rd),wc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),wc=!1;wc||(d=!1);break}var sd=f[1];if(sd&&"?"!=sd){var td=
De(a,sd);if(void 0!==td){var pg=Qb(a.u,td);a.g(u(td)+": "+ca(pg))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var qg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var ud=0,kf=Y(),Mb=Y(a.b.oa);for(a.g("stack trace for "+Z(Mb.F));10>ud;){for(var Xa=null,rg=256;65536>Mb.F>>>0;){kf.F=a.$a(Mb,2);if(null==Mb.F||!rg--)break;for(var sg=a,xc=kf,lf=
null,Nb=xc.F,mf=Nb,vd=1;6>=vd&&Nb;vd++){if(2<vd){xc.F=Nb;var yc=Hf(sg,xc);if(0<=yc.indexOf("CALL")){var nf=yc.indexOf(" ");if(Nb+(yc.indexOf(" ",nf+1)-nf-1)/2==mf){lf=yc;break}}}Nb--}xc.F=mf;if(Xa=lf)break}if(!Xa||null==Xa)break;var of=null;if("ks"==qg){var pf=Xa.match(/[0-9A-F]+$/);pf&&(of=Pf(a,pf[0]))}Xa=ma(Xa,50)+" ;"+(of||"stack="+Z(Mb.F));a.g(Xa);ud++}ud||a.g("no return addresses found")}break;case "l":"ln"==f[0]&&Pf(a,f[1],!0);break;case "m":a:{var Ga,Ha=null,N=f[1];"?"==N&&(N=void 0);if(void 0!==
N){var Ra=0;if("all"==N)Ra=1878917119,N=null;else if("on"==N)Ha=!0,N=null;else if("off"==N)Ha=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(Ga in rb)if(N==Ga){Ra=rb[Ga];Ha=!!(a.ta&Ra);break}if(!Ra){a.g("unknown message category: "+N);break a}}if(Ra)if("on"==f[2])a.ta|=Ra,Ha=!0;else if("off"==f[2]&&(a.ta&=~Ra,Ha=!1,1073741824==Ra)){for(var wd=0;wd<a.ra.length;wd++)a.g(a.ra[wd]);a.ra=[]}}var tg=0,Ob="";for(Ga in rb)if(!N||N==Ga){var ug=!!(a.ta&rb[Ga]);if(null===Ha||Ha==ug)Ob&&(Ob+=
","),++tg%10||(Ob+="\n\t"),"key"==Ga&&(Ga="keys"),Ob+=Ga}void 0===N&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ha?Ha?"messages on: ":"messages off: ":"message categories:\n\t")+(Ob||"none"));Ke(a)}break;case "o":var xd=f[1],vg=f[2];if(xd&&"?"!=xd){var yd=De(a,xd,"port #"),zd=De(a,vg);void 0!==yd&&void 0!==zd&&(Ub(a.u,yd,zd),a.g(u(yd)+": "+ca(zd)))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),a.g("warning: port accesses can affect hardware state");
break;case "p":if("print"==f[0]){Rf(a,b.substr(5));break}var qf="pr"==f[0]?1:0,wg=1+qf;if(a.Y)a.g("step in progress");else{var Ad=Y(a.b.R);switch(a.aa(Ad)){case 205:a.Y=wg,sf(Ad,3)}a.Y?(a.Za(a.I,Ad,!0),a.bb()||(a.B&&a.B.xb(),a.Y=0)):Sf(a,qf?"tr":"t")}break;case "r":if("reset"==b){a.B&&a.B.reset();break}Af(a,f);break;case "s":Qf(a,f);break;case "t":Sf(a,f[0],f[1]);break;case "u":Bf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Of(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.30.1 ("+a.b.Wd+",RELEASE"+
(pb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(wa());break;case "?":if(f[1]){Rf(a,b.substr(1));break}var Bd="commands:",Cd;for(Cd in Me)Bd+="\n"+ma(Cd,9)+Me[Cd];Id(a)||(Bd+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Bd);break;default:a.g("unknown command: "+b),d=!1}}}catch(rf){a.g("debugger error: "+(rf.stack||rf.message)),d=!1}return d}function Cc(a,b,c){b=a.Fb(b,c);for(var d in b)if(!Gf(a,b[+d]))return!1;return!0}
Na(function(){for(var a=D(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new He(d);fb(d,c)}});
function Uf(a,b,c){z.call(this,"Computer",a,Uf,67108864);this.C.xa=!1;Vf(this,b);this.O=zc(this,"autoPower",a);this.w=0;this.ea=a.busWidth||a.buswidth;this.B=Wf;this.L=null;this.J=this.ba=!1;this.fa=zc(this,"url")||"";(Math.random()+.1).toString(36);this.j=Xf(this);if(this.b=eb("CPU",this.id)){this.H=eb("Debugger",this.id);this.G=[];for(b=null;b=tb(this,"Video",b);)this.G.push(b);this.u=new vb({id:this.Bb+".bus",busWidth:this.ea},this.b,this.H);var d,e=cb(this.id);if((this.I=eb("Panel",this.id))&&
this.I.Ga)for(b=0;b<e.length;b++)d=e[b],d.ka=this.I.ka,d.g=this.I.g,d.Ga=this.I.Ga;this.g("PC8080 v1.30.1\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Pa&&d.Pa(this,this.u,this.b,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.K=d:this.B=parseInt(d,10));var f;if(a=zc(this,"state")||(f=!0,a.state))b=this.P=a,f||(this.J=!0,this.B=Wf),this.B&&(this.M=new J(this,"1.30.1"),Yf(this.M)?
b=null:delete this.M);!b&&this.B&&(b=Zf(this))&&(this.J=!0);if(b){var g=this;va(b,null,!0,function(a,b,c){c?(g.K=null,g.J=!1,g.ka("Unable to load machine state from server (error "+c+(b?": "+na(b):"")+")")):(g.L=b,g.ba=!0);F(g)})}else F(this);this.N.power||(this.O=!0);!c&&this.O&&$f(this,this.vb)}else w("Unable to find CPU component")}A(Uf);var Wf=0;function Vf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.ca=b}
function zc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.ca&&(d=a.ca[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function $f(a,b,c){for(var d=cb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!lb(f)){lb(f,function(){$f(a,b,c)});return}}b.call(a,c)}
function ag(a,b){var c=new J(a,"1.30.1","validate");if(Yf(c)&&bg(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.ka("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Uf.prototype;
l.vb=function(a){void 0===a&&(a=this.B||(this.L?1:Wf));if(!this.w){this.w++;var b=!1,c=!1;this.Y=!1;var d=this.M||new J(this,"1.30.1");if(-1==a)b=!0;else if(a>Wf){if(Yf(d,this.L)){this.D=new J(this,"1.30.1","failsafe");Yf(this.D)&&(cg(this,d),a=2,dg(this.D));this.D.set("timestamp",ra());eg(this.D);var e=this.B&&!this.J;if(1==a||xa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=bg(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Yf(d,g):("error"==
f&&"no machine state"!=g?(this.ka("Error: "+g),"unable to verify user"==g&&(Ba("user",""),this.j=null)):this.g(f+": "+g),dg(d),Yf(d)?(c=bg(d),e=!0):c=!1))}e&&ag(this,c?d:null)}else 2==a&&d.clear()}else ag(this);delete this.L;delete this.M}e=cb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.b&&(c=fg(this,g,d,b,c));b=[d,a,c];-1!=a?$f(this,this.wc,b):this.wc(b)}};
function fg(a,b,c,d,e){if(!b.C.xa){b.C.xa=!0;if(b.Ea){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ea(f,d)&&f&&(w("Unable to restore state for "+b.type),a.P&&!a.ba?(c.clear(),a.B=Wf,window&&window.location.reload()):a.Y=!0,b.Ea(null),e=!1)}if(!d&&b.ec)for(a=b.ec.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
l.wc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ha=!0;this.C.xa=!0;var d=this.N.power;d&&(d.textContent="Shutdown");this.b&&(fg(this,this.b,b,c,a),this.b.rb());this.Y&&(cg(this,b),b.clear());!c&&this.D&&(this.D.clear(),delete this.D);this.w=0};
function cg(a,b){if(xa("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.j||"";b=b.toString();var d={app:"PC8080",ver:"1.30.1"};d.url=a.fa;d.user=c;d.type="bug";d.data=b;va("http://www.pcjs.org/api/v1/report",d,!0)}}
function Tf(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new J(a,"1.30.1"),g=new J(a,"1.30.1","validate"),h=ra();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.30.1");f.set("url",window?window.location.href:null);f.set("browser",wa());a.b&&a.b.Ia&&(c&&a.b.qa(),d=a.b.Ia(b,c),"object"===typeof d&&f.set(a.b.id,d),c&&(a.b.C.xa=!1,!1===d&&(e=null)));for(var h=cb(a.id),k=0;k<h.length;k++){var n=h[k];n.C.xa&&(n.Ia&&(d=n.Ia(b,c),"object"===typeof d&&f.set(n.id,d)),c&&(n.C.xa=!1,!1===
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.j&&gg(a,a.j,f.toString()),eg(g)&&eg(f)||(e=null,d=h=!0)):a.B&&(d=!0,h=3==a.B),d&&f.clear(h)):e=f.toString());c&&(a.C.xa=!1,b=a.N.power)&&(b.textContent="Power");a.w=0;return e}l.reset=function(){this.u&&this.u.reset&&(hb(this,"Resetting "+this.u.type),this.u.reset());for(var a=cb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&(hb(this,"Resetting "+c.type),c.reset())}};
l.start=function(a,b){for(var c=cb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};l.stop=function(a,b){for(var c=cb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
l.pa=function(a,b,c){var d=this;switch(b){case "power":return this.N[b]=c,c.onclick=function(){d.w||(d.C.xa?Tf(d,!1,!0):$f(d,d.vb))},!0;case "reset":return this.N[b]=c,c.onclick=function(){if(d.C.xa&&!d.w)if(d.B&&!d.K){var a=xa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Tf(d,a,!0);!a&&d.P?window&&window.location.reload():d.vb(Wf)}else d.reset(),d.b&&d.b.rb()},!0;case "save":if(ha())c.parentNode.removeChild(c);else return this.N[b]=
c,c.onclick=function(){var a=Xf(d,!0);if(a){var b=!!(d.B&&!d.K||d.P),c=Tf(d,b);b?gg(d,a,c):d.ka("Resume disabled, machine state not saved")}},!0}return!1};
function Xf(a,b){var c=a.j;c||((c=Aa("user"),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=hg(a,c))||a.ka("The user ID is invalid.")):b&&a.ka("Browser local storage is not available"));return c}
function hg(a,b){a.j=null;b=va(ja()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ba("user",b.data),a.j=b.data)}catch(d){w(d.message+" ("+c+")")}return a.j}function Zf(a){var b=null;a.j&&(b=ja()+"/api/v1/user?req=load&user="+a.j+"&state="+ig(a,"1.30.1"));return b}
function gg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=ig(a,"1.30.1");d.data=c;b=va(ja()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ka("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ka(c),Ba("user",""),a.j=null)}}
function tb(a,b,c){a=cb(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}l.xb=function(a){if(this.G.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.G[0];d.la&&d.la.focus();!a&&window&&window.scrollTo(b,c)}};l.Ja=function(a){this.b&&this.b.Ja(a);this.I&&this.I.Ja(a)};
Na(function(){for(var a=D(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=B(c),c=D(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=B(f),g=new Uf(g,d,!0);fb(g,f);g.O&&$f(g,g.vb)}});Ia.show.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=eb("Computer",c.id))&&c.ha&&!c.C.xa&&c.vb(-1)}});
Ia.exit.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=eb("Computer",c.id))&&c.C.xa&&Tf(c,!(!c.B||c.K),!0)}});function J(a,b,c){this.id=a.id;this.key=ig(a,b,c);this.H=a.H;dg(this,a.Ld)}function ig(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
J.prototype={constructor:J,set:function(a,b){try{this[this.id][a]=b}catch(c){}},get:function(a){return this[this.id][a]||null},value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){dg(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,
1);c=0}}};function dg(a,b){a[a.id]={};b&&a.set("parms",b);a.b=!1}function eg(a){var b=!0;if(za()){var c=JSON.stringify(a[a.id]);Ba(a.key,c)||(w("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function bg(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){w(c.message||c),b=!1}return b}function Yf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:za()&&(b=Aa(a.key))?(a[a.id]=b,a.b=!0):!1}var jg=0;
function xg(a,b,c,d,e,f){e("Loading "+a+"...");va(a,null,!0,function(g,h,k){k?(h||(h="unable to load "+a+" ("+k+")"),f(h,null)):yg(h,a,b,c,d,e,f)})}
function yg(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(bb(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){f=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?zg(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function zg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");va(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],n,p=/( [a-z]+=)(['"])(.*?)\2/g;n=p.exec(f);)k=0>k.indexOf(n[1])?k.replace(">",n[0]+">"):k.replace(new RegExp(n[1]+"(['\"])(.*?)\\1"),n[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);zg(a,b,c)}})}else c(a,null)}
function Ag(a,b,c,d){function e(a){if(void 0===h){var b=g&&D(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=la(a))}function f(a){e("Error: "+a);k&&(--jg||Qa(!0));k=!1}var g,h,k=!0;jg++;ab[a]={};try{if(g=document.getElementById(a)){var n;if("object"==typeof resources&&(n=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=n:q.appendChild(document.createTextNode(n));p.appendChild(q)}c||
(c="/versions/pc8080/1.30.1/components.xsl");n=function(d,h){h?xg(c,null,null,!1,e,function(d,k){k?(bb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--jg||Qa(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--jg||Qa(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?xg(b,a,d,!0,e,n):yg(b,null,a,d,!1,e,n)}else f("missing machine element: "+a)}catch(x){f(x.message)}return k}window.embedPC8080=function(a,b,c,d){Qa(!1);return Ag(a,b,c,d)};window.enableEvents=Qa;window.sendEvent=Sa;})();

View file

@ -0,0 +1,197 @@
(function(){/*
http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/memory.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpu.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpustate.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpuops.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/chipset.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/rom.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/ram.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/serialport.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2016
*/
var k,m={pd:1,qd:3,rd:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,jb:65,Mb:66,Ob:67,mb:68,E:69,Rb:70,Sb:71,Tb:72,Ub:73,ac:74,bc:75,ob:76,ic:77,jc:78,mc:79,nc:80,Q:81,tc:82,wc:83,Bc:84,Cc:85,Dc:86,Ec:87,Gc:88,Hc:89,Ic:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Zd:97,$d:98,ae:99,d:100,e:101,be:102,ce:103,de:104,ee:105,fe:106,k:107,ge:108,
he:109,n:110,ie:111,p:112,q:113,r:114,je:115,t:116,ke:117,le:118,me:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126};
function aa(a){var b=16,c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==
e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function p(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function ba(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ca(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function da(){var a=ea();return-1!==a.indexOf("pcjs.org",a.length-8)}var fa={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ga(a){return a.replace(/[&<>"']/g,function(a){return fa[a]})}function ha(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
var ia={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"},ja=Date.now||function(){return+new Date};
function ka(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function la(a,b,c,d){var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,f,e))});if(b&&"object"==
typeof b){var l="",n;for(n in b)b.hasOwnProperty(n)&&(l&&(l+="&"),l+=n+"="+encodeURIComponent(b[n]));l=l.replace(/%20/g,"+");h.open("POST",a,!!c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,!!c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}function ea(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function q(a){window&&window.alert(a)}function ma(a){var b=!1;window&&(b=window.confirm(a));return b}var na=null;function oa(){if(null==na){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}na=a}return na}function pa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function qa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ra(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var ta={init:[],show:[],exit:[]},ua=!1,va=!1,wa=!0;function xa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function ya(a){ta.init.push(a)}
function za(a){if(wa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Aa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Ba(a){!wa&&a?(wa=!0,ua&&Ca("init"),va&&Ca("show")):wa=a}function Ca(a){ta[a]&&za(ta[a])}xa("onload",function(){ua=!0;za(ta.init)});xa("onpageshow",function(){va=!0;za(ta.show)});xa(ra("Opera")||ra("iOS")?"onunload":"onbeforeunload",function(){za(ta.exit)});
function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.ub=b.comment;this.Mc=b;b=this.id.indexOf(".");0>b?this.Sa=this.id:(this.Ta=this.id.substr(0,b),this.Sa=this.id.substr(b+1));this[a]=c;this.l={ready:!1,Wa:!1,eb:!1,Y:!1,error:!1};this.Za=null;this.l.error=!1;this.A={};this.O=null;v.push(this)}var Da=void 0,Ea={};
if(window){Da||(Da=window.location.search.substr(1));for(var Fa,Ga=/\+/g,Ha=/([^&=]+)=?([^&]*)/g;Fa=Ha.exec(Da);)Ea[decodeURIComponent(Fa[1].replace(Ga," "))]=decodeURIComponent(Fa[2].replace(Ga," "))}function Ia(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
function w(a,b){b||(b=r);a.prototype=Ia(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ja=window.PCjs.Machines||(window.PCjs.Machines={}),v=window.PCjs.Components||(window.PCjs.Components=[])}else Ja={},v=[];function Ka(a,b,c){Ja[a]&&b&&(Ja[a][b]=c)}function Aa(a,b,c){b||q((c?c+": ":"")+a)}
function La(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<v.length;b++){var d=v[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Ma(a){if(void 0!==a){var b;for(b=0;b<v.length;b++)if(v[b].id===a)return v[b]}return null}function Oa(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<v.length;d++)if(c)c==v[d]&&(c=null);else if(!(a!=v[d].type||b&&v[d].id.indexOf(b)))return v[d]}return null}
function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}function Pa(a,b){b=A(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),l=0;l<h.length;l++)switch(g=h[l],g){case "pc8080-binding":(g=z(f))&&g.binding&&a.V(g.type,g.binding,f,g.value),l=h.length}}}}
function A(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
r.prototype={constructor:r,parent:null,toString:function(){return this.name?this.name:this.id||this.type},V:function(a,b,c){switch(b){case "clear":return this.A[b]||(this.A[b]=c,c.onclick=function(a){return function(){a.A.print&&(a.A.print.value="")}}(this)),!0;case "print":return this.A[b]||(this.va=this.A[b]=c,c.value="",this.da=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
this.L=function(a){this.da(a,this.Sa)}),!0;default:return!1}},log:function(){},da:function(){},status:function(a){this.da(this.Sa+": "+a)},L:function(a,b,c){Aa(a,b,c||this.type)},ga:function(){return this.l.Y=!0},ia:function(a,b){b&&(this.l.Y=!1);return!0}};function Qa(a,b){if(a.l.eb)return a.l.Wa=!1,a.l.eb=!1;if(a.l.error)return a.da(a.toString()+" error"),!1;a.l.Wa=b;return a.l.Wa}function B(a){if(!a.l.error&&(a.l.ready=!0,a.l.ready)){var b=a.Za;a.Za=null;b&&b()}}
function Ra(a,b){b&&(a.l.ready?b():a.Za=b);return a.l.ready}Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
var Sa="undefined"!==typeof ArrayBuffer,Ta=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Ua(a){r.call(this,"Panel",a,Ua)}w(Ua);k=Ua.prototype;k.V=function(a,b,c,d){return this.v&&this.v.V(a,b,c,d)||this.a&&this.a.V(a,b,c,d)||this.m&&this.m.V(a,b,c,d)?!0:this.parent.V.call(this,a,b,c,d)};k.qa=function(a,b,c,d){this.v=a;this.j=b;this.a=c;this.O=d;this.m=Va(a,"Keyboard")};k.ga=function(a,b){b||Wa();return!0};k.ia=function(){return!0};k.Aa=function(){};
function Wa(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=Ma(e.id);f||(a=!0,f=new Ua(e));Pa(f,d);a&&B(f)}}ya(Wa);
function Xa(a,b,c){r.call(this,"Bus",a,Xa);this.a=b;this.O=c;this.s=a.busWidth||16;this.u=Math.pow(2,this.s);this.g=this.u-1|0;this.j=(this.s>>1)+2;10>this.j&&(this.j=10);15<this.j&&(this.j=15);this.c=1<<this.j;this.w=this.c>>2;this.f=this.c-1;this.i=this.u/this.c|0;this.o=this.i-1;this.m=[];this.v=[];this.B=[];this.C=[];a=new D;Ya(a,this.O);this.b=Array(this.i);for(b=0;b<this.i;b++)this.b[b]=a;B(this)}w(Xa);Xa.prototype.reset=function(){};Xa.prototype.ga=function(a,b){b||this.reset();return!0};
function Za(a,b,c,d){for(var e=b,f=c,g=e>>>a.j;0<f&&g<a.b.length;){var h=a.b[g],l=g*a.c,n=a.c-(e-l);n>f&&(n=f);if(h&&h.size){if(h.type==d){if(e+f<=h.Ma)return h.cb+=h.Ma-e,h.Ma=e,!0;if(e>=h.Ma+h.cb){n=h.size-(e-l);n>f&&(n=f);h.cb=e-h.Ma+n;e=l+a.c;f-=n;g++;continue}}return $a(1,e,f)}e=new D(e,n,a.c,d);Ya(e,a.O,h);a.b[g++]=e;e=l+a.c;f-=n}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+ab[d]+" at "+p(b,4,!0)),!0):$a(2,b,c)}Xa.prototype.J=function(a){return this.b[(a&this.g)>>>this.j].Pa(a&this.f,a)};
function bb(a,b){return a.b[(b&a.g)>>>a.j].bb(b&a.f,b)}function cb(a,b){var c=b&a.f,d=(b&a.g)>>>a.j;return c!=a.f?a.b[d].kd(c,b):a.b[d++].Pa(c,b)|a.b[d&a.o].Pa(0,b+1)<<8}Xa.prototype.aa=function(a,b){this.b[(a&this.g)>>>this.j].Qa(a&this.f,b&255,a)};function db(a,b,c){a.b[(b&a.g)>>>a.j].Hb(b&a.f,c&255,b)}function fb(a,b,c){var d=b&a.f,e=(b&a.g)>>>a.j;d!=a.f?a.b[e].ld(d,c&65535,b):(a.b[e++].Qa(d,c&255,b),a.b[e&a.o].Qa(0,c>>8&255,b+1))}
function gb(a){for(var b=0,c=[],d=0;d<a.i;d++){var e=a.b[d];if(e.na||e.Ab){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var n=e[g],u=g+1;u<e.length&&e[u]===n;)u++;l[h++]=u-g;l[h++]=n;g=u}l.length<e.length&&(e=l)}c[f]=e}}return c}function hb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.m[l]?q("Input port "+p(l,4,!0)+" already registered"):f.m[l]=[h,!1]}}
function ib(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.v[l]?q("Output port "+p(l,4,!0)+" already registered"):f.v[l]=[h,!1]}}function $a(a,b,c){q("Memory block error ("+a+": "+p(b)+","+p(c)+")");return!1}var jb;if(Sa){var kb=new ArrayBuffer(2);(new DataView(kb)).setUint16(0,256,!0);jb=256===(new Uint16Array(kb))[0]}else jb=!1;var lb=jb;
function D(a,b,c,d){this.id=mb+=2;this.a=null;this.Ma=a;this.cb=b;this.size=c||0;this.type=d||nb;this.c=d==ob;Ya(this);this.na=this.Ab=!1;if(c)if(Sa)this.j=new ArrayBuffer(c),this.A=new DataView(this.j,0,c),this.b=new Uint8Array(this.j,0,c),this.i=new Uint16Array(this.j,0,c>>1),this.a=new Int32Array(this.j,0,c>>2),pb(this,lb?qb:rb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;pb(this,sb)}else pb(this)}var nb=0,ob=2,ab=["NONE","RAM","ROM","VID","H/W"],mb=0;
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(Sa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.A.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Sa)for(b=0;b<a.length;b++)this.A.setInt32(b<<2,a[b],!0);else this.a=a;return this.na=!0}return!1},m:function(){return 255},o:function(){},v:function(a,b){return this.Pa(a++,b++)|this.Pa(a,b)<<8},s:function(a,b,c){this.Qa(a++,b&255,c++);this.Qa(a,b>>8,c)},C:function(a){return this.a[a>>
2]>>>((a&3)<<3)&255},I:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},S:function(a,b){var c=a>>2;a=(a&3)<<3;this.a[c]=this.a[c]&~(255<<a)|b<<a;this.na=!0},ea:function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.a[c]=this.a[c]&~(65535<<a)|b<<a:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.na=!0},w:function(a,b){return this.bb(a,b)},H:function(a,b){return this.Eb(a,b)},N:function(a,b,c){this.c||this.Hb(a,b,c)},W:function(a,
b,c){this.c||this.X(a,b,c)},u:function(a){return this.b[a]},B:function(a){return this.b[a]},G:function(a){return this.A.getUint16(a,!0)},M:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.i[a>>1]},K:function(a,b){this.b[a]=b;this.na=!0},R:function(a,b){this.b[a]=b;this.na=!0},U:function(a,b){this.A.setUint16(a,b,!0);this.na=!0},Z:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.i[a>>1]=b;this.na=!0}};function Ya(a,b,c){a.O=b;a.f=a.g=0;c&&((a.f=c.f)&&tb(a,ub,!1),(a.g=c.g)&&vb(a,ub,!1))}
function vb(a,b,c){c&&a.g||(a.Qa=!a.c&&b[1]||a.o,a.ld=!a.c&&b[3]||a.s);if(c||void 0===c)a.Hb=b[1]||a.o,a.X=b[3]||a.s}function tb(a,b,c){c&&a.f||(a.Pa=b[0]||a.m,a.kd=b[2]||a.v);if(c||void 0===c)a.bb=b[0]||a.m,a.Eb=b[2]||a.v}function pb(a,b){b||(b=wb);tb(a,b,void 0);vb(a,b,void 0)}var wb=[],sb=[D.prototype.C,D.prototype.S,D.prototype.I,D.prototype.ea],ub=[D.prototype.w,D.prototype.N,D.prototype.H,D.prototype.W];
if(Sa)var rb=[D.prototype.u,D.prototype.K,D.prototype.G,D.prototype.U],qb=[D.prototype.B,D.prototype.R,D.prototype.M,D.prototype.Z];function xb(a,b){r.call(this,"CPU",a,xb);var c=a.multiplier||1;this.la=a.cycles||b;this.K=c;this.Ca=Math.round(this.la/1E4)/100;this.U=this.Ca*this.K;this.l.oa=!1;this.l.Fb=!1;this.l.Na=a.autoStart;this.l.yb=!1;this.l.Xa=!1;this.ta=this.X=0;this.ua=a.csStart;this.Z=a.csInterval;this.ea=a.csStop;this.G=[];this.Va=this.hb.bind(this);B(this)}w(xb);var yb=["power","reset"];
k=xb.prototype;k.qa=function(a,b,c,d){this.v=a;this.j=b;this.O=d;for(b=0;b<yb.length;b++)(c=this.A[yb[b]])&&this.v.V(null,yb[b],c);this.M=Va(a,"ChipSet");a=zb(a,"autoStart");null!=a&&(this.l.Na="true"==a?!0:"false"==a?!1:!!a);B(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.ga=function(a,b){if(!b){if(a&&this.restore){Ab(this);if(!this.restore(a))return!1;Bb(this)}else this.reset();this.da("No debugger detected")}Cb(this);return!0};
k.ia=function(a){return a?this.save():!0};k.Na=function(){return this.l.Na||void 0===this.A.run?(this.hb(!0),!0):!1};k.Bb=function(){return 0};function Bb(a){void 0===a.ua&&(a.ua=0);void 0===a.Z&&(a.Z=-1);void 0===a.ea&&(a.ea=-1);a.l.Xa=0<=a.ua&&0<a.Z;a.l.Xa&&(a.ta=0,a.X=a.ua-a.H)}
k.V=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.A[b]=c;a=!0;break;case "run":this.A[b]=c;c.onclick=function(){var a;if(a=d.v)if(a=d.v,a.l.Y)a=!0;else{var b=null,c,h=La(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.l.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.l.Y);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.l.ready?"powered yet":"ready yet"+(b.Za?" (waiting for notification)":""))+".");a=!1}a&&(d.l.oa?Db(d):d.hb())};a=!0;
break;case "speed":this.A[b]=c;a=!0;break;case "setSpeed":this.A[b]=c,c.onclick=function(){Eb(d,d.K<<1,!0)},c.textContent=this.U.toFixed(2)+"Mhz",a=!0}return a};function Fb(a,b){var c=1;b&&1<a.K&&a.R&&(c=a.R/a.Ca);a.Ka=Math.round(1E3/30);a.xa=Math.floor(a.la/30*c);b||(a.ja=a.xa);a.Da=0}function Gb(a){return a.H+a.N+a.W-a.a}function Ab(a){a.R=0;a.La=0;a.H=a.N=a.W=a.a=0;Bb(a);Eb(a,1)}
function Eb(a,b,c){if(void 0!==b){.8>a.R/a.U&&(b=1);a.K=b;b=a.Ca*a.K;if(a.U!=b){a.U=b;b=a.U.toFixed(2)+"Mhz";var d=a.A.setSpeed;d&&(d.textContent=b);a.da("target speed: "+b)}c&&a.v&&Hb(a.v)}a.H+=a.N;a.N=0;a.I=ja();a.S=0;Fb(a)}function Ib(a,b){var c=a.G.length;a.G.push([-1,b]);return c}function Kb(a,b,c){0<=b&&b<a.G.length&&0>a.G[b][0]&&(c*=a.la*a.K/1E3,a.G[b][0]=c+Lb(a))}function Lb(a,b){var c=a.W-=a.a;a.a=0;b&&(a.W=0);return c}
k.hb=function(a){if(Qa(this,!0)){if(!this.l.oa){Eb(this);this.v&&this.v.start(this.I,Gb(this));this.l.oa=!0;this.l.Fb=!0;this.M&&this.M.start();var b=this.A.run;b&&(b.textContent="Halt");this.v&&(this.v.Aa(!0),a&&Hb(this.v,!0))}this.Da>=this.la&&Fb(this,!0);this.pa=0;this.sa=ja();this.S&&(a=this.sa-this.S,a>this.Ka&&(this.I+=a,this.I>this.sa&&(this.I=this.sa)));try{do{for(var c,d=this.l.Xa?1:this.xa,e=this.G.length-1;0<=e;e--){var f=this.G[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Gb(c);c=Lb(this,!0);
this.pa+=c;this.N+=c;a=c;this.l.Xa&&(b=!1,this.ta=this.ta+this.Bb()|0,this.X-=a,0>=this.X&&(this.X+=this.Z,b=!0),0<=this.ea&&this.ea<=Gb(this)&&(this.Z=this.ea=-1,Bb(this),Db(this),b=!0),b&&this.da(Gb(this)+" cycles: checksum="+p(this.ta)));a=c;for(var g=this.G.length-1;0<=g;g--){var h=this.G[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ja-=c;if(0>=this.ja){this.ja+=this.xa;15<=++this.La&&(this.v&&this.v.Aa(),this.La=0);break}}while(this.l.oa)}catch(l){Db(this);Cb(this);this.v&&this.v.stop(ja(),
Gb(this));Qa(this,!1);c=l.stack||l.message;this.l.error=!0;this.L(c);return}c=setTimeout;d=this.Va;this.S=ja();e=this.Ka;this.pa&&(e=Math.round(e*this.pa/this.xa));e-=this.S-this.sa;if(f=this.S-this.I)this.R=Math.round(this.N/(10*f))/100,864E5<=f&&(this.H=0,Eb(this));if(0>e||this.R<this.U)-1E3>e&&(this.I-=e),e=0;this.Da+=this.pa;this.S+=e;c(d,e)}else Cb(this),this.v&&this.v.stop(ja(),Gb(this))};k.Gb=function(){return 0};
function Db(a){a.l.Wa&&(a.l.eb=!0);Lb(a);a.H+=a.N;a.N=0;if(a.l.oa){a.l.oa=!1;a.M&&a.M.stop();var b=a.A.run;b&&(b.textContent="Run")}a.l.complete=void 0}function Cb(a){if(a.v){for(var b=a.v,c=0;c<b.m.length;c++)Mb(b.m[c],void 0);a.v.Aa(void 0)}}function Nb(a){xb.call(this,a,1E6);this.Ha=Ob;Ab(this);this.l.complete=this.l.Nc=!1;this.Ja=0;this.ra=[];this.Ia=0;Pb(this)}w(Nb,xb);function Qb(a,b){a.ra.push(b)}k=Nb.prototype;k.reset=function(){this.l.oa&&Db(this);Pb(this);Ab(this);this.l.error=!1;this.parent.reset.call(this)};
function Pb(a){a.b=0;a.c=0;a.D=0;a.f=0;a.F=0;a.g=0;a.i=0;a.u=0;E(a,a.Ia);Rb(a,0);a.B=0}function Sb(a,b){a.Ia=b;E(a,b)}k.Bb=function(){var a=this.b+this.c+this.D+this.f+this.F+this.g+this.i|0;return a=a+this.u+this.o+Tb(this)|0};k.save=function(){var a=new F(this);a.set(0,[this.b,this.c,this.D,this.f,this.F,this.g,this.i,this.u,this.o,Tb(this)]);a.set(1,[this.B,this.H,this.K]);a.set(2,gb(this.j));return a.data()};
k.restore=function(a){var b=a[0];this.b=b[0];this.c=b[1];this.D=b[2];this.f=b[3];this.F=b[4];this.g=b[5];this.i=b[6];this.u=b[7]&65535;E(this,b[8]);Rb(this,b[9]);b=a[1];this.B=b[0];this.H=b[1];Eb(this,b[3]);a:{b=this.j;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.w){for(var f=0,g=Array(b.w),h=0;h<e.length-1;)for(var l=e[h++],n=e[h++];l--;)g[f++]=n;e=g}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
k.V=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.A[b]=c;this.Ja++;a=!0;break;default:a=this.parent.V.call(this,a,b,c)}return a};function Ub(a){return a.c<<8|a.D}function Vb(a,b){a.c=b>>8&255;a.D=b&255}function Wb(a){return a.f<<8|a.F}function Xb(a,b){a.f=b>>8&255;a.F=b&255}function G(a){return a.g<<8|a.i}
function I(a,b){a.g=b>>8&255;a.i=b&255}function E(a,b){a.o=b&65535}function J(a){return a.m&256?1:0}function K(a,b){a.m=a.m&255|b}function Yb(a){return Ta[a.s&255]?4:0}function Tb(a){return a.C&-214|(a.s&128?128:0)|(a.m&255?0:64)|((a.s^a.w)&16?16:0)|Yb(a)|J(a)}function Rb(a,b){a.m=a.s=a.w=0;b&1&&(a.m|=256);b&4||(a.s|=1);b&16&&(a.w|=16);b&64||(a.m|=255);b&128&&(a.s^=192);a.C=a.C&-726|b&512|2}function L(a,b){a.w=a.b^b;return a.s=(a.m=a.b+b)&255}
function Zb(a,b){a.w=a.b^b;return a.s=(a.m=a.b+b+(a.m&256?1:0))&255}function $b(a,b){a.m=a.s=a.w=a.b&b;(a.b|b)&8&&(a.w^=16);return a.m}function ac(a,b){a.w=b^255;b=a.s=b+255&255;a.m=a.m&-256|b;return b}function bc(a,b){a.w=b;b=a.s=b+1&255;a.m=a.m&-256|b;return b}function cc(a,b){return a.s=a.m=a.w=a.b|b}function M(a,b){b^=255;a.w=a.b^b;return a.s=(a.m=a.b+b+1^256)&255}function dc(a,b){b^=255;a.w=a.b^b;return a.s=(a.m=a.b+b+(a.m&256?0:1)^256)&255}function ec(a,b){return a.s=a.m=a.w=a.b^b}k.J=function(a){return this.j.J(a)};
k.aa=function(a,b){this.j.aa(a,b)};function N(a){var b=a.J(a.o);E(a,a.o+1);return b}function O(a){var b=cb(a.j,a.o);E(a,a.o+2);return b}function P(a){var b=cb(a.j,a.u);a.u=a.u+2&65535;return b}function R(a,b){a.u=a.u-2&65535;fb(a.j,a.u,b)}function fc(a){if(a.a&&a.B&255&&a.C&512){for(var b=0;8>b&&!(a.B&1<<b);b++);a.B&=~(0>b?255:1<<b);a.C&=-513;a.B&=-257;a.Ha[199|b<<3].call(a)}return a.B&256?(Lb(a),!1):!0}function gc(a,b){a.B|=1<<b;a.C&512&&Lb(a)}
function S(a,b,c,d){d=d||2;a.A[b]&&(void 0===c&&(a.l.error=!0,a.L("Value for "+b+" is invalid"),Db(a)),c=!a.l.oa||a.l.yb?p(c,d):"--------".substr(0,d),a.A[b].textContent!=c&&(a.A[b].textContent=c))}
k.Aa=function(a){this.Ja&&(a||!this.l.oa||this.l.yb)&&(S(this,"A",this.b),S(this,"B",this.c),S(this,"C",this.D),S(this,"BC",Ub(this),4),S(this,"D",this.f),S(this,"E",this.F),S(this,"DE",Wb(this),4),S(this,"H",this.g),S(this,"L",this.i),S(this,"HL",G(this),4),S(this,"SP",this.u,4),S(this,"PC",this.o,4),a=Tb(this),S(this,"PS",a,4),S(this,"IF",a&512?1:0,1),S(this,"SF",a&128?1:0,1),S(this,"ZF",a&64?1:0,1),S(this,"AF",a&16?1:0,1),S(this,"PF",a&4?1:0,1),S(this,"CF",a&1?1:0,1));if(a=this.A.speed)a.textContent=
this.l.oa&&this.R?this.R.toFixed(2)+"Mhz":"Stopped"};k.Gb=function(a){this.l.complete=!0;this.l.Nc=!1;this.l.Fb=!1;this.W=this.a=a;if(fc(this)){do this.Ha[N(this)].call(this);while(0<this.a)}return this.l.complete?this.W-this.a:void 0===this.l.complete?0:-1};ya(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nb(d);Pa(d,c)}});function hc(){this.a-=4}function ic(){E(this,O(this));this.a-=10}function jc(){E(this,P(this));this.a-=10}
function kc(){var a=O(this);R(this,this.o);E(this,a);this.a-=17}
var Ob=[hc,function(){Vb(this,O(this));this.a-=10},function(){this.aa(Ub(this),this.b);this.a-=7},function(){Vb(this,Ub(this)+1);this.a-=5},function(){this.c=bc(this,this.c);this.a-=5},function(){this.c=ac(this,this.c);this.a-=5},function(){this.c=N(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;K(this,a&256);this.a-=4},hc,function(){var a;I(this,a=G(this)+Ub(this));K(this,a>>8&256);this.a-=10},function(){this.b=this.J(Ub(this));this.a-=7},function(){Vb(this,Ub(this)-1);this.a-=5},
function(){this.D=bc(this,this.D);this.a-=5},function(){this.D=ac(this,this.D);this.a-=5},function(){this.D=N(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;K(this,a);this.a-=4},hc,function(){Xb(this,O(this));this.a-=10},function(){this.aa(Wb(this),this.b);this.a-=7},function(){Xb(this,Wb(this)+1);this.a-=5},function(){this.f=bc(this,this.f);this.a-=5},function(){this.f=ac(this,this.f);this.a-=5},function(){this.f=N(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|J(this);
K(this,a&256);this.a-=4},hc,function(){var a;I(this,a=G(this)+Wb(this));K(this,a>>8&256);this.a-=10},function(){this.b=this.J(Wb(this));this.a-=7},function(){Xb(this,Wb(this)-1);this.a-=5},function(){this.F=bc(this,this.F);this.a-=5},function(){this.F=ac(this,this.F);this.a-=5},function(){this.F=N(this);this.a-=7},function(){var a=this.b<<8;this.b=(J(this)<<8|this.b)>>1;K(this,a&256);this.a-=4},hc,function(){I(this,O(this));this.a-=10},function(){var a=O(this);fb(this.j,a,G(this));this.a-=16},function(){I(this,
G(this)+1);this.a-=5},function(){this.g=bc(this,this.g);this.a-=5},function(){this.g=ac(this,this.g);this.a-=5},function(){this.g=N(this);this.a-=7},function(){var a=0,b=J(this);if((this.s^this.w)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=L(this,a);K(this,b?256:0);this.a-=4},hc,function(){var a;I(this,a=G(this)+G(this));K(this,a>>8&256);this.a-=10},function(){var a;a=O(this);a=cb(this.j,a);I(this,a);this.a-=16},function(){I(this,G(this)-1);this.a-=5},function(){this.i=bc(this,this.i);
this.a-=5},function(){this.i=ac(this,this.i);this.a-=5},function(){this.i=N(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},hc,function(){this.u=O(this)&65535;this.a-=10},function(){this.aa(O(this),this.b);this.a-=13},function(){this.u=this.u+1&65535;this.a-=5},function(){var a=G(this);this.aa(a,bc(this,this.J(a)));this.a-=10},function(){var a=G(this);this.aa(a,ac(this,this.J(a)));this.a-=10},function(){this.aa(G(this),N(this));this.a-=10},function(){this.m|=256;this.a-=4},hc,function(){var a;
I(this,a=G(this)+this.u);K(this,a>>8&256);this.a-=10},function(){this.b=this.J(O(this));this.a-=13},function(){this.u=this.u-1&65535;this.a-=5},function(){this.b=bc(this,this.b);this.a-=5},function(){this.b=ac(this,this.b);this.a-=5},function(){this.b=N(this);this.a-=7},function(){K(this,J(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.c=this.D;this.a-=5},function(){this.c=this.f;this.a-=5},function(){this.c=this.F;this.a-=5},function(){this.c=this.g;this.a-=5},function(){this.c=this.i;
this.a-=5},function(){this.c=this.J(G(this));this.a-=7},function(){this.c=this.b;this.a-=5},function(){this.D=this.c;this.a-=5},function(){this.a-=5},function(){this.D=this.f;this.a-=5},function(){this.D=this.F;this.a-=5},function(){this.D=this.g;this.a-=5},function(){this.D=this.i;this.a-=5},function(){this.D=this.J(G(this));this.a-=7},function(){this.D=this.b;this.a-=5},function(){this.f=this.c;this.a-=5},function(){this.f=this.D;this.a-=5},function(){this.a-=5},function(){this.f=this.F;this.a-=
5},function(){this.f=this.g;this.a-=5},function(){this.f=this.i;this.a-=5},function(){this.f=this.J(G(this));this.a-=7},function(){this.f=this.b;this.a-=5},function(){this.F=this.c;this.a-=5},function(){this.F=this.D;this.a-=5},function(){this.F=this.f;this.a-=5},function(){this.a-=5},function(){this.F=this.g;this.a-=5},function(){this.F=this.i;this.a-=5},function(){this.F=this.J(G(this));this.a-=7},function(){this.F=this.b;this.a-=5},function(){this.g=this.c;this.a-=5},function(){this.g=this.D;this.a-=
5},function(){this.g=this.f;this.a-=5},function(){this.g=this.F;this.a-=5},function(){this.a-=5},function(){this.g=this.i;this.a-=5},function(){this.g=this.J(G(this));this.a-=7},function(){this.g=this.b;this.a-=5},function(){this.i=this.c;this.a-=5},function(){this.i=this.D;this.a-=5},function(){this.i=this.f;this.a-=5},function(){this.i=this.F;this.a-=5},function(){this.i=this.g;this.a-=5},function(){this.a-=5},function(){this.i=this.J(G(this));this.a-=7},function(){this.i=this.b;this.a-=5},function(){this.aa(G(this),
this.c);this.a-=7},function(){this.aa(G(this),this.D);this.a-=7},function(){this.aa(G(this),this.f);this.a-=7},function(){this.aa(G(this),this.F);this.a-=7},function(){this.aa(G(this),this.g);this.a-=7},function(){this.aa(G(this),this.i);this.a-=7},function(){var a=this.o-1;if(this.ra.length)for(var b=0;b<this.ra.length;b++)if(this.ra[b](a))return;this.a-=7;this.B|=256;Lb(this);this.C&512||Db(this)},function(){this.aa(G(this),this.b);this.a-=7},function(){this.b=this.c;this.a-=5},function(){this.b=
this.D;this.a-=5},function(){this.b=this.f;this.a-=5},function(){this.b=this.F;this.a-=5},function(){this.b=this.g;this.a-=5},function(){this.b=this.i;this.a-=5},function(){this.b=this.J(G(this));this.a-=7},function(){this.a-=5},function(){this.b=L(this,this.c);this.a-=4},function(){this.b=L(this,this.D);this.a-=4},function(){this.b=L(this,this.f);this.a-=4},function(){this.b=L(this,this.F);this.a-=4},function(){this.b=L(this,this.g);this.a-=4},function(){this.b=L(this,this.i);this.a-=4},function(){this.b=
L(this,this.J(G(this)));this.a-=7},function(){this.b=L(this,this.b);this.a-=4},function(){this.b=Zb(this,this.c);this.a-=4},function(){this.b=Zb(this,this.D);this.a-=4},function(){this.b=Zb(this,this.f);this.a-=4},function(){this.b=Zb(this,this.F);this.a-=4},function(){this.b=Zb(this,this.g);this.a-=4},function(){this.b=Zb(this,this.i);this.a-=4},function(){this.b=Zb(this,this.J(G(this)));this.a-=7},function(){this.b=Zb(this,this.b);this.a-=4},function(){this.b=M(this,this.c);this.a-=4},function(){this.b=
M(this,this.D);this.a-=4},function(){this.b=M(this,this.f);this.a-=4},function(){this.b=M(this,this.F);this.a-=4},function(){this.b=M(this,this.g);this.a-=4},function(){this.b=M(this,this.i);this.a-=4},function(){this.b=M(this,this.J(G(this)));this.a-=7},function(){this.b=M(this,this.b);this.a-=4},function(){this.b=dc(this,this.c);this.a-=4},function(){this.b=dc(this,this.D);this.a-=4},function(){this.b=dc(this,this.f);this.a-=4},function(){this.b=dc(this,this.F);this.a-=4},function(){this.b=dc(this,
this.g);this.a-=4},function(){this.b=dc(this,this.i);this.a-=4},function(){this.b=dc(this,this.J(G(this)));this.a-=7},function(){this.b=dc(this,this.b);this.a-=4},function(){this.b=$b(this,this.c);this.a-=4},function(){this.b=$b(this,this.D);this.a-=4},function(){this.b=$b(this,this.f);this.a-=4},function(){this.b=$b(this,this.F);this.a-=4},function(){this.b=$b(this,this.g);this.a-=4},function(){this.b=$b(this,this.i);this.a-=4},function(){this.b=$b(this,this.J(G(this)));this.a-=7},function(){this.b=
$b(this,this.b);this.a-=4},function(){this.b=ec(this,this.c);this.a-=4},function(){this.b=ec(this,this.D);this.a-=4},function(){this.b=ec(this,this.f);this.a-=4},function(){this.b=ec(this,this.F);this.a-=4},function(){this.b=ec(this,this.g);this.a-=4},function(){this.b=ec(this,this.i);this.a-=4},function(){this.b=ec(this,this.J(G(this)));this.a-=7},function(){this.b=ec(this,this.b);this.a-=4},function(){this.b=cc(this,this.c);this.a-=4},function(){this.b=cc(this,this.D);this.a-=4},function(){this.b=
cc(this,this.f);this.a-=4},function(){this.b=cc(this,this.F);this.a-=4},function(){this.b=cc(this,this.g);this.a-=4},function(){this.b=cc(this,this.i);this.a-=4},function(){this.b=cc(this,this.J(G(this)));this.a-=7},function(){this.b=cc(this,this.b);this.a-=4},function(){M(this,this.c);this.a-=4},function(){M(this,this.D);this.a-=4},function(){M(this,this.f);this.a-=4},function(){M(this,this.F);this.a-=4},function(){M(this,this.g);this.a-=4},function(){M(this,this.i);this.a-=4},function(){M(this,
this.J(G(this)));this.a-=7},function(){M(this,this.b);this.a-=4},function(){this.m&255&&(E(this,P(this)),this.a-=6);this.a-=5},function(){Vb(this,P(this));this.a-=10},function(){var a=O(this);this.m&255&&E(this,a);this.a-=10},ic,function(){var a=O(this);this.m&255&&(R(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){R(this,Ub(this));this.a-=11},function(){this.b=L(this,N(this));this.a-=7},function(){R(this,this.o);E(this,0);this.a-=11},function(){this.m&255||(E(this,P(this)),this.a-=6);this.a-=
5},jc,function(){var a=O(this);this.m&255||E(this,a);this.a-=10},ic,function(){var a=O(this);this.m&255||(R(this,this.o),E(this,a),this.a-=6);this.a-=11},kc,function(){this.b=Zb(this,N(this));this.a-=7},function(){R(this,this.o);E(this,8);this.a-=11},function(){J(this)||(E(this,P(this)),this.a-=6);this.a-=5},function(){Xb(this,P(this));this.a-=10},function(){var a=O(this);J(this)||E(this,a);this.a-=10},function(){for(var a=N(this),b=this.j,c=this.b,d=this.o+-2&65535,e=1,f=0;0<e;){var g=b.v[a],h=b.C[a]||
1,l=1==h?255:2==h?65535:-1,l=(c>>>=f)&l;if(void 0!==g&&g[0])g[0](a,l,d);f+=h<<3;a+=h;e-=h}this.a-=10},function(){var a=O(this);J(this)||(R(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){R(this,Wb(this));this.a-=11},function(){this.b=M(this,N(this));this.a-=7},function(){R(this,this.o);E(this,16);this.a-=11},function(){J(this)&&(E(this,P(this)),this.a-=6);this.a-=5},jc,function(){var a=O(this);J(this)&&E(this,a);this.a-=10},function(){for(var a=N(this),b=this.j,c=this.o+-2&65535,d=1,e=0,
f=0;0<d;){var g=b.m[a],h=b.B[a]||1,l=1==h?255:2==h?65535:-1,n=l;void 0!==g&&g[0]&&(n=g[0](a,c),void 0===n?n=l:n&=l);e|=n<<f;f+=h<<3;a+=h;d-=h}this.b=e&255;this.a-=10},function(){var a=O(this);J(this)&&(R(this,this.o),E(this,a),this.a-=6);this.a-=11},kc,function(){this.b=dc(this,N(this));this.a-=7},function(){R(this,this.o);E(this,24);this.a-=11},function(){Yb(this)||(E(this,P(this)),this.a-=6);this.a-=5},function(){I(this,P(this));this.a-=10},function(){var a=O(this);Yb(this)||E(this,a);this.a-=10},
function(){var a=P(this);R(this,G(this));I(this,a);this.a-=18},function(){var a=O(this);Yb(this)||(R(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){R(this,G(this));this.a-=11},function(){this.b=$b(this,N(this));this.a-=7},function(){R(this,this.o);E(this,32);this.a-=11},function(){Yb(this)&&(E(this,P(this)),this.a-=6);this.a-=5},function(){E(this,G(this));this.a-=5},function(){var a=O(this);Yb(this)&&E(this,a);this.a-=10},function(){var a=G(this);I(this,Wb(this));Xb(this,a);this.a-=5},function(){var a=
O(this);Yb(this)&&(R(this,this.o),E(this,a),this.a-=6);this.a-=11},kc,function(){this.b=ec(this,N(this));this.a-=7},function(){R(this,this.o);E(this,40);this.a-=11},function(){this.s&128||(E(this,P(this)),this.a-=6);this.a-=5},function(){var a=P(this);Rb(this,a&255|this.C&-256);this.b=a>>8;this.a-=10},function(){var a=O(this);this.s&128||E(this,a);this.a-=10},function(){this.C&=-513;this.a-=4},function(){var a=O(this);this.s&128||(R(this,this.o),E(this,a),this.a-=6);this.a-=11},function(){R(this,
Tb(this)&255|this.b<<8);this.a-=11},function(){this.b=cc(this,N(this));this.a-=7},function(){R(this,this.o);E(this,48);this.a-=11},function(){this.s&128&&(E(this,P(this)),this.a-=6);this.a-=5},function(){this.u=G(this)&65535;this.a-=5},function(){var a=O(this);this.s&128&&E(this,a);this.a-=10},function(){this.C|=512;this.a-=4;fc(this)},function(){var a=O(this);this.s&128&&(R(this,this.o),E(this,a),this.a-=6);this.a-=11},kc,function(){M(this,N(this));this.a-=7},function(){R(this,this.o);E(this,56);
this.a-=11}];function T(a){r.call(this,"ChipSet",a,T);var b=a.model;b&&!lc[b]&&Aa("Unrecognized ChipSet model: "+b);this.c=lc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);B(this)}w(T);
var V={ba:1978.1,zc:{ca:0,td:1,xd:16,Ed:32,Nd:64,Md:128,Fa:14},za:{ca:1,Pb:1,sc:2,oc:4,pc:16,qc:32,rc:64,Fa:8},Ac:{ca:2,sd:3,Wd:4,ud:8,Id:16,Jd:32,Kd:64,vd:128,Fa:0},Rd:{ca:3},Pd:{ca:2,Fd:7},Td:{ca:3,Xd:1,Sd:2,Ld:4,Cd:8,wd:16,md:32},Qd:{ca:4},Ud:{ca:5,yd:1,zd:2,Ad:4,Bd:8,Yd:16}},W={ba:100,ka:{ca:66,vb:1,kc:2,lc:4,Hd:8,Gd:16,sb:32,rb:64,nb:128},Nb:{ca:66,INIT:0},wa:{ca:194,od:0,lb:16,uc:32,tb:48,Xb:0,Yb:32},Ra:{ca:162,Od:0,$b:0,Wb:0,Zb:0,Vb:0},ma:{Dd:{ca:98},Ba:{Kb:0,Jb:1,xc:2,Fc:4,Qb:5,vc:6,Vd:7},
Ua:16383}},lc={SI1978:V,VT100:W};T.prototype.V=function(){return!1};T.prototype.qa=function(a,b,c,d){this.j=b;this.a=c;this.O=d;this.v=a;this.m=Va(a,"Keyboard");this.Z=Va(a,"SerialPort");this.video=Va(a,"Video");hb(b,this,this.c.$a);ib(b,this,this.c.ab)};T.prototype.ga=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};T.prototype.ia=function(a){return a?this.save():!0};V.INIT=[[V.zc.Fa,V.za.Fa,V.Ac.Fa,0,0,0,0]];
W.INIT=[[W.Nb.INIT,W.ka.kc|W.ka.lc],[W.wa.Xb,W.wa.Yb],[W.Ra.$b,W.Ra.Wb,W.Ra.Zb,W.Ra.Vb],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];k=T.prototype;k.reset=function(){this.c.INIT&&!this.restore(this.c.INIT)&&this.L("reset error")};
k.save=function(){var a=new F(this);switch(this.c.ba){case V.ba:a.set(0,[this.W,this.g,this.X,this.C,this.M,this.S,this.U]);break;case W.ba:a.set(0,[this.K,this.u]),a.set(1,[this.o,this.s]),a.set(2,[this.f,this.G,this.R,this.N]),a.set(3,[this.B,this.b,this.w,this.H,this.i])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.c.ba){case V.ba:return this.W=b[0],this.g=b[1],this.X=b[2],this.C=b[3],this.M=b[4],this.S=b[5],this.U=b[6],!0;case W.ba:return this.K=b[0],this.u=b[1],b=a[1],this.o=b[0],this.s=b[1],b=a[2],this.f=b[0],this.G=b[1],this.R=b[2],this.N=b[3],b=a[3],this.B=b[0],this.b=b[1],this.w=b[2],this.H=b[3],this.i=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Sc=function(){return this.W};k.Tc=function(){return this.g};k.Uc=function(){return this.X};
k.Rc=function(){return this.C>>8-this.M&255};k.$c=function(a,b){this.M=b};k.bd=function(a,b){this.S=b};k.ad=function(a,b){this.C=b<<8|this.C>>8};k.cd=function(a,b){this.U=b};k.dd=function(){};function mc(a){var b=0,c=0,d=~a.B;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
k.Vc=function(){var a=this.u,a=a&~W.ka.rb;if((Gb(this.a)&64)<<1&&(a|=W.ka.rb,a!=this.u)){var b,c;b=this.w&1;switch(this.w>>1&7){case W.ma.Ba.Jb:this.B=this.B<<1|b;break;case W.ma.Ba.Qb:b=mc(this);this.i[b]=W.ma.Ua;break;case W.ma.Ba.Kb:this.b=this.b<<1|b;break;case W.ma.Ba.Fc:b=mc(this);c=this.b&W.ma.Ua;this.i[b]=c;break;case W.ma.Ba.vc:b=mc(this);c=this.i[b];null==c&&(c=W.ma.Ua);this.b=c;break;case W.ma.Ba.xc:this.b<<=1,this.H=this.b&W.ma.Ua+1}}a&=~W.ka.sb;this.H&&(a|=W.ka.sb);a&=~W.ka.nb;if(b=this.m){b=
this.m;if(c=b.f)c=b.a,c=Gb(b.a)>=b.m+c.la*c.K/1E3*1.2731488;c&&(b.f=!1);b=!b.f}b&&(a|=W.ka.nb);a&=~W.ka.vb;this.Z&&this.Z.fa&1&&(a|=W.ka.vb);return this.u=a};k.ed=function(a,b){this.K=b};k.hd=function(a,b){this.w=b};k.gd=function(a,b){a=b&3;switch(b>>2&3){case 0:this.f=this.f&-4|a;break;case 1:this.f=this.f&-13|a<<2;this.video&&(b=this.video,a=this.f,b.pa!==a&&((b.pa=a)?Mb(b,!0):b.sa=!0));break;case 2:switch(a){case 0:this.G=~this.G;break;case 2:case 3:this.R=3-a}break;case 3:this.N=a}};
k.fd=function(a,b){b&W.wa.uc?(b&=W.wa.tb,this.s!=b&&(this.s=b,this.video&&(this.video.Db=this.s==W.wa.tb?50:60))):(b&=W.wa.lb,this.o!=b&&(this.o=b,this.video&&(a=this.video,b=this.o==W.wa.lb?132:80,a.H=b,a.T=a.xa,80<b&&a.T--,nc(a)&&oc(a))))};V.$a={0:T.prototype.Sc,1:T.prototype.Tc,2:T.prototype.Uc,3:T.prototype.Rc};V.ab={2:T.prototype.$c,3:T.prototype.bd,4:T.prototype.ad,5:T.prototype.cd,6:T.prototype.dd};W.$a={66:T.prototype.Vc};W.ab={66:T.prototype.ed,98:T.prototype.hd,162:T.prototype.gd,194:T.prototype.fd};
ya(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new T(d);Pa(d,c)}});function pc(a){r.call(this,"ROM",a,pc);this.b=null;this.m=a.addr;this.c=a.size;this.v=a.writable;this.f=a.alias;this.g=a.file;this.o=ba(this.g);if(this.g){a=this.g;var b=ca(this.o);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;la(a,null,!0,function(a,b,f){qc(c,a,b,f)})}}w(pc);var rc=[0,5];
pc.prototype.qa=function(a,b,c,d){this.j=b;this.a=c;this.O=d;sc(this)};pc.prototype.ga=function(){this.i&&(this.O&&this.O.a(this.id,this.m,this.c,this.i),delete this.i);return!0};pc.prototype.ia=function(){return!0};
function qc(a,b,c,d){if(d)a.L("Unable to load system ROM (error "+d+": "+b+")");else{Ka(a.Ta,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c<g.length;c++)a.b[d++]=g[c]&255,a.b[d++]=g[c]>>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.i=e.symbols;if(!a.b.length){q("Empty ROM: "+b);return}if(1==a.b.length){q(a.b[0]);return}}catch(h){a.L("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=aa(b[e]);sc(a)}}
function sc(a){if(!Ra(a))if(!a.g)B(a);else if(a.b&&a.j){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size ("+p(a.b.length,8,!0)+") does not match specified size ("+p(a.c,8,!0)+")";a.l.error=!0;a.L(b)}else if(tc(a,a.m)){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.j,g=d.c,h=[],l=d.m>>>f.j;0<g&&l<f.b.length;)h.push(f.b[l++]),g-=f.c;f=d.j;d=d.c;g=0;for(e>>>=f.j;0<d&&e<f.b.length;){l=h[g++];if(!l)break;f.b[e++]=l;d-=f.c}}delete a.b}B(a)}}
function tc(a,b){if(Za(a.j,b,a.c,a.v?1:ob)){var c;for(c=0;c<a.b.length;c++)db(a.j,b+c,a.b[c]);if(a.v&&256==b){for(c=0;c<rc.length;c++)db(a.j,rc[c],118);Qb(a.a,function(a){return function(b){if(0<=rc.indexOf(b)){var c=!1,d=a.a,e=a.O;if(5==b)switch(c=!0,d.D){case 2:uc(a,String.fromCharCode(d.F));break;case 9:for(var l=Wb(d),n="",u=255;u--;){var y=a.a.J(l++);if(36==y)break;n+=String.fromCharCode(y)}uc(a,n);break;default:c=!1}c?jc.call(d):e&&(a.da("\nCP/M vector "+p(b,4,!0)),E(d,b),Db(e));b=!0}else b=
!1;return b}}(a));Sb(a.a,b)}return!0}return!1}function uc(a,b){b=b.replace(/\r/g,"");a.va&&(a.va.value+=b,a.va.scrollTop=a.va.scrollHeight)}ya(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new pc(d);Pa(d,c)}});function vc(a){r.call(this,"RAM",a,vc);this.f=a.addr;this.c=a.size;this.b=!1}w(vc);k=vc.prototype;k.qa=function(a,b,c,d){this.j=b;this.a=c;this.O=d;B(this)};k.ga=function(a,b){b||this.reset();return!0};k.ia=function(a){return a?this.save():!0};
k.reset=function(){!this.b&&this.c&&Za(this.j,this.f,this.c,1)&&(this.b=!0);this.b||q("No RAM allocated")};k.save=function(){return null};k.restore=function(){return!0};ya(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new vc(d);Pa(d,c)}});function X(a){r.call(this,"Keyboard",a,X);(a=a.model)&&!wc[a]&&Aa("Unrecognized Keyboard8080 model: "+a);this.b=wc[a]||{};this.reset();B(this)}w(X);var yc={};yc[m.jb]=37;yc[m.mb]=39;yc[m.ob]=32;
var zc={ba:1978.1,h:{},kb:yc,Ga:{},ya:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Y={ba:100,h:{},kb:{},Ga:{},ya:{setup:120},Lb:{ca:130,INIT:127},ha:{ca:130,gc:1,fc:2,ec:4,dc:8,hc:16,qb:32,pb:63,yc:64,nd:128,INIT:0},cc:127};Y.h[46]=3;Y.h[m.nc]=5;Y.h[m.mc]=6;Y.h[m.Hc]=7;Y.h[m.Bc]=8;Y.h[m.Ec]=9;Y.h[m.Q]=10;Y.h[39]=16;Y.h[221]=20;Y.h[219]=21;Y.h[m.Ub]=22;Y.h[m.Cc]=23;Y.h[m.tc]=24;Y.h[m.E]=25;Y.h[49]=26;Y.h[37]=32;Y.h[40]=34;Y.h[117]=35;Y.h[19]=35;Y.h[192]=36;Y.h[189]=37;Y.h[57]=38;Y.h[55]=39;
Y.h[52]=40;Y.h[51]=41;Y.h[27]=42;Y.h[38]=48;Y.h[114]=49;Y.h[112]=50;Y.h[8]=51;Y.h[187]=52;Y.h[48]=53;Y.h[56]=54;Y.h[54]=55;Y.h[53]=56;Y.h[50]=57;Y.h[9]=58;Y.h[103]=64;Y.h[115]=65;Y.h[113]=66;Y.h[96]=67;Y.h[118]=68;Y.h[220]=69;Y.h[m.ob]=70;Y.h[m.bc]=71;Y.h[m.Sb]=72;Y.h[m.Rb]=73;Y.h[m.jb]=74;Y.h[104]=80;Y.h[2013]=81;Y.h[98]=82;Y.h[97]=83;Y.h[222]=85;Y.h[186]=86;Y.h[m.ac]=87;Y.h[m.Tb]=88;Y.h[m.mb]=89;Y.h[m.wc]=90;Y.h[110]=96;Y.h[116]=97;Y.h[101]=98;Y.h[100]=99;Y.h[13]=100;Y.h[190]=101;Y.h[188]=102;
Y.h[m.jc]=103;Y.h[m.Mb]=104;Y.h[m.Gc]=105;Y.h[119]=106;Y.h[105]=112;Y.h[99]=113;Y.h[102]=114;Y.h[109]=115;Y.h[191]=117;Y.h[m.ic]=118;Y.h[m[" "]]=119;Y.h[m.Dc]=120;Y.h[m.Ob]=121;Y.h[m.Ic]=122;Y.h[120]=123;Y.h[17]=124;Y.h[16]=125;Y.h[20]=126;Y.Ga={l4:Y.ha.gc,l3:Y.ha.fc,l2:Y.ha.ec,l1:Y.ha.dc,locked:Y.ha.hc,local:Y.ha.qb,online:~Y.ha.qb};var wc={SI1978:zc,VT100:Y};
X.prototype.V=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.A[e]){if("led"==a&&this.b.Ga[b])return this.A[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return Ac(d,a,!0)},c.onkeyup=function(a){return Ac(d,a,!1)},!0;default:if(this.b.ya&&void 0!==this.b.ya[b])return this.A[e]=c,a=function(a,b){return function(c){c.preventDefault();Bc(a,b,!0)}}(this,this.b.ya[b]),b=function(a,b){return function(){Bc(a,b,!1)}}(this,this.b.ya[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=
b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};X.prototype.qa=function(a,b,c,d){this.v=a;this.a=c;this.O=d;this.M=Va(a,"ChipSet");hb(b,this,this.b.$a);ib(b,this,this.b.ab)};X.prototype.ga=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};X.prototype.ia=function(a){return a?this.save():!0};Y.INIT=[[Y.ha.INIT,Y.Lb.INIT,!1,0,-1]];k=X.prototype;k.reset=function(){this.j=[];this.b.INIT&&!this.restore(this.b.INIT)&&this.L("reset error")};
k.save=function(){var a=new F(this);switch(this.b.ba){case Y.ba:a.set(0,[this.i,this.g,this.f,this.m,-1])}return a.data()};k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.ba){case zc.ba:return!0;case Y.ba:return this.i=b[0],Cc(this,this.i&Y.ha.pb),this.g=b[1],this.f=b[2],this.m=b[3],this.c=b[4],!0}return!1};function Cc(a,b){for(var c in a.b.Ga){var d=a.A["led-"+c];if(d){var e=a.b.Ga[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
function Ac(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.b.kb[e]||e,!a.b.h[e]){for(var f in a.b.ya)if(a.b.ya[f]===e){e=f;break a}e=null}e&&(d=Bc(a,e,c),b.preventDefault());return d}
function Bc(a,b,c){var d;a:{for(d=0;d<a.j.length;d++)if(a.j[d].ib==b)break a;d=-1}if(c)0>d?a.j.push({ib:b,fb:Date.now(),Ya:!1}):(a.j[d].fb=Date.now(),a.j[d].Ya=!1);else if(0<=d){if(!a.j[d].Ya){var e=a.j[d].fb;if(e&&100>Date.now()-e)return a.j[d].Ya=!0,Dc(a),!0}a.j.splice(d,1)}if(a.M){d=0;switch(b){case "1p":d=V.za.oc;break;case "2p":d=V.za.sc;break;case "coin":d=V.za.Pb;break;case "left":d=V.za.qc;break;case "right":d=V.za.rc;break;case "fire":d=V.za.pc}d&&(a=a.M,b=d,a.g&=~b,c&&(a.g|=b))}return!0}
function Dc(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Ya){var d=a.j[b].ib,e=100-(Date.now()-a.j[b].fb);if(0<e){if(0>c||c>e)c=e}else{Bc(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){Dc(a)},c)}k.Wc=function(){var a=this.g;0<=this.c&&(this.c<this.j.length?(a=this.j[this.c],this.c++,a=Y.h[a.ib],a&128&&(a&=127)):(this.c=-1,a=Y.cc),this.g=a,gc(this.a,1));return a};k.jd=function(a,b){this.i=b;this.f=!0;this.m=Gb(this.a);Cc(this,b&Y.ha.pb);b&Y.ha.yc&&(this.c=0,gc(this.a,1))};Y.$a={130:X.prototype.Wc};
Y.ab={130:X.prototype.jd};ya(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new X(d);Pa(d,c)}});
function Ec(a,b,c,d,e){var f=this;this.Ia=ra("Gecko/");var g=["","moz","ms","webkit"];r.call(this,"Video",a,Ec);this.C=a.screenWidth;this.w=a.screenHeight;this.ea=a.bufferAddr;this.Kc=a.bufferRAM;var h=a.bufferFormat;this.U=h&&Fc[h.toUpperCase()]||Gc;this.H=a.bufferCols;this.W=a.bufferRows;this.xa=this.T=a.cellWidth||1;this.P=a.cellHeight||1;this.X=null;this.Ha=!1;this.ja=a.bufferBits||1;this.Lc=a.bufferLeft||0;if(this.c=a.bufferRotate)this.c=this.c%360,0<this.c&&(this.c-=360),-90!=this.c&&(this.L("unsupported buffer rotation: "+
this.c),this.c=0);this.la=a.interruptRate;this.wb=a.refreshRate||60;this.u=b;this.f=c;this.R=(this.Oc=d)||b||null;this.Jc=this.C;this.Ib=this.w;this.Ca=this.C/this.H|0;this.Da=this.w/this.W|0;1<this.P&&(this.W++,this.pa=0,this.sa=!1);b=a.smoothing;(c=Ea.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.f[d]){this.f[d]=b;break}if(this.g=a.screenRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g?(this.L("unsupported screen rotation: "+
this.g),this.g=0):(this.f.translate(0,this.w),this.f.rotate(this.g*Math.PI/180),this.f.scale(this.w/this.C,this.C/this.w));if(this.b=e)if(this.b.Ea=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Ea){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Hc(f,document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);
break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){Hc(f,null)},!1);break}}if(this.M=a.fontROM)"json"!=ca(this.M)&&(this.M=ea()+"/api/v1/dump?file="+this.M+"&format=bytes"),la(this.M,null,!0,function(a,b,c){Ic(f,a,b,c)});this.ua={}}w(Ec);var Gc=0,Fc={SI1978:1,VT100:2};
function nc(a){a.o=a.H*a.T;a.G=a.W*a.P;var b=a.o,c=a.G;a.c&&(b=a.G,c=a.o);a.B=0;if(!a.Kc&&(a.B=(a.o*a.ja>>3)*a.G,!Za(a.j,a.ea,a.B,3)))return!1;a.B?(a.Ja=a.f.createImageData(b,c),a.La=16/a.ja|0,Jc(a,a.B>>1)):Jc(a,(a.H+1)*a.W);a.s=document.createElement("canvas");a.s.width=b;a.s.height=c;a.ra=a.s.getContext("2d");a.I={};a.S=1<<a.ja;a.K=Array(a.S+2);a.K[0]=[0,0,0,255];a.K[1]=[255,255,255,255];1==a.U&&(a.K[a.S+0]=[255,255,0,255],a.K[a.S+1]=[0,255,0,255]);2==a.U&&(a.Db=60,a.ta=!1,a.Z=Array(a.H));return!0}
Ec.prototype.qa=function(a,b,c,d){this.v=a;this.j=b;this.a=c;this.O=d;nc(this);if(this.m=Va(a,"Keyboard")){for(var e in this.ua)this.m.V("led",e,this.ua[e]);this.u&&this.m.V(this.Oc?"textarea":"canvas","kbd",this.R)}var f=this;this.xb=Ib(this.a,function(){Mb(f)});Kb(this.a,this.xb,1E3/Math.max(this.wb,this.la));this.Va=0;this.M||B(this)};
function Ic(a,b,c,d){if(d)a.L("Unable to load font ROM (error "+d+": "+b+")");else{Ka(a.Ta,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){q("Empty font ROM: "+b);return}if(1==f.length){q(f[0]);return}if(2048==f.length)a.X=f,oc(a);else{a.L("Unrecognized font data length ("+f.length+")");return}}catch(g){a.L("Font ROM data error: "+g.message);return}(a.f||a.O)&&B(a)}}
function oc(a){a.X&&(a.Ha=2==a.U,a.I[96]=[Kc(a,a.T,a.P),Kc(a,a.T,a.P,a.ta)],a.I[64]=[Kc(a,2*a.T,a.P),Kc(a,2*a.T,a.P,a.ta)],a.I[32]=a.I[0]=[Kc(a,2*a.T,2*a.P),Kc(a,2*a.T,2*a.P,a.ta)])}
function Kc(a,b,c,d){var e=8>=a.xa?8:16,f=8<e?15:0,g=a.X.length/e,h=!1===d,l={T:b,P:c};l.canvas=document.createElement("canvas");l.canvas.width=16*b;l.canvas.height=g/16*c;l.context=l.canvas.getContext("2d");for(var n=l.context.createImageData(b,c),u=0;u<g;u++){for(var y=0,H=y;y<a.P;y++)for(var x=u*e+(f+y&e-1),x=d&&8==y?255:a.X[x],t=0;t<c/a.P;t++){for(var C=0,Q=0,U=Q;Q<a.T;Q++){for(var Z=x&128>>(7<Q?7:Q),C=a.Ha&&!Z&&C?C:Z,sa=0;sa<b/a.T;sa++)h&&(C=!C),Lc(a,n,U,H,C?1:0),U++;C=Z}H++}l.context.putImageData(n,
(u&15)*b,(u>>4)*c)}return l}Ec.prototype.ga=function(){return!0};Ec.prototype.V=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.ua[b]=c,!0;switch(b){case "fullScreen":return this.A[b]=c,this.b&&this.b.Ea?c.onclick=function(){d.Ea()}:c.parentNode.removeChild(c),!0}return!1};
Ec.prototype.Ea=function(){var a=!1;if(this.b){if(this.b.Ea){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.C/this.w;b>c&&(a=Math.round(c/b*100)+"%")}this.Ia?(this.u.style.width=a,this.u.style.width=a,this.u.style.display="block",this.u.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Ea();a=!0}this.R&&this.R.focus()}return a};
function Hc(a,b){!b&&a.b&&(a.Ia?a.u.style.width=a.u.style.height="":a.b.style.width=a.b.style.height="")}function Jc(a,b){a.Ka=b;a.N=!1;if(void 0===a.i||a.i.length!=a.Ka)a.i=Array(a.Ka)}function Lc(a,b,c,d,e){d=a.c?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.U&&(208<=c&&236>c?e=a.S+0:28<=c&&72>c&&(e=a.S+1));a=a.K[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Mb(a,b){var c=!0;if(!b){a.la&&(120==a.la?a.Va&1?(gc(a.a,2),c=!1):gc(a.a,1):gc(a.a,4));if(c&&a.N&&a.B){for(var d=a.j,e=a.B,f=!0,g=a.ea>>>d.j;0<e&&g<d.b.length;)d.b[g].na&&(d.b[g].na=f=!1,d.b[g].Ab=!0),e-=d.c,g++;f&&(c=!1)}Kb(a.a,a.xb,1E3/Math.max(a.wb,a.la));a.Va++}if(c)if(1<a.T)switch(a.U){case 2:for(var c=a.ea,d=-1,e=0,f=60==a.Db?2:5,h=g=0,l=-1;e<a.W;){var n=0,u=c,y=d,H=a.H;for(96!=y&&(H>>=1);;){var x=bb(a.j,u++);if(127==(x&127)){var t=bb(a.j,u++),d=t&96,c=(t&15)<<8|bb(a.j,u),c=c+(t&16?
8192:16384);break}if(n<H)a.Z[n++]=x;else break}if(f)f--;else{for(;n<a.Z.length;)a.Z[n++]=0;if(0<=y)for(u=a.N&&a.i[g]==H,a.i[g++]=H,H=0;H<n;H++){x=a.Z[H];if(!u||x!==a.i[g]){a.i[l=g]=x;var t=a,C=a.ra,Q=x&127;if(x=t.I[y][x&128?1:0]){var U=(Q&15)*x.T,Q=(Q>>4)*x.P,Z,sa,Na,eb,xc=x.T,Jb=x.P;C?(Z=H*t.T,sa=e*t.P,Na=t.T,eb=t.P):(Z=H*t.Ca,sa=e*t.Da,Na=t.Ca,eb=t.Da);x.T>t.T&&(Z*=2,Na*=2);x.P>t.P&&(y||(Q+=t.P),Jb=t.P);C?C.drawImage(x.canvas,U,Q,xc,Jb,Z,sa,Na,eb):(Z+=0,sa+=0,t.f.drawImage(x.canvas,U,Q,xc,Jb,Z,
sa,Na,eb))}h++}g++}e++}}a.N=!0;!b&&a.sa&&1==h&&(a.i[l]=-1,h=0);a.sa=!1;(h||b)&&a.ra&&a.f.drawImage(a.s,0,a.pa,a.o,a.G-a.P,0,0,a.Jc,a.Ib)}else{e=a.ea;f=e+a.B;l=h=g=0;b=a.o;n=0;c=a.G;y=d=0;u=a.ja;H=(1<<u)-1;a.Lc&&(u=-u,y=16+u);for(;e<f;){t=a.j;C=e;x=C&t.f;U=(C&t.g)>>>t.j;t=x!=t.f?t.b[U].Eb(x,C):t.b[U++].bb(x,C)|t.b[U&t.o].bb(0,C+1)<<8;if(a.N&&t===a.i[g])h+=a.La;else{a.i[g]=t;(C=y)&&(t=t>>8|(t&255)<<8);h<b&&(b=h);for(x=a.La;x--;)U=t>>C&H,Lc(a,a.Ja,h++,l,U),C+=u;h>n&&(n=h);l<c&&(c=l);l>=d&&(d=l+1)}e+=
2;g++;if(h>=a.o&&(h=0,l++,l>a.G))break}a.N=!0;b<a.o&&(e=n-b,d-=c,a.c&&(f=b,g=e,b=c,e=d,c=a.o-(f+g),d=g),a.ra.putImageData(a.Ja,0,0,b,c,e,d),a.f.drawImage(a.s,0,0,a.s.width,a.s.height,0,0,a.C,a.w))}}
ya(function(){for(var a=A(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=z(c),e=document.createElement("canvas");if(!e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ea.aspect);f&&.3<=f&&3.33>=f&&(xa("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");ra("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var g=e.getContext("2d"),d=new Ec(d,e,g,f,c);Pa(d,c)}});
function Mc(a){this.I=+a.adapter;switch(this.I){case 0:this.K=0;this.R=2;break;default:q("Unrecognized serial adapter #"+this.I);return}this.b=this.c=null;this.N=a.tabSize;this.H=a.charBOL;this.f=0;this.C=!1;r.call(this,"SerialPort",a,Mc);var b=a.binding;if("console"==b)this.c="";else{var c;a=Nc;b&&(void 0===c&&(c="Panel"),(c=Oa(c,this.id))&&(b=c.A[b])&&this.V(null,a,b))}this.g="";this.i=this.s=null;this.exports={connect:this.Cb,receiveData:this.gb}}w(Mc);
var Oc=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Pc=[!1,0,0,133,142,39,238],Nc="buffer";k=Mc.prototype;
k.V=function(a,b,c,d){var e=this;switch(b){case Nc:return this.A[b]=this.b=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),Qc(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Qc(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.A[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.gb(d);return!0},
!0}return!1};k.qa=function(a,b,c,d){this.v=a;this.j=b;this.a=c;this.O=d;var e=this;this.S=Ib(this.a,function(){e.gb()});this.U=Ib(this.a,function(){e.fa|=5});this.M=Va(a,"ChipSet");hb(b,this,Rc,this.K);ib(b,this,Sc,this.K);B(this)};
k.Cb=function(){if(!this.i){var a=zb(this.v,"connection");if(a){var b=a.split("->");if(2==b.length){var c=ha(b[0]);if(c!=this.Sa)return;b=ha(b[1]);if(this.i=Ma(b)){var d=this.i.exports;if(d){var e=d.connect;e&&e.call(this.i);if(this.s=d.receiveData){this.status(this.Ta+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};k.ga=function(a,b){if(!b)if(this.Cb(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
k.ia=function(a){return a?this.save():!0};k.reset=function(){Tc(this)};k.save=function(){var a=new F(this),b=0,c=[];c[b++]=this.o;c[b++]=this.B;c[b++]=this.G;c[b++]=this.fa;c[b++]=this.m;c[b++]=this.w;c[b]=this.u;a.set(0,c);return a.data()};k.restore=function(a){return Tc(this,a[0])};function Tc(a,b){var c=0;b||(b=Pc);a.o=b[c++];a.B=b[c++];a.G=b[c++];a.fa=b[c++];a.m=b[c++];a.w=b[c++];a.u=b[c];return!0}
function Uc(a,b){var c=a.u&b;b&15||(c>>=4);b=Oc[c];c=((a.m&12)>>2)+6;a.m&16&&c++;c+=((a.m&192)>>6)+1>>1;return 1E3/Math.round(b/c)}function Qc(a,b){return a.C||a.fa&2?!1:(a.B=b,a.fa|=2,gc(a.a,a.R),!0)}k.gb=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Qc(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.a&&Kb(this.a,this.S,Uc(this,15)));return!0};k.Qc=function(){var a=this.B;this.fa&=-3;return a};k.Pc=function(){return this.fa};
k.Zc=function(a,b){this.G=b;this.fa&=-6;if(19==b)this.C=!0;else if(17==b)this.C=!1;else if(this.s&&this.s.call(this.i,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{a=(a=ia[b])?"<"+a+">":String.fromCharCode(b);var c=a.length;9==b?(b=this.N||8,c=b-this.f%b,this.N&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.H&&!this.f&&c&&(a=String.fromCharCode(this.H)+a);this.b.value+=a;this.b.scrollTop=this.b.scrollHeight;this.f+=c}else if(null!=
this.c){if(10==b||1024<=this.c.length)this.da(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.a&&Kb(this.a,this.U,Uc(this,240))};k.Yc=function(a,b){this.o?(this.w=b,this.w&64&&(this.o=!1)):(this.m=b,this.o=!0)};k.Xc=function(a,b){this.u=b};var Rc={0:Mc.prototype.Qc,1:Mc.prototype.Pc},Sc={0:Mc.prototype.Zc,1:Mc.prototype.Yc,2:Mc.prototype.Xc};ya(function(){for(var a=A(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Mc(d);Pa(d,c)}});
function Vc(a,b,c){r.call(this,"Computer",a,Vc);this.l.Y=!1;Wc(this,b);this.w=zb(this,"autoPower",a);this.f=0;this.M=a.busWidth||a.buswidth;this.b=Xc;this.s=null;this.v=this.G=!1;this.I=zb(this,"url")||"";(Math.random()+.1).toString(36);this.c=Yc(this);if(this.a=Oa("CPU",this.id)){this.O=Oa("Debugger",this.id);this.m=[];for(b=null;b=Va(this,"Video",b);)this.m.push(b);this.j=new Xa({id:this.Ta+".bus",busWidth:this.M},this.a,this.O);var d,e=La(this.id);if((this.g=Oa("Panel",this.id))&&this.g.va)for(b=
0;b<e.length;b++)d=e[b],d.L=this.g.L,d.da=this.g.da,d.va=this.g.va;this.da("PC8080 v1.30.1\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.qa&&d.qa(this,this.j,this.a,this.O);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.o=d:this.b=parseInt(d,10));var f;if(a=zb(this,"state")||(f=!0,a.state))b=this.B=a,f||(this.v=!0,this.b=Xc),this.b&&(this.u=new F(this,"1.30.1"),Zc(this.u)?b=null:delete this.u);
!b&&this.b&&(b=$c(this))&&(this.v=!0);if(b){var g=this;la(b,null,!0,function(a,b,c){c?(g.o=null,g.v=!1,g.L("Unable to load machine state from server (error "+c+(b?": "+ha(b):"")+")")):(g.s=b,g.G=!0);B(g)})}else B(this);this.A.power||(this.w=!0);!c&&this.w&&ad(this,this.Oa)}else q("Unable to find CPU component")}w(Vc);var Xc=0;function Wc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.H=b}
function zb(a,b,c){var d=b.toLowerCase(),d=Ea[b]||Ea[d];void 0===d&&a.H&&(d=a.H[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function ad(a,b,c){for(var d=La(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ra(f)){Ra(f,function(){ad(a,b,c)});return}}b.call(a,c)}
function bd(a,b){var c=new F(a,"1.30.1","validate");if(Zc(c)&&cd(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.L("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Vc.prototype;
k.Oa=function(a){void 0===a&&(a=this.b||(this.s?1:Xc));if(!this.f){this.f++;var b=!1,c=!1;this.C=!1;var d=this.u||new F(this,"1.30.1");if(-1==a)b=!0;else if(a>Xc){if(Zc(d,this.s)){this.i=new F(this,"1.30.1","failsafe");Zc(this.i)&&(dd(this,d),a=2,ed(this.i));this.i.set("timestamp",ka());fd(this.i);var e=this.b&&!this.v;if(1==a||ma("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=cd(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Zc(d,g):("error"==
f&&"no machine state"!=g?(this.L("Error: "+g),"unable to verify user"==g&&(qa("user",""),this.c=null)):this.da(f+": "+g),ed(d),Zc(d)?(c=cd(d),e=!0):c=!1))}e&&bd(this,c?d:null)}else 2==a&&d.clear()}else bd(this);delete this.s;delete this.u}e=La(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.a&&(c=gd(this,g,d,b,c));b=[d,a,c];-1!=a?ad(this,this.zb,b):this.zb(b)}};
function gd(a,b,c,d,e){if(!b.l.Y){b.l.Y=!0;if(b.ga){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ga(f,d)&&f&&(q("Unable to restore state for "+b.type),a.B&&!a.G?(c.clear(),a.b=Xc,window&&window.location.reload()):a.C=!0,b.ga(null),e=!1)}if(!d&&b.ub)for(a=b.ub.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.zb=function(a){var b=a[0],c=0>a[1];a=a[2];this.K=!0;this.l.Y=!0;var d=this.A.power;d&&(d.textContent="Shutdown");this.a&&(gd(this,this.a,b,c,a),this.a.Na());this.C&&(dd(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
function dd(a,b){if(ma("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.c||"";b=b.toString();var d={app:"PC8080",ver:"1.30.1"};d.url=a.I;d.user=c;d.type="bug";d.data=b;la("http://www.pcjs.org/api/v1/report",d,!0)}}
function hd(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new F(a,"1.30.1"),g=new F(a,"1.30.1","validate"),h=ka();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.30.1");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.a&&a.a.ia&&(c&&Db(a.a),d=a.a.ia(b,c),"object"===typeof d&&f.set(a.a.id,d),c&&(a.a.l.Y=!1,!1===d&&(e=null)));for(var h=La(a.id),l=0;l<h.length;l++){var n=h[l];n.l.Y&&(n.ia&&(d=n.ia(b,c),"object"===typeof d&&f.set(n.id,
d)),c&&(n.l.Y=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.c&&id(a,a.c,f.toString()),fd(g)&&fd(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=3==a.b),d&&f.clear(h)):e=f.toString());c&&(a.l.Y=!1,b=a.A.power)&&(b.textContent="Power");a.f=0;return e}k.reset=function(){this.j&&this.j.reset&&this.j.reset();for(var a=La(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.j&&c.reset&&c.reset()}};
k.start=function(a,b){for(var c=La(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=La(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.V=function(a,b,c){var d=this;switch(b){case "power":return this.A[b]=c,c.onclick=function(){d.f||(d.l.Y?hd(d,!1,!0):ad(d,d.Oa))},!0;case "reset":return this.A[b]=c,c.onclick=function(){if(d.l.Y&&!d.f)if(d.b&&!d.o){var a=ma("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");hd(d,a,!0);!a&&d.B?window&&window.location.reload():d.Oa(Xc)}else d.reset(),d.a&&d.a.Na()},!0;case "save":if(da())c.parentNode.removeChild(c);else return this.A[b]=
c,c.onclick=function(){var a=Yc(d,!0);if(a){var b=!!(d.b&&!d.o||d.B),c=hd(d,b);b?id(d,a,c):d.L("Resume disabled, machine state not saved")}},!0}return!1};
function Yc(a,b){var c=a.c;c||((c=pa("user"),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=jd(a,c))||a.L("The user ID is invalid.")):b&&a.L("Browser local storage is not available"));return c}
function jd(a,b){a.c=null;b=la(ea()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(qa("user",b.data),a.c=b.data)}catch(d){q(d.message+" ("+c+")")}return a.c}function $c(a){var b=null;a.c&&(b=ea()+"/api/v1/user?req=load&user="+a.c+"&state="+kd(a,"1.30.1"));return b}
function id(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=kd(a,"1.30.1");d.data=c;b=la(ea()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.L("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.L(c),qa("user",""),a.c=null)}}
function Va(a,b,c){a=La(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Hb(a,b){if(a.m.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.m[0];a.R&&a.R.focus();!b&&window&&window.scrollTo(c,d)}}k.Aa=function(a){this.a&&this.a.Aa(a);this.g&&this.g.Aa(a)};
ya(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=z(f),g=new Vc(g,d,!0);Pa(g,f);g.w&&ad(g,g.Oa)}});ta.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Oa("Computer",c.id))&&c.K&&!c.l.Y&&c.Oa(-1)}});
ta.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Oa("Computer",c.id))&&c.l.Y&&hd(c,!(!c.b||c.o),!0)}});function F(a,b,c){this.id=a.id;this.key=kd(a,b,c);this.O=a.O;ed(this,a.Mc)}function kd(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
F.prototype={constructor:F,set:function(a,b){try{this[this.id][a]=b}catch(c){}},get:function(a){return this[this.id][a]||null},value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){ed(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,
1);c=0}}};function ed(a,b){a[a.id]={};b&&a.set("parms",b);a.a=!1}function fd(a){var b=!0;if(oa()){var c=JSON.stringify(a[a.id]);qa(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function cd(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function Zc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:oa()&&(b=pa(a.key))?(a[a.id]=b,a.a=!0):!1}var ld=0;
function md(a,b,c,d,e,f){e("Loading "+a+"...");la(a,null,!0,function(g,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):nd(h,a,b,c,d,e,f)})}
function nd(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(Ka(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){f=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?od(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function od(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");la(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],n,u=/( [a-z]+=)(['"])(.*?)\2/g;n=u.exec(f);)l=0>l.indexOf(n[1])?l.replace(">",n[0]+">"):l.replace(new RegExp(n[1]+"(['\"])(.*?)\\1"),n[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);od(a,b,c)}})}else c(a,null)}
function pd(a,b,c,d){function e(a){if(void 0===h){var b=g&&A(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ga(a))}function f(a){e("Error: "+a);l&&(--ld||Ba(!0));l=!1}var g,h,l=!0;ld++;Ja[a]={};try{if(g=document.getElementById(a)){var n;if("object"==typeof resources&&(n=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=n:y.appendChild(document.createTextNode(n));u.appendChild(y)}c||
(c="/versions/pc8080/1.30.1/components.xsl");n=function(d,h){h?md(c,null,null,!1,e,function(d,l){l?(Ka(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--ld||Ba(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--ld||Ba(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?md(b,a,d,!0,e,n):nd(b,null,a,d,!1,e,n)}else f("missing machine element: "+a)}catch(H){f(H.message)}return l}window.embedPC8080=function(a,b,c,d){Ba(!1);return pd(a,b,c,d)};window.enableEvents=Ba;window.sendEvent=Ca;})();