Scriptable machine improvements (including support for sleep)

This commit is contained in:
Jeff Parsons 2017-02-06 12:03:20 -08:00 committed by Jeff Parsons
commit 112c0e88c6
55 changed files with 15397 additions and 1381 deletions

View file

@ -0,0 +1,278 @@
@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 {
overflow: hidden;
}
.c1pjs {
overflow: visible;
}
.machine-placeholder {
text-align: center;
font-weight: bold;
}
.machine-floating {
position: relative;
z-index: auto;
background-color: transparent;
padding-right: 0;
}
.machine-sticky {
position: fixed !important;
z-index: 1 !important;
background-color: #404040 !important;
padding-right: 16px !important;
top: 0 !important;
}
.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,56 @@
<?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.34.0/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="/devices/">Devices</a></li>
<li><a href="/docs/">Docs</a></li>
<li><a href="/apps/">Software</a></li>
<li><a href="/docs/about/">About</a></li>
</ul>
</div>
<div class="common-top-right">
<p>Powered by <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">JavaScript</a>, <a href="http://vanilla-js.com/" target="_blank">Vanilla JS</a>, 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> © 2012-2017 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">GPLv3</a></span>
</p>
</div>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,257 @@
@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-progress {
height: 20px;
width: 200px;
margin-top: 8px;
border: 1px solid black;
position: relative;
}
.pcjs-progress-bar {
height: 20px;
width: 0;
background-color: gold;
position: absolute;
top: 0;
}
.pcjs-progress-text {
height: 20px;
width: 200px;
font-size: small;
line-height: 20px;
text-align: center;
position: absolute;
top: 0;
z-index: 1;
}
.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: 2.8em;
}
.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-triplet {
padding: 1px;
}
.pcjs-ledlbl {
text-align: center;
font-size: 40%;
background-color: #000000;
}
.pcjs-ledlbl0 {
text-align: right;
font-size: 50%;
background-color: #8d4076;
}
.pcjs-ledlbl1 {
text-align: right;
font-size: 50%;
background-color: #d83662;
}
.pcjs-ledpad {
text-align: center;
font-size: x-small;
line-height: 32px;
background-color: #000000;
border-bottom-left-radius: 20%;
border-bottom-right-radius: 20%;
}
.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 {
float: left;
width: 8px;
height: 8px;
margin: 4px;
border: 1px solid black;
border-radius: 50%;
text-align: center;
vertical-align: middle;
background-color: #ff0000;
max-width: 50%;
max-height: 50%;
}
.pcjs-swlbl {
text-align: center;
font-size: 40%;
line-height: 16px;
background-color: #000000;
border-top-left-radius: 20%;
border-top-right-radius: 20%;
}
.pcjs-swpad {
height: 32px;
background-color: #000000;
}
.pcjs-switch {
height: 10px;
width: 28px;
margin-top: 0;
max-width: 90%;
background-color: #00ff00;
}
.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: 800px) {
.pcjs-textarea {
width: 100% !important;
}
.pcjs-registers {
width: 100% !important;
max-width: none !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
.pdp11-device {
width: 98% !important;
max-width: none !important;
margin-left: 8px !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
}
@media screen and (min-width: 1200px) {
.machine-left {
max-width: 48%;
float: left;
}
.machine-right {
max-width: 48%;
float: left;
margin-left: 30px;
}
.machine-right + * {
clear: both;
}
}

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.34.0/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,61 @@
<?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.34.0/common.xsl"/>
<xsl:include href="/versions/pc8080/1.34.0/components.xsl"/>
<xsl:template match="/machine">
<xsl:variable name="machineType">
<xsl:choose>
<xsl:when test="@type"><xsl:value-of select="@type"/></xsl:when>
<xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="machineClass">
<xsl:choose>
<xsl:when test="@class = 'pc' or @class = 'c1p'"><xsl:value-of select="@class"/>js</xsl:when>
<xsl:otherwise><xsl:value-of select="@class"/></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">
<p></p>
<div id="{@id}" class="machine {$machineType} {$machineClass}">
<xsl:call-template name="component">
<xsl:with-param name="machine" select="@id"/>
<xsl:with-param name="component" select="'machine'"/>
<xsl:with-param name="class" select="$machineClass"/>
<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="$machineType"/>-dbg</xsl:when>
<xsl:otherwise><xsl:value-of select="$machineType"/></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.34.0/common.xsl"/>
<xsl:include href="/versions/pc8080/1.34.0/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.34.0/common.xsl"/>
<xsl:include href="/versions/pc8080/1.34.0/document.xsl"/>
<xsl:include href="/versions/pc8080/1.34.0/components.xsl"/>
<xsl:template match="/outline">
<xsl:variable name="machineType">
<xsl:choose>
<xsl:when test="machine/@type"><xsl:value-of select="machine/@type"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$MACHINETYPE"/></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="$machineType"/>-dbg</xsl:when>
<xsl:otherwise><xsl:value-of select="$machineType"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,298 @@
(function(){/*
http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/memory.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpu.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpustate.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpuops.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/chipset.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/rom.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/ram.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/serial.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2017
*/
var k;function aa(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
var m={Be:0,Ee:1,Fe:2,Ge:3,He:4,Ie:5,Je:6,Ke:7,Le:8,Me:9,Ne:10,Oe:11,Pe:12,Qe:13,Re:14,Se:15,Te:16,Ue:17,Ve:18,We:19,Xe:20,Ye:21,Ze:22,$e:23,af:24,bf:25,cf: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,ab:65,Ub:66,Vb:67,Fb:68,E:69,Yb:70,Zb:71,$b:72,ac:73,bc:74,cc:75,Hb:76,gc:77,hc:78,lc:79,mc:80,Q:81,nc:82,pc:83,qc:84,rc:85,tc:86,uc:87,
wc:88,xc:89,wb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,yc:97,ud:98,xd:99,d:100,e:101,Bd:102,Dd:103,Ed:104,Fd:105,Od:106,k:107,Pd:108,Rd:109,n:110,Sd:111,p:112,q:113,r:114,oe:115,t:116,pe:117,qe:118,re:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,df:127},ca={59:186,61:187,173:189,224:91};
function n(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.vc=b.comment;this.Ad=b;this.exports={};this.P=this.bindings={};a=this.id.indexOf(".");0>a?this.cb=this.id:(this.eb=this.id.substr(0,a),this.cb=this.id.substr(a+1));this.G={ready:!1,mb:!1,Ib:!1,ja:!1,error:!1};this.zb=null;this.G.error=!1;this.ha=c||0;this.K=this.u=this.H=this.R=this.ta=null;da.push(this)}function ea(a,b,c){fa[a]&&b&&(fa[a][b]=c)}function ga(){return Date.now()||+new Date}
function ha(a,b,c){b||q((c?c+": ":"")+a)}function q(a){window&&window.alert(a)}function ia(a){var b=!1;window&&(b=window.confirm(a));return b}function ka(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<da.length;b++){var d=da[b];a&&d.id.indexOf(a)||c.push(d)}return c}function la(a){if(void 0!==a){var b;for(b=0;b<da.length;b++)if(da[b].id===a)return da[b]}return null}
function ma(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<da.length;d++)if(c)c==da[d]&&(c=null);else if(!(a!=da[d].type||b&&da[d].id.indexOf(b)))return da[d]}return null}function oa(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=qa(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=oa(f))&&g.binding&&a.ca(g.type,g.binding,f,g.value),l=h.length}}}}
function qa(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}
function ra(a,b,c){for(var d=!0;c<b.length;){var e=b[c],f=e[0],g=null;0<=sa.indexOf(f)&&(g=function(c){return function(){ra(a,b,c)}}(c+1));var h=ta[f];if(h)if(!g)d=h(e[1],e[2],e[3]);else{if(!h(g,e[1],e[2],e[3]))break}else{var d=!1,l=ma(e[1],a);if(l)if(h=va[f])d=h(l,e[2],e[3]);else if(h=l.exports)if(h=h[f])if(d=!0,!g)d=h.call(l,e[2],e[3]);else if(!h.call(l,g,e[2],e[3]))break}if(!d){q("Script error ("+f+")");break}c++}return d}k=n.prototype;
k.toString=function(){return this.name?this.name:this.id||this.type};
k.ca=function(a,b,c){switch(b){case "clear":return this.P[b]||(this.P[b]=c,c.onclick=function(a){return function(){a.P.print&&(a.P.print.value="")}}(this)),!0;case "print":return this.P[b]||(this.ta=this.P[b]=c,c.value="",this.i=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.aa=function(a){this.i(a,this.cb)}),!0;default:return!1}};k.log=function(){};k.i=function(){};
k.status=function(a){this.i(this.cb+": "+a)};k.aa=function(a,b,c){ha(a,b,c||this.type)};function wa(a,b){a.G.error=!0;a.aa(b)}function xa(a,b){b&&(a.G.ready?b():a.zb=b);return a.G.ready}function ya(a){if(!a.G.error&&(a.G.ready=!0,a.G.ready)){var b=a.zb;a.zb=null;b&&b()}}function Aa(a,b){a.G.mb&&(b?a.G.Ib=!0:void 0===b&&a.i(a.toString()+" busy"));return a.G.mb}function Ca(a,b){if(a.G.Ib)return a.G.mb=!1,a.G.Ib=!1;if(a.G.error)return a.i(a.toString()+" error"),!1;a.G.mb=b;return a.G.mb}
k.va=function(){return this.G.ja=!0};k.ua=function(a,b){b&&(this.G.ja=!1);return!0};function Da(a,b){if(a.K){a===a.K?b|=0:b=b||a.ha;var c=a.K.ha&b;return!!b&&c===b||!!(c&a.K.wd)}return!1}function Ea(a,b){a.K&&Da(a,0)&&a.K.message(b,void 0)}function r(a,b,c,d,e,f,g){a.K&&(!0===g?g=0:null==g&&(g=a.ha),Fa(a.K,a,b,c,d,e,f,g))}window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));
var fa=window?window.PCjs.Machines:{},da=window?window.PCjs.Components:[],sa=["sleep","wait"],ta={alert:function(a){q(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},va={select:function(a,b,c){var d=!1;if(a=a.bindings[b])for(b=0;b<a.options.length;b++)if(a.options[b].textContent==c){a.selectedIndex!=b&&(a.selectedIndex=b);d=!0;break}return d}};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});
Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});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});
function Ga(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 Ha(a,b,c){var d="";b?11<b&&(b=11):b=a&-16777216?11:a&-65536?8: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 Ia(a){return t(a,2,!0)}function x(a){return t(a,4,!0)}function Ja(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 Ka(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function La(){var a=Oa();return-1!==a.indexOf("pcjs.org",a.length-8)}function Pa(a){return a.replace(/[&<>"']/g,function(a){return Qa[a]})}function Ra(a,b){return(a+" ").slice(0,b)}
function Sa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Qa={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},Ta={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",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 Ua(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}function Va(){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 Wa(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 Xa(a,b,c,d){c=void 0===c?!1:c;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="",p;for(p in b)b.hasOwnProperty(p)&&(l&&(l+="&"),l+=p+"="+encodeURIComponent(b[p]));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 Ya(a,b){var c,d={ma:null,ra:null,Qa:null,Ia:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Qa=g.load;d.Ia=g.exec;if(e=g.bytes)d.ma=e;else if(e=g.words)for(d.ma=Array(2*e.length),f=c=0;c<e.length;c++)d.ma[f++]=e[c]&255,d.ma[f++]=e[c]>>8&255;else if(e=g.data)for(d.ma=Array(4*e.length),f=c=0;c<e.length;c++)d.ma[f++]=
e[c]&255,d.ma[f++]=e[c]>>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;else d.ma=g;d.ra=g.symbols;d.ma.length?1==d.ma.length&&(q(d.ma[0]),d=null):(q("Empty resource: "+a),d=null)}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){q("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ma=e)}return d}
function Oa(){return"http://"+(window?window.location.host:"www.pcjs.org")}function bb(){return window?window.navigator.userAgent:""}function cb(){if(null==db){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}db=a}return db}function eb(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function fb(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function gb(a){if(window){var b=bb();return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}function hb(a){if(!ib){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}ib=c}return ib[a]}
function jb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}function kb(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}}function lb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}
function mb(a){ob.init.push(a)}function pb(a){if(qb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){ha("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function rb(a){!qb&&a?(qb=!0,sb&&tb("init"),vb&&tb("show")):qb=a}function tb(a){ob[a]&&pb(ob[a])}var ib=null,ob={init:[],show:[],exit:[]},sb=!1,vb=!1,qb=!0,db=null;lb("onload",function(){sb=!0;pb(ob.init)});lb("onpageshow",function(){vb=!0;pb(ob.show)});
lb(gb("Opera")||gb("iOS")?"onunload":"onbeforeunload",function(){pb(ob.exit)});
var wb="undefined"!==typeof ArrayBuffer,xb=[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],yb={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 zb(a){n.call(this,"Panel",a)}aa(zb,n);
zb.prototype.ca=function(a,b,c,d){return this.R&&this.R.ca(a,b,c,d)||this.u&&this.u.ca(a,b,c,d)||this.B&&this.B.ca(a,b,c,d)||this.K&&this.K.ca(a,b,c,d)?!0:n.prototype.ca.call(this,a,b,c,d)};zb.prototype.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;this.B=Ab(a,"Keyboard")};zb.prototype.va=function(a,b){b||Bb();return!0};zb.prototype.ua=function(){return!0};
function Bb(){for(var a=!1,b=qa(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=oa(d),f=la(e.id);f||(a=!0,f=new zb(e));pa(f,d);a&&ya(f)}}mb(Bb);
function Cb(a,b,c){n.call(this,"Bus",a);this.u=b;this.K=c;this.M=a.busWidth||16;this.N=Math.pow(2,this.M);this.C=this.N-1|0;this.g=(this.M>>1)+2;10>this.g&&(this.g=10);15<this.g&&(this.g=15);this.w=1<<this.g;this.O=this.w>>2;this.j=this.w-1;this.L=this.N/this.w|0;this.I=this.L-1;this.A=[];this.B=[];this.D=this.F=!1;this.S=[];this.T=[];a=new z;Db(a,this.K);this.b=Array(this.L);for(b=0;b<this.L;b++)this.b[b]=a;ya(this)}aa(Cb,n);Cb.prototype.reset=function(){};
Cb.prototype.va=function(a,b){b||this.reset();return!0};function Eb(a,b,c,d){for(var e=b,f=c,g=e>>>a.g;0<f&&g<a.b.length;){var h=a.b[g],l=g*a.w,p=a.w-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.pb+=h.J-e,h.J=e,!0;if(e>=h.J+h.pb){p=h.size-(e-l);p>f&&(p=f);h.pb=e-h.J+p;e=l+a.w;f-=p;g++;continue}}return Fb(Gb,e,f)}e=new z(e,p,a.w,d);Db(e,a.K,h);a.b[g++]=e;e=l+a.w;f-=p}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Hb[d]+" at "+x(b)),!0):Fb(Ib,b,c)}
function Jb(a,b){return a.b[(b&a.C)>>>a.g].ob(b&a.j,b)}function Kb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Hc(c,b):a.b[d++].Ya(c,b)|a.b[d&a.I].Ya(0,b+1)<<8}function Lb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Nb(c,b):a.b[d++].ob(c,b)|a.b[d&a.I].ob(0,b+1)<<8}function Ob(a,b,c){a.b[(b&a.C)>>>a.g].qb(b&a.j,c&255,b)}function Pb(a,b,c){var d=b&a.j,e=(b&a.C)>>>a.g;d!=a.j?a.b[e].Kc(d,c&65535,b):(a.b[e++].$a(d,c&255,b),a.b[e&a.I].$a(0,c>>8&255,b+1))}
function Qb(a){for(var b=0,c=[],d=0;d<a.L;d++){var e=a.b[d];if(e.Ca||e.Dc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],u=g+1;u<e.length&&e[u]===p;)u++;l[h++]=u-g;l[h++]=p;g=u}l.length<e.length&&(e=l)}c[f]=e}}return c}function Rb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}
function Sb(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.A[l]?q("Input port "+x(l)+" already registered"):f.A[l]=[h,!1]}}function Tb(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.A[b],h=a.S[b]||1,l=1==h?255:2==h?65535:-1,p=l;void 0!==g?(g[0]&&(p=g[0](b,c),void 0===p?p=l:p&=l),a.K&&a.D!=g[1]&&Ub(a.K,b,p)):a.K&&(Fa(a.K,a,b,null,c),a.D&&Ub(a.K,b,p));e|=p<<f;f+=h<<3;b+=h;d-=h}return e}
function Vb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Wb(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.B[l]?q("Output port "+x(l)+" already registered"):f.B[l]=[h,!1]}}
function Xb(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.B[b],h=a.T[b]||1,l=1==h?255:2==h?65535:-1,l=(c>>>=f)&l;if(void 0!==g){if(g[0])g[0](b,l,d);a.K&&a.F!=g[1]&&Yb(a.K,b,l)}else a.K&&(Fa(a.K,a,b,l,d),a.F&&Yb(a.K,b,l));f+=h<<3;b+=h;e-=h}}function Fb(a,b,c){q("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Gb=1,Ib=2,Zb;if(wb){var $b=new ArrayBuffer(2);(new DataView($b)).setUint16(0,256,!0);Zb=256===(new Uint16Array($b))[0]}else Zb=!1;var ac=Zb;
function z(a,b,c,d){this.id=bc+=2;this.b=null;this.J=a;this.pb=b;this.size=c||0;this.type=d||cc;this.u=d==dc;Db(this);this.Ca=this.Dc=!1;if(c)if(wb)this.j=new ArrayBuffer(c),this.R=new DataView(this.j,0,c),this.g=new Uint8Array(this.j,0,c),this.w=new Uint16Array(this.j,0,c>>1),this.b=new Int32Array(this.j,0,c>>2),fc(this,ac?gc:hc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;fc(this,ic)}else fc(this)}k=z.prototype;
k.save=function(){var a,b;if(wb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.R.getInt32(b<<2,!0);else a=this.b;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(wb)for(b=0;b<a.length;b++)this.R.setInt32(b<<2,a[b],!0);else this.b=a;return this.Ca=!0}return!1};function fc(a,b){b||(b=sc);tc(a,b,void 0);uc(a,b,void 0)}function tc(a,b,c){c&&a.H||(a.Ya=b[0]||a.Gc,a.Hc=b[2]||a.Ic);if(c||void 0===c)a.ob=b[0]||a.Gc,a.Nb=b[2]||a.Ic}
function uc(a,b,c){c&&a.P||(a.$a=!a.u&&b[1]||a.rb,a.Kc=!a.u&&b[3]||a.Rb);if(c||void 0===c)a.qb=b[1]||a.rb,a.Sb=b[3]||a.Rb}k.Pa=function(a,b){b?this.P++||uc(this,vc,!1):this.H++||tc(this,vc,!1)};function wc(a,b){b?--a.P||(a.$a=a.u?a.rb:a.qb,a.Kc=a.u?a.Rb:a.Sb):--a.H||(a.Ya=a.ob,a.Hc=a.Nb)}function Db(a,b,c){a.K=b;a.H=a.P=0;c&&((a.H=c.H)&&tc(a,vc,!1),(a.P=c.P)&&uc(a,vc,!1))}k.Gc=function(){this.K&&Da(this.K,129)&&this.K.message("attempt to read invalid block %"+t(this.J),!0);return 255};
k.rb=function(a,b){this.K&&Da(this.K,129)&&this.K.message("attempt to write "+x(b)+" to invalid block %"+t(this.J),!0)};k.Ic=function(a,b){return this.Ya(a++,b++)|this.Ya(a,b)<<8};k.Rb=function(a,b,c){this.$a(a++,b&255,c++);this.$a(a,b>>8,c)};k.ie=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};k.me=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};k.ve=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Ca=!0};
k.ze=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.Ca=!0};k.ge=function(a,b){if(this.K&&null!=this.J){var c=this.K;xc(c,this.J+a,1,c.I)&&c.da(!0)}return this.ob(a,b)};k.ke=function(a,b){if(this.K&&null!=this.J){var c=this.K;xc(c,this.J+a,2,c.I)&&c.da(!0)}return this.Nb(a,b)};
k.te=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;xc(d,this.J+a,1,d.w)&&d.da(!0)}this.u?this.rb(0,b):this.qb(a,b,c)};k.xe=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;xc(d,this.J+a,2,d.w)&&d.da(!0)}this.u?this.rb(0,b):this.Sb(a,b,c)};k.fe=function(a){return this.g[a]};k.he=function(a){return this.g[a]};k.je=function(a){return this.R.getUint16(a,!0)};k.le=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.w[a>>1]};k.se=function(a,b){this.g[a]=b;this.Ca=!0};
k.ue=function(a,b){this.g[a]=b;this.Ca=!0};k.we=function(a,b){this.R.setUint16(a,b,!0);this.Ca=!0};k.ye=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.w[a>>1]=b;this.Ca=!0};var cc=0,dc=2,Hb=["NONE","RAM","ROM","VID","H/W"],bc=0,sc=[],ic=[z.prototype.ie,z.prototype.ve,z.prototype.me,z.prototype.ze],vc=[z.prototype.ge,z.prototype.te,z.prototype.ke,z.prototype.xe];if(wb)var hc=[z.prototype.fe,z.prototype.se,z.prototype.je,z.prototype.we],gc=[z.prototype.he,z.prototype.ue,z.prototype.le,z.prototype.ye];
function yc(a,b){n.call(this,"CPU",a,1);var c=a.multiplier||1;this.Fa=a.cycles||b;this.U=c;this.Ta=Math.round(this.Fa/1E4)/100;this.Z=this.Ta*this.U;this.G.ka=!1;this.G.Qb=!1;this.G.lb=a.autoStart;this.G.Bc=!1;this.G.Wa=!1;this.ya=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Db=this.tb.bind(this);ya(this)}aa(yc,n);k=yc.prototype;
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.K=d;for(b=0;b<zc.length;b++)(c=this.P[zc[b]])&&this.R.ca(null,zc[b],c);this.W=Ab(a,"ChipSet");a=Ac(a,"autoStart");null!=a&&(this.G.lb="true"==a?!0:"false"==a?!1:!!a);ya(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
k.va=function(a,b){if(!b){if(a&&this.restore){Bc(this);if(!this.restore(a))return!1;Cc(this)}else this.reset();this.K?(a=this.K,a.i("Type ? for help with PC8080 Debugger commands"),Dc(a),a.ea&&(b=a.ea,a.ea=null,Ec(a,b))):this.i("No debugger detected")}Fc(this);return!0};k.ua=function(a){return a?this.save():!0};k.lb=function(){return this.G.lb||!this.K&&void 0===this.P.run?(this.tb(),!0):!1};k.Ec=function(){return 0};
function Cc(a){void 0===a.za&&(a.za=0);void 0===a.na&&(a.na=-1);void 0===a.sa&&(a.sa=-1);a.G.Wa=0<=a.za&&0<a.na;a.G.Wa&&(a.ya=0,a.oa=a.za-a.la)}function Gc(a,b){if(a.G.Wa){var c=!1;a.ya=a.ya+a.Ec()|0;a.oa-=b;0>=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Hc(a)&&(a.na=a.sa=-1,Cc(a),a.da(),c=!0);c&&a.i(Hc(a)+" cycles: checksum="+t(a.ya))}}
k.ca=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.G.ja)a=!0;else{var b=null,c,h=ka(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.G.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.G.ja);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.G.ready?"powered yet":"ready yet"+(b.zb?" (waiting for notification)":""))+".");a=!1}a&&(d.G.ka?d.da():d.tb())};
a=!0;break;case "speed":this.P[b]=c;a=!0;break;case "setSpeed":this.P[b]=c,c.onclick=function(){Ic(d,d.U<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Jc(a,b,c){a.la+=b;c&&(a.ga=a.b=0)}function Kc(a,b){var c=1;b&&1<a.U&&a.Y&&(c=a.Y/a.Ta);a.jb=Math.round(1E3/Lc);a.Na=Math.floor(a.Fa/Lc*c);b||(a.wa=a.Na);a.Va=0}function Hc(a){return a.la+a.X+a.ga-a.b}function Bc(a){a.Y=0;a.kb=0;a.la=a.X=a.ga=a.b=0;Cc(a);Ic(a,1)}
function Ic(a,b,c){var d=!1;if(void 0!==b){.8>a.Y/a.Z?b=1:d=!0;a.U=b;b=a.Ta*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.R&&a.R.Za()}Jc(a,a.X);a.X=0;a.V=ga();a.ea=0;Kc(a);return d}function Mc(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Nc(a,b,c){0<=b&&b<a.T.length&&0>a.T[b][0]&&(c*=a.Fa*a.U/1E3,a.T[b][0]=c+Oc(a))}function Oc(a,b){var c=a.ga-=a.b;a.b=0;b&&(a.ga=0);return c}
k.tb=function(a){if(Ca(this,!0)){if(!this.G.ka){Ic(this);this.R&&this.R.start(this.V,Hc(this));this.G.ka=!0;this.G.Qb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(Pc(this.R,!0),a&&this.R.Za(!0))}this.Va>=this.Fa&&Kc(this,!0);this.Ha=0;this.Ma=ga();this.ea&&(a=this.Ma-this.ea,a>this.jb&&(this.V+=a,this.V>this.Ma&&(this.V=this.Ma)));try{do{for(var c,d=this.G.Wa?1:this.Na,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Eb(c);c=Oc(this,!0);
this.Ha+=c;this.X+=c;Gc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.wa-=c;if(0>=this.wa){this.wa+=this.Na;++this.kb>=Qc&&(this.R&&Pc(this.R),this.kb=0);break}}while(this.G.ka)}catch(l){this.da();Fc(this);this.R&&this.R.stop(ga(),Hc(this));Ca(this,!1);wa(this,l.stack||l.message);return}c=setTimeout;d=this.Db;this.ea=ga();e=this.jb;this.Ha&&(e=Math.round(e*this.Ha/this.Na));e-=this.ea-this.Ma;if(f=this.ea-this.V)this.Y=Math.round(this.X/
(10*f))/100,864E5<=f&&(this.la=0,Ic(this));if(0>e||this.Y<this.Z)-1E3>e&&(this.V-=e),e=0;this.Va+=this.Ha;this.ea+=e;c(d,e)}else Fc(this),this.R&&this.R.stop(ga(),Hc(this))};k.Eb=function(){return 0};k.da=function(a){Aa(this,!0);Oc(this);Jc(this,this.X);this.X=0;if(this.G.ka){this.G.ka=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.G.complete=a};function Fc(a,b){if(a.R){for(var c=a.R,d=0;d<c.A.length;d++)Rc(c.A[d],b);Pc(a.R,b)}}var Lc=30,Qc=15,zc=["power","reset"];
function Sc(a){var b=+a.model||8080;yc.call(this,a,1E6);this.xb=b;this.gb=Tc;Bc(this);this.G.complete=this.G.zd=!1;this.ib=0;this.La=[];this.hb=0;Uc(this)}aa(Sc,yc);function Vc(a,b){a.La.push(b)}k=Sc.prototype;k.reset=function(){this.G.ka&&this.da();Uc(this);Bc(this);this.G.error=!1;yc.prototype.reset.call(this)};function Uc(a){a.g=0;a.w=0;a.A=0;a.B=0;a.C=0;a.D=0;a.F=0;a.M=0;A(a,a.hb);Wc(a,0);a.S=0}function id(a,b){a.hb=b;A(a,b)}
k.Ec=function(){var a=this.g+this.w+this.A+this.B+this.C+this.D+this.F|0;return a=a+this.M+this.j+jd(this)|0};k.save=function(){var a=new kd(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,jd(this)]);a.set(1,[this.S,this.la,this.U]);a.set(2,Qb(this.H));return a.data()};
k.restore=function(a){var b=a[0];this.g=b[0];this.w=b[1];this.A=b[2];this.B=b[3];this.C=b[4];this.D=b[5];this.F=b[6];this.M=b[7]&65535;A(this,b[8]);Wc(this,b[9]);b=a[1];this.S=b[0];this.la=b[1];Ic(this,b[3]);a:{b=this.H;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.O){for(var f=0,g=Array(b.O),h=0;h<e.length-1;)for(var l=e[h++],p=e[h++];l--;)g[f++]=p;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.ca=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.P[b]=c;this.ib++;a=!0;break;default:a=yc.prototype.ca.call(this,a,b,c)}return a};function ld(a){return a.w<<8|a.A}function md(a,b){a.w=b>>8&255;a.A=b&255}function nd(a){return a.B<<8|a.C}function od(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F}
function pd(a,b){a.D=b>>8&255;a.F=b&255}function A(a,b){a.j=b&65535}function qd(a){return a.I&256?1:0}function rd(a,b){a.I=a.I&255|b}function sd(a){return xb[a.L&255]?4:0}function td(a){return(a.L^a.O)&16?16:0}function ud(a){return a.I&255?0:64}function vd(a){return a.L&128?128:0}function jd(a){return a.N&-214|vd(a)|ud(a)|td(a)|sd(a)|qd(a)}function Wc(a,b){a.I=a.L=a.O=0;b&1&&(a.I|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.I|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2}
function wd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b)&255}function xd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?1:0))&255}function yd(a,b){a.I=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.I}function zd(a,b){a.O=b^255;b=a.L=b+255&255;a.I=a.I&-256|b;return b}function Ad(a,b){a.O=b;b=a.L=b+1&255;a.I=a.I&-256|b;return b}function Bd(a,b){return a.L=a.I=a.O=a.g|b}function Cd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+1^256)&255}
function Dd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?0:1)^256)&255}function Ed(a,b){return a.L=a.I=a.O=a.g^b}function E(a,b){a=a.H;return a.b[(b&a.C)>>>a.g].Ya(b&a.j,b)}function Fd(a,b,c){a=a.H;a.b[(b&a.C)>>>a.g].$a(b&a.j,c&255,b)}function F(a){var b=E(a,a.j);A(a,a.j+1);return b}function G(a){var b=Kb(a.H,a.j);A(a,a.j+2);return b}function Gd(a){var b=Kb(a.H,a.M);a.M=a.M+2&65535;return b}function H(a,b){a.M=a.M-2&65535;Pb(a.H,a.M,b)}
function Hd(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<<b);b++);a.S&=~(0>b?255:1<<b);a.N&=-513;a.S&=-257;a.gb[199|b<<3].call(a)}return a.S&256?(Oc(a),!1):!0}function Id(a,b){a.S|=1<<b;a.N&512&&Oc(a)}function I(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(wa(a,"Value for "+b+" is invalid"),a.da()),c=!a.G.ka||a.G.Bc?t(c,d):"--------".substr(0,d),a.P[b].textContent!=c&&(a.P[b].textContent=c))}
k.Eb=function(a){this.G.complete=!0;var b=this.G.zd=this.K&&Jd(this.K),c=a?this.G.Qb?0:1:-1;this.G.Qb=!1;this.ga=this.b=a;if(Hd(this)){do{if(b){if(Kd(this.K,this.j,c)){this.da();break}c=1}this.gb[F(this)].call(this)}while(0<this.b)}return this.G.complete?this.ga-this.b:void 0===this.G.complete?0:-1};mb(function(){for(var a=qa(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Sc(d);pa(d,c)}});function Ld(){this.b-=4}function Md(){A(this,G(this));this.b-=10}
function Nd(){A(this,Gd(this));this.b-=10}function Od(){var a=G(this);H(this,this.j);A(this,a);this.b-=17}
var Tc=[Ld,function(){md(this,G(this));this.b-=10},function(){Fd(this,ld(this),this.g);this.b-=7},function(){md(this,ld(this)+1);this.b-=5},function(){this.w=Ad(this,this.w);this.b-=5},function(){this.w=zd(this,this.w);this.b-=5},function(){this.w=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|a>>8;rd(this,a&256);this.b-=4},Ld,function(){var a;pd(this,a=D(this)+ld(this));rd(this,a>>8&256);this.b-=10},function(){this.g=E(this,ld(this));this.b-=7},function(){md(this,ld(this)-1);this.b-=
5},function(){this.A=Ad(this,this.A);this.b-=5},function(){this.A=zd(this,this.A);this.b-=5},function(){this.A=F(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;rd(this,a);this.b-=4},Ld,function(){od(this,G(this));this.b-=10},function(){Fd(this,nd(this),this.g);this.b-=7},function(){od(this,nd(this)+1);this.b-=5},function(){this.B=Ad(this,this.B);this.b-=5},function(){this.B=zd(this,this.B);this.b-=5},function(){this.B=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|
qd(this);rd(this,a&256);this.b-=4},Ld,function(){var a;pd(this,a=D(this)+nd(this));rd(this,a>>8&256);this.b-=10},function(){this.g=E(this,nd(this));this.b-=7},function(){od(this,nd(this)-1);this.b-=5},function(){this.C=Ad(this,this.C);this.b-=5},function(){this.C=zd(this,this.C);this.b-=5},function(){this.C=F(this);this.b-=7},function(){var a=this.g<<8;this.g=(qd(this)<<8|this.g)>>1;rd(this,a&256);this.b-=4},Ld,function(){pd(this,G(this));this.b-=10},function(){var a=G(this);Pb(this.H,a,D(this));
this.b-=16},function(){pd(this,D(this)+1);this.b-=5},function(){this.D=Ad(this,this.D);this.b-=5},function(){this.D=zd(this,this.D);this.b-=5},function(){this.D=F(this);this.b-=7},function(){var a=0,b=qd(this);if(td(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=wd(this,a);rd(this,b?256:0);this.b-=4},Ld,function(){var a;pd(this,a=D(this)+D(this));rd(this,a>>8&256);this.b-=10},function(){var a;a=G(this);a=Kb(this.H,a);pd(this,a);this.b-=16},function(){pd(this,D(this)-1);this.b-=5},function(){this.F=
Ad(this,this.F);this.b-=5},function(){this.F=zd(this,this.F);this.b-=5},function(){this.F=F(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},Ld,function(){this.M=G(this)&65535;this.b-=10},function(){Fd(this,G(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);Fd(this,a,Ad(this,E(this,a)));this.b-=10},function(){var a=D(this);Fd(this,a,zd(this,E(this,a)));this.b-=10},function(){Fd(this,D(this),F(this));this.b-=10},function(){this.I|=256;this.b-=
4},Ld,function(){var a;pd(this,a=D(this)+this.M);rd(this,a>>8&256);this.b-=10},function(){this.g=E(this,G(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=Ad(this,this.g);this.b-=5},function(){this.g=zd(this,this.g);this.b-=5},function(){this.g=F(this);this.b-=7},function(){rd(this,qd(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.w=this.A;this.b-=5},function(){this.w=this.B;this.b-=5},function(){this.w=this.C;this.b-=5},function(){this.w=this.D;this.b-=
5},function(){this.w=this.F;this.b-=5},function(){this.w=E(this,D(this));this.b-=7},function(){this.w=this.g;this.b-=5},function(){this.A=this.w;this.b-=5},function(){this.b-=5},function(){this.A=this.B;this.b-=5},function(){this.A=this.C;this.b-=5},function(){this.A=this.D;this.b-=5},function(){this.A=this.F;this.b-=5},function(){this.A=E(this,D(this));this.b-=7},function(){this.A=this.g;this.b-=5},function(){this.B=this.w;this.b-=5},function(){this.B=this.A;this.b-=5},function(){this.b-=5},function(){this.B=
this.C;this.b-=5},function(){this.B=this.D;this.b-=5},function(){this.B=this.F;this.b-=5},function(){this.B=E(this,D(this));this.b-=7},function(){this.B=this.g;this.b-=5},function(){this.C=this.w;this.b-=5},function(){this.C=this.A;this.b-=5},function(){this.C=this.B;this.b-=5},function(){this.b-=5},function(){this.C=this.D;this.b-=5},function(){this.C=this.F;this.b-=5},function(){this.C=E(this,D(this));this.b-=7},function(){this.C=this.g;this.b-=5},function(){this.D=this.w;this.b-=5},function(){this.D=
this.A;this.b-=5},function(){this.D=this.B;this.b-=5},function(){this.D=this.C;this.b-=5},function(){this.b-=5},function(){this.D=this.F;this.b-=5},function(){this.D=E(this,D(this));this.b-=7},function(){this.D=this.g;this.b-=5},function(){this.F=this.w;this.b-=5},function(){this.F=this.A;this.b-=5},function(){this.F=this.B;this.b-=5},function(){this.F=this.C;this.b-=5},function(){this.F=this.D;this.b-=5},function(){this.b-=5},function(){this.F=E(this,D(this));this.b-=7},function(){this.F=this.g;
this.b-=5},function(){Fd(this,D(this),this.w);this.b-=7},function(){Fd(this,D(this),this.A);this.b-=7},function(){Fd(this,D(this),this.B);this.b-=7},function(){Fd(this,D(this),this.C);this.b-=7},function(){Fd(this,D(this),this.D);this.b-=7},function(){Fd(this,D(this),this.F);this.b-=7},function(){var a=this.j-1;if(this.La.length)for(var b=0;b<this.La.length;b++)if(this.La[b](a))return;this.b-=7;this.S|=256;Oc(this);this.K&&Da(this,-2147483648)?(A(this,a),this.K.da()):this.N&512||(this.K&&A(this,a),
this.da())},function(){Fd(this,D(this),this.g);this.b-=7},function(){this.g=this.w;this.b-=5},function(){this.g=this.A;this.b-=5},function(){this.g=this.B;this.b-=5},function(){this.g=this.C;this.b-=5},function(){this.g=this.D;this.b-=5},function(){this.g=this.F;this.b-=5},function(){this.g=E(this,D(this));this.b-=7},function(){this.b-=5},function(){this.g=wd(this,this.w);this.b-=4},function(){this.g=wd(this,this.A);this.b-=4},function(){this.g=wd(this,this.B);this.b-=4},function(){this.g=wd(this,
this.C);this.b-=4},function(){this.g=wd(this,this.D);this.b-=4},function(){this.g=wd(this,this.F);this.b-=4},function(){this.g=wd(this,E(this,D(this)));this.b-=7},function(){this.g=wd(this,this.g);this.b-=4},function(){this.g=xd(this,this.w);this.b-=4},function(){this.g=xd(this,this.A);this.b-=4},function(){this.g=xd(this,this.B);this.b-=4},function(){this.g=xd(this,this.C);this.b-=4},function(){this.g=xd(this,this.D);this.b-=4},function(){this.g=xd(this,this.F);this.b-=4},function(){this.g=xd(this,
E(this,D(this)));this.b-=7},function(){this.g=xd(this,this.g);this.b-=4},function(){this.g=Cd(this,this.w);this.b-=4},function(){this.g=Cd(this,this.A);this.b-=4},function(){this.g=Cd(this,this.B);this.b-=4},function(){this.g=Cd(this,this.C);this.b-=4},function(){this.g=Cd(this,this.D);this.b-=4},function(){this.g=Cd(this,this.F);this.b-=4},function(){this.g=Cd(this,E(this,D(this)));this.b-=7},function(){this.g=Cd(this,this.g);this.b-=4},function(){this.g=Dd(this,this.w);this.b-=4},function(){this.g=
Dd(this,this.A);this.b-=4},function(){this.g=Dd(this,this.B);this.b-=4},function(){this.g=Dd(this,this.C);this.b-=4},function(){this.g=Dd(this,this.D);this.b-=4},function(){this.g=Dd(this,this.F);this.b-=4},function(){this.g=Dd(this,E(this,D(this)));this.b-=7},function(){this.g=Dd(this,this.g);this.b-=4},function(){this.g=yd(this,this.w);this.b-=4},function(){this.g=yd(this,this.A);this.b-=4},function(){this.g=yd(this,this.B);this.b-=4},function(){this.g=yd(this,this.C);this.b-=4},function(){this.g=
yd(this,this.D);this.b-=4},function(){this.g=yd(this,this.F);this.b-=4},function(){this.g=yd(this,E(this,D(this)));this.b-=7},function(){this.g=yd(this,this.g);this.b-=4},function(){this.g=Ed(this,this.w);this.b-=4},function(){this.g=Ed(this,this.A);this.b-=4},function(){this.g=Ed(this,this.B);this.b-=4},function(){this.g=Ed(this,this.C);this.b-=4},function(){this.g=Ed(this,this.D);this.b-=4},function(){this.g=Ed(this,this.F);this.b-=4},function(){this.g=Ed(this,E(this,D(this)));this.b-=7},function(){this.g=
Ed(this,this.g);this.b-=4},function(){this.g=Bd(this,this.w);this.b-=4},function(){this.g=Bd(this,this.A);this.b-=4},function(){this.g=Bd(this,this.B);this.b-=4},function(){this.g=Bd(this,this.C);this.b-=4},function(){this.g=Bd(this,this.D);this.b-=4},function(){this.g=Bd(this,this.F);this.b-=4},function(){this.g=Bd(this,E(this,D(this)));this.b-=7},function(){this.g=Bd(this,this.g);this.b-=4},function(){Cd(this,this.w);this.b-=4},function(){Cd(this,this.A);this.b-=4},function(){Cd(this,this.B);this.b-=
4},function(){Cd(this,this.C);this.b-=4},function(){Cd(this,this.D);this.b-=4},function(){Cd(this,this.F);this.b-=4},function(){Cd(this,E(this,D(this)));this.b-=7},function(){Cd(this,this.g);this.b-=4},function(){ud(this)||(A(this,Gd(this)),this.b-=6);this.b-=5},function(){md(this,Gd(this));this.b-=10},function(){var a=G(this);ud(this)||A(this,a);this.b-=10},Md,function(){var a=G(this);ud(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,ld(this));this.b-=11},function(){this.g=
wd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,0);this.b-=11},function(){ud(this)&&(A(this,Gd(this)),this.b-=6);this.b-=5},Nd,function(){var a=G(this);ud(this)&&A(this,a);this.b-=10},Md,function(){var a=G(this);ud(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Od,function(){this.g=xd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,8);this.b-=11},function(){qd(this)||(A(this,Gd(this)),this.b-=6);this.b-=5},function(){od(this,Gd(this));this.b-=10},function(){var a=G(this);
qd(this)||A(this,a);this.b-=10},function(){var a=F(this);Xb(this.H,a,this.g,this.j+-2&65535);this.b-=10},function(){var a=G(this);qd(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,nd(this));this.b-=11},function(){this.g=Cd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,16);this.b-=11},function(){qd(this)&&(A(this,Gd(this)),this.b-=6);this.b-=5},Nd,function(){var a=G(this);qd(this)&&A(this,a);this.b-=10},function(){var a=F(this);this.g=Tb(this.H,a,this.j+-2&65535)&
255;this.b-=10},function(){var a=G(this);qd(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Od,function(){this.g=Dd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,24);this.b-=11},function(){sd(this)||(A(this,Gd(this)),this.b-=6);this.b-=5},function(){pd(this,Gd(this));this.b-=10},function(){var a=G(this);sd(this)||A(this,a);this.b-=10},function(){var a=Gd(this);H(this,D(this));pd(this,a);this.b-=18},function(){var a=G(this);sd(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=
11},function(){H(this,D(this));this.b-=11},function(){this.g=yd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,32);this.b-=11},function(){sd(this)&&(A(this,Gd(this)),this.b-=6);this.b-=5},function(){A(this,D(this));this.b-=5},function(){var a=G(this);sd(this)&&A(this,a);this.b-=10},function(){var a=D(this);pd(this,nd(this));od(this,a);this.b-=5},function(){var a=G(this);sd(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Od,function(){this.g=Ed(this,F(this));this.b-=7},function(){H(this,
this.j);A(this,40);this.b-=11},function(){vd(this)||(A(this,Gd(this)),this.b-=6);this.b-=5},function(){var a=Gd(this);Wc(this,a&255|this.N&-256);this.g=a>>8;this.b-=10},function(){var a=G(this);vd(this)||A(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=G(this);vd(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,jd(this)&255|this.g<<8);this.b-=11},function(){this.g=Bd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,48);this.b-=11},function(){vd(this)&&
(A(this,Gd(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=G(this);vd(this)&&A(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Hd(this)},function(){var a=G(this);vd(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Od,function(){Cd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,56);this.b-=11}];
function Pd(a){n.call(this,"ChipSet",a,32768);var b=a.model;b&&!Qd[b]&&ha("Unrecognized ChipSet model: "+b);this.g=Qd[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);ya(this)}aa(Pd,n);k=Pd.prototype;k.ca=function(){return!1};
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;this.R=a;this.B=Ab(a,"Keyboard");this.C=Ab(a,"SerialPort");this.video=Ab(a,"Video");Sb(b,this,this.g.Bb);Wb(b,this,this.g.Cb);if(d){var e=this;Rd(d,16384,function(){for(var a="",b=0;b<e.j.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=x(e.j[b]);e.K.i(a)})}};k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.g.INIT&&!this.restore(this.g.INIT)&&this.aa("reset error")};
k.save=function(){var a=new kd(this);switch(this.g.pa){case Sd.pa:a.set(0,[this.ea,this.A,this.ga,this.N,this.T,this.Y,this.Z]);break;case J.pa:a.set(0,[this.W,this.D]),a.set(1,[this.F,this.I]),a.set(2,[this.w,this.O,this.X,this.V]),a.set(3,[this.M,this.b,this.L,this.S,this.j])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.g.pa){case Sd.pa:return this.ea=b[0],this.A=b[1],this.ga=b[2],this.N=b[3],this.T=b[4],this.Y=b[5],this.Z=b[6],!0;case J.pa:return this.W=b[0],this.D=b[1],b=a[1],this.F=b[0],this.I=b[1],b=a[2],this.w=b[0],this.O=b[1],this.X=b[2],this.V=b[3],b=a[3],this.M=b[0],this.b=b[1],this.L=b[2],this.S=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Jd=function(a,b){var c=this.ea;r(this,a,null,b,"STATUS0",c,!0);return c};
k.Kd=function(a,b){var c=this.A;r(this,a,null,b,"STATUS1",c,!0);return c};k.Ld=function(a,b){var c=this.ga;r(this,a,null,b,"STATUS2",c,!0);return c};k.Id=function(a,b){var c=this.N>>8-this.T&255;r(this,a,null,b,"SHIFT.RESULT",c,!0);return c};k.Wd=function(a,b,c){r(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};k.Yd=function(a,b,c){r(this,a,b,c,"SOUND1",null,!0);this.Y=b};k.Xd=function(a,b,c){r(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8};
k.Zd=function(a,b,c){r(this,a,b,c,"SOUND2",null,!0);this.Z=b};k.$d=function(a,b,c){r(this,a,b,c,"WATCHDOG",null,!0)};function Td(a){var b=0,c=0,d=~a.M;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.Md=function(a,b){var c=this.D,c=c&~J.xa.jc;if((Hc(this.u)&64)<<1&&(c|=J.xa.jc,c!=this.D)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case J.Aa.Ja.nd:break;case J.Aa.Ja.Lc:this.M=this.M<<1|d;break;case J.Aa.Ja.Rc:d=Td(this);this.j[d]=J.Aa.vb;Ea(this,"doNVRCommand(): erase data at addr "+x(d));break;case J.Aa.Ja.Mc:this.b=this.b<<1|d;break;case J.Aa.Ja.rd:d=Td(this);e=this.b&J.Aa.vb;this.j[d]=e;Ea(this,"doNVRCommand(): write data "+x(e)+" to addr "+x(d));break;case J.Aa.Ja.ld:d=Td(this);e=this.j[d];
null==e&&(e=J.Aa.vb);this.b=e;Ea(this,"doNVRCommand(): read data "+x(e)+" from addr "+x(d));break;case J.Aa.Ja.md:this.b<<=1;this.S=this.b&J.Aa.vb+1;break;default:Ea(this,"doNVRCommand(): unrecognized command "+Ia(e))}}c&=~J.xa.kc;this.S&&(c|=J.xa.kc);c&=~J.xa.dc;if(d=this.B){d=this.B;if(e=d.A)e=d.u,e=Hc(d.u)>=d.F+e.Fa*e.U/1E3*1.2731488;e&&(d.A=!1);d=!d.A}d&&(c|=J.xa.dc);c&=~J.xa.sc;this.C&&this.C.ia&Ud&&(c|=J.xa.sc);this.D=c;r(this,a,null,b,"FLAGS",c);return c};
k.ae=function(a,b,c){r(this,a,b,c,"BRIGHTNESS");this.W=b};k.de=function(a,b,c){r(this,a,b,c,"NVR.LATCH");this.L=b};k.ce=function(a,b,c){r(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.w=this.w&-4|a;break;case 1:this.w=this.w&-13|a<<2;this.video&&(b=this.video,a=this.w,Ea(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?Rc(b,!0):b.ya=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.V=a}};
k.be=function(a,b,c){r(this,a,b,c,"DC011");b&J.Ka.kd?(b&=J.Ka.oc,this.I!=b&&(this.I=b,this.video&&(a=this.video,b=this.I==J.Ka.oc?50:60,Ea(a,"updateRate("+b+")"),a.jb=b))):(b&=J.Ka.Wb,this.F!=b&&(this.F=b,this.video&&(a=this.F==J.Ka.Wb?132:80,b=this.video,Ea(b,"updateDimensions("+a+","+(80<a&&this.D&J.xa.ic?14:24)+")"),b.O=a,b.fa=b.Ha,80<a&&b.fa--,Vd(b)&&Wd(b))))};
var Sd={pa:1978.1,pd:{qa:0,ff:1,kf:16,sf:32,Bf:64,Af:128,bb:14},Oa:{qa:1,Pc:1,jd:2,ed:4,fd:16,gd:32,hd:64,bb:8},qd:{qa:2,ef:3,Jf:4,gf:8,wf:16,xf:32,yf:64,hf:128,bb:0},Ff:{qa:3},Df:{qa:2,tf:7},Hf:{qa:3,Kf:1,Gf:2,zf:4,qf:8,jf:16,Ae:32},Ef:{qa:4},If:{qa:5,lf:1,mf:2,nf:4,pf:8,Lf:16}},J={pa:100,xa:{qa:66,sc:1,ic:2,dd:4,vf:8,uf:16,kc:32,jc:64,dc:128},Oc:{qa:66,INIT:0},Ka:{qa:194,De:0,Wb:16,kd:32,oc:48,Uc:0,Vc:32},ub:{qa:162,Cf:0,Xc:0,Tc:0,Wc:0,Sc:0},Aa:{rf:{qa:98},Ja:{Mc:0,Lc:1,md:2,rd:4,Rc:5,ld:6,nd:7},
vb:16383}},Qd={SI1978:Sd,VT100:J};Sd.INIT=[[Sd.pd.bb,Sd.Oa.bb,Sd.qd.bb,0,0,0,0]];
J.INIT=[[J.Oc.INIT,J.xa.ic|J.xa.dd],[J.Ka.Uc,J.Ka.Vc],[J.ub.Xc,J.ub.Tc,J.ub.Wc,J.ub.Sc],[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]]];Sd.Bb={0:Pd.prototype.Jd,1:Pd.prototype.Kd,2:Pd.prototype.Ld,3:Pd.prototype.Id};
Sd.Cb={2:Pd.prototype.Wd,3:Pd.prototype.Yd,4:Pd.prototype.Xd,5:Pd.prototype.Zd,6:Pd.prototype.$d};J.Bb={66:Pd.prototype.Md};J.Cb={66:Pd.prototype.ae,98:Pd.prototype.de,162:Pd.prototype.ce,194:Pd.prototype.be};mb(function(){for(var a=qa(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Pd(d);pa(d,c)}});
function Xd(a){n.call(this,"ROM",a);this.b=null;this.A=a.addr;this.g=a.size;this.w=a.alias;this.j=a.file;this.B=Ja(this.j);if(this.j){a=this.j;var b=Ka(this.B);"json"!=b&&"hex"!=b&&(a=Oa()+"/api/v1/dump?file="+this.j+"&format=bytes&decimal=true");var c=this;Xa(a,null,!0,function(a,b,f){Yd(c,a,b,f)})}}aa(Xd,n);Xd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Zd(this)};
Xd.prototype.va=function(){if(this.ra){if(this.K){var a=this.K,b=this.id,c=this.A,d=this.g,e=this.ra,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var l=h.o,p=h.a;if(void 0!==l){var u=f,l=[l>>>0,g],v=Ua(u,l,a.Ac);0>v&&u.splice(-(v+1),0,l)}p&&(h.a=p.replace(/''/g,'"'))}a.A.push({Mf:b,J:c,Qd:d,ra:e,zc:f})}delete this.ra}return!0};Xd.prototype.ua=function(){return!0};
function Yd(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{ea(a.eb,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.ra=e.symbols;if(!a.b.length){q("Empty ROM: "+b);return}if(1==a.b.length){q(a.b[0]);return}}catch(h){a.aa("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]=Ga(b[e],16);Zd(a)}}
function Zd(a){if(!xa(a))if(!a.j)ya(a);else if(a.b&&a.H){a.g||(a.g=a.b.length);if(a.b.length!=a.g)wa(a,"ROM size ("+t(a.b.length,8,!0)+") does not match specified size ("+t(a.g,8,!0)+")");else{var b;b=a.A;if(Eb(a.H,b,a.g,dc)){var c;for(c=0;c<a.b.length;c++)Ob(a.H,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.H,g=d.g,h=[],l=d.A>>>f.g;0<g&&l<f.b.length;)h.push(f.b[l++]),g-=f.w;f=d.H;d=d.g;g=0;for(e>>>=
f.g;0<d&&e<f.b.length;){l=h[g++];if(!l)break;f.b[e++]=l;d-=f.w}}delete a.b}}ya(a)}}mb(function(){for(var a=qa(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Xd(d);pa(d,c)}});
function $d(a){n.call(this,"RAM",a);this.ra=this.g=null;this.w=a.addr;this.A=a.size;this.Qa=a.load;this.Ia=a.exec;this.j=!1;this.b=a.file;this.B=Ja(this.b);if(this.b){a=this.b;var b=Ka(this.B);"json"!=b&&"hex"!=b&&(a=Oa()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Xa(a,null,!0,function(a,b,f){f?c.aa("Unable to load RAM resource (error "+f+": "+a+")"):(ea(c.eb,a,b),(a=Ya(a,b))?(c.g=a.ma,c.ra=a.ra,null==c.Qa&&(c.Qa=a.Qa),null==c.Ia&&(c.Ia=a.Ia)):c.b=null,ae(c))})}}aa($d,n);
$d.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;ae(this)};$d.prototype.va=function(){return!0};$d.prototype.ua=function(){return!0};
function ae(a){!a.j&&a.A&&Eb(a.H,a.w,a.A,1)&&(a.j=!0);if(!xa(a)){if(!a.j)q("No RAM allocated");else if(a.b){if(!a.g||!a.H)return;var b=a.w;null!==a.Qa&&(b=a.Qa);for(var c=0;c<a.g.length;c++)Ob(a.H,b+c,a.g[c]);if(null!==a.Ia){if(a.Ia==be){for(c=0;c<ce.length;c++)Ob(a.H,ce[c],118);Vc(a.u,function(a){return function(b){if(0<=ce.indexOf(b)){var c=!1,d=a.u,e=a.K;if(b==de)switch(c=!0,d.A){case ee:fe(a,String.fromCharCode(d.C));break;case ge:for(var l=nd(d),p="",u=255;u--;){var v=E(a.u,l++);if(36==v)break;
p+=String.fromCharCode(v)}fe(a,p);break;default:c=!1}c?Nd.call(d):e&&(a.i("\nCP/M vector "+x(b)),A(d,b),e.da());b=!0}else b=!1;return b}}(a))}id(a.u,a.Ia)}delete a.g}ya(a)}}$d.prototype.reset=function(){};function fe(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}var de=5,ee=2,ge=9,be=256,ce=[0,de];mb(function(){for(var a=qa(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new $d(d);pa(d,c)}});
function he(a){n.call(this,"Keyboard",a,65536);(a=a.model)&&!De[a]&&ha("Unrecognized Keyboard8080 model: "+a);this.b=De[a]||{};this.reset();ya(this)}aa(he,n);k=he.prototype;
k.ca=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.P[e]){if("led"==a&&this.b.fb[b])return this.P[e]=c,!0;switch(b){case "kbd":case "screen":return gb("iOS")?(c.onkeypress=function(a){var b=!1;if(a=d.b.sb[a.keyCode||a.charCode]){a&128&&(a&=127,b=!0);var c;a:{for(c in d.b.Sa)if(d.b.Sa[c]==a){c=+c;break a}c=0}c&&(b?Ee(d,16,!0,!0):Ee(d,16,!1),Ee(d,c,!0,!0))}return!0},c.onkeydown=function(a){return Fe(d,a,!0)},c.onkeyup=function(a){return Fe(d,a,!1)}):(c.onkeydown=function(a){return Ge(d,a,!0)},
c.onkeyup=function(a){return Ge(d,a,!1)},c.onkeypress=function(a){a=a.keyCode||a.charCode;a>=m.ab&&a<=m.wb?d.g&(He|Ie)||(d.g|=Ie,Ee(d,20,!0),Je(d)):a>=m.yc&&a<=m.z&&d.g&Ie&&(d.g&=~Ie,Ee(d,20,!1),Je(d));return!0}),c.onpaste=function(a){a:{if(d.C&&d.C.Ra&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Ke(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ua&&void 0!==this.b.Ua[b])return this.P[e]=c,c.onclick=
function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=0;17==b?e=Le:20==b&&(e=Ie);if(e){c.style.fontWeight="normal";if(d=!(a.g&e))c.style.fontWeight="bold";Me(a,b,d)}Ee(a,b,d,!e);a.R&&a.R.Za()}}(this,this.b.Ua[b]),!0}}return!1};k.Ea=function(a,b,c,d){this.R=a;this.u=c;this.K=d;var e=this;this.L=Mc(this.u,function(){Ne(e)});this.W=Ab(a,"ChipSet");this.C=Ab(a,"SerialPort");Sb(b,this,this.b.Bb);Wb(b,this,this.b.Cb)};
k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};k.save=function(){var a=new kd(this);switch(this.b.pa){case K.pa:a.set(0,[this.D,this.B,this.A,this.F,-1])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case Oe.pa:return!0;case K.pa:return this.D=b[0],Je(this,this.D&K.Ba.ec),this.B=b[1],this.A=b[2],this.F=b[3],this.w=b[4],!0}return!1};function Je(a,b){var c;null!=b?a.I=b:b=a.I;for(var d in a.b.fb)if(c="led-"+d,c=a.P[c]){var e=a.b.fb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+t(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&Ie?"#"+t(65280,6):"#000000"}
function Me(a,b,c,d){var e=0;switch(b){case 16:e=d?Pe:Qe;break;case 17:e=d?Re:Le;break;case 18:e=d?Se:Te;break;case 91:e=d?Ue:Ve;break;case 20:e=Ie,c=!(a.g&e)}e&&(a.g=c?a.g|e:a.g&~e);return c}
function Ge(a,b,c){var d=!0,e=b.keyCode,e=ca[e]||e;c=Me(a,e,c,2==b.location);var f;a:if(e=a.b.Tb[e]||e,a.b.Sa[e])f=e;else{for(f in a.b.Ua)if(a.b.Ua[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.g&(We|Xe)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.g=c?a.g|Xe:a.g&~Xe)),d=Ee(a,f,c),(!(f>=m.ab&&f<=m.wb)||a.g|Ye)&&b.preventDefault&&b.preventDefault());return d}
function Fe(a,b,c){var d=!0;if(c){var e=b.keyCode,f=a.b.Sa[e],g;if(g=f){a:{for(var h in a.b.sb)if(a.b.sb[h]==f){f=+h;break a}f=0}g=!f}g&&(d=Ee(a,e,c,!0),b.preventDefault&&b.preventDefault())}return d}
function Ee(a,b,c,d){var e;a:{for(e=0;e<a.j.length;e++)if(a.j[e].Pb==b)break a;e=-1}if(c)0>e?a.j.push({Pb:b,Mb:Date.now(),yb:d||!1}):(a.j[e].Mb=Date.now(),a.j[e].yb=d||!1),d&&Ne(a);else if(0<=e){if(!a.j[e].yb&&(d=a.j[e].Mb)&&Date.now()-d<Ze)return a.j[e].yb=!0,Ne(a),!0;a.j.splice(e,1)}if(a.W){d=0;switch(b){case "1p":d=Sd.Oa.ed;break;case "2p":d=Sd.Oa.jd;break;case "coin":d=Sd.Oa.Pc;break;case "left":d=Sd.Oa.gd;break;case "right":d=Sd.Oa.hd;break;case "fire":d=Sd.Oa.fd}d&&(a=a.W,b=d,a.A&=~b,c&&(a.A|=
b))}return!0}function Ne(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].yb){var d=a.j[b].Pb,e=Ze-(Date.now()-a.j[b].Mb);if(0<e){if(0>c||c>e)c=e}else{Ee(a,d,!1);b=0;continue}}b++}0<=c&&Nc(a.u,a.L,c)}k.Nd=function(a,b){var c=this.B;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=K.Sa[c.Pb],c&128&&(c&=127)):(this.w=-1,c=K.Yc),this.B=c,Id(this.u,1));r(this,a,null,b,"KBDUART.ADDRESS",c);return c};
k.ee=function(a,b,c){r(this,a,b,c,"KBDUART.STATUS");this.D=b;this.A=!0;this.F=Hc(this.u);Je(this,b&K.Ba.ec);b&K.Ba.od&&(this.w=0,Id(this.u,1))};var Pe=1,Qe=2,He=3,Re=4,Le=8,Ye=12,Se=16,Te=32,We=48,Ue=64,Ve=128,Ie=512,Xe=4096,Ze=50,$e={};$e[m.ab]=37;$e[m.Fb]=39;$e[m.Hb]=32;
var Oe={pa:1978.1,Sa:{},sb:{},Tb:$e,fb:{},Ua:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},M={},N={},K={pa:100,Sa:(M[8]=3,M[m.mc]=5,M[m.lc]=6,M[m.xc]=7,M[m.qc]=8,M[m.uc]=9,M[m.Q]=10,M[39]=16,M[221]=20,M[219]=21,M[m.ac]=22,M[m.rc]=23,M[m.nc]=24,M[m.E]=25,M[49]=26,M[37]=32,M[40]=34,M[117]=35,M[19]=35,M[192]=36,M[189]=37,M[57]=38,M[55]=39,M[52]=40,M[51]=41,M[27]=42,M[38]=48,M[114]=49,M[112]=50,M[46]=51,M[187]=52,M[48]=53,M[56]=54,M[54]=55,M[53]=56,M[50]=57,M[9]=58,M[103]=64,M[115]=65,M[113]=66,
M[96]=67,M[118]=68,M[220]=69,M[m.Hb]=70,M[m.cc]=71,M[m.Zb]=72,M[m.Yb]=73,M[m.ab]=74,M[104]=80,M[2013]=81,M[98]=82,M[97]=83,M[222]=85,M[186]=86,M[m.bc]=87,M[m.$b]=88,M[m.Fb]=89,M[m.pc]=90,M[110]=96,M[116]=97,M[101]=98,M[100]=99,M[13]=100,M[190]=101,M[188]=102,M[m.hc]=103,M[m.Ub]=104,M[m.wc]=105,M[119]=106,M[105]=112,M[99]=113,M[102]=114,M[109]=115,M[191]=117,M[m.gc]=118,M[m[" "]]=119,M[m.tc]=120,M[m.Vb]=121,M[m.wb]=122,M[120]=123,M[17]=124,M[16]=125,M[20]=126,M),sb:(N[m.p]=5,N[m.Sd]=6,N[m.y]=7,N[m.t]=
8,N[m.re]=9,N[m.q]=10,N[m["]"]]=20,N[m["["]]=21,N[m.Fd]=22,N[m.pe]=23,N[m.r]=24,N[m.e]=25,N[m["1"]]=26,N[m["`"]]=36,N[m["-"]]=37,N[m["9"]]=38,N[m["7"]]=39,N[m["4"]]=40,N[m["3"]]=41,N[m["="]]=52,N[m["0"]]=53,N[m["8"]]=54,N[m["6"]]=55,N[m["5"]]=56,N[m["2"]]=57,N[m["\\"]]=69,N[m.Pd]=70,N[m.k]=71,N[m.Dd]=72,N[m.Bd]=73,N[m.yc]=74,N[m["'"]]=85,N[m[";"]]=86,N[m.Od]=87,N[m.Ed]=88,N[m.d]=89,N[m.oe]=90,N[13]=100,N[m["."]]=101,N[m[","]]=102,N[m.n]=103,N[m.ud]=104,N[m.x]=105,N[m["/"]]=117,N[m.Rd]=118,N[m.qe]=
120,N[m.xd]=121,N[m.z]=122,N[m.mc]=133,N[m.lc]=134,N[m.xc]=135,N[m.qc]=136,N[m.uc]=137,N[m.Q]=138,N[m["}"]]=148,N[m["{"]]=149,N[m.ac]=150,N[m.rc]=151,N[m.nc]=152,N[m.E]=153,N[m["!"]]=154,N[m["~"]]=164,N[m._]=165,N[m["("]]=166,N[m["&"]]=167,N[m.$]=168,N[m["#"]]=169,N[m["+"]]=180,N[m[")"]]=181,N[m["*"]]=182,N[m["^"]]=183,N[m["%"]]=184,N[m["@"]]=185,N[m["|"]]=197,N[m.Hb]=198,N[m.cc]=199,N[m.Zb]=200,N[m.Yb]=201,N[m.ab]=202,N[m['"']]=213,N[m[":"]]=214,N[m.bc]=215,N[m.$b]=216,N[m.Fb]=217,N[m.pc]=218,N[m[">"]]=
229,N[m["<"]]=230,N[m.hc]=231,N[m.Ub]=232,N[m.wc]=233,N[m["?"]]=245,N[m.gc]=246,N[m.tc]=248,N[m.Vb]=249,N[m.wb]=250,N),Tb:{},fb:{},Ua:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},Nc:{qa:130,INIT:127},Ba:{qa:130,bd:1,ad:2,$c:4,Zc:8,cd:16,fc:32,ec:63,od:64,Ce:128,INIT:0},Yc:127};K.fb={l4:K.Ba.bd,l3:K.Ba.ad,l2:K.Ba.$c,l1:K.Ba.Zc,locked:K.Ba.cd,local:K.Ba.fc,online:~K.Ba.fc,"caps-lock":Ie};var De={SI1978:Oe,VT100:K};
K.INIT=[[K.Ba.INIT,K.Nc.INIT,!1,0,-1]];K.Bb={130:he.prototype.Nd};K.Cb={130:he.prototype.ee};mb(function(){for(var a=qa(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new he(d);pa(d,c)}});
function af(a,b,c,d,e){n.call(this,"Video",a,262144);var f=this;this.Ta=gb("Gecko/");var g=["","moz","ms","webkit"];this.M=a.screenWidth;this.I=a.screenHeight;this.la=a.bufferAddr;this.vd=a.bufferRAM;var h=a.bufferFormat;this.Y=h&&bf[h.toUpperCase()]||cf;this.O=a.bufferCols;this.Z=a.bufferRows;this.Ha=this.fa=a.cellWidth||1;this.ba=a.cellHeight||1;this.ea=null;this.Na=!1;this.na=a.bufferBits||1;this.yd=a.bufferLeft||0;if(this.g=a.bufferRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g&&
(this.aa("unsupported buffer rotation: "+this.g),this.g=0);this.oa=a.interruptRate;this.kb=a.refreshRate||60;this.F=b;this.j=c;this.V=(this.Cd=d)||b||null;this.Db=this.M;this.td=this.I;this.La=this.M/this.O|0;this.Ma=this.I/this.Z|0;1<this.ba&&(this.Z++,this.sa=0,this.ya=!1);b=a.smoothing;(c=hb("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.j[d]){this.j[d]=b;break}if(this.w=a.screenRotate)this.w=this.w%360,
0<this.w&&(this.w-=360),-90!=this.w?(this.aa("unsupported screen rotation: "+this.w),this.w=0):(this.j.translate(0,this.I),this.j.rotate(this.w*Math.PI/180),this.j.scale(this.I/this.M,this.M/this.I));if(this.b=e)if(this.b.Xa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Xa){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){df(f,!!(document.fullscreenElement||document.msFullscreenElement||
document.mozFullScreenElement||document.webkitFullscreenElement))},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){df(f,null)},!1);break}}if(this.S=a.fontROM)"json"!=Ka(this.S)&&(this.S=Oa()+"/api/v1/dump?file="+this.S+"&format=bytes"),Xa(this.S,null,!0,function(a,b,c){ef(f,a,b,c)});this.Fa={}}aa(af,n);
function Vd(a){a.C=a.O*a.fa;a.N=a.Z*a.ba;var b=a.C,c=a.N;a.g&&(b=a.N,c=a.C);a.L=0;if(!a.vd&&(a.L=(a.C*a.na>>3)*a.N,!Eb(a.H,a.la,a.L,3)))return!1;a.L?(a.Va=a.j.createImageData(b,c),a.hb=16/a.na|0,ff(a,a.L>>1)):ff(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.wa=a.D.getContext("2d");a.T={};a.X=1<<a.na;a.U=Array(a.X+gf);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==hf&&(a.U[a.X+jf]=[255,255,0,255],a.U[a.X+kf]=[0,255,0,255]);a.Y==lf&&(a.jb=60,a.za=!1,a.ga=Array(a.O));
return!0}k=af.prototype;k.ca=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Fa[b]=c,!0;switch(b){case "fullScreen":return this.P[b]=c,this.b&&this.b.Xa?c.onclick=function(){d.Xa()}:c.parentNode.removeChild(c),!0}return!1};
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;Vd(this);if(this.B=Ab(a,"Keyboard")){for(var e in this.Fa)this.B.ca("led",e,this.Fa[e]);this.F&&this.B.ca(this.Cd?"textarea":"canvas","screen",this.V)}var f=this;this.xb=Mc(this.u,function(){Rc(f)});Nc(this.u,this.xb,1E3/Math.max(this.kb,this.oa));this.ib=0;this.S||ya(this)};
function ef(a,b,c,d){if(d)a.aa("Unable to load font ROM (error "+d+": "+b+")");else{ea(a.eb,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.ea=f,Wd(a);else{a.aa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.aa("Font ROM data error: "+g.message);return}(a.j||a.K)&&ya(a)}}
function Wd(a){a.ea&&(a.Na=a.Y==lf,a.T[mf]=[nf(a,a.fa,a.ba),nf(a,a.fa,a.ba,a.za)],a.T[of]=[nf(a,2*a.fa,a.ba),nf(a,2*a.fa,a.ba,a.za)],a.T[pf]=a.T[qf]=[nf(a,2*a.fa,2*a.ba),nf(a,2*a.fa,2*a.ba,a.za)])}
function nf(a,b,c,d){var e=8>=a.Ha?8:16,f=8<e?15:0,g=a.ea.length/e,h=!1===d,l={fa:b,ba: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 p=l.context.createImageData(b,c),u=0;u<g;u++){for(var v=0,B=v;v<a.ba;v++)for(var y=u*e+(f+v&e-1),y=d&&8==v?255:a.ea[y],w=0;w<c/a.ba;w++){for(var C=0,T=0,za=T;T<a.fa;T++){for(var L=y&128>>(7<T?7:T),C=a.Na&&!L&&C?C:L,ja=0;ja<b/a.fa;ja++)h&&(C=!C),rf(a,p,za,B,C?1:0),za++;C=L}B++}l.context.putImageData(p,
(u&15)*b,(u>>4)*c)}return l}k.va=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ua=function(a){return!a||this.save()};k.save=function(){var a=new kd(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};
k.Xa=function(){var a=!1;if(this.b){if(this.b.Xa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.I;b>c&&(a=Math.round(c/b*100)+"%")}this.Ta?(this.F.style.width=a,this.F.style.width=a,this.F.style.display="block",this.F.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Xa();a=!0}this.V&&this.V.focus()}return a};
function df(a,b){!b&&a.b&&(a.Ta?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");Ea(a,"notifyFullScreen("+b+")")}function ff(a,b){a.gb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.gb)a.A=Array(a.gb)}function rf(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==hf&&(208<=c&&236>c?e=a.X+jf:28<=c&&72>c&&(e=a.X+kf));a=a.U[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 Rc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.ib&1?(Id(a.u,2),c=!1):Id(a.u,1):Id(a.u,4));if(c&&a.W&&a.L){for(var d=a.H,e=a.L,f=!0,g=a.la>>>d.g;0<e&&g<d.b.length;)d.b[g].Ca&&(d.b[g].Ca=f=!1,d.b[g].Dc=!0),e-=d.w,g++;f&&(c=!1)}Nc(a.u,a.xb,1E3/Math.max(a.kb,a.oa));a.ib++}if(c)if(1<a.fa)switch(a.Y){case lf:for(var c=a.la,d=-1,e=0,f=60==a.jb?2:5,h=g=0,l=-1;e<a.Z;){var p=0,u=c,v=d,B=a.O;for(v!=mf&&(B>>=1);;){var y=Jb(a.H,u++);if((y&sf)==sf){var w=Jb(a.H,u++),d=w&tf,c=(w&uf)<<8|Jb(a.H,u),c=c+(w&vf?
wf:xf);break}if(p<B)a.ga[p++]=y;else break}if(f)f--;else{for(;p<a.ga.length;)a.ga[p++]=0;if(0<=v)for(u=a.W&&a.A[g]==B,a.A[g++]=B,B=0;B<p;B++){y=a.ga[B];if(!u||y!==a.A[g]){a.A[l=g]=y;var w=a,C=a.wa,T=y&127;if(y=w.T[v][y&128?1:0]){var za=(T&15)*y.fa,T=(T>>4)*y.ba,L,ja,ua,na,Ma=y.fa,ec=y.ba;C?(L=B*w.fa,ja=e*w.ba,ua=w.fa,na=w.ba):(L=B*w.La,ja=e*w.Ma,ua=w.La,na=w.Ma);y.fa>w.fa&&(L*=2,ua*=2);y.ba>w.ba&&(v==qf&&(T+=w.ba),ec=w.ba);C?C.drawImage(y.canvas,za,T,Ma,ec,L,ja,ua,na):(L+=0,ja+=0,w.j.drawImage(y.canvas,
za,T,Ma,ec,L,ja,ua,na))}h++}g++}e++}}a.W=!0;!b&&a.ya&&1==h&&(a.A[l]=-1,h=0);a.ya=!1;(h||b)&&a.wa&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ba,0,0,a.Db,a.td)}else{e=a.la;f=e+a.L;l=h=g=0;b=a.C;p=0;c=a.N;v=d=0;u=a.na;B=(1<<u)-1;a.yd&&(u=-u,v=16+u);for(;e<f;){w=Lb(a.H,e);if(a.W&&w===a.A[g])h+=a.hb;else{a.A[g]=w;(C=v)&&(w=w>>8|(w&255)<<8);h<b&&(b=h);for(y=a.hb;y--;)za=w>>C&B,rf(a,a.Va,h++,l,za),C+=u;h>p&&(p=h);l<c&&(c=l);l>=d&&(d=l+1)}e+=2;g++;if(h>=a.C&&(h=0,l++,l>a.N))break}a.W=!0;b<a.C&&(e=p-b,d-=c,a.g&&
(f=b,g=e,b=c,e=d,c=a.C-(f+g),d=g),a.wa.putImageData(a.Va,0,0,b,c,e,d),a.j.drawImage(a.D,0,0,a.D.width,a.D.height,0,0,a.M,a.I))}}var jf=0,kf=1,gf=2,cf=0,hf=1,lf=2,bf={SI1978:hf,VT100:lf},mf=96,of=64,pf=32,qf=0,sf=127,uf=15,vf=16,tf=96,wf=8192,xf=16384;
mb(function(){for(var a=qa(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=oa(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<=bb().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||hb("aspect"));f&&.3<=f&&3.33>=f&&(lb("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");gb("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new af(d,e,g,f,c);pa(d,c)}});
function yf(a){n.call(this,"SerialPort",a,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:q("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.V=a.tabSize;this.S=a.charBOL;this.w=0;this.N=!1;this.D=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=zf;b&&(void 0===c&&(c="Panel"),(c=ma(c,this.id))&&(b=c.P[b])&&this.ca(null,a,b))}this.A="";this.b=this.Ra=this.I=null;this.exports={connect:this.Fc,receiveData:this.Ob,receiveStatus:this.ne}}
aa(yf,n);k=yf.prototype;k.ca=function(a,b,c,d){var e=this;switch(b){case zf:return this.P[b]=this.g=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),Af(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Af(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.P[b]=c,c.onclick=function(){e.Ob(d);return!0},!0}return!1};
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;var e=this;this.Y=Mc(this.u,function(){e.Ob()});this.Z=Mc(this.u,function(){Ke(e)});this.W=Ab(a,"ChipSet");Sb(b,this,Bf,this.U);Wb(b,this,Cf,this.U);ya(this)};
k.Fc=function(a){if(!this.b){var b=Ac(this.R,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Sa(c[0]);if(d!=this.cb)return;c=Sa(c[1]);if(this.b=la(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.D);if(this.Ra=e.receiveData){this.D=a;this.I=e.receiveStatus;this.status("Connected "+this.eb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
k.va=function(a,b){if(!b)if(this.Fc(this.D),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){Df(this)};k.save=function(){var a=new kd(this),b=0,c=[];c[b++]=this.F;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};k.restore=function(a){return Df(this,a[0])};
function Df(a,b){var c=0;b||(b=Ef);a.F=b[c++];a.M=b[c++];a.O=b[c++];a.ia=b[c++];a.B=b[c++];a.C=b[c++];a.L=b[c];return!0}function Ff(a,b){var c=a.L&b;b&15||(c>>=4);b=Gf[c];c=((a.B&Hf)>>2)+6;a.B&If&&c++;c+=((a.B&Jf)>>6)+1>>1;return 1E3/Math.round(b/c)}function Af(a,b){Ea(a,"receiveByte("+Ia(b)+"), status="+Ia(a.ia));return a.N||a.ia&Kf?!1:(a.M=b,a.ia|=Kf,Id(a.u,a.X),!0)}
k.Ob=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(Af(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.u&&Nc(this.u,this.Y,Ff(this,Lf)));return!0};k.ne=function(a){this.ia&=~Mf;a&64&&(this.ia|=Mf)};function Ke(a,b){a.ia=a.ia|Ud|Nf;b&&a.Ra&&a.Ra.call(a.b,b)}k.Hd=function(a,b){var c=this.M;r(this,a,null,b,"DATA",c);this.ia&=~Kf;return c};k.Gd=function(a,b){var c=this.ia;r(this,a,null,b,"STATUS",c);return c};
k.Vd=function(a,b,c){r(this,a,b,c,"DATA");this.O=b;this.ia&=~(Ud|Nf);Ea(this,"transmitByte("+Ia(b)+")");if(19==b)this.N=!0;else if(17==b)this.N=!1;else if(this.Ra&&this.Ra.call(this.b,b),this.g)if(8==b)this.g.value=this.g.value.slice(0,-1),0<this.w&&this.w--;else{var d;13!=b&&10!=b&&(d=Ta[b]);a=d=d?"<"+d+">":String.fromCharCode(b);c=a.length;9==b?(b=this.V||8,c=b-this.w%b,this.V&&(a=Ra("",c))):13==b&&(this.w=c=0,a="\n");this.S&&!this.w&&c&&(a=String.fromCharCode(this.S)+a);this.g.value+=a;this.g.scrollTop=
this.g.scrollHeight;this.w+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.u&&Nc(this.u,this.Z,Ff(this,Of))};k.Ud=function(a,b,c){r(this,a,b,c,"CONTROL");this.F?(this.I&&(b^this.C)&(Pf|Qf)&&(a=0,this.D?(a|=b&Pf?32:0,a|=b&Qf?320:0):(a|=b&Pf?16:0,a|=b&Qf?1048576:0),this.I.call(this.b,a)),this.C=b,this.C&Rf&&(this.F=!1)):(this.B=b,this.F=!0)};k.Td=function(a,b,c){r(this,a,b,c,"BAUDRATES");this.L=b};
var Hf=12,If=16,Jf=192,Qf=2,Pf=32,Rf=64,Ud=1,Kf=2,Nf=4,Mf=128,Lf=15,Of=240,Gf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Ef=[!1,0,0,133,142,39,238],zf="buffer",Bf={0:yf.prototype.Hd,1:yf.prototype.Gd},Cf={0:yf.prototype.Vd,1:yf.prototype.Ud,2:yf.prototype.Td};mb(function(){for(var a=qa(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new yf(d);pa(d,c)}});
function Sf(a){n.call(this,"Debugger",a);this.na=+a.base||16;this.N=this.Y=this.C=0;this.L=!1;this.b=-1;this.g=[];this.S={}}aa(Sf,n);Sf.prototype.Kb=function(){return-1};Sf.prototype.Lb=function(){};
Sf.prototype.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+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(Sa(a.substring(d,f))),d=f+1}}return b};
function Tf(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 Uf(a,b,c){var d;if(b){b=Vf(a,b);for(var e=0,f=!1,g=b,h=[],l=[],p=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<p.length;){var u=p[e++],v=u.length,u=Sa(u);if(!u){f=!0;break}u=Wf(a,u,null,!1===c);if(void 0===u){f=!0;c=!1;break}h.push(u);if(e==p.length)break;var u=p[e++],B=u.length;l.length&&Xf[u]<Xf[l[l.length-1]]&&Tf(h,l,1);l.push(u);b=b.substr(v+B)}Tf(h,l)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Yf(a,null,
d))}return d}function Vf(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Uf(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Zf(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.N-a.Y}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
function Wf(a,b,c,d){var e;null!=b?(e=a.Kb(b),0<=e?e=a.Lb(e):(e=a.S[b],null==e&&(e=Ga(b,a.na))),null!=e||d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return e}
function Yf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var l=d&255,p=void 0,u=8,v="";u?32<u&&(u=32):u=32;for(var B=null==l||isNaN(l),y=p=p||u;0<u--;)y||(v=","+v,y=p),v=(B?"?":l&1?"1":"0")+v,l>>=1,y--;g=v+g;d>>=8}d=t(c,0,!0)+" "+c+". "+Ha(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.i((null!=b?b+": ":"")+d);return e}
function $f(a,b){if(b)return Yf(a,b,a.S[b]);var c=0;for(b in a.S)Yf(a,b,a.S[b]),c++;return 0<c}function Zf(a,b){switch(a.na){case 8:a=Ha(b,NaN);break;case 10:a=b.toString();break;default:a=t(b,NaN)}return a}var Xf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function ag(a){Sf.call(this,a);this.style=bg;this.F=cg();this.la=cg();this.O=cg();this.A=[];this.j=this.I=this.w=[];dg(this);this.W=0;eg(this);this.Z={};fg(this,a.messages);this.ea=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Ec(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Ec(b,a)})}aa(ag,Sf);k=ag.prototype;
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.R=a;(a=Ac(a,"messages"))&&fg(this,a);this.ga=gg;Rd(this,64,function(a){a:{var b=d.H.b,c=a[0],e=a=0,l=b.length;if(c){a=hg(ig(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.H.g;l=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,p=0;l--;){var u=b[e];u.type==c?p++||d.i("..."):(c=u.type,p=Hb[c],u&&d.i(t(u.id)+" %"+t(e<<d.H.g)+" %%"+t(u.J)+" "+x(u.pb)+" "+
x(u.size)+" "+p),c!=cc&&(c=-1),p=0);a+=d.H.w;e++}}});ya(this)};
k.ca=function(a,b,c){var d=this;switch(b){case "debugInput":return this.U=this.P[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Ec(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.b<d.g.length-1&&(b=d.g[++d.b])):40==a.keyCode&&(0<d.b?b=d.g[--d.b]:(b="",d.b=-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.P[b]=c,kb(c,function(){if(d.U){var a=d.U.value;d.U.value=
"";Ec(d,a,!0);return!0}return!1}),!0;case "step":return this.P[b]=c,kb(c,function(a){var b=!1;Aa(d,!0)||(Ca(d,!0),b=jg(d,a?1:0),Ca(d,!1));return b}),!0}return!1};k.Za=function(){this.U&&this.U.focus()};function hg(a){a=a&&a.J;null==a&&(a=-1);return a}k.Ga=function(a,b){var c=255,d=hg(a);-1!==d&&(c=Jb(this.H,d),b&&kg(a,b));return c};k.Gb=function(a,b){var c=65535,d=hg(a);-1!==d&&(c=Lb(this.H,d),b&&kg(a,b));return c};k.Xb=function(a,b,c){var d=hg(a);-1!==d&&(Ob(this.H,d,b),c&&kg(a,c),Fc(this.u,!0))};
k.Qc=function(a,b,c){var d=hg(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].qb(f,b&255,d),e.b[g&e.I].qb(0,b>>8&255,d+1));c&&kg(a,c);Fc(this.u,!0)}};function cg(a){return{J:a,Da:!1}}function lg(a){return[a.J,a.Da]}function mg(a){return{J:a[0],Da:a[1]}}
function ig(a,b,c){var d;c=(c?a.F:a.la).J;if(void 0!==b){d=b=Vf(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.A.length;c++){var f=a.A[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=cg(d));break}}if(d=e)return d;c=Uf(a,b,void 0)}null!=c&&(d=cg(c));return d}function Kg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.sd=a.Ab(b.Jc=c[2]))}function kg(a,b){null!=a.J&&(a.J+=b||1)}function Mg(a){return t(a,4)}
function Ng(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Ga(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function fg(a,b){a.K=a;a.ha=a.wd=536870912;a.V=null;a.X=[];b=a.Ab(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in yb)0<=Wa(b,c)&&(a.ha|=yb[c],a.i(c+" messages enabled"))}function Rd(a,b,c){for(var d in yb)if(b==yb[d]){a.Z[d]=c;break}}
k.Kb=function(a,b){var c;a=a.toUpperCase();null==b?c=Wa(Og,a):(c=Wa(Og,a.substr(b,2)),0>c&&(c=Wa(Og,a.substr(b,1))));return c};function Pg(a,b){var c=0;a=a.Lb(b);if(void 0!==a)switch(b){case Qg:case Rg:case Sg:case Tg:case Ug:case Vg:case Wg:case Xg:c=2;break;case Yg:case Zg:case $g:case ah:case bh:case ch:case dh:c=4}return c?t(a,c):"??"}
k.Lb=function(a){var b;if(0<=a){var c=this.u;switch(a){case Qg:b=c.g;break;case Rg:b=c.w;break;case Sg:b=c.A;break;case Yg:b=ld(c);break;case Tg:b=c.B;break;case Ug:b=c.C;break;case Zg:b=nd(c);break;case Vg:b=c.D;break;case Wg:b=c.F;break;case $g:b=D(c);break;case Xg:b=E(c,D(c));break;case ah:b=c.M;break;case bh:b=c.j;break;case ch:b=jd(c);break;case dh:b=jd(c)&255|c.g<<8}}return b};
function eh(a,b){b=Vf(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Kb(b,c+1),0<=e&&(b=b.substr(0,c)+Pg(a,e)+b.substr(c+1+Og[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=Ga(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=ig(a,e))?(d=e+' "'+Ng(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=ig(a,e))?(kg(d),d=e+
' "'+Ng(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}k.message=function(a,b){b&&(a+=" at "+Mg(cg(this.u.j).J));this.ha&1073741824?this.X.push(a):this.V&&a==this.V||(this.V=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.i(a),this.u&&(a=this.u,Oc(a),a.wa=0,Fc(a)))};
function Fa(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.cb+"."+(null!=d?"outPort":"inPort")+"("+x(c)+","+(f?f:"unknown")+(null!=d?","+Ia(d):"")+")"+(null!=g?": "+Ia(g):"")+(null!=e?" at "+Mg(e):""))}
function eg(a){var b;if(Jd(a)){if(!a.D||!a.D.length){a.D=Array(fh);for(b=0;b<a.D.length;b++)a.D[b]=cg();a.T=0;a.i("instruction history buffer allocated")}if(!a.B||!a.B.length)for(a.B=Array(256),b=0;b<a.B.length;b++)a.B[b]=[b,0]}else a.D&&a.D.length&&a.i("instruction history buffer freed"),a.T=0,a.D=[],a.B=[]}function gh(a,b){if(!hh(a))return!1;a.u.tb(b);return!0}
function jg(a,b,c,d){if(!hh(a))return!1;a.C=0;b||Jd(a)&&Kd(a,a.u.j,0);try{var e=a.u.Eb(b);0<e&&(a.C+=e,Jc(a.u,e,!0),Gc(a.u,e),a.N++)}catch(f){"number"!=typeof f&&(a.C=0,wa(a.u,f.stack||f.message))}!1!==d&&Fc(a.u);Dc(a,c||!1);return 0<a.C}k.da=function(a){this.u&&this.u.da(a)};function Dc(a,b){void 0===b&&(b=!0);a.F=cg(a.u.j);b&&1!=a.M?ih(a):jh(a)}
function hh(a){var b;if(b=a.u&&xa(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!Aa(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}k.va=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};k.ua=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};k.reset=function(a){eg(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=cg(this.u.j);this.G.ka=!1;kh(this);a||Dc(this)};
k.save=function(){var a=new kd(this);a.set(0,lg(this.F));a.set(1,lg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};k.restore=function(a){var b=0;void 0!==a[2]&&(this.F=mg(a[b++]),this.O=mg(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};k.start=function(a,b){this.M||this.i("running");this.G.ka=!0;this.wa=a;this.ya=b};
k.stop=function(a,b){if(this.G.ka){this.G.ka=!1;this.C=b-this.ya;if(!this.M){b="stopped";if(this.C){a-=this.wa;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";Jd(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else Da(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}Dc(this,!0);this.Za();kh(this,this.u.j)}};function Jd(a){return 1<a.j.length||!!a.W}
function Kd(a,b,c){var d=a.u;if(0<c&&(a.W&&!--a.W||xc(a,b,1,a.j)))return!0;0<=c&&a.B.length&&(a.N++,b=Jb(a.H,b),null!=b&&(a.B[b][1]++,b=a.D[a.T],b.J=d.j,b.Da=!1,++a.T==a.D.length&&(a.T=0)));return!1}function Ub(a,b,c){a.i("break on input from port "+x(b)+": "+t(c));a.da(!0)}function Yb(a,b,c){a.i("break on output to port "+x(b)+": "+t(c));a.da(!0)}
function dg(a){var b,c;a.j=["bp"];if(a.I)for(b=1;b<a.I.length;b++){c=a.I[b];var d=a.H;wc(d.b[hg(c)>>>d.g],!1)}a.I=["br"];if(a.w)for(b=1;b<a.w.length;b++)c=a.w[b],d=a.H,wc(d.b[hg(c)>>>d.g],!0);a.w=["bw"];a.oa=0}k.Pa=function(a,b,c){var d=!0;c||lh(this,a,b,!1,!0);if(a!=this.j){var e=hg(b);if(-1===e)this.i("invalid address: "+Mg(b.J)),d=!1;else{var f=this.H;f.b[e>>>f.g].Pa(e&f.j,a==this.w)}}d&&(a.push(b),c?b.Da=!0:(mh(this,a,a.length-1,"set"),eg(this)));return d};
function lh(a,b,c,d,e){var f=!1;c=hg(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==hg(h)&&(!d||h.Da)){f=!0;h.Da||e||mh(a,b,g,"cleared");b.splice(g,1);b!=a.j&&(d=a.H,wc(d.b[c>>>d.g],b==a.w));h.Da||eg(a);break}}return f}function nh(a,b){for(var c=1;c<b.length;c++)mh(a,b,c);return b.length-1}function mh(a,b,c,d){c=b[c];a.i(b[0]+" "+Mg(c.J)+(d?" "+d:c.Jc?' "'+c.Jc+'"':""))}
function kh(a,b){if(void 0!==b)xc(a,b,1,a.j,!0),a.M=0;else for(b=1;b<a.j.length;b++){var c=a.j[b];if(c.Da){if(!lh(a,a.j,c,!0))break;b=0}}}
function xc(a,b,c,d,e){var f=!1;if(!a.oa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Da)for(var l=hg(h),p=0;p<c;p++)if(b+p==l){var u,f=!0;h.Da&&(lh(a,d,h,!0),e=!0);if(u=h.sd){for(var f=!1,v=0;v<u.length;v++)if(!oh(a,u[v],!0)){if(u[v].indexOf("if")){f=!0;break}for(var B=v+1;B<u.length&&u[B].indexOf("else");B++)v++;if(B==u.length){f=!0;break}}a.u.G.ka||(f=!0)}if(f){e||mh(a,d,g,"hit");break}}}a.oa--;return f}
function ph(a,b,c,d){for(var e=cg(b.J),f=a.Ga(b,1),g=a.ga[f],h="",l=(a.style!=qh?rh:sh)[g[0]],p=g.length-1,u=th,v,B=1;B<=p;B++){var y="";v=g[B];if(void 0!==v&&!(v&O&&a.style==bg)){var w=v&uh;if(w){var C=v&vh;C?u=C:v|=u;v&wh||(v|=1==B?xh:yh);if(w&P)a:{y=a;w=v;C=b;switch(w&vh){case Q:C=t(y.Ga(C,1),2);break;case zh:C=t(y.Ga(C,1)<<24>>24,4);break;case Ah:C=t(y.Gb(C,2),4);break;default:y="imm("+x(w)+")";break a}y.style==qh&&w&Bh?C="["+C+"]":w&Ch||(C=(y.style==bg?"$":"0x")+C);y=C}else w&Ch?(y=(v&Dh)>>8,
w=Og[y],a.style==qh&&v&Bh&&(y==Xg&&(w="HL"),w="["+w+"]"),y=w):w&Eh&&(y=(f>>3&7).toString());if(!y||!y.length){h="INVALID";break}0<h.length&&(h+=",");h+=y||"???"}}}f="";g=Mg(e.J)+" ";if(-1!==e.J&&-1!==b.J){do if(f+=t(a.Ga(e,1),2),null==e.J)break;while(e.J!=b.J)}g+=Ra(f,10);g+=v&Fh?"*":" ";g+=Ra(l,7);h&&(g+=" "+h);c&&(g=Ra(g,40)+";"+c,g=a.u.G.Wa?g+("cycles="+Hc(a.u).toString()+" cs="+t(a.u.ya)):g+(null!=d?"="+d.toString():""));return g}
function Gh(a,b){switch(b){case "IF":a=a.u.N&512;break;case "SF":a=vd(a.u);break;case "ZF":a=ud(a.u);break;case "AF":a=td(a.u);break;case "PF":a=sd(a.u);break;case "CF":a=qd(a.u);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Hh(a,b){return Og[b]+"="+Pg(a,b)+" "}function Ih(a){return Hh(a,Qg)+Hh(a,Yg)+Hh(a,Zg)+Hh(a,$g)+Hh(a,ah)+Gh(a,"IF")+Gh(a,"SF")+Gh(a,"ZF")+Gh(a,"AF")+Gh(a,"PF")+Gh(a,"CF")}k.Ac=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Jh(a,b,c){var d=[],e=hg(b)>>>0;for(b=0;b<a.A.length;b++){var f=a.A[b],g=f.J>>>0,h=f.Qd;if(e>=g&&e<g+h){e=Ua(f.zc,[e-g],a.Ac);0<=e?Kh(a,b,e,d):c&&(e=~e,Kh(a,b,e-1,d),Kh(a,b,e,d));break}}return d}function Kh(a,b,c,d){var e={},f=a.A[b].zc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.A[b].ra[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
function Lh(a,b){if("?"==b)a.i("frequency commands:"),a.i("\tclear\tclear all frequency counts");else{var c=0;if(a.B)if("clear"==b){for(b=0;b<a.B.length;b++)a.B[b]=[b,0];a.i("frequency data cleared");c++}else if(void 0!==b)a.i("unknown frequency command: "+b),c++;else{var d=a.B.slice();d.sort(function(a,b){return b[1]-a[1]});var e=a.style!=qh?rh:sh;for(b=0;b<d.length;b++){var f=d[b][0],g=d[b][1];g&&(a.i((e[a.ga[f][0]]+" ").substr(0,5)+" ("+Ia(f)+"): "+g+" times"),c++)}}c||a.i("no frequency data available")}}
function Mh(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return $f(a)||a.i("no variables"),!0;if(!c[2])return $f(a,c[1]);if(!c[3])return delete a.S[c[1]],!0;b=Uf(a,c[3]);return void 0!==b?(a.S[c[1]]=b,!0):!1}a.i("invalid assignment:"+b);return!1}
function Nh(a,b,c){var d=null;if(b=ig(a,b,!0)){var e=Jh(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.J-e[1])&&(g=" + "+x(f)),f=e[0]+" ("+Mg(e[1])+")"+g,c&&a.i(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.J)&&(g=" - "+x(f)),f=e[4]+" ("+Mg(e[5])+")"+g,c&&a.i(f),d||(d=f))}else c&&a.i("no symbols")}return d}
function Oh(a,b){switch(b[1]){case "8080":a.style=bg;break;case "8086":a.style=qh;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.u.na=c;break;case "start":a.u.za=c;break;case "stop":a.u.sa=c;break;default:a.i("unknown cs option");return}void 0!==c&&Cc(a.u);a.i("checksums "+(a.u.G.Wa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Ic(a.u,+b[2])||a.i("warning: using 1x multiplier, previous target not reached"));a.i("target speed: "+(a.u.Z.toFixed(2)+"Mhz")+" ("+a.u.U+
"x)");return;case "?":a.i("debugger options:");a.i("\t8080\t\tselect 8080-style mnemonics");a.i("\t8086\t\tselect 8086-style mnemonics");a.i("\tcs int #\tset checksum cycle interval to #");a.i("\tcs start #\tset checksum cycle start count to #");a.i("\tcs stop #\tset checksum cycle stop count to #");a.i("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.i("unknown option: "+b[1]);return}}a.i(a.style+"-style mnemonics enabled")}
function ih(a,b){var c;if(b&&"?"==b[1])a.i("register commands:"),a.i("\tr\tdump registers"),a.i("\trx [#]\tset flag or register x to [#]");else{var d=a.u;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.i("missing value for "+b[1]);return}f=Uf(a,b);if(void 0===f)return;switch(e.toUpperCase()){case "A":d.g=f&255;break;case "B":d.w=f&255;break;case "BC":d.w=f>>8&255;case "C":d.A=f&255;break;case "D":d.B=f&255;break;
case "DE":d.B=f>>8&255;case "E":d.C=f&255;break;case "H":d.D=f&255;break;case "HL":d.D=f>>8&255;case "L":d.F=f&255;break;case "SP":d.M=f&65535;break;case "PC":A(d,f);a.F=cg(d.j);break;case "PS":Wc(d,f);break;case "PSW":Wc(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.I=f?d.I|256:d.I&255;break;case "PF":f?sd(d)||(d.L^=1):sd(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.I=f?d.I&-256:d.I|255;break;case "SF":f?vd(d)||(d.L^=192):vd(d)&&(d.L^=192);break;case "IF":d.N=
f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Fc(d);a.i("updated registers:")}a.i(Ih(a));c&&(a.F=cg(d.j),jh(a,Mg(a.F.J)))}}function Ph(a,b){b=Sa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(eh(a,c[2])):Uf(a,b,!0)}function Qh(a,b,c){var d="t"!=b;c=Wf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);jb(c,function(){return Ca(a,!0)&&jg(a,e,d,!1)},function(){Fc(a.u);Ca(a,!1)})}
function jh(a,b,c,d){if(b=ig(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=ig(a,c,!0);if(!d||d.J<b.J)return;e=d.J-b.J;if(256<e){a.i("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=Aa(a,!1)||a.M?a.C:null;var g=null!=f?"cycles":null,h=Jh(a,b),l=b.J;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var p=h[0]+":";h[2]&&(p+=" "+h[2]);a.i(p)}h[3]&&(g=h[3],f=null);f=ph(a,b,g,f);a.i(f);a.F=b;e-=b.J-l;c++}}}
k.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+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(Sa(a.substring(d,f))),d=f+1}}return b};
function oh(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.L&&(a.i("ended assemble at "+Mg(a.O.J)),a.F=a.O,a.L=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.V=null;if(xa(a)&&0<b.length){a.L&&(b="a "+Mg(a.O.J)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var g=f[0],h=g.charAt(0),l=1;l<g.length;l++){var p=g.charAt(l);if("?"==h||"r"==h||"a">p||"z"<p){f[0]=g.substr(l);f.unshift(g.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var u=ig(a,f[1],!0);if(u)if(a.O=
u,void 0===f[2])a.i("begin assemble at "+Mg(u.J)),a.L=!0,Fc(a.u);else{var v;a.i("not supported yet");v=[];if(v.length){for(var B=0;B<v.length;B++)a.Xb(u,v[B],1);a.i(ph(a,a.O))}}break;case "b":a:{var y=f[0],w=f[1],C=b;if("?"==w)a.i("breakpoint commands:"),a.i("\tbi [p]\ttoggle break on input port [p]"),a.i("\tbo [p]\ttoggle break on output port [p]"),a.i("\tbp [a]\tset exec breakpoint at addr [a]"),a.i("\tbr [a]\tset read breakpoint at addr [a]"),a.i("\tbw [a]\tset write breakpoint at addr [a]"),a.i("\tbc [a]\tclear breakpoint at addr [a]"),
a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)");else{var T=y.charAt(1);if("l"==T){var za;za=0+nh(a,a.j);za+=nh(a,a.I);(za+=nh(a,a.w))||a.i("no breakpoints")}else if("n"==T)a.W=Wf(a,w),a.i("break after "+a.W+" instruction(s)");else if(void 0===w)a.i("missing breakpoint address");else{var L=cg();if("*"!=w&&(L=ig(a,w,!0),!L))break a;w=x(L.J);"c"==T?null==L.J?(dg(a),a.i("all breakpoints cleared")):lh(a,a.j,L)||lh(a,a.I,L)||lh(a,a.w,L)||a.i("breakpoint missing: "+Mg(L.J)):
"i"==T?a.i("breakpoint "+(Rb(a.H,L.J)?"enabled":"cleared")+": port "+w+" (input)"):"o"==T?a.i("breakpoint "+(Vb(a.H,L.J)?"enabled":"cleared")+": port "+w+" (output)"):null!=L.J&&(Kg(a,L,C),"p"==T?a.Pa(a.j,L):"r"==T?a.Pa(a.I,L):"w"==T?a.Pa(a.w,L):a.i("unknown breakpoint command: "+T))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var ja,ua=f[0],na=f[1],Ma=f[2],ec=f[3];if("?"==na){var Mb="";for(ja in yb)a.Z[ja]&&(Mb&&(Mb+=","),Mb+=ja);Mb+=",state,symbols";a.i("dump memory commands:");a.i("\tdb [a] [#] dump # bytes at address a");
a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Mb.length&&a.i("dump extension commands:\n\t"+Mb)}else if("state"==na){var ie=Rh(a.R,!0);"console"==Ma?console.log(ie):(a.ta&&(a.ta.value=""),ie&&a.i(ie))}else if("symbols"==na)for(var je=0;je<a.A.length;je++){var ke=a.A[je],Nb;for(Nb in ke.ra)if("."!=Nb.charAt(0)){var ng=ke.ra[Nb].o;if(void 0!==ng){var og=ke.ra[Nb].l;og&&(Nb=og);a.i(Mg(ng)+" "+
Nb)}}}else{if("d"==ua){for(ja in yb)if(f[1]==ja){var pg=a.Z[ja];pg?(f.shift(),f.shift(),pg(f)):a.i("no dump registered for "+na);break a}na||(ua=a.za||"db")}else a.za=ua;if("dh"==ua){var qg=na,rg=Ma,sg="",tg=0,Na=a.T,Za=a.D;if(Za.length){var Ba=+qg||a.sa,jc=+rg||10;isNaN(Ba)?Ba=jc:sg="more ";Ba>Za.length&&(a.i("note: only "+Za.length+" available"),Ba=Za.length);Na-=Ba;0>Na&&(null==Za[Za.length-1].J?(Ba=Na+Ba,Na=0):Na+=Za.length);var le=[];"call"==rg&&(jc=1E5,le=["CALL"]);for(void 0!==qg&&a.i(Ba+" instructions earlier:");0<
jc&&Na!=a.T;){var ug=Za[Na++];if(null==ug.J)break;var kc=cg(ug.J),ui=Ba--,vg=ph(a,kc,"history",ui);(!le.length||0<=vg.indexOf(le[0]))&&a.i(vg);kc.Jb&&(Na+=kc.Jb,jc-=kc.Jb,Ba-=kc.Jb);Na>=Za.length&&(Na=0);a.sa=Ba;tg++;jc--}}tg||(a.i("no "+sg+"history available"),a.sa=void 0)}else{var Xc=ig(a,na);if(Xc){var Yc=0;Ma&&("l"==Ma.charAt(0)&&(Ma=Ma.substr(1)||ec),Yc=Wf(a,Ma)>>>0,65536<Yc&&(Yc=65536));for(var lc="",Zc="dd"==ua?4:"dw"==ua?2:1,$c=Zc*Yc||128,vi=$c+15>>4||1;vi--&&0<$c;){var ad=0,me=0,mc,ne="",
wg="",na=Mg(Xc.J);for(mc=16;0<mc&&0<$c;mc--){var bd=a.Ga(Xc,1),ad=ad|bd<<(me++<<3);me==Zc&&(ne+=t(ad,2*Zc),ne+=1==Zc?9==mc?"-":" ":" ",ad=me=0);wg+=32<=bd&&128>bd?String.fromCharCode(bd):".";$c--}lc&&(lc+="\n");lc+=na+" "+ne+(mc?"":" "+wg)}lc&&a.i(lc);a.la=Xc}}}}break;case "e":if("else"==f[0])break;var cd=1,xg=255,yg=a.Ga,zg=a.Xb;"ew"==f[0]&&(cd=2,xg=65535,yg=a.Gb,zg=a.Qc);var Ag=cd<<1,Bg=f[1];if(null==Bg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");
else{var dd=ig(a,Bg);if(dd)for(var ed=2;ed<f.length;ed++){var nc=Uf(a,f[ed]);if(void 0===nc){a.i("unrecognized value: "+f[ed]);break}nc&~xg&&a.i("warning: "+t(nc)+" exceeds "+cd+"-byte value");var wi=yg.call(a,dd);a.i("changing "+Mg(dd.J)+" from "+t(wi,Ag,!0)+" to "+t(nc,Ag,!0));zg.call(a,dd,nc,cd)}}break;case "f":Lh(a,f[1]);break;case "g":a:{var Cg=f[1],xi=b;if(void 0!==Cg){var oe=ig(a,Cg,!0);if(!oe)break a;Kg(a,oe,xi);a.Pa(a.j,oe,!0)}gh(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var pe;if(a.G.ka)pe="halting",a.da();else{if(Aa(a,!0))break a;pe="already halted"}c||a.i(pe)}break;case "i":if("if"==f[0]){var qe;var oc=b.substr(2),oc=Sa(oc);Uf(a,oc)?(c||a.i("true: "+oc),qe=!0):(c||a.i("false: "+oc),qe=!1);qe||(d=!1);break}if("int"==f[0]){var fd;var yi=f[1];if(a.u.N&512){var re=Uf(a,yi);null==re?fd=!1:(a.i("requesting interrupt level "+re),Id(a.u,re),fd=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),fd=!1;fd||(d=!1);break}var se=f[1];if(se&&"?"!=se){var te=
Wf(a,se);if(void 0!==te){var zi=Tb(a.H,te);a.i(x(te)+": "+Ia(zi))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var Ai=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var ue=0,Dg=cg(),pc=cg(a.u.M);for(a.i("stack trace for "+Mg(pc.J));10>ue;){for(var ub=null,Bi=256;65536>pc.J>>>0;){Dg.J=a.Gb(pc,2);if(null==pc.J||!Bi--)break;for(var Ci=a,gd=Dg,
Eg=null,qc=gd.J,Fg=qc,ve=1;6>=ve&&qc;ve++){if(2<ve){gd.J=qc;var hd=ph(Ci,gd);if(0<=hd.indexOf("CALL")){var Gg=hd.indexOf(" ");if(qc+(hd.indexOf(" ",Gg+1)-Gg-1)/2==Fg){Eg=hd;break}}}qc--}gd.J=Fg;if(ub=Eg)break}if(!ub||null==ub)break;var Hg=null;if("ks"==Ai){var Ig=ub.match(/[0-9A-F]+$/);Ig&&(Hg=Nh(a,Ig[0]))}ub=Ra(ub,50)+" ;"+(Hg||"stack="+Mg(pc.J));a.i(ub);ue++}ue||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Nh(a,f[1],!0);break;case "m":a:{var $a,ab=null,ba=f[1];"?"==ba&&(ba=void 0);
if(void 0!==ba){var nb=0;if("all"==ba)nb=1878917119,ba=null;else if("on"==ba)ab=!0,ba=null;else if("off"==ba)ab=!1,ba=null;else{"keys"==ba&&(ba="key");"kbd"==ba&&(ba="keyboard");for($a in yb)if(ba==$a){nb=yb[$a];ab=!!(a.ha&nb);break}if(!nb){a.i("unknown message category: "+ba);break a}}if(nb)if("on"==f[2])a.ha|=nb,ab=!0;else if("off"==f[2]&&(a.ha&=~nb,ab=!1,1073741824==nb)){for(var we=0;we<a.X.length;we++)a.i(a.X[we]);a.X=[]}}var Di=0,rc="";for($a in yb)if(!ba||ba==$a){var Ei=!!(a.ha&yb[$a]);if(null===
ab||ab==Ei)rc&&(rc+=","),++Di%10||(rc+="\n\t"),"key"==$a&&($a="keys"),rc+=$a}void 0===ba&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==ab?ab?"messages on: ":"messages off: ":"message categories:\n\t")+(rc||"none"));eg(a)}break;case "o":var xe=f[1],Fi=f[2];if(xe&&"?"!=xe){var ye=Wf(a,xe,"port #"),ze=Wf(a,Fi);void 0!==ye&&void 0!==ze&&(Xb(a.H,ye,ze),a.i(x(ye)+": "+Ia(ze)))}else a.i("output commands:"),a.i("\to [p] [b]\twrite byte [b] to port [p]"),a.i("warning: port accesses can affect hardware state");
break;case "p":if("print"==f[0]){Ph(a,b.substr(5));break}var Jg="pr"==f[0]?1:0,Gi=1+Jg;if(a.M)a.i("step in progress");else{var Ae=cg(a.u.j);switch(a.Ga(Ae)){case 205:a.M=Gi,kg(Ae,3)}a.M?(a.Pa(a.j,Ae,!0),gh(a)||(a.R&&a.R.Za(),a.M=0)):Qh(a,Jg?"tr":"t")}break;case "r":if("reset"==b){a.R&&a.R.reset();break}ih(a,f);break;case "s":Oh(a,f);break;case "t":Qh(a,f[0],f[1]);break;case "u":jh(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Mh(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.34.0 ("+a.u.xb+",RELEASE"+
(wb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(bb());break;case "?":if(f[1]){Ph(a,b.substr(1));break}var Be="commands:",Ce;for(Ce in Sh)Be+="\n"+Ra(Ce,9)+Sh[Ce];Jd(a)||(Be+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Be);break;default:a.i("unknown command: "+b),d=!1}}}catch(Lg){a.i("debugger error: "+(Lg.stack||Lg.message)),d=!1}return d}function Ec(a,b,c){b=a.Ab(b,c);for(var d in b)if(!oh(a,b[+d]))return!1;return!0}
var Sh={"?":"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"},
bg=8080,qh=8086,rh="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(" "),sh="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(" "),
Rg=0,Sg=1,Tg=2,Ug=3,Vg=4,Wg=5,Xg=6,Qg=7,Yg=8,Zg=9,$g=10,ah=11,bh=12,ch=13,dh=14,Og="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),vh=15,uh=240,Dh=3840,wh=61440,th=0,Q=1,zh=2,Ah=3,Ch=16,P=32,Bh=64,Eh=128,R=Qg<<8|Ch|Q,S=Rg<<8|Ch|Q,U=Sg<<8|Ch|Q,V=Tg<<8|Ch|Q,W=Ug<<8|Ch|Q,X=Vg<<8|Ch|Q,Y=Wg<<8|Ch|Q,Z=Xg<<8|Ch|Q|Bh,Th=Yg<<8|Ch|Ah,Uh=Zg<<8|Ch|Ah,Vh=$g<<8|Ch|Ah,Wh=ah<<8|Ch|Ah,Xh=dh<<8|Ch|Ah,yh=4096,xh=8192,O=16384,Fh=32768,gg=[[45],[42,Th,P],[71,Th|Bh,R|O],[29,Th],[28,S],[22,S],[44,S,P],[63],[45,Fh],[21,
Vh|O,Th],[40,R|O,Th|Bh],[23,Th],[28,U],[22,U],[44,U,P],[64],[45,Fh],[42,Uh,P],[71,Uh|Bh,R|O],[29,Uh],[28,V],[22,V],[44,V,P],[52],[45,Fh],[21,Vh|O,Uh],[40,R|O,Uh|Bh],[23,Uh],[28,W],[22,W],[44,W,P],[53],[45,Fh],[42,Vh,P],[68,51|Bh,Vh|O],[29,Vh],[28,X],[22,X],[44,X,P],[20],[45,Fh],[21,Vh|O,Vh],[41,Vh|O,51|Bh],[23,Vh],[28,Y],[22,Y],[44,Y,P],[16,R|O],[45,Fh],[42,Wh,P],[70,51|Bh,R|O],[29,Wh],[28,Z],[22,Z],[44,Z,P],[72],[45,Fh],[21,Vh|O,Wh],[39,R|O,51|Bh],[23,Wh],[28,R],[22,R],[44,R,P],[17],[43,S,S],[43,
S,U],[43,S,V],[43,S,W],[43,S,X],[43,S,Y],[43,S,Z],[43,S,R],[43,U,S],[43,U,U],[43,U,V],[43,U,W],[43,U,X],[43,U,Y],[43,U,Z],[43,U,R],[43,V,S],[43,V,U],[43,V,V],[43,V,W],[43,V,X],[43,V,Y],[43,V,Z],[43,V,R],[43,W,S],[43,W,U],[43,W,V],[43,W,W],[43,W,X],[43,W,Y],[43,W,Z],[43,W,R],[43,X,S],[43,X,U],[43,X,V],[43,X,W],[43,X,X],[43,X,Y],[43,X,Z],[43,X,R],[43,Y,S],[43,Y,U],[43,Y,V],[43,Y,W],[43,Y,X],[43,Y,Y],[43,Y,Z],[43,Y,R],[43,Z,S],[43,Z,U],[43,Z,V],[43,Z,W],[43,Z,X],[43,Z,Y],[26],[43,Z,R],[43,R,S],[43,R,
U],[43,R,V],[43,R,W],[43,R,X],[43,R,Y],[43,R,Z],[43,R,R],[3,R|O,S],[3,R|O,U],[3,R|O,V],[3,R|O,W],[3,R|O,X],[3,R|O,Y],[3,R|O,Z],[3,R|O,R],[2,R|O,S],[2,R|O,U],[2,R|O,V],[2,R|O,W],[2,R|O,X],[2,R|O,Y],[2,R|O,Z],[2,R|O,R],[73,R|O,S],[73,R|O,U],[73,R|O,V],[73,R|O,W],[73,R|O,X],[73,R|O,Y],[73,R|O,Z],[73,R|O,R],[66,R|O,S],[66,R|O,U],[66,R|O,V],[66,R|O,W],[66,R|O,X],[66,R|O,Y],[66,R|O,Z],[66,R|O,R],[5,R|O,S],[5,R|O,U],[5,R|O,V],[5,R|O,W],[5,R|O,X],[5,R|O,Y],[5,R|O,Z],[5,R|O,R],[76,R|O,S],[76,R|O,U],[76,R|
O,V],[76,R|O,W],[76,R|O,X],[76,R|O,Y],[76,R|O,Z],[76,R|O,R],[46,R|O,S],[46,R|O,U],[46,R|O,V],[46,R|O,W],[46,R|O,X],[46,R|O,Y],[46,R|O,Z],[46,R|O,R],[18,R|O,S],[18,R|O,U],[18,R|O,V],[18,R|O,W],[18,R|O,X],[18,R|O,Y],[18,R|O,Z],[18,R|O,R],[58],[50,Th],[34,51],[30,51],[11,51],[51,Th],[4,R|O,P|Q],[65,Eh],[62],[54],[38,51],[30,51|Fh],[15,51],[7,51],[1,R|O,P|Q],[65,Eh],[57],[50,Uh],[33,51],[48,P|Q,R|O],[10,51],[51,Uh],[74,R|O,P|Q],[65,Eh],[55],[54,Fh],[31,51],[27,R|O,P|Q],[8,51],[7,51|Fh],[67,R|O,P|Q],[65,
Eh],[61],[50,Vh],[37,51],[78,Wh|Bh|O,Vh|O],[14,51],[51,Vh],[6,R|O,P|Q],[65,Eh],[60],[49,Vh],[36,51],[75,Vh|O,Uh|O],[13,51],[7,51|Fh],[77,R|O,P|Q],[65,Eh],[59],[50,Xh],[35,51],[24],[12,51],[51,Xh],[47,R|O,P|Q],[65,Eh],[56],[69,Wh|O,Vh|O],[32,51],[25],[9,51],[7,51|Fh],[19,R|O,P|Q],[65,Eh]],fh=1E3;mb(function(){for(var a=qa(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new ag(d);pa(d,c)}});
function Yh(a,b,c){n.call(this,"Computer",a,67108864);this.G.ja=!1;Zh(this,b);this.L=Ac(this,"autoPower",a);this.j=0;this.T=a.busWidth||a.buswidth;this.b=$h;this.F=null;this.C=this.O=!1;this.U=Ac(this,"url")||"";(Math.random()+.1).toString(36);this.g=ai(this);if(this.u=ma("CPU",this.id)){this.K=ma("Debugger",this.id);this.A=[];for(b=null;b=Ab(this,"Video",b);)this.A.push(b);this.H=new Cb({id:this.eb+".bus",busWidth:this.T},this.u,this.K);var d,e=ka(this.id);if((this.B=ma("Panel",this.id))&&this.B.ta)for(b=
0;b<e.length;b++)d=e[b],d.aa=this.B.aa,d.i=this.B.i,d.ta=this.B.ta;this.i("PC8080 v1.34.0\nCopyright \u00a9 2012-2017 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.Ea&&d.Ea(this,this.H,this.u,this.K);b=null;d=Ac(this,"resume",a);void 0!==d&&(1<d.length?b=this.D=d:this.b=parseInt(d,10));var f;if(a=Ac(this,"state")||(f=!0,a.state))b=this.M=a,f||(this.C=!0,this.b=$h),this.b&&(this.I=new kd(this,"1.34.0"),bi(this.I)?
b=null:delete this.I);!b&&this.b&&(b=ci(this))&&(this.C=!0);if(b){var g=this;Xa(b,null,!0,function(a,b,c){c?(g.D=null,g.C=!1,g.aa("Unable to load machine state from server (error "+c+(b?": "+Sa(b):"")+")")):(g.F=b,g.O=!0);ya(g)})}else ya(this);this.P.power||(this.L=!0);!c&&this.L&&di(this,this.nb)}else q("Unable to find CPU component")}aa(Yh,n);function Zh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.S=b}
function Ac(a,b,c){var d=b.toLowerCase(),d=hb(b)||hb(d);void 0===d&&a.S&&(d=a.S[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function di(a,b,c){for(var d=ka(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!xa(f)){xa(f,function(){di(a,b,c)});return}}b.call(a,c)}
function ei(a,b){var c=new kd(a,"1.34.0",fi);if(bi(c)&&gi(c)){var d=c.get(hi),e=b?b.get(hi):"unknown";d!=e&&(a.aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Yh.prototype;
k.nb=function(a){void 0===a&&(a=this.b||(this.F?ii:$h));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.I||new kd(this,"1.34.0");if(a==ji)b=!0;else if(a>$h){if(bi(d,this.F)){this.w=new kd(this,"1.34.0",ki);bi(this.w)&&(li(this,d),a=mi,ni(this.w));this.w.set(hi,Va());oi(this.w);var e=this.b&&!this.C;if(a==ii||ia("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=gi(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?bi(d,g):("error"==f&&"no machine state"!=
g?(this.aa("Error: "+g),"unable to verify user"==g&&(fb(pi,""),this.g=null)):this.i(f+": "+g),ni(d),bi(d)?(c=gi(d),e=!0):c=!1))}e&&ei(this,c?d:null)}else a==mi&&d.clear()}else ei(this);delete this.F;delete this.I}e=ka(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.u&&(c=qi(this,g,d,b,c));b=[d,a,c];a!=ji?di(this,this.Cc,b):this.Cc(b)}};
function qi(a,b,c,d,e){if(!b.G.ja){b.G.ja=!0;if(b.va){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.va(f,d)&&f&&(q("Unable to restore state for "+b.type),a.M&&!a.O?(c.clear(),a.b=$h,window&&window.location.reload()):a.N=!0,b.va(null),e=!1)}if(!d&&b.vc)for(a=b.vc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.Cc=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.G.ja=!0;var d=this.P.power;d&&(d.textContent="Shutdown");this.u&&(qi(this,this.u,b,c,a),this.u.lb());this.N&&(li(this,b),b.clear());!c&&this.w&&(this.w.clear(),delete this.w);this.j=0};
function li(a,b){if(ia("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.g||"";b=b.toString();var d={app:"PC8080",ver:"1.34.0"};d.url=a.U;d.user=c;d.type="bug";d.data=b;Xa("http://www.pcjs.org/api/v1/report",d,!0)}}
function Rh(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new kd(a,"1.34.0"),g=new kd(a,"1.34.0",fi),h=Va();g.set(hi,h);f.set(hi,h);f.set(ri,"1.34.0");f.set(si,window?window.location.href:null);f.set(ti,bb());a.u&&a.u.ua&&(c&&a.u.da(),d=a.u.ua(b,c),"object"===typeof d&&f.set(a.u.id,d),c&&(a.u.G.ja=!1,!1===d&&(e=null)));for(var h=ka(a.id),l=0;l<h.length;l++){var p=h[l];p.G.ja&&(p.ua&&(d=p.ua(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.G.ja=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.g&&Hi(a,
a.g,f.toString()),oi(g)&&oi(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Ii),d&&f.clear(h)):e=f.toString());c&&(a.G.ja=!1,b=a.P.power)&&(b.textContent="Power");a.j=0;return e}k.reset=function(){this.H&&this.H.reset&&(Ea(this,"Resetting "+this.H.type),this.H.reset());for(var a=ka(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(Ea(this,"Resetting "+c.type),c.reset())}};
k.start=function(a,b){for(var c=ka(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=ka(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.ca=function(a,b,c){var d=this;switch(b){case "power":return this.P[b]=c,c.onclick=function(){d.j||(d.G.ja?Rh(d,!1,!0):di(d,d.nb))},!0;case "reset":return this.P[b]=c,c.onclick=function(){if(d.G.ja&&!d.j)if(d.b&&!d.D){var a=ia("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Rh(d,a,!0);!a&&d.M?window&&window.location.reload():d.nb($h)}else d.reset(),d.u&&d.u.lb()},!0;case "save":if(La())c.parentNode.removeChild(c);else return this.P[b]=
c,c.onclick=function(){var a=ai(d,!0);if(a){var b=!!(d.b&&!d.D||d.M),c=Rh(d,b);b?Hi(d,a,c):d.aa("Resume disabled, machine state not saved")}},!0}return!1};
function ai(a,b){var c=a.g;c||((c=eb(pi),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=Ji(a,c))||a.aa("The user ID is invalid.")):b&&a.aa("Browser local storage is not available"));return c}
function Ji(a,b){a.g=null;b=Xa(Oa()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(fb(pi,b.data),a.g=b.data)}catch(d){q(d.message+" ("+c+")")}return a.g}function ci(a){var b=null;a.g&&(b=Oa()+"/api/v1/user?req=load&user="+a.g+"&state="+Ki(a,"1.34.0"));return b}
function Hi(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Ki(a,"1.34.0");d.data=c;b=Xa(Oa()+"/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.aa("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.aa(c),fb(pi,""),a.g=null)}}
function Ab(a,b,c){a=ka(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}k.Za=function(a){if(this.A.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.A[0];d.V&&d.V.focus();!a&&window&&window.scrollTo(b,c)}};
function Pc(a,b){a.u&&(a=a.u,a.ib&&(b||!a.G.ka||a.G.Bc)&&(I(a,"A",a.g),I(a,"B",a.w),I(a,"C",a.A),I(a,"BC",ld(a),4),I(a,"D",a.B),I(a,"E",a.C),I(a,"DE",nd(a),4),I(a,"H",a.D),I(a,"L",a.F),I(a,"HL",D(a),4),I(a,"SP",a.M,4),I(a,"PC",a.j,4),b=jd(a),I(a,"PS",b,4),I(a,"IF",b&512?1:0,1),I(a,"SF",b&128?1:0,1),I(a,"ZF",b&64?1:0,1),I(a,"AF",b&16?1:0,1),I(a,"PF",b&4?1:0,1),I(a,"CF",b&1?1:0,1)),b=a.P.speed)&&(b.textContent=a.G.ka&&a.Y?a.Y.toFixed(2)+"Mhz":"Stopped")}
var ki="failsafe",fi="validate",hi="timestamp",ri="version",si="url",ti="browser",pi="user",ji=-1,$h=0,ii=1,mi=2,Ii=3;mb(function(){for(var a=qa(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=oa(c),c=qa(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=oa(f),g=new Yh(g,d,!0);pa(g,f);g.L&&di(g,g.nb)}});ob.show.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.W&&!c.G.ja&&c.nb(ji)}});
ob.exit.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.G.ja&&Rh(c,!(!c.b||c.D),!0)}});function kd(a,b,c){this.id=a.id;this.K=a.K;this.g="";this.b={};this.u=this.H=!1;this.key=Ki(a,b,c);ni(this,a.Ad)}k=kd.prototype;k.set=function(a,b){try{this.b[a]=b}catch(c){}};k.get=function(a){return this.b[a]||null};k.data=function(){return this.b};
function bi(a,b){return b?(a.g=b,a.u=!0,a.H=!1,!0):a.u?!0:cb()&&(b=eb(a.key))?(a.g=b,a.u=!0):!1}function gi(a){var b=!0;if(!a.H)try{a.b=JSON.parse(a.g),a.H=!0}catch(c){q(c.message||c),b=!1}return b}function oi(a){var b=!0;if(cb()){var c=JSON.stringify(a.b);fb(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.b?JSON.stringify(this.b):this.g};function ni(a,b){a.g="";a.b={};a.u=a.H=!1;b&&a.set("parms",b)}
k.clear=function(a){ni(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 Ki(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}var Li=0;
function Mi(a,b,c,d,e,f){e("Loading "+a+"...");Xa(a,null,!0,function(g,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):Ni(h,a,b,c,d,e,f)})}
function Ni(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(ea(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?Oi(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function Oi(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Xa(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],p,u=/( [a-z]+=)(['"])(.*?)\2/g;p=u.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[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);Oi(a,b,c)}})}else c(a,null)}
function Pi(a,b,c,d){function e(a){if(void 0===h){var b=g&&qa(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=Pa(a))}function f(a){e("Error: "+a);l&&(--Li||rb(!0));l=!1}var g,h,l=!0;Li++;fa[a]={};try{if(g=document.getElementById(a)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=p:v.appendChild(document.createTextNode(p));u.appendChild(v)}c||
(c="/versions/pc8080/1.34.0/components.xsl");p=function(d,h){h?Mi(c,null,null,!1,e,function(d,l){l?(ea(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Li||rb(!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),--Li||rb(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Mi(b,a,d,!0,e,p):Ni(b,null,a,d,!1,e,p)}else f("missing machine element: "+a)}catch(B){f(B.message)}return l}window.embedPC8080=function(a,b,c,d){rb(!1);return Pi(a,b,c,d)};window.findMachineComponent=function(a,b){return ma(b,a+".machine")};
window.processMachineScript=function(a,b,c){b=!1;if("string"==typeof c){b=!0;for(var d=c.length,e=[],f=[],g="",h=null,l=0;l<d;l++){var p=c[l];if('"'==p||"'"==p)h&&p!=h?g+=p:(h?h=null:h=p,g&&(f.push(g),g=""));else{if(!h){if("\r"==p||"\n"==p)p=";";if(" "==p||"\t"==p||";"==p){g&&(f.push(g),g="");";"==p&&f.length&&(e.push(f),f=[]);continue}}g+=p}}f.length&&e.push(f);ra(a+".machine",e,0)||(b=!1)}return b};window.enableEvents=rb;window.sendEvent=tb;})();

View file

@ -0,0 +1,219 @@
(function(){/*
http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/memory.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpu.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpustate.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpuops.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/chipset.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/rom.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/ram.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/serial.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2017
*/
var k;function l(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
var n={Yd:0,ae:1,be:2,ce:3,de:4,ee:5,fe:6,ge:7,he:8,ie:9,je:10,ke:11,le:12,me:13,ne:14,oe:15,pe:16,qe:17,re:18,se:19,te:20,ue:21,ve:22,we:23,xe:24,ye:25,ze: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,Ia:65,sb:66,tb:67,kb:68,E:69,wb:70,xb:71,yb:72,zb:73,Ab:74,Bb:75,lb:76,Fb:77,Gb:78,Jb:79,Kb:80,Q:81,Lb:82,Nb:83,Ob:84,Pb:85,Rb:86,Sb:87,
Ub:88,Vb:89,$a:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Wb:97,Rc:98,Tc:99,d:100,e:101,Xc:102,Yc:103,Zc:104,$c:105,jd:106,k:107,kd:108,ld:109,n:110,md:111,p:112,q:113,r:114,Kd:115,t:116,Ld:117,Md:118,Nd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ae:127},aa={59:186,61:187,173:189,224:91};
function p(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Tb=b.comment;this.Uc=b;this.exports={};this.w=this.bindings={};a=this.id.indexOf(".");0>a?this.Ya=this.id:(this.Ka=this.id.substr(0,a),this.Ya=this.id.substr(a+1));this.i={ready:!1,ab:!1,nb:!1,U:!1,error:!1};this.eb=null;this.i.error=!1;this.J=this.m=this.u=this.D=this.pa=null;r.push(this)}function ba(a,b,c){ca[a]&&b&&(ca[a][b]=c)}function ea(){return Date.now()||+new Date}
function fa(a,b,c){b||t((c?c+": ":"")+a)}function t(a){window&&window.alert(a)}function ga(a){var b=!1;window&&(b=window.confirm(a));return b}function ha(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<r.length;b++){var d=r[b];a&&d.id.indexOf(a)||c.push(d)}return c}function ia(a){if(void 0!==a){var b;for(b=0;b<r.length;b++)if(r[b].id===a)return r[b]}return null}
function ja(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<r.length;d++)if(c)c==r[d]&&(c=null);else if(!(a!=r[d].type||b&&r[d].id.indexOf(b)))return r[d]}return null}function u(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
function ka(a,b){b=x(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(" "),m=0;m<h.length;m++)switch(g=h[m],g){case "pc8080-binding":(g=u(f))&&g.binding&&a.S(g.type,g.binding,f,g.value),m=h.length}}}}
function x(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}
function la(a,b,c){for(var d=!0;c<b.length;){var e=b[c],f=e[0],g=null;0<=ma.indexOf(f)&&(g=function(c){return function(){la(a,b,c)}}(c+1));var h=na[f];if(h)if(!g)d=h(e[1],e[2],e[3]);else{if(!h(g,e[1],e[2],e[3]))break}else{var d=!1,m=ja(e[1],a);if(m)if(h=oa[f])d=h(m,e[2],e[3]);else if(h=m.exports)if(h=h[f])if(d=!0,!g)d=h.call(m,e[2],e[3]);else if(!h.call(m,g,e[2],e[3]))break}if(!d){t("Script error ("+f+")");break}c++}return d}k=p.prototype;
k.toString=function(){return this.name?this.name:this.id||this.type};
k.S=function(a,b,c){switch(b){case "clear":return this.w[b]||(this.w[b]=c,c.onclick=function(a){return function(){a.w.print&&(a.w.print.value="")}}(this)),!0;case "print":return this.w[b]||(this.pa=this.w[b]=c,c.value="",this.aa=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.G=function(a){this.aa(a,this.Ya)}),!0;default:return!1}};k.log=function(){};k.aa=function(){};
k.status=function(a){this.aa(this.Ya+": "+a)};k.G=function(a,b,c){fa(a,b,c||this.type)};function pa(a,b){b&&(a.i.ready?b():a.eb=b);return a.i.ready}function z(a){if(!a.i.error&&(a.i.ready=!0,a.i.ready)){var b=a.eb;a.eb=null;b&&b()}}function qa(a,b){if(a.i.nb)return a.i.ab=!1,a.i.nb=!1;if(a.i.error)return a.aa(a.toString()+" error"),!1;a.i.ab=b;return a.i.ab}k.ca=function(){return this.i.U=!0};k.ba=function(a,b){b&&(this.i.U=!1);return!0};
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));var ca=window?window.PCjs.Machines:{},r=window?window.PCjs.Components:[],ma=["sleep","wait"],na={alert:function(a){t(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},oa={select:function(a,b,c){var d=!1;if(a=a.bindings[b])for(b=0;b<a.options.length;b++)if(a.options[b].textContent==c){a.selectedIndex!=b&&(a.selectedIndex=b);d=!0;break}return d}};
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});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
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});
function ra(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 A(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 sa(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 ta(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function ua(){var a=va();return-1!==a.indexOf("pcjs.org",a.length-8)}function wa(a){return a.replace(/[&<>"']/g,function(a){return ya[a]})}function za(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
var ya={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},Aa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",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 Ba(){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 Ca(a,b,c,d){c=void 0===c?!1:c;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 m="",q;for(q in b)b.hasOwnProperty(q)&&(m&&(m+="&"),m+=q+"="+encodeURIComponent(b[q]));m=m.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(m)}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 Da(a,b){var c,d={W:null,sa:null,Aa:null,ta:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Aa=g.load;d.ta=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&255,d.W[f++]=e[c]>>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&
255,d.W[f++]=e[c]>>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.sa=g.symbols;d.W.length?1==d.W.length&&(t(d.W[0]),d=null):(t("Empty resource: "+a),d=null)}catch(h){t("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){t("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.W=e)}return d}
function va(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Ea(){if(null==Fa){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}Fa=a}return Fa}function Ga(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function Ha(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ia(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)}return!1}
function Ja(a){if(!Ka){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Ka=c}return Ka[a]}function La(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ma(a){Na.init.push(a)}
function Oa(a){if(Pa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){fa("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){!Pa&&a?(Pa=!0,Ra&&Sa("init"),Ta&&Sa("show")):Pa=a}function Sa(a){Na[a]&&Oa(Na[a])}var Ka=null,Na={init:[],show:[],exit:[]},Ra=!1,Ta=!1,Pa=!0,Fa=null;La("onload",function(){Ra=!0;Oa(Na.init)});La("onpageshow",function(){Ta=!0;Oa(Na.show)});
La(Ia("Opera")||Ia("iOS")?"onunload":"onbeforeunload",function(){Oa(Na.exit)});
var Ua="undefined"!==typeof ArrayBuffer,Wa=[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 Xa(a){p.call(this,"Panel",a)}l(Xa,p);Xa.prototype.S=function(a,b,c,d){return this.D&&this.D.S(a,b,c,d)||this.m&&this.m.S(a,b,c,d)||this.h&&this.h.S(a,b,c,d)?!0:p.prototype.S.call(this,a,b,c,d)};Xa.prototype.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;this.h=Ya(a,"Keyboard")};Xa.prototype.ca=function(a,b){b||Za();return!0};Xa.prototype.ba=function(){return!0};
function Za(){for(var a=!1,b=x(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=u(d),f=ia(e.id);f||(a=!0,f=new Xa(e));ka(f,d);a&&z(f)}}Ma(Za);
function $a(a,b,c){p.call(this,"Bus",a);this.m=b;this.J=c;this.s=a.busWidth||16;this.v=Math.pow(2,this.s);this.g=this.v-1|0;this.b=(this.s>>1)+2;10>this.b&&(this.b=10);15<this.b&&(this.b=15);this.c=1<<this.b;this.A=this.c>>2;this.f=this.c-1;this.h=this.v/this.c|0;this.o=this.h-1;this.j=[];this.l=[];this.B=[];this.C=[];a=new C;ab(a,this.J);this.a=Array(this.h);for(b=0;b<this.h;b++)this.a[b]=a;z(this)}l($a,p);$a.prototype.reset=function(){};$a.prototype.ca=function(a,b){b||this.reset();return!0};
function bb(a,b,c,d){for(var e=b,f=c,g=e>>>a.b;0<f&&g<a.a.length;){var h=a.a[g],m=g*a.c,q=a.c-(e-m);q>f&&(q=f);if(h&&h.size){if(h.type==d){if(e+f<=h.Ra)return h.ib+=h.Ra-e,h.Ra=e,!0;if(e>=h.Ra+h.ib){q=h.size-(e-m);q>f&&(q=f);h.ib=e-h.Ra+q;e=m+a.c;f-=q;g++;continue}}return cb(db,e,f)}e=new C(e,q,a.c,d);ab(e,a.J,h);a.a[g++]=e;e=m+a.c;f-=q}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+eb[d]+" at "+A(b,4,!0)),!0):cb(fb,b,c)}function gb(a,b){return a.a[(b&a.g)>>>a.b].hb(b&a.f,b)}
function hb(a,b){var c=b&a.f,d=(b&a.g)>>>a.b;return c!=a.f?a.a[d].Ed(c,b):a.a[d++].Ua(c,b)|a.a[d&a.o].Ua(0,b+1)<<8}function ib(a,b,c){a.a[(b&a.g)>>>a.b].gc(b&a.f,c&255,b)}function jb(a,b,c){var d=b&a.f,e=(b&a.g)>>>a.b;d!=a.f?a.a[e].Sd(d,c&65535,b):(a.a[e++].Va(d,c&255,b),a.a[e&a.o].Va(0,c>>8&255,b+1))}
function kb(a){for(var b=0,c=[],d=0;d<a.h;d++){var e=a.a[d];if(e.ja||e.Zb){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,m=[];g<e.length;){for(var q=e[g],w=g+1;w<e.length&&e[w]===q;)w++;m[h++]=w-g;m[h++]=q;g=w}m.length<e.length&&(e=m)}c[f]=e}}return c}function lb(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 m=+e+d;m<=g;m++)void 0!==f.j[m]?t("Input port "+A(m,4,!0)+" already registered"):f.j[m]=[h,!1]}}
function nb(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 m=+e+d;m<=g;m++)void 0!==f.l[m]?t("Output port "+A(m,4,!0)+" already registered"):f.l[m]=[h,!1]}}function cb(a,b,c){t("Memory block error ("+a+": "+A(b)+","+A(c)+")");return!1}var db=1,fb=2,ob;if(Ua){var pb=new ArrayBuffer(2);(new DataView(pb)).setUint16(0,256,!0);ob=256===(new Uint16Array(pb))[0]}else ob=!1;var qb=ob;
function C(a,b,c,d){this.id=rb+=2;this.a=null;this.Ra=a;this.ib=b;this.size=c||0;this.type=d||sb;this.w=d==tb;ab(this);this.ja=this.Zb=!1;if(c)if(Ua)this.m=new ArrayBuffer(c),this.u=new DataView(this.m,0,c),this.b=new Uint8Array(this.m,0,c),this.g=new Uint16Array(this.m,0,c>>1),this.a=new Int32Array(this.m,0,c>>2),ub(this,qb?vb:wb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;ub(this,xb)}else ub(this)}k=C.prototype;
k.save=function(){var a,b;if(Ua)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.u.getInt32(b<<2,!0);else a=this.a;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(Ua)for(b=0;b<a.length;b++)this.u.setInt32(b<<2,a[b],!0);else this.a=a;return this.ja=!0}return!1};function ub(a,b){b||(b=yb);zb(a,b,void 0);Ab(a,b,void 0)}function zb(a,b,c){c&&a.c||(a.Ua=b[0]||a.cc,a.Ed=b[2]||a.dc);if(c||void 0===c)a.hb=b[0]||a.cc,a.ec=b[2]||a.dc}
function Ab(a,b,c){c&&a.f||(a.Va=!a.w&&b[1]||a.hc,a.Sd=!a.w&&b[3]||a.ic);if(c||void 0===c)a.gc=b[1]||a.hc,a.h=b[3]||a.ic}function ab(a,b,c){a.J=b;a.c=a.f=0;c&&((a.c=c.c)&&zb(a,Bb,!1),(a.f=c.f)&&Ab(a,Bb,!1))}k.cc=function(){return 255};k.hc=function(){};k.dc=function(a,b){return this.Ua(a++,b++)|this.Ua(a,b)<<8};k.ic=function(a,b,c){this.Va(a++,b&255,c++);this.Va(a,b>>8,c)};k.Dd=function(a){return this.a[a>>2]>>>((a&3)<<3)&255};
k.Id=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};k.Rd=function(a,b){var c=a>>2;a=(a&3)<<3;this.a[c]=this.a[c]&~(255<<a)|b<<a;this.ja=!0};k.Wd=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.ja=!0};k.Bd=function(a,b){return this.hb(a,b)};k.Gd=function(a,b){return this.ec(a,b)};k.Pd=function(a,b,c){this.w||this.gc(a,b,c)};
k.Ud=function(a,b,c){this.w||this.h(a,b,c)};k.Ad=function(a){return this.b[a]};k.Cd=function(a){return this.b[a]};k.Fd=function(a){return this.u.getUint16(a,!0)};k.Hd=function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.g[a>>1]};k.Od=function(a,b){this.b[a]=b;this.ja=!0};k.Qd=function(a,b){this.b[a]=b;this.ja=!0};k.Td=function(a,b){this.u.setUint16(a,b,!0);this.ja=!0};k.Vd=function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.g[a>>1]=b;this.ja=!0};
var sb=0,tb=2,eb=["NONE","RAM","ROM","VID","H/W"],rb=0,yb=[],xb=[C.prototype.Dd,C.prototype.Rd,C.prototype.Id,C.prototype.Wd],Bb=[C.prototype.Bd,C.prototype.Pd,C.prototype.Gd,C.prototype.Ud];if(Ua)var wb=[C.prototype.Ad,C.prototype.Od,C.prototype.Fd,C.prototype.Td],vb=[C.prototype.Cd,C.prototype.Qd,C.prototype.Hd,C.prototype.Vd];
function Cb(a,b){p.call(this,"CPU",a);var c=a.multiplier||1;this.na=a.cycles||b;this.O=c;this.Ea=Math.round(this.na/1E4)/100;this.X=this.Ea*this.O;this.i.ka=!1;this.i.fc=!1;this.i.Sa=a.autoStart;this.i.Xb=!1;this.i.bb=!1;this.wa=this.ea=0;this.xa=a.csStart;this.ha=a.csInterval;this.la=a.csStop;this.H=[];this.mb=this.jb.bind(this);z(this)}l(Cb,p);k=Cb.prototype;
k.qa=function(a,b,c,d){this.D=a;this.u=b;this.J=d;for(b=0;b<Db.length;b++)(c=this.w[Db[b]])&&this.D.S(null,Db[b],c);this.N=Ya(a,"ChipSet");a=Eb(a,"autoStart");null!=a&&(this.i.Sa="true"==a?!0:"false"==a?!1:!!a);z(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.ca=function(a,b){if(!b){if(a&&this.restore){Fb(this);if(!this.restore(a))return!1;Gb(this)}else this.reset();this.aa("No debugger detected")}Hb(this);return!0};
k.ba=function(a){return a?this.save():!0};k.Sa=function(){return this.i.Sa||void 0===this.w.run?(this.jb(),!0):!1};k.$b=function(){return 0};function Gb(a){void 0===a.xa&&(a.xa=0);void 0===a.ha&&(a.ha=-1);void 0===a.la&&(a.la=-1);a.i.bb=0<=a.xa&&0<a.ha;a.i.bb&&(a.wa=0,a.ea=a.xa-a.I)}
k.S=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.w[b]=c;a=!0;break;case "run":this.w[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.i.U)a=!0;else{var b=null,c,h=ha(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.i.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.i.U);c++);c==h.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.i.ready?"powered yet":"ready yet"+(b.eb?" (waiting for notification)":""))+".");a=!1}a&&(d.i.ka?Ib(d):d.jb())};a=!0;
break;case "speed":this.w[b]=c;a=!0;break;case "setSpeed":this.w[b]=c,c.onclick=function(){Jb(d,d.O<<1,!0)},c.textContent=this.X.toFixed(2)+"Mhz",a=!0}return a};function Kb(a,b){var c=1;b&&1<a.O&&a.R&&(c=a.R/a.Ea);a.Pa=Math.round(1E3/Lb);a.ya=Math.floor(a.na/Lb*c);b||(a.ma=a.ya);a.Ga=0}function Mb(a){return a.I+a.P+a.da-a.a}function Fb(a){a.R=0;a.Qa=0;a.I=a.P=a.da=a.a=0;Gb(a);Jb(a,1)}
function Jb(a,b,c){if(void 0!==b){.8>a.R/a.X&&(b=1);a.O=b;b=a.Ea*a.O;if(a.X!=b){a.X=b;b=a.X.toFixed(2)+"Mhz";var d=a.w.setSpeed;d&&(d.textContent=b);a.aa("target speed: "+b)}c&&a.D&&Nb(a.D)}a.I+=a.P;a.P=0;a.L=ea();a.V=0;Kb(a)}function Ob(a,b){var c=a.H.length;a.H.push([-1,b]);return c}function Pb(a,b,c){0<=b&&b<a.H.length&&0>a.H[b][0]&&(c*=a.na*a.O/1E3,a.H[b][0]=c+Qb(a))}function Qb(a,b){var c=a.da-=a.a;a.a=0;b&&(a.da=0);return c}
k.jb=function(a){if(qa(this,!0)){if(!this.i.ka){Jb(this);this.D&&this.D.start(this.L,Mb(this));this.i.ka=!0;this.i.fc=!0;this.N&&this.N.start();var b=this.w.run;b&&(b.textContent="Halt");this.D&&(Rb(this.D,!0),a&&Nb(this.D,!0))}this.Ga>=this.na&&Kb(this,!0);this.oa=0;this.va=ea();this.V&&(a=this.va-this.V,a>this.Pa&&(this.L+=a,this.L>this.va&&(this.L=this.va)));try{do{for(var c,d=this.i.bb?1:this.ya,e=this.H.length-1;0<=e;e--){var f=this.H[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.vb(c);c=Qb(this,!0);
this.oa+=c;this.P+=c;a=c;this.i.bb&&(b=!1,this.wa=this.wa+this.$b()|0,this.ea-=a,0>=this.ea&&(this.ea+=this.ha,b=!0),0<=this.la&&this.la<=Mb(this)&&(this.ha=this.la=-1,Gb(this),Ib(this),b=!0),b&&this.aa(Mb(this)+" cycles: checksum="+A(this.wa)));a=c;for(var g=this.H.length-1;0<=g;g--){var h=this.H[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ma-=c;if(0>=this.ma){this.ma+=this.ya;++this.Qa>=Sb&&(this.D&&Rb(this.D),this.Qa=0);break}}while(this.i.ka)}catch(m){Ib(this);Hb(this);this.D&&this.D.stop(ea(),
Mb(this));qa(this,!1);c=m.stack||m.message;this.i.error=!0;this.G(c);return}c=setTimeout;d=this.mb;this.V=ea();e=this.Pa;this.oa&&(e=Math.round(e*this.oa/this.ya));e-=this.V-this.va;if(f=this.V-this.L)this.R=Math.round(this.P/(10*f))/100,864E5<=f&&(this.I=0,Jb(this));if(0>e||this.R<this.X)-1E3>e&&(this.L-=e),e=0;this.Ga+=this.oa;this.V+=e;c(d,e)}else Hb(this),this.D&&this.D.stop(ea(),Mb(this))};k.vb=function(){return 0};
function Ib(a){a.i.ab&&(a.i.nb=!0);Qb(a);a.I+=a.P;a.P=0;if(a.i.ka){a.i.ka=!1;a.N&&a.N.stop();var b=a.w.run;b&&(b.textContent="Run")}a.i.complete=void 0}function Hb(a){if(a.D){for(var b=a.D,c=0;c<b.g.length;c++)Tb(b.g[c],void 0);Rb(a.D,void 0)}}var Lb=30,Sb=15,Db=["power","reset"];function Ub(a){Cb.call(this,a,1E6);this.Ma=Vb;Fb(this);this.i.complete=this.i.Vc=!1;this.Oa=0;this.ra=[];this.Na=0;Wb(this)}l(Ub,Cb);function Xb(a,b){a.ra.push(b)}k=Ub.prototype;
k.reset=function(){this.i.ka&&Ib(this);Wb(this);Fb(this);this.i.error=!1;Cb.prototype.reset.call(this)};function Wb(a){a.b=0;a.g=0;a.c=0;a.h=0;a.f=0;a.j=0;a.l=0;a.A=0;D(a,a.Na);Zb(a,0);a.C=0}function $b(a,b){a.Na=b;D(a,b)}k.$b=function(){var a=this.b+this.g+this.c+this.h+this.f+this.j+this.l|0;return a=a+this.A+this.s+ac(this)|0};
k.save=function(){var a=new E(this);a.set(0,[this.b,this.g,this.c,this.h,this.f,this.j,this.l,this.A,this.s,ac(this)]);a.set(1,[this.C,this.I,this.O]);a.set(2,kb(this.u));return a.data()};
k.restore=function(a){var b=a[0];this.b=b[0];this.g=b[1];this.c=b[2];this.h=b[3];this.f=b[4];this.j=b[5];this.l=b[6];this.A=b[7]&65535;D(this,b[8]);Zb(this,b[9]);b=a[1];this.C=b[0];this.I=b[1];Jb(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.A){for(var f=0,g=Array(b.A),h=0;h<e.length-1;)for(var m=e[h++],q=e[h++];m--;)g[f++]=q;e=g}f=b.a[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
k.S=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.w[b]=c;this.Oa++;a=!0;break;default:a=Cb.prototype.S.call(this,a,b,c)}return a};function bc(a){return a.g<<8|a.c}function cc(a,b){a.g=b>>8&255;a.c=b&255}function dc(a){return a.h<<8|a.f}function ec(a,b){a.h=b>>8&255;a.f=b&255}function G(a){return a.j<<8|a.l}
function H(a,b){a.j=b>>8&255;a.l=b&255}function D(a,b){a.s=b&65535}function I(a){return a.o&256?1:0}function fc(a,b){a.o=a.o&255|b}function gc(a){return Wa[a.v&255]?4:0}function ac(a){return a.F&-214|(a.v&128?128:0)|(a.o&255?0:64)|((a.v^a.B)&16?16:0)|gc(a)|I(a)}function Zb(a,b){a.o=a.v=a.B=0;b&1&&(a.o|=256);b&4||(a.v|=1);b&16&&(a.B|=16);b&64||(a.o|=255);b&128&&(a.v^=192);a.F=a.F&-726|b&512|2}function hc(a,b){a.B=a.b^b;return a.v=(a.o=a.b+b)&255}
function ic(a,b){a.B=a.b^b;return a.v=(a.o=a.b+b+(a.o&256?1:0))&255}function jc(a,b){a.o=a.v=a.B=a.b&b;(a.b|b)&8&&(a.B^=16);return a.o}function kc(a,b){a.B=b^255;b=a.v=b+255&255;a.o=a.o&-256|b;return b}function lc(a,b){a.B=b;b=a.v=b+1&255;a.o=a.o&-256|b;return b}function mc(a,b){return a.v=a.o=a.B=a.b|b}function J(a,b){b^=255;a.B=a.b^b;return a.v=(a.o=a.b+b+1^256)&255}function nc(a,b){b^=255;a.B=a.b^b;return a.v=(a.o=a.b+b+(a.o&256?0:1)^256)&255}function oc(a,b){return a.v=a.o=a.B=a.b^b}
function K(a,b){a=a.u;return a.a[(b&a.g)>>>a.b].Ua(b&a.f,b)}function M(a,b,c){a=a.u;a.a[(b&a.g)>>>a.b].Va(b&a.f,c&255,b)}function N(a){var b=K(a,a.s);D(a,a.s+1);return b}function O(a){var b=hb(a.u,a.s);D(a,a.s+2);return b}function P(a){var b=hb(a.u,a.A);a.A=a.A+2&65535;return b}function Q(a,b){a.A=a.A-2&65535;jb(a.u,a.A,b)}function pc(a){if(a.a&&a.C&255&&a.F&512){for(var b=0;8>b&&!(a.C&1<<b);b++);a.C&=~(0>b?255:1<<b);a.F&=-513;a.C&=-257;a.Ma[199|b<<3].call(a)}return a.C&256?(Qb(a),!1):!0}
function qc(a,b){a.C|=1<<b;a.F&512&&Qb(a)}function R(a,b,c,d){d=d||2;a.w[b]&&(void 0===c&&(a.i.error=!0,a.G("Value for "+b+" is invalid"),Ib(a)),c=!a.i.ka||a.i.Xb?A(c,d):"--------".substr(0,d),a.w[b].textContent!=c&&(a.w[b].textContent=c))}k.vb=function(a){this.i.complete=!0;this.i.Vc=!1;this.i.fc=!1;this.da=this.a=a;if(pc(this)){do this.Ma[N(this)].call(this);while(0<this.a)}return this.i.complete?this.da-this.a:void 0===this.i.complete?0:-1};
Ma(function(){for(var a=x(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new Ub(d);ka(d,c)}});function rc(){this.a-=4}function sc(){D(this,O(this));this.a-=10}function tc(){D(this,P(this));this.a-=10}function uc(){var a=O(this);Q(this,this.s);D(this,a);this.a-=17}
var Vb=[rc,function(){cc(this,O(this));this.a-=10},function(){M(this,bc(this),this.b);this.a-=7},function(){cc(this,bc(this)+1);this.a-=5},function(){this.g=lc(this,this.g);this.a-=5},function(){this.g=kc(this,this.g);this.a-=5},function(){this.g=N(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;fc(this,a&256);this.a-=4},rc,function(){var a;H(this,a=G(this)+bc(this));fc(this,a>>8&256);this.a-=10},function(){this.b=K(this,bc(this));this.a-=7},function(){cc(this,bc(this)-1);this.a-=5},
function(){this.c=lc(this,this.c);this.a-=5},function(){this.c=kc(this,this.c);this.a-=5},function(){this.c=N(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;fc(this,a);this.a-=4},rc,function(){ec(this,O(this));this.a-=10},function(){M(this,dc(this),this.b);this.a-=7},function(){ec(this,dc(this)+1);this.a-=5},function(){this.h=lc(this,this.h);this.a-=5},function(){this.h=kc(this,this.h);this.a-=5},function(){this.h=N(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|I(this);
fc(this,a&256);this.a-=4},rc,function(){var a;H(this,a=G(this)+dc(this));fc(this,a>>8&256);this.a-=10},function(){this.b=K(this,dc(this));this.a-=7},function(){ec(this,dc(this)-1);this.a-=5},function(){this.f=lc(this,this.f);this.a-=5},function(){this.f=kc(this,this.f);this.a-=5},function(){this.f=N(this);this.a-=7},function(){var a=this.b<<8;this.b=(I(this)<<8|this.b)>>1;fc(this,a&256);this.a-=4},rc,function(){H(this,O(this));this.a-=10},function(){var a=O(this);jb(this.u,a,G(this));this.a-=16},
function(){H(this,G(this)+1);this.a-=5},function(){this.j=lc(this,this.j);this.a-=5},function(){this.j=kc(this,this.j);this.a-=5},function(){this.j=N(this);this.a-=7},function(){var a=0,b=I(this);if((this.v^this.B)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=hc(this,a);fc(this,b?256:0);this.a-=4},rc,function(){var a;H(this,a=G(this)+G(this));fc(this,a>>8&256);this.a-=10},function(){var a;a=O(this);a=hb(this.u,a);H(this,a);this.a-=16},function(){H(this,G(this)-1);this.a-=5},function(){this.l=
lc(this,this.l);this.a-=5},function(){this.l=kc(this,this.l);this.a-=5},function(){this.l=N(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},rc,function(){this.A=O(this)&65535;this.a-=10},function(){M(this,O(this),this.b);this.a-=13},function(){this.A=this.A+1&65535;this.a-=5},function(){var a=G(this);M(this,a,lc(this,K(this,a)));this.a-=10},function(){var a=G(this);M(this,a,kc(this,K(this,a)));this.a-=10},function(){M(this,G(this),N(this));this.a-=10},function(){this.o|=256;this.a-=4},rc,
function(){var a;H(this,a=G(this)+this.A);fc(this,a>>8&256);this.a-=10},function(){this.b=K(this,O(this));this.a-=13},function(){this.A=this.A-1&65535;this.a-=5},function(){this.b=lc(this,this.b);this.a-=5},function(){this.b=kc(this,this.b);this.a-=5},function(){this.b=N(this);this.a-=7},function(){fc(this,I(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.g=this.c;this.a-=5},function(){this.g=this.h;this.a-=5},function(){this.g=this.f;this.a-=5},function(){this.g=this.j;this.a-=5},function(){this.g=
this.l;this.a-=5},function(){this.g=K(this,G(this));this.a-=7},function(){this.g=this.b;this.a-=5},function(){this.c=this.g;this.a-=5},function(){this.a-=5},function(){this.c=this.h;this.a-=5},function(){this.c=this.f;this.a-=5},function(){this.c=this.j;this.a-=5},function(){this.c=this.l;this.a-=5},function(){this.c=K(this,G(this));this.a-=7},function(){this.c=this.b;this.a-=5},function(){this.h=this.g;this.a-=5},function(){this.h=this.c;this.a-=5},function(){this.a-=5},function(){this.h=this.f;
this.a-=5},function(){this.h=this.j;this.a-=5},function(){this.h=this.l;this.a-=5},function(){this.h=K(this,G(this));this.a-=7},function(){this.h=this.b;this.a-=5},function(){this.f=this.g;this.a-=5},function(){this.f=this.c;this.a-=5},function(){this.f=this.h;this.a-=5},function(){this.a-=5},function(){this.f=this.j;this.a-=5},function(){this.f=this.l;this.a-=5},function(){this.f=K(this,G(this));this.a-=7},function(){this.f=this.b;this.a-=5},function(){this.j=this.g;this.a-=5},function(){this.j=
this.c;this.a-=5},function(){this.j=this.h;this.a-=5},function(){this.j=this.f;this.a-=5},function(){this.a-=5},function(){this.j=this.l;this.a-=5},function(){this.j=K(this,G(this));this.a-=7},function(){this.j=this.b;this.a-=5},function(){this.l=this.g;this.a-=5},function(){this.l=this.c;this.a-=5},function(){this.l=this.h;this.a-=5},function(){this.l=this.f;this.a-=5},function(){this.l=this.j;this.a-=5},function(){this.a-=5},function(){this.l=K(this,G(this));this.a-=7},function(){this.l=this.b;
this.a-=5},function(){M(this,G(this),this.g);this.a-=7},function(){M(this,G(this),this.c);this.a-=7},function(){M(this,G(this),this.h);this.a-=7},function(){M(this,G(this),this.f);this.a-=7},function(){M(this,G(this),this.j);this.a-=7},function(){M(this,G(this),this.l);this.a-=7},function(){var a=this.s-1;if(this.ra.length)for(var b=0;b<this.ra.length;b++)if(this.ra[b](a))return;this.a-=7;this.C|=256;Qb(this);this.F&512||Ib(this)},function(){M(this,G(this),this.b);this.a-=7},function(){this.b=this.g;
this.a-=5},function(){this.b=this.c;this.a-=5},function(){this.b=this.h;this.a-=5},function(){this.b=this.f;this.a-=5},function(){this.b=this.j;this.a-=5},function(){this.b=this.l;this.a-=5},function(){this.b=K(this,G(this));this.a-=7},function(){this.a-=5},function(){this.b=hc(this,this.g);this.a-=4},function(){this.b=hc(this,this.c);this.a-=4},function(){this.b=hc(this,this.h);this.a-=4},function(){this.b=hc(this,this.f);this.a-=4},function(){this.b=hc(this,this.j);this.a-=4},function(){this.b=
hc(this,this.l);this.a-=4},function(){this.b=hc(this,K(this,G(this)));this.a-=7},function(){this.b=hc(this,this.b);this.a-=4},function(){this.b=ic(this,this.g);this.a-=4},function(){this.b=ic(this,this.c);this.a-=4},function(){this.b=ic(this,this.h);this.a-=4},function(){this.b=ic(this,this.f);this.a-=4},function(){this.b=ic(this,this.j);this.a-=4},function(){this.b=ic(this,this.l);this.a-=4},function(){this.b=ic(this,K(this,G(this)));this.a-=7},function(){this.b=ic(this,this.b);this.a-=4},function(){this.b=
J(this,this.g);this.a-=4},function(){this.b=J(this,this.c);this.a-=4},function(){this.b=J(this,this.h);this.a-=4},function(){this.b=J(this,this.f);this.a-=4},function(){this.b=J(this,this.j);this.a-=4},function(){this.b=J(this,this.l);this.a-=4},function(){this.b=J(this,K(this,G(this)));this.a-=7},function(){this.b=J(this,this.b);this.a-=4},function(){this.b=nc(this,this.g);this.a-=4},function(){this.b=nc(this,this.c);this.a-=4},function(){this.b=nc(this,this.h);this.a-=4},function(){this.b=nc(this,
this.f);this.a-=4},function(){this.b=nc(this,this.j);this.a-=4},function(){this.b=nc(this,this.l);this.a-=4},function(){this.b=nc(this,K(this,G(this)));this.a-=7},function(){this.b=nc(this,this.b);this.a-=4},function(){this.b=jc(this,this.g);this.a-=4},function(){this.b=jc(this,this.c);this.a-=4},function(){this.b=jc(this,this.h);this.a-=4},function(){this.b=jc(this,this.f);this.a-=4},function(){this.b=jc(this,this.j);this.a-=4},function(){this.b=jc(this,this.l);this.a-=4},function(){this.b=jc(this,
K(this,G(this)));this.a-=7},function(){this.b=jc(this,this.b);this.a-=4},function(){this.b=oc(this,this.g);this.a-=4},function(){this.b=oc(this,this.c);this.a-=4},function(){this.b=oc(this,this.h);this.a-=4},function(){this.b=oc(this,this.f);this.a-=4},function(){this.b=oc(this,this.j);this.a-=4},function(){this.b=oc(this,this.l);this.a-=4},function(){this.b=oc(this,K(this,G(this)));this.a-=7},function(){this.b=oc(this,this.b);this.a-=4},function(){this.b=mc(this,this.g);this.a-=4},function(){this.b=
mc(this,this.c);this.a-=4},function(){this.b=mc(this,this.h);this.a-=4},function(){this.b=mc(this,this.f);this.a-=4},function(){this.b=mc(this,this.j);this.a-=4},function(){this.b=mc(this,this.l);this.a-=4},function(){this.b=mc(this,K(this,G(this)));this.a-=7},function(){this.b=mc(this,this.b);this.a-=4},function(){J(this,this.g);this.a-=4},function(){J(this,this.c);this.a-=4},function(){J(this,this.h);this.a-=4},function(){J(this,this.f);this.a-=4},function(){J(this,this.j);this.a-=4},function(){J(this,
this.l);this.a-=4},function(){J(this,K(this,G(this)));this.a-=7},function(){J(this,this.b);this.a-=4},function(){this.o&255&&(D(this,P(this)),this.a-=6);this.a-=5},function(){cc(this,P(this));this.a-=10},function(){var a=O(this);this.o&255&&D(this,a);this.a-=10},sc,function(){var a=O(this);this.o&255&&(Q(this,this.s),D(this,a),this.a-=6);this.a-=11},function(){Q(this,bc(this));this.a-=11},function(){this.b=hc(this,N(this));this.a-=7},function(){Q(this,this.s);D(this,0);this.a-=11},function(){this.o&
255||(D(this,P(this)),this.a-=6);this.a-=5},tc,function(){var a=O(this);this.o&255||D(this,a);this.a-=10},sc,function(){var a=O(this);this.o&255||(Q(this,this.s),D(this,a),this.a-=6);this.a-=11},uc,function(){this.b=ic(this,N(this));this.a-=7},function(){Q(this,this.s);D(this,8);this.a-=11},function(){I(this)||(D(this,P(this)),this.a-=6);this.a-=5},function(){ec(this,P(this));this.a-=10},function(){var a=O(this);I(this)||D(this,a);this.a-=10},function(){for(var a=N(this),b=this.u,c=this.b,d=this.s+
-2&65535,e=1,f=0;0<e;){var g=b.l[a],h=b.C[a]||1,m=1==h?255:2==h?65535:-1,m=(c>>>=f)&m;if(void 0!==g&&g[0])g[0](a,m,d);f+=h<<3;a+=h;e-=h}this.a-=10},function(){var a=O(this);I(this)||(Q(this,this.s),D(this,a),this.a-=6);this.a-=11},function(){Q(this,dc(this));this.a-=11},function(){this.b=J(this,N(this));this.a-=7},function(){Q(this,this.s);D(this,16);this.a-=11},function(){I(this)&&(D(this,P(this)),this.a-=6);this.a-=5},tc,function(){var a=O(this);I(this)&&D(this,a);this.a-=10},function(){for(var a=
N(this),b=this.u,c=this.s+-2&65535,d=1,e=0,f=0;0<d;){var g=b.j[a],h=b.B[a]||1,m=1==h?255:2==h?65535:-1,q=m;void 0!==g&&g[0]&&(q=g[0](a,c),void 0===q?q=m:q&=m);e|=q<<f;f+=h<<3;a+=h;d-=h}this.b=e&255;this.a-=10},function(){var a=O(this);I(this)&&(Q(this,this.s),D(this,a),this.a-=6);this.a-=11},uc,function(){this.b=nc(this,N(this));this.a-=7},function(){Q(this,this.s);D(this,24);this.a-=11},function(){gc(this)||(D(this,P(this)),this.a-=6);this.a-=5},function(){H(this,P(this));this.a-=10},function(){var a=
O(this);gc(this)||D(this,a);this.a-=10},function(){var a=P(this);Q(this,G(this));H(this,a);this.a-=18},function(){var a=O(this);gc(this)||(Q(this,this.s),D(this,a),this.a-=6);this.a-=11},function(){Q(this,G(this));this.a-=11},function(){this.b=jc(this,N(this));this.a-=7},function(){Q(this,this.s);D(this,32);this.a-=11},function(){gc(this)&&(D(this,P(this)),this.a-=6);this.a-=5},function(){D(this,G(this));this.a-=5},function(){var a=O(this);gc(this)&&D(this,a);this.a-=10},function(){var a=G(this);
H(this,dc(this));ec(this,a);this.a-=5},function(){var a=O(this);gc(this)&&(Q(this,this.s),D(this,a),this.a-=6);this.a-=11},uc,function(){this.b=oc(this,N(this));this.a-=7},function(){Q(this,this.s);D(this,40);this.a-=11},function(){this.v&128||(D(this,P(this)),this.a-=6);this.a-=5},function(){var a=P(this);Zb(this,a&255|this.F&-256);this.b=a>>8;this.a-=10},function(){var a=O(this);this.v&128||D(this,a);this.a-=10},function(){this.F&=-513;this.a-=4},function(){var a=O(this);this.v&128||(Q(this,this.s),
D(this,a),this.a-=6);this.a-=11},function(){Q(this,ac(this)&255|this.b<<8);this.a-=11},function(){this.b=mc(this,N(this));this.a-=7},function(){Q(this,this.s);D(this,48);this.a-=11},function(){this.v&128&&(D(this,P(this)),this.a-=6);this.a-=5},function(){this.A=G(this)&65535;this.a-=5},function(){var a=O(this);this.v&128&&D(this,a);this.a-=10},function(){this.F|=512;this.a-=4;pc(this)},function(){var a=O(this);this.v&128&&(Q(this,this.s),D(this,a),this.a-=6);this.a-=11},uc,function(){J(this,N(this));
this.a-=7},function(){Q(this,this.s);D(this,56);this.a-=11}];function S(a){p.call(this,"ChipSet",a);var b=a.model;b&&!vc[b]&&fa("Unrecognized ChipSet model: "+b);this.b=vc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);z(this)}l(S,p);k=S.prototype;k.S=function(){return!1};
k.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;this.D=a;this.h=Ya(a,"Keyboard");this.g=Ya(a,"SerialPort");this.video=Ya(a,"Video");lb(b,this,this.b.fb);nb(b,this,this.b.gb)};k.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){this.b.INIT&&!this.restore(this.b.INIT)&&this.G("reset error")};
k.save=function(){var a=new E(this);switch(this.b.Y){case T.Y:a.set(0,[this.V,this.f,this.X,this.B,this.H,this.P,this.R]);break;case V.Y:a.set(0,[this.N,this.s]),a.set(1,[this.l,this.o]),a.set(2,[this.c,this.C,this.O,this.L]),a.set(3,[this.A,this.a,this.v,this.F,this.j])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.Y){case T.Y:return this.V=b[0],this.f=b[1],this.X=b[2],this.B=b[3],this.H=b[4],this.P=b[5],this.R=b[6],!0;case V.Y:return this.N=b[0],this.s=b[1],b=a[1],this.l=b[0],this.o=b[1],b=a[2],this.c=b[0],this.C=b[1],this.O=b[2],this.L=b[3],b=a[3],this.A=b[0],this.a=b[1],this.v=b[2],this.F=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.dd=function(){return this.V};k.ed=function(){return this.f};k.fd=function(){return this.X};
k.cd=function(){return this.B>>8-this.H&255};k.qd=function(a,b){this.H=b};k.sd=function(a,b){this.P=b};k.rd=function(a,b){this.B=b<<8|this.B>>8};k.td=function(a,b){this.R=b};k.ud=function(){};function wc(a){var b=0,c=0,d=~a.A;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.gd=function(){var a=this.s,a=a&~V.ga.Hb;if((Mb(this.m)&64)<<1&&(a|=V.ga.Hb,a!=this.s)){var b,c;b=this.v&1;switch(this.v>>1&7){case V.ia.Ca.kc:this.A=this.A<<1|b;break;case V.ia.Ca.pc:b=wc(this);this.j[b]=V.ia.Za;break;case V.ia.Ca.lc:this.a=this.a<<1|b;break;case V.ia.Ca.Pc:b=wc(this);c=this.a&V.ia.Za;this.j[b]=c;break;case V.ia.Ca.Kc:b=wc(this);c=this.j[b];null==c&&(c=V.ia.Za);this.a=c;break;case V.ia.Ca.Lc:this.a<<=1,this.F=this.a&V.ia.Za+1}}a&=~V.ga.Ib;this.F&&(a|=V.ga.Ib);a&=~V.ga.Cb;if(b=this.h){b=
this.h;if(c=b.h)c=b.m,c=Mb(b.m)>=b.o+c.na*c.O/1E3*1.2731488;c&&(b.h=!1);b=!b.h}b&&(a|=V.ga.Cb);a&=~V.ga.Qb;this.g&&this.g.T&xc&&(a|=V.ga.Qb);return this.s=a};k.vd=function(a,b){this.N=b};k.yd=function(a,b){this.v=b};k.xd=function(a,b){a=b&3;switch(b>>2&3){case 0:this.c=this.c&-4|a;break;case 1:this.c=this.c&-13|a<<2;this.video&&(b=this.video,a=this.c,b.la!==a&&((b.la=a)?Tb(b,!0):b.na=!0));break;case 2:switch(a){case 0:this.C=~this.C;break;case 2:case 3:this.O=3-a}break;case 3:this.L=a}};
k.wd=function(a,b){b&V.ua.Jc?(b&=V.ua.Mb,this.o!=b&&(this.o=b,this.video&&(this.video.bc=this.o==V.ua.Mb?50:60))):(b&=V.ua.ub,this.l!=b&&(this.l=b,this.video&&(a=this.video,b=this.l==V.ua.ub?132:80,a.C=b,a.M=a.va,80<b&&a.M--,yc(a)&&zc(a))))};
var T={Y:1978.1,Nc:{Z:0,Ce:1,Ge:16,Ne:32,We:64,Ve:128,Ja:14},za:{Z:1,oc:1,Ic:2,Ec:4,Fc:16,Gc:32,Hc:64,Ja:8},Oc:{Z:2,Be:3,ef:4,De:8,Re:16,Se:32,Te:64,Ee:128,Ja:0},$e:{Z:3},Ye:{Z:2,Oe:7},bf:{Z:3,ff:1,af:2,Ue:4,Le:8,Fe:16,Xd:32},Ze:{Z:4},cf:{Z:5,He:1,Ie:2,Je:4,Ke:8,gf:16}},V={Y:100,ga:{Z:66,Qb:1,Cc:2,Dc:4,Qe:8,Pe:16,Ib:32,Hb:64,Cb:128},nc:{Z:66,INIT:0},ua:{Z:194,$d:0,ub:16,Jc:32,Mb:48,sc:0,tc:32},Xa:{Z:162,Xe:0,vc:0,rc:0,uc:0,qc:0},ia:{Me:{Z:98},Ca:{lc:0,kc:1,Lc:2,Pc:4,pc:5,Kc:6,df:7},Za:16383}},vc=
{SI1978:T,VT100:V};T.INIT=[[T.Nc.Ja,T.za.Ja,T.Oc.Ja,0,0,0,0]];
V.INIT=[[V.nc.INIT,V.ga.Cc|V.ga.Dc],[V.ua.sc,V.ua.tc],[V.Xa.vc,V.Xa.rc,V.Xa.uc,V.Xa.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]]];T.fb={0:S.prototype.dd,1:S.prototype.ed,2:S.prototype.fd,3:S.prototype.cd};
T.gb={2:S.prototype.qd,3:S.prototype.sd,4:S.prototype.rd,5:S.prototype.td,6:S.prototype.ud};V.fb={66:S.prototype.gd};V.gb={66:S.prototype.vd,98:S.prototype.yd,162:S.prototype.xd,194:S.prototype.wd};Ma(function(){for(var a=x(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new S(d);ka(d,c)}});
function Ac(a){p.call(this,"ROM",a);this.a=null;this.g=a.addr;this.b=a.size;this.f=a.alias;this.c=a.file;this.h=sa(this.c);if(this.c){a=this.c;var b=ta(this.h);"json"!=b&&"hex"!=b&&(a=va()+"/api/v1/dump?file="+this.c+"&format=bytes&decimal=true");var c=this;Ca(a,null,!0,function(a,b,f){Bc(c,a,b,f)})}}l(Ac,p);Ac.prototype.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;Cc(this)};Ac.prototype.ca=function(){this.sa&&(this.J&&this.J.a(this.id,this.g,this.b,this.sa),delete this.sa);return!0};
Ac.prototype.ba=function(){return!0};
function Bc(a,b,c,d){if(d)a.G("Unable to load system ROM (error "+d+": "+b+")");else{ba(a.Ka,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.a=f;else if(g)for(a.a=Array(4*g.length),d=c=0;c<g.length;c++)a.a[d++]=g[c]&255,a.a[d++]=g[c]>>8&255,a.a[d++]=g[c]>>16&255,a.a[d++]=g[c]>>24&255;else a.a=e;a.sa=e.symbols;if(!a.a.length){t("Empty ROM: "+b);return}if(1==a.a.length){t(a.a[0]);return}}catch(h){a.G("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.a=Array(b.length),e=0;e<b.length;e++)a.a[e]=ra(b[e]);Cc(a)}}
function Cc(a){if(!pa(a))if(!a.c)z(a);else if(a.a&&a.u){a.b||(a.b=a.a.length);if(a.a.length!=a.b){var b="ROM size ("+A(a.a.length,8,!0)+") does not match specified size ("+A(a.b,8,!0)+")";a.i.error=!0;a.G(b)}else{b=a.g;if(bb(a.u,b,a.b,tb)){var c;for(c=0;c<a.a.length;c++)ib(a.u,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,g=d.b,h=[],m=d.g>>>f.b;0<g&&m<f.a.length;)h.push(f.a[m++]),g-=f.c;f=d.u;
d=d.b;g=0;for(e>>>=f.b;0<d&&e<f.a.length;){m=h[g++];if(!m)break;f.a[e++]=m;d-=f.c}}delete a.a}}z(a)}}Ma(function(){for(var a=x(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new Ac(d);ka(d,c)}});
function Dc(a){p.call(this,"RAM",a);this.sa=this.b=null;this.f=a.addr;this.g=a.size;this.Aa=a.load;this.ta=a.exec;this.c=!1;this.a=a.file;this.h=sa(this.a);if(this.a){a=this.a;var b=ta(this.h);"json"!=b&&"hex"!=b&&(a=va()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;Ca(a,null,!0,function(a,b,f){f?c.G("Unable to load RAM resource (error "+f+": "+a+")"):(ba(c.Ka,a,b),(a=Da(a,b))?(c.b=a.W,c.sa=a.sa,null==c.Aa&&(c.Aa=a.Aa),null==c.ta&&(c.ta=a.ta)):c.a=null,Ec(c))})}}l(Dc,p);
Dc.prototype.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;Ec(this)};Dc.prototype.ca=function(){return!0};Dc.prototype.ba=function(){return!0};
function Ec(a){!a.c&&a.g&&bb(a.u,a.f,a.g,1)&&(a.c=!0);if(!pa(a)){if(!a.c)t("No RAM allocated");else if(a.a){if(!a.b||!a.u)return;var b=a.f;null!==a.Aa&&(b=a.Aa);for(var c=0;c<a.b.length;c++)ib(a.u,b+c,a.b[c]);if(null!==a.ta){if(a.ta==Fc){for(c=0;c<Gc.length;c++)ib(a.u,Gc[c],118);Xb(a.m,function(a){return function(b){if(0<=Gc.indexOf(b)){var c=!1,d=a.m,e=a.J;if(b==Hc)switch(c=!0,d.c){case Ic:Jc(a,String.fromCharCode(d.f));break;case Kc:for(var m=dc(d),q="",w=255;w--;){var B=K(a.m,m++);if(36==B)break;
q+=String.fromCharCode(B)}Jc(a,q);break;default:c=!1}c?tc.call(d):e&&(a.aa("\nCP/M vector "+A(b,4,!0)),D(d,b),Ib(e));b=!0}else b=!1;return b}}(a))}$b(a.m,a.ta)}delete a.b}z(a)}}Dc.prototype.reset=function(){};function Jc(a,b){b=b.replace(/\r/g,"");a.pa&&(a.pa.value+=b,a.pa.scrollTop=a.pa.scrollHeight)}var Hc=5,Ic=2,Kc=9,Fc=256,Gc=[0,Hc];Ma(function(){for(var a=x(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new Dc(d);ka(d,c)}});
function Lc(a){p.call(this,"Keyboard",a);(a=a.model)&&!Mc[a]&&fa("Unrecognized Keyboard8080 model: "+a);this.a=Mc[a]||{};this.reset();z(this)}l(Lc,p);k=Lc.prototype;
k.S=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.w[e]){if("led"==a&&this.a.La[b])return this.w[e]=c,!0;switch(b){case "kbd":case "screen":return Ia("iOS")?(c.onkeypress=function(a){var b=!1;if(a=d.a.Wa[a.keyCode||a.charCode]){a&128&&(a&=127,b=!0);var c;a:{for(c in d.a.Da)if(d.a.Da[c]==a){c=+c;break a}c=0}c&&(b?Nc(d,16,!0,!0):Nc(d,16,!1),Nc(d,c,!0,!0))}return!0},c.onkeydown=function(a){return Oc(d,a,!0)},c.onkeyup=function(a){return Oc(d,a,!1)}):(c.onkeydown=function(a){return Pc(d,a,!0)},
c.onkeyup=function(a){return Pc(d,a,!1)},c.onkeypress=function(a){a=a.keyCode||a.charCode;a>=n.Ia&&a<=n.$a?d.b&(Qc|Rc)||(d.b|=Rc,Nc(d,20,!0),Sc(d)):a>=n.Wb&&a<=n.z&&d.b&Rc&&(d.b&=~Rc,Nc(d,20,!1),Sc(d));return!0}),c.onpaste=function(a){a:{if(d.g&&d.g.Ba&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Tc(d.g,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.a.Fa&&void 0!==this.a.Fa[b])return this.w[e]=c,c.onclick=
function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=0;17==b?e=Uc:20==b&&(e=Rc);if(e){c.style.fontWeight="normal";if(d=!(a.b&e))c.style.fontWeight="bold";Vc(a,b,d)}Nc(a,b,d,!e);a.D&&Nb(a.D)}}(this,this.a.Fa[b]),!0}}return!1};k.qa=function(a,b,c,d){this.D=a;this.m=c;this.J=d;var e=this;this.v=Ob(this.m,function(){Wc(e)});this.N=Ya(a,"ChipSet");this.g=Ya(a,"SerialPort");lb(b,this,this.a.fb);nb(b,this,this.a.gb)};
k.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){this.c=[];this.b=0;this.a.INIT&&!this.restore(this.a.INIT)&&this.G("reset error")};k.save=function(){var a=new E(this);switch(this.a.Y){case W.Y:a.set(0,[this.l,this.j,this.h,this.o,-1])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.a.Y){case Xc.Y:return!0;case W.Y:return this.l=b[0],Sc(this,this.l&W.fa.Db),this.j=b[1],this.h=b[2],this.o=b[3],this.f=b[4],!0}return!1};function Sc(a,b){var c;null!=b?a.s=b:b=a.s;for(var d in a.a.La)if(c="led-"+d,c=a.w[c]){var e=a.a.La[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+A(16711680,6):"#000000"}if(c=a.w["led-caps-lock"])c.style.backgroundColor=a.b&Rc?"#"+A(65280,6):"#000000"}
function Vc(a,b,c,d){var e=0;switch(b){case 16:e=d?Yc:Zc;break;case 17:e=d?ad:Uc;break;case 18:e=d?bd:cd;break;case 91:e=d?dd:ed;break;case 20:e=Rc,c=!(a.b&e)}e&&(a.b=c?a.b|e:a.b&~e);return c}
function Pc(a,b,c){var d=!0,e=b.keyCode,e=aa[e]||e;c=Vc(a,e,c,2==b.location);var f;a:if(e=a.a.rb[e]||e,a.a.Da[e])f=e;else{for(f in a.a.Fa)if(a.a.Fa[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.b&(fd|gd)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.b=c?a.b|gd:a.b&~gd)),d=Nc(a,f,c),(!(f>=n.Ia&&f<=n.$a)||a.b|hd)&&b.preventDefault&&b.preventDefault());return d}
function Oc(a,b,c){var d=!0;if(c){var e=b.keyCode,f=a.a.Da[e],g;if(g=f){a:{for(var h in a.a.Wa)if(a.a.Wa[h]==f){f=+h;break a}f=0}g=!f}g&&(d=Nc(a,e,c,!0),b.preventDefault&&b.preventDefault())}return d}
function Nc(a,b,c,d){var e;a:{for(e=0;e<a.c.length;e++)if(a.c[e].qb==b)break a;e=-1}if(c)0>e?a.c.push({qb:b,ob:Date.now(),cb:d||!1}):(a.c[e].ob=Date.now(),a.c[e].cb=d||!1),d&&Wc(a);else if(0<=e){if(!a.c[e].cb&&(d=a.c[e].ob)&&Date.now()-d<id)return a.c[e].cb=!0,Wc(a),!0;a.c.splice(e,1)}if(a.N){d=0;switch(b){case "1p":d=T.za.Ec;break;case "2p":d=T.za.Ic;break;case "coin":d=T.za.oc;break;case "left":d=T.za.Gc;break;case "right":d=T.za.Hc;break;case "fire":d=T.za.Fc}d&&(a=a.N,b=d,a.f&=~b,c&&(a.f|=b))}return!0}
function Wc(a){for(var b=0,c=-1;b<a.c.length;){if(a.c[b].cb){var d=a.c[b].qb,e=id-(Date.now()-a.c[b].ob);if(0<e){if(0>c||c>e)c=e}else{Nc(a,d,!1);b=0;continue}}b++}0<=c&&Pb(a.m,a.v,c)}k.hd=function(){var a=this.j;0<=this.f&&(this.f<this.c.length?(a=this.c[this.f],this.f++,a=W.Da[a.qb],a&128&&(a&=127)):(this.f=-1,a=W.wc),this.j=a,qc(this.m,1));return a};k.zd=function(a,b){this.l=b;this.h=!0;this.o=Mb(this.m);Sc(this,b&W.fa.Db);b&W.fa.Mc&&(this.f=0,qc(this.m,1))};
var Yc=1,Zc=2,Qc=3,ad=4,Uc=8,hd=12,bd=16,cd=32,fd=48,dd=64,ed=128,Rc=512,gd=4096,id=50,jd={};jd[n.Ia]=37;jd[n.kb]=39;jd[n.lb]=32;
var Xc={Y:1978.1,Da:{},Wa:{},rb:jd,La:{},Fa:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},X={},Y={},W={Y:100,Da:(X[8]=3,X[n.Kb]=5,X[n.Jb]=6,X[n.Vb]=7,X[n.Ob]=8,X[n.Sb]=9,X[n.Q]=10,X[39]=16,X[221]=20,X[219]=21,X[n.zb]=22,X[n.Pb]=23,X[n.Lb]=24,X[n.E]=25,X[49]=26,X[37]=32,X[40]=34,X[117]=35,X[19]=35,X[192]=36,X[189]=37,X[57]=38,X[55]=39,X[52]=40,X[51]=41,X[27]=42,X[38]=48,X[114]=49,X[112]=50,X[46]=51,X[187]=52,X[48]=53,X[56]=54,X[54]=55,X[53]=56,X[50]=57,X[9]=58,X[103]=64,X[115]=65,X[113]=66,X[96]=
67,X[118]=68,X[220]=69,X[n.lb]=70,X[n.Bb]=71,X[n.xb]=72,X[n.wb]=73,X[n.Ia]=74,X[104]=80,X[2013]=81,X[98]=82,X[97]=83,X[222]=85,X[186]=86,X[n.Ab]=87,X[n.yb]=88,X[n.kb]=89,X[n.Nb]=90,X[110]=96,X[116]=97,X[101]=98,X[100]=99,X[13]=100,X[190]=101,X[188]=102,X[n.Gb]=103,X[n.sb]=104,X[n.Ub]=105,X[119]=106,X[105]=112,X[99]=113,X[102]=114,X[109]=115,X[191]=117,X[n.Fb]=118,X[n[" "]]=119,X[n.Rb]=120,X[n.tb]=121,X[n.$a]=122,X[120]=123,X[17]=124,X[16]=125,X[20]=126,X),Wa:(Y[n.p]=5,Y[n.md]=6,Y[n.y]=7,Y[n.t]=8,
Y[n.Nd]=9,Y[n.q]=10,Y[n["]"]]=20,Y[n["["]]=21,Y[n.$c]=22,Y[n.Ld]=23,Y[n.r]=24,Y[n.e]=25,Y[n["1"]]=26,Y[n["`"]]=36,Y[n["-"]]=37,Y[n["9"]]=38,Y[n["7"]]=39,Y[n["4"]]=40,Y[n["3"]]=41,Y[n["="]]=52,Y[n["0"]]=53,Y[n["8"]]=54,Y[n["6"]]=55,Y[n["5"]]=56,Y[n["2"]]=57,Y[n["\\"]]=69,Y[n.kd]=70,Y[n.k]=71,Y[n.Yc]=72,Y[n.Xc]=73,Y[n.Wb]=74,Y[n["'"]]=85,Y[n[";"]]=86,Y[n.jd]=87,Y[n.Zc]=88,Y[n.d]=89,Y[n.Kd]=90,Y[13]=100,Y[n["."]]=101,Y[n[","]]=102,Y[n.n]=103,Y[n.Rc]=104,Y[n.x]=105,Y[n["/"]]=117,Y[n.ld]=118,Y[n.Md]=120,
Y[n.Tc]=121,Y[n.z]=122,Y[n.Kb]=133,Y[n.Jb]=134,Y[n.Vb]=135,Y[n.Ob]=136,Y[n.Sb]=137,Y[n.Q]=138,Y[n["}"]]=148,Y[n["{"]]=149,Y[n.zb]=150,Y[n.Pb]=151,Y[n.Lb]=152,Y[n.E]=153,Y[n["!"]]=154,Y[n["~"]]=164,Y[n._]=165,Y[n["("]]=166,Y[n["&"]]=167,Y[n.$]=168,Y[n["#"]]=169,Y[n["+"]]=180,Y[n[")"]]=181,Y[n["*"]]=182,Y[n["^"]]=183,Y[n["%"]]=184,Y[n["@"]]=185,Y[n["|"]]=197,Y[n.lb]=198,Y[n.Bb]=199,Y[n.xb]=200,Y[n.wb]=201,Y[n.Ia]=202,Y[n['"']]=213,Y[n[":"]]=214,Y[n.Ab]=215,Y[n.yb]=216,Y[n.kb]=217,Y[n.Nb]=218,Y[n[">"]]=
229,Y[n["<"]]=230,Y[n.Gb]=231,Y[n.sb]=232,Y[n.Ub]=233,Y[n["?"]]=245,Y[n.Fb]=246,Y[n.Rb]=248,Y[n.tb]=249,Y[n.$a]=250,Y),rb:{},La:{},Fa:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},mc:{Z:130,INIT:127},fa:{Z:130,Ac:1,zc:2,yc:4,xc:8,Bc:16,Eb:32,Db:63,Mc:64,Zd:128,INIT:0},wc:127};W.La={l4:W.fa.Ac,l3:W.fa.zc,l2:W.fa.yc,l1:W.fa.xc,locked:W.fa.Bc,local:W.fa.Eb,online:~W.fa.Eb,"caps-lock":Rc};var Mc={SI1978:Xc,VT100:W};
W.INIT=[[W.fa.INIT,W.mc.INIT,!1,0,-1]];W.fb={130:Lc.prototype.hd};W.gb={130:Lc.prototype.zd};Ma(function(){for(var a=x(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new Lc(d);ka(d,c)}});
function kd(a,b,c,d,e){p.call(this,"Video",a);var f=this;this.Ea=Ia("Gecko/");var g=["","moz","ms","webkit"];this.A=a.screenWidth;this.s=a.screenHeight;this.da=a.bufferAddr;this.Qc=a.bufferRAM;var h=a.bufferFormat;this.P=h&&ld[h.toUpperCase()]||md;this.C=a.bufferCols;this.R=a.bufferRows;this.va=this.M=a.cellWidth||1;this.K=a.cellHeight||1;this.V=null;this.ya=!1;this.ea=a.bufferBits||1;this.Sc=a.bufferLeft||0;if(this.b=a.bufferRotate)this.b=this.b%360,0<this.b&&(this.b-=360),-90!=this.b&&(this.G("unsupported buffer rotation: "+
this.b),this.b=0);this.ha=a.interruptRate;this.Pa=a.refreshRate||60;this.o=b;this.c=c;this.L=(this.Wc=d)||b||null;this.mb=this.A;this.jc=this.s;this.wa=this.A/this.C|0;this.xa=this.s/this.R|0;1<this.K&&(this.R++,this.la=0,this.na=!1);b=a.smoothing;(c=Ja("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.c[d]){this.c[d]=b;break}if(this.f=a.screenRotate)this.f=this.f%360,0<this.f&&(this.f-=360),-90!=this.f?(this.G("unsupported screen rotation: "+
this.f),this.f=0):(this.c.translate(0,this.s),this.c.rotate(this.f*Math.PI/180),this.c.scale(this.s/this.A,this.A/this.s));if(this.a=e)if(this.a.Ha=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.a.Ha){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){nd(f,!!(document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement))},!1);
break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){nd(f,null)},!1);break}}if(this.F=a.fontROM)"json"!=ta(this.F)&&(this.F=va()+"/api/v1/dump?file="+this.F+"&format=bytes"),Ca(this.F,null,!0,function(a,b,c){od(f,a,b,c)});this.ra={}}l(kd,p);
function yc(a){a.j=a.C*a.M;a.B=a.R*a.K;var b=a.j,c=a.B;a.b&&(b=a.B,c=a.j);a.v=0;if(!a.Qc&&(a.v=(a.j*a.ea>>3)*a.B,!bb(a.u,a.da,a.v,3)))return!1;a.v?(a.Ga=a.c.createImageData(b,c),a.Na=16/a.ea|0,pd(a,a.v>>1)):pd(a,(a.C+1)*a.R);a.l=document.createElement("canvas");a.l.width=b;a.l.height=c;a.ma=a.l.getContext("2d");a.H={};a.O=1<<a.ea;a.I=Array(a.O+qd);a.I[0]=[0,0,0,255];a.I[1]=[255,255,255,255];a.P==rd&&(a.I[a.O+sd]=[255,255,0,255],a.I[a.O+td]=[0,255,0,255]);a.P==ud&&(a.bc=60,a.oa=!1,a.X=Array(a.C));
return!0}k=kd.prototype;k.S=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.ra[b]=c,!0;switch(b){case "fullScreen":return this.w[b]=c,this.a&&this.a.Ha?c.onclick=function(){d.Ha()}:c.parentNode.removeChild(c),!0}return!1};
k.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;yc(this);if(this.h=Ya(a,"Keyboard")){for(var e in this.ra)this.h.S("led",e,this.ra[e]);this.o&&this.h.S(this.Wc?"textarea":"canvas","screen",this.L)}var f=this;this.Qa=Ob(this.m,function(){Tb(f)});Pb(this.m,this.Qa,1E3/Math.max(this.Pa,this.ha));this.Oa=0;this.F||z(this)};
function od(a,b,c,d){if(d)a.G("Unable to load font ROM (error "+d+": "+b+")");else{ba(a.Ka,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){t("Empty font ROM: "+b);return}if(1==f.length){t(f[0]);return}if(2048==f.length)a.V=f,zc(a);else{a.G("Unrecognized font data length ("+f.length+")");return}}catch(g){a.G("Font ROM data error: "+g.message);return}(a.c||a.J)&&z(a)}}
function zc(a){a.V&&(a.ya=a.P==ud,a.H[vd]=[wd(a,a.M,a.K),wd(a,a.M,a.K,a.oa)],a.H[xd]=[wd(a,2*a.M,a.K),wd(a,2*a.M,a.K,a.oa)],a.H[yd]=a.H[zd]=[wd(a,2*a.M,2*a.K),wd(a,2*a.M,2*a.K,a.oa)])}
function wd(a,b,c,d){var e=8>=a.va?8:16,f=8<e?15:0,g=a.V.length/e,h=!1===d,m={M:b,K:c};m.canvas=document.createElement("canvas");m.canvas.width=16*b;m.canvas.height=g/16*c;m.context=m.canvas.getContext("2d");for(var q=m.context.createImageData(b,c),w=0;w<g;w++){for(var B=0,L=B;B<a.K;B++)for(var y=w*e+(f+B&e-1),y=d&&8==B?255:a.V[y],v=0;v<c/a.K;v++){for(var F=0,U=0,Z=U;U<a.M;U++){for(var da=y&128>>(7<U?7:U),F=a.ya&&!da&&F?F:da,xa=0;xa<b/a.M;xa++)h&&(F=!F),Ad(a,q,Z,L,F?1:0),Z++;F=da}L++}m.context.putImageData(q,
(w&15)*b,(w>>4)*c)}return m}k.ca=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ba=function(a){return!a||this.save()};k.save=function(){var a=new E(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};
k.Ha=function(){var a=!1;if(this.a){if(this.a.Ha){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.A/this.s;b>c&&(a=Math.round(c/b*100)+"%")}this.Ea?(this.o.style.width=a,this.o.style.width=a,this.o.style.display="block",this.o.style.margin="auto"):(this.a.style.width=a,this.a.style.height="auto");this.a.style.backgroundColor="black";this.a.Ha();a=!0}this.L&&this.L.focus()}return a};
function nd(a,b){!b&&a.a&&(a.Ea?a.o.style.width=a.o.style.height="":a.a.style.width=a.a.style.height="")}function pd(a,b){a.Ma=b;a.N=!1;if(void 0===a.g||a.g.length!=a.Ma)a.g=Array(a.Ma)}function Ad(a,b,c,d,e){d=a.b?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.P==rd&&(208<=c&&236>c?e=a.O+sd:28<=c&&72>c&&(e=a.O+td));a=a.I[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 Tb(a,b){var c=!0;if(!b){a.ha&&(120==a.ha?a.Oa&1?(qc(a.m,2),c=!1):qc(a.m,1):qc(a.m,4));if(c&&a.N&&a.v){for(var d=a.u,e=a.v,f=!0,g=a.da>>>d.b;0<e&&g<d.a.length;)d.a[g].ja&&(d.a[g].ja=f=!1,d.a[g].Zb=!0),e-=d.c,g++;f&&(c=!1)}Pb(a.m,a.Qa,1E3/Math.max(a.Pa,a.ha));a.Oa++}if(c)if(1<a.M)switch(a.P){case ud:for(var c=a.da,d=-1,e=0,f=60==a.bc?2:5,h=g=0,m=-1;e<a.R;){var q=0,w=c,B=d,L=a.C;for(B!=vd&&(L>>=1);;){var y=gb(a.u,w++);if((y&Bd)==Bd){var v=gb(a.u,w++),d=v&Cd,c=(v&Dd)<<8|gb(a.u,w),c=c+(v&Ed?Fd:
Gd);break}if(q<L)a.X[q++]=y;else break}if(f)f--;else{for(;q<a.X.length;)a.X[q++]=0;if(0<=B)for(w=a.N&&a.g[g]==L,a.g[g++]=L,L=0;L<q;L++){y=a.X[L];if(!w||y!==a.g[g]){a.g[m=g]=y;var v=a,F=a.ma,U=y&127;if(y=v.H[B][y&128?1:0]){var Z=(U&15)*y.M,U=(U>>4)*y.K,da,xa,Va,mb,$c=y.M,Yb=y.K;F?(da=L*v.M,xa=e*v.K,Va=v.M,mb=v.K):(da=L*v.wa,xa=e*v.xa,Va=v.wa,mb=v.xa);y.M>v.M&&(da*=2,Va*=2);y.K>v.K&&(B==zd&&(U+=v.K),Yb=v.K);F?F.drawImage(y.canvas,Z,U,$c,Yb,da,xa,Va,mb):(da+=0,xa+=0,v.c.drawImage(y.canvas,Z,U,$c,Yb,
da,xa,Va,mb))}h++}g++}e++}}a.N=!0;!b&&a.na&&1==h&&(a.g[m]=-1,h=0);a.na=!1;(h||b)&&a.ma&&a.c.drawImage(a.l,0,a.la,a.j,a.B-a.K,0,0,a.mb,a.jc)}else{e=a.da;f=e+a.v;m=h=g=0;b=a.j;q=0;c=a.B;B=d=0;w=a.ea;L=(1<<w)-1;a.Sc&&(w=-w,B=16+w);for(;e<f;){v=a.u;F=e;y=F&v.f;Z=(F&v.g)>>>v.b;v=y!=v.f?v.a[Z].ec(y,F):v.a[Z++].hb(y,F)|v.a[Z&v.o].hb(0,F+1)<<8;if(a.N&&v===a.g[g])h+=a.Na;else{a.g[g]=v;(F=B)&&(v=v>>8|(v&255)<<8);h<b&&(b=h);for(y=a.Na;y--;)Z=v>>F&L,Ad(a,a.Ga,h++,m,Z),F+=w;h>q&&(q=h);m<c&&(c=m);m>=d&&(d=m+1)}e+=
2;g++;if(h>=a.j&&(h=0,m++,m>a.B))break}a.N=!0;b<a.j&&(e=q-b,d-=c,a.b&&(f=b,g=e,b=c,e=d,c=a.j-(f+g),d=g),a.ma.putImageData(a.Ga,0,0,b,c,e,d),a.c.drawImage(a.l,0,0,a.l.width,a.l.height,0,0,a.A,a.s))}}var sd=0,td=1,qd=2,md=0,rd=1,ud=2,ld={SI1978:rd,VT100:ud},vd=96,xd=64,yd=32,zd=0,Bd=127,Dd=15,Ed=16,Cd=96,Fd=8192,Gd=16384;
Ma(function(){for(var a=x(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=u(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||Ja("aspect"));f&&.3<=f&&3.33>=f&&(La("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");Ia("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new kd(d,e,g,f,c);ka(d,c)}});
function Hd(a){p.call(this,"SerialPort",a);this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.O=2;break;default:t("Unrecognized serial adapter #"+this.H);return}this.b=this.c=null;this.L=a.tabSize;this.F=a.charBOL;this.f=0;this.B=!1;this.l=!0;var b=a.binding;if("console"==b)this.c="";else{var c;a=Id;b&&(void 0===c&&(c="Panel"),(c=ja(c,this.id))&&(b=c.w[b])&&this.S(null,a,b))}this.g="";this.a=this.Ba=this.s=null;this.exports={connect:this.ac,receiveData:this.pb,receiveStatus:this.Jd}}l(Hd,p);
k=Hd.prototype;k.S=function(a,b,c,d){var e=this;switch(b){case Id:return this.w[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),Jd(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Jd(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.w[b]=c,c.onclick=function(){e.pb(d);return!0},!0}return!1};
k.qa=function(a,b,c,d){this.D=a;this.u=b;this.m=c;this.J=d;var e=this;this.P=Ob(this.m,function(){e.pb()});this.R=Ob(this.m,function(){Tc(e)});this.N=Ya(a,"ChipSet");lb(b,this,Kd,this.I);nb(b,this,Ld,this.I);z(this)};
k.ac=function(a){if(!this.a){var b=Eb(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=za(c[0]);if(d!=this.Ya)return;c=za(c[1]);if(this.a=ia(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.l);if(this.Ba=e.receiveData){this.l=a;this.s=e.receiveStatus;this.status("Connected "+this.Ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
k.ca=function(a,b){if(!b)if(this.ac(this.l),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){Md(this)};k.save=function(){var a=new E(this),b=0,c=[];c[b++]=this.o;c[b++]=this.A;c[b++]=this.C;c[b++]=this.T;c[b++]=this.h;c[b++]=this.j;c[b]=this.v;a.set(0,c);return a.data()};k.restore=function(a){return Md(this,a[0])};
function Md(a,b){var c=0;b||(b=Nd);a.o=b[c++];a.A=b[c++];a.C=b[c++];a.T=b[c++];a.h=b[c++];a.j=b[c++];a.v=b[c];return!0}function Od(a,b){var c=a.v&b;b&15||(c>>=4);b=Pd[c];c=((a.h&Qd)>>2)+6;a.h&Rd&&c++;c+=((a.h&Sd)>>6)+1>>1;return 1E3/Math.round(b/c)}function Jd(a,b){return a.B||a.T&Td?!1:(a.A=b,a.T|=Td,qc(a.m,a.O),!0)}
k.pb=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Jd(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.m&&Pb(this.m,this.P,Od(this,Ud)));return!0};k.Jd=function(a){this.T&=~Vd;a&64&&(this.T|=Vd)};function Tc(a,b){a.T=a.T|xc|Wd;b&&a.Ba&&a.Ba.call(a.a,b)}k.bd=function(){var a=this.A;this.T&=~Td;return a};k.ad=function(){return this.T};
k.pd=function(a,b){this.C=b;this.T&=~(xc|Wd);if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Ba&&this.Ba.call(this.a,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{var c;13!=b&&10!=b&&(c=Aa[b]);a=c=c?"<"+c+">":String.fromCharCode(b);c=a.length;9==b?(b=this.L||8,c=b-this.f%b,this.L&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.F&&!this.f&&c&&(a=String.fromCharCode(this.F)+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.aa(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.m&&Pb(this.m,this.R,Od(this,Xd))};k.od=function(a,b){this.o?(this.s&&(b^this.j)&(Yd|Zd)&&(a=0,this.l?(a|=b&Yd?32:0,a|=b&Zd?320:0):(a|=b&Yd?16:0,a|=b&Zd?1048576:0),this.s.call(this.a,a)),this.j=b,this.j&$d&&(this.o=!1)):(this.h=b,this.o=!0)};k.nd=function(a,b){this.v=b};
var Qd=12,Rd=16,Sd=192,Zd=2,Yd=32,$d=64,xc=1,Td=2,Wd=4,Vd=128,Ud=15,Xd=240,Pd=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Nd=[!1,0,0,133,142,39,238],Id="buffer",Kd={0:Hd.prototype.bd,1:Hd.prototype.ad},Ld={0:Hd.prototype.pd,1:Hd.prototype.od,2:Hd.prototype.nd};Ma(function(){for(var a=x(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new Hd(d);ka(d,c)}});
function ae(a,b,c){p.call(this,"Computer",a);this.i.U=!1;be(this,b);this.v=Eb(this,"autoPower",a);this.c=0;this.H=a.busWidth||a.buswidth;this.a=ce;this.o=null;this.j=this.C=!1;this.I=Eb(this,"url")||"";(Math.random()+.1).toString(36);this.b=de(this);if(this.m=ja("CPU",this.id)){this.J=ja("Debugger",this.id);this.g=[];for(b=null;b=Ya(this,"Video",b);)this.g.push(b);this.u=new $a({id:this.Ka+".bus",busWidth:this.H},this.m,this.J);var d,e=ha(this.id);if((this.h=ja("Panel",this.id))&&this.h.pa)for(b=
0;b<e.length;b++)d=e[b],d.G=this.h.G,d.aa=this.h.aa,d.pa=this.h.pa;this.aa("PC8080 v1.34.0\nCopyright \u00a9 2012-2017 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.u,this.m,this.J);b=null;d=Eb(this,"resume",a);void 0!==d&&(1<d.length?b=this.l=d:this.a=parseInt(d,10));var f;if(a=Eb(this,"state")||(f=!0,a.state))b=this.A=a,f||(this.j=!0,this.a=ce),this.a&&(this.s=new E(this,"1.34.0"),ee(this.s)?
b=null:delete this.s);!b&&this.a&&(b=fe(this))&&(this.j=!0);if(b){var g=this;Ca(b,null,!0,function(a,b,c){c?(g.l=null,g.j=!1,g.G("Unable to load machine state from server (error "+c+(b?": "+za(b):"")+")")):(g.o=b,g.C=!0);z(g)})}else z(this);this.w.power||(this.v=!0);!c&&this.v&&ge(this,this.Ta)}else t("Unable to find CPU component")}l(ae,p);function be(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.F=b}
function Eb(a,b,c){var d=b.toLowerCase(),d=Ja(b)||Ja(d);void 0===d&&a.F&&(d=a.F[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function ge(a,b,c){for(var d=ha(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!pa(f)){pa(f,function(){ge(a,b,c)});return}}b.call(a,c)}
function he(a,b){var c=new E(a,"1.34.0",ie);if(ee(c)&&je(c)){var d=c.get(ke),e=b?b.get(ke):"unknown";d!=e&&(a.G("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=ae.prototype;
k.Ta=function(a){void 0===a&&(a=this.a||(this.o?le:ce));if(!this.c){this.c++;var b=!1,c=!1;this.B=!1;var d=this.s||new E(this,"1.34.0");if(a==me)b=!0;else if(a>ce){if(ee(d,this.o)){this.f=new E(this,"1.34.0",ne);ee(this.f)&&(oe(this,d),a=pe,qe(this.f));this.f.set(ke,Ba());re(this.f);var e=this.a&&!this.j;if(a==le||ga("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=je(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?ee(d,g):("error"==f&&"no machine state"!=
g?(this.G("Error: "+g),"unable to verify user"==g&&(Ha(se,""),this.b=null)):this.aa(f+": "+g),qe(d),ee(d)?(c=je(d),e=!0):c=!1))}e&&he(this,c?d:null)}else a==pe&&d.clear()}else he(this);delete this.o;delete this.s}e=ha(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.m&&(c=te(this,g,d,b,c));b=[d,a,c];a!=me?ge(this,this.Yb,b):this.Yb(b)}};
function te(a,b,c,d,e){if(!b.i.U){b.i.U=!0;if(b.ca){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.ca(f,d)&&f&&(t("Unable to restore state for "+b.type),a.A&&!a.C?(c.clear(),a.a=ce,window&&window.location.reload()):a.B=!0,b.ca(null),e=!1)}if(!d&&b.Tb)for(a=b.Tb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.Yb=function(a){var b=a[0],c=0>a[1];a=a[2];this.N=!0;this.i.U=!0;var d=this.w.power;d&&(d.textContent="Shutdown");this.m&&(te(this,this.m,b,c,a),this.m.Sa());this.B&&(oe(this,b),b.clear());!c&&this.f&&(this.f.clear(),delete this.f);this.c=0};
function oe(a,b){if(ga("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.b||"";b=b.toString();var d={app:"PC8080",ver:"1.34.0"};d.url=a.I;d.user=c;d.type="bug";d.data=b;Ca("http://www.pcjs.org/api/v1/report",d,!0)}}
function ue(a,b,c){var d,e="none";if(a.c)return null;a.c--;var f=new E(a,"1.34.0"),g=new E(a,"1.34.0",ie),h=Ba();g.set(ke,h);f.set(ke,h);f.set(ve,"1.34.0");f.set(we,window?window.location.href:null);f.set(xe,window?window.navigator.userAgent:"");a.m&&a.m.ba&&(c&&Ib(a.m),d=a.m.ba(b,c),"object"===typeof d&&f.set(a.m.id,d),c&&(a.m.i.U=!1,!1===d&&(e=null)));for(var h=ha(a.id),m=0;m<h.length;m++){var q=h[m];q.i.U&&(q.ba&&(d=q.ba(b,c),"object"===typeof d&&f.set(q.id,d)),c&&(q.i.U=!1,!1===d&&(e=null)))}e&&
(c?(h=d=!1,b?(a.b&&ye(a,a.b,f.toString()),re(g)&&re(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==ze),d&&f.clear(h)):e=f.toString());c&&(a.i.U=!1,b=a.w.power)&&(b.textContent="Power");a.c=0;return e}k.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=ha(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=ha(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=ha(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.S=function(a,b,c){var d=this;switch(b){case "power":return this.w[b]=c,c.onclick=function(){d.c||(d.i.U?ue(d,!1,!0):ge(d,d.Ta))},!0;case "reset":return this.w[b]=c,c.onclick=function(){if(d.i.U&&!d.c)if(d.a&&!d.l){var a=ga("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ue(d,a,!0);!a&&d.A?window&&window.location.reload():d.Ta(ce)}else d.reset(),d.m&&d.m.Sa()},!0;case "save":if(ua())c.parentNode.removeChild(c);else return this.w[b]=
c,c.onclick=function(){var a=de(d,!0);if(a){var b=!!(d.a&&!d.l||d.A),c=ue(d,b);b?ye(d,a,c):d.G("Resume disabled, machine state not saved")}},!0}return!1};function de(a,b){var c=a.b;c||((c=Ga(se),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=Ae(a,c))||a.G("The user ID is invalid.")):b&&a.G("Browser local storage is not available"));return c}
function Ae(a,b){a.b=null;b=Ca(va()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ha(se,b.data),a.b=b.data)}catch(d){t(d.message+" ("+c+")")}return a.b}function fe(a){var b=null;a.b&&(b=va()+"/api/v1/user?req=load&user="+a.b+"&state="+Be(a,"1.34.0"));return b}
function ye(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Be(a,"1.34.0");d.data=c;b=Ca(va()+"/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.G("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.G(c),Ha(se,""),a.b=null)}}
function Ya(a,b,c){a=ha(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 Nb(a,b){if(a.g.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.g[0];a.L&&a.L.focus();!b&&window&&window.scrollTo(c,d)}}
function Rb(a,b){a.m&&(a=a.m,a.Oa&&(b||!a.i.ka||a.i.Xb)&&(R(a,"A",a.b),R(a,"B",a.g),R(a,"C",a.c),R(a,"BC",bc(a),4),R(a,"D",a.h),R(a,"E",a.f),R(a,"DE",dc(a),4),R(a,"H",a.j),R(a,"L",a.l),R(a,"HL",G(a),4),R(a,"SP",a.A,4),R(a,"PC",a.s,4),b=ac(a),R(a,"PS",b,4),R(a,"IF",b&512?1:0,1),R(a,"SF",b&128?1:0,1),R(a,"ZF",b&64?1:0,1),R(a,"AF",b&16?1:0,1),R(a,"PF",b&4?1:0,1),R(a,"CF",b&1?1:0,1)),b=a.w.speed)&&(b.textContent=a.i.ka&&a.R?a.R.toFixed(2)+"Mhz":"Stopped")}
var ne="failsafe",ie="validate",ke="timestamp",ve="version",we="url",xe="browser",se="user",me=-1,ce=0,le=1,pe=2,ze=3;Ma(function(){for(var a=x(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=u(c),c=x(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=u(f),g=new ae(g,d,!0);ka(g,f);g.v&&ge(g,g.Ta)}});Na.show.push(function(){for(var a=x(document,"pc8080","computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=ja("Computer",c.id))&&c.N&&!c.i.U&&c.Ta(me)}});
Na.exit.push(function(){for(var a=x(document,"pc8080","computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=ja("Computer",c.id))&&c.i.U&&ue(c,!(!c.a||c.l),!0)}});function E(a,b,c){this.id=a.id;this.J=a.J;this.b="";this.a={};this.m=this.u=!1;this.key=Be(a,b,c);qe(this,a.Uc)}k=E.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};
function ee(a,b){return b?(a.b=b,a.m=!0,a.u=!1,!0):a.m?!0:Ea()&&(b=Ga(a.key))?(a.b=b,a.m=!0):!1}function je(a){var b=!0;if(!a.u)try{a.a=JSON.parse(a.b),a.u=!0}catch(c){t(c.message||c),b=!1}return b}function re(a){var b=!0;if(Ea()){var c=JSON.stringify(a.a);Ha(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.b};function qe(a,b){a.b="";a.a={};a.m=a.u=!1;b&&a.set("parms",b)}
k.clear=function(a){qe(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 Be(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}var Ce=0;
function De(a,b,c,d,e,f){e("Loading "+a+"...");Ca(a,null,!0,function(g,h,m){m?(h||(h="unable to load "+a+" ("+m+")"),f(h,null)):Ee(h,a,b,c,d,e,f)})}
function Ee(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(ba(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(w){f=null,a=w.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?Fe(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function Fe(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ca(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 m=h[0],q,w=/( [a-z]+=)(['"])(.*?)\2/g;q=w.exec(f);)m=0>m.indexOf(q[1])?m.replace(">",q[0]+">"):m.replace(new RegExp(q[1]+"(['\"])(.*?)\\1"),q[0]);h[0]!=m&&(g=g.replace(h[0],m))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);Fe(a,b,c)}})}else c(a,null)}
function Ge(a,b,c,d){function e(a){if(void 0===h){var b=g&&x(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=wa(a))}function f(a){e("Error: "+a);m&&(--Ce||Qa(!0));m=!1}var g,h,m=!0;Ce++;ca[a]={};try{if(g=document.getElementById(a)){var q;if("object"==typeof resources&&(q=resources.css)){var w=document.head||document.getElementsByTagName("head")[0],B=document.createElement("style");B.type="text/css";B.styleSheet?B.styleSheet.cssText=q:B.appendChild(document.createTextNode(q));w.appendChild(B)}c||
(c="/versions/pc8080/1.34.0/components.xsl");q=function(d,h){h?De(c,null,null,!1,e,function(d,m){m?(ba(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(m=h.transformNode(m))?(g.outerHTML=m,--Ce||Qa(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(m),(m=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--Ce||Qa(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?De(b,a,d,!0,e,q):Ee(b,null,a,d,!1,e,q)}else f("missing machine element: "+a)}catch(L){f(L.message)}return m}window.embedPC8080=function(a,b,c,d){Qa(!1);return Ge(a,b,c,d)};window.findMachineComponent=function(a,b){return ja(b,a+".machine")};
window.processMachineScript=function(a,b,c){b=!1;if("string"==typeof c){b=!0;for(var d=c.length,e=[],f=[],g="",h=null,m=0;m<d;m++){var q=c[m];if('"'==q||"'"==q)h&&q!=h?g+=q:(h?h=null:h=q,g&&(f.push(g),g=""));else{if(!h){if("\r"==q||"\n"==q)q=";";if(" "==q||"\t"==q||";"==q){g&&(f.push(g),g="");";"==q&&f.length&&(e.push(f),f=[]);continue}}g+=q}}f.length&&e.push(f);la(a+".machine",e,0)||(b=!1)}return b};window.enableEvents=Qa;window.sendEvent=Sa;})();