Merge branch 'next-release'

This commit is contained in:
Jeff Parsons 2016-10-21 22:43:18 -07:00
commit baac8d4ea8
221 changed files with 6475 additions and 2731 deletions

View file

@ -525,7 +525,7 @@ module.exports = function(grunt) {
options: {
process: function(content, srcPath) {
var s = content.replace(/(<xsl:variable name="APPCLASS">)[^<]*(<\/xsl:variable>)/g, "$1pdp11$2");
s = s.replace(/(<xsl:variable name="APPNAME">)[^<]*(<\/xsl:variable>)/g, "$1PDP11$2");
s = s.replace(/(<xsl:variable name="APPNAME">)[^<]*(<\/xsl:variable>)/g, "$1PDPjs$2");
s = s.replace(/(<xsl:variable name="APPVERSION">)[^<]*(<\/xsl:variable>)/g, "$1" + pkg.version + "$2");
s = s.replace(/"[^"]*\/?(common.css|common.xsl|components.css|components.xsl|document.css|document.xsl)"/g, '"/versions/pdpjs/' + pkg.version + '/$1"');
s = s.replace(/[ \t]*\/\*[^*][\s\S]*?\*\//g, "").replace(/[ \t]*<!--[^@]*?-->[ \t]*\n?/g, "");

View file

@ -8,7 +8,7 @@ includes:
* [PCx86](/docs/pcx86/), an x86-based IBM PC and PC-compatible emulator
* [PC8080](/modules/pc8080/), an 8080 machine emulator (e.g., [Space Invaders](/devices/pc8080/machine/invaders/), [VT100 Terminal](/devices/pc8080/machine/vt100/))
* [C1Pjs](/docs/c1pjs/), an emulation of the 6502-based Ohio Scientific [Challenger 1P](/devices/c1p/)
* [PDPjs](/modules/pdp11/), a PDP-11 machine emulator currently in development (e.g., [PDP-11/70](/devices/pdp11/machine/1170/))
* [PDPjs](/modules/pdp11/), a PDP-11 machine emulator currently in development (e.g., [PDP-11/20 and PDP-11/70](/devices/pdp11/machine/))
All PCjs computer simulations are written entirely in [JavaScript](/modules/). No Flash, Java or other plugins are
required. Supported browsers include modern versions of Chrome, Safari, Firefox, Internet Explorer (v9.0 and up), Edge,

View file

@ -1,15 +1,17 @@
---
layout: page
title: Application Archives
title: Software Archives
permalink: /apps/
---
Application Archives
---
Browse these PCjs Application Archives:
Software Archives
-----------------
Browse these PCjs Software Archives:
- [IBM PC](pcx86/)
- [Challenger 1P](c1p/)
- [PDP-11](pdp11/)
---

View file

@ -12,7 +12,7 @@ Challenger 1P Applications
- [BASIC](BASIC/)
- [6502 Machine-Language](6502/)
To make it easy for our machines to load our applications, we provide the following **Serial** configuration files:
To make it easy for our C1Pjs machines to load these applications, we provide the following **Serial** configuration files:
- [all.xml](all.xml)
- [samples.xml](samples.xml)

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<serial id="serialPort" pos="left" padleft="8px">
<serial id="serialPort" pos="left" padLeft="8px">
<control type="list" binding="listSerial">
<item ref="/apps/c1p/6502/jeffpar/assembler/ASSEMBLER-4K.json">6502 4K Assembler (JP)</item>
<item ref="/apps/c1p/6502/jeffpar/assembler/ASSEMBLER-8K.json">6502 8K Assembler (JP)</item>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<serial id="serialPort" pos="left" padleft="8px">
<serial id="serialPort" pos="left" padLeft="8px">
<control type="list" binding="listSerial">
<item ref="/apps/c1p/BASIC/OSI/MATH.BAS">BASIC MATH</item>
<item ref="/apps/c1p/BASIC/OSI/CHECKING.BAS">CHECKING</item>

13
apps/pdp11/README.md Normal file
View file

@ -0,0 +1,13 @@
---
layout: page
title: PDP-11 Software
permalink: /apps/pdp11/
---
PDP-11 Software
---------------
We have archived the following selected PDP-11 software:
- [Boot Code](boot/)
- [DEC PDP-11 Tapes](tapes/)

24
apps/pdp11/boot/README.md Normal file
View file

@ -0,0 +1,24 @@
---
layout: page
title: PDP-11 Boot Code
permalink: /apps/pdp11/boot/
---
PDP-11 Boot Code
----------------
The project contains the following PDP-11 boot code images:
* [PDP-11 Boot Test](test/)
* [DEC PDP-11 Bootstrap Loader](bootstrap/)
Boot code can be pre-loaded into any machine by including a `<ram>` component in the machine XML configuration file
with the *file* attribute set to the filename of the image, along with optional *load* and *exec* addresses; eg:
```xml
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp11/boot/bootstrap/BOOTSTRAP-16KB.json" load="0x3FE4" exec="0x3FE4"/>
```
If no *load* address is specified, the `<ram>` component relies on the "load" property of the JSON-encoded RAM image;
otherwise, the starting RAM address is used. If no *exec* address is specified, the CPU will begin execution at its usual
reset address.

View file

@ -1,4 +1,4 @@
{"words":[
{"load":0x3FE4,"exec":0x3FE4,"words":[
0x1DC1 /*016701*/,0x0016 /*000026*/,0x15C2 /*012702*/,0x00EA /*000352*/,0x0A89 /*005211*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x9C72 /*116162*/,
0x0002 /*000002*/,0x3F00 /*037400*/,0x0AB7 /*005267*/,0xFFEE /*177756*/,0x01F5 /*000765*/,0xFF68 /*177550*/]
}
}

View file

@ -0,0 +1,83 @@
---
layout: page
title: DEC PDP-11 Bootstrap Loader
permalink: /apps/pdp11/boot/bootstrap/
---
DEC PDP-11 Bootstrap Loader
---------------------------
The **Bootstrap Loader** is a small program that loads the **[Absolute Loader](/apps/pdp11/tapes/absloader/)**,
which is then used to load other PDP-11 tapes, such as **[BASIC (Single User)](/apps/pdp11/tabes/basic/)**.
Here's what the **Bootstrap Loader** looks like:
Location Instruction
037744 016701
037746 000026
037750 012702
037752 000352
037754 005211
037756 105711
037760 100376
037762 116162
037764 000002
037766 037400
037770 005267
037772 177756
037774 000765
037776 177550
Using any [PDPjs](/modules/pdpjs/) machine with the built-in Debugger, such as this
[PDP-11/20 Test Machine with Debugger](/devices/pdp11/machine/1120/test/debugger/), the **Bootstrap Loader**
is easily entered with a single Debugger EDIT ("e") command:
e 037744 016701 000026 012702 000352 005211 105711 100376 116162 000002 037400 005267 177756 000765 177550
You can immediately disassemble the code using the Debugger's UNASSEMBLE ("u") command `u 037744 040000`:
037744: 016701 000026 MOV 26(PC),R1 ; @037776
037750: 012702 000352 MOV #352,R2
037754: 005211 INC @R1
037756: 105711 TSTB @R1
037760: 100376 BPL 037756
037762: 116162 000002 037400 MOVB 2(R1),37400(R2)
037770: 005267 177756 INC 177756(PC) ; @037752
037774: 000765 BR 037750
037776: 177550 .WORD 177550
To run the above code, set the PC to 037744 and start the machine:
r pc=037744
g
Pre-loading DEC's Bootstrap Loader
----------------------------------
I pasted the disassembled code (above) into a listing file, [BOOTSTRAP-16KB.lst](BOOTSTRAP-16KB.lst),
and then ran [FileDump](/modules/filedump) to produce a [BOOTSTRAP-16KB.json](BOOTSTRAP-16KB.json) that can
be automatically pre-loaded into any machine:
filedump --file=BOOTSTRAP-16KB.lst --format=octal --output=BOOTSTRAP-16KB.json
For example, this [PDP-11/20 16Kb Machine](/devices/pdp11/machine/1120/bootstrap/debugger/) pre-loads
the **Bootstrap Loader** using the `<ram>` component's optional *file* attribute:
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp11/boot/bootstrap/BOOTSTRAP-16KB.json"/>
I also edited [BOOTSTRAP-16KB.json](BOOTSTRAP-16KB.json) to include the following properties:
"load": 0x3FE4,
"exec": 0x3FE4,
so that the `<ram>` component knows exactly where to load and execute the file. However, the `<ram>` component can also
specify those value(s) itself, if needed:
<ram id="ram" addr="0x0000" size="0x4000" file="/apps/pdp11/boot/bootstrap/BOOTSTRAP-16KB.json" load="0x3FE4" exec="0x3FE4"/>
Finally, if you prefer octal *and* you're sure everyone will be using an ES6-capable browser, you can do this:
<ram id="ram" addr="0o00000" size="0o40000" file="/apps/pdp11/boot/bootstrap/BOOTSTRAP-16KB.json" load="0o37744" exec="0o37744"/>
All PCjs configuration files use hex and/or decimal exclusively, since those number formats have always been supported,
but as time goes by, the new octal and binary formats will be almost as universal.

View file

@ -0,0 +1,94 @@
{"load":0xC000 /*140000*/,"exec":0xC000 /*140000*/,
"words":[
0x0005 /*000005*/,0x0A1F /*005037*/,0xFFFE /*177776*/,0x15C6 /*012706*/,0xC000 /*140000*/,0x0A1F /*005037*/,0xFF74 /*177564*/,0x15C0 /*012700*/,
0xC251 /*141121*/,0x09F7 /*004767*/,0x0052 /*000122*/,0x15DF /*012737*/,0xC054 /*140124*/,0x0040 /*000100*/,0x15DF /*012737*/,0x00E0 /*000340*/,
0x0042 /*000102*/,0x55DF /*052737*/,0x0040 /*000100*/,0xFF66 /*177546*/,0x15C0 /*012700*/,0xC2AC /*141254*/,0x09F7 /*004767*/,0x0038 /*000070*/,
0xE5C6 /*162706*/,0x00AE /*000256*/,0x1180 /*010600*/,0x09F7 /*004767*/,0x006A /*000152*/,0x0A00 /*005000*/,0x0001 /*000001*/,0x0A80 /*005200*/,
0x0BF7 /*005767*/,0x000C /*000014*/,0x03FB /*001773*/,0x15E6 /*012746*/,0x5800 /*054000*/,0x1DE6 /*016746*/,0x0002 /*000002*/,0x0002 /*000002*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0AB7 /*005267*/,0xFFFA /*177772*/,0x0002 /*000002*/,0x8BDF /*105737*/,0xFF74 /*177564*/,0x80FD /*100375*/,
0x901F /*110037*/,0xFF76 /*177566*/,0x0087 /*000207*/,0x0000 /*000000*/,0xB5DF /*132737*/,0x0040 /*000100*/,0xFF74 /*177564*/,0x02FC /*001374*/,
0x1037 /*010067*/,0xFFF2 /*177762*/,0x15DF /*012737*/,0xC088 /*140210*/,0x0034 /*000064*/,0x15DF /*012737*/,0x0080 /*000200*/,0x0036 /*000066*/,
0xD5DF /*152737*/,0x0040 /*000100*/,0xFF74 /*177564*/,0x0087 /*000207*/,0x8BFF /*105777*/,0xFFDA /*177732*/,0x0306 /*001406*/,0x9FDF /*117737*/,
0xFFD4 /*177724*/,0xFF76 /*177566*/,0x0AB7 /*005267*/,0xFFCE /*177716*/,0x0002 /*000002*/,0x8A1F /*105037*/,0xFF74 /*177564*/,0x0002 /*000002*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x1037 /*010067*/,0xFFF8 /*177770*/,0x0A37 /*005067*/,0xFFF6 /*177766*/,0x15DF /*012737*/,0xC0C0 /*140300*/,
0x0030 /*000060*/,0x15DF /*012737*/,0x0080 /*000200*/,0x0032 /*000062*/,0xD5DF /*152737*/,0x0040 /*000100*/,0xFF70 /*177560*/,0x0087 /*000207*/,
0x1026 /*010046*/,0x97C0 /*113700*/,0xFF72 /*177562*/,0xA017 /*120027*/,0x000D /*000015*/,0x032D /*001455*/,0xA017 /*120027*/,0x007F /*000177*/,
0x0303 /*001403*/,0xA017 /*120027*/,0x0008 /*000010*/,0x020A /*001012*/,0x0BF7 /*005767*/,0xFFC6 /*177706*/,0x0306 /*001406*/,0x0AF7 /*005367*/,
0xFFC0 /*177700*/,0x15C0 /*012700*/,0xC21F /*141037*/,0x09F7 /*004767*/,0xFF7E /*177576*/,0x012B /*000453*/,0xA017 /*120027*/,0x0020 /*000040*/,
0x0528 /*002450*/,0xA017 /*120027*/,0x007F /*000177*/,0x0425 /*002045*/,0x09F7 /*004767*/,0xFF5E /*177536*/,0xA017 /*120027*/,0x007A /*000172*/,
0x0605 /*003005*/,0xA017 /*120027*/,0x0061 /*000141*/,0x0502 /*002402*/,0xC5C0 /*142700*/,0x0020 /*000040*/,0x2DD7 /*026727*/,0xFF92 /*177622*/,
0x00AC /*000254*/,0x0417 /*002027*/,0x9026 /*110046*/,0x1DC0 /*016700*/,0xFF86 /*177606*/,0x6DC0 /*066700*/,0xFF84 /*177604*/,0x9588 /*112610*/,
0x0AB7 /*005267*/,0xFF7E /*177576*/,0x010E /*000416*/,0x1DC0 /*016700*/,0xFF76 /*177566*/,0x6DC0 /*066700*/,0xFF74 /*177564*/,0x8A08 /*105010*/,
0x15DF /*012737*/,0xC146 /*140506*/,0x00A0 /*000240*/,0x15DF /*012737*/,0x0040 /*000100*/,0x00A2 /*000242*/,0x15DF /*012737*/,0x0400 /*002000*/,
0xFFFA /*177772*/,0x1580 /*012600*/,0x0002 /*000002*/,0x0A1F /*005037*/,0xFFFA /*177772*/,0x1026 /*010046*/,0x1066 /*010146*/,0x10A6 /*010246*/,
0x10E6 /*010346*/,0x1126 /*010446*/,0x15C0 /*012700*/,0xC21C /*141034*/,0x09F7 /*004767*/,0xFF0C /*177414*/,0xB5DF /*132737*/,0x0040 /*000100*/,
0xFF74 /*177564*/,0x02FC /*001374*/,0x0A04 /*005004*/,0x15C3 /*012703*/,0xC223 /*141043*/,0x94C0 /*112300*/,0x0319 /*001431*/,0x1DC2 /*016702*/,
0xFF2E /*177456*/,0x9481 /*112201*/,0x0319 /*001431*/,0xA057 /*120127*/,0x0020 /*000040*/,0x03FB /*001773*/,0xA001 /*120001*/,0x0208 /*001010*/,
0x94C0 /*112300*/,0x030A /*001412*/,0x9481 /*112201*/,0x0308 /*001410*/,0xA057 /*120127*/,0x0020 /*000040*/,0x02F7 /*001367*/,0x0104 /*000404*/,
0x94C0 /*112300*/,0x02FE /*001376*/,0x0A84 /*005204*/,0x01E9 /*000751*/,0x0CC4 /*006304*/,0x09FC /*004774*/,0xC1C0 /*140700*/,0x0104 /*000404*/,
0x15C0 /*012700*/,0xC23F /*141077*/,0x09F7 /*004767*/,0xFEC0 /*177300*/,0x0A37 /*005067*/,0xFEF6 /*177366*/,0x15C0 /*012700*/,0xC2AC /*141254*/,
0x09F7 /*004767*/,0xFEB4 /*177264*/,0x1584 /*012604*/,0x1583 /*012603*/,0x1582 /*012602*/,0x1581 /*012601*/,0x1580 /*012600*/,0x0002 /*000002*/,
0xC46C /*142154*/,0xC2E8 /*141350*/,0xC2F4 /*141364*/,0xC338 /*141470*/,0xC2DE /*141336*/,0x4F43 /*047503*/,0x4D4D /*046515*/,0x4E41 /*047101*/,
0x5344 /*051504*/,0x4120 /*040440*/,0x4552 /*042522*/,0x4220 /*041040*/,0x4F4F /*047517*/,0x2C54 /*026124*/,0x4820 /*044040*/,0x4C41 /*046101*/,
0x2C54 /*026124*/,0x4C20 /*046040*/,0x4749 /*043511*/,0x5448 /*052110*/,0x2C53 /*026123*/,0x5420 /*052040*/,0x5345 /*051505*/,0x2054 /*020124*/,
0x4E41 /*047101*/,0x2044 /*020104*/,0x4548 /*042510*/,0x504C /*050114*/,0x0A0D /*005015*/,0x4F42 /*047502*/,0x544F /*052117*/,0x4420 /*042040*/,
0x5645 /*053105*/,0x4349 /*041511*/,0x5345 /*051505*/,0x4120 /*040440*/,0x4552 /*042522*/,0x5220 /*051040*/,0x3F4B /*037513*/,0x5220 /*051040*/,
0x3F4C /*037514*/,0x4F20 /*047440*/,0x2052 /*020122*/,0x5052 /*050122*/,0x0D3F /*006477*/,0x000A /*000012*/,0x0A0D /*005015*/,0x0800 /*004000*/,
0x0820 /*004040*/,0x4200 /*041000*/,0x4F4F /*047517*/,0x0054 /*000124*/,0x4148 /*040510*/,0x544C /*052114*/,0x5400 /*052000*/,0x5345 /*051505*/,
0x0054 /*000124*/,0x494C /*044514*/,0x4847 /*044107*/,0x5354 /*051524*/,0x4800 /*044000*/,0x4C45 /*046105*/,0x0050 /*000120*/,0x5500 /*052400*/,
0x4B4E /*045516*/,0x4F4E /*047516*/,0x4E57 /*047127*/,0x4320 /*041440*/,0x4D4F /*046517*/,0x414D /*040515*/,0x444E /*042116*/,0x0D0A /*006412*/,
0x5000 /*050000*/,0x5044 /*050104*/,0x312D /*030455*/,0x2031 /*020061*/,0x4F42 /*047502*/,0x544F /*052117*/,0x5420 /*052040*/,0x5345 /*051505*/,
0x2054 /*020124*/,0x4F46 /*047506*/,0x2052 /*020122*/,0x4450 /*042120*/,0x6A50 /*065120*/,0x0A73 /*005163*/,0x410D /*040415*/,0x4144 /*040504*/,
0x5450 /*052120*/,0x4445 /*042105*/,0x4620 /*043040*/,0x4F52 /*047522*/,0x204D /*020115*/,0x4F43 /*047503*/,0x4544 /*042504*/,0x4220 /*041040*/,
0x2059 /*020131*/,0x4150 /*040520*/,0x4C55 /*046125*/,0x4E20 /*047040*/,0x4E41 /*047101*/,0x454B /*042513*/,0x5652 /*053122*/,0x5349 /*051511*/,
0x3C20 /*036040*/,0x4150 /*040520*/,0x4C55 /*046125*/,0x414E /*040516*/,0x4B4E /*045516*/,0x4840 /*044100*/,0x544F /*052117*/,0x414D /*040515*/,
0x4C49 /*046111*/,0x432E /*041456*/,0x4D4F /*046517*/,0x0A3E /*005076*/,0x0A0D /*005015*/,0x000D /*000015*/,0x4F42 /*047502*/,0x544F /*052117*/,
0x203E /*020076*/,0x5500 /*052400*/,0x4B4E /*045516*/,0x4F4E /*047516*/,0x4E57 /*047127*/,0x4220 /*041040*/,0x4F4F /*047517*/,0x2054 /*020124*/,
0x4544 /*042504*/,0x4956 /*044526*/,0x4543 /*042503*/,0x0D0A /*006412*/,0x2000 /*020000*/,0x2020 /*020040*/,0x2020 /*020040*/,0x4320 /*041440*/,
0x4F4C /*047514*/,0x4B43 /*045503*/,0x5420 /*052040*/,0x4349 /*041511*/,0x534B /*051513*/,0x0D0A /*006412*/,0x0000 /*000000*/,0x15C0 /*012700*/,
0xC1CA /*140712*/,0x09F7 /*004767*/,0xFD82 /*176602*/,0x0087 /*000207*/,0x0000 /*000000*/,0x15C0 /*012700*/,0xC21C /*141034*/,0x09F7 /*004767*/,
0xFD76 /*176566*/,0x0087 /*000207*/,0x0A37 /*005067*/,0xFD5A /*176532*/,0x15C5 /*012705*/,0x1A00 /*015000*/,0x115F /*010537*/,0xFF78 /*177570*/,
0x1144 /*010504*/,0x0C84 /*006204*/,0x0A00 /*005000*/,0x1141 /*010501*/,0x7204 /*071004*/,0x1002 /*010002*/,0x7084 /*070204*/,0x60C1 /*060301*/,
0x2045 /*020105*/,0x0301 /*001401*/,0x0000 /*000000*/,0x7F0A /*077412*/,0x7F4F /*077517*/,0x15C0 /*012700*/,0xC2CE /*141316*/,0x1DC3 /*016703*/,
0xFD30 /*176460*/,0x0A02 /*005002*/,0x7297 /*071227*/,0x0008 /*000010*/,0x65C3 /*062703*/,0x0030 /*000060*/,0x90E0 /*110340*/,0x1083 /*010203*/,
0x02F8 /*001370*/,0x09F7 /*004767*/,0xFD32 /*176462*/,0x0087 /*000207*/,0x15C3 /*012703*/,0x7F06 /*077406*/,0x0A02 /*005002*/,0x0A01 /*005001*/,
0x15C0 /*012700*/,0x0008 /*000010*/,0x10F1 /*010361*/,0xF4C0 /*172300*/,0x10B1 /*010261*/,0xF4E0 /*172340*/,0x10F1 /*010361*/,0xF4D0 /*172320*/,
0x10B1 /*010261*/,0xF4F0 /*172360*/,0x10F1 /*010361*/,0xF480 /*172200*/,0x10B1 /*010261*/,0xF4A0 /*172240*/,0x10F1 /*010361*/,0xF490 /*172220*/,
0x10B1 /*010261*/,0xF4B0 /*172260*/,0x10F1 /*010361*/,0xFF80 /*177600*/,0x10B1 /*010261*/,0xFFA0 /*177640*/,0x10F1 /*010361*/,0xFF90 /*177620*/,
0x10F1 /*010361*/,0xFFB0 /*177660*/,0x65C2 /*062702*/,0x0080 /*000200*/,0x65C1 /*062701*/,0x0002 /*000002*/,0x7E1D /*077035*/,0x55DF /*052737*/,
0xFC00 /*176000*/,0xF4FE /*172376*/,0x55DF /*052737*/,0xFC00 /*176000*/,0xF4BE /*172276*/,0x55DF /*052737*/,0xFC00 /*176000*/,0xFFBE /*177676*/,
0x15DF /*012737*/,0x003F /*000077*/,0xF54E /*172516*/,0x15DF /*012737*/,0x0001 /*000001*/,0xFF7A /*177572*/,0x15DF /*012737*/,0x03C0 /*001700*/,
0xF4A4 /*172244*/,0x15DF /*012737*/,0x03C0 /*001700*/,0xF4B4 /*172264*/,0x15DF /*012737*/,0x1000 /*010000*/,0xFFFE /*177776*/,0x15C3 /*012703*/,
0x4080 /*040200*/,0x15C2 /*012702*/,0xC3C8 /*141710*/,0x14A6 /*012246*/,0x0D93 /*006623*/,0x2097 /*020227*/,0xC46C /*142154*/,0x87FB /*103773*/,
0x15F7 /*012767*/,0x4080 /*040200*/,0xFC8A /*176212*/,0x0087 /*000207*/,0x15C0 /*012700*/,0x001F /*000037*/,0x15C1 /*012701*/,0xF800 /*174000*/,
0x35DF /*032737*/,0x0001 /*000001*/,0xFF78 /*177570*/,0x030C /*001414*/,0x15C0 /*012700*/,0x0F0F /*007417*/,0x1001 /*010001*/,0x0A41 /*005101*/,
0x35DF /*032737*/,0x0002 /*000002*/,0xFF78 /*177570*/,0x0304 /*001404*/,0x15C0 /*012700*/,0x3C73 /*036163*/,0x15C1 /*012701*/,0x3E00 /*037000*/,
0x1042 /*010102*/,0xE5C2 /*162702*/,0x0002 /*000002*/,0x45C2 /*042702*/,0x0001 /*000001*/,0x1083 /*010203*/,0x45C3 /*042703*/,0xFFC1 /*177701*/,
0x15F3 /*012763*/,0x0001 /*000001*/,0x4000 /*040000*/,0x65C3 /*062703*/,0x0002 /*000002*/,0x15F3 /*012763*/,0x004B /*000113*/,0x4000 /*040000*/,
0x1084 /*010204*/,0x7517 /*072427*/,0xFFFA /*177772*/,0x45C4 /*042704*/,0xFF80 /*177600*/,0x15C5 /*012705*/,0x03C0 /*001700*/,0xE105 /*160405*/,
0x1084 /*010204*/,0x7517 /*072427*/,0xFFF4 /*177764*/,0x45C4 /*042704*/,0xFFF1 /*177761*/,0x1174 /*010564*/,0xF4A0 /*172240*/,0x1043 /*010103*/,
0x74D7 /*072327*/,0xFFF4 /*177764*/,0x45C3 /*042703*/,0xFFF1 /*177761*/,0x20C4 /*020304*/,0x030A /*001412*/,0x1044 /*010104*/,0x7517 /*072427*/,
0xFFFA /*177772*/,0x45C4 /*042704*/,0xFF80 /*177600*/,0x15C5 /*012705*/,0x03C0 /*001700*/,0xE105 /*160405*/,0x1173 /*010563*/,0xF4A0 /*172240*/,
0x15C4 /*012704*/,0x0003 /*000003*/,0x67C4 /*063704*/,0xFF78 /*177570*/,0x15C3 /*012703*/,0x0002 /*000002*/,0x61C3 /*060703*/,0x004A /*000112*/,
0x7F02 /*077402*/,0x1002 /*010002*/,0x0C02 /*006002*/,0x0C41 /*006101*/,0x0C00 /*006000*/,0x01C2 /*000702*/,0x0A03 /*005003*/,0x9481 /*112201*/,
0x0365 /*001545*/,0xA057 /*120127*/,0x0020 /*000040*/,0x03FB /*001773*/,0xA057 /*120127*/,0x0052 /*000122*/,0x0305 /*001405*/,0x15C0 /*012700*/,
0xC2B3 /*141263*/,0x09F7 /*004767*/,0xFBE2 /*175742*/,0x0087 /*000207*/,0x9481 /*112201*/,0x9480 /*112200*/,0x030E /*001416*/,0xA017 /*120027*/,
0x0020 /*000040*/,0x030B /*001413*/,0xA017 /*120027*/,0x0037 /*000067*/,0x0619 /*003031*/,0xE5C0 /*162700*/,0x0030 /*000060*/,0x0516 /*002426*/,
0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x5003 /*050003*/,0x01F0 /*000760*/,0x0A02 /*005002*/,0x15D2 /*012722*/,0x005F /*000137*/,
0x15D2 /*012722*/,0xC000 /*140000*/,0x15D2 /*012722*/,0xC000 /*140000*/,0x0A12 /*005022*/,0xA057 /*120127*/,0x004B /*000113*/,0x033E /*001476*/,
0xA057 /*120127*/,0x004C /*000114*/,0x0308 /*001410*/,0xA057 /*120127*/,0x0050 /*000120*/,0x034F /*001517*/,0x15C0 /*012700*/,0xC23F /*141077*/,
0x09F7 /*004767*/,0xFB94 /*175624*/,0x0087 /*000207*/,0x0005 /*000005*/,0x00C3 /*000303*/,0x15C1 /*012701*/,0xF900 /*174400*/,0x15F1 /*012761*/,
0x000B /*000013*/,0x0004 /*000004*/,0x55C3 /*052703*/,0x0004 /*000004*/,0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x8A03 /*105003*/,
0x55C3 /*052703*/,0x0008 /*000010*/,0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x1C42 /*016102*/,0x0006 /*000006*/,0x45C2 /*042702*/,
0x003F /*000077*/,0x0A82 /*005202*/,0x10B1 /*010261*/,0x0004 /*000004*/,0x8A03 /*105003*/,0x55C3 /*052703*/,0x0006 /*000006*/,0x10C9 /*010311*/,
0x8BC9 /*105711*/,0x80FE /*100376*/,0x0A31 /*005061*/,0x0002 /*000002*/,0x0A31 /*005061*/,0x0004 /*000004*/,0x15F1 /*012761*/,0xFE00 /*177000*/,
0x0006 /*000006*/,0x8A03 /*105003*/,0x55C3 /*052703*/,0x000C /*000014*/,0x10C9 /*010311*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x45C9 /*042711*/,
0x00FF /*000377*/,0x0A02 /*005002*/,0x0A03 /*005003*/,0x0A04 /*005004*/,0x0A05 /*005005*/,0x0A07 /*005007*/,0x0005 /*000005*/,0x00C3 /*000303*/,
0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x0CC3 /*006303*/,0x15C1 /*012701*/,0xFF0A /*177412*/,0x10C9 /*010311*/,
0x0A21 /*005041*/,0x15E1 /*012741*/,0xFE00 /*177000*/,0x15E1 /*012741*/,0x0005 /*000005*/,0x0A02 /*005002*/,0x0A03 /*005003*/,0x0A04 /*005004*/,
0x0A05 /*005005*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x8A09 /*105011*/,0x0A07 /*005007*/,0x0005 /*000005*/,0x15C1 /*012701*/,0xFDC0 /*176700*/,
0x15F1 /*012761*/,0x0020 /*000040*/,0x0008 /*000010*/,0x10F1 /*010361*/,0x0008 /*000010*/,0x15C9 /*012711*/,0x0011 /*000021*/,0x15F1 /*012761*/,
0x1000 /*010000*/,0x001A /*000032*/,0x15F1 /*012761*/,0xFE00 /*177000*/,0x0002 /*000002*/,0x0A31 /*005061*/,0x0004 /*000004*/,0x0A31 /*005061*/,
0x0006 /*000006*/,0x0A31 /*005061*/,0x001C /*000034*/,0x15C9 /*012711*/,0x0039 /*000071*/,0x8BC9 /*105711*/,0x80FE /*100376*/,0x8A09 /*105011*/,
0x10C0 /*010300*/,0x0A07 /*005007*/]
}

View file

@ -0,0 +1,555 @@
1 ; BOOT LOADER CODE
2 ;
3 ; REBASE HIGHER LINK/BOT:140000
4 ; WANT PERFORMANCE COUNTER - CLOCK TICKS TO DO SOMETHING?
5
6 177776 PSW = 177776
7 177564 DL11XCSR = 177564
8 000064 DL11VEC = 64
9
10 177546 KW11LKS = 177546
11 000100 KW11VEC = 100
12
13 .ASECT
14 140000 .=140000
15 140000 000005 START: RESET ; 140000
16 140002 005037 177776 CLR @#PSW
17 140006 012706 140000 MOV #START,SP
18 140012 005037 177564 CLR @#DL11XCSR ; CLEAR THE XCSR
19 140016 012700 141121 MOV #BANNER,R0
20 140022 004767 140150' JSR PC,PRINT
21 140026 012737 140124 000100 MOV #CLKAST,@#KW11VEC
22 140034 012737 000340 000102 MOV #340,@#KW11VEC+2
23 140042 052737 000100 177546 BIS #100,@#KW11LKS ; SET CLOCK TICKING
24
25 140050 012700 141254 MOV #PROMPT,R0
26 140054 004767 140150' JSR PC,PRINT
27 140060 162706 000256 SUB #256,SP
28 140064 010600 MOV SP,R0
29 140066 004767 140244' JSR PC,INPUT
30 140072 005000 CLR R0
31 140074 000001 1$: WAIT
32 140076 005200 INC R0
33 140100 005767 140120' TST LGHTON
34 140104 001773 BEQ 1$
35 140106 012746 054000 MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG
36 140112 016746 140120' MOV LGHTON,-(SP) ; CALL SUPER LOOP START
37 140116 000002 RTI
38
39 140120 000000 LGHTON: .WORD 0
40 140122 000000 CLKTIC: .WORD 0
41
42 CLKAST: ; 140124
43 140124 005267 140122' INC CLKTIC
44 140130 000002 RTI
45
46 ONECHR:
47 140132 105737 177564 TSTB @#DL11XCSR ; 140132
48 140136 100375 BPL ONECHR
49 140140 110037 177566 MOVB R0,@#177566
50 140144 000207 RTS PC
51
52 140146 000000 PRTPTR: .WORD 0 ; 140146
53
54 PRINT: ; 140150
55 140150 132737 000100 177564 BITB #100,@#DL11XCSR
56 140156 001374 BNE PRINT
57 140160 010067 140146' MOV R0,PRTPTR
58 140164 012737 140210 000064 MOV #PRTAST,@#DL11VEC
59 140172 012737 000200 000066 MOV #200,@#DL11VEC+2
60 140200 152737 000100 177564 BISB #100,@#DL11XCSR
61 140206 000207 RTS PC
62
63 PRTAST: ; 140210
64 140210 105777 140146' TSTB @PRTPTR
65 140214 001406 BEQ 2$
66 140216 117737 140146' 177566 MOVB @PRTPTR,@#177566
67 140224 005267 140146' INC PRTPTR
68 140230 000002 RTI
69 140232 105037 177564 2$: CLRB @#177564
70 140236 000002 RTI
71
72 140240 000000 BUFFER: .WORD 0 ; INPUT BUFFER POINTER
73 140242 000000 LENGTH: .WORD 0 ; INPUT BUFFER LENGTH
74
75 INPUT:
76 140244 010067 140240' MOV R0,BUFFER ; 140244
77 140250 005067 140242' CLR LENGTH
78 140254 012737 140300 000060 MOV #INPAST,@#60
79 140262 012737 000200 000062 MOV #200,@#62
80 140270 152737 000100 177560 BISB #100,@#177560
81 140276 000207 RTS PC
82
83 INPAST: ; 140300
84 140300 010046 MOV R0,-(SP)
85 140302 113700 177562 MOVB @#177562,R0
86 140306 120027 000015 CMPB R0,#15
87 140312 001455 BEQ 7$ ; CARRIAGE RETURN
88 140314 120027 000177 CMPB R0,#127.
89 140320 001403 BEQ 2$ ; <DEL>
90 140322 120027 000010 CMPB R0,#10
91 140326 001012 BNE 4$ ; BACK SPACE
92 140330 005767 140242' 2$: TST LENGTH ; DATA IN BUFFER?
93 140334 001406 BEQ 3$
94 140336 005367 140242' DEC LENGTH ; LENGTH
95 140342 012700 141037 MOV #DEL,R0
96 140346 004767 140150' JSR PC,PRINT
97 140352 000453 3$: BR 9$
98 140354 120027 000040 4$: CMPB R0,#40
99 140360 002450 BLT 9$ ; BELOW SPACE
100 140362 120027 000177 CMPB R0,#177
101 140366 002045 BGE 9$ ; SKIP STUFF TOO BIG
102 140370 004767 140132' JSR PC,ONECHR ; ECHO CHAR
103 140374 120027 000172 CMPB R0,#172
104 140400 003005 BGT 5$ ; ABOVE Z
105 140402 120027 000141 CMPB R0,#141
106 140406 002402 BLT 5$ ; BELOW A
107 140410 142700 000040 BICB #40,R0 ; CONVERT TO UPPER CASE
108 140414 026727 140242' 000254 5$: CMP LENGTH,#254
109 140422 002027 BGE 9$
110 140424 110046 MOVB R0,-(SP)
111 140426 016700 140240' MOV BUFFER,R0
112 140432 066700 140242' ADD LENGTH,R0
113 140436 112610 MOVB (SP)+,(R0)
114 140440 005267 140242' INC LENGTH
115 140444 000416 BR 9$
116
117 140446 016700 140240' 7$: MOV BUFFER,R0
118 140452 066700 140242' ADD LENGTH,R0
119 140456 105010 CLRB (R0)
120 140460 012737 140506 000240 MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2
121 140466 012737 000100 000242 MOV #100,@#242
122 140474 012737 002000 177772 MOV #2000,@#177772
123 140502 012600 9$: MOV (SP)+,R0
124 140504 000002 RTI
125
126 CMD: ; 140506
127 140506 005037 177772 CLR @#177772 ; NO MORE PIR CALLS
128 140512 010046 MOV R0,-(SP)
129 140514 010146 MOV R1,-(SP)
130 140516 010246 MOV R2,-(SP)
131 140520 010346 MOV R3,-(SP)
132 140522 010446 MOV R4,-(SP)
133 140524 012700 141034 MOV #EOL,R0
134 140530 004767 140150' JSR PC,PRINT
135 140534 132737 000100 177564 1$: BITB #100,@#177564
136 140542 001374 BNE 1$
137 140544 005004 CLR R4
138 140546 012703 141043 MOV #CMDLST,R3 ; CMD LIST
139 140552 112300 3$: MOVB (R3)+,R0
140 140554 001431 BEQ 13$
141 140556 016702 140240' MOV BUFFER,R2 ; USER CMD
142 140562 112201 4$: MOVB (R2)+,R1
143 140564 001431 BEQ 15$ ; NULL COMMAND?
144 140566 120127 000040 CMPB R1,#40
145 140572 001773 BEQ 4$ ; SKIP SPACE
146 140574 120001 5$: CMPB R0,R1
147 140576 001010 BNE 7$
148 140600 112300 MOVB (R3)+,R0
149 140602 001412 BEQ 9$
150 140604 112201 MOVB (R2)+,R1
151 140606 001410 BEQ 9$
152 140610 120127 000040 CMPB R1,#40
153 140614 001367 BNE 5$
154 140616 000404 BR 9$
155 140620 112300 7$: MOVB (R3)+,R0
156 140622 001376 BNE 7$
157 140624 005204 INC R4
158 140626 000751 BR 3$
159 140630 006304 9$: ASL R4
160 140632 004774 140700 JSR PC,@CMDTBL(R4) ; EXECUTE
161 140636 000404 BR 15$
162
163 140640 012700 141077 13$: MOV #UNKMSG,R0
164 140644 004767 140150' JSR PC,PRINT
165
166 140650 005067 140242' 15$: CLR LENGTH
167 140654 012700 141254 MOV #PROMPT,R0
168 140660 004767 140150' JSR PC,PRINT
169 140664 012604 MOV (SP)+,R4
170 140666 012603 MOV (SP)+,R3
171 140670 012602 MOV (SP)+,R2
172 140672 012601 MOV (SP)+,R1
173 140674 012600 MOV (SP)+,R0
174 140676 000002 RTI
175
176
177 140700 142154 141350 141364 CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP
140706 141470 141336
178 140712 103 117 115 HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, LIGHTS, TEST AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12>
140715 115 101 116
140720 104 123 040
140723 101 122 105
140726 040 102 117
140731 117 124 054
140734 040 110 101
140737 114 124 054
140742 040 114 111
140745 107 110 124
140750 123 054 040
140753 124 105 123
140756 124 040 101
140761 116 104 040
140764 110 105 114
140767 120 015 012
140772 102 117 117
140775 124 040 104
141000 105 126 111
141003 103 105 123
141006 040 101 122
141011 105 040 122
141014 113 077 040
141017 122 114 077
141022 040 117 122
141025 040 122 120
141030 077 015 012
141033 000
179 141034 015 012 000 EOL: .BYTE 15,12,0
180 141037 010 040 010 DEL: .BYTE 10,40,10,0
141042 000
181 141043 102 117 117 CMDLST: .ASCIZ 'BOOT'
141046 124 000
182 141050 110 101 114 .ASCIZ 'HALT'
141053 124 000
183 141055 124 105 123 .ASCIZ 'TEST'
141060 124 000
184 141062 114 111 107 .ASCIZ 'LIGHTS'
141065 110 124 123
141070 000
185 141071 110 105 114 .ASCIZ 'HELP'
141074 120 000
186 141076 000 .BYTE 0
187 141077 125 116 113 UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15>
141102 116 117 127
141105 116 040 103
141110 117 115 115
141113 101 116 104
141116 012 015 000
188 141121 120 104 120 BANNER: .ASCIZ 'PDP-11 BOOT TEST FOR PDPjs'<12><15>'ADAPTED FROM CODE BY PAUL NANKERVIS <PAULNANK@HOTMAIL.COM>'<12><15><12><15>
141124 055 061 061
141127 040 102 117
141132 117 124 040
141135 124 105 123
141140 124 040 106
141143 117 122 040
141146 120 104 120
141151 152 163 012
141154 015 101 104
141157 101 120 124
141162 105 104 040
141165 106 122 117
141170 115 040 103
141173 117 104 105
141176 040 102 131
141201 040 120 101
141204 125 114 040
141207 116 101 116
141212 113 105 122
141215 126 111 123
141220 040 074 120
141223 101 125 114
141226 116 101 116
141231 113 100 110
141234 117 124 115
141237 101 111 114
141242 056 103 117
141245 115 076 012
141250 015 012 015
141253 000
189 141254 102 117 117 PROMPT: .ASCIZ 'BOOT> '
141257 124 076 040
141262 000
190 141263 125 116 113 BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15>
141266 116 117 127
141271 116 040 102
141274 117 117 124
141277 040 104 105
141302 126 111 103
141305 105 012 015
141310 000
191 141311 040 040 040 PERMSG: .ASCIZ ' CLOCK TICKS'<12><15>
141314 040 040 040
141317 103 114 117
141322 103 113 040
141325 124 111 103
141330 113 123 012
141333 015 000
192
193 141335 000 .EVEN
194
195 HELP: ; 141244
196 141336 012700 140712 MOV #HLPMSG,R0
197 141342 004767 140150' JSR PC,PRINT
198 141346 000207 RTS PC
199
200 HALT: ; 141260
201 141350 000000 HALT
202 141352 012700 141034 MOV #EOL,R0
203 141356 004767 140150' JSR PC,PRINT
204 141362 000207 RTS PC
205
206 TEST: ; 141272
207 141364 005067 140122' CLR CLKTIC
208
209 141370 012705 015000 MOV #15000,R5
210 141374 010537 177570 10$: MOV R5,@#177570 ; DISPLAY
211 141400 010504 MOV R5,R4
212 141402 006204 ASR R4
213 141404 005000 15$: CLR R0
214 141406 010501 MOV R5,R1
215 141410 071004 DIV R4,R0
216 141412 010002 MOV R0,R2
217 141414 070204 MUL R4,R2
218 141416 060301 ADD R3,R1
219 141420 020105 CMP R1,R5
220 141422 001401 BEQ 20$
221 141424 000000 HALT
222 141426 077412 20$: SOB R4,15$
223 141430 077517 SOB R5,10$
224
225 141432 012700 141316 MOV #PERMSG+5,R0
226 141436 016703 140122' MOV CLKTIC,R3
227
228 141442 005002 25$: CLR R2 ; 141350
229 141444 071227 000010 DIV #10,R2
230 141450 062703 000060 ADD #'0,R3
231 141454 110340 MOVB R3,-(R0)
232 141456 010203 MOV R2,R3
233 141460 001370 BNE 25$
234
235 141462 004767 140150' JSR PC,PRINT
236 141466 000207 RTS PC
237
238
239 177572 MMR0=177572
240 177574 MMR1=177574
241 177576 MMR2=177576
242 172516 MMR3=172516
243
244 LIGHTS: ; 141376
245 141470 012703 077406 MOV #77406,R3 ; DEFAULT PDR
246 141474 005002 CLR R2
247 141476 005001 CLR R1
248 141500 012700 000010 MOV #8.,R0
249 141504 010361 172300 1$: MOV R3,172300(R1) ; KERNEL I PDR
250 141510 010261 172340 MOV R2,172340(R1) ; KERNEL I PAR
251 141514 010361 172320 MOV R3,172320(R1) ; KERNEL D PDR
252 141520 010261 172360 MOV R2,172360(R1) ; KERNEL D PAR
253 141524 010361 172200 MOV R3,172200(R1) ; SUPER I PDR
254 141530 010261 172240 MOV R2,172240(R1) ; SUPER I PAR
255 141534 010361 172220 MOV R3,172220(R1) ; SUPER D PDR
256 141540 010261 172260 MOV R2,172260(R1) ; SUPER D PAR
257 141544 010361 177600 MOV R3,177600(R1) ; USER I PDR
258 141550 010261 177640 MOV R2,177640(R1) ; USER I PAR
259 141554 010361 177620 MOV R3,177620(R1) ; USER D PDR
260 141560 010361 177660 MOV R3,177660(R1) ; USER D PAR
261 141564 062702 000200 ADD #200,R2
262 141570 062701 000002 ADD #2,R1
263 141574 077035 SOB R0,1$
264 141576 052737 176000 172376 BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE
265 141604 052737 176000 172276 BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE
266 141612 052737 176000 177676 BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE
267 141620 012737 000077 172516 MOV #77,@#MMR3 ; 77 FOR 22 BIT
268 141626 012737 000001 177572 MOV #1,@#MMR0
269
270 141634 012737 001700 172244 MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000
271 141642 012737 001700 172264 MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000
272 141650 012737 010000 177776 MOV #010000,@#177776 ; SET PM TO SUPER
273
274 141656 012703 040200 MOV #40200,R3 ; SUPER CODE ADDRESS
275 141662 012702 141710 MOV #SUPERS,R2 ; ADDRESS SUPER CODE
276 141666 012246 10$: MOV (R2)+,-(SP)
277 141670 006623 MTPI (R3)+
278 141672 020227 142154 CMP R2,#SUPERE
279 141676 103773 BLO 10$
280
281 141700 012767 040200 140120' MOV #40200,LGHTON ; CHANGE IDLE TASK
282 141706 000207 RTS PC
283
284 ;
285 ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000
286 ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS
287 ;
288 SUPERS: ; 141616
289 141710 012700 000037 MOV #37,R0 ; LOAD PATTERN
290 141714 012701 174000 MOV #174000,R1
291 141720 032737 000001 177570 BIT #1,@#177570
292 141726 001414 BEQ 10$
293 141730 012700 007417 MOV #7417,R0
294 141734 010001 MOV R0,R1
295 141736 005101 COM R1
296 141740 032737 000002 177570 BIT #2,@#177570
297 141746 001404 BEQ 10$
298 141750 012700 036163 MOV #36163,R0
299 141754 012701 037000 MOV #37000,R1
300 141760 010102 10$: MOV R1,R2
301 141762 162702 000002 SUB #2,R2
302 141766 042702 000001 BIC #1,R2 ; WAIT ADDRESS
303 141772 010203 MOV R2,R3
304 141774 042703 177701 BIC #177701,R3 ; ADDRESS OFFSET
305 142000 012763 000001 040000 MOV #0000001,40000(R3) ; WRITE WAIT
306 142006 062703 000002 ADD #2,R3
307 142012 012763 000113 040000 MOV #0000113,40000(R3) ; WRITE JMP (R3)
308
309 142020 010204 MOV R2,R4
310 142022 072427 177772 ASH #-6,R4
311 142026 042704 177600 BIC #177600,R4
312 142032 012705 001700 MOV #1700,R5
313 142036 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT
314 142040 010204 MOV R2,R4
315 142042 072427 177764 ASH #-12.,R4
316 142046 042704 177761 BIC #177761,R4 ; PAR SELECT OFFSET
317 142052 010564 172240 MOV R5,172240(R4) ; SUPER I SPACE
318
319 142056 010103 MOV R1,R3
320 142060 072327 177764 ASH #-12.,R3
321 142064 042703 177761 BIC #177761,R3 ; PAR SELECT OFFSET
322 142070 020304 CMP R3,R4 ; SAME PAR
323 142072 001412 BEQ 30$
324 142074 010104 MOV R1,R4
325 142076 072427 177772 ASH #-6,R4
326 142102 042704 177600 BIC #177600,R4
327 142106 012705 001700 MOV #1700,R5
328 142112 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR JMP
329 142114 010563 172240 MOV R5,172240(R3) ; SUPER I SPACE
330 30$:
331 142120 012704 000003 MOV #3,R4
332 142124 063704 177570 ADD @#177570,R4
333 142130 012703 000002 MOV #2,R3
334 142134 060703 ADD PC,R3
335 142136 000112 40$: JMP (R2)
336 142140 077402 SOB R4,40$
337 142142 010002 MOV R0,R2
338 142144 006002 ROR R2 ; ROTATE PATTERN
339 142146 006101 ROL R1
340 142150 006000 ROR R0
341 142152 000702 BR 10$
342 SUPERE:
343
344 BOOT: ; 142062
345 142154 005003 CLR R3 ; UNIT
346 142156 112201 1$: MOVB (R2)+,R1
347 142160 001545 BEQ BOOTRK ; DEFAULT DEVICE IS RK0
348 142162 120127 000040 CMPB R1,#40
349 142166 001773 BEQ 1$
350 142170 120127 000122 CMPB R1,#'R
351 142174 001405 BEQ 5$
352
353 142176 012700 141263 MOV #BADBOO,R0
354 142202 004767 140150' JSR PC,PRINT
355 142206 000207 RTS PC
356
357 142210 112201 5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P
358 142212 112200 7$: MOVB (R2)+,R0 ; DIGIT
359 142214 001416 BEQ 9$
360 142216 120027 000040 CMPB R0,#40
361 142222 001413 BEQ 9$
362 142224 120027 000067 CMPB R0,#'7
363 142230 003031 BGT 11$
364 142232 162700 000060 SUB #'0,R0
365 142236 002426 BLT 11$
366 142240 006303 ASL R3
367 142242 006303 ASL R3
368 142244 006303 ASL R3
369 142246 050003 BIS R0,R3 ; PUT DIGIT INTO UNIT
370 142250 000760 BR 7$
371 142252 005002 9$: CLR R2
372 142254 012722 000137 MOV #137,(R2)+
373 142260 012722 140000 MOV #START,(R2)+
374 142264 012722 140000 MOV #START,(R2)+
375 142270 005022 CLR (R2)+
376 142272 120127 000113 CMPB R1,#'K
377 142276 001476 BEQ BOOTRK
378 142300 120127 000114 CMPB R1,#'L
379 142304 001410 BEQ BOOTRL
380 142306 120127 000120 CMPB R1,#'P
381 142312 001517 BEQ BOOTRP
382
383 142314 012700 141077 11$: MOV #UNKMSG,R0
384 142320 004767 140150' JSR PC,PRINT
385 142324 000207 RTS PC
386
387 174400 RLCS=174400
388 BOOTRL: ; 142234
389 142326 000005 RESET
390 142330 000303 SWAB R3 ; UNIT NUMBER
391 142332 012701 174400 MOV #RLCS,R1 ; CSR
392 142336 012761 000013 000004 MOV #13,4(R1) ; CLR ERR
393 142344 052703 000004 BIS #4,R3 ; UNIT+GSTAT
394 142350 010311 MOV R3,(R1) ; ISSUE CMD
395 142352 105711 TSTB (R1) ; WAIT
396 142354 100376 BPL .-2
397 142356 105003 CLRB R3
398 142360 052703 000010 BIS #10,R3 ; UNIT+RDHDR
399 142364 010311 MOV R3,(R1) ; ISSUE CMD
400 142366 105711 TSTB (R1) ; WAIT
401 142370 100376 BPL .-2
402 142372 016102 000006 MOV 6(R1),R2 ; GET HDR
403 142376 042702 000077 BIC #77,R2 ; CLR SECTOR
404 142402 005202 INC R2 ; MAGIC BIT
405 142404 010261 000004 MOV R2,4(R1) ; SEEK TO 0
406 142410 105003 CLRB R3
407 142412 052703 000006 BIS #6,R3 ; UNIT+SEEK
408 142416 010311 MOV R3,(R1) ; ISSUE CMD
409 142420 105711 TSTB (R1) ; WAIT
410 142422 100376 BPL .-2
411 142424 005061 000002 CLR 2(R1) ; CLR BA
412 142430 005061 000004 CLR 4(R1) ; CLR DA
413 142434 012761 177000 000006 MOV #-512.,6(R1) ; SET WC
414 142442 105003 CLRB R3
415 142444 052703 000014 BIS #14,R3 ; UNIT+READ
416 142450 010311 MOV R3,(R1) ; ISSUE CMD
417 142452 105711 TSTB (R1) ; WAIT
418 142454 100376 BPL .-2
419 142456 042711 000377 BIC #377,(R1)
420 142462 005002 CLR R2
421 142464 005003 CLR R3
422 142466 005004 CLR R4
423 142470 005005 CLR R5
424 142472 005007 CLR PC
425
426 177412 RKDA=177412
427 000005 READGO=5
428 BOOTRK:
429 142474 000005 RESET ; 142402
430 142476 000303 SWAB R3 ; UNIT NUMBER
431 142500 006303 ASL R3
432 142502 006303 ASL R3
433 142504 006303 ASL R3
434 142506 006303 ASL R3
435 142510 006303 ASL R3
436 142512 012701 177412 MOV #RKDA,R1 ; CSR
437 142516 010311 MOV R3,(R1) ; LOAD DA
438 142520 005041 CLR -(R1) ; CLEAR BA
439 142522 012741 177000 MOV #-256.*2,-(R1) ; LOAD WC
440 142526 012741 000005 MOV #READGO,-(R1) ; READ & GO
441 142532 005002 CLR R2
442 142534 005003 CLR R3
443 142536 005004 CLR R4
444 142540 005005 CLR R5
445 142542 105711 TSTB (R1)
446 142544 100376 BPL .-2
447 142546 105011 CLRB (R1)
448 142550 005007 CLR PC
449
450 176700 RPCSR=0176700
451 BOOTRP: ; 142460
452 142552 000005 RESET
453 142554 012701 176700 MOV #RPCSR, R1
454 142560 012761 000040 000010 MOV #0000040, 10(R1) ; RESET
455 142566 010361 000010 MOV R3, 10(R1) ; SET UNIT
456 142572 012711 000021 MOV #0000021, (R1) ; PACK ACK
457 142576 012761 010000 000032 MOV #0010000, 32(R1) ; 16B MODE
458 142604 012761 177000 000002 MOV #-512., 2(R1) ; SET WC
459 142612 005061 000004 CLR 4(R1) ; CLR BA
460 142616 005061 000006 CLR 6(R1) ; CLR DA
461 142622 005061 000034 CLR 34(R1) ; CLR CYL
462 142626 012711 000071 MOV #0000071, (R1) ; READ
463 142632 105711 TSTB (R1) ; WAIT
464 142634 100376 BPL .-2
465 142636 105011 CLRB (R1)
466 142640 010300 MOV R3,R0
467 142642 005007 CLR PC
468
469 .END START
469

View file

@ -185,7 +185,7 @@ CMDLST: .ASCIZ 'BOOT'
.ASCIZ 'HELP'
.BYTE 0
UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15>
BANNER: .ASCIZ 'PAUL NANKERVIS - PAULNANK@HOTMAIL.COM'<12><15><12><15>
BANNER: .ASCIZ 'PDP-11 BOOT TEST FOR PDPjs'<12><15>'ADAPTED FROM CODE BY PAUL NANKERVIS <PAULNANK@HOTMAIL.COM>'<12><15><12><15>
PROMPT: .ASCIZ 'BOOT> '
BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15>
PERMSG: .ASCIZ ' CLOCK TICKS'<12><15>

View file

@ -0,0 +1,489 @@
---
layout: page
title: PDP-11 Boot Test
permalink: /apps/pdp11/boot/test/
redirect_from:
- /devices/pdp11/rom/test/
---
PDP-11 Boot Test
----------------
[BOOTTEST.mac](BOOTTEST.mac) is based on [boot.mac](http://skn.noip.me/pdp11/boot.mac) written by [Paul Nankervis](mailto:paulnank@hotmail.com).
[BOOTTEST.mac](BOOTTEST.mac) was cross-assembled with [MACRO11](https://github.com/shattered/macro11) to produce [BOOTTEST.lst](BOOTTEST.lst),
which was then processed by [FileDump](/modules/filedump/) to produce [BOOTTEST.json](BOOTTEST.json).
To see the Boot Test in action, try the [PDP-11/70 Boot Test with Debugger](/devices/pdp11/machine/1170/test/debugger/).
The source code is shown below.
; BOOT LOADER CODE
;
; REBASE HIGHER LINK/BOT:140000
; WANT PERFORMANCE COUNTER - CLOCK TICKS TO DO SOMETHING?
PSW = 177776
DL11XCSR = 177564
DL11VEC = 64
KW11LKS = 177546
KW11VEC = 100
.ASECT
.=140000
START: RESET ; 140000
CLR @#PSW
MOV #START,SP
CLR @#DL11XCSR ; CLEAR THE XCSR
MOV #BANNER,R0
JSR PC,PRINT
MOV #CLKAST,@#KW11VEC
MOV #340,@#KW11VEC+2
BIS #100,@#KW11LKS ; SET CLOCK TICKING
MOV #PROMPT,R0
JSR PC,PRINT
SUB #256,SP
MOV SP,R0
JSR PC,INPUT
CLR R0
1$: WAIT
INC R0
TST LGHTON
BEQ 1$
MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG
MOV LGHTON,-(SP) ; CALL SUPER LOOP START
RTI
LGHTON: .WORD 0
CLKTIC: .WORD 0
CLKAST: ; 140124
INC CLKTIC
RTI
ONECHR:
TSTB @#DL11XCSR ; 140132
BPL ONECHR
MOVB R0,@#177566
RTS PC
PRTPTR: .WORD 0 ; 140146
PRINT: ; 140150
BITB #100,@#DL11XCSR
BNE PRINT
MOV R0,PRTPTR
MOV #PRTAST,@#DL11VEC
MOV #200,@#DL11VEC+2
BISB #100,@#DL11XCSR
RTS PC
PRTAST: ; 140210
TSTB @PRTPTR
BEQ 2$
MOVB @PRTPTR,@#177566
INC PRTPTR
RTI
2$: CLRB @#177564
RTI
BUFFER: .WORD 0 ; INPUT BUFFER POINTER
LENGTH: .WORD 0 ; INPUT BUFFER LENGTH
INPUT:
MOV R0,BUFFER ; 140244
CLR LENGTH
MOV #INPAST,@#60
MOV #200,@#62
BISB #100,@#177560
RTS PC
INPAST: ; 140300
MOV R0,-(SP)
MOVB @#177562,R0
CMPB R0,#15
BEQ 7$ ; CARRIAGE RETURN
CMPB R0,#127.
BEQ 2$ ; <DEL>
CMPB R0,#10
BNE 4$ ; BACK SPACE
2$: TST LENGTH ; DATA IN BUFFER?
BEQ 3$
DEC LENGTH ; LENGTH
MOV #DEL,R0
JSR PC,PRINT
3$: BR 9$
4$: CMPB R0,#40
BLT 9$ ; BELOW SPACE
CMPB R0,#177
BGE 9$ ; SKIP STUFF TOO BIG
JSR PC,ONECHR ; ECHO CHAR
CMPB R0,#172
BGT 5$ ; ABOVE Z
CMPB R0,#141
BLT 5$ ; BELOW A
BICB #40,R0 ; CONVERT TO UPPER CASE
5$: CMP LENGTH,#254
BGE 9$
MOVB R0,-(SP)
MOV BUFFER,R0
ADD LENGTH,R0
MOVB (SP)+,(R0)
INC LENGTH
BR 9$
7$: MOV BUFFER,R0
ADD LENGTH,R0
CLRB (R0)
MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2
MOV #100,@#242
MOV #2000,@#177772
9$: MOV (SP)+,R0
RTI
CMD: ; 140506
CLR @#177772 ; NO MORE PIR CALLS
MOV R0,-(SP)
MOV R1,-(SP)
MOV R2,-(SP)
MOV R3,-(SP)
MOV R4,-(SP)
MOV #EOL,R0
JSR PC,PRINT
1$: BITB #100,@#177564
BNE 1$
CLR R4
MOV #CMDLST,R3 ; CMD LIST
3$: MOVB (R3)+,R0
BEQ 13$
MOV BUFFER,R2 ; USER CMD
4$: MOVB (R2)+,R1
BEQ 15$ ; NULL COMMAND?
CMPB R1,#40
BEQ 4$ ; SKIP SPACE
5$: CMPB R0,R1
BNE 7$
MOVB (R3)+,R0
BEQ 9$
MOVB (R2)+,R1
BEQ 9$
CMPB R1,#40
BNE 5$
BR 9$
7$: MOVB (R3)+,R0
BNE 7$
INC R4
BR 3$
9$: ASL R4
JSR PC,@CMDTBL(R4) ; EXECUTE
BR 15$
13$: MOV #UNKMSG,R0
JSR PC,PRINT
15$: CLR LENGTH
MOV #PROMPT,R0
JSR PC,PRINT
MOV (SP)+,R4
MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R1
MOV (SP)+,R0
RTI
CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP
HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, LIGHTS, TEST AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12>
EOL: .BYTE 15,12,0
DEL: .BYTE 10,40,10,0
CMDLST: .ASCIZ 'BOOT'
.ASCIZ 'HALT'
.ASCIZ 'TEST'
.ASCIZ 'LIGHTS'
.ASCIZ 'HELP'
.BYTE 0
UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15>
BANNER: .ASCIZ 'PAUL NANKERVIS - PAULNANK@HOTMAIL.COM'<12><15><12><15>
PROMPT: .ASCIZ 'BOOT> '
BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15>
PERMSG: .ASCIZ ' CLOCK TICKS'<12><15>
.EVEN
HELP: ; 141244
MOV #HLPMSG,R0
JSR PC,PRINT
RTS PC
HALT: ; 141260
HALT
MOV #EOL,R0
JSR PC,PRINT
RTS PC
TEST: ; 141272
CLR CLKTIC
MOV #15000,R5
10$: MOV R5,@#177570 ; DISPLAY
MOV R5,R4
ASR R4
15$: CLR R0
MOV R5,R1
DIV R4,R0
MOV R0,R2
MUL R4,R2
ADD R3,R1
CMP R1,R5
BEQ 20$
HALT
20$: SOB R4,15$
SOB R5,10$
MOV #PERMSG+5,R0
MOV CLKTIC,R3
25$: CLR R2 ; 141350
DIV #10,R2
ADD #'0,R3
MOVB R3,-(R0)
MOV R2,R3
BNE 25$
JSR PC,PRINT
RTS PC
MMR0=177572
MMR1=177574
MMR2=177576
MMR3=172516
LIGHTS: ; 141376
MOV #77406,R3 ; DEFAULT PDR
CLR R2
CLR R1
MOV #8.,R0
1$: MOV R3,172300(R1) ; KERNEL I PDR
MOV R2,172340(R1) ; KERNEL I PAR
MOV R3,172320(R1) ; KERNEL D PDR
MOV R2,172360(R1) ; KERNEL D PAR
MOV R3,172200(R1) ; SUPER I PDR
MOV R2,172240(R1) ; SUPER I PAR
MOV R3,172220(R1) ; SUPER D PDR
MOV R2,172260(R1) ; SUPER D PAR
MOV R3,177600(R1) ; USER I PDR
MOV R2,177640(R1) ; USER I PAR
MOV R3,177620(R1) ; USER D PDR
MOV R3,177660(R1) ; USER D PAR
ADD #200,R2
ADD #2,R1
SOB R0,1$
BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE
BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE
BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE
MOV #77,@#MMR3 ; 77 FOR 22 BIT
MOV #1,@#MMR0
MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000
MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000
MOV #010000,@#177776 ; SET PM TO SUPER
MOV #40200,R3 ; SUPER CODE ADDRESS
MOV #SUPERS,R2 ; ADDRESS SUPER CODE
10$: MOV (R2)+,-(SP)
MTPI (R3)+
CMP R2,#SUPERE
BLO 10$
MOV #40200,LGHTON ; CHANGE IDLE TASK
RTS PC
;
; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000
; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS
;
SUPERS: ; 141616
MOV #37,R0 ; LOAD PATTERN
MOV #174000,R1
BIT #1,@#177570
BEQ 10$
MOV #7417,R0
MOV R0,R1
COM R1
BIT #2,@#177570
BEQ 10$
MOV #36163,R0
MOV #37000,R1
10$: MOV R1,R2
SUB #2,R2
BIC #1,R2 ; WAIT ADDRESS
MOV R2,R3
BIC #177701,R3 ; ADDRESS OFFSET
MOV #0000001,40000(R3) ; WRITE WAIT
ADD #2,R3
MOV #0000113,40000(R3) ; WRITE JMP (R3)
MOV R2,R4
ASH #-6,R4
BIC #177600,R4
MOV #1700,R5
SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT
MOV R2,R4
ASH #-12.,R4
BIC #177761,R4 ; PAR SELECT OFFSET
MOV R5,172240(R4) ; SUPER I SPACE
MOV R1,R3
ASH #-12.,R3
BIC #177761,R3 ; PAR SELECT OFFSET
CMP R3,R4 ; SAME PAR
BEQ 30$
MOV R1,R4
ASH #-6,R4
BIC #177600,R4
MOV #1700,R5
SUB R4,R5 ; PAR ADDRESS BASE FOR JMP
MOV R5,172240(R3) ; SUPER I SPACE
30$:
MOV #3,R4
ADD @#177570,R4
MOV #2,R3
ADD PC,R3
40$: JMP (R2)
SOB R4,40$
MOV R0,R2
ROR R2 ; ROTATE PATTERN
ROL R1
ROR R0
BR 10$
SUPERE:
BOOT: ; 142062
CLR R3 ; UNIT
1$: MOVB (R2)+,R1
BEQ BOOTRK ; DEFAULT DEVICE IS RK0
CMPB R1,#40
BEQ 1$
CMPB R1,#'R
BEQ 5$
MOV #BADBOO,R0
JSR PC,PRINT
RTS PC
5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P
7$: MOVB (R2)+,R0 ; DIGIT
BEQ 9$
CMPB R0,#40
BEQ 9$
CMPB R0,#'7
BGT 11$
SUB #'0,R0
BLT 11$
ASL R3
ASL R3
ASL R3
BIS R0,R3 ; PUT DIGIT INTO UNIT
BR 7$
9$: CLR R2
MOV #137,(R2)+
MOV #START,(R2)+
MOV #START,(R2)+
CLR (R2)+
CMPB R1,#'K
BEQ BOOTRK
CMPB R1,#'L
BEQ BOOTRL
CMPB R1,#'P
BEQ BOOTRP
11$: MOV #UNKMSG,R0
JSR PC,PRINT
RTS PC
RLCS=174400
BOOTRL: ; 142234
RESET
SWAB R3 ; UNIT NUMBER
MOV #RLCS,R1 ; CSR
MOV #13,4(R1) ; CLR ERR
BIS #4,R3 ; UNIT+GSTAT
MOV R3,(R1) ; ISSUE CMD
TSTB (R1) ; WAIT
BPL .-2
CLRB R3
BIS #10,R3 ; UNIT+RDHDR
MOV R3,(R1) ; ISSUE CMD
TSTB (R1) ; WAIT
BPL .-2
MOV 6(R1),R2 ; GET HDR
BIC #77,R2 ; CLR SECTOR
INC R2 ; MAGIC BIT
MOV R2,4(R1) ; SEEK TO 0
CLRB R3
BIS #6,R3 ; UNIT+SEEK
MOV R3,(R1) ; ISSUE CMD
TSTB (R1) ; WAIT
BPL .-2
CLR 2(R1) ; CLR BA
CLR 4(R1) ; CLR DA
MOV #-512.,6(R1) ; SET WC
CLRB R3
BIS #14,R3 ; UNIT+READ
MOV R3,(R1) ; ISSUE CMD
TSTB (R1) ; WAIT
BPL .-2
BIC #377,(R1)
CLR R2
CLR R3
CLR R4
CLR R5
CLR PC
RKDA=177412
READGO=5
BOOTRK:
RESET ; 142402
SWAB R3 ; UNIT NUMBER
ASL R3
ASL R3
ASL R3
ASL R3
ASL R3
MOV #RKDA,R1 ; CSR
MOV R3,(R1) ; LOAD DA
CLR -(R1) ; CLEAR BA
MOV #-256.*2,-(R1) ; LOAD WC
MOV #READGO,-(R1) ; READ & GO
CLR R2
CLR R3
CLR R4
CLR R5
TSTB (R1)
BPL .-2
CLRB (R1)
CLR PC
RPCSR=0176700
BOOTRP: ; 142460
RESET
MOV #RPCSR, R1
MOV #0000040, 10(R1) ; RESET
MOV R3, 10(R1) ; SET UNIT
MOV #0000021, (R1) ; PACK ACK
MOV #0010000, 32(R1) ; 16B MODE
MOV #-512., 2(R1) ; SET WC
CLR 4(R1) ; CLR BA
CLR 6(R1) ; CLR DA
CLR 34(R1) ; CLR CYL
MOV #0000071, (R1) ; READ
TSTB (R1) ; WAIT
BPL .-2
CLRB (R1)
MOV R3,R0
CLR PC
.END START

View file

@ -0,0 +1,11 @@
#
# Don't have macro11? Make yourself a copy from https://github.com/shattered/macro11
#
all: BOOTTEST.json
BOOTTEST.lst: BOOTTEST.mac
macro11 BOOTTEST.mac -l BOOTTEST.lst
BOOTTEST.json: BOOTTEST.lst
node ../../../../modules/filedump/bin/filedump --file=BOOTTEST.lst --format=octal --output=BOOTTEST.json --overwrite

View file

@ -0,0 +1,25 @@
---
layout: page
title: DEC PDP-11 Tape Images
permalink: /apps/pdp11/tapes/
---
DEC PDP-11 Tape Images
----------------------
We have archived the following DEC PDP-11 Tapes:
- [Absolute Loader](absloader/)
- [BASIC (Single User)](basic/)
To make it easy for PDPjs machines to load these tapes, we created the following High-Speed
Paper Tape Reader (PC11) configurations:
- [demo.xml](/devices/pdp11/pc11/demo.xml)
which is typically instantiated by a Machine XML file using:
<device ref="/devices/pdp11/pc11/demo.xml"/>
These configuration files create UI controls that allow you to choose from a set of tapes that are automatically sent
to the machine's PC11 device.

View file

@ -0,0 +1,14 @@
{"words":[
0xE9E9 /*164751*/,0x3DE9 /*036751*/,0x0000 /*000000*/,0x11C6 /*010706*/,0x29A6 /*024646*/,0x11C5 /*010705*/,0x65C5 /*062705*/,0x004A /*000112*/,
0x0A01 /*005001*/,0x17CE /*013716*/,0xFF78 /*177570*/,0x0C0E /*006016*/,0x8702 /*103402*/,0x0A0E /*005016*/,0x0103 /*000403*/,0x0CCE /*006316*/,
0x0201 /*001001*/,0x104E /*010116*/,0x0A00 /*005000*/,0x09CD /*004715*/,0x8AC3 /*105303*/,0x02FC /*001374*/,0x09CD /*004715*/,0x09F7 /*004767*/,
0x003C /*000074*/,0x1102 /*010402*/,0xE5C2 /*162702*/,0x0004 /*000004*/,0x25C2 /*022702*/,0x0002 /*000002*/,0x0321 /*001441*/,0x09F7 /*004767*/,
0x002C /*000054*/,0x6384 /*061604*/,0x1101 /*010401*/,0x09CD /*004715*/,0x0404 /*002004*/,0x8BC0 /*105700*/,0x03EB /*001753*/,0x0000 /*000000*/,
0x01E9 /*000751*/,0x90D1 /*110321*/,0x01F8 /*000770*/,0x1DC3 /*016703*/,0x006A /*000152*/,0x8A8B /*105213*/,0x8BCB /*105713*/,0x80FE /*100376*/,
0x9CC3 /*116303*/,0x0002 /*000002*/,0x60C0 /*060300*/,0x45C3 /*042703*/,0xFF00 /*177400*/,0x0AC2 /*005302*/,0x0087 /*000207*/,0x15B7 /*012667*/,
0x0026 /*000046*/,0x09CD /*004715*/,0x10C4 /*010304*/,0x09CD /*004715*/,0x00C3 /*000303*/,0x50C4 /*050304*/,0x1DC7 /*016707*/,0x0018 /*000030*/,
0x09F7 /*004767*/,0xFFEA /*177752*/,0x09CD /*004715*/,0x8BC0 /*105700*/,0x02E2 /*001342*/,0x0C84 /*006204*/,0x8602 /*103002*/,0x0000 /*000000*/,
0x01C0 /*000700*/,0x0CC4 /*006304*/,0x6384 /*061604*/,0x004C /*000114*/,0x0000 /*000000*/,0x15F7 /*012767*/,0x00EA /*000352*/,0x0010 /*000020*/,
0x15F7 /*012767*/,0x01F5 /*000765*/,0x001C /*000034*/,0x0077 /*000167*/,0xFF5A /*177532*/,0x1DC1 /*016701*/,0x0016 /*000026*/,0x15C2 /*012702*/,
0xEBFB /*165773*/,0x0000 /*000000*/,0x0000 /*000000*/]
}

View file

@ -0,0 +1,19 @@
---
layout: page
title: DEC PDP-11 Absolute Loader
permalink: /apps/pdp11/tapes/absloader/
---
DEC PDP-11 Absolute Loader
--------------------------
The Absolute Loader is a special tape image that must be loaded in order to load *other* tapes
which use the Absolute Loader format.
To see the Absolute Loader in action, start with the [Bootstrap Loader Demo](/devices/pdp11/machine/1120/bootstrap/debugger/).
PCjs has archived the following DEC resources:
- [Absolute Loader](DEC-11-L2PC-PO.json)
- [LISTING OF PDP-11 ABSOLUTE LOADER (June 1975)](http://archive.pcjs.org/pubs/dec/pdp11/other/DEC-11-UABLA-A-LA_PDP-11AbsoluteLoaderListing_Jun75.pdf)
- "APPENDIX D: THE BOOTSTRAP AND ABSOLUTE LOADERS" from the [PDP-11 BASIC PROGRAMMING MANUAL (December 1970)](http://archive.pcjs.org/pubs/dec/pdp11/basic/DEC-11-AJPB-D_PDP-11_BASIC_Programming_Manual_Dec70.pdf)

View file

@ -0,0 +1,639 @@
{"words":[
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0001 /*000001*/,0x0008 /*000010*/,0x0022 /*000042*/,
0x4107 /*040407*/,0x018D /*000615*/,0x2600 /*023000*/,0x0000 /*000000*/,0x7700 /*073400*/,0x2000 /*020000*/,0x0606 /*003006*/,0x0000 /*000000*/,
0x0A00 /*005000*/,0x0000 /*000000*/,0x0E00 /*007000*/,0x0000 /*000000*/,0x1200 /*011000*/,0x0000 /*000000*/,0x1600 /*013000*/,0x0000 /*000000*/,
0x1A00 /*015000*/,0x0000 /*000000*/,0x4000 /*040000*/,0x0000 /*000000*/,0x9C00 /*116000*/,0x0001 /*000001*/,0x000E /*000016*/,0x0028 /*000050*/,
0x002E /*000056*/,0x005F /*000137*/,0x002E /*000056*/,0x8935 /*104465*/,0x0150 /*000520*/,0x1600 /*013000*/,0x3000 /*030000*/,0x5E00 /*057000*/,
0x0002 /*000002*/,0x3600 /*033000*/,0x0000 /*000000*/,0x3A00 /*035000*/,0x0000 /*000000*/,0x3E00 /*037000*/,0x0000 /*000000*/,0xAB00 /*125400*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x0040 /*000100*/,0x13B6 /*011666*/,0x0002 /*000002*/,0xE5CE /*162716*/,0x0002 /*000002*/,0x17A6 /*013646*/,
0x0C8E /*006216*/,0x8704 /*103404*/,0x0CCE /*006316*/,0x65CE /*062716*/,0x77AC /*073654*/,0x1787 /*013607*/,0x45CE /*042716*/,0xFF80 /*177600*/,
0x1582 /*012602*/,0x2097 /*020227*/,0x0040 /*000100*/,0x0609 /*003011*/,0x0A37 /*005067*/,0x1756 /*013526*/,0x15F7 /*012767*/,0x0001 /*000001*/,
0x1754 /*013524*/,0x1DC6 /*016706*/,0x0123 /*000443*/,0x3400 /*032000*/,0x6E00 /*067000*/,0x5A00 /*055000*/,0xE617 /*163027*/,0x5215 /*051025*/,
0x6608 /*063010*/,0x8110 /*100420*/,0xC010 /*140020*/,0x9B15 /*115425*/,0x6600 /*063000*/,0x0A10 /*005020*/,0x0289 /*001211*/,0xC089 /*140211*/,
0x9615 /*113025*/,0x3600 /*033000*/,0x0489 /*002211*/,0x0289 /*001211*/,0xD689 /*153211*/,0x010B /*000413*/,0x4E02 /*047002*/,0x8189 /*100611*/,
0x8715 /*103425*/,0x4500 /*042400*/,0x5252 /*051122*/,0x524F /*051117*/,0xC820 /*144040*/,0x0001 /*000001*/,0x0015 /*000025*/,0x009C /*000234*/,
0x2020 /*020040*/,0x2020 /*020040*/,0x2020 /*020040*/,0x5441 /*052101*/,0x4C20 /*046040*/,0x4E49 /*047111*/,0x2045 /*020105*/,0x9100 /*110400*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x00AC /*000254*/,0x013E /*000476*/,0x017C /*000574*/,0x04CA /*002312*/,0x103C /*010074*/,0x1320 /*011440*/,
0x1346 /*011506*/,0x1376 /*011566*/,0x13EA /*011752*/,0x148E /*012216*/,0x1522 /*012442*/,0x1540 /*012500*/,0x1568 /*012550*/,0x15FE /*012776*/,
0x16C8 /*013310*/,0x16D4 /*013324*/,0x1676 /*013166*/,0x173E /*013476*/,0x1738 /*013470*/,0x19A6 /*014646*/,0x19E4 /*014744*/,0x19B6 /*014666*/,
0x195E /*014536*/,0x16EC /*013354*/,0x017D /*000575*/,0x3400 /*032000*/,0xDA00 /*155000*/,0xB200 /*131000*/,0x0E19 /*007031*/,0xFE1C /*177034*/,
0x1E13 /*017023*/,0x8614 /*103024*/,0x1801 /*014001*/,0x9401 /*112001*/,0xAE02 /*127002*/,0x9003 /*110003*/,0xA403 /*122003*/,0xA601 /*123001*/,
0x5603 /*053003*/,0x0804 /*004004*/,0x9E04 /*117004*/,0xE002 /*160002*/,0x1E02 /*017002*/,0xAE03 /*127003*/,0x8802 /*104002*/,0x5E03 /*057003*/,
0xFA03 /*175003*/,0xD403 /*152003*/,0xE603 /*163003*/,0x6404 /*062004*/,0x2604 /*023004*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0108 /*000410*/,
0x04F2 /*002362*/,0x097C /*004574*/,0x0500 /*002400*/,0x050C /*002414*/,0x0C08 /*006010*/,0x02C2 /*001302*/,0x02D2 /*001322*/,0x1E0A /*017012*/,
0x2097 /*020227*/,0x0030 /*000060*/,0x050D /*002415*/,0x2097 /*020227*/,0x0039 /*000071*/,0x0602 /*003002*/,0x00B4 /*000264*/,0x0087 /*000207*/,
0x2097 /*020227*/,0x0041 /*000101*/,0x0505 /*002405*/,0x2097 /*020227*/,0x005A /*000132*/,0x0602 /*003002*/,0x00AF /*000257*/,0x0167 /*000547*/,
0x3400 /*032000*/,0x3600 /*033000*/,0x8701 /*103401*/,0xAF00 /*127400*/,0xB200 /*131000*/,0x8700 /*103400*/,0x6600 /*063000*/,0xC110 /*140420*/,
0x7415 /*072025*/,0xF7FF /*173777*/,0x760B /*073013*/,0x0316 /*001426*/,0xC103 /*140403*/,0x781D /*074035*/,0x0E16 /*007026*/,0xB701 /*133401*/,
0x660A /*063012*/,0xD716 /*153426*/,0x622D /*061055*/,0x4816 /*044026*/,0x0500 /*002400*/,0xA607 /*123007*/,0x2610 /*023020*/,0x0210 /*001020*/,
0x8089 /*100211*/,0x3E15 /*037025*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0164 /*000544*/,0x1582 /*012602*/,0x0BF7 /*005767*/,0x1656 /*013126*/,
0x0306 /*001406*/,0x0AB7 /*005267*/,0x1658 /*013130*/,0x8BC9 /*105711*/,0x80FC /*100374*/,0x90B1 /*110261*/,0x0002 /*000002*/,0x1581 /*012601*/,
0x0087 /*000207*/,0x15F7 /*012767*/,0xFFFE /*177776*/,0x1638 /*013070*/,0x15C0 /*012700*/,0x0843 /*004103*/,0x9402 /*112002*/,0x03F8 /*001770*/,
0x8900 /*104400*/,0x01FC /*000774*/,0x0BF7 /*005767*/,0x162A /*013052*/,0x0129 /*000451*/,0x3400 /*032000*/,0x9200 /*111000*/,0x0A01 /*005001*/,
0xC302 /*141402*/,0x6025 /*060045*/,0x0517 /*002427*/,0xC286 /*141206*/,0x5C15 /*056025*/,0x0000 /*000000*/,0xC389 /*141611*/,0x020A /*001012*/,
0xC301 /*141401*/,0x6015 /*060025*/,0xF717 /*173427*/,0x100B /*010013*/,0x1F16 /*017426*/,0x3703 /*033403*/,0x0E0A /*007012*/,0xC216 /*141026*/,
0x0E1D /*007035*/,0x9716 /*113426*/,0x7020 /*070040*/,0x02FF /*001377*/,0x3702 /*033402*/,0xB00A /*130012*/,0x9DFD /*116775*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x01C0 /*000700*/,0x8A8A /*105212*/,0x0AB7 /*005267*/,0x1602 /*013002*/,0x0BCA /*005712*/,0x8142 /*100502*/,0x8BCA /*105712*/,
0x80FA /*100372*/,0x1C82 /*016202*/,0x0002 /*000002*/,0x03EA /*001752*/,0x45C2 /*042702*/,0xFF80 /*177600*/,0xA097 /*120227*/,0x0010 /*000020*/,
0x032F /*001457*/,0xA5C2 /*122702*/,0x000D /*000015*/,0x0209 /*001011*/,0x8902 /*104402*/,0x15C2 /*012702*/,0x000A /*000012*/,0x010F /*000417*/,
0x0A37 /*005067*/,0x01EE /*000756*/,0x3400 /*032000*/,0xEE00 /*167000*/,0x8001 /*100001*/,0xC2FD /*141375*/,0x7015 /*070025*/,0xE6FF /*163377*/,
0xC201 /*141001*/,0x7FA5 /*077645*/,0xC900 /*144400*/,0xC203 /*141003*/,0x60A5 /*060245*/,0x2500 /*022400*/,0xC207 /*141007*/,0x15A5 /*012645*/,
0x1200 /*011000*/,0x0003 /*000003*/,0x9389 /*111611*/,0x9790 /*113620*/,0x0AA0 /*005240*/,0x0400 /*002000*/,0xD703 /*153403*/,0xAF20 /*127440*/,
0xC817 /*144027*/,0x1987 /*014607*/,0xC189 /*140611*/,0x8415 /*102025*/,0x0001 /*000001*/,0x0034 /*000064*/,0x021C /*001034*/,0x1760 /*013540*/,
0x15F7 /*012767*/,0x0001 /*000001*/,0x159C /*012634*/,0x55F7 /*052767*/,0x0040 /*000100*/,0xFD46 /*176506*/,0x0087 /*000207*/,0x95C2 /*112702*/,
0x005E /*000136*/,0x8900 /*104400*/,0x95C2 /*112702*/,0x0055 /*000125*/,0x8900 /*104400*/,0x8902 /*104402*/,0x01B4 /*000664*/,0x15F7 /*012767*/,
0x0040 /*000100*/,0xFD2E /*176456*/,0x0A26 /*005046*/,0x15E6 /*012746*/,0x062E /*003056*/,0x10A6 /*010246*/,0x01E3 /*000743*/,0x3400 /*032000*/,
0x4A00 /*045000*/,0x1302 /*011402*/,0x0701 /*003401*/,0x3789 /*033611*/,0x6A0A /*065012*/,0xF715 /*173425*/,0x0115 /*000425*/,0x6800 /*064000*/,
0xD615 /*153025*/,0x770B /*073413*/,0xEC00 /*166000*/,0xA603 /*123003*/,0xC210 /*141020*/,0x0E9D /*007235*/,0xC2FD /*141375*/,0x8045 /*100105*/,
0x97FF /*113777*/,0x10A0 /*010240*/,0x0200 /*001000*/,0x8203 /*101003*/,0x0215 /*001025*/,0xE600 /*163000*/,0x4A1D /*045035*/,0xF715 /*173425*/,
0x5115 /*050425*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0278 /*001170*/,0x0001 /*000001*/,0x1544 /*012504*/,0x15C2 /*012702*/,0x005E /*000136*/,
0x8900 /*104400*/,0x15C2 /*012702*/,0x0050 /*000120*/,0x8900 /*104400*/,0x15B7 /*012667*/,0x1534 /*012464*/,0x15F7 /*012767*/,0x0001 /*000001*/,
0x1530 /*012460*/,0x01ED /*000755*/,0x9442 /*112102*/,0xA5C2 /*122702*/,0x0020 /*000040*/,0x03FC /*001774*/,0x0087 /*000207*/,0xA257 /*121127*/,
0x003A /*000072*/,0x0304 /*001404*/,0xA457 /*122127*/,0x011C /*000434*/,0x3400 /*032000*/,0xA600 /*123000*/,0x0A02 /*005002*/,0xFA00 /*175000*/,
0xC102 /*140402*/,0x870A /*103412*/,0x3700 /*033400*/,0x060A /*003012*/,0xF715 /*173425*/,0x000B /*000013*/,0x0415 /*002025*/,0xC503 /*142403*/,
0xFA1D /*175035*/,0x3714 /*033424*/,0xF60A /*173012*/,0x8714 /*103424*/,0x4A00 /*045000*/,0x0089 /*000211*/,0x4A0A /*045012*/,0x4089 /*040211*/,
0x4A11 /*045021*/,0x4A89 /*045211*/,0x4A89 /*045211*/,0x8789 /*103611*/,0x8000 /*100000*/,0xFE10 /*177020*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x02D4 /*001324*/,0x894A /*104512*/,0x10C0 /*010300*/,0x894A /*104512*/,0x1100 /*010400*/,0x894A /*104512*/,0x0087 /*000207*/,0x1126 /*010446*/,
0x1144 /*010504*/,0x65C4 /*062704*/,0x0014 /*000024*/,0x2106 /*020406*/,0x860C /*103014*/,0x0BF7 /*005767*/,0x14C6 /*012306*/,0x0206 /*001006*/,
0x1177 /*010567*/,0x14C0 /*012300*/,0x0A85 /*005205*/,0x0C85 /*006205*/,0x00A1 /*000241*/,0x0CC5 /*006305*/,0x1015 /*010025*/,0x1584 /*012604*/,
0x0102 /*000402*/,0x3400 /*032000*/,0x0200 /*001000*/,0x8703 /*103403*/,0x0100 /*000400*/,0xC089 /*140211*/,0x8012 /*100022*/,0x0443 /*002103*/,
0x1320 /*011440*/,0xC003 /*140003*/,0xFF45 /*177505*/,0xC01F /*140037*/,0x0025 /*000045*/,0x1240 /*011100*/,0xC302 /*141402*/,0x1065 /*010145*/,
0x0600 /*003000*/,0xC301 /*141401*/,0x0C0B /*006013*/,0x4603 /*043003*/,0xEF21 /*167441*/,0x6686 /*063206*/,0x2610 /*023020*/,0xC610 /*143020*/,
0xEB20 /*165440*/,0xC586 /*142606*/,0xAA20 /*125040*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0330 /*001460*/,0x87EA /*103752*/,0x0A03 /*005003*/,
0x1580 /*012600*/,0x1581 /*012601*/,0x0BC3 /*005703*/,0x0087 /*000207*/,0x0605 /*003005*/,0x65C3 /*062703*/,0x0002 /*000002*/,0x65C3 /*062703*/,
0x0004 /*000004*/,0x01F1 /*000761*/,0x0BC0 /*005700*/,0x0302 /*001402*/,0x0BD3 /*005723*/,0x01ED /*000755*/,0x9CC0 /*116300*/,0x0002 /*000002*/,
0x9CC1 /*116301*/,0x0003 /*000003*/,0x8952 /*104522*/,0x6003 /*060003*/,0x01F2 /*000762*/,0x01BC /*000674*/,0x3400 /*032000*/,0x5E00 /*057000*/,
0xC003 /*140003*/,0x0045 /*000105*/,0xC1FF /*140777*/,0x0045 /*000105*/,0x80FF /*100377*/,0x810A /*100412*/,0x260A /*023012*/,0xE611 /*163021*/,
0x0E10 /*007020*/,0x8389 /*101611*/,0x8415 /*102025*/,0xC115 /*140425*/,0x060B /*003013*/,0x1702 /*013402*/,0x0020 /*000040*/,0x0324 /*001444*/,
0x5886 /*054206*/,0xAF89 /*127611*/,0x8700 /*103400*/,0xB200 /*131000*/,0x8700 /*103400*/,0xC100 /*140400*/,0x4210 /*041020*/,0x2C10 /*026020*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x038C /*001614*/,0x6101 /*060401*/,0x0104 /*000404*/,0x894E /*104516*/,0x1043 /*010103*/,0x1042 /*010102*/,
0x8942 /*104502*/,0x2045 /*020105*/,0x8602 /*103002*/,0x9453 /*112123*/,0x01FC /*000774*/,0x10C5 /*010305*/,0x1081 /*010201*/,0x0087 /*000207*/,
0xA457 /*122127*/,0x000A /*000012*/,0x02FD /*001375*/,0x0087 /*000207*/,0x1DC1 /*016701*/,0x1400 /*012000*/,0x8942 /*104502*/,0x2045 /*020105*/,
0x860B /*103013*/,0x1026 /*010046*/,0x015C /*000534*/,0x3400 /*032000*/,0xBA00 /*135000*/,0x6603 /*063003*/,0x0810 /*004020*/,0x8189 /*100611*/,
0x0215 /*001025*/,0x8010 /*100020*/,0x0215 /*001025*/,0x0220 /*001040*/,0xF403 /*172003*/,0xAF06 /*127406*/,0x8700 /*103400*/,0xAF00 /*127400*/,
0xB200 /*131000*/,0x8700 /*103400*/,0x3A00 /*035000*/,0x3889 /*034211*/,0x0E89 /*007211*/,0x0D03 /*006403*/,0xC285 /*141205*/,0xC045 /*140105*/,
0x84FF /*102377*/,0xC410 /*142020*/,0x8400 /*102000*/,0x840C /*102014*/,0x260C /*023014*/,0x0001 /*000001*/,0x0034 /*000064*/,0x03E8 /*001750*/,
0x893A /*104472*/,0x8938 /*104470*/,0x0202 /*001002*/,0x5084 /*050204*/,0x893A /*104472*/,0x00AF /*000257*/,0x0087 /*000207*/,0x00B2 /*000262*/,
0x0087 /*000207*/,0x0BC0 /*005700*/,0x05E6 /*002746*/,0x2017 /*020027*/,0x00FF /*000377*/,0x06E3 /*003343*/,0x00B4 /*000264*/,0x0087 /*000207*/,
0x893A /*104472*/,0x8938 /*104470*/,0x020D /*001015*/,0x0AC1 /*005301*/,0x8908 /*104410*/,0x1026 /*010046*/,0x893A /*104472*/,0x015A /*000532*/,
0x3400 /*032000*/,0x1600 /*013000*/,0xC204 /*141004*/,0x2C25 /*026045*/,0x0800 /*004000*/,0x0802 /*004002*/,0xC089 /*140211*/,0x050B /*002413*/,
0x0403 /*002003*/,0x8310 /*101420*/,0x8715 /*103425*/,0x2600 /*023000*/,0xF50A /*172412*/,0x0401 /*002001*/,0xFA0A /*175012*/,0xF701 /*173401*/,
0x0115 /*000425*/,0x8800 /*104000*/,0x7713 /*073423*/,0xE600 /*163000*/,0xF700 /*173400*/,0x0115 /*000425*/,0x7C00 /*076000*/,0xC513 /*142423*/,
0x6E1D /*067035*/,0xCA13 /*145023*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0444 /*002104*/,0x0A85 /*005205*/,0x0A37 /*005067*/,0x136C /*011554*/,
0x0A37 /*005067*/,0x1374 /*011564*/,0x0A37 /*005067*/,0x135E /*011536*/,0x0077 /*000167*/,0x019C /*000634*/,0x1144 /*010504*/,0x6004 /*060004*/,
0x1183 /*010603*/,0xE5C3 /*162703*/,0x0038 /*000070*/,0x20C4 /*020304*/,0x0087 /*000207*/,0x10E6 /*010346*/,0x895E /*104536*/,0x851F /*102437*/,
0xA257 /*121127*/,0x002C /*000054*/,0x0221 /*001041*/,0x09F7 /*004767*/,0x0145 /*000505*/,0x3400 /*032000*/,0x7200 /*071000*/,0x4204 /*041004*/,
0x3A00 /*035000*/,0x2689 /*023211*/,0x5E10 /*057020*/,0x1B89 /*015611*/,0x2084 /*020204*/,0x1A89 /*015211*/,0x8281 /*101201*/,0x8415 /*102025*/,
0x001F /*000037*/,0xC400 /*142000*/,0x0045 /*000105*/,0x04FF /*002377*/,0x1320 /*011440*/,0x6606 /*063006*/,0x8110 /*100420*/,0x2610 /*023020*/,
0x0010 /*000020*/,0x8011 /*100021*/,0x0E0A /*007012*/,0x8089 /*100211*/,0x5865 /*054145*/,0x8189 /*100611*/,0x0615 /*003025*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x04A0 /*002240*/,0x6380 /*061600*/,0x0BD0 /*005720*/,0x1583 /*012603*/,0x0087 /*000207*/,0x09F7 /*004767*/,0x000A /*000012*/,
0x1002 /*010002*/,0x0A00 /*005000*/,0x01E8 /*000750*/,0x890B /*104413*/,0x890D /*104415*/,0x8920 /*104440*/,0x81FD /*100775*/,0x1F84 /*017604*/,
0x0002 /*000002*/,0x00C4 /*000304*/,0x45C4 /*042704*/,0xFF00 /*177400*/,0x2004 /*020004*/,0x06F6 /*003366*/,0x0087 /*000207*/,0xE5C6 /*162706*/,
0x0008 /*000010*/,0x011F /*000437*/,0x3400 /*032000*/,0xCE00 /*147000*/,0x8004 /*100004*/,0xC111 /*140421*/,0xDC1D /*156035*/,0x0A12 /*005022*/,
0x8089 /*100211*/,0xD011 /*150021*/,0x360B /*033013*/,0x078A /*003612*/,0x3600 /*033000*/,0xC689 /*143211*/,0x0865 /*004145*/,0x8700 /*103400*/,
0xA100 /*120400*/,0xC000 /*140000*/,0x260C /*023014*/,0xC010 /*140020*/,0x800C /*100014*/,0x8765 /*103545*/,0xC300 /*141400*/,0xC01D /*140035*/,
0x8312 /*101422*/,0x830A /*101412*/,0xA10C /*120414*/,0x1300 /*011400*/,0x0001 /*000001*/,0x0034 /*000064*/,0x04FC /*002374*/,0x0CC3 /*006303*/,
0x0087 /*000207*/,0x893A /*104472*/,0x1084 /*010204*/,0x00C4 /*000304*/,0x893A /*104472*/,0x5084 /*050204*/,0x0087 /*000207*/,0x10E6 /*010346*/,
0x10A6 /*010246*/,0x1DA6 /*016646*/,0x0004 /*000004*/,0x1136 /*010466*/,0x0006 /*000006*/,0x2146 /*020506*/,0x8601 /*103001*/,0x0087 /*000207*/,
0x8901 /*104401*/,0x894E /*104516*/,0x8946 /*104506*/,0x10C0 /*010300*/,0x0230 /*001060*/,0x1DC3 /*016703*/,0x01F5 /*000765*/,0x3400 /*032000*/,
0x2A00 /*025000*/,0x8605 /*103005*/,0xC412 /*142022*/,0x320B /*031013*/,0x4402 /*042002*/,0xF711 /*173421*/,0x8C0B /*106013*/,0x3E12 /*037022*/,
0xC202 /*141002*/,0x9794 /*113624*/,0x60A0 /*060240*/,0x1100 /*010400*/,0xC205 /*141005*/,0x60E5 /*060345*/,0xC000 /*140000*/,0x9615 /*113025*/,
0x8107 /*100407*/,0xC110 /*140420*/,0x040A /*002012*/,0x1705 /*013405*/,0x24A4 /*022244*/,0xFD00 /*176400*/,0xFA02 /*175002*/,0x0201 /*001001*/,
0x7C94 /*076224*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0558 /*002530*/,0xA097 /*120227*/,0x0024 /*000044*/,0x03EA /*001752*/,0x8900 /*104400*/,
0x01FA /*000772*/,0xA097 /*120227*/,0x000A /*000012*/,0x0302 /*001402*/,0x8900 /*104400*/,0x01E3 /*000743*/,0x8902 /*104402*/,0x20C4 /*020304*/,
0x87E0 /*103740*/,0x0BF7 /*005767*/,0x1248 /*011110*/,0x0306 /*001406*/,0x0A02 /*005002*/,0x15C1 /*012701*/,0x0040 /*000100*/,0x8900 /*104400*/,
0x0AC1 /*005301*/,0x02FD /*001375*/,0x0077 /*000167*/,0x01C8 /*000710*/,0x3400 /*032000*/,0x8600 /*103000*/,0xBE05 /*137005*/,0x2600 /*023000*/,
0x3C11 /*036021*/,0x8489 /*102211*/,0x4515 /*042425*/,0xCB20 /*145440*/,0x4382 /*041602*/,0x0010 /*000020*/,0x0721 /*003441*/,0x0007 /*000007*/,
0xE611 /*163021*/,0x3C10 /*036020*/,0x0689 /*003211*/,0x8302 /*101402*/,0x4515 /*042425*/,0xC520 /*142440*/,0x4282 /*041202*/,0x4489 /*042211*/,
0xC310 /*141420*/,0x8301 /*101401*/,0x4515 /*042425*/,0xBF20 /*137440*/,0xFA82 /*175202*/,0x8501 /*102401*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x05B4 /*002664*/,0x0077 /*000167*/,0x0076 /*000166*/,0x894E /*104516*/,0x8946 /*104506*/,0x1DC1 /*016701*/,0x11F2 /*010762*/,0x0BC4 /*005704*/,
0x0201 /*001001*/,0x10C4 /*010304*/,0x1126 /*010446*/,0x10E6 /*010346*/,0x8942 /*104502*/,0x2045 /*020105*/,0x860A /*103012*/,0x1066 /*010146*/,
0x8908 /*104410*/,0x1581 /*012601*/,0x200E /*020016*/,0x05F8 /*002770*/,0x2036 /*020066*/,0x0002 /*000002*/,0x0602 /*003002*/,0x893E /*104476*/,
0x011C /*000434*/,0x3400 /*032000*/,0xE200 /*161000*/,0xF405 /*172005*/,0x9601 /*113001*/,0x3125 /*030445*/,0x4E01 /*047001*/,0x3C89 /*036211*/,
0x0B89 /*005611*/,0x3E02 /*037002*/,0x0989 /*004611*/,0xF701 /*173401*/,0x9E09 /*117011*/,0xC2FC /*141374*/,0x3AA5 /*035245*/,0x5000 /*050000*/,
0xC203 /*141003*/,0x0AA5 /*005245*/,0x0100 /*000400*/,0x0703 /*003403*/,0xF789 /*173611*/,0xAC0B /*126013*/,0x2511 /*022421*/,0xF703 /*173403*/,
0xA80B /*124013*/,0x0311 /*001421*/,0x4D03 /*046403*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0610 /*003020*/,0x2077 /*020167*/,0x11A2 /*010642*/,
0x0101 /*000401*/,0x2045 /*020105*/,0x864C /*103114*/,0x09F7 /*004767*/,0x0D02 /*006402*/,0x1037 /*010067*/,0x118E /*010616*/,0x013C /*000474*/,
0x1DC5 /*016705*/,0x118A /*010612*/,0x0A85 /*005205*/,0x0A37 /*005067*/,0x1188 /*010610*/,0x1DC6 /*016706*/,0x1198 /*010630*/,0x0A37 /*005067*/,
0x1186 /*010606*/,0x0A37 /*005067*/,0x1188 /*010610*/,0x0A37 /*005067*/,0x1172 /*010562*/,0x0118 /*000430*/,0x3400 /*032000*/,0x3E00 /*037000*/,
0xF706 /*173406*/,0x0115 /*000425*/,0x7C00 /*076000*/,0x0211 /*001021*/,0x3789 /*033611*/,0x740A /*072012*/,0x3711 /*033421*/,0x660A /*063012*/,
0xC011 /*140021*/,0x3E15 /*037025*/,0x3608 /*033010*/,0x3789 /*033611*/,0x6A0A /*065012*/,0x4011 /*040021*/,0x3A89 /*035211*/,0x9789 /*113611*/,
0x0A20 /*005040*/,0xF900 /*174400*/,0xC103 /*140403*/,0x6015 /*060025*/,0x0817 /*004027*/,0x5789 /*053611*/,0x0AA2 /*005242*/,0x2400 /*022000*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x066C /*003154*/,0x03BD /*001675*/,0x1043 /*010103*/,0x15C0 /*012700*/,0x0796 /*003626*/,0x0A02 /*005002*/,
0xA4D7 /*122327*/,0x0020 /*000040*/,0x03FD /*001775*/,0xA8D0 /*124320*/,0x0205 /*001005*/,0x0A83 /*005203*/,0xA217 /*121027*/,0x0024 /*000044*/,
0x0318 /*001430*/,0x01F6 /*000766*/,0xA417 /*122027*/,0x0024 /*000044*/,0x02FD /*001375*/,0xA217 /*121027*/,0x0024 /*000044*/,0x0310 /*001420*/,
0x1043 /*010103*/,0x0A82 /*005202*/,0x0185 /*000605*/,0x3400 /*032000*/,0x9A00 /*115000*/,0xED06 /*166406*/,0xF701 /*173401*/,0x220B /*021013*/,
0xC611 /*143021*/,0xF702 /*173402*/,0xEE09 /*167011*/,0xC2FB /*141373*/,0x60E5 /*060345*/,0x0500 /*002400*/,0xC281 /*141201*/,0x7A0C /*075014*/,
0x1000 /*010000*/,0x7708 /*073410*/,0x9000 /*110000*/,0x0301 /*001401*/,0xC289 /*141211*/,0x6065 /*060145*/,0x9100 /*110400*/,0x4490 /*042220*/,
0xD110 /*150420*/,0xD792 /*153622*/,0x0AA4 /*005244*/,0xFC00 /*176000*/,0xF402 /*172002*/,0x0001 /*000001*/,0x0034 /*000064*/,0x06C8 /*003310*/,
0xA097 /*120227*/,0x0063 /*000143*/,0x0335 /*001465*/,0x2097 /*020227*/,0x006D /*000155*/,0x021D /*001035*/,0x1101 /*010401*/,0x893A /*104472*/,
0xA097 /*120227*/,0x0054 /*000124*/,0x0212 /*001022*/,0x893A /*104472*/,0xA097 /*120227*/,0x0048 /*000110*/,0x020E /*001016*/,0x893A /*104472*/,
0xA097 /*120227*/,0x0045 /*000105*/,0x020A /*001012*/,0x893A /*104472*/,0xA097 /*120227*/,0x004E /*000116*/,0x0206 /*001006*/,0x0187 /*000607*/,
0x3400 /*032000*/,0xF600 /*173000*/,0x3A06 /*035006*/,0xC189 /*140611*/,0x440A /*042012*/,0x3810 /*034020*/,0x0789 /*003611*/,0xB603 /*133003*/,
0x9701 /*113401*/,0x0AA0 /*005240*/,0x1800 /*014000*/,0x9703 /*113403*/,0x3AA0 /*035240*/,0xE400 /*162000*/,0x0102 /*000402*/,0x5711 /*053421*/,
0x22A2 /*021242*/,0x0800 /*004000*/,0x5703 /*053403*/,0x3AA4 /*035244*/,0xED00 /*166400*/,0x5703 /*053403*/,0x0AA8 /*005250*/,0x0A00 /*005000*/,
0x8103 /*100403*/,0xBA0A /*135012*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0724 /*003444*/,0x01F5 /*000765*/,0x0A81 /*005201*/,0xA257 /*121127*/,
0x0022 /*000042*/,0x03FA /*001772*/,0xA257 /*121127*/,0x000A /*000012*/,0x02F9 /*001371*/,0x8933 /*104463*/,0x0A81 /*005201*/,0x1043 /*010103*/,
0x15C1 /*012701*/,0x1760 /*013540*/,0x893A /*104472*/,0x8938 /*104470*/,0x0302 /*001402*/,0x0AC1 /*005301*/,0x01AA /*000652*/,0x894E /*104516*/,
0x15C1 /*012701*/,0x1760 /*013540*/,0xE043 /*160103*/,0x10E6 /*010346*/,0x01E6 /*000746*/,0x3400 /*032000*/,0x5200 /*051000*/,0x0807 /*004007*/,
0xC089 /*140211*/,0x1E0B /*017013*/,0x1703 /*013403*/,0xFF20 /*177440*/,0x1B1F /*015437*/,0x3C06 /*036006*/,0x0189 /*000611*/,0x3E02 /*037002*/,
0x8389 /*101611*/,0x4E15 /*047025*/,0xC089 /*140211*/,0x4410 /*042020*/,0x0389 /*001611*/,0x0186 /*000606*/,0x0589 /*002611*/,0x0860 /*004140*/,
0x4501 /*042401*/,0xFC20 /*176040*/,0x4286 /*041206*/,0x0511 /*002421*/,0x4460 /*042140*/,0xA411 /*122021*/,0x3398 /*031630*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x0780 /*003600*/,0x2042 /*020102*/,0x83FD /*101775*/,0x15C2 /*012702*/,0x1760 /*013540*/,0x9291 /*111221*/,0xA497 /*122227*/,
0x000A /*000012*/,0x02FC /*001374*/,0x0077 /*000167*/,0xFE70 /*177160*/,0x8921 /*104441*/,0x494C /*044514*/,0x5453 /*052123*/,0x4C24 /*046044*/,
0x5445 /*052105*/,0x5224 /*051044*/,0x4145 /*040505*/,0x2444 /*022104*/,0x4552 /*042522*/,0x244D /*022115*/,0x5552 /*052522*/,0x244E /*022116*/,
0x4552 /*042522*/,0x01BE /*000676*/,0x3400 /*032000*/,0xAE00 /*127000*/,0x5307 /*051407*/,0x4F54 /*047524*/,0x4552 /*042522*/,0x5224 /*051044*/,
0x5445 /*052105*/,0x5255 /*051125*/,0x244E /*022116*/,0x4144 /*040504*/,0x4154 /*040524*/,0x4424 /*042044*/,0x4D49 /*046511*/,0x4424 /*042044*/,
0x4C45 /*046105*/,0x5445 /*052105*/,0x2445 /*022105*/,0x5250 /*051120*/,0x4E49 /*047111*/,0x2454 /*022124*/,0x4F47 /*047507*/,0x5553 /*052523*/,
0x2442 /*022102*/,0x4F47 /*047507*/,0x4F54 /*047524*/,0x9C24 /*116044*/,0x0001 /*000001*/,0x0034 /*000064*/,0x07DC /*003734*/,0x4649 /*043111*/,
0x4624 /*043044*/,0x524F /*051117*/,0x4E24 /*047044*/,0x5845 /*054105*/,0x2454 /*022124*/,0x4E49 /*047111*/,0x5550 /*052520*/,0x2454 /*022124*/,
0x4153 /*040523*/,0x4556 /*042526*/,0x5324 /*051444*/,0x4F54 /*047524*/,0x2450 /*022120*/,0x4E45 /*047105*/,0x2444 /*022104*/,0x4544 /*042504*/,
0x2446 /*022106*/,0x4C4F /*046117*/,0x2444 /*022104*/,0x4152 /*040522*/,0x444E /*042116*/,0x4D4F /*046517*/,0x01A4 /*000644*/,0x0B00 /*005400*/,
0x0A00 /*005000*/,0x4908 /*044410*/,0x455A /*042532*/,0x2424 /*022044*/,0x01B2 /*000662*/,0x3400 /*032000*/,0x1000 /*010000*/,0x2008 /*020010*/,
0x3805 /*034005*/,0x680C /*064014*/,0xD40E /*152016*/,0x680C /*064014*/,0xA008 /*120010*/,0xA608 /*123010*/,0xD408 /*152010*/,0xDA0C /*155014*/,
0xB808 /*134010*/,0x1805 /*014005*/,0x840D /*102015*/,0x8E08 /*107010*/,0x6008 /*060010*/,0xC20C /*141014*/,0x900E /*110016*/,0xB00F /*130017*/,
0x300D /*030015*/,0x4604 /*043004*/,0x4608 /*043010*/,0x3C08 /*036010*/,0x3A09 /*035011*/,0x2C04 /*026004*/,0x4110 /*040420*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x083E /*004076*/,0x4552 /*042522*/,0x4441 /*042101*/,0x0D59 /*006531*/,0x000A /*000012*/,0x8902 /*104402*/,0x15C0 /*012700*/,
0x085A /*004132*/,0x8936 /*104466*/,0x8904 /*104404*/,0x8902 /*104402*/,0x0A37 /*005067*/,0x0F5A /*007532*/,0x0077 /*000167*/,0xFDF0 /*176760*/,
0x5453 /*052123*/,0x504F /*050117*/,0x4120 /*040440*/,0x2054 /*020124*/,0x494C /*044514*/,0x454E /*042516*/,0x0020 /*000040*/,0x894E /*104516*/,
0x0A37 /*005067*/,0x01D7 /*000727*/,0x3400 /*032000*/,0x6C00 /*066000*/,0x4208 /*041010*/,0xC10F /*140417*/,0x401D /*040035*/,0x810F /*100417*/,
0xF70A /*173412*/,0x4715 /*043425*/,0xAE17 /*127027*/,0xF707 /*173407*/,0x0115 /*000425*/,0x3400 /*032000*/,0x770F /*073417*/,0x8000 /*100000*/,
0xC0FD /*140375*/,0x281D /*024035*/,0xC00F /*140017*/,0x0055 /*000125*/,0x4A20 /*045040*/,0x0889 /*004211*/,0x3C89 /*036211*/,0x0589 /*002611*/,
0xF702 /*173402*/,0x0115 /*000425*/,0x1A00 /*015000*/,0x3C0F /*036017*/,0x0001 /*000001*/,0x0034 /*000064*/,0x089A /*004232*/,0x0077 /*000167*/,
0xFD7C /*176574*/,0x8905 /*104405*/,0x0A37 /*005067*/,0x0F14 /*007424*/,0x0147 /*000507*/,0x0A26 /*005046*/,0x15C4 /*012704*/,0x2000 /*020000*/,
0x895C /*104534*/,0x0314 /*001424*/,0x15C0 /*012700*/,0x1FFF /*017777*/,0x894C /*104514*/,0x0303 /*001403*/,0x10CE /*010316*/,0x0BD3 /*005723*/,
0x01FB /*000773*/,0x1583 /*012603*/,0x030B /*001413*/,0x12C0 /*011300*/,0x4100 /*040400*/,0x0A80 /*005200*/,0x0111 /*000421*/,0x3400 /*032000*/,
0xC800 /*144000*/,0xC408 /*142010*/,0x0215 /*001025*/,0x5000 /*050000*/,0x1789 /*013611*/,0x0120 /*000440*/,0xBF00 /*137400*/,0x3C03 /*036003*/,
0xDE89 /*157211*/,0x0901 /*004401*/,0x6489 /*062211*/,0x1789 /*013611*/,0x2D85 /*026605*/,0x2602 /*023002*/,0x3A11 /*035021*/,0x9789 /*113611*/,
0x2820 /*024040*/,0x1100 /*010400*/,0x0802 /*004002*/,0x5489 /*052211*/,0x0E89 /*007211*/,0x2602 /*023002*/,0xCE10 /*147020*/,0x3A00 /*035000*/,
0x2E89 /*027211*/,0x0001 /*000001*/,0x0034 /*000064*/,0x08F6 /*004366*/,0xA097 /*120227*/,0x002C /*000054*/,0x0205 /*001005*/,0x8908 /*104410*/,
0x8954 /*104524*/,0x0205 /*001005*/,0x500E /*050016*/,0x893A /*104472*/,0x2097 /*020227*/,0x0029 /*000051*/,0x0301 /*001401*/,0x891B /*104433*/,
0x1582 /*012602*/,0x1580 /*012600*/,0x1066 /*010146*/,0x894A /*104512*/,0x1080 /*010200*/,0x894A /*104512*/,0x1081 /*010201*/,0x00C1 /*000301*/,
0x8952 /*104522*/,0x850B /*102413*/,0x8944 /*104504*/,0x01E3 /*000743*/,0x3400 /*032000*/,0x2400 /*022000*/,0x0909 /*004411*/,0x0587 /*002607*/,
0x8160 /*100540*/,0x3A15 /*035025*/,0x9789 /*113611*/,0x2C20 /*026040*/,0xD400 /*152000*/,0xC103 /*140403*/,0x770A /*073412*/,0xBA00 /*135000*/,
0x1DFC /*016774*/,0x2389 /*021611*/,0x6089 /*060211*/,0x1789 /*013611*/,0x4E21 /*047041*/,0x1B46 /*015506*/,0x3A02 /*035002*/,0x3889 /*034211*/,
0x1889 /*014211*/,0x1703 /*013403*/,0xC285 /*141205*/,0x0055 /*000125*/,0x8060 /*100140*/,0x3810 /*034020*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x0952 /*004522*/,0x894A /*104512*/,0x893A /*104472*/,0x2097 /*020227*/,0x0028 /*000050*/,0x020F /*001017*/,0x8956 /*104526*/,0x850D /*102415*/,
0x1100 /*010400*/,0x894A /*104512*/,0x2097 /*020227*/,0x0029 /*000051*/,0x0208 /*001010*/,0x893A /*104472*/,0x2097 /*020227*/,0x003D /*000075*/,
0x0204 /*001004*/,0x1040 /*010100*/,0x894A /*104512*/,0x8948 /*104510*/,0x01DD /*000735*/,0x891F /*104437*/,0x0A00 /*005000*/,0x894A /*104512*/,
0x0197 /*000627*/,0x3400 /*032000*/,0x8000 /*100000*/,0xE609 /*163011*/,0xFF15 /*177425*/,0x44FF /*042377*/,0x7189 /*070611*/,0x3A87 /*035207*/,
0x9789 /*113611*/,0x2B20 /*025440*/,0x0800 /*004000*/,0x9703 /*113403*/,0x2D20 /*026440*/,0x0600 /*003000*/,0x8002 /*100002*/,0x0210 /*001020*/,
0x030A /*001412*/,0x040A /*002012*/,0x080A /*004012*/,0x3A01 /*035001*/,0x9789 /*113611*/,0x2820 /*024040*/,0x0700 /*003400*/,0x2602 /*023002*/,
0xB50A /*132412*/,0xFE0A /*177012*/,0x91FF /*110777*/,0x0001 /*000001*/,0x0034 /*000064*/,0x09AE /*004656*/,0x01EA /*000752*/,0x8962 /*104542*/,
0x1026 /*010046*/,0x01F5 /*000765*/,0x0AC1 /*005301*/,0x1966 /*014546*/,0x09F7 /*004767*/,0x00C2 /*000302*/,0x1595 /*012625*/,0x10A6 /*010246*/,
0x893A /*104472*/,0x15C0 /*012700*/,0x0A73 /*005163*/,0xA802 /*124002*/,0x0307 /*001407*/,0x2017 /*020027*/,0x0A6D /*005155*/,0x82FB /*101373*/,
0x0A00 /*005000*/,0x0AC1 /*005301*/,0x1582 /*012602*/,0x0102 /*000402*/,0x1080 /*010200*/,0x01B3 /*000663*/,0x3400 /*032000*/,0xDC00 /*156000*/,
0xFC09 /*176011*/,0xCE01 /*147001*/,0x2F0B /*027413*/,0x6607 /*063007*/,0xC110 /*140420*/,0x7315 /*071425*/,0x400A /*040012*/,0xFEA8 /*177250*/,
0x8102 /*100402*/,0x550C /*052414*/,0xC110 /*140420*/,0x7315 /*071425*/,0x760A /*073012*/,0x02A8 /*001250*/,0xFD00 /*176400*/,0x8102 /*100402*/,
0x550C /*052414*/,0x8110 /*100420*/,0x6515 /*062425*/,0xD629 /*153051*/,0x1505 /*012405*/,0xC010 /*140020*/,0x7315 /*071425*/,0x5D0A /*056412*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x0A0A /*005012*/,0xA80E /*124016*/,0x02FE /*001376*/,0xE5C0 /*162700*/,0x0A6E /*005156*/,0x0CC0 /*006300*/,
0x65C0 /*062700*/,0x0A74 /*005164*/,0x1015 /*010025*/,0x0BD6 /*005726*/,0x1180 /*010600*/,0x8962 /*104542*/,0x1066 /*010146*/,0x1181 /*010601*/,
0x0BD1 /*005721*/,0x1942 /*014502*/,0x1966 /*014546*/,0x09FA /*004772*/,0x0000 /*000000*/,0x1580 /*012600*/,0x1581 /*012601*/,0x65C6 /*062706*/,
0x0006 /*000006*/,0x1582 /*012602*/,0x013F /*000477*/,0x3400 /*032000*/,0x3800 /*034000*/,0x830A /*101412*/,0x8415 /*102025*/,0xCE15 /*147025*/,
0xD10B /*150413*/,0x1706 /*013406*/,0x2920 /*024440*/,0x0800 /*004000*/,0xC003 /*140003*/,0xB30B /*131413*/,0xE506 /*162406*/,0x030B /*001413*/,
0xD602 /*153002*/,0xAF0B /*127413*/,0x8700 /*103400*/,0x0F00 /*007400*/,0xE589 /*162611*/,0x030B /*001413*/,0xD602 /*153002*/,0xB20B /*131013*/,
0x8700 /*103400*/,0xCE00 /*147000*/,0xFB0B /*175413*/,0xD605 /*153005*/,0x4C0B /*046013*/,0x0001 /*000001*/,0x0013 /*000023*/,0x0A66 /*005146*/,
0x0AD5 /*005325*/,0x01AB /*000653*/,0x8901 /*104401*/,0x2900 /*024400*/,0x2D2B /*026453*/,0x2F2A /*027452*/,0x2F5E /*027536*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x0A74 /*005164*/,0x148E /*012216*/,0x1522 /*012442*/,0x15FE /*012776*/,0x1568 /*012550*/,0x17CC /*013714*/,0x8937 /*104467*/,
0x1066 /*010146*/,0x893A /*104472*/,0x8938 /*104470*/,0x850F /*102417*/,0x0212 /*001022*/,0x1581 /*012601*/,0xE5C6 /*162706*/,0x0006 /*000006*/,
0x1180 /*010600*/,0x8906 /*104406*/,0x85F4 /*102764*/,0x1582 /*012602*/,0x1583 /*012603*/,0x1584 /*012604*/,0x0087 /*000207*/,0x1402 /*012002*/,
0x1403 /*012003*/,0x0143 /*000503*/,0x3400 /*032000*/,0xA200 /*121000*/,0x040A /*002012*/,0x8714 /*103424*/,0x9700 /*113400*/,0x2E20 /*027040*/,
0xEF00 /*167400*/,0x3903 /*034403*/,0x9701 /*113401*/,0x4620 /*043040*/,0x3B00 /*035400*/,0xE603 /*163003*/,0xC015 /*140025*/,0x82FF /*101377*/,
0x8043 /*100103*/,0x5810 /*054020*/,0x5889 /*054211*/,0x3A89 /*035211*/,0x3889 /*034211*/,0x2C89 /*026211*/,0x2B85 /*025605*/,0x8203 /*101003*/,
0x8043 /*100103*/,0x5860 /*054140*/,0x5889 /*054211*/,0x9989 /*114611*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0AD0 /*005320*/,0x893A /*104472*/,
0x8938 /*104470*/,0x8524 /*102444*/,0x0323 /*001443*/,0x4582 /*042602*/,0x6080 /*060200*/,0x15C3 /*012703*/,0x0BDC /*005734*/,0x24C0 /*022300*/,
0x0304 /*001404*/,0x20D7 /*020327*/,0x0BF2 /*005762*/,0x87FB /*103773*/,0x016A /*000552*/,0x893A /*104472*/,0x2097 /*020227*/,0x0028 /*000050*/,
0x0266 /*001146*/,0x1CE6 /*016346*/,0x0014 /*000024*/,0x895E /*104536*/,0x8413 /*102023*/,0x1580 /*012600*/,0x0139 /*000471*/,0x3400 /*032000*/,
0xFE00 /*177000*/,0x620A /*061012*/,0x0289 /*001211*/,0x8010 /*100020*/,0x6611 /*063021*/,0x0110 /*000420*/,0xC610 /*143020*/,0x06E5 /*003345*/,
0x8000 /*100000*/,0xCA11 /*145021*/,0x8209 /*101011*/,0x8315 /*101425*/,0x8415 /*102025*/,0x8115 /*100425*/,0xC615 /*143025*/,0x0865 /*004145*/,
0x8700 /*103400*/,0xD600 /*153000*/,0x4F0B /*047413*/,0x9701 /*113401*/,0x8423 /*102043*/,0x1E1E /*017036*/,0xE902 /*164402*/,0x3A01 /*035001*/,
0x2789 /*023611*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0B2C /*005454*/,0x2097 /*020227*/,0x004E /*000116*/,0x0247 /*001107*/,0x893A /*104472*/,
0x8938 /*104470*/,0x8544 /*102504*/,0x0343 /*001503*/,0x895C /*104534*/,0x0347 /*001507*/,0x0A00 /*005000*/,0x55C2 /*052702*/,0x6000 /*060000*/,
0x1084 /*010204*/,0x894C /*104514*/,0x033B /*001473*/,0x0BD3 /*005723*/,0x14C4 /*012304*/,0x14E6 /*012346*/,0x895C /*104534*/,0x894C /*104514*/,
0x0217 /*001027*/,0x893A /*104472*/,0x2097 /*020227*/,0x015F /*000537*/,0x3400 /*032000*/,0x5A00 /*055000*/,0x280B /*024013*/,0xE000 /*160000*/,
0x2602 /*023002*/,0x5E11 /*057021*/,0x0189 /*000611*/,0x0F85 /*007605*/,0x8089 /*100211*/,0x6615 /*063025*/,0x4A11 /*045021*/,0x0089 /*000211*/,
0x4A0A /*045012*/,0x6889 /*064211*/,0x6689 /*063211*/,0x8110 /*100420*/,0x041D /*002035*/,0x5E00 /*057000*/,0xF489 /*172211*/,0x8185 /*100605*/,
0x8515 /*102425*/,0x9615 /*113025*/,0x8725 /*103445*/,0xD300 /*151400*/,0x8024 /*100044*/,0xFD15 /*176425*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x0B88 /*005610*/,0x14E6 /*012346*/,0x14E6 /*012346*/,0x14E6 /*012346*/,0x10E6 /*010346*/,0x1026 /*010046*/,0x893A /*104472*/,0x2097 /*020227*/,
0x0028 /*000050*/,0x021E /*001036*/,0x895E /*104536*/,0x84E3 /*102343*/,0x1040 /*010100*/,0x1D81 /*016601*/,0x0002 /*000002*/,0x1121 /*010441*/,
0x10E1 /*010341*/,0x10A1 /*010241*/,0x1581 /*012601*/,0x1026 /*010046*/,0x895E /*104536*/,0x85D9 /*102731*/,0x1581 /*012601*/,0x1580 /*012600*/,
0x010E /*000416*/,0x3400 /*032000*/,0xB600 /*133000*/,0xA00B /*120013*/,0xA015 /*120025*/,0xA015 /*120025*/,0xD615 /*153025*/,0x870B /*103413*/,
0x8100 /*100400*/,0x6415 /*062025*/,0x0389 /*001611*/,0x0285 /*001205*/,0x7703 /*073403*/,0xD200 /*151000*/,0xF7FE /*173776*/,0x0289 /*001211*/,
0x030A /*001412*/,0x040A /*002012*/,0x870A /*103412*/,0xC600 /*143000*/,0x0A65 /*005145*/,0xF200 /*171000*/,0x8201 /*101001*/,0x5F61 /*057541*/,
0xEE11 /*167021*/,0xC007 /*140007*/,0xB21C /*131034*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0BE4 /*005744*/,0x3EE3 /*037343*/,0x056B /*002553*/,
0x62A6 /*061246*/,0x2F9C /*027634*/,0x5D1C /*056434*/,0x613A /*060472*/,0x1CB6 /*016266*/,0x1A10 /*015020*/,0x1A72 /*015162*/,0x1AB0 /*015260*/,
0x18B0 /*014260*/,0x17F4 /*013764*/,0x1538 /*012470*/,0x1BA2 /*015642*/,0x16FA /*013372*/,0x1004 /*010004*/,0x1552 /*012522*/,0x1E84 /*017204*/,
0x8956 /*104526*/,0x8512 /*102422*/,0x0AC1 /*005301*/,0x0A00 /*005000*/,0x895C /*104534*/,0x01D8 /*000730*/,0x3400 /*032000*/,0x1200 /*011000*/,
0x0D0C /*006414*/,0x4C03 /*046003*/,0x0B89 /*005611*/,0x9703 /*113403*/,0xDC23 /*156043*/,0x0B08 /*005410*/,0xD303 /*151403*/,0x570B /*053413*/,
0x28A2 /*024242*/,0x0600 /*003000*/,0x8102 /*100402*/,0x260A /*023012*/,0x5A11 /*055021*/,0x8489 /*102211*/,0xC015 /*140025*/,0x870B /*103413*/,
0xD300 /*151400*/,0xC00B /*140013*/,0x8710 /*103420*/,0x6400 /*062000*/,0x1089 /*010211*/,0x0285 /*001205*/,0x0002 /*000002*/,0xAB11 /*125421*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x0C40 /*006100*/,0x8966 /*104546*/,0x1026 /*010046*/,0x893A /*104472*/,0x2097 /*020227*/,0x003D /*000075*/,
0x0208 /*001010*/,0x895E /*104536*/,0x8507 /*102407*/,0x1580 /*012600*/,0x1090 /*010220*/,0x10D0 /*010320*/,0x1110 /*010420*/,0x0077 /*000167*/,
0xF996 /*174626*/,0x8911 /*104421*/,0x890F /*104417*/,0x895E /*104536*/,0x85FD /*102775*/,0x8962 /*104542*/,0x8960 /*104540*/,0x2097 /*020227*/,
0x003E /*000076*/,0x0305 /*001405*/,0x017E /*000576*/,0x3400 /*032000*/,0x6E00 /*067000*/,0x970C /*113414*/,0x3D20 /*036440*/,0x0200 /*001000*/,
0xC103 /*140403*/,0x040A /*002012*/,0xC28A /*141212*/,0xA815 /*124025*/,0x120C /*011014*/,0x0421 /*002041*/,0x9703 /*113403*/,0xB420 /*132040*/,
0xFB0C /*175414*/,0x1387 /*011607*/,0xC289 /*141211*/,0x5665 /*053145*/,0xC2F3 /*141363*/,0xC20C /*141014*/,0xB465 /*132145*/,0xA60C /*123014*/,
0x5E10 /*057020*/,0xE389 /*161611*/,0x6685 /*063205*/,0x8110 /*100420*/,0x7311 /*071421*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0C9C /*006234*/,
0x2451 /*022121*/,0x8962 /*104542*/,0x1180 /*010600*/,0x891C /*104434*/,0x007E /*000176*/,0x0008 /*000010*/,0x3C3E /*036076*/,0x3C3D /*036075*/,
0x3C00 /*036000*/,0x3E3D /*037075*/,0x3E00 /*037000*/,0x3D00 /*036400*/,0x0213 /*001023*/,0x0109 /*000411*/,0x0711 /*003421*/,0x0107 /*000407*/,
0x050F /*002417*/,0x0105 /*000405*/,0x040D /*002015*/,0x0103 /*000403*/,0x060B /*003013*/,0x0101 /*000401*/,0x0309 /*001411*/,0x0155 /*000525*/,
0x3400 /*032000*/,0xCA00 /*145000*/,0xC60C /*143014*/,0x0665 /*003145*/,0x8100 /*100400*/,0xC615 /*143025*/,0x0865 /*004145*/,0x4200 /*041000*/,
0xC189 /*140611*/,0x770A /*073412*/,0x1600 /*013000*/,0xC6F9 /*143371*/,0x0665 /*003145*/,0x8100 /*100400*/,0xC615 /*143025*/,0x0865 /*004145*/,
0x6000 /*060000*/,0x1789 /*013611*/,0x4821 /*044041*/,0x0D54 /*006524*/,0x6002 /*060002*/,0x1789 /*013611*/,0x4E21 /*047041*/,0x1045 /*010105*/,
0x3A02 /*035002*/,0x9089 /*110211*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0CF8 /*006370*/,0x0AC1 /*005301*/,0x8938 /*104470*/,0x8503 /*102403*/,
0x020B /*001013*/,0x0077 /*000167*/,0xFB8A /*175612*/,0x0077 /*000167*/,0xF994 /*174624*/,0x2117 /*020427*/,0x474F /*043517*/,0x0204 /*001004*/,
0x8960 /*104540*/,0x2117 /*020427*/,0x544F /*052117*/,0x03F5 /*001765*/,0x8915 /*104425*/,0x0A26 /*005046*/,0x15C0 /*012700*/,0x001C /*000034*/,
0x8944 /*104504*/,0x8746 /*103506*/,0x893A /*104472*/,0xA097 /*120227*/,0x01C3 /*000703*/,0x3400 /*032000*/,0x2600 /*023000*/,0x2C0D /*026015*/,
0x1C00 /*016000*/,0x9703 /*113403*/,0x3BA0 /*035640*/,0x2A00 /*025000*/,0x9703 /*113403*/,0x22A0 /*021240*/,0x2B00 /*025400*/,0x9703 /*113403*/,
0x3AA0 /*035240*/,0x3300 /*031400*/,0x9703 /*113403*/,0x0AA0 /*005240*/,0x3000 /*030000*/,0xCE03 /*147003*/,0x220B /*021013*/,0xC105 /*140405*/,
0x5E0A /*057012*/,0x1F89 /*017611*/,0x6685 /*063205*/,0xF710 /*173420*/,0x7C09 /*076011*/,0x8004 /*100004*/,0x2F11 /*027421*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x0D54 /*006524*/,0x8936 /*104466*/,0x65C6 /*062706*/,0x0014 /*000024*/,0x1581 /*012601*/,0x15CE /*012716*/,0xFFFF /*177777*/,
0x01DC /*000734*/,0x1DC0 /*016700*/,0x0A54 /*005124*/,0x2017 /*020027*/,0x0038 /*000070*/,0x0502 /*002402*/,0x8902 /*104402*/,0x010A /*000412*/,
0x0B00 /*005400*/,0x0603 /*003003*/,0x65C0 /*062700*/,0x000E /*000016*/,0x01FC /*000774*/,0x95C2 /*112702*/,0x0020 /*000040*/,0x8900 /*104400*/,
0x0AC0 /*005300*/,0x01C3 /*000703*/,0x3400 /*032000*/,0x8200 /*101000*/,0xFD0D /*176415*/,0xCE06 /*147006*/,0x0115 /*000425*/,0xC800 /*144000*/,
0x1701 /*013401*/,0x4289 /*041211*/,0x0094 /*000224*/,0x5789 /*053611*/,0x0AA2 /*005242*/,0xFA00 /*175000*/,0x5703 /*053403*/,0x22A2 /*021242*/,
0xF800 /*174000*/,0x8102 /*100402*/,0x0E0A /*007012*/,0xBC0A /*136012*/,0xD601 /*153001*/,0x010B /*000413*/,0x0206 /*001006*/,0xC189 /*140611*/,
0x770A /*073412*/,0x4400 /*042000*/,0x01F8 /*000770*/,0x9D89 /*116611*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0DB0 /*006660*/,0x0A26 /*005046*/,
0x09F7 /*004767*/,0x0080 /*000200*/,0x8401 /*102001*/,0x8925 /*104445*/,0x0A26 /*005046*/,0x1066 /*010146*/,0x15C2 /*012702*/,0x003F /*000077*/,
0x8900 /*104400*/,0x8940 /*104500*/,0x09F7 /*004767*/,0x002A /*000052*/,0x8512 /*102422*/,0x060D /*003015*/,0x050E /*002416*/,0x1581 /*012601*/,
0x0BD6 /*005726*/,0x0BD6 /*005726*/,0x02FE /*001376*/,0x0AC1 /*005301*/,0x0BF7 /*005767*/,0x09D6 /*004726*/,0x0132 /*000462*/,0x3400 /*032000*/,
0xDE00 /*157000*/,0x020D /*001015*/,0xC902 /*144402*/,0x0A95 /*005225*/,0x7700 /*073400*/,0x0A00 /*005000*/,0xF5F8 /*172770*/,0xE989 /*164611*/,
0xF301 /*171401*/,0xE789 /*163611*/,0xF101 /*170401*/,0xE589 /*162611*/,0x8401 /*102001*/,0x1411 /*012021*/,0xD425 /*152045*/,0xD40B /*152013*/,
0xFE0B /*177013*/,0xE402 /*162002*/,0x000B /*000013*/,0x1519 /*012431*/,0x2603 /*023003*/,0x0611 /*003021*/,0x1489 /*012211*/,0x8485 /*102205*/,
0x2B15 /*025425*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0E0C /*007014*/,0xA257 /*121127*/,0x002C /*000054*/,0x0308 /*001410*/,0xA257 /*121127*/,
0x003A /*000072*/,0x0307 /*001407*/,0xA257 /*121127*/,0x000A /*000012*/,0x0304 /*001404*/,0x00B2 /*000262*/,0x0087 /*000207*/,0x0A81 /*005201*/,
0x01ED /*000755*/,0x1900 /*014400*/,0x03FB /*001773*/,0x00B8 /*000270*/,0x0087 /*000207*/,0x00AF /*000257*/,0x0087 /*000207*/,0x0BD6 /*005726*/,
0x01F4 /*000764*/,0x8964 /*104544*/,0x8514 /*102424*/,0x01A0 /*000640*/,0x3400 /*032000*/,0x3A00 /*035000*/,0x020E /*001016*/,0x0002 /*000002*/,
0x6611 /*063021*/,0x8289 /*101211*/,0x2615 /*023025*/,0xC010 /*140020*/,0x0415 /*002025*/,0x4400 /*042000*/,0x0D89 /*006611*/,0xA687 /*123207*/,
0x3A10 /*035020*/,0x9789 /*113611*/,0x2CA0 /*026240*/,0xF000 /*170000*/,0x9703 /*113403*/,0x3AA0 /*035240*/,0x0400 /*002000*/,0x9703 /*113403*/,
0x0AA0 /*005240*/,0x0100 /*000400*/,0xB203 /*131003*/,0x8700 /*103400*/,0x0100 /*000400*/,0x2989 /*024611*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x0E68 /*007150*/,0x15E6 /*012746*/,0x0001 /*000001*/,0x0A26 /*005046*/,0x09F7 /*004767*/,0xFFC4 /*177704*/,0x8401 /*102001*/,0x8927 /*104447*/,
0x0A26 /*005046*/,0x1066 /*010146*/,0x1DC1 /*016701*/,0x093A /*004472*/,0x0203 /*001003*/,0x1DC1 /*016701*/,0x092E /*004456*/,0x0116 /*000426*/,
0xA257 /*121127*/,0x000A /*000012*/,0x0313 /*001423*/,0x09F7 /*004767*/,0xFF64 /*177544*/,0x8517 /*102427*/,0x050B /*002413*/,0x1077 /*010167*/,
0x018A /*000612*/,0x3400 /*032000*/,0x9600 /*113000*/,0x200E /*020016*/,0x8109 /*100411*/,0xD615 /*153025*/,0xD60B /*153013*/,0xFE0B /*177013*/,
0xD602 /*153002*/,0xFE0B /*177013*/,0xC103 /*140403*/,0x770A /*073412*/,0x4800 /*044000*/,0xD4F7 /*152367*/,0x140B /*012013*/,0xCC0A /*146012*/,
0xFD0B /*176413*/,0x5C02 /*056002*/,0xD189 /*150611*/,0x67A5 /*063645*/,0xE600 /*163000*/,0x4303 /*041403*/,0xFB20 /*175440*/,0x2987 /*024607*/,
0x2B89 /*025611*/,0x5689 /*053211*/,0x9B89 /*115611*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0EC4 /*007304*/,0x2097 /*020227*/,0x003D /*000075*/,
0x024F /*001117*/,0x0A00 /*005000*/,0x1126 /*010446*/,0x895C /*104534*/,0x894C /*104514*/,0x0203 /*001003*/,0x1100 /*010400*/,0x8966 /*104546*/,
0x0102 /*000402*/,0x10C0 /*010300*/,0x2410 /*022020*/,0x1026 /*010046*/,0x0A00 /*005000*/,0x895C /*104534*/,0x55C4 /*052704*/,0x4000 /*040000*/,
0x894C /*104514*/,0x0307 /*001407*/,0x1126 /*010446*/,0x1066 /*010146*/,0x15C4 /*012704*/,0x01CA /*000712*/,0x3400 /*032000*/,0xF200 /*171000*/,
0x100E /*010016*/,0x5000 /*050000*/,0x8189 /*100611*/,0x8415 /*102025*/,0x0015 /*000025*/,0x4A11 /*045021*/,0xC089 /*140211*/,0xAE1D /*127035*/,
0x4A08 /*045010*/,0x5E89 /*057211*/,0x8089 /*100211*/,0x9013 /*110023*/,0xD010 /*150020*/,0x1010 /*010020*/,0x6011 /*060021*/,0x1789 /*013611*/,
0x4F21 /*047441*/,0x2954 /*024524*/,0x5E02 /*057002*/,0x6889 /*064211*/,0x5789 /*053611*/,0x53A2 /*051642*/,0x0B00 /*005400*/,0x2E02 /*027002*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x0F20 /*007440*/,0x8960 /*104540*/,0x2117 /*020427*/,0x5354 /*051524*/,0x0220 /*001040*/,0x8960 /*104540*/,
0x2117 /*020427*/,0x4550 /*042520*/,0x021C /*001034*/,0x895E /*104536*/,0x8968 /*104550*/,0x0106 /*000406*/,0x0A02 /*005002*/,0x15C3 /*012703*/,
0x4000 /*040000*/,0x15C4 /*012704*/,0x8001 /*100001*/,0x01F8 /*000770*/,0x1380 /*011600*/,0x1066 /*010146*/,0x1141 /*010501*/,0xE5C1 /*162701*/,
0x000C /*000014*/,0x1066 /*010146*/,0x0105 /*000405*/,0x3400 /*032000*/,0x4E00 /*047000*/,0x1C0F /*016017*/,0x0689 /*003211*/,0x0B03 /*005403*/,
0x8105 /*100405*/,0xF115 /*170425*/,0x080B /*004013*/,0x0B00 /*005400*/,0x0105 /*000405*/,0xD601 /*153001*/,0x810B /*100413*/,0x9615 /*113025*/,
0x7725 /*073445*/,0x8A00 /*105000*/,0x2DF6 /*026766*/,0x8189 /*100611*/,0xF115 /*170425*/,0x080B /*004013*/,0xF700 /*173400*/,0x8105 /*100405*/,
0xD615 /*153025*/,0x5C0B /*056013*/,0x5789 /*053611*/,0x6FA4 /*067644*/,0xC900 /*144400*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0F7C /*007574*/,
0x0303 /*001403*/,0x2043 /*020103*/,0x87FB /*103773*/,0x892F /*104457*/,0x8956 /*104526*/,0x210E /*020416*/,0x02F7 /*001367*/,0x0BD6 /*005726*/,
0x0AC1 /*005301*/,0x01EA /*000752*/,0x0A00 /*005000*/,0x8956 /*104526*/,0x1126 /*010446*/,0x895C /*104534*/,0x894C /*104514*/,0x0329 /*001451*/,
0x10E6 /*010346*/,0x55C4 /*052704*/,0x4000 /*040000*/,0x895C /*104534*/,0x894C /*104514*/,0x0323 /*001443*/,0x1066 /*010146*/,0x0154 /*000524*/,
0x3400 /*032000*/,0xAA00 /*125000*/,0xD30F /*151417*/,0xC124 /*140444*/,0xC110 /*140420*/,0x0665 /*003145*/,0x8000 /*100000*/,0x021D /*001035*/,
0xE600 /*163000*/,0x1010 /*010020*/,0x2624 /*023044*/,0x1010 /*010020*/,0x8089 /*100211*/,0x8315 /*101425*/,0xC113 /*140423*/,0xF310 /*171420*/,
0x080B /*004013*/,0x0300 /*001400*/,0x1C80 /*016200*/,0x1189 /*010611*/,0x0206 /*001006*/,0x1C01 /*016001*/,0x0E89 /*007211*/,0x8005 /*100005*/,
0xD615 /*153025*/,0x140B /*012013*/,0x0001 /*000001*/,0x0034 /*000064*/,0x0FD8 /*007730*/,0x1026 /*010046*/,0x0BE0 /*005740*/,0x1200 /*011000*/,
0x893C /*104474*/,0x8948 /*104510*/,0x1044 /*010104*/,0x1581 /*012601*/,0x1380 /*011600*/,0x1126 /*010446*/,0x2410 /*022020*/,0x01AF /*000657*/,
0x8931 /*104461*/,0x1581 /*012601*/,0x65C1 /*062701*/,0x0006 /*000006*/,0x1D80 /*016600*/,0x0002 /*000002*/,0x2410 /*022020*/,0x8912 /*104422*/,
0x1581 /*012601*/,0x2596 /*022626*/,0x01C4 /*000704*/,0x1026 /*010046*/,0x014D /*000515*/,0x3400 /*032000*/,0x0600 /*003000*/,0xC010 /*140020*/,
0x1E1D /*017035*/,0xC100 /*140400*/,0x1C1D /*016035*/,0x0E00 /*007000*/,0xC089 /*140211*/,0x0045 /*000105*/,0x3780 /*033600*/,0x1010 /*010020*/,
0x0100 /*000400*/,0x8010 /*100020*/,0x1E13 /*017023*/,0x8089 /*100211*/,0xF015 /*170025*/,0x0FE5 /*007745*/,0x0400 /*002000*/,0x8700 /*103400*/,
0x4700 /*043400*/,0x0317 /*001427*/,0xF701 /*173401*/,0x981D /*114035*/,0xF607 /*173007*/,0xF7FF /*173777*/,0xA855 /*124125*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x1034 /*010064*/,0x0001 /*000001*/,0xFFF0 /*177760*/,0x0077 /*000167*/,0xF5B6 /*172666*/,0x1166 /*010546*/,0x1026 /*010046*/,
0x0A10 /*005020*/,0x0A10 /*005020*/,0x0A08 /*005010*/,0x0A26 /*005046*/,0x0A26 /*005046*/,0x0A26 /*005046*/,0x893A /*104472*/,0xA5C2 /*122702*/,
0x0045 /*000105*/,0x033C /*001474*/,0xA5C2 /*122702*/,0x002D /*000055*/,0x034A /*001512*/,0xA5C2 /*122702*/,0x002B /*000053*/,0x0344 /*001504*/,
0xA5C2 /*122702*/,0x0123 /*000443*/,0x3400 /*032000*/,0x6200 /*061000*/,0x2E10 /*027020*/,0x3B00 /*035400*/,0x3803 /*034003*/,0x5589 /*052611*/,
0xC202 /*141002*/,0x30E5 /*030345*/,0x6600 /*063000*/,0xF610 /*173020*/,0x0435 /*002065*/,0x0200 /*001000*/,0x1B00 /*015400*/,0xC602 /*143002*/,
0x06E5 /*003345*/,0x8000 /*100000*/,0x8111 /*100421*/,0x1E10 /*017020*/,0x8089 /*100211*/,0x0E1D /*007035*/,0xC100 /*140400*/,0xB015 /*130025*/,
0x1811 /*014021*/,0x5689 /*053211*/,0x8085 /*100205*/,0x651D /*062435*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1090 /*010220*/,0x000E /*000016*/,
0x1181 /*010601*/,0x8910 /*104420*/,0x35F6 /*032766*/,0x0008 /*000010*/,0x0008 /*000010*/,0x0302 /*001402*/,0x0AF6 /*005366*/,0x000A /*000012*/,
0x65C6 /*062706*/,0x0006 /*000006*/,0x1581 /*012601*/,0x55CE /*052716*/,0x0001 /*000001*/,0x0134 /*000464*/,0x10A6 /*010246*/,0x1D83 /*016603*/,
0x0008 /*000010*/,0x15C5 /*012705*/,0x000A /*000012*/,0x0A02 /*005002*/,0x0A04 /*005004*/,0x20D7 /*020327*/,0x0135 /*000465*/,0x3400 /*032000*/,
0xBE00 /*137000*/,0xD410 /*152020*/,0x4003 /*040003*/,0x3206 /*031006*/,0x8389 /*101611*/,0xF665 /*173145*/,0x0610 /*003020*/,0xED00 /*166400*/,
0xCE01 /*147001*/,0x0435 /*002065*/,0x3100 /*030400*/,0xCE02 /*147002*/,0x0455 /*002125*/,0xCE00 /*147000*/,0x0145 /*000505*/,0x1D00 /*016400*/,
0xCE01 /*147001*/,0x0C35 /*006065*/,0x2900 /*024400*/,0xCE02 /*147002*/,0x0855 /*004125*/,0x1700 /*013400*/,0xCE01 /*147001*/,0x0045 /*000105*/,
0x1F01 /*017401*/,0x0001 /*000001*/,0x0034 /*000064*/,0x10EC /*010354*/,0x0101 /*000401*/,0x55CE /*052716*/,0x0100 /*000400*/,0x35CE /*032716*/,
0x0004 /*000004*/,0x0210 /*001020*/,0x35CE /*032716*/,0x0001 /*000001*/,0x020B /*001013*/,0x35CE /*032716*/,0x0018 /*000030*/,0x0218 /*001030*/,
0x55CE /*052716*/,0x0010 /*000020*/,0x35CE /*032716*/,0x0100 /*000400*/,0x0304 /*001404*/,0x55CE /*052716*/,0x0040 /*000100*/,0x0101 /*000401*/,
0x0118 /*000430*/,0x019A /*000632*/,0x35CE /*032716*/,0x01F0 /*000760*/,0x3400 /*032000*/,0x1A00 /*015000*/,0x0111 /*000421*/,0xFB00 /*175400*/,
0x9702 /*113402*/,0x2033 /*020063*/,0x0800 /*004000*/,0xCE02 /*147002*/,0x2055 /*020125*/,0xCE00 /*147000*/,0x0035 /*000065*/,0xF401 /*172001*/,
0xCE03 /*147003*/,0x8055 /*100125*/,0xF100 /*170400*/,0xCE01 /*147001*/,0x0255 /*001125*/,0xED00 /*166400*/,0xC601 /*143001*/,0x0865 /*004145*/,
0x8100 /*100400*/,0xF915 /*174425*/,0x9601 /*113001*/,0xF725 /*173445*/,0x6601 /*063001*/,0xDC10 /*156020*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x1148 /*010510*/,0x35F6 /*032766*/,0x0040 /*000100*/,0x0002 /*000002*/,0x0304 /*001404*/,0x1D80 /*016600*/,0x0008 /*000010*/,0x1001 /*010001*/,
0x8914 /*104424*/,0x35F6 /*032766*/,0x0080 /*000200*/,0x0002 /*000002*/,0x0307 /*001407*/,0x0B36 /*005466*/,0x0006 /*000006*/,0x8404 /*102004*/,
0x55F6 /*052766*/,0x0002 /*000002*/,0x0002 /*000002*/,0x0116 /*000426*/,0x6DB6 /*066666*/,0x0004 /*000004*/,0x0006 /*000006*/,0x0312 /*001422*/,
0x017D /*000575*/,0x3400 /*032000*/,0x7600 /*073000*/,0x0911 /*004421*/,0x8005 /*100005*/,0x081D /*004035*/,0xC100 /*140400*/,0xB015 /*130025*/,
0x1811 /*014021*/,0xF689 /*173211*/,0x060A /*003012*/,0xF800 /*174000*/,0x0806 /*004006*/,0x8001 /*100001*/,0x081D /*004035*/,0xC100 /*140400*/,
0xB015 /*130025*/,0x1611 /*013021*/,0xB689 /*133211*/,0x060A /*003012*/,0xF800 /*174000*/,0x8105 /*100405*/,0xC115 /*140425*/,0x840A /*102012*/,
0xC615 /*143025*/,0x0665 /*003145*/,0x8300 /*101400*/,0x0001 /*000001*/,0x0034 /*000064*/,0x11A4 /*010644*/,0x1585 /*012605*/,0x35C4 /*032704*/,
0x0002 /*000002*/,0x0301 /*001401*/,0x00B2 /*000262*/,0x0087 /*000207*/,0x0000 /*000000*/,0x5000 /*050000*/,0x8004 /*100004*/,0x0000 /*000000*/,
0x4000 /*040000*/,0x8001 /*100001*/,0x0000 /*000000*/,0x7A12 /*075022*/,0x8014 /*100024*/,0x4000 /*040000*/,0x4C4B /*046113*/,0x8018 /*100030*/,
0x0000 /*000000*/,0x4000 /*040000*/,0x8000 /*100000*/,0x15C0 /*012700*/,0x000A /*000012*/,0x0181 /*000601*/,0x3400 /*032000*/,0xD200 /*151000*/,
0x2611 /*023021*/,0xC00A /*140012*/,0xFD0A /*176412*/,0x6206 /*061006*/,0xF689 /*173211*/,0x2015 /*020025*/,0x0830 /*004060*/,0xF600 /*173000*/,
0x2095 /*020225*/,0x0A00 /*005000*/,0xC300 /*141400*/,0x660B /*063013*/,0x0603 /*003003*/,0x8006 /*100006*/,0x0111 /*000421*/,0x1410 /*012020*/,
0xF689 /*173211*/,0x2D95 /*026625*/,0x0800 /*004000*/,0xC100 /*140400*/,0xBC15 /*136025*/,0x8011 /*100021*/,0x1C11 /*016021*/,0xCD89 /*146611*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x1200 /*011000*/,0x060C /*003014*/,0x15C0 /*012700*/,0x11C2 /*010702*/,0x1181 /*010601*/,0x891C /*104434*/,
0x050E /*002416*/,0x15C1 /*012701*/,0x11B0 /*010660*/,0x1180 /*010600*/,0x8916 /*104426*/,0x0AB6 /*005266*/,0x0006 /*000006*/,0x01F4 /*000764*/,
0x15C1 /*012701*/,0x11B0 /*010660*/,0x1180 /*010600*/,0x8918 /*104430*/,0x0AF6 /*005366*/,0x0006 /*000006*/,0x01E8 /*000750*/,0x15C1 /*012701*/,
0x11C8 /*010710*/,0x1180 /*010600*/,0x013B /*000473*/,0x3400 /*032000*/,0x2E00 /*027000*/,0x1012 /*010022*/,0xF689 /*173211*/,0x1FE5 /*017745*/,
0x0480 /*002200*/,0xB600 /*133000*/,0x020C /*001014*/,0x0E00 /*007000*/,0xB60C /*133014*/,0x040A /*002012*/,0xFA00 /*175000*/,0x8002 /*100002*/,
0xC011 /*140021*/,0x0E65 /*007145*/,0x8100 /*100400*/,0x2611 /*023021*/,0x0C10 /*006020*/,0x8089 /*100211*/,0xC015 /*140025*/,0x0365 /*001545*/,
0xC800 /*144000*/,0x20A5 /*020245*/,0x0300 /*001400*/,0xB603 /*133003*/,0xA50A /*122412*/,0x0001 /*000001*/,0x0034 /*000064*/,0x125C /*011134*/,
0x0006 /*000006*/,0x0101 /*000401*/,0x0A80 /*005200*/,0x65F6 /*062766*/,0x0007 /*000007*/,0x0006 /*000006*/,0x15C1 /*012701*/,0x0008 /*000010*/,
0x1002 /*010002*/,0x65C2 /*062702*/,0x0007 /*000007*/,0x0AC1 /*005301*/,0xA5E2 /*122742*/,0x0030 /*000060*/,0x03FC /*001774*/,0x1184 /*010604*/,
0x65C4 /*062704*/,0x0009 /*000011*/,0x25F6 /*022766*/,0x0008 /*000010*/,0x0006 /*000006*/,0x0728 /*003450*/,0x25F6 /*022766*/,0x018A /*000612*/,
0x3400 /*032000*/,0x8A00 /*105000*/,0xF812 /*174022*/,0x06FF /*003377*/,0x2400 /*022000*/,0x4304 /*041404*/,0x0310 /*001420*/,0x830B /*101413*/,
0x066D /*003155*/,0xC300 /*141400*/,0x0765 /*003545*/,0x1D00 /*016400*/,0x8305 /*101405*/,0x061D /*003035*/,0x0D00 /*006400*/,0x1305 /*011405*/,
0xD406 /*152006*/,0x2E95 /*027225*/,0x1400 /*012000*/,0x0294 /*001224*/,0xFD20 /*176440*/,0xD483 /*152203*/,0x2095 /*020225*/,0x0C00 /*006000*/,
0xC68A /*143212*/,0x6665 /*063145*/,0x0001 /*000001*/,0x0034 /*000064*/,0x12B8 /*011270*/,0x0008 /*000010*/,0x1D87 /*016607*/,0x0012 /*000022*/,
0x95D4 /*112724*/,0x002E /*000056*/,0x95D4 /*112724*/,0x0030 /*000060*/,0x0A83 /*005203*/,0x05FC /*002774*/,0x01EF /*000757*/,0x9414 /*112024*/,
0x0AC3 /*005303*/,0x06FD /*003375*/,0x2002 /*020002*/,0x83E8 /*101750*/,0x01EC /*000754*/,0x95D4 /*112724*/,0x002E /*000056*/,0x9414 /*112024*/,
0x2002 /*020002*/,0x83FD /*101775*/,0x95D4 /*112724*/,0x0045 /*000105*/,0x0114 /*000424*/,0x3400 /*032000*/,0xE600 /*163000*/,0xC612 /*143022*/,
0x0665 /*003145*/,0x8100 /*100400*/,0x8013 /*100023*/,0xC011 /*140021*/,0x0C65 /*006145*/,0x2600 /*023000*/,0x2610 /*023020*/,0x0A11 /*005021*/,
0x8489 /*102211*/,0x8015 /*100025*/,0x1715 /*013425*/,0x20A4 /*020244*/,0xFD00 /*176400*/,0x1703 /*013403*/,0x2DA8 /*026650*/,0x0200 /*001000*/,
0xD403 /*152003*/,0x2095 /*020225*/,0x1400 /*012000*/,0x1794 /*013624*/,0x20A2 /*020242*/,0xFC00 /*176000*/,0x4A02 /*045002*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x1314 /*011424*/,0x95D4 /*112724*/,0x0020 /*000040*/,0x8A0C /*105014*/,0x0BD6 /*005726*/,0x1D87 /*016607*/,0x0012 /*000022*/,
0x0A00 /*005000*/,0x09F7 /*004767*/,0xEF6E /*167556*/,0x09F7 /*004767*/,0xEDEE /*166756*/,0x020B /*001013*/,0xE5C2 /*162702*/,0x0030 /*000060*/,
0x0CC0 /*006300*/,0x6002 /*060002*/,0x0CC0 /*006300*/,0x0CC0 /*006300*/,0x6080 /*060200*/,0x35C0 /*032700*/,0xE000 /*160000*/,0x03F1 /*001761*/,
0x8921 /*104441*/,0x01AF /*000657*/,0x3400 /*032000*/,0x4200 /*041000*/,0xC113 /*140423*/,0x870A /*103412*/,0x2600 /*023000*/,0x2610 /*023020*/,
0x660A /*063012*/,0x0210 /*001020*/,0x7604 /*073004*/,0x020A /*001012*/,0x8100 /*100400*/,0xC611 /*143021*/,0x0CE5 /*006345*/,0x8000 /*100000*/,
0x0C11 /*006021*/,0x8189 /*100611*/,0x8011 /*100021*/,0x101D /*010035*/,0xC100 /*140400*/,0x0565 /*002545*/,0xC200 /*141000*/,0x0715 /*003425*/,
0x5000 /*050000*/,0xC294 /*141224*/,0xFD0A /*176412*/,0x5606 /*053006*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1370 /*011560*/,0x65C6 /*062706*/,
0x0012 /*000022*/,0x0087 /*000207*/,0x1166 /*010546*/,0x1026 /*010046*/,0x0A26 /*005046*/,0x1443 /*012103*/,0x1242 /*011102*/,0x0404 /*002004*/,
0x0B02 /*005402*/,0x0B03 /*005403*/,0x0B82 /*005602*/,0x0A8E /*005216*/,0x15C5 /*012705*/,0x000A /*000012*/,0x0A04 /*005004*/,0x15E6 /*012746*/,
0xFFFF /*177777*/,0x0A00 /*005000*/,0x0A01 /*005001*/,0x8934 /*104464*/,0x1066 /*010146*/,0x5080 /*050200*/,0x01B1 /*000661*/,0x3400 /*032000*/,
0x9E00 /*117000*/,0xC013 /*140023*/,0xC050 /*140120*/,0xF80B /*174013*/,0x8502 /*102402*/,0x8411 /*102021*/,0xD50A /*152412*/,0xFD0B /*176413*/,
0xC404 /*142004*/,0xC30A /*141412*/,0x0B15 /*005425*/,0x0300 /*001400*/,0xC3E1 /*141741*/,0x400A /*040012*/,0x021D /*001035*/,0xC300 /*141400*/,
0x040B /*002013*/,0xD007 /*150007*/,0x2095 /*020225*/,0xC300 /*141400*/,0xFA0A /*175012*/,0xCD01 /*146401*/,0x030B /*001413*/,0xD003 /*150003*/,
0x1695 /*013225*/,0x0001 /*000001*/,0x0034 /*000064*/,0x13CC /*011714*/,0x002D /*000055*/,0x0102 /*000402*/,0x95D0 /*112720*/,0x0020 /*000040*/,
0x65CE /*062716*/,0x0030 /*000060*/,0x9590 /*112620*/,0x0BCE /*005716*/,0x04FB /*002373*/,0x95C8 /*112710*/,0x0020 /*000040*/,0x65C6 /*062706*/,
0x0006 /*000006*/,0x1585 /*012605*/,0x0087 /*000207*/,0x1166 /*010546*/,0x1003 /*010003*/,0x1045 /*010105*/,0x0A02 /*005002*/,0x0A04 /*005004*/,
0x8932 /*104462*/,0x10C0 /*010300*/,0x1081 /*010201*/,0x01F3 /*000763*/,0x3400 /*032000*/,0xFA00 /*175000*/,0x8513 /*102423*/,0x8715 /*103425*/,
0x0000 /*000000*/,0x010A /*000412*/,0xE60A /*163012*/,0x2115 /*020425*/,0x0000 /*000000*/,0x010C /*000414*/,0x020C /*001014*/,0x030C /*001414*/,
0x030C /*001414*/,0x4186 /*040606*/,0x4061 /*040141*/,0x000B /*000013*/,0xCE61 /*147141*/,0xF60A /*173012*/,0xD602 /*153002*/,0x870B /*103413*/,
0xE600 /*163000*/,0x2015 /*020025*/,0x2600 /*023000*/,0x6611 /*063021*/,0x3611 /*033021*/,0x1D0B /*016413*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x1428 /*012050*/,0x0002 /*000002*/,0x0B0E /*005416*/,0x0BB6 /*005666*/,0x0002 /*000002*/,0x6381 /*061601*/,0x0B40 /*005500*/,0x6D80 /*066600*/,
0x0002 /*000002*/,0x8725 /*103445*/,0x0A26 /*005046*/,0x0C43 /*006103*/,0x0C42 /*006102*/,0x0C41 /*006101*/,0x0C40 /*006100*/,0x0BCE /*005716*/,
0x0308 /*001410*/,0x0A0E /*005016*/,0x6D81 /*066601*/,0x0002 /*000002*/,0x0B40 /*005500*/,0x0B4E /*005516*/,0x6D80 /*066600*/,0x0004 /*000004*/,
0x0100 /*000400*/,0x3400 /*032000*/,0x5600 /*053000*/,0x0414 /*002024*/,0x4101 /*040401*/,0x4061 /*040141*/,0x4E0B /*047013*/,0x000B /*000013*/,
0x4E61 /*047141*/,0xCE0B /*147013*/,0x010B /*000413*/,0x8303 /*101403*/,0xF60A /*173012*/,0x060A /*003012*/,0xE700 /*163400*/,0x0306 /*001406*/,
0x040C /*002014*/,0x4187 /*040607*/,0x4061 /*040141*/,0x000B /*000013*/,0xA161 /*120541*/,0x4300 /*041400*/,0xC60C /*143014*/,0x0865 /*004145*/,
0xA200 /*121000*/,0x8700 /*103400*/,0xCB00 /*145400*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1484 /*012204*/,0x65C6 /*062706*/,0x0006 /*000006*/,
0x89FB /*104773*/,0x00B2 /*000262*/,0x0087 /*000207*/,0x1166 /*010546*/,0x1026 /*010046*/,0x1466 /*012146*/,0x1466 /*012146*/,0x1266 /*011146*/,
0x1402 /*012002*/,0x1401 /*012001*/,0x1200 /*011000*/,0x200E /*020016*/,0x830A /*101412*/,0x1184 /*010604*/,0x1003 /*010003*/,0x1300 /*011400*/,
0x10D4 /*010324*/,0x1043 /*010103*/,0x1301 /*011401*/,0x10D4 /*010324*/,0x1083 /*010203*/,0x01B7 /*000667*/,0x3400 /*032000*/,0xB200 /*131000*/,
0x0214 /*001024*/,0xD413 /*152023*/,0x8010 /*100020*/,0x19E3 /*014743*/,0x0303 /*001403*/,0x1780 /*013600*/,0xE120 /*160440*/,0x05FF /*002777*/,
0x8504 /*102404*/,0x021D /*001035*/,0x8300 /*101400*/,0x041D /*002035*/,0x1C00 /*016000*/,0x1701 /*013401*/,0xF020 /*170040*/,0x07FF /*003777*/,
0xC006 /*140006*/,0x1065 /*010145*/,0x4200 /*041000*/,0x0110 /*000420*/,0xC20A /*141012*/,0x010B /*000413*/,0x4180 /*040600*/,0x270A /*023412*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x14E0 /*012340*/,0x0BC0 /*005700*/,0x0304 /*001404*/,0x0C81 /*006201*/,0x0C02 /*006002*/,0x0A80 /*005200*/,
0x02FC /*001374*/,0x1D85 /*016605*/,0x0002 /*000002*/,0x1D83 /*016603*/,0x0004 /*000004*/,0x6083 /*060203*/,0x0B45 /*005505*/,0x8511 /*102421*/,
0x6045 /*060105*/,0x8403 /*102003*/,0x0C05 /*006005*/,0x0C03 /*006003*/,0x0A8E /*005216*/,0x1D80 /*016600*/,0x0006 /*000006*/,0x1001 /*010001*/,
0x10D0 /*010320*/,0x1150 /*010520*/,0x01F8 /*000770*/,0x3400 /*032000*/,0x0E00 /*007000*/,0x9015 /*110025*/,0x4013 /*040023*/,0xC610 /*143020*/,
0x0865 /*004145*/,0x8500 /*102400*/,0x7715 /*073425*/,0x6600 /*063000*/,0x4501 /*042401*/,0xF260 /*171140*/,0xEE87 /*167207*/,0x0401 /*002001*/,
0xC610 /*143020*/,0x06E5 /*003345*/,0x8000 /*100000*/,0x1411 /*012021*/,0x0089 /*000211*/,0x8111 /*100421*/,0x1011 /*010021*/,0xC689 /*143211*/,
0x0665 /*003145*/,0x8700 /*103400*/,0x1A00 /*015000*/,0xF189 /*170611*/,0x770B /*073413*/,0x0001 /*000001*/,0x0034 /*000064*/,0x153C /*012474*/,
0x0002 /*000002*/,0x0408 /*002010*/,0x1442 /*012102*/,0x1443 /*012103*/,0x0B03 /*005403*/,0x0B02 /*005402*/,0x0B83 /*005603*/,0x1090 /*010220*/,
0x10D0 /*010320*/,0x1450 /*012120*/,0x0087 /*000207*/,0x891A /*104432*/,0x15C1 /*012701*/,0x11B6 /*010666*/,0x0BF0 /*005760*/,0x0002 /*000002*/,
0x0603 /*003003*/,0x0303 /*001403*/,0x8914 /*104424*/,0x0087 /*000207*/,0x891A /*104432*/,0x0087 /*000207*/,0x1166 /*010546*/,0x019A /*000632*/,
0x3400 /*032000*/,0x6A00 /*065000*/,0x2615 /*023025*/,0x2610 /*023020*/,0x450A /*042412*/,0x4414 /*042024*/,0xC414 /*142024*/,0x3F0B /*037413*/,
0x0403 /*002003*/,0x0404 /*002004*/,0x050B /*002413*/,0x840B /*102013*/,0x8E0B /*107013*/,0x030A /*001412*/,0x0214 /*001024*/,0x7314 /*071424*/,
0x0403 /*002003*/,0x0206 /*001006*/,0x030B /*001413*/,0x820B /*101013*/,0xCE0B /*147013*/,0x410A /*040412*/,0x0112 /*000422*/,0x010B /*000413*/,
0x0162 /*000542*/,0xDA0C /*155014*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1598 /*012630*/,0x0C41 /*006101*/,0x842C /*102054*/,0x65C1 /*062701*/,
0x8000 /*100000*/,0x1066 /*010146*/,0x10C1 /*010301*/,0x1080 /*010200*/,0x0A02 /*005002*/,0x0A03 /*005003*/,0x0C00 /*006000*/,0x0C01 /*006001*/,
0x0C02 /*006002*/,0x8934 /*104464*/,0x0B04 /*005404*/,0x0B05 /*005405*/,0x0B84 /*005604*/,0x0CC1 /*006301*/,0x0C40 /*006100*/,0x6141 /*060501*/,
0x0B40 /*005500*/,0x6100 /*060400*/,0x0503 /*002403*/,0x65C3 /*062703*/,0x0162 /*000542*/,0x3400 /*032000*/,0xC600 /*143000*/,0x0115 /*000425*/,
0x4200 /*041000*/,0xA10B /*120413*/,0x0200 /*001000*/,0x030C /*001414*/,0x8E0C /*107014*/,0xF60A /*173012*/,0x020B /*001013*/,0x0300 /*001400*/,
0x0203 /*001003*/,0x030B /*001413*/,0x820B /*101013*/,0x800B /*100013*/,0x041D /*002035*/,0xD000 /*150000*/,0x9010 /*110020*/,0x8810 /*104020*/,
0x9615 /*113025*/,0x8525 /*102445*/,0x2015 /*020025*/,0x0128 /*000450*/,0x7710 /*073420*/,0x8E00 /*107000*/,0x2A00 /*025000*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x15F4 /*012764*/,0x2596 /*022626*/,0x89FB /*104773*/,0x1585 /*012605*/,0x00B2 /*000262*/,0x0087 /*000207*/,0x1166 /*010546*/,
0x1026 /*010046*/,0x1445 /*012105*/,0x1444 /*012104*/,0x1241 /*011101*/,0x0A26 /*005046*/,0x0BC4 /*005704*/,0x032F /*001457*/,0x8004 /*100004*/,
0x0B04 /*005404*/,0x0B05 /*005405*/,0x0B84 /*005604*/,0x0ACE /*005316*/,0x1403 /*012003*/,0x1402 /*012002*/,0x0327 /*001447*/,0x8004 /*100004*/,
0x0B02 /*005402*/,0x01DC /*000734*/,0x3400 /*032000*/,0x2200 /*021000*/,0x0316 /*001426*/,0x820B /*101013*/,0x8E0B /*107013*/,0x010A /*000412*/,
0x0162 /*000542*/,0x410C /*040414*/,0xE20C /*161014*/,0xC184 /*140604*/,0x0065 /*000145*/,0x6680 /*063200*/,0x3210 /*031020*/,0x8E89 /*107211*/,
0x420A /*041012*/,0x410C /*040414*/,0x400C /*040014*/,0x020C /*001014*/,0xCE85 /*147205*/,0xFA0A /*175012*/,0x0001 /*000001*/,0x010C /*000414*/,
0x410C /*040414*/,0x400B /*040013*/,0x020B /*001013*/,0x5784 /*053604*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1650 /*013120*/,0x0A8E /*005216*/,
0x01F9 /*000771*/,0x1582 /*012602*/,0x0BD6 /*005726*/,0x0303 /*001403*/,0x0B00 /*005400*/,0x0B01 /*005401*/,0x0B80 /*005600*/,0x1583 /*012603*/,
0x1053 /*010123*/,0x1013 /*010023*/,0x108B /*010213*/,0x1585 /*012605*/,0x0087 /*000207*/,0x0A00 /*005000*/,0x0A01 /*005001*/,0x0A02 /*005002*/,
0x0BD6 /*005726*/,0x01F5 /*000765*/,0x0A10 /*005020*/,0x1050 /*010120*/,0x15C8 /*012710*/,0x800F /*100017*/,0x01FB /*000773*/,0x3400 /*032000*/,
0x7E00 /*077000*/,0x2016 /*020026*/,0x0128 /*000450*/,0x4410 /*042020*/,0x4214 /*041024*/,0x4314 /*041424*/,0xC114 /*140424*/,0xC210 /*141020*/,
0x040B /*002013*/,0xC402 /*142002*/,0x020B /*001013*/,0x0302 /*001402*/,0x100A /*010012*/,0x8301 /*101401*/,0xC30A /*141412*/,0xC40A /*142012*/,
0x420C /*041014*/,0xFC0C /*176014*/,0x0884 /*004204*/,0x0786 /*003606*/,0xC402 /*142002*/,0x040B /*002013*/,0xB102 /*130402*/,0x0200 /*001000*/,
0x210C /*020414*/,0x0001 /*000001*/,0x0034 /*000064*/,0x16AC /*013254*/,0x0A83 /*005203*/,0x0A81 /*005201*/,0x00B1 /*000261*/,0x0C02 /*006002*/,
0x0C04 /*006004*/,0x1110 /*010420*/,0x1090 /*010220*/,0x10D0 /*010320*/,0x20C1 /*020301*/,0x8202 /*101002*/,0x00A2 /*000242*/,0x0087 /*000207*/,
0x00B2 /*000262*/,0x0087 /*000207*/,0x1042 /*010102*/,0x1004 /*010004*/,0x1494 /*012224*/,0x1494 /*012224*/,0x1494 /*012224*/,0x0087 /*000207*/,
0x1066 /*010146*/,0x892C /*104454*/,0x1180 /*010600*/,0x0119 /*000431*/,0x3400 /*032000*/,0xDA00 /*155000*/,0x8116 /*100426*/,0x061D /*003035*/,
0x1200 /*011000*/,0x8189 /*100611*/,0x021D /*001035*/,0xC600 /*143000*/,0x0865 /*004145*/,0x0100 /*000400*/,0x870B /*103413*/,0x8200 /*101000*/,
0xC015 /*140025*/,0x0665 /*003145*/,0x2600 /*023000*/,0x2618 /*023030*/,0x2618 /*023030*/,0x8718 /*103430*/,0x4310 /*041420*/,0x4214 /*041024*/,
0x4414 /*042024*/,0x1112 /*010422*/,0x6180 /*060600*/,0x1728 /*013450*/,0x1F21 /*017441*/,0x2F80 /*027600*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x1708 /*013410*/,0x86DF /*103337*/,0xE5C4 /*162704*/,0x801F /*100037*/,0x0C82 /*006202*/,0x0C03 /*006003*/,0x0A84 /*005204*/,0x05FC /*002774*/,
0x1001 /*010001*/,0x10D0 /*010320*/,0x1090 /*010220*/,0x15C8 /*012710*/,0x801F /*100037*/,0x1040 /*010100*/,0x01AF /*000657*/,0x0BC2 /*005702*/,
0x8004 /*100004*/,0x15C1 /*012701*/,0x11B6 /*010666*/,0x0077 /*000167*/,0xFE10 /*177020*/,0x0A10 /*005020*/,0x0A10 /*005020*/,0x0A08 /*005010*/,
0x010D /*000415*/,0x3400 /*032000*/,0x3600 /*033000*/,0x8717 /*103427*/,0x4200 /*041000*/,0x4314 /*041424*/,0x4414 /*042024*/,0x1712 /*013422*/,
0x0F21 /*007441*/,0x0B80 /*005600*/,0x0882 /*004202*/,0x1703 /*013403*/,0x0021 /*000041*/,0x0880 /*004200*/,0xC487 /*142207*/,0x0FE5 /*007745*/,
0x8380 /*101600*/,0x840C /*102014*/,0xFD0A /*176412*/,0xC002 /*140002*/,0x8710 /*103420*/,0xF900 /*174400*/,0x0089 /*000211*/,0x870A /*103412*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x9000 /*110000*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1764 /*013544*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0150 /*000520*/,0x3400 /*032000*/,0x9200 /*111000*/,
0x0017 /*000027*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x2200 /*021000*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x17C0 /*013700*/,0x0001 /*000001*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0001 /*000001*/,
0x17B0 /*013660*/,0x1066 /*010146*/,0x1026 /*010046*/,0xE5C6 /*162706*/,0x0006 /*000006*/,0x1001 /*010001*/,0x1180 /*010600*/,0x09F7 /*004767*/,
0x0018 /*000030*/,0x1D81 /*016601*/,0x0008 /*000010*/,0x1180 /*010600*/,0x8918 /*104430*/,0x1D80 /*016600*/,0x0006 /*000006*/,0x1181 /*010601*/,
0x09F7 /*004767*/,0x00C2 /*000302*/,0x0145 /*000505*/,0x3400 /*032000*/,0xEE00 /*167000*/,0xC617 /*143027*/,0x0A65 /*005145*/,0x8700 /*103400*/,
0x2E00 /*027000*/,0xF089 /*170211*/,0x020B /*001013*/,0x0400 /*002000*/,0xFF06 /*177406*/,0xC689 /*143211*/,0x0465 /*002145*/,0x8700 /*103400*/,
0x0100 /*000400*/,0xD110 /*150420*/,0x0C0B /*006013*/,0x5702 /*053402*/,0x0024 /*000044*/,0x0940 /*004500*/,0x5702 /*053402*/,0x0124 /*000444*/,
0x0680 /*003200*/,0x1002 /*010002*/,0x100A /*010012*/,0x100A /*010012*/,0xFB0A /*175412*/,0x0001 /*000001*/,0x0034 /*000064*/,0x181C /*014034*/,
0x65C6 /*062706*/,0x0004 /*000004*/,0x0087 /*000207*/,0x1C26 /*016046*/,0x0004 /*000004*/,0x65CE /*062716*/,0x8000 /*100000*/,0x15F0 /*012760*/,
0x8000 /*100000*/,0x0004 /*000004*/,0x1381 /*011601*/,0xE5C6 /*162706*/,0x0006 /*000006*/,0x1180 /*010600*/,0x891E /*104436*/,0x1D80 /*016600*/,
0x0008 /*000010*/,0x892C /*104454*/,0x15C1 /*012701*/,0x188C /*014214*/,0x8912 /*104422*/,0x1180 /*010600*/,0x15C1 /*012701*/,0x010C /*000414*/,
0x3400 /*032000*/,0x4A00 /*045000*/,0x8C18 /*106030*/,0x1018 /*010030*/,0x8089 /*100211*/,0x0E1D /*007035*/,0x8100 /*100400*/,0x1611 /*013021*/,
0xC489 /*142211*/,0x9815 /*114025*/,0x8018 /*100030*/,0x0E1D /*007035*/,0xC300 /*141400*/,0x0415 /*002025*/,0x2800 /*024000*/,0x2A89 /*025211*/,
0x8089 /*100211*/,0x0E1D /*007035*/,0xC100 /*140400*/,0x4615 /*043025*/,0x1219 /*011031*/,0xC689 /*143211*/,0x0665 /*003145*/,0x8000 /*100000*/,
0xC111 /*140421*/,0xC915 /*144425*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1878 /*014170*/,0x1892 /*014222*/,0x8918 /*104430*/,0x1181 /*010601*/,
0x1D80 /*016600*/,0x0008 /*000010*/,0x8910 /*104420*/,0x65C6 /*062706*/,0x000C /*000014*/,0x00A2 /*000242*/,0x0087 /*000207*/,0x7996 /*074626*/,
0x5A82 /*055202*/,0x8000 /*100000*/,0x0BFE /*005776*/,0x58B9 /*054271*/,0x8000 /*100000*/,0xAA4A /*125112*/,0x4D0C /*046414*/,0x7FFF /*077777*/,
0x0F09 /*007411*/,0x6650 /*063120*/,0x7FFF /*077777*/,0x6CDB /*066333*/,0x015D /*000535*/,0x3400 /*032000*/,0xA600 /*123000*/,0x5518 /*052430*/,
0x0055 /*000125*/,0xFA80 /*175200*/,0xFFFF /*177777*/,0x017F /*000577*/,0x2E80 /*027200*/,0x1789 /*013611*/,0x042C /*002054*/,0x0E00 /*007000*/,
0xA180 /*120600*/,0xC182 /*140602*/,0x4015 /*040025*/,0x2619 /*023031*/,0x8089 /*100211*/,0x021D /*001035*/,0xC100 /*140400*/,0x4615 /*043025*/,
0x1819 /*014031*/,0x8089 /*100211*/,0x021D /*001035*/,0x2C00 /*026000*/,0x2C89 /*026211*/,0x8089 /*100211*/,0x4F11 /*047421*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x18D4 /*014324*/,0x15C1 /*012701*/,0x194C /*014514*/,0x8910 /*104420*/,0x1180 /*010600*/,0x1001 /*010001*/,0x8914 /*104424*/,
0x0AB6 /*005266*/,0x000A /*000012*/,0x1D80 /*016600*/,0x000E /*000016*/,0x1001 /*010001*/,0x8918 /*104430*/,0x1D80 /*016600*/,0x000E /*000016*/,
0x15C1 /*012701*/,0x1958 /*014530*/,0x8910 /*104420*/,0x15C0 /*012700*/,0x1952 /*014522*/,0x892C /*104454*/,0x1180 /*010600*/,0x1D81 /*016601*/,
0x0014 /*000024*/,0x01E2 /*000742*/,0x3400 /*032000*/,0x0200 /*001000*/,0x1619 /*013031*/,0x8089 /*100211*/,0x0111 /*000421*/,0xC110 /*140420*/,
0x0665 /*003145*/,0x1000 /*010000*/,0x8189 /*100611*/,0x4011 /*040021*/,0xC010 /*140020*/,0x0C65 /*006145*/,0x1600 /*013000*/,0xC689 /*143211*/,
0x0C65 /*006145*/,0x8000 /*100000*/,0xC111 /*140421*/,0xB615 /*133025*/,0x1011 /*010021*/,0x8089 /*100211*/,0x0111 /*000421*/,0x1810 /*014020*/,
0x8189 /*100611*/,0x8011 /*100021*/,0x081D /*004035*/,0x8000 /*100000*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1930 /*014460*/,0x891A /*104432*/,
0x1D80 /*016600*/,0x0008 /*000010*/,0x6DB0 /*066660*/,0x0006 /*000006*/,0x0004 /*000004*/,0x0077 /*000167*/,0xFF44 /*177504*/,0x1D94 /*016624*/,
0x5C55 /*056125*/,0x8001 /*100001*/,0x0BFE /*005776*/,0x58B9 /*054271*/,0x7FFF /*077777*/,0x3EE7 /*037347*/,0x9FE1 /*117741*/,0x8004 /*100004*/,
0x4375 /*041565*/,0xB4C6 /*132306*/,0x800A /*100012*/,0x2D78 /*026570*/,0x782E /*074056*/,0x8006 /*100006*/,0x0128 /*000450*/,0x3400 /*032000*/,
0x5E00 /*057000*/,0xF619 /*173031*/,0x02E5 /*001345*/,0x0200 /*001000*/,0x8000 /*100000*/,0x081D /*004035*/,0x8100 /*100400*/,0x0A1D /*005035*/,
0x2600 /*023000*/,0x1810 /*014020*/,0xF689 /*173211*/,0x0665 /*003145*/,0x0C00 /*006000*/,0x8000 /*100000*/,0x8113 /*100423*/,0x0C1D /*006035*/,
0x1000 /*010000*/,0xF689 /*173211*/,0x040B /*002013*/,0x0700 /*003400*/,0x8003 /*100003*/,0x8113 /*100423*/,0x081D /*004035*/,0x1800 /*014000*/,
0x2589 /*022611*/,0x0001 /*000001*/,0x0034 /*000064*/,0x198C /*014614*/,0x0AF6 /*005366*/,0x0004 /*000004*/,0x01EF /*000757*/,0x1380 /*011600*/,
0x1D81 /*016601*/,0x0006 /*000006*/,0x8918 /*104430*/,0x0BD6 /*005726*/,0x1583 /*012603*/,0x65C6 /*062706*/,0x0016 /*000026*/,0x10E6 /*010346*/,
0x0087 /*000207*/,0x1583 /*012603*/,0x0A26 /*005046*/,0x1066 /*010146*/,0x1026 /*010046*/,0x891A /*104432*/,0x10C7 /*010307*/,0x1583 /*012603*/,
0x01FA /*000772*/,0x1581 /*012601*/,0x892C /*104454*/,0x0157 /*000527*/,0x3400 /*032000*/,0xBA00 /*135000*/,0x6619 /*063031*/,0x2610 /*023020*/,
0xE611 /*163021*/,0x2610 /*023020*/,0x0110 /*000420*/,0x1810 /*014020*/,0x8089 /*100211*/,0x8315 /*101425*/,0x8415 /*102025*/,0x8115 /*100425*/,
0x2C15 /*026025*/,0x2689 /*023211*/,0x2611 /*023021*/,0xA610 /*123020*/,0xCE11 /*147021*/,0x0665 /*003145*/,0xA600 /*123000*/,0xCE11 /*147021*/,
0x0E65 /*007145*/,0xE600 /*163000*/,0x4710 /*043420*/,0x8010 /*100020*/,0x021D /*001035*/,0x1B00 /*015400*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x19E8 /*014750*/,0x8918 /*104430*/,0x15B6 /*012666*/,0x0002 /*000002*/,0x1381 /*011601*/,0x8922 /*104442*/,0x1026 /*010046*/,0x1381 /*011601*/,
0xE5C6 /*162706*/,0x0006 /*000006*/,0x1180 /*010600*/,0x891E /*104436*/,0x1181 /*010601*/,0x1D80 /*016600*/,0x0008 /*000010*/,0x8912 /*104422*/,
0x65C6 /*062706*/,0x0006 /*000006*/,0x1DA6 /*016646*/,0x0004 /*000004*/,0x0087 /*000207*/,0x8924 /*104444*/,0x0BF0 /*005760*/,0x0002 /*000002*/,
0x016F /*000557*/,0x3400 /*032000*/,0x1600 /*013000*/,0x051A /*002432*/,0x0104 /*000404*/,0x1410 /*012020*/,0xB689 /*133211*/,0x040A /*002012*/,
0x0400 /*002000*/,0x0301 /*001401*/,0xC602 /*143002*/,0x0665 /*003145*/,0x8700 /*103400*/,0xC100 /*140400*/,0x8615 /*103025*/,0x261A /*023032*/,
0x8289 /*101211*/,0xC215 /*141025*/,0xFC45 /*176105*/,0xC2FF /*141377*/,0xC20C /*141014*/,0x7E65 /*077145*/,0x871A /*103432*/,0xC112 /*140422*/,
0xB615 /*133025*/,0x8011 /*100021*/,0x4A13 /*045023*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1A44 /*015104*/,0x8912 /*104422*/,0x1380 /*011600*/,
0x1001 /*010001*/,0x8914 /*104424*/,0x0104 /*000404*/,0x15C1 /*012701*/,0x11B6 /*010666*/,0x1380 /*011600*/,0x8912 /*104422*/,0x1380 /*011600*/,
0x15C4 /*012704*/,0x1A8C /*015214*/,0x15C3 /*012703*/,0x0006 /*000006*/,0x8928 /*104450*/,0x892A /*104452*/,0x0BF6 /*005766*/,0x0004 /*000004*/,
0x03DD /*001735*/,0x1380 /*011600*/,0x1001 /*010001*/,0x8914 /*104424*/,0x01D9 /*000731*/,0x016D /*000555*/,0x3400 /*032000*/,0x7200 /*071000*/,
0x241A /*022032*/,0xC189 /*140611*/,0xAA15 /*125025*/,0x101A /*010032*/,0x8089 /*100211*/,0xCA13 /*145023*/,0x5601 /*053001*/,0x3E1A /*037032*/,
0x461A /*043032*/,0x4E1A /*047032*/,0xB91A /*134432*/,0x7CC1 /*076301*/,0x0051 /*000121*/,0xBE80 /*137200*/,0x4E1F /*047037*/,0xEE8D /*167215*/,
0xCE7F /*147177*/,0xFFFA /*177772*/,0xF453 /*172123*/,0x8C7F /*106177*/,0x4BDC /*045734*/,0xF9B3 /*174663*/,0xFE7F /*177177*/,0x2EEE /*027356*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x1AA0 /*015240*/,0x519A /*050632*/,0x7FFD /*077775*/,0x0C75 /*006165*/,0xAD51 /*126521*/,0x8000 /*100000*/,
0xED4E /*166516*/,0x6487 /*062207*/,0x8001 /*100001*/,0x0A26 /*005046*/,0x8924 /*104444*/,0x0BF0 /*005760*/,0x0002 /*000002*/,0x0358 /*001530*/,
0x0404 /*002004*/,0x0AB6 /*005266*/,0x0006 /*000006*/,0x1001 /*010001*/,0x8914 /*104424*/,0x15C1 /*012701*/,0x11B6 /*010666*/,0x1380 /*011600*/,
0x891C /*104434*/,0x040F /*002017*/,0x016B /*000553*/,0x3400 /*032000*/,0xCE00 /*147000*/,0xB61A /*133032*/,0x040A /*002012*/,0xC000 /*140000*/,
0xB615 /*133025*/,0x2C11 /*026021*/,0x8089 /*100211*/,0x8111 /*100421*/,0x061D /*003035*/,0x1600 /*013000*/,0x8189 /*100611*/,0x8011 /*100021*/,
0x061D /*003035*/,0x1A00 /*015000*/,0xC689 /*143211*/,0x0665 /*003145*/,0xC100 /*140400*/,0x7215 /*071025*/,0x801B /*100033*/,0x1C13 /*016023*/,
0x0489 /*002211*/,0x2607 /*023007*/,0x260A /*023012*/,0x260A /*023012*/,0xBB0A /*135412*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1AFC /*015374*/,
0x0118 /*000430*/,0x15C0 /*012700*/,0x1B7E /*015576*/,0x892C /*104454*/,0x1D80 /*016600*/,0x0006 /*000006*/,0x892C /*104454*/,0x15C1 /*012701*/,
0x1B78 /*015570*/,0x8918 /*104430*/,0x1D80 /*016600*/,0x000C /*000014*/,0x15C1 /*012701*/,0x11B6 /*010666*/,0x8912 /*104422*/,0x1180 /*010600*/,
0x15C1 /*012701*/,0x1B78 /*015570*/,0x8910 /*104420*/,0x1D80 /*016600*/,0x000C /*000014*/,0x1181 /*010601*/,0x8916 /*104426*/,0x01C9 /*000711*/,
0x3400 /*032000*/,0x2A00 /*025000*/,0xC61B /*143033*/,0x0665 /*003145*/,0x8000 /*100000*/,0x061D /*003035*/,0xC400 /*142000*/,0x8415 /*102025*/,
0xC31B /*141433*/,0x0515 /*002425*/,0x2800 /*024000*/,0x2A89 /*025211*/,0x8189 /*100611*/,0x8011 /*100021*/,0x061D /*003035*/,0x1000 /*010000*/,
0xC689 /*143211*/,0x0665 /*003145*/,0xF600 /*173000*/,0x040B /*002013*/,0x0700 /*003400*/,0x8003 /*100003*/,0xC113 /*140423*/,0xAA15 /*125025*/,
0x121A /*011032*/,0x2389 /*021611*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1B58 /*015530*/,0x1380 /*011600*/,0x1001 /*010001*/,0x8914 /*104424*/,
0x0BF6 /*005766*/,0x0006 /*000006*/,0x0303 /*001403*/,0x1380 /*011600*/,0x1001 /*010001*/,0x8914 /*104424*/,0x65C6 /*062706*/,0x0008 /*000010*/,
0x00A2 /*000242*/,0x0087 /*000207*/,0x517C /*050574*/,0x4498 /*042230*/,0x7FFF /*077777*/,0xEBA0 /*165640*/,0x6ED9 /*067331*/,0x8001 /*100001*/,
0x48DE /*044336*/,0x4305 /*041405*/,0x8000 /*100000*/,0x9720 /*113440*/,0x014E /*000516*/,0x3400 /*032000*/,0x8600 /*103000*/,0x321B /*031033*/,
0xFD61 /*176541*/,0xCF7F /*147577*/,0x6E8F /*067217*/,0xFEB7 /*177267*/,0xA67F /*123177*/,0x61DB /*060733*/,0xFE66 /*177146*/,0x0A7F /*005177*/,
0xAAB2 /*125262*/,0xFFAA /*177652*/,0xFE7F /*177177*/,0xFFFF /*177777*/,0x007F /*000177*/,0x2480 /*022200*/,0xF089 /*170211*/,0x020B /*001013*/,
0x2E00 /*027000*/,0x0403 /*002003*/,0xB604 /*133004*/,0x040A /*002012*/,0x0100 /*000400*/,0x1410 /*012020*/,0x7889 /*074211*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x1BB4 /*015664*/,0x0A36 /*005066*/,0x0002 /*000002*/,0x1380 /*011600*/,0x2410 /*022020*/,0x65C8 /*062710*/,0x8000 /*100000*/,
0x0C88 /*006210*/,0x0B76 /*005566*/,0x0002 /*000002*/,0x1226 /*011046*/,0x15C8 /*012710*/,0x8000 /*100000*/,0x1D80 /*016600*/,0x0002 /*000002*/,
0x892C /*104454*/,0x15C1 /*012701*/,0x1C3E /*016076*/,0x8918 /*104430*/,0x1D80 /*016600*/,0x0008 /*000010*/,0x15C1 /*012701*/,0x1C38 /*016070*/,
0x8910 /*104420*/,0x010D /*000415*/,0x3400 /*032000*/,0xE200 /*161000*/,0x301B /*030033*/,0x3089 /*030211*/,0x3089 /*030211*/,0xB089 /*130211*/,
0x066D /*003155*/,0x0400 /*002000*/,0xC600 /*143000*/,0x0865 /*004145*/,0xF600 /*173000*/,0x020B /*001013*/,0x0300 /*001400*/,0xC103 /*140403*/,
0x3215 /*031025*/,0x181C /*014034*/,0xF689 /*173211*/,0x040B /*002013*/,0x0100 /*000400*/,0xFD03 /*176403*/,0xC689 /*143211*/,0x0665 /*003145*/,
0xA200 /*121000*/,0x8700 /*103400*/,0x8000 /*100000*/,0x0111 /*000421*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1C10 /*016020*/,0x0BD0 /*005720*/,
0x892C /*104454*/,0x1180 /*010600*/,0x1D81 /*016601*/,0x0010 /*000020*/,0x8916 /*104426*/,0x1181 /*010601*/,0x1D80 /*016600*/,0x0010 /*000020*/,
0x8910 /*104420*/,0x1D80 /*016600*/,0x0010 /*000020*/,0x0AF0 /*005360*/,0x0004 /*000004*/,0x65C6 /*062706*/,0x0006 /*000006*/,0x0087 /*000207*/,
0x7996 /*074626*/,0x5A82 /*055202*/,0x8001 /*100001*/,0xABBA /*125672*/,0x6AD4 /*065324*/,0x7FFF /*077777*/,0x0169 /*000551*/,0x0C00 /*006000*/,
0x3E00 /*037000*/,0x421C /*041034*/,0x8A6E /*105156*/,0x004B /*000113*/,0x9480 /*112200*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1C44 /*016104*/,
0x1DC6 /*016706*/,0xFB82 /*175602*/,0x8902 /*104402*/,0x15F7 /*012767*/,0x1C56 /*016126*/,0xE3B4 /*161664*/,0x1DC1 /*016701*/,0xE314 /*161424*/,
0x0102 /*000402*/,0x0AB7 /*005267*/,0x02DA /*001332*/,0x15F7 /*012767*/,0x1C66 /*016146*/,0xE3A4 /*161644*/,0x29A6 /*024646*/,0x15C1 /*012701*/,
0xE000 /*160000*/,0x2596 /*022626*/,0x1849 /*014111*/,0xE5C1 /*162701*/,0x00C2 /*000302*/,0x1077 /*010167*/,0x02C0 /*001300*/,0x018F /*000617*/,
0x3400 /*032000*/,0x7200 /*071000*/,0xC01C /*140034*/,0x6015 /*060025*/,0x6A17 /*065027*/,0xC289 /*141211*/,0x4CA5 /*046245*/,0x1B00 /*015400*/,
0xC203 /*141003*/,0x44A5 /*042245*/,0x1D00 /*016400*/,0xC203 /*141003*/,0x45A5 /*042645*/,0x1800 /*014000*/,0xC203 /*141003*/,0x48A5 /*044245*/,
0x1A00 /*015000*/,0xC203 /*141003*/,0x0AA5 /*005245*/,0x4300 /*041400*/,0x3803 /*034003*/,0x1889 /*014211*/,0xC102 /*140402*/,0x080A /*004012*/,
0x3789 /*033611*/,0x9A10 /*115020*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1CA0 /*016240*/,0x0286 /*001206*/,0x893A /*104472*/,0xA5C2 /*122702*/,
0x000A /*000012*/,0x0339 /*001471*/,0xA5C2 /*122702*/,0x002C /*000054*/,0x02F9 /*001371*/,0x893A /*104472*/,0x01E2 /*000742*/,0x0AB7 /*005267*/,
0x0272 /*001162*/,0x01F4 /*000764*/,0x0AB7 /*005267*/,0x0270 /*001160*/,0x0AB7 /*005267*/,0x026A /*001152*/,0x01EF /*000757*/,0x0AF7 /*005367*/,
0x0268 /*001150*/,0x01EC /*000754*/,0x0A37 /*005067*/,0x025A /*001132*/,0x0174 /*000564*/,0x3400 /*032000*/,0xCE00 /*147000*/,0x371C /*033434*/,
0x580A /*054012*/,0x3702 /*033402*/,0x560A /*053012*/,0x3702 /*033402*/,0x540A /*052012*/,0x3702 /*033402*/,0x520A /*051012*/,0xC002 /*140002*/,
0xC415 /*142025*/,0x6A1E /*065036*/,0xF789 /*173611*/,0x4410 /*042020*/,0x0502 /*002402*/,0xC007 /*140007*/,0x9C15 /*116025*/,0x6A1E /*065036*/,
0xF789 /*173611*/,0x3A10 /*035020*/,0xF702 /*173402*/,0x3C0B /*036013*/,0x0502 /*002402*/,0xC002 /*140002*/,0x9D15 /*116425*/,0x0001 /*000001*/,
0x0034 /*000064*/,0x1CFC /*016374*/,0x1EE8 /*017350*/,0x896A /*104552*/,0x10F7 /*010367*/,0x0226 /*001046*/,0x15C0 /*012700*/,0x1F01 /*017401*/,
0x896A /*104552*/,0x10F7 /*010367*/,0x0222 /*001042*/,0x15C0 /*012700*/,0x1F1F /*017437*/,0x8936 /*104466*/,0x8940 /*104500*/,0x8908 /*104410*/,
0x1037 /*010067*/,0x020C /*001014*/,0x6DF7 /*066767*/,0x0214 /*001024*/,0x0208 /*001010*/,0x0BF7 /*005767*/,0x0204 /*001004*/,0x0707 /*003407*/,
0x15F7 /*012767*/,0x0151 /*000521*/,0x3400 /*032000*/,0x2A00 /*025000*/,0x701D /*070035*/,0x96FF /*113377*/,0xF7FA /*173772*/,0x7415 /*072025*/,
0x92FF /*111377*/,0x06FA /*003372*/,0xF701 /*173401*/,0x6815 /*064025*/,0x88FF /*104377*/,0xF7FA /*173772*/,0x6C15 /*066025*/,0x84FF /*102377*/,
0xC1FA /*140772*/,0xEC1D /*166035*/,0xC001 /*140001*/,0xDE1D /*157035*/,0x0C01 /*006001*/,0xC003 /*140003*/,0xC000 /*140000*/,0xC00C /*140014*/,
0xC00C /*140014*/,0xC00C /*140014*/,0xFF45 /*177505*/,0xC407 /*142007*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1D58 /*016530*/,0x2017 /*020027*/,
0x2000 /*020000*/,0x87B6 /*103666*/,0x2001 /*020001*/,0x8201 /*101001*/,0x1001 /*010001*/,0x1046 /*010106*/,0x15F7 /*012767*/,0x0006 /*000006*/,
0xE298 /*161230*/,0x1077 /*010167*/,0xFA5A /*175132*/,0x15C1 /*012701*/,0x1C44 /*016104*/,0x0BF7 /*005767*/,0x01B4 /*000664*/,0x071B /*003433*/,
0x0A37 /*005067*/,0xEE5E /*167136*/,0x0A37 /*005067*/,0xEE5C /*167134*/,0x0A37 /*005067*/,0xEE5A /*167132*/,0x01A0 /*000640*/,0x3400 /*032000*/,
0x8600 /*103000*/,0x371D /*033435*/,0x5E0A /*057012*/,0xC1EE /*140756*/,0x1015 /*010025*/,0xF71A /*173432*/,0x9C0B /*116013*/,0x0E01 /*007001*/,
0x3707 /*033407*/,0x4A0A /*045012*/,0x37EE /*033756*/,0x480A /*044012*/,0xC0EE /*140356*/,0x5E15 /*057025*/,0x8000 /*100000*/,0xC10C /*140414*/,
0xCC15 /*146025*/,0xC217 /*141027*/,0x2615 /*023025*/,0x911E /*110436*/,0xC014 /*140024*/,0xFD0A /*176412*/,0xF706 /*173406*/,0x7C0B /*076013*/,
0x7301 /*071401*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1DB4 /*016664*/,0x041E /*002036*/,0x15F7 /*012767*/,0x1DC2 /*016702*/,0xE270 /*161160*/,
0x1077 /*010167*/,0xFA02 /*175002*/,0x0000 /*000000*/,0x1DC1 /*016701*/,0xF9FC /*174774*/,0x15C0 /*012700*/,0x0018 /*000030*/,0x0C80 /*006200*/,
0x15C2 /*012702*/,0x1E84 /*017204*/,0x1077 /*010167*/,0xEE32 /*167062*/,0x1077 /*010167*/,0xED4C /*166514*/,0x15C3 /*012703*/,0x000E /*000016*/,
0x6043 /*060103*/,0x10F7 /*010367*/,0xE24A /*161112*/,0x0130 /*000460*/,0x3400 /*032000*/,0xE200 /*161000*/,0x911D /*110435*/,0xC014 /*140024*/,
0xFD0A /*176412*/,0xC606 /*143006*/,0x3C1D /*036035*/,0xB7E2 /*133742*/,0xDA11 /*155021*/,0x02F9 /*001371*/,0x3701 /*033401*/,0xFA0A /*175012*/,
0x77ED /*073755*/,0xB810 /*134020*/,0xC5F9 /*142771*/,0xB41D /*132035*/,0xD5F9 /*152771*/,0x0A95 /*005225*/,0x3700 /*033400*/,0xBC0A /*136012*/,
0x77F9 /*073771*/,0x4000 /*040000*/,0x36E8 /*033350*/,0x4089 /*040211*/,0x3A89 /*035211*/,0x7889 /*074211*/,0x0001 /*000001*/,0x0034 /*000064*/,
0x1E10 /*017020*/,0x0A03 /*005003*/,0xA097 /*120227*/,0x0059 /*000131*/,0x0202 /*001002*/,0x0AC3 /*005303*/,0x0087 /*000207*/,0xA097 /*120227*/,
0x004E /*000116*/,0x02FC /*001374*/,0x0A83 /*005203*/,0x0087 /*000207*/,0x1026 /*010046*/,0x892C /*104454*/,0x1040 /*010100*/,0x892C /*104454*/,
0x15C1 /*012701*/,0x11B6 /*010666*/,0x1D80 /*016600*/,0x000C /*000014*/,0x891A /*104432*/,0x1180 /*010600*/,0x1026 /*010046*/,0x1026 /*010046*/,
0x013B /*000473*/,0x3400 /*032000*/,0x3E00 /*037000*/,0xCE1E /*147036*/,0x0665 /*003145*/,0x8000 /*100000*/,0x021D /*001035*/,0x0100 /*000400*/,
0xDF10 /*157420*/,0xFA09 /*175011*/,0xF616 /*173026*/,0x060B /*003013*/,0x0500 /*002400*/,0x0E06 /*007006*/,0xC605 /*143005*/,0x1265 /*011145*/,
0xA200 /*121000*/,0x8700 /*103400*/,0x8100 /*100400*/,0x8013 /*100023*/,0x101D /*010035*/,0x1800 /*014000*/,0xC189 /*140611*/,0xB615 /*133025*/,
0x8011 /*100021*/,0x021D /*001035*/,0xE500 /*162400*/,0x0001 /*000001*/,0x0034 /*000064*/,0x1E6C /*017154*/,0x8912 /*104422*/,0x01EE /*000756*/,
0x1381 /*011601*/,0x1D80 /*016600*/,0x0010 /*000020*/,0x8916 /*104426*/,0x15C1 /*012701*/,0x11B6 /*010666*/,0x1D80 /*016600*/,0x0002 /*000002*/,
0x8910 /*104420*/,0x01E4 /*000744*/,0x65C6 /*062706*/,0x0008 /*000010*/,0x1040 /*010100*/,0x1581 /*012601*/,0x17C2 /*013702*/,0x0028 /*000050*/,
0x004A /*000112*/,0x1582 /*012602*/,0x1583 /*012603*/,0x1584 /*012604*/,0x005F /*000137*/,0x0192 /*000622*/,0x0800 /*004000*/,0x9A00 /*115000*/,
0x181E /*014036*/,0x1C0B /*016013*/,0x0001 /*000001*/,0x0026 /*000046*/,0x1760 /*013540*/,0x4450 /*042120*/,0x2D50 /*026520*/,0x3131 /*030461*/,
0x4220 /*041040*/,0x5341 /*051501*/,0x4349 /*041511*/,0x202C /*020054*/,0x4556 /*042526*/,0x5352 /*051522*/,0x4F49 /*047511*/,0x204E /*020116*/,
0x3030 /*030060*/,0x4137 /*040467*/,0x0A0D /*005015*/,0x4F2A /*047452*/,0x0020 /*000040*/,0x0153 /*000523*/,0x3400 /*032000*/,0x9C00 /*116000*/,
0x441E /*042036*/,0x204F /*020117*/,0x4F59 /*047531*/,0x2055 /*020125*/,0x4552 /*042522*/,0x5551 /*052521*/,0x5249 /*051111*/,0x2045 /*020105*/,
0x5845 /*054105*/,0x2050 /*020120*/,0x524F /*051117*/,0x4C20 /*046040*/,0x474F /*043517*/,0x2820 /*024040*/,0x4C46 /*046106*/,0x414F /*040517*/,
0x4954 /*044524*/,0x474E /*043516*/,0x5E20 /*057040*/,0x3F29 /*037451*/,0x4400 /*042000*/,0x204F /*020117*/,0x4F59 /*047531*/,0x2255 /*021125*/,
0x0001 /*000001*/,0x0034 /*000064*/,0x1ECA /*017312*/,0x4E20 /*047040*/,0x4545 /*042505*/,0x2044 /*020104*/,0x4854 /*044124*/,0x2045 /*020105*/,
0x5845 /*054105*/,0x4554 /*042524*/,0x444E /*042116*/,0x4445 /*042105*/,0x4620 /*043040*/,0x4E55 /*047125*/,0x5443 /*052103*/,0x4F49 /*047511*/,
0x534E /*051516*/,0x003F /*000077*/,0x4948 /*044510*/,0x4847 /*044107*/,0x532D /*051455*/,0x4550 /*042520*/,0x4445 /*042105*/,0x5220 /*051040*/,
0x4145 /*040505*/,0x4544 /*042504*/,0x01DE /*000736*/,0x3400 /*032000*/,0xF800 /*174000*/,0x521E /*051036*/,0x502F /*050057*/,0x4E55 /*047125*/,
0x4843 /*044103*/,0x003F /*000077*/,0x4553 /*042523*/,0x2054 /*020124*/,0x5055 /*050125*/,0x5420 /*052040*/,0x4548 /*042510*/,0x4520 /*042440*/,
0x5458 /*052130*/,0x5245 /*051105*/,0x414E /*040516*/,0x204C /*020114*/,0x5546 /*052506*/,0x434E /*041516*/,0x4954 /*044524*/,0x4E4F /*047117*/,
0x003F /*000077*/,0x454D /*042515*/,0x4F4D /*047515*/,0x5952 /*054522*/,0x653F /*062477*/,0x0001 /*000001*/,0x0007 /*000007*/,0x1F26 /*017446*/,
0xB300 /*131400*/,0x0001 /*000001*/,0x0014 /*000024*/,0x1F28 /*017450*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x01A4 /*000644*/,0x0600 /*003000*/,0x4400 /*042000*/,0x991C /*114434*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x8100 /*100400*/,0x2442 /*022102*/,0x2418 /*022030*/,0x8142 /*100502*/,0x2442 /*022102*/,0x2418 /*022030*/,0x8142 /*100502*/,
0x2442 /*022102*/,0x2418 /*022030*/,0x8142 /*100502*/,0x0000 /*000000*/,0xCC00 /*146000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,0x0000 /*000000*/,
0x0000 /*000000*/,0xFF00 /*177400*/]
}

View file

@ -0,0 +1,258 @@
---
layout: page
title: DEC PDP-11 BASIC
permalink: /apps/pdp11/tapes/basic/
---
DEC PDP-11 BASIC
----------------
Try the [DEC BASIC Demo](/devices/pdp11/machine/1120/basic/debugger/).
PCjs has archived the following DEC resources:
- [BASIC (Single User) Tape Image](DEC-11-AJPB-PB.json)
- [PDP-11 BASIC PROGRAMMING MANUAL (December 1970)](http://archive.pcjs.org/pubs/dec/pdp11/basic/DEC-11-AJPB-D_PDP-11_BASIC_Programming_Manual_Dec70.pdf)
Third-party resources include:
- "[PDP-11 Paper Tape BASIC](http://www.avitech.com.au/ptb/ptb.html)", written March 24, 2013
---
Debugging Notes
---------------
### PDPjs Debugger vs. SIMH
When I first tried to run BASIC in a PDPjs machine, it crashed almost immediately. It was attempting to use memory beyond
the 16Kb of installed RAM. After a bit of poking around, I found BASIC's memory sizing code here:
016142: 012701 160000 MOV #160000,R1
016146: 022626 CMP (SP)+,(SP)+
016150: 014111 MOV -(R1),@R1
The code sets R1 to highest possible RAM address and starts scanning backwards for the first valid memory location. However,
the scanning process wasn't clear to me at first glance, and the `CMP (SP)+,(SP)+` was a bit of a head-scratcher, so I decided
to do an instruction-by-instruction comparison with SIMH.
After cloning the [SIMH project](https://github.com/simh/simh) and building the *pdp11* binary, I created a *pdp11.ini* text file
that contained:
ECHO Configuring PDP-11/20 with 16Kb of RAM...
SET CPU 11/20
SET CPU 16K
; Throttle SIMH to limit CPU usage, heat and fan noise
SET THROTTLE 5%
; Disable devices that we don't need
SET HK DISABLE
; SET RHA DISABLE
SET DZ DISABLE
SET RL DISABLE
SET RX DISABLE
SET RP DISABLE
SET RQ DISABLE
SET TM DISABLE
SET TQ DISABLE
SET RK DISABLE
; Enable the high-speed paper tape reader
SET PTR ENABLE
; SET PTP ENABLE
ECHO Loading BASIC paper tape image directly into memory...
LOAD DEC-11-AJPB-PB.ptap
ECHO Setting breakpoint at 016142...
break -e 016142
along with a *tr* text file that contained:
step
examine r0,r1,r2,r3,r4,r5,sp,psw
Then I ran *pdp11* and typed "g" to start the machine:
PDP-11 simulator V4.0-0 Beta git commit id: 592deb8f
Configuring PDP-11/20 with 16Kb of RAM...
Disabling XQ
Loading BASIC paper tape image directly into memory...
Setting breakpoint at 016142...
sim> g
Breakpoint, PC: 016142 (MOV #160000,R1)
sim> do tr
Step expired, PC: 016146 (CMP (SP)+,(SP)+)
R0: 004106
R1: 160000
R2: 000000
R3: 000000
R4: 000000
R5: 000000
SP: 013654
PSW: 000010 CM=K PM=K RS0 FPD0 IPL=0 TBIT0 N1 Z0 V0 C0
sim> do tr
Step expired, PC: 016150 (MOV -(R1),(R1))
R0: 004106
R1: 160000
R2: 000000
R3: 000000
R4: 000000
R5: 000000
SP: 013660
PSW: 000011 CM=K PM=K RS0 FPD0 IPL=0 TBIT0 N1 Z0 V0 C1
sim> do tr
Step expired, PC: 016152 (SUB #302,R1)
R0: 004106
R1: 157776
R2: 000000
R3: 000000
R4: 000000
R5: 000000
SP: 013660
PSW: 000011 CM=K PM=K RS0 FPD0 IPL=0 TBIT0 N1 Z0 V0 C1
sim> do tr
Step expired, PC: 016150 (MOV -(R1),(R1))
R0: 004106
R1: 157776
R2: 000000
R3: 000000
R4: 000000
R5: 000000
SP: 013660
PSW: 000000 CM=K PM=K RS0 FPD0 IPL=0 TBIT0 N0 Z0 V0 C0
After typing several "do tr" commands, I was surprised to see SIMH execution continually returning to this instruction:
Step expired, PC: 016150 (MOV -(R1),(R1))
until I remembered that when the PDP-11 accesses an invalid address, it's supposed to trap to vector 000004, and that BASIC
must have modified vector 000004 to jump into the middle of this code.
This code fragment was simply marching down the address space until it reached an address that didn't trap. The odd-looking
`CMP (SP)+,(SP)+` instruction was throwing away the PC and PSW that each trap pushed onto the stack, by effectively adding
4 to SP.
The problem with PDPjs was that it wasn't generating a trap to vector 000004 when an invalid address was accessed. After fixing
that, I verified with the PDPjs Debugger that the memory sizing code was working properly:
PDPjs v1.30.1
Copyright © 2012-2016 Jeff Parsons <Jeff@pcjs.org>
License: GPL version 3 or later <http://gnu.org/licenses/gpl.html>
Portions adapted from the PDP-11/70 Emulator v1.4 by Paul Nankervis <paulnank@hotmail.com>
bus: 00016Kb RAM at 000000
bus: 00008Kb H/W at 160000
cpu: model 1120
Type ? for help with PDP11 Debugger commands
R0=000000 R1=000000 R2=000000 R3=000000 R4=000000 R5=000000
SP=000000 PC=016104 PS=000013 T0 N1 Z0 V1 C1
016104: 016706 175602 MOV 013712,SP
>> bp 016142
bp 016142 set
>> g
running
bp 016142 hit
stopped (821 instructions, 7443 cycles, 23 ms, 323609 hz)
R0=004106 R1=000000 R2=000000 R3=000000 R4=000000 R5=000000
SP=013654 PC=016142 PS=000000 T0 N0 Z0 V0 C0
016142: 012701 160000 MOV #160000,R1
>> u
016146: 022626 CMP (SP)+,(SP)+
016150: 014111 MOV -(R1),@R1
016152: 162701 000302 SUB #302,R1
016156: 010167 001300 MOV R1,017462
016162: 012700 013540 MOV #13540,R0
016166: 104552 TRAP 152
016170: 122702 000114 CMPB #114,R2
016174: 001433 BEQ 016264
>> dw 4 l2
000004 016146 000000
>> tr
R0=004106 R1=160000 R2=000000 R3=000000 R4=000000 R5=000000
SP=013654 PC=016146 PS=000010 T0 N1 Z0 V0 C0
016146: 022626 CMP (SP)+,(SP)+ ;cycles=7
>> tr
R0=004106 R1=160000 R2=000000 R3=000000 R4=000000 R5=000000
SP=013660 PC=016150 PS=000011 T0 N1 Z0 V0 C1
016150: 014111 MOV -(R1),@R1 ;cycles=11
>> tr
trapped to 004 (157776)
R0=004106 R1=157776 R2=000000 R3=000000 R4=000000 R5=000000
SP=013654 PC=016146 PS=000000 T0 N0 Z0 V0 C0
016146: 022626 CMP (SP)+,(SP)+ ;cycles=0
>> tr
R0=004106 R1=157776 R2=000000 R3=000000 R4=000000 R5=000000
SP=013660 PC=016150 PS=000000 T0 N0 Z0 V0 C0
016150: 014111 MOV -(R1),@R1 ;cycles=11
>> tr
trapped to 004 (157774)
R0=004106 R1=157774 R2=000000 R3=000000 R4=000000 R5=000000
SP=013654 PC=016146 PS=000000 T0 N0 Z0 V0 C0
016146: 022626 CMP (SP)+,(SP)+ ;cycles=0
>> tr
R0=004106 R1=157774 R2=000000 R3=000000 R4=000000 R5=000000
SP=013660 PC=016150 PS=000000 T0 N0 Z0 V0 C0
016150: 014111 MOV -(R1),@R1 ;cycles=11
>> g
running
PDP-11 BASIC, VERSION 007A
*O
READY
I like to think that the PDPjs Debugger (and in fact, *all* PCjs Debuggers) is considerably simpler to use, and more
informative, too. For example, when you're single-stepping ("t" or "tr"), the Debugger will alert you if the previous
instruction triggered a trap.
There are also a variety of diagnostic "bus" and "memory" messages that can be enabled, if you want to see more detail
about each instruction's operation; see the Debugger's "m" command for details.
### TRAP Handling
One of the first things I noticed when debugging PDP-11 BASIC was its heavy reliance on TRAP instructions.
For example, `TRAP 000` is used to output the character in R2 to the terminal. Let's take a closer look at how
its TRAP handler works.
Since the trap vector for TRAP instructions is fixed at address 000034, we need to dump the contents of that vector:
>> dw 034 l2
000034 000100 000000
This tells us that the BASIC TRAP handler is at 000100:
>> u 000100
000100: 011666 000002 MOV @SP,2(SP)
000104: 162716 000002 SUB #2,@SP
000110: 013646 MOV @(SP)+,-(SP)
000112: 006216 ASR @SP
000114: 103404 BCS 000126
000116: 006316 ASL @SP
000120: 062716 073654 ADD #73654,@SP
000124: 013607 MOV @(SP)+,PC
When the code starts, the TRAP instruction has already pushed two words onto the stack:
0(SP): previous PC
2(SP): previous PSW
The first instruction, `MOV @SP,2(SP)`, copies the *previous PC* onto the *previous PSW*, which is where we'll eventually want
*previous PC*, so that the handler can eventually return with a simple `RTS PC`.
The next instruction, `SUB #2,@SP`, subtracts 2 from the original *previous PC*, so that it now points to the TRAP instruction.
Then `@(SP)+,-(SP)` fetches the TRAP instruction while also "popping" the original *previous PC* and then "pushing" TRAP
instruction onto the stack, overwriting the original *previous PC*.
The next few instructions shift the TRAP right to see if bit 0 is set, and if it is not, then the TRAP instruction is restored
by shifting it left again, and then a large offset is added to it, transforming the TRAP instruction (which is now known to be
an *even* value) into a jump table index.
The final instruction, `MOV @(SP)+,PC`, moves the address at the jump table index into PC, while also removing the TRAP
instruction from the stack, leaving only the *previous PC* on the stack, so that when the TRAP handler is done, it can execute
`RTS PC` to return to the caller.

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.30.1/machine.xsl"?>
<machine id="c1psim" class="c1p" border="1" width="100%" padbottom="8px" background="#FAEBD7" style="padding-bottom:8px">
<machine id="c1psim" class="c1p" border="1" width="100%" padBottom="8px" background="#FAEBD7" style="padding-bottom:8px">
<name>OSI Challenger 1P (32Kb) with Disk Support</name>
<computer id="c1p" name="Challenger 1P">
<module type="cpu" refid="cpu6502" start="0x0000" end="0xffff"/>
@ -22,7 +22,7 @@
<video id="video" screenWidth="1024" screenHeight="800" cols="32" rows="32" smoothing="false" charSet="/devices/c1p/video/chargen4x.png" width="512px" padding="8px">
<name>Video Display</name>
</video>
<keyboard id="keyboard" padleft="8px">
<keyboard id="keyboard" padLeft="8px">
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-o">CTRL-O</control>
<control type="button" binding="break">BREAK</control>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.30.1/machine.xsl"?>
<machine id="c1pAll" class="c1p" border="1" width="100%" padbottom="8px" background="#FAEBD7" style="padding-bottom:8px">
<machine id="c1pAll" class="c1p" border="1" width="100%" padBottom="8px" background="#FAEBD7" style="padding-bottom:8px">
<name>OSI Challenger 1P (8Kb, Additional Software)</name>
<computer id="c1p" name="Challenger 1P">
<module type="cpu" refid="cpu6502" start="0x0000" end="0xffff"/>
@ -21,7 +21,7 @@
<video id="video" screenWidth="1024" screenHeight="800" cols="32" rows="32" smoothing="false" charSet="/devices/c1p/video/chargen4x.png" width="512px" padding="8px">
<name>Video Display</name>
</video>
<keyboard id="keyboard" padleft="8px">
<keyboard id="keyboard" padLeft="8px">
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-o">CTRL-O</control>
<control type="button" binding="break">BREAK</control>

View file

@ -20,7 +20,7 @@
<video id="video" screenWidth="1024" screenHeight="800" cols="32" rows="32" smoothing="false" charSet="/devices/c1p/video/chargen4x.png" padding="8px">
<name>Video Display</name>
</video>
<keyboard id="keyboard" padleft="8px">
<keyboard id="keyboard" padLeft="8px">
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-o">CTRL-O</control>
<control type="button" binding="break">BREAK</control>

View file

@ -16,7 +16,7 @@
<rom id="romBasic" size="0x2000" image="/devices/c1p/rom/basic-gcpatch.hex"/>
<rom id="romSystem" size="0x0800" image="/devices/c1p/rom/system.hex"/>
<video id="video" screenWidth="512" screenHeight="400" cols="32" rows="32" smoothing="false" charSet="/devices/c1p/video/chargen2x.png" width="256px" padding="8px"/>
<keyboard id="keyboard" pos="center" padleft="8px">
<keyboard id="keyboard" pos="center" padLeft="8px">
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-o">CTRL-O</control>
<control type="button" binding="break">BREAK</control>

View file

@ -21,12 +21,12 @@
<video id="video" screenWidth="1024" screenHeight="800" cols="32" rows="32" smoothing="false" charSet="../../../../video/chargen4x.png" width="512px" padding="8px">
<name>Video Display</name>
</video>
<keyboard id="keyboard" padleft="8px">
<keyboard id="keyboard" padLeft="8px">
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-o">CTRL-O</control>
<control type="button" binding="break">BREAK</control>
</keyboard>
<serial id="serialPort" pos="left" padleft="8px">
<serial id="serialPort" pos="left" padLeft="8px">
<control type="list" binding="listSerial">
<item ref="../../../../../../apps/c1p/BASIC/OSI/POKER.BAS">POKER</item>
<item ref="../../../../../../apps/c1p/BASIC/OSI/SAMPLE1.BAS">BASIC MATH</item>

View file

@ -21,7 +21,7 @@
<video id="video" screenWidth="1024" screenHeight="800" cols="32" rows="32" smoothing="false" charSet="/devices/c1p/video/chargen4x.png" width="512px" padding="8px">
<name>Video Display</name>
</video>
<keyboard id="keyboard" padleft="8px">
<keyboard id="keyboard" padLeft="8px">
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-o">CTRL-O</control>
<control type="button" binding="break">BREAK</control>

View file

@ -17,10 +17,10 @@
<rom id="romBasic" size="0x2000" image="/devices/c1p/rom/basic-gcpatch.hex"/>
<rom id="romSystem" size="0x0800" image="/devices/c1p/rom/system.hex"/>
<video id="video" screenWidth="1024" screenHeight="800" cols="32" rows="32" smoothing="false" charSet="/devices/c1p/video/chargen4x.png" padding="8px"/>
<cpu id="cpu6502" autostart="false" pos="left" padleft="8px">
<cpu id="cpu6502" autostart="false" pos="left" padLeft="8px">
<control type="button" binding="run">Run</control>
</cpu>
<keyboard id="keyboard" pos="left" padleft="8px">
<keyboard id="keyboard" pos="left" padLeft="8px">
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-o">CTRL-O</control>
<control type="button" binding="break">BREAK</control>

View file

@ -17,7 +17,7 @@
<rom id="romBasic" size="0x2000" image="/devices/c1p/rom/basic-gcpatch.hex"/>
<rom id="romSystem" size="0x0800" image="/devices/c1p/rom/system.hex"/>
<video id="video" screenWidth="512" screenHeight="400" cols="32" rows="32" smoothing="false" charSet="/devices/c1p/video/chargen2x.png" width="256px" padding="8px"/>
<keyboard id="keyboard" padleft="8px">
<keyboard id="keyboard" padLeft="8px">
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-o">CTRL-O</control>
<control type="button" binding="break">BREAK</control>

View file

@ -13,8 +13,8 @@ All our [8080-Based Machines](machine/) are built from a collection of devices,
* [Control Panels](panel/)
* CPU (8080)
* [Machines](machine/)
* RAM
* [ROMs](rom/)
* [RAM Images](ram/)
* [ROM Images](rom/)
* Video Adapters
Complete [machine configurations](machine/) are constructed from those devices. A machine configuration is a single XML file

View file

@ -18,7 +18,7 @@ PCjs Project.
The test machine below loads a copy of the
[8080 Exerciser](https://web.archive.org/web/20151006085348/http://www.idb.me.uk/sunhillow/8080.html)
(specifically, [8080EX1](/devices/pc8080/rom/exerciser/8080EX1.MAC)) and intercepts the exerciser's CP/M console
(specifically, [8080EX1](/devices/pc8080/ram/exerciser/8080EX1.MAC)) and intercepts the exerciser's CP/M console
calls so that you can see its progress in the Control Panel window. This is a "headless" test machine
(no keyboard or display), so that's all you get.

View file

@ -4,8 +4,7 @@
<name pos="center">8080 Exerciser Test Machine</name>
<computer id="computer" busWidth="16"/>
<cpu id="cpu8080" model="8080" cycles="2000000"/>
<rom id="romTest" addr="0x0100" size="0x1200" file="/devices/pc8080/rom/exerciser/8080EX1.json" writable="true"/>
<ram id="ramTest" addr="0x1300" size="0xED00"/>
<ram id="ram64K" addr="0x0000" size="0x10000" file="/devices/pc8080/ram/exerciser/8080EX1.json" load="0x100" exec="0x100"/>
<panel ref="/devices/pc8080/panel/wide.xml"/>
<debugger id="debugger"/>
</machine>

View file

@ -4,8 +4,7 @@
<name pos="center">8080 Exerciser Preliminary Test Machine</name>
<computer id="computer" busWidth="16"/>
<cpu id="cpu8080" model="8080" cycles="2000000"/>
<rom id="romTest" addr="0x0100" size="0x0400" file="/devices/pc8080/rom/exerciser/8080PRE.json" writable="true"/>
<ram id="ramTest" addr="0x0500" size="0xFB00"/>
<ram id="ram64K" addr="0x0000" size="0x10000" file="/devices/pc8080/ram/exerciser/8080PRE.json" load="0x100" exec="0x100"/>
<panel ref="/devices/pc8080/panel/wide.xml"/>
<debugger id="debugger"/>
</machine>

View file

@ -4,8 +4,7 @@
<name pos="center">8080 CPUTEST Machine</name>
<computer id="computer" busWidth="16"/>
<cpu id="cpu8080" model="8080" cycles="2000000"/>
<rom id="romTest" addr="0x0100" size="0x4B00" file="/devices/pc8080/rom/exerciser/CPUTEST.json" writable="true"/>
<ram id="ramTest" addr="0x4C00" size="0xB400"/>
<ram id="ram64K" addr="0x0000" size="0x10000" file="/devices/pc8080/ram/exerciser/CPUTEST.json" load="0x100" exec="0x100"/>
<panel ref="/devices/pc8080/panel/wide.xml"/>
<debugger id="debugger"/>
</machine>

View file

@ -4,8 +4,7 @@
<name pos="center">8080 "Kelly Smith" Test Machine</name>
<computer id="computer" busWidth="16"/>
<cpu id="cpu8080" model="8080" cycles="2000000"/>
<rom id="romTest" addr="0x0100" size="0x0701" file="/devices/pc8080/rom/exerciser/TEST.json" writable="true"/>
<ram id="ramTest" addr="0x0801" size="0xF7FF"/>
<ram id="ram64K" addr="0x0000" size="0x10000" file="/devices/pc8080/ram/exerciser/TEST.json" load="0x100" exec="0x100"/>
<panel ref="/devices/pc8080/panel/wide.xml"/>
<debugger id="debugger"/>
</machine>

View file

@ -4,8 +4,7 @@
<name pos="center">8080 Exerciser Test Machine</name>
<computer id="computer" busWidth="16"/>
<cpu id="cpu8080" model="8080" cycles="2000000"/>
<rom id="romTest" addr="0x0100" size="0x1200" file="/devices/pc8080/rom/exerciser/8080EX1.json" writable="true"/>
<ram id="ramTest" addr="0x1300" size="0xED00"/>
<ram id="ram64K" addr="0x0000" size="0x10000" file="/devices/pc8080/ram/exerciser/8080EX1.json" load="0x100" exec="0x100"/>
<panel ref="/devices/pc8080/panel/wide.xml"/>
<debugger id="debugger"/>
</machine>

View file

@ -14,7 +14,7 @@
<menu>
<title>224x256 Screen (Rotated)</title>
<control type="container" pos="right">
<control type="button" binding="fullScreen" padleft="8px;line-height:1em">Full Screen</control>
<control type="button" binding="fullScreen" padLeft="8px;line-height:1em">Full Screen</control>
</control>
</menu>
</video>

View file

@ -14,7 +14,7 @@
<menu>
<title>224x256 Screen (Rotated)</title>
<control type="container" pos="right">
<control type="button" binding="fullScreen" padleft="8px;line-height:1em">Full Screen</control>
<control type="button" binding="fullScreen" padLeft="8px;line-height:1em">Full Screen</control>
</control>
</menu>
</video>

View file

@ -12,23 +12,23 @@
<menu>
<title>VT100 Screen</title>
<control type="container" pos="right">
<control type="rled" label="ON LINE" binding="online" padleft="8px"/>
<control type="rled" label="LOCAL" binding="local" padleft="8px"/>
<control type="rled" label="LOCKED" binding="locked" padleft="8px"/>
<control type="rled" label="L1" binding="l1" padleft="8px"/>
<control type="rled" label="L2" binding="l2" padleft="8px"/>
<control type="rled" label="L3" binding="l3" padleft="8px"/>
<control type="rled" label="L4" binding="l4" padleft="8px"/>
<control type="button" binding="fullScreen" padleft="8px;line-height:1em">Full Screen</control>
<control type="rled" label="ON LINE" binding="online" padLeft="8px"/>
<control type="rled" label="LOCAL" binding="local" padLeft="8px"/>
<control type="rled" label="LOCKED" binding="locked" padLeft="8px"/>
<control type="rled" label="L1" binding="l1" padLeft="8px"/>
<control type="rled" label="L2" binding="l2" padLeft="8px"/>
<control type="rled" label="L3" binding="l3" padLeft="8px"/>
<control type="rled" label="L4" binding="l4" padLeft="8px"/>
<control type="button" binding="fullScreen" padLeft="8px;line-height:1em">Full Screen</control>
</control>
</menu>
</video>
<chipset id="chipset" model="VT100"/>
<keyboard id="keyboard" model="VT100">
<control type="button" binding="setup" padleft="8px">SET-UP</control>
<control type="button" binding="setup" padLeft="8px">SET-UP</control>
</keyboard>
<serial id="serialPort" adapter="0" binding="print">
<control type="button" binding="test" value="HELLO WORLD!\n\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D" padleft="8px">TEST RECEIVER</control>
<control type="button" binding="test" value="HELLO WORLD!\n\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D" padLeft="8px">TEST RECEIVER</control>
</serial>
<panel ref="/devices/pc8080/panel/wide.xml"/>
<debugger id="debugger" messages="mem|port" commands="s 8086"/>

View file

@ -12,22 +12,22 @@
<menu>
<title>VT100 Screen</title>
<control type="container" pos="right">
<control type="rled" label="ON LINE" binding="online" padleft="8px"/>
<control type="rled" label="LOCAL" binding="local" padleft="8px"/>
<control type="rled" label="LOCKED" binding="locked" padleft="8px"/>
<control type="rled" label="L1" binding="l1" padleft="8px"/>
<control type="rled" label="L2" binding="l2" padleft="8px"/>
<control type="rled" label="L3" binding="l3" padleft="8px"/>
<control type="rled" label="L4" binding="l4" padleft="8px"/>
<control type="button" binding="fullScreen" padleft="8px;line-height:1em">Full Screen</control>
<control type="rled" label="ON LINE" binding="online" padLeft="8px"/>
<control type="rled" label="LOCAL" binding="local" padLeft="8px"/>
<control type="rled" label="LOCKED" binding="locked" padLeft="8px"/>
<control type="rled" label="L1" binding="l1" padLeft="8px"/>
<control type="rled" label="L2" binding="l2" padLeft="8px"/>
<control type="rled" label="L3" binding="l3" padLeft="8px"/>
<control type="rled" label="L4" binding="l4" padLeft="8px"/>
<control type="button" binding="fullScreen" padLeft="8px;line-height:1em">Full Screen</control>
</control>
</menu>
</video>
<chipset id="chipset" model="VT100"/>
<keyboard id="keyboard" model="VT100">
<control type="button" binding="setup" padleft="8px" padbottom="8px">SET-UP</control>
<control type="button" binding="setup" padLeft="8px" padBottom="8px">SET-UP</control>
</keyboard>
<serial id="serialPort" adapter="0">
<control type="button" binding="test" value="HELLO WORLD!\n\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D" padleft="8px" padbottom="8px">TEST RECEIVER</control>
<control type="button" binding="test" value="HELLO WORLD!\n\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D\\e[D" padLeft="8px" padBottom="8px">TEST RECEIVER</control>
</serial>
</machine>

View file

@ -1,28 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<panel id="panel" width="50%" pos="left" padding="8px">
<name>Control Panel</name>
<control type="container" class="pcjs-textarea" width="100%" padright="8px">
<control type="container" class="pcjs-textarea" width="100%" padRight="8px">
<control type="textarea" binding="print" width="100%" height="252px" pos="relative" style="resize:vertical;"/>
</control>
<control type="container" class="pcjs-registers" width="100%" padleft="8px">
<control type="register" label="A" binding="A" width="20px" padright="8px" padbottom="8px">00</control>
<control type="register" label="BC" binding="BC" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="DE" binding="DE" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="HL" binding="HL" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="SP" binding="SP" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="PC" binding="PC" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="container" class="pcjs-registers" width="100%" padLeft="8px">
<control type="register" label="A" binding="A" width="20px" padRight="8px" padBottom="8px">00</control>
<control type="register" label="BC" binding="BC" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="DE" binding="DE" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="HL" binding="HL" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="SP" binding="SP" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="PC" binding="PC" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="container" pos="left">
<control type="flag" label="I" binding="IF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="S" binding="SF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="Z" binding="ZF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="A" binding="AF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="P" binding="PF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="C" binding="CF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="I" binding="IF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="S" binding="SF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="Z" binding="ZF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="A" binding="AF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="P" binding="PF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="C" binding="CF" width="8px" padRight="4px" padBottom="8px">0</control>
</control>
<control type="description" padleft="16px" padbottom="8px">Speed:</control>
<control type="description" binding="speed" padleft="4px" padbottom="8px">Stopped</control>
<control type="description" padLeft="16px" padBottom="8px">Speed:</control>
<control type="description" binding="speed" padLeft="4px" padBottom="8px">Stopped</control>
</control>
<control type="container" padleft="8px" padbottom="8px">
<control type="container" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="step">Step</control>
<control type="button" binding="reset">Reset</control>

View file

@ -1,32 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<panel id="panel" width="100%" padding="8px">
<name>Control Panel</name>
<control type="container" class="pcjs-textarea" width="99%" padright="8px">
<control type="container" class="pcjs-textarea" width="99%" padRight="8px">
<control type="textarea" binding="print" width="100%" height="252px" pos="relative" style="resize:vertical;"/>
</control>
<control type="container" class="pcjs-registers" width="100%" padleft="8px">
<control type="register" label="A" binding="A" width="20px" padright="8px" padbottom="8px">00</control>
<control type="register" label="BC" binding="BC" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="DE" binding="DE" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="HL" binding="HL" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="SP" binding="SP" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="PC" binding="PC" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="container" class="pcjs-registers" width="100%" padLeft="8px">
<control type="register" label="A" binding="A" width="20px" padRight="8px" padBottom="8px">00</control>
<control type="register" label="BC" binding="BC" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="DE" binding="DE" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="HL" binding="HL" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="SP" binding="SP" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="PC" binding="PC" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="container" pos="left">
<control type="flag" label="I" binding="IF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="S" binding="SF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="Z" binding="ZF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="A" binding="AF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="P" binding="PF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="C" binding="CF" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="I" binding="IF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="S" binding="SF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="Z" binding="ZF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="A" binding="AF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="P" binding="PF" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="C" binding="CF" width="8px" padRight="4px" padBottom="8px">0</control>
</control>
<control type="description" padleft="16px" padbottom="8px">Speed:</control>
<control type="description" binding="speed" padleft="4px" padbottom="8px">Stopped</control>
<control type="description" padLeft="16px" padBottom="8px">Speed:</control>
<control type="description" binding="speed" padLeft="4px" padBottom="8px">Stopped</control>
</control>
<control type="container" padbottom="8px">
<control type="container" padBottom="8px">
<control type="text" binding="debugInput" width="100px"/>
<control type="button" binding="debugEnter">Enter</control>
<control type="button" binding="clear">Clear</control>
<control type="button" binding="run" padleft="32px">Run</control>
<control type="button" binding="run" padLeft="32px">Run</control>
<control type="button" binding="step">Step</control>
<control type="button" binding="reset">Reset</control>
<control type="button" binding="setSpeed">Fast</control>

View file

@ -0,0 +1,23 @@
---
layout: page
title: 8080-Based RAM Images
permalink: /devices/pc8080/ram/
---
8080-Based RAM Images
---------------------
RAM images are added to machines by including a `<ram>` component in the machine XML configuration file
with the *file* attribute set to the filename of the image, along with optional *load* and *exec* addresses; eg:
```xml
<ram id="ram64K" addr="0x0000" size="0x10000" file="/devices/pc8080/ram/exerciser/8080EX1.json" load="0x100" exec="0x100"/>
```
If no *load* address is specified, the `<ram>` component relies on the "load" property of the JSON-encoded RAM image;
otherwise, the starting RAM address is used. If no *exec* address is specified, the CPU will begin execution at its usual
reset address.
The project currently contains the following 8080-based RAM images:
* [8080 Exerciser Tests](exerciser/)

View file

@ -1,7 +1,9 @@
---
layout: page
title: 8080 Exerciser Tests
permalink: /devices/pc8080/rom/exerciser/
permalink: /devices/pc8080/ram/exerciser/
redirect_from:
- /devices/pc8080/rom/exerciser/
---
8080 Exerciser Tests
@ -12,4 +14,4 @@ permalink: /devices/pc8080/rom/exerciser/
* [8080PRE](8080PRE.MAC)
Our [8080 Exerciser Test Machine](/devices/pc8080/machine/exerciser/) runs [8080EX1](8080EX1.MAC),
since it is the most comprehensive test and verifies strict compatibilty with the original Intel 8080.
since it is the most comprehensive test and verifies strict compatibility with the original Intel 8080.

View file

@ -1,21 +1,20 @@
---
layout: page
title: 8080-Based ROMs
title: 8080-Based ROM Images
permalink: /devices/pc8080/rom/
---
8080-Based ROMs
---
8080-Based ROM Images
---------------------
ROMs are added to machines by including one *[ROM](/docs/pcx86/rom/)* component in the machine XML configuration file
ROMs are added to machines by including one `<rom>` component in the machine XML configuration file
for each ROM in the machine; eg:
```xml
<rom id="romH" addr="0x0000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-H.json"/>
```
The project currently contains the following 8080-based ROMs:
The project currently contains the following 8080-based ROM images:
* [8080 Exerciser Tests](exerciser/)
* [Space Invaders (1978)](invaders/)
* [DEC VT100 Terminal](vt100/)

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<chipset id="chipset" model="5150" sw1="01001001" sw2="11111000" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5150" sw1="01001001" sw2="11111000" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<chipset id="chipset" model="att6300" sw1="01001000" sw2="11111001" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="att6300" sw1="01001000" sw2="11111001" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW0" binding="sw1" left="0px"/>
<control type="switches" label="SW1" binding="sw2" left="0px"/>
</chipset>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<chipset id="chipset" model="mpc1600" sw1="01001001" sw2="11110000" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="mpc1600" sw1="01001001" sw2="11110000" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<chipset id="chipset" model="z150" sw1="01001001" sw2="11110000" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="z150" sw1="01001001" sw2="11110000" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us83" pos="left" padleft="8px" padbottom="8px">
<keyboard id="keyboard" model="us83" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="left">&#x2190;</control>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us83" pos="left" padleft="8px" padbottom="8px">
<keyboard id="keyboard" model="us83" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-alt-del">CTRL-ALT-DEL</control>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us83" pos="left" padleft="8px" padbottom="8px">
<keyboard id="keyboard" model="us83" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="f10">F10</control>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us83" pos="left" padleft="8px" padbottom="8px">
<keyboard id="keyboard" model="us83" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="f10">F10</control>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us83" pos="left" padleft="8px" padbottom="8px">
<keyboard id="keyboard" model="us83" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="f10">F10</control>

View file

@ -1,4 +1,4 @@
<keyboard id="keyboard" model="us83" pos="center" width="900px" height="210px" padleft="8px">
<keyboard id="keyboard" model="us83" pos="center" width="900px" height="210px" padLeft="8px">
<control type="container">
<control type="key" binding="f1" width="34px" top="0px" left="0px">F1</control>
<control type="key" binding="f2" width="34px" top="0px" left="42px">F2</control>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us84" pos="left" padleft="8px" padbottom="8px">
<keyboard id="keyboard" model="us84" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="sysreq">SysReq</control>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us84" pos="left" padleft="8px" padbottom="8px">
<keyboard id="keyboard" model="us84" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-alt-del">CTRL-ALT-DEL</control>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us84" pos="left" padleft="8px" padbottom="8px">
<keyboard id="keyboard" model="us84" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="sysreq">SysReq</control>

View file

@ -12,7 +12,7 @@
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5150" sw1="01001001" sw2="10101000" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5150" sw1="01001001" sw2="10101000" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>

View file

@ -8,7 +8,7 @@
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -9,7 +9,7 @@
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda-dual.xml"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-dual.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -12,7 +12,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>

View file

@ -8,7 +8,7 @@
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -12,7 +12,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>

View file

@ -9,7 +9,7 @@
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -13,7 +13,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -9,7 +9,7 @@
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -13,7 +13,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/default.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -13,7 +13,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -9,7 +9,7 @@
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-lock.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -13,7 +13,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -13,7 +13,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/default.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -16,7 +16,7 @@
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'>
<control type="button" binding="saveHD0">Save HD</control>
</hdc>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -9,7 +9,7 @@
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-keygrid.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -13,7 +13,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -13,7 +13,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001101" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01001101" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -13,7 +13,7 @@
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001101" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01001101" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -9,7 +9,7 @@
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc id="fdcNEC" pos="left" padleft="8px" padbottom="8px" automount='{A:{name:"PC-DOS 2.00 (Disk 1)",path:"/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json"}, B:{name:"Executive Suite (1982)",path:"/apps/pcx86/1982/esuite/disk.json"}}'>
<fdc id="fdcNEC" pos="left" padLeft="8px" padBottom="8px" automount='{A:{name:"PC-DOS 2.00 (Disk 1)",path:"/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json"}, B:{name:"Executive Suite (1982)",path:"/apps/pcx86/1982/esuite/disk.json"}}'>
<control type="list" binding="listDrives"/>
<control type="list" binding="listDisks">
<manifest ref="/disks/pcx86/dos/ibm/1.00/manifest.xml" disk="*"/>
@ -20,8 +20,8 @@
<manifest ref="/apps/pcx86/1982/esuite/manifest.xml" disk="*"/>
</control>
<control type="button" binding="loadDrive">Load</control>
<control type="button" binding="saveDrive" padright="8px">Save</control>
<control type="description" binding="descDisk" padright="8px"/>
<control type="button" binding="saveDrive" padRight="8px">Save</control>
<control type="description" binding="descDisk" padRight="8px"/>
<control type="file" binding="mountDrive"/>
</fdc>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>

View file

@ -8,7 +8,7 @@
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc id="fdcNEC" pos="left" padleft="8px" padbottom="8px" automount='{A:{name:"PC-DOS 2.00 (Disk 1)",path:"/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json"}, B:{name:"Executive Suite (1982)",path:"/apps/pcx86/1982/esuite/disk.json"}}'>
<fdc id="fdcNEC" pos="left" padLeft="8px" padBottom="8px" automount='{A:{name:"PC-DOS 2.00 (Disk 1)",path:"/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json"}, B:{name:"Executive Suite (1982)",path:"/apps/pcx86/1982/esuite/disk.json"}}'>
<control type="list" binding="listDrives"/>
<control type="list" binding="listDisks">
<manifest ref="/disks/pcx86/dos/ibm/1.00/manifest.xml" disk="*"/>
@ -19,11 +19,11 @@
<manifest ref="/apps/pcx86/1982/esuite/manifest.xml" disk="*"/>
</control>
<control type="button" binding="loadDrive">Load</control>
<control type="button" binding="saveDrive" padright="8px">Save</control>
<control type="description" binding="descDisk" padright="8px"/>
<control type="button" binding="saveDrive" padRight="8px">Save</control>
<control type="description" binding="descDisk" padRight="8px"/>
<control type="file" binding="mountDrive"/>
</fdc>
<cpu id="cpu80188" model="80188" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu80188" model="80188" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>

View file

@ -13,7 +13,7 @@
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/default.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml" width="280px"/>
<chipset id="chipset" model="5160" sw1="01110001" pos="left" padleft="8px" padbottom="8px">
<chipset id="chipset" model="5160" sw1="01110001" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -10,7 +10,7 @@
<fdc ref="/disks/pcx86/compiled/library.xml" automount='{A: {name: "PC-DOS 3.30 (Disk 1)", path: "/disks/pcx86/dos/ibm/3.30/PCDOS330-DISK1.json"}, B: {name: "PC-DOS 3.30 (Disk 2)", path: "/disks/pcx86/dos/ibm/3.30/PCDOS330-DISK2.json"}}'/>
<hdc ref="/disks/pcx86/fixed/20mb/pcdos330-empty.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us84-buttons-arrows.xml"/>
<cpu id="cpu286" model="80286" cycles="8000000" autostart="true" pos="right" padright="8px" padbottom="8px">
<cpu id="cpu286" model="80286" cycles="8000000" autostart="true" pos="right" padRight="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
<control type="button" binding="setSpeed">Speed</control>

View file

@ -10,7 +10,7 @@
<fdc ref="/disks/pcx86/compiled/library.xml" automount='{A:{name:"PC-DOS 3.30 (Disk 1)",path:"/disks/pcx86/dos/ibm/3.30/PCDOS330-DISK1.json"}, B:{name:"PC-DOS 3.30 (Disk 2)",path:"/disks/pcx86/dos/ibm/3.30/PCDOS330-DISK2.json"}}'/>
<hdc ref="/disks/pcx86/fixed/20mb/pcdos330-empty.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us84-buttons-arrows.xml"/>
<cpu id="cpu286" model="80286" cycles="8000000" autostart="true" pos="right" padright="8px" padbottom="8px">
<cpu id="cpu286" model="80286" cycles="8000000" autostart="true" pos="right" padRight="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
<control type="button" binding="setSpeed">Speed</control>

View file

@ -10,7 +10,7 @@
<fdc ref="/disks/pcx86/compiled/library.xml" automount='{A:{name:"PC-DOS 3.30 (Disk 1)",path:"/disks/pcx86/dos/ibm/3.30/PCDOS330-DISK1.json"}, B:{name:"PC-DOS 3.30 (Disk 2)",path:"/disks/pcx86/dos/ibm/3.30/PCDOS330-DISK2.json"}}'/>
<hdc ref="/disks/pcx86/fixed/20mb/pcdos330-empty.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us84-buttons-arrows.xml"/>
<cpu id="cpu286" model="80286" cycles="8000000" autostart="true" pos="right" padright="8px" padbottom="8px">
<cpu id="cpu286" model="80286" cycles="8000000" autostart="true" pos="right" padRight="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
<control type="button" binding="setSpeed">Speed</control>

View file

@ -7,7 +7,7 @@
<rom ref="/devices/pcx86/rom/att/6300/bios-143.xml"/>
<video ref="/devices/pcx86/video/cdp/cga/cdp-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<cpu id="cpu8086" model="8086" cycles="8000000" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu8086" model="8086" cycles="8000000" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -7,7 +7,7 @@
<rom ref="/devices/pcx86/rom/cdp/mpc1600/bios-434.xml"/>
<video ref="/devices/pcx86/video/cdp/cga/cdp-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -8,7 +8,7 @@
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="power">Power</control>
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>

View file

@ -8,7 +8,7 @@
<rom ref="/devices/pcx86/rom/zenith/z150/bios-z150-1988.xml"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>

View file

@ -4,18 +4,18 @@
<control type="container" width="100%" height="auto">
<control type="canvas" binding="btpanel" pos="relative" width="2048" height="1024" style="color:white; background-color:green;"/>
</control>
<control type="container" class="pcjs-textarea" width="100%" padtop="8px">
<control type="textarea" binding="print" width="100%" height="260px" pos="relative" padbottom="4px" padright="8px" style="resize:vertical;"/>
<control type="container" width="100%" padbottom="8px">
<control type="container" class="pcjs-textarea" width="100%" padTop="8px">
<control type="textarea" binding="print" width="100%" height="260px" pos="relative" padBottom="4px" padRight="8px" style="resize:vertical;"/>
<control type="container" width="100%" padBottom="8px">
<control type="text" binding="debugInput" width="auto"/>
<control type="button" binding="debugEnter">Enter</control>
<control type="button" binding="clear">Clear</control>
<control type="button" binding="run" padleft="8px">Run</control>
<control type="button" binding="run" padLeft="8px">Run</control>
<control type="button" binding="step">Step</control>
<control type="button" binding="reset">Reset</control>
<control type="button" binding="save">Save</control>
<control type="button" binding="setSpeed" padleft="8px">Speed</control>
<control type="description" binding="speed" padleft="4px">Stopped</control>
<control type="button" binding="setSpeed" padLeft="8px">Speed</control>
<control type="description" binding="speed" padLeft="4px">Stopped</control>
</control>
</control>
</panel>

View file

@ -1,44 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<panel id="panel" width="100%" padding="8px">
<name>Control Panel</name>
<control type="container" class="pcjs-textarea" width="58%" padbottom="8px" padright="8px">
<control type="textarea" binding="print" width="100%" height="260px" pos="relative" padbottom="4px" style="resize:vertical;"/>
<control type="container" class="pcjs-textarea" width="58%" padBottom="8px" padRight="8px">
<control type="textarea" binding="print" width="100%" height="260px" pos="relative" padBottom="4px" style="resize:vertical;"/>
<control type="container">
<control type="text" binding="debugInput" width="auto"/>
<control type="button" binding="debugEnter">Enter</control>
<control type="button" binding="clear">Clear</control>
</control>
</control>
<control type="container" class="pcjs-registers" width="38%" padleft="8px">
<control type="register" label="AX" binding="AX" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="BX" binding="BX" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="CX" binding="CX" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="DX" binding="DX" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="SP" binding="SP" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="BP" binding="BP" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="SI" binding="SI" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="DI" binding="DI" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="DS" binding="DS" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="ES" binding="ES" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="SS" binding="SS" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="CS" binding="CS" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="IP" binding="IP" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="container" class="pcjs-registers" width="38%" padLeft="8px">
<control type="register" label="AX" binding="AX" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="BX" binding="BX" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="CX" binding="CX" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="DX" binding="DX" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="SP" binding="SP" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="BP" binding="BP" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="SI" binding="SI" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="DI" binding="DI" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="DS" binding="DS" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="ES" binding="ES" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="SS" binding="SS" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="CS" binding="CS" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="IP" binding="IP" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="container" width="200px" pos="left">
<control type="flag" label="V" binding="V" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="D" binding="D" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="I" binding="I" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="T" binding="T" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="S" binding="S" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="Z" binding="Z" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="A" binding="A" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="P" binding="P" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="C" binding="C" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="V" binding="V" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="D" binding="D" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="I" binding="I" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="T" binding="T" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="S" binding="S" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="Z" binding="Z" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="A" binding="A" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="P" binding="P" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="C" binding="C" width="8px" padRight="4px" padBottom="8px">0</control>
</control>
<control pos=""/>
<control type="description" padbottom="8px">Speed:</control>
<control type="description" binding="speed" padleft="4px" padbottom="8px">Stopped</control>
<control type="description" padBottom="8px">Speed:</control>
<control type="description" binding="speed" padLeft="4px" padBottom="8px">Stopped</control>
</control>
<control type="container" padleft="8px" padbottom="8px">
<control type="container" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="step">Step</control>
<control type="button" binding="reset">Reset</control>

View file

@ -1,44 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<panel id="panel" width="100%" padding="8px">
<name>Control Panel</name>
<control type="container" class="pcjs-textarea" width="60%" padbottom="8px" padright="8px">
<control type="textarea" binding="print" width="100%" height="260px" pos="relative" padbottom="4px" style="resize:vertical;"/>
<control type="container" class="pcjs-textarea" width="60%" padBottom="8px" padRight="8px">
<control type="textarea" binding="print" width="100%" height="260px" pos="relative" padBottom="4px" style="resize:vertical;"/>
<control type="container" width="100%">
<control type="text" binding="debugInput" width="auto"/>
<control type="button" binding="debugEnter">Enter</control>
<control type="button" binding="clear">Clear</control>
</control>
</control>
<control type="container" class="pcjs-registers" width="35%" padleft="8px">
<control type="register" label="AX" binding="AX" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="BX" binding="BX" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="CX" binding="CX" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="DX" binding="DX" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="SP" binding="SP" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="BP" binding="BP" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="SI" binding="SI" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="DI" binding="DI" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="DS" binding="DS" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="ES" binding="ES" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="SS" binding="SS" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="CS" binding="CS" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="IP" binding="IP" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="container" class="pcjs-registers" width="35%" padLeft="8px">
<control type="register" label="AX" binding="AX" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="BX" binding="BX" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="CX" binding="CX" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="DX" binding="DX" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="SP" binding="SP" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="BP" binding="BP" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="SI" binding="SI" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="DI" binding="DI" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="DS" binding="DS" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="ES" binding="ES" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="SS" binding="SS" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="CS" binding="CS" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="IP" binding="IP" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="container" width="200px" pos="left">
<control type="flag" label="V" binding="V" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="D" binding="D" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="I" binding="I" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="T" binding="T" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="S" binding="S" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="Z" binding="Z" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="A" binding="A" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="P" binding="P" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="C" binding="C" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="V" binding="V" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="D" binding="D" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="I" binding="I" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="T" binding="T" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="S" binding="S" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="Z" binding="Z" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="A" binding="A" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="P" binding="P" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="C" binding="C" width="8px" padRight="4px" padBottom="8px">0</control>
</control>
<control pos=""/>
<control type="description" padbottom="8px">Speed:</control>
<control type="description" binding="speed" padleft="4px" padbottom="8px">Stopped</control>
<control type="description" padBottom="8px">Speed:</control>
<control type="description" binding="speed" padLeft="4px" padBottom="8px">Stopped</control>
</control>
<control type="container" padleft="8px" padbottom="8px">
<control type="container" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="step">Step</control>
<control type="button" binding="reset">Reset</control>

View file

@ -1,51 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<panel id="panel" width="100%" padding="8px">
<name>Control Panel</name>
<control type="container" class="pcjs-textarea" width="60%" padbottom="8px" padright="8px">
<control type="textarea" binding="print" width="100%" height="260px" pos="relative" padbottom="4px" style="resize:vertical;"/>
<control type="container" class="pcjs-textarea" width="60%" padBottom="8px" padRight="8px">
<control type="textarea" binding="print" width="100%" height="260px" pos="relative" padBottom="4px" style="resize:vertical;"/>
<control type="container" width="100%">
<control type="text" binding="debugInput" width="auto"/>
<control type="button" binding="debugEnter">Enter</control>
<control type="button" binding="clear">Clear</control>
<control type="button" binding="run" padleft="16px">Run</control>
<control type="button" binding="run" padLeft="16px">Run</control>
<control type="button" binding="step">Step</control>
<control type="button" binding="reset">Reset</control>
<control type="button" binding="save">Save</control>
<control type="button" binding="setSpeed" padleft="16px">Speed</control>
<control type="description" binding="speed" padleft="8px">Stopped</control>
<control type="button" binding="setSpeed" padLeft="16px">Speed</control>
<control type="description" binding="speed" padLeft="8px">Stopped</control>
</control>
</control>
<control type="container" class="pcjs-registers" width="35%" padleft="8px">
<control type="register" label="EAX" binding="EAX" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="EBX" binding="EBX" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="ECX" binding="ECX" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="EDX" binding="EDX" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="ESP" binding="ESP" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="EBP" binding="EBP" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="ESI" binding="ESI" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="EDI" binding="EDI" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="CR0" binding="CR0" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="CR2" binding="CR2" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="CR3" binding="CR3" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="EIP" binding="EIP" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="register" label="PSW" binding="PS" pos="left" width="80px" padright="8px" padbottom="8px">00000000</control>
<control type="container" class="pcjs-registers" width="35%" padLeft="8px">
<control type="register" label="EAX" binding="EAX" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="EBX" binding="EBX" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="ECX" binding="ECX" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="EDX" binding="EDX" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="ESP" binding="ESP" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="EBP" binding="EBP" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="ESI" binding="ESI" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="EDI" binding="EDI" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="CR0" binding="CR0" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="CR2" binding="CR2" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="CR3" binding="CR3" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="EIP" binding="EIP" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="register" label="PSW" binding="PS" pos="left" width="80px" padRight="8px" padBottom="8px">00000000</control>
<control type="container" width="200px" pos="left">
<control type="flag" label="V" binding="V" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="D" binding="D" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="I" binding="I" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="T" binding="T" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="S" binding="S" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="Z" binding="Z" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="A" binding="A" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="P" binding="P" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="C" binding="C" width="8px" padright="4px" padbottom="8px">0</control>
<control type="flag" label="V" binding="V" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="D" binding="D" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="I" binding="I" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="T" binding="T" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="S" binding="S" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="Z" binding="Z" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="A" binding="A" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="P" binding="P" width="8px" padRight="4px" padBottom="8px">0</control>
<control type="flag" label="C" binding="C" width="8px" padRight="4px" padBottom="8px">0</control>
</control>
<control pos=""/>
<control type="register" label="CS" binding="CS" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="SS" binding="SS" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="DS" binding="DS" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="ES" binding="ES" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="FS" binding="FS" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="GS" binding="GS" pos="left" width="40px" padright="8px" padbottom="8px">0000</control>
<control type="register" label="CS" binding="CS" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="SS" binding="SS" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="DS" binding="DS" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="ES" binding="ES" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="FS" binding="FS" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
<control type="register" label="GS" binding="GS" pos="left" width="40px" padRight="8px" padBottom="8px">0000</control>
</control>
</panel>

Some files were not shown because too many files have changed in this diff Show more