summaryrefslogtreecommitdiffstats
path: root/site
diff options
context:
space:
mode:
Diffstat (limited to 'site')
-rw-r--r--site/contrib/index.php84
-rw-r--r--site/css/main.css99
-rw-r--r--site/footer.php5
-rw-r--r--site/github/index.php145
-rw-r--r--site/index.php97
-rw-r--r--site/license.txt6
-rw-r--r--site/logo/license.txt2
-rw-r--r--site/logo/logo.svg66
-rw-r--r--site/readme.txt44
-rw-r--r--site/variables.php17
-rw-r--r--site/vortex86ex/array.php594
-rw-r--r--site/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.d52.txt2444
-rw-r--r--site/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.dis51.txt3079
-rwxr-xr-xsite/vortex86ex/dmp_kbd_fw_part1.inc.txt531
-rw-r--r--site/vortex86ex/index.php307
15 files changed, 7520 insertions, 0 deletions
diff --git a/site/contrib/index.php b/site/contrib/index.php
new file mode 100644
index 0000000..9e48839
--- /dev/null
+++ b/site/contrib/index.php
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="stylesheet" type="text/css" href="../css/main.css" />
+
+ <title>Libreboot project maintainers</title>
+
+</head>
+
+<?php
+ include_once "../variables.php";
+?>
+
+<body>
+
+ <div class="contain">
+
+ <div id="libreboot" class="section intro">
+
+ <h1>Libreboot project maintainers</h1>
+
+ <p>
+ List of project maintainers, and how to contact them. <a href="../">Back to homepage</a>
+ </p>
+
+ </div>
+
+ <div class="section">
+
+ <h2>Francis Rowe</h2>
+ <p>
+ Main developer, manages the libreboot website and git repository.
+ He can be contacted on IRC (freenode) in #libreboot by the alias <b>fchmmr</b>, or
+ you can contact him by his email address <a href="mailto:info@gluglug.org.uk">info@gluglug.org.uk</a>
+ (<a href="http://gluglug.org.uk/glugkey">GPG</a>).
+ </p>
+ <h2>Michał Masłowski</h2>
+ <p>
+ Maintains the libreboot bug tracker linked from the homepage.
+ Coreboot developer, responsible for porting new boards that are compatible with libreboot.
+ Contact him by his alias <b>mtjm</b> on the
+ libreboot IRC channel, or find contact information (including GPG keys) on his website <a href="http://mtjm.eu/">http://mtjm.eu/</a>
+ </p>
+ <h2>Patrick &quot;P. J.&quot; McDermott</h2>
+ <p>
+ <a href="http://proteanos.com/">ProteanOS</a> maintainer, responsible for maintaining ProteanOS builds on many libreboot
+ targets. His alias on the libreboot IRC channel is <b>pehjota</b>, or you can find contact information on
+ the <a href="http://proteanos.com/contact/">ProteanOS website</a>.
+ </p>
+ <h2>Lisa Maginnis</h2>
+ <p>
+ <a href="https://fsf.org/">FSF</a> sysadmin, responsible for maintaining the libreboot and libreboot-dev mailing lists.
+ Contact <b>nully</b> in the libreboot IRC channel.
+ </p>
+ <h2>Steve Shenton</h2>
+ <p>
+ Wrote the original ich9deblob utility (ich9gen is based on it), which was used to
+ <a href="../gitdocs/hcl/gm45_remove_me.html">remove the ME</a> on ICH9-M
+ laptops (originally the ThinkPad X200, and later expanded to more laptops). Contact <b>sgsit</b> on
+ the libreboot IRC channel.
+ </p>
+ <h2>Marcus Moeller</h2>
+ <p>
+ Created the deer logo for use by the libreboot project. Contact <b>marcus</b> on the libreboot IRC channel.
+ </p>
+
+ </div>
+
+ <div class="section footer">
+
+<?php
+ include "../footer.php";
+?>
+
+ </div>
+
+ </div>
+
+</body>
+</html>
+
diff --git a/site/css/main.css b/site/css/main.css
new file mode 100644
index 0000000..07dba0a
--- /dev/null
+++ b/site/css/main.css
@@ -0,0 +1,99 @@
+body {
+ background:#f4f4f4;
+ color:#2B2B2B;
+ font-family:Lato,sans-serif;
+ font-size:0.92em;
+ font-weight:400;
+ padding:0px;
+ margin:0px;
+}
+div.contain {
+ max-width:60em;
+ margin:0 auto;
+}
+div.section {
+ background:#FFF;
+ border-radius:0.5em;
+ box-shadow: 0px 0px 5px 0px rgba(50, 50, 50, 0.75);
+ padding:1em;
+ margin:1em;
+ margin-left:0px;
+}
+div.unstable {
+ margin-right:0px;
+}
+.fullheight {
+ clear:both;
+}
+.fullheight .section {
+ float:left;
+}
+.stable, .unstable {
+ display:inline-block;
+ min-width:45%;
+ min-height:18em;
+ max-width:27em;
+}
+p, aside, li {
+ margin: 0.33em 0px 0.6em;
+ text-align:justify;
+}
+a {
+ color:#2B2BAA;
+ font-size:1.1em;
+}
+a:hover {
+ text-decoration:none;
+}
+h1,h2,h3 {
+ margin-bottom:0.2em;
+ margin-top:0.2em;
+}
+img {
+ max-width:100%;
+ height:auto;
+ border:solid 0.5em #fff;
+ border-radius:0.25em;
+ box-shadow: 0px 0px 5px 0px rgba(50, 50, 50, 0.75);
+ margin:0px;
+ padding:0px;
+ margin-right:1em;
+ margin-bottom:1em;
+}
+p.lenovobios {
+ font-weight:bold; color:#f00; font-style:italic; font-size:1.2em;
+}
+p.lenovobios:hover {
+ color: #000;
+}
+div.important, pre, div.subsection {
+ padding:1em;
+ margin-bottom:1em;
+ background-color:#ece0e2;
+ border-radius:0.25em;
+ box-shadow: 0px 0px 5px 0px rgba(50, 50, 50, 0.75);
+}
+.contact {
+ clear:both;
+}
+.ulnav {
+ padding:0em;
+}
+.ulnav li {
+ display:inline-block;
+ margin-left:0.5em;
+ margin-right:0.5em;
+ padding:0em;
+}
+.homepage_logo {
+ padding:0px;
+ margin:0px;
+ margin-left:1em;
+ margin-right:1em;
+ border:none;
+ border-radius:0px;
+ box-shadow:none;
+ height:10em;
+ width:auto;
+ float:right;
+}
diff --git a/site/footer.php b/site/footer.php
new file mode 100644
index 0000000..34b7f54
--- /dev/null
+++ b/site/footer.php
@@ -0,0 +1,5 @@
+
+ <p>This website is hosted on a Libreboot machine, powered by <a href="https://trisquel.info/">Trisquel GNU/Linux-libre</a> and <a href="http://www.lighttpd.net/">Lighttpd</a>.</p>
+ <p>
+ Download this website: <b>git clone <a href="<?php echo $lbWebsiteGitwebAddress; ?>"><?php echo $lbWebsiteGitRepoAddress; ?></a></b>
+ </p>
diff --git a/site/github/index.php b/site/github/index.php
new file mode 100644
index 0000000..b0bfec9
--- /dev/null
+++ b/site/github/index.php
@@ -0,0 +1,145 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="stylesheet" type="text/css" href="../css/main.css" />
+
+ <title>Please do not use GitHub!</title>
+
+</head>
+
+<?php
+ include_once "../variables.php";
+?>
+
+<body>
+
+ <div class="contain">
+
+ <div id="libreboot" class="section intro">
+
+ <h1>Please do not use GitHub!</h1>
+
+ <p>
+ Please do not use GitHub to host libreboot.
+ Libreboot is a free software project, so this is only a request, and not a restriction on the software.
+ </p>
+
+ </div>
+
+ <div class="section">
+ <h2>What's wrong with GitHub?</h2>
+ <ul>
+ <li>
+ GitHub itself is proprietary software (Tim reasons it's for business
+ [<a href="http://tom.preston-werner.com/2011/11/22/open-source-everything.html">1</a>])
+ </li>
+ <li>
+ A patch[<a href="https://github.com/github/choosealicense.com/pull/177">2</a>] to
+ <a href="http://choosealicense.com">choose a license</a> was received with some hostility.
+ </li>
+ <li>Tim really likes to talk about freedom, but makes the following claims about the GPLv2/3:</li>
+ </ul>
+
+ <blockquote>
+ <p>
+ ...The GPL is not focused on freedom. It's too long.
+ Too many restrictions. -- Tom Preston-Werner OSCON2013
+ </p>
+ </blockquote>
+
+ <p>or how about:</p>
+
+ <blockquote>
+ <p>
+ Notice that everything we keep closed has specific business value
+ that could be compromised by giving it away to our competitors.
+ -- Tom Preston-Werner's
+ <a href="http://tom.preston-werner.com/2011/11/22/open-source-everything.html">blog</a>
+ </p>
+ </blockquote>
+
+ <p>
+ GitHub simply uses Free Software for its own benefit, releasing source code under a free license
+ only when suited to it's business goals; they are quite happy to violate the rights of their users, for profit.
+ </p>
+
+ <p>
+ By contrast, the libreboot project adheres strictly to the goals of the Free Software movement, which
+ seeks to eliminate proprietary software to the point where all software is free.
+ </p>
+
+ <p>
+ The opinions expressed by Tom Preston-Werner of GitHub are incompatible with those of
+ the libreboot project. Users and developers of
+ <em><a href="http://www.gnu.org/philosophy/free-sw.html">free software</a></em>
+ are strongly advised not to use GitHub, for any of their projects.
+ </p>
+
+ </div>
+
+ <div class="section">
+
+ <h2>Where should I host and share my code?</h2>
+ <p>
+ Here are a few examples:
+ </p>
+ <ul>
+ <li>
+ <a href="http://git-scm.com/doc">Host your own repositories</a>. This is exactly what libreboot does,
+ hosted on a machine that is <i>running</i> libreboot! You can use a frontend like
+ <a href="http://git-scm.com/book/en/v2/Git-on-the-Server-GitWeb">gitweb</a>
+ for easy viewing by others.
+ </li>
+ <li>
+ Use <a href="https://gitorious.org/">Gitorious</a>. Gitorious
+ <a href="https://gitorious.org/gitorious">source code</a> is available
+ as free software, making it a better choice for free software projects.
+ </li>
+ </ul>
+
+ <p>
+ [<a href="http://tom.preston-werner.com/2011/11/22/open-source-everything.html">1</a>]
+ <em>Open Source (Almost)</em> - http://tom.preston-werner.com/2011/11/22/open-source-everything.html
+ </p>
+
+ <p>
+ [<a href="https://github.com/github/choosealicense.com/pull/177">2</a>] <em>Choose A License GPL patch</em> -
+ https://github.com/github/choosealicense.com/pull/177
+ </p>
+
+ <p>
+ [<a href="http://lists.nongnu.org/archive/html/gnu-linux-libre/2014-08/msg00013.html">3</a>]
+ <em>linux-libre choosealicense issue</em> - http://lists.nongnu.org/archive/html/gnu-linux-libre/2014-08/msg00013.html
+ </p>
+
+ </div>
+
+ <div class="section">
+
+ <p>
+ This page was adapted from
+ <a href="http://librecmc.org/librecmc/wiki?name=github">http://librecmc.org/librecmc/wiki?name=github</a>,
+ licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a> like the original.
+ </p>
+ <p>
+ <a href="..">Back to libreboot.org homepage</a>
+ </p>
+
+ </div>
+
+ <div class="section footer">
+
+<?php
+ include "../footer.php";
+?>
+
+ </div>
+
+ </div>
+
+</body>
+</html>
+
diff --git a/site/index.php b/site/index.php
new file mode 100644
index 0000000..6c82088
--- /dev/null
+++ b/site/index.php
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <link rel="stylesheet" type="text/css" href="css/main.css" />
+
+ <title>Libreboot project</title>
+
+</head>
+
+<?php
+ include_once "variables.php";
+?>
+
+<body>
+
+ <div class="contain">
+
+ <div id="libreboot" class="section intro">
+ <p>
+ <img class="homepage_logo" src="logo/logo.svg" alt="" />
+ </p>
+ <h1>Libreboot project</h1>
+ <p>
+ Libreboot is a <a href="http://coreboot.org/">coreboot</a> distribution (distro) with proprietary software removed,
+ intended to be a <a href="https://www.fsf.org/about/what-is-free-software">free</a>
+ (libre) 'BIOS' replacement for your computer. The project is aimed at users, attempting to make
+ coreboot as easy to use as possible. <a href="docs/index.html#why">Learn more about libreboot</a>.
+ </p>
+ <p>
+ 'Free' in this sense refers to freedom (liberty); read the full <a href="https://www.gnu.org/philosophy/free-sw.html">Free Software definition</a>.
+ </p>
+ </div>
+
+ <div class="fullheight">
+ <div class="section stable" style="height:15em;">
+ <h1>Stable releases</h1>
+ <p>
+ These releases are tested, and recommended for general use.
+ Utilities (statically compiled) and ROM images are provided, built from the source code.
+ </p>
+ <ul class="ulnav">
+ <li><a href="docs/release.html">Downloads</a></li>
+ <li><a href="docs/install/index.html">How to install libreboot</a></li>
+ <li><a href="docs/gnulinux/index.html">How to install GNU/Linux on a libreboot system</a></li>
+ <li><a href="docs/hcl/index.html#supported_list">List of supported systems</a></li>
+ <li><a href="docs/index.html">General documentation</a></li>
+ </ul>
+ <p>
+ The latest release is from February 8th, 2015.
+ </p>
+ </div>
+ <div class="section unstable">
+ <h1>Development (unstable)</h1>
+ <p>Use this version if you want to <b>brick</b> your computer.</p>
+ <div class="subsection">
+ <p>
+ <b>git clone <a href="<?php echo $lbFirmwareGitwebAddress; ?>"><?php echo $lbFirmwareGitRepoAddress; ?></a></b>
+ </p>
+ </div>
+ <ul class="ulnav">
+ <li><a href="gitdocs/git/index.html#build_meta">How to use the git repository</a></li>
+ <li><a href="<?php echo $lbBugTrackerAddress; ?>">Bug tracker</a></li>
+ <li><a href="gitdocs/index.html">Documentation</a></li>
+ <li><b><a href="github/">Please do not use GitHub!</a></b></li>
+ </ul>
+ <p>
+ Snapshot (<a href="<?php echo $lbFirmwareGitwebAddress; ?>;a=commit;h=<?php include "git/commitid"; ?>">view commit</a>):
+ <a href="git/rom">ROM images</a>&nbsp;&nbsp;
+ <a href="git/libreboot_src.tar.xz">Source code</a>
+ </p>
+ </div>
+ </div>
+
+ <div class="section contact">
+ <h1>Contact information</h1>
+ <ul class="ulnav">
+ <li><a href="contrib/">List of maintainers</a></li>
+ <li><a href="<?php echo $userMailingListAddress; ?>">User support mailing list</a></li>
+ <li><a href="<?php echo $devMailingListAddress; ?>">Development mailing list</a></li>
+ <li><a href="<?php echo $ircChannelAddress; ?>"><?php echo $ircChannelName; ?></a></li>
+ </ul>
+ </div>
+
+ <div class="section footer">
+<?php
+ include "footer.php";
+?>
+ </div>
+
+ </div>
+
+</body>
+</html>
+
diff --git a/site/license.txt b/site/license.txt
new file mode 100644
index 0000000..d4cb6ee
--- /dev/null
+++ b/site/license.txt
@@ -0,0 +1,6 @@
+Copyright © 2015 Francis Rowe <info@gluglug.org.uk>
+Applies to the following: variables.php, readme.txt, .gitignore, index.php, footer.php, contrib/, css/, vortex86ex/
+...released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions.
+For a copy of that license, see https://creativecommons.org/licenses/by-sa/4.0/
+
+For other resources, different conditions apply.
diff --git a/site/logo/license.txt b/site/logo/license.txt
new file mode 100644
index 0000000..2e219bb
--- /dev/null
+++ b/site/logo/license.txt
@@ -0,0 +1,2 @@
+Copyright 2014 Marcus Moeller
+license: CC-0
diff --git a/site/logo/logo.svg b/site/logo/logo.svg
new file mode 100644
index 0000000..62147c1
--- /dev/null
+++ b/site/logo/logo.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="80mm"
+ height="80mm"
+ viewBox="0 0 283.46457 283.46456"
+ id="svg3349"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="Libreboot_Logo_Deer_only_black.svg">
+ <defs
+ id="defs3351" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="507.97245"
+ inkscape:cy="-55.115733"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1920"
+ inkscape:window-height="1150"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata3354">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Ebene 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-244.04728,-370.46192)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path10"
+ d="m 461.38431,532.68555 0.79438,-2.14488 c 1.82712,-4.76644 3.49543,-9.77117 4.76645,-14.93478 0.39734,-1.35049 0.55641,-2.62157 0.63551,-3.89259 -0.15906,2.78039 -0.0792,1.03274 0,-0.63551 0.39734,-7.86464 0.31751,-11.91611 -0.15906,-15.96757 -0.31751,-2.93927 -0.5558,-5.79912 -0.5558,-8.65898 -0.0792,-2.54209 -0.15906,-4.92532 -0.39735,-7.30854 -0.0792,-1.03273 -0.0792,-2.06541 -0.0792,-3.17761 0,-3.57483 0.39735,-7.0702 1.27108,-10.56556 l 1.27102,-0.55641 c 4.76644,-2.14494 8.97679,-5.32255 12.39274,-9.29454 l 1.66825,0 c 1.90659,0 3.81312,-0.23829 5.64024,-0.71498 2.38322,-0.55641 4.68703,-1.4299 6.91132,-2.46263 1.03273,-0.47657 1.98599,-1.1122 2.78044,-1.82712 0.55641,-0.55641 1.03268,-1.27108 1.4299,-1.98606 0.47657,-1.03267 1.27108,-1.82712 2.30375,-2.30375 0.95333,-0.47658 1.74772,-1.11215 2.14494,-2.06547 0.39735,-0.71492 0.31751,-1.58878 -0.0792,-2.30376 -0.47657,-0.79438 -1.27108,-1.50936 -2.14494,-1.74771 -0.95327,-0.39734 -1.90653,-0.71492 -2.78039,-1.11214 -1.58883,-0.71498 -2.85985,-1.27108 -4.05146,-1.82712 -0.63551,-0.31751 -2.62151,-1.03273 -4.60751,-1.50937 -2.14493,-0.63551 -4.21034,-1.1122 -6.27581,-1.66824 -1.58883,-0.47657 -4.05146,-1.50937 -6.27581,-2.93932 -2.93926,-1.74772 -5.95799,-3.25702 -9.05619,-4.44869 -2.22429,-0.8738 -4.68698,-1.35049 -7.14961,-1.50937 l -3.0982,0 -0.23829,-0.55641 -1.03273,-4.76638 -0.63551,-3.89259 -0.31751,-1.986 0.71498,-0.39734 c 3.49536,-2.22435 6.5141,-5.0048 8.97673,-8.26181 0.5564,-0.63551 0.71497,-1.42996 0.5564,-2.22435 -0.15906,-1.11214 -1.19161,-1.90659 -2.30375,-1.90659 -0.47657,0 -0.95326,0.15906 -1.27108,0.47657 l -3.17761,2.06547 c -2.14487,1.50937 -4.36922,2.78045 -6.67297,3.97206 l -0.47657,-0.63557 c -2.62157,-3.01874 -4.13094,-6.91132 -4.13094,-10.96279 l 0,-1.58877 c 0.23829,-1.66825 0.47657,-3.49537 0.71498,-5.40196 0.0792,-0.55641 0,-1.11214 -0.15906,-1.58883 -0.31751,-0.71492 -0.55579,-1.4299 -0.8738,-1.986 -0.15906,-0.55641 -0.6355,-0.95327 -1.19161,-1.03274 -0.63551,0 -1.19161,0 -1.74771,0.23829 -0.55641,0.23829 -1.19161,0.47657 -1.74765,0.79439 -0.55641,0.31751 -0.87386,0.79438 -1.03273,1.42989 -0.95333,3.01874 -1.35049,6.11694 -1.35049,9.29455 0,3.73371 0.63551,7.46742 1.82712,11.04225 0.55641,1.27102 1.11214,2.54204 1.82712,3.65424 1.19161,2.06547 2.22434,4.13088 3.17761,6.27581 1.27108,3.09814 1.90659,6.35522 1.90659,9.69171 l 0,0.71498 -1.03274,0.55641 c -2.5421,1.50936 -4.60756,3.73371 -5.87858,6.43468 l -0.95327,0 c -3.6543,0.31751 -7.22907,1.11215 -10.56562,2.46264 -2.06541,0.79438 -3.972,2.06546 -5.48136,3.57483 -0.31751,0.39735 -0.63551,0.87386 -0.79439,1.35049 l 0.8738,0.39734 1.19161,0.71498 1.19161,0.71492 1.03273,0.63557 c 0.47657,0.31751 1.03274,0.55641 1.58884,0.71492 1.35049,0.23828 2.62151,0.47657 3.97199,0.47657 2.30376,0.0792 4.60757,0.47657 6.83192,1.1122 l -0.55641,1.11215 c -0.63557,1.27108 -1.19161,2.54209 -1.66825,3.81318 -1.1122,3.49536 -2.06546,6.99072 -2.78044,10.48609 -1.58884,7.70577 -3.17761,14.85537 -4.92532,22.00504 -0.47658,2.14487 -1.4299,4.28975 -2.5421,6.27581 -4.28976,7.54683 -10.64497,13.6637 -18.35074,17.55629 -4.05147,2.14488 -8.42069,3.49543 -12.94879,4.28981 -7.30848,1.11214 -14.61702,1.82712 -21.8461,2.06541 -5.56083,0.15906 -11.36001,0.71498 -17.00025,1.82718 -2.62157,0.47657 -5.16361,0.95326 -7.6263,1.50937 -4.28975,0.87385 -8.57956,2.22428 -12.71044,3.97199 -4.76644,1.986 -9.21513,4.5281 -13.18713,7.70571 -3.33648,2.62157 -5.87858,6.11693 -7.30854,10.1684 -0.23829,0.55641 -0.31751,1.19161 -0.31751,1.82712 0,1.35049 0.47657,2.62151 1.42996,3.65424 0.95326,1.03273 2.30375,1.42996 3.65424,1.19161 l -1.11214,1.90659 c -0.47657,0.63551 -0.79439,1.35049 -1.11214,2.06547 -0.63558,1.74765 -1.19162,3.41596 -1.66831,5.24308 -1.35049,4.92526 -2.46263,9.6917 -3.41589,14.53755 -0.31751,1.82713 -1.50937,3.73372 -3.33655,5.0842 -0.63551,0.47658 -1.35049,0.95333 -2.06541,1.19162 -1.986,0.87385 -4.05146,1.50936 -6.03746,1.98599 -2.62157,0.55641 -5.0842,1.19161 -7.46742,1.74772 -0.55641,0.15906 -1.27102,0.63551 -1.74772,1.27102 -0.63551,0.95332 -1.11214,1.90659 -1.27102,3.01873 -0.15906,0.79445 -0.3175,1.50942 -0.39734,2.30381 -0.71498,4.28975 -1.74772,8.65897 -3.17761,12.78991 -1.42996,4.21034 -3.25708,8.34122 -5.32255,12.31327 -0.71492,1.35049 -1.42989,2.5421 -2.30375,3.81312 -0.63551,0.95327 -1.35049,2.06547 -1.82712,3.17761 -0.47657,0.95327 -0.95327,1.82712 -1.50937,2.70098 -0.31751,0.55641 -0.95332,1.03273 -1.58883,1.27108 l -0.87386,0.15906 c -1.66824,0.31751 -3.25702,0.79439 -4.68697,1.58877 -1.58878,0.79445 -3.09814,1.58884 -4.68692,2.38323 -3.49542,1.82712 -7.0702,5.16367 -9.6123,9.29454 -0.15906,0.31751 -0.31751,0.79439 -0.31751,1.27102 0,0.31751 0.0792,0.71498 0.23829,1.1122 0.47657,0.95327 1.50937,1.50937 2.5421,1.50937 10.00946,0.23828 19.54229,-3.89259 26.29473,-11.36001 1.98606,-2.22429 4.21034,-4.76639 6.51416,-7.22908 7.86458,-8.73844 12.63103,-15.01425 16.7619,-21.68722 0.31751,-0.47657 0.71498,-0.71498 1.1122,-0.71498 0.23829,0 0.39735,0 0.55641,0.0792 0.79439,0.39735 1.50937,0.63557 2.38316,0.71498 1.03274,0.23829 2.4627,0.39735 3.89259,0.71498 1.82712,0.23829 3.65431,0.31751 5.40196,0 2.85985,-0.39735 5.71971,-1.03273 8.42068,-1.986 4.05147,-1.35049 7.86459,-3.41595 11.20114,-6.11693 5.40195,-4.21034 10.64497,-8.89732 15.80863,-13.74323 2.5421,-2.46263 5.48137,-4.36922 8.73845,-5.71971 9.05619,-3.81312 18.74796,-6.27575 28.59854,-7.22908 3.65424,-0.31751 7.46742,-0.63551 11.20113,-0.79438 2.22429,-0.15907 4.5281,-0.39735 6.75238,-0.95327 2.62157,-0.71498 6.11694,-1.50936 9.6123,-2.38322 3.6543,-1.03274 6.1964,-1.74771 8.57957,-2.70098 4.05152,-1.50936 8.02352,-3.25708 11.91611,-5.00473 l 1.19161,0.47657 c 1.4299,0.71492 3.01873,1.11214 4.68697,1.27102 5.24308,0.23829 10.56557,-0.31751 15.64977,-1.82712 l 4.36922,-1.19161 2.14487,-0.63551 2.14488,-0.71498 3.01873,-0.95326 2.70098,-0.87386 c 1.98606,-0.55641 3.97205,-1.19161 6.03746,-1.82712 3.0982,-0.87386 4.92532,-1.35049 6.83191,-1.74771 l -1.11214,1.98599 -6.43469,12.47216 -6.59356,12.31327 -0.0792,0.23829 -1.66824,0.31751 c -1.27108,0.15906 -2.5421,0.47657 -3.73371,0.95332 -4.76645,1.90653 -9.29454,4.36922 -13.34601,7.46736 -1.35049,1.11221 -2.5421,2.46269 -3.25702,4.13094 -0.15906,0.31751 -0.47657,0.71498 -0.71498,1.03273 -0.23828,0.23829 -0.31751,0.5558 -0.31751,0.8738 0,0.39734 0.23829,0.87385 0.63551,1.1122 0.71498,0.39735 1.50937,0.87386 2.30376,1.27102 0.15906,0.0792 0.47657,0.15906 0.71498,0.23828 0.87385,0.0792 1.74771,0.15907 2.70097,0.15907 1.11221,0.0792 2.22435,0.15906 3.41596,0.23828 1.03273,0.0792 1.986,0 2.85985,-0.31751 1.50937,-0.47657 3.09814,-1.03273 4.60757,-1.74765 1.986,-0.95333 3.89253,-1.98606 5.71971,-3.17767 1.4299,-0.95327 2.78039,-2.06541 3.972,-3.33649 0.63551,-0.63551 2.38322,-2.46263 4.13087,-4.36922 5.00479,-5.16361 8.02352,-8.65897 10.88338,-12.2338 2.38316,-2.93933 4.5281,-5.95806 6.75244,-8.97679 1.986,-2.85986 3.81312,-5.6403 5.48136,-8.57956 0.87386,-1.42996 1.58884,-2.85986 2.38323,-4.36922 0.63551,-1.27109 1.11214,-2.70098 1.27101,-4.05147 0.31751,-1.58884 0,-3.25708 -0.79438,-4.60757 -0.63551,-0.95326 -1.42996,-1.66824 -2.46263,-2.22428 -0.55641,-0.23829 -1.11221,-0.39735 -1.74772,-0.55641 -0.39734,-0.0792 -0.79438,-0.23829 -1.19161,-0.47657 -1.11214,-0.79445 -2.38322,-1.35049 -3.73371,-1.66824 -0.55641,-0.15907 -1.27102,-0.23829 -1.90653,-0.23829 l -5.00479,0.15906 -2.70097,0.15906 -4.28976,0.15907 -10.16839,0 -4.05147,0.15906 c -4.8547,0.20942 -9.70939,1.08125 -14.23307,2.43837 z"
+ style="fill:#000000" />
+ </g>
+</svg>
diff --git a/site/readme.txt b/site/readme.txt
new file mode 100644
index 0000000..6f388ce
--- /dev/null
+++ b/site/readme.txt
@@ -0,0 +1,44 @@
+This is a clone of the libreboot website at libreboot.org. The main
+intention is to allow people to contribute to the website, but it
+can also help people to mirror the site if they want to.
+
+Mirroring libreboot:
+
+(these instructions aren't complete, and you can also cherry pick what
+you need instead of following these exactly)
+
+change the info in variables.php to what you want
+
+clone libreboot(website) and make that directory your docroot.
+
+Now, outside of the libreboot(website) clone, clone libreboot(firmware)
+and build it fully, using the libreboot instructions.
+in libreboot(website) clone, create a symlink called "git" to the
+release/ directory in your libreboot(firmware) clone.
+
+Setup a repository for your version of libreboot(website) in
+libreboot.org.git/ (or actually, whatever you want) in your
+libreboot(website) clone.
+
+Setup a repository for your version of libreboot(firmware) in
+libreboot.git (or actually, whatever you want) in your libreboot (website)
+clone.
+
+That's right. A repository in a clone of that repository.
+
+Populate docs/ in your libreboot(website) clone with a copy of docs/
+from your release archives. Advice: always keep these strictly for stable
+releases only (you can also backport stuff, as well).
+
+gitdocs/ should be a symlink to the docs/ directory in your clone of
+libreboot(firmware).
+
+Create a symlink "gitdocs" in your libreboot(website) clone pointing
+to docs/ in your libreboot(firmware) clone.
+
+Populate release/ with releases from the libreboot project.
+
+
+The live site should not expose the .git files/directories, only
+the repository should be accessible. Also, in the config file make sure
+to replace any paths from your system with the URL of your remote.
diff --git a/site/variables.php b/site/variables.php
new file mode 100644
index 0000000..d34bf0e
--- /dev/null
+++ b/site/variables.php
@@ -0,0 +1,17 @@
+<?php
+ $lbHomepage = "http://libreboot.org/";
+
+ $lbFirmwareGitRepoAddress = "http://libreboot.org/libreboot.git";
+ $lbFirmwareGitwebAddress = "http://libreboot.org/gitweb/?p=libreboot.git";
+
+ $lbWebsiteGitRepoAddress = "http://libreboot.org/libreboot.org.git";
+ $lbWebsiteGitwebAddress = "http://libreboot.org/gitweb/?p=libreboot.org.git";
+
+ $lbBugTrackerAddress = "http://projects.mtjm.eu/projects/libreboot";
+
+ $userMailingListAddress = "https://lists.nongnu.org/mailman/listinfo/libreboot";
+ $devMailingListAddress = "https://lists.nongnu.org/mailman/listinfo/libreboot-dev";
+
+ $ircChannelName = "#libreboot (FreeNode IRC)";
+ $ircChannelAddress = "https://webchat.freenode.net/?channels=libreboot";
+?>
diff --git a/site/vortex86ex/array.php b/site/vortex86ex/array.php
new file mode 100644
index 0000000..90bf210
--- /dev/null
+++ b/site/vortex86ex/array.php
@@ -0,0 +1,594 @@
+<?php
+/*
+# Copyright (C) 2014 Francis Rowe <info@gluglug.org.uk>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# The data from the $blob variable (see below) is taken
+# from src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc in coreboot* and
+# has different copyright terms. Check inside that file for details.
+# *http://coreboot.org/
+*/
+
+// steps below based on:
+// https://en.wikipedia.org/wiki/Intel_HEX#Format
+// Trying to disassemble http://libreboot.org/dmp_kbd_fw_part1.inc.txt
+// which is from coreboot (src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc).
+// The dissassemblers need intel hex format, so this script provides that.
+// 8051 disassembler used: dis51
+// 8052 disassembler used: d52
+// see results on http://libreboot.org/vortex86ex/
+
+$blob = array(
+"0204a3020afbef75",
+"f003a4ffae071fee",
+"70fa22020ad51209",
+"5e7f301205fb90e0",
+"007416f0120ddac2",
+"92c293c290d291d2",
+"b8d2bad288d2a8d2",
+"8ad2aa7d44e4ff12",
+"0e3a7d4d0f120e3a",
+"7d260f120e3a7d50",
+"0f120e3a120e59d2",
+"af7fb1120ef5900f",
+"fee493ffb4550aa3",
+"e493b4aa04d20880",
+"10efb4120c900fff",
+"e493b43404c208c2",
+"1212036c120da612",
+"010830012730121f",
+"20001c301119120d",
+"251209c4300805c2",
+"1a120a26120d92d2",
+"00120d3b1207c212",
+"0ddac20112036c12",
+"072e3012c43000c1",
+"90d000e030e0bac2",
+"af120e07500e120e",
+"b6120ebcd21a120a",
+"26120d3bd2af80a1",
+"ae03ab05531aef90",
+"d000e51af0ad078e",
+"337f20120d51431a",
+"1090d000e51af022",
+"da7e100914120da6",
+"90e000e0ff20e103",
+"0202c8c2a8c2aa20",
+"0403300705d2a8d2",
+"aa22efa2e3921c90",
+"f000e0f52c120e2f",
+"d2a8d2aa301c0302",
+"01eec21dc21e2017",
+"030201d4e51824e1",
+"603b245470030201",
+"d024fa601414601e",
+"14601f1460232474",
+"706caf2c1205fb80",
+"67e52c30e104d290",
+"805ec290805ac21f",
+"8002d21f852c2f80",
+"46d21e804be52c70",
+"1a120ced1208f285",
+"3812853913853a14",
+"850915850a16850b",
+"17802de52cc39401",
+"4013e52cd3940650",
+"0cc21f7411252cf8",
+"e6f52f800ae52cb4",
+"070ec21f853b2fd2",
+"20120db88002d21d",
+"c2178002d21d301d",
+"07af2c12052f8008",
+"301e05af2c120597",
+"120e850202c2c21d",
+"e52c120b2102b71f",
+"02352002b7600256",
+"a7025da80264a902",
+"48aa0264ab026dad",
+"0274ae0241c002b7",
+"cb027bd002b7d102",
+"b7d202b7d302b7d4",
+"0298dd028ddf02a8",
+"fe000002b5120a83",
+"8f2dc21f852d2f80",
+"28c21f752fff8021",
+"7f301205fbc21f75",
+"2f55c220804b120e",
+"8dd21d805a120ee6",
+"d21d8053c21fe4f5",
+"2fd2208034120e94",
+"d21d8043120ef0d2",
+"1d803c752e013090",
+"03432e02c21f852e",
+"2fd2208014d290c2",
+"1f850f2fd2208009",
+"c290c21f850f2fd2",
+"20120db8d21d800f",
+"c2917f05120006d2",
+"91d21d8002d21d30",
+"1d03120e85d21785",
+"2c18200103120dda",
+"22444d265000ff43",
+"413f3d3b3c586444",
+"42403e0f29596538",
+"2a701d10025a6671",
+"2c1f1e11035b672e",
+"2d201205045c6839",
+"2f211413065d6931",
+"30232215075e6a72",
+"32241608095f6b33",
+"2517180b0a606c34",
+"352627190c616d73",
+"28741a0d626e3a36",
+"1c1b752b63765556",
+"7778797a0e7b7c4f",
+"7d4b477e7f6f5253",
+"504c4d480145574e",
+"514a374946540000",
+"0041540001010201",
+"0202030102020302",
+"0303041423143a14",
+"4d423223200c0302",
+"0408c21ac21be510",
+"30e757e511ae1078",
+"06cec313ce13d8f9",
+"f526ff120dca8f27",
+"e510c413135403ff",
+"e5275401b50705e4",
+"7f0180027f00ef30",
+"e004d21b80242013",
+"1faf26120779af26",
+"1209f68e288f29e5",
+"29f47003e528f460",
+"09852926d21a8002",
+"d21a301a1bc2277f",
+"07120b6cc2277f06",
+"120b6ca213922585",
+"26311208bbc20c22",
+"301b10a213922175",
+"30ffd222c223d224",
+"0206eec20c120e7d",
+"22e4f526f5277528",
+"0f7529ffe5272529",
+"ffe5263528c313f5",
+"2aef13f52bffae2a",
+"120e15bfff0ee52b",
+"24fff529e52a34ff",
+"f5288047ef700de5",
+"2b2401f527e4352a",
+"f5268037752cffe4",
+"f52de52cc313f52c",
+"b5071ce52bae2a78",
+"03c333ce33ced8f9",
+"7c00252dffec3ecf",
+"2401cf3400fe2205",
+"2de52db407d47eff",
+"7fff22d3e5279529",
+"e5286480f8e52664",
+"80984080e527ae26",
+"7803c333ce33ced8",
+"f9ff22787fe4f6d8",
+"fd75813b0204ea02",
+"0016e493a3f8e493",
+"a34003f68001f208",
+"dff48029e493a3f8",
+"5407240cc8c333c4",
+"540f4420c8834004",
+"f456800146f6dfe4",
+"800b010204081020",
+"4080900880e47e01",
+"9360bca3ff543f30",
+"e509541ffee493a3",
+"60010ecf54c025e0",
+"60a840b8e493a3fa",
+"e493a3f8e493a3c8",
+"c582c8cac583caf0",
+"a3c8c582c8cac583",
+"cadfe9dee780bed2",
+"0dc296d20ed210c2",
+"948f08120dcaef13",
+"b39214d216e4f50c",
+"7f28120006c297d2",
+"03c20a7fe87efd12",
+"0c79c20dd2963016",
+"16120e6250f8c2af",
+"d297c2211206e5c2",
+"16e4f50cd2af227f",
+"e87efd120c792004",
+"12200a0f120e6250",
+"f5c2afc2211206e5",
+"d2af2212072e22d2",
+"10c294d20ad20dc2",
+"968f08120dcaef13",
+"b39214d216e4f50e",
+"7f28120006c295d2",
+"05c20e7fe87efd12",
+"0c79c210d2943016",
+"14120e6250f8c2af",
+"d2951206e3c216e4",
+"f50ed2af227fe87e",
+"fd120c7920071020",
+"0e0d120e6250f5c2",
+"af1206e3d2af2212",
+"072e22ad07ed30e6",
+"04d20f8002c20fed",
+"30e505120e8d8003",
+"120ee6ed30e40512",
+"0e948003120ef0ed",
+"30e204d2278002c2",
+"277f02120b6ced30",
+"e105120f14800312",
+"0f11ed30e00b120f",
+"1a201108d211d201",
+"22120f17227f0212",
+"0006209442a29592",
+"18050ee50eb40112",
+"20180ad207d20ad2",
+"0dc2968019e4f50e",
+"8014e50eb40b0fd2",
+"0ed210c294d213d2",
+"0ce4f50ec207e510",
+"c313f510e51113f5",
+"1130180343108022",
+"7f02120006209642",
+"a2979219050ce50c",
+"b4011220190ad204",
+"d20ed210c2948019",
+"e4f50c8014e50cb4",
+"0b0fd20ad20dc296",
+"c213d20ce4f50cc2",
+"04e510c313f510e5",
+"1113f51130190343",
+"108022d2217530fe",
+"d222d223c224d20a",
+"d20dc296d20ed210",
+"c294a22392277f06",
+"120b6ca22492277f",
+"07120b6c30220ca2",
+"2192258530311208",
+"bb8010a221922685",
+"3032120bf9c292c2",
+"93d209c20c222004",
+"033007447fe87efd",
+"120c792004033007",
+"37120e6250f5c2af",
+"2004033007263004",
+"04c21f8002d21fe4",
+"f50cc204f50ec207",
+"120eeb120e80d2af",
+"a21f92217530ff12",
+"06e880c7d2af80c3",
+"22e5196003b40209",
+"e50d900363936f60",
+"0be5196401702def",
+"64f070280519e519",
+"d394024024e4f519",
+"050de50d94094019",
+"752a05e4ff120c3b",
+"7f07120c3bd52af3",
+"e4f50d22e4f50df5",
+"1922e53b64157041",
+"120cede53a30e005",
+"7526808003e4f526",
+"e53ac313f53ae539",
+"30e003433a80e539",
+"c313f539e53830e0",
+"03433980c2b690d0",
+"01e4f0a3e526f0a3",
+"e53af0a3e539f0d2",
+"b622209437050ee5",
+"0ed394085012e508",
+"30e004d2958002c2",
+"95e508c313f50822",
+"e50eb40905a21492",
+"9522e50eb40a03d2",
+"9522e50eb40b05c2",
+"16e4f50e22209637",
+"050ce50cd3940850",
+"12e50830e004d297",
+"8002c297e508c313",
+"f50822e50cb40905",
+"a214929722e50cb4",
+"0a03d29722e50cb4",
+"0b05c216e4f50c22",
+"010c00c104c10ac1",
+"83c10cc109c102c1",
+"16c108010e00c107",
+"c10ec185c18bc186",
+"c18fc112c100c111",
+"c101c117010d0001",
+"1900011a00013403",
+"c12900a225922685",
+"3132120bf9c292c2",
+"9320250320060630",
+"251d300b1a7f697e",
+"00120c79120e6250",
+"fb120eb050092025",
+"04d2928002d293d2",
+"0922900ffce493fe",
+"740193ffc3953af5",
+"0bee9539f50a900f",
+"fbe493c39538f509",
+"c3ef953aee953950",
+"021509e50930e707",
+"e4f509f50af50b22",
+"0535af35ae07ee14",
+"131313541ffdee54",
+"07ff7006f526f527",
+"801574ff7e00a807",
+"088006cea2e713ce",
+"13d8f8f5278e26af",
+"05ad27020c5ae4ff",
+"7e01efc394085027",
+"ef601d64016019ef",
+"64036014ee440254",
+"fe90e000f054f4fd",
+"ee54f46d6002d322",
+"0fee25e0fe80d3c3",
+"22ad07ac06ed24ff",
+"ffec34fffeef7803",
+"cec313ce13d8f9ff",
+"ed5407fd7004f526",
+"800d74ffa8050880",
+"02c313d8fcf526ad",
+"26020aadc2282029",
+"0f120f0d8f3be53b",
+"b4150375341fd229",
+"120a568f35e53530",
+"e00c120d7d120928",
+"e4f536f537221204",
+"098e368f3722200f",
+"037e0022bff007d2",
+"157eff7fff22efc3",
+"948540037e0022ef",
+"9002ce93fe7002fe",
+"22301503430680c2",
+"15af067e0022a21a",
+"92280537e5377002",
+"0536c3e536948050",
+"07af37ae36020991",
+"e535c39410500e12",
+"0928120d7d120928",
+"e4f536f53722e4ff",
+"120e237effe4f526",
+"e526b408077f0112",
+"0e237effeeb50703",
+"af2622eec313fe05",
+"26e526d3941040e0",
+"7fff22e4ff300f02",
+"7f40200503430720",
+"20030343071090e0",
+"00e030e203430704",
+"300b034307023006",
+"03430701228e278f",
+"288d29120e74e527",
+"24d0f52ae528f52b",
+"120ea285292fab2b",
+"ad2aaf34120b4712",
+"0ea9020deac0e0c0",
+"f0c0d075d000c006",
+"c00720100b301605",
+"12080a800312064d",
+"d007d006d0d0d0f0",
+"d0e032c0e0c0f0c0",
+"d075d000c006c007",
+"200d0b3016051208",
+"458003120698d007",
+"d006d0d0d0f0d0e0",
+"32d083d082f8e493",
+"7012740193700da3",
+"a393f8740193f582",
+"8883e47374029368",
+"60efa3a3a380dfae",
+"03ab05531aef90d0",
+"00e51af0ad078e33",
+"7f02120d51af2f12",
+"0cd0431a1090d000",
+"e51af0227401a807",
+"088002c333d8fcff",
+"90e000e04402feef",
+"30270442068003f4",
+"520690e000eef022",
+"120e074005120105",
+"80f6120ec8120ed4",
+"c21f752feea20692",
+"20120db890d000e0",
+"30e1f922ae03ab05",
+"531aef90d000e51a",
+"f0ad078e337f0312",
+"0d51120bd7431a10",
+"90d000e51af022e5",
+"1a549ffd4420fe7c",
+"08ef25e0ff90d000",
+"edf0e030e4034307",
+"0190d000eef0dce9",
+"2290f000e532f0f5",
+"0fa22692277f0512",
+"0b6c90e000e04402",
+"54fefef04401f0ee",
+"f022531aef90d000",
+"e51af07f9f120cd0",
+"120bd7120bd7120b",
+"d7431a1090d000e5",
+"1af0228f2b7fed12",
+"052faf2b12052f75",
+"2c0a7fe87efd120c",
+"79120e6250fbd52c",
+"f1228f288d29120e",
+"74120ea2e52824fe",
+"fb85292f7defaf34",
+"120b47120ea9020d",
+"eaad07ac06c28ced",
+"f4ffecf4feef2401",
+"fde43ef58caf058f",
+"8ac28dd28c22ad07",
+"ac06c2caedf4ffec",
+"f4feef2401fde43e",
+"f5cdaf058fccc2cf",
+"d2ca22531aef90d0",
+"00e51af07f05120c",
+"d0120bd7431a1090",
+"d000e51af0ef1322",
+"e51a549ffe4440fd",
+"7c0890d000ef33ff",
+"5003ed8001eef044",
+"20f0dcf122120f04",
+"8e398f3a120f1d8f",
+"38e53830e1034339",
+"80e5381313543ff5",
+"3822531aef90d000",
+"e51af07f05120cd0",
+"120bd7431a1090d0",
+"00e51af022120ec8",
+"120ed490d000e020",
+"e10812036c120105",
+"80f122120ced1208",
+"f2e509700be50a70",
+"07e50b7003120eda",
+"228d318b32120cd0",
+"af31120cd0af3212",
+"0cd0af33020cd053",
+"1aef90d000e51af0",
+"120cd0431a1090d0",
+"00e51af022120e74",
+"120ea2e4fb7dd0af",
+"341200e0120ea902",
+"0dea531afb90d000",
+"e51af0531afde51a",
+"f07f3c0200063009",
+"0e120eb04009c292",
+"c293c209120e7d22",
+"a21f9221852f30a2",
+"209222c223c22402",
+"06eeefc4540f9003",
+"5393feef540f932e",
+"ff2290e000e04402",
+"54fefef054fdf0ee",
+"f022120ea2120cb3",
+"921b120ea9201bf2",
+"22300509200e0620",
+"0203d38001c32230",
+"0309200a06200203",
+"d38001c322aa06ea",
+"24d0fdeffbaf3412",
+"0bb422ef24fefb7d",
+"efaf34120bb422d2",
+"02d20dc296d210c2",
+"9422ef9002c9936d",
+"600280fe22120df9",
+"5004c210d2942212",
+"0e075004c20dd296",
+"22e58954f04401f5",
+"8922308d04c28cd3",
+"22c32230cf04c2ca",
+"d322c322120ea212",
+"0efa020ea9120eeb",
+"c20e020e45c20212",
+"0e4f020e45c205d2",
+"10c29422c203d20d",
+"c2962290d000e51a",
+"f022302803120b90",
+"22302803120d9222",
+"90e000e01322531a",
+"fe020e9b431a0102",
+"0e9b531afd020e9b",
+"431a02020e9b531a",
+"fb020e9b431a0402",
+"0e9b531a7f020e9b",
+"431a80020e9bd205",
+"020e45c20a020e4f",
+"d203020e4f8f1a02",
+"0e9b7f06020d677f",
+"04020d67ae36af37",
+"22e4f5c822120c1a",
+"22c20b22d20b22c2",
+"0622d20622af3522",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff",
+"ffffffffffffffff"
+);
+?>
+
+<span style="font-family:mono; font-size:0.85em;">
+<?php
+$shl = 3;
+
+$datalen = pow(2, $shl);
+$datalenhex = dechex($datalen);
+while (strlen($datalenhex)<2) $datalenhex="0".$datalenhex;
+
+$recordtype = 0x00;
+$recordtypehex = dechex($recordtype);
+while (strlen($recordtypehex)<2) $recordtypehex="0".$recordtypehex;
+
+for ($i=0; $i<count($blob); $i++) {
+
+ $addr = ($i << $shl);
+
+ // --------------------
+ // checksum calculation
+ // --------------------
+
+ $chksum = $datalen + ($addr >> 8) + ($addr & 0xff) + $recordtype;
+
+ for ($j=0; $j<strlen($blob[$i]); $j+=2)
+ $chksum += hexdec(substr($blob[$i],$j,2));
+
+ $chksum ^= 0xffffffff;
+ ++$chksum;
+ $chksum &= 0xff;
+
+ // ---------------
+ // Display results
+ // ---------------
+
+ $addrhex = dechex($addr);
+ while (strlen($addrhex)<4) $addrhex="0".$addrhex;
+
+ $chksumhex = dechex($chksum);
+ while (strlen($chksumhex)<2) $chksumhex="0".$chksumhex;
+
+ echo ":".$datalenhex.$addrhex.$recordtypehex.$blob[$i].$chksumhex."<br/>";
+}
+
+// end of file
+echo ":00000001FF";
+?>
+</span>
diff --git a/site/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.d52.txt b/site/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.d52.txt
new file mode 100644
index 0000000..715a84d
--- /dev/null
+++ b/site/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.d52.txt
@@ -0,0 +1,2444 @@
+;
+; D52 V3.4.1 8052 Disassembly of dis.inc.hex
+; 2014/11/17 12:45
+;
+ org 0
+;
+ ljmp X04a3 ; 0000 02 04 a3 ..#
+;
+X0003: ljmp X2afb ; 0003 02 2a fb .*{
+;
+X0006: mov a,r7 ; 0006 ef o
+ mov b,#3 ; 0007 75 f0 03 up.
+ mul ab ; 000a a4 $
+ mov r7,a ; 000b ff .
+X000c: mov r6,rb0r7 ; 000c ae 07 ..
+ addc a,r7 ; 000e 3f ?
+ mov a,r6 ; 000f ee n
+ jnz X000c ; 0010 70 fa pz
+ ret ; 0012 22 "
+;
+ ljmp X2ad5 ; 0013 02 2a d5 .*U
+;
+X0016: lcall X097e ; 0016 12 09 7e ..~
+ mov r7,#30h ; 0019 7f 30 .0
+ lcall X05fb ; 001b 12 05 fb ..{
+ mov dptr,#Xe000 ; 001e 90 e0 00 .`.
+ mov a,#16h ; 0021 74 16 t.
+ movx @dptr,a ; 0023 f0 p
+ lcall X2dfa ; 0024 12 2d fa .-z
+ clr p1.2 ; 0027 c2 92 B.
+ clr p1.3 ; 0029 c2 93 B.
+ clr p1.0 ; 002b c2 90 B.
+ setb p1.1 ; 002d d2 91 R.
+ setb px0 ; 002f d2 b8 R8
+ setb px1 ; 0031 d2 ba R:
+ setb it0 ; 0033 d2 88 R.
+ setb ex0 ; 0035 d2 a8 R(
+ setb ex1 ; 0037 d2 aa R*
+ setb ex1 ; 0039 d2 aa R*
+ mov r5,#44h ; 003b 7d 44 }D
+ clr a ; 003d e4 d
+ mov r7,a ; 003e ff .
+ lcall X2e3a ; 003f 12 2e 3a ..:
+ mov r5,#6dh ; 0042 7d 6d }m
+ add a,r7 ; 0044 2f /
+X0045: lcall X2e3a ; 0045 12 2e 3a ..:
+ mov r5,#26h ; 0048 7d 26 }&
+ add a,r7 ; 004a 2f /
+ lcall X2e3a ; 004b 12 2e 3a ..:
+ mov r5,#50h ; 004e 7d 50 }P
+ add a,r7 ; 0050 2f /
+ lcall X2e3a ; 0051 12 2e 3a ..:
+ lcall X2e59 ; 0054 12 2e 59 ..Y
+ setb ea ; 0057 d2 af R/
+ mov r7,#0b1h ; 0059 7f b1 .1
+ lcall X2ef5 ; 005b 12 2e f5 ..u
+ mov dptr,#X2ffe ; 005e 90 2f fe ./~
+ clr a ; 0061 e4 d
+ movc a,@a+dptr ; 0062 93 .
+ mov r7,a ; 0063 ff .
+ cjne a,#55h,X0091 ; 0064 b4 55 2a 4U*
+ inc dptr ; 0067 a3 #
+ clr a ; 0068 e4 d
+ movc a,@a+dptr ; 0069 93 .
+ cjne a,#0aah,X0071 ; 006a b4 aa 04 4*.
+ setb 21h.0 ; 006d d2 08 R.
+ sjmp X0081 ; 006f 80 10 ..
+;
+X0071: mov a,r7 ; 0071 ef o
+ cjne a,#12h,X00a1 ; 0072 b4 12 2c 4.,
+ mov dptr,#X2fff ; 0075 90 2f ff ./.
+ clr a ; 0078 e4 d
+ movc a,@a+dptr ; 0079 93 .
+ cjne a,#34h,X0081 ; 007a b4 34 04 44.
+ clr 21h.0 ; 007d c2 08 B.
+ clr 22h.2 ; 007f c2 12 B.
+X0081: lcall X036c ; 0081 12 03 6c ..l
+ lcall X2da6 ; 0084 12 2d a6 .-&
+ lcall X0108 ; 0087 12 01 08 ...
+ jnb 20h.1,X00b4 ; 008a 30 01 27 0.'
+ jnb 22h.2,X00cf ; 008d 30 12 3f 0.?
+ jb 20h.0,X00cf ; 0090 20 00 3c .<
+ jnb 22h.1,X00af ; 0093 30 11 19 0..
+ lcall X2d25 ; 0096 12 2d 25 .-%
+ lcall X09c4 ; 0099 12 09 c4 ..D
+ jnb 21h.0,X00a4 ; 009c 30 08 05 0..
+ clr 27h.2 ; 009f c2 3a B:
+X00a1: lcall X2a26 ; 00a1 12 2a 26 .*&
+X00a4: lcall X2d92 ; 00a4 12 2d 92 .-.
+ setb 20h.0 ; 00a7 d2 00 R.
+ lcall X2d3b ; 00a9 12 2d 3b .-;
+ lcall X07c2 ; 00ac 12 07 c2 ..B
+X00af: lcall X2dfa ; 00af 12 2d fa .-z
+ clr 20h.1 ; 00b2 c2 01 B.
+X00b4: lcall X036c ; 00b4 12 03 6c ..l
+ lcall X072e ; 00b7 12 07 2e ...
+ jnb 22h.2,X0081 ; 00ba 30 12 c4 0.D
+ jnb 20h.0,X0081 ; 00bd 30 00 c1 0.A
+ mov dptr,#Xd000 ; 00c0 90 d0 00 .P.
+ movx a,@dptr ; 00c3 e0 `
+ jnb acc.0,X0081 ; 00c4 30 e0 ba 0`:
+ clr ea ; 00c7 c2 af B/
+ lcall X2e07 ; 00c9 12 2e 07 ...
+ jnc X00fc ; 00cc 50 2e P.
+ lcall X2eb6 ; 00ce 12 2e b6 ..6
+ lcall X2ebc ; 00d1 12 2e bc ..<
+ setb 27h.2 ; 00d4 d2 3a R:
+ lcall X2a26 ; 00d6 12 2a 26 .*&
+ lcall X2d3b ; 00d9 12 2d 3b .-;
+ setb ea ; 00dc d2 af R/
+ sjmp X0081 ; 00de 80 a1 .!
+;
+X00e0: mov r6,rb0r3 ; 00e0 ae 03 ..
+ mov r3,rb0r5 ; 00e2 ab 05 +.
+ anl 3ah,#0efh ; 00e4 53 3a ef S:o
+ mov dptr,#Xd000 ; 00e7 90 d0 00 .P.
+ mov a,3ah ; 00ea e5 3a e:
+ movx @dptr,a ; 00ec f0 p
+ mov r5,rb0r7 ; 00ed ad 07 -.
+ mov r6,33h ; 00ef ae 33 .3
+ mov r7,#20h ; 00f1 7f 20 .
+ lcall X2d51 ; 00f3 12 2d 51 .-Q
+ orl 3ah,#10h ; 00f6 43 3a 10 C:.
+ mov dptr,#Xd000 ; 00f9 90 d0 00 .P.
+X00fc: mov a,3ah ; 00fc e5 3a e:
+ movx @dptr,a ; 00fe f0 p
+ ret ; 00ff 22 "
+;
+ mov r2,a ; 0100 fa z
+ mov r6,#10h ; 0101 7e 10 ~.
+ inc r1 ; 0103 09 .
+ dec a ; 0104 14 .
+X0105: lcall X2da6 ; 0105 12 2d a6 .-&
+X0108: mov dptr,#Xe000 ; 0108 90 e0 00 .`.
+ movx a,@dptr ; 010b e0 `
+ mov r7,a ; 010c ff .
+ jb acc.1,X0113 ; 010d 20 e1 03 a.
+ ljmp X02c8 ; 0110 02 02 c8 ..H
+;
+X0113: clr ex0 ; 0113 c2 a8 B(
+ clr ex1 ; 0115 c2 aa B*
+ jb 20h.4,X011d ; 0117 20 04 03 ..
+ jnb 20h.7,X0122 ; 011a 30 07 05 0..
+X011d: setb ex0 ; 011d d2 a8 R(
+ setb ex1 ; 011f d2 aa R*
+ ret ; 0121 22 "
+;
+X0122: mov a,r7 ; 0122 ef o
+ mov c,acc.3 ; 0123 a2 e3 "c
+ mov 27h.4,c ; 0125 92 3c .<
+ mov dptr,#Xf000 ; 0127 90 f0 00 .p.
+ movx a,@dptr ; 012a e0 `
+ mov 2ch,a ; 012b f5 2c u,
+ lcall X2e2f ; 012d 12 2e 2f ../
+X0130: setb ex0 ; 0130 d2 a8 R(
+ setb ex1 ; 0132 d2 aa R*
+ jnb 27h.4,X013a ; 0134 30 3c 03 0<.
+ ljmp X01ee ; 0137 02 01 ee ..n
+;
+X013a: clr 27h.5 ; 013a c2 3d B=
+ clr 27h.6 ; 013c c2 3e B>
+ jb 22h.7,X0144 ; 013e 20 17 03 ..
+ ljmp X01d4 ; 0141 02 01 d4 ..T
+;
+X0144: mov a,rb3r0 ; 0144 e5 18 e.
+ add a,#0e1h ; 0146 24 e1 $a
+ jz X0185 ; 0148 60 3b `;
+ add a,#54h ; 014a 24 54 $T
+ jnz X0151 ; 014c 70 03 p.
+ ljmp X01d0 ; 014e 02 01 d0 ..P
+;
+X0151: add a,#0fah ; 0151 24 fa $z
+ jz X0169 ; 0153 60 14 `.
+ dec a ; 0155 14 .
+ jz X0196 ; 0156 60 3e `>
+ dec a ; 0158 14 .
+ jz X019a ; 0159 60 3f `?
+ dec a ; 015b 14 .
+ jz X0181 ; 015c 60 23 `#
+ add a,#74h ; 015e 24 74 $t
+ jnz X01ce ; 0160 70 6c pl
+ mov r7,2ch ; 0162 af 2c /,
+ lcall X05fb ; 0164 12 05 fb ..{
+ sjmp X01d0 ; 0167 80 67 .g
+;
+X0169: mov a,2ch ; 0169 e5 2c e,
+ jnb acc.1,X0172 ; 016b 30 e1 04 0a.
+ setb p1.0 ; 016e d2 90 R.
+ sjmp X01f0 ; 0170 80 7e .~
+;
+X0172: clr p1.0 ; 0172 c2 90 B.
+ sjmp X01f0 ; 0174 80 7a .z
+;
+ clr 27h.7 ; 0176 c2 3f B?
+ sjmp X017c ; 0178 80 02 ..
+;
+ setb 27h.7 ; 017a d2 3f R?
+X017c: mov 2fh,2ch ; 017c 85 2c 2f .,/
+ sjmp X01c7 ; 017f 80 46 .F
+;
+X0181: setb 27h.6 ; 0181 d2 3e R>
+ sjmp X01f0 ; 0183 80 6b .k
+;
+X0185: mov a,2ch ; 0185 e5 2c e,
+ jnz X01c3 ; 0187 70 3a p:
+ lcall X2ced ; 0189 12 2c ed .,m
+ lcall X08f2 ; 018c 12 08 f2 ..r
+ mov rb2r2,38h ; 018f 85 38 12 .8.
+ mov rb2r3,39h ; 0192 85 39 13 .9.
+ mov rb2r4,3ah ; 0195 85 3a 14 .:.
+ mov rb2r5,rb1r1 ; 0198 85 09 15 ...
+ mov rb2r6,2ah ; 019b 85 2a 16 .*.
+ mov rb2r7,2bh ; 019e 85 2b 17 .+.
+ sjmp X01d0 ; 01a1 80 2d .-
+;
+ mov a,2ch ; 01a3 e5 2c e,
+ clr c ; 01a5 c3 C
+ subb a,#1 ; 01a6 94 01 ..
+ jc X01bd ; 01a8 40 13 @.
+ mov a,2ch ; 01aa e5 2c e,
+ setb c ; 01ac d3 S
+ subb a,#6 ; 01ad 94 06 ..
+ jnc X01dd ; 01af 50 2c P,
+ clr 27h.7 ; 01b1 c2 3f B?
+ mov a,#11h ; 01b3 74 11 t.
+ add a,2ch ; 01b5 25 2c %,
+ mov r0,a ; 01b7 f8 x
+ mov a,@r0 ; 01b8 e6 f
+ mov 2fh,a ; 01b9 f5 2f u/
+ sjmp X01e7 ; 01bb 80 2a .*
+;
+X01bd: mov a,2ch ; 01bd e5 2c e,
+ cjne a,#7,X01f0 ; 01bf b4 07 2e 4..
+ clr 27h.7 ; 01c2 c2 3f B?
+ mov 2fh,3bh ; 01c4 85 3b 2f .;/
+X01c7: setb 24h.0 ; 01c7 d2 20 R
+ lcall X2db8 ; 01c9 12 2d b8 .-8
+ sjmp X01d0 ; 01cc 80 02 ..
+;
+X01ce: setb 27h.5 ; 01ce d2 3d R=
+X01d0: clr 22h.7 ; 01d0 c2 17 B.
+ sjmp X01d6 ; 01d2 80 02 ..
+;
+X01d4: setb 27h.5 ; 01d4 d2 3d R=
+X01d6: jnb 27h.5,X01e0 ; 01d6 30 3d 07 0=.
+ mov r7,2ch ; 01d9 af 2c /,
+ lcall X052f ; 01db 12 05 2f ../
+ sjmp X01e8 ; 01de 80 08 ..
+;
+X01e0: jnb 27h.6,X01e8 ; 01e0 30 3e 05 0>.
+ mov r7,2ch ; 01e3 af 2c /,
+ lcall X0597 ; 01e5 12 05 97 ...
+X01e8: lcall X2e85 ; 01e8 12 2e 85 ...
+ ljmp X02c2 ; 01eb 02 02 c2 ..B
+;
+X01ee: clr 27h.5 ; 01ee c2 3d B=
+X01f0: mov a,2ch ; 01f0 e5 2c e,
+ lcall X2b21 ; 01f2 12 2b 21 .+!
+ ljmp Xb73f ; 01f5 02 b7 3f .7?
+;
+ ljmp X3520 ; 01f8 02 35 20 .5
+;
+ ljmp Xb760 ; 01fb 02 b7 60 .7`
+;
+ ljmp X56a7 ; 01fe 02 56 a7 .V'
+;
+ ljmp X7da8 ; 0201 02 7d a8 .}(
+;
+ ljmp X64a9 ; 0204 02 64 a9 .d)
+;
+ ljmp X48aa ; 0207 02 48 aa .H*
+;
+ ljmp X64ab ; 020a 02 64 ab .d+
+;
+ ljmp X6dad ; 020d 02 6d ad .m-
+;
+ ljmp X74ae ; 0210 02 74 ae .t.
+;
+ ljmp X41c0 ; 0213 02 41 c0 .A@
+;
+ ljmp Xb7eb ; 0216 02 b7 eb .7k
+;
+ ljmp X7bd0 ; 0219 02 7b d0 .{P
+;
+ ljmp Xb7d1 ; 021c 02 b7 d1 .7Q
+;
+ ljmp Xb7d2 ; 021f 02 b7 d2 .7R
+;
+ ljmp Xb7d3 ; 0222 02 b7 d3 .7S
+;
+ ljmp Xb7d4 ; 0225 02 b7 d4 .7T
+;
+ ljmp X98fd ; 0228 02 98 fd ..}
+;
+ ljmp Xadff ; 022b 02 ad ff .-.
+;
+ ljmp Xa8fe ; 022e 02 a8 fe .(~
+;
+ org 233h
+;
+ ljmp Xb512 ; 0233 02 b5 12 .5.
+;
+ add a,r2 ; 0236 2a *
+ movc a,@a+pc ; 0237 83 .
+ mov r7,2dh ; 0238 af 2d /-
+ clr 27h.7 ; 023a c2 3f B?
+ mov 2fh,2dh ; 023c 85 2d 2f .-/
+ sjmp X0269 ; 023f 80 28 .(
+;
+ clr 27h.7 ; 0241 c2 3f B?
+ mov 2fh,#0ffh ; 0243 75 2f ff u/.
+ sjmp X0269 ; 0246 80 21 .!
+;
+ mov r7,#30h ; 0248 7f 30 .0
+ lcall X05fb ; 024a 12 05 fb ..{
+ clr 27h.7 ; 024d c2 3f B?
+ mov 2fh,#55h ; 024f 75 2f 55 u/U
+ clr 24h.0 ; 0252 c2 20 B
+X0254: sjmp X02c1 ; 0254 80 6b .k
+;
+ lcall X2ead ; 0256 12 2e ad ..-
+ setb 27h.5 ; 0259 d2 3d R=
+ sjmp X02d7 ; 025b 80 7a .z
+;
+ lcall X2ee6 ; 025d 12 2e e6 ..f
+ setb 27h.5 ; 0260 d2 3d R=
+ sjmp X02b7 ; 0262 80 53 .S
+;
+ clr 27h.7 ; 0264 c2 3f B?
+ clr a ; 0266 e4 d
+ mov 2fh,a ; 0267 f5 2f u/
+X0269: setb 24h.0 ; 0269 d2 20 R
+ sjmp X02a1 ; 026b 80 34 .4
+;
+ lcall X2e94 ; 026d 12 2e 94 ...
+ setb 27h.5 ; 0270 d2 3d R=
+ sjmp X02b7 ; 0272 80 43 .C
+;
+ lcall X2ef0 ; 0274 12 2e f0 ..p
+ setb 27h.5 ; 0277 d2 3d R=
+ sjmp X02b7 ; 0279 80 3c .<
+;
+ mov 2eh,#1 ; 027b 75 2e 01 u..
+ jnb p1.0,X0284 ; 027e 30 90 03 0..
+ orl 2eh,#2 ; 0281 43 2e 02 C..
+X0284: clr 27h.7 ; 0284 c2 3f B?
+ mov 2fh,2eh ; 0286 85 2e 2f ../
+ setb 24h.0 ; 0289 d2 20 R
+ sjmp X02a1 ; 028b 80 14 ..
+;
+ setb p1.0 ; 028d d2 90 R.
+ clr 27h.7 ; 028f c2 3f B?
+ mov 2fh,2fh ; 0291 85 2f 2f .//
+ setb 24h.0 ; 0294 d2 20 R
+ sjmp X02a1 ; 0296 80 09 ..
+;
+ clr p1.0 ; 0298 c2 90 B.
+ clr 27h.7 ; 029a c2 3f B?
+ mov 2fh,2fh ; 029c 85 2f 2f .//
+ setb 24h.0 ; 029f d2 20 R
+X02a1: lcall X2db8 ; 02a1 12 2d b8 .-8
+ setb 27h.5 ; 02a4 d2 3d R=
+ sjmp X02d7 ; 02a6 80 2f ./
+;
+ clr p1.1 ; 02a8 c2 91 B.
+ mov r7,#5 ; 02aa 7f 05 ..
+ lcall X0006 ; 02ac 12 00 06 ...
+ setb p1.1 ; 02af d2 91 R.
+ setb 27h.5 ; 02b1 d2 3d R=
+ sjmp X02b7 ; 02b3 80 02 ..
+;
+ setb 27h.5 ; 02b5 d2 3d R=
+X02b7: jnb 27h.5,X02bd ; 02b7 30 3d 03 0=.
+ lcall X2e85 ; 02ba 12 2e 85 ...
+X02bd: setb 22h.7 ; 02bd d2 17 R.
+ mov rb3r0,2ch ; 02bf 85 2c 18 .,.
+X02c2: jb 20h.1,X02c8 ; 02c2 20 01 03 ..
+ lcall X2dfa ; 02c5 12 2d fa .-z
+X02c8: ret ; 02c8 22 "
+;
+X02c9: orl a,#6dh ; 02c9 44 6d Dm
+ add a,@r0 ; 02cb 26 &
+ jnc X02ce ; 02cc 50 00 P.
+X02ce: mov r7,a ; 02ce ff .
+ orl 41h,#3fh ; 02cf 43 41 3f CA?
+ addc a,r5 ; 02d2 3d =
+ addc a,r3 ; 02d3 3b ;
+ addc a,r4 ; 02d4 3c <
+ anl a,r0 ; 02d5 58 X
+ xrl a,#44h ; 02d6 64 44 dD
+ orl 40h,a ; 02d8 42 40 B@
+ addc a,r6 ; 02da 3e >
+ add a,r7 ; 02db 2f /
+ add a,r1 ; 02dc 29 )
+ anl a,r1 ; 02dd 59 Y
+ xrl a,38h ; 02de 65 38 e8
+ add a,r2 ; 02e0 2a *
+ jnz X0320 ; 02e1 70 3d p=
+ jbc 20h.2,X0360 ; 02e3 10 02 7a ..z
+ xrl a,@r0 ; 02e6 66 f
+ acall X032c ; 02e7 71 2c q,
+ addc a,r7 ; 02e9 3f ?
+ addc a,r6 ; 02ea 3e >
+ acall X0003 ; 02eb 11 03 ..
+ mov r3,#67h ; 02ed 7b 67 {g
+ add a,r6 ; 02ef 2e .
+ add a,r5 ; 02f0 2d -
+ jb 22h.2,X02f9 ; 02f1 20 12 05 ..
+ inc a ; 02f4 04 .
+ mov r4,#68h ; 02f5 7c 68 |h
+ addc a,r1 ; 02f7 39 9
+ add a,r7 ; 02f8 2f /
+X02f9: ajmp X0114 ; 02f9 21 14 !.
+;
+ rrc a ; 02fb 13 .
+ inc @r0 ; 02fc 06 .
+ mov r5,#69h ; 02fd 7d 69 }i
+ acall X0130 ; 02ff 31 30 10
+X0301: rl a ; 0301 23 #
+ ret ; 0302 22 "
+;
+X0303: dec rb0r7 ; 0303 15 07 ..
+ mov r6,#6ah ; 0305 7e 6a ~j
+ orl c,26h.2 ; 0307 72 32 r2
+ add a,#16h ; 0309 24 16 $.
+ inc r0 ; 030b 08 .
+ inc r1 ; 030c 09 .
+ mov r7,#6bh ; 030d 7f 6b .k
+ rlc a ; 030f 33 3
+ add a,rb2r7 ; 0310 25 17 %.
+ dec r0 ; 0312 18 .
+ add a,r3 ; 0313 2b +
+ add a,r2 ; 0314 2a *
+ jz X0383 ; 0315 60 6c `l
+ addc a,#35h ; 0317 34 35 45
+ add a,@r0 ; 0319 26 &
+ add a,@r1 ; 031a 27 '
+ dec r1 ; 031b 19 .
+ add a,r4 ; 031c 2c ,
+ ajmp X036d ; 031d 61 6d am
+;
+ jmp @a+dptr ; 031f 73 s
+;
+X0320: add a,r0 ; 0320 28 (
+ mov a,#3ah ; 0321 74 3a t:
+ add a,r5 ; 0323 2d -
+ xrl 6eh,a ; 0324 62 6e bn
+ addc a,r2 ; 0326 3a :
+ addc a,@r0 ; 0327 36 6
+ addc a,r4 ; 0328 3c <
+ addc a,r3 ; 0329 3b ;
+ mov 2bh,#63h ; 032a 75 2b 63 u+c
+ mov @r0,#55h ; 032d 76 55 vU
+ anl a,@r0 ; 032f 56 V
+ mov @r1,#78h ; 0330 77 78 wx
+ mov r1,#7ah ; 0332 79 7a yz
+ add a,r6 ; 0334 2e .
+ mov r3,#7ch ; 0335 7b 7c {|
+ xrl a,r7 ; 0337 6f o
+ mov r5,#6bh ; 0338 7d 6b }k
+ orl a,@r1 ; 033a 47 G
+ mov r6,#7fh ; 033b 7e 7f ~.
+ xrl a,r7 ; 033d 6f o
+ anl 53h,a ; 033e 52 53 RS
+ jnc X03ae ; 0340 50 6c Pl
+ xrl a,r5 ; 0342 6d m
+ orl a,r0 ; 0343 48 H
+ ajmp X0045 ; 0344 01 45 .E
+;
+ anl a,@r1 ; 0346 57 W
+ xrl a,r6 ; 0347 6e n
+ acall X026a ; 0348 51 6a Qj
+ addc a,@r1 ; 034a 37 7
+ orl a,r1 ; 034b 49 I
+ orl a,@r0 ; 034c 46 F
+ anl a,#0 ; 034d 54 00 T.
+ nop ; 034f 00 .
+;
+ org 351h
+;
+ ajmp X0254 ; 0351 41 54 AT
+;
+X0353: nop ; 0353 00 .
+ ajmp X0001 ; 0354 01 01 ..
+;
+ ljmp X0102 ; 0356 02 01 02 ...
+;
+ ljmp X0301 ; 0359 02 03 01 ...
+;
+ ljmp X0203 ; 035c 02 02 03 ...
+;
+ ljmp X0303 ; 035f 02 03 03 ...
+;
+ inc a ; 0362 04 .
+X0363: dec a ; 0363 14 .
+ rl a ; 0364 23 #
+ dec a ; 0365 14 .
+ addc a,r2 ; 0366 3a :
+ dec a ; 0367 14 .
+ xrl a,r5 ; 0368 6d m
+ orl 32h,a ; 0369 42 32 B2
+ rl a ; 036b 23 #
+X036c: jb 25h.4,X0372 ; 036c 20 2c 03 ,.
+ ljmp X0408 ; 036f 02 04 08 ...
+;
+X0372: clr 27h.2 ; 0372 c2 3a B:
+ clr 27h.3 ; 0374 c2 3b B;
+ mov a,rb2r0 ; 0376 e5 10 e.
+ jnb acc.7,X03d2 ; 0378 30 e7 57 0gW
+ mov a,rb2r1 ; 037b e5 11 e.
+ mov r6,rb2r0 ; 037d ae 10 ..
+ mov r0,#6 ; 037f 78 06 x.
+X0381: mov a,r6 ; 0381 ee n
+ clr c ; 0382 c3 C
+X0383: rrc a ; 0383 13 .
+ mov a,r6 ; 0384 ee n
+ rrc a ; 0385 13 .
+ djnz r0,X0381 ; 0386 d8 f9 Xy
+ mov 26h,a ; 0388 f5 26 u&
+ mov r7,a ; 038a ff .
+ lcall X2dea ; 038b 12 2d ea .-j
+ mov r7,27h ; 038e af 27 /'
+ mov a,rb2r0 ; 0390 e5 10 e.
+ swap a ; 0392 c4 D
+ rrc a ; 0393 13 .
+ rrc a ; 0394 13 .
+ anl a,#3 ; 0395 54 03 T.
+ mov r7,a ; 0397 ff .
+ mov a,27h ; 0398 e5 27 e'
+ anl a,#1 ; 039a 54 01 T.
+ cjne a,rb0r7,X03a4 ; 039c b5 07 05 5..
+ clr a ; 039f e4 d
+ mov r7,#1 ; 03a0 7f 01 ..
+ sjmp X03a6 ; 03a2 80 02 ..
+;
+X03a4: mov r7,#0 ; 03a4 7f 00 ..
+X03a6: mov a,r7 ; 03a6 ef o
+ jnb acc.0,X03ae ; 03a7 30 e0 04 0`.
+ setb 27h.3 ; 03aa d2 3b R;
+ sjmp X03d2 ; 03ac 80 24 .$
+;
+X03ae: jb 22h.3,X03f0 ; 03ae 20 13 3f .?
+ mov r7,26h ; 03b1 af 26 /&
+ lcall X0779 ; 03b3 12 07 79 ..y
+ mov r7,26h ; 03b6 af 26 /&
+ lcall X09f6 ; 03b8 12 09 f6 ..v
+ mov r6,28h ; 03bb ae 28 .(
+ mov r7,29h ; 03bd af 29 /)
+ mov a,29h ; 03bf e5 29 e)
+ cpl a ; 03c1 f4 t
+ jnz X03c7 ; 03c2 70 03 p.
+ mov a,28h ; 03c4 e5 28 e(
+ cpl a ; 03c6 f4 t
+X03c7: jz X03d2 ; 03c7 60 09 `.
+ mov 26h,29h ; 03c9 85 29 26 .)&
+ setb 27h.2 ; 03cc d2 3a R:
+ sjmp X03d2 ; 03ce 80 02 ..
+;
+ setb 27h.2 ; 03d0 d2 3a R:
+X03d2: jnb 27h.2,X0410 ; 03d2 30 3a 3b 0:;
+ clr 24h.7 ; 03d5 c2 27 B'
+ mov r7,#7 ; 03d7 7f 07 ..
+ lcall X2b6c ; 03d9 12 2b 6c .+l
+ clr 24h.7 ; 03dc c2 27 B'
+ mov r7,#6 ; 03de 7f 06 ..
+ lcall X2b6c ; 03e0 12 2b 6c .+l
+ mov c,22h.3 ; 03e3 a2 13 ".
+ mov 24h.5,c ; 03e5 92 25 .%
+ mov 31h,26h ; 03e7 85 26 31 .&1
+ lcall X08bb ; 03ea 12 08 bb ..;
+ clr 25h.4 ; 03ed c2 2c B,
+ ret ; 03ef 22 "
+;
+X03f0: jnb 27h.3,X0403 ; 03f0 30 3b 10 0;.
+ mov c,22h.3 ; 03f3 a2 13 ".
+ mov 24h.1,c ; 03f5 92 21 .!
+ mov 30h,#0ffh ; 03f7 75 30 ff u0.
+ setb 24h.2 ; 03fa d2 22 R"
+ clr 24h.3 ; 03fc c2 23 B#
+ setb 24h.4 ; 03fe d2 24 R$
+ ljmp X06ee ; 0400 02 06 ee ..n
+;
+X0403: clr 25h.4 ; 0403 c2 2c B,
+ lcall X2e7d ; 0405 12 2e 7d ..}
+X0408: ret ; 0408 22 "
+;
+X0409: clr a ; 0409 e4 d
+ mov 26h,a ; 040a f5 26 u&
+ mov 27h,a ; 040c f5 27 u'
+ mov 28h,#2fh ; 040e 75 28 2f u(/
+ mov 29h,#0ffh ; 0411 75 29 ff u).
+X0414: mov a,27h ; 0414 e5 27 e'
+ add a,29h ; 0416 25 29 %)
+ mov r7,a ; 0418 ff .
+ mov a,26h ; 0419 e5 26 e&
+ addc a,28h ; 041b 35 28 5(
+ clr c ; 041d c3 C
+ rrc a ; 041e 13 .
+ mov 2ah,a ; 041f f5 2a u*
+ mov a,r7 ; 0421 ef o
+ rrc a ; 0422 13 .
+ mov 2bh,a ; 0423 f5 2b u+
+ mov r7,a ; 0425 ff .
+ mov r6,2ah ; 0426 ae 2a .*
+ lcall X2e15 ; 0428 12 2e 15 ...
+ cjne r7,#0ffh,X045c ; 042b bf ff 2e ?..
+ mov a,2bh ; 042e e5 2b e+
+ add a,#0ffh ; 0430 24 ff $.
+ mov 29h,a ; 0432 f5 29 u)
+ mov a,2ah ; 0434 e5 2a e*
+ addc a,#0ffh ; 0436 34 ff 4.
+ mov 28h,a ; 0438 f5 28 u(
+ sjmp X0483 ; 043a 80 47 .G
+;
+ mov a,r7 ; 043c ef o
+ jnz X046c ; 043d 70 2d p-
+ mov a,2bh ; 043f e5 2b e+
+ add a,#1 ; 0441 24 01 $.
+ mov 27h,a ; 0443 f5 27 u'
+ clr a ; 0445 e4 d
+ addc a,2ah ; 0446 35 2a 5*
+ mov 26h,a ; 0448 f5 26 u&
+ sjmp X0483 ; 044a 80 37 .7
+;
+ mov 2ch,#0ffh ; 044c 75 2c ff u,.
+ clr a ; 044f e4 d
+ mov 2dh,a ; 0450 f5 2d u-
+X0452: mov a,2ch ; 0452 e5 2c e,
+ clr c ; 0454 c3 C
+ rrc a ; 0455 13 .
+ mov 2ch,a ; 0456 f5 2c u,
+ cjne a,rb0r7,X0497 ; 0458 b5 07 3c 5.<
+ mov a,2bh ; 045b e5 2b e+
+ mov r6,2ah ; 045d ae 2a .*
+ mov r0,#3 ; 045f 78 03 x.
+X0461: clr c ; 0461 c3 C
+ rlc a ; 0462 33 3
+ mov a,r6 ; 0463 ee n
+ rlc a ; 0464 33 3
+ mov a,r6 ; 0465 ee n
+ djnz r0,X0461 ; 0466 d8 f9 Xy
+ mov r4,#0 ; 0468 7c 00 |.
+ add a,2dh ; 046a 25 2d %-
+X046c: mov r7,a ; 046c ff .
+ mov a,r4 ; 046d ec l
+ addc a,r6 ; 046e 3e >
+ mov a,r7 ; 046f ef o
+ add a,#1 ; 0470 24 01 $.
+ mov a,r7 ; 0472 ef o
+ addc a,#0 ; 0473 34 00 4.
+ mov r6,a ; 0475 fe ~
+ ret ; 0476 22 "
+;
+ inc 2dh ; 0477 05 2d .-
+ mov a,2dh ; 0479 e5 2d e-
+X047b: cjne a,#7,X0452 ; 047b b4 07 d4 4.T
+ mov r6,#0ffh ; 047e 7e ff ~.
+ mov r7,#0ffh ; 0480 7f ff ..
+ ret ; 0482 22 "
+;
+X0483: setb c ; 0483 d3 S
+ mov a,27h ; 0484 e5 27 e'
+ subb a,29h ; 0486 95 29 .)
+ mov a,28h ; 0488 e5 28 e(
+ xrl a,#80h ; 048a 64 80 d.
+ mov r0,a ; 048c f8 x
+ mov a,26h ; 048d e5 26 e&
+ xrl a,#80h ; 048f 64 80 d.
+ subb a,r0 ; 0491 98 .
+ jc X0414 ; 0492 40 80 @.
+ mov a,27h ; 0494 e5 27 e'
+ mov r6,26h ; 0496 ae 26 .&
+ mov r0,#3 ; 0498 78 03 x.
+X049a: clr c ; 049a c3 C
+ rlc a ; 049b 33 3
+ mov a,r6 ; 049c ee n
+ rlc a ; 049d 33 3
+ mov a,r6 ; 049e ee n
+ djnz r0,X049a ; 049f d8 f9 Xy
+ mov r7,a ; 04a1 ff .
+ ret ; 04a2 22 "
+;
+X04a3: mov r0,#7fh ; 04a3 78 7f x.
+ clr a ; 04a5 e4 d
+X04a6: mov @r0,a ; 04a6 f6 v
+ djnz r0,X04a6 ; 04a7 d8 fd X}
+ mov sp,#3bh ; 04a9 75 81 3b u.;
+ ljmp X04ea ; 04ac 02 04 ea ..j
+;
+X04af: ljmp X0016 ; 04af 02 00 16 ...
+;
+X04b2: clr a ; 04b2 e4 d
+ movc a,@a+dptr ; 04b3 93 .
+ inc dptr ; 04b4 a3 #
+ mov r0,a ; 04b5 f8 x
+ clr a ; 04b6 e4 d
+ movc a,@a+dptr ; 04b7 93 .
+ inc dptr ; 04b8 a3 #
+ jc X04be ; 04b9 40 03 @.
+ mov @r0,a ; 04bb f6 v
+ sjmp X04bf ; 04bc 80 01 ..
+;
+X04be: movx @r0,a ; 04be f2 r
+X04bf: inc r0 ; 04bf 08 .
+ mov r7,a ; 04c0 ff .
+ cpl a ; 04c1 f4 t
+ sjmp X04ed ; 04c2 80 29 .)
+;
+X04c4: clr a ; 04c4 e4 d
+ movc a,@a+dptr ; 04c5 93 .
+ inc dptr ; 04c6 a3 #
+ mov r0,a ; 04c7 f8 x
+ anl a,#7 ; 04c8 54 07 T.
+ add a,#2ch ; 04ca 24 2c $,
+ xch a,r0 ; 04cc c8 H
+ clr c ; 04cd c3 C
+ rlc a ; 04ce 33 3
+ swap a ; 04cf c4 D
+ anl a,#2fh ; 04d0 54 2f T/
+X04d2: orl a,#20h ; 04d2 44 20 D
+ xch a,r0 ; 04d4 c8 H
+ movc a,@a+pc ; 04d5 83 .
+ jc X04dc ; 04d6 40 04 @.
+ cpl a ; 04d8 f4 t
+ anl a,@r0 ; 04d9 56 V
+ sjmp X04dd ; 04da 80 01 ..
+;
+X04dc: orl a,@r0 ; 04dc 46 F
+X04dd: mov @r0,a ; 04dd f6 v
+ mov r7,a ; 04de ff .
+ clr a ; 04df e4 d
+ sjmp X050d ; 04e0 80 2b .+
+;
+ ajmp X0002 ; 04e2 01 02 ..
+;
+ inc a ; 04e4 04 .
+ inc r0 ; 04e5 08 .
+ jbc 24h.0,X0529 ; 04e6 10 20 40 . @
+ sjmp X047b ; 04e9 80 90 ..
+;
+ inc r0 ; 04eb 08 .
+ sjmp X04d2 ; 04ec 80 e4 .d
+;
+ mov r6,#1 ; 04ee 7e 01 ~.
+ movc a,@a+dptr ; 04f0 93 .
+ jz X04af ; 04f1 60 bc `<
+ inc dptr ; 04f3 a3 #
+ mov r7,a ; 04f4 ff .
+ anl a,#3fh ; 04f5 54 3f T?
+ jnb acc.5,X0503 ; 04f7 30 e5 09 0e.
+ anl a,#3fh ; 04fa 54 3f T?
+ mov r6,a ; 04fc fe ~
+ clr a ; 04fd e4 d
+ movc a,@a+dptr ; 04fe 93 .
+ inc dptr ; 04ff a3 #
+ jz X0503 ; 0500 60 01 `.
+ add a,r6 ; 0502 2e .
+X0503: mov a,r7 ; 0503 ef o
+ anl a,#0c0h ; 0504 54 c0 T@
+ add a,acc ; 0506 25 e0 %`
+ jz X04b2 ; 0508 60 a8 `(
+ jc X04c4 ; 050a 40 b8 @8
+ clr a ; 050c e4 d
+X050d: movc a,@a+dptr ; 050d 93 .
+ inc dptr ; 050e a3 #
+ mov r2,a ; 050f fa z
+ clr a ; 0510 e4 d
+ movc a,@a+dptr ; 0511 93 .
+ inc dptr ; 0512 a3 #
+ mov r0,a ; 0513 f8 x
+ clr a ; 0514 e4 d
+ movc a,@a+dptr ; 0515 93 .
+ inc dptr ; 0516 a3 #
+ xch a,r0 ; 0517 c8 H
+ xch a,dpl ; 0518 c5 82 E.
+ xch a,r0 ; 051a c8 H
+ mov a,r2 ; 051b ea j
+ xch a,dph ; 051c c5 83 E.
+ mov a,r2 ; 051e ea j
+ movx @dptr,a ; 051f f0 p
+ inc dptr ; 0520 a3 #
+ xch a,r0 ; 0521 c8 H
+ xch a,dpl ; 0522 c5 82 E.
+ xch a,r0 ; 0524 c8 H
+ mov a,r2 ; 0525 ea j
+ xch a,dph ; 0526 c5 83 E.
+ mov a,r2 ; 0528 ea j
+X0529: mov r7,a ; 0529 ff .
+ mov a,r1 ; 052a e9 i
+ mov r6,a ; 052b fe ~
+ mov a,@r1 ; 052c e7 g
+ sjmp X04ed ; 052d 80 be .>
+;
+X052f: setb 25h.5 ; 052f d2 2d R-
+ clr p1.6 ; 0531 c2 96 B.
+ setb 25h.6 ; 0533 d2 2e R.
+ setb 22h.0 ; 0535 d2 10 R.
+ clr p1.4 ; 0537 c2 94 B.
+ mov r7,rb1r0 ; 0539 af 08 /.
+ lcall X2dea ; 053b 12 2d ea .-j
+ mov a,r7 ; 053e ef o
+ rrc a ; 053f 13 .
+ cpl c ; 0540 b3 3
+ mov 22h.4,c ; 0541 92 14 ..
+ setb 22h.6 ; 0543 d2 16 R.
+ clr a ; 0545 e4 d
+ mov 2ch,a ; 0546 f5 2c u,
+ mov r7,#28h ; 0548 7f 28 .(
+ lcall X0006 ; 054a 12 00 06 ...
+ clr p1.7 ; 054d c2 97 B.
+ setb 20h.3 ; 054f d2 03 R.
+ clr 25h.2 ; 0551 c2 2a B*
+ mov r7,#0e8h ; 0553 7f e8 .h
+ mov r6,#0fdh ; 0555 7e fd ~}
+ lcall X2c79 ; 0557 12 2c 79 .,y
+ clr 25h.5 ; 055a c2 2d B-
+ setb p1.6 ; 055c d2 96 R.
+X055e: jnb 22h.6,X0577 ; 055e 30 16 16 0..
+ lcall X2e62 ; 0561 12 2e 62 ..b
+ jnc X055e ; 0564 50 f8 Px
+ clr ea ; 0566 c2 af B/
+ setb p1.7 ; 0568 d2 97 R.
+ clr 24h.1 ; 056a c2 21 B!
+ lcall X06e5 ; 056c 12 06 e5 ..e
+ clr 22h.6 ; 056f c2 16 B.
+ clr a ; 0571 e4 d
+ mov 2ch,a ; 0572 f5 2c u,
+ setb ea ; 0574 d2 af R/
+ ret ; 0576 22 "
+;
+X0577: mov r7,#0e8h ; 0577 7f e8 .h
+ mov r6,#0fdh ; 0579 7e fd ~}
+ lcall X2c79 ; 057b 12 2c 79 .,y
+X057e: jb 20h.4,X0593 ; 057e 20 04 12 ..
+ jb 25h.2,X05b3 ; 0581 20 2a 2f */
+ lcall X2e62 ; 0584 12 2e 62 ..b
+ jnc X057e ; 0587 50 f5 Pu
+ clr ea ; 0589 c2 af B/
+ clr 24h.1 ; 058b c2 21 B!
+ lcall X06e5 ; 058d 12 06 e5 ..e
+ setb ea ; 0590 d2 af R/
+ ret ; 0592 22 "
+;
+X0593: lcall X072e ; 0593 12 07 2e ...
+ ret ; 0596 22 "
+;
+X0597: setb 22h.0 ; 0597 d2 10 R.
+ clr p1.4 ; 0599 c2 94 B.
+ setb 25h.2 ; 059b d2 2a R*
+ setb 25h.5 ; 059d d2 2d R-
+ clr p1.6 ; 059f c2 96 B.
+ mov r7,rb1r0 ; 05a1 af 08 /.
+ lcall X2dea ; 05a3 12 2d ea .-j
+ mov a,r7 ; 05a6 ef o
+ rrc a ; 05a7 13 .
+ cpl c ; 05a8 b3 3
+ mov 22h.4,c ; 05a9 92 14 ..
+ setb 22h.6 ; 05ab d2 16 R.
+ clr a ; 05ad e4 d
+ mov 2eh,a ; 05ae f5 2e u.
+ mov r7,#28h ; 05b0 7f 28 .(
+ lcall X0006 ; 05b2 12 00 06 ...
+ clr p1.5 ; 05b5 c2 95 B.
+ setb 20h.5 ; 05b7 d2 05 R.
+ clr 25h.6 ; 05b9 c2 2e B.
+ mov r7,#0e8h ; 05bb 7f e8 .h
+ mov r6,#0fdh ; 05bd 7e fd ~}
+ lcall X2c79 ; 05bf 12 2c 79 .,y
+ clr 22h.0 ; 05c2 c2 10 B.
+ setb p1.4 ; 05c4 d2 94 R.
+X05c6: jnb 22h.6,X05dd ; 05c6 30 16 14 0..
+ lcall X2e62 ; 05c9 12 2e 62 ..b
+ jnc X05c6 ; 05cc 50 f8 Px
+ clr ea ; 05ce c2 af B/
+ setb p1.5 ; 05d0 d2 95 R.
+ lcall X06e3 ; 05d2 12 06 e3 ..c
+ clr 22h.6 ; 05d5 c2 16 B.
+ clr a ; 05d7 e4 d
+ mov 2eh,a ; 05d8 f5 2e u.
+ setb ea ; 05da d2 af R/
+ ret ; 05dc 22 "
+;
+X05dd: mov r7,#0e8h ; 05dd 7f e8 .h
+ mov r6,#0fdh ; 05df 7e fd ~}
+ lcall X2c79 ; 05e1 12 2c 79 .,y
+X05e4: jb 20h.7,X05f7 ; 05e4 20 07 10 ..
+ jb 25h.6,X0617 ; 05e7 20 2e 2d .-
+ lcall X2e62 ; 05ea 12 2e 62 ..b
+ jnc X05e4 ; 05ed 50 f5 Pu
+ clr ea ; 05ef c2 af B/
+ lcall X06e3 ; 05f1 12 06 e3 ..c
+ setb ea ; 05f4 d2 af R/
+ ret ; 05f6 22 "
+;
+X05f7: lcall X072e ; 05f7 12 07 2e ...
+ ret ; 05fa 22 "
+;
+X05fb: mov r5,rb0r7 ; 05fb ad 07 -.
+ mov a,r5 ; 05fd ed m
+ jnb acc.6,X0605 ; 05fe 30 e6 04 0f.
+ setb 25h.7 ; 0601 d2 2f R/
+ sjmp X0607 ; 0603 80 02 ..
+;
+X0605: clr 25h.7 ; 0605 c2 2f B/
+X0607: mov a,r5 ; 0607 ed m
+ jnb acc.5,X0610 ; 0608 30 e5 05 0e.
+ lcall X2ead ; 060b 12 2e ad ..-
+ sjmp X0613 ; 060e 80 03 ..
+;
+X0610: lcall X2ee6 ; 0610 12 2e e6 ..f
+X0613: mov a,r5 ; 0613 ed m
+ jnb acc.4,X061c ; 0614 30 e4 05 0d.
+X0617: lcall X2e94 ; 0617 12 2e 94 ...
+ sjmp X061f ; 061a 80 03 ..
+;
+X061c: lcall X2ef0 ; 061c 12 2e f0 ..p
+X061f: mov a,r5 ; 061f ed m
+ jnb acc.2,X0627 ; 0620 30 e2 04 0b.
+ setb 24h.7 ; 0623 d2 27 R'
+ sjmp X0629 ; 0625 80 02 ..
+;
+X0627: clr 24h.7 ; 0627 c2 27 B'
+X0629: mov r7,#2 ; 0629 7f 02 ..
+ lcall X2b6c ; 062b 12 2b 6c .+l
+ mov a,r5 ; 062e ed m
+ jnb acc.1,X0637 ; 062f 30 e1 05 0a.
+ lcall X2f14 ; 0632 12 2f 14 ./.
+ sjmp X063a ; 0635 80 03 ..
+;
+X0637: lcall X2f11 ; 0637 12 2f 11 ./.
+X063a: mov a,r5 ; 063a ed m
+ jnb acc.0,X0669 ; 063b 30 e0 2b 0`+
+ lcall X2f3a ; 063e 12 2f 3a ./:
+ jb 22h.1,X064c ; 0641 20 11 08 ..
+ setb 22h.1 ; 0644 d2 11 R.
+ setb 20h.1 ; 0646 d2 01 R.
+ ret ; 0648 22 "
+;
+ lcall X2f17 ; 0649 12 2f 17 ./.
+X064c: ret ; 064c 22 "
+;
+ mov r7,#2 ; 064d 7f 02 ..
+ lcall X0006 ; 064f 12 00 06 ...
+ jb p1.4,X0697 ; 0652 20 94 42 .B
+ mov c,p1.5 ; 0655 a2 95 ".
+ mov 23h.0,c ; 0657 92 18 ..
+ inc 2eh ; 0659 05 2e ..
+ mov a,2eh ; 065b e5 2e e.
+ cjne a,#1,X0672 ; 065d b4 01 12 4..
+ jb 23h.0,X068d ; 0660 20 18 2a .*
+ setb 20h.7 ; 0663 d2 07 R.
+ setb 25h.2 ; 0665 d2 2a R*
+ setb 25h.5 ; 0667 d2 2d R-
+X0669: clr p1.6 ; 0669 c2 96 B.
+ sjmp X0686 ; 066b 80 19 ..
+;
+X066d: clr a ; 066d e4 d
+ mov 2eh,a ; 066e f5 2e u.
+ sjmp X0686 ; 0670 80 14 ..
+;
+X0672: mov a,2eh ; 0672 e5 2e e.
+ cjne a,#2bh,X06a6 ; 0674 b4 2b 2f 4+/
+ setb 25h.6 ; 0677 d2 2e R.
+ setb 22h.0 ; 0679 d2 10 R.
+ clr p1.4 ; 067b c2 94 B.
+ setb 22h.3 ; 067d d2 13 R.
+ setb 25h.4 ; 067f d2 2c R,
+ clr a ; 0681 e4 d
+ mov 2eh,a ; 0682 f5 2e u.
+ clr 20h.7 ; 0684 c2 07 B.
+X0686: mov a,rb2r0 ; 0686 e5 10 e.
+ clr c ; 0688 c3 C
+ rrc a ; 0689 13 .
+ mov rb2r0,a ; 068a f5 10 u.
+ mov a,rb2r1 ; 068c e5 11 e.
+ rrc a ; 068e 13 .
+ mov rb2r1,a ; 068f f5 11 u.
+ jnb 23h.0,X0697 ; 0691 30 18 03 0..
+ orl rb2r0,#80h ; 0694 43 10 80 C..
+X0697: ret ; 0697 22 "
+;
+X0698: mov r7,#2 ; 0698 7f 02 ..
+ lcall X0006 ; 069a 12 00 06 ...
+ jb p1.6,X06e2 ; 069d 20 96 42 .B
+ mov c,p1.7 ; 06a0 a2 97 ".
+ mov 23h.1,c ; 06a2 92 19 ..
+ inc 2ch ; 06a4 05 2c .,
+X06a6: mov a,2ch ; 06a6 e5 2c e,
+ cjne a,#1,X06bd ; 06a8 b4 01 12 4..
+ jb 23h.1,X06d8 ; 06ab 20 19 2a .*
+ setb 20h.4 ; 06ae d2 04 R.
+ setb 25h.6 ; 06b0 d2 2e R.
+ setb 22h.0 ; 06b2 d2 10 R.
+ clr p1.4 ; 06b4 c2 94 B.
+ sjmp X06d1 ; 06b6 80 19 ..
+;
+ clr a ; 06b8 e4 d
+ mov 2ch,a ; 06b9 f5 2c u,
+ sjmp X06d1 ; 06bb 80 14 ..
+;
+X06bd: mov a,2ch ; 06bd e5 2c e,
+ cjne a,#2bh,X06f1 ; 06bf b4 2b 2f 4+/
+ setb 25h.2 ; 06c2 d2 2a R*
+ setb 25h.5 ; 06c4 d2 2d R-
+ clr p1.6 ; 06c6 c2 96 B.
+ clr 22h.3 ; 06c8 c2 13 B.
+ setb 25h.4 ; 06ca d2 2c R,
+ clr a ; 06cc e4 d
+ mov 2ch,a ; 06cd f5 2c u,
+ clr 20h.4 ; 06cf c2 04 B.
+X06d1: mov a,rb2r0 ; 06d1 e5 10 e.
+ clr c ; 06d3 c3 C
+ rrc a ; 06d4 13 .
+ mov rb2r0,a ; 06d5 f5 10 u.
+ mov a,rb2r1 ; 06d7 e5 11 e.
+ rrc a ; 06d9 13 .
+ mov rb2r1,a ; 06da f5 11 u.
+ jnb 23h.1,X06e2 ; 06dc 30 19 03 0..
+ orl rb2r0,#80h ; 06df 43 10 80 C..
+X06e2: ret ; 06e2 22 "
+;
+X06e3: setb 24h.1 ; 06e3 d2 21 R!
+X06e5: mov 30h,#0feh ; 06e5 75 30 fe u0~
+X06e8: setb 24h.2 ; 06e8 d2 22 R"
+ setb 24h.3 ; 06ea d2 23 R#
+ clr 24h.4 ; 06ec c2 24 B$
+X06ee: setb 25h.2 ; 06ee d2 2a R*
+ setb 25h.5 ; 06f0 d2 2d R-
+ clr p1.6 ; 06f2 c2 96 B.
+ setb 25h.6 ; 06f4 d2 2e R.
+ setb 22h.0 ; 06f6 d2 10 R.
+ clr p1.4 ; 06f8 c2 94 B.
+ mov c,24h.3 ; 06fa a2 23 "#
+ mov 24h.7,c ; 06fc 92 27 .'
+ mov r7,#6 ; 06fe 7f 06 ..
+ lcall X2b6c ; 0700 12 2b 6c .+l
+ mov c,24h.4 ; 0703 a2 24 "$
+ mov 24h.7,c ; 0705 92 27 .'
+ mov r7,#7 ; 0707 7f 07 ..
+ lcall X2b6c ; 0709 12 2b 6c .+l
+ jnb 24h.2,X073b ; 070c 30 22 2c 0",
+ mov c,24h.1 ; 070f a2 21 "!
+ mov 24h.5,c ; 0711 92 25 .%
+ mov 31h,30h ; 0713 85 30 31 .01
+ lcall X08bb ; 0716 12 08 bb ..;
+ sjmp X072b ; 0719 80 10 ..
+;
+ mov c,24h.1 ; 071b a2 21 "!
+ mov 24h.6,c ; 071d 92 26 .&
+ mov 32h,30h ; 071f 85 30 32 .02
+ lcall X2bf9 ; 0722 12 2b f9 .+y
+ clr p1.2 ; 0725 c2 92 B.
+ clr p1.3 ; 0727 c2 93 B.
+ setb 21h.1 ; 0729 d2 09 R.
+X072b: clr 25h.4 ; 072b c2 2c B,
+ ret ; 072d 22 "
+;
+X072e: jb 20h.4,X0734 ; 072e 20 04 03 ..
+ jnb 20h.7,X0778 ; 0731 30 07 44 0.D
+X0734: mov r7,#0e8h ; 0734 7f e8 .h
+ mov r6,#0fdh ; 0736 7e fd ~}
+ lcall X2c79 ; 0738 12 2c 79 .,y
+X073b: jb 20h.4,X0741 ; 073b 20 04 03 ..
+ jnb 20h.7,X0778 ; 073e 30 07 37 0.7
+X0741: lcall X2e62 ; 0741 12 2e 62 ..b
+ jnc X073b ; 0744 50 f5 Pu
+ clr ea ; 0746 c2 af B/
+ jb 20h.4,X074e ; 0748 20 04 03 ..
+ jnb 20h.7,X0774 ; 074b 30 07 26 0.&
+X074e: jnb 20h.4,X0755 ; 074e 30 04 04 0..
+ clr 27h.7 ; 0751 c2 3f B?
+ sjmp X0757 ; 0753 80 02 ..
+;
+X0755: setb 27h.7 ; 0755 d2 3f R?
+X0757: clr a ; 0757 e4 d
+ mov 2ch,a ; 0758 f5 2c u,
+ clr 20h.4 ; 075a c2 04 B.
+ mov 2eh,a ; 075c f5 2e u.
+ clr 20h.7 ; 075e c2 07 B.
+ lcall X2eeb ; 0760 12 2e eb ..k
+ lcall X2e80 ; 0763 12 2e 80 ...
+ setb ea ; 0766 d2 af R/
+ mov c,27h.7 ; 0768 a2 3f "?
+ mov 24h.1,c ; 076a 92 21 .!
+ mov 30h,#0ffh ; 076c 75 30 ff u0.
+ lcall X06e8 ; 076f 12 06 e8 ..h
+ sjmp X073b ; 0772 80 c7 .G
+;
+X0774: setb ea ; 0774 d2 af R/
+ sjmp X073b ; 0776 80 c3 .C
+;
+X0778: ret ; 0778 22 "
+;
+X0779: mov a,rb3r1 ; 0779 e5 19 e.
+ jz X0780 ; 077b 60 03 `.
+ cjne a,#2,X0789 ; 077d b4 02 09 4..
+X0780: mov a,2dh ; 0780 e5 2d e-
+ mov dptr,#X0363 ; 0782 90 03 63 ..c
+ movc a,@a+dptr ; 0785 93 .
+ xrl a,r7 ; 0786 6f o
+ jz X07b4 ; 0787 60 2b `+
+X0789: mov a,rb3r1 ; 0789 e5 19 e.
+ xrl a,#1 ; 078b 64 01 d.
+ jnz X07bc ; 078d 70 2d p-
+ mov a,r7 ; 078f ef o
+ xrl a,#0f0h ; 0790 64 f0 dp
+ jnz X07bc ; 0792 70 28 p(
+ inc rb3r1 ; 0794 05 19 ..
+ mov a,rb3r1 ; 0796 e5 19 e.
+ setb c ; 0798 d3 S
+ subb a,#2 ; 0799 94 02 ..
+ jc X07c1 ; 079b 40 24 @$
+ clr a ; 079d e4 d
+ mov rb3r1,a ; 079e f5 19 u.
+ inc 2dh ; 07a0 05 2d .-
+ mov a,2dh ; 07a2 e5 2d e-
+ subb a,#9 ; 07a4 94 09 ..
+ jc X07c1 ; 07a6 40 19 @.
+ mov 2ah,#5 ; 07a8 75 2a 05 u*.
+X07ab: clr a ; 07ab e4 d
+ mov r7,a ; 07ac ff .
+ lcall X2c3b ; 07ad 12 2c 3b .,;
+ mov r7,#7 ; 07b0 7f 07 ..
+ lcall X2c3b ; 07b2 12 2c 3b .,;
+ djnz 2ah,X07ab ; 07b5 d5 2a f3 U*s
+ clr a ; 07b8 e4 d
+ mov 2dh,a ; 07b9 f5 2d u-
+ ret ; 07bb 22 "
+;
+X07bc: clr a ; 07bc e4 d
+ mov 2dh,a ; 07bd f5 2d u-
+ mov rb3r1,a ; 07bf f5 19 u.
+X07c1: ret ; 07c1 22 "
+;
+X07c2: mov a,3bh ; 07c2 e5 3b e;
+ xrl a,#15h ; 07c4 64 15 d.
+ jnz X0809 ; 07c6 70 41 pA
+ lcall X2ced ; 07c8 12 2c ed .,m
+ mov a,3ah ; 07cb e5 3a e:
+ jnb acc.0,X07d5 ; 07cd 30 e0 05 0`.
+ mov 26h,#80h ; 07d0 75 26 80 u&.
+ sjmp X07d8 ; 07d3 80 03 ..
+;
+X07d5: clr a ; 07d5 e4 d
+ mov 26h,a ; 07d6 f5 26 u&
+X07d8: mov a,3ah ; 07d8 e5 3a e:
+ clr c ; 07da c3 C
+ rrc a ; 07db 13 .
+ mov 3ah,a ; 07dc f5 3a u:
+ mov a,39h ; 07de e5 39 e9
+ jnb acc.0,X07e6 ; 07e0 30 e0 03 0`.
+ orl 3ah,#80h ; 07e3 43 3a 80 C:.
+X07e6: mov a,39h ; 07e6 e5 39 e9
+ clr c ; 07e8 c3 C
+ rrc a ; 07e9 13 .
+ mov 39h,a ; 07ea f5 39 u9
+ mov a,38h ; 07ec e5 38 e8
+ jnb acc.0,X07f4 ; 07ee 30 e0 03 0`.
+ orl 39h,#80h ; 07f1 43 39 80 C9.
+X07f4: clr wr ; 07f4 c2 b6 B6
+ mov dptr,#Xd001 ; 07f6 90 d0 01 .P.
+ clr a ; 07f9 e4 d
+ movx @dptr,a ; 07fa f0 p
+ inc dptr ; 07fb a3 #
+ mov a,26h ; 07fc e5 26 e&
+ movx @dptr,a ; 07fe f0 p
+ inc dptr ; 07ff a3 #
+ mov a,3ah ; 0800 e5 3a e:
+ movx @dptr,a ; 0802 f0 p
+ inc dptr ; 0803 a3 #
+ mov a,39h ; 0804 e5 39 e9
+ movx @dptr,a ; 0806 f0 p
+ setb wr ; 0807 d2 b6 R6
+X0809: ret ; 0809 22 "
+;
+ jb p1.4,X0844 ; 080a 20 94 37 .7
+ inc 2eh ; 080d 05 2e ..
+ mov a,2eh ; 080f e5 2e e.
+ setb c ; 0811 d3 S
+ subb a,#8 ; 0812 94 08 ..
+ jnc X0828 ; 0814 50 12 P.
+ mov a,rb1r0 ; 0816 e5 08 e.
+ jnb acc.0,X081f ; 0818 30 e0 04 0`.
+ setb p1.5 ; 081b d2 95 R.
+ sjmp X0821 ; 081d 80 02 ..
+;
+X081f: clr p1.5 ; 081f c2 95 B.
+X0821: mov a,rb1r0 ; 0821 e5 08 e.
+ clr c ; 0823 c3 C
+ rrc a ; 0824 13 .
+ mov rb1r0,a ; 0825 f5 08 u.
+ ret ; 0827 22 "
+;
+X0828: mov a,2eh ; 0828 e5 2e e.
+X082a: cjne a,#9,X0832 ; 082a b4 09 05 4..
+X082d: mov c,22h.4 ; 082d a2 14 ".
+ mov p1.5,c ; 082f 92 95 ..
+ ret ; 0831 22 "
+;
+X0832: mov a,2eh ; 0832 e5 2e e.
+X0834: cjne a,#2ah,X083a ; 0834 b4 2a 03 4*.
+ setb p1.5 ; 0837 d2 95 R.
+ ret ; 0839 22 "
+;
+X083a: mov a,2eh ; 083a e5 2e e.
+ cjne a,#2bh,X0844 ; 083c b4 2b 05 4+.
+ clr 22h.6 ; 083f c2 16 B.
+ clr a ; 0841 e4 d
+ mov 2eh,a ; 0842 f5 2e u.
+X0844: ret ; 0844 22 "
+;
+X0845: jb p1.6,X087f ; 0845 20 96 37 .7
+ inc 2ch ; 0848 05 2c .,
+ mov a,2ch ; 084a e5 2c e,
+ setb c ; 084c d3 S
+ subb a,#8 ; 084d 94 08 ..
+ jnc X0863 ; 084f 50 12 P.
+ mov a,rb1r0 ; 0851 e5 08 e.
+ jnb acc.0,X085a ; 0853 30 e0 04 0`.
+ setb p1.7 ; 0856 d2 97 R.
+ sjmp X085c ; 0858 80 02 ..
+;
+X085a: clr p1.7 ; 085a c2 97 B.
+X085c: mov a,rb1r0 ; 085c e5 08 e.
+ clr c ; 085e c3 C
+ rrc a ; 085f 13 .
+ mov rb1r0,a ; 0860 f5 08 u.
+ ret ; 0862 22 "
+;
+X0863: mov a,2ch ; 0863 e5 2c e,
+ cjne a,#9,X086d ; 0865 b4 09 05 4..
+ mov c,22h.4 ; 0868 a2 14 ".
+ mov p1.7,c ; 086a 92 97 ..
+ ret ; 086c 22 "
+;
+X086d: mov a,2ch ; 086d e5 2c e,
+ cjne a,#2ah,X0875 ; 086f b4 2a 03 4*.
+ setb p1.7 ; 0872 d2 97 R.
+ ret ; 0874 22 "
+;
+X0875: mov a,2ch ; 0875 e5 2c e,
+ cjne a,#2bh,X087f ; 0877 b4 2b 05 4+.
+ clr 22h.6 ; 087a c2 16 B.
+ clr a ; 087c e4 d
+ mov 2ch,a ; 087d f5 2c u,
+X087f: ret ; 087f 22 "
+;
+ ajmp X082c ; 0880 01 2c .,
+;
+ org 883h
+;
+ ajmp X0e04 ; 0883 c1 04 A.
+;
+ ajmp X0e2a ; 0885 c1 2a A*
+;
+ ajmp X0e83 ; 0887 c1 83 A.
+;
+ ajmp X0e2c ; 0889 c1 2c A,
+;
+ ajmp X0e09 ; 088b c1 09 A.
+;
+ ajmp X0e02 ; 088d c1 02 A.
+;
+ ajmp X0e16 ; 088f c1 16 A.
+;
+ ajmp X0e08 ; 0891 c1 08 A.
+;
+ ajmp X082e ; 0893 01 2e ..
+;
+ org 896h
+;
+ ajmp X0e07 ; 0896 c1 07 A.
+;
+ ajmp X0e2e ; 0898 c1 2e A.
+;
+ ajmp X0e85 ; 089a c1 85 A.
+;
+ ajmp X0eab ; 089c c1 ab A+
+;
+ ajmp X0e86 ; 089e c1 86 A.
+;
+ ajmp X0eaf ; 08a0 c1 af A/
+;
+ ajmp X0e12 ; 08a2 c1 12 A.
+;
+ ajmp X0e00 ; 08a4 c1 00 A.
+;
+ ajmp X0e11 ; 08a6 c1 11 A.
+;
+ ajmp X0e01 ; 08a8 c1 01 A.
+;
+ ajmp X0e17 ; 08aa c1 17 A.
+;
+ ajmp X082d ; 08ac 01 2d .-
+;
+ org 8afh
+;
+ ajmp X0819 ; 08af 01 19 ..
+;
+ org 8b2h
+;
+ ajmp X083a ; 08b2 01 3a .:
+;
+ org 8b5h
+;
+ ajmp X0834 ; 08b5 01 34 .4
+;
+ rr a ; 08b7 03 .
+ ajmp X0e29 ; 08b8 c1 29 A)
+;
+ org 8bbh
+;
+X08bb: mov c,24h.5 ; 08bb a2 25 "%
+ mov 24h.6,c ; 08bd 92 26 .&
+ mov 32h,31h ; 08bf 85 31 32 .12
+ lcall X2bf9 ; 08c2 12 2b f9 .+y
+ clr p1.2 ; 08c5 c2 92 B.
+ clr p1.3 ; 08c7 c2 93 B.
+ jb 24h.5,X08cf ; 08c9 20 25 03 %.
+ jb 20h.6,X08d5 ; 08cc 20 06 06 ..
+X08cf: jnb 24h.5,X090f ; 08cf 30 25 3d 0%=
+ jnb 25h.3,X090f ; 08d2 30 2b 3a 0+:
+X08d5: mov r7,#69h ; 08d5 7f 69 .i
+ mov r6,#0 ; 08d7 7e 00 ~.
+ lcall X2c79 ; 08d9 12 2c 79 .,y
+X08dc: lcall X2e62 ; 08dc 12 2e 62 ..b
+ jnc X08dc ; 08df 50 fb P{
+ lcall X2eb0 ; 08e1 12 2e b0 ..0
+ jnc X08ef ; 08e4 50 09 P.
+ jb 24h.5,X08ed ; 08e6 20 25 04 %.
+ setb p1.2 ; 08e9 d2 92 R.
+ sjmp X08ef ; 08eb 80 02 ..
+;
+X08ed: setb p1.3 ; 08ed d2 93 R.
+X08ef: setb 21h.1 ; 08ef d2 09 R.
+ ret ; 08f1 22 "
+;
+X08f2: mov dptr,#X2ffc ; 08f2 90 2f fc ./|
+ clr a ; 08f5 e4 d
+ movc a,@a+dptr ; 08f6 93 .
+ mov r6,a ; 08f7 fe ~
+ mov a,#1 ; 08f8 74 01 t.
+ movc a,@a+dptr ; 08fa 93 .
+ mov r7,a ; 08fb ff .
+ clr c ; 08fc c3 C
+ subb a,3ah ; 08fd 95 3a .:
+ mov 2bh,a ; 08ff f5 2b u+
+ mov a,r6 ; 0901 ee n
+ subb a,39h ; 0902 95 39 .9
+ mov 2ah,a ; 0904 f5 2a u*
+ mov dptr,#X2ffb ; 0906 90 2f fb ./{
+ clr a ; 0909 e4 d
+ movc a,@a+dptr ; 090a 93 .
+ clr c ; 090b c3 C
+ subb a,38h ; 090c 95 38 .8
+ mov rb1r1,a ; 090e f5 09 u.
+ clr c ; 0910 c3 C
+ mov a,r7 ; 0911 ef o
+ subb a,3ah ; 0912 95 3a .:
+ mov a,r6 ; 0914 ee n
+ subb a,39h ; 0915 95 39 .9
+ jnc X091b ; 0917 50 02 P.
+ dec rb1r1 ; 0919 15 09 ..
+X091b: mov a,rb1r1 ; 091b e5 09 e.
+ jnb acc.7,X0927 ; 091d 30 e7 07 0g.
+ clr a ; 0920 e4 d
+ mov rb1r1,a ; 0921 f5 09 u.
+ mov 2ah,a ; 0923 f5 2a u*
+ mov 2bh,a ; 0925 f5 2b u+
+X0927: ret ; 0927 22 "
+;
+X0928: inc 35h ; 0928 05 35 .5
+ mov r7,35h ; 092a af 35 /5
+ mov r6,rb0r7 ; 092c ae 07 ..
+ mov a,r6 ; 092e ee n
+ dec a ; 092f 14 .
+ rrc a ; 0930 13 .
+ rrc a ; 0931 13 .
+ rrc a ; 0932 13 .
+ anl a,#3fh ; 0933 54 3f T?
+ mov r5,a ; 0935 fd }
+ mov a,r6 ; 0936 ee n
+ anl a,#7 ; 0937 54 07 T.
+ mov r7,a ; 0939 ff .
+ jnz X0942 ; 093a 70 06 p.
+ mov 26h,a ; 093c f5 26 u&
+ mov 27h,a ; 093e f5 27 u'
+ sjmp X0957 ; 0940 80 15 ..
+;
+X0942: mov a,#0ffh ; 0942 74 ff t.
+ mov r6,#0 ; 0944 7e 00 ~.
+ mov r0,rb0r7 ; 0946 a8 07 (.
+ inc r0 ; 0948 08 .
+ sjmp X0951 ; 0949 80 06 ..
+;
+X094b: mov a,r6 ; 094b ee n
+ mov c,acc.7 ; 094c a2 e7 "g
+ rrc a ; 094e 13 .
+ mov a,r6 ; 094f ee n
+ rrc a ; 0950 13 .
+X0951: djnz r0,X094b ; 0951 d8 f8 Xx
+ mov 27h,a ; 0953 f5 27 u'
+ mov r6,26h ; 0955 ae 26 .&
+X0957: mov r7,rb0r5 ; 0957 af 05 /.
+ mov r5,27h ; 0959 ad 27 -'
+ ljmp X2c7a ; 095b 02 2c 7a .,z
+;
+ clr a ; 095e e4 d
+ mov r7,a ; 095f ff .
+ mov r6,#1 ; 0960 7e 01 ~.
+X0962: mov a,r7 ; 0962 ef o
+ clr c ; 0963 c3 C
+ subb a,#8 ; 0964 94 08 ..
+ jnc X098f ; 0966 50 27 P'
+ mov a,r7 ; 0968 ef o
+ jz X09a8 ; 0969 60 3d `=
+ xrl a,#1 ; 096b 64 01 d.
+ jz X0988 ; 096d 60 19 `.
+ mov a,r7 ; 096f ef o
+ xrl a,#3 ; 0970 64 03 d.
+ jz X0988 ; 0972 60 14 `.
+ mov a,r6 ; 0974 ee n
+ orl a,#2 ; 0975 44 02 D.
+ anl a,#0feh ; 0977 54 fe T~
+ mov dptr,#Xe000 ; 0979 90 e0 00 .`.
+ movx @dptr,a ; 097c f0 p
+ anl a,#0f4h ; 097d 54 f4 Tt
+ mov r5,a ; 097f fd }
+ mov a,r6 ; 0980 ee n
+ anl a,#0f4h ; 0981 54 f4 Tt
+ xrl a,r5 ; 0983 6d m
+ jz X0988 ; 0984 60 02 `.
+ setb c ; 0986 d3 S
+ ret ; 0987 22 "
+;
+X0988: add a,r7 ; 0988 2f /
+ mov a,r6 ; 0989 ee n
+ add a,acc ; 098a 25 e0 %`
+ mov r6,a ; 098c fe ~
+ sjmp X0962 ; 098d 80 d3 .S
+;
+X098f: clr c ; 098f c3 C
+ ret ; 0990 22 "
+;
+X0991: mov r5,rb0r7 ; 0991 ad 07 -.
+ mov r4,rb0r6 ; 0993 ac 06 ,.
+ mov a,r5 ; 0995 ed m
+ add a,#0ffh ; 0996 24 ff $.
+ mov r7,a ; 0998 ff .
+ mov a,r4 ; 0999 ec l
+ addc a,#0ffh ; 099a 34 ff 4.
+ mov r6,a ; 099c fe ~
+ mov a,r7 ; 099d ef o
+ mov r0,#3 ; 099e 78 03 x.
+X09a0: mov a,r6 ; 09a0 ee n
+ clr c ; 09a1 c3 C
+ rrc a ; 09a2 13 .
+ mov a,r6 ; 09a3 ee n
+ rrc a ; 09a4 13 .
+ djnz r0,X09a0 ; 09a5 d8 f9 Xy
+ mov r7,a ; 09a7 ff .
+X09a8: mov a,r5 ; 09a8 ed m
+ anl a,#7 ; 09a9 54 07 T.
+ mov r5,a ; 09ab fd }
+ jnz X09b2 ; 09ac 70 04 p.
+ mov 26h,a ; 09ae f5 26 u&
+ sjmp X09df ; 09b0 80 2d .-
+;
+X09b2: mov a,#0ffh ; 09b2 74 ff t.
+ mov r0,rb0r5 ; 09b4 a8 05 (.
+ inc r0 ; 09b6 08 .
+ sjmp X09bb ; 09b7 80 02 ..
+;
+X09b9: clr c ; 09b9 c3 C
+ rrc a ; 09ba 13 .
+X09bb: djnz r0,X09b9 ; 09bb d8 fc X|
+ mov 26h,a ; 09bd f5 26 u&
+ mov r5,26h ; 09bf ad 26 -&
+ ljmp X2aad ; 09c1 02 2a ad .*-
+;
+X09c4: clr 25h.0 ; 09c4 c2 28 B(
+ jb 25h.1,X09f8 ; 09c6 20 29 2f )/
+ lcall X2f2d ; 09c9 12 2f 2d ./-
+ mov r7,3bh ; 09cc af 3b /;
+ mov a,3bh ; 09ce e5 3b e;
+ cjne a,#15h,X09d6 ; 09d0 b4 15 03 4..
+ mov 34h,#3fh ; 09d3 75 34 3f u4?
+X09d6: setb 25h.1 ; 09d6 d2 29 R)
+ lcall X2a56 ; 09d8 12 2a 56 .*V
+ mov r7,35h ; 09db af 35 /5
+ mov a,35h ; 09dd e5 35 e5
+X09df: jnb acc.0,X0a0e ; 09df 30 e0 2c 0`,
+ lcall X2d7d ; 09e2 12 2d 7d .-}
+ lcall X0928 ; 09e5 12 09 28 ..(
+ clr a ; 09e8 e4 d
+ mov 36h,a ; 09e9 f5 36 u6
+ mov 37h,a ; 09eb f5 37 u7
+ ret ; 09ed 22 "
+;
+ lcall X0409 ; 09ee 12 04 09 ...
+ mov r6,36h ; 09f1 ae 36 .6
+ mov r7,37h ; 09f3 af 37 /7
+ ret ; 09f5 22 "
+;
+X09f6: jb 25h.7,X09fc ; 09f6 20 2f 03 /.
+ mov r6,#0 ; 09f9 7e 00 ~.
+ ret ; 09fb 22 "
+;
+X09fc: cjne r7,#0f0h,X0a06 ; 09fc bf f0 07 ?p.
+ setb 22h.5 ; 09ff d2 15 R.
+ mov r6,#0ffh ; 0a01 7e ff ~.
+ mov r7,#0ffh ; 0a03 7f ff ..
+ ret ; 0a05 22 "
+;
+X0a06: mov a,r7 ; 0a06 ef o
+ clr c ; 0a07 c3 C
+ subb a,#85h ; 0a08 94 85 ..
+ jc X0a0f ; 0a0a 40 03 @.
+ mov r6,#0 ; 0a0c 7e 00 ~.
+X0a0e: ret ; 0a0e 22 "
+;
+X0a0f: mov a,r7 ; 0a0f ef o
+ mov dptr,#X02ee ; 0a10 90 02 ee ..n
+ movc a,@a+dptr ; 0a13 93 .
+ mov r6,a ; 0a14 fe ~
+ jnz X0a19 ; 0a15 70 02 p.
+ mov r6,a ; 0a17 fe ~
+ ret ; 0a18 22 "
+;
+X0a19: jnb 22h.5,X0a1f ; 0a19 30 15 03 0..
+ orl rb0r6,#80h ; 0a1c 43 06 80 C..
+X0a1f: clr 22h.5 ; 0a1f c2 15 B.
+ mov r7,rb0r6 ; 0a21 af 06 /.
+ mov r6,#0 ; 0a23 7e 00 ~.
+ ret ; 0a25 22 "
+;
+ mov c,27h.2 ; 0a26 a2 3a ":
+ mov 25h.0,c ; 0a28 92 28 .(
+ inc 37h ; 0a2a 05 37 .7
+ mov a,37h ; 0a2c e5 37 e7
+ jnz X0a32 ; 0a2e 70 02 p.
+ inc 36h ; 0a30 05 36 .6
+X0a32: clr c ; 0a32 c3 C
+ mov a,36h ; 0a33 e5 36 e6
+ subb a,#80h ; 0a35 94 80 ..
+ jnc X0a40 ; 0a37 50 07 P.
+ mov r7,37h ; 0a39 af 37 /7
+ mov r6,36h ; 0a3b ae 36 .6
+ ljmp X0991 ; 0a3d 02 09 91 ...
+;
+X0a40: mov a,35h ; 0a40 e5 35 e5
+ clr c ; 0a42 c3 C
+ subb a,#10h ; 0a43 94 10 ..
+ jnc X0a75 ; 0a45 50 2e P.
+ lcall X0928 ; 0a47 12 09 28 ..(
+ lcall X2d7d ; 0a4a 12 2d 7d .-}
+ lcall X0928 ; 0a4d 12 09 28 ..(
+ clr a ; 0a50 e4 d
+ mov 36h,a ; 0a51 f5 36 u6
+ mov 37h,a ; 0a53 f5 37 u7
+ ret ; 0a55 22 "
+;
+ clr a ; 0a56 e4 d
+ mov r7,a ; 0a57 ff .
+ lcall X2e23 ; 0a58 12 2e 23 ..#
+ mov r6,#0ffh ; 0a5b 7e ff ~.
+ clr a ; 0a5d e4 d
+ mov 26h,a ; 0a5e f5 26 u&
+X0a60: mov a,26h ; 0a60 e5 26 e&
+ cjne a,#8,X0a6c ; 0a62 b4 08 07 4..
+ mov r7,#1 ; 0a65 7f 01 ..
+ lcall X2e23 ; 0a67 12 2e 23 ..#
+ mov r6,#0ffh ; 0a6a 7e ff ~.
+X0a6c: mov a,r6 ; 0a6c ee n
+ cjne a,rb0r7,X0a73 ; 0a6d b5 07 03 5..
+ mov r7,26h ; 0a70 af 26 /&
+ ret ; 0a72 22 "
+;
+X0a73: mov a,r6 ; 0a73 ee n
+ clr c ; 0a74 c3 C
+X0a75: rrc a ; 0a75 13 .
+ mov r6,a ; 0a76 fe ~
+ inc 26h ; 0a77 05 26 .&
+ mov a,26h ; 0a79 e5 26 e&
+ setb c ; 0a7b d3 S
+ subb a,#10h ; 0a7c 94 10 ..
+ jc X0a60 ; 0a7e 40 e0 @`
+ mov r7,#0ffh ; 0a80 7f ff ..
+ ret ; 0a82 22 "
+;
+ clr a ; 0a83 e4 d
+ mov r7,a ; 0a84 ff .
+ jnb 25h.7,X0a8a ; 0a85 30 2f 02 0/.
+ mov r7,#40h ; 0a88 7f 40 .@
+X0a8a: jb 20h.5,X0a90 ; 0a8a 20 05 03 ..
+ orl rb0r7,#20h ; 0a8d 43 07 20 C.
+X0a90: jb 20h.3,X0a96 ; 0a90 20 03 03 ..
+ orl rb0r7,#10h ; 0a93 43 07 10 C..
+X0a96: mov dptr,#Xe000 ; 0a96 90 e0 00 .`.
+ movx a,@dptr ; 0a99 e0 `
+ jnb acc.2,X0aa0 ; 0a9a 30 e2 03 0b.
+ orl rb0r7,#4 ; 0a9d 43 07 04 C..
+X0aa0: jnb 25h.3,X0aa6 ; 0aa0 30 2b 03 0+.
+ orl rb0r7,#2 ; 0aa3 43 07 02 C..
+X0aa6: jnb 20h.6,X0aac ; 0aa6 30 06 03 0..
+ orl rb0r7,#1 ; 0aa9 43 07 01 C..
+X0aac: ret ; 0aac 22 "
+;
+ mov r6,27h ; 0aad ae 27 .'
+ mov r7,28h ; 0aaf af 28 /(
+ mov r5,29h ; 0ab1 ad 29 -)
+ lcall X2e74 ; 0ab3 12 2e 74 ..t
+ mov a,27h ; 0ab6 e5 27 e'
+ add a,#0d0h ; 0ab8 24 d0 $P
+ mov 2ah,a ; 0aba f5 2a u*
+ mov a,28h ; 0abc e5 28 e(
+ mov 2bh,a ; 0abe f5 2b u+
+ lcall X2ea2 ; 0ac0 12 2e a2 .."
+ mov 2fh,29h ; 0ac3 85 29 2f .)/
+ mov r3,2bh ; 0ac6 ab 2b ++
+ mov r5,2ah ; 0ac8 ad 2a -*
+ mov r7,34h ; 0aca af 34 /4
+ lcall X2b47 ; 0acc 12 2b 47 .+G
+ lcall X2ea9 ; 0acf 12 2e a9 ..)
+ ljmp X2dea ; 0ad2 02 2d ea .-j
+;
+ push acc ; 0ad5 c0 e0 @`
+ push b ; 0ad7 c0 f0 @p
+ push psw ; 0ad9 c0 d0 @P
+ mov psw,#0 ; 0adb 75 d0 00 uP.
+ push rb0r6 ; 0ade c0 06 @.
+ push rb0r7 ; 0ae0 c0 07 @.
+ jb 22h.0,X0b10 ; 0ae2 20 10 2b .+
+ jnb 22h.6,X0aed ; 0ae5 30 16 05 0..
+ lcall X082a ; 0ae8 12 08 2a ..*
+ sjmp X0af0 ; 0aeb 80 03 ..
+;
+X0aed: lcall X066d ; 0aed 12 06 6d ..m
+X0af0: pop rb0r7 ; 0af0 d0 07 P.
+ pop rb0r6 ; 0af2 d0 06 P.
+ pop psw ; 0af4 d0 d0 PP
+ pop b ; 0af6 d0 f0 Pp
+ pop acc ; 0af8 d0 e0 P`
+ reti ; 0afa 32 2
+;
+ push acc ; 0afb c0 e0 @`
+ push b ; 0afd c0 f0 @p
+ push psw ; 0aff c0 d0 @P
+ mov psw,#0 ; 0b01 75 d0 00 uP.
+ push rb0r6 ; 0b04 c0 06 @.
+ push rb0r7 ; 0b06 c0 07 @.
+ jb 25h.5,X0b36 ; 0b08 20 2d 2b -+
+ jnb 22h.6,X0b13 ; 0b0b 30 16 05 0..
+ lcall X0845 ; 0b0e 12 08 45 ..E
+ sjmp X0b16 ; 0b11 80 03 ..
+;
+X0b13: lcall X0698 ; 0b13 12 06 98 ...
+X0b16: pop rb0r7 ; 0b16 d0 07 P.
+ pop rb0r6 ; 0b18 d0 06 P.
+ pop psw ; 0b1a d0 d0 PP
+ pop b ; 0b1c d0 f0 Pp
+ pop acc ; 0b1e d0 e0 P`
+ reti ; 0b20 32 2
+;
+ pop dph ; 0b21 d0 83 P.
+ pop dpl ; 0b23 d0 82 P.
+ mov r0,a ; 0b25 f8 x
+ clr a ; 0b26 e4 d
+ movc a,@a+dptr ; 0b27 93 .
+ jnz X0b3c ; 0b28 70 12 p.
+ mov a,#1 ; 0b2a 74 01 t.
+ movc a,@a+dptr ; 0b2c 93 .
+ jnz X0b5c ; 0b2d 70 2d p-
+ inc dptr ; 0b2f a3 #
+ inc dptr ; 0b30 a3 #
+X0b31: movc a,@a+dptr ; 0b31 93 .
+ mov r0,a ; 0b32 f8 x
+ mov a,#1 ; 0b33 74 01 t.
+ movc a,@a+dptr ; 0b35 93 .
+X0b36: mov dpl,a ; 0b36 f5 82 u.
+ mov dph,r0 ; 0b38 88 83 ..
+ clr a ; 0b3a e4 d
+ jmp @a+dptr ; 0b3b 73 s
+;
+X0b3c: mov a,#2 ; 0b3c 74 02 t.
+ movc a,@a+dptr ; 0b3e 93 .
+ xrl a,r0 ; 0b3f 68 h
+ jz X0b31 ; 0b40 60 ef `o
+ inc dptr ; 0b42 a3 #
+ inc dptr ; 0b43 a3 #
+ inc dptr ; 0b44 a3 #
+ sjmp X0b46 ; 0b45 80 ff ..
+;
+ mov r6,rb0r3 ; 0b47 ae 03 ..
+ mov r3,rb0r5 ; 0b49 ab 05 +.
+ anl 3ah,#0efh ; 0b4b 53 3a ef S:o
+ mov dptr,#Xd000 ; 0b4e 90 d0 00 .P.
+ mov a,3ah ; 0b51 e5 3a e:
+ movx @dptr,a ; 0b53 f0 p
+ mov r5,rb0r7 ; 0b54 ad 07 -.
+ mov r6,33h ; 0b56 ae 33 .3
+ mov r7,#2 ; 0b58 7f 02 ..
+ lcall X2d51 ; 0b5a 12 2d 51 .-Q
+ mov r7,2fh ; 0b5d af 2f //
+ lcall X2cd0 ; 0b5f 12 2c d0 .,P
+ orl 3ah,#10h ; 0b62 43 3a 10 C:.
+ mov dptr,#Xd000 ; 0b65 90 d0 00 .P.
+ mov a,3ah ; 0b68 e5 3a e:
+ movx @dptr,a ; 0b6a f0 p
+ ret ; 0b6b 22 "
+;
+ mov a,#1 ; 0b6c 74 01 t.
+ mov r0,rb0r7 ; 0b6e a8 07 (.
+ inc r0 ; 0b70 08 .
+ sjmp X0b75 ; 0b71 80 02 ..
+;
+X0b73: clr c ; 0b73 c3 C
+ rlc a ; 0b74 33 3
+X0b75: djnz r0,X0b73 ; 0b75 d8 fc X|
+ mov r7,a ; 0b77 ff .
+ mov dptr,#Xe000 ; 0b78 90 e0 00 .`.
+ movx a,@dptr ; 0b7b e0 `
+ orl a,#2 ; 0b7c 44 02 D.
+ mov r6,a ; 0b7e fe ~
+ mov a,r7 ; 0b7f ef o
+ jnb 24h.7,X0b87 ; 0b80 30 27 04 0'.
+ orl rb0r6,a ; 0b83 42 06 B.
+ sjmp X0b8a ; 0b85 80 03 ..
+;
+X0b87: cpl a ; 0b87 f4 t
+ anl rb0r6,a ; 0b88 52 06 R.
+X0b8a: mov dptr,#Xe000 ; 0b8a 90 e0 00 .`.
+ mov a,r6 ; 0b8d ee n
+ movx @dptr,a ; 0b8e f0 p
+ ret ; 0b8f 22 "
+;
+X0b90: lcall X2e07 ; 0b90 12 2e 07 ...
+ jc X0b9a ; 0b93 40 05 @.
+ lcall X0105 ; 0b95 12 01 05 ...
+ sjmp X0b90 ; 0b98 80 f6 .v
+;
+X0b9a: lcall X2ec8 ; 0b9a 12 2e c8 ..H
+ lcall X2ed4 ; 0b9d 12 2e d4 ..T
+ clr 27h.7 ; 0ba0 c2 3f B?
+ mov 2fh,#0eeh ; 0ba2 75 2f ee u/n
+ mov c,20h.6 ; 0ba5 a2 06 ".
+ mov 24h.0,c ; 0ba7 92 20 .
+ lcall X2db8 ; 0ba9 12 2d b8 .-8
+X0bac: mov dptr,#Xd000 ; 0bac 90 d0 00 .P.
+ movx a,@dptr ; 0baf e0 `
+ jnb acc.1,X0bac ; 0bb0 30 e1 f9 0ay
+ ret ; 0bb3 22 "
+;
+ mov r6,rb0r3 ; 0bb4 ae 03 ..
+ mov r3,rb0r5 ; 0bb6 ab 05 +.
+ anl 3ah,#0efh ; 0bb8 53 3a ef S:o
+ mov dptr,#Xd000 ; 0bbb 90 d0 00 .P.
+ mov a,3ah ; 0bbe e5 3a e:
+ movx @dptr,a ; 0bc0 f0 p
+ mov r5,rb0r7 ; 0bc1 ad 07 -.
+ mov r6,33h ; 0bc3 ae 33 .3
+ mov r7,#3 ; 0bc5 7f 03 ..
+ lcall X2d51 ; 0bc7 12 2d 51 .-Q
+ lcall X2bd7 ; 0bca 12 2b d7 .+W
+ orl 3ah,#10h ; 0bcd 43 3a 10 C:.
+ mov dptr,#Xd000 ; 0bd0 90 d0 00 .P.
+ mov a,3ah ; 0bd3 e5 3a e:
+ movx @dptr,a ; 0bd5 f0 p
+ ret ; 0bd6 22 "
+;
+ mov a,3ah ; 0bd7 e5 3a e:
+ anl a,#0bfh ; 0bd9 54 bf T?
+ mov r5,a ; 0bdb fd }
+ orl a,#20h ; 0bdc 44 20 D
+ mov r6,a ; 0bde fe ~
+ mov r4,#8 ; 0bdf 7c 08 |.
+ mov a,r7 ; 0be1 ef o
+ add a,acc ; 0be2 25 e0 %`
+ mov r7,a ; 0be4 ff .
+ mov dptr,#Xd000 ; 0be5 90 d0 00 .P.
+ mov a,r5 ; 0be8 ed m
+ movx @dptr,a ; 0be9 f0 p
+ movx a,@dptr ; 0bea e0 `
+ jnb acc.4,X0bf1 ; 0beb 30 e4 03 0d.
+ orl rb0r7,#1 ; 0bee 43 07 01 C..
+X0bf1: mov dptr,#Xd000 ; 0bf1 90 d0 00 .P.
+ mov a,r6 ; 0bf4 ee n
+ movx @dptr,a ; 0bf5 f0 p
+ mov r4,a ; 0bf6 fc |
+ mov a,r1 ; 0bf7 e9 i
+ ret ; 0bf8 22 "
+;
+ mov dptr,#Xf000 ; 0bf9 90 f0 00 .p.
+ mov a,32h ; 0bfc e5 32 e2
+ movx @dptr,a ; 0bfe f0 p
+ mov 2fh,a ; 0bff f5 2f u/
+ mov c,24h.6 ; 0c01 a2 26 "&
+ mov 24h.7,c ; 0c03 92 27 .'
+ mov r7,#5 ; 0c05 7f 05 ..
+ lcall X2b6c ; 0c07 12 2b 6c .+l
+ mov dptr,#Xe000 ; 0c0a 90 e0 00 .`.
+ movx a,@dptr ; 0c0d e0 `
+ orl a,#2 ; 0c0e 44 02 D.
+ anl a,#0feh ; 0c10 54 fe T~
+ mov r6,a ; 0c12 fe ~
+ movx @dptr,a ; 0c13 f0 p
+ orl a,#1 ; 0c14 44 01 D.
+ movx @dptr,a ; 0c16 f0 p
+ mov a,r6 ; 0c17 ee n
+ movx @dptr,a ; 0c18 f0 p
+ ret ; 0c19 22 "
+;
+ anl 3ah,#0efh ; 0c1a 53 3a ef S:o
+ mov dptr,#Xd000 ; 0c1d 90 d0 00 .P.
+ mov a,3ah ; 0c20 e5 3a e:
+ movx @dptr,a ; 0c22 f0 p
+ mov r7,#0bfh ; 0c23 7f bf .?
+ lcall X2cd0 ; 0c25 12 2c d0 .,P
+ lcall X2bd7 ; 0c28 12 2b d7 .+W
+ lcall X2bd7 ; 0c2b 12 2b d7 .+W
+ lcall X2bd7 ; 0c2e 12 2b d7 .+W
+ orl 3ah,#10h ; 0c31 43 3a 10 C:.
+ mov dptr,#Xd000 ; 0c34 90 d0 00 .P.
+ mov a,3ah ; 0c37 e5 3a e:
+ movx @dptr,a ; 0c39 f0 p
+ ret ; 0c3a 22 "
+;
+ mov r7,2bh ; 0c3b af 2b /+
+ mov r7,#0edh ; 0c3d 7f ed .m
+ lcall X052f ; 0c3f 12 05 2f ../
+ mov r7,2bh ; 0c42 af 2b /+
+ lcall X052f ; 0c44 12 05 2f ../
+ mov 2ch,#2ah ; 0c47 75 2c 2a u,*
+X0c4a: mov r7,#0e8h ; 0c4a 7f e8 .h
+ mov r6,#0fdh ; 0c4c 7e fd ~}
+ lcall X2c79 ; 0c4e 12 2c 79 .,y
+X0c51: lcall X2e62 ; 0c51 12 2e 62 ..b
+ jnc X0c51 ; 0c54 50 fb P{
+ djnz 2ch,X0c4a ; 0c56 d5 2c f1 U,q
+ ret ; 0c59 22 "
+;
+ mov r7,28h ; 0c5a af 28 /(
+ mov r5,29h ; 0c5c ad 29 -)
+ lcall X2e74 ; 0c5e 12 2e 74 ..t
+ lcall X2ea2 ; 0c61 12 2e a2 .."
+ mov a,28h ; 0c64 e5 28 e(
+ add a,#0feh ; 0c66 24 fe $~
+ mov r3,a ; 0c68 fb {
+ mov 2fh,29h ; 0c69 85 29 2f .)/
+ mov r5,#0efh ; 0c6c 7d ef }o
+ mov r7,34h ; 0c6e af 34 /4
+ lcall X2b47 ; 0c70 12 2b 47 .+G
+ lcall X2ea9 ; 0c73 12 2e a9 ..)
+ ljmp X2dea ; 0c76 02 2d ea .-j
+;
+ mov r5,rb0r7 ; 0c79 ad 07 -.
+ mov r4,rb0r6 ; 0c7b ac 06 ,.
+ clr es ; 0c7d c2 ac B,
+ mov a,r5 ; 0c7f ed m
+ cpl a ; 0c80 f4 t
+ mov r7,a ; 0c81 ff .
+ mov a,r4 ; 0c82 ec l
+ cpl a ; 0c83 f4 t
+ mov r6,a ; 0c84 fe ~
+ mov a,r7 ; 0c85 ef o
+ add a,#1 ; 0c86 24 01 $.
+ mov r5,a ; 0c88 fd }
+ clr a ; 0c89 e4 d
+ addc a,r6 ; 0c8a 3e >
+ mov ctl0,a ; 0c8b f5 ac u,
+ mov r7,rb0r5 ; 0c8d af 05 /.
+ mov r7,cml1 ; 0c8f af aa /*
+ clr ie.5 ; 0c91 c2 ad B-
+ setb es ; 0c93 d2 ac R,
+ ret ; 0c95 22 "
+;
+ mov r5,rb0r7 ; 0c96 ad 07 -.
+ mov r4,rb0r6 ; 0c98 ac 06 ,.
+ clr idsm ; 0c9a c2 ea Bj
+ mov a,r5 ; 0c9c ed m
+ cpl a ; 0c9d f4 t
+ mov r7,a ; 0c9e ff .
+ mov a,r4 ; 0c9f ec l
+ cpl a ; 0ca0 f4 t
+ mov r6,a ; 0ca1 fe ~
+ mov a,r7 ; 0ca2 ef o
+ add a,#1 ; 0ca3 24 01 $.
+ mov r5,a ; 0ca5 fd }
+ clr a ; 0ca6 e4 d
+ addc a,r6 ; 0ca7 3e >
+ mov tmh2,a ; 0ca8 f5 ed um
+ mov r7,rb0r5 ; 0caa af 05 /.
+ mov r7,tml2 ; 0cac af ec /l
+ clr mb1 ; 0cae c2 ef Bo
+ setb idsm ; 0cb0 d2 ea Rj
+ ret ; 0cb2 22 "
+;
+ anl 3ah,#0efh ; 0cb3 53 3a ef S:o
+ mov dptr,#Xd000 ; 0cb6 90 d0 00 .P.
+ mov a,3ah ; 0cb9 e5 3a e:
+ movx @dptr,a ; 0cbb f0 p
+ mov r7,#5 ; 0cbc 7f 05 ..
+ lcall X2cd0 ; 0cbe 12 2c d0 .,P
+ lcall X2bd7 ; 0cc1 12 2b d7 .+W
+ orl 3ah,#10h ; 0cc4 43 3a 10 C:.
+ mov dptr,#Xd000 ; 0cc7 90 d0 00 .P.
+ mov a,3ah ; 0cca e5 3a e:
+ movx @dptr,a ; 0ccc f0 p
+ mov a,r7 ; 0ccd ef o
+ rrc a ; 0cce 13 .
+ ret ; 0ccf 22 "
+;
+ mov a,3ah ; 0cd0 e5 3a e:
+ anl a,#0bfh ; 0cd2 54 bf T?
+ mov r6,a ; 0cd4 fe ~
+ orl a,#40h ; 0cd5 44 40 D@
+ mov r5,a ; 0cd7 fd }
+ mov r4,#8 ; 0cd8 7c 08 |.
+ mov dptr,#Xd000 ; 0cda 90 d0 00 .P.
+ mov a,r7 ; 0cdd ef o
+ rlc a ; 0cde 33 3
+ mov r7,a ; 0cdf ff .
+ jnc X0ce5 ; 0ce0 50 03 P.
+ mov a,r5 ; 0ce2 ed m
+ sjmp X0ce6 ; 0ce3 80 01 ..
+;
+X0ce5: mov a,r6 ; 0ce5 ee n
+X0ce6: movx @dptr,a ; 0ce6 f0 p
+ orl a,#20h ; 0ce7 44 20 D
+ movx @dptr,a ; 0ce9 f0 p
+ mov r4,a ; 0cea fc |
+ acall X0f22 ; 0ceb f1 22 q"
+ lcall X2f04 ; 0ced 12 2f 04 ./.
+ mov r6,39h ; 0cf0 ae 39 .9
+ mov r7,3ah ; 0cf2 af 3a /:
+ lcall X2f3d ; 0cf4 12 2f 3d ./=
+ mov r7,38h ; 0cf7 af 38 /8
+ mov a,38h ; 0cf9 e5 38 e8
+ jnb acc.1,X0d01 ; 0cfb 30 e1 03 0a.
+ orl 39h,#80h ; 0cfe 43 39 80 C9.
+X0d01: mov a,38h ; 0d01 e5 38 e8
+ rrc a ; 0d03 13 .
+ rrc a ; 0d04 13 .
+ anl a,#3fh ; 0d05 54 3f T?
+ mov 38h,a ; 0d07 f5 38 u8
+ ret ; 0d09 22 "
+;
+ anl 3ah,#0efh ; 0d0a 53 3a ef S:o
+ mov dptr,#Xd000 ; 0d0d 90 d0 00 .P.
+ mov a,3ah ; 0d10 e5 3a e:
+ movx @dptr,a ; 0d12 f0 p
+ mov r7,#5 ; 0d13 7f 05 ..
+ lcall X2cd0 ; 0d15 12 2c d0 .,P
+ lcall X2bd7 ; 0d18 12 2b d7 .+W
+ orl 3ah,#10h ; 0d1b 43 3a 10 C:.
+ mov dptr,#Xd000 ; 0d1e 90 d0 00 .P.
+ mov a,3ah ; 0d21 e5 3a e:
+ movx @dptr,a ; 0d23 f0 p
+ ret ; 0d24 22 "
+;
+ lcall X2ec8 ; 0d25 12 2e c8 ..H
+ lcall X2ed4 ; 0d28 12 2e d4 ..T
+X0d2b: mov dptr,#Xd000 ; 0d2b 90 d0 00 .P.
+ movx a,@dptr ; 0d2e e0 `
+ jb acc.1,X0d3a ; 0d2f 20 e1 08 a.
+ lcall X036c ; 0d32 12 03 6c ..l
+ lcall X0105 ; 0d35 12 01 05 ...
+ sjmp X0d2b ; 0d38 80 f1 .q
+;
+X0d3a: ret ; 0d3a 22 "
+;
+ lcall X2ced ; 0d3b 12 2c ed .,m
+ lcall X08f2 ; 0d3e 12 08 f2 ..r
+ mov a,rb1r1 ; 0d41 e5 09 e.
+ jnz X0d70 ; 0d43 70 2b p+
+ mov a,2ah ; 0d45 e5 2a e*
+ jnz X0d50 ; 0d47 70 07 p.
+ mov a,2bh ; 0d49 e5 2b e+
+ jnz X0d50 ; 0d4b 70 03 p.
+ lcall X2efa ; 0d4d 12 2e fa ..z
+X0d50: ret ; 0d50 22 "
+;
+ mov r5,31h ; 0d51 ad 31 -1
+ mov r3,32h ; 0d53 ab 32 +2
+ lcall X2cd0 ; 0d55 12 2c d0 .,P
+ mov r7,31h ; 0d58 af 31 /1
+ lcall X2cd0 ; 0d5a 12 2c d0 .,P
+ mov r7,32h ; 0d5d af 32 /2
+ lcall X2cd0 ; 0d5f 12 2c d0 .,P
+ mov r7,33h ; 0d62 af 33 /3
+ ljmp X2cd0 ; 0d64 02 2c d0 .,P
+;
+ anl 3ah,#0efh ; 0d67 53 3a ef S:o
+ mov dptr,#Xd000 ; 0d6a 90 d0 00 .P.
+ mov a,3ah ; 0d6d e5 3a e:
+ movx @dptr,a ; 0d6f f0 p
+X0d70: lcall X2cd0 ; 0d70 12 2c d0 .,P
+ orl 3ah,#10h ; 0d73 43 3a 10 C:.
+ mov dptr,#Xd000 ; 0d76 90 d0 00 .P.
+ mov a,3ah ; 0d79 e5 3a e:
+ movx @dptr,a ; 0d7b f0 p
+ ret ; 0d7c 22 "
+;
+ lcall X2e74 ; 0d7d 12 2e 74 ..t
+ lcall X2ea2 ; 0d80 12 2e a2 .."
+ clr a ; 0d83 e4 d
+ mov r3,a ; 0d84 fb {
+ mov r5,#0d0h ; 0d85 7d d0 }P
+ mov r7,34h ; 0d87 af 34 /4
+ lcall X00e0 ; 0d89 12 00 e0 ..`
+ lcall X2ea9 ; 0d8c 12 2e a9 ..)
+ ljmp X2dea ; 0d8f 02 2d ea .-j
+;
+ anl 3ah,#0fbh ; 0d92 53 3a fb S:{
+ mov dptr,#Xd000 ; 0d95 90 d0 00 .P.
+ mov a,3ah ; 0d98 e5 3a e:
+ movx @dptr,a ; 0d9a f0 p
+ anl 3ah,#0fdh ; 0d9b 53 3a fd S:}
+ mov a,3ah ; 0d9e e5 3a e:
+ movx @dptr,a ; 0da0 f0 p
+ mov r7,#3ch ; 0da1 7f 3c .<
+ ljmp X0006 ; 0da3 02 00 06 ...
+;
+ jnb 21h.1,X0dd7 ; 0da6 30 09 2e 0..
+ lcall X2eb0 ; 0da9 12 2e b0 ..0
+ jc X0db7 ; 0dac 40 09 @.
+ clr p1.2 ; 0dae c2 92 B.
+ clr p1.3 ; 0db0 c2 93 B.
+ clr 21h.1 ; 0db2 c2 09 B.
+ lcall X2e7d ; 0db4 12 2e 7d ..}
+X0db7: ret ; 0db7 22 "
+;
+ mov c,27h.7 ; 0db8 a2 3f "?
+ mov 24h.1,c ; 0dba 92 21 .!
+ mov 30h,2fh ; 0dbc 85 2f 30 ./0
+ mov c,24h.0 ; 0dbf a2 20 "
+ mov 24h.2,c ; 0dc1 92 22 ."
+ clr 24h.3 ; 0dc3 c2 23 B#
+ clr 24h.4 ; 0dc5 c2 24 B$
+ ljmp X06ee ; 0dc7 02 06 ee ..n
+;
+ mov a,r7 ; 0dca ef o
+ swap a ; 0dcb c4 D
+ anl a,#2fh ; 0dcc 54 2f T/
+ mov dptr,#X0353 ; 0dce 90 03 53 ..S
+ movc a,@a+dptr ; 0dd1 93 .
+ mov r6,a ; 0dd2 fe ~
+ mov a,r7 ; 0dd3 ef o
+ anl a,#2fh ; 0dd4 54 2f T/
+ movc a,@a+dptr ; 0dd6 93 .
+X0dd7: add a,r6 ; 0dd7 2e .
+ mov r7,a ; 0dd8 ff .
+ ret ; 0dd9 22 "
+;
+ mov dptr,#Xe000 ; 0dda 90 e0 00 .`.
+ movx a,@dptr ; 0ddd e0 `
+ orl a,#2 ; 0dde 44 02 D.
+ anl a,#0feh ; 0de0 54 fe T~
+ mov r6,a ; 0de2 fe ~
+ movx @dptr,a ; 0de3 f0 p
+ anl a,#0fdh ; 0de4 54 fd T}
+ movx @dptr,a ; 0de6 f0 p
+ mov a,r6 ; 0de7 ee n
+ movx @dptr,a ; 0de8 f0 p
+ ret ; 0de9 22 "
+;
+X0dea: lcall X2ea2 ; 0dea 12 2e a2 .."
+ lcall X2cb3 ; 0ded 12 2c b3 .,3
+ mov 27h.3,c ; 0df0 92 3b .;
+ lcall X2ea9 ; 0df2 12 2e a9 ..)
+ jb 27h.3,X0dea ; 0df5 20 3b f2 ;r
+ ret ; 0df8 22 "
+;
+ jnb 20h.5,X0e05 ; 0df9 30 05 09 0..
+ jb 25h.6,X0e05 ; 0dfc 20 2e 06 ..
+ jb 20h.2,X0e05 ; 0dff 20 02 03 ..
+X0e02: setb c ; 0e02 d3 S
+ sjmp X0e06 ; 0e03 80 01 ..
+;
+X0e05: clr c ; 0e05 c3 C
+X0e06: ret ; 0e06 22 "
+;
+X0e07: jnb 20h.3,X0e13 ; 0e07 30 03 09 0..
+ jb 25h.2,X0e13 ; 0e0a 20 2a 06 *.
+ jb 20h.2,X0e13 ; 0e0d 20 02 03 ..
+ setb c ; 0e10 d3 S
+X0e11: sjmp X0e14 ; 0e11 80 01 ..
+;
+X0e13: clr c ; 0e13 c3 C
+X0e14: ret ; 0e14 22 "
+;
+ mov r2,rb0r6 ; 0e15 aa 06 *.
+X0e17: mov a,r2 ; 0e17 ea j
+ add a,#0d0h ; 0e18 24 d0 $P
+ mov r5,a ; 0e1a fd }
+ mov a,r7 ; 0e1b ef o
+ mov r3,a ; 0e1c fb {
+ mov r7,34h ; 0e1d af 34 /4
+ lcall X2bb4 ; 0e1f 12 2b b4 .+4
+ ret ; 0e22 22 "
+;
+ mov a,r7 ; 0e23 ef o
+ add a,#0feh ; 0e24 24 fe $~
+ mov r3,a ; 0e26 fb {
+ mov r5,#0efh ; 0e27 7d ef }o
+X0e29: mov r7,34h ; 0e29 af 34 /4
+ lcall X2bb4 ; 0e2b 12 2b b4 .+4
+X0e2e: ret ; 0e2e 22 "
+;
+ setb 20h.2 ; 0e2f d2 02 R.
+ setb 25h.5 ; 0e31 d2 2d R-
+ clr p1.6 ; 0e33 c2 96 B.
+ setb 22h.0 ; 0e35 d2 10 R.
+ clr p1.4 ; 0e37 c2 94 B.
+ ret ; 0e39 22 "
+;
+ mov a,r7 ; 0e3a ef o
+ mov dptr,#X02c9 ; 0e3b 90 02 c9 ..I
+ movc a,@a+dptr ; 0e3e 93 .
+ xrl a,r5 ; 0e3f 6d m
+ jz X0e44 ; 0e40 60 02 `.
+X0e42: sjmp X0e42 ; 0e42 80 fe .~
+;
+X0e44: ret ; 0e44 22 "
+;
+ lcall X2df9 ; 0e45 12 2d f9 .-y
+ jnc X0e4e ; 0e48 50 04 P.
+ clr 22h.0 ; 0e4a c2 10 B.
+ setb p1.4 ; 0e4c d2 94 R.
+X0e4e: ret ; 0e4e 22 "
+;
+ lcall X2e07 ; 0e4f 12 2e 07 ...
+ jnc X0e58 ; 0e52 50 04 P.
+ clr 25h.5 ; 0e54 c2 2d B-
+ setb p1.6 ; 0e56 d2 96 R.
+X0e58: ret ; 0e58 22 "
+;
+ mov a,tmod ; 0e59 e5 89 e.
+ anl a,#0f0h ; 0e5b 54 f0 Tp
+ orl a,#1 ; 0e5d 44 01 D.
+ mov tmod,a ; 0e5f f5 89 u.
+ ret ; 0e61 22 "
+;
+ jnb ie.5,X0e69 ; 0e62 30 ad 04 0-.
+ clr es ; 0e65 c2 ac B,
+ setb c ; 0e67 d3 S
+ ret ; 0e68 22 "
+;
+X0e69: clr c ; 0e69 c3 C
+ ret ; 0e6a 22 "
+;
+ jnb mb1,X0e72 ; 0e6b 30 ef 04 0o.
+ clr idsm ; 0e6e c2 ea Bj
+ setb c ; 0e70 d3 S
+ ret ; 0e71 22 "
+;
+X0e72: clr c ; 0e72 c3 C
+ ret ; 0e73 22 "
+;
+ lcall X2ea2 ; 0e74 12 2e a2 .."
+ lcall X2efa ; 0e77 12 2e fa ..z
+ ljmp X2ea9 ; 0e7a 02 2e a9 ..)
+;
+ lcall X2eeb ; 0e7d 12 2e eb ..k
+ clr 25h.6 ; 0e80 c2 2e B.
+ ljmp X2e45 ; 0e82 02 2e 45 ..E
+;
+X0e85: clr 20h.2 ; 0e85 c2 02 B.
+ lcall X2e6f ; 0e87 12 2e 6f ..o
+ ljmp X2e45 ; 0e8a 02 2e 45 ..E
+;
+ clr 20h.5 ; 0e8d c2 05 B.
+ setb 22h.0 ; 0e8f d2 10 R.
+ clr p1.4 ; 0e91 c2 94 B.
+ ret ; 0e93 22 "
+;
+ clr 20h.3 ; 0e94 c2 03 B.
+ setb 25h.5 ; 0e96 d2 2d R-
+ clr p1.6 ; 0e98 c2 96 B.
+ ret ; 0e9a 22 "
+;
+ mov dptr,#Xd000 ; 0e9b 90 d0 00 .P.
+ mov a,3ah ; 0e9e e5 3a e:
+ movx @dptr,a ; 0ea0 f0 p
+ ret ; 0ea1 22 "
+;
+ jnb 25h.0,X0ea8 ; 0ea2 30 28 03 0(.
+ lcall X2b90 ; 0ea5 12 2b 90 .+.
+X0ea8: ret ; 0ea8 22 "
+;
+ jnb 25h.0,X0eaf ; 0ea9 30 28 03 0(.
+ lcall X2d92 ; 0eac 12 2d 92 .-.
+X0eaf: ret ; 0eaf 22 "
+;
+ mov dptr,#Xe000 ; 0eb0 90 e0 00 .`.
+ movx a,@dptr ; 0eb3 e0 `
+ rrc a ; 0eb4 13 .
+ ret ; 0eb5 22 "
+;
+ anl 3ah,#0feh ; 0eb6 53 3a fe S:~
+ ljmp X2ebb ; 0eb9 02 2e bb ..;
+;
+ orl 3ah,#1 ; 0ebc 43 3a 01 C:.
+ ljmp X2ebb ; 0ebf 02 2e bb ..;
+;
+ anl 3ah,#0fdh ; 0ec2 53 3a fd S:}
+ ljmp X2ebb ; 0ec5 02 2e bb ..;
+;
+ orl 3ah,#2 ; 0ec8 43 3a 02 C:.
+ ljmp X2ebb ; 0ecb 02 2e bb ..;
+;
+ anl 3ah,#0fbh ; 0ece 53 3a fb S:{
+ ljmp X2ebb ; 0ed1 02 2e bb ..;
+;
+ orl 3ah,#4 ; 0ed4 43 3a 04 C:.
+ ljmp X2ebb ; 0ed7 02 2e bb ..;
+;
+ anl 3ah,#7fh ; 0eda 53 3a 7f S:.
+ ljmp X2ebb ; 0edd 02 2e bb ..;
+;
+ orl 3ah,#80h ; 0ee0 43 3a 80 C:.
+ ljmp X2ebb ; 0ee3 02 2e bb ..;
+;
+ setb 20h.5 ; 0ee6 d2 05 R.
+ ljmp X2e45 ; 0ee8 02 2e 45 ..E
+;
+ clr 25h.2 ; 0eeb c2 2a B*
+ ljmp X2e6f ; 0eed 02 2e 6f ..o
+;
+ setb 20h.3 ; 0ef0 d2 03 R.
+ ljmp X2e6f ; 0ef2 02 2e 6f ..o
+;
+ mov r7,3ah ; 0ef5 af 3a /:
+ ljmp X2ebb ; 0ef7 02 2e bb ..;
+;
+ mov r7,#6 ; 0efa 7f 06 ..
+ ljmp X2d67 ; 0efc 02 2d 67 .-g
+;
+ mov r7,#4 ; 0eff 7f 04 ..
+ ljmp X2d67 ; 0f01 02 2d 67 .-g
+;
+ mov r6,36h ; 0f04 ae 36 .6
+ mov r7,37h ; 0f06 af 37 /7
+ ret ; 0f08 22 "
+;
+ clr a ; 0f09 e4 d
+ mov t2con,a ; 0f0a f5 c8 uH
+ ret ; 0f0c 22 "
+;
+ lcall X2c3a ; 0f0d 12 2c 3a .,:
+ ret ; 0f10 22 "
+;
+ clr 25h.3 ; 0f11 c2 2b B+
+ ret ; 0f13 22 "
+;
+ setb 25h.3 ; 0f14 d2 2b R+
+ ret ; 0f16 22 "
+;
+ clr 20h.6 ; 0f17 c2 06 B.
+ ret ; 0f19 22 "
+;
+ setb 20h.6 ; 0f1a d2 06 R.
+ ret ; 0f1c 22 "
+;
+ mov r7,35h ; 0f1d af 35 /5
+ ret ; 0f1f 22 "
+;
+ org 0f22h
+;
+X0f22: mov r7,a ; 0f22 ff .
+;
+; Register/Memory Equates
+;
+rb0r3 equ 3
+rb0r5 equ 5
+rb0r6 equ 6
+rb0r7 equ 7
+rb1r0 equ 8
+rb1r1 equ 9
+rb2r0 equ 10h
+rb2r1 equ 11h
+rb2r2 equ 12h
+rb2r3 equ 13h
+rb2r4 equ 14h
+rb2r5 equ 15h
+rb2r6 equ 16h
+rb2r7 equ 17h
+rb3r0 equ 18h
+rb3r1 equ 19h
+;
+; Miscellaneous equates
+;
+; These are addresses referenced in the code but
+; which are in the middle of a multibyte instruction
+; or are addresses outside the initialized space
+;
+X0001 equ 1
+X0002 equ 2
+X0091 equ 91h
+X00cf equ 0cfh
+X0102 equ 102h
+X0114 equ 114h
+X0196 equ 196h
+X019a equ 19ah
+X01c3 equ 1c3h
+X01dd equ 1ddh
+X01e7 equ 1e7h
+X0203 equ 203h
+X026a equ 26ah
+X02c1 equ 2c1h
+X02d7 equ 2d7h
+X02ee equ 2eeh
+X032c equ 32ch
+X0360 equ 360h
+X036d equ 36dh
+X0410 equ 410h
+X045c equ 45ch
+X0497 equ 497h
+X04ea equ 4eah
+X04ed equ 4edh
+X05b3 equ 5b3h
+X068d equ 68dh
+X06d8 equ 6d8h
+X06f1 equ 6f1h
+X07b4 equ 7b4h
+X0819 equ 819h
+X082c equ 82ch
+X082e equ 82eh
+X090f equ 90fh
+X097e equ 97eh
+X09f8 equ 9f8h
+X0b10 equ 0b10h
+X0b46 equ 0b46h
+X0b5c equ 0b5ch
+X0e00 equ 0e00h
+X0e01 equ 0e01h
+X0e04 equ 0e04h
+X0e08 equ 0e08h
+X0e09 equ 0e09h
+X0e12 equ 0e12h
+X0e16 equ 0e16h
+X0e2a equ 0e2ah
+X0e2c equ 0e2ch
+X0e83 equ 0e83h
+X0e86 equ 0e86h
+X0eab equ 0eabh
+X2a26 equ 2a26h
+X2a56 equ 2a56h
+X2aad equ 2aadh
+X2ad5 equ 2ad5h
+X2afb equ 2afbh
+X2b21 equ 2b21h
+X2b47 equ 2b47h
+X2b6c equ 2b6ch
+X2b90 equ 2b90h
+X2bb4 equ 2bb4h
+X2bd7 equ 2bd7h
+X2bf9 equ 2bf9h
+X2c3a equ 2c3ah
+X2c3b equ 2c3bh
+X2c79 equ 2c79h
+X2c7a equ 2c7ah
+X2cb3 equ 2cb3h
+X2cd0 equ 2cd0h
+X2ced equ 2cedh
+X2d25 equ 2d25h
+X2d3b equ 2d3bh
+X2d51 equ 2d51h
+X2d67 equ 2d67h
+X2d7d equ 2d7dh
+X2d92 equ 2d92h
+X2da6 equ 2da6h
+X2db8 equ 2db8h
+X2dea equ 2deah
+X2df9 equ 2df9h
+X2dfa equ 2dfah
+X2e07 equ 2e07h
+X2e15 equ 2e15h
+X2e23 equ 2e23h
+X2e2f equ 2e2fh
+X2e3a equ 2e3ah
+X2e45 equ 2e45h
+X2e59 equ 2e59h
+X2e62 equ 2e62h
+X2e6f equ 2e6fh
+X2e74 equ 2e74h
+X2e7d equ 2e7dh
+X2e80 equ 2e80h
+X2e85 equ 2e85h
+X2e94 equ 2e94h
+X2ea2 equ 2ea2h
+X2ea9 equ 2ea9h
+X2ead equ 2eadh
+X2eb0 equ 2eb0h
+X2eb6 equ 2eb6h
+X2ebb equ 2ebbh
+X2ebc equ 2ebch
+X2ec8 equ 2ec8h
+X2ed4 equ 2ed4h
+X2ee6 equ 2ee6h
+X2eeb equ 2eebh
+X2ef0 equ 2ef0h
+X2ef5 equ 2ef5h
+X2efa equ 2efah
+X2f04 equ 2f04h
+X2f11 equ 2f11h
+X2f14 equ 2f14h
+X2f17 equ 2f17h
+X2f2d equ 2f2dh
+X2f3a equ 2f3ah
+X2f3d equ 2f3dh
+X2ffb equ 2ffbh
+X2ffc equ 2ffch
+X2ffe equ 2ffeh
+X2fff equ 2fffh
+X3520 equ 3520h
+X41c0 equ 41c0h
+X48aa equ 48aah
+X56a7 equ 56a7h
+X64a9 equ 64a9h
+X64ab equ 64abh
+X6dad equ 6dadh
+X74ae equ 74aeh
+X7bd0 equ 7bd0h
+X7da8 equ 7da8h
+X98fd equ 98fdh
+Xa8fe equ 0a8feh
+Xadff equ 0adffh
+Xb512 equ 0b512h
+Xb73f equ 0b73fh
+Xb760 equ 0b760h
+Xb7d1 equ 0b7d1h
+Xb7d2 equ 0b7d2h
+Xb7d3 equ 0b7d3h
+Xb7d4 equ 0b7d4h
+Xb7eb equ 0b7ebh
+Xd000 equ 0d000h
+Xd001 equ 0d001h
+Xe000 equ 0e000h
+Xf000 equ 0f000h
+;
+ end
+;
+
diff --git a/site/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.dis51.txt b/site/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.dis51.txt
new file mode 100644
index 0000000..55cfc7a
--- /dev/null
+++ b/site/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.dis51.txt
@@ -0,0 +1,3079 @@
+CSEG AT 0000h
+ LJMP L0001
+
+ DB 02h
+ DB 0Ah
+ DB 0FBh
+L0065:
+ MOV A, R7
+ MOV B, #3h
+ MUL AB
+ MOV R7, A
+L0066:
+ MOV R6, 7h
+ DEC R7
+ MOV A, R6
+ JNZ L0066
+ RET
+
+ DB 02h
+ DB 0Ah
+ DB 0D5h
+L0015:
+ LCALL L0016
+ MOV R7, #30h
+ LCALL L0017
+ MOV DPTR, #0E000h
+ MOV A, #16h
+ MOVX @DPTR, A
+ LCALL L0018
+ CLR P1.2
+ CLR P1.3
+ CLR P1.0
+ SETB P1.1
+ SETB PX0
+ SETB PX1
+ SETB IT0
+ SETB EX0
+ SETB IT1
+ SETB EX1
+ MOV R5, #44h
+ CLR A
+ MOV R7, A
+ LCALL L0019
+ MOV R5, #4Dh
+ INC R7
+ LCALL L0019
+ MOV R5, #26h
+ INC R7
+ LCALL L0019
+ MOV R5, #50h
+ INC R7
+ LCALL L0019
+ LCALL L0020
+ SETB EA
+ MOV R7, #0B1h
+ LCALL L0021
+ MOV DPTR, #0FFEh
+ CLR A
+ MOVC A, @A+DPTR
+ MOV R7, A
+ CJNE A, #55h, L0022
+ INC DPTR
+ CLR A
+ MOVC A, @A+DPTR
+ CJNE A, #0AAh, L0022
+ SETB 8h
+ SJMP L0023
+
+L0022:
+ MOV A, R7
+ CJNE A, #12h, L0023
+ MOV DPTR, #0FFFh
+ CLR A
+ MOVC A, @A+DPTR
+ CJNE A, #34h, L0023
+ CLR 8h
+ CLR 12h
+L0023:
+ LCALL L0024
+ LCALL L0025
+ LCALL L0026
+ JNB 1h, L0027
+ JNB 12h, L0028
+ JB 0h, L0028
+ JNB 11h, L0028
+ LCALL L0029
+ LCALL L0030
+ JNB 8h, L0031
+ CLR 1Ah
+ LCALL L0032
+L0031:
+ LCALL L0033
+ SETB 0h
+ LCALL L0034
+ LCALL L0035
+L0028:
+ LCALL L0018
+ CLR 1h
+L0027:
+ LCALL L0024
+ LCALL L0036
+ JNB 12h, L0023
+ JNB 0h, L0023
+ MOV DPTR, #0D000h
+ MOVX A, @DPTR
+ JNB ACC.0, L0023
+ CLR EA
+ LCALL L0037
+ JNC L0038
+ LCALL L0039
+ LCALL L0040
+ SETB 1Ah
+ LCALL L0032
+ LCALL L0034
+L0038:
+ SETB EA
+ SJMP L0023
+
+L0201:
+ MOV R6, 3h
+ MOV R3, 5h
+ ANL 1Ah, #0EFh
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ MOV R5, 7h
+ MOV 33h, R6
+ MOV R7, #20h
+ LCALL L0188
+ ORL 1Ah, #10h
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ RET
+
+ DB 0DAh
+ DB 07Eh
+ DB 010h
+ DB 09h
+ DB 014h
+L0077:
+ LCALL L0025
+L0026:
+ MOV DPTR, #0E000h
+ MOVX A, @DPTR
+ MOV R7, A
+ JB ACC.1, L0078
+ LJMP L0079
+
+L0078:
+ CLR EX0
+ CLR EX1
+ JB 4h, L0080
+ JNB 7h, L0081
+L0080:
+ SETB EX0
+ SETB EX1
+ RET
+
+L0081:
+ MOV A, R7
+ MOV C, ACC.3
+ MOV 1Ch, C
+ MOV DPTR, #0F000h
+ MOVX A, @DPTR
+ MOV 2Ch, A
+ LCALL L0082
+ SETB EX0
+ SETB EX1
+ JNB 1Ch, L0083
+ LJMP L0084
+
+L0083:
+ CLR 1Dh
+ CLR 1Eh
+ JB 17h, L0090
+ LJMP L0091
+
+L0090:
+ MOV A, 18h
+ ADD A, #0E1h
+ JZ L0147
+ ADD A, #54h
+ JNZ L0148
+ LJMP L0149
+
+L0148:
+ ADD A, #0FAh
+ JZ L0151
+ DEC A
+ JZ L0152
+ DEC A
+ JZ L0153
+ DEC A
+ JZ L0154
+ ADD A, #74h
+ JNZ L0155
+ MOV R7, 2Ch
+ LCALL L0017
+ SJMP L0149
+
+L0151:
+ MOV A, 2Ch
+ JNB ACC.1, L0180
+ SETB P1.0
+ SJMP L0149
+
+L0180:
+ CLR P1.0
+ SJMP L0149
+
+L0152:
+ CLR 1Fh
+ SJMP L0179
+
+L0153:
+ SETB 1Fh
+L0179:
+ MOV 2Fh, 2Ch
+ SJMP L0176
+
+L0154:
+ SETB 1Eh
+ SJMP L0149
+
+L0147:
+ MOV A, 2Ch
+ JNZ L0181
+ LCALL L0041
+ LCALL L0042
+ MOV 12h, 38h
+ MOV 13h, 39h
+ MOV 14h, 3Ah
+ MOV 15h, 9h
+ MOV 16h, 0Ah
+ MOV 17h, 0Bh
+ SJMP L0149
+
+L0181:
+ MOV A, 2Ch
+ CLR C
+ SUBB A, #1h
+ JC L0182
+ MOV A, 2Ch
+ SETB C
+ SUBB A, #6h
+ JNC L0182
+ CLR 1Fh
+ MOV A, #11h
+ ADD A, 2Ch
+ MOV R0, A
+ MOV A, @R0
+ MOV 2Fh, A
+ SJMP L0176
+
+L0182:
+ MOV A, 2Ch
+ CJNE A, #7h, L0149
+ CLR 1Fh
+ MOV 2Fh, 3Bh
+L0176:
+ SETB 20h
+ LCALL L0177
+ SJMP L0149
+
+L0155:
+ SETB 1Dh
+L0149:
+ CLR 17h
+ SJMP L0150
+
+L0091:
+ SETB 1Dh
+L0150:
+ JNB 1Dh, L0092
+ MOV R7, 2Ch
+ LCALL L0093
+ SJMP L0094
+
+L0092:
+ JNB 1Eh, L0094
+ MOV R7, 2Ch
+ LCALL L0141
+L0094:
+ LCALL L0095
+ LJMP L0096
+
+L0084:
+ CLR 1Dh
+ MOV A, 2Ch
+ LCALL L0085
+ LJMP L0086
+
+ DB 02h
+ DB 035h
+ DB 020h
+ DB 02h
+ DB 0B7h
+ DB 060h
+ DB 02h
+ DB 056h
+ DB 0A7h
+ DB 02h
+ DB 05Dh
+ DB 0A8h
+ DB 02h
+ DB 064h
+ DB 0A9h
+ DB 02h
+ DB 048h
+ DB 0AAh
+ DB 02h
+ DB 064h
+ DB 0ABh
+ DB 02h
+ DB 06Dh
+ DB 0ADh
+ DB 02h
+ DB 074h
+ DB 0AEh
+ DB 02h
+ DB 041h
+ DB 0C0h
+ DB 02h
+ DB 0B7h
+ DB 0CBh
+ DB 02h
+ DB 07Bh
+ DB 0D0h
+ DB 02h
+ DB 0B7h
+ DB 0D1h
+ DB 02h
+ DB 0B7h
+ DB 0D2h
+ DB 02h
+ DB 0B7h
+ DB 0D3h
+ DB 02h
+ DB 0B7h
+ DB 0D4h
+ DB 02h
+ DB 098h
+ DB 0DDh
+ DB 02h
+ DB 08Dh
+ DB 0DFh
+ DB 02h
+ DB 0A8h
+ DB 0FEh
+ DB 00h
+ DB 00h
+ DB 02h
+ DB 0B5h
+ DB 012h
+ DB 0Ah
+ DB 083h
+ DB 08Fh
+ DB 02Dh
+ DB 0C2h
+ DB 01Fh
+ DB 085h
+ DB 02Dh
+ DB 02Fh
+ DB 080h
+ DB 028h
+ DB 0C2h
+ DB 01Fh
+ DB 075h
+ DB 02Fh
+ DB 0FFh
+ DB 080h
+ DB 021h
+ DB 07Fh
+ DB 030h
+ DB 012h
+ DB 05h
+ DB 0FBh
+ DB 0C2h
+ DB 01Fh
+ DB 075h
+ DB 02Fh
+ DB 055h
+ DB 0C2h
+ DB 020h
+ DB 080h
+ DB 04Bh
+ DB 012h
+ DB 0Eh
+ DB 08Dh
+ DB 0D2h
+ DB 01Dh
+ DB 080h
+ DB 05Ah
+ DB 012h
+ DB 0Eh
+ DB 0E6h
+ DB 0D2h
+ DB 01Dh
+ DB 080h
+ DB 053h
+ DB 0C2h
+ DB 01Fh
+ DB 0E4h
+ DB 0F5h
+ DB 02Fh
+ DB 0D2h
+ DB 020h
+ DB 080h
+ DB 034h
+ DB 012h
+ DB 0Eh
+ DB 094h
+ DB 0D2h
+ DB 01Dh
+ DB 080h
+ DB 043h
+ DB 012h
+ DB 0Eh
+ DB 0F0h
+ DB 0D2h
+ DB 01Dh
+ DB 080h
+ DB 03Ch
+ DB 075h
+ DB 02Eh
+ DB 01h
+ DB 030h
+ DB 090h
+ DB 03h
+ DB 043h
+ DB 02Eh
+ DB 02h
+ DB 0C2h
+ DB 01Fh
+ DB 085h
+ DB 02Eh
+ DB 02Fh
+ DB 0D2h
+ DB 020h
+ DB 080h
+ DB 014h
+ DB 0D2h
+ DB 090h
+ DB 0C2h
+ DB 01Fh
+ DB 085h
+ DB 0Fh
+ DB 02Fh
+ DB 0D2h
+ DB 020h
+ DB 080h
+ DB 09h
+ DB 0C2h
+ DB 090h
+ DB 0C2h
+ DB 01Fh
+ DB 085h
+ DB 0Fh
+ DB 02Fh
+ DB 0D2h
+ DB 020h
+ DB 012h
+ DB 0Dh
+ DB 0B8h
+ DB 0D2h
+ DB 01Dh
+ DB 080h
+ DB 0Fh
+ DB 0C2h
+ DB 091h
+ DB 07Fh
+ DB 05h
+ DB 012h
+ DB 00h
+ DB 06h
+ DB 0D2h
+ DB 091h
+ DB 0D2h
+ DB 01Dh
+ DB 080h
+ DB 02h
+ DB 0D2h
+ DB 01Dh
+ DB 030h
+ DB 01Dh
+ DB 03h
+ DB 012h
+ DB 0Eh
+ DB 085h
+ DB 0D2h
+ DB 017h
+ DB 085h
+ DB 02Ch
+ DB 018h
+L0096:
+ JB 1h, L0079
+ LCALL L0018
+L0079:
+ RET
+
+ DB 044h
+ DB 04Dh
+ DB 026h
+ DB 050h
+ DB 00h
+ DB 0FFh
+ DB 043h
+ DB 041h
+ DB 03Fh
+ DB 03Dh
+ DB 03Bh
+ DB 03Ch
+ DB 058h
+ DB 064h
+ DB 044h
+ DB 042h
+ DB 040h
+ DB 03Eh
+ DB 0Fh
+ DB 029h
+ DB 059h
+ DB 065h
+ DB 038h
+ DB 02Ah
+ DB 070h
+ DB 01Dh
+ DB 010h
+ DB 02h
+ DB 05Ah
+ DB 066h
+ DB 071h
+ DB 02Ch
+ DB 01Fh
+ DB 01Eh
+ DB 011h
+ DB 03h
+ DB 05Bh
+ DB 067h
+ DB 02Eh
+ DB 02Dh
+ DB 020h
+ DB 012h
+ DB 05h
+ DB 04h
+ DB 05Ch
+ DB 068h
+ DB 039h
+ DB 02Fh
+ DB 021h
+ DB 014h
+ DB 013h
+ DB 06h
+ DB 05Dh
+ DB 069h
+ DB 031h
+ DB 030h
+ DB 023h
+ DB 022h
+ DB 015h
+ DB 07h
+ DB 05Eh
+ DB 06Ah
+ DB 072h
+ DB 032h
+ DB 024h
+ DB 016h
+ DB 08h
+ DB 09h
+ DB 05Fh
+ DB 06Bh
+ DB 033h
+ DB 025h
+ DB 017h
+ DB 018h
+ DB 0Bh
+ DB 0Ah
+ DB 060h
+ DB 06Ch
+ DB 034h
+ DB 035h
+ DB 026h
+ DB 027h
+ DB 019h
+ DB 0Ch
+ DB 061h
+ DB 06Dh
+ DB 073h
+ DB 028h
+ DB 074h
+ DB 01Ah
+ DB 0Dh
+ DB 062h
+ DB 06Eh
+ DB 03Ah
+ DB 036h
+ DB 01Ch
+ DB 01Bh
+ DB 075h
+ DB 02Bh
+ DB 063h
+ DB 076h
+ DB 055h
+ DB 056h
+ DB 077h
+ DB 078h
+ DB 079h
+ DB 07Ah
+ DB 0Eh
+ DB 07Bh
+ DB 07Ch
+ DB 04Fh
+ DB 07Dh
+ DB 04Bh
+ DB 047h
+ DB 07Eh
+ DB 07Fh
+ DB 06Fh
+ DB 052h
+ DB 053h
+ DB 050h
+ DB 04Ch
+ DB 04Dh
+ DB 048h
+ DB 01h
+ DB 045h
+ DB 057h
+ DB 04Eh
+ DB 051h
+ DB 04Ah
+ DB 037h
+ DB 049h
+ DB 046h
+ DB 054h
+ DB 00h
+ DB 00h
+ DB 00h
+ DB 041h
+ DB 054h
+ DB 00h
+ DB 01h
+ DB 01h
+ DB 02h
+ DB 01h
+ DB 02h
+ DB 02h
+ DB 03h
+ DB 01h
+ DB 02h
+ DB 02h
+ DB 03h
+ DB 02h
+ DB 03h
+ DB 03h
+ DB 04h
+ DB 014h
+ DB 023h
+ DB 014h
+ DB 03Ah
+ DB 014h
+ DB 04Dh
+ DB 042h
+ DB 032h
+ DB 023h
+L0024:
+ JB 0Ch, L0202
+ LJMP L0203
+
+L0202:
+ CLR 1Ah
+ CLR 1Bh
+ MOV A, 10h
+ JNB ACC.7, L0204
+ MOV A, 11h
+ MOV R6, 10h
+ MOV R0, #6h
+L0205:
+ XCH A, R6
+ CLR C
+ RRC A
+ XCH A, R6
+ RRC A
+ DJNZ R0, L0205
+ MOV 26h, A
+ MOV R7, A
+ LCALL L0106
+ MOV 27h, R7
+ MOV A, 10h
+ SWAP A
+ RRC A
+ RRC A
+ ANL A, #3h
+ MOV R7, A
+ MOV A, 27h
+ ANL A, #1h
+ CJNE A, 7h, L0206
+ CLR A
+ MOV R7, #1h
+ SJMP L0207
+
+L0206:
+ MOV R7, #0h
+L0207:
+ MOV A, R7
+ JNB ACC.0, L0208
+ SETB 1Bh
+ SJMP L0204
+
+L0208:
+ JB 13h, L0211
+ MOV R7, 26h
+ LCALL L0212
+ MOV R7, 26h
+ LCALL L0213
+ MOV 28h, R6
+ MOV 29h, R7
+ MOV A, 29h
+ CPL A
+ JNZ L0214
+ MOV A, 28h
+ CPL A
+L0214:
+ JZ L0204
+ MOV 26h, 29h
+ SETB 1Ah
+ SJMP L0204
+
+L0211:
+ SETB 1Ah
+L0204:
+ JNB 1Ah, L0209
+ CLR 27h
+ MOV R7, #7h
+ LCALL L0112
+ CLR 27h
+ MOV R7, #6h
+ LCALL L0112
+ MOV C, 13h
+ MOV 25h, C
+ MOV 31h, 26h
+ LCALL L0114
+ CLR 0Ch
+ RET
+
+L0209:
+ JNB 1Bh, L0210
+ MOV C, 13h
+ MOV 21h, C
+ MOV 30h, #0FFh
+ SETB 22h
+ CLR 23h
+ SETB 24h
+ LJMP L0178
+
+L0210:
+ CLR 0Ch
+ LCALL L0184
+L0203:
+ RET
+
+L0239:
+ CLR A
+ MOV 26h, A
+ MOV 27h, A
+ MOV 28h, #0Fh
+ MOV 29h, #0FFh
+L0243:
+ MOV A, 27h
+ ADD A, 29h
+ MOV R7, A
+ MOV A, 26h
+ ADDC A, 28h
+ CLR C
+ RRC A
+ MOV 2Ah, A
+ MOV A, R7
+ RRC A
+ MOV 2Bh, A
+ MOV R7, A
+ MOV R6, 2Ah
+ LCALL L0240
+ CJNE R7, #0FFh, L0241
+ MOV A, 2Bh
+ ADD A, #0FFh
+ MOV 29h, A
+ MOV A, 2Ah
+ ADDC A, #0FFh
+ MOV 28h, A
+ SJMP L0242
+
+L0241:
+ MOV A, R7
+ JNZ L0245
+ MOV A, 2Bh
+ ADD A, #1h
+ MOV 27h, A
+ CLR A
+ ADDC A, 2Ah
+ MOV 26h, A
+ SJMP L0242
+
+L0245:
+ MOV 2Ch, #0FFh
+ CLR A
+ MOV 2Dh, A
+L0248:
+ MOV A, 2Ch
+ CLR C
+ RRC A
+ MOV 2Ch, A
+ CJNE A, 7h, L0246
+ MOV A, 2Bh
+ MOV R6, 2Ah
+ MOV R0, #3h
+L0247:
+ CLR C
+ RLC A
+ XCH A, R6
+ RLC A
+ XCH A, R6
+ DJNZ R0, L0247
+ MOV R4, #0h
+ ADD A, 2Dh
+ MOV R7, A
+ MOV A, R4
+ ADDC A, R6
+ XCH A, R7
+ ADD A, #1h
+ XCH A, R7
+ ADDC A, #0h
+ MOV R6, A
+ RET
+
+L0246:
+ INC 2Dh
+ MOV A, 2Dh
+ CJNE A, #7h, L0248
+ MOV R6, #0FFh
+ MOV R7, #0FFh
+ RET
+
+L0242:
+ SETB C
+ MOV A, 27h
+ SUBB A, 29h
+ MOV A, 28h
+ XRL A, #80h
+ MOV R0, A
+ MOV A, 26h
+ XRL A, #80h
+ SUBB A, R0
+ JC L0243
+ MOV A, 27h
+ MOV R6, 26h
+ MOV R0, #3h
+L0244:
+ CLR C
+ RLC A
+ XCH A, R6
+ RLC A
+ XCH A, R6
+ DJNZ R0, L0244
+ MOV R7, A
+ RET
+
+L0001:
+ MOV R0, #7Fh
+ CLR A
+L0002:
+ MOV @R0, A
+ DJNZ R0, L0002
+ MOV SP, #3Bh
+ LJMP L0003
+
+L0004:
+ LJMP L0015
+
+L0006:
+ CLR A
+ MOVC A, @A+DPTR
+ INC DPTR
+ MOV R0, A
+L0014:
+ CLR A
+ MOVC A, @A+DPTR
+ INC DPTR
+ JC L0012
+ MOV @R0, A
+ SJMP L0013
+
+L0012:
+ MOVX @R0, A
+L0013:
+ INC R0
+ DJNZ R7, L0014
+ SJMP L0009
+
+L0007:
+ CLR A
+ MOVC A, @A+DPTR
+ INC DPTR
+ MOV R0, A
+ ANL A, #7h
+ ADD A, #0Ch
+ XCH A, R0
+ CLR C
+ RLC A
+ SWAP A
+ ANL A, #0Fh
+ ORL A, #20h
+ XCH A, R0
+ MOVC A, @A+PC
+ JC L0010
+ CPL A
+ ANL A, @R0
+ SJMP L0011
+
+L0010:
+ ORL A, @R0
+L0011:
+ MOV @R0, A
+ DJNZ R7, L0007
+ SJMP L0009
+
+ DB 01h
+ DB 02h
+ DB 04h
+ DB 08h
+ DB 010h
+ DB 020h
+ DB 040h
+ DB 080h
+L0003:
+ MOV DPTR, #0880h
+L0009:
+ CLR A
+ MOV R6, #1h
+ MOVC A, @A+DPTR
+ JZ L0004
+ INC DPTR
+ MOV R7, A
+ ANL A, #3Fh
+ JNB ACC.5, L0005
+ ANL A, #1Fh
+ MOV R6, A
+ CLR A
+ MOVC A, @A+DPTR
+ INC DPTR
+ JZ L0005
+ INC R6
+L0005:
+ XCH A, R7
+ ANL A, #0C0h
+ ADD A, ACC
+ JZ L0006
+ JC L0007
+ CLR A
+ MOVC A, @A+DPTR
+ INC DPTR
+ MOV R2, A
+ CLR A
+ MOVC A, @A+DPTR
+ INC DPTR
+ MOV R0, A
+L0008:
+ CLR A
+ MOVC A, @A+DPTR
+ INC DPTR
+ XCH A, R0
+ XCH A, DPL
+ XCH A, R0
+ XCH A, R2
+ XCH A, DPH
+ XCH A, R2
+ MOVX @DPTR, A
+ INC DPTR
+ XCH A, R0
+ XCH A, DPL
+ XCH A, R0
+ XCH A, R2
+ XCH A, DPH
+ XCH A, R2
+ DJNZ R7, L0008
+ DJNZ R6, L0008
+ SJMP L0009
+
+L0093:
+ SETB 0Dh
+ CLR P1.6
+ SETB 0Eh
+ SETB 10h
+ CLR P1.4
+ MOV 8h, R7
+ LCALL L0106
+ MOV A, R7
+ RRC A
+ CPL C
+ MOV 14h, C
+ SETB 16h
+ CLR A
+ MOV 0Ch, A
+ MOV R7, #28h
+ LCALL L0065
+ CLR P1.7
+ SETB 3h
+ CLR 0Ah
+ MOV R7, #0E8h
+ MOV R6, #0FDh
+ LCALL L0107
+ CLR 0Dh
+ SETB P1.6
+L0110:
+ JNB 16h, L0108
+ LCALL L0109
+ JNC L0110
+ CLR EA
+ SETB P1.7
+ CLR 21h
+ LCALL L0111
+ CLR 16h
+ CLR A
+ MOV 0Ch, A
+ SETB EA
+ RET
+
+L0108:
+ MOV R7, #0E8h
+ MOV R6, #0FDh
+ LCALL L0107
+L0129:
+ JB 4h, L0128
+ JB 0Ah, L0128
+ LCALL L0109
+ JNC L0129
+ CLR EA
+ CLR 21h
+ LCALL L0111
+ SETB EA
+ RET
+
+L0128:
+ LCALL L0036
+ RET
+
+L0141:
+ SETB 10h
+ CLR P1.4
+ SETB 0Ah
+ SETB 0Dh
+ CLR P1.6
+ MOV 8h, R7
+ LCALL L0106
+ MOV A, R7
+ RRC A
+ CPL C
+ MOV 14h, C
+ SETB 16h
+ CLR A
+ MOV 0Eh, A
+ MOV R7, #28h
+ LCALL L0065
+ CLR P1.5
+ SETB 5h
+ CLR 0Eh
+ MOV R7, #0E8h
+ MOV R6, #0FDh
+ LCALL L0107
+ CLR 10h
+ SETB P1.4
+L0143:
+ JNB 16h, L0142
+ LCALL L0109
+ JNC L0143
+ CLR EA
+ SETB P1.5
+ LCALL L0144
+ CLR 16h
+ CLR A
+ MOV 0Eh, A
+ SETB EA
+ RET
+
+L0142:
+ MOV R7, #0E8h
+ MOV R6, #0FDh
+ LCALL L0107
+L0146:
+ JB 7h, L0145
+ JB 0Eh, L0145
+ LCALL L0109
+ JNC L0146
+ CLR EA
+ LCALL L0144
+ SETB EA
+ RET
+
+L0145:
+ LCALL L0036
+ RET
+
+L0017:
+ MOV R5, 7h
+ MOV A, R5
+ JNB ACC.6, L0156
+ SETB 0Fh
+ SJMP L0157
+
+L0156:
+ CLR 0Fh
+L0157:
+ MOV A, R5
+ JNB ACC.5, L0158
+ LCALL L0159
+ SJMP L0160
+
+L0158:
+ LCALL L0175
+L0160:
+ MOV A, R5
+ JNB ACC.4, L0161
+ LCALL L0162
+ SJMP L0163
+
+L0161:
+ LCALL L0174
+L0163:
+ MOV A, R5
+ JNB ACC.2, L0164
+ SETB 27h
+ SJMP L0165
+
+L0164:
+ CLR 27h
+L0165:
+ MOV R7, #2h
+ LCALL L0112
+ MOV A, R5
+ JNB ACC.1, L0166
+ LCALL L0167
+ SJMP L0168
+
+L0166:
+ LCALL L0173
+L0168:
+ MOV A, R5
+ JNB ACC.0, L0169
+ LCALL L0170
+ JB 11h, L0171
+ SETB 11h
+ SETB 1h
+ RET
+
+L0169:
+ LCALL L0172
+L0171:
+ RET
+
+ DB 07Fh
+ DB 02h
+ DB 012h
+ DB 00h
+ DB 06h
+ DB 020h
+ DB 094h
+ DB 042h
+ DB 0A2h
+ DB 095h
+ DB 092h
+ DB 018h
+ DB 05h
+ DB 0Eh
+ DB 0E5h
+ DB 0Eh
+ DB 0B4h
+ DB 01h
+ DB 012h
+ DB 020h
+ DB 018h
+ DB 0Ah
+ DB 0D2h
+ DB 07h
+ DB 0D2h
+ DB 0Ah
+ DB 0D2h
+ DB 0Dh
+ DB 0C2h
+ DB 096h
+ DB 080h
+ DB 019h
+ DB 0E4h
+ DB 0F5h
+ DB 0Eh
+ DB 080h
+ DB 014h
+ DB 0E5h
+ DB 0Eh
+ DB 0B4h
+ DB 0Bh
+ DB 0Fh
+ DB 0D2h
+ DB 0Eh
+ DB 0D2h
+ DB 010h
+ DB 0C2h
+ DB 094h
+ DB 0D2h
+ DB 013h
+ DB 0D2h
+ DB 0Ch
+ DB 0E4h
+ DB 0F5h
+ DB 0Eh
+ DB 0C2h
+ DB 07h
+ DB 0E5h
+ DB 010h
+ DB 0C3h
+ DB 013h
+ DB 0F5h
+ DB 010h
+ DB 0E5h
+ DB 011h
+ DB 013h
+ DB 0F5h
+ DB 011h
+ DB 030h
+ DB 018h
+ DB 03h
+ DB 043h
+ DB 010h
+ DB 080h
+ DB 022h
+ DB 07Fh
+ DB 02h
+ DB 012h
+ DB 00h
+ DB 06h
+ DB 020h
+ DB 096h
+ DB 042h
+ DB 0A2h
+ DB 097h
+ DB 092h
+ DB 019h
+ DB 05h
+ DB 0Ch
+ DB 0E5h
+ DB 0Ch
+ DB 0B4h
+ DB 01h
+ DB 012h
+ DB 020h
+ DB 019h
+ DB 0Ah
+ DB 0D2h
+ DB 04h
+ DB 0D2h
+ DB 0Eh
+ DB 0D2h
+ DB 010h
+ DB 0C2h
+ DB 094h
+ DB 080h
+ DB 019h
+ DB 0E4h
+ DB 0F5h
+ DB 0Ch
+ DB 080h
+ DB 014h
+ DB 0E5h
+ DB 0Ch
+ DB 0B4h
+ DB 0Bh
+ DB 0Fh
+ DB 0D2h
+ DB 0Ah
+ DB 0D2h
+ DB 0Dh
+ DB 0C2h
+ DB 096h
+ DB 0C2h
+ DB 013h
+ DB 0D2h
+ DB 0Ch
+ DB 0E4h
+ DB 0F5h
+ DB 0Ch
+ DB 0C2h
+ DB 04h
+ DB 0E5h
+ DB 010h
+ DB 0C3h
+ DB 013h
+ DB 0F5h
+ DB 010h
+ DB 0E5h
+ DB 011h
+ DB 013h
+ DB 0F5h
+ DB 011h
+ DB 030h
+ DB 019h
+ DB 03h
+ DB 043h
+ DB 010h
+ DB 080h
+ DB 022h
+L0144:
+ SETB 21h
+L0111:
+ MOV 30h, #0FEh
+L0140:
+ SETB 22h
+ SETB 23h
+ CLR 24h
+L0178:
+ SETB 0Ah
+ SETB 0Dh
+ CLR P1.6
+ SETB 0Eh
+ SETB 10h
+ CLR P1.4
+ MOV C, 23h
+ MOV 27h, C
+ MOV R7, #6h
+ LCALL L0112
+ MOV C, 24h
+ MOV 27h, C
+ MOV R7, #7h
+ LCALL L0112
+ JNB 22h, L0113
+ MOV C, 21h
+ MOV 25h, C
+ MOV 31h, 30h
+ LCALL L0114
+ SJMP L0115
+
+L0113:
+ MOV C, 21h
+ MOV 26h, C
+ MOV 32h, 30h
+ LCALL L0116
+ CLR P1.2
+ CLR P1.3
+ SETB 9h
+L0115:
+ CLR 0Ch
+ RET
+
+L0036:
+ JB 4h, L0130
+ JNB 7h, L0131
+L0130:
+ MOV R7, #0E8h
+ MOV R6, #0FDh
+ LCALL L0107
+L0133:
+ JB 4h, L0132
+ JNB 7h, L0131
+L0132:
+ LCALL L0109
+ JNC L0133
+ CLR EA
+ JB 4h, L0134
+ JNB 7h, L0135
+L0134:
+ JNB 4h, L0136
+ CLR 1Fh
+ SJMP L0137
+
+L0136:
+ SETB 1Fh
+L0137:
+ CLR A
+ MOV 0Ch, A
+ CLR 4h
+ MOV 0Eh, A
+ CLR 7h
+ LCALL L0138
+ LCALL L0139
+ SETB EA
+ MOV C, 1Fh
+ MOV 21h, C
+ MOV 30h, #0FFh
+ LCALL L0140
+ SJMP L0133
+
+L0135:
+ SETB EA
+ SJMP L0133
+
+L0131:
+ RET
+
+L0212:
+ MOV A, 19h
+ JZ L0220
+ CJNE A, #2h, L0221
+L0220:
+ MOV A, 0Dh
+ MOV DPTR, #0363h
+ MOVC A, @A+DPTR
+ XRL A, R7
+ JZ L0222
+L0221:
+ MOV A, 19h
+ XRL A, #1h
+ JNZ L0223
+ MOV A, R7
+ XRL A, #0F0h
+ JNZ L0223
+L0222:
+ INC 19h
+ MOV A, 19h
+ SETB C
+ SUBB A, #2h
+ JC L0224
+ CLR A
+ MOV 19h, A
+ INC 0Dh
+ MOV A, 0Dh
+ SUBB A, #9h
+ JC L0224
+ MOV 2Ah, #5h
+L0226:
+ CLR A
+ MOV R7, A
+ LCALL L0225
+ MOV R7, #7h
+ LCALL L0225
+ DJNZ 2Ah, L0226
+ CLR A
+ MOV 0Dh, A
+ RET
+
+L0223:
+ CLR A
+ MOV 0Dh, A
+ MOV 19h, A
+L0224:
+ RET
+
+L0035:
+ MOV A, 3Bh
+ XRL A, #15h
+ JNZ L0229
+ LCALL L0041
+ MOV A, 3Ah
+ JNB ACC.0, L0230
+ MOV 26h, #80h
+ SJMP L0231
+
+L0230:
+ CLR A
+ MOV 26h, A
+L0231:
+ MOV A, 3Ah
+ CLR C
+ RRC A
+ MOV 3Ah, A
+ MOV A, 39h
+ JNB ACC.0, L0232
+ ORL 3Ah, #80h
+L0232:
+ MOV A, 39h
+ CLR C
+ RRC A
+ MOV 39h, A
+ MOV A, 38h
+ JNB ACC.0, L0233
+ ORL 39h, #80h
+L0233:
+ CLR P3.6
+ MOV DPTR, #0D001h
+ CLR A
+ MOVX @DPTR, A
+ INC DPTR
+ MOV A, 26h
+ MOVX @DPTR, A
+ INC DPTR
+ MOV A, 3Ah
+ MOVX @DPTR, A
+ INC DPTR
+ MOV A, 39h
+ MOVX @DPTR, A
+ SETB P3.6
+L0229:
+ RET
+
+ DB 020h
+ DB 094h
+ DB 037h
+ DB 05h
+ DB 0Eh
+ DB 0E5h
+ DB 0Eh
+ DB 0D3h
+ DB 094h
+ DB 08h
+ DB 050h
+ DB 012h
+ DB 0E5h
+ DB 08h
+ DB 030h
+ DB 0E0h
+ DB 04h
+ DB 0D2h
+ DB 095h
+ DB 080h
+ DB 02h
+ DB 0C2h
+ DB 095h
+ DB 0E5h
+ DB 08h
+ DB 0C3h
+ DB 013h
+ DB 0F5h
+ DB 08h
+ DB 022h
+ DB 0E5h
+ DB 0Eh
+ DB 0B4h
+ DB 09h
+ DB 05h
+ DB 0A2h
+ DB 014h
+ DB 092h
+ DB 095h
+ DB 022h
+ DB 0E5h
+ DB 0Eh
+ DB 0B4h
+ DB 0Ah
+ DB 03h
+ DB 0D2h
+ DB 095h
+ DB 022h
+ DB 0E5h
+ DB 0Eh
+ DB 0B4h
+ DB 0Bh
+ DB 05h
+ DB 0C2h
+ DB 016h
+ DB 0E4h
+ DB 0F5h
+ DB 0Eh
+ DB 022h
+ DB 020h
+ DB 096h
+ DB 037h
+ DB 05h
+ DB 0Ch
+ DB 0E5h
+ DB 0Ch
+ DB 0D3h
+ DB 094h
+ DB 08h
+ DB 050h
+ DB 012h
+ DB 0E5h
+ DB 08h
+ DB 030h
+ DB 0E0h
+ DB 04h
+ DB 0D2h
+ DB 097h
+ DB 080h
+ DB 02h
+ DB 0C2h
+ DB 097h
+ DB 0E5h
+ DB 08h
+ DB 0C3h
+ DB 013h
+ DB 0F5h
+ DB 08h
+ DB 022h
+ DB 0E5h
+ DB 0Ch
+ DB 0B4h
+ DB 09h
+ DB 05h
+ DB 0A2h
+ DB 014h
+ DB 092h
+ DB 097h
+ DB 022h
+ DB 0E5h
+ DB 0Ch
+ DB 0B4h
+ DB 0Ah
+ DB 03h
+ DB 0D2h
+ DB 097h
+ DB 022h
+ DB 0E5h
+ DB 0Ch
+ DB 0B4h
+ DB 0Bh
+ DB 05h
+ DB 0C2h
+ DB 016h
+ DB 0E4h
+ DB 0F5h
+ DB 0Ch
+ DB 022h
+ DB 01h
+ DB 0Ch
+ DB 00h
+ DB 0C1h
+ DB 04h
+ DB 0C1h
+ DB 0Ah
+ DB 0C1h
+ DB 083h
+ DB 0C1h
+ DB 0Ch
+ DB 0C1h
+ DB 09h
+ DB 0C1h
+ DB 02h
+ DB 0C1h
+ DB 016h
+ DB 0C1h
+ DB 08h
+ DB 01h
+ DB 0Eh
+ DB 00h
+ DB 0C1h
+ DB 07h
+ DB 0C1h
+ DB 0Eh
+ DB 0C1h
+ DB 085h
+ DB 0C1h
+ DB 08Bh
+ DB 0C1h
+ DB 086h
+ DB 0C1h
+ DB 08Fh
+ DB 0C1h
+ DB 012h
+ DB 0C1h
+ DB 00h
+ DB 0C1h
+ DB 011h
+ DB 0C1h
+ DB 01h
+ DB 0C1h
+ DB 017h
+ DB 01h
+ DB 0Dh
+ DB 00h
+ DB 01h
+ DB 019h
+ DB 00h
+ DB 01h
+ DB 01Ah
+ DB 00h
+ DB 01h
+ DB 034h
+ DB 03h
+ DB 0C1h
+ DB 029h
+ DB 00h
+L0114:
+ MOV C, 25h
+ MOV 26h, C
+ MOV 32h, 31h
+ LCALL L0116
+ CLR P1.2
+ CLR P1.3
+ JB 25h, L0117
+ JB 6h, L0118
+L0117:
+ JNB 25h, L0119
+ JNB 0Bh, L0119
+L0118:
+ MOV R7, #69h
+ MOV R6, #0h
+ LCALL L0107
+L0120:
+ LCALL L0109
+ JNC L0120
+ LCALL L0121
+ JNC L0119
+ JB 25h, L0122
+ SETB P1.2
+ SJMP L0119
+
+L0122:
+ SETB P1.3
+L0119:
+ SETB 9h
+ RET
+
+L0042:
+ MOV DPTR, #0FFCh
+ CLR A
+ MOVC A, @A+DPTR
+ MOV R6, A
+ MOV A, #1h
+ MOVC A, @A+DPTR
+ MOV R7, A
+ CLR C
+ SUBB A, 3Ah
+ MOV 0Bh, A
+ MOV A, R6
+ SUBB A, 39h
+ MOV 0Ah, A
+ MOV DPTR, #0FFBh
+ CLR A
+ MOVC A, @A+DPTR
+ CLR C
+ SUBB A, 38h
+ MOV 9h, A
+ CLR C
+ MOV A, R7
+ SUBB A, 3Ah
+ MOV A, R6
+ SUBB A, 39h
+ JNC L0046
+ DEC 9h
+L0046:
+ MOV A, 9h
+ JNB ACC.7, L0047
+ CLR A
+ MOV 9h, A
+ MOV 0Ah, A
+ MOV 0Bh, A
+L0047:
+ RET
+
+L0194:
+ INC 35h
+ MOV R7, 35h
+ MOV R6, 7h
+ MOV A, R6
+ DEC A
+ RRC A
+ RRC A
+ RRC A
+ ANL A, #1Fh
+ MOV R5, A
+ MOV A, R6
+ ANL A, #7h
+ MOV R7, A
+ JNZ L0196
+ MOV 26h, A
+ MOV 27h, A
+ SJMP L0197
+
+L0196:
+ MOV A, #0FFh
+ MOV R6, #0h
+ MOV R0, 7h
+ INC R0
+ SJMP L0199
+
+L0200:
+ XCH A, R6
+ MOV C, ACC.7
+ RRC A
+ XCH A, R6
+ RRC A
+L0199:
+ DJNZ R0, L0200
+ MOV 27h, A
+ MOV 26h, R6
+L0197:
+ MOV R7, 5h
+ MOV R5, 27h
+ LJMP L0198
+
+L0016:
+ CLR A
+ MOV R7, A
+ MOV R6, #1h
+L0261:
+ MOV A, R7
+ CLR C
+ SUBB A, #8h
+ JNC L0259
+ MOV A, R7
+ JZ L0260
+ XRL A, #1h
+ JZ L0260
+ MOV A, R7
+ XRL A, #3h
+ JZ L0260
+ MOV A, R6
+ ORL A, #2h
+ ANL A, #0FEh
+ MOV DPTR, #0E000h
+ MOVX @DPTR, A
+ ANL A, #0F4h
+ MOV R5, A
+ MOV A, R6
+ ANL A, #0F4h
+ XRL A, R5
+ JZ L0260
+ SETB C
+ RET
+
+L0260:
+ INC R7
+ MOV A, R6
+ ADD A, ACC
+ MOV R6, A
+ SJMP L0261
+
+L0259:
+ CLR C
+ RET
+
+L0053:
+ MOV R5, 7h
+ MOV R4, 6h
+ MOV A, R5
+ ADD A, #0FFh
+ MOV R7, A
+ MOV A, R4
+ ADDC A, #0FFh
+ MOV R6, A
+ MOV A, R7
+ MOV R0, #3h
+L0054:
+ XCH A, R6
+ CLR C
+ RRC A
+ XCH A, R6
+ RRC A
+ DJNZ R0, L0054
+ MOV R7, A
+ MOV A, R5
+ ANL A, #7h
+ MOV R5, A
+ JNZ L0055
+ MOV 26h, A
+ SJMP L0056
+
+L0055:
+ MOV A, #0FFh
+ MOV R0, 5h
+ INC R0
+ SJMP L0191
+
+L0192:
+ CLR C
+ RRC A
+L0191:
+ DJNZ R0, L0192
+ MOV 26h, A
+L0056:
+ MOV R5, 26h
+ LJMP L0057
+
+L0030:
+ CLR 28h
+ JB 29h, L0234
+ LCALL L0235
+ MOV 3Bh, R7
+ MOV A, 3Bh
+ CJNE A, #15h, L0236
+ MOV 34h, #1Fh
+L0236:
+ SETB 29h
+L0234:
+ LCALL L0237
+ MOV 35h, R7
+ MOV A, 35h
+ JNB ACC.0, L0238
+ LCALL L0195
+ LCALL L0194
+ CLR A
+ MOV 36h, A
+ MOV 37h, A
+ RET
+
+L0238:
+ LCALL L0239
+ MOV 36h, R6
+ MOV 37h, R7
+ RET
+
+L0213:
+ JB 0Fh, L0215
+ MOV R6, #0h
+ RET
+
+L0215:
+ CJNE R7, #0F0h, L0216
+ SETB 15h
+ MOV R6, #0FFh
+ MOV R7, #0FFh
+ RET
+
+L0216:
+ MOV A, R7
+ CLR C
+ SUBB A, #85h
+ JC L0217
+ MOV R6, #0h
+ RET
+
+L0217:
+ MOV A, R7
+ MOV DPTR, #02CEh
+ MOVC A, @A+DPTR
+ MOV R6, A
+ JNZ L0218
+ MOV R6, A
+ RET
+
+L0218:
+ JNB 15h, L0219
+ ORL 6h, #80h
+L0219:
+ CLR 15h
+ MOV R7, 6h
+ MOV R6, #0h
+ RET
+
+L0032:
+ MOV C, 1Ah
+ MOV 28h, C
+ INC 37h
+ MOV A, 37h
+ JNZ L0051
+ INC 36h
+L0051:
+ CLR C
+ MOV A, 36h
+ SUBB A, #80h
+ JNC L0052
+ MOV R7, 37h
+ MOV R6, 36h
+ LJMP L0053
+
+L0052:
+ MOV A, 35h
+ CLR C
+ SUBB A, #10h
+ JNC L0193
+ LCALL L0194
+ LCALL L0195
+ LCALL L0194
+ CLR A
+ MOV 36h, A
+ MOV 37h, A
+L0193:
+ RET
+
+L0237:
+ CLR A
+ MOV R7, A
+ LCALL L0250
+ MOV R6, #0FFh
+ CLR A
+ MOV 26h, A
+L0253:
+ MOV A, 26h
+ CJNE A, #8h, L0251
+ MOV R7, #1h
+ LCALL L0250
+ MOV R6, #0FFh
+L0251:
+ MOV A, R6
+ CJNE A, 7h, L0252
+ MOV R7, 26h
+ RET
+
+L0252:
+ MOV A, R6
+ CLR C
+ RRC A
+ MOV R6, A
+ INC 26h
+ MOV A, 26h
+ SETB C
+ SUBB A, #10h
+ JC L0253
+ MOV R7, #0FFh
+ RET
+
+ DB 0E4h
+ DB 0FFh
+ DB 030h
+ DB 0Fh
+ DB 02h
+ DB 07Fh
+ DB 040h
+ DB 020h
+ DB 05h
+ DB 03h
+ DB 043h
+ DB 07h
+ DB 020h
+ DB 020h
+ DB 03h
+ DB 03h
+ DB 043h
+ DB 07h
+ DB 010h
+ DB 090h
+ DB 0E0h
+ DB 00h
+ DB 0E0h
+ DB 030h
+ DB 0E2h
+ DB 03h
+ DB 043h
+ DB 07h
+ DB 04h
+ DB 030h
+ DB 0Bh
+ DB 03h
+ DB 043h
+ DB 07h
+ DB 02h
+ DB 030h
+ DB 06h
+ DB 03h
+ DB 043h
+ DB 07h
+ DB 01h
+ DB 022h
+L0057:
+ MOV 27h, R6
+ MOV 28h, R7
+ MOV 29h, R5
+ LCALL L0058
+ MOV A, 27h
+ ADD A, #0D0h
+ MOV 2Ah, A
+ MOV A, 28h
+ MOV 2Bh, A
+ LCALL L0059
+ MOV 2Fh, 29h
+ MOV R3, 2Bh
+ MOV R5, 2Ah
+ MOV R7, 34h
+ LCALL L0060
+ LCALL L0061
+ LJMP L0062
+
+ DB 0C0h
+ DB 0E0h
+ DB 0C0h
+ DB 0F0h
+ DB 0C0h
+ DB 0D0h
+ DB 075h
+ DB 0D0h
+ DB 00h
+ DB 0C0h
+ DB 06h
+ DB 0C0h
+ DB 07h
+ DB 020h
+ DB 010h
+ DB 0Bh
+ DB 030h
+ DB 016h
+ DB 05h
+ DB 012h
+ DB 08h
+ DB 0Ah
+ DB 080h
+ DB 03h
+ DB 012h
+ DB 06h
+ DB 04Dh
+ DB 0D0h
+ DB 07h
+ DB 0D0h
+ DB 06h
+ DB 0D0h
+ DB 0D0h
+ DB 0D0h
+ DB 0F0h
+ DB 0D0h
+ DB 0E0h
+ DB 032h
+ DB 0C0h
+ DB 0E0h
+ DB 0C0h
+ DB 0F0h
+ DB 0C0h
+ DB 0D0h
+ DB 075h
+ DB 0D0h
+ DB 00h
+ DB 0C0h
+ DB 06h
+ DB 0C0h
+ DB 07h
+ DB 020h
+ DB 0Dh
+ DB 0Bh
+ DB 030h
+ DB 016h
+ DB 05h
+ DB 012h
+ DB 08h
+ DB 045h
+ DB 080h
+ DB 03h
+ DB 012h
+ DB 06h
+ DB 098h
+ DB 0D0h
+ DB 07h
+ DB 0D0h
+ DB 06h
+ DB 0D0h
+ DB 0D0h
+ DB 0D0h
+ DB 0F0h
+ DB 0D0h
+ DB 0E0h
+ DB 032h
+L0085:
+ POP DPH
+ POP DPL
+ MOV R0, A
+L0089:
+ CLR A
+ MOVC A, @A+DPTR
+ JNZ L0087
+ MOV A, #1h
+ MOVC A, @A+DPTR
+ JNZ L0087
+ INC DPTR
+ INC DPTR
+L0088:
+ MOVC A, @A+DPTR
+ MOV R0, A
+ MOV A, #1h
+ MOVC A, @A+DPTR
+ MOV DPL, A
+ MOV DPH, R0
+ CLR A
+ JMP @A+DPTR
+
+L0087:
+ MOV A, #2h
+ MOVC A, @A+DPTR
+ XRL A, R0
+ JZ L0088
+ INC DPTR
+ INC DPTR
+ INC DPTR
+ SJMP L0089
+
+L0060:
+ MOV R6, 3h
+ MOV R3, 5h
+ ANL 1Ah, #0EFh
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ MOV R5, 7h
+ MOV 33h, R6
+ MOV R7, #2h
+ LCALL L0188
+ MOV R7, 2Fh
+ LCALL L0067
+ ORL 1Ah, #10h
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ RET
+
+L0112:
+ MOV A, #1h
+ MOV R0, 7h
+ INC R0
+ SJMP L0124
+
+L0125:
+ CLR C
+ RLC A
+L0124:
+ DJNZ R0, L0125
+ MOV R7, A
+ MOV DPTR, #0E000h
+ MOVX A, @DPTR
+ ORL A, #2h
+ MOV R6, A
+ MOV A, R7
+ JNB 27h, L0126
+ ORL 6h, A
+ SJMP L0127
+
+L0126:
+ CPL A
+ ANL 6h, A
+L0127:
+ MOV DPTR, #0E000h
+ MOV A, R6
+ MOVX @DPTR, A
+ RET
+
+L0075:
+ LCALL L0037
+ JC L0076
+ LCALL L0077
+ SJMP L0075
+
+L0076:
+ LCALL L0185
+ LCALL L0186
+ CLR 1Fh
+ MOV 2Fh, #0EEh
+ MOV C, 6h
+ MOV 20h, C
+ LCALL L0177
+L0187:
+ MOV DPTR, #0D000h
+ MOVX A, @DPTR
+ JNB ACC.1, L0187
+ RET
+
+L0249:
+ MOV R6, 3h
+ MOV R3, 5h
+ ANL 1Ah, #0EFh
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ MOV R5, 7h
+ MOV 33h, R6
+ MOV R7, #3h
+ LCALL L0188
+ LCALL L0068
+ ORL 1Ah, #10h
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ RET
+
+L0068:
+ MOV A, 1Ah
+ ANL A, #9Fh
+ MOV R5, A
+ ORL A, #20h
+ MOV R6, A
+ MOV R4, #8h
+L0070:
+ MOV A, R7
+ ADD A, ACC
+ MOV R7, A
+ MOV DPTR, #0D000h
+ MOV A, R5
+ MOVX @DPTR, A
+ MOVX A, @DPTR
+ JNB ACC.4, L0069
+ ORL 7h, #1h
+L0069:
+ MOV DPTR, #0D000h
+ MOV A, R6
+ MOVX @DPTR, A
+ DJNZ R4, L0070
+ RET
+
+L0116:
+ MOV DPTR, #0F000h
+ MOV A, 32h
+ MOVX @DPTR, A
+ MOV 0Fh, A
+ MOV C, 26h
+ MOV 27h, C
+ MOV R7, #5h
+ LCALL L0112
+ MOV DPTR, #0E000h
+ MOVX A, @DPTR
+ ORL A, #2h
+ ANL A, #0FEh
+ MOV R6, A
+ MOVX @DPTR, A
+ ORL A, #1h
+ MOVX @DPTR, A
+ MOV A, R6
+ MOVX @DPTR, A
+ RET
+
+L0254:
+ ANL 1Ah, #0EFh
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ MOV R7, #9Fh
+ LCALL L0067
+ LCALL L0068
+ LCALL L0068
+ LCALL L0068
+ ORL 1Ah, #10h
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ RET
+
+L0225:
+ MOV 2Bh, R7
+ MOV R7, #0EDh
+ LCALL L0093
+ MOV R7, 2Bh
+ LCALL L0093
+ MOV 2Ch, #0Ah
+L0228:
+ MOV R7, #0E8h
+ MOV R6, #0FDh
+ LCALL L0107
+L0227:
+ LCALL L0109
+ JNC L0227
+ DJNZ 2Ch, L0228
+ RET
+
+L0198:
+ MOV 28h, R7
+ MOV 29h, R5
+ LCALL L0058
+ LCALL L0059
+ MOV A, 28h
+ ADD A, #0FEh
+ MOV R3, A
+ MOV 2Fh, 29h
+ MOV R5, #0EFh
+ MOV R7, 34h
+ LCALL L0060
+ LCALL L0061
+ LJMP L0062
+
+L0107:
+ MOV R5, 7h
+ MOV R4, 6h
+ CLR TR0
+ MOV A, R5
+ CPL A
+ MOV R7, A
+ MOV A, R4
+ CPL A
+ MOV R6, A
+ MOV A, R7
+ ADD A, #1h
+ MOV R5, A
+ CLR A
+ ADDC A, R6
+ MOV TH0, A
+ MOV R7, 5h
+ MOV TL0, R7
+ CLR TF0
+ SETB TR0
+ RET
+
+ DB 0ADh
+ DB 07h
+ DB 0ACh
+ DB 06h
+ DB 0C2h
+ DB 0CAh
+ DB 0EDh
+ DB 0F4h
+ DB 0FFh
+ DB 0ECh
+ DB 0F4h
+ DB 0FEh
+ DB 0EFh
+ DB 024h
+ DB 01h
+ DB 0FDh
+ DB 0E4h
+ DB 03Eh
+ DB 0F5h
+ DB 0CDh
+ DB 0AFh
+ DB 05h
+ DB 08Fh
+ DB 0CCh
+ DB 0C2h
+ DB 0CFh
+ DB 0D2h
+ DB 0CAh
+ DB 022h
+L0063:
+ ANL 1Ah, #0EFh
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ MOV R7, #5h
+ LCALL L0067
+ LCALL L0068
+ ORL 1Ah, #10h
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ MOV A, R7
+ RRC A
+ RET
+
+L0067:
+ MOV A, 1Ah
+ ANL A, #9Fh
+ MOV R6, A
+ ORL A, #40h
+ MOV R5, A
+ MOV R4, #8h
+ MOV DPTR, #0D000h
+L0073:
+ MOV A, R7
+ RLC A
+ MOV R7, A
+ JNC L0071
+ MOV A, R5
+ SJMP L0072
+
+L0071:
+ MOV A, R6
+L0072:
+ MOVX @DPTR, A
+ ORL A, #20h
+ MOVX @DPTR, A
+ DJNZ R4, L0073
+ RET
+
+L0041:
+ LCALL L0048
+ MOV 39h, R6
+ MOV 3Ah, R7
+ LCALL L0049
+ MOV 38h, R7
+ MOV A, 38h
+ JNB ACC.1, L0050
+ ORL 39h, #80h
+L0050:
+ MOV A, 38h
+ RRC A
+ RRC A
+ ANL A, #3Fh
+ MOV 38h, A
+ RET
+
+ DB 053h
+ DB 01Ah
+ DB 0EFh
+ DB 090h
+ DB 0D0h
+ DB 00h
+ DB 0E5h
+ DB 01Ah
+ DB 0F0h
+ DB 07Fh
+ DB 05h
+ DB 012h
+ DB 0Ch
+ DB 0D0h
+ DB 012h
+ DB 0Bh
+ DB 0D7h
+ DB 043h
+ DB 01Ah
+ DB 010h
+ DB 090h
+ DB 0D0h
+ DB 00h
+ DB 0E5h
+ DB 01Ah
+ DB 0F0h
+ DB 022h
+L0029:
+ LCALL L0185
+ LCALL L0186
+L0256:
+ MOV DPTR, #0D000h
+ MOVX A, @DPTR
+ JB ACC.1, L0255
+ LCALL L0024
+ LCALL L0077
+ SJMP L0256
+
+L0255:
+ RET
+
+L0034:
+ LCALL L0041
+ LCALL L0042
+ MOV A, 9h
+ JNZ L0043
+ MOV A, 0Ah
+ JNZ L0043
+ MOV A, 0Bh
+ JNZ L0043
+ LCALL L0044
+L0043:
+ RET
+
+L0188:
+ MOV 31h, R5
+ MOV 32h, R3
+ LCALL L0067
+ MOV R7, 31h
+ LCALL L0067
+ MOV R7, 32h
+ LCALL L0067
+ MOV R7, 33h
+ LJMP L0067
+
+L0190:
+ ANL 1Ah, #0EFh
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ LCALL L0067
+ ORL 1Ah, #10h
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ RET
+
+L0195:
+ LCALL L0058
+ LCALL L0059
+ CLR A
+ MOV R3, A
+ MOV R5, #0D0h
+ MOV R7, 34h
+ LCALL L0201
+ LCALL L0061
+ LJMP L0062
+
+L0033:
+ ANL 1Ah, #0FBh
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ ANL 1Ah, #0FDh
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ MOV R7, #3Ch
+ LJMP L0065
+
+L0025:
+ JNB 9h, L0183
+ LCALL L0121
+ JC L0183
+ CLR P1.2
+ CLR P1.3
+ CLR 9h
+ LCALL L0184
+L0183:
+ RET
+
+L0177:
+ MOV C, 1Fh
+ MOV 21h, C
+ MOV 30h, 2Fh
+ MOV C, 20h
+ MOV 22h, C
+ CLR 23h
+ CLR 24h
+ LJMP L0178
+
+L0106:
+ MOV A, R7
+ SWAP A
+ ANL A, #0Fh
+ MOV DPTR, #0353h
+ MOVC A, @A+DPTR
+ MOV R6, A
+ MOV A, R7
+ ANL A, #0Fh
+ MOVC A, @A+DPTR
+ ADD A, R6
+ MOV R7, A
+ RET
+
+L0018:
+ MOV DPTR, #0E000h
+ MOVX A, @DPTR
+ ORL A, #2h
+ ANL A, #0FEh
+ MOV R6, A
+ MOVX @DPTR, A
+ ANL A, #0FDh
+ MOVX @DPTR, A
+ MOV A, R6
+ MOVX @DPTR, A
+ RET
+
+L0062:
+ LCALL L0059
+ LCALL L0063
+ MOV 1Bh, C
+ LCALL L0061
+ JB 1Bh, L0062
+ RET
+
+L0099:
+ JNB 5h, L0101
+ JB 0Eh, L0101
+ JB 2h, L0101
+ SETB C
+ SJMP L0102
+
+L0101:
+ CLR C
+L0102:
+ RET
+
+L0037:
+ JNB 3h, L0104
+ JB 0Ah, L0104
+ JB 2h, L0104
+ SETB C
+ SJMP L0105
+
+L0104:
+ CLR C
+L0105:
+ RET
+
+L0240:
+ MOV R2, 6h
+ MOV A, R2
+ ADD A, #0D0h
+ MOV R5, A
+ MOV A, R7
+ MOV R3, A
+ MOV R7, 34h
+ LCALL L0249
+ RET
+
+L0250:
+ MOV A, R7
+ ADD A, #0FEh
+ MOV R3, A
+ MOV R5, #0EFh
+ MOV R7, 34h
+ LCALL L0249
+ RET
+
+L0082:
+ SETB 2h
+ SETB 0Dh
+ CLR P1.6
+ SETB 10h
+ CLR P1.4
+ RET
+
+L0019:
+ MOV A, R7
+ MOV DPTR, #02C9h
+ MOVC A, @A+DPTR
+ XRL A, R5
+ JZ L0257
+L0258:
+ SJMP L0258
+
+L0257:
+ RET
+
+L0098:
+ LCALL L0099
+ JNC L0100
+ CLR 10h
+ SETB P1.4
+L0100:
+ RET
+
+L0097:
+ LCALL L0037
+ JNC L0103
+ CLR 0Dh
+ SETB P1.6
+L0103:
+ RET
+
+L0020:
+ MOV A, TMOD
+ ANL A, #0F0h
+ ORL A, #1h
+ MOV TMOD, A
+ RET
+
+L0109:
+ JNB TF0, L0123
+ CLR TR0
+ SETB C
+ RET
+
+L0123:
+ CLR C
+ RET
+
+ DB 030h
+ DB 0CFh
+ DB 04h
+ DB 0C2h
+ DB 0CAh
+ DB 0D3h
+ DB 022h
+ DB 0C3h
+ DB 022h
+L0058:
+ LCALL L0059
+ LCALL L0189
+ LJMP L0061
+
+L0184:
+ LCALL L0138
+L0139:
+ CLR 0Eh
+ LJMP L0098
+
+L0095:
+ CLR 2h
+ LCALL L0097
+ LJMP L0098
+
+L0159:
+ CLR 5h
+ SETB 10h
+ CLR P1.4
+ RET
+
+L0162:
+ CLR 3h
+ SETB 0Dh
+ CLR P1.6
+ RET
+
+L0045:
+ MOV DPTR, #0D000h
+ MOV A, 1Ah
+ MOVX @DPTR, A
+ RET
+
+L0059:
+ JNB 28h, L0074
+ LCALL L0075
+L0074:
+ RET
+
+L0061:
+ JNB 28h, L0064
+ LCALL L0033
+L0064:
+ RET
+
+L0121:
+ MOV DPTR, #0E000h
+ MOVX A, @DPTR
+ RRC A
+ RET
+
+L0039:
+ ANL 1Ah, #0FEh
+ LJMP L0045
+
+L0040:
+ ORL 1Ah, #1h
+ LJMP L0045
+
+ DB 053h
+ DB 01Ah
+ DB 0FDh
+ DB 02h
+ DB 0Eh
+ DB 09Bh
+L0185:
+ ORL 1Ah, #2h
+ LJMP L0045
+
+ DB 053h
+ DB 01Ah
+ DB 0FBh
+ DB 02h
+ DB 0Eh
+ DB 09Bh
+L0186:
+ ORL 1Ah, #4h
+ LJMP L0045
+
+L0044:
+ ANL 1Ah, #7Fh
+ LJMP L0045
+
+ DB 043h
+ DB 01Ah
+ DB 080h
+ DB 02h
+ DB 0Eh
+ DB 09Bh
+L0175:
+ SETB 5h
+ LJMP L0098
+
+L0138:
+ CLR 0Ah
+ LJMP L0097
+
+L0174:
+ SETB 3h
+ LJMP L0097
+
+L0021:
+ MOV 1Ah, R7
+ LJMP L0045
+
+L0189:
+ MOV R7, #6h
+ LJMP L0190
+
+ DB 07Fh
+ DB 04h
+ DB 02h
+ DB 0Dh
+ DB 067h
+L0048:
+ MOV R6, 36h
+ MOV R7, 37h
+ RET
+
+ DB 0E4h
+ DB 0F5h
+ DB 0C8h
+ DB 022h
+L0235:
+ LCALL L0254
+ RET
+
+L0173:
+ CLR 0Bh
+ RET
+
+L0167:
+ SETB 0Bh
+ RET
+
+L0172:
+ CLR 6h
+ RET
+
+L0170:
+ SETB 6h
+ RET
+
+L0049:
+ MOV R7, 35h
+ RET
+
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+ DB 0FFh
+END
diff --git a/site/vortex86ex/dmp_kbd_fw_part1.inc.txt b/site/vortex86ex/dmp_kbd_fw_part1.inc.txt
new file mode 100755
index 0000000..486bf1b
--- /dev/null
+++ b/site/vortex86ex/dmp_kbd_fw_part1.inc.txt
@@ -0,0 +1,531 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2013 DMP Electronics Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+ .byte 0x02, 0x04, 0xa3, 0x02, 0x0a, 0xfb, 0xef, 0x75
+ .byte 0xf0, 0x03, 0xa4, 0xff, 0xae, 0x07, 0x1f, 0xee
+ .byte 0x70, 0xfa, 0x22, 0x02, 0x0a, 0xd5, 0x12, 0x09
+ .byte 0x5e, 0x7f, 0x30, 0x12, 0x05, 0xfb, 0x90, 0xe0
+ .byte 0x00, 0x74, 0x16, 0xf0, 0x12, 0x0d, 0xda, 0xc2
+ .byte 0x92, 0xc2, 0x93, 0xc2, 0x90, 0xd2, 0x91, 0xd2
+ .byte 0xb8, 0xd2, 0xba, 0xd2, 0x88, 0xd2, 0xa8, 0xd2
+ .byte 0x8a, 0xd2, 0xaa, 0x7d, 0x44, 0xe4, 0xff, 0x12
+ .byte 0x0e, 0x3a, 0x7d, 0x4d, 0x0f, 0x12, 0x0e, 0x3a
+ .byte 0x7d, 0x26, 0x0f, 0x12, 0x0e, 0x3a, 0x7d, 0x50
+ .byte 0x0f, 0x12, 0x0e, 0x3a, 0x12, 0x0e, 0x59, 0xd2
+ .byte 0xaf, 0x7f, 0xb1, 0x12, 0x0e, 0xf5, 0x90, 0x0f
+ .byte 0xfe, 0xe4, 0x93, 0xff, 0xb4, 0x55, 0x0a, 0xa3
+ .byte 0xe4, 0x93, 0xb4, 0xaa, 0x04, 0xd2, 0x08, 0x80
+ .byte 0x10, 0xef, 0xb4, 0x12, 0x0c, 0x90, 0x0f, 0xff
+ .byte 0xe4, 0x93, 0xb4, 0x34, 0x04, 0xc2, 0x08, 0xc2
+ .byte 0x12, 0x12, 0x03, 0x6c, 0x12, 0x0d, 0xa6, 0x12
+ .byte 0x01, 0x08, 0x30, 0x01, 0x27, 0x30, 0x12, 0x1f
+ .byte 0x20, 0x00, 0x1c, 0x30, 0x11, 0x19, 0x12, 0x0d
+ .byte 0x25, 0x12, 0x09, 0xc4, 0x30, 0x08, 0x05, 0xc2
+ .byte 0x1a, 0x12, 0x0a, 0x26, 0x12, 0x0d, 0x92, 0xd2
+ .byte 0x00, 0x12, 0x0d, 0x3b, 0x12, 0x07, 0xc2, 0x12
+ .byte 0x0d, 0xda, 0xc2, 0x01, 0x12, 0x03, 0x6c, 0x12
+ .byte 0x07, 0x2e, 0x30, 0x12, 0xc4, 0x30, 0x00, 0xc1
+ .byte 0x90, 0xd0, 0x00, 0xe0, 0x30, 0xe0, 0xba, 0xc2
+ .byte 0xaf, 0x12, 0x0e, 0x07, 0x50, 0x0e, 0x12, 0x0e
+ .byte 0xb6, 0x12, 0x0e, 0xbc, 0xd2, 0x1a, 0x12, 0x0a
+ .byte 0x26, 0x12, 0x0d, 0x3b, 0xd2, 0xaf, 0x80, 0xa1
+ .byte 0xae, 0x03, 0xab, 0x05, 0x53, 0x1a, 0xef, 0x90
+ .byte 0xd0, 0x00, 0xe5, 0x1a, 0xf0, 0xad, 0x07, 0x8e
+ .byte 0x33, 0x7f, 0x20, 0x12, 0x0d, 0x51, 0x43, 0x1a
+ .byte 0x10, 0x90, 0xd0, 0x00, 0xe5, 0x1a, 0xf0, 0x22
+ .byte 0xda, 0x7e, 0x10, 0x09, 0x14, 0x12, 0x0d, 0xa6
+ .byte 0x90, 0xe0, 0x00, 0xe0, 0xff, 0x20, 0xe1, 0x03
+ .byte 0x02, 0x02, 0xc8, 0xc2, 0xa8, 0xc2, 0xaa, 0x20
+ .byte 0x04, 0x03, 0x30, 0x07, 0x05, 0xd2, 0xa8, 0xd2
+ .byte 0xaa, 0x22, 0xef, 0xa2, 0xe3, 0x92, 0x1c, 0x90
+ .byte 0xf0, 0x00, 0xe0, 0xf5, 0x2c, 0x12, 0x0e, 0x2f
+ .byte 0xd2, 0xa8, 0xd2, 0xaa, 0x30, 0x1c, 0x03, 0x02
+ .byte 0x01, 0xee, 0xc2, 0x1d, 0xc2, 0x1e, 0x20, 0x17
+ .byte 0x03, 0x02, 0x01, 0xd4, 0xe5, 0x18, 0x24, 0xe1
+ .byte 0x60, 0x3b, 0x24, 0x54, 0x70, 0x03, 0x02, 0x01
+ .byte 0xd0, 0x24, 0xfa, 0x60, 0x14, 0x14, 0x60, 0x1e
+ .byte 0x14, 0x60, 0x1f, 0x14, 0x60, 0x23, 0x24, 0x74
+ .byte 0x70, 0x6c, 0xaf, 0x2c, 0x12, 0x05, 0xfb, 0x80
+ .byte 0x67, 0xe5, 0x2c, 0x30, 0xe1, 0x04, 0xd2, 0x90
+ .byte 0x80, 0x5e, 0xc2, 0x90, 0x80, 0x5a, 0xc2, 0x1f
+ .byte 0x80, 0x02, 0xd2, 0x1f, 0x85, 0x2c, 0x2f, 0x80
+ .byte 0x46, 0xd2, 0x1e, 0x80, 0x4b, 0xe5, 0x2c, 0x70
+ .byte 0x1a, 0x12, 0x0c, 0xed, 0x12, 0x08, 0xf2, 0x85
+ .byte 0x38, 0x12, 0x85, 0x39, 0x13, 0x85, 0x3a, 0x14
+ .byte 0x85, 0x09, 0x15, 0x85, 0x0a, 0x16, 0x85, 0x0b
+ .byte 0x17, 0x80, 0x2d, 0xe5, 0x2c, 0xc3, 0x94, 0x01
+ .byte 0x40, 0x13, 0xe5, 0x2c, 0xd3, 0x94, 0x06, 0x50
+ .byte 0x0c, 0xc2, 0x1f, 0x74, 0x11, 0x25, 0x2c, 0xf8
+ .byte 0xe6, 0xf5, 0x2f, 0x80, 0x0a, 0xe5, 0x2c, 0xb4
+ .byte 0x07, 0x0e, 0xc2, 0x1f, 0x85, 0x3b, 0x2f, 0xd2
+ .byte 0x20, 0x12, 0x0d, 0xb8, 0x80, 0x02, 0xd2, 0x1d
+ .byte 0xc2, 0x17, 0x80, 0x02, 0xd2, 0x1d, 0x30, 0x1d
+ .byte 0x07, 0xaf, 0x2c, 0x12, 0x05, 0x2f, 0x80, 0x08
+ .byte 0x30, 0x1e, 0x05, 0xaf, 0x2c, 0x12, 0x05, 0x97
+ .byte 0x12, 0x0e, 0x85, 0x02, 0x02, 0xc2, 0xc2, 0x1d
+ .byte 0xe5, 0x2c, 0x12, 0x0b, 0x21, 0x02, 0xb7, 0x1f
+ .byte 0x02, 0x35, 0x20, 0x02, 0xb7, 0x60, 0x02, 0x56
+ .byte 0xa7, 0x02, 0x5d, 0xa8, 0x02, 0x64, 0xa9, 0x02
+ .byte 0x48, 0xaa, 0x02, 0x64, 0xab, 0x02, 0x6d, 0xad
+ .byte 0x02, 0x74, 0xae, 0x02, 0x41, 0xc0, 0x02, 0xb7
+ .byte 0xcb, 0x02, 0x7b, 0xd0, 0x02, 0xb7, 0xd1, 0x02
+ .byte 0xb7, 0xd2, 0x02, 0xb7, 0xd3, 0x02, 0xb7, 0xd4
+ .byte 0x02, 0x98, 0xdd, 0x02, 0x8d, 0xdf, 0x02, 0xa8
+ .byte 0xfe, 0x00, 0x00, 0x02, 0xb5, 0x12, 0x0a, 0x83
+ .byte 0x8f, 0x2d, 0xc2, 0x1f, 0x85, 0x2d, 0x2f, 0x80
+ .byte 0x28, 0xc2, 0x1f, 0x75, 0x2f, 0xff, 0x80, 0x21
+ .byte 0x7f, 0x30, 0x12, 0x05, 0xfb, 0xc2, 0x1f, 0x75
+ .byte 0x2f, 0x55, 0xc2, 0x20, 0x80, 0x4b, 0x12, 0x0e
+ .byte 0x8d, 0xd2, 0x1d, 0x80, 0x5a, 0x12, 0x0e, 0xe6
+ .byte 0xd2, 0x1d, 0x80, 0x53, 0xc2, 0x1f, 0xe4, 0xf5
+ .byte 0x2f, 0xd2, 0x20, 0x80, 0x34, 0x12, 0x0e, 0x94
+ .byte 0xd2, 0x1d, 0x80, 0x43, 0x12, 0x0e, 0xf0, 0xd2
+ .byte 0x1d, 0x80, 0x3c, 0x75, 0x2e, 0x01, 0x30, 0x90
+ .byte 0x03, 0x43, 0x2e, 0x02, 0xc2, 0x1f, 0x85, 0x2e
+ .byte 0x2f, 0xd2, 0x20, 0x80, 0x14, 0xd2, 0x90, 0xc2
+ .byte 0x1f, 0x85, 0x0f, 0x2f, 0xd2, 0x20, 0x80, 0x09
+ .byte 0xc2, 0x90, 0xc2, 0x1f, 0x85, 0x0f, 0x2f, 0xd2
+ .byte 0x20, 0x12, 0x0d, 0xb8, 0xd2, 0x1d, 0x80, 0x0f
+ .byte 0xc2, 0x91, 0x7f, 0x05, 0x12, 0x00, 0x06, 0xd2
+ .byte 0x91, 0xd2, 0x1d, 0x80, 0x02, 0xd2, 0x1d, 0x30
+ .byte 0x1d, 0x03, 0x12, 0x0e, 0x85, 0xd2, 0x17, 0x85
+ .byte 0x2c, 0x18, 0x20, 0x01, 0x03, 0x12, 0x0d, 0xda
+ .byte 0x22, 0x44, 0x4d, 0x26, 0x50, 0x00, 0xff, 0x43
+ .byte 0x41, 0x3f, 0x3d, 0x3b, 0x3c, 0x58, 0x64, 0x44
+ .byte 0x42, 0x40, 0x3e, 0x0f, 0x29, 0x59, 0x65, 0x38
+ .byte 0x2a, 0x70, 0x1d, 0x10, 0x02, 0x5a, 0x66, 0x71
+ .byte 0x2c, 0x1f, 0x1e, 0x11, 0x03, 0x5b, 0x67, 0x2e
+ .byte 0x2d, 0x20, 0x12, 0x05, 0x04, 0x5c, 0x68, 0x39
+ .byte 0x2f, 0x21, 0x14, 0x13, 0x06, 0x5d, 0x69, 0x31
+ .byte 0x30, 0x23, 0x22, 0x15, 0x07, 0x5e, 0x6a, 0x72
+ .byte 0x32, 0x24, 0x16, 0x08, 0x09, 0x5f, 0x6b, 0x33
+ .byte 0x25, 0x17, 0x18, 0x0b, 0x0a, 0x60, 0x6c, 0x34
+ .byte 0x35, 0x26, 0x27, 0x19, 0x0c, 0x61, 0x6d, 0x73
+ .byte 0x28, 0x74, 0x1a, 0x0d, 0x62, 0x6e, 0x3a, 0x36
+ .byte 0x1c, 0x1b, 0x75, 0x2b, 0x63, 0x76, 0x55, 0x56
+ .byte 0x77, 0x78, 0x79, 0x7a, 0x0e, 0x7b, 0x7c, 0x4f
+ .byte 0x7d, 0x4b, 0x47, 0x7e, 0x7f, 0x6f, 0x52, 0x53
+ .byte 0x50, 0x4c, 0x4d, 0x48, 0x01, 0x45, 0x57, 0x4e
+ .byte 0x51, 0x4a, 0x37, 0x49, 0x46, 0x54, 0x00, 0x00
+ .byte 0x00, 0x41, 0x54, 0x00, 0x01, 0x01, 0x02, 0x01
+ .byte 0x02, 0x02, 0x03, 0x01, 0x02, 0x02, 0x03, 0x02
+ .byte 0x03, 0x03, 0x04, 0x14, 0x23, 0x14, 0x3a, 0x14
+ .byte 0x4d, 0x42, 0x32, 0x23, 0x20, 0x0c, 0x03, 0x02
+ .byte 0x04, 0x08, 0xc2, 0x1a, 0xc2, 0x1b, 0xe5, 0x10
+ .byte 0x30, 0xe7, 0x57, 0xe5, 0x11, 0xae, 0x10, 0x78
+ .byte 0x06, 0xce, 0xc3, 0x13, 0xce, 0x13, 0xd8, 0xf9
+ .byte 0xf5, 0x26, 0xff, 0x12, 0x0d, 0xca, 0x8f, 0x27
+ .byte 0xe5, 0x10, 0xc4, 0x13, 0x13, 0x54, 0x03, 0xff
+ .byte 0xe5, 0x27, 0x54, 0x01, 0xb5, 0x07, 0x05, 0xe4
+ .byte 0x7f, 0x01, 0x80, 0x02, 0x7f, 0x00, 0xef, 0x30
+ .byte 0xe0, 0x04, 0xd2, 0x1b, 0x80, 0x24, 0x20, 0x13
+ .byte 0x1f, 0xaf, 0x26, 0x12, 0x07, 0x79, 0xaf, 0x26
+ .byte 0x12, 0x09, 0xf6, 0x8e, 0x28, 0x8f, 0x29, 0xe5
+ .byte 0x29, 0xf4, 0x70, 0x03, 0xe5, 0x28, 0xf4, 0x60
+ .byte 0x09, 0x85, 0x29, 0x26, 0xd2, 0x1a, 0x80, 0x02
+ .byte 0xd2, 0x1a, 0x30, 0x1a, 0x1b, 0xc2, 0x27, 0x7f
+ .byte 0x07, 0x12, 0x0b, 0x6c, 0xc2, 0x27, 0x7f, 0x06
+ .byte 0x12, 0x0b, 0x6c, 0xa2, 0x13, 0x92, 0x25, 0x85
+ .byte 0x26, 0x31, 0x12, 0x08, 0xbb, 0xc2, 0x0c, 0x22
+ .byte 0x30, 0x1b, 0x10, 0xa2, 0x13, 0x92, 0x21, 0x75
+ .byte 0x30, 0xff, 0xd2, 0x22, 0xc2, 0x23, 0xd2, 0x24
+ .byte 0x02, 0x06, 0xee, 0xc2, 0x0c, 0x12, 0x0e, 0x7d
+ .byte 0x22, 0xe4, 0xf5, 0x26, 0xf5, 0x27, 0x75, 0x28
+ .byte 0x0f, 0x75, 0x29, 0xff, 0xe5, 0x27, 0x25, 0x29
+ .byte 0xff, 0xe5, 0x26, 0x35, 0x28, 0xc3, 0x13, 0xf5
+ .byte 0x2a, 0xef, 0x13, 0xf5, 0x2b, 0xff, 0xae, 0x2a
+ .byte 0x12, 0x0e, 0x15, 0xbf, 0xff, 0x0e, 0xe5, 0x2b
+ .byte 0x24, 0xff, 0xf5, 0x29, 0xe5, 0x2a, 0x34, 0xff
+ .byte 0xf5, 0x28, 0x80, 0x47, 0xef, 0x70, 0x0d, 0xe5
+ .byte 0x2b, 0x24, 0x01, 0xf5, 0x27, 0xe4, 0x35, 0x2a
+ .byte 0xf5, 0x26, 0x80, 0x37, 0x75, 0x2c, 0xff, 0xe4
+ .byte 0xf5, 0x2d, 0xe5, 0x2c, 0xc3, 0x13, 0xf5, 0x2c
+ .byte 0xb5, 0x07, 0x1c, 0xe5, 0x2b, 0xae, 0x2a, 0x78
+ .byte 0x03, 0xc3, 0x33, 0xce, 0x33, 0xce, 0xd8, 0xf9
+ .byte 0x7c, 0x00, 0x25, 0x2d, 0xff, 0xec, 0x3e, 0xcf
+ .byte 0x24, 0x01, 0xcf, 0x34, 0x00, 0xfe, 0x22, 0x05
+ .byte 0x2d, 0xe5, 0x2d, 0xb4, 0x07, 0xd4, 0x7e, 0xff
+ .byte 0x7f, 0xff, 0x22, 0xd3, 0xe5, 0x27, 0x95, 0x29
+ .byte 0xe5, 0x28, 0x64, 0x80, 0xf8, 0xe5, 0x26, 0x64
+ .byte 0x80, 0x98, 0x40, 0x80, 0xe5, 0x27, 0xae, 0x26
+ .byte 0x78, 0x03, 0xc3, 0x33, 0xce, 0x33, 0xce, 0xd8
+ .byte 0xf9, 0xff, 0x22, 0x78, 0x7f, 0xe4, 0xf6, 0xd8
+ .byte 0xfd, 0x75, 0x81, 0x3b, 0x02, 0x04, 0xea, 0x02
+ .byte 0x00, 0x16, 0xe4, 0x93, 0xa3, 0xf8, 0xe4, 0x93
+ .byte 0xa3, 0x40, 0x03, 0xf6, 0x80, 0x01, 0xf2, 0x08
+ .byte 0xdf, 0xf4, 0x80, 0x29, 0xe4, 0x93, 0xa3, 0xf8
+ .byte 0x54, 0x07, 0x24, 0x0c, 0xc8, 0xc3, 0x33, 0xc4
+ .byte 0x54, 0x0f, 0x44, 0x20, 0xc8, 0x83, 0x40, 0x04
+ .byte 0xf4, 0x56, 0x80, 0x01, 0x46, 0xf6, 0xdf, 0xe4
+ .byte 0x80, 0x0b, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20
+ .byte 0x40, 0x80, 0x90, 0x08, 0x80, 0xe4, 0x7e, 0x01
+ .byte 0x93, 0x60, 0xbc, 0xa3, 0xff, 0x54, 0x3f, 0x30
+ .byte 0xe5, 0x09, 0x54, 0x1f, 0xfe, 0xe4, 0x93, 0xa3
+ .byte 0x60, 0x01, 0x0e, 0xcf, 0x54, 0xc0, 0x25, 0xe0
+ .byte 0x60, 0xa8, 0x40, 0xb8, 0xe4, 0x93, 0xa3, 0xfa
+ .byte 0xe4, 0x93, 0xa3, 0xf8, 0xe4, 0x93, 0xa3, 0xc8
+ .byte 0xc5, 0x82, 0xc8, 0xca, 0xc5, 0x83, 0xca, 0xf0
+ .byte 0xa3, 0xc8, 0xc5, 0x82, 0xc8, 0xca, 0xc5, 0x83
+ .byte 0xca, 0xdf, 0xe9, 0xde, 0xe7, 0x80, 0xbe, 0xd2
+ .byte 0x0d, 0xc2, 0x96, 0xd2, 0x0e, 0xd2, 0x10, 0xc2
+ .byte 0x94, 0x8f, 0x08, 0x12, 0x0d, 0xca, 0xef, 0x13
+ .byte 0xb3, 0x92, 0x14, 0xd2, 0x16, 0xe4, 0xf5, 0x0c
+ .byte 0x7f, 0x28, 0x12, 0x00, 0x06, 0xc2, 0x97, 0xd2
+ .byte 0x03, 0xc2, 0x0a, 0x7f, 0xe8, 0x7e, 0xfd, 0x12
+ .byte 0x0c, 0x79, 0xc2, 0x0d, 0xd2, 0x96, 0x30, 0x16
+ .byte 0x16, 0x12, 0x0e, 0x62, 0x50, 0xf8, 0xc2, 0xaf
+ .byte 0xd2, 0x97, 0xc2, 0x21, 0x12, 0x06, 0xe5, 0xc2
+ .byte 0x16, 0xe4, 0xf5, 0x0c, 0xd2, 0xaf, 0x22, 0x7f
+ .byte 0xe8, 0x7e, 0xfd, 0x12, 0x0c, 0x79, 0x20, 0x04
+ .byte 0x12, 0x20, 0x0a, 0x0f, 0x12, 0x0e, 0x62, 0x50
+ .byte 0xf5, 0xc2, 0xaf, 0xc2, 0x21, 0x12, 0x06, 0xe5
+ .byte 0xd2, 0xaf, 0x22, 0x12, 0x07, 0x2e, 0x22, 0xd2
+ .byte 0x10, 0xc2, 0x94, 0xd2, 0x0a, 0xd2, 0x0d, 0xc2
+ .byte 0x96, 0x8f, 0x08, 0x12, 0x0d, 0xca, 0xef, 0x13
+ .byte 0xb3, 0x92, 0x14, 0xd2, 0x16, 0xe4, 0xf5, 0x0e
+ .byte 0x7f, 0x28, 0x12, 0x00, 0x06, 0xc2, 0x95, 0xd2
+ .byte 0x05, 0xc2, 0x0e, 0x7f, 0xe8, 0x7e, 0xfd, 0x12
+ .byte 0x0c, 0x79, 0xc2, 0x10, 0xd2, 0x94, 0x30, 0x16
+ .byte 0x14, 0x12, 0x0e, 0x62, 0x50, 0xf8, 0xc2, 0xaf
+ .byte 0xd2, 0x95, 0x12, 0x06, 0xe3, 0xc2, 0x16, 0xe4
+ .byte 0xf5, 0x0e, 0xd2, 0xaf, 0x22, 0x7f, 0xe8, 0x7e
+ .byte 0xfd, 0x12, 0x0c, 0x79, 0x20, 0x07, 0x10, 0x20
+ .byte 0x0e, 0x0d, 0x12, 0x0e, 0x62, 0x50, 0xf5, 0xc2
+ .byte 0xaf, 0x12, 0x06, 0xe3, 0xd2, 0xaf, 0x22, 0x12
+ .byte 0x07, 0x2e, 0x22, 0xad, 0x07, 0xed, 0x30, 0xe6
+ .byte 0x04, 0xd2, 0x0f, 0x80, 0x02, 0xc2, 0x0f, 0xed
+ .byte 0x30, 0xe5, 0x05, 0x12, 0x0e, 0x8d, 0x80, 0x03
+ .byte 0x12, 0x0e, 0xe6, 0xed, 0x30, 0xe4, 0x05, 0x12
+ .byte 0x0e, 0x94, 0x80, 0x03, 0x12, 0x0e, 0xf0, 0xed
+ .byte 0x30, 0xe2, 0x04, 0xd2, 0x27, 0x80, 0x02, 0xc2
+ .byte 0x27, 0x7f, 0x02, 0x12, 0x0b, 0x6c, 0xed, 0x30
+ .byte 0xe1, 0x05, 0x12, 0x0f, 0x14, 0x80, 0x03, 0x12
+ .byte 0x0f, 0x11, 0xed, 0x30, 0xe0, 0x0b, 0x12, 0x0f
+ .byte 0x1a, 0x20, 0x11, 0x08, 0xd2, 0x11, 0xd2, 0x01
+ .byte 0x22, 0x12, 0x0f, 0x17, 0x22, 0x7f, 0x02, 0x12
+ .byte 0x00, 0x06, 0x20, 0x94, 0x42, 0xa2, 0x95, 0x92
+ .byte 0x18, 0x05, 0x0e, 0xe5, 0x0e, 0xb4, 0x01, 0x12
+ .byte 0x20, 0x18, 0x0a, 0xd2, 0x07, 0xd2, 0x0a, 0xd2
+ .byte 0x0d, 0xc2, 0x96, 0x80, 0x19, 0xe4, 0xf5, 0x0e
+ .byte 0x80, 0x14, 0xe5, 0x0e, 0xb4, 0x0b, 0x0f, 0xd2
+ .byte 0x0e, 0xd2, 0x10, 0xc2, 0x94, 0xd2, 0x13, 0xd2
+ .byte 0x0c, 0xe4, 0xf5, 0x0e, 0xc2, 0x07, 0xe5, 0x10
+ .byte 0xc3, 0x13, 0xf5, 0x10, 0xe5, 0x11, 0x13, 0xf5
+ .byte 0x11, 0x30, 0x18, 0x03, 0x43, 0x10, 0x80, 0x22
+ .byte 0x7f, 0x02, 0x12, 0x00, 0x06, 0x20, 0x96, 0x42
+ .byte 0xa2, 0x97, 0x92, 0x19, 0x05, 0x0c, 0xe5, 0x0c
+ .byte 0xb4, 0x01, 0x12, 0x20, 0x19, 0x0a, 0xd2, 0x04
+ .byte 0xd2, 0x0e, 0xd2, 0x10, 0xc2, 0x94, 0x80, 0x19
+ .byte 0xe4, 0xf5, 0x0c, 0x80, 0x14, 0xe5, 0x0c, 0xb4
+ .byte 0x0b, 0x0f, 0xd2, 0x0a, 0xd2, 0x0d, 0xc2, 0x96
+ .byte 0xc2, 0x13, 0xd2, 0x0c, 0xe4, 0xf5, 0x0c, 0xc2
+ .byte 0x04, 0xe5, 0x10, 0xc3, 0x13, 0xf5, 0x10, 0xe5
+ .byte 0x11, 0x13, 0xf5, 0x11, 0x30, 0x19, 0x03, 0x43
+ .byte 0x10, 0x80, 0x22, 0xd2, 0x21, 0x75, 0x30, 0xfe
+ .byte 0xd2, 0x22, 0xd2, 0x23, 0xc2, 0x24, 0xd2, 0x0a
+ .byte 0xd2, 0x0d, 0xc2, 0x96, 0xd2, 0x0e, 0xd2, 0x10
+ .byte 0xc2, 0x94, 0xa2, 0x23, 0x92, 0x27, 0x7f, 0x06
+ .byte 0x12, 0x0b, 0x6c, 0xa2, 0x24, 0x92, 0x27, 0x7f
+ .byte 0x07, 0x12, 0x0b, 0x6c, 0x30, 0x22, 0x0c, 0xa2
+ .byte 0x21, 0x92, 0x25, 0x85, 0x30, 0x31, 0x12, 0x08
+ .byte 0xbb, 0x80, 0x10, 0xa2, 0x21, 0x92, 0x26, 0x85
+ .byte 0x30, 0x32, 0x12, 0x0b, 0xf9, 0xc2, 0x92, 0xc2
+ .byte 0x93, 0xd2, 0x09, 0xc2, 0x0c, 0x22, 0x20, 0x04
+ .byte 0x03, 0x30, 0x07, 0x44, 0x7f, 0xe8, 0x7e, 0xfd
+ .byte 0x12, 0x0c, 0x79, 0x20, 0x04, 0x03, 0x30, 0x07
+ .byte 0x37, 0x12, 0x0e, 0x62, 0x50, 0xf5, 0xc2, 0xaf
+ .byte 0x20, 0x04, 0x03, 0x30, 0x07, 0x26, 0x30, 0x04
+ .byte 0x04, 0xc2, 0x1f, 0x80, 0x02, 0xd2, 0x1f, 0xe4
+ .byte 0xf5, 0x0c, 0xc2, 0x04, 0xf5, 0x0e, 0xc2, 0x07
+ .byte 0x12, 0x0e, 0xeb, 0x12, 0x0e, 0x80, 0xd2, 0xaf
+ .byte 0xa2, 0x1f, 0x92, 0x21, 0x75, 0x30, 0xff, 0x12
+ .byte 0x06, 0xe8, 0x80, 0xc7, 0xd2, 0xaf, 0x80, 0xc3
+ .byte 0x22, 0xe5, 0x19, 0x60, 0x03, 0xb4, 0x02, 0x09
+ .byte 0xe5, 0x0d, 0x90, 0x03, 0x63, 0x93, 0x6f, 0x60
+ .byte 0x0b, 0xe5, 0x19, 0x64, 0x01, 0x70, 0x2d, 0xef
+ .byte 0x64, 0xf0, 0x70, 0x28, 0x05, 0x19, 0xe5, 0x19
+ .byte 0xd3, 0x94, 0x02, 0x40, 0x24, 0xe4, 0xf5, 0x19
+ .byte 0x05, 0x0d, 0xe5, 0x0d, 0x94, 0x09, 0x40, 0x19
+ .byte 0x75, 0x2a, 0x05, 0xe4, 0xff, 0x12, 0x0c, 0x3b
+ .byte 0x7f, 0x07, 0x12, 0x0c, 0x3b, 0xd5, 0x2a, 0xf3
+ .byte 0xe4, 0xf5, 0x0d, 0x22, 0xe4, 0xf5, 0x0d, 0xf5
+ .byte 0x19, 0x22, 0xe5, 0x3b, 0x64, 0x15, 0x70, 0x41
+ .byte 0x12, 0x0c, 0xed, 0xe5, 0x3a, 0x30, 0xe0, 0x05
+ .byte 0x75, 0x26, 0x80, 0x80, 0x03, 0xe4, 0xf5, 0x26
+ .byte 0xe5, 0x3a, 0xc3, 0x13, 0xf5, 0x3a, 0xe5, 0x39
+ .byte 0x30, 0xe0, 0x03, 0x43, 0x3a, 0x80, 0xe5, 0x39
+ .byte 0xc3, 0x13, 0xf5, 0x39, 0xe5, 0x38, 0x30, 0xe0
+ .byte 0x03, 0x43, 0x39, 0x80, 0xc2, 0xb6, 0x90, 0xd0
+ .byte 0x01, 0xe4, 0xf0, 0xa3, 0xe5, 0x26, 0xf0, 0xa3
+ .byte 0xe5, 0x3a, 0xf0, 0xa3, 0xe5, 0x39, 0xf0, 0xd2
+ .byte 0xb6, 0x22, 0x20, 0x94, 0x37, 0x05, 0x0e, 0xe5
+ .byte 0x0e, 0xd3, 0x94, 0x08, 0x50, 0x12, 0xe5, 0x08
+ .byte 0x30, 0xe0, 0x04, 0xd2, 0x95, 0x80, 0x02, 0xc2
+ .byte 0x95, 0xe5, 0x08, 0xc3, 0x13, 0xf5, 0x08, 0x22
+ .byte 0xe5, 0x0e, 0xb4, 0x09, 0x05, 0xa2, 0x14, 0x92
+ .byte 0x95, 0x22, 0xe5, 0x0e, 0xb4, 0x0a, 0x03, 0xd2
+ .byte 0x95, 0x22, 0xe5, 0x0e, 0xb4, 0x0b, 0x05, 0xc2
+ .byte 0x16, 0xe4, 0xf5, 0x0e, 0x22, 0x20, 0x96, 0x37
+ .byte 0x05, 0x0c, 0xe5, 0x0c, 0xd3, 0x94, 0x08, 0x50
+ .byte 0x12, 0xe5, 0x08, 0x30, 0xe0, 0x04, 0xd2, 0x97
+ .byte 0x80, 0x02, 0xc2, 0x97, 0xe5, 0x08, 0xc3, 0x13
+ .byte 0xf5, 0x08, 0x22, 0xe5, 0x0c, 0xb4, 0x09, 0x05
+ .byte 0xa2, 0x14, 0x92, 0x97, 0x22, 0xe5, 0x0c, 0xb4
+ .byte 0x0a, 0x03, 0xd2, 0x97, 0x22, 0xe5, 0x0c, 0xb4
+ .byte 0x0b, 0x05, 0xc2, 0x16, 0xe4, 0xf5, 0x0c, 0x22
+ .byte 0x01, 0x0c, 0x00, 0xc1, 0x04, 0xc1, 0x0a, 0xc1
+ .byte 0x83, 0xc1, 0x0c, 0xc1, 0x09, 0xc1, 0x02, 0xc1
+ .byte 0x16, 0xc1, 0x08, 0x01, 0x0e, 0x00, 0xc1, 0x07
+ .byte 0xc1, 0x0e, 0xc1, 0x85, 0xc1, 0x8b, 0xc1, 0x86
+ .byte 0xc1, 0x8f, 0xc1, 0x12, 0xc1, 0x00, 0xc1, 0x11
+ .byte 0xc1, 0x01, 0xc1, 0x17, 0x01, 0x0d, 0x00, 0x01
+ .byte 0x19, 0x00, 0x01, 0x1a, 0x00, 0x01, 0x34, 0x03
+ .byte 0xc1, 0x29, 0x00, 0xa2, 0x25, 0x92, 0x26, 0x85
+ .byte 0x31, 0x32, 0x12, 0x0b, 0xf9, 0xc2, 0x92, 0xc2
+ .byte 0x93, 0x20, 0x25, 0x03, 0x20, 0x06, 0x06, 0x30
+ .byte 0x25, 0x1d, 0x30, 0x0b, 0x1a, 0x7f, 0x69, 0x7e
+ .byte 0x00, 0x12, 0x0c, 0x79, 0x12, 0x0e, 0x62, 0x50
+ .byte 0xfb, 0x12, 0x0e, 0xb0, 0x50, 0x09, 0x20, 0x25
+ .byte 0x04, 0xd2, 0x92, 0x80, 0x02, 0xd2, 0x93, 0xd2
+ .byte 0x09, 0x22, 0x90, 0x0f, 0xfc, 0xe4, 0x93, 0xfe
+ .byte 0x74, 0x01, 0x93, 0xff, 0xc3, 0x95, 0x3a, 0xf5
+ .byte 0x0b, 0xee, 0x95, 0x39, 0xf5, 0x0a, 0x90, 0x0f
+ .byte 0xfb, 0xe4, 0x93, 0xc3, 0x95, 0x38, 0xf5, 0x09
+ .byte 0xc3, 0xef, 0x95, 0x3a, 0xee, 0x95, 0x39, 0x50
+ .byte 0x02, 0x15, 0x09, 0xe5, 0x09, 0x30, 0xe7, 0x07
+ .byte 0xe4, 0xf5, 0x09, 0xf5, 0x0a, 0xf5, 0x0b, 0x22
+ .byte 0x05, 0x35, 0xaf, 0x35, 0xae, 0x07, 0xee, 0x14
+ .byte 0x13, 0x13, 0x13, 0x54, 0x1f, 0xfd, 0xee, 0x54
+ .byte 0x07, 0xff, 0x70, 0x06, 0xf5, 0x26, 0xf5, 0x27
+ .byte 0x80, 0x15, 0x74, 0xff, 0x7e, 0x00, 0xa8, 0x07
+ .byte 0x08, 0x80, 0x06, 0xce, 0xa2, 0xe7, 0x13, 0xce
+ .byte 0x13, 0xd8, 0xf8, 0xf5, 0x27, 0x8e, 0x26, 0xaf
+ .byte 0x05, 0xad, 0x27, 0x02, 0x0c, 0x5a, 0xe4, 0xff
+ .byte 0x7e, 0x01, 0xef, 0xc3, 0x94, 0x08, 0x50, 0x27
+ .byte 0xef, 0x60, 0x1d, 0x64, 0x01, 0x60, 0x19, 0xef
+ .byte 0x64, 0x03, 0x60, 0x14, 0xee, 0x44, 0x02, 0x54
+ .byte 0xfe, 0x90, 0xe0, 0x00, 0xf0, 0x54, 0xf4, 0xfd
+ .byte 0xee, 0x54, 0xf4, 0x6d, 0x60, 0x02, 0xd3, 0x22
+ .byte 0x0f, 0xee, 0x25, 0xe0, 0xfe, 0x80, 0xd3, 0xc3
+ .byte 0x22, 0xad, 0x07, 0xac, 0x06, 0xed, 0x24, 0xff
+ .byte 0xff, 0xec, 0x34, 0xff, 0xfe, 0xef, 0x78, 0x03
+ .byte 0xce, 0xc3, 0x13, 0xce, 0x13, 0xd8, 0xf9, 0xff
+ .byte 0xed, 0x54, 0x07, 0xfd, 0x70, 0x04, 0xf5, 0x26
+ .byte 0x80, 0x0d, 0x74, 0xff, 0xa8, 0x05, 0x08, 0x80
+ .byte 0x02, 0xc3, 0x13, 0xd8, 0xfc, 0xf5, 0x26, 0xad
+ .byte 0x26, 0x02, 0x0a, 0xad, 0xc2, 0x28, 0x20, 0x29
+ .byte 0x0f, 0x12, 0x0f, 0x0d, 0x8f, 0x3b, 0xe5, 0x3b
+ .byte 0xb4, 0x15, 0x03, 0x75, 0x34, 0x1f, 0xd2, 0x29
+ .byte 0x12, 0x0a, 0x56, 0x8f, 0x35, 0xe5, 0x35, 0x30
+ .byte 0xe0, 0x0c, 0x12, 0x0d, 0x7d, 0x12, 0x09, 0x28
+ .byte 0xe4, 0xf5, 0x36, 0xf5, 0x37, 0x22, 0x12, 0x04
+ .byte 0x09, 0x8e, 0x36, 0x8f, 0x37, 0x22, 0x20, 0x0f
+ .byte 0x03, 0x7e, 0x00, 0x22, 0xbf, 0xf0, 0x07, 0xd2
+ .byte 0x15, 0x7e, 0xff, 0x7f, 0xff, 0x22, 0xef, 0xc3
+ .byte 0x94, 0x85, 0x40, 0x03, 0x7e, 0x00, 0x22, 0xef
+ .byte 0x90, 0x02, 0xce, 0x93, 0xfe, 0x70, 0x02, 0xfe
+ .byte 0x22, 0x30, 0x15, 0x03, 0x43, 0x06, 0x80, 0xc2
+ .byte 0x15, 0xaf, 0x06, 0x7e, 0x00, 0x22, 0xa2, 0x1a
+ .byte 0x92, 0x28, 0x05, 0x37, 0xe5, 0x37, 0x70, 0x02
+ .byte 0x05, 0x36, 0xc3, 0xe5, 0x36, 0x94, 0x80, 0x50
+ .byte 0x07, 0xaf, 0x37, 0xae, 0x36, 0x02, 0x09, 0x91
+ .byte 0xe5, 0x35, 0xc3, 0x94, 0x10, 0x50, 0x0e, 0x12
+ .byte 0x09, 0x28, 0x12, 0x0d, 0x7d, 0x12, 0x09, 0x28
+ .byte 0xe4, 0xf5, 0x36, 0xf5, 0x37, 0x22, 0xe4, 0xff
+ .byte 0x12, 0x0e, 0x23, 0x7e, 0xff, 0xe4, 0xf5, 0x26
+ .byte 0xe5, 0x26, 0xb4, 0x08, 0x07, 0x7f, 0x01, 0x12
+ .byte 0x0e, 0x23, 0x7e, 0xff, 0xee, 0xb5, 0x07, 0x03
+ .byte 0xaf, 0x26, 0x22, 0xee, 0xc3, 0x13, 0xfe, 0x05
+ .byte 0x26, 0xe5, 0x26, 0xd3, 0x94, 0x10, 0x40, 0xe0
+ .byte 0x7f, 0xff, 0x22, 0xe4, 0xff, 0x30, 0x0f, 0x02
+ .byte 0x7f, 0x40, 0x20, 0x05, 0x03, 0x43, 0x07, 0x20
+ .byte 0x20, 0x03, 0x03, 0x43, 0x07, 0x10, 0x90, 0xe0
+ .byte 0x00, 0xe0, 0x30, 0xe2, 0x03, 0x43, 0x07, 0x04
+ .byte 0x30, 0x0b, 0x03, 0x43, 0x07, 0x02, 0x30, 0x06
+ .byte 0x03, 0x43, 0x07, 0x01, 0x22, 0x8e, 0x27, 0x8f
+ .byte 0x28, 0x8d, 0x29, 0x12, 0x0e, 0x74, 0xe5, 0x27
+ .byte 0x24, 0xd0, 0xf5, 0x2a, 0xe5, 0x28, 0xf5, 0x2b
+ .byte 0x12, 0x0e, 0xa2, 0x85, 0x29, 0x2f, 0xab, 0x2b
+ .byte 0xad, 0x2a, 0xaf, 0x34, 0x12, 0x0b, 0x47, 0x12
+ .byte 0x0e, 0xa9, 0x02, 0x0d, 0xea, 0xc0, 0xe0, 0xc0
+ .byte 0xf0, 0xc0, 0xd0, 0x75, 0xd0, 0x00, 0xc0, 0x06
+ .byte 0xc0, 0x07, 0x20, 0x10, 0x0b, 0x30, 0x16, 0x05
+ .byte 0x12, 0x08, 0x0a, 0x80, 0x03, 0x12, 0x06, 0x4d
+ .byte 0xd0, 0x07, 0xd0, 0x06, 0xd0, 0xd0, 0xd0, 0xf0
+ .byte 0xd0, 0xe0, 0x32, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0
+ .byte 0xd0, 0x75, 0xd0, 0x00, 0xc0, 0x06, 0xc0, 0x07
+ .byte 0x20, 0x0d, 0x0b, 0x30, 0x16, 0x05, 0x12, 0x08
+ .byte 0x45, 0x80, 0x03, 0x12, 0x06, 0x98, 0xd0, 0x07
+ .byte 0xd0, 0x06, 0xd0, 0xd0, 0xd0, 0xf0, 0xd0, 0xe0
+ .byte 0x32, 0xd0, 0x83, 0xd0, 0x82, 0xf8, 0xe4, 0x93
+ .byte 0x70, 0x12, 0x74, 0x01, 0x93, 0x70, 0x0d, 0xa3
+ .byte 0xa3, 0x93, 0xf8, 0x74, 0x01, 0x93, 0xf5, 0x82
+ .byte 0x88, 0x83, 0xe4, 0x73, 0x74, 0x02, 0x93, 0x68
+ .byte 0x60, 0xef, 0xa3, 0xa3, 0xa3, 0x80, 0xdf, 0xae
+ .byte 0x03, 0xab, 0x05, 0x53, 0x1a, 0xef, 0x90, 0xd0
+ .byte 0x00, 0xe5, 0x1a, 0xf0, 0xad, 0x07, 0x8e, 0x33
+ .byte 0x7f, 0x02, 0x12, 0x0d, 0x51, 0xaf, 0x2f, 0x12
+ .byte 0x0c, 0xd0, 0x43, 0x1a, 0x10, 0x90, 0xd0, 0x00
+ .byte 0xe5, 0x1a, 0xf0, 0x22, 0x74, 0x01, 0xa8, 0x07
+ .byte 0x08, 0x80, 0x02, 0xc3, 0x33, 0xd8, 0xfc, 0xff
+ .byte 0x90, 0xe0, 0x00, 0xe0, 0x44, 0x02, 0xfe, 0xef
+ .byte 0x30, 0x27, 0x04, 0x42, 0x06, 0x80, 0x03, 0xf4
+ .byte 0x52, 0x06, 0x90, 0xe0, 0x00, 0xee, 0xf0, 0x22
+ .byte 0x12, 0x0e, 0x07, 0x40, 0x05, 0x12, 0x01, 0x05
+ .byte 0x80, 0xf6, 0x12, 0x0e, 0xc8, 0x12, 0x0e, 0xd4
+ .byte 0xc2, 0x1f, 0x75, 0x2f, 0xee, 0xa2, 0x06, 0x92
+ .byte 0x20, 0x12, 0x0d, 0xb8, 0x90, 0xd0, 0x00, 0xe0
+ .byte 0x30, 0xe1, 0xf9, 0x22, 0xae, 0x03, 0xab, 0x05
+ .byte 0x53, 0x1a, 0xef, 0x90, 0xd0, 0x00, 0xe5, 0x1a
+ .byte 0xf0, 0xad, 0x07, 0x8e, 0x33, 0x7f, 0x03, 0x12
+ .byte 0x0d, 0x51, 0x12, 0x0b, 0xd7, 0x43, 0x1a, 0x10
+ .byte 0x90, 0xd0, 0x00, 0xe5, 0x1a, 0xf0, 0x22, 0xe5
+ .byte 0x1a, 0x54, 0x9f, 0xfd, 0x44, 0x20, 0xfe, 0x7c
+ .byte 0x08, 0xef, 0x25, 0xe0, 0xff, 0x90, 0xd0, 0x00
+ .byte 0xed, 0xf0, 0xe0, 0x30, 0xe4, 0x03, 0x43, 0x07
+ .byte 0x01, 0x90, 0xd0, 0x00, 0xee, 0xf0, 0xdc, 0xe9
+ .byte 0x22, 0x90, 0xf0, 0x00, 0xe5, 0x32, 0xf0, 0xf5
+ .byte 0x0f, 0xa2, 0x26, 0x92, 0x27, 0x7f, 0x05, 0x12
+ .byte 0x0b, 0x6c, 0x90, 0xe0, 0x00, 0xe0, 0x44, 0x02
+ .byte 0x54, 0xfe, 0xfe, 0xf0, 0x44, 0x01, 0xf0, 0xee
+ .byte 0xf0, 0x22, 0x53, 0x1a, 0xef, 0x90, 0xd0, 0x00
+ .byte 0xe5, 0x1a, 0xf0, 0x7f, 0x9f, 0x12, 0x0c, 0xd0
+ .byte 0x12, 0x0b, 0xd7, 0x12, 0x0b, 0xd7, 0x12, 0x0b
+ .byte 0xd7, 0x43, 0x1a, 0x10, 0x90, 0xd0, 0x00, 0xe5
+ .byte 0x1a, 0xf0, 0x22, 0x8f, 0x2b, 0x7f, 0xed, 0x12
+ .byte 0x05, 0x2f, 0xaf, 0x2b, 0x12, 0x05, 0x2f, 0x75
+ .byte 0x2c, 0x0a, 0x7f, 0xe8, 0x7e, 0xfd, 0x12, 0x0c
+ .byte 0x79, 0x12, 0x0e, 0x62, 0x50, 0xfb, 0xd5, 0x2c
+ .byte 0xf1, 0x22, 0x8f, 0x28, 0x8d, 0x29, 0x12, 0x0e
+ .byte 0x74, 0x12, 0x0e, 0xa2, 0xe5, 0x28, 0x24, 0xfe
+ .byte 0xfb, 0x85, 0x29, 0x2f, 0x7d, 0xef, 0xaf, 0x34
+ .byte 0x12, 0x0b, 0x47, 0x12, 0x0e, 0xa9, 0x02, 0x0d
+ .byte 0xea, 0xad, 0x07, 0xac, 0x06, 0xc2, 0x8c, 0xed
+ .byte 0xf4, 0xff, 0xec, 0xf4, 0xfe, 0xef, 0x24, 0x01
+ .byte 0xfd, 0xe4, 0x3e, 0xf5, 0x8c, 0xaf, 0x05, 0x8f
+ .byte 0x8a, 0xc2, 0x8d, 0xd2, 0x8c, 0x22, 0xad, 0x07
+ .byte 0xac, 0x06, 0xc2, 0xca, 0xed, 0xf4, 0xff, 0xec
+ .byte 0xf4, 0xfe, 0xef, 0x24, 0x01, 0xfd, 0xe4, 0x3e
+ .byte 0xf5, 0xcd, 0xaf, 0x05, 0x8f, 0xcc, 0xc2, 0xcf
+ .byte 0xd2, 0xca, 0x22, 0x53, 0x1a, 0xef, 0x90, 0xd0
+ .byte 0x00, 0xe5, 0x1a, 0xf0, 0x7f, 0x05, 0x12, 0x0c
+ .byte 0xd0, 0x12, 0x0b, 0xd7, 0x43, 0x1a, 0x10, 0x90
+ .byte 0xd0, 0x00, 0xe5, 0x1a, 0xf0, 0xef, 0x13, 0x22
+ .byte 0xe5, 0x1a, 0x54, 0x9f, 0xfe, 0x44, 0x40, 0xfd
+ .byte 0x7c, 0x08, 0x90, 0xd0, 0x00, 0xef, 0x33, 0xff
+ .byte 0x50, 0x03, 0xed, 0x80, 0x01, 0xee, 0xf0, 0x44
+ .byte 0x20, 0xf0, 0xdc, 0xf1, 0x22, 0x12, 0x0f, 0x04
+ .byte 0x8e, 0x39, 0x8f, 0x3a, 0x12, 0x0f, 0x1d, 0x8f
+ .byte 0x38, 0xe5, 0x38, 0x30, 0xe1, 0x03, 0x43, 0x39
+ .byte 0x80, 0xe5, 0x38, 0x13, 0x13, 0x54, 0x3f, 0xf5
+ .byte 0x38, 0x22, 0x53, 0x1a, 0xef, 0x90, 0xd0, 0x00
+ .byte 0xe5, 0x1a, 0xf0, 0x7f, 0x05, 0x12, 0x0c, 0xd0
+ .byte 0x12, 0x0b, 0xd7, 0x43, 0x1a, 0x10, 0x90, 0xd0
+ .byte 0x00, 0xe5, 0x1a, 0xf0, 0x22, 0x12, 0x0e, 0xc8
+ .byte 0x12, 0x0e, 0xd4, 0x90, 0xd0, 0x00, 0xe0, 0x20
+ .byte 0xe1, 0x08, 0x12, 0x03, 0x6c, 0x12, 0x01, 0x05
+ .byte 0x80, 0xf1, 0x22, 0x12, 0x0c, 0xed, 0x12, 0x08
+ .byte 0xf2, 0xe5, 0x09, 0x70, 0x0b, 0xe5, 0x0a, 0x70
+ .byte 0x07, 0xe5, 0x0b, 0x70, 0x03, 0x12, 0x0e, 0xda
+ .byte 0x22, 0x8d, 0x31, 0x8b, 0x32, 0x12, 0x0c, 0xd0
+ .byte 0xaf, 0x31, 0x12, 0x0c, 0xd0, 0xaf, 0x32, 0x12
+ .byte 0x0c, 0xd0, 0xaf, 0x33, 0x02, 0x0c, 0xd0, 0x53
+ .byte 0x1a, 0xef, 0x90, 0xd0, 0x00, 0xe5, 0x1a, 0xf0
+ .byte 0x12, 0x0c, 0xd0, 0x43, 0x1a, 0x10, 0x90, 0xd0
+ .byte 0x00, 0xe5, 0x1a, 0xf0, 0x22, 0x12, 0x0e, 0x74
+ .byte 0x12, 0x0e, 0xa2, 0xe4, 0xfb, 0x7d, 0xd0, 0xaf
+ .byte 0x34, 0x12, 0x00, 0xe0, 0x12, 0x0e, 0xa9, 0x02
+ .byte 0x0d, 0xea, 0x53, 0x1a, 0xfb, 0x90, 0xd0, 0x00
+ .byte 0xe5, 0x1a, 0xf0, 0x53, 0x1a, 0xfd, 0xe5, 0x1a
+ .byte 0xf0, 0x7f, 0x3c, 0x02, 0x00, 0x06, 0x30, 0x09
+ .byte 0x0e, 0x12, 0x0e, 0xb0, 0x40, 0x09, 0xc2, 0x92
+ .byte 0xc2, 0x93, 0xc2, 0x09, 0x12, 0x0e, 0x7d, 0x22
+ .byte 0xa2, 0x1f, 0x92, 0x21, 0x85, 0x2f, 0x30, 0xa2
+ .byte 0x20, 0x92, 0x22, 0xc2, 0x23, 0xc2, 0x24, 0x02
+ .byte 0x06, 0xee, 0xef, 0xc4, 0x54, 0x0f, 0x90, 0x03
+ .byte 0x53, 0x93, 0xfe, 0xef, 0x54, 0x0f, 0x93, 0x2e
+ .byte 0xff, 0x22, 0x90, 0xe0, 0x00, 0xe0, 0x44, 0x02
+ .byte 0x54, 0xfe, 0xfe, 0xf0, 0x54, 0xfd, 0xf0, 0xee
+ .byte 0xf0, 0x22, 0x12, 0x0e, 0xa2, 0x12, 0x0c, 0xb3
+ .byte 0x92, 0x1b, 0x12, 0x0e, 0xa9, 0x20, 0x1b, 0xf2
+ .byte 0x22, 0x30, 0x05, 0x09, 0x20, 0x0e, 0x06, 0x20
+ .byte 0x02, 0x03, 0xd3, 0x80, 0x01, 0xc3, 0x22, 0x30
+ .byte 0x03, 0x09, 0x20, 0x0a, 0x06, 0x20, 0x02, 0x03
+ .byte 0xd3, 0x80, 0x01, 0xc3, 0x22, 0xaa, 0x06, 0xea
+ .byte 0x24, 0xd0, 0xfd, 0xef, 0xfb, 0xaf, 0x34, 0x12
+ .byte 0x0b, 0xb4, 0x22, 0xef, 0x24, 0xfe, 0xfb, 0x7d
+ .byte 0xef, 0xaf, 0x34, 0x12, 0x0b, 0xb4, 0x22, 0xd2
+ .byte 0x02, 0xd2, 0x0d, 0xc2, 0x96, 0xd2, 0x10, 0xc2
+ .byte 0x94, 0x22, 0xef, 0x90, 0x02, 0xc9, 0x93, 0x6d
+ .byte 0x60, 0x02, 0x80, 0xfe, 0x22, 0x12, 0x0d, 0xf9
+ .byte 0x50, 0x04, 0xc2, 0x10, 0xd2, 0x94, 0x22, 0x12
+ .byte 0x0e, 0x07, 0x50, 0x04, 0xc2, 0x0d, 0xd2, 0x96
+ .byte 0x22, 0xe5, 0x89, 0x54, 0xf0, 0x44, 0x01, 0xf5
+ .byte 0x89, 0x22, 0x30, 0x8d, 0x04, 0xc2, 0x8c, 0xd3
+ .byte 0x22, 0xc3, 0x22, 0x30, 0xcf, 0x04, 0xc2, 0xca
+ .byte 0xd3, 0x22, 0xc3, 0x22, 0x12, 0x0e, 0xa2, 0x12
+ .byte 0x0e, 0xfa, 0x02, 0x0e, 0xa9, 0x12, 0x0e, 0xeb
+ .byte 0xc2, 0x0e, 0x02, 0x0e, 0x45, 0xc2, 0x02, 0x12
+ .byte 0x0e, 0x4f, 0x02, 0x0e, 0x45, 0xc2, 0x05, 0xd2
+ .byte 0x10, 0xc2, 0x94, 0x22, 0xc2, 0x03, 0xd2, 0x0d
+ .byte 0xc2, 0x96, 0x22, 0x90, 0xd0, 0x00, 0xe5, 0x1a
+ .byte 0xf0, 0x22, 0x30, 0x28, 0x03, 0x12, 0x0b, 0x90
+ .byte 0x22, 0x30, 0x28, 0x03, 0x12, 0x0d, 0x92, 0x22
+ .byte 0x90, 0xe0, 0x00, 0xe0, 0x13, 0x22, 0x53, 0x1a
+ .byte 0xfe, 0x02, 0x0e, 0x9b, 0x43, 0x1a, 0x01, 0x02
+ .byte 0x0e, 0x9b, 0x53, 0x1a, 0xfd, 0x02, 0x0e, 0x9b
+ .byte 0x43, 0x1a, 0x02, 0x02, 0x0e, 0x9b, 0x53, 0x1a
+ .byte 0xfb, 0x02, 0x0e, 0x9b, 0x43, 0x1a, 0x04, 0x02
+ .byte 0x0e, 0x9b, 0x53, 0x1a, 0x7f, 0x02, 0x0e, 0x9b
+ .byte 0x43, 0x1a, 0x80, 0x02, 0x0e, 0x9b, 0xd2, 0x05
+ .byte 0x02, 0x0e, 0x45, 0xc2, 0x0a, 0x02, 0x0e, 0x4f
+ .byte 0xd2, 0x03, 0x02, 0x0e, 0x4f, 0x8f, 0x1a, 0x02
+ .byte 0x0e, 0x9b, 0x7f, 0x06, 0x02, 0x0d, 0x67, 0x7f
+ .byte 0x04, 0x02, 0x0d, 0x67, 0xae, 0x36, 0xaf, 0x37
+ .byte 0x22, 0xe4, 0xf5, 0xc8, 0x22, 0x12, 0x0c, 0x1a
+ .byte 0x22, 0xc2, 0x0b, 0x22, 0xd2, 0x0b, 0x22, 0xc2
+ .byte 0x06, 0x22, 0xd2, 0x06, 0x22, 0xaf, 0x35, 0x22
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
diff --git a/site/vortex86ex/index.php b/site/vortex86ex/index.php
new file mode 100644
index 0000000..8a1370a
--- /dev/null
+++ b/site/vortex86ex/index.php
@@ -0,0 +1,307 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <style type="text/css">
+ @import url('../css/main.css');
+
+ div.contain {
+ max-width:100%;
+ }
+
+ b {
+ background:#ddd;
+ }
+ </style>
+
+ <title>dmp vortex86ex in libreboot</title>
+
+</head>
+
+<?php
+ include_once "../variables.php";
+?>
+
+<body>
+
+ <div class="contain">
+
+ <div id="libreboot" class="section intro">
+
+ <h1>dmp vortex86ex in libreboot</h1>
+
+ <p>
+ small embedded system (SoC), i586 CPU
+ made by a company called DMP. Seems like there are no blobs except a <a href="#kbd_fw">small firmware</a>
+ for a keyboard controller (PS/2), could use usb keyboard instead if
+ the ps/2 'blob' is an issue.
+ </p>
+ <p>
+ <a href="../">(Back to homepage)</a>
+ </p>
+
+ <p>
+ <b>Last updated 00:22 UTC+0100 on November 23rd, 2014</b>
+ </p>
+
+ </div>
+
+
+ <div class="section">
+
+ <h2>#libreboot on November 15th, 2014</h2>
+
+<pre>
+&lt;pehjota&gt; After the conversation yesterday about KolibriOS, I stumbled upon some hardware that community seems to like: the Vortex86 series of i586-compatible SoCs and the DMP EBOX nettops that use those SoCs. coreboot supports one computer by DMP (src/mainboard/dmp/vortex86ex/) which appears to be the EBOX-3100 (the only EBOX nettop AFAICT without VGA). Three years ago someone ported coreboot to the
+&lt;pehjota&gt; EBOX-3300MX but apparently never upstreamed that work. These Vortex86 SoCs look pretty good, freedom-wise: I think there's no microcode at all, the VGA cores don't seem to need option ROMs, and there are no blobs for things like ME/MRC/AGESA. They have relatively low CPU clock rates (most at 600 or 933 MHz), so they aren't great for compiling or gaming. But they're sold as nettops, thin clients,
+&lt;pehjota&gt; and embedded systems, and the prices ($95–$269 from the US distributor) aren't bad.
+&lt;pehjota&gt; DMP EBOX computers: <a href="http://www.compactpc.com.tw/en/index.html">http://www.compactpc.com.tw/en/index.html</a>. EBOX-3300MX coreboot port: <a href="https://github.com/XVilka/coreboot">https://github.com/XVilka/coreboot</a> (last six commits). Basic (and incomplete) information on the Vortex86 SoCs: <a href="http://www.vortex86.com/">http://www.vortex86.com/</a>. Some technical overviews and resources: <a href="http://www.dmp.com.tw/tech/">http://www.dmp.com.tw/tech/</a>. DMP's BusyBox/Linux distribution (with a Linux config file but apparently no source code):
+&lt;pehjota&gt; <a href="http://www.dmp.com.tw/tech/os-xlinux/">http://www.dmp.com.tw/tech/os-xlinux/</a>.
+</pre>
+
+ <h2>#libreboot on November 16th, 2014</h2>
+
+<pre>
+&lt;fchmmr&gt; pehjota, I added info about those vortex86 machines to libreboot.org/release.html and to git.
+&lt;fchmmr&gt; By the way, xvilka (the person behind those commits on that github page) is in #coreboot at the moment.
+&lt;pehjota&gt; Cool. I can't discuss it right now either (busy and have to go idle soon), but I'm interested in his work and possibly seeing at least EBOX-3350MX (a nice cheap one with VGA) supported as well.
+&lt;pehjota&gt; The EBOX systems are cheap (once you add the cost of a power supply and enclosure to a BBB, it isn't much cheaper than an EBOX is) and most have VGA. Some have dual Ethernet and miniPCI.
+
+&lt;mtjm&gt; what is in dmp_kbd_fw_part1.inc in coreboot sources?
+&lt;fchmmr&gt; mtjm, coreboot/src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc is part of the "DEBLOB" file in libreboot.
+&lt;fchmmr&gt; I'll check it's contents in a coreboot clone.
+&lt;fchmmr&gt; it's referenced (included) by src/cpu/dmp/vortex86ex/biosdata.{inc,lds}
+&lt;fchmmr&gt; src/cpu/dmp/vortex86ex/biosdata.inc: #include "src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc"
+&lt;fchmmr&gt; src/cpu/dmp/vortex86ex/Makefile.inc:chipset_bootblock_inc += $(src)/cpu/dmp/vortex86ex/biosdata.inc
+&lt;mtjm&gt; are there other blobs for that platform?
+&lt;mtjm&gt; for checking if it's code or data, see code that uses it (hardware only here?) and relevant documentation; if a disassembler produces reasonable code for an appropriate ISA, then it's most probably code, otherwise it's unknown
+&lt;mtjm&gt; (or is it e.g. a keymap?)
+&lt;fchmmr&gt; As far as I can tell, src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc is the only blob
+&lt;fchmmr&gt; xvilka will know more, I'm sure
+<i>I then asked for more info in #coreboot and emailed Andrew Wu (original maintainer for that board) asking the same question</i>
+</pre>
+
+ <h2>#coreboot on November 16th, 2014</h2>
+
+<pre>
+&lt;fchmmr&gt; xvilka, what is src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc for? What kind of data is it?
+&lt;fchmmr&gt; Is there a document that describes this data?
+&lt;idwer&gt; fchmmr: you haven't looked at biosdata.inc/.lds then
+&lt;ruik&gt; fchmmr: i think it is firmware for keyboard controller havent check
+&lt;fchmmr&gt; idwer, i looked at biosdata.inc, not lds. checking now.
+&lt;fchmmr&gt; ruik, keyboard as in ps/2 keyboard?
+&lt;ruik&gt; fchmmr: yes
+&lt;ruik&gt; fchmmr: could be 8051
+&lt;ruik&gt; 0x2 can be LJMP
+</pre>
+
+ <h2>back to #libreboot on November 16th, 2014</h2>
+
+<pre>
+&lt;fchmmr&gt; mtjm, just a hunch from #coreboot discussion: I think it might just be for PS/2 keyboards, not sure.
+&lt;fchmmr&gt; If that is the case though, you could basically just ignore it (not use it) and use a usb keyboard, I imagine.
+
+&lt;pehjota&gt; fchmmr: The EBOX-3100 (only Vortex86EX computer by DMP: &lt;<a href="http://www.compactpc.com.tw/en/product/EBOX-3100/ebox-3100_1.html">http://www.compactpc.com.tw/en/product/EBOX-3100/ebox-3100_1.html</a>&gt;.
+&lt;fchmmr&gt; coreboot menuconfig just says DMP -&gt; Vortex86EX
+&lt;pehjota&gt; Yeah, it doesn't say which computer that is, but I'm guessing it's the EBOX-3100.
+&lt;fchmmr&gt; maybe there are more that also work.
+&lt;fchmmr&gt; I found a few "86duino" boards for isntance.
+&lt;fchmmr&gt; <a href="http://www.bttr-software.de/forum/mix_entry.php?id=13074">http://www.bttr-software.de/forum/mix_entry.php?id=13074</a>
+&lt;fchmmr&gt; <a href="http://www.86duino.com/?page_id=85/installation-troubleshooting-1/recompiling-coreboot-seabios-need-config-files">http://www.86duino.com/?page_id=85/installation-troubleshooting-1/recompiling-coreboot-seabios-need-config-files</a>
+&lt;pehjota&gt; Yeah, there's 86duino which supposedly comes with coreboot installed. There were some old configs posted to a forum but the links are dead. Other than that I can't find source code. And it's not in upstream coreboot.
+<i>Surely someone had a git repository somewhere? Was it public (and is it still online)?</i>
+<i>So we need to check all the usual places (github, gitorious, search google/ddg, etc).</i>
+
+&lt;pehjota&gt; Yeah, that thread; the links are dead.
+&lt;fchmmr&gt; tried the wayback machine?
+&lt;fchmmr&gt; <a href="https://archive.org/web/">https://archive.org/web/</a>
+&lt;pehjota&gt; Oh right, that's a Vortex86EX. Maybe that's the one supported by coreboot. DMP sells that one too.
+&lt;fchmmr&gt; a lot of the actual commits in coreboot seem to come from DMP themselves.
+
+&lt;pehjota&gt; I didn't, but the Wayback Machine usually doesn't archive .zip files or other things that aren't Web documents.
+&lt;fchmmr&gt; sometimes it does.
+
+&lt;pehjota&gt; Yeah, there's a developer at DMP who contributes this code to coreboot.
+&lt;pehjota&gt; And who is apparently active with KolibriOS too.
+&lt;fchmmr&gt; Andrew Wu
+&lt;pehjota&gt; Yup.
+
+&lt;fchmmr&gt; does trisquel 7 run on i586-only hardware?
+&lt;fchmmr&gt; i thought it was i686
+&lt;fchmmr&gt; I asked in #trisquel
+&lt;pehjota&gt; Not sure.
+&lt;pehjota&gt; Rereading the message in 8522f99 ("Add support for DMP Vortex86EX PCI mainboard.") and looking at &lt;<a href="http://www.86duino.com/index.php?p=68">http://www.86duino.com/index.php?p=68</a>&gt;, I think that might be the board.
+&lt;fchmmr&gt; maybe it runs on all vortex86ex soc's
+&lt;pehjota&gt; The code in src/cpu/ should, but src/mainboard/ is specific to individual boards.
+&lt;fchmmr&gt; I meant that maybe the same rom will work on multiple boards.
+<i>Or maybe all those *many* menuconfig options means that it could...</i>
+
+&lt;pehjota&gt; Although src/mainboard/dmp/vortex86ex/Kconfig appears to support configuration for different Vortex86EX-based boards, which is interesting.
+&lt;pehjota&gt; With defaults for 86Duino ZERO.
+&lt;fchmmr&gt; yes. lots of config options in menuconfig.
+&lt;fchmmr&gt; the default microcode options when selecting that board is "do not include microcode", which is promising.
+&lt;pehjota&gt; Yeah, as I said I don't think there's any microcode on Vortex86. I think the ISA is implemented directly in hardware.
+&lt;fchmmr&gt; Where does it say 86Duino in that Kconfigfile?
+&lt;pehjota&gt; It doesn't; I'm just guessing based on some of the default values.
+&lt;fchmmr&gt; select BOARD_ROM_KB_256
+&lt;fchmmr&gt; in Kconfig
+&lt;fchmmr&gt; probably couldn't fit GRUB in there, then. Would hvae to use SeaBIOS.
+&lt;pehjota&gt; And as I said, the initial commit message suggests it could have been originally for the 86Duino ZERO.
+&lt;fchmmr&gt; But if there's no vbios, or if it's a full (and free) vbios implementation, then seabios would be ok.
+&lt;pehjota&gt; Yeah, it uses SeaBIOS.
+&lt;pehjota&gt; Yup.
+&lt;fchmmr&gt; personally I'd prefer to use GRUB, but seabios is also fine.
+&lt;fchmmr&gt; GRUB wouldn't fit in such a small space
+&lt;fchmmr&gt; unless you build it with basically no modules
+&lt;pehjota&gt; It's basic VGA hardware with no option ROM AFAICT. No GPU or anything to initialize. The Linux driver is just a framebuffer one.
+&lt;fchmmr&gt; this all sounds very promising.
+&lt;fchmmr&gt; That file for keyboard can apparently be ignored if it's a freedom issue
+&lt;pehjota&gt; So just a framebuffer that gets sent out on VGA.
+&lt;fchmmr&gt; (can use usb keyboard)
+&lt;pehjota&gt; Yeah.
+&lt;fchmmr&gt; &lt;pehjota&gt; So just a framebuffer that gets sent out on VGA.
+&lt;fchmmr&gt; &lt;pehjota&gt; The Linux driver is just a framebuffer one.
+&lt;pehjota&gt; There's no GPU driver enabled in DMP's Linux config, only a couple video framebuffer drivers.
+&lt;fchmmr&gt; I'll ask on the mailing list (coreboot one) who has vortex86 hardware to test on
+&lt;pehjota&gt; The Linux config file is in the "source" .zip files here: &lt;<a href="http://www.dmp.com.tw/tech/os-xlinux/">http://www.dmp.com.tw/tech/os-xlinux/</a>&gt;.
+&lt;pehjota&gt; (Old version of Linux.)
+&lt;fchmmr&gt; Source for Vortex86DX/MX: xlinux-5.7-src-dx.zip (4.74 MB)
+&lt;fchmmr&gt; Source for Vortex86SX: xlinux-5.7-src-sx.zip (4.77 MB)
+&lt;fchmmr&gt; isn't it vortex86ex that we're looking at?
+&lt;pehjota&gt; fchmmr: Yeah, the SoC supported in mainline coreboot is the EX, for which there are apparently no "sources" on that page. I wouldn't use these systems for routers though; there are cheaper Atheros MIPS boards with dual Ethernet ports and built-in wireless chipsets, which should be able to run U-Boot.
+&lt;pehjota&gt; Good call on asking Andrew Wu. I was planning to just ask DMP in general about coreboot support for the EBOX systems.
+&lt;pehjota&gt; Personally I'm not all that interested in the EX-based systems like 86Duino. They don't have VGA, which would be necessary at least for the use cases I currently have in mind. I think the MX ones are more interesting from a practical perspective (they should be just as potentially free and xvilka ported coreboot to one of them). DX2 ones are also nice, but more expensive.
+
+DMP sells the 86Duino directly, and distributors sell the EBOX-3100 (as well as the other EBOX computers).
+</pre>
+
+ </div>
+
+ <div class="section" id="kbd_fw">
+
+ <h2>Firmware for keyboard</h2>
+
+ <p>
+ In coreboot, see src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc. It is believed to be
+ firmware for a PS/2 keyboard controller, though it's actual purpose is yet to be
+ confirmed. You could probably exclude this
+ (libreboot already does, in the DEBLOB script) and plug in a USB keyboard.
+ </p>
+
+ <p>
+ A copy of dmp_kbd_fw_part1.inc: <a href="dmp_kbd_fw_part1.inc.txt">dmp_kbd_fw_part1.inc.txt</a>.
+ </p>
+
+ <p>
+ The hex arrays were copied and formated in a PHP file.
+ This outputs the array in <a href="https://en.wikipedia.org/wiki/Intel_HEX#Format">intel hex format</a>.
+ See results at <a href="array.php">array.php</a> (for src, clone the libreboot site using the info from the
+ <a href="../">home page</a>).
+ The output was then saved as <b>dis.inc</b> and <b>dis.inc.hex</b>.
+ </p>
+
+ </p>
+ According to ruik in #coreboot IRC channel, this is either 8051 or 8052 assembly code. I installed
+ 2 disassemblers: dis51 (8051 disassembly) and d52 (8052 disassembly). <br/>
+ $ <b>dis51 &lt; dis.inc &gt; dmp_kbd_fw_part1.inc.disassembled.dis51.txt</b><br/>
+ And for 8052 disassembly:<br/>
+ $ <b>d52 -dh dis.inc.hex</b><br/>
+ $ <b>mv dis.inc.d52 dmp_kbd_fw_part1.inc.disassembled.d52.txt</b>
+ </p>
+
+ <p>
+ Disassembly results here:<br/>
+ 8051 (dis51) disassembly:
+ <a href="dmp_kbd_fw_part1.inc.disassembled.dis51.txt">dmp_kbd_fw_part1.inc.disassembled.dis51.txt</a>
+ - lots of data (non-instruction) sections, might be unknown instructions from 8052?<br/>
+ <s>8052 (d52) disassembly:
+ <a href="dmp_kbd_fw_part1.inc.disassembled.d52.txt">dmp_kbd_fw_part1.inc.disassembled.d52.txt</a></s> -
+ it's 8051 code. See below.
+ </p>
+
+ <p>
+ The original dmp_kbd_fw_part1.inc in coreboot also has a GPL licence attached, so it's possible
+ that DMP might give the source code for this. Otherwise, if all else fails, we have the
+ disassembled code to try to reverse engineer.
+ </p>
+
+ <p>
+ Todo's from mtjm:
+ </p>
+ <ul>
+ <li>check if there is any documented load address, check if jump addresses are reasonable</li>
+ <li>check if there are reasonable code sequences (so it's probably really 8051 code)</li>
+ <li>
+ make sure that it's really under the GPL, then work on generating the same binary from disassembly
+ + comments added when trying to understand it
+ </li>
+ <li>check if anything reads the code (there are different memory spaces for code and modifiable data)</li>
+ <li>maybe it has data or unaligned instructions</li>
+ <li>(check that you disassembled it properly, in other words)</li>
+ <li>
+ you want to get code that a machine runs, while you send some (maybe not all) code to it,
+ that code has instructions that can read the available code and probably does some i/o that
+ can be used to send that code
+ </li>
+ <li>not sure if it would have any bootrom; 8051 starts running code at address 0</li>
+ </ul>
+
+ <p>
+ Andrew Wu replied to my email. The keyboard controller firmware is non-free; no source code available.
+ The GPL license on it is bogus. So libreboot will simply not include PS/2 keyboard support for this machine,
+ unless it can be reverse engineered based on the above. (not needed. just use USB)
+ </p>
+
+ <p>
+ Andrew also said that the firmware is <b>8051</b> code, not 8052. The firmware
+ implements a <b>standard PC/AT 8042 keyboard controller (handling PS/2 KB_CLK, KB_DATA signals, etc)
+ There are datasheets for this!!</b>.
+ </p>
+
+ <p>
+ Andrew also said that he doesn't know about specific hardware as he is in sotfware,
+ so he forwarded me to sales, they/he will let me know what vortex86ex systems are actually available for coreboot.
+ </p>
+
+<pre>
+The 8051 PS/2 keyboard controller firmware not only controls PS/2 keyboard/mouse, but also handles some system functions, like system reset, A20 line enable, etc, via I/O port 60h/64h.
+
+(Because standard PC/AT 8042 keyboard controller does so).
+
+In short, if software reads or writes I/O port 60h/64h in vortex86ex, then you need the 8051 firmware, otherwise these I/O ports won’t work correctly.
+
+I think most OSes, like DOS or Windows, will access port 60h/64h on startup, so removing the firmware code may cause many compatibility problems.
+</pre>
+
+<pre>
+Instead I propose that I take some minimal time to re-disassemble it
+trough the usual free software tools like gdb, binutils(readelf, and
+objdump), or radare2.
+
+^ other approaches.
+</pre>
+
+ <p>
+ If GNU/Linux will work, then it's ok.
+ </p>
+
+ </div>
+
+<br/>
+<hr/>
+
+ <div class="section footer">
+
+<?php
+ include "../footer.php";
+?>
+
+ </div>
+
+ </div>
+
+</body>
+</html>
+