Get next-release back in sync with master

This commit is contained in:
Jeff Parsons 2016-07-27 12:59:55 -07:00 committed by Jeff Parsons
commit 23231093d1
36 changed files with 9350 additions and 3 deletions

View file

@ -240,7 +240,7 @@
<xsl:when test="$url != ''"><div class="{$CSSCLASS}-reference">[<a href="{$url}">XML</a>]</div></xsl:when>
<xsl:otherwise/>
</xsl:choose>
<xsl:if test="$APPCLASS = 'pcjs'"><div class="{$CSSCLASS}-reference" style="padding-left:8px">[<a href="#" onclick="savePC('{$machine}'); return false;">Save Machine</a>]</div></xsl:if>
<xsl:if test="$APPCLASS = 'pcx86'"><div class="{$CSSCLASS}-reference" style="padding-left:8px">[<a href="#" onclick="savePC('{$machine}'); return false;">Save Machine</a>]</div></xsl:if>
<div class="{$CSSCLASS}-copyright">
<a href="http://{$SITEHOST}" target="_blank"><xsl:value-of select="$APPNAME"/></a> v<xsl:value-of select="$APPVERSION"/> © 2012-2016 by <a href="http://twitter.com/jeffpar" target="_blank">@jeffpar</a>
</div>

View file

