diff options
-rw-r--r-- | .gitignore | 7 | ||||
-rw-r--r-- | contrib/index.php | 84 | ||||
-rw-r--r-- | css/main.css | 99 | ||||
-rw-r--r-- | footer.php | 8 | ||||
-rw-r--r-- | github/index.php | 145 | ||||
-rw-r--r-- | index.php | 97 | ||||
-rw-r--r-- | logo/license.txt | 2 | ||||
-rw-r--r-- | logo/logo.svg | 66 | ||||
-rw-r--r-- | variables.php | 15 | ||||
-rw-r--r-- | vortex86ex/array.php | 594 | ||||
l--------- | vortex86ex/array.php.src.txt | 1 | ||||
-rw-r--r-- | vortex86ex/dmp_kbd_fw_part1.inc.disassembled.d52.txt | 2444 | ||||
-rw-r--r-- | vortex86ex/dmp_kbd_fw_part1.inc.disassembled.dis51.txt | 3079 | ||||
-rwxr-xr-x | vortex86ex/dmp_kbd_fw_part1.inc.txt | 531 | ||||
-rw-r--r-- | vortex86ex/index.php | 302 |
15 files changed, 7474 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d7e46ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*~ +/docs/ +/git/ +/gitdocs/ +/libreboot.git/ +/libreboot.org.git/ +/release/ diff --git a/contrib/index.php b/contrib/index.php new file mode 100644 index 0000000..9e48839 --- /dev/null +++ b/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 "P. J." 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/css/main.css b/css/main.css new file mode 100644 index 0000000..07dba0a --- /dev/null +++ b/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/footer.php b/footer.php new file mode 100644 index 0000000..ee27477 --- /dev/null +++ b/footer.php @@ -0,0 +1,8 @@ + + <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> + <p> + This page uses the <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a> license. + </p> diff --git a/github/index.php b/github/index.php new file mode 100644 index 0000000..b0bfec9 --- /dev/null +++ b/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/index.php b/index.php new file mode 100644 index 0000000..6c82088 --- /dev/null +++ b/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> + <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/logo/license.txt b/logo/license.txt new file mode 100644 index 0000000..2e219bb --- /dev/null +++ b/logo/license.txt @@ -0,0 +1,2 @@ +Copyright 2014 Marcus Moeller +license: CC-0 diff --git a/logo/logo.svg b/logo/logo.svg new file mode 100644 index 0000000..62147c1 --- /dev/null +++ b/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/variables.php b/variables.php new file mode 100644 index 0000000..399789b --- /dev/null +++ b/variables.php @@ -0,0 +1,15 @@ +<?php + $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/vortex86ex/array.php b/vortex86ex/array.php new file mode 100644 index 0000000..90bf210 --- /dev/null +++ b/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/vortex86ex/array.php.src.txt b/vortex86ex/array.php.src.txt new file mode 120000 index 0000000..a512ad4 --- /dev/null +++ b/vortex86ex/array.php.src.txt @@ -0,0 +1 @@ +array.php
\ No newline at end of file diff --git a/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.d52.txt b/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.d52.txt new file mode 100644 index 0000000..715a84d --- /dev/null +++ b/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/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.dis51.txt b/vortex86ex/dmp_kbd_fw_part1.inc.disassembled.dis51.txt new file mode 100644 index 0000000..55cfc7a --- /dev/null +++ b/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/vortex86ex/dmp_kbd_fw_part1.inc.txt b/vortex86ex/dmp_kbd_fw_part1.inc.txt new file mode 100755 index 0000000..486bf1b --- /dev/null +++ b/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/vortex86ex/index.php b/vortex86ex/index.php new file mode 100644 index 0000000..a228865 --- /dev/null +++ b/vortex86ex/index.php @@ -0,0 +1,302 @@ +<!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> + +<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> +<pehjota> 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 +<pehjota> 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, +<pehjota> and embedded systems, and the prices ($95–$269 from the US distributor) aren't bad. +<pehjota> 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): +<pehjota> <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> +<fchmmr> pehjota, I added info about those vortex86 machines to libreboot.org/release.html and to git. +<fchmmr> By the way, xvilka (the person behind those commits on that github page) is in #coreboot at the moment. +<pehjota> 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. +<pehjota> 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. + +<mtjm> what is in dmp_kbd_fw_part1.inc in coreboot sources? +<fchmmr> mtjm, coreboot/src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc is part of the "DEBLOB" file in libreboot. +<fchmmr> I'll check it's contents in a coreboot clone. +<fchmmr> it's referenced (included) by src/cpu/dmp/vortex86ex/biosdata.{inc,lds} +<fchmmr> src/cpu/dmp/vortex86ex/biosdata.inc: #include "src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc" +<fchmmr> src/cpu/dmp/vortex86ex/Makefile.inc:chipset_bootblock_inc += $(src)/cpu/dmp/vortex86ex/biosdata.inc +<mtjm> are there other blobs for that platform? +<mtjm> 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 +<mtjm> (or is it e.g. a keymap?) +<fchmmr> As far as I can tell, src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc is the only blob +<fchmmr> 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> +<fchmmr> xvilka, what is src/cpu/dmp/vortex86ex/dmp_kbd_fw_part1.inc for? What kind of data is it? +<fchmmr> Is there a document that describes this data? +<idwer> fchmmr: you haven't looked at biosdata.inc/.lds then +<ruik> fchmmr: i think it is firmware for keyboard controller havent check +<fchmmr> idwer, i looked at biosdata.inc, not lds. checking now. +<fchmmr> ruik, keyboard as in ps/2 keyboard? +<ruik> fchmmr: yes +<ruik> fchmmr: could be 8051 +<ruik> 0x2 can be LJMP +</pre> + + <h2>back to #libreboot on November 16th, 2014</h2> + +<pre> +<fchmmr> mtjm, just a hunch from #coreboot discussion: I think it might just be for PS/2 keyboards, not sure. +<fchmmr> If that is the case though, you could basically just ignore it (not use it) and use a usb keyboard, I imagine. + +<pehjota> fchmmr: The EBOX-3100 (only Vortex86EX computer by DMP: <<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>>. +<fchmmr> coreboot menuconfig just says DMP -> Vortex86EX +<pehjota> Yeah, it doesn't say which computer that is, but I'm guessing it's the EBOX-3100. +<fchmmr> maybe there are more that also work. +<fchmmr> I found a few "86duino" boards for isntance. +<fchmmr> <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> +<fchmmr> <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> +<pehjota> 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> + +<pehjota> Yeah, that thread; the links are dead. +<fchmmr> tried the wayback machine? +<fchmmr> <a href="https://archive.org/web/">https://archive.org/web/</a> +<pehjota> Oh right, that's a Vortex86EX. Maybe that's the one supported by coreboot. DMP sells that one too. +<fchmmr> a lot of the actual commits in coreboot seem to come from DMP themselves. + +<pehjota> I didn't, but the Wayback Machine usually doesn't archive .zip files or other things that aren't Web documents. +<fchmmr> sometimes it does. + +<pehjota> Yeah, there's a developer at DMP who contributes this code to coreboot. +<pehjota> And who is apparently active with KolibriOS too. +<fchmmr> Andrew Wu +<pehjota> Yup. + +<fchmmr> does trisquel 7 run on i586-only hardware? +<fchmmr> i thought it was i686 +<fchmmr> I asked in #trisquel +<pehjota> Not sure. +<pehjota> Rereading the message in 8522f99 ("Add support for DMP Vortex86EX PCI mainboard.") and looking at <<a href="http://www.86duino.com/index.php?p=68">http://www.86duino.com/index.php?p=68</a>>, I think that might be the board. +<fchmmr> maybe it runs on all vortex86ex soc's +<pehjota> The code in src/cpu/ should, but src/mainboard/ is specific to individual boards. +<fchmmr> 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> + +<pehjota> Although src/mainboard/dmp/vortex86ex/Kconfig appears to support configuration for different Vortex86EX-based boards, which is interesting. +<pehjota> With defaults for 86Duino ZERO. +<fchmmr> yes. lots of config options in menuconfig. +<fchmmr> the default microcode options when selecting that board is "do not include microcode", which is promising. +<pehjota> Yeah, as I said I don't think there's any microcode on Vortex86. I think the ISA is implemented directly in hardware. +<fchmmr> Where does it say 86Duino in that Kconfigfile? +<pehjota> It doesn't; I'm just guessing based on some of the default values. +<fchmmr> select BOARD_ROM_KB_256 +<fchmmr> in Kconfig +<fchmmr> probably couldn't fit GRUB in there, then. Would hvae to use SeaBIOS. +<pehjota> And as I said, the initial commit message suggests it could have been originally for the 86Duino ZERO. +<fchmmr> But if there's no vbios, or if it's a full (and free) vbios implementation, then seabios would be ok. +<pehjota> Yeah, it uses SeaBIOS. +<pehjota> Yup. +<fchmmr> personally I'd prefer to use GRUB, but seabios is also fine. +<fchmmr> GRUB wouldn't fit in such a small space +<fchmmr> unless you build it with basically no modules +<pehjota> It's basic VGA hardware with no option ROM AFAICT. No GPU or anything to initialize. The Linux driver is just a framebuffer one. +<fchmmr> this all sounds very promising. +<fchmmr> That file for keyboard can apparently be ignored if it's a freedom issue +<pehjota> So just a framebuffer that gets sent out on VGA. +<fchmmr> (can use usb keyboard) +<pehjota> Yeah. +<fchmmr> <pehjota> So just a framebuffer that gets sent out on VGA. +<fchmmr> <pehjota> The Linux driver is just a framebuffer one. +<pehjota> There's no GPU driver enabled in DMP's Linux config, only a couple video framebuffer drivers. +<fchmmr> I'll ask on the mailing list (coreboot one) who has vortex86 hardware to test on +<pehjota> The Linux config file is in the "source" .zip files here: <<a href="http://www.dmp.com.tw/tech/os-xlinux/">http://www.dmp.com.tw/tech/os-xlinux/</a>>. +<pehjota> (Old version of Linux.) +<fchmmr> Source for Vortex86DX/MX: xlinux-5.7-src-dx.zip (4.74 MB) +<fchmmr> Source for Vortex86SX: xlinux-5.7-src-sx.zip (4.77 MB) +<fchmmr> isn't it vortex86ex that we're looking at? +<pehjota> 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. +<pehjota> Good call on asking Andrew Wu. I was planning to just ask DMP in general about coreboot support for the EBOX systems. +<pehjota> 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, src: <a href="array.php.src.txt">array.php.src.txt</a>. + 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>. + 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 < dis.inc > 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> + |