Merged with master

This commit is contained in:
Jeff Parsons 2016-08-19 08:44:28 -07:00
commit 8dcc9df293
293 changed files with 14086 additions and 4715 deletions

View file

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

View file

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

View file

@ -0,0 +1,159 @@
@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: 19px;
vertical-align: middle;
float: left;
font-family: "Lucida Console", monospace;
}
.pcjs-controls textarea {
font-family: Monaco, monospace;
font-size: x-small;
}
.pcjs-fieldset {
border: none;
margin: 0;
padding: 0;
}
.pcjs-flag {
font-family: "Lucida Console", monospace;
font-size: small;
text-align: center;
line-height: 19px;
vertical-align: middle;
}
.pcjs-register {
font-family: "Lucida Console", monospace;
font-size: small;
text-align: center;
line-height: 19px;
vertical-align: middle;
border: 1px solid black;
}
.pcjs-switches {
float: left;
}
.pcjs-bitBucket {
float: left;
width: 19px;
height: 38px;
}
.pcjs-bitCell {
float: left;
width: 19px;
height: 19px;
margin-right: -1px;
margin-bottom: -1px;
border: 1px solid black;
text-align: center;
line-height: 19px;
}
.pcjs-bitCellLeft {
border-left: 1px solid black;
}
.pcjs-bitLabel {
font-size: xx-small;
text-align: center;
}
.pcjs-description, .pcjs-status {
font-size: x-small;
line-height: 2em;
}
.pcjs-key {
border: 1px solid black;
font-size: x-small;
text-align: center;
position: absolute;
height: 34px;
line-height: 34px;
background-color: #ffffff;
}
.pcjs-led {
float: left;
width: 8px;
height: 8px;
margin: 4px;
border: 1px solid black;
text-align: center;
line-height: 19px;
background-color: #000000;
}
.pcjs-rled {
float: left;
width: 8px;
height: 8px;
margin: 4px;
border: 1px solid black;
border-radius: 50%;
text-align: center;
line-height: 19px;
background-color: #000000;
}
.pcjs-screen {
clear: both;
height: auto;
position: relative;
line-height: 0;
}
.pcjs-screen textarea {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
opacity: 0;
border: 0;
padding: 0;
line-height: 0;
}
.pcjs-reference {
float: left;
font-size: x-small;
}
.pcjs-reference a {
text-decoration: none;
}
.pcjs-copyright {
float: right;
font-size: x-small;
}
.pcjs-copyright a {
text-decoration: none;
}
@media screen and (max-width: 900px) {
.pcjs-textarea {
width: 100% !important;
}
.pcjs-registers {
width: 100% !important;
}
}

File diff suppressed because it is too large Load diff

View file

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

View file

@ -0,0 +1,452 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY ne "&#8800;"> <!ENTITY le "&#8804;"> <!ENTITY ge "&#8805;">
<!ENTITY times "&#215;"> <!ENTITY sdot "&#8901;"> <!ENTITY divide "&#247;">
<!ENTITY copy "&#169;"> <!ENTITY Sigma "&#931;"> <!ENTITY sigma "&#963;"> <!ENTITY sum "&#8721;"> <!ENTITY lbrace "&#123;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template name="documentStyles">
<link rel="stylesheet" type="text/css" href="/versions/pc8080/1.24.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,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY sect "&#167;"> <!ENTITY copy "&#169;"> <!ENTITY para "&#182;"> <!ENTITY ndash "&#8211;"> <!ENTITY mdash "&#8212;">
<!ENTITY lsquo "&#8216;"> <!ENTITY rsquo "&#8217;"> <!ENTITY ldquo "&#8220;"> <!ENTITY rdquo "&#8221;"> <!ENTITY dagger "&#8224;"> <!ENTITY Dagger "&#8225;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-system="about:legacy-compat" method="html"/>
<xsl:include href="/versions/pc8080/1.24.0/common.xsl"/>
<xsl:include href="/versions/pc8080/1.24.0/components.xsl"/>
<xsl:template match="/machine">
<html lang="en">
<head>
<title><xsl:value-of select="$SITEHOST"/></title>
<xsl:call-template name="commonStyles"/>
<xsl:call-template name="componentStyles"/>
</head>
<body>
<div class="common">
<xsl:call-template name="commonTop"/>
<div class="common-middle">
<p></p>
<div id="{@id}" class="machine {@class}js">
<xsl:call-template name="component">
<xsl:with-param name="machine" select="@id"/>
<xsl:with-param name="component" select="'machine'"/>
<xsl:with-param name="class"><xsl:value-of select="@class"/>js</xsl:with-param>
<xsl:with-param name="parms"><xsl:if test="@parms">,<xsl:value-of select="@parms"/></xsl:if></xsl:with-param>
</xsl:call-template>
</div>
</div>
<xsl:call-template name="commonBottom"/>
</div>
<xsl:call-template name="componentScripts">
<xsl:with-param name="component">
<xsl:choose>
<xsl:when test="debugger"><xsl:value-of select="@class"/>-dbg</xsl:when>
<xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View file

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

View file

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

View file

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