@ -211,4 +211,4 @@ function Tf(a,b,c,d){if(!c&&b){d.push(b);a=Xa[d[0]];b=null;for(var e in a)if(da(
function Uf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Xa[f],l={},k;for(k in g){var n=g[k],p=ca(k);if("xml"==p){for(p=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=p.exec(g[k]);){var x=d[2];x&&(g[x]||(n=n.replace(d[0],"")))}d=k=ba(k)}else"xsl"==p&&(e=k=ba(k));l[k]=n}a&&(l[k="css"]=a);b[2]&&(l[k="parms"]=b[2]);b[3]&&(l[k="state"]=b[3]);d&&e?(k=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+k+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),k=h,g=null,l="data:application/javascript,",l=wa("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),k&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=l,g.download=k,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+k+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(k?" ("+k+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",t(c)):t("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=$a("Computer",a),e=$a("Debugger",a);if(d){var f=jf(d,!0),h=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcjs/1.23.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Sb:h}))return!0;oa(b,null,!0,function(c,d,e){Tf(c,d,e,[a,ba(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=$a("Computer",a),e=$a("Debugger",a);if(d){var f=jf(d,!0),h=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcx86/1.23.0/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,Sb:h}))return!0;oa(b,null,!0,function(c,d,e){Tf(c,d,e,[a,ba(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})();

View file

@ -134,4 +134,4 @@ function Lc(a,b,c,d){if(!c&&b){d.push(b);a=Ga[d[0]];b=null;for(var e in a)if(fa(
function Mc(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Ga[f],l={},k;for(k in g){var t=g[k],q=ea(k);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(g[k]);){var ja=d[2];ja&&(g[ja]||(t=t.replace(d[0],"")))}d=k=da(k)}else"xsl"==q&&(e=k=da(k));l[k]=t}a&&(l[k="css"]=a);b[2]&&(l[k="parms"]=b[2]);b[3]&&(l[k="state"]=b[3]);d&&e?(k=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+k+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),k=h,g=null,l="data:application/javascript,",l=ra("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),k&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=l,g.download=k,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+k+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(k?" ("+k+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",r(c)):r("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=Ia("Computer",a),e=Ia("Debugger",a);if(d){var f=Cc(d,!0),h=d.m?JSON.stringify(d.m):null;b||(b="/versions/pcjs/1.23.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,$a:h}))return!0;p(b,null,!0,function(c,d,e){Lc(c,d,e,[a,da(b,!0),h,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=Ia("Computer",a),e=Ia("Debugger",a);if(d){var f=Cc(d,!0),h=d.m?JSON.stringify(d.m):null;b||(b="/versions/pcx86/1.23.0/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,$a:h}))return!0;p(b,null,!0,function(c,d,e){Lc(c,d,e,[a,da(b,!0),h,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();

View file

@ -0,0 +1,262 @@
@CHARSET "UTF-8";
/**
@author Jeff Parsons (@jeffpar)
@website http://www.pcjs.org/
@created 2013-05-05
@modified 2014-02-23
@license http://www.gnu.org/licenses/gpl.html
*/
body {
margin: 0;
background: #202020;
}
h1, h2 {
margin-top: 0;
color: #cccccc;
}
h1, h2, h3, h4 {
word-wrap: break-word;
}
h4 a {
color: #cccccc !important;
}
p {
line-height: 1.5em;
}
img {
max-width: 100%;
}
a img {
vertical-align: bottom;
}
pre, code {
color: #000000;
background-color: #cccccc;
font-family: Monaco, Consolas, "Lucida Console", monospace;
font-size: 12px;
}
pre {
margin: 1em 2em;
padding: 1em;
border-radius: 5px;
overflow: auto;
}
code {
padding: 1px;
}
pre a, code a {
color: #006400 !important;
}
.common {
width: 100%;
margin: 0 auto;
color: #cccccc;
}
.common a {
color: #7fc07f;
text-decoration: none;
}
.common hr {
border-color: #808080;
}
.common a:hover {
text-decoration: underline;
}
.common, .machine {
font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
font-size: 15px;
}
.machine {
margin: 15px;
overflow: hidden;
}
.c1pjs {
overflow: visible;
}
.machine-placeholder {
text-align: center;
font-weight: bold;
}
.common-top {
background: #202020;
font-size: small;
}
.common-top-left {
float: left;
width: 60%;
}
.common-top-left ul {
line-height: 1.5em;
list-style-type: none;
margin: 0;
padding: 1em 1em 1em 9px;
overflow: hidden;
}
.common-top-left ul li {
display: block;
float: left;
}
.common-top-left ul li a {
border-right: 1px solid #6f6f6f;
padding: 2px 6px 2px 6px;
}
.common-top-left ul li:last-child a {
border-right: none;
}
.common-top-right {
float: right;
width: 40%;
}
.common-top-right p {
float: right;
margin: 0;
padding: 1em;
}
.common-middle {
clear: both;
padding: 1px 1em 1px 1em;
background: #404040;
}
.common-sidebar {
float: left;
font-size: small;
width: 140px;
padding-bottom: 20px;
overflow: hidden;
white-space: nowrap;
word-wrap: break-word;
}
.common-list {
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
padding-left: 0;
}
.common-list li {
padding-bottom: 7px;
}
.common-list-data {
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
padding-left: 0;
}
.common-list-data li {
line-height: 1.5em;
}
.common-list-data-items, .common-list-data-subitems {
font-size: x-small;
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
padding-left: 2em;
}
.common-list-data-items li, .common-list-data-subitems li {
padding-bottom: 0;
}
.common-main {
margin-left: 150px;
}
.common-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,59 @@
<?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.23.2/common.css"/>
</xsl:template>
<xsl:template name="commonTop">
<div class="common-top">
<div class="common-top-left">
<ul>
<li><a href="/">PCjs</a></li>
<li><a href="/apps/pcx86/">Demos</a></li>
<li><a href="/devices/">Devices</a></li>
<li><a href="/disks/pcx86/">Disks</a></li>
<li><a href="/docs/">Docs</a></li>
<li><a href="/pubs/">Pubs</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/docs/about/">About</a></li>
</ul>
</div>
<div class="common-top-right">
<p>Powered by JavaScript and <a href="http://github.com/jeffpar/pcjs" target="_blank">GitHub</a></p>
</div>
</div>
</xsl:template>
<xsl:template name="commonBottom">
<div class="common-bottom">
<p class="common-reference"></p>
<p class="common-copyright">
<span class="common-copyright"><a href="http://www.pcjs.org/">pcjs.org</a> website © 2012-2016 by <a href="http://twitter.com/jeffpar">@jeffpar</a></span><br/>
<span class="common-copyright">PCjs and C1Pjs released under <a href="http://gnu.org/licenses/gpl.html">GPL version 3 or later</a></span>
</p>
</div>
</xsl:template>
</xsl:stylesheet>

View file

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

File diff suppressed because it is too large Load diff

View file

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

View file

@ -0,0 +1,452 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "&#160;"> <!ENTITY ne "&#8800;"> <!ENTITY le "&#8804;"> <!ENTITY ge "&#8805;">
<!ENTITY times "&#215;"> <!ENTITY sdot "&#8901;"> <!ENTITY divide "&#247;">
<!ENTITY copy "&#169;"> <!ENTITY Sigma "&#931;"> <!ENTITY sigma "&#963;"> <!ENTITY sum "&#8721;"> <!ENTITY lbrace "&#123;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template name="documentStyles">
<link rel="stylesheet" type="text/css" href="/versions/pc8080/1.23.2/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.23.2/common.xsl"/>
<xsl:include href="/versions/pc8080/1.23.2/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.23.2/common.xsl"/>
<xsl:include href="/versions/pc8080/1.23.2/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.23.2/common.xsl"/>
<xsl:include href="/versions/pc8080/1.23.2/document.xsl"/>
<xsl:include href="/versions/pc8080/1.23.2/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,216 @@
(function(){var m;function aa(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
function q(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function r(a){return"0x"+q(a,4)}function ba(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}function ca(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function da(a,b){return-1!==a.indexOf(b,a.length-b.length)}var fa={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ga(a){return a.replace(/[&<>"']/g,function(a){return fa[a]})}function ha(a,b){return(a+" ").slice(0,b)}function ia(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
function ja(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var 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 na(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 oa(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"==
typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function pa(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function qa(){return window?window.navigator.userAgent:""}function t(a){window&&window.alert(a)}function ra(a){var b=!1;window&&(b=window.confirm(a));return b}var sa=null;function ta(){if(null==sa){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}sa=a}return sa}
function ua(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function va(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function wa(a){if(window){var b=qa();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ba(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Ca(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Da={init:[],show:[],exit:[]},Ea=!1,Fa=!0;function Ga(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ja(a){Da.init.push(a)}
function Ka(a){if(Fa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function La(a){!Fa&&a?(Fa=!0,Ea&&Oa("init")):Fa=a}function Oa(a){Da[a]&&Ka(Da[a])}Ga("onload",function(){Ea=!0;Ka(Da.init)});Ga("onpageshow",function(){Ka(Da.show)});Ga(wa("Opera")||wa("iOS")?"onunload":"onbeforeunload",function(){Ka(Da.exit)});
function v(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Hb=b.comment;this.Tb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Jb=this.id.substr(0,b),this.fb=this.id.substr(b+1)):this.fb=this.id;this[a]=c;this.A={Ua:!1,Ra:!1,zb:!1,ka:!1,Ta:!1};this.ub=null;this.A.Ta=!1;this.K={};this.G=null;this.ha=d||0;Pa.push(this)}var Qa=void 0,Ra={};
if(window){Qa||(Qa=window.location.search.substr(1));for(var Sa,Ta=/\+/g,Ua=/([^&=]+)=?([^&]*)/g;Sa=Ua.exec(Qa);)Ra[decodeURIComponent(Sa[1].replace(Ta," "))]=decodeURIComponent(Sa[2].replace(Ta," "))}function Va(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 Wa(a,b){b||(b=v);a.prototype=Va(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var Pa=[],Xa={};function Ya(a,b,c){Xa[a]&&b&&(Xa[a][b]=c)}function Za(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Pa.length;b++){var d=Pa[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function $a(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<Pa.length;d++)if(c)c==Pa[d]&&(c=null);else if(!(a!=Pa[d].type||b&&Pa[d].id.indexOf(b)))return Pa[d]}return null}function y(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
function ab(a,b){for(var c=z(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=y(h))&&g.binding&&a.ma(g.type,g.binding,h,g.value),l=k.length}}}}
function z(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}
v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ma:function(a,b,c){switch(b){case "clear":return this.K[b]||(this.K[b]=c,c.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.ta=this.K[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.oa=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.fb+": "+a)},oa:function(a,b){b||t(a)},Ba:function(){return this.A.ka=!0},Aa:function(a,b){b&&(this.A.ka=!1);return!0}};function bb(a,b,c,d,e,f){var h=!0;a.G&&(!0===h?h=0:null==h&&(h=a.ha),cb(a.G,a,b,c,d,e,f,h))}function fb(a,b,c){a.G&&(!0===c||gb(a,c|0))&&a.G.message(b,void 0)}
function gb(a,b){if(a.G){a===a.G?b|=0:b=b||a.ha;var c=a.G.ha&b;return!!b&&c===b||!!(c&a.G.Yb)}return!1}function hb(a,b){if(a.A.zb)return a.A.Ra&&(a.A.Ra=!1),a.A.zb=!1;if(a.A.Ta)return a.g(a.toString()+" error"),!1;a.A.Ra=b;return a.A.Ra}function ib(a,b){a.A.Ra&&(b?a.A.zb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Ra}function C(a){if(!a.A.Ta&&(a.A.Ua=!0,a.A.Ua)){var b=a.ub;a.ub=null;b&&b()}}function jb(a,b){b&&(a.A.Ua?b():a.ub=b);return a.A.Ua}function kb(a,b){a.A.Ta=!0;a.oa(b)}
var lb="undefined"!==typeof ArrayBuffer,mb=[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 nb(a){v.call(this,"Panel",a,nb)}Wa(nb);m=nb.prototype;m.ma=function(a,b,c,d){return this.w&&this.w.ma(a,b,c,d)||this.b&&this.b.ma(a,b,c,d)||this.ea&&this.ea.ma(a,b,c,d)||this.G&&this.G.ma(a,b,c,d)?!0:this.parent.ma.call(this,a,b,c,d)};m.Fa=function(a,b,c,d){this.w=a;this.C=b;this.b=c;this.G=d;this.ea=ob(a,"Keyboard")};m.Ba=function(a,b){b||pb();return!0};m.Aa=function(){return!0};m.va=function(){};
function pb(){for(var a=!1,b=z(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<Pa.length;h++)if(Pa[h].id===f){f=Pa[h];break a}f=null}f||(a=!0,f=new nb(e));ab(f,d);a&&C(f)}}Ja(pb);
function qb(a,b,c){v.call(this,"Bus",a,qb);this.b=b;this.G=c;this.I=a.busWidth||16;this.V=Math.pow(2,this.I);this.B=this.V-1|0;this.fa=16>=this.I?10:20>=this.I?12:24>=this.I?14:15;this.ua=1<<this.fa;this.Y=this.ua>>2;this.C=this.ua-1;this.L=this.V/this.ua|0;this.J=this.L-1;this.w=[];this.u=[];this.F=this.H=!1;this.Z=[];this.ba=[];a=new D;rb(a,this.G);this.T=Array(this.L);for(b=0;b<this.L;b++)this.T[b]=a;C(this)}Wa(qb);m=qb.prototype;m.reset=function(){};m.Ba=function(a,b){b||this.reset();return!0};
function sb(a,b,c,d){for(var e=b,f=c,h=e>>>a.fa;0<f&&h<a.T.length;){var g=a.T[h],k=h*a.ua,l=a.ua-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.D)return g.ob+=g.D-e,g.D=e,!0;if(e>=g.D+g.ob){l=g.size-(e-k);l>f&&(l=f);g.ob=e-g.D+l;e=k+a.ua;f-=l;h++;continue}}return tb(1,e,f)}e=new D(e,l,a.ua,d);rb(e,a.G,g);a.T[h++]=e;e=k+a.ua;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+ub[d]+" at "+r(b)),!0):tb(2,b,c)}m.W=function(a){return this.T[(a&this.B)>>>this.fa].bb(a&this.C,a)};
function vb(a,b){return a.T[(b&a.B)>>>a.fa].mb(b&a.C,b)}m.Ia=function(a){var b=a&this.C,c=(a&this.B)>>>this.fa;return b!=this.C?this.T[c].Ub(b,a):this.T[c++].bb(b,a)|this.T[c&this.J].bb(0,a+1)<<8};function wb(a,b){var c=b&a.C,d=(b&a.B)>>>a.fa;return c!=a.C?a.T[d].Eb(c,b):a.T[d++].mb(c,b)|a.T[d&a.J].mb(0,b+1)<<8}m.ia=function(a,b){this.T[(a&this.B)>>>this.fa].eb(a&this.C,b&255,a)};function xb(a,b,c){a.T[(b&a.B)>>>a.fa].pb(b&a.C,c&255,b)}
m.xb=function(a,b){var c=a&this.C,d=(a&this.B)>>>this.fa;c!=this.C?this.T[d].Wb(c,b&65535,a):(this.T[d++].eb(c,b&255,a),this.T[d&this.J].eb(0,b>>8&255,a+1))};function yb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.w[b]&&(a.w[b]=[null,!1]);a.w[b][1]=!a.w[b][1];return a.w[b][1]}
function zb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.w[b],g=a.Z[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.G&&a.F!=h[1]&&Ab(a.G,b,l)):a.G&&(cb(a.G,a,b,null,c),a.F&&Ab(a.G,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Bb(a,b){if(void 0===b)return a.H=!a.H,a.H;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
function Cb(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.ba[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.G&&a.H!=h[1]&&Lb(a.G,b,k)}else a.G&&(cb(a.G,a,b,k,d),a.H&&Lb(a.G,b,k));f+=g<<3;b+=g;e-=g}}function tb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Mb;if(lb){var Nb=new ArrayBuffer(2);(new DataView(Nb)).setUint16(0,256,!0);Mb=256===(new Uint16Array(Nb))[0]}else Mb=!1;var Ob=Mb;
function D(a,b,c,d){this.id=Pb+=2;this.b=null;this.D=a;this.ob=b;this.size=c||0;this.type=d||Qb;this.K=d==Rb;rb(this);this.ya=this.Lb=!1;if(c)if(lb)this.F=new ArrayBuffer(c),this.H=new DataView(this.F,0,c),this.C=new Uint8Array(this.F,0,c),this.J=new Uint16Array(this.F,0,c>>1),this.b=new Int32Array(this.F,0,c>>2),Sb(this,Ob?Tb:Ub);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Sb(this,Vb)}else Sb(this)}var Qb=0,Rb=2,ub=["NONE","RAM","ROM","VID","H/W"],Pb=0;
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(lb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.H.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(lb)for(b=0;b<a.length;b++)this.H.setInt32(b<<2,a[b],!0);else this.b=a;return this.ya=!0}return!1},Ja:function(a,b){b?0===this.u++&&Wb(this,Xb,!1):0===this.w++&&Yb(this,Xb,!1)},L:function(){this.G&&gb(this.G,129)&&this.G.message("attempt to read invalid block %"+q(this.D),!0);
return 255},B:function(a,b){this.G&&gb(this.G,129)&&this.G.message("attempt to write "+r(b)+" to invalid block %"+q(this.D),!0)},V:function(a,b){return this.bb(a++,b++)|this.bb(a,b)<<8},I:function(a,b,c){this.eb(a++,b&255,c++);this.eb(a,b>>8,c)},ea:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra: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},xa:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.ya=!0},fb:function(a,
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.ya=!0},Z:function(a,b){if(this.G&&null!=this.D){var c=this.G;Zb(c,this.D+a,1,c.Z)&&c.da(!0)}return this.mb(a,b)},ja:function(a,b){if(this.G&&null!=this.D){var c=this.G;Zb(c,this.D+a,2,c.Z)&&c.da(!0)}return this.Eb(a,b)},sa:function(a,b,c){if(this.G&&null!=this.D){var d=this.G;Zb(d,this.D+a,1,d.H)&&d.da(!0)}this.K?this.B(a,b,c):this.pb(a,b,c)},Da:function(a,
b,c){if(this.G&&null!=this.D){var d=this.G;Zb(d,this.D+a,2,d.H)&&d.da(!0)}this.K?this.B(a,b,c):this.Fb(a,b,c)},Y:function(a){return this.C[a]},ba:function(a){return this.C[a]},ga:function(a){return this.H.getUint16(a,!0)},qa:function(a){return a&1?this.C[a]|this.C[a+1]<<8:this.J[a>>1]},Ga:function(a,b){this.C[a]=b;this.ya=!0},wa:function(a,b){this.C[a]=b;this.ya=!0},Ca:function(a,b){this.H.setUint16(a,b,!0);this.ya=!0},Ha:function(a,b){a&1?(this.C[a]=b,this.C[a+1]=b>>8):this.J[a>>1]=b;this.ya=!0}};
function rb(a,b,c){a.G=b;a.w=a.u=0;c&&((a.w=c.w)&&Yb(a,Xb,!1),(a.u=c.u)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.u&&(a.eb=a.K?a.B:a.pb,a.Wb=a.K?a.I:a.Fb):0===--a.w&&(a.bb=a.mb,a.Ub=a.Eb)}function Wb(a,b,c){c&&a.u||(a.eb=!a.K&&b[2]||a.B,a.Wb=!a.K&&b[3]||a.I);if(c||void 0===c)a.pb=b[2]||a.B,a.Fb=b[3]||a.I}function Yb(a,b,c){c&&a.w||(a.bb=b[0]||a.L,a.Ub=b[1]||a.V);if(c||void 0===c)a.mb=b[0]||a.L,a.Eb=b[1]||a.V}function Sb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)}
var ac=[],Vb=[D.prototype.ea,D.prototype.ra,D.prototype.xa,D.prototype.fb],Xb=[D.prototype.Z,D.prototype.ja,D.prototype.sa,D.prototype.Da];if(lb)var Ub=[D.prototype.Y,D.prototype.ga,D.prototype.Ga,D.prototype.Ca],Tb=[D.prototype.ba,D.prototype.qa,D.prototype.wa,D.prototype.Ha];
function bc(a,b){v.call(this,"CPU",a,bc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.ab=c;this.i.wb=0;this.i.Na=d;this.i.Bb=Math.round(this.i.ab/1E4)/100;this.i.La=this.i.Bb*this.i.Na;this.A.na=!1;this.A.Ab=!1;this.A.Kb=a.autoStart;this.A.Mb=!1;this.A.Sa=!1;this.i.gb=this.i.Ya=0;this.i.hb=a.csStart;this.i.Xa=a.csInterval;this.i.Za=a.csStop;this.Z=this.Oa.bind(this);C(this)}Wa(bc);var cc=["power","reset"];m=bc.prototype;
m.Fa=function(a,b,c,d){this.w=a;this.C=b;this.G=d;for(b=0;b<cc.length;b++)(c=this.K[cc[b]])&&this.w.ma(null,cc[b],c);this.Ga=(b=ob(a,"Video"))&&Math.max(b.Ga,b.$b)||60;this.B=ob(a,"ChipSet");a=dc(a,"autoStart");null!=a&&(this.A.Kb="true"==a?!0:"false"==a?!1:!!a);C(this)};m.reset=function(){this.i.wb=0};m.save=function(){return null};m.restore=function(){return!1};
m.Ba=function(a,b){if(!b){if(a&&this.restore){pc(this);if(!this.restore(a))return!1;qc(this)}else this.reset();if(this.G){var c=this.G;c.g("Type ? for help with PC8080 Debugger commands");c.va();if(c.Pa){var d=c.Pa;c.Pa=null;rc(c,d)}}else this.g("No debugger detected")}sc(this);return!0};m.Aa=function(a){return a?this.save():!0};function tc(a){(a.A.Kb||!a.G&&void 0===a.K.run)&&a.Oa(!0)}m.Pb=function(){return 0};
function qc(a){void 0===a.i.hb&&(a.i.hb=0);void 0===a.i.Xa&&(a.i.Xa=-1);void 0===a.i.Za&&(a.i.Za=-1);a.A.Sa=0<=a.i.hb&&0<a.i.Xa;a.A.Sa&&(a.i.gb=0,a.i.Ya=a.i.hb-a.I)}function uc(a,b){if(a.A.Sa){var c=!1;a.i.gb=a.i.gb+a.Pb()|0;a.i.Ya-=b;0>=a.i.Ya&&(a.i.Ya+=a.i.Xa,c=!0);0<=a.i.Za&&a.i.Za<=vc(a)&&(a.i.Xa=a.i.Za=-1,qc(a),a.da(),c=!0);c&&a.g(vc(a)+" cycles: checksum="+q(a.i.gb))}}
m.ma=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.K[b]=c;a=!0;break;case "run":this.K[b]=c;c.onclick=function(){var a;if(a=d.w)if(a=d.w,a.A.ka)a=!0;else{var b=null,c,g=Za(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.Ua);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.ka);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.Ua?"powered yet":"ready yet"+(b.ub?" (waiting for notification)":""))+".");a=!1}a&&(d.A.na?d.da(!0):d.Oa(!0))};a=
!0;break;case "speed":this.K[b]=c;a=!0;break;case "setSpeed":this.K[b]=c,c.onclick=function(){wc(d,d.i.Na<<1,!0)},c.textContent=this.i.La.toFixed(2)+"Mhz",a=!0}return a};function xc(a,b,c){a.I+=b;c&&(a.F=a.b=0)}
function yc(a,b){var c=30;c<a.Ga&&(c=a.Ga);2>c&&(c=2);var d=1;b&&1<a.i.Na&&a.i.Ka&&(d=a.i.Ka/a.i.Bb);a.i.Qb=Math.round(1E3/30);a.i.ic=Math.floor(a.i.ab/c*d);a.i.Cb=Math.floor(a.i.ab/30*d);a.i.Sb=Math.floor(a.i.ab/a.Ga*d);a.i.Rb=Math.floor(a.i.ab/2*d);b||(a.i.$a=a.i.Cb,a.i.jb=a.i.Sb,a.i.ib=a.i.Rb);a.i.Db=0}function vc(a){return a.I+a.H+a.F-a.b}function pc(a){a.i.Ka=0;a.I=a.H=a.F=a.b=0;qc(a);wc(a,1)}
function wc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Ka/a.i.La?b=1:d=!0;a.i.Na=b;b=a.i.Bb*a.i.Na;if(a.i.La!=b){a.i.La=b;b=a.i.La.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.w&&a.w.nb()}xc(a,a.H);a.H=0;a.i.Wa=ka();a.i.Ma=0;yc(a);return d}
m.Oa=function(a){if(hb(this,!0)){if(!this.A.na){wc(this);this.w&&this.w.start(this.i.Wa,vc(this));this.A.na=!0;this.A.Ab=!0;this.B&&this.B.start();var b=this.K.run;b&&(b.textContent="Halt");this.w&&(this.w.va(!0),a&&this.w.nb(!0))}this.i.Db>=this.i.ab&&yc(this,!0);this.i.kb=0;this.i.vb=ka();this.i.Ma&&(a=this.i.vb-this.i.Ma,a>this.i.Qb&&(this.i.Wa+=a,this.i.Wa>this.i.vb&&(this.i.Wa=this.i.vb)));try{do{this.cb(this.A.Sa?1:this.i.ic);var c=this.F-this.b;this.H+=c;this.i.kb+=c;xc(this,0,!0);uc(this,
c);this.i.jb-=c;0>=this.i.jb&&(this.i.jb+=this.i.Sb,this.w&&zc(this.w,this.i.wb++),this.i.wb>this.Ga&&(this.i.wb=0));this.i.ib-=c;0>=this.i.ib&&(this.i.ib+=this.i.Rb,this.w&&this.w.va());this.i.$a-=c;if(0>=this.i.$a){this.i.$a+=this.i.Cb;break}}while(this.A.na)}catch(e){this.da();sc(this);this.w&&this.w.stop(ka(),vc(this));hb(this,!1);kb(this,e.stack||e.message);return}c=setTimeout;a=this.Z;this.i.Ma=ka();b=this.i.Qb;this.i.kb&&(b=Math.round(b*this.i.kb/this.i.Cb));var b=b-(this.i.Ma-this.i.vb),d=
this.i.Ma-this.i.Wa;d&&(this.i.Ka=Math.round(this.H/(10*d))/100,864E5<=d&&(this.I=0,wc(this)));if(0>b||this.i.Ka<this.i.La)b=0;this.i.Db+=this.i.kb;this.i.Ma+=b;c(a,b)}else sc(this),this.w&&this.w.stop(ka(),vc(this))};m.cb=function(){return 0};m.da=function(a){ib(this,!0);this.F-=this.b;this.b=0;xc(this,this.H);this.H=0;if(this.A.na){this.A.na=!1;this.B&&this.B.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.tb=a};function sc(a,b){a.w&&(zc(a.w,-1),a.w.va(b))}
function Ac(a){this.Va=+a.model||8080;bc.call(this,a,1E6);this.L=Bc;pc(this);this.A.tb=this.A.Zb=!1;this.Y=0;this.J=[];this.V=0;Cc(this)}Wa(Ac,bc);function Dc(a,b){a.J.push(b)}m=Ac.prototype;m.reset=function(){this.A.na&&this.da();Cc(this);pc(this);this.A.Ta=!1;this.parent.reset.call(this)};function Cc(a){a.j=0;a.N=0;a.O=0;a.P=0;a.R=0;a.S=0;a.U=0;a.ca=0;E(a,a.V);Ec(a,0);a.u=0}function Fc(a,b){a.V=b;E(a,b)}
m.Pb=function(){var a=this.j+this.N+this.O+this.P+this.R+this.S+this.U|0;return a=a+this.ca+this.M+Gc(this)|0};
m.save=function(){var a=new Hc(this);F(a,0,[this.j,this.N,this.O,this.P,this.R,this.S,this.U,this.ca,this.M,Gc(this)]);F(a,1,[this.u,this.I,this.i.Na]);for(var b=this.C,c=0,d=[],e=0;e<b.L;e++){var f=b.T[e];if(f.ya||f.Lb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<f.length){f=l;break a}}d[h]=f}}F(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.j=b[0];this.N=b[1];this.O=b[2];this.P=b[3];this.R=b[4];this.S=b[5];this.U=b[6];this.ca=b[7]&65535;E(this,b[8]);Ec(this,b[9]);b=a[1];this.u=b[0];this.I=b[1];wc(this,b[3]);a:{b=this.C;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.Y){for(var f=0,h=Array(b.Y),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.T[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.ma=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.K[b]=c;this.Y++;d=!0;break;default:d=this.parent.ma.call(this,a,b,c)}return d};function Ic(a){return a.N<<8|a.O}function Jc(a,b){a.N=b>>8&255;a.O=b&255}function Kc(a){return a.P<<8|a.R}function Lc(a,b){a.P=b>>8&255;a.R=b&255}function H(a){return a.S<<8|a.U}
function Mc(a,b){a.S=b>>8&255;a.U=b&255}function E(a,b){a.M=b&65535}function I(a){return a.X&256?1:0}function Nc(a,b){a.X=a.X&255|b}function Oc(a){return mb[a.aa&255]?4:0}function Pc(a){return(a.aa^a.la)&16?16:0}function Qc(a){return a.X&255?0:64}function Rc(a){return a.aa&128?128:0}function Gc(a){return a.pa&-214|Rc(a)|Qc(a)|Pc(a)|Oc(a)|I(a)}function Ec(a,b){a.X=a.aa=a.la=0;b&1&&(a.X|=256);b&4||(a.aa|=1);b&16&&(a.la|=16);b&64||(a.X|=255);b&128&&(a.aa^=192);a.pa=a.pa&-726|b&512|2}
function Sc(a,b){a.la=a.j^b;return a.aa=(a.X=a.j+b)&255}function Tc(a,b){a.la=a.j^b;return a.aa=(a.X=a.j+b+(a.X&256?1:0))&255}function Uc(a,b){a.X=a.aa=a.la=a.j&b;(a.j|b)&8&&(a.la^=16);return a.X}function Vc(a,b){a.la=b^255;b=a.aa=b+255&255;a.X=a.X&-256|b;return b}function nd(a,b){a.la=b;b=a.aa=b+1&255;a.X=a.X&-256|b;return b}function od(a,b){return a.aa=a.X=a.la=a.j|b}function J(a,b){b^=255;a.la=a.j^b;return a.aa=(a.X=a.j+b+1^256)&255}
function pd(a,b){b^=255;a.la=a.j^b;return a.aa=(a.X=a.j+b+(a.X&256?0:1)^256)&255}function qd(a,b){return a.aa=a.X=a.la=a.j^b}m.W=function(a){return this.C.W(a)};m.ia=function(a,b){this.C.ia(a,b)};function L(a){var b=a.W(a.M);E(a,a.M+1);return b}function N(a){var b=a.C.Ia(a.M);E(a,a.M+2);return b}function O(a){var b=a.C.Ia(a.ca);a.ca=a.ca+2&65535;return b}function Q(a,b){a.ca=a.ca-2&65535;a.C.xb(a.ca,b)}
function R(a,b,c,d){d=d||2;a.K[b]&&(void 0===c&&(kb(a,"Value for "+b+" is invalid"),a.da()),c=!a.A.na||a.A.Mb?q(c,d):"--------".substr(0,d),a.K[b].textContent!=c&&(a.K[b].textContent=c))}
m.va=function(a){this.Y&&(a||!this.A.na||this.A.Mb)&&(R(this,"A",this.j),R(this,"B",this.N),R(this,"C",this.O),R(this,"BC",Ic(this),4),R(this,"D",this.P),R(this,"E",this.R),R(this,"DE",Kc(this),4),R(this,"H",this.S),R(this,"L",this.U),R(this,"HL",H(this),4),R(this,"SP",this.ca,4),R(this,"PC",this.M,4),a=Gc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.K.speed)a.textContent=
this.A.na&&this.i.Ka?this.i.Ka.toFixed(2)+"Mhz":"Stopped"};
m.cb=function(a){this.A.tb=!0;var b=this.A.Zb=this.G&&rd(this.G),c=a?this.A.Ab?0:1:-1;this.A.Ab=!1;this.F=this.b=a;do{if(this.u){var d;this.u&8&&this.pa&512?(d=199|(this.u&7)<<3,this.u&=-16,this.pa&=-513,this.L[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.u&16){this.b=0;break}}if(b){if(sd(this.G,this.M,c)){this.da();break}c=1}this.L[L(this)].call(this)}while(0<this.b);return this.A.tb?this.F-this.b:void 0===this.A.tb?0:-1};
Ja(function(){for(var a=z(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Ac(d);ab(d,c)}});function td(){this.b-=4}function ud(){E(this,N(this));this.b-=10}function vd(){E(this,O(this));this.b-=10}function wd(){var a=N(this);Q(this,this.M);E(this,a);this.b-=17}
var Bc=[td,function(){Jc(this,N(this));this.b-=10},function(){this.ia(Ic(this),this.j);this.b-=7},function(){Jc(this,Ic(this)+1);this.b-=5},function(){this.N=nd(this,this.N);this.b-=5},function(){this.N=Vc(this,this.N);this.b-=5},function(){this.N=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;Nc(this,a&256);this.b-=4},td,function(){var a;Mc(this,a=H(this)+Ic(this));Nc(this,a>>8&256);this.b-=10},function(){this.j=this.W(Ic(this));this.b-=7},function(){Jc(this,Ic(this)-1);this.b-=
5},function(){this.O=nd(this,this.O);this.b-=5},function(){this.O=Vc(this,this.O);this.b-=5},function(){this.O=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;Nc(this,a);this.b-=4},td,function(){Lc(this,N(this));this.b-=10},function(){this.ia(Kc(this),this.j);this.b-=7},function(){Lc(this,Kc(this)+1);this.b-=5},function(){this.P=nd(this,this.P);this.b-=5},function(){this.P=Vc(this,this.P);this.b-=5},function(){this.P=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|
I(this);Nc(this,a&256);this.b-=4},td,function(){var a;Mc(this,a=H(this)+Kc(this));Nc(this,a>>8&256);this.b-=10},function(){this.j=this.W(Kc(this));this.b-=7},function(){Lc(this,Kc(this)-1);this.b-=5},function(){this.R=nd(this,this.R);this.b-=5},function(){this.R=Vc(this,this.R);this.b-=5},function(){this.R=L(this);this.b-=7},function(){var a=this.j<<8;this.j=(I(this)<<8|this.j)>>1;Nc(this,a&256);this.b-=4},td,function(){Mc(this,N(this));this.b-=10},function(){var a=N(this);this.C.xb(a,H(this));this.b-=
16},function(){Mc(this,H(this)+1);this.b-=5},function(){this.S=nd(this,this.S);this.b-=5},function(){this.S=Vc(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=0,b=I(this);if(Pc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=Sc(this,a);Nc(this,b?256:0);this.b-=4},td,function(){var a;Mc(this,a=H(this)+H(this));Nc(this,a>>8&256);this.b-=10},function(){var a;a=N(this);a=this.C.Ia(a);Mc(this,a);this.b-=16},function(){Mc(this,H(this)-1);this.b-=5},function(){this.U=
nd(this,this.U);this.b-=5},function(){this.U=Vc(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},td,function(){this.ca=N(this)&65535;this.b-=10},function(){this.ia(N(this),this.j);this.b-=13},function(){this.ca=this.ca+1&65535;this.b-=5},function(){var a=H(this);this.ia(a,nd(this,this.W(a)));this.b-=10},function(){var a=H(this);this.ia(a,Vc(this,this.W(a)));this.b-=10},function(){this.ia(H(this),L(this));this.b-=10},function(){this.X|=256;this.b-=
4},td,function(){var a;Mc(this,a=H(this)+this.ca);Nc(this,a>>8&256);this.b-=10},function(){this.j=this.W(N(this));this.b-=13},function(){this.ca=this.ca-1&65535;this.b-=5},function(){this.j=nd(this,this.j);this.b-=5},function(){this.j=Vc(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){Nc(this,I(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.N=this.O;this.b-=5},function(){this.N=this.P;this.b-=5},function(){this.N=this.R;this.b-=5},function(){this.N=this.S;this.b-=
5},function(){this.N=this.U;this.b-=5},function(){this.N=this.W(H(this));this.b-=7},function(){this.N=this.j;this.b-=5},function(){this.O=this.N;this.b-=5},function(){this.b-=5},function(){this.O=this.P;this.b-=5},function(){this.O=this.R;this.b-=5},function(){this.O=this.S;this.b-=5},function(){this.O=this.U;this.b-=5},function(){this.O=this.W(H(this));this.b-=7},function(){this.O=this.j;this.b-=5},function(){this.P=this.N;this.b-=5},function(){this.P=this.O;this.b-=5},function(){this.b-=5},function(){this.P=
this.R;this.b-=5},function(){this.P=this.S;this.b-=5},function(){this.P=this.U;this.b-=5},function(){this.P=this.W(H(this));this.b-=7},function(){this.P=this.j;this.b-=5},function(){this.R=this.N;this.b-=5},function(){this.R=this.O;this.b-=5},function(){this.R=this.P;this.b-=5},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.U;this.b-=5},function(){this.R=this.W(H(this));this.b-=7},function(){this.R=this.j;this.b-=5},function(){this.S=this.N;this.b-=5},function(){this.S=
this.O;this.b-=5},function(){this.S=this.P;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.W(H(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.U=this.N;this.b-=5},function(){this.U=this.O;this.b-=5},function(){this.U=this.P;this.b-=5},function(){this.U=this.R;this.b-=5},function(){this.U=this.S;this.b-=5},function(){this.b-=5},function(){this.U=this.W(H(this));this.b-=7},function(){this.U=this.j;
this.b-=5},function(){this.ia(H(this),this.N);this.b-=7},function(){this.ia(H(this),this.O);this.b-=7},function(){this.ia(H(this),this.P);this.b-=7},function(){this.ia(H(this),this.R);this.b-=7},function(){this.ia(H(this),this.S);this.b-=7},function(){this.ia(H(this),this.U);this.b-=7},function(){var a=this.M-1;if(this.J.length)for(var b=0;b<this.J.length;b++)if(this.J[b](a))return;this.u|=16;this.b-=7;this.G&&gb(this,-2147483648)?(E(this,a),this.G.da()):this.pa&512||(this.G&&E(this,a),this.da())},
function(){this.ia(H(this),this.j);this.b-=7},function(){this.j=this.N;this.b-=5},function(){this.j=this.O;this.b-=5},function(){this.j=this.P;this.b-=5},function(){this.j=this.R;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.U;this.b-=5},function(){this.j=this.W(H(this));this.b-=7},function(){this.b-=5},function(){this.j=Sc(this,this.N);this.b-=4},function(){this.j=Sc(this,this.O);this.b-=4},function(){this.j=Sc(this,this.P);this.b-=4},function(){this.j=Sc(this,this.R);this.b-=
4},function(){this.j=Sc(this,this.S);this.b-=4},function(){this.j=Sc(this,this.U);this.b-=4},function(){this.j=Sc(this,this.W(H(this)));this.b-=7},function(){this.j=Sc(this,this.j);this.b-=4},function(){this.j=Tc(this,this.N);this.b-=4},function(){this.j=Tc(this,this.O);this.b-=4},function(){this.j=Tc(this,this.P);this.b-=4},function(){this.j=Tc(this,this.R);this.b-=4},function(){this.j=Tc(this,this.S);this.b-=4},function(){this.j=Tc(this,this.U);this.b-=4},function(){this.j=Tc(this,this.W(H(this)));
this.b-=7},function(){this.j=Tc(this,this.j);this.b-=4},function(){this.j=J(this,this.N);this.b-=4},function(){this.j=J(this,this.O);this.b-=4},function(){this.j=J(this,this.P);this.b-=4},function(){this.j=J(this,this.R);this.b-=4},function(){this.j=J(this,this.S);this.b-=4},function(){this.j=J(this,this.U);this.b-=4},function(){this.j=J(this,this.W(H(this)));this.b-=7},function(){this.j=J(this,this.j);this.b-=4},function(){this.j=pd(this,this.N);this.b-=4},function(){this.j=pd(this,this.O);this.b-=
4},function(){this.j=pd(this,this.P);this.b-=4},function(){this.j=pd(this,this.R);this.b-=4},function(){this.j=pd(this,this.S);this.b-=4},function(){this.j=pd(this,this.U);this.b-=4},function(){this.j=pd(this,this.W(H(this)));this.b-=7},function(){this.j=pd(this,this.j);this.b-=4},function(){this.j=Uc(this,this.N);this.b-=4},function(){this.j=Uc(this,this.O);this.b-=4},function(){this.j=Uc(this,this.P);this.b-=4},function(){this.j=Uc(this,this.R);this.b-=4},function(){this.j=Uc(this,this.S);this.b-=
4},function(){this.j=Uc(this,this.U);this.b-=4},function(){this.j=Uc(this,this.W(H(this)));this.b-=7},function(){this.j=Uc(this,this.j);this.b-=4},function(){this.j=qd(this,this.N);this.b-=4},function(){this.j=qd(this,this.O);this.b-=4},function(){this.j=qd(this,this.P);this.b-=4},function(){this.j=qd(this,this.R);this.b-=4},function(){this.j=qd(this,this.S);this.b-=4},function(){this.j=qd(this,this.U);this.b-=4},function(){this.j=qd(this,this.W(H(this)));this.b-=7},function(){this.j=qd(this,this.j);
this.b-=4},function(){this.j=od(this,this.N);this.b-=4},function(){this.j=od(this,this.O);this.b-=4},function(){this.j=od(this,this.P);this.b-=4},function(){this.j=od(this,this.R);this.b-=4},function(){this.j=od(this,this.S);this.b-=4},function(){this.j=od(this,this.U);this.b-=4},function(){this.j=od(this,this.W(H(this)));this.b-=7},function(){this.j=od(this,this.j);this.b-=4},function(){J(this,this.N);this.b-=4},function(){J(this,this.O);this.b-=4},function(){J(this,this.P);this.b-=4},function(){J(this,
this.R);this.b-=4},function(){J(this,this.S);this.b-=4},function(){J(this,this.U);this.b-=4},function(){J(this,this.W(H(this)));this.b-=7},function(){J(this,this.j);this.b-=4},function(){Qc(this)||(E(this,O(this)),this.b-=6);this.b-=5},function(){Jc(this,O(this));this.b-=10},function(){var a=N(this);Qc(this)||E(this,a);this.b-=10},ud,function(){var a=N(this);Qc(this)||(Q(this,this.M),E(this,a),this.b-=6);this.b-=11},function(){Q(this,Ic(this));this.b-=11},function(){this.j=Sc(this,L(this));this.b-=
7},function(){Q(this,this.M);E(this,0);this.b-=11},function(){Qc(this)&&(E(this,O(this)),this.b-=6);this.b-=5},vd,function(){var a=N(this);Qc(this)&&E(this,a);this.b-=10},ud,function(){var a=N(this);Qc(this)&&(Q(this,this.M),E(this,a),this.b-=6);this.b-=11},wd,function(){this.j=Tc(this,L(this));this.b-=7},function(){Q(this,this.M);E(this,8);this.b-=11},function(){I(this)||(E(this,O(this)),this.b-=6);this.b-=5},function(){Lc(this,O(this));this.b-=10},function(){var a=N(this);I(this)||E(this,a);this.b-=
10},function(){var a=L(this);Cb(this.C,a,this.j,this.M+-2&65535);this.b-=10},function(){var a=N(this);I(this)||(Q(this,this.M),E(this,a),this.b-=6);this.b-=11},function(){Q(this,Kc(this));this.b-=11},function(){this.j=J(this,L(this));this.b-=7},function(){Q(this,this.M);E(this,16);this.b-=11},function(){I(this)&&(E(this,O(this)),this.b-=6);this.b-=5},vd,function(){var a=N(this);I(this)&&E(this,a);this.b-=10},function(){var a=L(this);this.j=zb(this.C,a,this.M+-2&65535)&255;this.b-=10},function(){var a=
N(this);I(this)&&(Q(this,this.M),E(this,a),this.b-=6);this.b-=11},wd,function(){this.j=pd(this,L(this));this.b-=7},function(){Q(this,this.M);E(this,24);this.b-=11},function(){Oc(this)||(E(this,O(this)),this.b-=6);this.b-=5},function(){Mc(this,O(this));this.b-=10},function(){var a=N(this);Oc(this)||E(this,a);this.b-=10},function(){var a=O(this);Q(this,H(this));Mc(this,a);this.b-=18},function(){var a=N(this);Oc(this)||(Q(this,this.M),E(this,a),this.b-=6);this.b-=11},function(){Q(this,H(this));this.b-=
11},function(){this.j=Uc(this,L(this));this.b-=7},function(){Q(this,this.M);E(this,32);this.b-=11},function(){Oc(this)&&(E(this,O(this)),this.b-=6);this.b-=5},function(){E(this,H(this));this.b-=5},function(){var a=N(this);Oc(this)&&E(this,a);this.b-=10},function(){var a=H(this);Mc(this,Kc(this));Lc(this,a);this.b-=5},function(){var a=N(this);Oc(this)&&(Q(this,this.M),E(this,a),this.b-=6);this.b-=11},wd,function(){this.j=qd(this,L(this));this.b-=7},function(){Q(this,this.M);E(this,40);this.b-=11},
function(){Rc(this)||(E(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Ec(this,a&255|this.pa&-256);this.j=a>>8;this.b-=10},function(){var a=N(this);Rc(this)||E(this,a);this.b-=10},function(){this.pa&=-513;this.b-=4},function(){var a=N(this);Rc(this)||(Q(this,this.M),E(this,a),this.b-=6);this.b-=11},function(){Q(this,Gc(this)&255|this.j<<8);this.b-=11},function(){this.j=od(this,L(this));this.b-=7},function(){Q(this,this.M);E(this,48);this.b-=11},function(){Rc(this)&&(E(this,O(this)),
this.b-=6);this.b-=5},function(){this.ca=H(this)&65535;this.b-=5},function(){var a=N(this);Rc(this)&&E(this,a);this.b-=10},function(){this.pa|=512;this.b-=4},function(){var a=N(this);Rc(this)&&(Q(this,this.M),E(this,a),this.b-=6);this.b-=11},wd,function(){J(this,L(this));this.b-=7},function(){Q(this,this.M);E(this,56);this.b-=11}];
function S(a){v.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!xd[b]&&t("Unrecognized ChipSet model: "+b);this.Va=xd[b]||yd;a.sound&&(this.V=null,window&&(this.V=window.AudioContext||window.webkitAudioContext),this.V&&new this.V);C(this)}Wa(S);var yd=1978.1,xd={SI1978:yd};m=S.prototype;m.ma=function(){return!1};
m.Fa=function(a,b,c,d){this.C=b;this.b=c;this.G=d;this.w=a;if(this.Va==yd){var e;a=zd;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.w[g]?t("Input port "+r(g)+" already registered"):c.w[g]=[h,!1]}var k;e=Ad;void 0===k&&(k=0);for(var l in e)if(f=b,a=+l+k,c=e[l].bind(this),void 0!==c)for(d=+l+k;d<=a;d++)void 0!==f.u[d]?t("Output port "+r(d)+" already registered"):f.u[d]=[c,!1]}};
m.Ba=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.Aa=function(a){return a?this.save():!0};m.reset=function(){this.J=14;this.u=8;this.H=this.I=this.F=this.B=this.L=0};m.save=function(){var a=new Hc(this);this.Va==yd&&F(a,0,[this.J,this.u,this.L,this.B,this.F,this.H,this.I]);return a.data()};m.restore=function(a){a=a[0];this.Va==yd&&(this.J=a[0],this.u=a[1],this.L=a[2],this.B=a[3],this.F=a[4],this.H=a[5],this.I=a[6]);return!0};m.start=function(){};m.stop=function(){};
function Bd(a,b,c){a.u&=~b;c&&(a.u|=b)}m.cc=function(a,b){var c=this.J;bb(this,a,null,b,"STATUS0",c);return c};m.dc=function(a,b){var c=this.u;bb(this,a,null,b,"STATUS1",c);return c};m.ec=function(a,b){var c=this.L;bb(this,a,null,b,"STATUS2",c);return c};m.bc=function(a,b){var c=this.B>>8-this.F&255;bb(this,a,null,b,"SHIFT.RESULT",c);return c};m.jc=function(a,b,c){bb(this,a,b,c,"SHIFT.COUNT",null);this.F=b};m.lc=function(a,b,c){bb(this,a,b,c,"SOUND1",null);this.H=b};
m.kc=function(a,b,c){bb(this,a,b,c,"SHIFT.DATA",null);this.B=b<<8|this.B>>8};m.mc=function(a,b,c){bb(this,a,b,c,"SOUND2",null);this.I=b};m.nc=function(a,b,c){bb(this,a,b,c,"WATCHDOG",null)};var zd={0:S.prototype.cc,1:S.prototype.dc,2:S.prototype.ec,3:S.prototype.bc},Ad={2:S.prototype.jc,3:S.prototype.lc,4:S.prototype.kc,5:S.prototype.mc,6:S.prototype.nc};Ja(function(){for(var a=z(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new S(d);ab(d,c)}});
function Cd(a){v.call(this,"ROM",a,Cd);this.w=null;this.H=a.addr;this.u=a.size;this.I=a.writable;this.B=a.alias;this.F=a.file;this.J=ba(this.F);if(this.F){a=this.F;var b=ca(this.J);"json"!=b&&"hex"!=b&&(a=pa()+"/api/v1/dump?file="+this.F+"&format=bytes&decimal=true");var c=this;oa(a,null,!0,function(a,b,f){Dd(c,a,b,f)})}}Wa(Cd);var Ed=[0,5];Cd.prototype.Fa=function(a,b,c,d){this.C=b;this.b=c;this.G=d;Fd(this)};
Cd.prototype.Ba=function(){if(this.Ea){if(this.G){var a=this.G,b=this.id,c=this.H,d=this.u,e=this.Ea,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=f,k=[k>>>0,h],p=ja(n,k,a.rb);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.I.push({oc:b,D:c,hc:d,Ea:e,Gb:f})}delete this.Ea}return!0};Cd.prototype.Aa=function(){return!0};
function Dd(a,b,c,d){if(d)a.oa("Unable to load system ROM (error "+d+": "+b+")");else{Ya(a.Jb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.w=f;else if(h)for(a.w=Array(4*h.length),d=c=0;c<h.length;c++)a.w[d++]=h[c]&255,a.w[d++]=h[c]>>8&255,a.w[d++]=h[c]>>16&255,a.w[d++]=h[c]>>24&255;else a.w=e;a.Ea=e.symbols;if(!a.w.length){t("Empty ROM: "+b);return}if(1==a.w.length){t(a.w[0]);return}}catch(g){a.oa("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.w=Array(b.length),e=0;e<b.length;e++)a.w[e]=aa(b[e],16);Fd(a)}}
function Fd(a){if(!jb(a))if(!a.F)C(a);else if(a.w&&a.C){a.u||(a.u=a.w.length);if(a.w.length!=a.u)kb(a,"ROM size (0x"+q(a.w.length)+") does not match specified size ("+("0x"+q(a.u))+")");else if(Gd(a,a.H)){var b=[];"number"==typeof a.B?b.push(a.B):null!=a.B&&a.B.length&&(b=a.B);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.C,h=d.u,g=[],k=d.H>>>f.fa;0<h&&k<f.T.length;)g.push(f.T[k++]),h-=f.ua;f=d.C;d=d.u;h=0;for(e>>>=f.fa;0<d&&e<f.T.length;){k=g[h++];if(!k)break;f.T[e++]=k;d-=f.ua}}delete a.w}C(a)}}
function Gd(a,b){if(sb(a.C,b,a.u,a.I?1:Rb)){var c;for(c=0;c<a.w.length;c++)xb(a.C,b+c,a.w[c]);if(a.I&&256==b){for(c=0;c<Ed.length;c++)xb(a.C,Ed[c],118);Dc(a.b,function(a){return function(b){if(0<=Ed.indexOf(b)){var c=!1,h=a.b,g=a.G;if(5==b)switch(c=!0,h.O){case 2:Hd(a,String.fromCharCode(h.R));break;case 9:for(var k=Kc(h),l="",n=255;n--;){var p=a.b.W(k++);if(36==p)break;l+=String.fromCharCode(p)}Hd(a,l);break;default:c=!1}c?vd.call(h):g&&(a.g("\nCP/M vector "+r(b)),E(h,b),g.da());b=!0}else b=!1;return b}}(a));
Fc(a.b,b)}return!0}return!1}function Hd(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}Ja(function(){for(var a=z(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Cd(d);ab(d,c)}});function Id(a){v.call(this,"RAM",a,Id);this.B=a.addr;this.u=a.size;this.w=!1}Wa(Id);m=Id.prototype;m.Fa=function(a,b,c,d){this.C=b;this.b=c;this.G=d;C(this)};m.Ba=function(a,b){b||this.reset();return!0};m.Aa=function(a){return a?this.save():!0};
m.reset=function(){!this.w&&this.u&&sb(this.C,this.B,this.u,1)&&(this.w=!0);this.w||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ja(function(){for(var a=z(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Id(d);ab(d,c)}});function Jd(a){v.call(this,"Keyboard",a,Jd,65536);this.reset();C(this)}Wa(Jd);var Kd={"1p":49,"2p":50,coin:51,left:37,right:39,fire:32},Ld={65:37,68:39,76:32};Jd.prototype.reset=function(){this.b={}};
Jd.prototype.ma=function(a,b,c){var d=this;a=a+"-"+b;if(void 0===this.K[a])switch(b){case "kbd":return c.onkeydown=function(a){return Md(d,a,!0)},c.onkeyup=function(a){return Md(d,a,!1)},!0;default:if(void 0!==Kd[b])return this.K[a]=c,a=function(a,b){return function(){Nd(a,b,!0)}}(this,b),b=function(a,b){return function(){Nd(a,b,!1)}}(this,b),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}return!1};
Jd.prototype.Fa=function(a,b,c,d){this.G=d;this.B=ob(a,"ChipSet")};function Md(a,b,c){var d=!0,e;a:{e=b.keyCode;e=Ld[e]||e;for(var f in Kd)if(Kd[f]===e){e=f;break a}e=null}e&&(d=Nd(a,e,c));d||b.preventDefault();return d}function Nd(a,b,c){a.b[b]=c;if(a.B)switch(b){case "1p":Bd(a.B,4,c);break;case "2p":Bd(a.B,2,c);break;case "coin":Bd(a.B,1,c);break;case "left":Bd(a.B,32,c);break;case "right":Bd(a.B,64,c);break;case "fire":Bd(a.B,16,c)}return!1}
Ja(function(){for(var a=z(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Jd(d);ab(d,c)}});
function Od(a,b,c,d,e){var f=this;this.Ca=wa("Gecko/");var h=["","moz","ms","webkit"];v.call(this,"Video",a,Od,262144);this.qa=a.screenWidth;this.Z=a.screenHeight;this.wa=a.bufferAddr;this.J=a.bufferCols;this.Y=a.bufferRows;this.ra=a.bufferBits||1;this.rb=a.bufferLeft||0;if(this.B=a.bufferRotate)this.B=this.B%360,0<this.B&&(this.B-=360),-90!=this.B&&(this.oa("unsupported buffer rotation: "+this.B),this.B=0);this.$b=a.interruptRate;this.Ga=a.refreshRate||60;this.H=b;this.I=c;this.ba=(this.sb=d)||b||
null;b=a.smoothing;(c=Ra.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.I[d]){this.I[d]=b;break}if(this.F=a.screenRotate)this.F=this.F%360,0<this.F&&(this.F-=360),-90!=this.F?(this.oa("unsupported screen rotation: "+this.F),this.F=0):(this.I.translate(0,this.Z),this.I.rotate(this.F*Math.PI/180),this.I.scale(this.Z/this.qa,this.qa/this.Z));this.ga=1<<this.ra;this.V=Array(this.ga+2);this.V[0]=[0,0,0,255];this.V[1]=
[255,255,255,255];this.V[this.ga+0]=[255,255,0,255];this.V[this.ga+1]=[0,255,0,255];a=this.J;b=this.Y;this.B&&(a=this.Y,b=this.J);this.Da=this.I.createImageData(a,b);this.L=document.createElement("canvas");this.L.width=a;this.L.height=b;this.qb=this.L.getContext("2d");if(this.u=e)if(this.u.Qa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.u.Qa){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Pd(f,
document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){Pd(f,null)},!1);break}}}Wa(Od);
Od.prototype.Fa=function(a,b,c,d){this.w=a;this.C=b;this.b=c;this.G=d;this.sa=(this.J*this.ra>>3)*this.Y;sb(this.C,this.wa,this.sa,3)&&(this.Ha=this.sa>>1,this.Pa=16/this.ra|0,this.xa=!1,void 0===this.ja||this.ja.length!=this.Ha)&&(this.ja=Array(this.Ha));(this.ea=ob(a,"Keyboard"))&&this.H&&this.ea.ma(this.sb?"textarea":"canvas","kbd",this.ba);C(this)};
Od.prototype.ma=function(a,b,c){var d=this;switch(b){case "fullScreen":return this.K[b]=c,this.u&&this.u.Qa?c.onclick=function(){d.Qa()}:c.parentNode.removeChild(c),!0}return!1};
Od.prototype.Qa=function(){var a=!1;if(this.u){if(this.u.Qa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.qa/this.Z;b>c&&(a=Math.round(c/b*100)+"%")}this.Ca?(this.H.style.width=a,this.H.style.width=a,this.H.style.display="block",this.H.style.margin="auto"):(this.u.style.width=a,this.u.style.height="auto");this.u.style.backgroundColor="black";this.u.Qa();a=!0}this.ba&&this.ba.focus()}return a};
function Pd(a,b){!b&&a.u&&(a.Ca?a.H.style.width=a.H.style.height="":a.u.style.width=a.u.style.height="");fb(a,"notifyFullScreen("+b+")",!0)}
Ja(function(){for(var a=z(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=y(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=qa().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||Ra.aspect);f&&.3<=f&&3.33>=f&&(Ga("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");wa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Od(d,e,h,f,c);ab(d,c)}});
function Qd(a){v.call(this,"Debugger",a,Qd);this.style=Rd;this.ea=this.Da=this.L=0;this.Y=T();this.sb=T();this.F=-1;this.B=[];this.ja=!1;this.ga=T();this.I=[];this.qa={};this.u=this.Z=this.H=[];Sd(this);this.wa=0;Td(this);this.Ha=[];Ud(this,a.messages);this.Pa=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return rc(b,a)}):void 0===global.$&&(global.$=function(a){return rc(b,a)})}Wa(Qd);
var Vd={"?":"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",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"},Rd=8080,Wd="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(" "),
Xd="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(" "),Yd="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Zd=[[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]],$d={cpu:1,bus:64,mem:128,port:256,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};m=Qd.prototype;
m.Fa=function(a,b,c,d){this.C=b;this.b=c;this.w=a;(a=dc(a,"messages"))&&Ud(this,a);this.qb=Zd;ae(this,function(a){a:{var b=d.C.T,c=a[0],g=a=0,k=b.length;if(c){a=V(W(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.C.fa;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var n=b[g];n.type==c?l++||d.g("..."):(c=n.type,l=ub[c],n&&d.g(q(n.id)+" %"+q(g<<d.C.fa)+" %%"+q(n.D)+" "+r(n.ob)+" "+r(n.size)+
" "+l),c!=Qb&&(c=-1),l=0);a+=d.C.ua;g++}}});C(this)};
m.ma=function(a,b,c){var d=this;switch(b){case "debugInput":return this.sa=this.K[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",rc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.F<d.B.length-1&&(b=d.B[++d.F]):40==a.keyCode&&(0<d.F?b=d.B[--d.F]:(b="",d.F=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=c,Ca(c,function(){if(d.sa){var a=d.sa.value;d.sa.value=
"";rc(d,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=c,Ca(c,function(a){var b=!1;ib(d,!0)||(hb(d,!0),b=d.cb(a?1:0),hb(d,!1));return b}),!0}return!1};m.nb=function(){this.sa&&this.sa.focus()};function V(a){a=a&&a.D;null==a&&(a=-1);return a}m.W=function(a,b){var c=255,d=V(a);-1!==d&&(c=vb(this.C,d),b&&be(a,b));return c};m.Ia=function(a,b){var c=65535,d=V(a);-1!==d&&(c=wb(this.C,d),b&&be(a,b));return c};m.ia=function(a,b,c){var d=V(a);-1!==d&&(xb(this.C,d,b),c&&be(a,c),sc(this.b,!0))};
m.xb=function(a,b,c){var d=V(a);if(-1!==d){var e=this.C,f=d&e.C,h=(d&e.B)>>>e.fa;f!=e.C?e.T[h].Fb(f,b&65535,d):(e.T[h++].pb(f,b&255,d),e.T[h&e.J].pb(0,b>>8&255,d+1));c&&be(a,c);sc(this.b,!0)}};function T(a){return{D:a,za:!1}}function ce(a){return[a.D,a.za]}function de(a){return{D:a[0],za:a[1]}}
function W(a,b,c){var d;c=(c?a.Y:a.sb).D;if(void 0!==b){d=b=ee(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.I.length;c++){var f=a.I[c].Ea[d];if(void 0!==f){d=f.o;void 0!==d&&(e=T(d));break}}if(d=e)return d;c=fe(a,b,void 0)}null!=c&&(d=T(c));return d}function ge(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Xb=he(a,b.Vb=c[2]))}function be(a,b){null!=a.D&&(a.D+=b||1)}function X(a){return q(a,4)}
function ie(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.W(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Ud(a,b){a.G=a;a.ha=a.Yb=536870912;a.xa=null;a.Ca=[];var c=he(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in $d)0<=na(c,d)&&(a.ha|=$d[d],a.g(d+" messages enabled"))}function ae(a,b){for(var c in $d)if(64==$d[c]){a.Ha[c]=b;break}}
function je(a,b){var c;a=a.toUpperCase();null==b?c=na(Yd,a):(c=na(Yd,a.substr(b,2)),0>c&&(c=na(Yd,a.substr(b,1))));return c}function ke(a,b){var c=0,d=le(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?q(d,c):"??"}
function le(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.N;break;case 1:c=d.O;break;case 8:c=Ic(d);break;case 2:c=d.P;break;case 3:c=d.R;break;case 9:c=Kc(d);break;case 4:c=d.S;break;case 5:c=d.U;break;case 10:c=H(d);break;case 6:c=d.W(H(d));break;case 11:c=d.ca;break;case 12:c=d.M;break;case 13:c=Gc(d);break;case 14:c=Gc(d)&255|d.j<<8}}return c}
function me(a,b){b=ee(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=je(b,c+1),0<=e&&(b=b.substr(0,c)+ke(a,e)+b.substr(c+1+Yd[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=W(a,e))?(d=e+' "'+ie(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=W(a,e))?(be(d),d=e+' "'+
ie(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+X(T(this.b.M).D));if(this.ha&1073741824)this.Ca.push(a);else if(!this.xa||a!=this.xa)if(this.xa=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.$a=0;c.F-=c.b;c.b=0;sc(c)}};
function cb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ha&g)!=g||a.message(b.fb+"."+(null!=d?"outPort":"inPort")+"("+r(c)+","+(f?f:"unknown")+(null!=d?",0x"+q(d,2):"")+")"+(null!=h?": 0x"+q(h,2):"")+(null!=e?" at "+X(e):""))}
function Td(a){var b;if(rd(a)){if(!a.V||!a.V.length){a.V=Array(1E3);for(b=0;b<a.V.length;b++)a.V[b]=T();a.ra=0;a.g("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.V&&a.V.length&&a.g("instruction history buffer freed"),a.ra=0,a.V=[],a.J=[]}m.Oa=function(a){if(!ne(this))return!1;this.b.Oa(a);return!0};
m.cb=function(a,b,c){if(!ne(this))return!1;this.L=0;a||rd(this)&&sd(this,this.b.M,0);try{var d=this.b.cb(a);0<d&&(this.L+=d,xc(this.b,d,!0),uc(this.b,d),this.ea++)}catch(e){"number"!=typeof e&&(this.L=0,kb(this.b,e.stack||e.message))}!1!==c&&sc(this.b);this.va(b||!1);return 0<this.L};m.da=function(a){this.b&&this.b.da(a)};m.va=function(a){void 0===a&&(a=!0);this.Y=T(this.b.M);a&&1!=this.ba?oe(this):pe(this)};
function ne(a){var b;if(b=a.b&&jb(a.b))b=a.b,b.A.ka?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!ib(a.b)?(a=a.b,a.A.Ta?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Ba=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Aa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Td(this);this.ea=this.Da=0;this.xa=null;this.L=0;this.Y=T(this.b.M);this.A.na=!1;qe(this);a||this.va()};
m.save=function(){var a=new Hc(this);F(a,0,ce(this.Y));F(a,1,ce(this.ga));F(a,2,[this.B,this.ja,this.ha]);F(a,3,this.I);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.Y=de(a[b++]),this.ga=de(a[b++]),this.B=a[b][0],"string"==typeof this.B&&(this.B=[this.B]),this.ja=a[b][1],this.ha|=a[b][2]);a[3]&&(this.I=a[3]);return!0};m.start=function(a,b){this.ba||this.g("running");this.A.na=!0;this.ac=a;this.fc=b};
m.stop=function(a,b){if(this.A.na){this.A.na=!1;this.L=b-this.fc;if(!this.ba){var c="stopped";if(this.L){var d=a-this.ac,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";rd(this)&&(c+=this.ea+" opcodes, ",this.Da-=this.ea,this.ea=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else gb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.va(!0);this.nb();qe(this,this.b.M)}};function rd(a){return 1<a.u.length||!!a.wa}
function sd(a,b,c){var d=a.b;if(0<c&&(a.wa&&!--a.wa||Zb(a,b,1,a.u)))return!0;0<=c&&a.J.length&&(a.ea++,b=vb(a.C,b),null!=b&&(a.J[b][1]++,b=a.V[a.ra],b.D=d.M,b.za=!1,++a.ra==a.V.length&&(a.ra=0)));return!1}function Ab(a,b,c){a.g("break on input from port "+r(b)+": "+q(c));a.da(!0)}function Lb(a,b,c){a.g("break on output to port "+r(b)+": "+q(c));a.da(!0)}
function Sd(a){var b,c;a.u=["bp"];if(void 0!==a.Z)for(b=1;b<a.Z.length;b++){c=a.Z[b];var d=a.C;$b(d.T[V(c)>>>d.fa],!1)}a.Z=["br"];if(void 0!==a.H)for(b=1;b<a.H.length;b++)c=a.H[b],d=a.C,$b(d.T[V(c)>>>d.fa],!0);a.H=["bw"];a.Nb=0}m.Ja=function(a,b,c){var d=!0;c||re(this,a,b,!1,!0);if(a!=this.u){var e=V(b);if(-1===e)this.g("invalid address: "+X(b.D)),d=!1;else{var f=this.C;f.T[e>>>f.fa].Ja(e&f.C,a==this.H)}}d&&(a.push(b),c?b.za=!0:(se(this,a,a.length-1,"set"),Td(this)));return d};
function re(a,b,c,d,e){var f=!1;c=V(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==V(g)&&(!d||g.za)){f=!0;g.za||e||se(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.C,$b(d.T[c>>>d.fa],b==a.H));g.za||Td(a);break}}return f}function te(a,b){for(var c=1;c<b.length;c++)se(a,b,c);return b.length-1}function se(a,b,c,d){c=b[c];a.g(b[0]+" "+X(c.D)+(d?" "+d:c.Vb?' "'+c.Vb+'"':""))}
function qe(a,b){if(void 0!==b)Zb(a,b,1,a.u,!0),a.ba=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.za){if(!re(a,a.u,d,!0))break;c=0}}}
function Zb(a,b,c,d,e){var f=!1;if(!a.Nb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.za)for(var k=V(g),l=0;l<c;l++)if(b+l==k){var n,f=!0;g.za&&(re(a,d,g,!0),e=!0);if(n=g.Xb){for(var f=!1,p=0;p<n.length;p++)if(!ue(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var x=p+1;x<n.length&&n[x].indexOf("else");x++)p++;if(x==n.length){f=!0;break}}a.b.A.na||(f=!0)}if(f){e||se(a,d,h,"hit");break}}}a.Nb--;return f}
function Te(a,b,c,d){for(var e=T(b.D),f=a.W(b,1),h=a.qb[f],g="",k=(8086!=a.style?Wd:Xd)[h[0]],l=h.length-1,n=0,p,x=1;x<=l;x++){var B="";p=h[x];if(void 0!==p&&!(p&16384&&a.style==Rd)){var u=p&240;if(u){var ma=p&15;ma?n=ma:p|=n;p&61440||(p|=1==x?8192:4096);if(u&32)a:{var B=a,u=p,ma=b,w=" ";switch(u&15){case 1:w=q(B.W(ma,1),2);break;case 2:w=q(B.W(ma,1)<<24>>24,4);break;case 3:w=q(B.Ia(ma,2),4);break;default:B="imm("+r(u)+")";break a}8086==B.style&&u&64?w="["+w+"]":u&16||(w=(B.style==Rd?"$":"0x")+w);
B=w}else u&16?(B=(p&3840)>>8,u=Yd[B],8086==a.style&&p&64&&(6==B&&(u="HL"),u="["+u+"]"),B=u):u&128&&(B=(f>>3&7).toString());if(!B||!B.length){g="INVALID";break}0<g.length&&(g+=",");g+=B||"???"}}}f="";h=X(e.D)+" ";if(-1!==e.D&&-1!==b.D){do if(f+=q(a.W(e,1),2),null==e.D)break;while(e.D!=b.D)}h+=ha(f,10);h=h+(p&32768?"*":" ")+ha(k,7);g&&(h+=" "+g);c&&(h=ha(h,40)+";"+c,h=a.b.A.Sa?h+("cycles="+vc(a.b).toString()+" cs="+q(a.b.i.gb)):h+(null!=d?"="+d.toString():""));return h}
function Ue(a,b){var c;switch(b){case "IF":c=a.b.pa&512;break;case "SF":c=Rc(a.b);break;case "ZF":c=Qc(a.b);break;case "AF":c=Pc(a.b);break;case "PF":c=Oc(a.b);break;case "CF":c=I(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function Ve(a,b){return Yd[b]+"="+ke(a,b)+" "}function We(a){return Ve(a,7)+Ve(a,8)+Ve(a,9)+Ve(a,10)+Ve(a,11)+Ue(a,"IF")+Ue(a,"SF")+Ue(a,"ZF")+Ue(a,"AF")+Ue(a,"PF")+Ue(a,"CF")}
var Xe={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Ye(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 fe(a,b,c){var d;if(b){b=ee(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],p=n.length,n=ia(n);if(!n){f=!0;break}n=Ze(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],x=n.length;k.length&&Xe[n]<Xe[k[k.length-1]]&&Ye(g,k,1);k.push(n);b=b.substr(p+x)}Ye(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&$e(a,null,
d))}return d}function ee(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=fe(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=W(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Ia(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.ea-a.Da}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
function Ze(a,b,c,d){var e;void 0!==b?(e=je(b),0<=e?e=le(a,e):(e=a.qa[b],void 0===e&&(e=aa(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function $e(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,n="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;h=n+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function af(a,b){if(b)return $e(a,b,a.qa[b]);var c=0;for(b in a.qa)$e(a,b,a.qa[b]),c++;return 0<c}Qd.prototype.rb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function bf(a,b,c){var d=[],e=V(b)>>>0;for(b=0;b<a.I.length;b++){var f=a.I[b],h=f.D>>>0,g=f.hc;if(e>=h&&e<h+g){e=ja(f.Gb,[e-h],a.rb);0<=e?cf(a,b,e,d):c&&(e=~e,cf(a,b,e-1,d),cf(a,b,e,d));break}}return d}function cf(a,b,c,d){var e={},f=a.I[b].Gb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.I[b].Ea[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
function df(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.style?Wd:Xd;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.qb[h][0]]+" ").substr(0,5)+" ("+("0x"+q(h,2))+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
function ef(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return af(a)||a.g("no variables"),!0;if(!c[2])return af(a,c[1]);if(!c[3])return delete a.qa[c[1]],!0;var d=fe(a,c[3]);return void 0!==d?(a.qa[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
function ff(a,b,c){var d=null;if(b=W(a,b,!0)){var e=bf(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.D-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+X(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.D)&&(h=" - "+r(f)),f=e[4]+" ("+X(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function gf(a,b){switch(b[1]){case "8080":a.style=Rd;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.i.Xa=c;break;case "start":a.b.i.hb=c;break;case "stop":a.b.i.Za=c;break;default:a.g("unknown cs option");return}void 0!==c&&qc(a.b);a.g("checksums "+(a.b.A.Sa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(wc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.La.toFixed(2)+"Mhz")+
" ("+a.b.i.Na+"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 oe(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=fe(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.N=g&255;break;case "BC":d.N=g>>8&255;case "C":d.O=g&255;break;case "D":d.P=
g&255;break;case "DE":d.P=g>>8&255;case "E":d.R=g&255;break;case "H":d.S=g&255;break;case "HL":d.S=g>>8&255;case "L":d.U=g&255;break;case "SP":d.ca=g&65535;break;case "PC":E(d,g);a.Y=T(d.M);break;case "PS":Ec(d,g);break;case "PSW":Ec(d,g&255|d.pa&-256);d.j=g>>8;break;case "CF":d.X=g?d.X|256:d.X&255;break;case "PF":g?Oc(d)||(d.aa^=1):Oc(d)&&(d.aa^=1);break;case "AF":d.la=g?~d.aa&16|d.la&-17:d.aa&16|d.la&-17;break;case "ZF":d.X=g?d.X&-256:d.X|255;break;case "SF":g?Rc(d)||(d.aa^=192):Rc(d)&&(d.aa^=192);
break;case "IF":d.pa=g?d.pa|512:d.pa&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}sc(d);a.g("updated registers:")}a.g(We(a));c&&(a.Y=T(d.M),pe(a,X(a.Y.D)))}}function hf(a,b){b=ia(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(me(a,c[2])):fe(a,b,!0)}function jf(a,b,c){var d="t"!=b;c=Ze(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ba(c,function(){return hb(a,!0)&&a.cb(e,d,!1)},function(){sc(a.b);hb(a,!1)})}
function pe(a,b,c,d){if(b=W(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=W(a,c,!0);if(!d||d.D<b.D)return;e=d.D-b.D;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=ib(a,!1)||a.ba?a.L:null;var h=null!=f?"cycles":null,g=bf(a,b),k=b.D;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=Te(a,b,h,f);a.g(f);a.Y=b;e-=b.D-k;c++}}}
function he(a,b,c,d){if(c)if(b){0>a.F&&a.B.length&&(a.F=0);if(0>a.F||b!=a.B[a.F])a.B.splice(0,0,b),a.F=0;a.F--}else a.ja?b="end":b=a.B[a.F+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ia(b.substring(c,f))),c=f+1}}return a}
function ue(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ja&&(a.g("ended assemble at "+X(a.ga.D)),a.Y=a.ga,a.ja=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.xa=null;if(jb(a)&&0<b.length){a.ja&&(b="a "+X(a.ga.D)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var n=W(a,f[1],!0);if(n)if(a.ga=
n,void 0===f[2])a.g("begin assemble at "+X(n.D)),a.ja=!0,sc(a.b);else{var p;a.g("not supported yet");p=[];if(p.length){for(var x=0;x<p.length;x++)a.ia(n,p[x],1);a.g(Te(a,a.ga))}}break;case "b":a:{var B=f[0],u=f[1],ma=b;if("?"==u)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 w=B.charAt(1);if("l"==w){var ea=0,ea=ea+te(a,a.u),ea=ea+te(a,a.Z);(ea+=te(a,a.H))||a.g("no breakpoints")}else if("n"==w)a.wa=Ze(a,u),a.g("break after "+a.wa+" instruction(s)");else if(void 0===u)a.g("missing breakpoint address");else{var K=T();if("*"!=u&&(K=W(a,u,!0),!K))break a;u=r(K.D);"c"==w?null==K.D?(Sd(a),a.g("all breakpoints cleared")):re(a,a.u,K)||re(a,a.Z,
K)||re(a,a.H,K)||a.g("breakpoint missing: "+X(K.D)):"i"==w?a.g("breakpoint "+(yb(a.C,K.D)?"enabled":"cleared")+": port "+u+" (input)"):"o"==w?a.g("breakpoint "+(Bb(a.C,K.D)?"enabled":"cleared")+": port "+u+" (output)"):null!=K.D&&(ge(a,K,ma),"p"==w?a.Ja(a.u,K):"r"==w?a.Ja(a.Z,K):"w"==w?a.Ja(a.H,K):a.g("unknown breakpoint command: "+w))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var M,P=f[0],A=f[1],Y=f[2],Ef=f[3];if("?"==A){var xa="";for(M in $d)a.Ha[M]&&(xa&&(xa+=","),xa+=M);xa+=",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");xa.length&&a.g("dump extension commands:\n\t"+xa)}else if("state"==A){var ve=kf(a.w,!0);"console"==Y?console.log(ve):(a.ta&&(a.ta.value=""),a.g(ve))}else if("symbols"==A)for(var Wc=0;Wc<a.I.length;Wc++){var Xc=a.I[Wc],db;for(db in Xc.Ea)if("."!=db.charAt(0)){var we=Xc.Ea[db].o;
if(void 0!==we){var xe=Xc.Ea[db].l;xe&&(db=xe);a.g(X(we)+" "+db)}}}else{if("d"==P){for(M in $d)if(f[1]==M){var ye=a.Ha[M];ye?(f.shift(),f.shift(),ye(f)):a.g("no dump registered for "+A);break a}A||(P=a.gc||"db")}else a.gc=P;if("dh"==P){var ze=A,Ae=Y,Be="",Ce=0,U=a.ra,ya=a.V;if(ya.length){var Z=+ze||a.Ob,eb=+Ae||10;isNaN(Z)?Z=eb:Be="more ";Z>ya.length&&(a.g("note: only "+ya.length+" available"),Z=ya.length);U-=Z;0>U&&(null==ya[ya.length-1].D?(Z=U+Z,U=0):U+=ya.length);var Yc=[];"call"==Ae&&(eb=1E5,
Yc=["CALL"]);for(void 0!==ze&&a.g(Z+" instructions earlier:");0<eb&&U!=a.ra;){var De=ya[U++];if(null==De.D)break;var Db=T(De.D),Ff=Z--,Ee=Te(a,Db,"history",Ff);(!Yc.length||0<=Ee.indexOf(Yc[0]))&&a.g(Ee);Db.yb&&(U+=Db.yb,eb-=Db.yb,Z-=Db.yb);U>=ya.length&&(U=0);a.Ob=Z;Ce++;eb--}}Ce||(a.g("no "+Be+"history available"),a.Ob=void 0)}else{var ec=W(a,A);if(ec){var fc=0;Y&&("l"==Y.charAt(0)&&(Y=Y.substr(1)||Ef),fc=Ze(a,Y)>>>0,65536<fc&&(fc=65536));for(var Ma="",gc="dd"==P?4:"dw"==P?2:1,hc=gc*fc||128,Gf=
hc+15>>4||1;Gf--&&0<hc;){var ic=0,Zc=0,Eb,Fb="",$c="",A=X(ec.D);for(Eb=16;0<Eb&&0<hc;Eb--){var jc=a.W(ec,1),ic=ic|jc<<(Zc++<<3);Zc==gc&&(Fb+=q(ic,2*gc),Fb+=1==gc?9==Eb?"-":" ":" ",ic=Zc=0);$c+=32<=jc&&128>jc?String.fromCharCode(jc):".";hc--}Ma&&(Ma+="\n");Ma+=A+" "+Fb+(0==Eb?" "+$c:"")}Ma&&a.g(Ma);a.sb=ec}}}}break;case "e":if("else"==f[0])break;var kc=1,Fe=255,Ge=a.W,He=a.ia;"ew"==f[0]&&(kc=2,Fe=65535,Ge=a.Ia,He=a.xb);var Ie=kc<<1,Je=f[1];if(null==Je)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 lc=W(a,Je);if(lc)for(var mc=2;mc<f.length;mc++){var Gb=fe(a,f[mc]);if(void 0===Gb){a.g("unrecognized value: "+f[mc]);break}Gb&~Fe&&a.g("warning: "+q(Gb)+" exceeds "+kc+"-byte value");var Hf=Ge.call(a,lc);a.g("changing "+X(lc.D)+" from 0x"+q(Hf,Ie)+" to 0x"+q(Gb,Ie));He.call(a,lc,Gb,kc)}}break;case "f":df(a,f[1]);break;case "g":a:{var Ke=f[1],If=b;if(void 0!==Ke){var ad=W(a,Ke,!0);if(!ad)break a;ge(a,ad,If);a.Ja(a.u,ad,!0)}a.Oa(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var bd;if(a.A.na)bd="halting",a.da();else{if(ib(a,!0))break a;bd="already halted"}c||a.g(bd)}break;case "i":if("if"==f[0]){var cd;var Hb=b.substr(2),Hb=ia(Hb);fe(a,Hb)?(c||a.g("true: "+Hb),cd=!0):(c||a.g("false: "+Hb),cd=!1);cd||(d=!1);break}var dd=f[1];if(dd&&"?"!=dd){var ed=Ze(a,dd);if(void 0!==ed){var Jf=zb(a.C,ed);a.g(r(ed)+": "+("0x"+q(Jf,2)))}}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 Kf=f[0];
if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var fd=0,Le=T(),Ib=T(a.b.ca);for(a.g("stack trace for "+X(Ib.D));10>fd;){for(var Na=null,Lf=256;65536>Ib.D>>>0;){Le.D=a.Ia(Ib,2);if(null==Ib.D||!Lf--)break;for(var Mf=a,nc=Le,Me=null,Jb=nc.D,Ne=Jb,gd=1;6>=gd&&Jb;gd++){if(2<gd){nc.D=Jb;var oc=Te(Mf,nc);if(0<=oc.indexOf("CALL")){var Oe=oc.indexOf(" ");if(Jb+(oc.indexOf(" ",Oe+1)-Oe-1)/2==Ne){Me=oc;break}}}Jb--}nc.D=Ne;if(Na=Me)break}if(!Na||
null==Na)break;var Pe=null;if("ks"==Kf){var Qe=Na.match(/[0-9A-F]+$/);Qe&&(Pe=ff(a,Qe[0]))}Na=ha(Na,50)+" ;"+(Pe||"stack="+X(Ib.D));a.g(Na);fd++}fd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){ff(a,f[1],!0);break}break;case "m":a:{var za,Aa=null,G=f[1];"?"==G&&(G=void 0);if(void 0!==G){var Ha=0;if("all"==G)Ha=1878917119,G=null;else if("on"==G)Aa=!0,G=null;else if("off"==G)Aa=!1,G=null;else{"keys"==G&&(G="key");"kbd"==G&&(G="keyboard");for(za in $d)if(G==za){Ha=$d[za];Aa=!!(a.ha&
Ha);break}if(!Ha){a.g("unknown message category: "+G);break a}}if(Ha)if("on"==f[2])a.ha|=Ha,Aa=!0;else if("off"==f[2]&&(a.ha&=~Ha,Aa=!1,1073741824==Ha)){for(var hd=0;hd<a.Ca.length;hd++)a.g(a.Ca[hd]);a.Ca=[]}}var Nf=0,Ia="";for(za in $d)if(!G||G==za){var Of=!!(a.ha&$d[za]);if(null===Aa||Aa==Of)Ia&&(Ia+=","),++Nf%10||(Ia+="\n\t"),"key"==za&&(za="keys"),Ia+=za}void 0===G&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Aa?Aa?"messages on: ":"messages off: ":"message categories:\n\t")+
(Ia||"none"));Td(a)}break;case "o":var id=f[1],Pf=f[2];if(id&&"?"!=id){var jd=Ze(a,id,"port #"),kd=Ze(a,Pf);void 0!==jd&&void 0!==kd&&(Cb(a.C,jd,kd),a.g(r(jd)+": "+("0x"+q(kd,2))))}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]){hf(a,b.substr(5));break}var Re="pr"==f[0]?1:0,Qf=1+Re;if(a.ba)a.g("step in progress");else{var ld=T(a.b.M);switch(a.W(ld)){case 205:a.ba=Qf,be(ld,3)}a.ba?(a.Ja(a.u,
ld,!0),a.Oa()||(a.w&&a.w.nb(),a.ba=0)):jf(a,Re?"tr":"t")}break;case "r":if("reset"==b){a.w&&a.w.reset();break}oe(a,f);break;case "s":gf(a,f);break;case "t":jf(a,f[0],f[1]);break;case "u":pe(a,f[1],f[2],8);break;case "v":if("var"==f[0]){ef(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.23.2 ("+a.b.Va+",RELEASE"+(lb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(qa());break;case "?":if(f[1]){hf(a,b.substr(1));break}var Kb="commands:",md;for(md in Vd)Kb+="\n"+ha(md,7)+Vd[md];rd(a)||(Kb+="\nnote: frequency/history disabled if no exec breakpoints");
a.g(Kb);break;default:a.g("unknown command: "+b),d=!1}}}catch(Se){a.g("debugger error: "+(Se.stack||Se.message)),d=!1}return d}function rc(a,b,c){b=he(a,b,c);for(var d in b)if(!ue(a,b[d]))return!1;return!0}Ja(function(){for(var a=z(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Qd(d);ab(d,c)}});function Hc(a,b,c){this.id=a.id;this.key=lf(a,b,c);this.G=a.G;mf(this,a.Tb)}
function lf(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}
Hc.prototype={constructor:Hc,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){mf(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 mf(a,b){a[a.id]={};b&&F(a,"parms",b);a.b=!1}function nf(a){var b=!0;if(ta()){var c=JSON.stringify(a[a.id]);va(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function of(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function pf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:ta()&&(b=ua(a.key))?(a[a.id]=b,a.b=!0):!1}function qf(a,b){return a[a.id][b]||null}function F(a,b,c){try{a[a.id][b]=c}catch(d){}}
function rf(a,b,c){v.call(this,"Computer",a,rf,67108864);this.A.ka=!1;sf(this,b);this.ba=dc(this,"autoPower",a);this.B=0;this.qa=a.busWidth||a.buswidth;this.w=tf;this.Y=null;this.J=this.ja=!1;this.ra=dc(this,"url")||"";(Math.random()+.1).toString(36);this.u=uf(this);if(this.b=$a("CPU",this.id)){this.G=$a("Debugger",this.id);this.I=[];for(b=null;b=ob(this,"Video",b);)this.I.push(b);this.C=new qb({id:this.Jb+".bus",busWidth:this.qa},this.b,this.G);var d,e=Za(this.id);if((this.F=$a("Panel",this.id))&&
this.F.ta)for(b=0;b<e.length;b++)d=e[b],d.oa=this.F.oa,d.g=this.F.g,d.ta=this.F.ta;this.g("PC8080 v1.23.2\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.Fa&&d.Fa(this,this.C,this.b,this.G);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.V=d:this.w=parseInt(d,10));var f;if(a=dc(this,"state")||(f=!0,a.state))b=this.ea=a,f||(this.J=!0,this.w=tf),this.w&&(this.Z=new Hc(this,"1.23.2"),pf(this.Z)?
b=null:delete this.Z);!b&&this.w&&(b=vf(this))&&(this.J=!0);if(b){var h=this;oa(b,null,!0,function(a,b,c){c?(h.V=null,h.J=!1,h.oa("Unable to load machine state from server (error "+c+(b?": "+ia(b):"")+")")):(h.Y=b,h.ja=!0);C(h)})}else C(this);this.K.power||(this.ba=!0);!c&&this.ba&&wf(this,this.lb)}else t("Unable to find CPU component")}Wa(rf);var tf=0;function sf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.L=b}
function dc(a,b,c){var d=b.toLowerCase(),d=Ra[b]||Ra[d];void 0===d&&a.L&&(d=a.L[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function wf(a,b,c){for(var d=Za(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!jb(f)){jb(f,function(){wf(a,b,c)});return}}b.call(a,c)}
function xf(a,b){var c=new Hc(a,"1.23.2","validate");if(pf(c)&&of(c)){var d=qf(c,"timestamp"),e=b?qf(b,"timestamp"):"unknown";d!=e&&(a.oa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=rf.prototype;
m.lb=function(a){void 0===a&&(a=this.w||(this.Y?1:tf));if(!this.B){this.B++;var b=!1,c=!1;this.ga=!1;var d=this.Z||new Hc(this,"1.23.2");if(-1==a)b=!0;else if(a>tf){if(pf(d,this.Y)){this.H=new Hc(this,"1.23.2","failsafe");pf(this.H)&&(yf(this,d),a=2,mf(this.H));F(this.H,"timestamp",la());nf(this.H);var e=this.w&&!this.J;if(1==a||ra("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=of(d)){var f=qf(d,"code"),h=qf(d,"data");f&&("ok"==f?pf(d,h):("error"==
f&&"no machine state"!=h?(this.oa("Error: "+h),"unable to verify user"==h&&(va("user",""),this.u=null)):this.g(f+": "+h),mf(d),pf(d)?(c=of(d),e=!0):c=!1))}e&&xf(this,c?d:null)}else 2==a&&d.clear()}else xf(this);delete this.Y;delete this.Z}e=Za(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=zf(this,h,d,b,c));b=[d,a,c];-1!=a?wf(this,this.Ib,b):this.Ib(b)}};
function zf(a,b,c,d,e){if(!b.A.ka){b.A.ka=!0;if(b.Ba){var f=null;e&&((f=qf(c,b.id))||(f=qf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ba(f,d)&&f&&(t("Unable to restore state for "+b.type),a.ea&&!a.ja?(c.clear(),a.w=tf,window&&window.location.reload()):a.ga=!0,b.Ba(null),e=!1)}if(!d&&b.Hb)for(a=b.Hb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.Ib=function(a){var b=a[0],c=0>a[1];a=a[2];this.sa=!0;this.A.ka=!0;var d=this.K.power;d&&(d.textContent="Shutdown");this.b&&(zf(this,this.b,b,c,a),tc(this.b));this.ga&&(yf(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.B=0};
function yf(a,b){if(ra("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.u||"",d=b.toString(),e={app:"PC8080",ver:"1.23.2"};e.url=a.ra;e.user=c;e.type="bug";e.data=d;oa("http://www.pcjs.org/api/v1/report",e,!0)}}
function kf(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new Hc(a,"1.23.2"),h=new Hc(a,"1.23.2","validate"),g=la();F(h,"timestamp",g);F(f,"timestamp",g);F(f,"version","1.23.2");F(f,"url",window?window.location.href:null);F(f,"browser",qa());a.b&&a.b.Aa&&(c&&a.b.da(),d=a.b.Aa(b,c),"object"===typeof d&&F(f,a.b.id,d),c&&(a.b.A.ka=!1,!1===d&&(e=null)));for(var g=Za(a.id),k=0;k<g.length;k++){var l=g[k];l.A.ka&&(l.Aa&&(d=l.Aa(b,c),"object"===typeof d&&F(f,l.id,d)),c&&(l.A.ka=!1,!1===d&&(e=null)))}e&&
(c?(g=d=!1,b?(a.u&&Af(a,a.u,f.toString()),nf(h)&&nf(f)||(e=null,d=g=!0)):a.w&&(d=!0,g=3==a.w),d&&f.clear(g)):e=f.toString());c&&(a.A.ka=!1,b=a.K.power)&&(b.textContent="Power");a.B=0;return e}m.reset=function(){this.C&&this.C.reset&&(fb(this,"Resetting "+this.C.type),this.C.reset());for(var a=Za(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.C&&c.reset&&(fb(this,"Resetting "+c.type),c.reset())}};
m.start=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
m.ma=function(a,b,c){var d=this;switch(b){case "power":return this.K[b]=c,c.onclick=function(){d.B||(d.A.ka?kf(d,!1,!0):wf(d,d.lb))},!0;case "reset":return this.K[b]=c,c.onclick=function(){if(d.A.ka&&!d.B)if(d.w&&!d.V){var a=ra("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");kf(d,a,!0);!a&&d.ea?window&&window.location.reload():d.lb(tf)}else d.reset(),d.b&&tc(d.b)},!0;case "save":if(da(pa(),"pcjs.org")){c.parentNode.removeChild(c);
break}this.K[b]=c;c.onclick=function(){var a=uf(d,!0);if(a){var b=!!(d.w&&!d.V||d.ea),c=kf(d,b);b?Af(d,a,c):d.oa("Resume disabled, machine state not saved")}};return!0}return!1};
function uf(a,b){var c=a.u;c||(c=ua("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Bf(a,c))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return c}
function Bf(a,b){a.u=null;var c=oa(pa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(va("user",c.data),a.u=c.data)}catch(e){t(e.message+" ("+d+")")}return a.u}function vf(a){var b=null;a.u&&(b=pa()+"/api/v1/user?req=load&user="+a.u+"&state="+lf(a,"1.23.2"));return b}
function Af(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=lf(a,"1.23.2");d.data=c;b=oa(pa()+"/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.oa("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.oa(c),va("user",""),a.u=null)}}
function ob(a,b,c){a=Za(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.nb=function(a){if(this.I.length){var b=0,c=0;a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.I[0];d.ba&&d.ba.focus();a&&window&&window.scrollTo(b,c)}};m.va=function(a){this.b&&this.b.va(a);this.F&&this.F.va(a)};
function zc(a,b){for(var c=0;c<a.I.length;c++){var d=a.I[c],e=!0;if(0<=b){if(b&1)e=d.b,e.u=e.u&-8|10,e=!1;else{var f=d.b;f.u=f.u&-8|9}if(f=e&&d.xa){for(var f=d.C,h=d.sa,g=!0,k=d.wa>>>f.fa;0<h&&k<f.T.length;)f.T[k].ya&&(f.T[k].ya=g=!1,f.T[k].Lb=!0),h-=f.ua,k++;f=g}f&&(e=!1)}if(e){var g=d.wa,k=g+d.sa,l=0,n=0,p=0,e=d.J,x=0,f=d.Y,B=h=0,u=d.ra,ma=(1<<u)-1;d.rb&&(u=-u,B=16+u);for(;g<k;){var w=wb(d.C,g);if(d.xa&&w===d.ja[l])n+=d.Pa;else{d.ja[l]=w;var ea=B;ea&&(w=w>>8|(w&255)<<8);n<e&&(e=n);for(var K=d.Pa;K--;){var M=
w>>ea&ma,P=d.Da,A=n++,Y=M,M=void 0,M=d.B?(P.height-A-1)*P.width+p:A+p*P.width;Y&&(208<=A&&236>A?Y=d.ga+0:28<=A&&72>A&&(Y=d.ga+1));A=d.V[Y];M*=A.length;P.data[M]=A[0];P.data[M+1]=A[1];P.data[M+2]=A[2];P.data[M+3]=A[3];ea+=u}n>x&&(x=n);p<f&&(f=p);p>=h&&(h=p+1)}g+=2;l++;if(n>=d.J&&(n=0,p++,p>d.Y))break}d.xa=!0;e<d.J&&(g=x-e,h-=f,d.B&&(k=e,l=g,e=f,g=h,f=d.J-(k+l),h=l),d.qb.putImageData(d.Da,0,0,e,f,g,h),d.I.drawImage(d.L,0,0,d.L.width,d.L.height,0,0,d.qa,d.Z))}}}
Ja(function(){for(var a=z(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=z(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=y(f),h=new rf(h,d,!0);ab(h,f);h.ba&&wf(h,h.lb)}});Da.show.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.sa&&!c.A.ka&&c.lb(-1)}});
Da.exit.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.A.ka&&kf(c,!(!c.w||c.V),!0)}});var Cf=0;function Df(a,b,c,d,e,f){e("Loading "+a+"...");oa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Rf(g,a,b,c,d,e,f)})}
function Rf(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ya(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Sf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Sf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");oa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],h);Sf(a,b,c)}})}else c(a,null)}
function Tf(a,b,c,d){function e(a){if(void 0===g){var b=h&&z(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ga(a))}function f(a){e("Error: "+a);k&&(--Cf||La(!0));k=!1}var h,g,k=!0;Cf++;Xa[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}c||
(c="/versions/pc8080/1.23.2/components.xsl");l=function(d,g){g?Df(c,null,null,!1,e,function(d,l){if(l)if(Ya(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var k=g.transformNode(l);k?(h.outerHTML=k,--Cf||La(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(k=new XSLTProcessor,k.importStylesheet(l),(k=k.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(k,h),--Cf||La(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Df(b,a,d,!0,e,l):Rf(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(x){f(x.message)}return k}window.embedPC8080=function(a,b,c,d){La(!1);return Tf(a,b,c,d)};window.enableEvents=La;window.sendEvent=Oa;
function Uf(a,b,c,d){if(!c&&b){d.push(b);a=Xa[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?oa(b,null,!0,function(a,b){Vf(b,d)}):Vf(null,d)}else t("Error ("+c+") requesting "+a)}
function Vf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Xa[f],k={},l;for(l in g){var n=g[l],p=ca(l);if("xml"==p){for(p=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=p.exec(g[l]);){var x=d[2];x&&(g[x]||(n=n.replace(d[0],"")))}d=l=ba(l)}else"xsl"==p&&(e=l=ba(l));k[l]=n}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),l=h,g=null,k="data:application/javascript,",k=wa("Firefox")?k+encodeURIComponent(c):k+encodeURI(c),l&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=k,g.download=l,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+l+"."):(window.open(k),c="Check your browser for a new window/tab containing the requested data"+(l?" ("+l+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",t(c)):t("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=$a("Computer",a),e=$a("Debugger",a);if(d){var f=kf(d,!0),h=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcx86/1.23.2/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,Tb:h}))return!0;oa(b,null,!0,function(c,d,e){Uf(c,d,e,[a,ba(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})();

View file

@ -0,0 +1,137 @@
(function(){var m;function ca(a){var b=16,c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function da(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}function ea(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function fa(a,b){return-1!==a.indexOf(b,a.length-b.length)}var ga={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ha(a){return a.replace(/[&<>"']/g,function(a){return ga[a]})}var ia=Date.now||function(){return+new Date};function ka(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function p(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"==
typeof b){var l="",k;for(k in b)b.hasOwnProperty(k)&&(l&&(l+="&"),l+=k+"="+encodeURIComponent(b[k]));l=l.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(l)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function la(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function r(a){window&&window.alert(a)}function ma(a){var b=!1;window&&(b=window.confirm(a));return b}var na=null;function oa(){if(null==na){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}na=a}return na}function pa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function qa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ra(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var sa={init:[],show:[],exit:[]},ta=!1,ua=!0;function va(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function wa(a){sa.init.push(a)}
function xa(a){if(ua)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function ya(a){!ua&&a?(ua=!0,ta&&za("init")):ua=a}function za(a){sa[a]&&xa(sa[a])}va("onload",function(){ta=!0;xa(sa.init)});va("onpageshow",function(){xa(sa.show)});va(ra("Opera")||ra("iOS")?"onunload":"onbeforeunload",function(){xa(sa.exit)});
function u(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.za=b.comment;this.$a=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Qa=this.id.substr(0,b),this.Aa=this.id.substr(b+1)):this.Aa=this.id;this[a]=c;this.h={ia:!1,pa:!1,Ka:!1,N:!1,da:!1};this.Ea=null;this.h.da=!1;this.B={};this.I=null;v.push(this)}var Aa=void 0,Ba={};
if(window){Aa||(Aa=window.location.search.substr(1));for(var Ca,Da=/\+/g,Ea=/([^&=]+)=?([^&]*)/g;Ca=Ea.exec(Aa);)Ba[decodeURIComponent(Ca[1].replace(Da," "))]=decodeURIComponent(Ca[2].replace(Da," "))}function Fa(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=u);a.prototype=Fa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var v=[],Ga={};function Ha(a,b,c){Ga[a]&&b&&(Ga[a][b]=c)}function x(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<v.length;b++){var d=v[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function Ia(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<v.length;d++)if(c)c==v[d]&&(c=null);else if(!(a!=v[d].type||b&&v[d].id.indexOf(b)))return v[d]}return null}function y(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
function Ja(a,b){for(var c=z(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var l=g.split(" "),k=0;k<l.length;k++)switch(g=l[k],g){case "pc8080-binding":(g=y(h))&&g.binding&&a.O(g.type,g.binding,h,g.value),k=l.length}}}}
function z(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}
u.prototype={constructor:u,parent:null,toString:function(){return this.name?this.name:this.id||this.type},O:function(a,b,c){switch(b){case "clear":return this.B[b]||(this.B[b]=c,c.onclick=function(a){return function(){a.B.print&&(a.B.print.value="")}}(this)),!0;case "print":return this.B[b]||(this.Z=this.B[b]=c,c.value="",this.R=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.J=function(a,b,c){this.R(a,"notice",c)}),!0;default:return!1}},log:function(){},R:function(){},status:function(a){this.R(this.Aa+": "+a)},J:function(a,b){b||r(a)},X:function(){return this.h.N=!0},W:function(a,b){b&&(this.h.N=!1);return!0}};function Ma(a,b){if(a.h.Ka)return a.h.pa&&(a.h.pa=!1),a.h.Ka=!1;if(a.h.da)return a.R(a.toString()+" error"),!1;a.h.pa=b;return a.h.pa}function B(a){if(!a.h.da&&(a.h.ia=!0,a.h.ia)){var b=a.Ea;a.Ea=null;b&&b()}}
function Na(a,b){b&&(a.h.ia?b():a.Ea=b);return a.h.ia}
var Oa="undefined"!==typeof ArrayBuffer,Pa=[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 Qa(a){u.call(this,"Panel",a,Qa)}w(Qa);m=Qa.prototype;m.O=function(a,b,c,d){return this.u&&this.u.O(a,b,c,d)||this.a&&this.a.O(a,b,c,d)||this.D&&this.D.O(a,b,c,d)?!0:this.parent.O.call(this,a,b,c,d)};m.$=function(a,b,c,d){this.u=a;this.o=b;this.a=c;this.I=d;this.D=Ra(a,"Keyboard")};m.X=function(a,b){b||Sa();return!0};m.W=function(){return!0};m.ga=function(){};
function Sa(){for(var a=!1,b=z(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<v.length;h++)if(v[h].id===f){f=v[h];break a}f=null}f||(a=!0,f=new Qa(e));Ja(f,d);a&&B(f)}}wa(Sa);
function Ta(a,b,c){u.call(this,"Bus",a,Ta);this.a=b;this.I=c;this.j=a.busWidth||16;this.s=Math.pow(2,this.j);this.i=this.s-1|0;this.c=16>=this.j?10:20>=this.j?12:24>=this.j?14:15;this.f=1<<this.c;this.A=this.f>>2;this.g=this.f-1;this.o=this.s/this.f|0;this.u=this.o-1;this.l=[];this.m=[];this.C=[];this.D=[];a=new C;Ua(a,this.I);this.b=Array(this.o);for(b=0;b<this.o;b++)this.b[b]=a;B(this)}w(Ta);Ta.prototype.reset=function(){};Ta.prototype.X=function(a,b){b||this.reset();return!0};
function Va(a,b,c,d){for(var e=b,f=c,h=e>>>a.c;0<f&&h<a.b.length;){var g=a.b[h],l=h*a.f,k=a.f-(e-l);k>f&&(k=f);if(g&&g.size){if(g.type==d){if(e+f<=g.oa)return g.Ja+=g.oa-e,g.oa=e,!0;if(e>=g.oa+g.Ja){k=g.size-(e-l);k>f&&(k=f);g.Ja=e-g.oa+k;e=l+a.f;f-=k;h++;continue}}return Wa(1,e,f)}e=new C(e,k,a.f,d);Ua(e,a.I,g);a.b[h++]=e;e=l+a.f;f-=k}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Xa[d]+" at "+("0x"+n(b,4))),!0):Wa(2,b,c)}
Ta.prototype.F=function(a){return this.b[(a&this.i)>>>this.c].xa(a&this.g,a)};function Ya(a,b){var c=b&a.g,d=(b&a.i)>>>a.c;return c!=a.g?a.b[d].tb(c,b):a.b[d++].xa(c,b)|a.b[d&a.u].xa(0,b+1)<<8}Ta.prototype.P=function(a,b){this.b[(a&this.i)>>>this.c].ya(a&this.g,b&255,a)};function $a(a,b,c){a.b[(b&a.i)>>>a.c].cb(b&a.g,c&255,b)}function ab(a,b,c){var d=b&a.g,e=(b&a.i)>>>a.c;d!=a.g?a.b[e].ub(d,c&65535,b):(a.b[e++].ya(d,c&255,b),a.b[e&a.u].ya(0,c>>8&255,b+1))}
function Wa(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var bb;if(Oa){var cb=new ArrayBuffer(2);(new DataView(cb)).setUint16(0,256,!0);bb=256===(new Uint16Array(cb))[0]}else bb=!1;var db=bb;
function C(a,b,c,d){this.id=eb+=2;this.a=null;this.oa=a;this.Ja=b;this.size=c||0;this.type=d||fb;this.g=d==gb;Ua(this);this.U=this.Ta=!1;if(c)if(Oa)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.o=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),hb(this,db?ib:jb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;hb(this,kb)}else hb(this)}var fb=0,gb=2,Xa=["NONE","RAM","ROM","VID","H/W"],eb=0;
C.prototype={constructor:C,parent:null,save:function(){var a,b;if(Oa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Oa)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.U=!0}return!1},l:function(){return 255},m:function(){},B:function(a,b){return this.xa(a++,b++)|this.xa(a,b)<<8},u:function(a,b,c){this.ya(a++,b&255,c++);this.ya(a,b>>8,c)},D:function(a){return this.a[a>>
2]>>>((a&3)<<3)&255},L: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},T:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.U=!0},Aa:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.U=!0},A:function(a,b){return this.Oa(a,b)},H:function(a,b){return this.ab(a,b)},Y:function(a,b,c){this.g||this.cb(a,b,c)},ba:function(a,
b,c){this.g||this.ca(a,b,c)},s:function(a){return this.b[a]},C:function(a){return this.b[a]},G:function(a){return this.f.getUint16(a,!0)},K:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.o[a>>1]},M:function(a,b){this.b[a]=b;this.U=!0},S:function(a,b){this.b[a]=b;this.U=!0},aa:function(a,b){this.f.setUint16(a,b,!0);this.U=!0},za:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.o[a>>1]=b;this.U=!0}};function Ua(a,b,c){a.I=b;a.i=a.j=0;c&&((a.i=c.i)&&lb(a,mb,!1),(a.j=c.j)&&nb(a,mb,!1))}
function nb(a,b,c){c&&a.j||(a.ya=!a.g&&b[2]||a.m,a.ub=!a.g&&b[3]||a.u);if(c||void 0===c)a.cb=b[2]||a.m,a.ca=b[3]||a.u}function lb(a,b,c){c&&a.i||(a.xa=b[0]||a.l,a.tb=b[1]||a.B);if(c||void 0===c)a.Oa=b[0]||a.l,a.ab=b[1]||a.B}function hb(a,b){b||(b=ob);lb(a,b,void 0);nb(a,b,void 0)}var ob=[],kb=[C.prototype.D,C.prototype.L,C.prototype.T,C.prototype.Aa],mb=[C.prototype.A,C.prototype.H,C.prototype.Y,C.prototype.ba];
if(Oa)var jb=[C.prototype.s,C.prototype.G,C.prototype.M,C.prototype.aa],ib=[C.prototype.C,C.prototype.K,C.prototype.S,C.prototype.za];
function pb(a,b){u.call(this,"CPU",a,pb);var c=a.cycles||b,d=a.multiplier||1;this.c={};this.c.na=c;this.c.Ia=0;this.c.ma=d;this.c.La=Math.round(this.c.na/1E4)/100;this.c.ja=this.c.La*this.c.ma;this.h.V=!1;this.h.Va=!1;this.h.Sa=a.autoStart;this.h.Ua=!1;this.h.Ca=!1;this.c.Ga=this.c.la=0;this.c.Ha=a.csStart;this.c.qa=a.csInterval;this.c.ra=a.csStop;this.Ba=this.Pa.bind(this);B(this)}w(pb);var qb=["power","reset"];m=pb.prototype;
m.$=function(a,b,c,d){this.u=a;this.o=b;this.I=d;for(b=0;b<qb.length;b++)(c=this.B[qb[b]])&&this.u.O(null,qb[b],c);this.Y=(b=Ra(a,"Video"))&&Math.max(b.Y,b.gb)||60;this.G=Ra(a,"ChipSet");a=rb(a,"autoStart");null!=a&&(this.h.Sa="true"==a?!0:"false"==a?!1:!!a);B(this)};m.reset=function(){this.c.Ia=0};m.save=function(){return null};m.restore=function(){return!1};
m.X=function(a,b){if(!b){if(a&&this.restore){sb(this);if(!this.restore(a))return!1;tb(this)}else this.reset();this.R("No debugger detected")}ub(this);return!0};m.W=function(a){return a?this.save():!0};function vb(a){(a.h.Sa||void 0===a.B.run)&&a.Pa(!0)}m.Wa=function(){return 0};function tb(a){void 0===a.c.Ha&&(a.c.Ha=0);void 0===a.c.qa&&(a.c.qa=-1);void 0===a.c.ra&&(a.c.ra=-1);a.h.Ca=0<=a.c.Ha&&0<a.c.qa;a.h.Ca&&(a.c.Ga=0,a.c.la=a.c.Ha-a.M)}
m.O=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.B[b]=c;a=!0;break;case "run":this.B[b]=c;c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.h.N)a=!0;else{var b=null,c,g=x(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.h.ia);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.h.N);c++);c==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.h.ia?"powered yet":"ready yet"+(b.Ea?" (waiting for notification)":""))+".");a=!1}a&&(d.h.V?wb(d,!0):d.Pa(!0))};a=!0;break;
case "speed":this.B[b]=c;a=!0;break;case "setSpeed":this.B[b]=c,c.onclick=function(){xb(d,d.c.ma<<1,!0)},c.textContent=this.c.ja.toFixed(2)+"Mhz",a=!0}return a};function yb(a,b,c){a.M+=b;c&&(a.L=a.a=0)}
function zb(a,b){var c=30;c<a.Y&&(c=a.Y);2>c&&(c=2);var d=1;b&&1<a.c.ma&&a.c.ea&&(d=a.c.ea/a.c.La);a.c.Xa=Math.round(1E3/30);a.c.nb=Math.floor(a.c.na/c*d);a.c.Ma=Math.floor(a.c.na/30*d);a.c.Za=Math.floor(a.c.na/a.Y*d);a.c.Ya=Math.floor(a.c.na/2*d);b||(a.c.ua=a.c.Ma,a.c.ta=a.c.Za,a.c.sa=a.c.Ya);a.c.Na=0}function Ab(a){return a.M+a.K+a.L-a.a}function sb(a){a.c.ea=0;a.M=a.K=a.L=a.a=0;tb(a);xb(a,1)}
function xb(a,b,c){if(void 0!==b){.8>a.c.ea/a.c.ja&&(b=1);a.c.ma=b;b=a.c.La*a.c.ma;if(a.c.ja!=b){a.c.ja=b;b=a.c.ja.toFixed(2)+"Mhz";var d=a.B.setSpeed;d&&(d.textContent=b);a.R("target speed: "+b)}c&&a.u&&Bb(a.u)}yb(a,a.K);a.K=0;a.c.ka=ia();a.c.fa=0;zb(a)}
m.Pa=function(a){if(Ma(this,!0)){if(!this.h.V){xb(this);this.u&&this.u.start(this.c.ka,Ab(this));this.h.V=!0;this.h.Va=!0;this.G&&this.G.start();var b=this.B.run;b&&(b.textContent="Halt");this.u&&(this.u.ga(!0),a&&Bb(this.u,!0))}this.c.Na>=this.c.na&&zb(this,!0);this.c.va=0;this.c.Fa=ia();this.c.fa&&(a=this.c.Fa-this.c.fa,a>this.c.Xa&&(this.c.ka+=a,this.c.ka>this.c.Fa&&(this.c.ka=this.c.Fa)));try{do{this.bb(this.h.Ca?1:this.c.nb);var c=this.L-this.a;this.K+=c;this.c.va+=c;yb(this,0,!0);a=c;this.h.Ca&&
(b=!1,this.c.Ga=this.c.Ga+this.Wa()|0,this.c.la-=a,0>=this.c.la&&(this.c.la+=this.c.qa,b=!0),0<=this.c.ra&&this.c.ra<=Ab(this)&&(this.c.qa=this.c.ra=-1,tb(this),wb(this),b=!0),b&&this.R(Ab(this)+" cycles: checksum="+n(this.c.Ga)));this.c.ta-=c;0>=this.c.ta&&(this.c.ta+=this.c.Za,this.u&&Cb(this.u,this.c.Ia++),this.c.Ia>this.Y&&(this.c.Ia=0));this.c.sa-=c;0>=this.c.sa&&(this.c.sa+=this.c.Ya,this.u&&this.u.ga());this.c.ua-=c;if(0>=this.c.ua){this.c.ua+=this.c.Ma;break}}while(this.h.V)}catch(e){wb(this);
ub(this);this.u&&this.u.stop(ia(),Ab(this));Ma(this,!1);c=e.stack||e.message;this.h.da=!0;this.J(c);return}c=setTimeout;a=this.Ba;this.c.fa=ia();b=this.c.Xa;this.c.va&&(b=Math.round(b*this.c.va/this.c.Ma));var b=b-(this.c.fa-this.c.Fa),d=this.c.fa-this.c.ka;d&&(this.c.ea=Math.round(this.K/(10*d))/100,864E5<=d&&(this.M=0,xb(this)));if(0>b||this.c.ea<this.c.ja)b=0;this.c.Na+=this.c.va;this.c.fa+=b;c(a,b)}else ub(this),this.u&&this.u.stop(ia(),Ab(this))};m.bb=function(){return 0};
function wb(a,b){a.h.pa&&(a.h.Ka=!0);a.L-=a.a;a.a=0;yb(a,a.K);a.K=0;if(a.h.V){a.h.V=!1;a.G&&a.G.stop();var c=a.B.run;c&&(c.textContent="Run")}a.h.Da=b}function ub(a){a.u&&(Cb(a.u,-1),a.u.ga(void 0))}function Db(a){this.S=+a.model||8080;pb.call(this,a,1E6);this.aa=Eb;sb(this);this.h.Da=this.h.ib=!1;this.ca=0;this.T=[];this.ba=0;Fb(this)}w(Db,pb);function Gb(a,b){a.T.push(b)}m=Db.prototype;m.reset=function(){this.h.V&&wb(this);Fb(this);sb(this);this.h.da=!1;this.parent.reset.call(this)};
function Fb(a){a.b=0;a.f=0;a.v=0;a.g=0;a.w=0;a.i=0;a.j=0;a.A=0;D(a,a.ba);Hb(a,0);a.D=0}function Ib(a,b){a.ba=b;D(a,b)}m.Wa=function(){var a=this.b+this.f+this.v+this.g+this.w+this.i+this.j|0;return a=a+this.A+this.m+Jb(this)|0};
m.save=function(){var a=new E(this);F(a,0,[this.b,this.f,this.v,this.g,this.w,this.i,this.j,this.A,this.m,Jb(this)]);F(a,1,[this.D,this.M,this.c.ma]);for(var b=this.o,c=0,d=[],e=0;e<b.o;e++){var f=b.b[e];if(f.U||f.Ta){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,k=[];g<f.length;){for(var t=f[g],q=g+1;q<f.length&&f[q]===t;)q++;k[l++]=q-g;k[l++]=t;g=q}if(k.length<f.length){f=k;break a}}d[h]=f}}F(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.b=b[0];this.f=b[1];this.v=b[2];this.g=b[3];this.w=b[4];this.i=b[5];this.j=b[6];this.A=b[7]&65535;D(this,b[8]);Hb(this,b[9]);b=a[1];this.D=b[0];this.M=b[1];xb(this,b[3]);a:{b=this.o;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.A){for(var f=0,h=Array(b.A),g=0;g<e.length-1;)for(var l=e[g++],k=e[g++];l--;)h[f++]=k;e=h}f=b.b[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.O=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.B[b]=c;this.ca++;d=!0;break;default:d=this.parent.O.call(this,a,b,c)}return d};function Kb(a){return a.f<<8|a.v}function Lb(a,b){a.f=b>>8&255;a.v=b&255}function G(a){return a.g<<8|a.w}function Mb(a,b){a.g=b>>8&255;a.w=b&255}function H(a){return a.i<<8|a.j}
function J(a,b){a.i=b>>8&255;a.j=b&255}function D(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 Nb(a){return Pa[a.s&255]?4:0}function Jb(a){return a.H&-214|(a.s&128?128:0)|(a.l&255?0:64)|((a.s^a.C)&16?16:0)|Nb(a)|K(a)}function Hb(a,b){a.l=a.s=a.C=0;b&1&&(a.l|=256);b&4||(a.s|=1);b&16&&(a.C|=16);b&64||(a.l|=255);b&128&&(a.s^=192);a.H=a.H&-726|b&512|2}function N(a,b){a.C=a.b^b;return a.s=(a.l=a.b+b)&255}
function O(a,b){a.C=a.b^b;return a.s=(a.l=a.b+b+(a.l&256?1:0))&255}function P(a,b){a.l=a.s=a.C=a.b&b;(a.b|b)&8&&(a.C^=16);return a.l}function Ob(a,b){a.C=b^255;b=a.s=b+255&255;a.l=a.l&-256|b;return b}function Pb(a,b){a.C=b;b=a.s=b+1&255;a.l=a.l&-256|b;return b}function Q(a,b){return a.s=a.l=a.C=a.b|b}function R(a,b){b^=255;a.C=a.b^b;return a.s=(a.l=a.b+b+1^256)&255}function S(a,b){b^=255;a.C=a.b^b;return a.s=(a.l=a.b+b+(a.l&256?0:1)^256)&255}function T(a,b){return a.s=a.l=a.C=a.b^b}m.F=function(a){return this.o.F(a)};
m.P=function(a,b){this.o.P(a,b)};function U(a){var b=a.F(a.m);D(a,a.m+1);return b}function V(a){var b=Ya(a.o,a.m);D(a,a.m+2);return b}function W(a){var b=Ya(a.o,a.A);a.A=a.A+2&65535;return b}function X(a,b){a.A=a.A-2&65535;ab(a.o,a.A,b)}function Y(a,b,c,d){d=d||2;a.B[b]&&(void 0===c&&(a.h.da=!0,a.J("Value for "+b+" is invalid"),wb(a)),c=!a.h.V||a.h.Ua?n(c,d):"--------".substr(0,d),a.B[b].textContent!=c&&(a.B[b].textContent=c))}
m.ga=function(a){this.ca&&(a||!this.h.V||this.h.Ua)&&(Y(this,"A",this.b),Y(this,"B",this.f),Y(this,"C",this.v),Y(this,"BC",Kb(this),4),Y(this,"D",this.g),Y(this,"E",this.w),Y(this,"DE",G(this),4),Y(this,"H",this.i),Y(this,"L",this.j),Y(this,"HL",H(this),4),Y(this,"SP",this.A,4),Y(this,"PC",this.m,4),a=Jb(this),Y(this,"PS",a,4),Y(this,"IF",a&512?1:0,1),Y(this,"SF",a&128?1:0,1),Y(this,"ZF",a&64?1:0,1),Y(this,"AF",a&16?1:0,1),Y(this,"PF",a&4?1:0,1),Y(this,"CF",a&1?1:0,1));if(a=this.B.speed)a.textContent=
this.h.V&&this.c.ea?this.c.ea.toFixed(2)+"Mhz":"Stopped"};m.bb=function(a){this.h.Da=!0;this.h.ib=!1;this.h.Va=!1;this.L=this.a=a;do{if(a=this.D)this.D&8&&this.H&512?(a=199|(this.D&7)<<3,this.D&=-16,this.H&=-513,this.aa[a].call(this),a=!0):a=!1,a=!a;if(a&&this.D&16){this.a=0;break}this.aa[U(this)].call(this)}while(0<this.a);return this.h.Da?this.L-this.a:void 0===this.h.Da?0:-1};wa(function(){for(var a=z(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Db(d);Ja(d,c)}});
function Qb(){this.a-=4}function Rb(){D(this,V(this));this.a-=10}function Sb(){D(this,W(this));this.a-=10}function Tb(){var a=V(this);X(this,this.m);D(this,a);this.a-=17}
var Eb=[Qb,function(){Lb(this,V(this));this.a-=10},function(){this.P(Kb(this),this.b);this.a-=7},function(){Lb(this,Kb(this)+1);this.a-=5},function(){this.f=Pb(this,this.f);this.a-=5},function(){this.f=Ob(this,this.f);this.a-=5},function(){this.f=U(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;L(this,a&256);this.a-=4},Qb,function(){var a;J(this,a=H(this)+Kb(this));L(this,a>>8&256);this.a-=10},function(){this.b=this.F(Kb(this));this.a-=7},function(){Lb(this,Kb(this)-1);this.a-=5},function(){this.v=
Pb(this,this.v);this.a-=5},function(){this.v=Ob(this,this.v);this.a-=5},function(){this.v=U(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;L(this,a);this.a-=4},Qb,function(){Mb(this,V(this));this.a-=10},function(){this.P(G(this),this.b);this.a-=7},function(){Mb(this,G(this)+1);this.a-=5},function(){this.g=Pb(this,this.g);this.a-=5},function(){this.g=Ob(this,this.g);this.a-=5},function(){this.g=U(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|K(this);L(this,a&256);this.a-=
4},Qb,function(){var a;J(this,a=H(this)+G(this));L(this,a>>8&256);this.a-=10},function(){this.b=this.F(G(this));this.a-=7},function(){Mb(this,G(this)-1);this.a-=5},function(){this.w=Pb(this,this.w);this.a-=5},function(){this.w=Ob(this,this.w);this.a-=5},function(){this.w=U(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},Qb,function(){J(this,V(this));this.a-=10},function(){var a=V(this);ab(this.o,a,H(this));this.a-=16},function(){J(this,H(this)+1);
this.a-=5},function(){this.i=Pb(this,this.i);this.a-=5},function(){this.i=Ob(this,this.i);this.a-=5},function(){this.i=U(this);this.a-=7},function(){var a=0,b=K(this);if((this.s^this.C)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=N(this,a);L(this,b?256:0);this.a-=4},Qb,function(){var a;J(this,a=H(this)+H(this));L(this,a>>8&256);this.a-=10},function(){var a;a=V(this);a=Ya(this.o,a);J(this,a);this.a-=16},function(){J(this,H(this)-1);this.a-=5},function(){this.j=Pb(this,this.j);this.a-=
5},function(){this.j=Ob(this,this.j);this.a-=5},function(){this.j=U(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},Qb,function(){this.A=V(this)&65535;this.a-=10},function(){this.P(V(this),this.b);this.a-=13},function(){this.A=this.A+1&65535;this.a-=5},function(){var a=H(this);this.P(a,Pb(this,this.F(a)));this.a-=10},function(){var a=H(this);this.P(a,Ob(this,this.F(a)));this.a-=10},function(){this.P(H(this),U(this));this.a-=10},function(){this.l|=256;this.a-=4},Qb,function(){var a;J(this,
a=H(this)+this.A);L(this,a>>8&256);this.a-=10},function(){this.b=this.F(V(this));this.a-=13},function(){this.A=this.A-1&65535;this.a-=5},function(){this.b=Pb(this,this.b);this.a-=5},function(){this.b=Ob(this,this.b);this.a-=5},function(){this.b=U(this);this.a-=7},function(){L(this,K(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.f=this.v;this.a-=5},function(){this.f=this.g;this.a-=5},function(){this.f=this.w;this.a-=5},function(){this.f=this.i;this.a-=5},function(){this.f=this.j;this.a-=
5},function(){this.f=this.F(H(this));this.a-=7},function(){this.f=this.b;this.a-=5},function(){this.v=this.f;this.a-=5},function(){this.a-=5},function(){this.v=this.g;this.a-=5},function(){this.v=this.w;this.a-=5},function(){this.v=this.i;this.a-=5},function(){this.v=this.j;this.a-=5},function(){this.v=this.F(H(this));this.a-=7},function(){this.v=this.b;this.a-=5},function(){this.g=this.f;this.a-=5},function(){this.g=this.v;this.a-=5},function(){this.a-=5},function(){this.g=this.w;this.a-=5},function(){this.g=
this.i;this.a-=5},function(){this.g=this.j;this.a-=5},function(){this.g=this.F(H(this));this.a-=7},function(){this.g=this.b;this.a-=5},function(){this.w=this.f;this.a-=5},function(){this.w=this.v;this.a-=5},function(){this.w=this.g;this.a-=5},function(){this.a-=5},function(){this.w=this.i;this.a-=5},function(){this.w=this.j;this.a-=5},function(){this.w=this.F(H(this));this.a-=7},function(){this.w=this.b;this.a-=5},function(){this.i=this.f;this.a-=5},function(){this.i=this.v;this.a-=5},function(){this.i=
this.g;this.a-=5},function(){this.i=this.w;this.a-=5},function(){this.a-=5},function(){this.i=this.j;this.a-=5},function(){this.i=this.F(H(this));this.a-=7},function(){this.i=this.b;this.a-=5},function(){this.j=this.f;this.a-=5},function(){this.j=this.v;this.a-=5},function(){this.j=this.g;this.a-=5},function(){this.j=this.w;this.a-=5},function(){this.j=this.i;this.a-=5},function(){this.a-=5},function(){this.j=this.F(H(this));this.a-=7},function(){this.j=this.b;this.a-=5},function(){this.P(H(this),
this.f);this.a-=7},function(){this.P(H(this),this.v);this.a-=7},function(){this.P(H(this),this.g);this.a-=7},function(){this.P(H(this),this.w);this.a-=7},function(){this.P(H(this),this.i);this.a-=7},function(){this.P(H(this),this.j);this.a-=7},function(){var a=this.m-1;if(this.T.length)for(var b=0;b<this.T.length;b++)if(this.T[b](a))return;this.D|=16;this.a-=7;this.H&512||wb(this)},function(){this.P(H(this),this.b);this.a-=7},function(){this.b=this.f;this.a-=5},function(){this.b=this.v;this.a-=5},
function(){this.b=this.g;this.a-=5},function(){this.b=this.w;this.a-=5},function(){this.b=this.i;this.a-=5},function(){this.b=this.j;this.a-=5},function(){this.b=this.F(H(this));this.a-=7},function(){this.a-=5},function(){this.b=N(this,this.f);this.a-=4},function(){this.b=N(this,this.v);this.a-=4},function(){this.b=N(this,this.g);this.a-=4},function(){this.b=N(this,this.w);this.a-=4},function(){this.b=N(this,this.i);this.a-=4},function(){this.b=N(this,this.j);this.a-=4},function(){this.b=N(this,this.F(H(this)));
this.a-=7},function(){this.b=N(this,this.b);this.a-=4},function(){this.b=O(this,this.f);this.a-=4},function(){this.b=O(this,this.v);this.a-=4},function(){this.b=O(this,this.g);this.a-=4},function(){this.b=O(this,this.w);this.a-=4},function(){this.b=O(this,this.i);this.a-=4},function(){this.b=O(this,this.j);this.a-=4},function(){this.b=O(this,this.F(H(this)));this.a-=7},function(){this.b=O(this,this.b);this.a-=4},function(){this.b=R(this,this.f);this.a-=4},function(){this.b=R(this,this.v);this.a-=
4},function(){this.b=R(this,this.g);this.a-=4},function(){this.b=R(this,this.w);this.a-=4},function(){this.b=R(this,this.i);this.a-=4},function(){this.b=R(this,this.j);this.a-=4},function(){this.b=R(this,this.F(H(this)));this.a-=7},function(){this.b=R(this,this.b);this.a-=4},function(){this.b=S(this,this.f);this.a-=4},function(){this.b=S(this,this.v);this.a-=4},function(){this.b=S(this,this.g);this.a-=4},function(){this.b=S(this,this.w);this.a-=4},function(){this.b=S(this,this.i);this.a-=4},function(){this.b=
S(this,this.j);this.a-=4},function(){this.b=S(this,this.F(H(this)));this.a-=7},function(){this.b=S(this,this.b);this.a-=4},function(){this.b=P(this,this.f);this.a-=4},function(){this.b=P(this,this.v);this.a-=4},function(){this.b=P(this,this.g);this.a-=4},function(){this.b=P(this,this.w);this.a-=4},function(){this.b=P(this,this.i);this.a-=4},function(){this.b=P(this,this.j);this.a-=4},function(){this.b=P(this,this.F(H(this)));this.a-=7},function(){this.b=P(this,this.b);this.a-=4},function(){this.b=
T(this,this.f);this.a-=4},function(){this.b=T(this,this.v);this.a-=4},function(){this.b=T(this,this.g);this.a-=4},function(){this.b=T(this,this.w);this.a-=4},function(){this.b=T(this,this.i);this.a-=4},function(){this.b=T(this,this.j);this.a-=4},function(){this.b=T(this,this.F(H(this)));this.a-=7},function(){this.b=T(this,this.b);this.a-=4},function(){this.b=Q(this,this.f);this.a-=4},function(){this.b=Q(this,this.v);this.a-=4},function(){this.b=Q(this,this.g);this.a-=4},function(){this.b=Q(this,this.w);
this.a-=4},function(){this.b=Q(this,this.i);this.a-=4},function(){this.b=Q(this,this.j);this.a-=4},function(){this.b=Q(this,this.F(H(this)));this.a-=7},function(){this.b=Q(this,this.b);this.a-=4},function(){R(this,this.f);this.a-=4},function(){R(this,this.v);this.a-=4},function(){R(this,this.g);this.a-=4},function(){R(this,this.w);this.a-=4},function(){R(this,this.i);this.a-=4},function(){R(this,this.j);this.a-=4},function(){R(this,this.F(H(this)));this.a-=7},function(){R(this,this.b);this.a-=4},
function(){this.l&255&&(D(this,W(this)),this.a-=6);this.a-=5},function(){Lb(this,W(this));this.a-=10},function(){var a=V(this);this.l&255&&D(this,a);this.a-=10},Rb,function(){var a=V(this);this.l&255&&(X(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){X(this,Kb(this));this.a-=11},function(){this.b=N(this,U(this));this.a-=7},function(){X(this,this.m);D(this,0);this.a-=11},function(){this.l&255||(D(this,W(this)),this.a-=6);this.a-=5},Sb,function(){var a=V(this);this.l&255||D(this,a);this.a-=
10},Rb,function(){var a=V(this);this.l&255||(X(this,this.m),D(this,a),this.a-=6);this.a-=11},Tb,function(){this.b=O(this,U(this));this.a-=7},function(){X(this,this.m);D(this,8);this.a-=11},function(){K(this)||(D(this,W(this)),this.a-=6);this.a-=5},function(){Mb(this,W(this));this.a-=10},function(){var a=V(this);K(this)||D(this,a);this.a-=10},function(){for(var a=U(this),b=this.o,c=this.b,d=this.m+-2&65535,e=1,f=0;0<e;){var h=b.m[a],g=b.D[a]||1,l=1==g?255:2==g?65535:-1,l=(c>>>=f)&l;if(void 0!==h&&
h[0])h[0](a,l,d);f+=g<<3;a+=g;e-=g}this.a-=10},function(){var a=V(this);K(this)||(X(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){X(this,G(this));this.a-=11},function(){this.b=R(this,U(this));this.a-=7},function(){X(this,this.m);D(this,16);this.a-=11},function(){K(this)&&(D(this,W(this)),this.a-=6);this.a-=5},Sb,function(){var a=V(this);K(this)&&D(this,a);this.a-=10},function(){for(var a=U(this),b=this.o,c=this.m+-2&65535,d=1,e=0,f=0;0<d;){var h=b.l[a],g=b.C[a]||1,l=1==g?255:2==g?65535:
-1,k=l;void 0!==h&&h[0]&&(k=h[0](a,c),void 0===k?k=l:k&=l);e|=k<<f;f+=g<<3;a+=g;d-=g}this.b=e&255;this.a-=10},function(){var a=V(this);K(this)&&(X(this,this.m),D(this,a),this.a-=6);this.a-=11},Tb,function(){this.b=S(this,U(this));this.a-=7},function(){X(this,this.m);D(this,24);this.a-=11},function(){Nb(this)||(D(this,W(this)),this.a-=6);this.a-=5},function(){J(this,W(this));this.a-=10},function(){var a=V(this);Nb(this)||D(this,a);this.a-=10},function(){var a=W(this);X(this,H(this));J(this,a);this.a-=
18},function(){var a=V(this);Nb(this)||(X(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){X(this,H(this));this.a-=11},function(){this.b=P(this,U(this));this.a-=7},function(){X(this,this.m);D(this,32);this.a-=11},function(){Nb(this)&&(D(this,W(this)),this.a-=6);this.a-=5},function(){D(this,H(this));this.a-=5},function(){var a=V(this);Nb(this)&&D(this,a);this.a-=10},function(){var a=H(this);J(this,G(this));Mb(this,a);this.a-=5},function(){var a=V(this);Nb(this)&&(X(this,this.m),D(this,a),this.a-=
6);this.a-=11},Tb,function(){this.b=T(this,U(this));this.a-=7},function(){X(this,this.m);D(this,40);this.a-=11},function(){this.s&128||(D(this,W(this)),this.a-=6);this.a-=5},function(){var a=W(this);Hb(this,a&255|this.H&-256);this.b=a>>8;this.a-=10},function(){var a=V(this);this.s&128||D(this,a);this.a-=10},function(){this.H&=-513;this.a-=4},function(){var a=V(this);this.s&128||(X(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){X(this,Jb(this)&255|this.b<<8);this.a-=11},function(){this.b=
Q(this,U(this));this.a-=7},function(){X(this,this.m);D(this,48);this.a-=11},function(){this.s&128&&(D(this,W(this)),this.a-=6);this.a-=5},function(){this.A=H(this)&65535;this.a-=5},function(){var a=V(this);this.s&128&&D(this,a);this.a-=10},function(){this.H|=512;this.a-=4},function(){var a=V(this);this.s&128&&(X(this,this.m),D(this,a),this.a-=6);this.a-=11},Tb,function(){R(this,U(this));this.a-=7},function(){X(this,this.m);D(this,56);this.a-=11}];
function Z(a){u.call(this,"ChipSet",a,Z);var b=a.model;b&&!Ub[b]&&r("Unrecognized ChipSet model: "+b);this.S=Ub[b]||Vb;a.sound&&(this.m=null,window&&(this.m=window.AudioContext||window.webkitAudioContext),this.m&&new this.m);B(this)}w(Z);var Vb=1978.1,Ub={SI1978:Vb};m=Z.prototype;m.O=function(){return!1};
m.$=function(a,b,c,d){this.o=b;this.a=c;this.I=d;this.u=a;if(this.S==Vb){var e;a=Wb;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.l[g]?r("Input port 0x"+n(g,4)+" already registered"):c.l[g]=[h,!1]}var l;e=Xb;void 0===l&&(l=0);for(var k in e)if(f=b,a=+k+l,c=e[k].bind(this),void 0!==c)for(d=+k+l;d<=a;d++)void 0!==f.m[d]?r("Output port 0x"+n(d,4)+" already registered"):f.m[d]=[c,!1]}};
m.X=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.W=function(a){return a?this.save():!0};m.reset=function(){this.j=14;this.b=8;this.g=this.i=this.f=this.c=this.l=0};m.save=function(){var a=new E(this);this.S==Vb&&F(a,0,[this.j,this.b,this.l,this.c,this.f,this.g,this.i]);return a.data()};m.restore=function(a){a=a[0];this.S==Vb&&(this.j=a[0],this.b=a[1],this.l=a[2],this.c=a[3],this.f=a[4],this.g=a[5],this.i=a[6]);return!0};m.start=function(){};m.stop=function(){};
function Yb(a,b,c){a.b&=~b;c&&(a.b|=b)}m.kb=function(){return this.j};m.lb=function(){return this.b};m.mb=function(){return this.l};m.jb=function(){return this.c>>8-this.f&255};m.ob=function(a,b){this.f=b};m.qb=function(a,b){this.g=b};m.pb=function(a,b){this.c=b<<8|this.c>>8};m.rb=function(a,b){this.i=b};m.sb=function(){};var Wb={0:Z.prototype.kb,1:Z.prototype.lb,2:Z.prototype.mb,3:Z.prototype.jb},Xb={2:Z.prototype.ob,3:Z.prototype.qb,4:Z.prototype.pb,5:Z.prototype.rb,6:Z.prototype.sb};
wa(function(){for(var a=z(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Z(d);Ja(d,c)}});function Zb(a){u.call(this,"ROM",a,Zb);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.g=a.file;this.m=da(this.g);if(this.g){a=this.g;var b=ea(this.m);"json"!=b&&"hex"!=b&&(a=la()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,f){$b(c,a,b,f)})}}w(Zb);var ac=[0,5];
Zb.prototype.$=function(a,b,c,d){this.o=b;this.a=c;this.I=d;bc(this)};Zb.prototype.X=function(){this.i&&(this.I&&this.I.a(this.id,this.j,this.c,this.i),delete this.i);return!0};Zb.prototype.W=function(){return!0};
function $b(a,b,c,d){if(d)a.J("Unable to load system ROM (error "+d+": "+b+")");else{Ha(a.Qa,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.b=f;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=e;a.i=e.symbols;if(!a.b.length){r("Empty ROM: "+b);return}if(1==a.b.length){r(a.b[0]);return}}catch(g){a.J("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=ca(b[e]);bc(a)}}
function bc(a){if(!Na(a))if(!a.g)B(a);else if(a.b&&a.o){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.h.da=!0;a.J(b)}else if(cc(a,a.j)){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.o,h=d.c,g=[],l=d.j>>>f.c;0<h&&l<f.b.length;)g.push(f.b[l++]),h-=f.f;f=d.o;d=d.c;h=0;for(e>>>=f.c;0<d&&e<f.b.length;){l=g[h++];if(!l)break;f.b[e++]=l;d-=f.f}}delete a.b}B(a)}}
function cc(a,b){if(Va(a.o,b,a.c,a.l?1:gb)){var c;for(c=0;c<a.b.length;c++)$a(a.o,b+c,a.b[c]);if(a.l&&256==b){for(c=0;c<ac.length;c++)$a(a.o,ac[c],118);Gb(a.a,function(a){return function(b){if(0<=ac.indexOf(b)){var c=!1,h=a.a,g=a.I;if(5==b)switch(c=!0,h.v){case 2:dc(a,String.fromCharCode(h.w));break;case 9:for(var l=G(h),k="",t=255;t--;){var q=a.a.F(l++);if(36==q)break;k+=String.fromCharCode(q)}dc(a,k);break;default:c=!1}c?Sb.call(h):g&&(a.R("\nCP/M vector 0x"+n(b,4)),D(h,b),wb(g));b=!0}else b=!1;
return b}}(a));Ib(a.a,b)}return!0}return!1}function dc(a,b){b=b.replace(/\r/g,"");a.Z&&(a.Z.value+=b,a.Z.scrollTop=a.Z.scrollHeight)}wa(function(){for(var a=z(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Zb(d);Ja(d,c)}});function ec(a){u.call(this,"RAM",a,ec);this.f=a.addr;this.c=a.size;this.b=!1}w(ec);m=ec.prototype;m.$=function(a,b,c,d){this.o=b;this.a=c;this.I=d;B(this)};m.X=function(a,b){b||this.reset();return!0};m.W=function(a){return a?this.save():!0};
m.reset=function(){!this.b&&this.c&&Va(this.o,this.f,this.c,1)&&(this.b=!0);this.b||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};wa(function(){for(var a=z(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new ec(d);Ja(d,c)}});function fc(a){u.call(this,"Keyboard",a,fc);this.reset();B(this)}w(fc);var gc={"1p":49,"2p":50,coin:51,left:37,right:39,fire:32},ic={65:37,68:39,76:32};fc.prototype.reset=function(){this.a={}};
fc.prototype.O=function(a,b,c){var d=this;a=a+"-"+b;if(void 0===this.B[a])switch(b){case "kbd":return c.onkeydown=function(a){return jc(d,a,!0)},c.onkeyup=function(a){return jc(d,a,!1)},!0;default:if(void 0!==gc[b])return this.B[a]=c,a=function(a,b){return function(){kc(a,b,!0)}}(this,b),b=function(a,b){return function(){kc(a,b,!1)}}(this,b),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}return!1};
fc.prototype.$=function(a,b,c,d){this.I=d;this.G=Ra(a,"ChipSet")};function jc(a,b,c){var d=!0,e;a:{e=b.keyCode;e=ic[e]||e;for(var f in gc)if(gc[f]===e){e=f;break a}e=null}e&&(d=kc(a,e,c));d||b.preventDefault();return d}function kc(a,b,c){a.a[b]=c;if(a.G)switch(b){case "1p":Yb(a.G,4,c);break;case "2p":Yb(a.G,2,c);break;case "coin":Yb(a.G,1,c);break;case "left":Yb(a.G,32,c);break;case "right":Yb(a.G,64,c);break;case "fire":Yb(a.G,16,c)}return!1}
wa(function(){for(var a=z(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new fc(d);Ja(d,c)}});
function lc(a,b,c,d,e){var f=this;this.aa=ra("Gecko/");var h=["","moz","ms","webkit"];u.call(this,"Video",a,lc);this.K=a.screenWidth;this.A=a.screenHeight;this.S=a.bufferAddr;this.j=a.bufferCols;this.s=a.bufferRows;this.L=a.bufferBits||1;this.fb=a.bufferLeft||0;if(this.c=a.bufferRotate)this.c=this.c%360,0<this.c&&(this.c-=360),-90!=this.c&&(this.J("unsupported buffer rotation: "+this.c),this.c=0);this.gb=a.interruptRate;this.Y=a.refreshRate||60;this.g=b;this.i=c;this.C=(this.hb=d)||b||null;b=a.smoothing;
(c=Ba.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.i[d]){this.i[d]=b;break}if(this.f=a.screenRotate)this.f=this.f%360,0<this.f&&(this.f-=360),-90!=this.f?(this.J("unsupported screen rotation: "+this.f),this.f=0):(this.i.translate(0,this.A),this.i.rotate(this.f*Math.PI/180),this.i.scale(this.A/this.K,this.K/this.A));this.G=1<<this.L;this.m=Array(this.G+2);this.m[0]=[0,0,0,255];this.m[1]=[255,255,255,255];this.m[this.G+
0]=[255,255,0,255];this.m[this.G+1]=[0,255,0,255];a=this.j;b=this.s;this.c&&(a=this.s,b=this.j);this.ba=this.i.createImageData(a,b);this.l=document.createElement("canvas");this.l.width=a;this.l.height=b;this.eb=this.l.getContext("2d");if(this.b=e)if(this.b.ha=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.ha){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){mc(f,document.fullscreenElement||
document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){mc(f,null)},!1);break}}}w(lc);
lc.prototype.$=function(a,b,c,d){this.u=a;this.o=b;this.a=c;this.I=d;this.M=(this.j*this.L>>3)*this.s;Va(this.o,this.S,this.M,3)&&(this.ca=this.M>>1,this.Ba=16/this.L|0,this.T=!1,void 0===this.H||this.H.length!=this.ca)&&(this.H=Array(this.ca));(this.D=Ra(a,"Keyboard"))&&this.g&&this.D.O(this.hb?"textarea":"canvas","kbd",this.C);B(this)};
lc.prototype.O=function(a,b,c){var d=this;switch(b){case "fullScreen":return this.B[b]=c,this.b&&this.b.ha?c.onclick=function(){d.ha()}:c.parentNode.removeChild(c),!0}return!1};
lc.prototype.ha=function(){var a=!1;if(this.b){if(this.b.ha){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.K/this.A;b>c&&(a=Math.round(c/b*100)+"%")}this.aa?(this.g.style.width=a,this.g.style.width=a,this.g.style.display="block",this.g.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.ha();a=!0}this.C&&this.C.focus()}return a};
function mc(a,b){!b&&a.b&&(a.aa?a.g.style.width=a.g.style.height="":a.b.style.width=a.b.style.height="")}
wa(function(){for(var a=z(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=y(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(c.onresize=function(a,
b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ba.aspect);f&&.3<=f&&3.33>=f&&(va("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");ra("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new lc(d,e,h,f,c);Ja(d,c)}});
function E(a,b,c){this.id=a.id;this.key=nc(a,b,c);this.I=a.I;oc(this,a.$a)}function nc(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}
E.prototype={constructor:E,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){oc(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 oc(a,b){a[a.id]={};b&&F(a,"parms",b);a.a=!1}function pc(a){var b=!0;if(oa()){var c=JSON.stringify(a[a.id]);qa(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function qc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){r(c.message||c),b=!1}return b}function rc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:oa()&&(b=pa(a.key))?(a[a.id]=b,a.a=!0):!1}function sc(a,b){return a[a.id][b]||null}function F(a,b,c){try{a[a.id][b]=c}catch(d){}}
function tc(a,b,c){u.call(this,"Computer",a,tc);this.h.N=!1;uc(this,b);this.C=rb(this,"autoPower",a);this.f=0;this.K=a.busWidth||a.buswidth;this.b=vc;this.s=null;this.l=this.H=!1;this.L=rb(this,"url")||"";(Math.random()+.1).toString(36);this.c=wc(this);if(this.a=Ia("CPU",this.id)){this.I=Ia("Debugger",this.id);this.j=[];for(b=null;b=Ra(this,"Video",b);)this.j.push(b);this.o=new Ta({id:this.Qa+".bus",busWidth:this.K},this.a,this.I);var d,e=x(this.id);if((this.g=Ia("Panel",this.id))&&this.g.Z)for(b=
0;b<e.length;b++)d=e[b],d.J=this.g.J,d.R=this.g.R,d.Z=this.g.Z;this.R("PC8080 v1.23.2\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.$&&d.$(this,this.o,this.a,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.u=d:this.b=parseInt(d,10));var f;if(a=rb(this,"state")||(f=!0,a.state))b=this.D=a,f||(this.l=!0,this.b=vc),this.b&&(this.A=new E(this,"1.23.2"),rc(this.A)?b=null:delete this.A);
!b&&this.b&&(b=xc(this))&&(this.l=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.u=null,h.l=!1,h.J("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.s=b,h.H=!0);B(h)})}else B(this);this.B.power||(this.C=!0);!c&&this.C&&yc(this,this.wa)}else r("Unable to find CPU component")}w(tc);var vc=0;
function uc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.m=b}function rb(a,b,c){var d=b.toLowerCase(),d=Ba[b]||Ba[d];void 0===d&&a.m&&(d=a.m[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function yc(a,b,c){for(var d=x(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Na(f)){Na(f,function(){yc(a,b,c)});return}}b.call(a,c)}
function zc(a,b){var c=new E(a,"1.23.2","validate");if(rc(c)&&qc(c)){var d=sc(c,"timestamp"),e=b?sc(b,"timestamp"):"unknown";d!=e&&(a.J("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=tc.prototype;
m.wa=function(a){void 0===a&&(a=this.b||(this.s?1:vc));if(!this.f){this.f++;var b=!1,c=!1;this.G=!1;var d=this.A||new E(this,"1.23.2");if(-1==a)b=!0;else if(a>vc){if(rc(d,this.s)){this.i=new E(this,"1.23.2","failsafe");rc(this.i)&&(Ac(this,d),a=2,oc(this.i));F(this.i,"timestamp",ka());pc(this.i);var e=this.b&&!this.l;if(1==a||ma("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=qc(d)){var f=sc(d,"code"),h=sc(d,"data");f&&("ok"==f?rc(d,h):("error"==f&&
"no machine state"!=h?(this.J("Error: "+h),"unable to verify user"==h&&(qa("user",""),this.c=null)):this.R(f+": "+h),oc(d),rc(d)?(c=qc(d),e=!0):c=!1))}e&&zc(this,c?d:null)}else 2==a&&d.clear()}else zc(this);delete this.s;delete this.A}e=x(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=Bc(this,h,d,b,c));b=[d,a,c];-1!=a?yc(this,this.Ra,b):this.Ra(b)}};
function Bc(a,b,c,d,e){if(!b.h.N){b.h.N=!0;if(b.X){var f=null;e&&((f=sc(c,b.id))||(f=sc(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.X(f,d)&&f&&(r("Unable to restore state for "+b.type),a.D&&!a.H?(c.clear(),a.b=vc,window&&window.location.reload()):a.G=!0,b.X(null),e=!1)}if(!d&&b.za)for(a=b.za.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.Ra=function(a){var b=a[0],c=0>a[1];a=a[2];this.M=!0;this.h.N=!0;var d=this.B.power;d&&(d.textContent="Shutdown");this.a&&(Bc(this,this.a,b,c,a),vb(this.a));this.G&&(Ac(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
function Ac(a,b){if(ma("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.c||"",d=b.toString(),e={app:"PC8080",ver:"1.23.2"};e.url=a.L;e.user=c;e.type="bug";e.data=d;p("http://www.pcjs.org/api/v1/report",e,!0)}}
function Cc(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new E(a,"1.23.2"),h=new E(a,"1.23.2","validate"),g=ka();F(h,"timestamp",g);F(f,"timestamp",g);F(f,"version","1.23.2");F(f,"url",window?window.location.href:null);F(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.W&&(c&&wb(a.a),d=a.a.W(b,c),"object"===typeof d&&F(f,a.a.id,d),c&&(a.a.h.N=!1,!1===d&&(e=null)));for(var g=x(a.id),l=0;l<g.length;l++){var k=g[l];k.h.N&&(k.W&&(d=k.W(b,c),"object"===typeof d&&F(f,k.id,d)),c&&(k.h.N=
!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.c&&Dc(a,a.c,f.toString()),pc(h)&&pc(f)||(e=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&f.clear(g)):e=f.toString());c&&(a.h.N=!1,b=a.B.power)&&(b.textContent="Power");a.f=0;return e}m.reset=function(){this.o&&this.o.reset&&this.o.reset();for(var a=x(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.o&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=x(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
m.stop=function(a,b){for(var c=x(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
m.O=function(a,b,c){var d=this;switch(b){case "power":return this.B[b]=c,c.onclick=function(){d.f||(d.h.N?Cc(d,!1,!0):yc(d,d.wa))},!0;case "reset":return this.B[b]=c,c.onclick=function(){if(d.h.N&&!d.f)if(d.b&&!d.u){var a=ma("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Cc(d,a,!0);!a&&d.D?window&&window.location.reload():d.wa(vc)}else d.reset(),d.a&&vb(d.a)},!0;case "save":if(fa(la(),"pcjs.org")){c.parentNode.removeChild(c);break}this.B[b]=
c;c.onclick=function(){var a=wc(d,!0);if(a){var b=!!(d.b&&!d.u||d.D),c=Cc(d,b);b?Dc(d,a,c):d.J("Resume disabled, machine state not saved")}};return!0}return!1};
function wc(a,b){var c=a.c;c||(c=pa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Ec(a,c))||a.J("The user ID is invalid."))):b&&a.J("Browser local storage is not available"));return c}
function Ec(a,b){a.c=null;var c=p(la()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(qa("user",c.data),a.c=c.data)}catch(e){r(e.message+" ("+d+")")}return a.c}function xc(a){var b=null;a.c&&(b=la()+"/api/v1/user?req=load&user="+a.c+"&state="+nc(a,"1.23.2"));return b}
function Dc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=nc(a,"1.23.2");d.data=c;b=p(la()+"/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.J("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.J(c),qa("user",""),a.c=null)}}
function Ra(a,b,c){a=x(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 Bb(a,b){if(a.j.length){var c=0,d=0;b&&window&&(c=window.scrollX,d=window.scrollY);var e=a.j[0];e.C&&e.C.focus();b&&window&&window.scrollTo(c,d)}}m.ga=function(a){this.a&&this.a.ga(a);this.g&&this.g.ga(a)};
function Cb(a,b){for(var c=0;c<a.j.length;c++){var d=a.j[c],e=!0;if(0<=b){if(b&1)e=d.a,e.D=e.D&-8|10,e=!1;else{var f=d.a;f.D=f.D&-8|9}if(f=e&&d.T){for(var f=d.o,h=d.M,g=!0,l=d.S>>>f.c;0<h&&l<f.b.length;)f.b[l].U&&(f.b[l].U=g=!1,f.b[l].Ta=!0),h-=f.f,l++;f=g}f&&(e=!1)}if(e){var g=d.S,l=g+d.M,k=0,t=0,q=0,e=d.j,ja=0,f=d.s,hc=h=0,Ka=d.L,Kc=(1<<Ka)-1;d.fb&&(Ka=-Ka,hc=16+Ka);for(;g<l;){var A;A=d.o;var aa=g,La=aa&A.g,M=(aa&A.i)>>>A.c;A=La!=A.g?A.b[M].ab(La,aa):A.b[M++].Oa(La,aa)|A.b[M&A.u].Oa(0,aa+1)<<8;
if(d.T&&A===d.H[k])t+=d.Ba;else{d.H[k]=A;(aa=hc)&&(A=A>>8|(A&255)<<8);t<e&&(e=t);for(La=d.Ba;La--;){var ba=A>>aa&Kc,M=d.ba,I=t++,Za=ba,ba=void 0,ba=d.c?(M.height-I-1)*M.width+q:I+q*M.width;Za&&(208<=I&&236>I?Za=d.G+0:28<=I&&72>I&&(Za=d.G+1));I=d.m[Za];ba*=I.length;M.data[ba]=I[0];M.data[ba+1]=I[1];M.data[ba+2]=I[2];M.data[ba+3]=I[3];aa+=Ka}t>ja&&(ja=t);q<f&&(f=q);q>=h&&(h=q+1)}g+=2;k++;if(t>=d.j&&(t=0,q++,q>d.s))break}d.T=!0;e<d.j&&(g=ja-e,h-=f,d.c&&(l=e,k=g,e=f,g=h,f=d.j-(l+k),h=k),d.eb.putImageData(d.ba,
0,0,e,f,g,h),d.i.drawImage(d.l,0,0,d.l.width,d.l.height,0,0,d.K,d.A))}}}wa(function(){for(var a=z(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=z(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=y(f),h=new tc(h,d,!0);Ja(h,f);h.C&&yc(h,h.wa)}});sa.show.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=Ia("Computer",c.id))&&c.M&&!c.h.N&&c.wa(-1)}});
sa.exit.push(function(){for(var a=z(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=Ia("Computer",c.id))&&c.h.N&&Cc(c,!(!c.b||c.u),!0)}});var Fc=0;function Gc(a,b,c,d,e,f){e("Loading "+a+"...");p(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):Hc(g,a,b,c,d,e,f)})}
function Hc(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ha(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Ic(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Ic(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=g[0],k,t=/( [a-z]+=)(['"])(.*?)\2/g;k=t.exec(f);)l=0>l.indexOf(k[1])?l.replace(">",k[0]+">"):l.replace(new RegExp(k[1]+"(['\"])(.*?)\\1"),k[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],h);Ic(a,b,c)}})}else c(a,null)}
function Jc(a,b,c,d){function e(a){if(void 0===g){var b=h&&z(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ha(a))}function f(a){e("Error: "+a);l&&(--Fc||ya(!0));l=!1}var h,g,l=!0;Fc++;Ga[a]={};try{if(h=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=k:q.appendChild(document.createTextNode(k));t.appendChild(q)}c||
(c="/versions/pc8080/1.23.2/components.xsl");k=function(d,g){g?Gc(c,null,null,!1,e,function(d,k){if(k)if(Ha(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Fc||ya(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--Fc||ya(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Gc(b,a,d,!0,e,k):Hc(b,null,a,d,!1,e,k)}else f("missing machine element: "+a)}catch(ja){f(ja.message)}return l}window.embedPC8080=function(a,b,c,d){ya(!1);return Jc(a,b,c,d)};window.enableEvents=ya;window.sendEvent=za;
function Lc(a,b,c,d){if(!c&&b){d.push(b);a=Ga[d[0]];b=null;for(var e in a)if(fa(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?p(b,null,!0,function(a,b){Mc(b,d)}):Mc(null,d)}else r("Error ("+c+") requesting "+a)}
function Mc(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Ga[f],l={},k;for(k in g){var t=g[k],q=ea(k);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(g[k]);){var ja=d[2];ja&&(g[ja]||(t=t.replace(d[0],"")))}d=k=da(k)}else"xsl"==q&&(e=k=da(k));l[k]=t}a&&(l[k="css"]=a);b[2]&&(l[k="parms"]=b[2]);b[3]&&(l[k="state"]=b[3]);d&&e?(k=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+k+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),k=h,g=null,l="data:application/javascript,",l=ra("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),k&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=l,g.download=k,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+k+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(k?" ("+k+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",r(c)):r("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=Ia("Computer",a),e=Ia("Debugger",a);if(d){var f=Cc(d,!0),h=d.m?JSON.stringify(d.m):null;b||(b="/versions/pcx86/1.23.2/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,$a:h}))return!0;p(b,null,!0,function(c,d,e){Lc(c,d,e,[a,da(b,!0),h,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();