Merge branch 'next-release'

This commit is contained in:
Jeff Parsons 2016-12-03 16:56:39 -08:00
commit a7185e660a
331 changed files with 14872 additions and 493 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 {
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,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY ne "&#8800;"> <!ENTITY le "&#8804;"> <!ENTITY ge "&#8805;">
<!ENTITY times "&#215;"> <!ENTITY sdot "&#8901;"> <!ENTITY divide "&#247;">
<!ENTITY copy "&#169;"> <!ENTITY Sigma "&#931;"> <!ENTITY sigma "&#963;"> <!ENTITY sum "&#8721;"> <!ENTITY lbrace "&#123;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template name="commonStyles">
<meta charset="utf-8"/>
<link rel="apple-touch-icon" sizes="57x57" href="/versions/icons/current/pc-icon-57.png"/>
<link rel="apple-touch-icon" sizes="72x72" href="/versions/icons/current/pc-icon-72.png"/>
<link rel="apple-touch-icon" sizes="76x76" href="/versions/icons/current/pc-icon-76.png"/>
<link rel="apple-touch-icon" sizes="114x114" href="/versions/icons/current/pc-icon-114.png"/>
<link rel="apple-touch-icon" sizes="120x120" href="/versions/icons/current/pc-icon-120.png"/>
<link rel="apple-touch-icon" sizes="144x144" href="/versions/icons/current/pc-icon-144.png"/>
<link rel="apple-touch-icon" sizes="152x152" href="/versions/icons/current/pc-icon-152.png"/>
<link rel="apple-touch-icon" sizes="180x180" href="/versions/icons/current/pc-icon-180.png"/>
<link rel="apple-touch-icon" sizes="192x192" href="/versions/icons/current/pc-icon-192.png"/>
<link rel="apple-touch-icon" href="/versions/icons/current/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="192x192" href="/versions/icons/current/pc-icon-192.png"/>
<link rel="shortcut icon" type="image/x-icon" href="/versions/icons/current/favicon.ico"/>
<link rel="stylesheet" type="text/css" href="/versions/pc8080/1.30.6/common.css"/>
</xsl:template>
<xsl:template name="commonTop">
<div class="common-top">
<div class="common-top-left">
<ul>
<li><a href="/">PCjs</a></li>
<li><a href="/devices/">Devices</a></li>
<li><a href="/docs/">Docs</a></li>
<li><a href="/apps/">Software</a></li>
<li><a href="/docs/about/">About</a></li>
</ul>
</div>
<div class="common-top-right">
<p>Powered by <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript">JavaScript</a>, <a href="http://vanilla-js.com/" target="_blank">Vanilla JS</a>, and <a href="http://github.com/jeffpar/pcjs" target="_blank">GitHub</a></p>
</div>
</div>
</xsl:template>
<xsl:template name="commonBottom">
<div class="common-bottom">
<p class="common-reference"></p>
<p class="common-copyright">
<span class="common-copyright"><a href="http://www.pcjs.org/">pcjs.org</a> © 2012-2016 by <a href="http://twitter.com/jeffpar">@jeffpar</a></span><br/>
<span class="common-copyright"><a href="http://github.com/jeffpar/pcjs">PCjs Project</a> released under <a href="http://gnu.org/licenses/gpl.html">GPLv3</a></span>
</p>
</div>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,259 @@
@CHARSET "UTF-8";
*:not(input,textarea) {
-webkit-user-select: none;
}
.pcjs-embed {
}
.pcjs-embed:after {
clear:both;
}
.pcjs-machine {
}
.pcjs-name, .pcjs-menu {
clear: both;
font-weight: bold;
padding-bottom: 4px;
}
.pcjs-menu {
float: left;
}
.pcjs-canvas {
width: 100%;
height: auto;
}
.pcjs-container {
color: #000000;
position: relative;
}
.pcjs-label {
font-size: small;
line-height: 20px;
vertical-align: middle;
float: left;
font-family: Monaco, "Lucida Console", monospace;
}
.pcjs-controls textarea {
font-family: Monaco, "Lucida Console", monospace;
font-size: x-small;
}
.pcjs-fieldset {
border: none;
margin: 0;
padding: 0;
}
.pcjs-flag {
font-family: Monaco, "Lucida Console", monospace;
font-size: small;
text-align: center;
line-height: 20px;
vertical-align: middle;
}
.pcjs-progress {
height: 20px;
width: 200px;
margin-top: 8px;
border: 1px solid black;
position: relative;
}
.pcjs-progress-bar {
height: 20px;
width: 0;
background-color: gold;
position: absolute;
top: 0;
}
.pcjs-progress-text {
height: 20px;
width: 200px;
font-size: small;
line-height: 20px;
text-align: center;
position: absolute;
top: 0;
z-index: 1;
}
.pcjs-register {
font-family: Monaco, "Lucida Console", monospace;
font-size: small;
text-align: center;
line-height: 20px;
vertical-align: middle;
border: 1px solid black;
}
.pcjs-switches {
float: left;
}
.pcjs-bitBucket {
float: left;
width: 19px;
height: 38px;
}
.pcjs-bitCell {
float: left;
width: 19px;
height: 19px;
margin-right: -1px;
margin-bottom: -1px;
border: 1px solid black;
text-align: center;
line-height: 19px;
}
.pcjs-bitCellLeft {
border-left: 1px solid black;
}
.pcjs-bitLabel {
font-size: xx-small;
text-align: center;
}
.pcjs-description, .pcjs-status {
font-size: x-small;
line-height: 2.8em;
}
.pcjs-key {
border: 1px solid black;
font-size: x-small;
text-align: center;
position: absolute;
height: 34px;
line-height: 34px;
background-color: #ffffff;
}
.pcjs-panel-group {
color: #ffffff;
background-color: #404040;
}
.pcjs-triplet {
padding: 1px;
}
.pcjs-ledlbl {
text-align: center;
font-size: 40%;
background-color: #000000;
}
.pcjs-ledlbl0 {
text-align: right;
font-size: 50%;
background-color: #8d4076;
}
.pcjs-ledlbl1 {
text-align: right;
font-size: 50%;
background-color: #d83662;
}
.pcjs-ledpad {
text-align: center;
font-size: x-small;
line-height: 32px;
background-color: #000000;
border-bottom-left-radius: 20%;
border-bottom-right-radius: 20%;
}
.pcjs-led {
float: left;
width: 8px;
height: 8px;
margin: 4px;
border: 1px solid black;
text-align: center;
vertical-align: middle;
background-color: #000000;
}
.pcjs-rled {
float: left;
width: 8px;
height: 8px;
margin: 4px;
border: 1px solid black;
border-radius: 50%;
text-align: center;
vertical-align: middle;
background-color: #ff0000;
max-width: 50%;
max-height: 50%;
}
.pcjs-swlbl {
text-align: center;
font-size: 40%;
line-height: 16px;
background-color: #000000;
border-top-left-radius: 20%;
border-top-right-radius: 20%;
}
.pcjs-swpad {
height: 32px;
background-color: #000000;
}
.pcjs-switch {
height: 10px;
width: 28px;
margin-top: 0;
max-width: 90%;
background-color: #00ff00;
}
.pcjs-screen {
clear: both;
height: auto;
position: relative;
line-height: 0;
}
.pcjs-screen textarea {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
opacity: 0;
border: 0;
padding: 0;
line-height: 0;
}
.pcjs-reference {
float: left;
font-size: x-small;
}
.pcjs-reference a {
text-decoration: none;
}
.pcjs-copyright {
float: right;
font-size: x-small;
}
.pcjs-copyright a {
text-decoration: none;
}
@media screen and (max-width: 800px) {
.pcjs-textarea {
width: 100% !important;
}
.pcjs-registers {
width: 100% !important;
max-width: none !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
.pdp11-device {
width: 98% !important;
max-width: none !important;
margin-left: 8px !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
}
@media screen and (min-width: 1200px) {
.machine-left {
max-width: 48%;
float: left;
}
.machine-right {
max-width: 48%;
float: left;
margin-left: 30px;
}
.machine-right + * {
clear: both;
}
}

File diff suppressed because it is too large Load diff

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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