From 159588623a8518c8bf3697b7f603a786d7ff777a Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Wed, 16 Aug 2017 20:52:14 -0700 Subject: [PATCH] Fixed PCx86 "Save Machine" functionality (broken by the inclusion of source maps at the end of the compiled scripts) --- apps/pcx86/1981/visicalc/manifest.xml | 2 +- apps/pcx86/1982/esuite/manifest.xml | 2 +- apps/pcx86/1982/ratbas/manifest.xml | 2 +- apps/pcx86/1983/adventmath/manifest.xml | 2 +- apps/pcx86/1985/rogue/manifest.xml | 2 +- apps/pcx86/1987/thinktank/manifest.xml | 2 +- apps/pcx86/1988/moria/manifest.xml | 2 +- apps/pcx86/1992/moria/manifest.xml | 2 +- devices/c1p/machine/32kb/machine.xml | 2 +- .../c1p/machine/8kb/all/debugger/machine.xml | 2 +- devices/c1p/machine/8kb/all/machine.xml | 2 +- devices/c1p/machine/8kb/array/machine.xml | 2 +- .../machine/8kb/large/debugger/machine.xml | 2 +- devices/c1p/machine/8kb/large/machine.xml | 2 +- devices/c1p/machine/8kb/small/machine.xml | 2 +- .../machine/exerciser/machine-8080ex1.xml | 2 +- .../machine/exerciser/machine-8080pre.xml | 2 +- .../machine/exerciser/machine-cputest.xml | 2 +- .../pc8080/machine/exerciser/machine-test.xml | 2 +- devices/pc8080/machine/exerciser/machine.xml | 2 +- .../machine/invaders/debugger/machine.xml | 2 +- devices/pc8080/machine/invaders/machine.xml | 2 +- .../machine/vt100/debugger/machine-left.xml | 2 +- .../machine/vt100/debugger/machine-right.xml | 2 +- .../pc8080/machine/vt100/debugger/machine.xml | 2 +- devices/pc8080/machine/vt100/machine-left.xml | 2 +- .../pc8080/machine/vt100/machine-right.xml | 2 +- devices/pc8080/machine/vt100/machine.xml | 2 +- .../5150/cga/256kb/debugger/machine.xml | 2 +- .../pcx86/machine/5150/cga/256kb/machine.xml | 2 +- .../5150/cga/384kb/softkbd/machine.xml | 2 +- devices/pcx86/machine/5150/cga/64kb/README.md | 16 - .../5150/cga/64kb/debugger/machine.xml | 2 +- .../pcx86/machine/5150/cga/64kb/machine.md | 12 + .../pcx86/machine/5150/cga/64kb/machine.xml | 2 +- .../machine/5150/cga/64kb/softkbd/machine.xml | 2 +- .../pcx86/machine/5150/dual/64kb/machine.xml | 2 +- .../5150/mda/256kb/debugger/machine.xml | 2 +- .../pcx86/machine/5150/mda/256kb/machine.xml | 2 +- .../5150/mda/64kb/debugger/machine.xml | 2 +- .../pcx86/machine/5150/mda/64kb/machine.xml | 2 +- .../machine/5150/mda/64kb/softkbd/machine.xml | 2 +- .../machine/5160/cga/256kb/array/machine.xml | 2 +- .../5160/cga/256kb/debugger/machine.xml | 2 +- .../pcx86/machine/5160/cga/256kb/machine.xml | 2 +- .../5160/cga/256kb/softkbd/machine.xml | 2 +- .../5160/cga/512kb/softkbd/machine.xml | 2 +- .../5160/cga/640kb/debugger/machine.xml | 2 +- .../pcx86/machine/5160/cga/640kb/machine.xml | 2 +- .../5160/cga/640kb/softkbd/machine.xml | 2 +- .../5160/ega/256kb/debugger/machine.xml | 2 +- .../pcx86/machine/5160/ega/256kb/machine.xml | 2 +- .../machine/5160/ega/640kb/array/machine.xml | 2 +- .../5160/ega/640kb/debugger/machine.xml | 2 +- .../pcx86/machine/5160/ega/640kb/machine.xml | 2 +- .../5160/mda/256kb/debugger/machine.xml | 2 +- .../mda/256kb/fake188/debugger/machine.xml | 2 +- .../5160/mda/256kb/fake188/machine.xml | 2 +- .../pcx86/machine/5160/mda/256kb/machine.xml | 2 +- .../machine/5160/mda/64kb/softkbd/machine.xml | 2 +- .../5170/cga/640kb/rev3/debugger/machine.xml | 2 +- .../machine/5170/cga/640kb/rev3/machine.xml | 2 +- .../5170/ega/1152kb/rev1/debugger/machine.xml | 2 +- .../machine/5170/ega/1152kb/rev1/machine.xml | 2 +- .../rev3/debugger/backtrack/machine.xml | 2 +- .../5170/ega/1152kb/rev3/debugger/machine.xml | 2 +- .../machine/5170/ega/1152kb/rev3/machine.xml | 2 +- .../rev3/debugger/backtrack/machine.xml | 2 +- .../5170/ega/2048kb/rev3/debugger/machine.xml | 2 +- .../2048kb/rev3/debugger/vt100/machine.xml | 2 +- .../machine/5170/ega/2048kb/rev3/machine.xml | 2 +- .../5170/ega/640kb/rev1/debugger/machine.xml | 2 +- .../machine/5170/ega/640kb/rev1/machine.xml | 2 +- .../5170/mda/640kb/rev3/debugger/machine.xml | 2 +- .../machine/5170/mda/640kb/rev3/machine.xml | 2 +- .../5170/vga/2048kb/debugger/machine.xml | 2 +- .../pcx86/machine/5170/vga/2048kb/machine.xml | 2 +- .../5170/vga/4096kb/debugger/machine.xml | 2 +- .../pcx86/machine/5170/vga/4096kb/machine.xml | 2 +- .../att/6300/cga/640kb/debugger/machine.xml | 2 +- .../machine/att/6300/cga/640kb/machine.xml | 2 +- .../mpc1600/cga/640kb/debugger/machine.xml | 2 +- .../machine/cdp/mpc1600/cga/640kb/machine.xml | 2 +- .../ega/2048kb/debugger/machine.xml | 2 +- .../compaq/deskpro386/ega/2048kb/machine.xml | 2 +- .../ega/4096kb/debugger/machine.xml | 2 +- .../compaq/deskpro386/ega/4096kb/machine.xml | 2 +- .../2048kb/debugger/backtrack/machine.xml | 2 +- .../other/2048kb/debugger/machine.xml | 2 +- .../vga/2048kb/debugger/machine.xml | 2 +- .../compaq/deskpro386/vga/2048kb/machine.xml | 2 +- .../vga/4096kb/debugger/machine.xml | 2 +- .../compaq/deskpro386/vga/4096kb/machine.xml | 2 +- devices/pcx86/machine/custom/machine.xml | 2 +- .../z150/cga/640kb/debugger/machine.xml | 2 +- .../machine/zenith/z150/cga/640kb/machine.xml | 2 +- .../machine/ka10/test/debugger/machine.xml | 2 +- devices/pdp10/machine/ka10/test/machine.xml | 2 +- .../machine/1120/basic/debugger/machine.xml | 2 +- devices/pdp11/machine/1120/basic/machine.xml | 2 +- .../1120/bootstrap/debugger/machine.xml | 2 +- .../pdp11/machine/1120/bootstrap/machine.xml | 2 +- .../machine/1120/monitor/debugger/machine.xml | 2 +- .../pdp11/machine/1120/monitor/machine.xml | 2 +- .../machine/1120/panel/debugger/machine.xml | 2 +- .../1120/panel/debugger/test14/machine.xml | 2 +- devices/pdp11/machine/1120/panel/machine.xml | 2 +- .../machine/1145/panel/debugger/machine.xml | 2 +- devices/pdp11/machine/1145/panel/machine.xml | 2 +- .../1145/vt100/debugger/machine-left.xml | 2 +- .../1145/vt100/debugger/machine-right.xml | 2 +- .../machine/1145/vt100/debugger/machine.xml | 2 +- .../pdp11/machine/1145/vt100/machine-left.xml | 2 +- .../machine/1145/vt100/machine-right.xml | 2 +- devices/pdp11/machine/1145/vt100/machine.xml | 2 +- .../machine/1170/4mb/debugger/machine.xml | 2 +- devices/pdp11/machine/1170/4mb/machine.xml | 2 +- .../machine/1170/monitor/debugger/machine.xml | 2 +- .../pdp11/machine/1170/monitor/machine.xml | 2 +- .../1170/panel/debugger/cpuexer/machine.xml | 2 +- .../1170/panel/debugger/machine-slim.xml | 2 +- .../machine/1170/panel/debugger/machine.xml | 2 +- devices/pdp11/machine/1170/panel/machine.xml | 2 +- .../1170/vt100/debugger/machine-left.xml | 2 +- .../1170/vt100/debugger/machine-right.xml | 2 +- .../machine/1170/vt100/debugger/machine.xml | 2 +- .../pdp11/machine/1170/vt100/machine-left.xml | 2 +- .../machine/1170/vt100/machine-right.xml | 2 +- devices/pdp11/machine/1170/vt100/machine.xml | 2 +- .../pcx86/apps/ibm/topview/1.01/manifest.xml | 2 +- .../pcx86/apps/ibm/topview/1.10/manifest.xml | 2 +- disks/pcx86/apps/lotus/123/1a/manifest.xml | 2 +- disks/pcx86/apps/lotus/123/1as/manifest.xml | 2 +- .../apps/microsoft/chart/2.02/manifest.xml | 2 +- .../apps/microsoft/winword/2.0c/manifest.xml | 2 +- .../apps/microsoft/word/3.0/manifest.xml | 2 +- .../apps/microsoft/word/3.1/manifest.xml | 2 +- .../apps/microsoft/word/5.0/manifest.xml | 2 +- .../pcx86/apps/other/dbase2/2.4/manifest.xml | 2 +- .../pcx86/apps/other/dbase3/1.0/manifest.xml | 2 +- .../apps/other/omniview/4.30/manifest.xml | 2 +- disks/pcx86/apps/other/sc2/1.00/manifest.xml | 2 +- disks/pcx86/apps/other/sc3/1.00/manifest.xml | 2 +- .../apps/other/wordstar/3.30/manifest.xml | 2 +- .../apps/other/wordstar/4.00/manifest.xml | 2 +- disks/pcx86/cpm/1.1b/debugger/machine.xml | 2 +- disks/pcx86/cpm/1.1b/machine.xml | 2 +- disks/pcx86/cpm/1.1b/manifest.xml | 2 +- disks/pcx86/diags/ibm/manifest.xml | 2 +- disks/pcx86/dos/compaq/1.11/manifest.xml | 2 +- disks/pcx86/dos/compaq/1.12/manifest.xml | 2 +- disks/pcx86/dos/compaq/2.12/manifest.xml | 2 +- disks/pcx86/dos/compaq/3.00/manifest.xml | 2 +- disks/pcx86/dos/compaq/3.10/manifest.xml | 2 +- disks/pcx86/dos/compaq/3.31/manifest.xml | 2 +- disks/pcx86/dos/ibm/0.90/manifest.xml | 2 +- disks/pcx86/dos/ibm/1.00/manifest.xml | 2 +- disks/pcx86/dos/ibm/1.10/manifest.xml | 2 +- disks/pcx86/dos/ibm/2.00/manifest.xml | 2 +- disks/pcx86/dos/ibm/2.10/manifest.xml | 2 +- disks/pcx86/dos/ibm/3.00/manifest.xml | 2 +- disks/pcx86/dos/ibm/3.10/manifest.xml | 2 +- disks/pcx86/dos/ibm/3.20/manifest.xml | 2 +- disks/pcx86/dos/ibm/3.30/manifest.xml | 2 +- disks/pcx86/dos/ibm/4.00/manifest.xml | 2 +- disks/pcx86/dos/ibm/5.00/manifest.xml | 2 +- disks/pcx86/dos/ibm/6.10/manifest.xml | 2 +- disks/pcx86/dos/ibm/6.30/manifest.xml | 2 +- disks/pcx86/dos/ibm/7.00/manifest.xml | 2 +- disks/pcx86/dos/microsoft/2.00/manifest.xml | 2 +- disks/pcx86/dos/microsoft/3.20/manifest.xml | 2 +- disks/pcx86/dos/microsoft/3.21/manifest.xml | 2 +- disks/pcx86/dos/microsoft/3.30/manifest.xml | 2 +- disks/pcx86/dos/microsoft/3.31/manifest.xml | 2 +- disks/pcx86/dos/microsoft/4.00/manifest.xml | 2 +- .../dos/microsoft/4.01/720K/manifest.xml | 2 +- disks/pcx86/dos/microsoft/4.01/manifest.xml | 2 +- disks/pcx86/dos/microsoft/4.0M/manifest.xml | 2 +- disks/pcx86/dos/microsoft/5.00/manifest.xml | 2 +- disks/pcx86/dos/microsoft/6.00/manifest.xml | 2 +- disks/pcx86/dos/microsoft/6.20/manifest.xml | 2 +- disks/pcx86/dos/microsoft/6.22/manifest.xml | 2 +- disks/pcx86/empty/manifest.xml | 2 +- disks/pcx86/games/id/wolf3d/manifest.xml | 2 +- disks/pcx86/games/infocom/hhiker/manifest.xml | 2 +- disks/pcx86/games/infocom/machine.xml | 2 +- disks/pcx86/games/infocom/phobos/manifest.xml | 2 +- disks/pcx86/games/infocom/planet/manifest.xml | 2 +- .../games/infocom/zork1/debugger/machine.xml | 2 +- disks/pcx86/games/infocom/zork1/manifest.xml | 2 +- disks/pcx86/games/infocom/zork2/manifest.xml | 2 +- disks/pcx86/games/infocom/zork3/manifest.xml | 2 +- .../games/microsoft/adventure/machine.xml | 2 +- .../games/microsoft/adventure/manifest.xml | 2 +- .../microsoft/flightsim/1982/manifest.xml | 2 +- .../microsoft/flightsim/1984/manifest.xml | 2 +- disks/pcx86/minix/1.1/manifest.xml | 2 +- disks/pcx86/os2/ibm/1.0/manifest.xml | 2 +- disks/pcx86/os2/ibm/1.1/manifest.xml | 2 +- disks/pcx86/os2/ibm/1.3/manifest.xml | 2 +- disks/pcx86/os2/microsoft/1.0/manifest.xml | 2 +- disks/pcx86/os2/misc/manifest.xml | 2 +- disks/pcx86/personal/manifest.xml | 2 +- disks/pcx86/shareware/pcmag/manifest.xml | 2 +- .../shareware/pcsig08/debugger/machine.xml | 2 +- disks/pcx86/shareware/pcsig08/machine.xml | 2 +- disks/pcx86/shareware/pcsig08/manifest.xml | 2 +- disks/pcx86/shareware/pctj/manifest.xml | 2 +- .../tools/borland/pascal/3.00b/manifest.xml | 2 +- .../tools/borland/pascal/3.01a/manifest.xml | 2 +- .../pcx86/tools/ibm/bascom/1.00/manifest.xml | 2 +- .../tools/logitech/modula2/1.00/manifest.xml | 2 +- .../tools/logitech/modula2/1.10/manifest.xml | 2 +- .../pcx86/tools/microsoft/basic/manifest.xml | 2 +- .../pcx86/tools/microsoft/c/2.03/manifest.xml | 2 +- .../pcx86/tools/microsoft/c/3.00/manifest.xml | 2 +- .../pcx86/tools/microsoft/c/4.00/manifest.xml | 2 +- .../pcx86/tools/microsoft/c/5.00/manifest.xml | 2 +- .../tools/microsoft/c/5.10-os2/manifest.xml | 2 +- .../pcx86/tools/microsoft/c/5.10/manifest.xml | 2 +- .../tools/microsoft/masm/1.00/manifest.xml | 2 +- .../tools/microsoft/masm/3.00/manifest.xml | 2 +- .../tools/microsoft/masm/3.01/manifest.xml | 2 +- .../tools/microsoft/masm/4.00/manifest.xml | 2 +- .../tools/microsoft/masm/5.00/manifest.xml | 2 +- .../tools/microsoft/masm/5.10/manifest.xml | 2 +- .../tools/microsoft/masm/6.00/manifest.xml | 2 +- .../tools/microsoft/masm/6.11/manifest.xml | 2 +- .../tools/microsoft/mouse/2.00/manifest.xml | 2 +- .../tools/microsoft/mouse/4.00/manifest.xml | 2 +- .../tools/microsoft/mouse/5.00/manifest.xml | 2 +- .../tools/microsoft/mouse/6.00/manifest.xml | 2 +- .../tools/microsoft/os2/sdk/1.02/manifest.xml | 2 +- .../microsoft/windows/sdk/1.01/manifest.xml | 2 +- .../microsoft/windows/sdk/1.03/manifest.xml | 2 +- .../microsoft/windows/sdk/1.04/manifest.xml | 2 +- .../microsoft/windows/sdk/2.03/manifest.xml | 2 +- .../microsoft/windows/sdk/3.00/manifest.xml | 2 +- disks/pcx86/tools/other/enhdebug/manifest.xml | 2 +- .../tools/other/flickerfree/manifest.xml | 2 +- disks/pcx86/unix/ibm/pcix/1.0/manifest.xml | 2 +- .../unix/microport/system-v/2.3/manifest.xml | 2 +- .../unix/sco/xenix/8086/2.1.3/manifest.xml | 2 +- disks/pcx86/windows/1.00/manifest.xml | 2 +- .../windows/1.01/cga/softkbd/machine.xml | 2 +- disks/pcx86/windows/1.01/manifest.xml | 2 +- disks/pcx86/windows/1.02/manifest.xml | 2 +- disks/pcx86/windows/1.03/manifest.xml | 2 +- disks/pcx86/windows/1.03a/manifest.xml | 2 +- disks/pcx86/windows/1.03b/manifest.xml | 2 +- disks/pcx86/windows/1.04/manifest.xml | 2 +- disks/pcx86/windows/2.03/manifest.xml | 2 +- disks/pcx86/windows/2.0x/manifest.xml | 2 +- disks/pcx86/windows/2.10/manifest.xml | 2 +- disks/pcx86/windows/2.11/manifest.xml | 2 +- disks/pcx86/windows/3.00/720K/manifest.xml | 2 +- disks/pcx86/windows/3.00/manifest.xml | 2 +- disks/pcx86/windows/3.10/manifest.xml | 2 +- disks/pcx86/windows/3.11/manifest.xml | 2 +- .../pcx86/windows/win95/4.00.499/manifest.xml | 2 +- .../pcx86/windows/win95/4.00.950/manifest.xml | 2 +- disks/pcx86/windows/wincomm/manifest.xml | 2 +- docs/pcx86/examples/components.xsl | 4 +- docs/pcx86/examples/pcx86-dbg.js | 26 +- docs/pcx86/examples/pcx86.js | 24 +- modules/shared/lib/save.js | 11 +- package.json | 2 +- .../Graphics_for_the_IBM_PC/demos/README.md | 2 +- .../demos/machine-debugger.xml | 2 +- .../Graphics_for_the_IBM_PC/demos/machine.xml | 2 +- pubs/pc/programming/manifest.xml | 2 +- .../reference/ibm/5150/techref/manifest.xml | 2 +- .../reference/ibm/5160/techref/manifest.xml | 2 +- pubs/pc/reference/ibm/5170/setup/manifest.xml | 2 +- .../reference/ibm/5170/techref/manifest.xml | 2 +- pubs/pc/reference/ibm/ps2/manifest.xml | 2 +- pubs/pc/reference/ibm/video/ega/manifest.xml | 2 +- pubs/pc/reference/intel/80286/manifest.xml | 2 +- .../software/os2/microsoft/sdk10/manifest.xml | 2 +- pubs/pc/software/windows/sdk200/manifest.xml | 2 +- versions/c1pjs/1.36.2/c1p-dbg.js | 198 + versions/c1pjs/1.36.2/c1p-dbg.map | 8 + versions/c1pjs/1.36.2/c1p-uncompiled.js | 14518 +++ versions/c1pjs/1.36.2/c1p.js | 160 + versions/c1pjs/1.36.2/c1p.map | 8 + versions/c1pjs/1.36.2/common.css | 278 + versions/c1pjs/1.36.2/common.xsl | 58 + versions/c1pjs/1.36.2/components.css | 108 + versions/c1pjs/1.36.2/components.xsl | 592 + versions/c1pjs/1.36.2/document.css | 162 + versions/c1pjs/1.36.2/document.xsl | 452 + versions/c1pjs/1.36.2/machine.xsl | 61 + versions/c1pjs/1.36.2/manifest.xsl | 247 + versions/c1pjs/1.36.2/outline.xsl | 47 + versions/pc8080/1.36.2/common.css | 278 + versions/pc8080/1.36.2/common.xsl | 58 + versions/pc8080/1.36.2/components.css | 262 + versions/pc8080/1.36.2/components.xsl | 1402 + versions/pc8080/1.36.2/document.css | 162 + versions/pc8080/1.36.2/document.xsl | 452 + versions/pc8080/1.36.2/machine.xsl | 61 + versions/pc8080/1.36.2/manifest.xsl | 247 + versions/pc8080/1.36.2/outline.xsl | 47 + versions/pc8080/1.36.2/pc8080-dbg.js | 312 + versions/pc8080/1.36.2/pc8080-dbg.map | 8 + versions/pc8080/1.36.2/pc8080-uncompiled.js | 25552 +++++ versions/pc8080/1.36.2/pc8080.js | 225 + versions/pc8080/1.36.2/pc8080.map | 8 + versions/pcx86/1.36.2/common.css | 278 + versions/pcx86/1.36.2/common.xsl | 58 + versions/pcx86/1.36.2/components.css | 262 + versions/pcx86/1.36.2/components.xsl | 1402 + versions/pcx86/1.36.2/document.css | 162 + versions/pcx86/1.36.2/document.xsl | 452 + versions/pcx86/1.36.2/machine.xsl | 61 + versions/pcx86/1.36.2/manifest.xsl | 247 + versions/pcx86/1.36.2/outline.xsl | 47 + versions/pcx86/1.36.2/pcx86-dbg.js | 908 + versions/pcx86/1.36.2/pcx86-dbg.map | 8 + versions/pcx86/1.36.2/pcx86-uncompiled.js | 77831 ++++++++++++++++ versions/pcx86/1.36.2/pcx86.js | 713 + versions/pcx86/1.36.2/pcx86.map | 8 + versions/pdpjs/1.36.2/common.css | 278 + versions/pdpjs/1.36.2/common.xsl | 58 + versions/pdpjs/1.36.2/components.css | 262 + versions/pdpjs/1.36.2/components.xsl | 1402 + versions/pdpjs/1.36.2/document.css | 162 + versions/pdpjs/1.36.2/document.xsl | 452 + versions/pdpjs/1.36.2/machine.xsl | 61 + versions/pdpjs/1.36.2/manifest.xsl | 247 + versions/pdpjs/1.36.2/outline.xsl | 47 + versions/pdpjs/1.36.2/pdp10-dbg.js | 306 + versions/pdpjs/1.36.2/pdp10-dbg.map | 8 + versions/pdpjs/1.36.2/pdp10-uncompiled.js | 28277 ++++++ versions/pdpjs/1.36.2/pdp10.js | 200 + versions/pdpjs/1.36.2/pdp10.map | 8 + versions/pdpjs/1.36.2/pdp11-dbg.js | 406 + versions/pdpjs/1.36.2/pdp11-dbg.map | 8 + versions/pdpjs/1.36.2/pdp11-uncompiled.js | 32154 +++++++ versions/pdpjs/1.36.2/pdp11.js | 310 + versions/pdpjs/1.36.2/pdp11.map | 8 + 341 files changed, 193383 insertions(+), 320 deletions(-) delete mode 100644 devices/pcx86/machine/5150/cga/64kb/README.md create mode 100644 devices/pcx86/machine/5150/cga/64kb/machine.md create mode 100644 versions/c1pjs/1.36.2/c1p-dbg.js create mode 100644 versions/c1pjs/1.36.2/c1p-dbg.map create mode 100644 versions/c1pjs/1.36.2/c1p-uncompiled.js create mode 100644 versions/c1pjs/1.36.2/c1p.js create mode 100644 versions/c1pjs/1.36.2/c1p.map create mode 100644 versions/c1pjs/1.36.2/common.css create mode 100644 versions/c1pjs/1.36.2/common.xsl create mode 100644 versions/c1pjs/1.36.2/components.css create mode 100644 versions/c1pjs/1.36.2/components.xsl create mode 100644 versions/c1pjs/1.36.2/document.css create mode 100644 versions/c1pjs/1.36.2/document.xsl create mode 100644 versions/c1pjs/1.36.2/machine.xsl create mode 100644 versions/c1pjs/1.36.2/manifest.xsl create mode 100644 versions/c1pjs/1.36.2/outline.xsl create mode 100644 versions/pc8080/1.36.2/common.css create mode 100644 versions/pc8080/1.36.2/common.xsl create mode 100644 versions/pc8080/1.36.2/components.css create mode 100644 versions/pc8080/1.36.2/components.xsl create mode 100644 versions/pc8080/1.36.2/document.css create mode 100644 versions/pc8080/1.36.2/document.xsl create mode 100644 versions/pc8080/1.36.2/machine.xsl create mode 100644 versions/pc8080/1.36.2/manifest.xsl create mode 100644 versions/pc8080/1.36.2/outline.xsl create mode 100644 versions/pc8080/1.36.2/pc8080-dbg.js create mode 100644 versions/pc8080/1.36.2/pc8080-dbg.map create mode 100644 versions/pc8080/1.36.2/pc8080-uncompiled.js create mode 100644 versions/pc8080/1.36.2/pc8080.js create mode 100644 versions/pc8080/1.36.2/pc8080.map create mode 100644 versions/pcx86/1.36.2/common.css create mode 100644 versions/pcx86/1.36.2/common.xsl create mode 100644 versions/pcx86/1.36.2/components.css create mode 100644 versions/pcx86/1.36.2/components.xsl create mode 100644 versions/pcx86/1.36.2/document.css create mode 100644 versions/pcx86/1.36.2/document.xsl create mode 100644 versions/pcx86/1.36.2/machine.xsl create mode 100644 versions/pcx86/1.36.2/manifest.xsl create mode 100644 versions/pcx86/1.36.2/outline.xsl create mode 100644 versions/pcx86/1.36.2/pcx86-dbg.js create mode 100644 versions/pcx86/1.36.2/pcx86-dbg.map create mode 100644 versions/pcx86/1.36.2/pcx86-uncompiled.js create mode 100644 versions/pcx86/1.36.2/pcx86.js create mode 100644 versions/pcx86/1.36.2/pcx86.map create mode 100644 versions/pdpjs/1.36.2/common.css create mode 100644 versions/pdpjs/1.36.2/common.xsl create mode 100644 versions/pdpjs/1.36.2/components.css create mode 100644 versions/pdpjs/1.36.2/components.xsl create mode 100644 versions/pdpjs/1.36.2/document.css create mode 100644 versions/pdpjs/1.36.2/document.xsl create mode 100644 versions/pdpjs/1.36.2/machine.xsl create mode 100644 versions/pdpjs/1.36.2/manifest.xsl create mode 100644 versions/pdpjs/1.36.2/outline.xsl create mode 100644 versions/pdpjs/1.36.2/pdp10-dbg.js create mode 100644 versions/pdpjs/1.36.2/pdp10-dbg.map create mode 100644 versions/pdpjs/1.36.2/pdp10-uncompiled.js create mode 100644 versions/pdpjs/1.36.2/pdp10.js create mode 100644 versions/pdpjs/1.36.2/pdp10.map create mode 100644 versions/pdpjs/1.36.2/pdp11-dbg.js create mode 100644 versions/pdpjs/1.36.2/pdp11-dbg.map create mode 100644 versions/pdpjs/1.36.2/pdp11-uncompiled.js create mode 100644 versions/pdpjs/1.36.2/pdp11.js create mode 100644 versions/pdpjs/1.36.2/pdp11.map diff --git a/apps/pcx86/1981/visicalc/manifest.xml b/apps/pcx86/1981/visicalc/manifest.xml index 548675392..a4615b1e7 100644 --- a/apps/pcx86/1981/visicalc/manifest.xml +++ b/apps/pcx86/1981/visicalc/manifest.xml @@ -1,5 +1,5 @@ - + VisiCalc diff --git a/apps/pcx86/1982/esuite/manifest.xml b/apps/pcx86/1982/esuite/manifest.xml index 4aaa888c5..efda2464b 100644 --- a/apps/pcx86/1982/esuite/manifest.xml +++ b/apps/pcx86/1982/esuite/manifest.xml @@ -1,5 +1,5 @@ - + Executive Suite diff --git a/apps/pcx86/1982/ratbas/manifest.xml b/apps/pcx86/1982/ratbas/manifest.xml index 254e3bad8..837af6c3e 100644 --- a/apps/pcx86/1982/ratbas/manifest.xml +++ b/apps/pcx86/1982/ratbas/manifest.xml @@ -1,5 +1,5 @@ - + RatBas 2.13 diff --git a/apps/pcx86/1983/adventmath/manifest.xml b/apps/pcx86/1983/adventmath/manifest.xml index 0245800f1..68e2e8c4a 100644 --- a/apps/pcx86/1983/adventmath/manifest.xml +++ b/apps/pcx86/1983/adventmath/manifest.xml @@ -1,5 +1,5 @@ - + Adventures in Math 1.00 diff --git a/apps/pcx86/1985/rogue/manifest.xml b/apps/pcx86/1985/rogue/manifest.xml index 27cc4f3cf..4f81a8e02 100644 --- a/apps/pcx86/1985/rogue/manifest.xml +++ b/apps/pcx86/1985/rogue/manifest.xml @@ -1,5 +1,5 @@ - + Rogue 1.49 diff --git a/apps/pcx86/1987/thinktank/manifest.xml b/apps/pcx86/1987/thinktank/manifest.xml index 16e25191a..f1295e13f 100644 --- a/apps/pcx86/1987/thinktank/manifest.xml +++ b/apps/pcx86/1987/thinktank/manifest.xml @@ -1,5 +1,5 @@ - + ThinkTank 2.41NP diff --git a/apps/pcx86/1988/moria/manifest.xml b/apps/pcx86/1988/moria/manifest.xml index 3aed73bae..e1adcaadf 100644 --- a/apps/pcx86/1988/moria/manifest.xml +++ b/apps/pcx86/1988/moria/manifest.xml @@ -1,5 +1,5 @@ - + The Dungeons of Moria 4.872 diff --git a/apps/pcx86/1992/moria/manifest.xml b/apps/pcx86/1992/moria/manifest.xml index 37bdbb772..2708107cc 100644 --- a/apps/pcx86/1992/moria/manifest.xml +++ b/apps/pcx86/1992/moria/manifest.xml @@ -1,5 +1,5 @@ - + The Dungeons of Moria 5.5 diff --git a/devices/c1p/machine/32kb/machine.xml b/devices/c1p/machine/32kb/machine.xml index ed3119cd8..b8084dc8f 100644 --- a/devices/c1p/machine/32kb/machine.xml +++ b/devices/c1p/machine/32kb/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (32Kb) with Disk Support diff --git a/devices/c1p/machine/8kb/all/debugger/machine.xml b/devices/c1p/machine/8kb/all/debugger/machine.xml index fbc96cbb1..c55e0ff09 100644 --- a/devices/c1p/machine/8kb/all/debugger/machine.xml +++ b/devices/c1p/machine/8kb/all/debugger/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (8Kb, Additional Software) diff --git a/devices/c1p/machine/8kb/all/machine.xml b/devices/c1p/machine/8kb/all/machine.xml index 69c5728bd..92de9e00c 100644 --- a/devices/c1p/machine/8kb/all/machine.xml +++ b/devices/c1p/machine/8kb/all/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (8Kb, Additional Software) diff --git a/devices/c1p/machine/8kb/array/machine.xml b/devices/c1p/machine/8kb/array/machine.xml index 8f16ac9e8..2ff6be507 100644 --- a/devices/c1p/machine/8kb/array/machine.xml +++ b/devices/c1p/machine/8kb/array/machine.xml @@ -1,5 +1,5 @@ - + Challenger 1P (8Kb) "Server Array" diff --git a/devices/c1p/machine/8kb/large/debugger/machine.xml b/devices/c1p/machine/8kb/large/debugger/machine.xml index edcdfa1e6..7b033b90d 100644 --- a/devices/c1p/machine/8kb/large/debugger/machine.xml +++ b/devices/c1p/machine/8kb/large/debugger/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (8Kb) with Debugger diff --git a/devices/c1p/machine/8kb/large/machine.xml b/devices/c1p/machine/8kb/large/machine.xml index 45b42a802..cec79e9ff 100644 --- a/devices/c1p/machine/8kb/large/machine.xml +++ b/devices/c1p/machine/8kb/large/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (circa 1978) diff --git a/devices/c1p/machine/8kb/small/machine.xml b/devices/c1p/machine/8kb/small/machine.xml index f45f3953f..e0cc44957 100644 --- a/devices/c1p/machine/8kb/small/machine.xml +++ b/devices/c1p/machine/8kb/small/machine.xml @@ -1,5 +1,5 @@ - + diff --git a/devices/pc8080/machine/exerciser/machine-8080ex1.xml b/devices/pc8080/machine/exerciser/machine-8080ex1.xml index 31be62121..d0a731c55 100644 --- a/devices/pc8080/machine/exerciser/machine-8080ex1.xml +++ b/devices/pc8080/machine/exerciser/machine-8080ex1.xml @@ -1,5 +1,5 @@ - + 8080 Exerciser Test Machine diff --git a/devices/pc8080/machine/exerciser/machine-8080pre.xml b/devices/pc8080/machine/exerciser/machine-8080pre.xml index 8ed24aea9..6edaf3c52 100644 --- a/devices/pc8080/machine/exerciser/machine-8080pre.xml +++ b/devices/pc8080/machine/exerciser/machine-8080pre.xml @@ -1,5 +1,5 @@ - + 8080 Exerciser Preliminary Test Machine diff --git a/devices/pc8080/machine/exerciser/machine-cputest.xml b/devices/pc8080/machine/exerciser/machine-cputest.xml index 505a2000c..778530729 100644 --- a/devices/pc8080/machine/exerciser/machine-cputest.xml +++ b/devices/pc8080/machine/exerciser/machine-cputest.xml @@ -1,5 +1,5 @@ - + 8080 CPUTEST Machine diff --git a/devices/pc8080/machine/exerciser/machine-test.xml b/devices/pc8080/machine/exerciser/machine-test.xml index c33477bc9..a363372c6 100644 --- a/devices/pc8080/machine/exerciser/machine-test.xml +++ b/devices/pc8080/machine/exerciser/machine-test.xml @@ -1,5 +1,5 @@ - + 8080 "Kelly Smith" Test Machine diff --git a/devices/pc8080/machine/exerciser/machine.xml b/devices/pc8080/machine/exerciser/machine.xml index 14985a9e1..2c2272804 100644 --- a/devices/pc8080/machine/exerciser/machine.xml +++ b/devices/pc8080/machine/exerciser/machine.xml @@ -1,5 +1,5 @@ - + 8080 Exerciser Test Machine diff --git a/devices/pc8080/machine/invaders/debugger/machine.xml b/devices/pc8080/machine/invaders/debugger/machine.xml index 563838c8d..07e1c525e 100644 --- a/devices/pc8080/machine/invaders/debugger/machine.xml +++ b/devices/pc8080/machine/invaders/debugger/machine.xml @@ -1,5 +1,5 @@ - + Space Invaders diff --git a/devices/pc8080/machine/invaders/machine.xml b/devices/pc8080/machine/invaders/machine.xml index 16964ad0e..f4942dc28 100644 --- a/devices/pc8080/machine/invaders/machine.xml +++ b/devices/pc8080/machine/invaders/machine.xml @@ -1,5 +1,5 @@ - + Space Invaders diff --git a/devices/pc8080/machine/vt100/debugger/machine-left.xml b/devices/pc8080/machine/vt100/debugger/machine-left.xml index ecf41916c..0cfbae96c 100644 --- a/devices/pc8080/machine/vt100/debugger/machine-left.xml +++ b/devices/pc8080/machine/vt100/debugger/machine-left.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/debugger/machine-right.xml b/devices/pc8080/machine/vt100/debugger/machine-right.xml index 8fb58f689..d1929b899 100644 --- a/devices/pc8080/machine/vt100/debugger/machine-right.xml +++ b/devices/pc8080/machine/vt100/debugger/machine-right.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/debugger/machine.xml b/devices/pc8080/machine/vt100/debugger/machine.xml index 3c1b88474..43621ee78 100644 --- a/devices/pc8080/machine/vt100/debugger/machine.xml +++ b/devices/pc8080/machine/vt100/debugger/machine.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/machine-left.xml b/devices/pc8080/machine/vt100/machine-left.xml index 00c262069..4cd50aa74 100644 --- a/devices/pc8080/machine/vt100/machine-left.xml +++ b/devices/pc8080/machine/vt100/machine-left.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/machine-right.xml b/devices/pc8080/machine/vt100/machine-right.xml index b3d403863..916a9cddc 100644 --- a/devices/pc8080/machine/vt100/machine-right.xml +++ b/devices/pc8080/machine/vt100/machine-right.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/machine.xml b/devices/pc8080/machine/vt100/machine.xml index 7985ea34b..e1af5d330 100644 --- a/devices/pc8080/machine/vt100/machine.xml +++ b/devices/pc8080/machine/vt100/machine.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml b/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml index eab7fbb7d..104d48f69 100644 --- a/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 256K, Debugger diff --git a/devices/pcx86/machine/5150/cga/256kb/machine.xml b/devices/pcx86/machine/5150/cga/256kb/machine.xml index ab982fc04..ffcb67925 100644 --- a/devices/pcx86/machine/5150/cga/256kb/machine.xml +++ b/devices/pcx86/machine/5150/cga/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 256K diff --git a/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml b/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml index 52d9c4125..5c2277481 100644 --- a/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 384K, Soft Keyboard diff --git a/devices/pcx86/machine/5150/cga/64kb/README.md b/devices/pcx86/machine/5150/cga/64kb/README.md deleted file mode 100644 index 6f167b442..000000000 --- a/devices/pcx86/machine/5150/cga/64kb/README.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: IBM PC (Model 5150, 64Kb) with Color Display -permalink: /devices/pcx86/machine/5150/cga/64kb/ -redirect_from: - - /configs/pc/machines/5150/cga/64kb/ ---- - -IBM PC with Color Graphics (CGA) Display ----------------------------------------- - -All our 64Kb configurations of the IBM PC Model 5150 w/CGA are located here, including: - -* [IBM PC (64Kb) with Color Display](/devices/pcx86/machine/5150/cga/64kb/) -* [IBM PC (64Kb) with Color Display and Debugger](/devices/pcx86/machine/5150/cga/64kb/debugger/) -* [IBM PC (64Kb) with Color Display and Soft Keyboard](/devices/pcx86/machine/5150/cga/64kb/softkbd/) diff --git a/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml b/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml index 215e3ecb6..fdf1361cf 100644 --- a/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/cga/64kb/machine.md b/devices/pcx86/machine/5150/cga/64kb/machine.md new file mode 100644 index 000000000..03dbc74cc --- /dev/null +++ b/devices/pcx86/machine/5150/cga/64kb/machine.md @@ -0,0 +1,12 @@ +--- +layout: page +title: IBM PC (Model 5150, 64Kb) with Color Display +permalink: /devices/pcx86/machine/5150/cga/64kb/ +redirect_from: + - /configs/pc/machines/5150/cga/64kb/ +machines: + - id: ibm5150 + type: pcx86 +--- + +{% include machine.html id="ibm5150" %} diff --git a/devices/pcx86/machine/5150/cga/64kb/machine.xml b/devices/pcx86/machine/5150/cga/64kb/machine.xml index ab75e42b3..aa402ac07 100644 --- a/devices/pcx86/machine/5150/cga/64kb/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml b/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml index 13a0366c2..e4fae5d92 100644 --- a/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/dual/64kb/machine.xml b/devices/pcx86/machine/5150/dual/64kb/machine.xml index a26a8530c..96d54a932 100644 --- a/devices/pcx86/machine/5150/dual/64kb/machine.xml +++ b/devices/pcx86/machine/5150/dual/64kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) with Dual Displays diff --git a/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml b/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml index f89dfa056..3234d8da9 100644 --- a/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K, Debugger diff --git a/devices/pcx86/machine/5150/mda/256kb/machine.xml b/devices/pcx86/machine/5150/mda/256kb/machine.xml index 3e497e315..0e89de81e 100644 --- a/devices/pcx86/machine/5150/mda/256kb/machine.xml +++ b/devices/pcx86/machine/5150/mda/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K diff --git a/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml b/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml index 36ba23287..5b4fda2f6 100644 --- a/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 64K, Debugger diff --git a/devices/pcx86/machine/5150/mda/64kb/machine.xml b/devices/pcx86/machine/5150/mda/64kb/machine.xml index f7d7eedee..44ba9a035 100644 --- a/devices/pcx86/machine/5150/mda/64kb/machine.xml +++ b/devices/pcx86/machine/5150/mda/64kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 64K diff --git a/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml b/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml index 7eb49e62d..942e1bb18 100644 --- a/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 64K, Soft Keyboard diff --git a/devices/pcx86/machine/5160/cga/256kb/array/machine.xml b/devices/pcx86/machine/5160/cga/256kb/array/machine.xml index 2378a1053..8e669bcd9 100644 --- a/devices/pcx86/machine/5160/cga/256kb/array/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/array/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/debugger/machine.xml b/devices/pcx86/machine/5160/cga/256kb/debugger/machine.xml index 9114d6908..2e095c50f 100644 --- a/devices/pcx86/machine/5160/cga/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/machine.xml b/devices/pcx86/machine/5160/cga/256kb/machine.xml index a651ba0b1..7ec743765 100644 --- a/devices/pcx86/machine/5160/cga/256kb/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml index 2480c6186..1bdcfa0de 100644 --- a/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/512kb/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/512kb/softkbd/machine.xml index 1d130d76c..633f55273 100644 --- a/devices/pcx86/machine/5160/cga/512kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/512kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 512K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml index 7d8adce01..272b10ea2 100644 --- a/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive (Formatted) diff --git a/devices/pcx86/machine/5160/cga/640kb/machine.xml b/devices/pcx86/machine/5160/cga/640kb/machine.xml index 7c78e3a09..5e4a5cd0a 100644 --- a/devices/pcx86/machine/5160/cga/640kb/machine.xml +++ b/devices/pcx86/machine/5160/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive (Formatted) diff --git a/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml index 72083f3b4..7216d6d8a 100644 --- a/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml b/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml index 6ee1919fc..5ad222000 100644 --- a/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), 64K EGA, 256K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/256kb/machine.xml b/devices/pcx86/machine/5160/ega/256kb/machine.xml index 3ab6e9f4b..05775cc48 100644 --- a/devices/pcx86/machine/5160/ega/256kb/machine.xml +++ b/devices/pcx86/machine/5160/ega/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), 64K EGA, 256K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/640kb/array/machine.xml b/devices/pcx86/machine/5160/ega/640kb/array/machine.xml index dd553fa73..357782489 100644 --- a/devices/pcx86/machine/5160/ega/640kb/array/machine.xml +++ b/devices/pcx86/machine/5160/ega/640kb/array/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml b/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml index 81e35b0ed..a2291aa46 100644 --- a/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5160/ega/640kb/machine.xml b/devices/pcx86/machine/5160/ega/640kb/machine.xml index a2c579ae1..1b65e4130 100644 --- a/devices/pcx86/machine/5160/ega/640kb/machine.xml +++ b/devices/pcx86/machine/5160/ega/640kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml b/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml index d4950c9f7..239573617 100644 --- a/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml b/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml index b65960cac..512448cf4 100644 --- a/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml b/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml index 12d258e8e..ba03136e4 100644 --- a/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/256kb/machine.xml b/devices/pcx86/machine/5160/mda/256kb/machine.xml index 786e8e9bf..e1907203c 100644 --- a/devices/pcx86/machine/5160/mda/256kb/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml b/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml index 05ea1e752..c0aaaf6f7 100644 --- a/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 64K, 10Mb Drive diff --git a/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml index 1bb0c52fb..9cc1cd576 100644 --- a/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Color Display diff --git a/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml b/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml index 66dca29d4..cdb293de1 100644 --- a/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Color Display diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml index 65c0a6369..1f674a7a2 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (6Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml index fd6e01d4e..7844d5a3d 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (6Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml index 3c286f2d5..fc6a0fca6 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml index 33da7e475..1c8fd0d11 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml index 4df60160d..19b18bf2c 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml index 1c56d0615..1ec836cfe 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml index 4f47735bd..87b972457 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/vt100/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/vt100/machine.xml index bc4d974d8..5c3a5b3dc 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/vt100/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/vt100/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml index 53e343d90..b47075768 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml b/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml index 472724265..1f311a04e 100644 --- a/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT, 640Kb RAM, 128K EGA diff --git a/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml b/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml index 98b34ee34..18a1f50fd 100644 --- a/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml +++ b/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT, 640Kb RAM, 128K EGA diff --git a/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml index 737c5af70..1c4bcc111 100644 --- a/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Monochrome Display diff --git a/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml b/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml index 0a234df3e..00408bbc6 100644 --- a/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Monochrome Display diff --git a/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml b/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml index fe4459a92..8ef84076e 100644 --- a/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), VGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/vga/2048kb/machine.xml b/devices/pcx86/machine/5170/vga/2048kb/machine.xml index 0702fc68c..4ec47a29f 100644 --- a/devices/pcx86/machine/5170/vga/2048kb/machine.xml +++ b/devices/pcx86/machine/5170/vga/2048kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), VGA, 2Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml b/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml index 7ab169b93..81a082213 100644 --- a/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml +++ b/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), VGA, 4Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/5170/vga/4096kb/machine.xml b/devices/pcx86/machine/5170/vga/4096kb/machine.xml index 0617ee2f5..f01c3efd2 100644 --- a/devices/pcx86/machine/5170/vga/4096kb/machine.xml +++ b/devices/pcx86/machine/5170/vga/4096kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), VGA, 4Mb RAM, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml index 2a1cff415..37f75897f 100644 --- a/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + AT&T Personal Computer 6300 with Color Display diff --git a/devices/pcx86/machine/att/6300/cga/640kb/machine.xml b/devices/pcx86/machine/att/6300/cga/640kb/machine.xml index 1b65e922a..438c3c2ca 100644 --- a/devices/pcx86/machine/att/6300/cga/640kb/machine.xml +++ b/devices/pcx86/machine/att/6300/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + AT&T Personal Computer 6300 with Color Display diff --git a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml index 96dba5bd3..5f0c51594 100644 --- a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + Columbia Data Products MPC 1600 with Color Display diff --git a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml index 79a6ef93b..9219eb9a8 100644 --- a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml +++ b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + Columbia Data Products MPC 1600 with Color Display diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml index f348d6563..3a8ad778d 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, 128Kb EGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml index aadc68e99..68f0d0651 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, 128Kb EGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml index cd7a936ec..42b0c6156 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, 128Kb EGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml index feb1e3c57..46256e03f 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, 128Kb EGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml index 54e6eb8be..4644a35c4 100644 --- a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, COMPAQ VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml index 593ac21ea..94f960329 100644 --- a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, COMPAQ VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml index 792d6fcd3..0baffa065 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, IBM VGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml index 8c17dc34f..54b0dc48c 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, IBM VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml index 891a5bc1e..cec24c3b0 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, IBM VGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml index 62abe8986..2b533994b 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, IBM VGA, 20Mb Hard Disk (Formatted) diff --git a/devices/pcx86/machine/custom/machine.xml b/devices/pcx86/machine/custom/machine.xml index d3af02dfb..21e2fa451 100644 --- a/devices/pcx86/machine/custom/machine.xml +++ b/devices/pcx86/machine/custom/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) with Monochrome Display diff --git a/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml index 2519fdc95..80d4ac66d 100644 --- a/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + Zenith Z-150 with Color Display diff --git a/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml b/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml index 6494c4faf..605d92558 100644 --- a/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml +++ b/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + Zenith Z-150 with Color Display diff --git a/devices/pdp10/machine/ka10/test/debugger/machine.xml b/devices/pdp10/machine/ka10/test/debugger/machine.xml index 541d36815..f604d0c5e 100644 --- a/devices/pdp10/machine/ka10/test/debugger/machine.xml +++ b/devices/pdp10/machine/ka10/test/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-10 (Model KA10) with Debugger diff --git a/devices/pdp10/machine/ka10/test/machine.xml b/devices/pdp10/machine/ka10/test/machine.xml index d77f949ba..005c5339f 100644 --- a/devices/pdp10/machine/ka10/test/machine.xml +++ b/devices/pdp10/machine/ka10/test/machine.xml @@ -1,5 +1,5 @@ - + PDP-10 Test Machine diff --git a/devices/pdp11/machine/1120/basic/debugger/machine.xml b/devices/pdp11/machine/1120/basic/debugger/machine.xml index baf6aac3b..6c56bc02f 100644 --- a/devices/pdp11/machine/1120/basic/debugger/machine.xml +++ b/devices/pdp11/machine/1120/basic/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, PDP-11 BASIC, Debugger diff --git a/devices/pdp11/machine/1120/basic/machine.xml b/devices/pdp11/machine/1120/basic/machine.xml index df03fbc1d..3e9e5d7a8 100644 --- a/devices/pdp11/machine/1120/basic/machine.xml +++ b/devices/pdp11/machine/1120/basic/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, PDP-11 BASIC diff --git a/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml b/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml index 3ba60eb6f..f68dc7da2 100644 --- a/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml +++ b/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, Bootstrap Loader, Debugger diff --git a/devices/pdp11/machine/1120/bootstrap/machine.xml b/devices/pdp11/machine/1120/bootstrap/machine.xml index f1061dc6f..9bb16e031 100644 --- a/devices/pdp11/machine/1120/bootstrap/machine.xml +++ b/devices/pdp11/machine/1120/bootstrap/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, Bootstrap Loader diff --git a/devices/pdp11/machine/1120/monitor/debugger/machine.xml b/devices/pdp11/machine/1120/monitor/debugger/machine.xml index c5c8fbbbb..1b0f94c6d 100644 --- a/devices/pdp11/machine/1120/monitor/debugger/machine.xml +++ b/devices/pdp11/machine/1120/monitor/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 Boot Monitor with 56Kb and Debugger diff --git a/devices/pdp11/machine/1120/monitor/machine.xml b/devices/pdp11/machine/1120/monitor/machine.xml index a33c45e7c..b7161f80a 100644 --- a/devices/pdp11/machine/1120/monitor/machine.xml +++ b/devices/pdp11/machine/1120/monitor/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 Boot Monitor with 56Kb diff --git a/devices/pdp11/machine/1120/panel/debugger/machine.xml b/devices/pdp11/machine/1120/panel/debugger/machine.xml index 20cb167b1..b145ecad4 100644 --- a/devices/pdp11/machine/1120/panel/debugger/machine.xml +++ b/devices/pdp11/machine/1120/panel/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 with Front Panel and Debugger diff --git a/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml b/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml index a4f41e629..9a1a8d268 100644 --- a/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml +++ b/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 with Front Panel and TEST 14 diff --git a/devices/pdp11/machine/1120/panel/machine.xml b/devices/pdp11/machine/1120/panel/machine.xml index 55eba8539..45d8458af 100644 --- a/devices/pdp11/machine/1120/panel/machine.xml +++ b/devices/pdp11/machine/1120/panel/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 with Front Panel diff --git a/devices/pdp11/machine/1145/panel/debugger/machine.xml b/devices/pdp11/machine/1145/panel/debugger/machine.xml index 0029dc39f..3a9b1851c 100644 --- a/devices/pdp11/machine/1145/panel/debugger/machine.xml +++ b/devices/pdp11/machine/1145/panel/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1145/panel/machine.xml b/devices/pdp11/machine/1145/panel/machine.xml index 2f92ea54b..7dfe32b47 100644 --- a/devices/pdp11/machine/1145/panel/machine.xml +++ b/devices/pdp11/machine/1145/panel/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml b/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml index 7cf2d48aa..f1b5fff51 100644 --- a/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml +++ b/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml b/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml index c2bdd8f42..5f03ea70d 100644 --- a/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml +++ b/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1145/vt100/debugger/machine.xml b/devices/pdp11/machine/1145/vt100/debugger/machine.xml index abc9de06b..3aefa8f78 100644 --- a/devices/pdp11/machine/1145/vt100/debugger/machine.xml +++ b/devices/pdp11/machine/1145/vt100/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1145/vt100/machine-left.xml b/devices/pdp11/machine/1145/vt100/machine-left.xml index b026f0de8..ccdcfaf55 100644 --- a/devices/pdp11/machine/1145/vt100/machine-left.xml +++ b/devices/pdp11/machine/1145/vt100/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1145/vt100/machine-right.xml b/devices/pdp11/machine/1145/vt100/machine-right.xml index 56d0abf2b..8af5a9a98 100644 --- a/devices/pdp11/machine/1145/vt100/machine-right.xml +++ b/devices/pdp11/machine/1145/vt100/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1145/vt100/machine.xml b/devices/pdp11/machine/1145/vt100/machine.xml index d47b0d7b6..a1b9e715e 100644 --- a/devices/pdp11/machine/1145/vt100/machine.xml +++ b/devices/pdp11/machine/1145/vt100/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/4mb/debugger/machine.xml b/devices/pdp11/machine/1170/4mb/debugger/machine.xml index e9a4d3109..a1a441333 100644 --- a/devices/pdp11/machine/1170/4mb/debugger/machine.xml +++ b/devices/pdp11/machine/1170/4mb/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 4Mb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1170/4mb/machine.xml b/devices/pdp11/machine/1170/4mb/machine.xml index 4ca30a1d5..cd2ec11f5 100644 --- a/devices/pdp11/machine/1170/4mb/machine.xml +++ b/devices/pdp11/machine/1170/4mb/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 4Mb and Front Panel diff --git a/devices/pdp11/machine/1170/monitor/debugger/machine.xml b/devices/pdp11/machine/1170/monitor/debugger/machine.xml index 5d03c9fa7..ceabb50ca 100644 --- a/devices/pdp11/machine/1170/monitor/debugger/machine.xml +++ b/devices/pdp11/machine/1170/monitor/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Boot Monitor, and Debugger diff --git a/devices/pdp11/machine/1170/monitor/machine.xml b/devices/pdp11/machine/1170/monitor/machine.xml index 89bd91fc9..57835c13b 100644 --- a/devices/pdp11/machine/1170/monitor/machine.xml +++ b/devices/pdp11/machine/1170/monitor/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Boot Monitor diff --git a/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml b/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml index 6c6a5597a..1ead348f2 100644 --- a/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml +++ b/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb running CPU Exerciser diff --git a/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml b/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml index 2ff22bac3..0e12ebe10 100644 --- a/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml +++ b/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1170/panel/debugger/machine.xml b/devices/pdp11/machine/1170/panel/debugger/machine.xml index f10334daf..6c2315ea6 100644 --- a/devices/pdp11/machine/1170/panel/debugger/machine.xml +++ b/devices/pdp11/machine/1170/panel/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1170/panel/machine.xml b/devices/pdp11/machine/1170/panel/machine.xml index fc7179828..7b876f403 100644 --- a/devices/pdp11/machine/1170/panel/machine.xml +++ b/devices/pdp11/machine/1170/panel/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml b/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml index dad64cdb8..5f4f5868e 100644 --- a/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml +++ b/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml b/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml index a697eb711..f9aec1292 100644 --- a/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml +++ b/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1170/vt100/debugger/machine.xml b/devices/pdp11/machine/1170/vt100/debugger/machine.xml index c65dfb9eb..8c06ef4d8 100644 --- a/devices/pdp11/machine/1170/vt100/debugger/machine.xml +++ b/devices/pdp11/machine/1170/vt100/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1170/vt100/machine-left.xml b/devices/pdp11/machine/1170/vt100/machine-left.xml index ad704b032..065327b8f 100644 --- a/devices/pdp11/machine/1170/vt100/machine-left.xml +++ b/devices/pdp11/machine/1170/vt100/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/vt100/machine-right.xml b/devices/pdp11/machine/1170/vt100/machine-right.xml index bbdb48687..e4f6e7b06 100644 --- a/devices/pdp11/machine/1170/vt100/machine-right.xml +++ b/devices/pdp11/machine/1170/vt100/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/vt100/machine.xml b/devices/pdp11/machine/1170/vt100/machine.xml index de539dc98..eee82ff94 100644 --- a/devices/pdp11/machine/1170/vt100/machine.xml +++ b/devices/pdp11/machine/1170/vt100/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/disks/pcx86/apps/ibm/topview/1.01/manifest.xml b/disks/pcx86/apps/ibm/topview/1.01/manifest.xml index efdad6c50..2c64277b6 100644 --- a/disks/pcx86/apps/ibm/topview/1.01/manifest.xml +++ b/disks/pcx86/apps/ibm/topview/1.01/manifest.xml @@ -1,5 +1,5 @@ - + TopView 1.01 diff --git a/disks/pcx86/apps/ibm/topview/1.10/manifest.xml b/disks/pcx86/apps/ibm/topview/1.10/manifest.xml index 69fe72c79..04fad28ba 100644 --- a/disks/pcx86/apps/ibm/topview/1.10/manifest.xml +++ b/disks/pcx86/apps/ibm/topview/1.10/manifest.xml @@ -1,5 +1,5 @@ - + TopView 1.10 diff --git a/disks/pcx86/apps/lotus/123/1a/manifest.xml b/disks/pcx86/apps/lotus/123/1a/manifest.xml index aa4c04983..bcd526a21 100644 --- a/disks/pcx86/apps/lotus/123/1a/manifest.xml +++ b/disks/pcx86/apps/lotus/123/1a/manifest.xml @@ -1,5 +1,5 @@ - + 1-2-3 1A diff --git a/disks/pcx86/apps/lotus/123/1as/manifest.xml b/disks/pcx86/apps/lotus/123/1as/manifest.xml index 49506f272..496e4c9ac 100644 --- a/disks/pcx86/apps/lotus/123/1as/manifest.xml +++ b/disks/pcx86/apps/lotus/123/1as/manifest.xml @@ -1,5 +1,5 @@ - + 1-2-3 1A* diff --git a/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml b/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml index 7a5336031..056b9f7c3 100644 --- a/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml +++ b/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Chart 2.02 diff --git a/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml b/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml index cbfa6dcbc..be532dcf9 100644 --- a/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml +++ b/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml @@ -1,5 +1,5 @@ - + Word for Windows 2.0c diff --git a/disks/pcx86/apps/microsoft/word/3.0/manifest.xml b/disks/pcx86/apps/microsoft/word/3.0/manifest.xml index 7950ec87b..b10a2e7e8 100644 --- a/disks/pcx86/apps/microsoft/word/3.0/manifest.xml +++ b/disks/pcx86/apps/microsoft/word/3.0/manifest.xml @@ -1,5 +1,5 @@ - + MS Word 3.0 diff --git a/disks/pcx86/apps/microsoft/word/3.1/manifest.xml b/disks/pcx86/apps/microsoft/word/3.1/manifest.xml index 7e6e9fe3d..15913855b 100644 --- a/disks/pcx86/apps/microsoft/word/3.1/manifest.xml +++ b/disks/pcx86/apps/microsoft/word/3.1/manifest.xml @@ -1,5 +1,5 @@ - + MS Word 3.1 diff --git a/disks/pcx86/apps/microsoft/word/5.0/manifest.xml b/disks/pcx86/apps/microsoft/word/5.0/manifest.xml index 3a7f2ace6..4035dccad 100644 --- a/disks/pcx86/apps/microsoft/word/5.0/manifest.xml +++ b/disks/pcx86/apps/microsoft/word/5.0/manifest.xml @@ -1,5 +1,5 @@ - + MS Word 5.0 diff --git a/disks/pcx86/apps/other/dbase2/2.4/manifest.xml b/disks/pcx86/apps/other/dbase2/2.4/manifest.xml index 50734f7b4..3d8bcec45 100644 --- a/disks/pcx86/apps/other/dbase2/2.4/manifest.xml +++ b/disks/pcx86/apps/other/dbase2/2.4/manifest.xml @@ -1,5 +1,5 @@ - + dBASE II 2.4 diff --git a/disks/pcx86/apps/other/dbase3/1.0/manifest.xml b/disks/pcx86/apps/other/dbase3/1.0/manifest.xml index caa94a884..d9022d127 100644 --- a/disks/pcx86/apps/other/dbase3/1.0/manifest.xml +++ b/disks/pcx86/apps/other/dbase3/1.0/manifest.xml @@ -1,5 +1,5 @@ - + dBASE III 1.0 diff --git a/disks/pcx86/apps/other/omniview/4.30/manifest.xml b/disks/pcx86/apps/other/omniview/4.30/manifest.xml index 763c24d91..d0535aa5d 100644 --- a/disks/pcx86/apps/other/omniview/4.30/manifest.xml +++ b/disks/pcx86/apps/other/omniview/4.30/manifest.xml @@ -1,5 +1,5 @@ - + Omniview 386 4.30 diff --git a/disks/pcx86/apps/other/sc2/1.00/manifest.xml b/disks/pcx86/apps/other/sc2/1.00/manifest.xml index b612a624d..16511b9eb 100644 --- a/disks/pcx86/apps/other/sc2/1.00/manifest.xml +++ b/disks/pcx86/apps/other/sc2/1.00/manifest.xml @@ -1,5 +1,5 @@ - + SuperCalc2 1.00 diff --git a/disks/pcx86/apps/other/sc3/1.00/manifest.xml b/disks/pcx86/apps/other/sc3/1.00/manifest.xml index b194f2056..c67c44151 100644 --- a/disks/pcx86/apps/other/sc3/1.00/manifest.xml +++ b/disks/pcx86/apps/other/sc3/1.00/manifest.xml @@ -1,5 +1,5 @@ - + SuperCalc3 1.00 diff --git a/disks/pcx86/apps/other/wordstar/3.30/manifest.xml b/disks/pcx86/apps/other/wordstar/3.30/manifest.xml index d8e77d40c..c7c1fc7c8 100644 --- a/disks/pcx86/apps/other/wordstar/3.30/manifest.xml +++ b/disks/pcx86/apps/other/wordstar/3.30/manifest.xml @@ -1,5 +1,5 @@ - + WordStar 3.30 diff --git a/disks/pcx86/apps/other/wordstar/4.00/manifest.xml b/disks/pcx86/apps/other/wordstar/4.00/manifest.xml index 90428050b..586191bb5 100644 --- a/disks/pcx86/apps/other/wordstar/4.00/manifest.xml +++ b/disks/pcx86/apps/other/wordstar/4.00/manifest.xml @@ -1,5 +1,5 @@ - + WordStar 4.00 diff --git a/disks/pcx86/cpm/1.1b/debugger/machine.xml b/disks/pcx86/cpm/1.1b/debugger/machine.xml index 1b881f19f..40daf4a31 100644 --- a/disks/pcx86/cpm/1.1b/debugger/machine.xml +++ b/disks/pcx86/cpm/1.1b/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K, Debugger diff --git a/disks/pcx86/cpm/1.1b/machine.xml b/disks/pcx86/cpm/1.1b/machine.xml index 589db60ce..6a2efa65d 100644 --- a/disks/pcx86/cpm/1.1b/machine.xml +++ b/disks/pcx86/cpm/1.1b/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K diff --git a/disks/pcx86/cpm/1.1b/manifest.xml b/disks/pcx86/cpm/1.1b/manifest.xml index 9c8960ee1..04bd6e4e0 100644 --- a/disks/pcx86/cpm/1.1b/manifest.xml +++ b/disks/pcx86/cpm/1.1b/manifest.xml @@ -1,5 +1,5 @@ - + CP/M-86 1.1B diff --git a/disks/pcx86/diags/ibm/manifest.xml b/disks/pcx86/diags/ibm/manifest.xml index c6cf0a73d..ef6cadbeb 100644 --- a/disks/pcx86/diags/ibm/manifest.xml +++ b/disks/pcx86/diags/ibm/manifest.xml @@ -1,5 +1,5 @@ - + IBM PC Diagnostics Diagnostics diff --git a/disks/pcx86/dos/compaq/1.11/manifest.xml b/disks/pcx86/dos/compaq/1.11/manifest.xml index 8ec30ff63..11d976802 100644 --- a/disks/pcx86/dos/compaq/1.11/manifest.xml +++ b/disks/pcx86/dos/compaq/1.11/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 1.11 diff --git a/disks/pcx86/dos/compaq/1.12/manifest.xml b/disks/pcx86/dos/compaq/1.12/manifest.xml index 7ec10fdde..fc04283a8 100644 --- a/disks/pcx86/dos/compaq/1.12/manifest.xml +++ b/disks/pcx86/dos/compaq/1.12/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 1.12 diff --git a/disks/pcx86/dos/compaq/2.12/manifest.xml b/disks/pcx86/dos/compaq/2.12/manifest.xml index cc0dffe0d..b11e50d86 100644 --- a/disks/pcx86/dos/compaq/2.12/manifest.xml +++ b/disks/pcx86/dos/compaq/2.12/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 2.12 diff --git a/disks/pcx86/dos/compaq/3.00/manifest.xml b/disks/pcx86/dos/compaq/3.00/manifest.xml index 5af70163e..b3effd8d9 100644 --- a/disks/pcx86/dos/compaq/3.00/manifest.xml +++ b/disks/pcx86/dos/compaq/3.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.00 diff --git a/disks/pcx86/dos/compaq/3.10/manifest.xml b/disks/pcx86/dos/compaq/3.10/manifest.xml index cf6191791..67b4e996f 100644 --- a/disks/pcx86/dos/compaq/3.10/manifest.xml +++ b/disks/pcx86/dos/compaq/3.10/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.10 diff --git a/disks/pcx86/dos/compaq/3.31/manifest.xml b/disks/pcx86/dos/compaq/3.31/manifest.xml index 621dd8a64..9d0c27594 100644 --- a/disks/pcx86/dos/compaq/3.31/manifest.xml +++ b/disks/pcx86/dos/compaq/3.31/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.31 diff --git a/disks/pcx86/dos/ibm/0.90/manifest.xml b/disks/pcx86/dos/ibm/0.90/manifest.xml index 34301d433..17c87ed64 100644 --- a/disks/pcx86/dos/ibm/0.90/manifest.xml +++ b/disks/pcx86/dos/ibm/0.90/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 0.90 diff --git a/disks/pcx86/dos/ibm/1.00/manifest.xml b/disks/pcx86/dos/ibm/1.00/manifest.xml index 6f90aab78..9d4eee45c 100644 --- a/disks/pcx86/dos/ibm/1.00/manifest.xml +++ b/disks/pcx86/dos/ibm/1.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 1.00 diff --git a/disks/pcx86/dos/ibm/1.10/manifest.xml b/disks/pcx86/dos/ibm/1.10/manifest.xml index e58ab60fa..58c6d36a1 100644 --- a/disks/pcx86/dos/ibm/1.10/manifest.xml +++ b/disks/pcx86/dos/ibm/1.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 1.10 diff --git a/disks/pcx86/dos/ibm/2.00/manifest.xml b/disks/pcx86/dos/ibm/2.00/manifest.xml index 477a70f0b..01878bad6 100644 --- a/disks/pcx86/dos/ibm/2.00/manifest.xml +++ b/disks/pcx86/dos/ibm/2.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 2.00 diff --git a/disks/pcx86/dos/ibm/2.10/manifest.xml b/disks/pcx86/dos/ibm/2.10/manifest.xml index 83a19c9a9..3368808d3 100644 --- a/disks/pcx86/dos/ibm/2.10/manifest.xml +++ b/disks/pcx86/dos/ibm/2.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 2.10 diff --git a/disks/pcx86/dos/ibm/3.00/manifest.xml b/disks/pcx86/dos/ibm/3.00/manifest.xml index 43d2df851..8736887e0 100644 --- a/disks/pcx86/dos/ibm/3.00/manifest.xml +++ b/disks/pcx86/dos/ibm/3.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.00 diff --git a/disks/pcx86/dos/ibm/3.10/manifest.xml b/disks/pcx86/dos/ibm/3.10/manifest.xml index 3dfd6dcbc..068d15821 100644 --- a/disks/pcx86/dos/ibm/3.10/manifest.xml +++ b/disks/pcx86/dos/ibm/3.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.10 diff --git a/disks/pcx86/dos/ibm/3.20/manifest.xml b/disks/pcx86/dos/ibm/3.20/manifest.xml index 62e8d8be5..04ed9c97a 100644 --- a/disks/pcx86/dos/ibm/3.20/manifest.xml +++ b/disks/pcx86/dos/ibm/3.20/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.20 diff --git a/disks/pcx86/dos/ibm/3.30/manifest.xml b/disks/pcx86/dos/ibm/3.30/manifest.xml index 59b8e3c64..96b06d6ac 100644 --- a/disks/pcx86/dos/ibm/3.30/manifest.xml +++ b/disks/pcx86/dos/ibm/3.30/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.30 diff --git a/disks/pcx86/dos/ibm/4.00/manifest.xml b/disks/pcx86/dos/ibm/4.00/manifest.xml index bbc1047c1..c6c3d0ec7 100644 --- a/disks/pcx86/dos/ibm/4.00/manifest.xml +++ b/disks/pcx86/dos/ibm/4.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 4.00 diff --git a/disks/pcx86/dos/ibm/5.00/manifest.xml b/disks/pcx86/dos/ibm/5.00/manifest.xml index e3c3f6e46..66a78ceaa 100644 --- a/disks/pcx86/dos/ibm/5.00/manifest.xml +++ b/disks/pcx86/dos/ibm/5.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 5.00 diff --git a/disks/pcx86/dos/ibm/6.10/manifest.xml b/disks/pcx86/dos/ibm/6.10/manifest.xml index ecab107f5..3d2c0110a 100644 --- a/disks/pcx86/dos/ibm/6.10/manifest.xml +++ b/disks/pcx86/dos/ibm/6.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 6.10 diff --git a/disks/pcx86/dos/ibm/6.30/manifest.xml b/disks/pcx86/dos/ibm/6.30/manifest.xml index d575c47fb..358047956 100644 --- a/disks/pcx86/dos/ibm/6.30/manifest.xml +++ b/disks/pcx86/dos/ibm/6.30/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 6.30 diff --git a/disks/pcx86/dos/ibm/7.00/manifest.xml b/disks/pcx86/dos/ibm/7.00/manifest.xml index 7eac9d927..0216ea239 100644 --- a/disks/pcx86/dos/ibm/7.00/manifest.xml +++ b/disks/pcx86/dos/ibm/7.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 7.00 diff --git a/disks/pcx86/dos/microsoft/2.00/manifest.xml b/disks/pcx86/dos/microsoft/2.00/manifest.xml index 107dd0197..5b60730bd 100644 --- a/disks/pcx86/dos/microsoft/2.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/2.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 2.00 diff --git a/disks/pcx86/dos/microsoft/3.20/manifest.xml b/disks/pcx86/dos/microsoft/3.20/manifest.xml index 07a8e7019..e491de027 100644 --- a/disks/pcx86/dos/microsoft/3.20/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.20/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.20 diff --git a/disks/pcx86/dos/microsoft/3.21/manifest.xml b/disks/pcx86/dos/microsoft/3.21/manifest.xml index 5b75bf76a..861979791 100644 --- a/disks/pcx86/dos/microsoft/3.21/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.21/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.21 diff --git a/disks/pcx86/dos/microsoft/3.30/manifest.xml b/disks/pcx86/dos/microsoft/3.30/manifest.xml index 6b73a456d..669c65a35 100644 --- a/disks/pcx86/dos/microsoft/3.30/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.30/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.30 diff --git a/disks/pcx86/dos/microsoft/3.31/manifest.xml b/disks/pcx86/dos/microsoft/3.31/manifest.xml index 75f35393f..ea2b6d3d9 100644 --- a/disks/pcx86/dos/microsoft/3.31/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.31/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.31 diff --git a/disks/pcx86/dos/microsoft/4.00/manifest.xml b/disks/pcx86/dos/microsoft/4.00/manifest.xml index 13b215ae1..1b1426ece 100644 --- a/disks/pcx86/dos/microsoft/4.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.00 diff --git a/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml b/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml index 6dad7b178..04b39bbf7 100644 --- a/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.01 diff --git a/disks/pcx86/dos/microsoft/4.01/manifest.xml b/disks/pcx86/dos/microsoft/4.01/manifest.xml index d734a0280..4dd8fd1d2 100644 --- a/disks/pcx86/dos/microsoft/4.01/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.01/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.01 diff --git a/disks/pcx86/dos/microsoft/4.0M/manifest.xml b/disks/pcx86/dos/microsoft/4.0M/manifest.xml index 7d4a78df7..6a2848398 100644 --- a/disks/pcx86/dos/microsoft/4.0M/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.0M/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.0M diff --git a/disks/pcx86/dos/microsoft/5.00/manifest.xml b/disks/pcx86/dos/microsoft/5.00/manifest.xml index 952925363..5229258ec 100644 --- a/disks/pcx86/dos/microsoft/5.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/5.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 5.00 diff --git a/disks/pcx86/dos/microsoft/6.00/manifest.xml b/disks/pcx86/dos/microsoft/6.00/manifest.xml index dfac679de..f88b62f86 100644 --- a/disks/pcx86/dos/microsoft/6.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/6.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 6.00 diff --git a/disks/pcx86/dos/microsoft/6.20/manifest.xml b/disks/pcx86/dos/microsoft/6.20/manifest.xml index 940692ee2..9126db7d6 100644 --- a/disks/pcx86/dos/microsoft/6.20/manifest.xml +++ b/disks/pcx86/dos/microsoft/6.20/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 6.20 diff --git a/disks/pcx86/dos/microsoft/6.22/manifest.xml b/disks/pcx86/dos/microsoft/6.22/manifest.xml index 68d8f1335..a688920b0 100644 --- a/disks/pcx86/dos/microsoft/6.22/manifest.xml +++ b/disks/pcx86/dos/microsoft/6.22/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 6.22 diff --git a/disks/pcx86/empty/manifest.xml b/disks/pcx86/empty/manifest.xml index 6416d8d2b..288d78c5b 100644 --- a/disks/pcx86/empty/manifest.xml +++ b/disks/pcx86/empty/manifest.xml @@ -1,5 +1,5 @@ - + Empty Diskettes diff --git a/disks/pcx86/games/id/wolf3d/manifest.xml b/disks/pcx86/games/id/wolf3d/manifest.xml index 7bc76ea4c..17f8a9088 100644 --- a/disks/pcx86/games/id/wolf3d/manifest.xml +++ b/disks/pcx86/games/id/wolf3d/manifest.xml @@ -1,5 +1,5 @@ - + Wolfenstein 3D diff --git a/disks/pcx86/games/infocom/hhiker/manifest.xml b/disks/pcx86/games/infocom/hhiker/manifest.xml index 8e7e0214b..ea08861d5 100644 --- a/disks/pcx86/games/infocom/hhiker/manifest.xml +++ b/disks/pcx86/games/infocom/hhiker/manifest.xml @@ -1,5 +1,5 @@ - + The Hitchhiker's Guide to the Galaxy diff --git a/disks/pcx86/games/infocom/machine.xml b/disks/pcx86/games/infocom/machine.xml index 0caac8147..facaf419b 100644 --- a/disks/pcx86/games/infocom/machine.xml +++ b/disks/pcx86/games/infocom/machine.xml @@ -1,5 +1,5 @@ - + IBM PC Model 5150 (CGA, 64K) diff --git a/disks/pcx86/games/infocom/phobos/manifest.xml b/disks/pcx86/games/infocom/phobos/manifest.xml index fa5d39007..66f3f714d 100644 --- a/disks/pcx86/games/infocom/phobos/manifest.xml +++ b/disks/pcx86/games/infocom/phobos/manifest.xml @@ -1,5 +1,5 @@ - + Leather Goddesses of Phobos diff --git a/disks/pcx86/games/infocom/planet/manifest.xml b/disks/pcx86/games/infocom/planet/manifest.xml index a76970b5c..e6243526a 100644 --- a/disks/pcx86/games/infocom/planet/manifest.xml +++ b/disks/pcx86/games/infocom/planet/manifest.xml @@ -1,5 +1,5 @@ - + Planetfall diff --git a/disks/pcx86/games/infocom/zork1/debugger/machine.xml b/disks/pcx86/games/infocom/zork1/debugger/machine.xml index d35d6f140..5770e10b5 100644 --- a/disks/pcx86/games/infocom/zork1/debugger/machine.xml +++ b/disks/pcx86/games/infocom/zork1/debugger/machine.xml @@ -1,5 +1,5 @@ - + Zork I (IBM PC Model 5150) diff --git a/disks/pcx86/games/infocom/zork1/manifest.xml b/disks/pcx86/games/infocom/zork1/manifest.xml index 7b05aa7c2..e247c5abd 100644 --- a/disks/pcx86/games/infocom/zork1/manifest.xml +++ b/disks/pcx86/games/infocom/zork1/manifest.xml @@ -1,5 +1,5 @@ - + Zork I diff --git a/disks/pcx86/games/infocom/zork2/manifest.xml b/disks/pcx86/games/infocom/zork2/manifest.xml index e3dd3aa48..532003c43 100644 --- a/disks/pcx86/games/infocom/zork2/manifest.xml +++ b/disks/pcx86/games/infocom/zork2/manifest.xml @@ -1,5 +1,5 @@ - + Zork II diff --git a/disks/pcx86/games/infocom/zork3/manifest.xml b/disks/pcx86/games/infocom/zork3/manifest.xml index 9a7649a2f..8337243eb 100644 --- a/disks/pcx86/games/infocom/zork3/manifest.xml +++ b/disks/pcx86/games/infocom/zork3/manifest.xml @@ -1,5 +1,5 @@ - + Zork III diff --git a/disks/pcx86/games/microsoft/adventure/machine.xml b/disks/pcx86/games/microsoft/adventure/machine.xml index bca058315..d0cb8630e 100644 --- a/disks/pcx86/games/microsoft/adventure/machine.xml +++ b/disks/pcx86/games/microsoft/adventure/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) running Microsoft Adventure diff --git a/disks/pcx86/games/microsoft/adventure/manifest.xml b/disks/pcx86/games/microsoft/adventure/manifest.xml index 27fa74765..40f33f710 100644 --- a/disks/pcx86/games/microsoft/adventure/manifest.xml +++ b/disks/pcx86/games/microsoft/adventure/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Adventure 1.00 diff --git a/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml b/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml index d33cf6027..5da203861 100644 --- a/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml +++ b/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Flight Simulator diff --git a/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml b/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml index bcfcdca5c..9e3675e3c 100644 --- a/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml +++ b/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Flight Simulator diff --git a/disks/pcx86/minix/1.1/manifest.xml b/disks/pcx86/minix/1.1/manifest.xml index 03033d020..10cbb73b5 100644 --- a/disks/pcx86/minix/1.1/manifest.xml +++ b/disks/pcx86/minix/1.1/manifest.xml @@ -1,5 +1,5 @@ - + MINIX 1.1 diff --git a/disks/pcx86/os2/ibm/1.0/manifest.xml b/disks/pcx86/os2/ibm/1.0/manifest.xml index 6d5afc0df..14b0e27ed 100644 --- a/disks/pcx86/os2/ibm/1.0/manifest.xml +++ b/disks/pcx86/os2/ibm/1.0/manifest.xml @@ -1,5 +1,5 @@ - + IBM OS/2 1.0 diff --git a/disks/pcx86/os2/ibm/1.1/manifest.xml b/disks/pcx86/os2/ibm/1.1/manifest.xml index 6778873c8..409bd57f8 100644 --- a/disks/pcx86/os2/ibm/1.1/manifest.xml +++ b/disks/pcx86/os2/ibm/1.1/manifest.xml @@ -1,5 +1,5 @@ - + IBM OS/2 1.1 diff --git a/disks/pcx86/os2/ibm/1.3/manifest.xml b/disks/pcx86/os2/ibm/1.3/manifest.xml index 24f038066..35a17a7d5 100644 --- a/disks/pcx86/os2/ibm/1.3/manifest.xml +++ b/disks/pcx86/os2/ibm/1.3/manifest.xml @@ -1,5 +1,5 @@ - + IBM OS/2 1.3 diff --git a/disks/pcx86/os2/microsoft/1.0/manifest.xml b/disks/pcx86/os2/microsoft/1.0/manifest.xml index e6a5a166e..33d4d3665 100644 --- a/disks/pcx86/os2/microsoft/1.0/manifest.xml +++ b/disks/pcx86/os2/microsoft/1.0/manifest.xml @@ -1,5 +1,5 @@ - + MS OS/2 1.0 diff --git a/disks/pcx86/os2/misc/manifest.xml b/disks/pcx86/os2/misc/manifest.xml index db60c062b..3fd6ffadc 100644 --- a/disks/pcx86/os2/misc/manifest.xml +++ b/disks/pcx86/os2/misc/manifest.xml @@ -1,5 +1,5 @@ - + OS/2 Prototype Disks diff --git a/disks/pcx86/personal/manifest.xml b/disks/pcx86/personal/manifest.xml index dd105abbf..6fb6201c0 100644 --- a/disks/pcx86/personal/manifest.xml +++ b/disks/pcx86/personal/manifest.xml @@ -1,5 +1,5 @@ - + PCjs Personal Disk Collection diff --git a/disks/pcx86/shareware/pcmag/manifest.xml b/disks/pcx86/shareware/pcmag/manifest.xml index 483dd3304..f36138fd7 100644 --- a/disks/pcx86/shareware/pcmag/manifest.xml +++ b/disks/pcx86/shareware/pcmag/manifest.xml @@ -1,5 +1,5 @@ - + PC Magazine Diskettes diff --git a/disks/pcx86/shareware/pcsig08/debugger/machine.xml b/disks/pcx86/shareware/pcsig08/debugger/machine.xml index 8a8578685..84a218ae4 100644 --- a/disks/pcx86/shareware/pcsig08/debugger/machine.xml +++ b/disks/pcx86/shareware/pcsig08/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk (Formatted) diff --git a/disks/pcx86/shareware/pcsig08/machine.xml b/disks/pcx86/shareware/pcsig08/machine.xml index 389537ae3..6314fd9ef 100644 --- a/disks/pcx86/shareware/pcsig08/machine.xml +++ b/disks/pcx86/shareware/pcsig08/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk (Formatted) diff --git a/disks/pcx86/shareware/pcsig08/manifest.xml b/disks/pcx86/shareware/pcsig08/manifest.xml index 50aaa6c37..26cac2e4a 100644 --- a/disks/pcx86/shareware/pcsig08/manifest.xml +++ b/disks/pcx86/shareware/pcsig08/manifest.xml @@ -1,5 +1,5 @@ - + PC-SIG Library 8th Edition CD-ROM (April 1990) diff --git a/disks/pcx86/shareware/pctj/manifest.xml b/disks/pcx86/shareware/pctj/manifest.xml index 9ac6ba1c3..a754837d1 100644 --- a/disks/pcx86/shareware/pctj/manifest.xml +++ b/disks/pcx86/shareware/pctj/manifest.xml @@ -1,5 +1,5 @@ - + PC Tech Journal Diskettes diff --git a/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml b/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml index 631a4d8a4..e3f09d5c5 100644 --- a/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml +++ b/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml @@ -1,5 +1,5 @@ - + Borland Turbo Pascal diff --git a/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml b/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml index 5fa0addc3..3acfd6422 100644 --- a/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml +++ b/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml @@ -1,5 +1,5 @@ - + Borland Turbo Pascal diff --git a/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml b/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml index 19724724a..4d96cab16 100644 --- a/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml +++ b/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml @@ -1,5 +1,5 @@ - + IBM BASIC Compiler 1.00 diff --git a/disks/pcx86/tools/logitech/modula2/1.00/manifest.xml b/disks/pcx86/tools/logitech/modula2/1.00/manifest.xml index 16e5479bc..7b558580d 100644 --- a/disks/pcx86/tools/logitech/modula2/1.00/manifest.xml +++ b/disks/pcx86/tools/logitech/modula2/1.00/manifest.xml @@ -1,5 +1,5 @@ - + Modula-2/86 1.00 diff --git a/disks/pcx86/tools/logitech/modula2/1.10/manifest.xml b/disks/pcx86/tools/logitech/modula2/1.10/manifest.xml index 084dabffc..c6ae8ee1e 100644 --- a/disks/pcx86/tools/logitech/modula2/1.10/manifest.xml +++ b/disks/pcx86/tools/logitech/modula2/1.10/manifest.xml @@ -1,5 +1,5 @@ - + Modula-2/86 1.10 diff --git a/disks/pcx86/tools/microsoft/basic/manifest.xml b/disks/pcx86/tools/microsoft/basic/manifest.xml index 65db9cc10..310927b3c 100644 --- a/disks/pcx86/tools/microsoft/basic/manifest.xml +++ b/disks/pcx86/tools/microsoft/basic/manifest.xml @@ -1,5 +1,5 @@ - + MS BASIC diff --git a/disks/pcx86/tools/microsoft/c/2.03/manifest.xml b/disks/pcx86/tools/microsoft/c/2.03/manifest.xml index fa01ff5b9..59712c5ca 100644 --- a/disks/pcx86/tools/microsoft/c/2.03/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/2.03/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 2.03 diff --git a/disks/pcx86/tools/microsoft/c/3.00/manifest.xml b/disks/pcx86/tools/microsoft/c/3.00/manifest.xml index 259434c89..12c32c8e7 100644 --- a/disks/pcx86/tools/microsoft/c/3.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 3.00 diff --git a/disks/pcx86/tools/microsoft/c/4.00/manifest.xml b/disks/pcx86/tools/microsoft/c/4.00/manifest.xml index de9e899d6..0e182fc44 100644 --- a/disks/pcx86/tools/microsoft/c/4.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/4.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 4.00 diff --git a/disks/pcx86/tools/microsoft/c/5.00/manifest.xml b/disks/pcx86/tools/microsoft/c/5.00/manifest.xml index 6b38924f4..0cc697ea3 100644 --- a/disks/pcx86/tools/microsoft/c/5.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/5.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 5.00 diff --git a/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml b/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml index 3533879f5..35aa3d72d 100644 --- a/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 5.10-OS2 diff --git a/disks/pcx86/tools/microsoft/c/5.10/manifest.xml b/disks/pcx86/tools/microsoft/c/5.10/manifest.xml index 190342107..98bbcd54e 100644 --- a/disks/pcx86/tools/microsoft/c/5.10/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/5.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 5.10 diff --git a/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml index 8c563d7b8..5da314e1d 100644 --- a/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 1.00 diff --git a/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml index ea5b8a7f6..a387052fd 100644 --- a/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 3.00 diff --git a/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml b/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml index eb60b0cdc..bcdd1743c 100644 --- a/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 3.01 diff --git a/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml index f37793fea..8b5a53d26 100644 --- a/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 4.00 diff --git a/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml index a8ee7f07c..bf80f5d48 100644 --- a/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 5.00 diff --git a/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml b/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml index a7e29a0ac..d2e27785b 100644 --- a/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 5.10 diff --git a/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml index f086c98a4..fe95cff1d 100644 --- a/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 6.00 diff --git a/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml b/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml index 1c7d313f4..f9ac5fab9 100644 --- a/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 6.11 diff --git a/disks/pcx86/tools/microsoft/mouse/2.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/2.00/manifest.xml index 867491655..c7b850a43 100644 --- a/disks/pcx86/tools/microsoft/mouse/2.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/mouse/2.00/manifest.xml @@ -1,5 +1,5 @@ - + MS Mouse 2.00 diff --git a/disks/pcx86/tools/microsoft/mouse/4.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/4.00/manifest.xml index ba3e0cef1..18b069802 100644 --- a/disks/pcx86/tools/microsoft/mouse/4.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/mouse/4.00/manifest.xml @@ -1,5 +1,5 @@ - + MS Mouse 4.00 diff --git a/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml index 66c138e83..a5cf69407 100644 --- a/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml @@ -1,5 +1,5 @@ - + MS Mouse 5.00 diff --git a/disks/pcx86/tools/microsoft/mouse/6.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/6.00/manifest.xml index a7ff0d5b4..64b674f1b 100644 --- a/disks/pcx86/tools/microsoft/mouse/6.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/mouse/6.00/manifest.xml @@ -1,5 +1,5 @@ - + MS Mouse 6.xx diff --git a/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml b/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml index 849555587..f29999c72 100644 --- a/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml +++ b/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml @@ -1,5 +1,5 @@ - + MS OS/2 SDK 1.02 diff --git a/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml index 89b8e018d..8783d2e5b 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 1.01 diff --git a/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml index 4a4e9948a..183439ab0 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 1.03 diff --git a/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml index 9dffff78e..0a070ec2c 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 1.04 os2museum.com diff --git a/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml index 8f669cea6..fa6ac36f6 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 2.03 os2museum.com diff --git a/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml index 751802b64..25fbf71ea 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 3.00 diff --git a/disks/pcx86/tools/other/enhdebug/manifest.xml b/disks/pcx86/tools/other/enhdebug/manifest.xml index 47c950f5a..10d9664bb 100644 --- a/disks/pcx86/tools/other/enhdebug/manifest.xml +++ b/disks/pcx86/tools/other/enhdebug/manifest.xml @@ -1,5 +1,5 @@ - + Enhanced DEBUG 1.32a diff --git a/disks/pcx86/tools/other/flickerfree/manifest.xml b/disks/pcx86/tools/other/flickerfree/manifest.xml index ec02f8a66..859dbf7e8 100644 --- a/disks/pcx86/tools/other/flickerfree/manifest.xml +++ b/disks/pcx86/tools/other/flickerfree/manifest.xml @@ -1,5 +1,5 @@ - + FlickerFree 1.0 diff --git a/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml b/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml index 5fc6fc242..de360ea17 100644 --- a/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml +++ b/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml @@ -1,5 +1,5 @@ - + PC/IX 1.0 diff --git a/disks/pcx86/unix/microport/system-v/2.3/manifest.xml b/disks/pcx86/unix/microport/system-v/2.3/manifest.xml index 7189c248d..82bf134d4 100644 --- a/disks/pcx86/unix/microport/system-v/2.3/manifest.xml +++ b/disks/pcx86/unix/microport/system-v/2.3/manifest.xml @@ -1,5 +1,5 @@ - + Microport's AT&T UNIX System V-AT 2.3 (5¨) diff --git a/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml b/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml index 946fd2d43..b5875713f 100644 --- a/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml +++ b/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml @@ -1,5 +1,5 @@ - + SCO Xenix 8086 Operating System v2.1.3 diff --git a/disks/pcx86/windows/1.00/manifest.xml b/disks/pcx86/windows/1.00/manifest.xml index 41a31d19e..30d27d2b9 100644 --- a/disks/pcx86/windows/1.00/manifest.xml +++ b/disks/pcx86/windows/1.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.00 diff --git a/disks/pcx86/windows/1.01/cga/softkbd/machine.xml b/disks/pcx86/windows/1.01/cga/softkbd/machine.xml index 112d30195..47a4394d0 100644 --- a/disks/pcx86/windows/1.01/cga/softkbd/machine.xml +++ b/disks/pcx86/windows/1.01/cga/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256K, Windows 1.01 diff --git a/disks/pcx86/windows/1.01/manifest.xml b/disks/pcx86/windows/1.01/manifest.xml index c542a11ed..d3026c009 100644 --- a/disks/pcx86/windows/1.01/manifest.xml +++ b/disks/pcx86/windows/1.01/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.01 diff --git a/disks/pcx86/windows/1.02/manifest.xml b/disks/pcx86/windows/1.02/manifest.xml index 56ba0a69c..619f99bcf 100644 --- a/disks/pcx86/windows/1.02/manifest.xml +++ b/disks/pcx86/windows/1.02/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.02 diff --git a/disks/pcx86/windows/1.03/manifest.xml b/disks/pcx86/windows/1.03/manifest.xml index 47a34af90..05f68b74e 100644 --- a/disks/pcx86/windows/1.03/manifest.xml +++ b/disks/pcx86/windows/1.03/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.03 diff --git a/disks/pcx86/windows/1.03a/manifest.xml b/disks/pcx86/windows/1.03a/manifest.xml index 464270334..f966e05fa 100644 --- a/disks/pcx86/windows/1.03a/manifest.xml +++ b/disks/pcx86/windows/1.03a/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.03a diff --git a/disks/pcx86/windows/1.03b/manifest.xml b/disks/pcx86/windows/1.03b/manifest.xml index 7f47da2f0..f87e7291f 100644 --- a/disks/pcx86/windows/1.03b/manifest.xml +++ b/disks/pcx86/windows/1.03b/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.03b diff --git a/disks/pcx86/windows/1.04/manifest.xml b/disks/pcx86/windows/1.04/manifest.xml index 034cf713d..4eb0b3ef2 100644 --- a/disks/pcx86/windows/1.04/manifest.xml +++ b/disks/pcx86/windows/1.04/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.04 os2museum.com diff --git a/disks/pcx86/windows/2.03/manifest.xml b/disks/pcx86/windows/2.03/manifest.xml index aaeda8495..bc0e8e528 100644 --- a/disks/pcx86/windows/2.03/manifest.xml +++ b/disks/pcx86/windows/2.03/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 2.03 diff --git a/disks/pcx86/windows/2.0x/manifest.xml b/disks/pcx86/windows/2.0x/manifest.xml index a244b0feb..d136672ab 100644 --- a/disks/pcx86/windows/2.0x/manifest.xml +++ b/disks/pcx86/windows/2.0x/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows/386 2.0x diff --git a/disks/pcx86/windows/2.10/manifest.xml b/disks/pcx86/windows/2.10/manifest.xml index 4ab788a71..c795f5c0b 100644 --- a/disks/pcx86/windows/2.10/manifest.xml +++ b/disks/pcx86/windows/2.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows/386 2.10 diff --git a/disks/pcx86/windows/2.11/manifest.xml b/disks/pcx86/windows/2.11/manifest.xml index 4ed69492d..5f1c820df 100644 --- a/disks/pcx86/windows/2.11/manifest.xml +++ b/disks/pcx86/windows/2.11/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 2.11 diff --git a/disks/pcx86/windows/3.00/720K/manifest.xml b/disks/pcx86/windows/3.00/720K/manifest.xml index bbf32d764..deefde1a7 100644 --- a/disks/pcx86/windows/3.00/720K/manifest.xml +++ b/disks/pcx86/windows/3.00/720K/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 3.00 diff --git a/disks/pcx86/windows/3.00/manifest.xml b/disks/pcx86/windows/3.00/manifest.xml index e714addca..43b3acebb 100644 --- a/disks/pcx86/windows/3.00/manifest.xml +++ b/disks/pcx86/windows/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 3.00 diff --git a/disks/pcx86/windows/3.10/manifest.xml b/disks/pcx86/windows/3.10/manifest.xml index f227c61fb..a49d58af6 100644 --- a/disks/pcx86/windows/3.10/manifest.xml +++ b/disks/pcx86/windows/3.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 3.10 diff --git a/disks/pcx86/windows/3.11/manifest.xml b/disks/pcx86/windows/3.11/manifest.xml index 166e86463..42a5e14d5 100644 --- a/disks/pcx86/windows/3.11/manifest.xml +++ b/disks/pcx86/windows/3.11/manifest.xml @@ -1,5 +1,5 @@ - + Windows for Workgroups 3.11 diff --git a/disks/pcx86/windows/win95/4.00.499/manifest.xml b/disks/pcx86/windows/win95/4.00.499/manifest.xml index daf732583..41e9ce964 100644 --- a/disks/pcx86/windows/win95/4.00.499/manifest.xml +++ b/disks/pcx86/windows/win95/4.00.499/manifest.xml @@ -1,5 +1,5 @@ - + Windows 95 (Build 499) diff --git a/disks/pcx86/windows/win95/4.00.950/manifest.xml b/disks/pcx86/windows/win95/4.00.950/manifest.xml index cd7ffcaa7..c3418a339 100644 --- a/disks/pcx86/windows/win95/4.00.950/manifest.xml +++ b/disks/pcx86/windows/win95/4.00.950/manifest.xml @@ -1,5 +1,5 @@ - + Windows 95 (RTM) 4.00.950 diff --git a/disks/pcx86/windows/wincomm/manifest.xml b/disks/pcx86/windows/wincomm/manifest.xml index fbbf94c0d..a632dbb66 100644 --- a/disks/pcx86/windows/wincomm/manifest.xml +++ b/disks/pcx86/windows/wincomm/manifest.xml @@ -1,5 +1,5 @@ - + Windows COMM Driver (Source) diff --git a/docs/pcx86/examples/components.xsl b/docs/pcx86/examples/components.xsl index ae4848725..e30874abc 100644 --- a/docs/pcx86/examples/components.xsl +++ b/docs/pcx86/examples/components.xsl @@ -14,12 +14,12 @@ pcjs pcx86 PCx86 - 1.36.1 + 1.36.2 www.pcjs.org #FAEBD7 - + diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index a4d38b883..354ff072b 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -835,7 +835,7 @@ break}a:{var qd,rd=null,gb=g[1];"?"==gb&&(gb=void 0);if(void 0!==gb){var Xd=0;if gb==qd){var AC=!!(a.fc&Tb[qd]);if(null===rd||rd==AC)eh&&(eh+=","),++zC%10||(eh+="\n\t"),"key"==qd&&(qd="keys"),eh+=qd}void 0===gb&&a.O("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.O((null!==rd?rd?"messages on: ":"messages off: ":"message categories:\n\t")+(eh||"none"));Fy(a)}break;case "o":var Pm=g[1],BC=g[2];if(Pm&&"?"!=Pm){var Qm=sy(a,Pm,"port #"),Rm=sy(a,BC);void 0!==Qm&&void 0!==Rm&&(Nc(a.na,Qm,1,Rm),a.O(oa(Qm)+": "+na(Rm)))}else a.O("output commands:"),a.O("\to [p] [b]\twrite byte [b] to port [p]"), a.O("warning: port accesses can affect hardware state");break;case "p":if("print"==g[0]){BB(a,b.substr(5));break}var cu="pr"==g[0]?1:0,tf=1+cu;if(a.K)a.O("step in progress");else{var mj,du=!1,Kb=Dy(a,z(a.H),a.H.ba.T);do switch(mj=!1,a.ya(Kb)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:fz(a,Kb,1);mj=!0;break;case 204:case 206:a.K=tf;fz(a,Kb,1);break;case 205:case 224:case 225:case 226:a.K=tf;fz(a,Kb,Kb.Jb?4:2);break;case 232:a.K=tf;fz(a,Kb,Kb.Jb?5:3);break;case 154:a.K= tf;fz(a,Kb,Kb.Jb?7:5);break;case 255:var eu=a.nb(Kb)&14591;if(4351==eu||6399==eu)a.K=tf,sA(a,Kb);break;case 243:case 242:fz(a,Kb,1);du=mj=!0;break;case 108:case 109:case 110:case 111:case 164:case 165:case 166:case 167:case 170:case 171:case 172:case 173:case 174:case 175:du&&(a.K=tf,fz(a,Kb,1))}while(mj);a.K?(a.td(a.B,Kb,!0),iA(a,void 0)&&Ad(a.H,void 0,void 0)||(a.oa&&a.oa.dd(),a.K=0)):DB(a,cu?"tr":"t")}break;case "r":if("reset"==b){a.oa&&a.oa.reset();break}jA(a,g);break;case "t":DB(a,g[0],g[1]); -break;case "u":kA(a,g[1],g[2],8);break;case "v":if("var"==g[0]){wB(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.36.1 ("+a.H.da+",RELEASE,NOPREFETCH"+(Pb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(Ha());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var fh;void 0!==g[3]&&(fh=+g[3]);switch(g[2]){case "int":a.H.Y.Te=fh;break;case "start":a.H.Y.wf=fh;break;case "stop":a.H.Y.Ve=fh;break;default:a.O("unknown cs option");break a}void 0!==fh&&yd(a.H);a.O("checksums "+(a.H.Z.Ke?"enabled": +break;case "u":kA(a,g[1],g[2],8);break;case "v":if("var"==g[0]){wB(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.36.2 ("+a.H.da+",RELEASE,NOPREFETCH"+(Pb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(Ha());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var fh;void 0!==g[3]&&(fh=+g[3]);switch(g[2]){case "int":a.H.Y.Te=fh;break;case "start":a.H.Y.wf=fh;break;case "stop":a.H.Y.Ve=fh;break;default:a.O("unknown cs option");break a}void 0!==fh&&yd(a.H);a.O("checksums "+(a.H.Z.Ke?"enabled": "disabled"));break;case "sp":void 0!==g[2]&&(Ed(a.H,+g[2])||a.O("warning: using 1x multiplier, previous target not reached"));a.O("target speed: "+(a.H.Y.te.toFixed(2)+"Mhz")+" ("+a.H.Y.Cd+"x)");break;default:a.O("unknown option: "+g[1])}else a.O("execution options:"),a.O("\tcs int #\tset checksum cycle interval to #"),a.O("\tcs start #\tset checksum cycle start count to #"),a.O("\tcs stop #\tset checksum cycle stop count to #"),a.O("\tsp #\t\tset speed multiplier to #");break;case "?":if(g[1]){BB(a, b.substr(1));break}var Sm="commands:",Tm;for(Tm in FB)Sm+="\n"+va(Tm,7)+FB[Tm];Jg(a)||(Sm+="\nnote: frequency/history disabled if no exec breakpoints");a.O(Sm);break;default:a.O("unknown command: "+b),d=!1}}}catch(gu){a.O("debugger error: "+(gu.stack||gu.message)),d=!1}return d}function Hy(a,b,c){b=a.Bg(b,c);for(var d in b)if(!rA(a,b[+d]))return!1;return!0} var fA={16:262144,19:524288,21:32768,22:65536,28:2048,33:134217728,51:16777216},eA=[26,28,40,42,109],FB={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",l:"load sector(s)",ln:"list nearest symbol(s)",m:"messages",mouse:"mouse action","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine", @@ -867,24 +867,24 @@ Jy,[119,R|S|W,HB|4096]],[[155,R|U|4096,V|U|4096],Jy,[98,R|U|W],[96,R|U|W],[95,R| CPL0_SS:4,CPL1_SP:6,CPL1_SS:8,CPL2_SP:10,CPL2_SS:12,TASK_IP:14,TASK_PS:16,TASK_AX:18,TASK_CX:20,TASK_DX:22,TASK_BX:24,TASK_SP:26,TASK_BP:28,TASK_SI:30,TASK_DI:32,TASK_ES:34,TASK_CS:36,TASK_SS:38,TASK_DS:40,TASK_LDT:42},Ty={PREV_TSS:0,CPL0_ESP:4,CPL0_SS:8,CPL1_ESP:12,CPL1_SS:16,CPL2_ESP:20,CPL2_SS:24,TASK_CR3:28,TASK_EIP:32,TASK_PS:36,TASK_EAX:40,TASK_ECX:44,TASK_EDX:48,TASK_EBX:52,TASK_ESP:56,TASK_EBP:60,TASK_ESI:64,TASK_EDI:68,TASK_ES:72,TASK_CS:76,TASK_SS:80,TASK_DS:84,TASK_FS:88,TASK_GS:92,TASK_LDT:96, TASK_IOPM:100};Xa(function(){for(var a=vb(document,"pcx86","debugger"),b=0;b=this.D||(this.D=1);this.F=0;this.pa=a.busWidth||a.buswidth;this.A=ZB;this.P=null;this.L=this.ha=!1;this.ra=ud(this,"url")||"";this.va=(Math.random()+.1).toString(36).substr(2,12);this.B=$B(this);if(this.H=tb("CPU",this.id)){this.ca=tb("Debugger",this.id);this.C=[];for(b=null;b=Vb(this,"Video",b);)this.C.push(b);this.na=new hc({id:this.ee+".bus", -busWidth:this.pa},this.H,this.ca);var e,f=xb(this.id);this.K=(this.J=tb("Panel",this.id))&&this.J.ma.print;this.ka=this.Da;this.la=this.print;this.qa=this.O;this.K&&(this.ka=this.J.Da,this.la=this.J.print,this.qa=this.J.O);for(b=0;b\nLicense: GPL version 3 or later "); -for(b=0;b\nLicense: GPL version 3 or later "); +for(b=0;bZB){if(d.load(this.P)){this.G=new Wf(this,"1.36.1",jC);this.G.load()&&(a!=iC&&kC(this,d)&&(a=lC),mC(this.G));this.G.set(hC,za("Y-m-d H:i:s"));nC(this.G);var e=this.A&&!this.L;if(a==iC||pb("Click OK to restore the previous PCx86 machine state.")){if(c=gC(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +l.bf=function(a,b){for(var c=this,d=xb(this.id),e=0;e<=d.length;e++){var f=eZB){if(d.load(this.P)){this.G=new Wf(this,"1.36.2",jC);this.G.load()&&(a!=iC&&kC(this,d)&&(a=lC),mC(this.G));this.G.set(hC,za("Y-m-d H:i:s"));nC(this.G);var e=this.A&&!this.L;if(a==iC||pb("Click OK to restore the previous PCx86 machine state.")){if(c=gC(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= g?(this.Da("Error: "+g),"unable to verify user"==g&&(La(oC,""),this.B=null)):this.O(f+": "+g),mC(d),d.load()?(c=gC(d),e=!0):c=!1))}e&&eC(this,c?d:null)}else a==lC&&d.clear()}else eC(this);delete this.P;delete this.V}e=xb(this.id);for(f=0;fa[1];a=a[2];if(d=this.ma.power)d.textContent="Shutdown";this.Z.bc=!0;this.H&&(pC(this, -this.H,b,c,a),this.H.je());this.fa&&(kC(this,b),b.clear());!c&&this.G&&(this.G.clear(),delete this.G);this.F=0;zb(this.ee,ud(this,"autoScript"))};function kC(a,b){if(!a.Z.Ae){if(pb("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.36.1"};d.url=a.ra;d.user=c;d.type="bug";d.data=b;Fa("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1} -function EB(a,b,c){var d,e="none";if(a.F)return null;a.F--;var f=new Wf(a,"1.36.1"),g=new Wf(a,"1.36.1",fC),h=za("Y-m-d H:i:s");g.set(hC,h);f.set(hC,h);f.set(qC,"1.36.1");f.set(rC,window?window.location.href:null);f.set(sC,Ha());a.H&&a.H.$b&&(d=a.H.$b(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.Z.bc=!1,!1===d&&(e=null)));for(var h=xb(a.id),k=0;k/g.exec(a)){var e=d[2];b("Loading "+e+"...");Fa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/gi;m=p.exec(f);)k=0>k.toLowerCase().indexOf(m[1].toLowerCase())?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+ "> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);JC(a,b,c)}})}else c(a,null)} function KC(a,b,c,d){function e(a){if(void 0===h){var b=g&&vb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ta(a))}function f(a){e("Error: "+a);k&&(--GC||bb(!0));k=!1}var g,h,k=!0;GC++;ob[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=m:v.appendChild(document.createTextNode(m));p.appendChild(v)}c|| -(c="/versions/pcx86/1.36.1/components.xsl");m=function(d,h){h?HC(c,null,null,!1,e,function(d,k){k?(nb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--GC||bb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--GC||bb(!0)):f("invalid machine element: "+ +(c="/versions/pcx86/1.36.2/components.xsl");m=function(d,h){h?HC(c,null,null,!1,e,function(d,k){k?(nb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--GC||bb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--GC||bb(!0)):f("invalid machine element: "+ a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?HC(b,a,d,!0,e,m):IC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function LC(a,b,c,d){bb(!1);return KC(a,b,c,d)}window.embedPC=LC;window.embedPCx86=LC; window.commandMachine=function(a,b,c,d,e,f){if("script"==e)return zb(c,f)?(b&&(a.disabled=!0),!0):!1;if(d){var g=tb(d,c+".machine");if(g){var h=g.exports;if(h&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1}}console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=bb;window.sendEvent=fb; function MC(a,b,c,d){if(!c&&b){d.push(b);a=ob[d[0]];b=null;for(var e in a)if(sa(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?Fa(b,null,!0,function(a,b){NC(b,d)}):NC(null,d)}else ab("Error ("+c+") requesting "+a)} -function NC(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=ob[f],k={},m;for(m in h){var p=h[m],v=ra(m);if("xml"==v){for(v=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=v.exec(h[m]);){var u=d[2];u&&(h[u]||(p=p.replace(d[0],"")))}d=m=pa(m)}else"xsl"==v&&(e=m=pa(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, -"©"),a=Ta(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
\n')+"...\n",a=a+(' +
+ + + + + + + + + + + + + +
+ + + + js + , + + +
+
+ + + + + + + + + + + + + , + + + + + + + + + + + + .machine + . + + + + + + + + + + + + + + border:1px solid black;border-radius:10px; + border:; + + + + + + left:; + + + + + + top:; + + + + + + + + width:; + width:auto;max-width:; + + + + + + + + height:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto; + position:; + position:absolute; + + + + + overflow:auto;width:100%; + + background-color:; + background-color:; + + + + + - -component + +
+ + + + + + +
+ +
+
+ +
+ +
+
+ +
+ + +
[XML]
+ +
+ +
+
+
+
+ + + + + text-align:center; + + + +

+
+ + +
+
+ + + + type:'' + + + binding:'' + + + + border:1px solid black; + border:; + + + + + + width:; + + + + + + height:; + + + + + + left:; + + + + + + top:; + + + + + + position:absolute; + float:left; + float:right; + margin:0 auto; + ; + float:left; + + + + + + + + +
+ + + font-size:; + + + + + -label + + + width:; + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+
+
+ +
+
+ +

+
+ +
+
+
+ + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + null + + + + + + ,autoStart: + + + + + + + + + + + + + + + 600 + + + + + keyboard + ,model: + + + + + + + + + + + + + + + false + + + + + serial + ,demo: + + + + + + + + + + + + + + disk + + + + + + + + + + + + + + + 0 + + + + + + + + + + + rom + ,size:,image:'' + + + + + + + + + + + + + + + 0 + + + + + ram + ,size: + + + + + + + + + + + + + + + 600 + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 32 + + + + + + 32 + + + + + + + 0 + + + + + + + 0 + + + + + + + + + + + + + + null + + + + + video + ,model:,screenWidth:,screenHeight:,charCols:,charRows:,charWidth:,charHeight:,charSet:'',screenColor:'',smoothing: + + + + + + + + + + + + + + debugger + + + + + + + + + + + + + + panel + + + + + + + + + + + + + [ + {} + , + ] + + + + computer + ,modules: + + + + + type:'',refID:'',start:,end: + + + diff --git a/versions/c1pjs/1.36.2/document.css b/versions/c1pjs/1.36.2/document.css new file mode 100644 index 000000000..7072b406e --- /dev/null +++ b/versions/c1pjs/1.36.2/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/c1pjs/1.36.2/document.xsl b/versions/c1pjs/1.36.2/document.xsl new file mode 100644 index 000000000..f740ae728 --- /dev/null +++ b/versions/c1pjs/1.36.2/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

+
+ + + + + + + +

+
+ +

+
+
+
+ + + + + + +
+
+ + +
+ +   + + +
+
+ +
+
+ + + + + + + + + + + + + + + + +

+
+ + +

+
+ + +

+
+ + +
+
+ + +
+
+ + + + + + + + + + + + + + +
+
+ + +
+
+ + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/c1pjs/1.36.2/machine.xsl b/versions/c1pjs/1.36.2/machine.xsl new file mode 100644 index 000000000..cf0d8038c --- /dev/null +++ b/versions/c1pjs/1.36.2/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/c1pjs/1.36.2/manifest.xsl b/versions/c1pjs/1.36.2/manifest.xsl new file mode 100644 index 000000000..56a4cb7a0 --- /dev/null +++ b/versions/c1pjs/1.36.2/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/c1pjs/1.36.2/outline.xsl b/versions/c1pjs/1.36.2/outline.xsl new file mode 100644 index 000000000..4fc8d4506 --- /dev/null +++ b/versions/c1pjs/1.36.2/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.36.2/common.css b/versions/pc8080/1.36.2/common.css new file mode 100644 index 000000000..a569abc64 --- /dev/null +++ b/versions/pc8080/1.36.2/common.css @@ -0,0 +1,278 @@ +@CHARSET "UTF-8"; +/** + @author Jeff Parsons (@jeffpar) + @website http://www.pcjs.org/ + @created 2013-05-05 + @modified 2014-02-23 + @license http://www.gnu.org/licenses/gpl.html + */ +body { + margin: 0; + background: #202020; +} +h1, h2 { + margin-top: 0; + color: #cccccc; +} +h1, h2, h3, h4 { + word-wrap: break-word; +} + +h4 a { + color: #cccccc !important; +} +p { + line-height: 1.5em; +} +img { + max-width: 100%; +} +a img { + vertical-align: bottom; +} +pre, code { + color: #000000; + background-color: #cccccc; + font-family: Monaco, Consolas, "Lucida Console", monospace; + font-size: 12px; +} +pre { + margin: 1em 2em; + padding: 1em; + border-radius: 5px; + overflow: auto; +} +code { + padding: 1px; +} +pre a, code a { + color: #006400 !important; +} +.common { + width: 100%; + margin: 0 auto; + color: #cccccc; +} +.common a { + + color: #7fc07f; + text-decoration: none; +} +.common hr { + border-color: #808080; +} +.common a:hover { + text-decoration: underline; +} +.common, .machine { + font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; + font-size: 15px; +} +.machine { + + overflow: hidden; +} +.c1pjs { + overflow: visible; +} +.machine-placeholder { + text-align: center; + font-weight: bold; +} +.machine-floating { + position: relative; + z-index: auto; + background-color: transparent; + padding-right: 0; +} +.machine-sticky { + position: fixed !important; + z-index: 1 !important; + background-color: #404040 !important; + padding-right: 16px !important; + top: 0 !important; +} +.common-top { + background: #202020; + font-size: small; +} +.common-top-left { + float: left; + width: 60%; +} +.common-top-left ul { + line-height: 1.5em; + list-style-type: none; + margin: 0; + padding: 1em 1em 1em 9px; + overflow: hidden; +} +.common-top-left ul li { + display: block; + float: left; +} +.common-top-left ul li a { + border-right: 1px solid #6f6f6f; + padding: 2px 6px 2px 6px; +} +.common-top-left ul li:last-child a { + border-right: none; +} +.common-top-right { + float: right; + width: 40%; +} +.common-top-right p { + float: right; + margin: 0; + padding: 1em; +} +.common-middle { + clear: both; + padding: 1px 1em 1px 1em; + background: #404040; +} +.common-sidebar { + float: left; + font-size: small; + width: 140px; + padding-bottom: 20px; + overflow: hidden; + white-space: nowrap; + word-wrap: break-word; +} +.common-list { + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; +} +.common-list li { + + padding-bottom: 7px; +} +.common-list-data { + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; +} +.common-list-data li { + line-height: 1.5em; +} +.common-list-data-items, .common-list-data-subitems { + font-size: x-small; + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} +.common-list-data-items li, .common-list-data-subitems li { + padding-bottom: 0; +} +.common-main { + margin-left: 150px; + +} +.common-main blockquote { + text-align: justify; +} +.common-image-gallery { + margin: 0 auto; + text-align: center; +} +.common-image-gallery:after { + content: ''; + display: block; +} +.common-image-frame { + display: inline-block; + margin: 8px; + text-align: center; +} +.common-image-link { + padding: 5px; + border: 1px solid black; + border-radius: 5px; + background-color: #FAEBD7; +} +.common-image-label { + font-size: x-small; +} +.common-bottom { + clear: both; + padding-top: 1em; +} +.common-bottom:after { + content: ''; + display: block; + clear: both; +} +.common-reference { + float: left; + font-size: x-small; +} +.common-reference a { + text-decoration: none; +} +.common-copyright { + float: right; + font-size: x-small; +} +.common-copyright a { + text-decoration: none; +} +.md-list { +} +.md-list li { + line-height: 1.5em; + margin-bottom: 1em; +} +.md-list li p { + padding-left: 2em; +} +.md-list-compact { +} +.md-list-compact li { + margin-bottom: 0; +} +.md-list-none { + list-style-type: none; + padding-left: 2em; +} +.md-list-none li { + margin-bottom: 0; +} +@media screen and (max-width: 900px) { + + .common-sidebar { + width: 100%; + white-space: normal; + } + .common-list { + padding-left: 0; + } + .common-list-data { + padding-left: 0; + } + .common-sidebar h4, .common-list li, .common-list-data li, .common-list-data-items li { + width: 130px; + float: left; + overflow: hidden; + vertical-align: top; + padding-right: 1em; + margin-top: 0; + } + .common-list-data-subitems { + display: none; + } + .common-main { + clear: both; + margin-left: 0; + padding-left: 0; + padding-right: 0; + } + .md-list-none { + padding-left: 1em; + } +} diff --git a/versions/pc8080/1.36.2/common.xsl b/versions/pc8080/1.36.2/common.xsl new file mode 100644 index 000000000..307183280 --- /dev/null +++ b/versions/pc8080/1.36.2/common.xsl @@ -0,0 +1,58 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +

    Powered by JavaScript, Vanilla JS, and GitHub

    +
    +
    +
    + + +
    +

    + +
    +
    + +
    diff --git a/versions/pc8080/1.36.2/components.css b/versions/pc8080/1.36.2/components.css new file mode 100644 index 000000000..101b964a4 --- /dev/null +++ b/versions/pc8080/1.36.2/components.css @@ -0,0 +1,262 @@ +@CHARSET "UTF-8"; + + +*:not(input,textarea) { + -webkit-user-select: none; +} +.pcjs-embed { +} +.pcjs-embed:after { + clear:both; +} +.pcjs-machine { +} +.pcjs-name, .pcjs-menu { + clear: both; + font-weight: bold; + padding-bottom: 4px; +} +.pcjs-menu { + float: left; +} +.pcjs-canvas { + width: 100%; + height: auto; +} +.pcjs-container { + color: #000000; + position: relative; +} +.pcjs-label { + font-size: small; + line-height: 20px; + vertical-align: middle; + float: left; + font-family: Monaco, "Lucida Console", monospace; +} +.pcjs-controls textarea { + font-family: Monaco, "Lucida Console", monospace; + font-size: x-small; +} +.pcjs-fieldset { + border: none; + margin: 0; + padding: 0; +} +.pcjs-flag { + font-family: Monaco, "Lucida Console", monospace; + font-size: small; + text-align: center; + line-height: 20px; + vertical-align: middle; +} +.pcjs-progress { + height: 20px; + width: 200px; + margin-top: 8px; + border: 1px solid black; + position: relative; +} +.pcjs-progress-bar { + height: 20px; + width: 0; + background-color: gold; + position: absolute; + top: 0; +} +.pcjs-progress-text { + height: 20px; + width: 200px; + font-size: small; + line-height: 20px; + text-align: center; + position: absolute; + top: 0; + z-index: 1; +} +.pcjs-register { + font-family: Monaco, "Lucida Console", monospace; + font-size: small; + text-align: center; + line-height: 20px; + vertical-align: middle; + border: 1px solid black; +} +.pcjs-switches { + float: left; +} +.pcjs-bitBucket { + float: left; + width: 19px; + height: 38px; +} +.pcjs-bitCell { + float: left; + width: 19px; + height: 19px; + margin-right: -1px; + margin-bottom: -1px; + border: 1px solid black; + text-align: center; + line-height: 19px; +} +.pcjs-bitCellLeft { + border-left: 1px solid black; +} +.pcjs-bitLabel { + font-size: xx-small; + text-align: center; +} +.pcjs-description, .pcjs-status { + font-size: x-small; + line-height: 2.0em; +} +.pcjs-key { + border: 1px solid black; + font-size: x-small; + text-align: center; + position: absolute; + height: 34px; + line-height: 34px; + background-color: #ffffff; +} +.pcjs-panel-group { + color: #ffffff; + background-color: #404040; +} +.pcjs-triplet { + padding: 1px; +} +.pcjs-ledlbl { + text-align: center; + font-size: 40%; + background-color: #000000; +} +.pcjs-ledlbl0 { + text-align: right; + font-size: 50%; + background-color: #8d4076; +} +.pcjs-ledlbl1 { + text-align: right; + font-size: 50%; + background-color: #d83662; +} +.pcjs-ledpad { + text-align: center; + font-size: x-small; + line-height: 32px; + background-color: #000000; + border-bottom-left-radius: 20%; + border-bottom-right-radius: 20%; +} +.pcjs-led { + float: left; + width: 8px; + height: 8px; + margin: 4px; + border: 1px solid black; + text-align: center; + vertical-align: middle; + background-color: #000000; +} +.pcjs-rled { + float: left; + width: 8px; + height: 8px; + margin: 4px; + border: 1px solid black; + border-radius: 50%; + text-align: center; + vertical-align: middle; + background-color: #ff0000; + max-width: 50%; + max-height: 50%; +} +.pcjs-swlbl { + text-align: center; + font-size: 40%; + line-height: 16px; + background-color: #000000; + border-top-left-radius: 20%; + border-top-right-radius: 20%; +} +.pcjs-swpad { + height: 32px; + background-color: #000000; +} +.pcjs-switch { + height: 10px; + width: 28px; + margin-top: 0; + max-width: 90%; + background-color: #00ff00; +} +.pcjs-screen { + clear: both; + height: auto; + position: relative; + line-height: 0; +} +.pcjs-screen textarea { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + border: 0; + padding: 0; + resize: none; + color: white; + font-family: Monaco, "Lucida Console", monospace; + font-size: medium; + background: rgba(0, 0, 0, .5); + opacity: 0; + line-height: 0; +} +.pcjs-reference { + float: left; + font-size: x-small; +} +.pcjs-reference a { + text-decoration: none; +} +.pcjs-copyright { + float: right; + font-size: x-small; +} +.pcjs-copyright a { + text-decoration: none; +} +@media screen and (max-width: 800px) { + .pcjs-textarea { + width: 100% !important; + } + .pcjs-registers { + width: 100% !important; + max-width: none !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + .pdp11-device { + width: 98% !important; + max-width: none !important; + margin-left: 8px !important; + padding-left: 0 !important; + padding-right: 0 !important; + } +} +@media screen and (min-width: 1200px) { + .machine-left { + max-width: 48%; + float: left; + } + .machine-right { + max-width: 48%; + float: left; + margin-left: 30px; + } + .machine-right + * { + clear: both; + } +} diff --git a/versions/pc8080/1.36.2/components.xsl b/versions/pc8080/1.36.2/components.xsl new file mode 100644 index 000000000..2733623ae --- /dev/null +++ b/versions/pc8080/1.36.2/components.xsl @@ -0,0 +1,1402 @@ + + + +]> + + + + + + + + pc + pcjs + pc8080 + PC8080 + 1.36.2 + www.pcjs.org + #FAEBD7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + + + + + + js + + + +
    + + + + + + + + + + js + + + "" + + + + + +
    +
    + + + + + + + + + + + + + + + , + + + + + + + + + + + + + .machine + . + . + + + + + + + + + + + + + + + + + + + + ,comment:'' + + + + + + border:1px solid black;border-radius:15px; + border:; + + + + + + left:; + + + + + + top:; + + + + + + + + width:; + width:;max-width:; + width:auto;max-width:; + + + + + + + + height:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto;clear:both; + position:; + position:relative; + + + + + overflow:auto;width:100%; + + background-color:; + background-color:; + + + + + - -component + +
    + + + + + + +
    + + + + + + + + --object -screen + + +
    +
    + +
    + +
    +
    + + + + +
    + + +
    [XML]
    + +
    + + +
    +
    +
    +
    + + + + + text-align:center; + + + +

    +
    + + +
    +
    + + + + + + +
    +
    + + + + type:'' + + + binding:'' + + + value:'' + + + + border:1px solid black; + border:; + + + + + + width:; + + + + + + height:; + + + + + + left:; + + + + + + top:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto; + clear:both; + position:; + position:relative; + text-align:; + float:left; + + + + + + + + + + + + + + + + + + +
    + + + font-size:; + + + + + -label + + + + width:; + width:; + + + + + + + + text-align:right; + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + ; + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8088 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + + null + + + + + + 0 + + + + + + + -1 + + + + + + + -1 + + + + + + + -1 + + + + + + ,model:'',stepping:'',fpu:,cycles:,multiplier:,autoStart:,addrReset:,csStart:,csInterval:,csStop: + + + + + + + + + + + + + + + 8087 + + + + + + + + + + + + ,model:'',stepping:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + true + + + + + + + false + + + + + + {} + + + + + + + + + + + + + + + + + + + chipset + ,model:'',scaleTimers:,sw1:'',sw2:'',sound:,floppies:,monitor:'',dateRTC:'' + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + device + ,type:'',baudReceive:,baudTransmit:,autoMount:'' + + + + + + + + + + + + + + + + + + + + keyboard + ,model:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + parallel + ,adapter:,binding:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + 0 + + + + + + + false + + + + + serial + ,adapter:,baudReceive:,baudTransmit:,binding:'',tabSize:,charBOL:,upperCase: + + + + + + + + + + + + + + + + + + + + + 0.5 + + + + + mouse + ,serial:'',scaleMouse: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdc + ,autoMount:'',sortBy:'' + + + + + + + + + + + + + + + + + + + + + xt + + + + + hdc + ,drives:'',type:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + null + + + + + + + + + + + + + + + + + rom + ,addr:,size:,alias:,file:'',notify:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + null + + + + + + null + + + + + + true + + + + + ram + ,addr:,size:,file:'',load:,exec:,test: + + + + + + + + + + + + + + + + + + + + + null + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 0 + + + + + + 0 + + + + + + false + + + + + + 1bpp + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + false + + + + + + 1 + + + + + + 1 + + + + + + + 80 + + + + + + + 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + 0 + + + + + + null + + + + + + 0 + + + + + + 60 + + + + + + 0.5 + + + + + video + ,model:'',mode:,screenWidth:,screenHeight:,screenColor:'',screenRotate:,bufferAddr:,bufferRAM:,bufferFormat:'',bufferCols:,bufferRows:,bufferBits:,bufferLeft:,bufferRotate:,memory:,switches:'',scale:,cellWidth:,cellHeight:,charCols:,charRows:,fontROM:'',fontColor:'',touchScreen:'',autoLock:,aspectRatio:,smoothing:,interruptRate:,refreshRate:,flicker: + + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + + + debugger + ,base:,commands:'',messages:'' + + + + + + + + + + + + + + panel + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + computer + ,autoPower:,busWidth:,resume:'',state:'' + + + + + + + +
    diff --git a/versions/pc8080/1.36.2/document.css b/versions/pc8080/1.36.2/document.css new file mode 100644 index 000000000..7072b406e --- /dev/null +++ b/versions/pc8080/1.36.2/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/pc8080/1.36.2/document.xsl b/versions/pc8080/1.36.2/document.xsl new file mode 100644 index 000000000..96ab98b3c --- /dev/null +++ b/versions/pc8080/1.36.2/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

    +
    + + + + + + + +

    +
    + +

    +
    +
    +
    + + + + + + +
    +
    + + +
    + +   + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/pc8080/1.36.2/machine.xsl b/versions/pc8080/1.36.2/machine.xsl new file mode 100644 index 000000000..7a37550a3 --- /dev/null +++ b/versions/pc8080/1.36.2/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.36.2/manifest.xsl b/versions/pc8080/1.36.2/manifest.xsl new file mode 100644 index 000000000..44cc90d9b --- /dev/null +++ b/versions/pc8080/1.36.2/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/pc8080/1.36.2/outline.xsl b/versions/pc8080/1.36.2/outline.xsl new file mode 100644 index 000000000..825d1ee4f --- /dev/null +++ b/versions/pc8080/1.36.2/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.36.2/pc8080-dbg.js b/versions/pc8080/1.36.2/pc8080-dbg.js new file mode 100644 index 000000000..266c241be --- /dev/null +++ b/versions/pc8080/1.36.2/pc8080-dbg.js @@ -0,0 +1,312 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpustate.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpuops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/chipset.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2017 +*/ +var l;function aa(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} +for(var ca="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},da="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this,ea=["Math","trunc"],fa=0;faa?-b:b};ja!=ia&&null!=ja&&ca(da,ha,{configurable:!0,writable:!0,value:ja}); +var m={De:0,Ge:1,He:2,Ie:3,Je:4,Ke:5,Le:6,Me:7,Ne:8,Oe:9,Pe:10,Qe:11,Re:12,Se:13,Te:14,Ue:15,Ve:16,We:17,Xe:18,Ye:19,Ze:20,$e:21,af:22,bf:23,cf:24,df:25,ef:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Za:65,Ub:66,Vb:67,Db:68,E:69,Yb:70,Zb:71,$b:72,ac:73,bc:74,cc:75,Fb:76,gc:77,hc:78,lc:79,mc:80,Q:81,nc:82,pc:83,qc:84,rc:85,tc:86,uc:87, +wc:88,xc:89,ub:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,yc:97,vd:98,yd:99,d:100,e:101,Cd:102,Ed:103,Fd:104,Gd:105,Pd:106,k:107,Qd:108,Sd:109,n:110,Td:111,p:112,q:113,r:114,pe:115,t:116,re:117,se:118,te:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,ff:127},ka={59:186,61:187,173:189,224:91}; +function la(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return ma(a,16,b,c?"0x":"")}function na(a){return n(a,2,!0)} +function q(a){return n(a,4,!0)}function oa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return va[a]})}function wa(a,b){return(a+" ").slice(0,b)} +function xa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var va={"&":"&","<":"<",">":">",'"':""","'":"'"},Ca={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"}; +function Ea(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0f;f++){var g;switch(g="Y-m-d H:i:s".charAt(f)){case "a":b+=12>c?"am":"pm";break;case "d":b+=("0"+d).slice(-2);break;case "D":b+=Ga[a.getDay()].substr(0,3);break;case "F":b+=Ha[e-1];break;case "g":b+=c?12c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;cb.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Pa=g.load;d.Ha=g.exec;if(e=g.bytes)d.ma=e;else if(e=g.words)for(d.ma=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ma=Array(4*e.length),f=c=0;c>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;else(e=g.data)?d.Qf=e:d.ma=g;d.ma&&(d.ma.length?1==d.ma.length&&(r(d.ma[0]),d=null):(r("Empty resource: "+a),d=null));d.ra=g.symbols}catch(h){r("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.Gb=this.id:(this.ab=this.id.substr(0,a),this.Gb=this.id.substr(a+1));this.D={ready:!1,jb:!1,Hb:!1,Rf:!1,ja:!1,Qb:!1,error:!1};this.xb=null;this.D.error=!1;this.ha=c||0;this.K=this.w=this.I=this.R=null;kb.push(this)} +function lb(a,b,c){mb[a]&&b&&(mb[a][b]=c)}function nb(){return Date.now()||+new Date}function fb(a,b,c){b||r((c?c+": ":"")+a)}function r(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a,b){a.value+=b;b=a.value;8192d?c+=a+"\n":c=c.substr(0,d)+(a+ +".")+c.substr(d+a.length);8192>1)+2;10>this.g&&(this.g=10);15>2;this.j=this.u-1;this.L=this.N/this.u|0;this.H=this.L-1;this.A=[];this.B=[];this.F=this.G=!1;this.S=[];this.T=[];a=new A;Vb(a,this.K);this.b=Array(this.L);for(b=0;b>>a.g;0f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.nb+=h.J-e,h.J=e,!0;if(e>=h.J+h.nb){p=h.size-(e-k);p>f&&(p=f);h.nb=e-h.J+p;e=k+a.u;f-=p;g++;continue}}return Xb(Yb,e,f)}e=new A(e,p,a.u,d);Vb(e,a.K,h);a.b[g++]=e;e=k+a.u;f-=p}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Zb[d]+" at "+q(b)),!0):Xb($b,b,c)} +function ac(a,b){return a.b[(b&a.C)>>>a.g].mb(b&a.j,b)}function bc(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Hc(c,b):a.b[d++].Wa(c,b)|a.b[d&a.H].Wa(0,b+1)<<8}function cc(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Mb(c,b):a.b[d++].mb(c,b)|a.b[d&a.H].mb(0,b+1)<<8}function dc(a,b,c){a.b[(b&a.C)>>>a.g].ob(b&a.j,c&255,b)}function ec(a,b,c){var d=b&a.j,e=(b&a.C)>>>a.g;d!=a.j?a.b[e].Kc(d,c&65535,b):(a.b[e++].Ya(d,c&255,b),a.b[e&a.H].Ya(0,c>>8&255,b+1))} +function fc(a){for(var b=0,c=[],d=0;d>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,d);a.K&&a.G!=g[1]&&nc(a.K,b,k)}else a.K&&(Lb(a.K,a,b,k,d),a.G&&nc(a.K,b,k));f+=h<<3;b+=h;e-=h}}function Xb(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Yb=1,$b=2,xc;if(Mb){var yc=new ArrayBuffer(2);(new DataView(yc)).setUint16(0,256,!0);xc=256===(new Uint16Array(yc))[0]}else xc=!1;var zc=xc; +function A(a,b,c,d){this.id=Ac+=2;this.b=null;this.J=a;this.nb=b;this.size=c||0;this.type=d||Bc;this.w=d==Cc;Vb(this);this.Da=this.Dc=!1;if(c)if(Mb)this.R=new ArrayBuffer(c),this.j=new DataView(this.R,0,c),this.g=new Uint8Array(this.R,0,c),this.u=new Uint16Array(this.R,0,c>>1),this.b=new Int32Array(this.R,0,c>>2),Dc(this,zc?Ec:Fc);else{this.b=Array(c>>2);for(a=0;a>2),b=0;b>8,c)};l.je=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};l.ne=function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8};l.xe=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<>8);this.Da=!0};l.he=function(a,b){if(this.K&&null!=this.J){var c=this.K;Mc(c,this.J+a,1,c.M)&&c.ea(!0)}return this.mb(a,b)};l.le=function(a,b){if(this.K&&null!=this.J){var c=this.K;Mc(c,this.J+a,2,c.M)&&c.ea(!0)}return this.Mb(a,b)}; +l.ve=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;Mc(d,this.J+a,1,d.B)&&d.ea(!0)}this.w?this.pb(0,b):this.ob(a,b,c)};l.ze=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;Mc(d,this.J+a,2,d.B)&&d.ea(!0)}this.w?this.pb(0,b):this.Sb(a,b,c)};l.ge=function(a){return this.g[a]};l.ie=function(a){return this.g[a]};l.ke=function(a){return this.j.getUint16(a,!0)};l.me=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.u[a>>1]};l.ue=function(a,b){this.g[a]=b;this.Da=!0}; +l.we=function(a,b){this.g[a]=b;this.Da=!0};l.ye=function(a,b){this.j.setUint16(a,b,!0);this.Da=!0};l.Ae=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.u[a>>1]=b;this.Da=!0};var Bc=0,Cc=2,Zb=["NONE","RAM","ROM","VID","H/W"],Ac=0,Hc=[],Gc=[A.prototype.je,A.prototype.xe,A.prototype.ne,A.prototype.Be],Kc=[A.prototype.he,A.prototype.ve,A.prototype.le,A.prototype.ze];if(Mb)var Fc=[A.prototype.ge,A.prototype.ue,A.prototype.ke,A.prototype.ye],Ec=[A.prototype.ie,A.prototype.we,A.prototype.me,A.prototype.Ae]; +function Nc(a,b){u.call(this,"CPU",a,1);var c=a.multiplier||1;this.za=a.cycles||b;this.U=c;this.Sa=Math.round(this.za/1E4)/100;this.Z=this.Sa*this.U;this.D.ka=!1;this.D.Pb=!1;this.D.ib=a.autoStart;this.D.Bc=!1;this.D.Va=!1;this.wa=this.oa=0;this.ya=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Bb=this.rb.bind(this);Gb(this)}aa(Nc,u);l=Nc.prototype; +l.Fa=function(a,b,c,d){this.R=a;this.I=b;this.K=d;for(b=0;b=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Wc(a)&&(a.na=a.sa=-1,Rc(a),a.ea(),c=!0);c&&a.i(Wc(a)+" cycles: checksum="+n(a.wa))}} +l.da=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.D.ja)a=!0;else{var b=null,c,h=ub(a.id);for(c=0;ca.Y/a.Z?b=1:d=!0;a.U=b;b=a.Sa*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.R&&a.R.Xa()}Yc(a,a.X);a.X=0;a.V=nb();a.ba=0;Zc(a);return d}function ad(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function bd(a,b,c){0<=b&&ba.T[b][0]&&(c=a.za*a.U/1E3*c|0,a.D.ka&&(c+=cd(a)),a.T[b][0]=c)}function cd(a,b){var c=a.fa-=a.b;a.b=0;b&&(a.fa=0);return c} +l.rb=function(a){if(Ib(this,!0)){if(!this.D.ka){Xc(this);this.R&&this.R.start(this.V,Wc(this));this.D.ka=!0;this.D.Pb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(dd(this.R,!0),a&&this.R.Xa(!0))}this.Ua>=this.za&&Zc(this,!0);this.Ca=0;this.La=nb();this.ba&&(a=this.La-this.ba,a>this.gb&&(this.V+=a,this.V>this.La&&(this.V=this.La)));try{do{for(var c,d=this.D.Va?1:this.Ma,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Cb(c);c=cd(this,!0); +this.Ca+=c;this.X+=c;Vc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ta-=c;if(0>=this.ta){this.ta+=this.Ma;++this.hb>=qd&&(this.R&&dd(this.R),this.hb=0);break}}while(this.D.ka)}catch(k){this.ea();Uc(this);this.R&&this.R.stop(nb(),Wc(this));Ib(this,!1);Eb(this,k.stack||k.message);return}c=setTimeout;d=this.Bb;this.ba=nb();e=this.gb;this.Ca&&(e=Math.round(e*this.Ca/this.Ma));e-=this.ba-this.La;if(f=this.ba-this.V)this.Y=Math.round(this.X/ +(10*f))/100,864E5<=f&&(this.la=0,Xc(this));if(0>e||this.Ye&&(this.V-=e),e=0;this.Ua+=this.Ca;this.ba+=e;c(d,e)}else Uc(this),this.R&&this.R.stop(nb(),Wc(this))};l.Cb=function(){return 0};l.ea=function(a){Hb(this,!0);cd(this);Yc(this,this.X);this.X=0;if(this.D.ka){this.D.ka=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.D.complete=a};function Uc(a,b){if(a.R){for(var c=a.R,d=0;d>8&255;a.A=b&255}function Cd(a){return a.B<<8|a.C}function Dd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.F<<8|a.G} +function Ed(a,b){a.F=b>>8&255;a.G=b&255}function B(a,b){a.j=b&65535}function Fd(a){return a.H&256?1:0}function Gd(a,b){a.H=a.H&255|b}function Hd(a){return Nb[a.L&255]?4:0}function Id(a){return(a.L^a.O)&16?16:0}function Jd(a){return a.H&255?0:64}function Kd(a){return a.L&128?128:0}function yd(a){return a.N&-214|Kd(a)|Jd(a)|Id(a)|Hd(a)|Fd(a)}function wd(a,b){a.H=a.L=a.O=0;b&1&&(a.H|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.H|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2} +function Ld(a,b){a.O=a.g^b;return a.L=(a.H=a.g+b)&255}function Md(a,b){a.O=a.g^b;return a.L=(a.H=a.g+b+(a.H&256?1:0))&255}function Nd(a,b){a.H=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.H}function Od(a,b){a.O=b^255;b=a.L=b+255&255;a.H=a.H&-256|b;return b}function Pd(a,b){a.O=b;b=a.L=b+1&255;a.H=a.H&-256|b;return b}function Qd(a,b){return a.L=a.H=a.O=a.g|b}function Rd(a,b){b^=255;a.O=a.g^b;return a.L=(a.H=a.g+b+1^256)&255} +function Sd(a,b){b^=255;a.O=a.g^b;return a.L=(a.H=a.g+b+(a.H&256?0:1)^256)&255}function Td(a,b){return a.L=a.H=a.O=a.g^b}function E(a,b){a=a.I;return a.b[(b&a.C)>>>a.g].Wa(b&a.j,b)}function Ud(a,b,c){a=a.I;a.b[(b&a.C)>>>a.g].Ya(b&a.j,c&255,b)}function F(a){var b=E(a,a.j);B(a,a.j+1);return b}function G(a){var b=bc(a.I,a.j);B(a,a.j+2);return b}function Vd(a){var b=bc(a.I,a.M);a.M=a.M+2&65535;return b}function H(a,b){a.M=a.M-2&65535;ec(a.I,a.M,b)} +function Wd(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<b?255:1<>8;Gd(this,a&256);this.b-=4},$d,function(){var a;Ed(this,a=D(this)+Ad(this));Gd(this,a>>8&256);this.b-=10},function(){this.g=E(this,Ad(this));this.b-=7},function(){Bd(this,Ad(this)-1);this.b-= +5},function(){this.A=Pd(this,this.A);this.b-=5},function(){this.A=Od(this,this.A);this.b-=5},function(){this.A=F(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;Gd(this,a);this.b-=4},$d,function(){Dd(this,G(this));this.b-=10},function(){Ud(this,Cd(this),this.g);this.b-=7},function(){Dd(this,Cd(this)+1);this.b-=5},function(){this.B=Pd(this,this.B);this.b-=5},function(){this.B=Od(this,this.B);this.b-=5},function(){this.B=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255| +Fd(this);Gd(this,a&256);this.b-=4},$d,function(){var a;Ed(this,a=D(this)+Cd(this));Gd(this,a>>8&256);this.b-=10},function(){this.g=E(this,Cd(this));this.b-=7},function(){Dd(this,Cd(this)-1);this.b-=5},function(){this.C=Pd(this,this.C);this.b-=5},function(){this.C=Od(this,this.C);this.b-=5},function(){this.C=F(this);this.b-=7},function(){var a=this.g<<8;this.g=(Fd(this)<<8|this.g)>>1;Gd(this,a&256);this.b-=4},$d,function(){Ed(this,G(this));this.b-=10},function(){var a=G(this);ec(this.I,a,D(this)); +this.b-=16},function(){Ed(this,D(this)+1);this.b-=5},function(){this.F=Pd(this,this.F);this.b-=5},function(){this.F=Od(this,this.F);this.b-=5},function(){this.F=F(this);this.b-=7},function(){var a=0,b=Fd(this);if(Id(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=Ld(this,a);Gd(this,b?256:0);this.b-=4},$d,function(){var a;Ed(this,a=D(this)+D(this));Gd(this,a>>8&256);this.b-=10},function(){var a;a=G(this);a=bc(this.I,a);Ed(this,a);this.b-=16},function(){Ed(this,D(this)-1);this.b-=5},function(){this.G= +Pd(this,this.G);this.b-=5},function(){this.G=Od(this,this.G);this.b-=5},function(){this.G=F(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},$d,function(){this.M=G(this)&65535;this.b-=10},function(){Ud(this,G(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);Ud(this,a,Pd(this,E(this,a)));this.b-=10},function(){var a=D(this);Ud(this,a,Od(this,E(this,a)));this.b-=10},function(){Ud(this,D(this),F(this));this.b-=10},function(){this.H|=256;this.b-= +4},$d,function(){var a;Ed(this,a=D(this)+this.M);Gd(this,a>>8&256);this.b-=10},function(){this.g=E(this,G(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=Pd(this,this.g);this.b-=5},function(){this.g=Od(this,this.g);this.b-=5},function(){this.g=F(this);this.b-=7},function(){Gd(this,Fd(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.u=this.A;this.b-=5},function(){this.u=this.B;this.b-=5},function(){this.u=this.C;this.b-=5},function(){this.u=this.F;this.b-= +5},function(){this.u=this.G;this.b-=5},function(){this.u=E(this,D(this));this.b-=7},function(){this.u=this.g;this.b-=5},function(){this.A=this.u;this.b-=5},function(){this.b-=5},function(){this.A=this.B;this.b-=5},function(){this.A=this.C;this.b-=5},function(){this.A=this.F;this.b-=5},function(){this.A=this.G;this.b-=5},function(){this.A=E(this,D(this));this.b-=7},function(){this.A=this.g;this.b-=5},function(){this.B=this.u;this.b-=5},function(){this.B=this.A;this.b-=5},function(){this.b-=5},function(){this.B= +this.C;this.b-=5},function(){this.B=this.F;this.b-=5},function(){this.B=this.G;this.b-=5},function(){this.B=E(this,D(this));this.b-=7},function(){this.B=this.g;this.b-=5},function(){this.C=this.u;this.b-=5},function(){this.C=this.A;this.b-=5},function(){this.C=this.B;this.b-=5},function(){this.b-=5},function(){this.C=this.F;this.b-=5},function(){this.C=this.G;this.b-=5},function(){this.C=E(this,D(this));this.b-=7},function(){this.C=this.g;this.b-=5},function(){this.F=this.u;this.b-=5},function(){this.F= +this.A;this.b-=5},function(){this.F=this.B;this.b-=5},function(){this.F=this.C;this.b-=5},function(){this.b-=5},function(){this.F=this.G;this.b-=5},function(){this.F=E(this,D(this));this.b-=7},function(){this.F=this.g;this.b-=5},function(){this.G=this.u;this.b-=5},function(){this.G=this.A;this.b-=5},function(){this.G=this.B;this.b-=5},function(){this.G=this.C;this.b-=5},function(){this.G=this.F;this.b-=5},function(){this.b-=5},function(){this.G=E(this,D(this));this.b-=7},function(){this.G=this.g; +this.b-=5},function(){Ud(this,D(this),this.u);this.b-=7},function(){Ud(this,D(this),this.A);this.b-=7},function(){Ud(this,D(this),this.B);this.b-=7},function(){Ud(this,D(this),this.C);this.b-=7},function(){Ud(this,D(this),this.F);this.b-=7},function(){Ud(this,D(this),this.G);this.b-=7},function(){var a=this.j-1;if(this.Ka.length)for(var b=0;b>8;this.b-=10},function(){var a=G(this);Kd(this)||B(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=G(this);Kd(this)||(H(this,this.j),B(this,a),this.b-=6);this.b-=11},function(){H(this,yd(this)&255|this.g<<8);this.b-=11},function(){this.g=Qd(this,F(this));this.b-=7},function(){H(this,this.j);B(this,48);this.b-=11},function(){Kd(this)&& +(B(this,Vd(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=G(this);Kd(this)&&B(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Wd(this)},function(){var a=G(this);Kd(this)&&(H(this,this.j),B(this,a),this.b-=6);this.b-=11},ce,function(){Rd(this,F(this));this.b-=7},function(){H(this,this.j);B(this,56);this.b-=11}]; +function de(a){u.call(this,"ChipSet",a,32768);var b=a.model;b&&!ee[b]&&fb("Unrecognized ChipSet model: "+b);this.g=ee[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);Gb(this)}aa(de,u);l=de.prototype;l.da=function(){return!1}; +l.Fa=function(a,b,c,d){this.I=b;this.w=c;this.K=d;this.R=a;this.B=Qb(a,"Keyboard");this.C=Qb(a,"SerialPort");this.video=Qb(a,"Video");hc(b,this,this.g.zb);lc(b,this,this.g.Ab);if(d){var e=this;fe(d,16384,function(){for(var a="",b=0;b>8-this.T&255;y(this,a,null,b,"SHIFT.RESULT",c,!0);return c};l.Xd=function(a,b,c){y(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};l.Zd=function(a,b,c){y(this,a,b,c,"SOUND1",null,!0);this.Y=b};l.Yd=function(a,b,c){y(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8}; +l.$d=function(a,b,c){y(this,a,b,c,"SOUND2",null,!0);this.Z=b};l.ae=function(a,b,c){y(this,a,b,c,"WATCHDOG",null,!0)};function he(a){var b=0,c=0,d=~a.M;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c} +l.Nd=function(a,b){var c=this.F,c=c&~J.xa.jc;if((Wc(this.w)&64)<<1&&(c|=J.xa.jc,c!=this.F)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case J.Aa.Ia.od:break;case J.Aa.Ia.Lc:this.M=this.M<<1|d;break;case J.Aa.Ia.Rc:d=he(this);this.j[d]=J.Aa.tb;Kb(this,"doNVRCommand(): erase data at addr "+q(d));break;case J.Aa.Ia.Mc:this.b=this.b<<1|d;break;case J.Aa.Ia.sd:d=he(this);e=this.b&J.Aa.tb;this.j[d]=e;Kb(this,"doNVRCommand(): write data "+q(e)+" to addr "+q(d));break;case J.Aa.Ia.md:d=he(this);e=this.j[d]; +null==e&&(e=J.Aa.tb);this.b=e;Kb(this,"doNVRCommand(): read data "+q(e)+" from addr "+q(d));break;case J.Aa.Ia.nd:this.b<<=1;this.S=this.b&J.Aa.tb+1;break;default:Kb(this,"doNVRCommand(): unrecognized command "+na(e))}}c&=~J.xa.kc;this.S&&(c|=J.xa.kc);c&=~J.xa.dc;if(d=this.B){d=this.B;if(e=d.A)e=d.w,e=Wc(d.w)>=d.G+(e.za*e.U/1E3*1.2731488|0);e&&(d.A=!1);d=!d.A}d&&(c|=J.xa.dc);c&=~J.xa.sc;this.C&&this.C.ia&ie&&(c|=J.xa.sc);this.F=c;y(this,a,null,b,"FLAGS",c);return c}; +l.be=function(a,b,c){y(this,a,b,c,"BRIGHTNESS");this.W=b};l.ee=function(a,b,c){y(this,a,b,c,"NVR.LATCH");this.L=b};l.de=function(a,b,c){y(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.u=this.u&-4|a;break;case 1:this.u=this.u&-13|a<<2;this.video&&(b=this.video,a=this.u,Kb(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?rd(b,!0):b.wa=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.V=a}}; +l.ce=function(a,b,c){y(this,a,b,c,"DC011");b&J.Ja.ld?(b&=J.Ja.oc,this.H!=b&&(this.H=b,this.video&&(a=this.video,b=this.H==J.Ja.oc?50:60,Kb(a,"updateRate("+b+")"),a.gb=b))):(b&=J.Ja.Wb,this.G!=b&&(this.G=b,this.video&&(a=this.G==J.Ja.Wb?132:80,b=this.video,Kb(b,"updateDimensions("+a+","+(80>>0,g],v=Ea(t,k,a.Ac);0>v&&t.splice(-(v+1),0,k)}p&&(h.a=p.replace(/''/g,'"'))}a.C.push({Sf:b,J:c,Rd:d,ra:e,zc:f})}delete this.ra}return!0};le.prototype.ua=function(){return!0}; +function me(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{lb(a.ab,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.longs||e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.ra=e.symbols;if(!a.b.length){r("Empty ROM: "+b);return}if(1==a.b.length){r(a.b[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b= +c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e>>f.g;0>>= +f.g;0=m.Za&&a<=m.ub?d.g&(Ve|We)||(d.g|=We,Se(d,20,!0),Xe(d)):a>=m.yc&&a<=m.z&&d.g&We&&(d.g&=~We,Se(d,20,!1),Xe(d));return!0}),c.onpaste=function(a){a:{if(d.C&&d.C.Qa&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Ye(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ta&&void 0!==this.b.Ta[b])return this.P[e]=c,c.onclick= +function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=0;17==b?e=Ze:20==b&&(e=We);if(e){c.style.fontWeight="normal";if(d=!(a.g&e))c.style.fontWeight="bold";$e(a,b,d)}Se(a,b,d,!e);a.R&&a.R.Xa()}}(this,this.b.Ta[b]),!0}}return!1};l.Fa=function(a,b,c,d){this.R=a;this.w=c;this.K=d;var e=this;this.L=ad(this.w,function(){af(e)});this.W=Qb(a,"ChipSet");this.C=Qb(a,"SerialPort");hc(b,this,this.b.zb);lc(b,this,this.b.Ab)}; +l.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.ua=function(a){return a?this.save():!0};l.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};l.save=function(){var a=new zd(this);switch(this.b.pa){case K.pa:a.set(0,[this.F,this.B,this.A,this.G,-1])}return a.data()}; +l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case bf.pa:return!0;case K.pa:return this.F=b[0],Xe(this,this.F&K.Ba.ec),this.B=b[1],this.A=b[2],this.G=b[3],this.u=b[4],!0}return!1};function Xe(a,b){var c;null!=b?a.H=b:b=a.H;for(var d in a.b.bb)if(c="led-"+d,c=a.P[c]){var e=a.b.bb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+n(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&We?"#"+n(65280,6):"#000000"} +function $e(a,b,c,d){var e=0;switch(b){case 16:e=d?cf:df;break;case 17:e=d?ef:Ze;break;case 18:e=d?ff:gf;break;case 91:e=d?hf:jf;break;case 20:e=We,c=!(a.g&e)}e&&(a.g=c?a.g|e:a.g&~e);return c} +function Ue(a,b,c){var d=!0,e=b.keyCode,e=ka[e]||e;c=$e(a,e,c,2==b.location);var f;a:if(e=a.b.Tb[e]||e,a.b.Ra[e])f=e;else{for(f in a.b.Ta)if(a.b.Ta[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.g&(kf|lf)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.g=c?a.g|lf:a.g&~lf)),d=Se(a,f,c),(!(f>=m.Za&&f<=m.ub)||a.g|mf)&&b.preventDefault&&b.preventDefault());return d} +function Te(a,b,c){var d=!0;if(c){var e=b.keyCode,f=a.b.Ra[e],g;if(g=f){a:{for(var h in a.b.qb)if(a.b.qb[h]==f){f=+h;break a}f=0}g=!f}g&&(d=Se(a,e,c,!0),b.preventDefault&&b.preventDefault())}return d} +function Se(a,b,c,d){var e;a:{for(e=0;ee?a.j.push({Ob:b,Lb:Date.now(),wb:d||!1}):(a.j[e].Lb=Date.now(),a.j[e].wb=d||!1),d&&af(a);else if(0<=e){if(!a.j[e].wb&&(d=a.j[e].Lb)&&Date.now()-dc||c>e)c=e}else{Se(a,d,!1);b=0;continue}}b++}0<=c&&bd(a.w,a.L,c)}l.Od=function(a,b){var c=this.B;0<=this.u&&(this.u"]]= +229,N[m["<"]]=230,N[m.hc]=231,N[m.Ub]=232,N[m.wc]=233,N[m["?"]]=245,N[m.gc]=246,N[m.tc]=248,N[m.Vb]=249,N[m.ub]=250,N),Tb:{},bb:{},Ta:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},Nc:{qa:130,INIT:127},Ba:{qa:130,bd:1,ad:2,$c:4,Zc:8,cd:16,fc:32,ec:63,pd:64,Ee:128,INIT:0},Yc:127};K.bb={l4:K.Ba.bd,l3:K.Ba.ad,l2:K.Ba.$c,l1:K.Ba.Zc,locked:K.Ba.cd,local:K.Ba.fc,online:~K.Ba.fc,"caps-lock":We};var Re={SI1978:bf,VT100:K}; +K.INIT=[[K.Ba.INIT,K.Nc.INIT,!1,0,-1]];K.zb={130:Qe.prototype.Od};K.Ab={130:Qe.prototype.fe};Za(function(){for(var a=sb(document,"pc8080","keyboard"),b=0;b>3)*a.N,!Wb(a.I,a.la,a.L,3)))return!1;a.L?(a.Ua=a.j.createImageData(b,c),a.eb=16/a.na|0,uf(a,a.L>>1)):uf(a,(a.O+1)*a.Z);a.F=document.createElement("canvas");a.F.width=b;a.F.height=c;a.ta=a.F.getContext("2d");a.T={};a.X=1<=a.Ca?8:16,f=8>(7>4)*c)}return k}l.va=function(a,b){return b||!a||this.restore(a)?!0:!1};l.ua=function(a){return!a||this.save()};l.save=function(){var a=new zd(this);a.set(0,[]);return a.data()};l.restore=function(){return!0}; +l.kb=function(){var a=!1;if(this.b){if(this.b.kb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.H;b>c&&(a=Math.round(c/b*100)+"%")}this.Sa?(this.G.style.width=a,this.G.style.width=a,this.G.style.display="block",this.G.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.kb();a=!0}this.V&&this.V.focus()}return a}; +function sf(a,b){!b&&a.b&&(a.Sa?a.G.style.width=a.G.style.height="":a.b.style.width=a.b.style.height="");Kb(a,"notifyFullScreen("+b+")")}function uf(a,b){a.cb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.cb)a.A=Array(a.cb)}function Ff(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==wf&&(208<=c&&236>c?e=a.X+xf:28<=c&&72>c&&(e=a.X+yf));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]} +function rd(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.fb&1?(Xd(a.w,2),c=!1):Xd(a.w,1):Xd(a.w,4));if(c&&a.W&&a.L){for(var d=a.I,e=a.la,f=a.L,g=!0,h=e>>>d.g,e=d.u-(e&d.j);0>=1);;){var x=ac(a.I,t++);if((x&Gf)==Gf){var w=ac(a.I,t++),d=w&Hf,c=(w&If)<< +8|ac(a.I,t),c=c+(w&Jf?Kf:Lf);break}if(p>4)*x.ca,L,za,sa,Aa,ta=x.ga,Ba=x.ca;C?(L=z*w.ga,za=f*w.ca,sa=w.ga,Aa=w.ca):(L=z*w.Ka,za=f*w.La,sa=w.Ka,Aa=w.La);x.ga>w.ga&&(L*=2,sa*=2);x.ca>w.ca&&(v==Ef&&(T+=w.ca),Ba=w.ca);C?C.drawImage(x.canvas,ya,T,ta,Ba,L,za,sa,Aa):(L+=0, +za+=0,w.j.drawImage(x.canvas,ya,T,ta,Ba,L,za,sa,Aa))}e++}h++}f++}}a.W=!0;!b&&a.wa&&1==e&&(a.A[k]=-1,e=0);a.wa=!1;(e||b)&&a.ta&&a.j.drawImage(a.F,0,a.sa,a.C,a.N-a.ca,0,0,a.Bb,a.ud)}else{f=a.la;g=f+a.L;k=e=h=0;b=a.C;p=0;c=a.N;v=d=0;t=a.na;z=(1<>8|(w&255)<<8);e>C&z,Ff(a,a.Ua,e++,k,ya),C+=t;e>p&&(p=e);k=d&&(d=k+1)}f+=2;h++;if(e>=a.C&&(e=0,k++,k>a.N))break}a.W= +!0;bMissing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=La().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height= +(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ua("aspect"));f&&.3<=f&&3.33>=f&&(Ya("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ra("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new pf(d,e,g,f,c);rb(d,c)}}); +function Mf(a){u.call(this,"SerialPort",a,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:r("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.V=a.tabSize;this.S=a.charBOL;this.u=0;this.N=!1;this.F=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=Nf;b&&(void 0===c&&(c="Panel"),(c=wb(c,this.id))&&(b=c.P[b])&&this.da(null,a,b))}this.A="";this.b=this.Qa=this.H=null;this.exports={connect:this.Fc,receiveData:this.Nb,receiveStatus:this.oe}} +aa(Mf,u);l=Mf.prototype;l.da=function(a,b,c,d){var e=this;switch(b){case Nf:return this.P[b]=this.g=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=xa(c[0]);if(d!=this.Gb)return;c=xa(c[1]);if(this.b=vb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.F);if(this.Qa=e.receiveData){this.F=a;this.H=e.receiveStatus;this.status("Connected "+this.ab+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}}; +l.va=function(a,b){if(!b)if(this.Fc(this.F),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.ua=function(a){return a?this.save():!0};l.reset=function(){Rf(this)};l.save=function(){var a=new zd(this),b=0,c=[];c[b++]=this.G;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};l.restore=function(a){return Rf(this,a[0])}; +function Rf(a,b){var c=0;b||(b=Sf);a.G=b[c++];a.M=b[c++];a.O=b[c++];a.ia=b[c++];a.B=b[c++];a.C=b[c++];a.L=b[c];return!0}function Tf(a,b){var c=a.L&b;b&15||(c>>=4);b=Uf[c];c=((a.B&Vf)>>2)+6;a.B&Wf&&c++;c+=((a.B&Xf)>>6)+1>>1;return 1E3/Math.round(b/c)}function Of(a,b){Kb(a,"receiveByte("+na(b)+"), status="+na(a.ia));return a.N||a.ia&Yf?!1:(a.M=b,a.ia|=Yf,Xd(a.w,a.X),!0)} +l.Nb=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(Of(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.w&&bd(this.w,this.Y,Tf(this,Zf)));return!0};l.oe=function(a){this.ia&=~$f;a&64&&(this.ia|=$f)};function Ye(a,b){a.ia=a.ia|ie|ag;b&&a.Qa&&a.Qa.call(a.b,b)}l.Id=function(a,b){var c=this.M;y(this,a,null,b,"DATA",c);this.ia&=~Yf;return c};l.Hd=function(a,b){var c=this.ia;y(this,a,null,b,"STATUS",c);return c}; +l.Wd=function(a,b,c){y(this,a,b,c,"DATA");this.O=b;this.ia&=~(ie|ag);Kb(this,"transmitByte("+na(b)+")");if(19==b)this.N=!0;else if(17==b)this.N=!1;else if(this.Qa&&this.Qa.call(this.b,b),this.g)if(8==b)this.g.value=this.g.value.slice(0,-1),0":String.fromCharCode(b);c=a.length;9==b?(b=this.V||8,c=b-this.u%b,this.V&&(a=wa("",c))):13==b&&(this.u=c=0,a="\n");this.S&&!this.u&&c&&(a=String.fromCharCode(this.S)+a);this.g.value+=a;this.g.scrollTop= +this.g.scrollHeight;this.u+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.w&&bd(this.w,this.Z,Tf(this,bg))};l.Vd=function(a,b,c){y(this,a,b,c,"CONTROL");this.G?(this.H&&(b^this.C)&(cg|dg)&&(a=0,this.F?(a|=b&cg?32:0,a|=b&dg?320:0):(a|=b&cg?16:0,a|=b&dg?1048576:0),this.H.call(this.b,a)),this.C=b,this.C&eg&&(this.G=!1)):(this.B=b,this.G=!0)};l.Ud=function(a,b,c){y(this,a,b,c,"BAUDRATES");this.L=b}; +var Vf=12,Wf=16,Xf=192,dg=2,cg=32,eg=64,ie=1,Yf=2,ag=4,$f=128,Zf=15,bg=240,Uf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Sf=[!1,0,0,133,142,39,238],Nf="buffer",Pf={0:Mf.prototype.Id,1:Mf.prototype.Hd},Qf={0:Mf.prototype.Wd,1:Mf.prototype.Vd,2:Mf.prototype.Ud};Za(function(){for(var a=sb(document,"pc8080","serial"),b=0;bthis.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.N?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(xa(a.substring(d,f))),d=f+1}}return b}; +function gg(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a<<32-b>>32-b:(b=Math.pow(2,b-1),a>=b?(d=a%b,(a/b|0)&1&&(d-=b)):a<-b&&(d=a%b,((-a-1)/b|0)&1?d&&(d+=b):d||(d-=b)));a!=d&&(a=d);return a} +function hg(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "^/":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= +f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case ",,":e=gg(e,18,!0)*Math.pow(2,18)+gg(f,18,!0);break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=gg(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=ig(a,b,0,b.length,a.u,c);void 0!==d&&e&&qg(a,null,d)}return d} +function rg(a,b){var c,d=a.U[0],e=a.U[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=pg(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?og(a,g):"undefined")}if(a.fa.length)for(d=a.fa[0],e=a.fa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=b.replace("["+c[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e= +a.S-a.ba}if(null==e)break;b=b.replace(d[0],e.toString())}return b}function kg(a,b){for(;b;){switch(b&3){case 1:a=-gg(a);break;case 2:a|=-1;break;case 3:for(var c=35;0<=c&&!(a&Math.pow(2,c));)c--;a=35-c}b>>>=2}return a} +function jg(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.Jb(b);if(0<=f)f=a.Kb(f);else if(f=b,a.A[f]?f=a.A[f].value:(f=f.substr(0,6),f=a.A[f]&&a.A[f].value),null!=f){var h=a.A[b]&&a.A[b].qe;h&&(g?g.push(h):(g=pg(a,h,d),void 0!==g?f+=g:(d||a.i("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=la(b,1c&&(d+=" '"+String.fromCharCode(c)+"'"));a.i((null!=b?b+": ":"")+d);return e}function sg(a,b){var c=0;if(a.A){if(b)return qg(a,b,a.A[b]&&a.A[b].value);b=Object.keys(a.A);b.sort();for(var d=0;d=a?8:262143>=a?18:36);b=ma(b,2,a,"",e);break;case 8:(a=0=a?6:16777215>=a?8:12);b=ma(b,8,a,e?"0o":"");break;case 10:(e=0=Math.abs(b)?5:11;b=ma(b,10,e);break;default:b=n(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +var mg={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},lg={",,":1,"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20}; +function tg(a){fg.call(this,a);this.style=ug;this.L=vg();this.sa=vg();this.T=vg();this.C=[];this.j=this.M=this.B=[];wg(this);this.X=0;xg(this);this.la={};yg(this,a.messages);this.na=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Tc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Tc(b,a)})}aa(tg,fg);l=tg.prototype; +l.Fa=function(a,b,c,d){this.I=b;this.w=c;this.R=a;(a=Pc(a,"messages"))&&yg(this,a);this.oa=zg;fe(this,64,function(a){a:{var b=d.I.b,c=a[0],e=a=0,k=b.length;if(c){a=Ag(Bg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.I.g;k=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,p=0;k--;){var t=b[e];t.type==c?p++||d.i("..."):(c=t.type,p=Zb[c],t&&d.i(n(t.id)+" %"+n(e<>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].ob(f,b&255,d),e.b[g&e.H].ob(0,b>>8&255,d+1));c&&ah(a,c);Uc(this.w,!0)}};function vg(a){return{J:a,Ea:!1}}function ch(a){return[a.J,a.Ea]}function dh(a){return{J:a[0],Ea:a[1]}} +function Bg(a,b,c){var d;c=(c?a.L:a.sa).J;if(void 0!==b){d=b=rg(a,b)||b;var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;cc&&(c=Ia(hh,a.substr(b,1))));return c};function ih(a,b){var c=0;a=a.Kb(b);if(void 0!==a)switch(b){case jh:case kh:case lh:case mh:case nh:case oh:case ph:case qh:c=2;break;case rh:case sh:case th:case uh:case vh:case wh:case xh:c=4}return c?n(a,c):"??"} +l.Kb=function(a){var b;if(0<=a){var c=this.w;switch(a){case jh:b=c.g;break;case kh:b=c.u;break;case lh:b=c.A;break;case rh:b=Ad(c);break;case mh:b=c.B;break;case nh:b=c.C;break;case sh:b=Cd(c);break;case oh:b=c.F;break;case ph:b=c.G;break;case th:b=D(c);break;case qh:b=E(c,D(c));break;case uh:b=c.M;break;case vh:b=c.j;break;case wh:b=yd(c);break;case xh:b=yd(c)&255|c.g<<8}}return b}; +function yh(a,b){b=rg(a,b)||b;for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Jb(b,c+1),0<=e&&(b=b.substr(0,c)+ih(a,e)+b.substr(c+1+hh[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=la(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Bg(a,e))?(d=e+' "'+gh(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Bg(a,e))?(ah(d),d= +e+' "'+gh(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+fh(vg(this.w.j).J));this.ha&536870912?this.Z.push(a):this.Y&&a==this.Y||(this.Y=a,this.ha&-2147483648&&(this.ea(),a+=" (cpu halted)"),this.i(a),this.w&&(a=this.w,cd(a),a.ta=0,Uc(a)))}; +function Lb(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.Gb+"."+(null!=d?"outPort":"inPort")+"("+q(c)+","+(f?f:"unknown")+(null!=d?","+na(d):"")+")"+(null!=g?": "+na(g):"")+(null!=e?" at "+fh(e):""))} +function xg(a){var b;if(Yd(a)){if(!a.H||!a.H.length){a.H=Array(zh);for(b=0;b>>d.g],!1)}a.M=["br"];if(a.B)for(b=1;b>>d.g],!0);a.B=["bw"];a.ta=0}l.Oa=function(a,b,c){var d=!0;c||Fh(this,a,b,!1,!0);if(a!=this.j){var e=Ag(b);if(-1===e)this.i("invalid address: "+fh(b.J)),d=!1;else{var f=this.I;f.b[e>>>f.g].Oa(e&f.j,a==this.B)}}d&&(a.push(b),c?b.Ea=!0:(Gh(this,a,a.length-1,"set"),xg(this)));return d}; +function Fh(a,b,c,d,e){var f=!1;c=Ag(c);for(var g=1;g>>d.g],b==a.B));h.Ea||xg(a);break}}return f}function Hh(a,b){for(var c=1;c>24,4);break;case Uh:C=n(x.Eb(C,2),4);break;default:x="imm("+q(w)+")";break a}x.style==Kh&&w&Vh?C="["+C+"]":w&Wh||(C=(x.style==ug?"$":"0x")+C);x=C}else w&Wh?(x=(v&Xh)>>8, +w=hh[x],a.style==Kh&&v&Vh&&(x==qh&&(w="HL"),w="["+w+"]"),x=w):w&Yh&&(x=(f>>3&7).toString());if(!x||!x.length){h="INVALID";break}0b[0]?1:a[0]>>0;for(b=0;b>>0,h=f.Rd;if(e>=g&&e>8&255;case "C":d.A=f&255;break;case "D":d.B=f&255;break; +case "DE":d.B=f>>8&255;case "E":d.C=f&255;break;case "H":d.F=f&255;break;case "HL":d.F=f>>8&255;case "L":d.G=f&255;break;case "SP":d.M=f&65535;break;case "PC":B(d,f);a.L=vg(d.j);break;case "PS":wd(d,f);break;case "PSW":wd(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.H=f?d.H|256:d.H&255;break;case "PF":f?Hd(d)||(d.L^=1):Hd(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.H=f?d.H&-256:d.H|255;break;case "SF":f?Kd(d)||(d.L^=192):Kd(d)&&(d.L^=192);break;case "IF":d.N= +f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Uc(d);a.i("updated registers:")}a.i(bi(a));c&&(a.L=vg(d.j),Dh(a,fh(a.L.J)))}}function ii(a,b){b=xa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(yh(a,c[2])):pg(a,b,!1)}function ji(a,b,c){var d="t"!=b;c=jg(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Wa(c,function(){return Ib(a,!0)&&Cg(a,e,d,!1)},function(){Uc(a.w);Ib(a,!1)})} +function Dh(a,b,c,d){if(b=Bg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Bg(a,c,!0);if(!d||d.Jh[0].indexOf("+"))){var p=h[0]+":";h[2]&&(p+=" "+h[2]);a.i(p)}h[3]&&(g=h[3],f=null);f=Jh(a,b,g,f);a.i(f);a.L=b;e-=b.J-k;c++}}} +l.yb=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.N?a="end":a=this.g[this.b+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(xa(a.substring(d,f))),d=f+1}}return b}; +function Ih(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.N&&(a.i("ended assemble at "+fh(a.T.J)),a.L=a.T,a.N=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Y=null;if(Fb(a)&&0p||"z"bb.length&&(a.i("note: only "+bb.length+" available"),Da=bb.length);Oa-=Da;0>Oa&&(null==bb[bb.length-1].J?(Da=Oa+Da,Oa=0):Oa+=bb.length);var ve= +[];"call"==Ig&&(oc=1E5,ve=["CALL"]);for(void 0!==Hg&&a.i(Da+" instructions earlier:");0=bb.length&&(Oa=0);a.wa=Da;Kg++;oc--}}Kg||(a.i("no "+Jg+"history available"),a.wa=void 0)}else{var ed=Bg(a,ta);if(ed){var fd=0;Ba&&("l"==Ba.charAt(0)&&(Ba=Ba.substr(1)||Oi),fd=jg(a,Ba)>>>0,65536>4||1;Qi--&&0jd?String.fromCharCode(jd):".";hd--}qc&&(qc+="\n");qc+=ta+" "+xe+(rc?"":" "+Ng)}qc&&a.i(qc);a.sa=ed}}}}break;case "e":if("else"==f[0])break;var kd=1,Og=255,Pg=a.Ga,Qg=a.Xb;"ew"==f[0]&&(kd=2,Og=65535,Pg=a.Eb,Qg=a.Qc);var Rg=kd<<1,Sg=f[1];if(null==Sg)a.i("edit memory commands:"), +a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");else{var ld=Bg(a,Sg);if(ld)for(var md=2;mdEe;){for(var xb=null,Wi=256;65536>uc.J>>>0;){Ug.J= +a.Eb(uc,2);if(null==uc.J||!Wi--)break;for(var Xi=a,od=Ug,Vg=null,vc=od.J,Wg=vc,Fe=1;6>=Fe&&vc;Fe++){if(2\nLicense: GPL version 3 or later ");for(b=0;bti){if(vi(d,this.H)){this.u=new zd(this,"1.36.2",Ei);vi(this.u)&&(Fi(this,d),a=Gi,Hi(this.u));this.u.set(Bi,Fa());Ii(this.u);var e=this.b&&!this.F;if(a==Ci||pb("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Ai(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?vi(d,g):("error"==f&&"no machine state"!= +g?(this.aa("Error: "+g),"unable to verify user"==g&&(Qa(Ji,""),this.g=null)):this.i(f+": "+g),Hi(d),vi(d)?(c=Ai(d),e=!0):c=!1))}e&&yi(this,c?d:null)}else a==Gi&&d.clear()}else yi(this);delete this.H;delete this.L}e=ub(this.id);for(f=0;fa[1];a=a[2];this.V=!0;this.D.ja=!0;var d=this.P.power;d&&(d.textContent="Shutdown");this.w&&(Ki(this,this.w,b,c,a),this.w.ib());this.O&&(Fi(this,b),b.clear());!c&&this.u&&(this.u.clear(),delete this.u);this.j=0}; +function Fi(a,b){if(pb("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.g||"";b=b.toString();var d={app:"PC8080",ver:"1.36.2"};d.url=a.W;d.user=c;d.type="bug";d.data=b;Ja("http://www.pcjs.org/api/v1/report",d,!0)}} +function ki(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new zd(a,"1.36.2"),g=new zd(a,"1.36.2",zi),h=Fa();g.set(Bi,h);f.set(Bi,h);f.set(Li,"1.36.2");f.set(Mi,window?window.location.href:null);f.set(Ni,La());a.w&&a.w.ua&&(c&&a.w.ea(),d=a.w.ua(b,c),"object"===typeof d&&f.set(a.w.id,d),c&&(a.w.D.ja=!1,!1===d&&(e=null)));for(var h=ub(a.id),k=0;kf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/, +"$1PC8080$2"),a=a.replace(/().*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(t){f=null,a=t.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ja(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],p,t=/( [a-z]+=)(['"])(.*?)\2/gi;p=t.exec(f);)k=0>k.toLowerCase().indexOf(p[1].toLowerCase())?k.replace(">",p[0]+">"):k.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+ +"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);ij(a,b,c)}})}else c(a,null)} +function jj(a,b,c,d){function e(a){if(void 0===h){var b=g&&sb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ua(a))}function f(a){e("Error: "+a);k&&(--fj||gb(!0));k=!1}var g,h,k=!0;fj++;mb[a]={};try{if(g=document.getElementById(a)){var p;if("object"==typeof resources&&(p=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=p:v.appendChild(document.createTextNode(p));t.appendChild(v)}c|| +(c="/versions/pc8080/1.36.2/components.xsl");p=function(d,h){h?gj(c,null,null,!1,e,function(d,k){k?(lb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--fj||gb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--fj||gb(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?gj(b,a,d,!0,e,p):hj(b,null,a,d,!1,e,p)}else f("missing machine element: "+a)}catch(z){f(z.message)}return k}window.embedPC8080=function(a,b,c,d){gb(!1);return jj(a,b,c,d)}; +window.commandMachine=function(a,b,c,d,e,f){if("script"==e){d=!1;c+=".machine";if(!f)delete zb[c],d=!0;else if("string"==typeof f&&!zb[c]){d=!0;e=zb;for(var g=c,h=f.length,k=[],p=[],t="",v=null,z=0;z 1 G (Ground) + * TD 2 <-> 3 RD (Received Data) + * RD 3 <-> 2 TD (Transmitted Data) + * RTS 4 <-> 5 CTS (Clear To Send) + * CTS 5 <-> 4 RTS (Request To Send) + * DSR 6+8 <-> 20 DTR (Data Terminal Ready) + * SG 7 <-> 7 SG (Signal Ground) + * DTR 20 <-> 6+8 DSR (Data Set Ready + Carrier Detect) + * RI 22 <-> 22 RI (Ring Indicator) + * + * TODO: Move these definitions to a more appropriate shared file at some point. + */ +var RS232 = { + RTS: { + PIN: 4, + MASK: 0x00000010 + }, + CTS: { + PIN: 5, + MASK: 0x00000020 + }, + DSR: { + PIN: 6, + MASK: 0x00000040 + }, + CD: { + PIN: 8, + MASK: 0x00000100 + }, + DTR: { + PIN: 20, + MASK: 0x00100000 + }, + RI: { + PIN: 22, + MASK: 0x00400000 + } +}; + +/* + * NODE should be true if we're running under NodeJS (eg, command-line), false if not (eg, web browser) + */ +var NODE = false; + + +/** + * @copyright http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + */ + +/* + * Our "DiskDump API", such as it was, used to look like: + * + * http://jsmachines.net/bin/convdisk.php?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img + * + * To make it (a bit) more "REST-like", the above request now looks like: + * + * http://www.pcjs.org/api/v1/dump?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img + * + * Similarly, our "FileDump API" used to look like: + * + * http://jsmachines.net/bin/convrom.php?rom=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json + * + * and that request now looks like: + * + * http://www.pcjs.org/api/v1/dump?file=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json + * + * I don't think it makes sense to avoid "query" parameters, because blending the path of a disk image with the + * the rest of the URL would be (a) confusing, and (b) more work to parse. + */ +var DumpAPI = { + ENDPOINT: "/api/v1/dump", + QUERY: { + DIR: "dir", // value is path of a directory (DiskDump only) + DISK: "disk", // value is path of a disk image (DiskDump only) + FILE: "file", // value is path of a ROM image file (FileDump only) + IMG: "img", // alias for DISK + PATH: "path", // value is path of a one or more files (DiskDump only) + FORMAT: "format", // value is one of FORMAT values below + COMMENTS: "comments", // value is either "true" or "false" + DECIMAL: "decimal", // value is either "true" to force all numbers to decimal, "false" or undefined otherwise + MBHD: "mbhd", // value is hard drive size in Mb (formerly "mbsize") (DiskDump only) (DEPRECATED) + SIZE: "size" // value is target disk size in Kb (supersedes "mbhd") (DiskDump only) + }, + FORMAT: { + JSON: "json", // default + JSON_GZ: "gz", // gzip is currently used ONLY for compressed JSON + DATA: "data", // same as "json", but built without JSON.stringify() (DiskDump only) + HEX: "hex", // deprecated + OCTAL: "octal", // displays data as octal words + BYTES: "bytes", // displays data as hex bytes; normally used only when comments are enabled + WORDS: "words", // displays data as hex words; normally used only when comments are enabled + LONGS: "longs", // displays data as dwords + IMG: "img", // returns the raw disk data (ie, using a Buffer object) (DiskDump only) + ROM: "rom" // returns the raw file data (ie, using a Buffer object) (FileDump only) + } +}; + +/* + * Because we use an overloaded API endpoint (ie, one that's shared with the FileDump module), we must + * also provide a list of commands which, when combined with the endpoint, define a unique request. + */ +DumpAPI.asDiskCommands = [DumpAPI.QUERY.DIR, DumpAPI.QUERY.DISK, DumpAPI.QUERY.PATH]; +DumpAPI.asFileCommands = [DumpAPI.QUERY.FILE]; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + */ + +var ReportAPI = { + ENDPOINT: "/api/v1/report", + QUERY: { + APP: "app", + VER: "ver", + URL: "url", + USER: "user", + TYPE: "type", + DATA: "data" + }, + TYPE: { + BUG: "bug" + }, + RES: { + OK: "Thank you" + } +}; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + */ + +/* + * Examples of User API requests: + * + * web.getHost() + UserAPI.ENDPOINT + '?' + UserAPI.QUERY.REQ + '=' + UserAPI.REQ.VERIFY + '&' + UserAPI.QUERY.USER + '=' + sUser; + */ +var UserAPI = { + ENDPOINT: "/api/v1/user", + QUERY: { + REQ: "req", // specifies a request + USER: "user", // specifies a user ID + STATE: "state", // specifies a state ID + DATA: "data" // specifies state data + }, + REQ: { + CREATE: "create", // creates a user ID + VERIFY: "verify", // requests verification of a user ID + STORE: "store", // stores a machine state on the server + LOAD: "load" // loads a machine state from the server + }, + RES: { + CODE: "code", + DATA: "data" + }, + CODE: { + OK: "ok", + FAIL: "error" + }, + FAIL: { + DUPLICATE: "user already exists", + VERIFY: "unable to verify user", + BADSTATE: "invalid state parameter", + NOSTATE: "no machine state", + BADLOAD: "unable to load machine state", + BADSTORE: "unable to save machine state" + } +}; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + */ + +var Keys = { + /* + * Keys and/or key combinations that generate common ASCII codes. + * + * NOTE: If you're looking for a general-purpose ASCII code table, see Str.ASCII in strlib.js; + * if something's missing, that's probably the more appropriate table to add it to. + * + * TODO: The Closure Compiler doesn't inline all references to these values, at least those with + * quoted property names, which is why I've 'unquoted' as many of them as possible. One solution + * would be to add mnemonics for all of them, not just the non-printable ones (eg, SPACE instead + * of ' ', AMP instead of '&', etc.) + */ + ASCII: { + BREAK: 0, CTRL_A: 1, CTRL_B: 2, CTRL_C: 3, CTRL_D: 4, CTRL_E: 5, CTRL_F: 6, CTRL_G: 7, + CTRL_H: 8, CTRL_I: 9, CTRL_J: 10, CTRL_K: 11, CTRL_L: 12, CTRL_M: 13, CTRL_N: 14, CTRL_O: 15, + CTRL_P: 16, CTRL_Q: 17, CTRL_R: 18, CTRL_S: 19, CTRL_T: 20, CTRL_U: 21, CTRL_V: 22, CTRL_W: 23, + CTRL_X: 24, CTRL_Y: 25, CTRL_Z: 26, + ' ': 32, '!': 33, '"': 34, '#': 35, '$': 36, '%': 37, '&': 38, "'": 39, + '(': 40, ')': 41, '*': 42, '+': 43, ',': 44, '-': 45, '.': 46, '/': 47, + '0': 48, '1': 49, '2': 50, '3': 51, '4': 52, '5': 53, '6': 54, '7': 55, + '8': 56, '9': 57, ':': 58, ';': 59, '<': 60, '=': 61, '>': 62, '?': 63, + '@': 64, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, + H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, + P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, + X: 88, Y: 89, Z: 90, '[': 91, '\\':92, ']': 93, '^': 94, '_': 95, + '`': 96, a: 97, b: 98, c: 99, d: 100, e: 101, f: 102, g: 103, + h: 104, i: 105, j: 106, k: 107, l: 108, m: 109, n: 110, o: 111, + p: 112, q: 113, r: 114, s: 115, t: 116, u: 117, v: 118, w: 119, + x: 120, y: 121, z: 122, '{':123, '|':124, '}':125, '~':126, DEL: 127 + }, + /* + * Browser keyCodes we must pay particular attention to. For the most part, these are non-alphanumeric + * or function keys, some which may require special treatment (eg, preventDefault() if returning false on + * the initial keyDown event is insufficient). + * + * keyCodes for most common ASCII keys can simply use the appropriate ASCII code above. + * + * Most of these represent non-ASCII keys (eg, the LEFT arrow key), yet for some reason, browsers defined + * them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37). + */ + KEYCODE: { + /* 0x08 */ BS: 8, // BACKSPACE (ASCII.CTRL_H) + /* 0x09 */ TAB: 9, // TAB (ASCII.CTRL_I) + /* 0x0A */ LF: 10, // LINE FEED (ASCII.CTRL_J) (TODO: Determine if any key actually generates this) + /* 0x0D */ CR: 13, // CARRIAGE RETURN (ASCII.CTRL_M) + /* 0x10 */ SHIFT: 16, + /* 0x11 */ CTRL: 17, + /* 0x12 */ ALT: 18, + /* 0x13 */ PAUSE: 19, // PAUSE/BREAK + /* 0x14 */ CAPS_LOCK: 20, + /* 0x1B */ ESC: 27, + /* 0x20 */ SPACE: 32, + /* 0x21 */ PGUP: 33, + /* 0x22 */ PGDN: 34, + /* 0x23 */ END: 35, + /* 0x24 */ HOME: 36, + /* 0x25 */ LEFT: 37, + /* 0x26 */ UP: 38, + /* 0x27 */ RIGHT: 39, + /* 0x27 */ FF_QUOTE: 39, + /* 0x28 */ DOWN: 40, + /* 0x2C */ FF_COMMA: 44, + /* 0x2C */ PRTSC: 44, + /* 0x2D */ INS: 45, + /* 0x2E */ DEL: 46, + /* 0x2E */ FF_PERIOD: 46, + /* 0x2F */ FF_SLASH: 47, + /* 0x30 */ ZERO: 48, + /* 0x31 */ ONE: 49, + /* 0x32 */ TWO: 50, + /* 0x33 */ THREE: 51, + /* 0x34 */ FOUR: 52, + /* 0x35 */ FIVE: 53, + /* 0x36 */ SIX: 54, + /* 0x37 */ SEVEN: 55, + /* 0x38 */ EIGHT: 56, + /* 0x39 */ NINE: 57, + /* 0x3B */ FF_SEMI: 59, + /* 0x3D */ FF_EQUALS: 61, + /* 0x5B */ CMD: 91, // aka WIN + /* 0x5B */ FF_LBRACK: 91, + /* 0x5C */ FF_BSLASH: 92, + /* 0x5D */ RCMD: 93, // aka MENU + /* 0x5D */ FF_RBRACK: 93, + /* 0x60 */ NUM_0: 96, + /* 0x60 */ NUM_INS: 96, + /* 0x60 */ FF_BQUOTE: 96, + /* 0x61 */ NUM_1: 97, + /* 0x61 */ NUM_END: 97, + /* 0x62 */ NUM_2: 98, + /* 0x62 */ NUM_DOWN: 98, + /* 0x63 */ NUM_3: 99, + /* 0x63 */ NUM_PGDN: 99, + /* 0x64 */ NUM_4: 100, + /* 0x64 */ NUM_LEFT: 100, + /* 0x65 */ NUM_5: 101, + /* 0x65 */ NUM_CENTER: 101, + /* 0x66 */ NUM_6: 102, + /* 0x66 */ NUM_RIGHT: 102, + /* 0x67 */ NUM_7: 103, + /* 0x67 */ NUM_HOME: 103, + /* 0x68 */ NUM_8: 104, + /* 0x68 */ NUM_UP: 104, + /* 0x69 */ NUM_9: 105, + /* 0x69 */ NUM_PGUP: 105, + /* 0x6A */ NUM_MUL: 106, + /* 0x6B */ NUM_ADD: 107, + /* 0x6D */ NUM_SUB: 109, + /* 0x6E */ NUM_DEL: 110, // aka PERIOD + /* 0x6F */ NUM_DIV: 111, + /* 0x70 */ F1: 112, + /* 0x71 */ F2: 113, + /* 0x72 */ F3: 114, + /* 0x73 */ F4: 115, + /* 0x74 */ F5: 116, + /* 0x75 */ F6: 117, + /* 0x76 */ F7: 118, + /* 0x77 */ F8: 119, + /* 0x78 */ F9: 120, + /* 0x79 */ F10: 121, + /* 0x7A */ F11: 122, + /* 0x7B */ F12: 123, + /* 0x90 */ NUM_LOCK: 144, + /* 0x91 */ SCROLL_LOCK: 145, + /* 0xAD */ FF_DASH: 173, + /* 0xBA */ SEMI: 186, // Firefox: 59 (FF_SEMI) + /* 0xBB */ EQUALS: 187, // Firefox: 61 (FF_EQUALS) + /* 0xBC */ COMMA: 188, + /* 0xBD */ DASH: 189, // Firefox: 173 (FF_DASH) + /* 0xBE */ PERIOD: 190, + /* 0xBF */ SLASH: 191, + /* 0xC0 */ BQUOTE: 192, + /* 0xDB */ LBRACK: 219, + /* 0xDC */ BSLASH: 220, + /* 0xDD */ RBRACK: 221, + /* 0xDE */ QUOTE: 222, + /* 0xE0 */ FF_CMD: 224, // Firefox only (used for both CMD and RCMD) + // + // The following biases use what I'll call Decimal Coded Binary or DCB (the opposite of BCD), + // where the thousands digit is used to store the sum of "binary" digits 1 and/or 2 and/or 4. + // + // Technically, that makes it DCO (Decimal Coded Octal), but then again, BCD should have really + // been called HCD (Hexadecimal Coded Decimal), so if "they" can take liberties, so can I. + // + // ONDOWN is a bias we add to browser keyCodes that we want to handle on "down" rather than on "press". + // + ONDOWN: 1000, + // + // ONRIGHT is a bias we add to browser keyCodes that need to check for a "right" location (default is "left") + // + ONRIGHT: 2000, + // + // FAKE is a bias we add to signal these are fake keyCodes corresponding to internal keystroke combinations. + // The actual values are for internal use only and merely need to be unique and used consistently. + // + FAKE: 4000 + }, + /* + * The set of values that a browser may store in the 'location' property of a keyboard event object + * which we also support. + */ + LOCATION: { + LEFT: 1, + RIGHT: 2, + NUMPAD: 3 + } +}; + +/* + * Check the event object's 'location' property for a non-zero value for the following ONRIGHT keys. + */ +Keys.KEYCODE.NUM_CR = Keys.KEYCODE.CR + Keys.KEYCODE.ONRIGHT; + + +/* + * Maps Firefox keyCodes to their more common keyCode counterparts; a number of entries in this table + * are no longer valid (if indeed they ever were), so they've been commented out. It's likely that I + * simply extended this table to resolve additional differences in other browsers (ie, Opera), but without + * browser-specific checks, it's not safe to perform all the mappings shown below. + */ +Keys.FF_KEYCODES = {}; +Keys.FF_KEYCODES[Keys.KEYCODE.FF_SEMI] = Keys.KEYCODE.SEMI; // 59 -> 186 +Keys.FF_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.KEYCODE.EQUALS; // 61 -> 187 +Keys.FF_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.KEYCODE.DASH; // 173 -> 189 +Keys.FF_KEYCODES[Keys.KEYCODE.FF_CMD] = Keys.KEYCODE.CMD; // 224 -> 91 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_COMMA] = Keys.KEYCODE.COMMA; // 44 -> 188 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_PERIOD] = Keys.KEYCODE.PERIOD; // 46 -> 190 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_SLASH] = Keys.KEYCODE.SLASH; // 47 -> 191 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BQUOTE] = Keys.KEYCODE.BQUOTE; // 96 -> 192 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_LBRACK = Keys.KEYCODE.LBRACK; // 91 -> 219 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BSLASH] = Keys.KEYCODE.BSLASH; // 92 -> 220 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_RBRACK] = Keys.KEYCODE.RBRACK; // 93 -> 221 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_QUOTE] = Keys.KEYCODE.QUOTE; // 39 -> 222 + +/* + * Maps non-ASCII keyCodes to their ASCII counterparts + */ +Keys.NONASCII_KEYCODES = {}; +Keys.NONASCII_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.ASCII['-']; // 173 -> 45 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SEMI] = Keys.ASCII[';']; // 186 -> 59 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.EQUALS] = Keys.ASCII['=']; // 187 -> 61 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.DASH] = Keys.ASCII['-']; // 189 -> 45 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.COMMA] = Keys.ASCII[',']; // 188 -> 44 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.PERIOD] = Keys.ASCII['.']; // 190 -> 46 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SLASH] = Keys.ASCII['/']; // 191 -> 47 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BQUOTE] = Keys.ASCII['`']; // 192 -> 96 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.LBRACK] = Keys.ASCII['[']; // 219 -> 91 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BSLASH] = Keys.ASCII['\\']; // 220 -> 92 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.RBRACK] = Keys.ASCII[']']; // 221 -> 93 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.QUOTE] = Keys.ASCII["'"]; // 222 -> 39 + +/* + * Maps unshifted keyCodes to their shifted counterparts; to be used when a shift-key is down. + * Alphabetic characters are handled in code, since they must also take CAPS_LOCK into consideration. + */ +Keys.SHIFTED_KEYCODES = {}; +Keys.SHIFTED_KEYCODES[Keys.ASCII['1']] = Keys.ASCII['!']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['2']] = Keys.ASCII['@']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['3']] = Keys.ASCII['#']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['4']] = Keys.ASCII['$']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['5']] = Keys.ASCII['%']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['6']] = Keys.ASCII['^']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['7']] = Keys.ASCII['&']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['8']] = Keys.ASCII['*']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['9']] = Keys.ASCII['(']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['0']] = Keys.ASCII[')']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SEMI] = Keys.ASCII[':']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.EQUALS] = Keys.ASCII['+']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.COMMA] = Keys.ASCII['<']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.DASH] = Keys.ASCII['_']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.PERIOD] = Keys.ASCII['>']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SLASH] = Keys.ASCII['?']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BQUOTE] = Keys.ASCII['~']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.LBRACK] = Keys.ASCII['{']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BSLASH] = Keys.ASCII['|']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.RBRACK] = Keys.ASCII['}']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.QUOTE] = Keys.ASCII['"']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.ASCII['_']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.ASCII['+']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_SEMI] = Keys.ASCII[':']; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + */ + +class Str { + /** + * isValidInt(s, base) + * + * The built-in parseInt() function has the annoying feature of returning a partial value (ie, + * up to the point where it encounters an invalid character); eg, parseInt("foo", 16) returns 0xf. + * + * So it's best to use our own Str.parseInt() function, which will in turn use this function to + * validate the entire string. + * + * @param {string} s is the string representation of some number + * @param {number} [base] is the radix to use (default is 10); only 2, 8, 10 and 16 are supported + * @return {boolean} true if valid, false if invalid (or the specified base isn't supported) + */ + static isValidInt(s, base) + { + if (!base || base == 10) return s.match(/^-?[0-9]+$/) !== null; + if (base == 16) return s.match(/^-?[0-9a-f]+$/i) !== null; + if (base == 8) return s.match(/^-?[0-7]+$/) !== null; + if (base == 2) return s.match(/^-?[01]+$/) !== null; + return false; + } + + /** + * parseInt(s, base) + * + * This is a wrapper around the built-in parseInt() function. Our wrapper recognizes certain prefixes + * ('$' or "0x" for hex, '#' or "0o" for octal) and suffixes ('.' for decimal, 'h' for hex, 'y' for + * binary), and then calls isValidInt() to ensure we don't convert strings that contain partial values; + * see isValidInt() for details. + * + * The use of multiple prefix/suffix combinations is undefined (although for the record, we process + * prefixes first). We do NOT support the "0b" prefix to indicate binary UNLESS one or more commas are + * also present (because "0b" is also a valid hex sequence), and we do NOT support a single leading zero + * to indicate octal (because such a number could also be decimal or hex). Any number of commas are + * allowed; we remove them all before calling the built-in parseInt(). + * + * More recently, we've added support for "^D", "^O", and "^B" prefixes to accommodate the base overrides + * that the PDP-10's MACRO-10 assembly language supports (decimal, octal, and binary, respectively). + * If this support turns out to adversely affect other debuggers, then it will have to be "conditionalized". + * Similarly, we've added support for "K", "M", and "G" MACRO-10-style suffixes that add 3, 6, or 9 zeros + * to the value to be parsed, respectively. + * + * @param {string} s is the string representation of some number + * @param {number} [base] is the radix to use (default is 10); can be overridden by prefixes/suffixes + * @return {number|undefined} corresponding value, or undefined if invalid + */ + static parseInt(s, base) + { + var value; + + if (s) { + if (!base) base = 10; + + var ch, chPrefix, chSuffix; + var fCommas = (s.indexOf(',') > 0); + if (fCommas) s = s.replace(/,/g, ''); + + ch = chPrefix = s.charAt(0); + if (chPrefix == '#') { + base = 8; + chPrefix = ''; + } + else if (chPrefix == '$') { + base = 16; + chPrefix = ''; + } + if (ch != chPrefix) { + s = s.substr(1); + } + else { + ch = chPrefix = s.substr(0, 2); + if (chPrefix == '0b' && fCommas || chPrefix == '^B') { + base = 2; + chPrefix = ''; + } + else if (chPrefix == '0o' || chPrefix == '^O') { + base = 8; + chPrefix = ''; + } + else if (chPrefix == '^D') { + base = 10; + chPrefix = ''; + } + else if (chPrefix == '0x') { + base = 16; + chPrefix = ''; + } + if (ch != chPrefix) s = s.substr(2); + } + ch = chSuffix = s.slice(-1); + if (chSuffix == 'Y' || chSuffix == 'y') { + base = 2; + chSuffix = ''; + } + else if (chSuffix == '.') { + base = 10; + chSuffix = ''; + } + else if (chSuffix == 'H' || chSuffix == 'h') { + base = 16; + chSuffix = ''; + } + else if (chSuffix == 'K') { + chSuffix = '000'; + } + else if (chSuffix == 'M') { + chSuffix = '000000'; + } + else if (chSuffix == 'G') { + chSuffix = '000000000'; + } + if (ch != chSuffix) s = s.slice(0, -1) + chSuffix; + /* + * This adds support for the MACRO-10 binary shifting (Bn) suffix, which must be stripped from the + * number before parsing, and then applied to the value after parsing. If n is omitted, 35 is assumed, + * which is a net shift of zero. If n < 35, then a left shift of (35 - n) is required; if n > 35, then + * a right shift of -(35 - n) is required. + */ + var v, shift = 0; + if (base <= 10) { + var match = s.match(/(-?[0-9]+)B([0-9]*)/); + if (match) { + s = match[1]; + shift = 35 - ((match[2] || 35) & 0xff); + } + } + if (Str.isValidInt(s, base) && !isNaN(v = parseInt(s, base))) { + /* + * With the need to support larger (eg, 36-bit) integers, truncating to 32 bits is no longer helpful. + * + * value = v|0; + */ + if (shift) { + /* + * Since binary shifting is a logical operation, and since shifting by division only works properly + * with positive numbers, we must convert a negative value to a positive value, by computing the two's + * complement. + */ + if (v < 0) v += Math.pow(2, 36); + if (shift > 0) { + v *= Math.pow(2, shift); + } else { + v = Math.trunc(v / Math.pow(2, -shift)); + } + } + value = v; + } + } + return value; + } + + /** + * toBase(n, radix, cch, sPrefix, nGrouping) + * + * Displays the given number as an unsigned integer using the specified radix and number of digits. + * + * @param {number|null|undefined} n + * @param {number} radix (ie, the base) + * @param {number} cch (the desired number of digits) + * @param {string} [sPrefix] (default is none) + * @param {number} [nGrouping] + * @return {string} + */ + static toBase(n, radix, cch, sPrefix = "", nGrouping = 0) + { + /* + * An initial "falsey" check for null takes care of both null and undefined; + * we can't rely entirely on isNaN(), because isNaN(null) returns false, oddly enough. + * + * Alternatively, we could mask and shift n regardless of whether it's null/undefined/NaN, + * since JavaScript coerces such operands to zero, but I think there's "value" in seeing those + * values displayed differently. + */ + var s = ""; + if (isNaN(n)) { + n = null; + } else if (n != null) { + /* + * Callers that produced an input by dividing by a power of two rather than shifting (in order + * to access more than 32 bits) may produce a fractional result, which ordinarily we would simply + * ignore, but if the integer portion is zero and the sign is negative, we should probably treat + * this value as a sign-extension. + */ + if (n < 0 && n > -1) n = -1; + /* + * Negative values should be two's complemented according to the number of digits; for example, + * 12 octal digits implies an upper limit 8^12. + */ + if (n < 0) { + n += Math.pow(radix, cch); + } + if (n >= Math.pow(radix, cch)) { + cch = Math.ceil(Math.log(n) / Math.log(radix)); + } + } + var g = nGrouping || -1; + while (cch-- > 0) { + if (!g) { + s = ',' + s; + g = nGrouping; + } + if (n == null) { + s = '?' + s; + } else { + var d = n % radix; + d += (d >= 0 && d <= 9? 0x30 : 0x41 - 10); + s = String.fromCharCode(d) + s; + n = Math.trunc(n / radix); + } + g--; + } + return sPrefix + s; + } + + /** + * toBin(n, cch, nGrouping) + * + * Converts an integer to binary, with the specified number of digits (up to a maximum of 36). + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of binary digits (0 or undefined for default of either 8, 18, or 36) + * @param {number} [nGrouping] + * @return {string} the binary representation of n + */ + static toBin(n, cch, nGrouping) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN2) || 1; + var v = Math.abs(n); + if (v <= 0b11111111) { + cch = 8; + } else if (v <= 0b111111111111111111) { + cch = 18; + } else { + cch = 36; + } + } else if (cch > 36) cch = 36; + return Str.toBase(n, 2, cch, "", nGrouping); + } + + /** + * toBinBytes(n, cb, fPrefix) + * + * Converts an integer to binary, with the specified number of bytes (up to the default of 4). + * + * @param {number|null|undefined} n (interpreted as a 32-bit value) + * @param {number} [cb] is the desired number of binary bytes (4 is both the default and the maximum) + * @param {boolean} [fPrefix] + * @return {string} the binary representation of n + */ + static toBinBytes(n, cb, fPrefix) + { + var s = ""; + if (!cb || cb > 4) cb = 4; + for (var i = 0; i < cb; i++) { + if (s) s = ',' + s; + s = Str.toBin(n & 0xff, 8) + s; + n >>= 8; + } + return (fPrefix? "0b" : "") + s; + } + + /** + * toOct(n, cch, fPrefix) + * + * Converts an integer to octal, with the specified number of digits (default of 6; max of 12) + * + * You might be tempted to use the built-in n.toString(8) instead, but it doesn't zero-pad and it + * doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw + * an exception, whereas this function will return '?' characters. + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of octal digits (0 or undefined for default of either 6, 8, or 12) + * @param {boolean} [fPrefix] + * @return {string} the octal representation of n + */ + static toOct(n, cch, fPrefix) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(8)) || 1; + var v = Math.abs(n); + if (v <= 0o777777) { + cch = 6; + } else if (v <= 0o77777777) { + cch = 8; + } else { + cch = 12; + } + } else if (cch > 12) cch = 12; + return Str.toBase(n, 8, cch, fPrefix? "0o" : ""); + } + + /** + * toDec(n, cch) + * + * Converts an integer to decimal, with the specified number of digits (default of 5; max of 11) + * + * You might be tempted to use the built-in n.toString(10) instead, but it doesn't zero-pad and it + * doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw + * an exception, whereas this function will return '?' characters. + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of decimal digits (0 or undefined for default of either 5 or 11) + * @return {string} the decimal representation of n + */ + static toDec(n, cch) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN10) || 1; + var v = Math.abs(n); + if (v <= 99999) { + cch = 5; + } else { + cch = 11; + } + } else if (cch > 11) cch = 11; + return Str.toBase(n, 10, cch); + } + + /** + * toHex(n, cch, fPrefix) + * + * Converts an integer to hex, with the specified number of digits (default of 4 or 8, max of 9). + * + * You might be tempted to use the built-in n.toString(16) instead, but it doesn't zero-pad and it + * doesn't properly convert negative values; for example, if n is -2147483647, then n.toString(16) + * will return "-7fffffff" instead of "80000001". Moreover, if n is undefined, n.toString() will + * throw an exception, whereas this function will return '?' characters. + * + * NOTE: The following work-around (adapted from code found on StackOverflow) would be another solution, + * taking care of negative values, zero-padding, and upper-casing, but not null/undefined/NaN values: + * + * s = (n < 0? n + 0x100000000 : n).toString(16); + * s = "00000000".substr(0, 8 - s.length) + s; + * s = s.substr(0, cch).toUpperCase(); + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of hex digits (0 or undefined for default of either 4, 8, or 9) + * @param {boolean} [fPrefix] + * @return {string} the hex representation of n + */ + static toHex(n, cch, fPrefix) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(16)) || 1; + var v = Math.abs(n); + if (v <= 0xffff) { + cch = 4; + } else if (v <= 0xffffffff) { + cch = 8; + } else { + cch = 9; + } + } else if (cch > 9) cch = 9; + return Str.toBase(n, 16, cch, fPrefix? "0x" : ""); + } + + /** + * toHexByte(b) + * + * Alias for Str.toHex(b, 2, true) + * + * @param {number|null|undefined} b is a byte value + * @return {string} the hex representation of b + */ + static toHexByte(b) + { + return Str.toHex(b, 2, true); + } + + /** + * toHexWord(w) + * + * Alias for Str.toHex(w, 4, true) + * + * @param {number|null|undefined} w is a word (16-bit) value + * @return {string} the hex representation of w + */ + static toHexWord(w) + { + return Str.toHex(w, 4, true); + } + + /** + * toHexLong(l) + * + * Alias for Str.toHex(l, 8, true) + * + * @param {number|null|undefined} l is a dword (32-bit) value + * @return {string} the hex representation of w + */ + static toHexLong(l) + { + return Str.toHex(l, 8, true); + } + + /** + * getBaseName(sFileName, fStripExt) + * + * This is a poor-man's version of Node's path.basename(), which Node-only components should use instead. + * + * Note that if fStripExt is true, this strips ANY extension, whereas path.basename() strips the extension only + * if it matches the second parameter (eg, path.basename("/foo/bar/baz/asdf/quux.html", ".html") returns "quux"). + * + * @param {string} sFileName + * @param {boolean} [fStripExt] + * @return {string} + */ + static getBaseName(sFileName, fStripExt) + { + var sBaseName = sFileName; + + var i = sFileName.lastIndexOf('/'); + if (i >= 0) sBaseName = sFileName.substr(i + 1); + + /* + * This next bit is a kludge to clean up names that are part of a URL that includes unsightly query parameters. + */ + i = sBaseName.indexOf('&'); + if (i > 0) sBaseName = sBaseName.substr(0, i); + + if (fStripExt) { + i = sBaseName.lastIndexOf("."); + if (i > 0) { + sBaseName = sBaseName.substring(0, i); + } + } + return sBaseName; + } + + /** + * getExtension(sFileName) + * + * This is a poor-man's version of Node's path.extname(), which Node-only components should use instead. + * + * Note that we EXCLUDE the period from the returned extension, whereas path.extname() includes it. + * + * @param {string} sFileName + * @return {string} the filename's extension (in lower-case and EXCLUDING the "."), or an empty string + */ + static getExtension(sFileName) + { + var sExtension = ""; + var i = sFileName.lastIndexOf("."); + if (i >= 0) { + sExtension = sFileName.substr(i + 1).toLowerCase(); + } + return sExtension; + } + + /** + * endsWith(s, sSuffix) + * + * @param {string} s + * @param {string} sSuffix + * @return {boolean} true if s ends with sSuffix, false if not + */ + static endsWith(s, sSuffix) + { + return s.indexOf(sSuffix, s.length - sSuffix.length) !== -1; + } + + /** + * escapeHTML(sHTML) + * + * @param {string} sHTML + * @return {string} with HTML entities "escaped", similar to PHP's htmlspecialchars() + */ + static escapeHTML(sHTML) + { + return sHTML.replace(/[&<>"']/g, function(m) + { + return Str.aHTMLEscapeMap[m]; + }); + } + + /** + * replace(sSearch, sReplace, s) + * + * The JavaScript replace() function ALWAYS interprets "$" specially in replacement strings, even when + * the search string is NOT a RegExp; specifically: + * + * $$ Inserts a "$" + * $& Inserts the matched substring + * $` Inserts the portion of the string that precedes the matched substring + * $' Inserts the portion of the string that follows the matched substring + * $n Where n is a positive integer less than 100, inserts the nth parenthesized sub-match string, + * provided the first argument was a RegExp object + * + * So, if a replacement string containing dollar signs passes through a series of replace() calls, untold + * problems could result. Hence, this function, which simply uses the replacement string as-is. + * + * Similar to the JavaScript replace() method (when sSearch is a string), this replaces only ONE occurrence + * (ie, the FIRST occurrence); it might be nice to add options to replace the LAST occurrence and/or ALL + * occurrences, but we'll revisit that later. + * + * @param {string} sSearch + * @param {string} sReplace + * @param {string} s + * @return {string} + */ + static replace(sSearch, sReplace, s) + { + var i = s.indexOf(sSearch); + if (i >= 0) { + s = s.substr(0, i) + sReplace + s.substr(i + sSearch.length); + } + return s; + } + + /** + * replaceAll(sSearch, sReplace, s) + * + * @param {string} sSearch + * @param {string} sReplace + * @param {string} s + * @return {string} + */ + static replaceAll(sSearch, sReplace, s) + { + var a = {}; + a[sSearch] = sReplace; + return Str.replaceArray(a, s); + } + + /** + * replaceArray(a, s) + * + * @param {Object} a + * @param {string} s + * @return {string} + */ + static replaceArray(a, s) + { + var sMatch = ""; + for (var k in a) { + /* + * As noted in: + * + * http://www.regexguru.com/2008/04/escape-characters-only-when-necessary/ + * + * inside character classes, only backslash, caret, hyphen and the closing bracket need to be + * escaped. And in fact, if you ensure that the closing bracket is first, the caret is not first, + * and the hyphen is last, you can avoid escaping those as well. + */ + k = k.replace(/([\\[\]*{}().+?])/g, "\\$1"); + sMatch += (sMatch? '|' : '') + k; + } + return s.replace(new RegExp('(' + sMatch + ')', "g"), function(m) + { + return a[m]; + }); + } + + /** + * pad(s, cch, fPadLeft) + * + * NOTE: the maximum amount of padding currently supported is 40 spaces. + * + * @param {string} s is a string + * @param {number} cch is desired length + * @param {boolean} [fPadLeft] (default is padding on the right) + * @return {string} the original string (s) with spaces padding it to the specified length + */ + static pad(s, cch, fPadLeft) + { + var sPadding = " "; + return fPadLeft? (sPadding + s).slice(-cch) : (s + sPadding).slice(0, cch); + } + + /** + * stripLeadingZeros(s, fPad) + * + * @param {string} s + * @param {boolean} [fPad] + * @return {string} + */ + static stripLeadingZeros(s, fPad) + { + var cch = s.length; + s = s.replace(/^0+([0-9A-F]+)$/i, "$1"); + if (fPad) s = Str.pad(s, cch, true); + return s; + } + + /** + * trim(s) + * + * @param {string} s + * @return {string} + */ + static trim(s) + { + if (String.prototype.trim) { + return s.trim(); + } + return s.replace(/^\s+|\s+$/g, ""); + } + + /** + * toASCIICode(b) + * + * @param {number} b + * @return {string} + */ + static toASCIICode(b) + { + var s; + if (b != Str.ASCII.CR && b != Str.ASCII.LF) { + s = Str.aASCIICodes[b]; + } + if (s) { + s = '<' + s + '>'; + } else { + s = String.fromCharCode(b); + } + return s; + } +} + +Str.aHTMLEscapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' +}; + +/* + * Future home of a general-purpose ASCII table. TODO: Flesh it out. + */ +Str.ASCII = { + LF: 0x0A, + CR: 0x0D +}; + +/* + * Table for converting "unprintable" ASCII codes into mnemonics, to more clearly see what's being printed. + */ +Str.aASCIICodes = { + 0x00: "NUL", + 0x01: "SOH", // (CTRL_A) Start of Heading + 0x02: "STX", // (CTRL_B) Start of Text + 0x03: "ETX", // (CTRL_C) End of Text + 0x04: "EOT", // (CTRL_D) End of Transmission + 0x05: "ENQ", // (CTRL_E) Enquiry + 0x06: "ACK", // (CTRL_F) Acknowledge + 0x07: "BEL", // (CTRL_G) Bell + 0x08: "BS", // (CTRL_H) Backspace + 0x09: "TAB", // (CTRL_I) Horizontal Tab + 0x0A: "LF", // (CTRL_J) Line Feed (New Line) + 0x0B: "VT", // (CTRL_K) Vertical Tab + 0x0C: "FF", // (CTRL_L) Form Feed (New Page) + 0x0D: "CR", // (CTRL_M) Carriage Return + 0x0E: "SO", // (CTRL_N) Shift Out + 0x0F: "SI", // (CTRL_O) Shift In + 0x10: "DLE", // (CTRL_P) Data Link Escape + 0x11: "XON", // (CTRL_Q) Device Control 1 (aka DC1) + 0x12: "DC2", // (CTRL_R) Device Control 2 + 0x13: "XOFF", // (CTRL_S) Device Control 3 (aka DC3) + 0x14: "DC4", // (CTRL_T) Device Control 4 + 0x15: "NAK", // (CTRL_U) Negative Acknowledge + 0x16: "SYN", // (CTRL_V) Synchronous Idle + 0x17: "ETB", // (CTRL_W) End of Transmission Block + 0x18: "CAN", // (CTRL_X) Cancel + 0x19: "EM", // (CTRL_Y) End of Medium + 0x1A: "SUB", // (CTRL_Z) Substitute + 0x1B: "ESC", // Escape + 0x1C: "FS", // File Separator + 0x1D: "GS", // Group Separator + 0x1E: "RS", // Record Separator + 0x1F: "US" // Unit Separator +}; + +Str.TYPES = { + NULL: 0, + BYTE: 1, + WORD: 2, + DWORD: 3, + NUMBER: 4, + STRING: 5, + BOOLEAN: 6, + OBJECT: 7, + ARRAY: 8 +}; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + */ + +/** + * @typedef {{ + * mask: number, + * shift: number + * }} + */ +var BitField; + +/** + * @typedef {Object.} + */ +var BitFields; + +class Usr { + /** + * binarySearch(a, v, fnCompare) + * + * @param {Array} a is an array + * @param {number|string|Array|Object} v + * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare] + * @return {number} the index of matching entry if non-negative, otherwise the index of the insertion point + */ + static binarySearch(a, v, fnCompare) + { + var left = 0; + var right = a.length; + var found = 0; + if (fnCompare === undefined) { + fnCompare = function(a, b) + { + return a > b ? 1 : a < b ? -1 : 0; + }; + } + while (left < right) { + var middle = (left + right) >> 1; + var compareResult; + compareResult = fnCompare(v, a[middle]); + if (compareResult > 0) { + left = middle + 1; + } else { + right = middle; + found = !compareResult; + } + } + return found ? left : ~left; + } + + /** + * binaryInsert(a, v, fnCompare) + * + * If element v already exists in array a, the array is unchanged (we don't allow duplicates); otherwise, the + * element is inserted into the array at the appropriate index. + * + * @param {Array} a is an array + * @param {number|string|Array|Object} v is the value to insert + * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare] + */ + static binaryInsert(a, v, fnCompare) + { + var index = Usr.binarySearch(a, v, fnCompare); + if (index < 0) { + a.splice(-(index + 1), 0, v); + } + } + + /** + * getTimestamp() + * + * @return {string} timestamp containing the current date and time ("yyyy-mm-dd hh:mm:ss") + */ + static getTimestamp() + { + return Usr.formatDate("Y-m-d H:i:s"); + } + + /** + * getMonthDays(nMonth, nYear) + * + * Note that if we're being called on behalf of the RTC, its year is always truncated to two digits (mod 100), + * so we have no idea what century the year 0 might refer to. When using the normal leap-year formula, 0 fails + * the mod 100 test but passes the mod 400 test, so as far as the RTC is concerned, every century year is a leap + * year. Since we're most likely dealing with the year 2000, that's fine, since 2000 was also a leap year. + * + * TODO: There IS a separate CMOS byte that's supposed to be set to CMOS_ADDR.CENTURY_DATE; it's always BCD, + * so theoretically it will contain values like 0x19 or 0x20 (for the 20th and 21st centuries, respectively), and + * we could add that as another parameter to this function, to improve the accuracy, but that would go beyond what + * a real RTC actually does. + * + * @param {number} nMonth (1-12) + * @param {number} nYear (normally a 4-digit year, but it may also be mod 100) + * @return {number} the maximum (1-based) day allowed for the specified month and year + */ + static getMonthDays(nMonth, nYear) + { + var nDays = Usr.aMonthDays[nMonth - 1]; + if (nDays == 28) { + if ((nYear % 4) === 0 && ((nYear % 100) || (nYear % 400) === 0)) { + nDays++; + } + } + return nDays; + } + + /** + * formatDate(sFormat, date) + * + * @param {string} sFormat (eg, "F j, Y", "Y-m-d H:i:s") + * @param {Date} [date] (default is the current time) + * @return {string} + * + * Supported identifiers in sFormat include: + * + * a: lowercase ante meridiem and post meridiem (am or pm) + * d: day of the month, 2 digits with leading zeros (01,02,...,31) + * D: 3-letter day of the week ("Sun","Mon",...,"Sat") + * F: month ("January","February",...,"December") + * g: hour in 12-hour format, without leading zeros (1,2,...,12) + * h: hour in 24-hour format, without leading zeros (0,1,...,23) + * H: hour in 24-hour format, with leading zeros (00,01,...,23) + * i: minutes, with leading zeros (00,01,...,59) + * j: day of the month, without leading zeros (1,2,...,31) + * l: day of the week ("Sunday","Monday",...,"Saturday") + * m: month, with leading zeros (01,02,...,12) + * M: 3-letter month ("Jan","Feb",...,"Dec") + * n: month, without leading zeros (1,2,...,12) + * s: seconds, with leading zeros (00,01,...,59) + * y: 2-digit year (eg, 14) + * Y: 4-digit year (eg, 2014) + * + * For more inspiration, see: http://php.net/manual/en/function.date.php (of which we support ONLY a subset). + */ + static formatDate(sFormat, date) + { + var sDate = ""; + if (!date) date = new Date(); + var iHour = date.getHours(); + var iDay = date.getDate(); + var iMonth = date.getMonth() + 1; + for (var i = 0; i < sFormat.length; i++) { + var ch; + switch ((ch = sFormat.charAt(i))) { + case 'a': + sDate += (iHour < 12 ? "am" : "pm"); + break; + case 'd': + sDate += ('0' + iDay).slice(-2); + break; + case 'D': + sDate += Usr.asDays[date.getDay()].substr(0, 3); + break; + case 'F': + sDate += Usr.asMonths[iMonth - 1]; + break; + case 'g': + sDate += (!iHour ? 12 : (iHour > 12 ? iHour - 12 : iHour)); + break; + case 'h': + sDate += iHour; + break; + case 'H': + sDate += ('0' + iHour).slice(-2); + break; + case 'i': + sDate += ('0' + date.getMinutes()).slice(-2); + break; + case 'j': + sDate += iDay; + break; + case 'l': + sDate += Usr.asDays[date.getDay()]; + break; + case 'm': + sDate += ('0' + iMonth).slice(-2); + break; + case 'M': + sDate += Usr.asMonths[iMonth - 1].substr(0, 3); + break; + case 'n': + sDate += iMonth; + break; + case 's': + sDate += ('0' + date.getSeconds()).slice(-2); + break; + case 'y': + sDate += ("" + date.getFullYear()).slice(-2); + break; + case 'Y': + sDate += date.getFullYear(); + break; + default: + sDate += ch; + break; + } + } + return sDate; + } + + /** + * defineBitFields(bfs) + * + * Prepares a bit field definition for use with getBitField() and setBitField(); eg: + * + * var bfs = Usr.defineBitFields({num:20, count:8, btmod:1, type:3}); + * + * The above defines a set of bit fields containing four fields: num (bits 0-19), count (bits 20-27), btmod (bit 28), and type (bits 29-31). + * + * Usr.setBitField(bfs.num, n, 1); + * + * The above set bit field "bfs.num" in numeric variable "n" to the value 1. + * + * @param {Object} bfs + * @return {BitFields} + */ + static defineBitFields(bfs) + { + var bit = 0; + for (var f in bfs) { + var width = bfs[f]; + var mask = ((1 << width) - 1) << bit; + bfs[f] = {mask: mask, shift: bit}; + bit += width; + } + return bfs; + } + + /** + * initBitFields(bfs, ...) + * + * @param {BitFields} bfs + * @param {...number} var_args + * @return {number} a value containing all supplied bit fields + */ + static initBitFields(bfs, var_args) + { + var v = 0, i = 1; + for (var f in bfs) { + if (i >= arguments.length) break; + v = Usr.setBitField(bfs[f], v, arguments[i++]); + } + return v; + } + + /** + * getBitField(bf, v) + * + * @param {BitField} bf + * @param {number} v is a value containing bit fields + * @return {number} the value of the bit field in v defined by bf + */ + static getBitField(bf, v) + { + return (v & bf.mask) >> bf.shift; + } + + /** + * setBitField(bf, v, n) + * + * @param {BitField} bf + * @param {number} v is a value containing bit fields + * @param {number} n is a value to store in v in the bit field defined by bf + * @return {number} updated v + */ + static setBitField(bf, v, n) + { + return (v & ~bf.mask) | ((n << bf.shift) & bf.mask); + } + + /** + * indexOf(a, t, i) + * + * Use this instead of Array.prototype.indexOf() if you can't be sure the browser supports it. + * + * @param {Array} a + * @param {*} t + * @param {number} [i] + * @returns {number} + */ + static indexOf(a, t, i) + { + if (Array.prototype.indexOf) { + return a.indexOf(t, i); + } + i = i || 0; + if (i < 0) i += a.length; + if (i < 0) i = 0; + for (var n = a.length; i < n; i++) { + if (i in a && a[i] === t) return i; + } + return -1; + } +} + +Usr.asDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; +Usr.asMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; +Usr.aMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + +/** + * getTime() + * + * @return {number} the current time, in milliseconds + */ +Usr.getTime = Date.now || function() { return +new Date(); }; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + */ + + +/* + * According to http://www.w3schools.com/jsref/jsref_obj_global.asp, these are the *global* properties + * and functions of JavaScript-in-the-Browser: + * + * Property Description + * --- + * Infinity A numeric value that represents positive/negative infinity + * NaN "Not-a-Number" value + * undefined Indicates that a variable has not been assigned a value + * + * Function Description + * --- + * decodeURI() Decodes a URI + * decodeURIComponent() Decodes a URI component + * encodeURI() Encodes a URI + * encodeURIComponent() Encodes a URI component + * escape() Deprecated in version 1.5. Use encodeURI() or encodeURIComponent() instead + * eval() Evaluates a string and executes it as if it was script code + * isFinite() Determines whether a value is a finite, legal number + * isNaN() Determines whether a value is an illegal number + * Number() Converts an object's value to a number + * parseFloat() Parses a string and returns a floating point number + * parseInt() Parses a string and returns an integer + * String() Converts an object's value to a string + * unescape() Deprecated in version 1.5. Use decodeURI() or decodeURIComponent() instead + * + * And according to http://www.w3schools.com/jsref/obj_window.asp, these are the properties and functions + * of the *window* object. + * + * Property Description + * --- + * closed Returns a Boolean value indicating whether a window has been closed or not + * defaultStatus Sets or returns the default text in the statusbar of a window + * document Returns the Document object for the window (See Document object) + * frames Returns an array of all the frames (including iframes) in the current window + * history Returns the History object for the window (See History object) + * innerHeight Returns the inner height of a window's content area + * innerWidth Returns the inner width of a window's content area + * length Returns the number of frames (including iframes) in a window + * location Returns the Location object for the window (See Location object) + * name Sets or returns the name of a window + * navigator Returns the Navigator object for the window (See Navigator object) + * opener Returns a reference to the window that created the window + * outerHeight Returns the outer height of a window, including toolbars/scrollbars + * outerWidth Returns the outer width of a window, including toolbars/scrollbars + * pageXOffset Returns the pixels the current document has been scrolled (horizontally) from the upper left corner of the window + * pageYOffset Returns the pixels the current document has been scrolled (vertically) from the upper left corner of the window + * parent Returns the parent window of the current window + * screen Returns the Screen object for the window (See Screen object) + * screenLeft Returns the x coordinate of the window relative to the screen + * screenTop Returns the y coordinate of the window relative to the screen + * screenX Returns the x coordinate of the window relative to the screen + * screenY Returns the y coordinate of the window relative to the screen + * self Returns the current window + * status Sets or returns the text in the statusbar of a window + * top Returns the topmost browser window + * + * Method Description + * --- + * alert() Displays an alert box with a message and an OK button + * atob() Decodes a base-64 encoded string + * blur() Removes focus from the current window + * btoa() Encodes a string in base-64 + * clearInterval() Clears a timer set with setInterval() + * clearTimeout() Clears a timer set with setTimeout() + * close() Closes the current window + * confirm() Displays a dialog box with a message and an OK and a Cancel button + * createPopup() Creates a pop-up window + * focus() Sets focus to the current window + * moveBy() Moves a window relative to its current position + * moveTo() Moves a window to the specified position + * open() Opens a new browser window + * print() Prints the content of the current window + * prompt() Displays a dialog box that prompts the visitor for input + * resizeBy() Resizes the window by the specified pixels + * resizeTo() Resizes the window to the specified width and height + * scroll() This method has been replaced by the scrollTo() method. + * scrollBy() Scrolls the content by the specified number of pixels + * scrollTo() Scrolls the content to the specified coordinates + * setInterval() Calls a function or evaluates an expression at specified intervals (in milliseconds) + * setTimeout() Calls a function or evaluates an expression after a specified number of milliseconds + * stop() Stops the window from loading + */ + +class Web { + /** + * log(s, type) + * + * For diagnostic output only. DEBUG must be true (or "--debug" specified via the command-line) + * for Component.log() to display anything. + * + * @param {string} [s] is the message text + * @param {string} [type] is the message type + */ + static log(s, type) + { + Component.log(s, type); + } + + /** + * notice(s, fPrintOnly, id) + * + * @param {string} s is the message text + * @param {boolean} [fPrintOnly] + * @param {string} [id] is the caller's ID, if any + */ + static notice(s, fPrintOnly, id) + { + Component.notice(s, fPrintOnly, id); + } + + /** + * getResource(sURL, dataPost, fAsync, done, progress) + * + * Request the specified resource (sURL), and once the request is complete, notify done(). + * + * If fAsync is true, a done() callback should ALWAYS be supplied; otherwise, you'll have no + * idea when the request is complete or what the response was. done() is passed three parameters: + * + * done(sURL, sResource, nErrorCode) + * + * If nErrorCode is zero, sResource should contain the requested data; otherwise, an error occurred. + * + * If dataPost is set to a string, that string can be used to control the response format; + * by default, the response format is plain text, but you can specify "bytes" to request arbitrary + * binary data, which should come back as a string of bytes. + * + * TODO: The "bytes" option works by calling overrideMimeType(), which was never a best practice. + * Instead, we should implement supported response types ("text" and "arraybuffer", at a minimum) + * by setting xmlHTTP.responseType to one of those values before calling xmlHTTP.send(). + * + * @param {string} sURL + * @param {string|Object|null} [dataPost] for a POST request (default is a GET request) + * @param {boolean} [fAsync] is true for an asynchronous request + * @param {function(string,string,number)} [done] + * @param {function(number)} [progress] + * @return {Array|null} Array containing [sResource, nErrorCode], or null if no response yet + */ + static getResource(sURL, dataPost, fAsync = false, done, progress) + { + var nErrorCode = 0, sResource = null, response = null; + + if (typeof resources == 'object' && (sResource = resources[sURL])) { + if (done) done(sURL, sResource, nErrorCode); + return [sResource, nErrorCode]; + } + else if (fAsync && typeof resources == 'function') { + resources(sURL, function(sResource, nErrorCode) + { + if (done) done(sURL, sResource, nErrorCode); + }); + return response; + } + + if (DEBUG) { + /* + * The larger resources we put on archive.pcjs.org should also be available locally... + */ + sURL = sURL.replace(/^http:\/\/archive.pcjs.org(\/.*)\/([^\/]*)$/, "$1/archive/$2"); + } + + + var xmlHTTP = (window.XMLHttpRequest? new window.XMLHttpRequest() : new window.ActiveXObject("Microsoft.XMLHTTP")); + if (fAsync) { + xmlHTTP.onreadystatechange = function() + { + if (xmlHTTP.readyState !== 4) { + if (progress) progress(1); + return; + } + /* + * The following line was recommended for WebKit, as a work-around to prevent the handler firing multiple + * times when debugging. Unfortunately, that's not the only XMLHttpRequest problem that occurs when + * debugging, so I think the WebKit problem is deeper than that. When we have multiple XMLHttpRequests + * pending, any debugging activity means most of them simply get dropped on floor, so what may actually be + * happening are mis-notifications rather than redundant notifications. + * + * xmlHTTP.onreadystatechange = undefined; + */ + sResource = xmlHTTP.responseText; + /* + * The normal "success" case is an HTTP status code of 200, but when testing with files loaded + * from the local file system (ie, when using the "file:" protocol), we have to be a bit more "flexible". + */ + if (xmlHTTP.status == 200 || !xmlHTTP.status && sResource.length && Web.getHostProtocol() == "file:") { + if (MAXDEBUG) Web.log("xmlHTTP.onreadystatechange(" + sURL + "): returned " + sResource.length + " bytes"); + } + else { + nErrorCode = xmlHTTP.status || -1; + Web.log("xmlHTTP.onreadystatechange(" + sURL + "): error code " + nErrorCode); + } + if (progress) progress(2); + if (done) done(sURL, sResource, nErrorCode); + }; + } + + if (progress) progress(0); + + if (dataPost && typeof dataPost == "object") { + var sDataPost = ""; + for (var p in dataPost) { + if (!dataPost.hasOwnProperty(p)) continue; + if (sDataPost) sDataPost += "&"; + sDataPost += p + '=' + encodeURIComponent(dataPost[p]); + } + sDataPost = sDataPost.replace(/%20/g, '+'); + if (MAXDEBUG) Web.log("Web.getResource(POST " + sURL + "): " + sDataPost.length + " bytes"); + xmlHTTP.open("POST", sURL, fAsync); // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it) + xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xmlHTTP.send(sDataPost); + } else { + if (MAXDEBUG) Web.log("Web.getResource(GET " + sURL + ")"); + xmlHTTP.open("GET", sURL, fAsync); // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it) + if (dataPost == "bytes") { + xmlHTTP.overrideMimeType("text/plain; charset=x-user-defined"); + } + xmlHTTP.send(); + } + + if (!fAsync) { + sResource = xmlHTTP.responseText; + if (xmlHTTP.status == 200) { + if (MAXDEBUG) Web.log("Web.getResource(" + sURL + "): returned " + sResource.length + " bytes"); + } else { + nErrorCode = xmlHTTP.status || -1; + Web.log("Web.getResource(" + sURL + "): error code " + nErrorCode); + } + if (done) done(sURL, sResource, nErrorCode); + response = [sResource, nErrorCode]; + } + return response; + } + + /** + * parseMemoryResource(sURL, sData) + * + * This converts a variety of JSON-style data streams into an Object with the following properties: + * + * aBytes + * aSymbols + * addrLoad + * addrExec + * + * If the source data contains a 'bytes' array, it's passed through to 'aBytes'; alternatively, if + * it contains a 'words' array, the values are converted from 16-bit to 8-bit and stored in 'aBytes', + * and if it contains a 'longs' array, the values are converted from 32-bit longs into bytes and + * stored in 'aBytes'. + * + * Alternatively, if the source data contains a 'data' array, we simply pass that through to the output + * object as: + * + * aData + * + * @param {string} sURL + * @param {string} sData + * @return {Object|null} (resource) + */ + static parseMemoryResource(sURL, sData) + { + var i; + var resource = { + aBytes: null, + aSymbols: null, + addrLoad: null, + addrExec: null + }; + + if (sData.charAt(0) == "[" || sData.charAt(0) == "{") { + try { + var a, ib, data; + + if (sData.substr(0, 1) == "<") { // if the "data" begins with a "<"... + /* + * Early server configs reported an error (via the nErrorCode parameter) if a tape URL was invalid, + * but more recent server configs now display a somewhat friendlier HTML error page. The downside, + * however, is that the original error has been buried, and we've received "data" that isn't actually + * tape data. So if the data we've received appears to be "HTML-like", we treat it as an error message. + */ + throw new Error(sData); + } + + /* + * TODO: IE9 is rather unfriendly and restrictive with regard to how much data it's willing to + * eval(). In particular, the 10Mb disk image we use for the Windows 1.01 demo config fails in + * IE9 with an "Out of memory" exception. One work-around would be to chop the data into chunks + * (perhaps one track per chunk, using regular expressions) and then manually re-assemble it. + * + * However, it turns out that using JSON.parse(sDiskData) instead of eval("(" + sDiskData + ")") + * is a much easier fix. The only drawback is that we must first quote any unquoted property names + * and remove any comments, because while eval() was cool with them, JSON.parse() is more particular; + * the following RegExp replacements take care of those requirements. + * + * The use of hex values is something else that eval() was OK with, but JSON.parse() is not, and + * while I've stopped using hex values in DumpAPI responses (at least when "format=json" is specified), + * I can't guarantee they won't show up in "legacy" images, and there's no simple RegExp replacement + * for transforming hex values into decimal values, so I cop out and fall back to eval() if I detect + * any hex prefixes ("0x") in the sequence. Ditto for error messages, which appear like so: + * + * ["unrecognized disk path: test.img"] + */ + if (sData.indexOf("0x") < 0 && sData.indexOf("0o") < 0 && sData.substr(0, 2) != '["') { + data = JSON.parse(sData.replace(/([a-z]+):/gm, '"$1":').replace(/\/\/[^\n]*/gm, "")); + } else { + data = eval("(" + sData + ")"); + } + + resource.addrLoad = data['load']; + resource.addrExec = data['exec']; + + if (a = data['bytes']) { + resource.aBytes = a; + } + else if (a = data['words']) { + /* + * Convert all words into bytes + */ + resource.aBytes = new Array(a.length * 2); + for (i = 0, ib = 0; i < a.length; i++) { + resource.aBytes[ib++] = a[i] & 0xff; + resource.aBytes[ib++] = (a[i] >> 8) & 0xff; + + } + } + else if (a = data['longs']) { + /* + * Convert all dwords (longs) into bytes + */ + resource.aBytes = new Array(a.length * 4); + for (i = 0, ib = 0; i < a.length; i++) { + resource.aBytes[ib++] = a[i] & 0xff; + resource.aBytes[ib++] = (a[i] >> 8) & 0xff; + resource.aBytes[ib++] = (a[i] >> 16) & 0xff; + resource.aBytes[ib++] = (a[i] >> 24) & 0xff; + } + } + else if (a = data['data']) { + resource.aData = a; + } + else { + resource.aBytes = data; + } + + if (resource.aBytes) { + if (!resource.aBytes.length) { + Component.error("Empty resource: " + sURL); + resource = null; + } + else if (resource.aBytes.length == 1) { + Component.error(resource.aBytes[0]); + resource = null; + } + } + resource.aSymbols = data['symbols']; + + } catch (e) { + Component.error("Resource data error (" + sURL + "): " + e.message); + resource = null; + } + } + else { + /* + * Parse the data manually; we assume it's a series of hex byte-values separated by whitespace. + */ + var ab = []; + var sHexData = sData.replace(/\n/gm, " ").replace(/ +$/, ""); + var asHexData = sHexData.split(" "); + for (i = 0; i < asHexData.length; i++) { + var n = parseInt(asHexData[i], 16); + if (isNaN(n)) { + Component.error("Resource data error (" + sURL + "): invalid hex byte (" + asHexData[i] + ")"); + break; + } + ab.push(n & 0xff); + } + if (i == asHexData.length) resource.aBytes = ab; + } + return resource; + } + + /** + * sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName) + * + * Send a report (eg, bug report) to the server. + * + * @param {string} sApp (eg, "PCjs") + * @param {string} sVer (eg, "1.02") + * @param {string} sURL (eg, "/devices/pc/machine/5150/mda/64kb/machine.xml") + * @param {string} sUser (ie, the user key, if any) + * @param {string} sType (eg, "bug"); one of ReportAPI.TYPE.* + * @param {string} sReport (eg, unparsed state data) + * @param {string} [sHostName] (default is http://SITEHOST) + */ + static sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName) + { + var dataPost = {}; + dataPost[ReportAPI.QUERY.APP] = sApp; + dataPost[ReportAPI.QUERY.VER] = sVer; + dataPost[ReportAPI.QUERY.URL] = sURL; + dataPost[ReportAPI.QUERY.USER] = sUser; + dataPost[ReportAPI.QUERY.TYPE] = sType; + dataPost[ReportAPI.QUERY.DATA] = sReport; + var sReportURL = (sHostName? sHostName : "http://" + SITEHOST) + ReportAPI.ENDPOINT; + Web.getResource(sReportURL, dataPost, true); + } + + /** + * getHost() + * + * @return {string} + */ + static getHost() + { + return ("http://" + (window? window.location.host : SITEHOST)); + } + + /** + * getHostURL() + * + * @return {string|null} + */ + static getHostURL() + { + return (window? window.location.href : null); + } + + /** + * getHostProtocol() + * + * @return {string} + */ + static getHostProtocol() + { + return (window? window.location.protocol : "file:"); + } + + /** + * getUserAgent() + * + * @return {string} + */ + static getUserAgent() + { + return (window? window.navigator.userAgent : ""); + } + + /** + * hasLocalStorage + * + * true if localStorage support exists, is enabled, and works; false otherwise + * + * @return {boolean} + */ + static hasLocalStorage() + { + if (Web.fLocalStorage == null) { + var f = false; + if (window) { + try { + window.localStorage.setItem(Web.sLocalStorageTest, Web.sLocalStorageTest); + f = (window.localStorage.getItem(Web.sLocalStorageTest) == Web.sLocalStorageTest); + window.localStorage.removeItem(Web.sLocalStorageTest); + } catch (e) { + Web.logLocalStorageError(e); + f = false; + } + } + Web.fLocalStorage = f; + } + return Web.fLocalStorage; + } + + /** + * logLocalStorageError(e) + * + * @param {Error} e is an exception + */ + static logLocalStorageError(e) + { + Web.log(e.message, "localStorage error"); + } + + /** + * getLocalStorageItem(sKey) + * + * Returns the requested key value, or null if the key does not exist, or undefined if localStorage is not available + * + * @param {string} sKey + * @return {string|null|undefined} sValue + */ + static getLocalStorageItem(sKey) + { + var sValue; + if (window) { + try { + sValue = window.localStorage.getItem(sKey); + } catch (e) { + Web.logLocalStorageError(e); + } + } + return sValue; + } + + /** + * setLocalStorageItem(sKey, sValue) + * + * @param {string} sKey + * @param {string} sValue + * @return {boolean} true if localStorage is available, false if not + */ + static setLocalStorageItem(sKey, sValue) + { + try { + window.localStorage.setItem(sKey, sValue); + return true; + } catch (e) { + Web.logLocalStorageError(e); + } + return false; + } + + /** + * removeLocalStorageItem(sKey) + * + * @param {string} sKey + */ + static removeLocalStorageItem(sKey) + { + try { + window.localStorage.removeItem(sKey); + } catch (e) { + Web.logLocalStorageError(e); + } + } + + /** + * getLocalStorageKeys() + * + * @return {Array} + */ + static getLocalStorageKeys() + { + var a = []; + try { + for (var i = 0, c = window.localStorage.length; i < c; i++) { + a.push(window.localStorage.key(i)); + } + } catch (e) { + Web.logLocalStorageError(e); + } + return a; + } + + /** + * reloadPage() + */ + static reloadPage() + { + if (window) window.location.reload(); + } + + /** + * isUserAgent(s) + * + * Check the browser's user-agent string for the given substring; "iOS" and "MSIE" are special values you can + * use that will match any iOS or MSIE browser, respectively (even IE11, in the case of "MSIE"). + * + * 2013-11-06: In a questionable move, MSFT changed the user-agent reported by IE11 on Windows 8.1, eliminating + * the "MSIE" string (which MSDN calls a "version token"; see http://msdn.microsoft.com/library/ms537503.aspx); + * they say "public websites should rely on feature detection, rather than browser detection, in order to design + * their sites for browsers that don't support the features used by the website." So, in IE11, we get a user-agent + * that tries to fool apps into thinking the browser is more like WebKit or Gecko: + * + * Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko + * + * That's a nice idea, but in the meantime, they hosed the XSL transform code in embed.js, which contained + * some very critical browser-specific code; turning on IE's "Compatibility Mode" didn't help either, because + * that's a sledgehammer solution which restores the old user-agent string but also disables other features like + * HTML5 canvas support. As an interim solution, I'm treating any "MSIE" check as a check for either "MSIE" or + * "Trident". + * + * UPDATE: I've since found ways to make the code in embed.js more browser-agnostic, so for now, there's isn't + * any code that cares about "MSIE", but I've left the change in place, because I wouldn't be surprised if I'll + * need more IE-specific code in the future, perhaps for things like copy/paste functionality, or mouse capture. + * + * @param {string} s is a substring to search for in the user-agent; as noted above, "iOS" and "MSIE" are special values + * @return {boolean} is true if the string was found, false if not + */ + static isUserAgent(s) + { + if (window) { + var userAgent = Web.getUserAgent(); + /* + * Here's one case where we have to be careful with Component, because when isUserAgent() is called by + * the init code below, component.js hasn't been loaded yet. The simple solution for now is to remove the call. + * + * Web.log("agent: " + userAgent); + * + * And yes, it would be pointless to use the conditional (?) operator below, if not for the Google Closure + * Compiler (v20130823) failing to detect the entire expression as a boolean. + */ + return s == "iOS" && !!userAgent.match(/(iPod|iPhone|iPad)/) && !!userAgent.match(/AppleWebKit/) || s == "MSIE" && !!userAgent.match(/(MSIE|Trident)/) || (userAgent.indexOf(s) >= 0); + } + return false; + } + + /** + * isMobile() + * + * Check the browser's user-agent string for the substring "Mobi", as per Mozilla recommendation: + * + * https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent + * + * @return {boolean} is true if the browser appears to be a mobile (ie, non-desktop) web browser, false if not + */ + static isMobile() + { + return Web.isUserAgent("Mobi"); + } + + /** + * findProperty(obj, sProp, sSuffix) + * + * If both sProp and sSuffix are set, then any browser-specific prefixes are inserted between sProp and sSuffix, + * and if a match is found, it is returned without sProp. + * + * For example, if findProperty(document, 'on', 'fullscreenchange') discovers that 'onwebkitfullscreenchange' exists, + * it will return 'webkitfullscreenchange', in preparation for an addEventListener() call. + * + * More commonly, sSuffix is not used, so whatever property is found is returned as-is. + * + * @param {Object|null|undefined} obj + * @param {string} sProp + * @param {string} [sSuffix] + * @return {string|null} + */ + static findProperty(obj, sProp, sSuffix) + { + if (obj) { + for (var i = 0; i < Web.asBrowserPrefixes.length; i++) { + var sName = Web.asBrowserPrefixes[i]; + if (sSuffix) { + sName += sSuffix; + var sEvent = sProp + sName; + if (sEvent in obj) return sName; + } else { + if (!sName) { + sName = sProp[0]; + } else { + sName += sProp[0].toUpperCase(); + } + sName += sProp.substr(1); + if (sName in obj) return sName; + } + } + } + return null; + } + + /** + * getURLParm(sParm) + * + * First looks for sParm exactly as specified, then looks for the lower-case version. + * + * @param {string} sParm + * @return {string|undefined} + */ + static getURLParm(sParm) + { + if (!Web.parmsURL) { + Web.parmsURL = Web.parseURLParms(); + } + return Web.parmsURL[sParm] || Web.parmsURL[sParm.toLowerCase()]; + } + + /** + * parseURLParms(sParms) + * + * @param {string} [sParms] containing the parameter portion of a URL (ie, after the '?') + * @return {Object} containing properties for each parameter found + */ + static parseURLParms(sParms) + { + var aParms = {}; + if (window) { // an alternative to "if (typeof module === 'undefined')" if require("defines") was used + if (!sParms) { + /* + * Note that window.location.href returns the entire URL, whereas window.location.search + * returns only the parameters, if any (starting with the '?', which we skip over with a substr() call). + */ + sParms = window.location.search.substr(1); + } + var match; + var pl = /\+/g; // RegExp for replacing addition symbol with a space + var search = /([^&=]+)=?([^&]*)/g; + var decode = function(s) + { + return decodeURIComponent(s.replace(pl, " ")); + }; + + while ((match = search.exec(sParms))) { + aParms[decode(match[1])] = decode(match[2]); + } + } + return aParms; + } + + /** + * downloadFile(sData, sType, fBase64, sFileName) + * + * @param {string} sData + * @param {string} sType + * @param {boolean} [fBase64] + * @param {string} [sFileName] + */ + static downloadFile(sData, sType, fBase64, sFileName) + { + var link = null, sAlert; + var sURI = "data:application/" + sType + (fBase64? ";base64" : "") + ","; + + if (!Web.isUserAgent("Firefox")) { + sURI += (fBase64? sData : encodeURI(sData)); + } else { + sURI += (fBase64? sData : encodeURIComponent(sData)); + } + if (sFileName) { + link = document.createElement('a'); + if (typeof link.download != 'string') link = null; + } + if (link) { + link.href = sURI; + link.download = sFileName; + document.body.appendChild(link); // Firefox allegedly requires the link to be in the body + link.click(); + document.body.removeChild(link); + sAlert = 'Check your Downloads folder for ' + sFileName + '.'; + } else { + window.open(sURI); + sAlert = 'Check your browser for a new window/tab containing the requested data' + (sFileName? (' (' + sFileName + ')') : '') + '.'; + } + return sAlert; + } + + /** + * onCountRepeat(n, fnRepeat, fnComplete, msDelay) + * + * Call fnRepeat() n times with an msDelay millisecond delay between calls, + * then call fnComplete() when n has been exhausted OR fnRepeat() returns false. + * + * @param {number} n + * @param {function()} fnRepeat + * @param {function()} fnComplete + * @param {number} [msDelay] + */ + static onCountRepeat(n, fnRepeat, fnComplete, msDelay) + { + var fnTimeout = function doCountRepeat() + { + n -= 1; + if (n >= 0) { + if (!fnRepeat()) n = 0; + } + if (n > 0) { + setTimeout(fnTimeout, msDelay || 0); + return; + } + fnComplete(); + }; + fnTimeout(); + } + + /** + * onClickRepeat(e, msDelay, msRepeat, fn) + * + * Repeatedly call fn() with an initial msDelay, and an msRepeat delay thereafter, + * as long as HTML control Object e has an active "down" event and fn() returns true. + * + * @param {Object} e + * @param {number} msDelay + * @param {number} msRepeat + * @param {function(boolean)} fn is passed false on the first call, true on all repeated calls + */ + static onClickRepeat(e, msDelay, msRepeat, fn) + { + var ms = 0, timer = null, fIgnoreMouseEvents = false; + + var fnRepeat = function doClickRepeat() + { + if (fn(ms === msRepeat)) { + timer = setTimeout(fnRepeat, ms); + ms = msRepeat; + } + }; + e.onmousedown = function() + { + // Web.log("onMouseDown()"); + if (!fIgnoreMouseEvents) { + if (!timer) { + ms = msDelay; + fnRepeat(); + } + } + }; + e.ontouchstart = function() + { + // Web.log("onTouchStart()"); + if (!timer) { + ms = msDelay; + fnRepeat(); + } + }; + e.onmouseup = e.onmouseout = function() + { + // Web.log("onMouseUp()/onMouseOut()"); + if (timer) { + clearTimeout(timer); + timer = null; + } + }; + e.ontouchend = e.ontouchcancel = function() + { + // Web.log("onTouchEnd()/onTouchCancel()"); + if (timer) { + clearTimeout(timer); + timer = null; + } + /* + * Devices that generate ontouch* events ALSO generate onmouse* events, + * and generally do so immediately after all the touch events are complete, + * so unless we want double the action, we need to ignore mouse events. + */ + fIgnoreMouseEvents = true; + }; + } + + /** + * onPageEvent(sName, fn) + * + * For 'onload', 'onunload', and 'onpageshow' events, most callers should NOT use this function, but + * instead use Web.onInit(), Web.onShow(), and Web.onExit(), respectively. + * + * The only components that should still use onPageEvent() are THIS component (see the bottom of this file) + * and components that need to capture other events (eg, the 'onresize' event in the Video component). + * + * This function creates a chain of callbacks, allowing multiple JavaScript modules to define handlers + * for the same event, which wouldn't be possible if everyone modified window['onload'], window['onunload'], + * etc, themselves. However, that's less of a concern now, because assuming everyone else is now using + * onInit(), onExit(), etc, then there really IS only one component setting the window callback: this one. + * + * NOTE: It's risky to refer to obscure event handlers with "dot" names, because the Closure Compiler may + * erroneously replace them (eg, window.onpageshow is a good example). + * + * @param {string} sFunc + * @param {function()} fn + */ + static onPageEvent(sFunc, fn) + { + if (window) { + var fnPrev = window[sFunc]; + if (typeof fnPrev !== 'function') { + window[sFunc] = fn; + } else { + /* + * TODO: Determine whether there's any value in receiving/sending the Event object that the + * browser provides when it generates the original event. + */ + window[sFunc] = function onWindowEvent() + { + if (fnPrev) fnPrev(); + fn(); + }; + } + } + }; + + /** + * onInit(fn) + * + * Use this instead of setting window.onload. Allows multiple JavaScript modules to define their own 'onload' event handler. + * + * @param {function()} fn + */ + static onInit(fn) + { + Web.aPageEventHandlers['init'].push(fn); + }; + + /** + * onShow(fn) + * + * @param {function()} fn + * + * Use this instead of setting window.onpageshow. Allows multiple JavaScript modules to define their own 'onpageshow' event handler. + */ + static onShow(fn) + { + Web.aPageEventHandlers['show'].push(fn); + }; + + /** + * onExit(fn) + * + * @param {function()} fn + * + * Use this instead of setting window.onunload. Allows multiple JavaScript modules to define their own 'onunload' event handler. + */ + static onExit(fn) + { + Web.aPageEventHandlers['exit'].push(fn); + }; + + /** + * doPageEvent(afn) + * + * @param {Array.} afn + */ + static doPageEvent(afn) + { + if (Web.fPageEventsEnabled) { + try { + for (var i = 0; i < afn.length; i++) { + afn[i](); + } + } catch (e) { + Web.notice("An unexpected exception occurred:\n\n" + e.message + "\n\nPlease send this information to support@pcjs.org. Thanks."); + } + } + }; + + /** + * enablePageEvents(fEnable) + * + * @param {boolean} fEnable is true to enable page events, false to disable (they're enabled by default) + */ + static enablePageEvents(fEnable) + { + if (!Web.fPageEventsEnabled && fEnable) { + Web.fPageEventsEnabled = true; + if (Web.fPageLoaded) Web.sendPageEvent('init'); + if (Web.fPageShowed) Web.sendPageEvent('show'); + return; + } + Web.fPageEventsEnabled = fEnable; + } + + /** + * sendPageEvent(sEvent) + * + * This allows us to manually trigger page events. + * + * @param {string} sEvent (one of 'init', 'show' or 'exit') + */ + static sendPageEvent(sEvent) + { + if (Web.aPageEventHandlers[sEvent]) { + Web.doPageEvent(Web.aPageEventHandlers[sEvent]); + } + } +} + +Web.parmsURL = null; // initialized on first call to parseURLParms() + +Web.aPageEventHandlers = { + 'init': [], // list of window 'onload' handlers + 'show': [], // list of window 'onpageshow' handlers + 'exit': [] // list of window 'onunload' handlers (although we prefer to use 'onbeforeunload' if possible) +}; + +Web.asBrowserPrefixes = ['', 'moz', 'ms', 'webkit']; + +Web.fPageLoaded = false; // set once the page's first 'onload' event has occurred +Web.fPageShowed = false; // set once the page's first 'onpageshow' event has occurred +Web.fPageEventsEnabled = true; // default is true, set to false (or true) by enablePageEvents() + +/** + * fLocalStorage + * + * true if localStorage support exists, is enabled, and works; "falsey" otherwise + * + * @type {boolean|null} + */ +Web.fLocalStorage = null; + +/** + * TODO: Is there any way to get the Closure Compiler to stop inlining this string? This isn't cutting it. + * + * @const {string} + */ +Web.sLocalStorageTest = "PCjs.localStorage"; + +Web.onPageEvent('onload', function onPageLoad() { + Web.fPageLoaded = true; + Web.doPageEvent(Web.aPageEventHandlers['init']); +}); + +Web.onPageEvent('onpageshow', function onPageShow() { + Web.fPageShowed = true; + Web.doPageEvent(Web.aPageEventHandlers['show']); +}); + +Web.onPageEvent(Web.isUserAgent("iOS")? 'onpagehide' : (Web.isUserAgent("Opera")? 'onunload' : 'onbeforeunload'), function onPageUnload() { + Web.doPageEvent(Web.aPageEventHandlers['exit']); +}); + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + */ + +/* + * All PCjs components now use JSDoc types, primarily so that Google's Closure Compiler will compile + * everything with zero warnings when ADVANCED_OPTIMIZATIONS are enabled. For more information about + * the JSDoc types supported by the Closure Compiler: + * + * https://developers.google.com/closure/compiler/docs/js-for-compiler#types + * + * I also attempted to validate this code with JSLint, but it complained too much; eg, it didn't like + * "while (true)", a tried and "true" programming convention for decades, and it wanted me to replace + * all "++" and "--" operators with "+= 1" and "-= 1", use "(s || '')" instead of "(s? s : '')", etc. + * + * I prefer sticking with traditional C-style idioms, in part because they are more portable. That + * does NOT mean I'm trying to write "portable JavaScript," but some of this code was ported from C code + * I'd written long ago, so portability is good, and I'm not going to throw that away if there's no need. + * + * UPDATE: I've since switched from JSLint to JSHint, which seems to have more reasonable defaults. + * And for new code, I have adopted some popular JavaScript idioms, like "(s || '')", although the need + * for those kinds of expressions will be reduced as I also start adopting some ES6 features, like + * default parameters. + */ + + +/** + * Since the Closure Compiler treats ES6 classes as @struct rather than @dict by default, + * it deters us from defining named properties on our components; eg: + * + * this['exports'] = {...} + * + * results in an error: + * + * Cannot do '[]' access on a struct + * + * So, in order to define 'exports', we must override the @struct assumption by annotating + * the class as @unrestricted (or @dict). Note that this must be done both here and in the + * subclass (eg, SerialPort), because otherwise the Compiler won't allow us to *reference* + * the named property either. + * + * TODO: Consider marking ALL our classes unrestricted, because otherwise it forces us to + * define every single property the class uses in its constructor, which results in a fair + * bit of redundant initialization, since many properties aren't (and don't need to be) fully + * initialized until the appropriate init(), reset(), restore(), etc. function is called. + * + * The upside, however, may be that since the structure of the class is completely defined by + * the constructor, JavaScript engines may be able to optimize and run more efficiently. + * + * @unrestricted + */ +class Component { + /** + * Component(type, parms, bitsMessage) + * + * A Component object requires: + * + * type: a user-defined type name (eg, "CPU") + * + * and accepts any or all of the following (parms) properties: + * + * id: component ID (default is "") + * name: component name (default is ""; if blank, toString() will use the type name only) + * comment: component comment string (default is undefined) + * + * Component subclasses will usually have additional (parms) properties. + * + * @param {string} type + * @param {Object} [parms] + * @param {number} [bitsMessage] selects message(s) that the component wants to enable (default is 0) + */ + constructor(type, parms, bitsMessage) + { + this.type = type; + + if (!parms) parms = {'id': "", 'name': ""}; + + this.id = parms['id'] || ""; + this.name = parms['name']; + this.comment = parms['comment']; + this.parms = parms; + + /* + * The following Component properties need to be accessible by other machines and/or command scripts; + * well, OK, or we could have exported some new functions to walk the contents of these properties, as we + * did with findMachineComponent(), but this works just as well. + * + * Also, while the double-assignment looks silly (ie, using both dot and bracket property notation), it + * resolves a complaint from the Closure Compiler, because if we use ONLY bracket notation here, then the + * Compiler wants us to change all the other references to bracket notation as well. + */ + this.exports = this['exports'] = {}; + this.bindings = this['bindings'] = {}; + + var i = this.id.indexOf('.'); + if (i < 0) { + this.idComponent = this.id; + } else { + this.idMachine = this.id.substr(0, i); + this.idComponent = this.id.substr(i + 1); + } + + /* + * Gather all the various component flags (booleans) into a single "flags" object, and encourage + * subclasses to do the same, to reduce the property clutter we have to wade through while debugging. + */ + this.flags = { + ready: false, + busy: false, + busyCancel: false, + initDone: false, + powered: false, + unloading: false, + error: false + }; + + this.fnReady = null; + this.clearError(); + this.bitsMessage = bitsMessage || 0; + + this.cmp = null; + this.bus = null; + this.cpu = null; + this.dbg = null; + + /* + * TODO: Consider adding another parameter to the Component() constructor that allows components to tell + * us if they support single or multiple instances per machine. For example, there can be multiple SerialPort + * components per machine, but only one CPU component (some machines also support an FPU, but that component + * is considered separate from the CPU). + * + * It's not critical, but it would help catch machine configuration errors; for example, a machine that mistakenly + * includes two CPU components may, aside from wasting memory, end up with odd side-effects, like unresponsive + * CPU controls. + */ + Component.add(this); + } + + /** + * Component.add(component) + * + * @param {Component} component + */ + static add(component) + { + /* + * This just generates a lot of useless noise, handy in the early days, not so much these days.... + * + * if (DEBUG) Component.log("Component.add(" + component.type + "," + component.id + ")"); + */ + Component.components.push(component); + } + + /** + * Component.addMachine(idMachine) + * + * @param {string} idMachine + */ + static addMachine(idMachine) + { + Component.machines[idMachine] = {}; + } + + /** + * Component.addMachineResource(idMachine, sName, data) + * + * @param {string} idMachine + * @param {string|null} sName (name of the resource) + * @param {*} data + */ + static addMachineResource(idMachine, sName, data) + { + /* + * I used to assert(Component.machines[idMachine]), but when we're running as a Node app, embed.js is not used, + * so addMachine() is never called, so resources do not need to be recorded. + */ + if (Component.machines[idMachine] && sName) { + Component.machines[idMachine][sName] = data; + } + } + + /** + * Component.getMachineResources(idMachine) + * + * @param {string} idMachine + * @return {Object|undefined} + */ + static getMachineResources(idMachine) + { + return Component.machines[idMachine]; + } + + /** + * Component.getTime() + * + * @return {number} the current time, in milliseconds + */ + static getTime() + { + return Date.now() || +new Date(); + } + + /** + * Component.log(s, type) + * + * For diagnostic output only. + * + * @param {string} [s] is the message text + * @param {string} [type] is the message type + */ + static log(s, type) + { + if (!COMPILED) { + if (s) { + var sElapsed = "", sMsg = (type? (type + ": ") : "") + s; + if (typeof Usr != "undefined") { + if (Component.msStart === undefined) { + Component.msStart = Component.getTime(); + } + sElapsed = (Component.getTime() - Component.msStart) + "ms: "; + } + sMsg = sMsg.replace(/\r/g, '\\r').replace(/\n/g, ' '); + if (window && window.console) console.log(sElapsed + sMsg); + } + } + } + + /** + * Component.assert(f, s) + * + * Verifies conditions that must be true (for DEBUG builds only). + * + * The Closure Compiler should automatically remove all references to Component.assert() in non-DEBUG builds. + * TODO: Add a task to the build process that "asserts" there are no instances of "assertion failure" in RELEASE builds. + * + * @param {boolean} f is the expression we are asserting to be true + * @param {string} [s] is description of the assertion on failure + */ + static assert(f, s) + { + if (DEBUG) { + if (!f) { + if (!s) s = "assertion failure"; + Component.log(s); + throw new Error(s); + } + } + } + + /** + * Component.print(s) + * + * Components that inherit from this class should use this.print(), rather than Component.print(), because + * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the + * class method would improperly affect any other machines loaded on the same page). + * + * @this {Component} + * @param {string} s + */ + static print(s) + { + if (!COMPILED) { + var i = s.lastIndexOf('\n'); + if (i >= 0) { + Component.println(s.substr(0, i)); + s = s.substr(i + 1); + } + Component.printBuffer += s; + } + } + + /** + * Component.println(s, type, id) + * + * Components that inherit from this class should use this.println(), rather than Component.println(), because + * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the + * class method would improperly affect any other machines loaded on the same page). + * + * @param {string} [s] is the message text + * @param {string} [type] is the message type + * @param {string} [id] is the caller's ID, if any + */ + static println(s, type, id) + { + if (!COMPILED) { + s = Component.printBuffer + (s || ""); + Component.log((id? (id + ": ") : "") + (s? ("\"" + s + "\"") : ""), type); + Component.printBuffer = ""; + } + } + + /** + * Component.notice(s, fPrintOnly, id) + * + * notice() is like println() but implies a need for user notification, so we alert() as well. + * + * @param {string} s is the message text + * @param {boolean} [fPrintOnly] + * @param {string} [id] is the caller's ID, if any + * @return {boolean} + */ + static notice(s, fPrintOnly, id) + { + if (!COMPILED) { + Component.println(s, Component.TYPE.NOTICE, id); + } + if (!fPrintOnly) Component.alertUser((id? (id + ": ") : "") + s); + return true; + } + + /** + * Component.warning(s) + * + * @param {string} s describes the warning + */ + static warning(s) + { + if (!COMPILED) { + Component.println(s, Component.TYPE.WARNING); + } + Component.alertUser(s); + } + + /** + * Component.error(s) + * + * @param {string} s describes the error; an alert() is displayed as well + */ + static error(s) + { + if (!COMPILED) { + Component.println(s, Component.TYPE.ERROR); + } + Component.alertUser(s); + } + + /** + * Component.alertUser(sMessage) + * + * @param {string} sMessage + */ + static alertUser(sMessage) + { + if (window) { + window.alert(sMessage); + } else { + Component.log(sMessage); + } + }; + + /** + * Component.confirmUser(sPrompt) + * + * @param {string} sPrompt + * @returns {boolean} true if the user clicked OK, false if Cancel/Close + */ + static confirmUser(sPrompt) + { + var fResponse = false; + if (window) { + fResponse = window.confirm(sPrompt); + } + return fResponse; + } + + /** + * Component.promptUser() + * + * @param {string} sPrompt + * @param {string} [sDefault] + * @returns {string|null} + */ + static promptUser(sPrompt, sDefault) + { + var sResponse = null; + if (window) { + sResponse = window.prompt(sPrompt, sDefault === undefined? "" : sDefault); + } + return sResponse; + } + + /** + * Component.appendControl(control, sText) + * + * @param {Object} control + * @param {string} sText + */ + static appendControl(control, sText) + { + control.value += sText; + /* + * Prevent the + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + ; + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8088 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + + null + + + + + + 0 + + + + + + + -1 + + + + + + + -1 + + + + + + + -1 + + + + + + ,model:'',stepping:'',fpu:,cycles:,multiplier:,autoStart:,addrReset:,csStart:,csInterval:,csStop: + + + + + + + + + + + + + + + 8087 + + + + + + + + + + + + ,model:'',stepping:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + true + + + + + + + false + + + + + + {} + + + + + + + + + + + + + + + + + + + chipset + ,model:'',scaleTimers:,sw1:'',sw2:'',sound:,floppies:,monitor:'',dateRTC:'' + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + device + ,type:'',baudReceive:,baudTransmit:,autoMount:'' + + + + + + + + + + + + + + + + + + + + keyboard + ,model:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + parallel + ,adapter:,binding:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + 0 + + + + + + + false + + + + + serial + ,adapter:,baudReceive:,baudTransmit:,binding:'',tabSize:,charBOL:,upperCase: + + + + + + + + + + + + + + + + + + + + + 0.5 + + + + + mouse + ,serial:'',scaleMouse: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdc + ,autoMount:'',sortBy:'' + + + + + + + + + + + + + + + + + + + + + xt + + + + + hdc + ,drives:'',type:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + null + + + + + + + + + + + + + + + + + rom + ,addr:,size:,alias:,file:'',notify:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + null + + + + + + null + + + + + + true + + + + + ram + ,addr:,size:,file:'',load:,exec:,test: + + + + + + + + + + + + + + + + + + + + + null + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 0 + + + + + + 0 + + + + + + false + + + + + + 1bpp + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + false + + + + + + 1 + + + + + + 1 + + + + + + + 80 + + + + + + + 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + 0 + + + + + + null + + + + + + 0 + + + + + + 60 + + + + + + 0.5 + + + + + video + ,model:'',mode:,screenWidth:,screenHeight:,screenColor:'',screenRotate:,bufferAddr:,bufferRAM:,bufferFormat:'',bufferCols:,bufferRows:,bufferBits:,bufferLeft:,bufferRotate:,memory:,switches:'',scale:,cellWidth:,cellHeight:,charCols:,charRows:,fontROM:'',fontColor:'',touchScreen:'',autoLock:,aspectRatio:,smoothing:,interruptRate:,refreshRate:,flicker: + + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + + + debugger + ,base:,commands:'',messages:'' + + + + + + + + + + + + + + panel + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + computer + ,autoPower:,busWidth:,resume:'',state:'' + + + + + + + + diff --git a/versions/pcx86/1.36.2/document.css b/versions/pcx86/1.36.2/document.css new file mode 100644 index 000000000..7072b406e --- /dev/null +++ b/versions/pcx86/1.36.2/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/pcx86/1.36.2/document.xsl b/versions/pcx86/1.36.2/document.xsl new file mode 100644 index 000000000..e175f2d28 --- /dev/null +++ b/versions/pcx86/1.36.2/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

    +
    + + + + + + + +

    +
    + +

    +
    +
    +
    + + + + + + +
    +
    + + +
    + +   + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/pcx86/1.36.2/machine.xsl b/versions/pcx86/1.36.2/machine.xsl new file mode 100644 index 000000000..99369d6c1 --- /dev/null +++ b/versions/pcx86/1.36.2/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pcx86/1.36.2/manifest.xsl b/versions/pcx86/1.36.2/manifest.xsl new file mode 100644 index 000000000..f59c2e365 --- /dev/null +++ b/versions/pcx86/1.36.2/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/pcx86/1.36.2/outline.xsl b/versions/pcx86/1.36.2/outline.xsl new file mode 100644 index 000000000..2692165e1 --- /dev/null +++ b/versions/pcx86/1.36.2/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pcx86/1.36.2/pcx86-dbg.js b/versions/pcx86/1.36.2/pcx86-dbg.js new file mode 100644 index 000000000..354ff072b --- /dev/null +++ b/versions/pcx86/1.36.2/pcx86-dbg.js @@ -0,0 +1,908 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/diskapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/interrupts.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86seg.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86fpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86func.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86help.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86mods.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86ops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86op0f.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/chipset.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/keyboard.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/video.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/parallel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/mouse.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/disk.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/fdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/hdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/computer.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2017 +*/ +var l,aa;function ba(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} +var ca="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},da="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this; +function ea(a,b){if(b){var c=da;a=a.split(".");for(var d=0;da?-b:b}});ea("Math.sign",function(a){return a?a:function(a){a=Number(a);return!a||isNaN(a)?a:0":62,"?":63,"@":64,fe:65,si:66,ti:67,ui:68,E:69,vi:70,wi:71,xi:72,yi:73,zi:74,Ai:75,Bi:76,Ci:77,Di:78,Ei:79,Fi:80,Q:81,Gi:82,Hi:83,Ii:84,Ji:85,Ki:86,Li:87,Mi:88,Ni:89,ag:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,ge:97,sl:98,ul:99,d:100,e:101,Dl:102,El:103,Fl:104,Gl:105,Wm:106,k:107,Ym:108,dn:109,n:110,on:111,p:112,q:113,r:114,Mo:115,t:116,Qo:117, +Ro:118,So:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Op:127},ga={};ga[173]=n["-"];ga[186]=n[";"];ga[187]=n["="];ga[189]=n["-"];ga[188]=n[","];ga[190]=n["."];ga[191]=n["/"];ga[192]=n["`"];ga[219]=n["["];ga[220]=n["\\"];ga[221]=n["]"];ga[222]=n["'"];var ha={};ha[n["1"]]=n["!"];ha[n["2"]]=n["@"];ha[n["3"]]=n["#"];ha[n["4"]]=n.$;ha[n["5"]]=n["%"];ha[n["6"]]=n["^"];ha[n["7"]]=n["&"];ha[n["8"]]=n["*"];ha[n["9"]]=n["("];ha[n["0"]]=n[")"];ha[186]=n[":"];ha[187]=n["+"];ha[188]=n["<"];ha[189]=n._; +ha[190]=n[">"];ha[191]=n["?"];ha[192]=n["~"];ha[219]=n["{"];ha[220]=n["|"];ha[221]=n["}"];ha[222]=n['"'];ha[173]=n._;ha[61]=n["+"];ha[59]=n[":"]; +function ia(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function la(a,b,c){b?36=b?8:262143>=b?18:36);return ja(a,2,b,"",c)} +function ma(a,b,c){b?12=b?6:16777215>=b?8:12);return ja(a,8,b,c?"0o":"")}function q(a,b,c){b?9=b?4:4294967295>=b?8:9);return ja(a,16,b,c?"0x":"")}function na(a){return q(a,2,!0)}function oa(a){return q(a,4,!0)}function pa(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0"']/g,function(a){return ua[a]})}function va(a,b,c){return c?(" "+a).slice(-b):(a+" ").slice(0,b)}function wa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} +var ua={"&":"&","<":"<",">":">",'"':""","'":"'"},xa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};function ya(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0d?"am":"pm";break;case "d":c+=("0"+e).slice(-2);break;case "D":c+=Aa[b.getDay()].substr(0,3);break;case "F":c+=Ba[f-1];break;case "g":c+=d?12c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;ca?this.Ce=this.id:(this.ee=this.id.substr(0,a),this.Ce=this.id.substr(a+1));this.Z={ready:!1,mf:!1,Zg:!1,pf:!1,bc:!1,Ae:!1,error:!1};this.ng=null;this.Z.error=!1;this.fc=c||0;this.ca=this.H=this.na=this.oa=null;mb.push(this)} +function nb(a,b,c){ob[a]&&b&&(ob[a][b]=c)}function ab(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a,b){a.value+=b;b=a.value;8192e?d+=b+"\n":d=d.substr(0,e)+c+d.substr(e+b.length);8192Math.abs(a.B-b)?1:2),1==a.G?b=a.B:2==a.G&&(d=a.A));a.A=d;a.B=b;if(0<=d&&d>d.shift;d=g*a.na.B;f=(g+f.iq)*a.na.B-1;0f&&(d=f);c=d;break a}c=-1}if(-1!==c&&(c&=-16,c!=a.N)){b=c;if(a.context&&a.K&&a.L){e=bc-cc;f=a.K.width;a.L.fillStyle=dc;a.L.fillRect(0,e,f,cc);d=e+ec;g=a.K;var h=a.L,k,m=null.style.color,p=a.ka=10;a.D=p;a.J=d;a.ea=a.ba=ec;k||(k=a.U||a.ba+"px "+fc);a.aa=a.U=k;g&&(a.P=g);h&&(a.I=h,a.V=m||"white");a.M=a.P.width/24|0;if(null==b)gc(a,"Mouse over memory to dump");else for(gc(a,q(b,8,!0),null,0,1),k=1;16>=k;k++){d="";for(g=1;8>=g;g++)h=a.na,m=b++,h=h.aa[(m&h.C)>>>h.A].be(m&h.D,m),gc(a,q(h,2),null,1), +d+=32<=h&&128>h?String.fromCharCode(h):".";gc(a,d,null,0,1)}a.context.drawImage(a.K,0,e,f,cc,a.ra,a.va,a.la,a.qa)}a.N=c}}}function gc(a,b,c,d,e){a.I.font=a.aa;a.I.fillStyle=a.V;a.I.fillText(b,a.D,a.J);a.D+=a.M;null!=c&&(16!=a.pa?b=c.toString():(b=8>a.fa?"0x":"",b+=q(c,a.fa)),a.I.fillText(b,a.D,a.J),a.D+=a.M);d&&(a.D+=a.M*d);e&&(a.D=a.ka,a.J+=(a.ea+2)*(e||1))} +function Wb(){for(var a=!1,b=vb(document,"pcx86","panel"),c=0;c>2,bc=Zb,dc="black",cc=Zb>>1;Xa(Wb); +function hc(a,b,c){ib.call(this,"Bus",a);this.H=b;this.ca=c;this.I=a.busWidth||20;this.ba=Math.pow(2,this.I);this.N=this.C=this.ba-1|0;this.A=32==this.I||20>=this.I?12:24>=this.I?14:15;this.B=1<>2;this.D=this.B-1;this.M=this.ba/this.B|0;this.P=this.M-1;this.F=[];this.G=[];this.K=this.L=!1;this.V=[];this.U=[];a=new w;ic(a,this.ca);this.aa=Array(this.M);for(b=0;b>>a.A;0g&&(p=g);if(k&&k.size){if(k.type==d&&k.controller==e){if(f+g<=k.za)return k.Be+=k.za-f,k.za=f,!0;if(f>=k.za+k.Be){p=k.size-(f-m);p>g&&(p=g);k.Be=f-k.za+p;f=m+a.B;g-=p;h++;continue}}return lc(a,mc,f,g)}f=new w(f,p,a.B,d,e);ic(f,a.ca,k);a.aa[h++]=f;f=m+a.B;g-=p}return 0>=g?(nc(a.H),a.H.Z.Xa||(e=c/1024|0,a.status((e?e+"Kb ":c+" bytes ")+oc[d]+" at "+q(b))),!0):lc(a,pc,b,c)} +function jc(a,b){32==a.I?b?a.J&&(qc(a,1048576,1048576,a.J),a.J=null):a.J||(a.J=rc(a,1048576,1048576),qc(a,1048576,1048576,rc(a,0,1048576))):20>>this.A;0>>a.A;0>>=a.A;0>>a.A;0>>this.A].Cc(a&this.D,a)};function Ec(a,b){var c=b&a.D,d=(b&a.C)>>>a.A;return c!=a.D?a.aa[d].Kf(c,b):a.aa[d++].be(c,b)|a.aa[d&a.P].be(0,b+1)<<8} +l.ub=function(a,b){this.aa[(a&this.C)>>>this.A].Ec(a&this.D,b&255,a)};function Fc(a,b,c){var d=b&a.D,e=(b&a.C)>>>a.A;d!=a.D?a.aa[e].pi(d,c&65535,b):(a.aa[e++].cf(d,c&255,b),a.aa[e&a.P].cf(0,c>>8&255,b+1))}l.uj=function(){return null}; +function Gc(a,b){var c=0,d=[],e=!a.J&&a.N==a.C;e||jc(a,!0);for(var f=0;f>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,e);a.ca&&a.L!=g[1]&&Pc(a.ca,b,k)}else a.ca&&(Ob(a.ca,a,b,k,e),a.L&&Pc(a.ca,b,k));f+=h<<3;b+=h;c-=h}}function lc(a,b,c,d,e){b="Memory block error ("+b+": "+q(c)+","+q(d)+")";e?a.ca?a.ca.message(b):a.log(b):ab(b);return!1}var ac,Qc={nn:20,count:8,hq:1,type:3},Rc=0,Sc;for(Sc in Qc){var Tc=Qc[Sc];Qc[Sc]={en:(1<>1),this.W=new Int32Array(this.I,0,c>>2),tc(this,Ac?Bc:Cc);else{this.W=Array(c>>2);for(e=0;e>2),b=0;b>8,c)};l.ni=function(a,b,c){this.Ec(a++,b&255,c++);this.Ec(a++,b>>8&255,c++);this.Ec(a++,b>>16&255,c++);this.Ec(a,b>>>24,c)};l.vo=function(a){return this.W[a>>2]>>>((a&3)<<3)&255}; +l.Ho=function(a){var b=a>>2;a=(a&3)<<3;var c=this.W[b]>>a;return 24>a?c&65535:c&255|(this.W[b+1]&255)<<8};l.Bo=function(a){var b=a>>2;a=(a&3)<<3;var c=this.W[b];a&&(c=c>>>a|this.W[b+1]<<32-a);return c};l.Xo=function(a,b){var c=a>>2;a=(a&3)<<3;this.W[c]=this.W[c]&~(255<>2;a=(a&3)<<3;24>a?this.W[c]=this.W[c]&~(65535<>8);this.Oa=!0}; +l.cp=function(a,b){var c=a>>2;if(a=(a&3)<<3){var d=-1<>>32-a}else this.W[c]=b;this.Oa=!0};l.uo=function(a,b){this.ca&&null!=this.za&&hd(this.ca,this.za+a)||this.C&&id(this.C,b,1,!1);return this.be(a,b)};l.Go=function(a,b){this.ca&&null!=this.za&&hd(this.ca,this.za+a,2)||this.C&&id(this.C,b,2,!1);return this.Kf(a,b)};l.Ao=function(a,b){this.ca&&null!=this.za&&hd(this.ca,this.za+a,4)||this.C&&id(this.C,b,4,!1);return this.hi(a,b)}; +l.Wo=function(a,b,c){this.ca&&null!=this.za&&jd(this.ca,this.za+a)||this.C&&id(this.C,c,1,!0);this.D?this.df(0,b,c):this.cf(a,b,c)};l.ip=function(a,b,c){this.ca&&null!=this.za&&jd(this.ca,this.za+a,2)||this.C&&id(this.C,c,2,!0);this.D?this.df(0,b,c):this.pi(a,b,c)};l.bp=function(a,b,c){this.ca&&null!=this.za&&jd(this.ca,this.za+a,4)||this.C&&id(this.C,c,4,!0);this.D?this.df(0,b,c):this.K(a,b,c)};l.xo=function(a,b){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.F;return this.vd.Cc(a,b)}; +l.Jo=function(a,b){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.F;return this.vd.Jf(a,b)};l.Do=function(a,b){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.F;return this.vd.Od(a,b)};l.Zo=function(a,b,c){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.J;this.vd.Ec(a,b,c)};l.lp=function(a,b,c){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.J;this.vd.Qf(a,b,c)};l.fp=function(a,b,c){this.pb.W[this.A]|=this.F;this.qb.W[this.B]|=this.J;this.vd.Pf(a,b,c)}; +l.yo=function(a,b){return kd(this.C,b,!1).Cc(a,b)};l.Ko=function(a,b){return kd(this.C,b,!1).Jf(a,b)};l.Eo=function(a,b){return kd(this.C,b,!1).Od(a,b)};l.$o=function(a,b,c){kd(this.C,c,!0).Ec(a,b,c)};l.mp=function(a,b,c){kd(this.C,c,!0).Qf(a,b,c)};l.gp=function(a,b,c){kd(this.C,c,!0).Pf(a,b,c)};l.to=function(a){return this.Qa[a]};l.Pk=function(a){return this.Qa[a]};l.wo=function(a){this.pb.W[this.A]|=32;this.qb.W[this.B]|=32;this.Cc=this.Pk;return this.Qa[a]}; +l.Fo=function(a){return this.G.getUint16(a,!0)};l.Uk=function(a){return a&1?this.Qa[a]|this.Qa[a+1]<<8:this.Ud[a>>1]};l.Io=function(a){this.pb.W[this.A]|=32;this.qb.W[this.B]|=32;this.Jf=this.Uk;return a&1?this.Qa[a]|this.Qa[a+1]<<8:this.Ud[a>>1]};l.zo=function(a){return this.G.getInt32(a,!0)};l.Rk=function(a){return a&3?this.Qa[a]|this.Qa[a+1]<<8|this.Qa[a+2]<<16|this.Qa[a+3]<<24:this.W[a>>2]}; +l.Co=function(a){this.pb.W[this.A]|=32;this.qb.W[this.B]|=32;this.Od=this.Rk;return a&3?this.Qa[a]|this.Qa[a+1]<<8|this.Qa[a+2]<<16|this.Qa[a+3]<<24:this.W[a>>2]};l.Vo=function(a,b){this.Qa[a]=b;this.Oa=!0};l.bl=function(a,b){this.Qa[a]=b;this.Oa=!0};l.Yo=function(a,b){this.Qa[a]=b;this.pb.W[this.A]|=32;this.qb.W[this.B]|=96;this.Ec=this.bl;this.vd.Oa=!0};l.hp=function(a,b){this.G.setUint16(a,b,!0);this.Oa=!0};l.dl=function(a,b){a&1?(this.Qa[a]=b,this.Qa[a+1]=b>>8):this.Ud[a>>1]=b;this.Oa=!0}; +l.kp=function(a,b){a&1?(this.Qa[a]=b,this.Qa[a+1]=b>>8):this.Ud[a>>1]=b;this.pb.W[this.A]|=32;this.qb.W[this.B]|=96;this.Qf=this.dl;this.vd.Oa=!0};l.ap=function(a,b){this.G.setInt32(a,b,!0);this.Oa=!0};l.cl=function(a,b){a&3?(this.Qa[a]=b,this.Qa[a+1]=b>>8,this.Qa[a+2]=b>>16,this.Qa[a+3]=b>>24):this.W[a>>2]=b;this.Oa=!0}; +l.ep=function(a,b){a&3?(this.Qa[a]=b,this.Qa[a+1]=b>>8,this.Qa[a+2]=b>>16,this.Qa[a+3]=b>>24):this.W[a>>2]=b;this.pb.W[this.A]|=32;this.qb.W[this.B]|=96;this.Pf=this.cl;this.vd.Oa=!0};function ld(a){Pb&&!Ac&&(a=a<<24|a<<8&16711680|a>>8&65280|a>>>24);return a} +var Xc=0,zc=2,Yc=5,$c=6,oc="NONE RAM ROM VIDEO H/W UNPAGED PAGED".split(" "),Wc=0,bd=[],Dc=[w.prototype.vo,w.prototype.Xo,w.prototype.Ho,w.prototype.jp,w.prototype.Bo,w.prototype.cp],gd=[w.prototype.uo,w.prototype.Wo,w.prototype.Go,w.prototype.ip,w.prototype.Ao,w.prototype.bp],ad=[w.prototype.xo,w.prototype.Zo,w.prototype.Jo,w.prototype.lp,w.prototype.Do,w.prototype.fp],Zc=[w.prototype.yo,w.prototype.$o,w.prototype.Ko,w.prototype.mp,w.prototype.Eo,w.prototype.gp]; +if(Pb)var Cc=[w.prototype.to,w.prototype.Vo,w.prototype.Fo,w.prototype.hp,w.prototype.zo,w.prototype.ap],Bc=[w.prototype.Pk,w.prototype.bl,w.prototype.Uk,w.prototype.dl,w.prototype.Rk,w.prototype.cl],md=[w.prototype.wo,w.prototype.Yo,w.prototype.Io,w.prototype.kp,w.prototype.Co,w.prototype.ep]; +function sd(a,b){ib.call(this,"CPU",a,1);b=a.cycles||b;var c=a.multiplier||1;this.Y={};this.Y.Zd=b;this.Y.Fj=this.Y.qh=this.Y.Cd=c;this.Y.qg=Math.round(this.Y.Zd/1E4)/100;this.Y.Ld=this.Y.te=this.Y.qg*this.Y.Cd;this.Z.li=this.Z.Xa=this.Z.Rf=!1;this.Z.je=a.autoStart;this.Z.jj=!1;this.Z.Ke=!1;this.Y.uf=this.Y.Ue=0;this.Y.wf=a.csStart;this.Y.Te=a.csInterval;this.Y.Ve=a.csStop;this.qa=[];this.xj=this.Lo.bind(this)}ba(sd,ib);l=sd.prototype; +l.uc=function(a,b,c,d){this.oa=a;this.na=b;this.ca=d;for(b=0;b=a.Y.Ue&&(a.Y.Ue+=a.Y.Te,c=!0);0<=a.Y.Ve&&a.Y.Ve<=Cd(a)&&(a.Y.Te=a.Y.Ve=-1,yd(a),a.Ub(),c=!0);c&&a.O(Cd(a)+" cycles: checksum="+q(a.Y.uf))}} +l.Eb=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.ma[b]=c;a=!0;break;case "run":this.ma[b]=c;c.onclick=function(){var a=d.Z.Xa,b;if(b=d.oa)if(b=d.oa,b.Z.Ae&&(b.Z.Ae=!1,b.Z.pf&&!b.Z.bc&&b.Ye(Dd)),b.Z.bc)b=!0;else{var c=null,h,k=xb(b.id);for(h=0;ha.Y.Cd)b=a.Y.Cd;a.Y.Ej=Math.round(1E3/wd);a.Y.jn=Math.floor(a.Y.Zd/wd*b);a.Y.qh=b} +function Cd(a,b){var c=a.Hd+a.nd+a.md-a.A;b&&1a.Y.qg&&(c=Math.round(c/a.Y.Cd));return c}function xd(a){a.Hd=a.nd=a.md=a.A=0;yd(a);Ed(a,a.Y.Fj)} +function Ed(a,b,c){var d=!0;if(void 0!==b){0b[1])&&(c=a.Y.Zd*a.Y.qh/1E3*c|0,a.Z.Xa&&(c+=Jd(a)),b[1]=c)}function Kd(a){for(var b=[],c=0;cthis.Y.Ej&&(this.Y.zd+=a,this.Y.zd>this.Y.tf&&(this.Y.zd=this.Y.tf))}try{this.Z.Rf=!1;do{for(var b,c=this.Z.Ke?1:this.Y.Zd*this.Y.qh|0,d=this.qa.length-1;0<=d;d--){var e=this.qa[d];0>e[1]||c>e[1]&&(c=e[1])}b=c;if(this.V){Ld(this.V);var f=this.V,a=b,g=f.qa[0];if(g.qe){var h=(Cd(f.H,f.M)-g.jd)/f.Ea|0,k=Md(f,0)-h;g.mode==Nd&&(k-=h);var m=k*f.Ea|0;g.mode==Nd&&(m>>= +1);a>m&&(a=m)}b=a;var p=this.V,a=b;if(p.A&&p.A[Pd]&Qd){var v=p.aa-Cd(p.H,p.M);0v&&(a=v)}b=a}try{this.Kg(b)}catch(G){if("number"!=typeof G)throw G;}for(var a=b=Jd(this),u=this.qa.length-1;0<=u;u--){var D=this.qa[u];0>D[1]||(D[1]-=a,0>=D[1]&&(D[1]=-1,D[3](),0<=D[2]&&Id(this,u,D[2])))}Bd(this,b)}while(this.Z.Xa&&!this.Z.Rf)}catch(G){this.Ub();zd(this);this.oa&&this.oa.stop(Ea(),Cd(this));Gb(this,G.stack||G.message);return}if(this.Z.Xa){b=setTimeout;c=this.xj;this.Y.ue=Ea();d=this.Y.Ej;this.Y.sg&& +(d=Math.round(d*this.Y.sg/this.Y.jn));d-=this.Y.ue-this.Y.tf;if(e=this.Y.ue-this.Y.zd)this.Y.Ld=Math.round(this.nd/(10*e))/100,864E5<=e&&(this.Hd=0,this.V&&Ld(this.V,!0),Ed(this));0>d?(-1E3>d&&(this.Y.zd-=d),d=0):this.Y.Ld>>0)+b>this.Nb&&(8088>=this.Lb.da?this.Lb.M|=8:x.call(this.Lb,13));return this.ta+a|0};l.bj=function(a,b){return(a>>>0)+b<=this.Nb?this.ta+a|0:this.hg()};l.wl=function(a,b){return(a>>>0)+b>this.Nb?this.ta+a|0:this.hg()};l.hg=function(){x.call(this.Lb,13,0);return-1}; +l.dj=function(a,b){return(a>>>0)+b<=this.Nb?this.ta+a|0:this.jg()};l.xl=function(a,b){return(a>>>0)+b>this.Nb?this.ta+a|0:this.jg()};l.jg=function(){x.call(this.Lb,13,0);return-1};function ae(a,b,c,d,e){a.T=b;a.ta=d;a.Sa=e;a.Nb=(e>>>0)+1;a.ob=c;a.type=c&7936;a.ext=c>>16&192;a.Ob=(b&4?a.Lb.Gb.ta:a.Lb.Kb)+(b&65528)|0;a.id>>0)+1;a.ob=e;a.type=e&7936;a.ext=0;a.Ob=b;a.id>>0)+1,a.ob=a.A.ob,a.type=a.A.type,a.ext=a.A.ext,a.Ob=a.A.Ob,a.A.T=-1,Td(a,!0,!0,!1),a.ta;a.A.T=-1;var f=e.ja(b+0),g=e.ja(b+4),h=g&7936,k=e.ja(b+2)|(g&255)<<16,m=e.ja(b+6),p=c&65528;if(80386<=e.da){var v=f,k=k|(m&65280)<<16,f=f|(m&15)<<16;m&128&&(f=f<<12|4095)}switch(a.id){case de:var u=a.C;a.Pe=!1;if(u&&c==Vd&&a.B.length){var D=a.B[a.Hf-1];if(D&&!D())return-1}var G=c&3,I=(g&24576)>>13,D=-1,J,P;p||b>= +e.Kb&&b=a.Cb&&(G>a.Cb&&(D=ee(e),fe(e,ee(e),!0),ge(e,D),a.Pe=!0),D=0);else{if(256==h||2304==h)return he(a,c,u)?a.ta:-1;if(1024==h)D=2,P=0,Gh||2048==(h&2560))return x.call(e,13,c&65532),-1;if(!(g&32768))return x.call(e,11,c&65532),-1}break;case $d:if(!p||4096>h||512!=(h&2560))return x.call(e,13,c&65532),-1;if(!(g&32768))return x.call(e,12,c&65532), +-1;break;case be:u=h&-513;if(!p||256!=u&&2304!=u)return x.call(e,13,c&65532),-1;2304==u&&(a.Si=k+e.ja(k+102)|0,a.ql=k+a.Sa|0);break;case Zd:if(!(h&4096)&&768>>0)+1,a.ob=g,a.type=h,a.ext=m,a.Ob=b,Td(a,!0,!0,!1));return k} +function he(a,b,c){var d=a.Lb,e=a.Cb,f=d.ka.T,g=d.ka.ta;if(!c){if(!(d.ka.type&512))return x.call(d,13,b&65532),!1;d.ib(d.ka.Ob+4,d.ka.ob&=-513)}if(-1===d.ka.load(b))return!1;var h=d.ka.ta;if(!1!==c){if(d.ka.type&512)return x.call(d,13,b&65532),!1;d.ib(d.ka.Ob+4,d.ka.ob|=512)}d.ka.type=d.ka.type&-513|d.ka.ob&512;256==d.ka.type||768==d.ka.type?(d.ib(g+14,z(d)),d.ib(g+16,qe(d)),d.ib(g+18,d.D),d.ib(g+20,d.I),d.ib(g+22,d.L),d.ib(g+24,d.G),d.ib(g+26,y(d)),d.ib(g+28,d.N),d.ib(g+30,d.K),d.ib(g+32,d.J),d.ib(g+ +34,d.pa.T),d.ib(g+36,d.ba.T),d.ib(g+38,d.U.T),d.ib(g+40,d.Fa.T),d.Gb.load(d.ja(h+42)),re(d,d.ja(h+16)|(c?16384:0)),d.D=d.ja(h+18),d.I=d.ja(h+20),d.L=d.ja(h+22),d.G=d.ja(h+24),d.N=d.ja(h+28),d.K=d.ja(h+30),d.J=d.ja(h+32),d.pa.load(d.ja(h+34)),d.Fa.load(d.ja(h+40)),se(d,d.ja(h+14),d.ja(h+36)),b=38,g=26,a.Cb>>0)+1)}; +function Td(a,b,c,d){void 0===c&&(c=!!(a.Lb.ra&1));a.fd=!1;if(c)if(a.load=a.pg,a.Cj=a.bn,a.Bb=a.bj,a.Vb=a.dj,void 0===d&&(d=!!(a.Lb.P&131072)),d)a.load=a.G,a.Bb=a.D,a.Vb=a.F,a.Cb=a.rc=3,a.X=2,a.R=a.wa=65535,a.Sa=65535,a.Nb=a.Sa+1,a.Mc=a.X,a.Ob=-1,a.Pe=!1;else{if(!(a.T&-4))a.Bb=a.hg,a.Vb=a.jg;else if(a.type&4096){6144==(a.type&6656)&&(a.Bb=a.hg);if(a.type&2048||!(a.type&512))a.Vb=a.jg;1024==(a.type&3072)&&(a.Bb==a.bj&&(a.Bb=a.wl),a.Vb==a.dj&&(a.Vb=a.xl),a.fd=!0);b&&a.id>13,80386>a.Lb.da||!(a.ext&64)?(a.X=2,a.R=65535):(a.X=4,a.R=-1),a.Mc=a.X,a.wa=a.R)}else a.load=a.mh,a.Cj=a.cn,a.Bb=a.ig,a.Vb=a.ig,a.Cb=a.rc=0,a.Ob=-1,a.Pe=!1}var de=1,pe=2,$d=3,be=4,Zd=6,Vd=1; +function ue(a){var b,c=+a.model||8088;switch(c){default:b=4772727;break;case 80286:b=6E6;break;case 80386:b=16E6}sd.call(this,a,b);this.da=c;a=a.stepping;this.Rd=c+(a?ia(a,16):0);this.Ri=61442;this.Qd=1792;this.ri=28672;this.Sf=4;this.Ra=255;this.B=80286<=this.da?Rb:Qb;this.xa=ve;this.aj=we;this.hj=xe;this.lj=ye;if(80186<=this.da&&(this.xa=ve.slice(),this.aj=we.slice(),this.hj=xe.slice(),this.Ra=31,this.xa[15]=ze,this.xa[96]=Ee,this.xa[97]=Fe,this.xa[98]=Ge,this.xa[99]=ze,this.xa[100]=ze,this.xa[101]= +ze,this.xa[102]=ze,this.xa[103]=ze,this.xa[104]=He,this.xa[105]=Ie,this.xa[106]=Je,this.xa[107]=Ke,this.xa[108]=Le,this.xa[109]=Me,this.xa[110]=Ne,this.xa[111]=Oe,this.xa[192]=Pe,this.xa[193]=Qe,this.xa[200]=Re,this.xa[201]=Se,this.xa[241]=Te,this.aj[7]=Ue,this.hj[7]=Ue,80286<=this.da)){this.Ri=2;this.Qd|=28672;this.Sf=0;this.xa[15]=Ve;this.rd=We.slice();for(c=0;c=this.Rd&&(this.rd[166]=gf,this.rd[167]=hf)}}this.Vf=[];this.Wf=[];this.Yf=0;xd(this);this.Z.complete=this.Z.ij=!1;this.rj=0;this.tc=this.aa=[];this.lb=this.Mg=this.Fb=this.Tf=this.ef=this.ff=this.cd=0;jf(this)}ba(ue,sd);function kf(a,b,c,d){b=(d?a.tc:a.aa)[b>>>a.lb];c?--b.me||fd(b):--b.le||ed(b);d&&nc(a)} +function lf(a){var b;if(a.aa===a.tc){a.aa=Array(a.Tf);a.Xf=new w(null,0,0,Yc,null,a);ic(a.Xf,a.ca);for(b=0;b>>20,f=a.tc[(a.Uc+e&a.ff)>>>a.lb],g=f.Od(e);if(!(g&1))return d||nf.call(a,b,!1,c),a.gf;if(!(g&4)&&3==a.Pa)return d||nf.call(a,b,!0,c),a.gf;var h=(b&4190208)>>>10,g=a.tc[((g&-4096)+h&a.ff)>>>a.lb],k=g.Od(h);if(!(k&1))return d||nf.call(a,b,!1,c),a.gf;if(!(k&4)&&3==a.Pa)return d||nf.call(a,b,!0,c),a.gf;c=a.tc[((k&-4096)+(b&4095)&a.ff)>>>a.lb];if(d)return c;d=b>>>a.lb;k=a.aa[d];b&=-4096;var m;0>2;b.qb=g;b.B=h>>2;Pb&&Ac&&c.W&&!c.controller&&!c.le&&!c.me?(b.Qa=c.Qa,b.Ud=c.Ud,b.W=c.W,tc(b,md)):(b.F=c?ld(32):0,b.J=c?ld(96):0,tc(b,ad));ic(b,a.ca,k);a.aa[d]=b;a.Uf.push(d);return b}function of(a){a.aa!==a.tc&&(a.aa=a.tc,a.Xf=null,a.Uf=null,a.gf=null)}l=ue.prototype;l.reset=function(){jf(this);xd(this);this.Z.error=!1}; +function uf(a,b){var c;switch(b){case 0:c=a.D;break;case 1:c=a.I;break;case 2:c=a.L;break;case 3:c=a.G;break;case 4:c=y(a);break;case 5:c=a.N;break;case 6:c=a.K;break;case 7:c=a.J}return c}function vf(a,b,c){switch(b){case 0:a.D=c;break;case 1:a.I=c;break;case 2:a.L=c;break;case 3:a.G=c;break;case 4:ge(a,c);break;case 5:a.N=c;break;case 6:a.K=c;break;case 7:a.J=c}} +function jf(a){a.D=0;a.G=0;a.I=0;a.L=0;a.Ac=0;a.N=0;a.K=0;a.J=0;a.wc=!1;a.Ea=a.cb=0;a.Xm=[0,0];a.Zm=[0,0];a.Aa=0;a.qj=0;a.fa=0;a.ra=65520;a.Qb=0;a.ad=1023;a.P=a.mc=0;a.Td=a.hf=a.Sd=a.De=0;a.Lc=-1;a.od=a.Tc=-1;a.pd=a.va=-1;a.ba=new Sd(a,de,"CS");a.Fa=new Sd(a,pe,"DS");a.pa=new Sd(a,pe,"ES");a.U=new Sd(a,$d,"SS");ge(a,0);fe(a,0);if(80386<=a.da){switch(a.Rd){case 80562:case 80563:a.L=771;break;case 80578:a.L=772;break;case 80594:a.L=773;break;case 80595:case 80596:a.L=776}a.ra=16;a.Ng=0;a.qd=0;a.Uc= +0;a.Rb=[0,0,0,0,null,null,0,0];a.$f=[null,null,null,null,null,null,0,0];a.Ka=new Sd(a,pe,"FS");a.La=new Sd(a,pe,"GS");of(a)}a.Qg=new Sd(a,0,"NULL");a.Ga=a.Fa;a.Sb=a.U;a.M=a.ha=0;a.C=a.F=-1;a.Ia=a.Qg;a.ab=0;if(80286>a.da)se(a,0,65535);else{a.Kb=0;a.Ic=65535;a.Gb=new Sd(a,5,"LDT",!0);a.ka=new Sd(a,be,"TSS",!0);a.zb=new Sd(a,Zd,"VER",!0);se(a,65520,61440);var b,c=z(a);b=a.ba;var d=-65536;80386>b.Lb.da&&(d&=16777215);b=b.ta=d;a.ea=b+c|0;a.Og=(b>>>0)+(a.ba.Sa>>>0)+1}re(a,0);ie(a)} +function wf(a){2==a.Mc?(a.Wb=a.ja,a.lc=xf,a.vc=yf,a.ld=zf,2==a.X?(a.la=Af,a.Ba=Bf,a.mb=Cf):(a.la=Df,a.Ba=Ef,a.mb=Ff)):(a.Wb=a.ia,a.lc=Gf,a.vc=Hf,a.ld=If,2==a.X?(a.la=Jf,a.Ba=Kf,a.mb=Lf):(a.la=Mf,a.Ba=Nf,a.mb=Of))}function je(a,b){a.X!=b&&(a.ha|=1024,a.X=b,a.R=2==b?65535:-1,Pf(a))}function Pf(a){2==a.X?(a.Hb=32768,a.nb=a.ja,a.hc=a.ib,2==a.Mc?(a.la=Af,a.Ba=Bf,a.mb=Cf):(a.la=Jf,a.Ba=Kf,a.mb=Lf)):(a.Hb=-2147483648,a.nb=a.ia,a.hc=a.eb,2==a.Mc?(a.la=Df,a.Ba=Ef,a.mb=Ff):(a.la=Mf,a.Ba=Nf,a.mb=Of))} +function Qf(a){a.Mc=a.ba.Mc;a.wa=a.ba.wa;wf(a);a.X=a.ba.X;a.R=a.ba.R;Pf(a);a.ha&=-3073}l.sj=function(){var a=this.D+this.G+this.I+this.L+y(this)+this.N+this.K+this.J|0;return a=a+z(this)+this.ba.T+this.Fa.T+this.U.T+this.pa.T+qe(this)|0};function Rf(a,b,c){void 0===a.Vf[b]&&(a.Vf[b]=[]);a.Vf[b].push(c)}function Sf(a,b,c){c&&(null==a.Wf[b]&&a.Yf++,a.Wf[b]=c)}function Tf(a,b){var c=a.Wf[b];null!=c&&(c(--a.Yf),delete a.Wf[b])} +function Uf(a,b){for(var c=a.Rb[7],d=c>>16,e=0;4>e;e++){if(c&3){var f=!!(d&1),g=a.Rb[e],g=g&~(d>>2&3);b?a.aa[g>>>a.lb].td(g&a.Fb,f,a):(g=a.aa[g>>>a.lb],f?--g.me||fd(g):--g.le||ed(g))}c>>=2;d>>=4}}function id(a,b,c,d){if(!(a.M&8192)&&a.Rb[7]&255){c--;var e=a.Rb[7],f=e>>16;d=d?1:0==d?3:0;for(var g=0;4>g;g++){if(e&3&&(f&3)==d){var h=f>>2;if(b+c>=a.Rb[g]&&b<=a.Rb[g]+h){a.Rb[6]|=1<>=2;f>>=4}}} +function ie(a,b,c){void 0===b&&(b=!!(a.ra&1));void 0===c&&(c=!!(a.P&131072));a.lj=b&&!c?Vf:ye;Td(a.ba,!1,b,c);Td(a.Fa,!1,b,c);Td(a.U,!1,b,c);Td(a.pa,!1,b,c);80386<=a.da&&(Td(a.Ka,!1,b,c),Td(a.La,!1,b,c));Qf(a)} +l.save=function(a){var b=new Wf(this);b.set(0,[this.D,this.G,this.I,this.L,y(this),this.N,this.K,this.J]);var c=z(this),d=this.ba.save(),e=this.Fa.save(),f=this.U.save(),g=this.pa.save(),h;null!=this.Kb?(h=[this.ra,this.Kb,this.Ic,this.Qb,this.ad,this.Gb.save(),this.ka.save(),this.mc],80386<=this.da&&(h.push(this.Ng),h.push(this.qd),h.push(this.Uc),h.push(this.Rb),h.push(this.$f))):h=null;c=[c,d,e,f,g,h,qe(this)];80386<=this.da&&(c.push(this.Ka.save()),c.push(this.La.save()));b.set(1,c);b.set(2,[this.Ga.dc, +this.Sb.dc,this.M,this.ha,this.ab,this.C,this.F]);b.set(3,[0,this.Hd,this.Y.Cd,a,Kd(this)]);b.set(4,Gc(this.na,!!(this.ra&-2147483648)));return b.data()}; +l.restore=function(a){var b=a[0];this.D=b[0];this.G=b[1];this.I=b[2];this.L=b[3];var c=b[4];this.N=b[5];this.K=b[6];this.J=b[7];b=a[1];this.ba.restore(b[1]);this.Fa.restore(b[2]);this.U.restore(b[3]);this.pa.restore(b[4]);var d=b[5];d&&d.length&&(this.ra=d[0],this.Kb=d[1],this.Ic=d[2],this.Qb=d[3],this.ad=d[4],this.Gb.restore(d[5]),this.ka.restore(d[6]),this.mc=d[7],80386<=this.da&&(this.Ng=d[8],this.qd=d[9],this.Uc=d[10],this.Rb=d[11],this.$f=d[12]),ie(this));re(this,b[6]);var d=!1,e;a:{e=this.na; +var f=a[4],g;for(g=0;g>>0)+(a.ba.Sa>>>0)+1;a.Pa=a.ba.Cb;Qf(a)} +function se(a,b,c,d){var e=a.ba;e.Hf=b;e.C=d;b=e.load(c);return-1!==b?(Zf(a,b+(a.ba.Hf&a.ba.R)),a.ba.Pe):null}function $f(a,b){var c=(a.ea>>>0)+b;c>a.Og&&(8088>=a.da?(c=a.ba.ta+(c-a.Og&a.R),2==b&&(a.M|=8)):x.call(a,13,0));return c|0}function ag(a){a.ea=a.pd}function y(a){return a.Ac&~a.U.wa|a.Ca-a.U.ta}function ge(a,b){a.Ac=b;a.Ca=a.U.ta+(b&a.U.wa)|0} +function bg(a,b,c,d,e,f){if(63!=(e&63)&&e!=a.resultType){var g=(e^a.resultType)&a.resultType;g&&(g&1&&cg(a),g&2&&dg(a),g&4&&eg(a),g&8&&fg(a),g&16&&gg(a),g&32&&hg(a))}f?(a.Td=d,a.Sd=b):(a.Td=b,a.Sd=d);a.hf=c;a.De=d;a.resultType=e}function ig(a,b,c,d,e){a.resultType=c|26;a.De=b;d?jg(a):kg(a);e?lg(a):mg(a);return b}function ng(a,b,c,d){c&d?jg(a):kg(a);(b^c)&d?lg(a):mg(a)}function og(a){return cg(a)?1:0} +function cg(a){a.resultType&1&&(a.P&=-2,(a.Td^(a.Td^a.hf)&(a.hf^a.Sd))&a.resultType&-2147450752&&(a.P|=1),a.resultType&=-2);return a.P&1}function dg(a){a.resultType&2&&(a.P&=-5,38505>>((a.De^a.De>>4)&15)&1&&(a.P|=4),a.resultType&=-3);return a.P&4}function eg(a){a.resultType&4&&(a.P&=-17,(a.Sd^a.Td^a.hf)&16&&(a.P|=16),a.resultType&=-5);return a.P&16}function fg(a){a.resultType&8&&(a.P&=-65,a.De&((a.resultType&-2147450752)-1|a.resultType&-2147450752)||(a.P|=64),a.resultType&=-9);return a.P&64} +function gg(a){a.resultType&16&&(a.P&=-129,a.De&a.resultType&-2147450752&&(a.P|=128),a.resultType&=-17);return a.P&128}function hg(a){a.resultType&32&&(a.P&=-2049,(a.Td^a.Sd)&(a.hf^a.Sd)&a.resultType&-2147450752&&(a.P|=2048),a.resultType&=-33);return a.P&2048}function kg(a){a.resultType&=-2;a.P&=-2}function pg(a){a.resultType&=-5;a.P&=-17}function qg(a){a.resultType&=-9;a.P&=-65}function mg(a){a.resultType&=-33;a.P&=-2049}function jg(a){a.resultType&=-2;a.P|=1} +function rg(a){a.resultType&=-5;a.P|=16}function sg(a){a.resultType&=-9;a.P|=64}function lg(a){a.resultType&=-33;a.P|=2048}function qe(a){return a.P&-2262|cg(a)|dg(a)|eg(a)|fg(a)|gg(a)|hg(a)}function tg(a,b){b|=a.ra&1|65520;a.ra=a.ra&-65536|b&65535;a.ra&1&&ie(a,!0)}function re(a,b,c){a.ra&1||(b&=~a.ri);void 0===c&&(c=a.Pa);c?b=b&-12289|a.P&12288:a.mc=(b&12288)>>12;c>a.mc&&(b=b&-513|a.P&512);a.resultType=128;a.P=a.P&~(a.Qd|2261)|b&(a.Qd|2261)|a.Ri;a.P&256&&(a.ab|=2,a.M|=4)} +function ug(a,b,c,d){var e=0;if(a.ra&1&&(a.Pa>a.mc||a.P&131072)&&a.ka.Si)for(var f=a.ka.Si+(b>>>3),e=(1<>>=8,f++;return e?(r(a,256)&&Nb(a,"checkIOPM("+oa(b)+","+c+","+(d?"input":"output")+"): trapped",!0,!0),x.call(a,13,0),!1):!0} +l.Eb=function(a,b,c){switch(b){case "EAX":case "EBX":case "ECX":case "EDX":case "ESP":case "EBP":case "ESI":case "EDI":case "EIP":case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "IP":case "PC":case "CS":case "DS":case "SS":case "ES":case "FS":case "GS":case "CR0":case "CR2":case "CR3":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "V":this.ma[b]=c;this.rj++;a=!0;break;default:a=sd.prototype.Eb.call(this,a,b,c)}return a}; +function vg(a,b,c,d){var e=(d?a.tc:a.aa)[(b&a.cd)>>>a.lb];e&&e.type==Yc&&(e=kd(a,b,!1,!0));if(e){var f=b&a.Fb;if(!c||1==c)return e.be(f,b);if(2==c)return f>>this.lb].Cc(a&this.Fb,a)}; +l.ja=function(a){var b=a&this.Fb,c=(a&this.cd)>>>this.lb;this.A-=this.B.yg;if(b>>this.lb;if(b>>this.lb].Ec(a&this.Fb,b&255,a)}; +l.ib=function(a,b){var c=a&this.Fb,d=(a&this.cd)>>>this.lb;this.A-=this.B.yg;c>8&255,a+1))};l.eb=function(a,b){var c=a&this.Fb,d=(a&this.cd)>>>this.lb;this.A-=this.B.yg;if(c>>=8}}; +function wg(a,b,c){a.Ia=b;a.vb=c&a.wa;a.C=b.Bb(a.vb,1);return a.M&1?0:a.ya(a.C)}function C(a,b){return wg(a,a.Ga,b)}function xg(a,b){return wg(a,a.Sb,b)}function yg(a,b,c){a.Ia=b;a.vb=c&a.wa;a.C=b.Bb(a.vb,a.X);if(a.M&9){if(a.M&1)return 0;a=a.ya(a.C)|a.ya(b.Bb(0,1))<<8}else a=a.nb(a.C);return a}function E(a,b){a.Ia=a.Ga;a.vb=b&a.wa;a.C=a.Ia.Bb(a.vb,2);if(a.M&9){if(a.M&1)return 0;b=a.ya(a.C)|a.ya(a.Ia.Bb(0,1))<<8;a.M&=-9}else b=a.ja(a.C);return b} +function Bg(a,b){a.Ia=a.Sb;a.vb=b&a.wa;a.C=a.Ia.Bb(a.vb,2);if(a.M&9){if(a.M&1)return 0;b=a.ya(a.C)|a.ya(a.Ia.Bb(0,1))<<8;a.M&=-9}else b=a.ja(a.C);return b}function F(a,b){a.Ia=a.Ga;a.vb=b&a.wa;a.C=a.Ia.Bb(a.vb,4);return a.M&1?0:a.ia(a.C)}function Cg(a,b){a.Ia=a.Sb;a.vb=b&a.wa;a.C=a.Ia.Bb(a.vb,4);return a.M&1?0:a.ia(a.C)}function Dg(a,b){a.M&2||a.ub(a.Ia.Vb(a.vb,1),b)}function Eg(a,b){if(!(a.M&2)){var c=a.Ia.Vb(a.vb,2);a.M&8?(a.ub(c,b),a.ub(a.Ia.Vb(0,1),b>>8),a.M&=-9):a.ib(c,b)}} +function Fg(a,b){a.M&2||a.eb(a.Ia.Vb(a.vb,4),b)}function ke(a,b,c){c=b.Bb(c,a.X);a.M&8?(b=a.ya(c)|a.ya(b.Bb(0,1))<<8,a.M&=-9):b=a.nb(c);return b}function Gg(a,b,c,d){c=b.Vb(c,a.X);a.M&8?(a.ub(c,d),a.ub(b.Vb(0,1),d>>8),a.M&=-9):a.hc(c,d)}l.sa=function(){var a=$f(this,1),b=this.ya(this.ea);this.ea=a;return b};function Hg(a){var b,c=$f(a,2);a.M&8?(b=a.ya(a.ea)|a.ya(c-1)<<8,a.M&=-9):b=a.ja(a.ea);a.ea=c;return b} +function H(a){var b,c=$f(a,a.Mc);a.M&8?(b=a.ya(a.ea)|a.ya(c-1)<<8,a.M&=-9):b=a.Wb(a.ea);a.ea=c;return b}l.Ha=function(){var a,b=$f(this,this.X);this.M&8?(a=this.ya(this.ea)|this.ya(b-1)<<8,this.M&=-9):a=this.nb(this.ea);this.ea=b;return a};l.S=function(){var a=$f(this,1),b=this.ya(this.ea)<<24>>24;this.ea=a;return b}; +function ee(a){var b=a.nb(a.Ca);a.Ca=a.Ca+a.X|0;var c=(a.Pg>>>0)-(a.Ca>>>0);0>c&&(8088>=a.da?(ge(a,a.Ca-a.U.ta&a.U.wa),-1>c&&(b=b&255|a.ya(a.Ca-1)<<8)):-1>c?x.call(a,12,0):(!a.U.fd&&a.U.Sa==a.U.wa||a.U.fd&&!a.U.Sa)&&ge(a,a.Ca-a.U.ta&a.U.wa));return b}function oe(a,b){le(a,b,a.X)} +function le(a,b,c,d){d=void 0===d?c:d;var e=a.Ca-c|0,f=(e>>>0)-(a.zj>>>0);if(0>f){if(8088>=a.da&&-1==f){a.ub(e+1,b>>8);ge(a,e-a.U.ta&a.U.wa);a.ub(a.Ca,b);return}if(!a.U.fd&&a.U.Sa==a.U.wa||a.U.fd&&!a.U.Sa){if(f>-c){x.call(a,12,0);return}ge(a,e-a.U.ta&a.U.wa);e=a.Ca}else{x.call(a,12,0);return}}switch(d){case 1:a.ub(e,b);break;case 2:a.ib(e,b);break;case 4:a.eb(e,b)}a.Ca=e} +function Ig(a,b,c){var d=4;1==b.length&&(d=1,c=c?1:0);if(80386>a.da)2this.da?0:1,e=0;2>e;e++){switch(d){case 0:if(this.ab&1&&this.P&512){var f=Kg(this.V);if(-1<=f&&(this.ab&=-2,0<=f)){this.ab&=-5;Lg.call(this, +f);d=!0;break a}}break;case 1:if(this.ab&2){this.ab&=-3;80386<=this.da&&(this.Rb[6]|=16384);Lg.call(this,1);d=!0;break a}}d=1-d}d=!1}if(d&&!a){this.O("interrupt dispatched");this.M=0;break}if(this.ab&4){this.M=this.A=0;break}}if(b){if(Mg(this.ca,this.ea,c)){this.Ub();break}c=1}this.M=0;this.xa[this.sa()].call(this)}while(0>11;Rg(this);Sg(this,a[b++]);for(c=0;c=Tg&&gh(a,hh))}function Rg(a){a.ga&=-129;a.ga&~a.cc&63&&(a.ga|=128);if(a.ga&128&&!(a.cc&128))return a=a.V,a.da>=Tg?ih(a,hh):a.fa&jh||Lg.call(a.H,2),!0;a=a.V;a.da>=Tg&&gh(a,hh);return!1}function kh(a,b){80387<=a.da||(b&=-65);a.ga|=b;return Rg(a)} +function Pg(a){return a.ga|a.B<<11}function lh(a,b){return isFinite(b)?!0:!kh(a,Infinity===b?8:16)}function mh(a,b,c){var d=null;null!=b&&null!=c&&(d=b+c,lh(a,d)||(d=null));return d}function nh(a,b,c){var d=null;null!=b&&null!=c&&(d=b-c,lh(a,d)||(d=null));return d}function oh(a,b,c){var d=null;null!=b&&null!=c&&(d=b*c,lh(a,d)||(d=null));return d}function ph(a,b,c){var d=null;null==b||null==c||!c&&kh(a,2)||(d=b/c,lh(a,d)||(d=null));return d} +function qh(a,b,c){if(null!=b&&null!=c){var d=0;isNaN(b)||isNaN(c)?d=17664:(b-=c,0>b?d=256:b||(d=16384));a.ga=a.ga&-18177|d;return!0}return!1}function rh(a,b,c){if(null==b)return null;var d=a.cc&3072;d?d=1024==d||3072==d&&0=c){if(kh(a,1))return null;d=-c}else if(d<-c){if(kh(a,1))return null;d=-c}a.G[0]=d|0;2147483648d&&(a.G[1]=-1))}return d} +function sh(a,b){var c=3;a.C&1<=c;c<<=1)3!=(b&3)&&(a.C|=c),b>>=2}function th(a){var b=a.B+0&7;return a.C&1<>16}function yh(a){return a.H.ia(a.H.C)}function zh(a){a.ha[0]=a.H.ia(a.H.C);return a.aa[0]}function Ah(a){a.G[0]=a.H.ia(a.H.C);a.G[1]=a.H.ia(a.H.C+4);return a.K[0]} +function Bh(a){a.D[0]=a.H.ia(a.H.C);a.D[1]=a.H.ia(a.H.C+4);a.D[2]=a.H.ja(a.H.C+8);return a.D}l.ki=function(){this.H.eb(this.H.C,this.G[0])};l.al=function(){this.H.eb(this.H.C,this.G[0]);this.H.eb(this.H.C+4,this.G[1])};function Ch(a){a.H.eb(a.H.C,a.D[0]);a.H.eb(a.H.C+4,a.D[1]);a.H.ib(a.H.C+8,a.D[2])}function Dh(a,b){var c=b[1],d=(b[2]&32768)>>4,e=b[2]&32767;b=b[0]>>>11|c<<21;c=c>>11&1048575;32767==e?e=2047:e&&(e+=-15360,0>=e&&(e=2047,b=c=0));a.G[0]=b;a.G[1]=c|(d|e)<<20;return a.K[0]} +function wh(a,b,c){var d=c>>20&2047,e=2147483648|(c&1048575)<<11|b>>>21;2047==d?d=32767:d?d+=15360:e&=2147483647;a.D[0]=b<<11;a.D[1]=e;a.D[2]=c>>16&32768|d;return a.D}function Eh(a,b){for(var c=0,d=1;b--;)c+=(a&15)*d,d*=10,a>>=4;return c}function Fh(a,b){for(var c=0,d=0;b--;)c|=a%10<>11;Rg(a);Sg(a,d.nb(b+=d.X));!(d.ra&1)||d.P&131072?(a.I=d.nb(b+=d.X),c=d.nb(b+=d.X),a.P=c&2047,a.I|=(c&-4096)<<4,a.M=-1,a.J=d.nb(b+=d.X),a.J|=(d.nb(b+=d.X)&-4096)<<4,a.N=-1):(a.I=d.nb(b+=d.X),c=d.nb(b+=d.X),a.M=c&65535,a.P=c>>16&2047,a.J=d.nb(b+=d.X),a.N=d.nb(b+=d.X)&65535);return b+d.X} +function Jh(a,b){var c=a.H;c.hc(b,a.cc);c.hc(b+=c.X,Pg(a));c.hc(b+=c.X,Qg(a));if(!(c.ra&1)||c.P&131072){var d=(a.M<<4)+a.I;c.hc(b+=c.X,d);c.hc(b+=c.X,d>>4&-4096|a.P);d=(a.N<<4)+a.J;c.hc(b+=c.X,d);c.hc(b+=c.X,d>>4&-4096)}else c.hc(b+=c.X,a.I),c.hc(b+=c.X,a.M|a.P<<16),c.hc(b+=c.X,a.J),c.hc(b+=c.X,a.N);return b+c.X}function Kh(){this.ga&=-32896;Rg(this)}function Lh(){qh(this,L(this,0),L(this,this.A))}function Mh(){qh(this,L(this,0),L(this,this.A))&&Gh(this)}function Nh(){Mh.call(this)} +function Oh(){M(this,0,ph(this,L(this,0),zh(this)))}function Ph(){this.C&=~(1<>20&2047)-1023),this.G[1]=(this.G[1]|1072693248)&-1073741825,Hh(this,this.K[0]))},102:function(){this.B=this.B-1&7;this.ga&=-513},103:function(){this.B= +this.B+1&7;this.ga&=-513},112:function(){M(this,0,L(this,0)%L(this,1))},113:function(){M(this,1,L(this,1)*Math.log(L(this,0)+1)/Math.LN2)&&Gh(this)},114:function(){var a=L(this,0),b=null;if(0<=a||!kh(this,1))b=Math.sqrt(a),lh(this,b)||(b=null);M(this,0,b)},116:function(){M(this,0,rh(this,L(this,0),hi))},117:function(){var a=L(this,0),b=L(this,1);null!=a&&null!=b&&M(this,0,a*Math.pow(2,0>>0);Hh(this,a)},6:function(){var a=rh(this,Gh(this));null!=a&&(this.D[0]=Fh(a,8),this.D[1]=Fh(a/1E8,8),this.D[2]=Fh(a/1E16,2),0>a&&(this.D[2]|=32768),Ch(this))},7:function(){null!=rh(this,L(this,0),hi)&&(this.al(),Gh(this))},48:function(){Ph.call(this);Gh(this)},49:bi,50:Xh,51:Xh,52:$h}},ji=[Kh,Qh,Rh,Sh,Th,Uh,Yh,Vh,Zh,$h];Xa(function(){for(var a=vb(document,"pcx86","fpu"),b=0;b>16,c=c<<16>>16,d=d<<16>>16);this.A-=this.B.Ij;(bd)&&x.call(this,5);this.M|=2;return a}function si(a,b){var c=0;if(b){qg(this);for(var d=1;d&this.R;){if(b&d){a=c;break}d<<=1;c++}}else sg(this);this.A-=11+3*c;return a}function ti(a,b){var c=0;if(b){qg(this);for(var d=2==this.X?15:31,e=1<>>=1;c++;d--}}else sg(this);this.A-=11+3*c;return a} +function ui(a,b){a&1<<(b&(2==this.X?15:31))?jg(this):kg(this);this.A-=-1===this.C?3:6;this.M|=2;return a}function vi(a,b){b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=-1===this.C?6:8;return a^b}function wi(a,b){b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=-1===this.C?6:8;return a&~b}function xi(a,b){b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=-1===this.C?6:8;return a|b} +function yi(a,b){if(-1===this.C)return ui.call(this,a,b);var c=this.X<<3;if(b>=c||b<-c)a=yg(this,this.Ia,this.vb+(b>>(2==this.X?4:5))*this.X);b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=6;this.M|=2;return a}function zi(a,b){if(-1===this.C)return vi.call(this,a,b);var c=this.X<<3;if(b>=c||b<-c)a=yg(this,this.Ia,this.vb+(b>>(2==this.X?4:5))*this.X);b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=8;return a^b} +function Ai(a,b){if(-1===this.C)return wi.call(this,a,b);var c=this.X<<3;if(b>=c||b<-c)a=yg(this,this.Ia,this.vb+(b>>(2==this.X?4:5))*this.X);b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=8;return a&~b}function Bi(a,b){if(-1===this.C)return xi.call(this,a,b);var c=this.X<<3;if(b>=c||b<-c)a=yg(this,this.Ia,this.vb+(b>>(2==this.X?4:5))*this.X);b=1<<(b&(2==this.X?15:31));a&b?jg(this):kg(this);this.A-=8;return a|b} +function Ci(a,b){bg(this,a,b,a-b|0,191,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.yh:this.B.Mb;this.M|=2;return a}function Di(a,b){bg(this,a,b,a-b|0,this.Hb|63,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.yh:this.B.Mb;this.M|=2;return a} +function Ei(a){if(this.Kc){var b=this.Kc,c=this.qj,d=this.fa,e=d>>3&7;b.A=d&7;var f=(3>(d>>6&3)?0:48)+e;(217==c||219==c)&&52<=f&&(f=e<<4|b.A);if(e=ii[c][f]){if(0>ji.indexOf(e)){var f=b.H,g=f.pd;8087==b.da&&(f.ha&16&&g++,f.ha&32&&g++);b.M=f.ba.T;b.I=g-f.ba.ta;-1!==f.C&&(b.N=f.Ia.T,b.J=f.C-f.Ia.ta);b.P=(c&7)<<8|d}e.call(b)}}this.A-=-1===this.C?2:8;return a}function Fi(a){if(80186>this.da)return Gi.call(this,a);x.call(this,13,0);return a}function Ue(a){x.call(this,6);return a} +function Gi(a){Xe.call(this);return a}function Hi(a,b){a=Ii.call(this,this.S(),b);80386>this.da&&(this.A-=12);return a}function Ji(a,b){a=this.Ha();a=2==this.X?Ii.call(this,a,b):Ki.call(this,a,b);80386>this.da&&(this.A-=12);return a}function Li(a,b){var c=!1;0>b&&(b=-b|0,c=!c);0>a&&(a=-a|0,c=!c);Mi.call(this,a,b);c&&(this.Ea=~this.Ea+1|0,this.cb=~this.cb+(this.Ea?0:1)|0)} +function Ii(a,b){a=(a<<16>>16)*(b<<16>>16)|0;32767a?(jg(this),lg(this)):(kg(this),mg(this));this.A-=-1===this.C?9:12;return a&65535}function Ki(a,b){Li.call(this,a,b);this.cb!=this.Ea>>31?(jg(this),lg(this)):(kg(this),mg(this));this.A-=-1===this.C?9:12;return this.Ea}function Ni(a,b){this.A-=14+(-1===this.C?0:2);qg(this);-1!==this.zb.load(b)&&this.zb.rc>=this.Pa&&this.zb.rc>=(b&3)&&(sg(this),a=this.zb.ob&-256,2=this.Pa)&&this.zb.rc>=(b&3))return sg(this),this.zb.Sa;qg(this);return a}function Ui(a,b){if(-1===this.C)return Xe.call(this),a;fe(this,this.ja(this.C+this.X));this.A-=this.B.Xe;return b} +function Vi(a,b){this.A-=-1===this.F?-1===this.C?this.B.sk:this.B.rk:this.B.pk;return b}function Wi(a,b){switch(this.fa>>3&7){case 4:this.Aa=this.D;break;case 5:this.Aa=this.I;break;case 6:this.Aa=this.L;break;case 7:this.Aa=this.G}return b}function Xi(a,b){return b} +function Yi(a,b){a=this.fa>>3&7;switch(a){case 0:this.Aa=this.D;break;case 2:this.Aa=this.L;break;case 3:this.Aa=this.G;break;default:if(80286==this.da||80386==this.da&&4!=a&&5!=a)x.call(this,6);else switch(a){case 1:this.Aa=this.I;break;case 4:this.Aa=y(this);break;case 5:this.Aa=this.N;break;case 6:this.Aa=this.K;break;case 7:this.Aa=this.J}}return Vi.call(this,0,b)} +function Zi(a,b){switch(this.fa>>3&7){case 0:b=this.pa.T;break;case 1:b=this.ba.T;break;case 2:b=this.U.T;break;case 3:b=this.Fa.T;break;case 4:if(80386<=this.da){b=this.Ka.T;break}x.call(this,6);b=a;break;case 5:if(80386<=this.da){b=this.La.T;break}default:x.call(this,6),b=a}-1!==this.F&&je(this,2);return Vi.call(this,0,b)} +function Mi(a,b){if(a&-65536||b&-65536){var c=b&65535;b>>>=16;var d=a&65535;a>>>=16;var e=c*d,d=(e>>>16)+b*d,f=d>>>16,d=(d&65535)+c*a;this.Ea=d<<16|e&65535;this.cb=f+((d>>>16)+b*a)|0}else this.Ea=a*b|0,this.cb=0}function $i(a,b){this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return ig(this,a|b,128)}function aj(a,b){this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return ig(this,a|b,this.Hb)&this.R} +function bj(a,b){var c=a-b-og(this)|0;bg(this,a,b,c,191,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return c&255}function cj(a,b){var c=a-b-og(this)|0;bg(this,a,b,c,this.Hb|63,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return c&this.R}function dj(){return hg(this)?1:0}function nj(){return cg(this)?1:0}function oj(){return cg(this)?0:1}function pj(){return fg(this)?1:0}function qj(){return fg(this)?0:1}function rj(){return cg(this)||fg(this)?1:0} +function sj(){return cg(this)||fg(this)?0:1}function tj(){return gg(this)?1:0}function uj(){return gg(this)?0:1}function vj(){return dg(this)?1:0}function wj(){return dg(this)?0:1}function xj(){return!gg(this)!=!hg(this)?1:0}function yj(){return!gg(this)!=!hg(this)?0:1}function zj(){return fg(this)||!gg(this)!=!hg(this)?1:0}function Aj(){return fg(this)||!gg(this)!=!hg(this)?0:1}function Bj(a,b){return Cj.call(this,a,b,this.sa())}function Dj(a,b){return Ej.call(this,a,b,this.sa())} +function Fj(a,b){return Cj.call(this,a,b,this.I&31)}function Gj(a,b){return Ej.call(this,a,b,this.I&31)}function Hj(a,b){return Ij.call(this,a,b,this.sa())}function Jj(a,b){return Kj.call(this,a,b,this.sa())}function Lj(a,b){return Ij.call(this,a,b,this.I&31)}function Mj(a,b){return Kj.call(this,a,b,this.I&31)}function Nj(a,b){var c=a-b|0;bg(this,a,b,c,191,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return c&255} +function Oj(a,b){var c=a-b|0;bg(this,a,b,c,this.Hb|63,!0);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return c&this.R}function Pj(a,b){ig(this,a&b,128);this.A-=-1===this.F?-1===this.C?this.B.$h:this.B.Df:this.B.Df;this.M|=2;return a}function Qj(a,b){ig(this,a&b,this.Hb);this.A-=-1===this.F?-1===this.C?this.B.$h:this.B.Df:this.B.Df;this.M|=2;return a}function Rj(a,b){var c=this.D&this.R,d=(1<<(this.I&31))-1;return a&~(d<>(this.D&this.R)&(1<<(this.I&31))-1&this.R}function Tj(a,b){if(-1===this.C){switch(this.fa&7){case 0:this.D=this.D&-256|a;break;case 1:this.I=this.I&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.D=this.D&-65281|a<<8;break;case 5:this.I=this.I&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}this.A-=this.B.bi}else this.F=this.C,Dg(this,a),this.A-=this.B.ai;return b} +function Uj(a,b){if(-1===this.C){switch(this.fa&7){case 0:this.D=this.D&~this.R|a;break;case 1:this.I=this.I&~this.R|a;break;case 2:this.L=this.L&~this.R|a;break;case 3:this.G=this.G&~this.R|a;break;case 4:ge(this,y(this)&~this.R|a);break;case 5:this.N=this.G&~this.R|a;break;case 6:this.K=this.K&~this.R|a;break;case 7:this.J=this.J&~this.R|a}this.A-=this.B.bi}else{this.F=this.C;if(!(this.M&2)){var c=this.Ia.Vb(this.vb,this.X);this.M&8?(this.ub(c,a),this.ub(this.Ia.Vb(0,1),a>>8),this.M&=-9):this.hc(c, +a)}this.A-=this.B.ai}return b}function Vj(a,b){a^=b;ig(this,a,128);this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return a}function Wj(a,b){this.A-=-1===this.F?-1===this.C?this.B.nc:this.B.Mb:this.B.Bc;return ig(this,a^b,this.Hb)&this.R}function Xj(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Yj(a){var b=a-1|0;bg(this,a,1,b,this.Hb|62,!0);this.A-=2;return a&~this.R|b&this.R} +function Zj(a,b,c){c>>>=0;if(!c||c<=b>>>0)return!1;var d=0,e=1,f=this.Xm;f[0]=c>>>0;f[1]=0;c=this.Zm;c[0]=a>>>0;for(c[1]=b>>>0;0>>=0,a[1]++),e+=e;do 0<=Xj(c,f)&&(a=c,b=f,a[0]-=b[0],a[1]-=b[1],0>a[0]&&(a[0]>>>=0,a[1]--),d+=e),a=f,a[0]>>>=1,a[1]&1&&(a[0]=(a[0]|2147483648)>>>0),a[1]>>>=1,e/=2;while(1<=e);this.Ea=d;this.cb=c[0];return!0}function ak(a){var b=a+1|0;bg(this,a,1,b,this.Hb|62);this.A-=2;return a&~this.R|b&this.R} +function bk(a){this.ra=a;ie(this);this.ra&-2147483648?lf(this):of(this)}function te(a){this.Uc=a;nc(this)}function ck(a){this.M|=1;this.vc.call(this,a);this.A-=-1===this.C?4:5}function Cj(a,b,c){if(c){16>>16-c)&65535;ig(this,a,32768,d&32768)}return a}function Ej(a,b,c){if(c){var d=a<>>32-c;ig(this,a,-2147483648,d&-2147483648)}return a} +function Ij(a,b,c){if(c){16>>c-1;a=(d>>>1|b<<16-c)&65535;ig(this,a,32768,d&1)}return a}function Kj(a,b,c){if(c){var d=a>>>c-1;a=d>>>1|b<<32-c;ig(this,a,-2147483648,d&1)}return a}function dk(){this.A-=-1===this.C?2:this.B.Fk;return 1}function ek(){var a=this.I&255;this.A-=(-1===this.C?this.B.Th:this.B.Sh)+(a<this.Lc?(-1!=this.od&&(this.od!==this.ba.T&&(this.ba.Cb=this.od&3,Yf(this,this.od)),this.od=-1),this.pd!==this.ea&&Zf(this,this.pd),-1!=this.Tc&&(this.Tc!==this.U.T&&fe(this,this.Tc),this.Tc=-1),-1!==this.va&&(this.va!==this.Ca&&ge(this,this.Ac&~this.U.wa|this.va-this.U.ta),this.va=-1)):8!=this.Lc?(b=0,a=8):(b=0,a=-1,jf(this),e=d=!1)):Zf(this,this.pd);var f=a,g=b,h=32,k=vg(this,this.ea);204!=k||this.ad||(d=!1);this.P&131072&&(6== +f&&99==k||13==f&&205==k)&&(d=!1);!1===d&&(h|=1);983040<=this.ea&&1048575>=this.ea&&(d=!1);r(this,h|-2147483648)&&(d=!0);if(r(this,h)||d){var m=this.Z.Xa,f="Fault "+na(f)+(null!=g?" ("+oa(g)+")":"")+" on opcode "+na(k);d&&m&&(f+=" (blocked)");this.ca?(Nb(this,f,d||h,!0),d&&(d=m,this.ca.Ub())):(this.Da(f),this.Ub())}if(d&&e)throw-1;if(e)throw this.Lc=a,jk.call(this,a,b,c),this.pd=this.ea,this.M=1==a?this.M|8192:this.M|4096,a;} +function nf(a,b,c){this.qd=a;a=0;b&&(a|=1);c&&(a|=2);3==this.Pa&&(a|=4);x.call(this,14,a)}function lk(a){var b=a.ob&7680;a.T&65528&&(6144==b||7168==b||7168>b&&a.rc>8&255;break;case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D&255;break;case 1:b=this.I&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.D>>8&255;break;case 5:b=this.I>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-256|a;break;case 1:this.I=this.I&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.D=this.D&-65281|a<<8;break;case 5:this.I=this.I&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function yf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=C(this,this.G+this.K);this.F=this.C;break;case 1:b=C(this,this.G+this.J);this.F=this.C;break;case 2:b=xg(this,this.N+this.K);this.F=this.C;break;case 3:b=xg(this,this.N+this.J);this.F=this.C;break;case 4:b=C(this,this.K);this.F=this.C;break;case 5:b=C(this,this.J);this.F=this.C;break;case 6:b=C(this,H(this));this.F=this.C;break;case 7:b=C(this,this.G);this.F=this.C;break;case 64:b=C(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:b=C(this,this.G+this.J+this.S());this.F=this.C;break;case 66:b=xg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:b=xg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:b=C(this,this.K+this.S());this.F=this.C;break;case 69:b=C(this,this.J+this.S());this.F=this.C;break;case 70:b=xg(this,this.N+this.S());this.F=this.C;break;case 71:b=C(this,this.G+this.S());this.F=this.C;break;case 128:b=C(this,this.G+this.K+H(this));this.F=this.C;break;case 129:b=C(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:b=xg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:b=xg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:b=C(this,this.K+H(this));this.F=this.C;break;case 133:b=C(this,this.J+H(this));this.F=this.C;break;case 134:b=xg(this,this.N+H(this));this.F=this.C;break;case 135:b=C(this,this.G+H(this));this.F=this.C;break;case 192:b=this.D&255;break;case 193:b=this.I&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.D>>8&255;break; +case 197:b=this.I>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b=this.G>>8&255;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D&255;break;case 1:c=this.I&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.D>>8&255;break;case 5:c=this.I>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:Dg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Dg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Dg(this, +a);this.A-=this.B.xc;break;case 6:Dg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Dg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Dg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Dg(this,a);this.A-=this.B.Za;break;case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I= +this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function zf(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=C(this,this.G+this.K);this.F=this.C;break;case 1:c=C(this,this.G+this.J);this.F=this.C;break;case 2:c=xg(this,this.N+this.K);this.F=this.C;break;case 3:c=xg(this,this.N+this.J);this.F=this.C;break;case 4:c=C(this,this.K);this.F=this.C;break;case 5:c=C(this,this.J);this.F=this.C;break;case 6:c=C(this,H(this));this.F=this.C;break;case 7:c=C(this,this.G);this.F=this.C;break;case 64:c=C(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:c=C(this,this.G+this.J+this.S());this.F=this.C;break;case 66:c=xg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:c=xg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:c=C(this,this.K+this.S());this.F=this.C;break;case 69:c=C(this,this.J+this.S());this.F=this.C;break;case 70:c=xg(this,this.N+this.S());this.F=this.C;break;case 71:c=C(this,this.G+this.S());this.F=this.C;break;case 128:c=C(this,this.G+this.K+H(this));this.F=this.C;break;case 129:c=C(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:c=xg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:c=xg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:c=C(this,this.K+H(this));this.F=this.C;break;case 133:c=C(this,this.J+H(this));this.F=this.C;break;case 134:c=xg(this,this.N+H(this));this.F=this.C;break;case 135:c=C(this,this.G+H(this));this.F=this.C;break;case 192:c=this.D&255;break;case 193:c=this.I&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.D>>8&255;break; +case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:Dg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Dg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Dg(this,a);this.A-=this.B.xc;break;case 6:Dg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Dg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Dg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Dg(this, +a);this.A-=this.B.Za;break;case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I=this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function Af(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=E(this,this.G+this.K);this.A-=this.B.Rc;break;case 1:c=E(this,this.G+this.J);this.A-=this.B.Sc;break;case 2:c=Bg(this,this.N+this.K);this.A-=this.B.Sc;break;case 3:c=Bg(this,this.N+this.J);this.A-=this.B.Rc;break;case 4:c=E(this,this.K);this.A-=this.B.xc;break;case 5:c=E(this,this.J);this.A-=this.B.xc;break;case 6:c=E(this,H(this));this.A-=this.B.Ad;break;case 7:c=E(this,this.G);this.A-=this.B.xc;break;case 64:c=E(this,this.G+this.K+ +this.S());this.A-=this.B.Xb;break;case 65:c=E(this,this.G+this.J+this.S());this.A-=this.B.Yb;break;case 66:c=Bg(this,this.N+this.K+this.S());this.A-=this.B.Yb;break;case 67:c=Bg(this,this.N+this.J+this.S());this.A-=this.B.Xb;break;case 68:c=E(this,this.K+this.S());this.A-=this.B.Za;break;case 69:c=E(this,this.J+this.S());this.A-=this.B.Za;break;case 70:c=Bg(this,this.N+this.S());this.A-=this.B.Za;break;case 71:c=E(this,this.G+this.S());this.A-=this.B.Za;break;case 128:c=E(this,this.G+this.K+H(this)); +this.A-=this.B.Xb;break;case 129:c=E(this,this.G+this.J+H(this));this.A-=this.B.Yb;break;case 130:c=Bg(this,this.N+this.K+H(this));this.A-=this.B.Yb;break;case 131:c=Bg(this,this.N+this.J+H(this));this.A-=this.B.Xb;break;case 132:c=E(this,this.K+H(this));this.A-=this.B.Za;break;case 133:c=E(this,this.J+H(this));this.A-=this.B.Za;break;case 134:c=Bg(this,this.N+H(this));this.A-=this.B.Za;break;case 135:c=E(this,this.G+H(this));this.A-=this.B.Za;break;case 192:c=this.D&65535;break;case 193:c=this.I& +65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=y(this)&65535;break;case 197:c=this.N&65535;break;case 198:c=this.K&65535;break;case 199:c=this.J&65535;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D&65535;break;case 1:b=this.I&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=y(this)&65535;break;case 5:b=this.N&65535;break;case 6:b=this.K&65535;break;case 7:b=this.J&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-65536|a;break;case 1:this.I=this.I&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:ge(this,y(this)&-65536|a);break;case 5:this.N=this.N&-65536|a;break;case 6:this.K=this.K&-65536|a;break;case 7:this.J=this.J&-65536|a}} +function Bf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=E(this,this.G+this.K);this.F=this.C;break;case 1:b=E(this,this.G+this.J);this.F=this.C;break;case 2:b=Bg(this,this.N+this.K);this.F=this.C;break;case 3:b=Bg(this,this.N+this.J);this.F=this.C;break;case 4:b=E(this,this.K);this.F=this.C;break;case 5:b=E(this,this.J);this.F=this.C;break;case 6:b=E(this,H(this));this.F=this.C;break;case 7:b=E(this,this.G);this.F=this.C;break;case 64:b=E(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:b=E(this,this.G+this.J+this.S());this.F=this.C;break;case 66:b=Bg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:b=Bg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:b=E(this,this.K+this.S());this.F=this.C;break;case 69:b=E(this,this.J+this.S());this.F=this.C;break;case 70:b=Bg(this,this.N+this.S());this.F=this.C;break;case 71:b=E(this,this.G+this.S());this.F=this.C;break;case 128:b=E(this,this.G+this.K+H(this));this.F=this.C;break;case 129:b=E(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:b=Bg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:b=Bg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:b=E(this,this.K+H(this));this.F=this.C;break;case 133:b=E(this,this.J+H(this));this.F=this.C;break;case 134:b=Bg(this,this.N+H(this));this.F=this.C;break;case 135:b=E(this,this.G+H(this));this.F=this.C;break;case 192:b=this.D&65535;break;case 193:b=this.I&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=y(this)&65535; +break;case 197:b=this.N&65535;break;case 198:b=this.K&65535;break;case 199:b=this.J&65535;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D&65535;break;case 1:c=this.I&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=y(this)&65535;break;case 5:c=this.N&65535;break;case 6:c=this.K&65535;break;case 7:c=this.J&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:Eg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Eg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Eg(this, +a);this.A-=this.B.xc;break;case 6:Eg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Eg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Eg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Eg(this,a);this.A-=this.B.Za;break;case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,y(this)&-65536|a);break; +case 197:this.N=this.N&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a}} +function Cf(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=E(this,this.G+this.K);this.F=this.C;break;case 1:c=E(this,this.G+this.J);this.F=this.C;break;case 2:c=Bg(this,this.N+this.K);this.F=this.C;break;case 3:c=Bg(this,this.N+this.J);this.F=this.C;break;case 4:c=E(this,this.K);this.F=this.C;break;case 5:c=E(this,this.J);this.F=this.C;break;case 6:c=E(this,H(this));this.F=this.C;break;case 7:c=E(this,this.G);this.F=this.C;break;case 64:c=E(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:c=E(this,this.G+this.J+this.S());this.F=this.C;break;case 66:c=Bg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:c=Bg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:c=E(this,this.K+this.S());this.F=this.C;break;case 69:c=E(this,this.J+this.S());this.F=this.C;break;case 70:c=Bg(this,this.N+this.S());this.F=this.C;break;case 71:c=E(this,this.G+this.S());this.F=this.C;break;case 128:c=E(this,this.G+this.K+H(this));this.F=this.C;break;case 129:c=E(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:c=Bg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:c=Bg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:c=E(this,this.K+H(this));this.F=this.C;break;case 133:c=E(this,this.J+H(this));this.F=this.C;break;case 134:c=Bg(this,this.N+H(this));this.F=this.C;break;case 135:c=E(this,this.G+H(this));this.F=this.C;break;case 192:c=this.D&65535;break;case 193:c=this.I&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=y(this)&65535; +break;case 197:c=this.N&65535;break;case 198:c=this.K&65535;break;case 199:c=this.J&65535;break;default:c=0}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:Eg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Eg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Eg(this,a);this.A-=this.B.xc;break;case 6:Eg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Eg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Eg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Eg(this, +a);this.A-=this.B.Za;break;case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,y(this)&-65536|a);break;case 197:this.N=this.N&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a}} +function Df(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=F(this,this.G+this.K);this.A-=this.B.Rc;break;case 1:c=F(this,this.G+this.J);this.A-=this.B.Sc;break;case 2:c=Cg(this,this.N+this.K);this.A-=this.B.Sc;break;case 3:c=Cg(this,this.N+this.J);this.A-=this.B.Rc;break;case 4:c=F(this,this.K);this.A-=this.B.xc;break;case 5:c=F(this,this.J);this.A-=this.B.xc;break;case 6:c=F(this,H(this));this.A-=this.B.Ad;break;case 7:c=F(this,this.G);this.A-=this.B.xc;break;case 64:c=F(this,this.G+this.K+ +this.S());this.A-=this.B.Xb;break;case 65:c=F(this,this.G+this.J+this.S());this.A-=this.B.Yb;break;case 66:c=Cg(this,this.N+this.K+this.S());this.A-=this.B.Yb;break;case 67:c=Cg(this,this.N+this.J+this.S());this.A-=this.B.Xb;break;case 68:c=F(this,this.K+this.S());this.A-=this.B.Za;break;case 69:c=F(this,this.J+this.S());this.A-=this.B.Za;break;case 70:c=Cg(this,this.N+this.S());this.A-=this.B.Za;break;case 71:c=F(this,this.G+this.S());this.A-=this.B.Za;break;case 128:c=F(this,this.G+this.K+H(this)); +this.A-=this.B.Xb;break;case 129:c=F(this,this.G+this.J+H(this));this.A-=this.B.Yb;break;case 130:c=Cg(this,this.N+this.K+H(this));this.A-=this.B.Yb;break;case 131:c=Cg(this,this.N+this.J+H(this));this.A-=this.B.Xb;break;case 132:c=F(this,this.K+H(this));this.A-=this.B.Za;break;case 133:c=F(this,this.J+H(this));this.A-=this.B.Za;break;case 134:c=Cg(this,this.N+H(this));this.A-=this.B.Za;break;case 135:c=F(this,this.G+H(this));this.A-=this.B.Za;break;case 192:c=this.D;break;case 193:c=this.I;break; +case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=y(this);break;case 197:c=this.N;break;case 198:c=this.K;break;case 199:c=this.J;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D;break;case 1:b=this.I;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=y(this);break;case 5:b=this.N;break;case 6:b=this.K;break;case 7:b=this.J;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D=a;break;case 1:this.I=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:ge(this, +a);break;case 5:this.N=a;break;case 6:this.K=a;break;case 7:this.J=a}} +function Ef(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=F(this,this.G+this.K);this.F=this.C;break;case 1:b=F(this,this.G+this.J);this.F=this.C;break;case 2:b=Cg(this,this.N+this.K);this.F=this.C;break;case 3:b=Cg(this,this.N+this.J);this.F=this.C;break;case 4:b=F(this,this.K);this.F=this.C;break;case 5:b=F(this,this.J);this.F=this.C;break;case 6:b=F(this,H(this));this.F=this.C;break;case 7:b=F(this,this.G);this.F=this.C;break;case 64:b=F(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:b=F(this,this.G+this.J+this.S());this.F=this.C;break;case 66:b=Cg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:b=Cg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:b=F(this,this.K+this.S());this.F=this.C;break;case 69:b=F(this,this.J+this.S());this.F=this.C;break;case 70:b=Cg(this,this.N+this.S());this.F=this.C;break;case 71:b=F(this,this.G+this.S());this.F=this.C;break;case 128:b=F(this,this.G+this.K+H(this));this.F=this.C;break;case 129:b=F(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:b=Cg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:b=Cg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:b=F(this,this.K+H(this));this.F=this.C;break;case 133:b=F(this,this.J+H(this));this.F=this.C;break;case 134:b=Cg(this,this.N+H(this));this.F=this.C;break;case 135:b=F(this,this.G+H(this));this.F=this.C;break;case 192:b=this.D;break;case 193:b=this.I;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=y(this);break;case 197:b=this.N;break; +case 198:b=this.K;break;case 199:b=this.J;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D;break;case 1:c=this.I;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=y(this);break;case 5:c=this.N;break;case 6:c=this.K;break;case 7:c=this.J;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:Fg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Fg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Fg(this,a);this.A-=this.B.xc;break;case 6:Fg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Fg(this, +a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Fg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Fg(this,a);this.A-=this.B.Za;break;case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.N=a;break;case 198:this.K=a;break;case 199:this.J=a}} +function Ff(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=F(this,this.G+this.K);this.F=this.C;break;case 1:c=F(this,this.G+this.J);this.F=this.C;break;case 2:c=Cg(this,this.N+this.K);this.F=this.C;break;case 3:c=Cg(this,this.N+this.J);this.F=this.C;break;case 4:c=F(this,this.K);this.F=this.C;break;case 5:c=F(this,this.J);this.F=this.C;break;case 6:c=F(this,H(this));this.F=this.C;break;case 7:c=F(this,this.G);this.F=this.C;break;case 64:c=F(this,this.G+this.K+this.S());this.F=this.C;break; +case 65:c=F(this,this.G+this.J+this.S());this.F=this.C;break;case 66:c=Cg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:c=Cg(this,this.N+this.J+this.S());this.F=this.C;break;case 68:c=F(this,this.K+this.S());this.F=this.C;break;case 69:c=F(this,this.J+this.S());this.F=this.C;break;case 70:c=Cg(this,this.N+this.S());this.F=this.C;break;case 71:c=F(this,this.G+this.S());this.F=this.C;break;case 128:c=F(this,this.G+this.K+H(this));this.F=this.C;break;case 129:c=F(this,this.G+this.J+H(this)); +this.F=this.C;break;case 130:c=Cg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:c=Cg(this,this.N+this.J+H(this));this.F=this.C;break;case 132:c=F(this,this.K+H(this));this.F=this.C;break;case 133:c=F(this,this.J+H(this));this.F=this.C;break;case 134:c=Cg(this,this.N+H(this));this.F=this.C;break;case 135:c=F(this,this.G+H(this));this.F=this.C;break;case 192:c=this.D;break;case 193:c=this.I;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=y(this);break;case 197:c=this.N;break; +case 198:c=this.K;break;case 199:c=this.J}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:Fg(this,a);this.A-=this.B.Rc;break;case 1:case 2:Fg(this,a);this.A-=this.B.Sc;break;case 4:case 5:case 7:Fg(this,a);this.A-=this.B.xc;break;case 6:Fg(this,a);this.A-=this.B.Ad;break;case 64:case 67:case 128:case 131:Fg(this,a);this.A-=this.B.Xb;break;case 65:case 66:case 129:case 130:Fg(this,a);this.A-=this.B.Yb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Fg(this, +a);this.A-=this.B.Za;break;case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.N=a;break;case 198:this.K=a;break;case 199:this.J=a}} +function Gf(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=C(this,this.D);break;case 1:c=C(this,this.I);break;case 2:c=C(this,this.L);break;case 3:c=C(this,this.G);break;case 4:c=C(this,nk.call(this,0));break;case 5:c=C(this,H(this));break;case 6:c=C(this,this.K);break;case 7:c=C(this,this.J);break;case 64:c=C(this,this.D+this.S());break;case 65:c=C(this,this.I+this.S());break;case 66:c=C(this,this.L+this.S());break;case 67:c=C(this,this.G+this.S());break;case 68:c=C(this,nk.call(this,1)+this.S()); +break;case 69:c=xg(this,this.N+this.S());break;case 70:c=C(this,this.K+this.S());break;case 71:c=C(this,this.J+this.S());break;case 128:c=C(this,this.D+H(this));break;case 129:c=C(this,this.I+H(this));break;case 130:c=C(this,this.L+H(this));break;case 131:c=C(this,this.G+H(this));break;case 132:c=C(this,nk.call(this,2)+H(this));break;case 133:c=xg(this,this.N+H(this));break;case 134:c=C(this,this.K+H(this));break;case 135:c=C(this,this.J+H(this));break;case 192:c=this.D&255;break;case 193:c=this.I& +255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.D>>8&255;break;case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D&255;break;case 1:b=this.I&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.D>>8&255;break;case 5:b=this.I>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-256|a;break;case 1:this.I=this.I&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.D=this.D&-65281|a<<8;break;case 5:this.I=this.I&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function Hf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=C(this,this.D);this.F=this.C;break;case 1:b=C(this,this.I);this.F=this.C;break;case 2:b=C(this,this.L);this.F=this.C;break;case 3:b=C(this,this.G);this.F=this.C;break;case 4:b=C(this,nk.call(this,0));this.F=this.C;break;case 5:b=C(this,H(this));this.F=this.C;break;case 6:b=C(this,this.K);this.F=this.C;break;case 7:b=C(this,this.J);this.F=this.C;break;case 64:b=C(this,this.D+this.S());this.F=this.C;break;case 65:b=C(this,this.I+this.S()); +this.F=this.C;break;case 66:b=C(this,this.L+this.S());this.F=this.C;break;case 67:b=C(this,this.G+this.S());this.F=this.C;break;case 68:b=C(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:b=xg(this,this.N+this.S());this.F=this.C;break;case 70:b=C(this,this.K+this.S());this.F=this.C;break;case 71:b=C(this,this.J+this.S());this.F=this.C;break;case 128:b=C(this,this.D+H(this));this.F=this.C;break;case 129:b=C(this,this.I+H(this));this.F=this.C;break;case 130:b=C(this,this.L+H(this));this.F= +this.C;break;case 131:b=C(this,this.G+H(this));this.F=this.C;break;case 132:b=C(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:b=xg(this,this.N+H(this));this.F=this.C;break;case 134:b=C(this,this.K+H(this));this.F=this.C;break;case 135:b=C(this,this.J+H(this));this.F=this.C;break;case 192:b=this.D&255;break;case 193:b=this.I&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.D>>8&255;break;case 197:b=this.I>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b= +this.G>>8&255;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D&255;break;case 1:c=this.I&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.D>>8&255;break;case 5:c=this.I>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I= +this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:Dg(this,a)}} +function If(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=C(this,this.D);this.F=this.C;break;case 1:c=C(this,this.I);this.F=this.C;break;case 2:c=C(this,this.L);this.F=this.C;break;case 3:c=C(this,this.G);this.F=this.C;break;case 4:c=C(this,nk.call(this,0));this.F=this.C;break;case 5:c=C(this,H(this));this.F=this.C;break;case 6:c=C(this,this.K);this.F=this.C;break;case 7:c=C(this,this.J);this.F=this.C;break;case 64:c=C(this,this.D+this.S());this.F=this.C;break;case 65:c=C(this,this.I+this.S()); +this.F=this.C;break;case 66:c=C(this,this.L+this.S());this.F=this.C;break;case 67:c=C(this,this.G+this.S());this.F=this.C;break;case 68:c=C(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:c=xg(this,this.N+this.S());this.F=this.C;break;case 70:c=C(this,this.K+this.S());this.F=this.C;break;case 71:c=C(this,this.J+this.S());this.F=this.C;break;case 128:c=C(this,this.D+H(this));this.F=this.C;break;case 129:c=C(this,this.I+H(this));this.F=this.C;break;case 130:c=C(this,this.L+H(this));this.F= +this.C;break;case 131:c=C(this,this.G+H(this));this.F=this.C;break;case 132:c=C(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:c=xg(this,this.N+H(this));this.F=this.C;break;case 134:c=C(this,this.K+H(this));this.F=this.C;break;case 135:c=C(this,this.J+H(this));this.F=this.C;break;case 192:c=this.D&255;break;case 193:c=this.I&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.D>>8&255;break;case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c= +this.G>>8&255;break;default:c=0}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I=this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:Dg(this,a)}} +function Jf(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=E(this,this.D);break;case 1:c=E(this,this.I);break;case 2:c=E(this,this.L);break;case 3:c=E(this,this.G);break;case 4:c=E(this,nk.call(this,0));break;case 5:c=E(this,H(this));break;case 6:c=E(this,this.K);break;case 7:c=E(this,this.J);break;case 64:c=E(this,this.D+this.S());break;case 65:c=E(this,this.I+this.S());break;case 66:c=E(this,this.L+this.S());break;case 67:c=E(this,this.G+this.S());break;case 68:c=E(this,nk.call(this,1)+this.S()); +break;case 69:c=Bg(this,this.N+this.S());break;case 70:c=E(this,this.K+this.S());break;case 71:c=E(this,this.J+this.S());break;case 128:c=E(this,this.D+H(this));break;case 129:c=E(this,this.I+H(this));break;case 130:c=E(this,this.L+H(this));break;case 131:c=E(this,this.G+H(this));break;case 132:c=E(this,nk.call(this,2)+H(this));break;case 133:c=Bg(this,this.N+H(this));break;case 134:c=E(this,this.K+H(this));break;case 135:c=E(this,this.J+H(this));break;case 192:c=this.D&65535;break;case 193:c=this.I& +65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=y(this)&65535;break;case 197:c=this.N&65535;break;case 198:c=this.K&65535;break;case 199:c=this.J&65535;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D&65535;break;case 1:b=this.I&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=y(this)&65535;break;case 5:b=this.N&65535;break;case 6:b=this.K&65535;break;case 7:b=this.J&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-65536|a;break;case 1:this.I=this.I&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:ge(this,y(this)&-65536|a);break;case 5:this.N=this.N&-65536|a;break;case 6:this.K=this.K&-65536|a;break;case 7:this.J=this.J&-65536|a}} +function Kf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=E(this,this.D);this.F=this.C;break;case 1:b=E(this,this.I);this.F=this.C;break;case 2:b=E(this,this.L);this.F=this.C;break;case 3:b=E(this,this.G);this.F=this.C;break;case 4:b=E(this,nk.call(this,0));this.F=this.C;break;case 5:b=E(this,H(this));this.F=this.C;break;case 6:b=E(this,this.K);this.F=this.C;break;case 7:b=E(this,this.J);this.F=this.C;break;case 64:b=E(this,this.D+this.S());this.F=this.C;break;case 65:b=E(this,this.I+this.S()); +this.F=this.C;break;case 66:b=E(this,this.L+this.S());this.F=this.C;break;case 67:b=E(this,this.G+this.S());this.F=this.C;break;case 68:b=E(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:b=Bg(this,this.N+this.S());this.F=this.C;break;case 70:b=E(this,this.K+this.S());this.F=this.C;break;case 71:b=E(this,this.J+this.S());this.F=this.C;break;case 128:b=E(this,this.D+H(this));this.F=this.C;break;case 129:b=E(this,this.I+H(this));this.F=this.C;break;case 130:b=E(this,this.L+H(this));this.F= +this.C;break;case 131:b=E(this,this.G+H(this));this.F=this.C;break;case 132:b=E(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:b=Bg(this,this.N+H(this));this.F=this.C;break;case 134:b=E(this,this.K+H(this));this.F=this.C;break;case 135:b=E(this,this.J+H(this));this.F=this.C;break;case 192:b=this.D&65535;break;case 193:b=this.I&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=y(this)&65535;break;case 197:b=this.N&65535;break;case 198:b=this.K&65535;break; +case 199:b=this.J&65535;break;default:b=0}switch(this.fa>>3&7){case 0:c=this.D&65535;break;case 1:c=this.I&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=y(this)&65535;break;case 5:c=this.N&65535;break;case 6:c=this.K&65535;break;case 7:c=this.J&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,y(this)& +-65536|a);break;case 197:this.N=this.N&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a;break;default:Eg(this,a)}} +function Lf(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=E(this,this.D);this.F=this.C;break;case 1:c=E(this,this.I);this.F=this.C;break;case 2:c=E(this,this.L);this.F=this.C;break;case 3:c=E(this,this.G);this.F=this.C;break;case 4:c=E(this,nk.call(this,0));this.F=this.C;break;case 5:c=E(this,H(this));this.F=this.C;break;case 6:c=E(this,this.K);this.F=this.C;break;case 7:c=E(this,this.J);this.F=this.C;break;case 64:c=E(this,this.D+this.S());this.F=this.C;break;case 65:c=E(this,this.I+this.S()); +this.F=this.C;break;case 66:c=E(this,this.L+this.S());this.F=this.C;break;case 67:c=E(this,this.G+this.S());this.F=this.C;break;case 68:c=E(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:c=Bg(this,this.N+this.S());this.F=this.C;break;case 70:c=E(this,this.K+this.S());this.F=this.C;break;case 71:c=E(this,this.J+this.S());this.F=this.C;break;case 128:c=E(this,this.D+H(this));this.F=this.C;break;case 129:c=E(this,this.I+H(this));this.F=this.C;break;case 130:c=E(this,this.L+H(this));this.F= +this.C;break;case 131:c=E(this,this.G+H(this));this.F=this.C;break;case 132:c=E(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:c=Bg(this,this.N+H(this));this.F=this.C;break;case 134:c=E(this,this.K+H(this));this.F=this.C;break;case 135:c=E(this,this.J+H(this));this.F=this.C;break;case 192:c=this.D&65535;break;case 193:c=this.I&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=y(this)&65535;break;case 197:c=this.N&65535;break;case 198:c=this.K&65535;break; +case 199:c=this.J&65535;break;default:c=0}a=a[this.fa>>3&7].call(this,c,b.call(this));switch(d){case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,y(this)&-65536|a);break;case 197:this.N=this.N&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a;break;default:Eg(this,a)}} +function Mf(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=F(this,this.D);break;case 1:c=F(this,this.I);break;case 2:c=F(this,this.L);break;case 3:c=F(this,this.G);break;case 4:c=F(this,nk.call(this,0));break;case 5:c=F(this,H(this));break;case 6:c=F(this,this.K);break;case 7:c=F(this,this.J);break;case 64:c=F(this,this.D+this.S());break;case 65:c=F(this,this.I+this.S());break;case 66:c=F(this,this.L+this.S());break;case 67:c=F(this,this.G+this.S());break;case 68:c=F(this,nk.call(this,1)+this.S()); +break;case 69:c=Cg(this,this.N+this.S());break;case 70:c=F(this,this.K+this.S());break;case 71:c=F(this,this.J+this.S());break;case 128:c=F(this,this.D+H(this));break;case 129:c=F(this,this.I+H(this));break;case 130:c=F(this,this.L+H(this));break;case 131:c=F(this,this.G+H(this));break;case 132:c=F(this,nk.call(this,2)+H(this));break;case 133:c=Cg(this,this.N+H(this));break;case 134:c=F(this,this.K+H(this));break;case 135:c=F(this,this.J+H(this));break;case 192:c=this.D;break;case 193:c=this.I;break; +case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=y(this);break;case 197:c=this.N;break;case 198:c=this.K;break;case 199:c=this.J;break;default:c=0}var d=this.fa>>3&7;switch(d){case 0:b=this.D;break;case 1:b=this.I;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=y(this);break;case 5:b=this.N;break;case 6:b=this.K;break;case 7:b=this.J;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D=a;break;case 1:this.I=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:ge(this, +a);break;case 5:this.N=a;break;case 6:this.K=a;break;case 7:this.J=a}} +function Nf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=F(this,this.D);this.F=this.C;break;case 1:b=F(this,this.I);this.F=this.C;break;case 2:b=F(this,this.L);this.F=this.C;break;case 3:b=F(this,this.G);this.F=this.C;break;case 4:b=F(this,nk.call(this,0));this.F=this.C;break;case 5:b=F(this,H(this));this.F=this.C;break;case 6:b=F(this,this.K);this.F=this.C;break;case 7:b=F(this,this.J);this.F=this.C;break;case 64:b=F(this,this.D+this.S());this.F=this.C;break;case 65:b=F(this,this.I+this.S()); +this.F=this.C;break;case 66:b=F(this,this.L+this.S());this.F=this.C;break;case 67:b=F(this,this.G+this.S());this.F=this.C;break;case 68:b=F(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:b=Cg(this,this.N+this.S());this.F=this.C;break;case 70:b=F(this,this.K+this.S());this.F=this.C;break;case 71:b=F(this,this.J+this.S());this.F=this.C;break;case 128:b=F(this,this.D+H(this));this.F=this.C;break;case 129:b=F(this,this.I+H(this));this.F=this.C;break;case 130:b=F(this,this.L+H(this));this.F= +this.C;break;case 131:b=F(this,this.G+H(this));this.F=this.C;break;case 132:b=F(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:b=Cg(this,this.N+H(this));this.F=this.C;break;case 134:b=F(this,this.K+H(this));this.F=this.C;break;case 135:b=F(this,this.J+H(this));this.F=this.C;break;case 192:b=this.D;break;case 193:b=this.I;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=y(this);break;case 197:b=this.N;break;case 198:b=this.K;break;case 199:b=this.J;break;default:b=0}switch(this.fa>> +3&7){case 0:c=this.D;break;case 1:c=this.I;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=y(this);break;case 5:c=this.N;break;case 6:c=this.K;break;case 7:c=this.J;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.N=a;break;case 198:this.K=a;break;case 199:this.J=a;break;default:Fg(this,a)}} +function Of(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=F(this,this.D);this.F=this.C;break;case 1:c=F(this,this.I);this.F=this.C;break;case 2:c=F(this,this.L);this.F=this.C;break;case 3:c=F(this,this.G);this.F=this.C;break;case 4:c=F(this,nk.call(this,0));this.F=this.C;break;case 5:c=F(this,H(this));this.F=this.C;break;case 6:c=F(this,this.K);this.F=this.C;break;case 7:c=F(this,this.J);this.F=this.C;break;case 64:c=F(this,this.D+this.S());this.F=this.C;break;case 65:c=F(this,this.I+this.S()); +this.F=this.C;break;case 66:c=F(this,this.L+this.S());this.F=this.C;break;case 67:c=F(this,this.G+this.S());this.F=this.C;break;case 68:c=F(this,nk.call(this,1)+this.S());this.F=this.C;break;case 69:c=Cg(this,this.N+this.S());this.F=this.C;break;case 70:c=F(this,this.K+this.S());this.F=this.C;break;case 71:c=F(this,this.J+this.S());this.F=this.C;break;case 128:c=F(this,this.D+H(this));this.F=this.C;break;case 129:c=F(this,this.I+H(this));this.F=this.C;break;case 130:c=F(this,this.L+H(this));this.F= +this.C;break;case 131:c=F(this,this.G+H(this));this.F=this.C;break;case 132:c=F(this,nk.call(this,2)+H(this));this.F=this.C;break;case 133:c=Cg(this,this.N+H(this));this.F=this.C;break;case 134:c=F(this,this.K+H(this));this.F=this.C;break;case 135:c=F(this,this.J+H(this));this.F=this.C;break;case 192:c=this.D;break;case 193:c=this.I;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=y(this);break;case 197:c=this.N;break;case 198:c=this.K;break;case 199:c=this.J;break;default:c=0}a=a[this.fa>> +3&7].call(this,c,b.call(this));switch(d){case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.N=a;break;case 198:this.K=a;break;case 199:this.J=a;break;default:Fg(this,a)}} +function nk(a){var b=this.sa(),c=b>>6,d,e;switch(b>>3&7){case 0:d=this.D;break;case 1:d=this.I;break;case 2:d=this.L;break;case 3:d=this.G;break;case 4:d=0;break;case 5:d=this.N;break;case 6:d=this.K;break;case 7:d=this.J}switch(b&7){case 0:e=this.D;break;case 1:e=this.I;break;case 2:e=this.L;break;case 3:e=this.G;break;case 4:e=y(this);this.Ga=this.Sb;break;case 5:a?(e=this.N,this.Ga=this.Sb):e=H(this);break;case 6:e=this.K;break;case 7:e=this.J}return(d<>8&255;9<(c&15)||eg(this)?(c+=6,80286<=this.da&&255>8&255;9<(c&15)||eg(this)?(c=c-6&15,d=d-1&255,a=b=1):a=b=0;this.D=this.D&-65536|d<<8|c;a?jg(this):kg(this);b?rg(this):pg(this);this.A-=this.B.ve},function(){this.D=ak.call(this,this.D)},function(){this.I=ak.call(this,this.I)},function(){this.L=ak.call(this,this.L)},function(){this.G=ak.call(this,this.G)},function(){ge(this, +ak.call(this,y(this)))},function(){this.N=ak.call(this,this.N)},function(){this.K=ak.call(this,this.K)},function(){this.J=ak.call(this,this.J)},function(){this.D=Yj.call(this,this.D)},function(){this.I=Yj.call(this,this.I)},function(){this.L=Yj.call(this,this.L)},function(){this.G=Yj.call(this,this.G)},function(){ge(this,Yj.call(this,y(this)))},function(){this.N=Yj.call(this,this.N)},function(){this.K=Yj.call(this,this.K)},function(){this.J=Yj.call(this,this.J)},function(){oe(this,this.D&this.R); +this.A-=this.B.Jc},function(){oe(this,this.I&this.R);this.A-=this.B.Jc},function(){oe(this,this.L&this.R);this.A-=this.B.Jc},function(){oe(this,this.G&this.R);this.A-=this.B.Jc},function(){oe(this,y(this)-2&65535);this.A-=this.B.Jc},function(){oe(this,this.N&this.R);this.A-=this.B.Jc},function(){oe(this,this.K&this.R);this.A-=this.B.Jc},function(){oe(this,this.J&this.R);this.A-=this.B.Jc},function(){this.D=this.D&~this.R|ee(this);this.A-=this.B.oc},function(){this.I=this.I&~this.R|ee(this);this.A-= +this.B.oc},function(){this.L=this.L&~this.R|ee(this);this.A-=this.B.oc},function(){this.G=this.G&~this.R|ee(this);this.A-=this.B.oc},function(){ge(this,y(this)&~this.R|ee(this));this.A-=this.B.oc},function(){this.N=this.N&~this.R|ee(this);this.A-=this.B.oc},function(){this.K=this.K&~this.R|ee(this);this.A-=this.B.oc},function(){this.J=this.J&~this.R|ee(this);this.A-=this.B.oc},ok,pk,qk,rk,sk,tk,uk,vk,wk,xk,yk,zk,Ak,Bk,Ck,Dk,ok,pk,qk,rk,sk,tk,uk,vk,wk,xk,yk,zk,Ak,Bk,Ck,Dk,Ek,function(){this.mb.call(this, +Tk,this.Ha);this.A-=-1===this.F?1:this.B.xg},Ek,function(){this.mb.call(this,Tk,this.S);this.A-=-1===this.F?1:this.B.xg},function(){this.vc.call(this,Pj)},function(){this.Ba.call(this,Qj)},function(){this.lc.call(this,Tj)},function(){this.la.call(this,Uj)},Gk,Hk,Ik,Jk,function(){this.M|=1;this.Ba.call(this,Zi)},function(){this.M|=1;this.Ga=this.Sb=this.Qg;this.la.call(this,Pi)},function(){var a;this.la.call(this,Yi);switch(this.fa>>3&7){case 0:a=this.D;this.D=this.Aa;ne(this,a);break;case 1:a=this.I; +this.I=this.Aa;Yf(this,a);break;case 2:a=this.L;this.L=this.Aa;fe(this,a);break;case 3:a=this.G;this.G=this.Aa;me(this,a);break;case 4:a=y(this);ge(this,this.Aa);80386<=this.da?this.Ka.load(a):ne(this,a);break;case 5:a=this.N;this.N=this.Aa;80386<=this.da?this.La.load(a):Yf(this,a);break;case 6:a=this.K;this.K=this.Aa;fe(this,a);break;case 7:a=this.J,this.J=this.Aa,me(this,a)}},function(){this.M|=1;this.va=this.Ca;this.Aa=ee(this);this.mb.call(this,Uk,hk);this.va=-1},function(){this.A-=3},function(){var a= +this.D;this.D=this.D&~this.R|this.I&this.R;this.I=this.I&~this.R|a&this.R;this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.L&this.R;this.L=this.L&~this.R|a&this.R;this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.G&this.R;this.G=this.G&~this.R|a&this.R;this.A-=3},function(){var a=this.D,b=y(this);this.D=this.D&~this.R|b&this.R;ge(this,b&~this.R|a&this.R);this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.N&this.R;this.N=this.N&~this.R|a&this.R;this.A-=3},function(){var a= +this.D;this.D=this.D&~this.R|this.K&this.R;this.K=this.K&~this.R|a&this.R;this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.J&this.R;this.J=this.J&~this.R|a&this.R;this.A-=3},function(){this.D=2==this.X?this.D&-65536|this.D<<24>>24&65535:this.D<<16>>16;this.A-=2},function(){this.L=2==this.X?this.L&-65536|(this.D&32768?65535:0):this.D&-2147483648?-1:0;this.A-=this.B.Kj},function(){ik.call(this,this.Ha(),Hg(this));this.A-=this.B.Nj},function(){this.A-=3},function(){var a=qe(this);a&131072&& +3>this.mc?x.call(this,13,0):(oe(this,a&-196609),this.A-=this.B.Jc)},function(){if(this.P&131072&&3>this.mc)x.call(this,13,0);else{var a=ee(this),a=a&65535|this.P&-65536;re(this,a);this.A-=this.B.oc}},function(){var a=this.D>>8&255;a&1?jg(this):kg(this);a&4?(this.resultType&=-3,this.P|=4):(this.resultType&=-3,this.P&=-5);a&16?rg(this):pg(this);a&64?sg(this):qg(this);a&128?(this.resultType&=-17,this.P|=128):(this.resultType&=-17,this.P&=-129);this.A-=this.B.Zb},function(){this.D=this.D&-65281|(qe(this)& +213)<<8;this.A-=this.B.Zb},function(){var a=this.D&-256,b;b=H(this);b=this.ya(this.Ga.Bb(b,1));this.D=a|b;this.A-=this.B.Ih},function(){this.D=this.D&~this.R|ke(this,this.Ga,H(this));this.A-=this.B.Ih},function(){var a=H(this),b=this.D;this.ub(this.Ga.Vb(a,1),b);this.A-=this.B.Jh},function(){Gg(this,this.Ga,H(this),this.D);this.A-=this.B.Jh},function(){var a=1,b=0,c=this.wa,d=this.B.Kh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Mh,this.ha&256||(this.A-=this.B.Lh));if(a--){var e=this.ya(this.Ga.Bb(this.K& +c,1));this.ub(this.pa.Vb(this.J&c,1),e);e=this.P&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d;this.I=this.I&~c|this.I-b&c;a&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Kh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Mh,this.ha&256||(this.A-=this.B.Lh));if(a--){Gg(this,this.pa,this.J&c,ke(this,this.Ga,this.K&c));var e=this.P&1024?-this.X:this.X;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d;this.I=this.I&~c|this.I-b&c;a&&(ag(this), +this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.vh;this.ha&192&&(a=this.I&c,b=1,d=this.B.xh,this.ha&256||(this.A-=this.B.wh));if(a--){var e=wg(this,this.Ga,this.K),f=wg(this,this.pa,this.J);this.F=this.C;Ci.call(this,e,f);e=this.P&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Mb;a&&fg(this)==(this.ha&64)&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.vh;this.ha&192&&(a=this.I&c,b=1,d=this.B.xh,this.ha&256|| +(this.A-=this.B.wh));if(a--){var e=yg(this,this.Ga,this.K&c),f=yg(this,this.pa,this.J&c);this.F=this.C;Di.call(this,e,f);e=this.P&1024?-this.X:this.X;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Mb;a&&fg(this)==(this.ha&64)&&(ag(this),this.M|=256)}},function(){ig(this,this.D&this.sa(),128);this.A-=this.B.ve},function(){ig(this,this.D&this.Ha(),this.Hb);this.A-=this.B.ve},function(){var a=1,b=0,c=this.wa,d=this.B.Vh;this.ha&192&&(a=this.I&c,b= +1,d=this.B.Xh,this.ha&256||(this.A-=this.B.Wh));if(a--){var e=this.D;this.ub(this.pa.Vb(this.J&c,1),e);this.I=this.I&~c|this.I-b&c;80546<=this.Rd&&80564>=this.Rd&&!(this.ha&2048)!=(103!=this.ya(this.ea))&&(c^=-65536);this.J=this.J&~c|this.J+(this.P&1024?-1:1)&c;this.A-=d;a&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Vh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Xh,this.ha&256||(this.A-=this.B.Wh));a--&&(Gg(this,this.pa,this.J&c,this.D),this.J=this.J&~c|this.J+(this.P&1024?-this.X: +this.X)&c,this.I=this.I&~c|this.I-b&c,this.A-=d,a&&(ag(this),this.M|=256))},function(){var a=1,b=0,c=this.wa,d=this.B.Ch;this.ha&192&&(a=this.I&c,b=1,d=this.B.Eh,this.ha&256||(this.A-=this.B.Dh));if(a--){var e=this.ya(this.Ga.Bb(this.K&c,1));this.D=this.D&-256|e;this.K=this.K&~c|this.K+(this.P&1024?-1:1)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Ch;this.ha&192&&(a=this.I&c,b=1,d=this.B.Eh,this.ha&256||(this.A-=this.B.Dh));if(a--){var e= +ke(this,this.Ga,this.K&c);this.D=this.D&~this.R|e;this.K=this.K&~c|this.K+(this.P&1024?-this.X:this.X)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(ag(this),this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Ph;this.ha&192&&(a=this.I&c,b=1,d=this.B.Rh,this.ha&256||(this.A-=this.B.Qh));if(a--){var e=this.D&255,f=wg(this,this.pa,this.J);this.F=this.C;Ci.call(this,e,f);this.J=this.J&~c|this.J+(this.P&1024?-1:1)&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Mb;a&&fg(this)==(this.ha&64)&&(ag(this), +this.M|=256)}},function(){var a=1,b=0,c=this.wa,d=this.B.Ph;this.ha&192&&(a=this.I&c,b=1,d=this.B.Rh,this.ha&256||(this.A-=this.B.Qh));if(a--){var e=this.D&this.R,f=yg(this,this.pa,this.J&c);this.F=this.C;Di.call(this,e,f);this.J=this.J&~c|this.J+(this.P&1024?-this.X:this.X)&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Mb;a&&fg(this)==(this.ha&64)&&(ag(this),this.M|=256)}},function(){this.D=this.D&-256|this.sa();this.A-=this.B.Zb},function(){this.I=this.I&-256|this.sa();this.A-=this.B.Zb},function(){this.L= +this.L&-256|this.sa();this.A-=this.B.Zb},function(){this.G=this.G&-256|this.sa();this.A-=this.B.Zb},function(){this.D=this.D&-65281|this.sa()<<8;this.A-=this.B.Zb},function(){this.I=this.I&-65281|this.sa()<<8;this.A-=this.B.Zb},function(){this.L=this.L&-65281|this.sa()<<8;this.A-=this.B.Zb},function(){this.G=this.G&-65281|this.sa()<<8;this.A-=this.B.Zb},function(){this.D=this.D&~this.R|this.Ha();this.A-=this.B.Zb},function(){this.I=this.I&~this.R|this.Ha();this.A-=this.B.Zb},function(){this.L=this.L& +~this.R|this.Ha();this.A-=this.B.Zb},function(){this.G=this.G&~this.R|this.Ha();this.A-=this.B.Zb},function(){ge(this,y(this)&~this.R|this.Ha());this.A-=this.B.Zb},function(){this.N=this.N&~this.R|this.Ha();this.A-=this.B.Zb},function(){this.K=this.K&~this.R|this.Ha();this.A-=this.B.Zb},function(){this.J=this.J&~this.R|this.Ha();this.A-=this.B.Zb},Nk,Ok,Nk,Ok,function(){this.la.call(this,Qi)},function(){this.la.call(this,Oi)},function(){this.M|=1;this.ld.call(this,Vk,this.sa)},function(){this.M|= +1;this.mb.call(this,Vk,this.Ha)},Pk,Qk,Pk,Qk,function(){if(this.P&131072&&3>this.mc)x.call(this,13,0);else{var a=this.B.dk;this.Lc=-1;jk.call(this,3,null,a)}},function(){var a=this.sa();if(this.P&131072&&3>this.mc)x.call(this,13,0);else{var b;a:{b=this.Vf[a];if(void 0!==b)for(var c=0;cthis.mc)x.call(this,13,0);else{var a= +this.B.ek;this.Lc=-1;jk.call(this,4,null,a)}else this.A-=this.B.fk},function(){if(this.P&131072&&3>this.mc)x.call(this,13,0);else{this.Tc=this.U.T;this.va=this.Ca;this.A-=this.B.bk;if(this.ra&1&&this.P&16384){var a=this.ja(this.ka.ta+0);he(this.ba,a,!1)}else{var a=this.Pa,b=ee(this),c=ee(this),d=ee(this);if(this.P&131072)d=d&131071|this.P&-131072;else if(d&131072){var e=ee(this),f=ee(this),g=ee(this),h=ee(this),k=ee(this),m=ee(this);ie(this,!0,!0);fe(this,f);ge(this,e);ne(this,g);me(this,h);this.Ka.load(k); +this.La.load(m)}null!=se(this,b,c,!1)&&(re(this,d,a),this.Yf&&Tf(this,this.ea))}this.Tc=this.va=-1}},function(){this.ld.call(this,Kk,dk)},function(){this.mb.call(this,2==this.X?Lk:Mk,dk)},function(){this.ld.call(this,Kk,ek)},function(){this.mb.call(this,2==this.X?Lk:Mk,ek)},function(){var a=this.sa();if(a){var b=this.D&255;this.D=this.D&-65536|b/a<<8|b%a;ig(this,this.D,128);this.A-=this.B.Hj}else mk.call(this)},function(){var a=this.D&255,b=(this.D>>8&255)*this.sa()|0,c=a+b|0;this.D=this.D&-65536| +c&255;bg(this,a,b,c,191);this.A-=this.B.Gj},function(){this.D=this.D&-256|(cg(this)?255:0);this.A-=2},function(){this.D=this.D&-256|wg(this,this.Ga,this.G+(this.D&255));this.A-=this.B.Gk},function(){Rk.call(this,216)},function(){Rk.call(this,217)},function(){Rk.call(this,218)},function(){Rk.call(this,219)},function(){Rk.call(this,220)},function(){Rk.call(this,221)},function(){Rk.call(this,222)},function(){Rk.call(this,223)},function(){var a=this.S(),b=this.I-1&this.wa;this.I=this.I&~this.wa|b;b&& +!fg(this)?(B(this,z(this)+a),this.A-=this.B.mk):this.A-=this.B.Fh},function(){var a=this.S(),b=this.I-1&this.wa;this.I=this.I&~this.wa|b;b&&fg(this)?(B(this,z(this)+a),this.A-=this.B.Gh):this.A-=this.B.Hh},function(){var a=this.S(),b=this.I-1&this.wa;this.I=this.I&~this.wa|b;b?(B(this,z(this)+a),this.A-=this.B.lk):this.A-=this.B.Fh},function(){var a=this.S();this.I&this.wa?this.A-=this.B.Hh:(B(this,z(this)+a),this.A-=this.B.Gh)},function(){var a=this.sa();ug(this,a,1,!0)&&(this.D=this.D&-256|Jc(this.na, +a,1,this.ea-2)&255,this.A-=this.B.Ah)},function(){var a=this.sa();ug(this,a,this.X,!0)&&(this.D=this.D&~this.R|Jc(this.na,a,this.X,this.ea-2)&this.R,this.A-=this.B.Ah)},function(){var a=this.sa();ug(this,a,1,!1)&&(Nc(this.na,a,1,this.D&255,this.ea-2),this.A-=this.B.Oh)},function(){var a=this.sa();ug(this,a,this.X,!1)&&(Nc(this.na,a,this.X,this.D&this.R,this.ea-2),this.A-=this.B.Oh)},function(){var a=this.Ha(),b=z(this),a=b+a;oe(this,b);B(this,a);this.A-=this.B.Lj},function(){var a=this.Ha();B(this, +z(this)+a);this.A-=this.B.Bh},function(){se(this,this.Ha(),Hg(this));this.A-=this.B.hk},function(){var a=this.S();B(this,z(this)+a);this.A-=this.B.Bh},function(){var a=this.L&65535;ug(this,a,1,!0)&&(this.D=this.D&-256|Jc(this.na,a,1,this.ea-1)&255,this.A-=this.B.zh)},function(){var a=this.L&65535;ug(this,a,this.X,!0)&&(this.D=this.D&~this.R|Jc(this.na,a,this.X,this.ea-1)&this.R,this.A-=this.B.zh)},function(){var a=this.L&65535;ug(this,a,1,!1)&&(Nc(this.na,a,1,this.D&255,this.ea-1),this.A-=this.B.Nh)}, +function(){var a=this.L&65535;ug(this,a,2,!1)&&(Nc(this.na,a,this.X,this.D&this.R,this.ea-1),this.A-=this.B.Nh)},Sk,Sk,function(){this.M|=132;this.A-=this.B.$c},function(){this.M|=68;this.A-=this.B.$c},function(){this.P&131072?x.call(this,13,0):(this.ab|=4,this.A-=2,this.ca&&r(this,-2147483648)?(ag(this),this.ca.Ub()):this.P&512||(this.ca&&ag(this),this.Ub()))},function(){cg(this)?kg(this):jg(this);this.A-=2},function(){this.wc=!1;this.ld.call(this,Xk,gk);this.wc&&(this.D=this.D&~this.R|this.Ea&this.R)}, +function(){this.wc=!1;this.mb.call(this,Yk,gk);this.wc&&(this.D=this.D&~this.R|this.Ea&this.R,this.L=this.L&~this.R|this.cb&this.R)},function(){kg(this);this.A-=2},function(){jg(this);this.A-=2},function(){this.Pa>this.mc?x.call(this,13,0):(this.P&=-513,this.A-=this.B.Jj)},function(){this.Pa>this.mc?x.call(this,13,0):(this.P|=512,this.M|=4,this.A-=2)},function(){this.P&=-1025;this.A-=2},function(){this.P|=1024;this.A-=2},function(){this.ld.call(this,we,gk)},function(){this.mb.call(this,xe,gk)}],Fk= +[mi,$i,ki,bj,oi,Nj,Vj,Ci],Tk=[ni,aj,li,cj,pi,Oj,Wj,Di],Uk=[function(a,b){this.A-=-1===this.F?this.B.oc:this.B.yk;return b},Fi,Fi,Fi,Fi,Fi,Fi,Fi],Vk=[function(a,b){this.A-=-1===this.F?this.B.qk:this.B.nk;return b},Gi,Gi,Gi,Gi,Gi,Gi,Gi],Kk=[function(a,b){var c=a;if(b&=this.Ra){var d;(b&=7)?(d=a<>8-b)&255):d=a<<7;ng(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ra){var d;(b&=7)?(d=a<<8-b,c=(a>>>b|d)&255):d=a;ng(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ra){var d= +og(this);(b%=9)?(c=(a<>9-b)&255,d=a<>b|d<<8-b|a<<9-b)&255,d=a<<8-b):d<<=7;ng(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ra){var d=0;8>>b-1,a=b>>>1&255,ig(this,a,128,b&1,a&128);return a},Gi,function(a,b){if(b&=this.Ra)9>24>>b-1,a=b>>1&255,ig(this, +a,128,b&1);return a}],Lk=[function(a,b){var c=a;if(b&=this.Ra){var d;(b&=15)?(d=a<>16-b)&65535):d=a<<15;ng(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ra){var d;(b&=15)?(d=a<<16-b,c=(a>>>b|d)&65535):d=a;ng(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ra){var d=og(this);(b%=17)?(c=(a<>17-b)&65535,d=a<>b|d<<16-b|a<<17-b)&65535,d=a<<16-b): +d<<=15;ng(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ra){var d=0;16>>b-1,a=b>>>1&65535,ig(this,a,32768,b&1,a&32768);return a},Gi,function(a,b){if(b&=this.Ra)17>16>>b-1,a=b>>1&65535,ig(this,a,32768,b&1);return a}],Mk=[function(a,b){var c=a;if(b&=this.Ra)c=a<>>32-b,ng(this,c,a<>>b|d;ng(this,c,d,-2147483648)}return c},function(a,b){var c=a;if(b&=this.Ra)c=og(this),c=a<>>32-b>>>1,ng(this,c,a<>>b|c<<32-b|a<<32-b<<1,ng(this,c,a<<32-b,-2147483648);return c},function(a,b){var c=a;if(b&=this.Ra)a<<=b-1,c=a<<1,ig(this,c,-2147483648,a&-2147483648,(c^a)&-2147483648);return c},function(a,b){if(b&=this.Ra)b=a>>>b-1,a=b>>>1,ig(this,a,-2147483648,b&1,a&-2147483648);return a},Gi,function(a, +b){if(b&=this.Ra)b=a>>b-1,a=b>>1,ig(this,a,-2147483648,b&1);return a}],Xk=[function(a,b){b=this.sa();ig(this,a&b,128);this.A-=-1===this.C?this.B.Zh:this.B.Yh;this.M|=2;return a},Gi,function(a){this.A-=-1===this.C?this.B.Cf:this.B.Bf;return a^255},function(a){var b=-a|0;bg(this,0,a,b,191,!0);this.A-=-1===this.C?this.B.Cf:this.B.Bf;return b&255},function(a){this.Ea=(this.D&255)*a&65535;this.Ea&65280?(jg(this),lg(this)):(kg(this),mg(this));this.wc=!0;this.A-=-1===this.C?this.B.uk:this.B.tk;this.M|=2; +return a},function(a){var b=(this.D<<24>>24)*(a<<24>>24)|0;this.Ea=b&65535;127b?(jg(this),lg(this)):(kg(this),mg(this));this.wc=!0;this.A-=-1===this.C?this.B.Zj:this.B.Yj;this.M|=2;return a},function(a,b){if(!a)return mk.call(this),a;var c=(b=this.D&65535)/a;if(255>24,d=(b=this.D<<16>>16)/c|0;if(d!=d<<24>>24||8086== +this.da&&-128==d)return mk.call(this),a;this.Ea=d&255|(b%c&255)<<8;this.wc=!0;this.A-=-1===this.C?this.B.Vj:this.B.Uj;this.M|=2;return a}],Yk=[function(a,b){b=this.Ha();ig(this,a&b,this.Hb);this.A-=-1===this.C?this.B.Zh:this.B.Yh;this.M|=2;return a},Gi,function(a){this.A-=-1===this.C?this.B.Cf:this.B.Bf;return a^this.R},function(a){var b=-a|0;bg(this,0,a,b,this.Hb|63,!0);this.A-=-1===this.C?this.B.Cf:this.B.Bf;return b&this.R},function(a,b){2==this.X?(b=this.D&65535,b=b*a|0,this.Ea=b&65535,this.cb= +b>>16&65535):(Mi.call(this,a,this.D),80563==this.Rd&&68657152==this.D&&129==a&&(this.cb=0));this.cb?(jg(this),lg(this)):(kg(this),mg(this));this.wc=!0;this.A-=-1===this.C?this.B.wk:this.B.vk;this.M|=2;return a},function(a,b){2==this.X?(b=this.D&65535,b=(b<<16>>16)*(a<<16>>16)|0,this.Ea=b&65535,this.cb=b>>16&65535,b=32767b):(Li.call(this,a,this.D),b=this.cb!=this.Ea>>31);b?(jg(this),lg(this)):(kg(this),mg(this));this.wc=!0;this.A-=-1===this.C?this.B.ak:this.B.$j;this.M|=2;return a},function(a, +b){if(2==this.X){if(!a)return mk.call(this),a;b=65536*(this.L&65535)+(this.D&65535);var c=b/a;if(65536<=c)return mk.call(this),a;this.Ea=c&65535;this.cb=b%a&65535}else{if(!Zj.call(this,this.D,this.L,a))return mk.call(this),a;this.Ea|=0;this.cb|=0}this.wc=!0;this.A-=-1===this.C?this.B.Tj:this.B.Sj;this.M|=2;return a},function(a,b){if(2==this.X){if(!a)return mk.call(this),a;var c=a<<16>>16,d=(b=this.L<<16|this.D&65535)/c|0;if(d!=d<<16>>16||8086==this.da&&-32768==d)return mk.call(this),a;this.Ea=d&65535; +this.cb=b%c&65535}else{b=this.D;var c=this.L,d=a,e=0,f=0;0>d&&(d=-d|0,e=1-e);0>c&&(b=-b|0,c=~c+(b?0:1)|0,f=1,e=1-e);!Zj.call(this,b,c,d)||this.Ea>2147483647+e||this.cb>2147483647+f?b=!1:(e&&(this.Ea=-this.Ea),f&&(this.cb=-this.cb),b=!0);if(!b)return mk.call(this),a;this.Ea|=0;this.cb|=0}this.wc=!0;this.A-=-1===this.C?this.B.Xj:this.B.Wj;this.M|=2;return a}],we=[function(a){var b=a+1|0;bg(this,a,1,b,190);this.A-=-1===this.C?this.B.Af:this.B.zf;return b&255},function(a){var b=a-1|0;bg(this,a,1,b,190, +!0);this.A-=-1===this.C?this.B.Af:this.B.zf;return b&255},Gi,Gi,Gi,Gi,Gi,Gi],xe=[function(a){var b=a+1|0;bg(this,a,1,b,this.Hb|62);this.A-=-1===this.C?this.B.Af:this.B.zf;return b&this.R},function(a){var b=a-1|0;bg(this,a,1,b,this.Hb|62,!0);this.A-=-1===this.C?this.B.Af:this.B.zf;return b&this.R},function(a){oe(this,z(this));B(this,a);this.A-=-1===this.C?this.B.Pj:this.B.Oj;this.M|=2;return a},function(a){if(-1===this.C)return Gi.call(this,a);this.va=this.Ca;ik.call(this,a,this.ja(this.C+this.X)); +this.A-=this.B.Mj;this.M|=2;this.va=-1;return a},function(a){B(this,a);this.A-=-1===this.C?this.B.jk:this.B.ik;this.M|=2;return a},function(a){if(-1===this.C)return Gi.call(this,a);se(this,a,this.ja(this.C+this.X));this.A-=this.B.gk;this.M|=2;return a},function(a){var b=a;this.M&512&&(a=a-2&65535,80286>this.da&&(b=a));oe(this,b);this.A-=-1===this.C?this.B.Jc:this.B.Ak;this.M|=2;return a},Gi];function gf(){this.la.call(this,Sj);this.A-=-1===this.C?6:13} +function hf(){this.Ba.call(this,Rj);this.A-=-1===this.C?12:19}var We=Array(256);We[0]=function(){16>(this.ya(this.ea)&56)&&(this.M|=1);this.mb.call(this,this.lj,gk)};We[1]=function(){this.ya(this.ea)&16||(this.M|=1);this.mb.call(this,Zk,gk)};We[2]=function(){!(this.ra&1)||this.P&131072?x.call(this,6):this.la.call(this,Ni)};We[3]=function(){!(this.ra&1)||this.P&131072?x.call(this,6):this.la.call(this,Ti)}; +We[5]=function(){this.Pa?x.call(this,13,0,0,!0):(tg(this,this.ja(2054)),this.J=this.ja(2086),this.K=this.ja(2088),this.N=this.ja(2090),this.G=this.ja(2094),this.L=this.ja(2096),this.I=this.ja(2098),this.D=this.ja(2100),ce(this.pa,2102,this.ja(2084)),ce(this.ba,2108,this.ja(2082)),ce(this.U,2114,this.ja(2080)),ce(this.Fa,2120,this.ja(2078)),re(this,this.ja(2072)),B(this,this.ja(2074)),ge(this,this.ja(2092)),this.Kb=this.ja(2126)|this.ya(2128)<<16,this.Ic=this.Kb+this.ja(2130),this.Qb=this.ja(2138)| +this.ya(2140)<<16,this.ad=this.Qb+this.ja(2142),ce(this.Gb,2132,this.ja(2076)),ce(this.ka,2144,this.ja(2070)),this.A-=195)};We[6]=function(){this.Pa?x.call(this,13,0):(this.ra&=-9,this.A-=2)};We[11]=ze;We[166]=ze;We[255]=ze;var A=[];A[5]=ze; +A[7]=function(){if(this.Pa)x.call(this,13,0,0,!0);else{var a=this.pa.Bb(this.J&this.wa,204);if(-1!==a){bk.call(this,this.ia(a));var b=this.ia(a+168),c=(b&24576)>>13;re(this,this.ia(a+4),c);this.Kb=this.ia(a+112);this.Ic=this.Kb+this.ia(a+116);this.Qb=this.ia(a+100);this.ad=this.Qb+this.ia(a+104);ae(this.Gb,this.ia(a+56),this.ia(a+120),this.ia(a+124),this.ia(a+128));ae(this.ka,this.ia(a+52),this.ia(a+84),this.ia(a+88),this.ia(a+92));this.J=this.ia(a+12);this.K=this.ia(a+16);this.N=this.ia(a+20);this.G= +this.ia(a+28);this.L=this.ia(a+32);this.I=this.ia(a+36);this.D=this.ia(a+40);ae(this.La,this.ia(a+60),this.ia(a+132),this.ia(a+136),this.ia(a+140));ae(this.Ka,this.ia(a+64),this.ia(a+144),this.ia(a+148),this.ia(a+152));ae(this.Fa,this.ia(a+68),this.ia(a+156),this.ia(a+160),this.ia(a+164));ae(this.U,this.ia(a+72),b,this.ia(a+172),this.ia(a+176));ae(this.ba,this.ia(a+76),this.ia(a+180),this.ia(a+184),this.ia(a+188));ae(this.pa,this.ia(a+80),this.ia(a+192),this.ia(a+196),this.ia(a+200));B(this,this.ia(a+ +8));ge(this,this.ia(a+24))}this.A-=122<<(a&3?1:0)}};A[16]=Gk;A[17]=Hk;A[18]=Ik;A[19]=Jk;A[32]=function(){if(this.Pa)x.call(this,13,0);else{var a,b=this.sa();switch((b&56)>>3){case 0:a=this.ra;break;case 2:a=this.qd;break;case 3:a=this.Uc;break;default:Xe.call(this);return}vf(this,b&7,a);this.A-=6}};A[33]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=(a&56)>>3;4==b||5==b?Xe.call(this):(vf(this,a&7,this.Rb[b]),this.A-=22)}}; +A[34]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=uf(this,a&7);switch((a&56)>>3){case 0:bk.call(this,b);this.A-=10;break;case 2:this.qd=b;this.A-=4;break;case 3:te.call(this,b);this.A-=5;break;default:Xe.call(this)}}};A[35]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=(a&56)>>3;4==b||5==b?Xe.call(this):(a=uf(this,a&7),a!=this.Rb[b]&&(Uf(this,!1),this.Rb[b]=a,Uf(this,!0)),this.A-=4>b?22:14)}}; +A[36]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=(a&56)>>3;6>b?Xe.call(this):(vf(this,a&7,this.$f[b]),this.A-=12)}};A[38]=function(){if(this.Pa)x.call(this,13,0);else{var a=this.sa(),b=(a&56)>>3;6>b?Xe.call(this):(this.$f[b]=uf(this,a&7),this.A-=12)}};A[128]=function(){var a=this.Ha();hg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[129]=function(){var a=this.Ha();hg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)}; +A[130]=function(){var a=this.Ha();cg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[131]=function(){var a=this.Ha();cg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[132]=function(){var a=this.Ha();fg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[133]=function(){var a=this.Ha();fg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[134]=function(){var a=this.Ha();cg(this)||fg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua}; +A[135]=function(){var a=this.Ha();cg(this)||fg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[136]=function(){var a=this.Ha();gg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[137]=function(){var a=this.Ha();gg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[138]=function(){var a=this.Ha();dg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[139]=function(){var a=this.Ha();dg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)}; +A[140]=function(){var a=this.Ha();!gg(this)!=!hg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[141]=function(){var a=this.Ha();!gg(this)==!hg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[142]=function(){var a=this.Ha();fg(this)||!gg(this)!=!hg(this)?(B(this,z(this)+a),this.A-=this.B.Ta):this.A-=this.B.Ua};A[143]=function(){var a=this.Ha();fg(this)||!gg(this)!=!hg(this)?this.A-=this.B.Ua:(B(this,z(this)+a),this.A-=this.B.Ta)};A[144]=function(){ck.call(this,dj)}; +A[145]=function(){ck.call(this,dj)};A[146]=function(){ck.call(this,nj)};A[147]=function(){ck.call(this,oj)};A[148]=function(){ck.call(this,pj)};A[149]=function(){ck.call(this,qj)};A[150]=function(){ck.call(this,rj)};A[151]=function(){ck.call(this,sj)};A[152]=function(){ck.call(this,tj)};A[153]=function(){ck.call(this,uj)};A[154]=function(){ck.call(this,vj)};A[155]=function(){ck.call(this,wj)};A[156]=function(){ck.call(this,xj)};A[157]=function(){ck.call(this,yj)};A[158]=function(){ck.call(this,zj)}; +A[159]=function(){ck.call(this,Aj)};A[160]=function(){le(this,this.Ka.T,this.X,2);this.A-=this.B.we};A[161]=function(){this.va=this.Ca;var a=ee(this);this.Ka.load(a);this.A-=this.B.oc;this.va=-1};A[163]=function(){this.Ba.call(this,yi);-1!==this.C&&(this.A-=6)};A[164]=function(){this.Ba.call(this,2==this.X?Bj:Dj);this.A-=-1===this.C?3:7};A[165]=function(){this.Ba.call(this,2==this.X?Fj:Gj);this.A-=-1===this.C?3:7};A[168]=function(){le(this,this.La.T,this.X,2);this.A-=this.B.we}; +A[169]=function(){this.va=this.Ca;var a=ee(this);this.La.load(a);this.A-=this.B.oc;this.va=-1};A[171]=function(){this.Ba.call(this,Bi);-1!==this.C&&(this.A-=5)};A[172]=function(){this.Ba.call(this,2==this.X?Hj:Jj);this.A-=-1===this.C?3:7};A[173]=function(){this.Ba.call(this,2==this.X?Lj:Mj);this.A-=-1===this.C?3:7};A[175]=function(){this.la.call(this,2==this.X?Ii:Ki)};A[178]=function(){this.la.call(this,Ui)};A[179]=function(){this.Ba.call(this,Ai);-1!==this.C&&(this.A-=5)}; +A[180]=function(){this.la.call(this,Ri)};A[181]=function(){this.la.call(this,Si)}; +A[182]=function(){this.lc.call(this,Wi);switch(this.fa>>3&7){case 0:this.D=this.D&~this.R|this.D&255;break;case 1:this.I=this.I&~this.R|this.I&255;break;case 2:this.L=this.L&~this.R|this.L&255;break;case 3:this.G=this.G&~this.R|this.G&255;break;case 4:this.Ac=this.Ac&~this.R|this.D>>8&255;this.D=this.Aa;break;case 5:this.N=this.N&~this.R|this.I>>8&255;this.I=this.Aa;break;case 6:this.K=this.K&~this.R|this.L>>8&255;this.L=this.Aa;break;case 7:this.J=this.J&~this.R|this.G>>8&255,this.G=this.Aa}this.A-= +-1===this.C?3:6};A[183]=function(){je(this,2);this.la.call(this,Xi);switch(this.fa>>3&7){case 0:this.D=this.D&65535;break;case 1:this.I=this.I&65535;break;case 2:this.L=this.L&65535;break;case 3:this.G=this.G&65535;break;case 4:this.Ac=this.Ac&65535;break;case 5:this.N=this.N&65535;break;case 6:this.K=this.K&65535;break;case 7:this.J=this.J&65535}this.A-=-1===this.C?3:6};A[186]=function(){this.mb.call(this,$k,this.sa)};A[187]=function(){this.Ba.call(this,zi);-1!==this.C&&(this.A-=5)}; +A[188]=function(){this.la.call(this,si)};A[189]=function(){this.la.call(this,ti)}; +A[190]=function(){this.lc.call(this,Wi);switch(this.fa>>3&7){case 0:this.D=this.D&~this.R|(this.D&255)<<24>>24&this.R;break;case 1:this.I=this.I&~this.R|(this.I&255)<<24>>24&this.R;break;case 2:this.L=this.L&~this.R|(this.L&255)<<24>>24&this.R;break;case 3:this.G=this.G&~this.R|(this.G&255)<<24>>24&this.R;break;case 4:this.Ac=this.Ac&~this.R|this.D<<16>>24&this.R;this.D=this.Aa;break;case 5:this.N=this.N&~this.R|this.I<<16>>24&this.R;this.I=this.Aa;break;case 6:this.K=this.K&~this.R|this.L<<16>>24& +this.R;this.L=this.Aa;break;case 7:this.J=this.J&~this.R|this.G<<16>>24&this.R,this.G=this.Aa}this.A-=-1===this.C?3:6};A[191]=function(){je(this,2);this.la.call(this,Xi);switch(this.fa>>3&7){case 0:this.D=this.D<<16>>16;break;case 1:this.I=this.I<<16>>16;break;case 2:this.L=this.L<<16>>16;break;case 3:this.G=this.G<<16>>16;break;case 4:this.Ac=this.Ac<<16>>16;break;case 5:this.N=this.N<<16>>16;break;case 6:this.K=this.K<<16>>16;break;case 7:this.J=this.J<<16>>16}this.A-=-1===this.C?3:6}; +var Vf=[function(){this.A-=2+(-1===this.C?0:1);return this.Gb.T},function(){this.A-=2+(-1===this.C?0:1);return this.ka.T},function(a){this.M|=2;this.Gb.load(a);this.A-=17+(-1===this.C?0:2);return a},function(a){this.M|=2;-1!==this.ka.load(a)&&(this.ib(this.ka.Ob+4,this.ka.ob|=512),this.ka.type|=512);this.A-=17+(-1===this.C?0:2);return a},function(a){this.M|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.zb.load(a)&&2048!=(this.zb.ob&2560)&&(this.zb.rc>=this.Pa&&this.zb.rc>=(a&3)||7168==(this.zb.ob&7168)))return sg(this), +a;qg(this);return a},function(a){this.M|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.zb.load(a)&&512==(this.zb.ob&2560)&&this.zb.rc>=this.Pa&&this.zb.rc>=(a&3))return sg(this),a;qg(this);return a},Gi,Gi],ye=[Ue,Ue,Ue,Ue,Ue,Ue,Gi,Gi],Zk=[function(a){if(-1===this.C)x.call(this,6);else{a=this.Ic-this.Kb;var b=this.Kb;80286==this.da?b|=-16777216:80386<=this.da&&2!=this.X&&(a|=b<<16);this.eb(this.C+2,b);this.A-=11}return a},function(a){if(-1===this.C)x.call(this,6);else{a=this.ad-this.Qb;var b=this.Qb; +80286==this.da?b|=-16777216:80386<=this.da&&2!=this.X&&(a|=b<<16);this.eb(this.C+2,b);this.A-=12}return a},function(a){-1===this.C||this.P&131072?x.call(this,6):(this.Kb=this.ia(this.C+2)&(this.R|this.R<<8),a&=65535,this.Ic=this.Kb+a,this.M|=2,this.A-=11);return a},function(a){-1===this.C||this.P&131072?x.call(this,6):(this.Qb=this.ia(this.C+2)&(this.R|this.R<<8),a&=65535,this.ad=this.Qb+a,this.M|=2,this.A-=12);return a},function(){this.A-=2+(-1===this.C?0:1);return this.ra},Gi,function(a){this.P& +131072?x.call(this,6):(tg(this,a),this.A-=-1===this.C?3:6,this.M|=2);return a},Gi],$k=[Gi,Gi,Gi,Gi,ui,xi,wi,vi]; +function al(a){ib.call(this,"ChipSet",a,32768);var b=a.model;b&&!bl[b]&&ab("Unrecognized ChipSet model: "+b);this.da=bl[b]||cl;this.B=[];b=dl(a[el]);this.B[0]=[b,b];null==b&&(this.L=[360,360],(b=a.floppies)&&b.length&&(this.L=b),fl(this,gl,this.L.length),fl(this,hl,a.monitor||(this.da=Tg&&(this.Ba=this.ka=2);this.M=a.scaleTimers||!1;this.Ra=a.dateRTC;this.Ka=this.La=!1;this.Ia=0;if(a=a.sound)this.Ia="number"!=typeof a||0>a|| +1e||1=Tg){this.D=Nl;this.J=0;this.I=Ol;this.pa=0;this.K=Pl|Ql;512<=Rl(this)&&(this.K|=Sl);+Tl(this,hl,void 0)==Ul&&(this.K|=Vl);(this.da|0)==ul&&(this.K=this.K|Wl|Xl);this.ra= +Yl|Zl;this.U=Array(8);this.N=0;a&&(this.A=Array(zl));$l(this,this.Ra);for(a=am;a<=bm;a++)this.A[a]=0;for(a=cm;ac?c=c?c:12:c=(c-=12)?c+128:140,d=!0);a.A[Pd]&Um||(d&&128>8} +l.save=function(){var a=new Wf(this);a.set(0,[this.B]);for(var b=[],c=0;c=Tg&&(a.set(5,[this.D,this.J,this.I,this.pa,this.K,this.ra]),a.set(6,[this.U[7],this.U,this.N,this.A,this.la,this.aa]));return a.data()}; +l.restore=function(a){var b,c;b=a[0];Array.isArray(b[0])?this.B=b[0]:(this.B[0][0]=b[0],this.B[1][0]=b[1]&15,this.B[0][1]=b[2],this.B[1][1]=b[3]&15);Fl(this);b=a[1];for(c=0;c=f;f++){var g="pcjs-bitCell";f||(g+=" pcjs-bitCellLeft");d+='
    '+f+"
    \n"}e.innerHTML=d;en(a,b,c,!0)}function fn(a,b,c){if(b=(a=gn[a.da|0])&&a[b])for(var d in b)if(a=b[d],a.zc&1<g.rb[0]&&(g.rb[0]=255,g.rb[1]--,0>g.rb[1]&&(g.rb[1]=255)));return h}function vn(a,b,c,d,e,f){var g=a.F[b];r(a,768)&&t(a,d,e,f,"DMA"+b+".CHANNEL"+c+".COUNT["+g.Ab+"]",null,!0);a=g.pc[c];a.rb[g.Ab]=a.qc[g.Ab]=e;g.Ab^=1}function wn(a,b,c,d){var e=a.F[b],f=e.Pb|xn;e.Pb&=~yn;r(a,768)&&t(a,c,null,d,"DMA"+b+".STATUS",f,!0);return f} +function zn(a,b,c,d,e){var f=a.F[b];r(a,768)&&t(a,c,d,e,"DMA"+b+".REQ",null,!0);a=d&3;f.Pb=f.Pb&~(16<>2].pc[b&3],c,d,e)}function Dn(a,b,c){b=a.F[b>>2].pc[b&3];b.kg&&b.dh&&b.zg?(c&&(b.done=c),b.se||Nn(a,b,!0)):c&&c(!0)} +function Nn(a,b,c){c&&(b.count=b.rb[1]<<8|b.rb[0],b.type=b.mode&On,b.pj=b.lg=!1);for(var d=!1;0<=b.count&&(c=b.eg<<16|b.wb[1]<<8|b.wb[0],b.type==Pn?(d=!0,function(c){b.dh.call(b.kg,b.zg,-1,function(e,g){0>e&&(b.pj||(b.pj=!0),e=255);b.se||a.na.ub(c,e);(d=g)&&setTimeout(function(){Qn(b)||Nn(a,b)},0)})}(c)):b.type==Rn?(c=a.na.ya(c),0>b.dh.call(b.kg,b.zg,c)&&(b.lg=!0)):b.type!=Sn&&(b.lg=!0)),!d&&!Qn(b););} +function Qn(a){if(!a.lg&&0<=--a.count&&(a.mode&Tn?(a.wb[0]--,0>a.wb[0]&&(a.wb[0]=255,a.wb[1]--,0>a.wb[1]&&(a.wb[1]=255))):(a.wb[0]++,255>3];b=1<<(b&7);d.ec&b||(d.ec|=b,d.We=c||0,io(a))}function gh(a,b){var c=a.jc[b>>3];b=1<<(b&7);c.ec&b&&(c.ec&=~b,io(a))}function io(a,b){var c,d=-1;1>=1),Fd(a.H,e))),b==vo&&c==zo&&Ym(a))}function Ao(a,b,c,d){t(a,c,null,d,"PIT"+b+".CTRL",null,2048);return b?a.xa:a.va} +function Bo(a,b,c,d,e){t(a,c,d,e,"PIT"+b+".CTRL",null,2048);e=0;c=d&Co;b?(e=3,a.xa=d):a.va=d;if(c==Do){if(!(d&Eo))for(c=0;2>=c;c++)if(d&Fo<=c;c++)d&Fo<>=Ko;var f=d&Lo,g=d&Mo;d&=No;if(d==Oo)Jo(a,e+c);else{e+=c;var h=a.qa[e];h.Nf=d;h.mode=g;h.Yg=f;h.qc=[0,0];h.rb=[0,0];h.ne=[0,0];h.gd=!1;h.Me=!1;h.qe=!1;h.Qe=!1;ro(a,e);b==vo&&c==wo&&gh(a,xo);b==vo&&c==zo&&255== +a.jc[0].ud&&a.G==(Po|Qo|Ro|So)&&(b=a.qa[0],b.Pc[0]=b.qc[0],b.Pc[1]=b.qc[1],b.jd=Cd(a.H,a.M))}}}function yo(a,b){a=a.qa[b];(b=a.qc[1]<<8|a.qc[0])||(b=1==a.Zc?256:65536);return b}function Md(a,b){a=a.qa[b];(b=a.Pc[1]<<8|a.Pc[0])||(b=1==a.Zc?256:65536);return b}function Jo(a,b){yl(a,b);var c=a.qa[b];c.ne[0]=c.rb[0];c.ne[1]=c.rb[1];c.Me=!0;ro(a,b)}function ro(a,b){a=a.qa[b];a.xd=a.Nf==To?1:0;a.Zc=a.Nf==Uo?2:1} +function yl(a,b,c){var d=a.qa[b];if(d.qe&&(b!=zo||a.G&Po)){var e=Cd(a.H,a.M),f=(e-d.jd)/a.Ea|0;0>f&&(d.jd=e,f=0);var g=yo(a,b),h=Md(a,b)-f;d.mode==to?(0>=h&&(h=0),h||(d.gd=!0,d.qe=!1,b||ih(a,xo))):d.mode==Vo?(d.gd=1!=h,0>=h&&(h=g+h,0>=h&&(h=g),d.Pc[0]=h&255,d.Pc[1]=h>>8&255,d.jd=e,!b&&d.gd&&ih(a,xo))):d.mode==Nd&&(h-=f,0>=h&&(d.gd=!d.gd,h=g+h,0>=h&&(h=g),d.Pc[0]=h&255,d.Pc[1]=h>>8&255,d.jd=e,!b&&d.gd&&ih(a,xo)));d.rb[0]=h&255;d.rb[1]=h>>8&255;c&&(a.jd=0)}return d} +function Ld(a,b){for(var c=0;c=Tg){b=a.H.Y.Zd;c=Cd(a.H,a.M);null==a.Ca&&(a.la=Cd(a.H,a.M),a.Pa=1024,a.Ca=Math.floor(a.H.Y.Zd/a.Pa),Wm(a));c>=a.aa&&(a.A[ym]|=Wo,a.A[Pd]&Qd&&(a.A[ym]|=Xo,ih(a,Yo)),a.aa=c+a.Ca);a.A[lm]==a.A[mm]&&a.A[nm]==a.A[om]&&a.A[pm]==a.A[qm]&&(a.A[ym]|=Zo,a.A[Pd]&$o&&(a.A[ym]|=Xo,ih(a,Yo)));var d=c-a.la,e=Math.floor(d/b);if(e&&!(a.A[Pd]&ap)){for(;e--;)if(60<=++a.A[lm]&&(a.A[lm]=0,60<=++a.A[nm]&&(a.A[nm]=0,24<=++a.A[pm]))){a.A[pm]=0;a.A[rm]=a.A[rm]% +7+1;var f;f=a.A[um];var g=Da[a.A[tm]-1];28==g&&(f%4||!(f%100)&&f%400||g++);f=g;++a.A[sm]>f&&(a.A[sm]=1,12<++a.A[tm]&&(a.A[tm]=1,a.A[um]=(a.A[um]+1)%100))}a.A[ym]|=bp;a.A[Pd]&cp&&(a.A[ym]|=Xo,ih(a,Yo))}a.la=c-d%b}}l.Am=function(a,b){var c=this.Aa;this.ha&dp&&(this.G&ep?c=this.B[0][1]:this.C&&(c=fp(this.C)));t(this,a,null,b,"PPI_A",c);return c};l.ho=function(a,b,c){t(this,a,b,c,"PPI_A");this.Aa=b};l.Bm=function(a,b){var c=this.G;t(this,a,null,b,"PPI_B",c);return c}; +l.io=function(a,b,c){t(this,a,b,c,"PPI_B");gp(this,b)};function gp(a,b){var c=!!(b&hp),d=!!(a.G&hp);a.G=b;a.C&&ip(a.C,!(b&ep),!!(b&So));c!=d&&Ym(a,c)}l.Cm=function(a,b){var c=0,c=(this.da|0)==Dl?this.G&Qo?c|this.B[1][1]&jp:c|this.B[1][1]>>4&1:this.G&kp?c|this.B[0][1]>>4:c|this.B[0][1]&15;this.G&Po&&yl(this,zo).gd&&(c=this.G&hp?c|lp:c|mp);t(this,a,null,b,"PPI_C",c,32896);return c};l.jo=function(a,b,c){t(this,a,b,c,"PPI_C");this.Fa=b};l.Dm=function(a,b){var c=this.ha;t(this,a,null,b,"PPI_CTRL",c);return c}; +l.ko=function(a,b,c){t(this,a,b,c,"PPI_CTRL");this.ha=b};l.Ml=function(a,b){var c=this.C?fp(this.C):0;t(this,a,null,b,"8041_KBD",c);this.ea&=~np;return c};l.rn=function(a,b,c){t(this,a,b,c,"8041_KBD")};l.Ll=function(a,b){var c=this.G;t(this,a,null,b,"8041_CTRL",c);return c};l.qn=function(a,b,c){t(this,a,b,c,"8041_CTRL");gp(this,b)};l.Nl=function(a,b){var c=this.ea;t(this,a,null,b,"8041_STATUS",c);return c}; +l.Ol=function(a,b){var c=this.pa;t(this,a,null,b,"8042_OUTBUFF",c,16384);this.D&=~(np|op);this.C&&pp(this.C);return c}; +l.tn=function(a,b,c){t(this,a,b,c,"8042_INBUF.DATA",null,16384);if(this.D&qp)switch(this.J){case rp:sp(this,b);break;case tp:up(this,b);break;default:if(sp(this,this.I&~Ol),this.C){a=this.C;c=b;var d=-1;r(a)&&Nb(a,"sendCmd("+na(c)+")");switch(a.G||c){case vp:d=wp;xp(a);break;case yp:a.G&&(c=0);zp(a,wp);a.G=c;break;case Ap:a.G&&(c=0);zp(a,wp);a.G=c;break;default:Nb(a,"sendCmd(): unrecognized command")}Bp(this,d)}}this.J=b;this.D&=~qp}; +l.Pl=function(a,b){var c=this.G&~(Cp|Dp)|(Cd(this.H)&64?Dp:0);t(this,a,null,b,"8042_RWREG",c,16384);return c};l.un=function(a,b,c){t(this,a,b,c,"8042_RWREG",null,16384);gp(this,b)};l.Ql=function(a,b){t(this,a,null,b,"8042_STATUS",this.D,16384);a=this.D&255;this.D&op&&(this.D|=np,this.D&=~op);return a}; +l.sn=function(a,b,c){t(this,a,b,c,"8042_INBUFF.CMD",null,16384);this.J=b;this.D|=qp;a=0;this.J>=Ep&&(a=this.J^15,this.J=Ep);switch(this.J){case Fp:Bp(this,this.I);break;case Gp:sp(this,this.I|Ol);break;case Hp:sp(this,this.I&~Ol);this.C&&pp(this.C);break;case Ip:this.C&&(a=this.C,a.A=[],r(a)&&Nb(a,"scan codes flushed"));sp(this,this.I|Ol);Bp(this,Jp);up(this,Yl|Zl);break;case Kp:Bp(this,Lp);break;case Mp:Bp(this,this.K);break;case Np:Bp(this,this.ra);break;case Op:Bp(this,this.I&Ol?0:Pp);break;case Ep:a& +1&&jf(this.H)}};function sp(a,b){a.I=b;a.D=a.D&~Qp|b&Rp;a.C&&ip(a.C,!!(b&Sp),!(b&Ol))}function Bp(a,b,c){0<=b&&(a.pa=b,c?a.D|=np:(a.D&=~np,a.D|=op))}function up(a,b){a.ra=b;jc(a.na,!!(b&Zl));b&Yl||jf(a.H)}function Tp(a,b){a.da>4)+(c&15),e=!0);if(d==pm||d==qm)e&&23=c?c=12==c?0:c:(c-=116,c=24==c?12:c))}}else c=b;this.A[d]=c;d==Pd&&a&Qd&&b&Qd&&Wm(this)};l.Mk=function(a,b,c){t(this,a,b,c,"NMI");this.fa=b};l.Tn=function(a,b,c){t(this,a,b,c,"FPU.CLEAR")};l.Un=function(a,b,c){t(this,a,b,c,"FPU.RESET");this.Kc&&Og(this.Kc)}; +l.Rm=function(a){if(r(this,16)&&Wk(this.ca,26,a)){var b=this.H.D>>8;Sf(this.H,a,function(a,d){return function(c){d=Cd(a.H)-d;var e,g=a.H.L&255,h=a.H.L>>8,k=a.H.L&255,m=a.H.L>>8;if(2==b||3==b)e=" CH(hour)="+oa(h)+" CL(min)="+na(g)+" DH(sec)="+na(m);else if(4==b||5==b)e=" CX(year)="+oa(a.H.I)+" DH(month)="+na(m)+" DL(day)="+na(k);g=a.ca;h=d;g.message("INT "+na(26)+": C="+(cg(g.H)?1:0)+(e||"")+" (cycles="+h+(c?",level="+(c+1):"")+")")}}(this,Cd(this.H)))}return!0}; +function Ym(a,b){if(a.P){void 0!==b?a.Ka=b:b=!!(a.Ka&&a.H&&a.H.Z.Xa);var c=Math.round(kl/yo(a,zo));if(20>c||2E4>>4,0,this.G,this.C,this.Jd),delete this.Jd);return!0};bq.prototype.$b=function(){return!0}; +function cq(a,b,c,d){if(d)a.Da("Unable to load system ROM (error "+d+": "+b+")",0>d);else{nb(a.ee,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.longs||e.data;if(f)a.A=f;else if(g)for(a.A=Array(4*g.length),d=c=0;c>8&255,a.A[d++]=g[c]>>16&255,a.A[d++]=g[c]>>24&255;else a.A=e;a.Jd=e.symbols;if(!a.A.length){ab("Empty ROM: "+b);return}if(1==a.A.length){ab(a.A[0]);return}}catch(h){a.Da("ROM data error: "+h.message);return}else for(b= +c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e>>d.A].cf(e&d.D,a.A[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.F?b.push(a.F):null!=a.F&&a.F.length&&(b=a.F);for(c=0;cthis.B?am:23,c=a.A[b]|a.A[b+1]<<8,c=c+(this.A>>10);a.A[b]=c&255;a.A[b+1]=c>>8;km(a)}}else ab("No RAM allocated")}; +l.save=function(){var a=new Wf(this);this.controller&&a.set(0,this.controller.save());return a.data()};l.restore=function(a){return this.controller?this.controller.restore(a[0]):!0};function jq(a){this.D=a;this.C=lq;this.H=mq;this.B=nq;this.A=null}l=jq.prototype;l.save=function(){return[this.C,this.B]};l.restore=function(a){this.ub(0,a[0]&255);this.ub(2,a[1]&255);return!0};l.ya=function(a){var b=255;2>a?b=a&1?this.H>>8:this.H&255:4>a&&(b=a&1?this.B>>8:this.B&255);return b}; +l.ub=function(a,b){if(a)2==a&&(this.B=this.B&-256|b);else if(b!=(this.C&255)){a=this.D.na;if(b&oq)this.A&&(qc(a,pq,qq,this.A),this.A=null);else{this.A||(this.A=rc(a,pq,qq));var c=rc(a,rq,qq);qc(a,pq,qq,c,b&sq?1:zc)}this.C=this.C&-256|b}};l.tj=function(){return tq};l.eh=function(){return uq};var kq=-2134900736,rq=16646144,pq=917504,qq=131072,oq=1,sq=2,lq=65535,mq=2575,nq=2,tq=[null,0],uq=[function(a){return this.controller.ya(a)},null,null,function(a,b){this.controller.ub(a,b)},null,null]; +Xa(function(){for(var a=vb(document,"pcx86","ram"),b=0;b=n.ge&&d<=n.z&&(d-=n.ge-n.fe),d=Gq[e]==d),d){(a=a.ma["key-"+e])&&void 0!==c&&(a.style.color=c?"#ffffff":"#000000",a.style.backgroundColor=c?"#000000":"#ffffff");break}}}l.uc=function(a,b,c,d){this.oa=a;this.na=b;this.H=c;this.ca=d;this.V=Vb(a,"ChipSet");this.I=ud(a,"autoType")||this.I;Rf(c,33,this.Sm.bind(this))}; +l.Sm=function(){if(10==(this.H.D>>8&255))if(this.P=!0,this.L)this.L(),this.L=null,this.P=!1;else{var a=this.I;!this.F&&a&&(this.F=a,this.ih(this.F))}return!0};function wq(a,b){var c=0;a.da=null;"string"==typeof b&&(a.da=b.toUpperCase(),c=Jq.indexOf(a.da),0>c&&(c=0));if(b=Jq[c])a.ha=parseInt(b.substr(2),10)}function xp(a){Nb(a,"keyboard reset",65792);a.A=[];zp(a,Kq)}function ip(a,b,c){a.N!==c&&(a.N=a.U=c)&&(a.J=!0);a.K!==b&&(a.K=b)&&!a.U&&Vp(a,!0);a.K&&a.U&&(xp(a),a.U=!1)} +function zp(a,b){a.V&&(a.A.unshift(b),a.J=!0,Tp(a.V,b))}function pp(a){var b=0;a.A.length&&a.J&&(b=a.A[0],a.V&&Tp(a.V,b));r(a)&&Nb(a,b?"scan code "+na(b)+" available":"no scan codes available")}function fp(a){var b=0;a.A.length&&(b=a.A[0]);r(a)&&Nb(a,"scan code "+na(b)+" delivered");return b}function Vp(a,b){0>=1);if(b&Pq){if(!1===d)return!0;d=null}null==d?d=!((c?a.D:a.kc)&b):d||b&Qq&&(b=Qq);if(c){a.D&=~b;d&&(a.D|=b);c=b;var f,g;for(g in Rq)d="led-"+g,e=Rq[g],c&&c!=e||!(f=a.ma[d])||(f.style.backgroundColor=a.D&e?"#00ff00":"#000000")}else a.kc&=~b,d&&(a.kc|=b);return!0}}return!1} +function Aq(a,b,c){if((N[b]||N[b+=1E3])&&a.H&&a.H.Z.Xa){Nq[b]&&a.B.length&&0e||(e==a.B.length&&(d={},d.ze=b,d.kc=a.kc,Iq(a,b,!0),e++),0b.Bd){if(!b.nf){Hq(a,b.ze);return}b.nf=!1;c=a.ka}else c=1==b.Bd++?500:100;b.mi=setTimeout(function(a){return function(){Sq(a,b)}}(a),c)}} +function Uq(a,b,c){var d=b;if(b>=n.fe&&b<=n.ag)!(a.kc&(Vq|Wq|Xq))==c&&(d=b+(n.ge-n.fe));else if(b>=n.ge&&b<=n.z)!!(a.kc&(Vq|Wq|Xq))==c&&(d=b-(n.ge-n.fe));else if(!!(a.kc&(Vq|Wq))==c){if(a=ha[b])d=a}else if(a=ga[b])d=a;return d}l.Ag=function(a){a||(this.kc&=~Qq)}; +function xq(a,b,c){var d=!0,e=!1,f=!1,g=b.keyCode;if(!yq(a.oa))return!1;a.C="";zb(a.ee);var h=Uq(a,g,!0);a.bh&&h==n["`"]&&(g=h=27);if(N[g+1E3])if(h+=1E3,2==b.location&&(h+=2E3),Fq(a,h,!1,c)){if(20==g||144==g||145==g)a.fa||(c=e=!0);if(!(c||91!=g&&93!=g))for(var k=0;k=n.fe&&b<=n.ag||b>=n.ge&&b<=n.z;e>>>=8;){var g=0,h=e&255;f==gr||f==hr?d.push(f|(c?0:fr)):(h==O?a.D&(Vq|Wq)||a.D&Xq&&b||(g=h):h==ir?a.D&(Yq|jr)||(g=h):h==kr?a.D&(Zq|lr)||(g=h):d.push(f|(c?0:fr)),g&&(c?d.unshift(g):d.push(g|fr)))}for(c=0;c"]]=52|O<<8;N[n["/"]]=53; +N[n["?"]]=53|O<<8;N[3016]=54;N[1044]=55;N[1018]=kr;N[1032]=57;N[Bq]=58;N[1112]=59;N[1113]=60;N[1114]=61;N[1115]=62;N[1116]=63;N[1117]=64;N[1118]=65;N[1119]=66;N[1120]=67;N[1121]=68;N[Cq]=69;N[Dq]=70;N[1036]=71;N[1038]=72;N[1033]=73;N[1109]=74;N[1037]=75;N[1101]=76;N[1039]=77;N[1107]=78;N[1035]=79;N[1040]=80;N[1034]=81;N[1045]=82;N[1046]=er;N[4027]=84;N[1122]=87;N[1123]=88;N[1091]=91;N[1093]=93;N[1224]=91;N[or]=46|ir<<8;N[$q]=70|ir<<8;N[4046]=er|ir<<8|kr<<16;N[4045]=82|ir<<8|kr<<16; +N[4013]=28|ir<<8|kr<<16;var vp=255,yp=243,Ap=237,Kq=170,wp=250,nr=255,mr=20;Xa(function(){for(var a=vb(document,"pcx86","keyboard"),b=0;bc.length)c=[!1,0,null,null,0,Array(b>2,32768));this.sc=c[0];this.Vc=c[1];this.Ze=c[2];this.ga=c[3];this.ic=c[4]&255;this.Eg=c[4]>>8&255;this.$a=c[5];this.nh=rr;this.dg=tr;this.ae=this.$a[ur]|this.$a[vr]<<8;this.cg=63;if(b>=fq){this.cg=255; +this.nh=sr;this.dg=wr;(b=c[6])||(b=[!1,0,Array(xr),0,f==Ul?0:yr,0,0,Array(zr),0,0,0,Array(Ar),0,[this.fb,this.Tb,this.wd],Array(this.wd>>2),Br|Cr|Dr|Er|Fr,0,-1,0,-1,0,-1,0,0,0,0,Gr,Hr,0,0,Ir,Array(Jr)]);this.Le=b[0];this.Dd=b[1];this.Dc=b[2];this.Sg=Kr;this.Hg=b[3];this.af=b[4];this.Mf=b[5];this.Gd=b[6];this.ce=b[7];this.Ug=Lr;this.Vk=b[8];this.Wk=b[9];this.Fd=b[10];this.Ed=b[11];this.Tg=Mr;this.xb=b[12];d=b[13];"number"==typeof d&&(d=[this.fb,this.Tb,d]);this.fb=d[0];this.Tb=d[1];d=this.wd>>2;if((this.ed= +b[14])&&this.ed.length=fq){var c=[];c[0]=a.Le;c[1]=a.Dd;c[2]=a.Dc;c[3]=a.Hg;c[4]=a.af;c[5]=a.Mf;c[6]=a.Gd;c[7]=a.ce;c[8]=a.Vk;c[9]=a.Wk;c[10]=a.Fd;c[11]=a.Ed;c[12]=a.xb;c[13]=[a.fb,a.Tb,a.wd];var d;if(d=a.ed){var e=0,f=[];if(void 0!==d[0])for(var g=0;2>g;g++)for(var h=g;h>1;f[e++]=k;h=m}f.length=fq){var d=0,e=0,f=0;switch(b){case Vr:d=Wr;a.Ma==hq&&(e=Xr);break;case Yr:a.Ma==fq&&(d=Zr);break;case $r:d=as;a.Ma==hq&&(e=bs);break;case cs:d=ds;a.Ma==hq&&(e=es);break;case fs:d=gs;a.Ma==hq&&(f=hs);break;case is:d=js,a.Ma==hq&&(f=ks)}d&&(c|=a.$a[ls]&d?256:0,c|=a.$a[ls]&e?512:0,c|=a.$a[ms]&f?512:0)}return c} +var vr=12,ur=13,rr=18,Vr=6,ls=7,Wr=1,ds=2,as=4,gs=8,js=16,Zr=32,Xr=32,es=64,bs=128,ms=9,hs=32,ks=64,Yr=10,$r=16,cs=18,fs=21,is=24,sr=25,ns={},os=(ns[0]=255,ns[1]=255,ns[2]=255,ns[3]=15,ns[4]=127,ns[5]=31,ns[6]=127,ns[7]=127,ns[8]=3,ns[9]=31,ns[10]=127,ns[11]=31,ns[vr]=63,ns[ur]=255,ns[14]=63,ns[15]=255,ns[16]=63,ns[17]=255,ns),tr="HTOTAL HDISP HSPOS HSWIDTH VTOTAL VTOTADJ VDISP VSPOS ILMODE MAXSCAN CURSTART CUREND STARTHIGH STARTLOW CURHIGH CURLOW PENHIGH PENLOW".split(" "),wr="HTOTAL HDEND HBSTART HBEND HRSTART HREND VTOTAL OVERFLOW PRESCAN MAXSCAN CURSTART CUREND STARTHIGH STARTLOW CURHIGH CURLOW VRSTART VREND VDEND OFFSET UNDERLINE VBSTART VBEND MODECTRL LINECOMP".split(" "), +xr=20,Kr="PAL00 PAL01 PAL02 PAL03 PAL04 PAL05 PAL06 PAL07 PAL08 PAL09 PAL0A PAL0B PAL0C PAL0D PAL0E PAL0F MODE OVERSCAN PLANES HPAN".split(" "),yr=1,Gr=1,zr=5,Lr=["RESET","CLOCKING","MAPMASK","CHARMAP","MEMMODE"],Hr=255,Ir=0,Jr=256,Ar=9,Mr="SRESET ESRESET COLORCMP DATAROT READMAP MODE MISC COLORDC BITMASK".split(" "),Br=1024,Cr=4096,Sr=65280,Dr=0,Er=16,Ur=255,Fr=-2147483648,Nr=[];Nr[2]=Br;Nr[3]=Br|Cr;Nr[16]=1280;Nr[512]=Dr;Nr[1024]=Dr|32;Nr[1536]=Dr|96;Nr[2560]=Dr|160;Nr[3584]=Dr|224;Nr[768]=Dr|Er; +Nr[4096]=1;Nr[8192]=2;Nr[24576]=98;Nr[40960]=162;Nr[57344]=226;var Tr=[];Tr[Br]=function(a){a+=this.H;return(this.controller.xb=this.W[a])>>this.controller.ci&255};Tr[Br|16384]=function(a){return(this.controller.xb=this.W[(a&-4)+this.H])>>((a&3)<<3)&255};Tr[Br|Cr]=function(a){a+=this.H;var b=this.controller.xb=this.W[a&-2];return(a&1?b>>8:b)&255}; +Tr[1280]=function(a){a+=this.H;a=this.controller.xb=this.W[a];for(var b=this.controller.ph,c=this.controller.oh&b,d=0,e=128;e;)(a&b)==c&&(d|=e),c>>>=1,b>>>=1,e>>=1;return d};Tr[Dr]=function(a,b){a+=this.H;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +Tr[Dr|32]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +Tr[Dr|96]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b&=this.controller.xb;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +Tr[Dr|160]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b|=this.controller.xb;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +Tr[Dr|224]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.$d;b^=this.controller.xb;b=b&this.controller.Db|this.controller.xb&~this.controller.Db;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)};Tr[Dr|4]=function(a,b){var c=(a&-4)+this.H;a=(a&3)<<3;b=b<>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Db;b=this.controller.Ef&b|this.controller.xb&~b;b=b&this.controller.kb|this.W[a]&~this.controller.kb;this.W[a]!=b&&(this.W[a]=b,this.Oa=!0)}; +function Q(a,b,c,d,e){ib.call(this,"Video",a,262144);var f=this,g;this.ad=Ma("Gecko/");this.da=a.model;var h=qs[this.da]||qs.mda;this.Ma=h[0];this.wd=a.memory||0;this.od=a.switches;this.Sb=a.randomize;null==this.Sb&&(this.Sb=1);this.ea=a.mode;if(null==this.ea||null==rs[this.ea])this.ea=h[1];this.Rb=a.charCols;this.Ic=a.charRows;if(void 0===this.Rb||void 0===this.Ic)this.Rb=rs[this.ea][0],this.Ic=rs[this.ea][1];this.aa=a.screenWidth;this.ka=a.screenHeight;this.cd=a.scale;this.Rd=12<=Math.round(this.aa/ +this.Rb);this.N=b;this.L=c;this.F=(this.og=d)||b||null;this.mc=a.screenColor||"black";this.nd=(1-(Qa("flicker")||a.flicker||0)).toString();this.Hb=!1;b&&(b.style.backgroundColor=this.mc);e&&(e.style.backgroundColor=this.mc);b=a.smoothing;(c=Qa("smoothing"))&&(b="true"==c);null!=b&&(g=Na(this.L,"imageSmoothingEnabled"))&&(this.L[g]=b);this.pd=a.touchScreen;this.lb=ss;this.G=null;this.Qd=a.autoLock;this.fb=this.Tb=0;this.ra=[];this.ha=Array(this.Ma==hq?256:16);this.Ia=!1;if(this.P=e)if(g=Na(e,"requestFullscreen")|| +Na(e,"requestFullScreen")){this.P.A=e[g];if(e=Na(document,"on","fullscreenchange")){var k=Na(document,"fullscreenElement")||Na(document,"fullScreenElement");document.addEventListener(e,function(){ts(f,!!k)},!1)}(e=Na(document,"on","fullscreenerror"))&&document.addEventListener(e,function(){ts(f,null)},!1)}if(this.F&&(this.F.onfocus=function(){return f.Ag(!0)},this.F.onblur=function(){return f.Ag(!1)},this.F.re=(g=Na(this.F,"requestPointerLock"))&&this.F[g],this.F.B=(g=Na(this.F,"exitPointerLock"))&& +this.F[g],this.F.re&&(e=Na(document,"on","pointerlockchange")))){var m=Na(document,"pointerLockElement");document.addEventListener(e,function(){f.Gf(!(!m||document[m]!==f.F))},!1)}(this.Aa=a.fontROM)&&"json"!=ra(this.Aa)&&(this.Aa=Ga()+"/api/v1/dump?file="+this.Aa+"&format=bytes")}ba(Q,ib);l=Q.prototype; +l.uc=function(a,b,c,d){var e=this;this.na=b;this.H=c;this.ca=d;c=+ud(a,"randomize");0<=c&&1>=c&&(this.Sb=c);c=(c=qs[this.da])&&c[0];c!==us&&(Ic(b,this,vs),Mc(b,this,ws));c!==xs&&(Ic(b,this,ys),Mc(b,this,zs));this.Ma>=fq&&(Ic(b,this,As),Mc(b,this,Bs));this.Ma==hq&&(Ic(b,this,Cs),Mc(b,this,Ds));d&&xl(d,262144,function(a){if(e.B)if(a[0]){var b=e.B;if(b.ed){var c,d,f,g=!1,h=8,G=8,I=-1,J=b.video.D>>3;for(c=0;c=d&&(G=d,g=!0);break;case "p":0<=d&&3>=d&&(I=d);break;case "w":d=b.fb&&(f-=b.fb);a="";for(c=0;cI?q(K):la(K>>(I<<3),8));g&&(f+=J-G);a&&(a+="\n");a+=P}a&&b.ca.O(a);b.B=f}else b.ca.O("no buffer")}else e.ca.O("BIOSMODE: "+na(e.la)),b=e.B,Qr(b,"CRTC",b.ic,b.$a,b.dg),b.Ma>=fq&&(Qr(b," GRC",b.Fd,b.Ed,b.Tg),Qr(b, +" SEQ",b.Gd,b.ce,b.Ug),Qr(b," ATC",b.Dd,b.Dc,b.Sg),Qr(b," ATCINDX",b.Dd),b.ca.O(" ATCDATA: "+b.Le),Qr(b," FEAT",b.Mf),Qr(b," MISC",b.af),Qr(b," STATUS0",b.Hg)),Qr(b," STATUS1",b.ga),b.Ma!=xs&&b.Ma!=us||Qr(b," MODEREG",b.Vc),b.Ma==us&&Qr(b," COLOR",b.Ze),b.Ma>=fq&&(b.ca.O(" LATCHES: "+q(b.xb)),b.ca.O(" ACCESS: "+q(b.rg,4)),b.ca.O("Use 'dump video [addr]' to dump video memory"));else e.ca.O("no active video card")});if((this.C=Vb(a,"Keyboard"))&&this.N){for(var f in this.ma)0c&&(a=Math.round(c/b*100)+"%")}d.ad?(d.N.style.width=a,d.N.style.width=a,d.N.style.display="block",d.N.style.margin="auto"):(d.P.style.width=a,d.P.style.height="auto");d.P.style.backgroundColor=d.mc;d.P.A()}d.F&&d.F.focus()}}:c.parentNode.removeChild(c), +!0;case "lockPointer":return this.Td=c.textContent,this.F&&this.F.re?c.onclick=function(){d.re(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){Js(d,!0)},!0}return!1};function ts(a,b){!b&&a.P&&(a.ad?a.N.style.width=a.N.style.height="":a.P.style.width=a.P.style.height="");Nb(a,"notifyFullScreen("+b+")",!0);a.C&&(a.C.bh=b)} +l.re=function(a){var b=!1;this.F&&(a?this.F.re&&(this.F.re(),this.G&&this.G.Gf(!0),b=!0):this.F.B&&(this.F.B(),this.G&&this.G.Gf(!1),b=!0),this.F&&this.F.focus());return b};l.Gf=function(a){this.G&&(this.G.Gf(a),this.C&&(this.C.bh=a));var b=this.ma.lockPointer;b&&(b.textContent=a?"Press Esc to Unlock Pointer":this.Td)}; +function Es(a,b){var c=a.F;c&&!a.lb&&(a.lb=b,c.addEventListener("touchstart",function(b){aq(a.V,b);a.lb!=Hs&&Ls(a,b,!0)},!1),b!=Hs&&(c.addEventListener("touchmove",function(b){Ls(a,b)},!0),c.addEventListener("touchend",function(b){Ls(a,b,!1)},!1),a.mb=a.vb=a.qd=-1,a.Ac=!1,a.Kb=null,a.wc=!1,a.Sd=function(){a.wc=!0;a.G.Yd(Ms,!0)}))}l.Ag=function(a){this.C&&this.C.Ag(a)}; +function Ls(a,b,c){var d,e,f=0,g=0;d=a.N;do isNaN(d.offsetLeft)||(f+=d.offsetLeft,g+=d.offsetTop);while(d=d.offsetParent);var h=a.aa/a.N.offsetWidth,k=a.ka/a.N.offsetHeight;b.targetTouches&&b.targetTouches.length?(d=b.targetTouches[0].pageX,e=b.targetTouches[0].pageY):(d=b.pageX,e=b.pageY);d=(d-f)*h;e=(e-g)*k;if(a.lb==Gs)c&&Aq(a.C,Ns[e/(a.ka/3)|0][d/(a.aa/3)|0],!0);else if(a.G){g=a.Ac;f=b.timeStamp-a.qd;!0===c?(a.Ac=500f){a.G.Yd(Ms,!0);a.G.Yd(Ms,!1);return}}if(c||0>a.mb||0>a.vb)a.mb=d,a.vb=e;c=Math.round(d-a.mb);b=Math.round(e-a.vb);a.mb=d;a.vb=e;a.G.sf(c,b,a.mb,a.vb)}}l.ac=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.$b=function(a){return a?this.save():!0}; +l.reset=function(){var a=0;this.V&&(a=+Tl(this.V,hl,void 0));this.da||(this.Ma=a==Ul?xs:us);this.ea=Os;switch(this.Ma){case hq:a=7;break;case fq:var b=Ps[this.Fb];b&&(a=b[0]);a||(a=4);break;case xs:a=Ul;this.ea=Qs;break;default:a=2}this.fa!==a&&(this.fa=a);this.B=null;this.U=this.hc=new pr(this,xs);this.K=this.Gb=new pr(this,us);this.Ma>1&255,c=c>>8&~Us,c>>4==(c&15)&&(c^=15)):(d=c&255,c=(c&256?Vs|Ws:Xs|Ys)|Zs&c>>8);Fc(this.na,b,d|c<<8)}Js(this,!0)}};function Rs(a){a.A.af&yr?(a.U=a.hc,a.K=a.A):(a.U=a.A,a.K=a.Gb)}l.save=function(){var a=new Wf(this);a.set(0,Pr(this.hc));a.set(1,Pr(this.Gb));a.set(2,[this.fa,this.ea,this.la]);a.set(3,Pr(this.A));return a.data()}; +l.restore=function(a){var b=a[2];this.fa=b[0];this.ea=b[1];this.la=b[2];this.B=null;this.U=this.hc=new pr(this,xs,a[0]);this.K=this.Gb=new pr(this,us,a[1]);this.A=new pr(this,this.Ma,a[3],this.wd);this.A.sc&&Rs(this);Ss(this);if(!$s(this))return!1;at(this);return!0}; +function Is(a,b,c,d){if(d)a.Da("Unable to load font ROM (error "+d+": "+b+")",0>d);else{nb(a.ee,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f.length){ab("Empty font ROM: "+b);return}if(1==f.length){ab(f[0]);return}if(8192==f.length)gq(a,f,[6144,0]);else if(2048==f.length)gq(a,f,[0]);else{a.Da("Unrecognized font data length ("+f.length+")");return}}catch(g){a.Da("Font ROM data error: "+g.message);return}(a.L||a.ca)&&Jb(a)}} +function bt(a,b){if(1==b)return a.ha[0]=ct[Xs],a.ha[1]=ct[Vs],a.ha;if(2==b){var c=a.B.Ze;if(a.B===a.A){var d=a.A.Dc[0],c=d&7;d&16&&(c|=8);18!=a.A.Dc[1]&&(c|=32)}a.ha[0]=ct[c&15];c=c&32?dt:et;for(d=0;de;e++)f=d[e]||0,g=f<<2&252,h=f>>4&252,f=f>>10&252,a.ha[e]=[g,h,f,255];else{var k=d&&d[255];b=null!=c.Dc[15]?c.Dc:ft;for(e=0;16>e;e++)f=b[e]&63,k?(f|= +(c.Dc[20]&12)<<4,c.Dc[16]&128&&(f&=-49,f|=(c.Dc[20]&3)<<4),f=d[f],g=f<<2&252,h=f>>4&252,f=f>>10&252):(g=(f&4?170:0)|(f&32?85:0),h=(f&2?170:0)|(f&16?85:0),f=(f&1?170:0)|(f&8?85:0)),a.ha[e]=[g,h,f,255]}a.Ia=!0}return a.ha}function gq(a,b,c,d){a.zb=b;a.Pa=c;a.Fa=d} +function Ss(a,b){var c=!1;if(window&&a.zb&&(!b||a.I)){var d=0,e=a.Fa?a.Fa:8,f=bt(a);null!=a.Pa[0]&>(a,ht,a.Pa[0],d,e,8,a.zb,f)&&(c=!0);d=a.Fa?0:2048;e=a.Fa?a.Fa:9;null!=a.Pa[1]&&(gt(a,it,a.Pa[1],d,e,14,a.zb,jt,kt)&&(c=!0),a.Fa&>(a,a.Ma,a.Pa[1],0,a.Fa,14,a.zb,f)&&(c=!0))}b||(a.ba=-1,a.Ba=-1,a.va=0);return c}function gt(a,b,c,d,e,f,g,h,k){var m=!1;null!=c&&(lt(a,b,c,d,e,f,g,h,k)&&(m=!0),a.Rd&<(a,b<<1,c,d,e,f,g,h,k)&&(m=!0));return m} +function lt(a,b,c,d,e,f,g,h,k){var m=!1,p=b&1?0:1,v=a.ra[b],u=16>h.length?h.length:16;v||(v={Gc:e<ka||!P?ka:8,lb=db.createImageData(m.Gc,m.Hc);for(Oa=0;256>Oa;Oa++){for(eb=0;eb=ka-2,Od=Z[eb>(8<=kb&&192<=Oa&&223>=Oa?7:kb)?D:jb;mt(lb,zg,ef,Ag);I&&mt(lb,zg+1,ef,Ag)}db.putImageData(lb,(Oa&15)*m.Gc,(Oa>>4)*m.Hc)}m.Fe[G]="#"+q(D[0],2)+q(D[1],2)+q(D[2],2);m.Pi[G]=D;m.Rg[G]=qa;m=!0}}a.ra[b]=v;return m}function nt(a){0a.Ba&&(a.Ba=0):a.Ba=-1} +function at(a){if(a.I){for(var b=10;15>=b;b++)if(null==a.B.$a[b])return;var c=a.B.$a[10],b=c&31,d=a.B.$a[11]&os[11],e=a.B.$a[9]&os[9],f=!1;a.B===a.A&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)ot(a);else{c=a.B.$a[15];c|=(a.B.$a[14]&a.B.cg)<<8;a.ba!=c&&(ot(a),a.ba=c);d=d-b+1;if(a.rd!=b||a.Tc!=d)a.rd=b,a.Tc=d;a.xa=e+1;nt(a)}}} +function ot(a){if(0<=a.ba){if(void 0!==a.M){var b=pt<<8,c=a.M[a.ba];if(c&b){var c=c&~b,b=a.ba%a.D,d=a.ba/a.D|0;a.I&&a.ra[a.I]&&(a.Ea&&qt(a,b,d,c,a.Ea),qt(a,b,d,c));a.M[a.ba]=c}}a.ba=-1}} +function rt(a){var b,c=a.B;a.Uc=!1;var d=c.Ed[5];if(null!=d){b=Br;var e=Dr,f=c.Ed[3]&31;switch(d&3){case 0:if(f){e=Dr|32;switch(f&24){case 8:e=Dr|96;break;case 16:e=Dr|160;break;case 24:e=Dr|224}c.Qc=f&7}break;case 1:e=1;break;case 2:switch(f&24){default:e=2;break;case 8:e=98;break;case 16:e=162;break;case 24:e=226}break;case 3:a.Ma==hq&&(e=3,c.Qc=f&7)}d&8&&(b=1280);c=c.ce[4];null!=c&&(c&4||(b|=Cr,e|=Er),d&64&&(c&8&&(b|=16384,e|=4),a.Uc=!0));b|=e}return b} +function st(a,b){var c=a.B;return c&&null!=b&&b!=c.rg?(c.Jg(b),a.na.Jg(c.fb,c.Tb,c.eh(),!0),!0):!1} +function $s(a,b){var c,d=a.la,e=a.B;if(e)if(e.Ma==xs)d=Qs;else if(e.Ma>=fq){var d=null,f=e.wd>>2,g=32768=e.$a[cs]?xt:yt:zt:g&128|| +350>f?d=m?At:Bt:480<=f&&(d=a.fa==Ul?Ct:Dt):d=m?7-d:Et:d-=m?2:0);c=rt(a)}}else e.Vc&8?(e.Vc&2?(d=e.Vc&16?Et:Ft,e.Vc&4||--d):(d=e.Vc&1?Os:Gt,e.Vc&4&&--d),a.Hb&&(a.N.style.opacity="1",a.Hb=!1)):!a.Hb&&1>+a.nd&&(a.Hb=!0,a.N.style.opacity=a.nd,e=a.H,e.Z.Rf=!0,zd(e));else a.la=null,null==d&&(d=a.ea);if(!Ts(a,d,b))return!1;st(a,c);return!0} +function Ts(a,b,c){if(null!=b&&(b!=a.la||c)){a.Hd=0;a.la=b;a.Ia=!1;b=a.B||(b==Qs?a.U:a.K);if(b!=a.B||b.fb!=a.fb||b.Tb!=a.Tb){ot(a);if(a.fb){if(!wc(a.na,a.fb,a.Tb))return!1;a.B&&(a.B.sc=!1)}a.B=b;b.sc=!0;a.fb=b.fb;a.Tb=b.Tb;if(!kc(a.na,b.fb,b.Tb,3,b===a.A?b:null))return!1}a:{a.I=0;a.D=a.Rb;a.J=a.Ic;a.La=a.D;a.Qb=rs[Qs][2];b=0;if(c=rs[a.la])a.D=c[0],a.J=c[1],a.Qb=c[2],b=c[3],a.I=c[4],4!=a.fa&&7!=a.fa||a.B!==a.A||a.I!=ht||(7==(a.A.$a[ms]&31)?a.J=350>Rr(a.A,cs)?43:50:a.I=a.Ma);a.md=a.D*a.J|0;a.ld=a.md/ +a.Qb|0;a.Ra=a.ld;a.lc=0;void 0!==b&&(a.Ra=(a.Ra<<1)+b|0,a.lc=a.Ra+b>>1);if(a.ra.length){a.qa=a.aa/a.D|0;a.pa=a.ka/a.J|0;if(a.I){b=a.ra[a.I];if(!b)break a;c=a.ra[a.I<<1];a.cd&&80==a.D?c&&a.qa>=3*c.Gc>>2&&(a.I<<=1,b=c):(c&&a.qa>=c.Gc&&(a.I<<=1,b=c),a.cd||(a.qa=b.Gc,a.pa=b.Hc));a.ab=a.cb=0;b&&(a.ab=a.D*b.Gc,a.cb=a.J*b.Hc)}else a.qa=a.pa=1,a.ab=a.D,a.cb=a.J;a.Ka=a.L.createImageData(a.ab,a.cb);a.Ca=document.createElement("canvas");a.Ca.width=a.ab;a.Ca.height=a.cb;a.Ea=a.Ca.getContext("2d");a.Kc=a.Lc=0; +a.tc=a.aa;a.vc=a.ka;b=a.aa-a.D*a.qa;c=a.ka-a.J*a.pa;0>1,a.tc-=b);0>1,a.vc-=c);if(b||c)a.L.fillStyle=a.N.style.backgroundColor,a.L.fillRect(0,0,a.aa,a.ka)}}fu(a,!0);Js(a)}return!0}function mt(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function hu(a){a.va=-1;a.Ga=!1;var b=a.ld;if(void 0===a.M||a.M.length!=b)a.M=Array(b)}function fu(a,b){b||(a.Ia=!1);hu(a)} +function qt(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.ra[a.I];h.jf&&(d=h.jf[d]);var k=g>>4&15;h.jf&&(k=h.jf[k]);e?(b*=h.Gc,c*=h.Hc,e.fillStyle=h.Fe[k],e.fillRect(b,c,h.Gc,h.Hc)):(b=b*a.qa+a.Kc,c=c*a.pa+a.Lc,a.L.fillStyle=h.Fe[k],a.L.fillRect(b,c,a.qa,a.pa));g&iu&&(k=(f&15)*h.Gc,f=(f>>4)*h.Hc,e?e.drawImage(h.Rg[d],k,f,h.Gc,h.Hc,b,c,h.Gc,h.Hc):a.L.drawImage(h.Rg[d],k,f,h.Gc,h.Hc,b,c,a.qa,a.pa));g&pt&&(f=a.rd,g=a.Tc,e?(a.xa&&a.xa!==h.Hc&&(f=f*h.Hc/a.xa|0,g=g*h.Hc/a.xa|0),e.fillStyle=h.Fe[d],e.fillRect(b, +c+f,h.Gc,g)):(a.xa&&a.xa!==a.pa&&(f=f*a.pa/a.xa|0,g=g*a.pa/a.xa|0),a.L.fillStyle=h.Fe[d],a.L.fillRect(b,c+f,a.qa,g)))} +function Js(a,b){b=void 0===b?!1:b;if(a.Z.bc){var c=!1,d=a.B;d&&(d!==a.A?d.Vc&8&&(c=!0):d.Dd&32&&(c=!0));if(c||b){if(b)hu(a);else if(void 0===a.M)return;c=!1;!(b||++a.Hd&15)&&0<=a.Ba&&(a.Ba++,c=!0);var e=a.md,f=a.fb,g=f,h=g+a.Tb;a.la>=xt&&(f=g=655360,h=g+65536);if(ju(a,d)&8||d.Ff&&d.Ff=fq&&d.$a[19]&&d.$a[19]<<1!=d.$a[1]+1&&(a.La=d.$a[19]<<(a.I?1:d.$a[20]&64?3:4),k=(a.La*(a.J-1)+a.D)/ +a.Qb|0,a.la<=Qs&&(k<<=1));var p=d=0;g+k>h&&(p=k,g>=h?(d=f+(g-h),k=0):(d=f,k=h-g,p-=k));h=a.ba-(m>>1);g=ku(a,f,g,k,0,h,e,b,c);p&&(g+=ku(a,f,d,p,0+g,h,e,b,c));g&&(a.Ga=!0)}}} +function ku(a,b,c,d,e,f,g,h,k){var m=d>>1;m>g&&(m=g);var p=c+d;if(h=!h&&a.Ga){h=a.na;for(var v=!0,u=c>>>h.A,D=h.B-(c&h.D);0f)return m;c+=f<<1;e+=f;g=e+1}}if(a.I){if(a.ra[a.I]){b=c;c=e;k=f=e=0;h=iu<<8;d=1048575;u=a.B.Vc&32;a.Ma>=fq&&(u=a.B.Dc[16]&8);v=a.ba-a.B.ae;u&&(k=Us<<8,d&=~k,a.Ba&2||(d&=~h));for(a.va=0;b>1;g=0;c=a.Qb;e=b;f=16==c?65536:196608;k=16==c?1:2;h=bt(a,k);var v=d=0,u=a.D,D=0,G=a.J,I=0;for(a.va=0;e>8|(J&255)<<8,P=f,K=16;d>=k))>>(K-=k);mt(a.Ka,d++,v,h[Z])}d>D&&(D=d);v=I&&(I=v+1)}e+=2;g++;if(d>=a.D){d= +0;v+=2;if(v>a.J)break;v==a.J&&(v=1,e=b+a.lc)}}ua.D?a.La-a.D-I>>3:0;for(a.va=0;c>=8;k>v&&(v=k);h=D&&(D=h+1)}c+=G;if(k>=a.D){k=0;if(++h>a.J)break;c+=J}}I&& +(g=0)}else{m=0;g=p-c;e=bt(a);f=a.B.ed;h=k=0;d=a.D;v=0;u=a.J;D=0;G=a.B.Dc[19]&15;I=a.La>a.D?a.La-a.D-G>>3:0;for(a.va=0;cP&&(K=P)):(J<<=G,K-=G,a.Ga=!1):(a.Ga&&J===a.M[m]?(k+=K,K=0):a.M[m]=J,m++);if(K){kv&&(v=k);h=D&&(D=h+1)}if(k>=a.D){k=0;if(++h>a.J)break;c+=I}}G&&(g=0)}da&&(b.uh=a,a=-a|0);a%b.rh>b.hn&&(c|=1);a%b.sh>b.kn&&(c|=9);b.di=a/b.sh|0;return c}l.wm=function(a,b){return mu(this,this.U,a,b)};l.co=function(a,b,c){var d=this.U;d.Eg=d.ic;d.ic=b&31;t(this,a,b,c,"CRTC.INDX")};l.vm=function(a,b){return nu(this,this.U,a,b)};l.bo=function(a,b,c){ou(this,this.U,a,b,c)};l.xm=function(a,b){return pu(this,this.U,b)};l.eo=function(a,b,c){a=this.U;t(this,a.port+4,b,c,"MODE");a.Vc=b;$s(this,!1)}; +l.ym=function(a,b){return qu(this,this.U,b)};l.Lk=function(a,b,c){this.A.Mf=this.A.Mf&-4|b&3;t(this,a,b,c,"FEAT")};l.Vl=function(a,b){a=this.A.Dd;b&&!r(this)||t(this,960,null,b,"ATC.INDX",a);return a};l.ol=function(a,b){a=this.A.Dc[this.A.Dd&31];b&&!r(this)||t(this,960,null,b,"ATC."+this.A.Sg[this.A.Dd&31],a);return a}; +l.Kk=function(a,b,c){var d=this.A,e=d.Dd&32;if(d.Le){d.Le=!1;var f=d.Dd&31;if(16<=f||!e)if(ru||d.Dc[f]!==b)c&&!r(this)||t(this,a,b,c,"ATC."+d.Sg[f]),d.Dc[f]=b,fu(this,!1)}else d.Dd=b,t(this,a,b,c,"ATC.INDX"),d.Le=!0,b&32&&!e&&Ss(this,!0)&&Js(this,!0),a=d.$a[ur],a|=(d.$a[vr]&d.cg)<<8,d.ae!=a&&(d.ae=a,fu(this)),d.Ff=0}; +l.Im=function(a,b){a=0;if(this.Ma==fq)a=3-((this.A.af&12)>>2),a=(this.Fb&1<>this.A.yc&63;b&&!r(this)||t(this,969,null,b,"DAC.DATA["+na(this.A.bd)+"]["+na(this.A.yc)+"]",a);this.A.yc+=6;12Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.height="auto";0<=Ha().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth, +d.screenHeight),c.onresize(null));var f=+(Qa("aspect")||d.aspect);f&&.3<=f&&3.33>=f&&(Wa("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ma("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Q(d,e,g,f,c);ub(d,c)}}); +function su(a){ib.call(this,"ParallelPort",a,4194304);this.G=a.adapter;switch(this.G){case 1:this.D=956;this.C=7;break;case 2:this.D=888;this.C=7;break;case 3:this.D=632;this.C=5;break;default:ab("Unrecognized parallel adapter #"+this.G);return}this.A=this.B=null;a=a.binding;"console"==a?this.B="":sb(this,a,tu)}ba(su,ib);l=su.prototype;l.Eb=function(a,b,c){switch(b){case tu:return this.ma[b]=this.A=c,!0}return!1}; +l.uc=function(a,b,c,d){this.na=b;this.H=c;this.ca=d;this.V=Vb(a,"ChipSet");Ic(b,this,uu,this.D);Mc(b,this,vu,this.D);Jb(this)};l.ac=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.$b=function(a){return a?this.save():!0};l.reset=function(){wu(this)};l.save=function(){var a=new Wf(this),b=0,c=[];c[b++]=this.F;c[b++]=this.Pb;c[b]=this.kf;a.set(0,c);return a.data()};l.restore=function(a){return wu(this,a[0])}; +function wu(a,b){var c=0;b||(b=[0,0,0]);a.F=b[c++];a.Pb=b[c++];a.kf=b[c];return!0}l.jm=function(a,b){var c=this.F;t(this,a,null,b,"DATA",c);return c};l.Hm=function(a,b){var c=this.Pb;t(this,a,null,b,"STAT",c);return c};l.fm=function(a,b){var c=this.kf;t(this,a,null,b,"CTRL",c);return c}; +l.Pn=function(a,b,c){t(this,a,b,c,"DATA");this.F=b;this.Pb|=xu;a=!1;Nb(this,"transmitByte("+na(b)+")");this.A&&(8==b?this.A.value=this.A.value.slice(0,-1):(this.A.value+=String.fromCharCode(b),this.A.scrollTop=this.A.scrollHeight),a=!0);if(null!=this.B){if(10==b||1024<=this.B.length)this.O(this.B),this.B="";10!=b&&(this.B+=String.fromCharCode(b));a=!0}a&&(this.Pb&=~xu);yu(this)};l.Kn=function(a,b,c){t(this,a,b,c,"CTRL");this.kf=b;yu(this)}; +function yu(a){a.V&&a.C&&(a.kf&zu&&!(a.Pb&xu)?ih(a.V,a.C):gh(a.V,a.C))}var tu="buffer",xu=64,zu=16,uu={0:su.prototype.jm,1:su.prototype.Hm,2:su.prototype.fm},vu={0:su.prototype.Pn,2:su.prototype.Kn};Xa(function(){for(var a=vb(document,"pcx86","parallel"),b=0;b=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=wa(c[0]);if(d!=this.Ce)return;c=wa(c[1]);if(this.G=yb(c)){var e=this.G.exports;if(e){var f=e.connect;f&&f.call(this.G,this.P);if(this.ba=e.receiveData){this.P=a;this.U=e.receiveStatus;this.status("Connected "+this.ee+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}}; +l.ac=function(a,b){if(!b)if(this.yj(this.P),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.$b=function(a){return a?this.save():!0};l.reset=function(){Gu(this)};l.save=function(){var a=new Wf(this),b=0,c=[];c[b++]=this.fa;c[b++]=this.ka;c[b++]=this.L;c[b++]=this.M;c[b++]=this.F;c[b++]=this.D;c[b++]=this.aa;c[b++]=this.A;c[b++]=this.B;c[b]=this.J;a.set(0,c);return a.data()};l.restore=function(a){return Gu(this,a[0])}; +function Gu(a,b){var c=0;b||(b=[0,0,Hu,0,Iu,0,0,Ju|Ku,a.ra,[]]);a.fa=b[c++];a.ka=b[c++];a.L=b[c++];a.M=b[c++];a.F=b[c++];a.D=b[c++];a.aa=b[c++];a.A=b[c++];a.B=b[c++];a.J=b[c];return!0}l.Lf=function(a){if("number"==typeof a)this.J.push(a);else if("string"==typeof a)for(var b=0;b>8:this.M;t(this,a,null,b,this.D&Qu?"DLM":"IER",c);return c};l.rm=function(a,b){var c=this.F;this.F|=Iu;t(this,a,null,b,"IIR",c);return c};l.sm=function(a,b){var c=this.D;t(this,a,null,b,"LCR",c);return c}; +l.um=function(a,b){var c=this.aa;t(this,a,null,b,"MCR",c);return c};l.tm=function(a,b){var c=this.A;t(this,a,null,b,"LSR",c);return c};l.zm=function(a,b){var c=this.B;this.B&=~(Mu|Nu);t(this,a,null,b,"MSR",c);return c}; +l.no=function(a,b,c){t(this,a,b,c,this.D&Qu?"DLL":"THR");if(this.D&Qu)this.L=this.L&-256|b;else{this.ka=b;this.A&=~(Ju|Ku);a=!1;Nb(this,"transmitByte("+na(b)+")");this.ba&&this.ba.call(this.G,b)&&(a=!0);if(this.C){if(13==b)this.K=0;else if(8==b)this.C.value=this.C.value.slice(0,-1),0":String.fromCharCode(b);a=d.length;32>b&&1==a&&(a=0);9==b&&(a=this.pa||8,a-=this.K%a,this.pa&&(d=va("",a)));!this.K&&a&&(10!=this.qa&&(d="\n"+d),this.la&& +(d=String.fromCharCode(this.la)+d));this.C.value+=d;this.C.scrollTop=this.C.scrollHeight;this.K+=a}this.qa=b;a=!0}else if(null!=this.I){if(10==b||1024<=this.I.length)this.O(this.I),this.I="";10!=b&&(this.I+=String.fromCharCode(b));a=!0}a&&(this.A=this.A|Ju|Ku,Ou(this))}};l.Zn=function(a,b,c){t(this,a,b,c,this.D&Qu?"DLM":"IER");this.D&Qu?this.L=this.L&255|b<<8:this.M=b};l.$n=function(a,b,c){t(this,a,b,c,"LCR");this.D=b}; +l.ao=function(a,b,c){var d=b^this.aa;t(this,a,b,c,"MCR");this.aa=b;d&(Ru|Su)&&this.U&&(a=0,this.P?(a|=b&Su?32:0,a|=b&Ru?320:0):(a|=b&Su?16:0,a|=b&Ru?1048576:0),this.U.call(this.G,a))};function Ou(a){var b=-1;a.A&Pu&&a.M&Tu?b=Uu:a.A&Ju&&a.M&Vu?b=Wu:a.B&(Mu|Nu)&&a.M&Xu&&(b=Yu);0<=b?(a.F&=~(Iu|Zu),a.F|=b,a.V&&a.N&&ih(a.V,a.N,100)):(a.F|=Iu,a.V&&a.N&&gh(a.V,a.N))} +var Du="buffer",Hu=384,Tu=1,Vu=2,Xu=8,Iu=1,Uu=4,Wu=2,Yu=0,Zu=6,Qu=128,Ru=1,Su=2,Pu=1,Ju=32,Ku=64,Mu=1,Nu=2,Bu=16,Cu=32,Eu={0:Au.prototype.Em,1:Au.prototype.qm,2:Au.prototype.rm,3:Au.prototype.sm,4:Au.prototype.um,5:Au.prototype.tm,6:Au.prototype.zm},Fu={0:Au.prototype.no,1:Au.prototype.Zn,3:Au.prototype.$n,4:Au.prototype.ao};Xa(function(){for(var a=vb(document,"pcx86","serial"),b=0;ba.A||0>a.B)a.A=b.screenX,a.B=b.screenY;a.N?(c=b.movementX||b.mozMovementX||b.webkitMovementX||0,d=b.movementY||b.mozMovementY||b.webkitMovementY||0):(c=b.screenX-a.A,d=b.screenY-a.B);a.A=b.screenX;a.B=b.screenY;a.sf(c,d,a.A,a.B)}} +l.Yd=function(a,b){if(this.sc&&this.H&&this.H.Z.Xa){var c="mouse button"+a+" "+(b?"dn":"up");switch(a){case Ms:if(this.L!=b){this.L=b;fv(this,c);return}break;case gv:if(this.M!=b){this.M=b;fv(this,c);return}}Nb(this,c+": ignored")}};l.sf=function(a,b,c,d){this.sc&&this.H&&this.H.Z.Xa&&(a=Math.round(Math.abs(a)*this.K)*Math.sign(a)||Math.sign(a),b=Math.round(Math.abs(b)*this.K)*Math.sign(b)||Math.sign(b),a||b)&&(r(this,16777216)&&Nb(this,"moveMouse("+a+","+b+")"),this.I=a,this.J=b,fv(this,null,c,d))}; +function fv(a,b,c,d){var e=64|(a.L?32:0)|(a.M?16:0)|(a.J&192)>>4|(a.I&192)>>6,f=a.I&63,g=a.J&63;r(a,8388608)&&Nb(a,(b?b+": ":"")+(void 0!==d?"mouse ("+c+","+d+"): ":"")+"serial packet ["+na(e)+","+na(f)+","+na(g)+"]",0,!0);a.G.Lf([e,f,g]);a.I=a.J=0} +l.ml=function(a){var b=1048592==(a&1048592);if(b){if(!this.sc){var c=!1;this.C&16||(this.reset(),Nb(this,"serial mouse reset"),c=!0);this.C&1048576||(Nb(this,"serial mouse ID requested"),c=!0);c&&(this.G.Lf([hv,hv]),Nb(this,"serial mouse ID sent"));av(this);this.sc=b}}else this.sc&&(Nb(this,"serial mouse inactive"),bv(this),this.sc=b);this.C=a};var hv=77,Ms=0,gv=2;Xa(function(){for(var a=vb(document,"pcx86","mouse"),b=0;b>2;var e=d=0,a=new DataView(a,0,c);g.A=Array(g.sb);for(c=0;cb.indexOf("/api/v1/dump")&&(a=ra(b),"json"==a||"gz"==a?f=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(f=pv(this,b),this.mg=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"):sa(b, +"/")&&(c="dir"),f=Ga()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.Oe?"":d)+"&format=json"));var k="Loading "+f+"...";return!!Fa(f,null,!0,function(a,b,c){qv(g,a,b,c)},function(){g.O(k,Fb.Ee)})}; +function qv(a,b,c,d){var e=null;a.Re=!1;var f=!(!(0>d&&a.oa)||a.oa.Z.bc);if(a.mg)d?a.Da('Unable to connect to disk "'+a.G+'" (error '+d+": "+c+")",f):(a.D=!0,rv(a),e=a);else if(d)a.Da('Unable to load disk "'+a.kd+'" (error '+d+": "+b+")",f);else{nb(a.controller.ee,b,c);try{if(0g&&0c.indexOf("0x")&& +'["'!=c.substr(0,2)?JSON.parse(c.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+c+")");if(h.length)if(1==h.length)ab(h[0]);else{a.sb=h.length;a.gb=h[0].length;a.Wa=h[0][0].length;var k=h[0][0][0];a.Na=k&&k.length||512;for(d=c=0;d>2,p=k.pattern;void 0===p&&(p=k.pattern=0);var v=k.data;if(void 0===v){var u=k.bytes;if(void 0!==u&&u.length){for(var D=m<<2,G=u.length;G< +D;G++)u[G]=p;sv(k,u,0)}else k.data=v=[],u&&(k.pattern=p|p<<8|p<<16|p<<24);delete k.bytes}ov(k,d,f);for(D=0;Db;b++){if(128==uv(a,e,c+0,1)){d.If=uv(a,e,c+8,4);(e=tv(a,d.If))&&(f=!0);break}c+=16}if(!f)return}d.rf||(d.rf=uv(a,e,19,2)||uv(a,e,32,4),d.qf=uv(a,e,14,2),d.lh=d.qf+uv(a,e,22,2)*uv(a,e,16,1),d.th=uv(a,e,17,2),d.vf=uv(a,e,13,1));d.jh=d.lh+((32*d.th+(d.Na-1))/d.Na|0);d.gn=(d.rf-d.jh)/d.vf|0;d.ug=4084>=d.gn?12:16;d.Il=12==d.ug?4086:65526;b=[];for(e=d.lh;e>=8;f+=2;if(k)for(;m--;)Iv(d,f,1),254>=k?(p=k,v=Iv(d,f+1),f+=3):(p=Iv(d,f+3,1),v=Iv(d,f+4),f+=6),d.sd[p]&&(d.sd[p].he[h]=[v]),d.A[h]=[p,v],h++;else h+=m}(g=xv(e,Lv,c))&&Mv(e,g+c);g=xv(e,Nv,c);h=xv(e,Ov,c);g&&h&&Mv(e,g,g+h)}}}} +function wv(a,b,c,d,e){var f,g=a.C.length,h=b.Na/32|0;b.mq=d+"\\";for(var k=0;kG)break;for(var I=u.jh+(G-2)*u.vf,J=0;J>3,1),d?e=16==b.ug?e<<8:c&7?e<<4:(e&15)<<8:c&7&&(e>>=4));return e} +function tv(a,b){var c=a.gb*a.Wa,d=b/c|0;return dg)break;e|=g<=f)break;e+=String.fromCharCode(f)}return e}function ov(a,b,c,d,e,f){a||(a={sector:d,length:e,data:[],pattern:f});a.Jl=b;a.Kl=c;a.hd=a.Oc=0;a.Oa=!1;return a} +function pv(a,b){b="action=open&volume="+b+("&mode="+a.mode);b+="&chs="+a.sb+":"+a.gb+":"+a.Wa+":"+a.Na;b+="&machine="+mv(a.controller);b+="&user="+nv(a.controller);return Ga()+"/api/v1/disk?"+b} +function Rv(a,b,c,d,e,f,g){if(a.D){var h;h="action=read&volume="+a.G;h+="&chs="+a.sb+":"+a.gb+":"+a.Wa+":"+a.Na;h=h+("&addr="+b+":"+c+":"+d+":"+e)+("&machine="+mv(a.controller));h+="&user="+nv(a.controller);Fa(Ga()+"/api/v1/disk?"+h,null,f,function(h,m,p){h=[b,c,d,e,f,g];var k=!1,u=h[0],D=h[1],G=h[2],I=h[3];if(!p){m=JSON.parse(m);for(k=0;I--;){var J=a.seek(u,D,G,!0);if(!J)break;sv(J,m,k);k+=J.length;G++}k=h[4]}(h=h[5])&&h(p,k)})}else g&&g(-1,!1)} +function Sv(a,b,c,d,e,f,g){if(a.D){var h={};a.M=!0;h.action="write";h.volume=a.G;h.chs=a.sb+":"+a.gb+":"+a.Wa+":"+a.Na;h.addr=b+":"+c+":"+d+":"+e;h.machine=mv(a.controller);h.user=nv(a.controller);h.data=JSON.stringify(f);Fa(Ga()+"/api/v1/disk",h,g,function(f,h,p){var k=[b,c,d,e,g];f=k[0];h=k[1];var m=k[2],D=k[3],k=k[4];a.M=!1;if(0<=f&&fb&&(b=0);2E3>2,e=Array(d),f=0;f>2,e=a.data;a=a.pattern;for(var f=0;f>8&255;c[d++]=g>>16&255;c[d++]=g>>24&255}return c}l.read=function(a,b){var c=-1;if(a&&b>2,c=(d>((b&3)<<3)&255;return c}; +l.write=function(a,b,c){if(this.Re)return!1;if(b>2;b=(b&3)<<3;for(var g=d.length;g<=f;g++)d[g]=e;a.Oc?f=a.hd+a.Oc&&(a.Oc+=f-(a.hd+a.Oc)+1):(a.hd=f,a.Oc=1);d[f]=d[f]&~(255<=this.A.length||k>=this.A[h].length||m>=this.A[h][k].length){c="sector (CHS="+h+":"+k+":"+m+") out of range ("+ +b+" changes applied)";b=-1;break}if(this.Re){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.A[h][k][m]){for(k=h.data.length;kb?-2!=b&&this.Da("Unable to restore disk '"+this.kd+": "+c):rv(this);return b}; +l.toJSON=function(){var a;a=0;for(var b;b=tv(this,a++);)Xv(b);a=JSON.stringify(this.A,function(a,b){if("file"!=a)return b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")}; +function Xv(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}var jv=0;function Qv(a,b,c,d,e,f){this.ua=a;this.dc=c;this.Vg=d;this.$i=e;this.ie=f}function Iv(a,b,c){var d;c=c||2;var e=b&511,f=tv(a.ua,a.ie[b>>9]);if(f){if(e+c<=f.length)return uv(a.ua,f,e,c);for(e=d=0;c--;)d|=Iv(a,b++,1)<=e.ei&&a<=e.Hk){d=a-=e.ei;var f,g;for(g in e.he){var h=e.he[g],k=a-h[0];if(!k){c=this.Of+"!"+h[1];break}b&&0g.ua.restore(D)&&(h=!1);h&&g.ua&&void 0!==g.Va&&(g.hb=g.ua.seek(g.Ib,g.bb,g.jb));h||(e=!1)}a.G=b[c++]||0;a.cc=b[c]||ow;return e} +function iw(a){var b=0,c=[];c[b++]=a.Ya;c[b++]=0;c[b++]=a.ga;c[b++]=a.F;c[b++]=a.D;c[b++]=a.C;c[b++]=a.I;for(var d=b++,e=0,f=[],g=0;gmw(a,e,b,c,!1,d);){if(!window.confirm("Click OK to reload the original disk and discard any changes."))return!1;var f=a,g=c,h;for(h=0;ha.sb||f[1]>a.gb)&&(this.Da('Diskette "'+c+'" too large for drive '+String.fromCharCode(65+a.Ya)),b=null);b?(a.ua=b,a.Yk=c,a.ye=d,rw(this,d)||fw(this,c,d),nw(this,c,d,b),f=b.info(),this.G|=sw,a.Se||this.Da('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.Ya),a.oe||e),a.tg=f[0],a.xf=f[1],a.yf=f[2],this.oa&&this.oa.dd()):a.Ne=!1;a.oe&&(a.oe=!1,--this.K||Jb(this));aw(this,a.Ya);a.Se&&(a.Se(),a.Se=null)}; +function fw(a,b,c,d){if((a=a.ma.listDisks)&&a.options){for(var e=0;e'+a+"");c.innerHTML=a}}l.To=function(a){for(var b=0;b=this.C&&(this.ga&=~(vw|ww),this.D=this.C=0);return c}; +l.Rn=function(a,b,c){r(this)&&t(this,a,b,c,"DATA["+this.C+"]");this.C=yw[a].Kd){b=!1;this.D=0;a=zw(this);var d,e,f,g,h=a&xw;switch(h){case Aw:zw(this);zw(this);Bw(this);break;case Cw:c=zw(this);this.Ya=c&3;d=this.A[this.Ya];Bw(this);Dw(this,(d.tb&Ew)>>>24);break;case Fw:case Gw:c=zw(this);b=c>>2&1;this.Ya=c&3;d=this.A[this.Ya];d.bb=b;c=d.Ib=zw(this);e=zw(this);f=d.jb=zw(this);g=zw(this);d.yb=128<>2&1;this.Ya= +c&3;d=this.A[this.Ya];c=d.Ib;e=d.bb=b;f=d.jb=1;g=0;d.tb=qw;d.ua&&(d.hb=d.ua.seek(d.Ib,d.bb,d.jb))?g=d.hb.length>>8:d.tb=Hw|Iw;Kw(this,d,a,b,c,e,f,g);b=!0;break;case Rw:c=zw(this);b=c>>2&1;this.Ya=c&3;d=this.A[this.Ya];c=d.Ib;e=d.bb=b;f=1;g=zw(this);d.yb=128<>2&1,c=zw(this),d.Ib+=c-d.Vd,0>d.Ib&&(d.Ib=0),d.Ib>=d.sb&&(d.Ib=d.sb-1),d.Vd=c,d.tb=Mw,d.Ib||(d.tb|=Nw),Bw(this),b=!0}0>>8);Dw(a,(b.tb&Uw)>>>16);var k=0;if(e!=b.Ib||f!=b.bb)k=g=1;c&Vw&&(f^=k,d||(k=0));Dw(a,e+k);Dw(a,f);Dw(a,g);Dw(a,h)}function zw(a){var b=a.F[a.D];a.D++;return b}function Bw(a){a.D=a.C=0}function Dw(a,b){a.F[a.C++]=b}l.gl=function(a,b,c){void 0===b||0>b?this.xe(a,c):c(-1,!1)};l.hl=function(a,b){return void 0!==b&&0<=b?Ww(a,b):-1}; +l.yl=function(a,b){if(void 0!==b&&0<=b)a:if(a.tb)a=-1;else{a.Yc[a.Je++]=b;if(a.Je==a.Yc.length){a.Ib=a.Yc[0];a.bb=a.Yc[1];a.jb=a.Yc[2];a.yb=128<Ww(a,a.Wi)){a=-1;break a}a.gg++}a.gg>=a.Wd&&(b=-1);a=b}else a=-1;return a};l.xe=function(a,b){var c=-1,d=null,e=0;if(!a.tb&&a.ua){do{if(a.hb&&(e=a.Va,0<=(c=a.ua.read(a.hb,a.Va++)))){d=a.hb;break}a.hb=a.ua.seek(a.Ib,a.bb,a.jb);if(!a.hb){a.tb=Xw|Iw;break}a.Va=0;Yw(a)}while(1)}b(c,!1,d,e)}; +function Ww(a,b){if(a.tb||!a.ua)return-1;do{if(a.hb&&a.ua.write(a.hb,a.Va++,b))break;a.hb=a.ua.seek(a.Ib,a.bb,a.jb);if(!a.hb){a.tb=Zw|Iw;b=-1;break}a.Va=0;Yw(a)}while(1);return b}function Yw(a){a.jb++;a.jb>=a.yf+1&&(a.jb=1,a.bb++,a.bb>=a.xf&&(a.bb=0,a.Ib++))}var lw="Floppy Drive",tw=4,uw=8,ww=16,vw=64,jw=128,Aw=3,Cw=4,Fw=5,Gw=6,Lw=7,Ow=8,Qw=10,Rw=13,Sw=15,xw=31,Vw=128,qw=0,Hw=8,Mw=32,Iw=64,kw=192,Pw=255,Jw=512,Xw=1024,Zw=8192,Tw=65280,Uw=16711680,Nw=268435456,Ew=-16777216,sw=128,ow=0;aa={}; +var yw={3:{Kd:3,Xd:0,name:aa.Zp},4:{Kd:2,Xd:1,name:aa.Xp},5:{Kd:9,Xd:7,name:aa.eq},6:{Kd:9,Xd:7,name:aa.Tp},7:{Kd:2,Xd:0,name:aa.Vp},8:{Kd:1,Xd:2,name:aa.Yp},10:{Kd:2,Xd:7,name:aa.Up},13:{Kd:6,Xd:7,name:aa.Pp},15:{Kd:3,Xd:0,name:aa.Wp}},dw={1009:Yv.prototype.lm,1012:Yv.prototype.nm,1013:Yv.prototype.km,1015:Yv.prototype.mm},ew={1010:Yv.prototype.Sn,1013:Yv.prototype.Rn,1015:Yv.prototype.Qn}; +Xa(function(){for(var a=vb(document,"pcx86","fdc"),b=0;bk.ua.restore(g)&&(D=!1),D&&void 0!==k.Va&&(k.hb=k.ua.seek(k.Pd,k.bb,k.jb+k.fg)));D||(e=!1);null!=a.P&&1>=d&&(a.P|=(f.type&3)<<(1-d<< +1))}0<=a.Ya&&(a.B=a.A[a.Ya]);return e} +function hx(a){var b=0,c=[];a.M?(c[b++]=a.I,c[b++]=a.va,c[b++]=a.J,c[b++]=a.fa,c[b++]=a.ea,c[b++]=a.ba,c[b++]=a.U,c[b++]=a.ga,c[b++]=a.ha,c[b++]=[a.L,a.Ya]):(c[b++]=a.P,c[b++]=a.ga,c[b++]=a.F,c[b++]=a.D,c[b++]=a.C,c[b++]=a.ra,c[b++]=a.pa,c[b++]=a.qa,c[b++]=a.N);for(var d=0,e=[],f=0;f=this.C&&(this.D=this.C=0,this.ga&=~(qx|rx|sx));return c};l.po=function(a,b,c){t(this,a,b,c,"DATA["+this.C+"]");this.C=a&&(this.ga|=qx,this.ga&=~ux,vx(this))};l.Om=function(a,b){var c=this.ga;t(this,a,null,b,"STATUS",c);this.D=a.B.Na?(a.ga=xx,a.xe(a.B,function(b){0<=b?(yx(a),a.V&&a.V.da==ul&&(a.ga=0),a.ga=a.ga|ix|zx|Ax):(a.ga=Bx,a.I=Cx)},!1)):a.ga=ix|zx));return d}l.kl=function(a,b){return wx(this,a,b)|wx(this,a,b)<<8}; +function Dx(a,b,c,d){if(a.B&&a.B.yb>=a.B.Na)if(0>Ex(a.B,c))a.ga=Bx,a.I=Cx;else if(1==a.B.Va||a.B.Va==a.B.Na)r(a,1048832)&&t(a,b,c,d,"DATA["+a.B.Va+"]"),1=a.B.Na&&(a.ga|=Ax))}l.yn=function(a,b,c){Dx(this,a,b&255,c);Dx(this,a,b>>8&255,c)};l.Ul=function(a,b){var c=this.I;t(this,a,null,b,"ERROR",c);return c};l.Dn=function(a,b,c){t(this,a,b,c,"WPREC");this.va=b};l.Wl=function(a,b){var c=this.J;t(this,a,null,b,"SECCNT",c);return c}; +l.Bn=function(a,b,c){t(this,a,b,c,"SECCNT");this.J=b};l.Xl=function(a,b){var c=this.fa;t(this,a,null,b,"SECNUM",c);return c};l.Cn=function(a,b,c){t(this,a,b,c,"SECNUM");this.fa=b};l.Sl=function(a,b){var c=this.ea;t(this,a,null,b,"CYLLO",c);return c};l.xn=function(a,b,c){t(this,a,b,c,"CYLLO");this.ea=b};l.Rl=function(a,b){var c=this.ba;t(this,a,null,b,"CYLHI",c);return c};l.wn=function(a,b,c){t(this,a,b,c,"CYLHI");this.ba=b};l.Tl=function(a,b){var c=this.U;t(this,a,null,b,"DRVHD",c);return c}; +l.zn=function(a,b,c){t(this,a,b,c,"DRVHD");this.U=b;this.ga=this.A[this.U&Fx?1:0]?this.ga|ix|zx:this.ga&~ix};l.Yl=function(a,b){var c=this.ga;t(this,a,null,b,"STATUS",c);this.ga&ix&&(this.ga&=~xx);return c};l.vn=function(a,b,c){t(this,a,b,c,"COMMAND");this.ha=b;this.V&&gh(this.V,14);Gx(this)};l.An=function(a,b,c){t(this,a,b,c,"FDR");this.L&Hx&&!(b&Hx)&&(this.I=Ix);this.L=b}; +function Gx(a){var b=!1,c=a.ha,d=a.U&Fx?1:0,e=a.U&Jx,f=a.ea|(a.ba&Kx)<<8,g=a.fa,h=a.J||256;a.Ya=-1;a.B=null;a.I=Lx;a.ga=ix|zx;var k=a.A[d];k?(k.Pd=f,k.bb=e,k.jb=g,k.yb=h*k.Na,c=c>=Mx?c:c&Nx,k.hb=null,k.Va=0,k.errorCode=0,a.Ya=d,a.B=k):c=-1;switch(c&Nx){case Ox:b=!0;break;case Px:a.ga=xx;a.xe(k,function(b){0<=b&&a.V?(yx(a),a.ga=ix|zx|Ax):(a.ga=Bx,a.I=Cx)},!1);break;case Qx:a.ga=Ax;break;case Rx:b=!0;break;case Sx:b=!0;break;case Mx:a.I=Ix;b=!0;break;case Tx:k.gb=e+1,k.Wa=h,b=!0}b&&yx(a)} +function yx(a){!a.V||a.L&Ux||ih(a.V,14,120)} +function vx(a){a.D=0;var b=Vx(a),c=Vx(a),d=c&32,e=d>>5,f=c&31,g=Vx(a),h=Vx(a),k=g<<2&768|h,m=g&63,p=Vx(a),v=Vx(a),u=a.A[e];u&&(u.Pd=k,u.bb=f,u.jb=m,u.yb=p*u.Na);switch(b){case Wx:Xx(a,u?u.errorCode:Yx);Zx(a,c);Zx(a,g);Zx(a,h);Zx(a,$x|d);b=-1;break;case tx:for(c=0;0<=(b=Vx(a));)u&&cb?this.xe(a,c):c(-1,!1)};l.jl=function(a,b){return void 0!==b&&0<=b?Ex(a,b):-1}; +l.zl=function(a,b){void 0!==b&&0<=b?(a.VaEx(a,a.Wi)){a=-1;break a}a.gg++}a.gg>=a.Wd&&(b=-1);a=b}else a=-1;return a}; +function hy(a,b,c){b.errorCode=Yx;if(b.ua&&(b.hb=null,a.V)){b.errorCode=kx;Mn(a.V,3,a,"dmaRead",b);Dn(a.V,3,function(a){a||b.errorCode!=kx||(b.errorCode=Yx);c(b.errorCode?ay:$x)});return}c(b.errorCode?ay:$x)}function jy(a,b,c){b.errorCode=Yx;if(b.ua&&(b.hb=null,a.V)){b.errorCode=kx;Mn(a.V,3,a,"dmaWrite",b);Dn(a.V,3,function(a){a||(b.errorCode==kx&&(b.errorCode=Yx),b.errorCode==my&&(b.errorCode=kx));c(b.errorCode?ay:$x)});return}c(b.errorCode?ay:$x)} +function ly(a,b,c){b.errorCode=Yx;b.He&&b.He.length==b.yb||(b.He=Array(b.yb));b.Va=0;a.V?(b.errorCode=kx,Mn(a.V,3,a,"dmaWriteBuffer",b),Dn(a.V,3,function(a){a||b.errorCode!=kx||(b.errorCode=Yx);c(b.errorCode?ay:$x)})):c(b.errorCode?ay:$x)} +l.xe=function(a,b,c){var d=-1,e=null,f=0;if(a.errorCode)return b&&b(d,!1,e,f),d;var g=!1!==c?1:0;if(a.hb&&(f=a.Va,d=a.ua.read(a.hb,a.Va),a.Va+=g,0<=d))return e=a.hb,b&&b(d,!1,e,f),d;if(b){if(a.ua)return a.ua.seek(a.Pd,a.bb,a.jb+a.fg,!1,function(c,k){(a.hb=c)?(e=c,f=a.Va=0,ny(a),d=a.ua.read(a.hb,a.Va),a.Va+=g):a.errorCode=my;b(d,k,e,f)}),d;a.errorCode=my;b(d,!1,e,f)}return d}; +function Ex(a,b){if(a.errorCode)return-1;do{if(a.hb&&a.ua.write(a.hb,a.Va++,b))break;a.ua&&a.ua.seek(a.Pd,a.bb,a.jb+a.fg,!0,function(b){a.hb=b});if(!a.hb){a.errorCode=my;b=-1;break}a.Va=0;ny(a)}while(1);return b}function ny(a){a.jb++;var b=1-a.fg;a.jb>=a.Wa+b&&(a.jb=b,a.bb++,a.bb>=a.gb&&(a.bb=0,a.Pd++))}l.Pm=function(){var a=this.H.L&255;!(this.H.D>>8)&&128>8||!this.V)||(a=!(this.V.jc[0].ud&64));return a?!0:!1}; +var lx="Hard Drive",ox=["XTC","ATC","COMPAQ"],mx=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966, +6],19:[1023,8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}],ex=496,Ix=1,Lx=0,Cx=16,Kx=3,Jx=15,Fx=16,Bx=1,Ax=8,zx=16,ix=64,xx=128,Ox=16,Px=32,Qx=48,Rx=64,Sx= +112,Mx=144,Tx=145,Nx=240,Ux=2,Hx=4,$x=0,ay=2,dy=0,ey=1,Wx=3,fy=5,gy=8,iy=10,tx=12,ky=15,by=224,cy=228,kx=0,Yx=4,my=20,jx=0,ux=1,qx=2,rx=4,sx=8,px=32,bx={800:$w.prototype.Nm,801:$w.prototype.Om,802:$w.prototype.Mm},ax={496:$w.prototype.kl,497:$w.prototype.Ul,498:$w.prototype.Wl,499:$w.prototype.Xl,500:$w.prototype.Sl,501:$w.prototype.Rl,502:$w.prototype.Tl,503:$w.prototype.Yl},dx={800:$w.prototype.po,801:$w.prototype.so,802:$w.prototype.ro,803:$w.prototype.qo,807:$w.prototype.fi,811:$w.prototype.fi, +815:$w.prototype.fi},cx={496:$w.prototype.yn,497:$w.prototype.Dn,498:$w.prototype.Bn,499:$w.prototype.Cn,500:$w.prototype.xn,501:$w.prototype.wn,502:$w.prototype.zn,503:$w.prototype.vn,1014:$w.prototype.An};Xa(function(){for(var a=vb(document,"pcx86","hdc"),b=0;bthis.A&&this.C.length&&(this.A=0);if(0>this.A||a!=this.C[this.A])this.C.splice(0,0,a),this.A=0;this.A--}else this.fa?a="end":a=this.C[this.A+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(wa(a.substring(d,f))),d=f+1}}return b}; +function py(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a<<32-b>>32-b:(b=Math.pow(2,b-1),a>=b?(d=a%b,(a/b|0)&1&&(d-=b)):a<-b&&(d=a%b,((-a-1)/b|0)&1?d&&(d+=b):d||(d-=b)));a!=d&&(a=d);return a} +function qy(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "^/":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= +f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case ",,":e=py(e,18,!0)*Math.pow(2,18)+py(f,18,!0);break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=py(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=ry(a,b,0,b.length,a.D,c);void 0!==d&&e&&zy(a,null,d)}return d} +function Ay(a,b){var c,d=a.ha[0],e=a.ha[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=yy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?xy(a,g):"undefined")}if(a.Ea.length)for(d=a.Ea[0],e=a.Ea[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Ok(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.ba-a.ka}if(null== +e)break;b=b.replace(d[0],e.toString())}return b}function ty(a,b){for(;b;){switch(b&3){case 1:a=-py(a);break;case 2:a|=-1;break;case 3:for(var c=35;0<=c&&!(a&Math.pow(2,c));)c--;a=35-c}b>>>=2}return a} +function sy(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.fh(b);if(0<=f)f=a.gh(f);else if(f=b,a.I[f]?f=a.I[f].value:(f=f.substr(0,6),f=a.I[f]&&a.I[f].value),null!=f){var h=a.I[b]&&a.I[b].Po;h&&(g?g.push(h):(g=yy(a,h,d),void 0!==g?f+=g:(d||a.O("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=ia(b,1c&&(d+=" '"+String.fromCharCode(c)+"'"));a.O((null!=b?b+": ":"")+d);return e}function By(a,b){var c=0;if(a.I){if(b)return zy(a,b,a.I[b]&&a.I[b].value);b=Object.keys(a.I);b.sort();for(var d=0;d=Math.abs(b)?5:11;b=ja(b,10,a);break;default:b=q(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +var vy={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},uy={",,":1,"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20}; +function Cy(a){oy.call(this,a);this.ra=4;this.la=5;this.wa=1048575;this.N=Dy(this,0,0);this.Ca=Dy(this,0,0);this.ea=Dy(this,0,0);this.F=[];this.B=this.V=this.L=[];Ey(this);this.xa=0;Fy(this);this.Fa={};Gy(this,a.messages);this.Ka=a.commands;var b=this;window?void 0===window.pcx86&&(window.pcx86=function(a){return Hy(b,a)}):void 0===global.pcx86&&(global.pcx86=function(a){return Hy(b,a)})}ba(Cy,oy);l=Cy.prototype; +l.uc=function(a,b,c,d){this.na=b;this.H=c;this.oa=a;this.cb=Vb(a,"FDC");this.Pa=Vb(a,"HDC");this.Kc=Vb(a,"FPU");this.G=Vb(a,"Mouse");(a=ud(a,"messages"))&&Gy(this,a);this.la=b.I>>2;this.wa=b.N;this.ab=new Sd(this.H,7,"DBG");this.pa=Iy;80186<=this.H.da&&(this.pa=Iy.slice(),this.pa[15]=Jy,80286<=this.H.da&&(this.pa[15]=Ky,80386<=this.H.da&&(this.ra=8)));xl(this,64,function(a){Ly(d,d.H.tc,a[0])});xl(this,4,function(a){if(a=a[0]){var b=sy(d,a);if(void 0===b)d.O("invalid selector: "+a);else if(a=My(d, +b,Ny),d.O("dumpSel("+oa(a?a.T:b)+"): %"+q(a?a.Ob:null,d.la)),a){var c,b=!1;if(a.type&4096)a.type&2048?(c="code"+(a.type&512?",readable":",execonly"),a.type&1024&&(c+=",conforming")):(c="data"+(a.type&512?",writable":",readonly"),a.type&1024&&(c+=",expdown")),a.type&256&&(c+=",accessed");else{var e=Oy[a.type];e&&(c=e[0],b=e[1])}!c||a.ob&32768||(c+=",not present");d.O((b?"seg="+oa(a.ta&65535)+" off="+oa(a.Sa):"base="+q(a.ta,d.la)+" limit="+Py(a.Sa))+" type="+na(a.type>>8)+" ("+c+") ext="+oa(a.ext&-65296)+ +" dpl="+na(a.rc))}}else d.O("no selector")});xl(this,134217728,function(a){var b;(a=a[0])&&(b=sy(d,a));if(void 0===b)d.O("invalid MCB");else for(d.O("dumpMCB("+oa(b)+")");b;){a=Dy(d,0,b);var c=d.ya(a,1),e=d.Wc(a,2),k=d.Wc(a,5);if(77!=c&&90!=c)break;d.O(Qy(0,b)+": '"+String.fromCharCode(c)+"' PID="+oa(e)+" LEN="+oa(k)+' "'+Ry(d,a,8)+'"');b+=1+k}});xl(this,128,function(a){Ly(d,d.H.aa,a[0],d.H.aa!==d.H.tc)});xl(this,8,function(a){a:{if(a=a[0]){var b=sy(d,a);if(void 0===b){d.O("invalid task selector: "+ +a);break a}a=My(d,b,Ny)}else a=d.H.ka;d.O("dumpTSS("+oa(a?a.T:b)+"): %"+q(a?a.ta:null,d.la));if(a){var b="",c=a.type&-513,e=256==c?4:8,k=256==c?Sy:Ty,m,p,v,u;for(u in k)m=k[u],p=a.ta+m,v=vg(d.H,p,2),2304==c&&(v|=vg(d.H,p+2,2)<<16),b&&(b+="\n"),b+=oa(m)+" "+va(u+":",11)+q(v,e);if(2304==c)for(u=0,m=v>>>16;mu;){p=a.ta+m;v=vg(d.H,p,2);p=2;c="";if(!p||4>=8;b+="\n"+oa(m)+" ports "+oa(u)+"-"+oa(u+15)+": "+(""+c);u+=16;m+=2}d.O(b)}}});this.J= +null;this.La=0;this.Ga=!1;Rf(this.H,48,this.Tm.bind(this));Rf(this.H,65,this.Um.bind(this));this.aa=null;Rf(this.H,104,this.Vm.bind(this));Jb(this)};function Uy(a,b,c,d,e,f){b=Ry(a,b);var g=My(a,d),g=g?g.Sa+1:0,h=(e?"_CODE":"_DATA")+q(c,2);f&&r(a,128)&&a.message(b+" "+(e?"code":"data")+"("+q(c,4)+")=#"+q(d,4)+" len "+q(g));e=Vy(a,b,c);e[b+h]=0;dq(a,b,c,d,0,null,g,e)} +function Wy(a,b,c,d){var e=a.Wc(b,2),f=a.Wc(b,2),g=Xy(a,b,4),h=Xy(a,b,4),k=Dy(a,Xy(a,b,4),a.Wc(b,2));b=Dy(a,Xy(a,b,4),a.Wc(b,2));b=Ry(a,b).toUpperCase();var k=Ry(a,k).toUpperCase(),m=(c?"_CODE":"_DATA")+q(e,2);d&&r(a,128)&&a.message((b==k?"":b+"!")+k+" "+(c?"code":"data")+"("+q(e,4)+")="+q(f,4)+":"+q(g)+" len "+q(h));c=Vy(a,k,e);c[k+m]=g;dq(a,k,e,f,g,null,h,c)}function Yy(a,b,c){c=Ry(a,c).toUpperCase();Zy(a,c,b)} +l.Tm=function(){var a=this.H;if(null!=this.J&&2752554==a.D){var b=a.L&65535,c=a.K&65535,d=Dy(this,y(a)+12,a.U.T);switch(Xy(this,d)){case 336:Wy(this,Dy(this,a.G,b),!c,!!this.J)}}return!0}; +l.Um=function(a){var b=this.H,c=b.D&65535,d=b.G&65535,e=b.I&65535,f=b.L&65535,g=b.K&65535,h=b.J&65535,k=b.pa.T;if(null==this.J)return 79==c&&Sf(b,a,function(a){return function(){62342!=(b.D&65535)?(b.D=b.D&-65536|62342,Nb(a,"INT 0x41 handling enabled",128),a.J=!0):(Nb(a,"INT 0x41 monitoring enabled",128),a.J=!1)}}(this)),!0;switch(c){case 79:this.J&&(b.D=b.D&-65536|62342,Nb(this,"INT 0x41 handling enabled",128));break;case 80:Uy(this,Dy(this,h,k),d+1,e,!(g&1),!!this.J);break;case 82:Zy(this,null, +d);break;case 127:this.J&&(b.D=b.D&-65536|(this.Ga?0:1));break;case 131:this.J&&(a=Dy(this,b.L,e),this.La++?(this.O("TRAPFAULT failed"),$y(this,this.B,a,!0,!0),this.La=0,this.Ub()):(this.O("INT 0x41 TRAPFAULT: fault="+oa(d)+" error="+q(b.K,8,!0)+" addr="+az(a)),this.td(this.B,a,!0),Fy(this,!0)));break;case 141:this.J&&(b.D=b.D&-65536|1);break;case 336:Wy(this,Dy(this,b.G,f),!g,!!this.J);break;case 338:Yy(this,d,Dy(this,b.J,f))}this.Ga=!1;return!this.J}; +l.Vm=function(a){var b=this.H,c=b.D&255,d=b.D>>8&255,e=b.G&65535,f=b.I&65535,g=b.L&65535,h=b.J&65535,k=b.pa.T;if(null==this.aa){if(67==d){if(609437257==b.ia((b.ba.T<<4)+10)||1111835735==b.ia((b.ba.T<<4)+95))return!0;Sf(b,a,function(a){return function(){62342!=(b.D&65535)?(b.D=b.D&-65536|62342,Nb(a,"INT 0x68 handling enabled",128),a.J=a.aa=!0):(Nb(a,"INT 0x68 monitoring enabled",128),a.aa=!1)}}(this))}return!0}switch(d){case 67:this.aa&&(b.D=b.D&-65536|62342);break;case 68:this.aa&&(a=Ud(b.ba,this.vl.bind(this)))&& +(b.J=a[0],ne(b,a[1]));break;case 72:Zy(this,null,e);break;case 80:32==c?Uy(this,Dy(this,h,k),0,f,!0,!!this.aa):128>c?Uy(this,Dy(this,h,k),e+1,c&64?g:f,!(c&1),!!this.aa):Wy(this,Dy(this,h,k),!(c&1),!!this.aa),this.aa&&(b.D=b.D&-256|1)}return!this.aa};l.vl=function(){var a=this.H;5==(a.D&255)&&(a.I=a.K=0,a.D=a.D&-256|1);return!1}; +l.Eb=function(a,b,c){var d=this;switch(b){case "debugInput":return this.va=this.ma[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Hy(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.A>>0)+1;a.ob=f;a.type=g;a.ext=k;a.Ob=d;Td(a,!0,!0,!1)}}return a}l.Wb=function(a,b,c){var d=a&&a.za;if(null==d&&(d=-1,a)){var e=My(this,a.T,a.type);e&&(b=a.Ja||0,c=c||1,d=e=-1===e.Ob||e.fd&&(b>>>0)+c>e.Nb||!e.fd&&(b>>>0)+c<=e.Nb?e.ta+b|0:-1,a.za=d)}return d};l.ya=function(a,b){var c=255,d=this.Wb(a,!1,1);-1!==d&&(c=vg(this.H,d,1,a.type==ez)|0,b&&fz(this,a,b));return c}; +l.nb=function(a,b){return a.Jb?Xy(this,a,b?4:0):this.Wc(a,b?2:0)};l.Wc=function(a,b){var c=65535,d=this.Wb(a,!1,2);-1!==d&&(c=vg(this.H,d,2,a.type==ez)|0,b&&fz(this,a,b));return c};function Xy(a,b,c){var d=-1,e=a.Wb(b,!1,4);-1!==e&&(d=vg(a.H,e,4,b.type==ez)|0,c&&fz(a,b,c));return d}l.ub=function(a,b,c,d){var e=this.Wb(a,!0,1);if(-1!==e){if(a.type!=ez)this.H.ub(e,b);else{var f=this.na;f.aa[(e&f.C)>>>f.A].cf(e&f.D,b&255,e)}c&&fz(this,a,c);d||zd(this.H,!0)}}; +l.fl=function(a,b,c){var d=this.Wb(a,!0,2);-1!==d&&(a.type!=ez?this.H.ib(d,b):Fc(this.na,d,b),c&&fz(this,a,c),zd(this.H,!0))};function Dy(a,b,c,d,e,f,g){return gz(a,{},b,c,d,e,f,g)}function gz(a,b,c,d,e,f,g,h){b.Ja=c||0;b.T=d;b.za=e;b.type=f||(cz(a)?Ny:dz);b.Jb=null!=g?g:!(!a.H||4!=a.H.ba.X);b.gc=null!=h?h:!(!a.H||4!=a.H.ba.Mc);b.yd=!1;return b}function hz(a){return[a.Ja,a.T,a.za,a.yd,a.Jb,a.gc,a.Ie,a.ah]}function iz(a){return{Ja:a[0],T:a[1],za:a[2],yd:a[3],Jb:a[4],gc:a[5],Ie:a[6],ah:a[7]}} +function jz(a,b,c){if(null!=b.T&&(a=My(a,b.T,b.type))){var d=b.Ja&a.wa;if(!a.fd){if(d>>>0>=a.Nb)return!1}else if(d>>>0f?null!=h?(g=yy(a,b,void 0),f=null):(f=yy(a,b,void 0),null==f&&(g=null)):(h=yy(a,b.substring(0,f),void 0),g=yy(a,b.substring(f+1),void 0),f=null)}null!=g&&(e=Dy(a,g,h,f,c),d||jz(a,e,!0)||(a.O("invalid offset: "+az(e)),e=null));return e}function nz(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.pl=a.Bg(b.Xk=c[2]))}l.Ok=function(a,b){var c=kz(this,b);return a.replace("["+b+"]",c?q(this.nb(c),c.Jb?8:4):"undefined")}; +function fz(a,b,c){c=c||1;null!=b.za&&(b.za+=c);null!=b.T&&(b.Ja+=c,jz(a,b)||(b.Ja=0,b.za=null))}function Qy(a,b,c){return null!=b?q(b,4)+":"+q(a,a&-65536||c?8:4):q(a)}function az(a){var b;switch(a.type){case dz:case oz:b="&";break;case Ny:b="#";break;case mz:b="%";break;case ez:b="%%";break;default:b=a.T?"":"%"}return a.type>=mz||null==a.T?b+q(a.za):b+Qy(a.Ja,a.T,a.gc)} +function Ry(a,b,c){var d="";for(c=c||256;d.length>>a.H.lb;g=1}a.O("blockid "+(d?"linear ":"physical")+" blockaddr used size type");a.O("-------- --------- ---------- ------ ------ ----");c=-1;for(var h=0;g--;)(d=b[f])&&d.type==Yc&&(d=kd(a.H,e,!1,!0)),d.type==c?h++||a.O("..."):(c=d.type,h=oc[c],c==$c&&(d=d.vd,h+=" -> "+oc[d.type]),d&&a.O(q(d.id,8)+" %"+q(f<c&&(c=Ca(qz,a.substr(b,2))));return c}; +function rz(a,b){var c=0,d=a.gh(b);if(null!=d)switch(b){case sz:case tz:case uz:case vz:case wz:case xz:case yz:case zz:c=2;break;case Az:case Bz:case Cz:case Dz:case Ez:case Fz:case Gz:case Hz:case Iz:case Jz+Kz:case Jz+Lz:case Jz+Mz:case Jz+Nz:case Jz+Oz:case Jz+Pz:c=4;break;case Qz:case Rz:case Sz:case Tz:case Uz:case Vz:case Wz:case Xz:case Yz:case Zz:case $z:case aA:case bA:c=8;break;case cA:c=a.ra}return c?q(d,c):"??"} +l.gh=function(a){var b;if(0<=a){var c=this.H;switch(a){case sz:b=c.D&255;break;case tz:b=c.I&255;break;case uz:b=c.L&255;break;case vz:b=c.G&255;break;case wz:b=c.D>>8&255;break;case xz:b=c.I>>8&255;break;case yz:b=c.L>>8&255;break;case zz:b=c.G>>8&255;break;case Az:b=c.D&65535;break;case Bz:b=c.I&65535;break;case Cz:b=c.L&65535;break;case Dz:b=c.G&65535;break;case Ez:b=y(c)&65535;break;case Fz:b=c.N&65535;break;case Gz:b=c.K&65535;break;case Hz:b=c.J&65535;break;case Iz:b=z(c)&65535;break;case cA:b= +qe(c);break;case Jz+Kz:b=c.pa.T;break;case Jz+Lz:b=c.ba.T;break;case Jz+Mz:b=c.U.T;break;case Jz+Nz:b=c.Fa.T;break;default:if(80286==this.H.da)a==Yz&&(b=c.ra);else if(80386<=this.H.da)switch(a){case Qz:b=c.D;break;case Rz:b=c.I;break;case Sz:b=c.L;break;case Tz:b=c.G;break;case Uz:b=y(c);break;case Vz:b=c.N;break;case Wz:b=c.K;break;case Xz:b=c.J;break;case Yz:b=c.ra;break;case Zz:b=c.Ng;break;case $z:b=c.qd;break;case aA:b=c.Uc;break;case Jz+Oz:b=c.Ka.T;break;case Jz+Pz:b=c.La.T;break;case bA:b= +z(c)}}}return b}; +function dA(a,b){b=Ay(a,b)||b;for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.fh(b,c+1),0<=e&&(b=b.substr(0,c)+rz(a,e)+b.substr(c+1+qz[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ia(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=kz(a,e))?(d=e+' "'+Ry(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=kz(a,e))?(fz(a,d), +d=e+' "'+Ry(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+az(Dy(this,z(this.H),this.H.ba.T))+" (%"+q(this.H.ea)+")");this.fc&536870912?this.Ba.push(a):this.Aa&&a==this.Aa||(this.Aa=a,this.fc&-2147483648&&(this.Ub(),a+=" (cpu halted)"),this.O(a),this.H&&(a=this.H,a.Z.Rf=!0,zd(a)))}; +function Wk(a,b,c,d){var e,f;if(!d&&(d=r(a,1)&&0>eA.indexOf(b),!d)){var g=fA[b];g&&(d=r(a,g)?!0:524288==g&&r(a,g=1048576))}d&&(e=a.H.D>>8&255,f=a.H.L&255,33==b&&11==e||524288==g&&128<=f||1048576==g&&128>f)&&(d=!1);d&&((g=(g=Sb[b])&&g[e]||"")&&(g=" "+dA(a,g)),a.message("INT "+na(b)+": AH="+na(e)+" at "+Qy(c-2-a.H.ba.ta,a.H.ba.T)+g));return d} +function Ob(a,b,c,d,e,f,g,h){h|=256;if(null==e||(a.fc&h)==h)h=null,null!=e&&(h=a.H.ba.T,e-=a.H.ba.ta),a.message(b.Ce+"."+(null!=d?"outPort":"inPort")+"("+oa(c)+","+(f?f:"unknown")+(null!=d?","+na(d):"")+")"+(null!=g?": "+na(g):"")+(null!=e?" at "+Qy(e,h):""))}l.hh=function(){this.O("Type ? for help with PCx86 Debugger commands");gA(this);if(this.Ka){var a=this.Ka;this.Ka=null;Hy(this,a)}}; +function Fy(a,b){var c;if(Jg(a)){if(!a.U||!a.U.length){a.U=Array(hA);for(c=0;c>>g.lb].td(f&g.Fb,a==this.L);h&&nc(g)}}e&&(a.push(b),c?(null!=b.za&&(b.T=null),b.yd=!0):(d||oA(this,a,a.length-1,"set"),Fy(this)));return e}; +function $y(a,b,c,d,e){for(var f=!1,g=pA(a,a.Wb(c)),h=1;h>3&7,D=(3>(g>>6&3)?0:48)+u;(217==f||219==f)&&52<=D&&(D=u<<4|g&7);(u=xA[f])&&(v=u[D]);v&&(p=yA,k=v,m=k[0])}m>=p.length&&(g=a.ya(b,1),k=zA[m-p.length][g>>3&7],m=k[0]);p=p[m];u=k.length-1;v="";b.Jb&&(m==AA? +p="CWDE":m==BA?p="CDQ":m>=CA&&m<=DA&&(p+="D"));if(164<=f&&167>=f||170<=f&&175>=f)u=0,b.Jb&&"W"==p.slice(-1)&&(p=p.slice(0,-1)+"D");for(var f=-1,D=!0,G=1;G<=u;G++){var I,J;I="";J=k[G];if(void 0!==J){0>f&&(f=J>>EA);m==FA&&(f==GA?v="[%800]":f==HA&&(v="ES:["+(b.gc?"E":"")+"DI]"));var P=J&IA;if(P!=JA)if(P==KA)D=!1;else{var K=J&LA;if(K>=R)if(0>g&&(g=a.ya(b,1)),K>6,qa=g&7;if(3>jb){P=!p.indexOf("FI");if(!jb&&(!J.gc&&6==qa||J.gc&&5==qa))jb=2;else{if(J.gc)if(4!=qa)qa+= +8;else{var Z=K,db=jb,Oa=J,kb=Z.ya(Oa,1),eb=kb>>6,uc=kb>>3&7,kb=kb&7,lb="";if(db||5!=kb)lb=NA[kb+8];4!=uc&&(lb&&(lb+="+"),lb+=NA[uc+8],eb&&(lb+="*"+(1<>24),2)):Z+("+"+q(K,2))):2==jb&&(Z&&(Z+="+"),J.gc?(K=Xy(K,J,4),Z+=q(K)):(K=K.Wc(J,2),Z+=q(K,4)));Z="["+Z+"]";if(1==ka){K="";I&=IA;I==S&&(I=J.Jb?OA:T);switch(I){case PA:K="FAR";break;case U:K="BYTE";break;case T:if(P){K="INT16";break}K="WORD"; +break;case OA:K="DWORD";break;case QA:if(P){K="INT32";break}case RA:K="REAL32";break;case SA:if(P){K="INT64";break}case TA:K="REAL64";break;case UA:K="REAL80";break;case VA:K="BCD80"}K&&(Z=K+" "+Z)}}else Z=WA(K,qa,I,J);I=Z}else I=K==MA?WA(a,g&7,J,b):WA(a,g>>3&7,J,b);else if(K==XA)I="1";else if(K==V){I=a;P=J;K=b;J=" ";switch(P&IA){case U:P&W&&(J=q(I.ya(K,1),2));break;case YA:J=q(I.ya(K,1)<<24>>24,K.Jb?8:4);break;case S:if(K.Jb){J=q(Xy(I,K,4));break}case T:J=q(I.Wc(K,2),4);break;case PA:K=Dy(I,I.nb(K, +!0),I.Wc(K,2),null,K.type,K.Jb,K.gc);J=az(K);I=ZA(I,K);I[0]&&(J+=" ("+I[0]+")");break;default:J="imm("+oa(P)+")"}I=J}else K==$A?(b.gc?(I=8,J=Xy(a,b,4)):(I=4,J=a.Wc(b,2)),I="["+q(J,I)+"]"):K==aB?(I=P==U?a.ya(b,1)<<24>>24:a.nb(b,!0),J=b.Ja+I&(b.Jb?-1:65535),I=q(J,b.Jb?8:4),J=ZA(a,Dy(a,J,b.T)),J[0]&&(I+=" ("+J[0]+")")):K==X?I=P==bB?"ST":P==cB?"ST("+(g&7)+")":WA(a,(J&dB)>>8,J,b):K==eB?I=WA(a,(J&dB)>>8,fB,b):K==gB?I="DS:[SI]":K==hB&&(I="ES:[DI]");if(!I||!I.length){v="INVALID";break}0Pz||b>=Oz&&80386>a.H.da)return"??";b+=Jz}else if(e==kB)b+=Yz;else if(e==lB)b+=mB;else if(e==nB)b+=oB;else if(a=c&IA,a>=T&&(b=Az&&b<=Hz&&4a.H.da&&(d="\n"+d,c+=e,e="");c+="\n"+rB(a,a.H.ba,b)+" ";80386<=a.H.da&&(e+="\n",c+=rB(a,a.H.Ka,b)+" "+rB(a,a.H.La,b)+"\n");c+=sB(a,"LD",a.H.Gb.T,a.H.Gb.ta,a.H.Gb.ta+a.H.Gb.Sa)+" "+sB(a,"GD",null,a.H.Kb,a.H.Ic)+" "+sB(a,"ID", +null,a.H.Qb,a.H.ad)+" ";c=c+(d+" "+e)+qB(a,Yz);80386<=a.H.da&&(c+=qB(a,$z)+qB(a,aA))}else 80386<=a.H.da&&(c+=rB(a,a.H.Ka,b)+" "+rB(a,a.H.La,b)+" ");return c+=qB(a,cA)+pB(a,"V")+pB(a,"D")+pB(a,"I")+pB(a,"T")+pB(a,"S")+pB(a,"Z")+pB(a,"A")+pB(a,"P")+pB(a,"C")}l.ej=function(a,b){return a[0]>b[0]?1:a[0]>>0,p],I=ya(D,u,a.ej);0>I&&D.splice(-(I+1),0,u)}G&&(v.a=G.replace(/''/g,'"'))}a.F.push({Of:b,mn:c,T:d,Ja:e,za:f,$m:g,Jd:h,Oi:m})} +function Zy(a,b,c){for(var d=0;d>>0,f=a.Wb(b)>>>0,g=0;g>>0,p=h.za;null!=p&&(p>>>=0);var v=h.$m;48==k&&(k=40);if(k==b.T&&e>=m&&e=p&&fc?(a.O("out of data at address "+az(b)),p=!0):(a.ub(b,c,1,!0),m++)})})(a,g);zd(a.H, +!0);a.O(m+" bytes read at "+b)}else a.O("sector "+e+" request out of range");else a.O("drive "+d+" not loaded");else a.O("invalid drive: "+d)}else a.O("disk controller not present")}}else a.O("load commands:"),a.O("\tl [address] [drive #] [sector #] [# sectors]")} +function jA(a,b){var c;if(b&&"?"==b[1])a.O("register commands:"),a.O("\tr\tdump registers"),a.Kc&&a.O("\trfp\tdump floating-point registers"),a.O("\trp\tdump all registers"),a.O("\trx [#]\tset flag or register x to [#]");else{var d;null==c&&(c=!0);if(b&&1f;f++){var g=c,e=null;if(f=a.ra&&(h=null);switch(h){case "AL":a.H.D= +a.H.D&-256|g&255;break;case "AH":a.H.D=a.H.D&-65281|g<<8&255;break;case "AX":a.H.D=a.H.D&-65536|g&65535;break;case "BL":a.H.G=a.H.G&-256|g&255;break;case "BH":a.H.G=a.H.G&-65281|g<<8&255;break;case "BX":a.H.G=a.H.G&-65536|g&65535;break;case "CL":a.H.I=a.H.I&-256|g&255;break;case "CH":a.H.I=a.H.I&-65281|g<<8&255;break;case "CX":a.H.I=a.H.I&-65536|g&65535;break;case "DL":a.H.L=a.H.L&-256|g&255;break;case "DH":a.H.L=a.H.L&-65281|g<<8&255;break;case "DX":a.H.L=a.H.L&-65536|g&65535;break;case "SP":ge(a.H, +y(a.H)&-65536|g&65535);break;case "BP":a.H.N=a.H.N&-65536|g&65535;break;case "SI":a.H.K=a.H.K&-65536|g&65535;break;case "DI":a.H.J=a.H.J&-65536|g&65535;break;case "DS":me(a.H,g);break;case "ES":ne(a.H,g);break;case "SS":fe(a.H,g);break;case "CS":Yf(a.H,g);a.N=Dy(a,z(a.H),a.H.ba.T);break;case "IP":case "EIP":B(a.H,g);a.N=Dy(a,z(a.H),a.H.ba.T);break;case "PC":case "PS":re(a.H,g);break;case "C":g?jg(a.H):kg(a.H);break;case "P":g?(e=a.H,e.resultType&=-3,e.P|=4):(e=a.H,e.resultType&=-3,e.P&=-5);break; +case "A":g?rg(a.H):pg(a.H);break;case "Z":g?sg(a.H):qg(a.H);break;case "S":g?(e=a.H,e.resultType&=-17,e.P|=128):(e=a.H,e.resultType&=-17,e.P&=-129);break;case "I":g?(e=a.H,e.P|=512):(e=a.H,e.P&=-513);break;case "D":g?(e=a.H,e.P|=1024):(e=a.H,e.P&=-1025);break;case "V":g?lg(a.H):mg(a.H);break;default:var k=!0;if(80286<=a.H.da)switch(k=!1,h){case "MS":tg(a.H,g);break;case "TR":-1===a.H.ka.load(g)&&(f=!1);break;default:if(k=!0,80386<=a.H.da)switch(k=!1,h){case "EAX":a.H.D=g;break;case "EBX":a.H.G=g; +break;case "ECX":a.H.I=g;break;case "EDX":a.H.L=g;break;case "ESP":ge(a.H,g);break;case "EBP":a.H.N=g;break;case "ESI":a.H.K=g;break;case "EDI":a.H.J=g;break;case "FS":a.H.Ka.load(g);break;case "GS":a.H.La.load(g);break;case "CR0":a.H.ra=g;bk.call(a.H,g);break;case "CR2":a.H.qd=g;break;case "CR3":a.H.Uc=g;te.call(a.H,g);break;default:k=!0}}if(k){a.O("unknown register: "+e);return}}if(!f){a.O("invalid value: "+b);return}zd(a.H);a.O("updated registers:")}}a.O(tB(a,d));c&&(a.N=Dy(a,z(a.H),a.H.ba.T), +kA(a,az(a.N)))}}function BB(a,b){b=wa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.O(dA(a,c[2])):yy(a,b,!1)}function CB(a,b,c){for(var d=null,e=b.Ja,f=e,g=1;6>=g&&e;g++){if(2e&&(e=1);4096h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.O(m)}h[3]&&(g=h[3],f=null);f=sA(a,b,g,f);b.ah||d||d++;a.O(f);a.N=b;e-=b.za-k;c++}}} +l.Bg=function(a,b,c){if(b)if(a){0>this.A&&this.C.length&&(this.A=0);if(0>this.A||a!=this.C[this.A])this.C.splice(0,0,a),this.A=0;this.A--}else a=this.C[this.A+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(wa(a.substring(d,f))),d=f+1}}return b}; +function rA(a,b,c){var d=!0;try{if(!b.length||"end"==b)a.fa&&(a.O("ended assemble at "+az(a.ea)),a.N=a.ea,a.fa=!1),b="";else if(!c){var e=">> ";a.H.ra&1&&(e=a.H.P&131072?"-- ":"## ");a.O(e+b)}var f=b.charAt(0);if('"'==f||"'"==f)return!0;a.Aa=null;if(Ib(a)&&0p||"z">>20;Ra.Ti=a.H.Uc+Ra.Ik;Ra.pb=qf.aa[(Ra.Ti&qf.C)>>>qf.A];Ra.Aj=Ra.pb.Od(Ra.Ik);Ra.Jk=(Ug&4190208)>>>10;Ra.Ui=(Ra.Aj&-4096)+Ra.Jk;Ra.qb=qf.aa[(Ra.Ui&qf.C)>>>qf.A];Ra.Bj=Ra.qb.Od(Ra.Jk);Ra.rl=(Ra.Bj&-4096)+(Ug&4095)}if(pf=Ra){a.O("linear PDE addr PDE PTE addr PTE physical");a.O("--------- ---------- -------- ---------- -------- ----------");var Ae="%"+q(Ug),Ae=Ae+(" %%"+pz(pf.Ti,pf.Aj)),Ae= +Ae+(" %%"+pz(pf.Ui,pf.Bj,!0)),Ae=Ae+(" %%"+q(pf.rl));a.O(Ae)}else a.O("unsupported operation")}}else a.O("missing address")}else{if("d"==qa){if("disk"==db){Z[0]="l";Z[1]="json";yB(a,Z);break a}for(jb in Tb)if(Z[1]==jb){var Ht=a.Fa[jb];Ht?(Z.shift(),Z.shift(),Ht(Z)):a.O("no dump registered for "+db);break a}db||(qa=a.mb||"db")}if("dh"==qa){var It=db,Jt=Oa,Vg=kb,Vg=void 0===Vg?"history":Vg,Kt="",Lt=0,Oc=a.qa,nd=a.U;if(nd.length){var yc=+It||a.Ra,Wg=+Jt||10;isNaN(yc)?yc=Wg:Kt="more ";yc>nd.length&& +(a.O("note: only "+nd.length+" available"),yc=nd.length);Oc-=yc;0>Oc&&(null==nd[nd.length-1].T?(yc=Oc+yc,Oc=0):Oc+=nd.length);var Bm=[];"call"==Jt&&(Wg=1E5,Bm=["CALL"]);for(void 0!==It&&a.O(yc+" instructions earlier:");0=nd.length&&(Oc=0);a.Ra=yc; +Lt++;Wg--}}Lt||(a.O("no "+Kt+"history available"),a.Ra=void 0)}else if("di"==qa){Z.shift();var Cm=Z[0];if(Cm){var Yg=sy(a,Cm);if(void 0===Yg||0>Yg||255"abwd".indexOf(qa[1]))a.O("unrecognized dump command"); +else{a.mb=qa;var Be=kz(a,db);if(Be&&(null!=Be.T||null!=Be.za)){var rf=0;if(Oa){if("l"==Oa.charAt(0))Oa=Oa.substr(1)||kb,rf=sy(a,Oa);else{var St=kz(a,Oa);if(!St)break a;rf=St.Ja-Be.Ja+1}if(0>rf||65536>4||1,Fm=4==sf?16:a.D;"a"==qa[1]&&(Dm=!0,Em=25,Fm=160,Zg=Em*Fm);for(;Em--&&0gj?String.fromCharCode(gj):Dm?"":".";Zg--}Ce&&(Ce+="\n");Ce=Dm?Ce+fj:Ce+(db+" "+Hm+va(fj,fj.length+3*ah+1,!0))}Ce&&a.O(Ce.replace(/\s*$/,""));a.Ca=Be}}}}}break;case "e":if("else"==g[0])break;var hj=1,Tt=255,Ut=a.ya,Vt=a.ub;"ew"==g[0]&&(hj=2,Tt=65535,Ut=a.Wc,Vt=a.fl);var Wt=hj<<1,Xt=g[1];if(null==Xt)a.O("edit memory commands:"),a.O("\teb [a] [...] edit bytes at address a"),a.O("\tew [a] [...] edit words at address a");else{var ij=kz(a,Xt);if(ij)for(var jj= +2;jjMm;){for(var pd=null,yC=256;Wd.Ja>>>0>>0;){dh.Ja=a.nb(Wd,!0);if(null==Wd.za||!yC--)break;dh.T=Zt;if(pd=CB(a,dh))break;dh.T=a.nb(Wd);if(pd=CB(a,dh,!0)){Zt=a.nb(Wd,!0);0=this.D||(this.D=1);this.F=0;this.pa=a.busWidth||a.buswidth;this.A=ZB;this.P=null;this.L=this.ha=!1;this.ra=ud(this,"url")||"";this.va=(Math.random()+.1).toString(36).substr(2,12);this.B=$B(this);if(this.H=tb("CPU",this.id)){this.ca=tb("Debugger",this.id);this.C=[];for(b=null;b=Vb(this,"Video",b);)this.C.push(b);this.na=new hc({id:this.ee+".bus", +busWidth:this.pa},this.H,this.ca);var e,f=xb(this.id);this.K=(this.J=tb("Panel",this.id))&&this.J.ma.print;this.ka=this.Da;this.la=this.print;this.qa=this.O;this.K&&(this.ka=this.J.Da,this.la=this.J.print,this.qa=this.J.O);for(b=0;b\nLicense: GPL version 3 or later "); +for(b=0;bZB){if(d.load(this.P)){this.G=new Wf(this,"1.36.2",jC);this.G.load()&&(a!=iC&&kC(this,d)&&(a=lC),mC(this.G));this.G.set(hC,za("Y-m-d H:i:s"));nC(this.G);var e=this.A&&!this.L;if(a==iC||pb("Click OK to restore the previous PCx86 machine state.")){if(c=gC(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +g?(this.Da("Error: "+g),"unable to verify user"==g&&(La(oC,""),this.B=null)):this.O(f+": "+g),mC(d),d.load()?(c=gC(d),e=!0):c=!1))}e&&eC(this,c?d:null)}else a==lC&&d.clear()}else eC(this);delete this.P;delete this.V}e=xb(this.id);for(f=0;fa[1];a=a[2];if(d=this.ma.power)d.textContent="Shutdown";this.Z.bc=!0;this.H&&(pC(this, +this.H,b,c,a),this.H.je());this.fa&&(kC(this,b),b.clear());!c&&this.G&&(this.G.clear(),delete this.G);this.F=0;zb(this.ee,ud(this,"autoScript"))};function kC(a,b){if(!a.Z.Ae){if(pb("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.36.2"};d.url=a.ra;d.user=c;d.type="bug";d.data=b;Fa("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1} +function EB(a,b,c){var d,e="none";if(a.F)return null;a.F--;var f=new Wf(a,"1.36.2"),g=new Wf(a,"1.36.2",fC),h=za("Y-m-d H:i:s");g.set(hC,h);f.set(hC,h);f.set(qC,"1.36.2");f.set(rC,window?window.location.href:null);f.set(sC,Ha());a.H&&a.H.$b&&(d=a.H.$b(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.Z.bc=!1,!1===d&&(e=null)));for(var h=xb(a.id),k=0;kf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/, +"$1PCx86$2"),a=a.replace(/().*?(<\/xsl:variable>)/,"$1pcx86$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){f=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Fa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/gi;m=p.exec(f);)k=0>k.toLowerCase().indexOf(m[1].toLowerCase())?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+ +"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);JC(a,b,c)}})}else c(a,null)} +function KC(a,b,c,d){function e(a){if(void 0===h){var b=g&&vb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ta(a))}function f(a){e("Error: "+a);k&&(--GC||bb(!0));k=!1}var g,h,k=!0;GC++;ob[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=m:v.appendChild(document.createTextNode(m));p.appendChild(v)}c|| +(c="/versions/pcx86/1.36.2/components.xsl");m=function(d,h){h?HC(c,null,null,!1,e,function(d,k){k?(nb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--GC||bb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--GC||bb(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?HC(b,a,d,!0,e,m):IC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function LC(a,b,c,d){bb(!1);return KC(a,b,c,d)}window.embedPC=LC;window.embedPCx86=LC; +window.commandMachine=function(a,b,c,d,e,f){if("script"==e)return zb(c,f)?(b&&(a.disabled=!0),!0):!1;if(d){var g=tb(d,c+".machine");if(g){var h=g.exports;if(h&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1}}console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=bb;window.sendEvent=fb; +function MC(a,b,c,d){if(!c&&b){d.push(b);a=ob[d[0]];b=null;for(var e in a)if(sa(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?Fa(b,null,!0,function(a,b){NC(b,d)}):NC(null,d)}else ab("Error ("+c+") requesting "+a)} +function NC(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];if(c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);)/)){var h=ob[f],k={},m;for(m in h){var p=h[m],v=ra(m);if("xml"==v){for(v=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=v.exec(h[m]);){var u=d[2];u&&(h[u]||(p=p.replace(d[0],"")))}d=m=pa(m)}else"xsl"==v&&(e=m=pa(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, +"©"),a=Ta(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
    \n')+"...\n",a=a+('\n'; + sAlert += '\n\n'; + sAlert += 'The machine should appear where the
    is located.'; + Component.alertUser(sAlert); + return; + } + Component.alertUser("Missing XML/XSL resources"); +} + +/** + * Prevent the Closure Compiler from renaming functions we want to export, by adding them + * as (named) properties of a global object. + */ +window['savePC'] = savePC; diff --git a/versions/pcx86/1.36.2/pcx86.js b/versions/pcx86/1.36.2/pcx86.js new file mode 100644 index 000000000..a295db04d --- /dev/null +++ b/versions/pcx86/1.36.2/pcx86.js @@ -0,0 +1,713 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/diskapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/interrupts.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86seg.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86fpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86func.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86help.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86mods.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86ops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86op0f.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/chipset.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/keyboard.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/video.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/parallel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/mouse.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/disk.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/fdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/hdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/computer.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2017 +*/ +var l,ba;function ca(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} +var da="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ea="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this; +function fa(a,b){if(b){var c=ea;a=a.split(".");for(var d=0;da?-b:b}});fa("Math.sign",function(a){return a?a:function(a){a=Number(a);return!a||isNaN(a)?a:0":62,"?":63,"@":64,Ed:65,sh:66,th:67,vh:68,E:69,wh:70,xh:71,yh:72,zh:73,Ah:74,Bh:75,Ch:76,Dh:77,Eh:78,Fh:79,Gh:80,Q:81,Hh:82,Ih:83,Jh:84,Kh:85,Lh:86,Mh:87,Nh:88,Ph:89,qf:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Fd:97,dk:98,ek:99,d:100,e:101,nk:102,pk:103,qk:104,rk:105,Cl:106,k:107,Dl:108,Hl:109,n:110,Ql:111,p:112,q:113,r:114,ln:115,t:116,on:117, +pn:118,qn:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,no:127},ha={};ha[173]=n["-"];ha[186]=n[";"];ha[187]=n["="];ha[189]=n["-"];ha[188]=n[","];ha[190]=n["."];ha[191]=n["/"];ha[192]=n["`"];ha[219]=n["["];ha[220]=n["\\"];ha[221]=n["]"];ha[222]=n["'"];var p={};p[n["1"]]=n["!"];p[n["2"]]=n["@"];p[n["3"]]=n["#"];p[n["4"]]=n.$;p[n["5"]]=n["%"];p[n["6"]]=n["^"];p[n["7"]]=n["&"];p[n["8"]]=n["*"];p[n["9"]]=n["("];p[n["0"]]=n[")"];p[186]=n[":"];p[187]=n["+"];p[188]=n["<"];p[189]=n._;p[190]=n[">"]; +p[191]=n["?"];p[192]=n["~"];p[219]=n["{"];p[220]=n["|"];p[221]=n["}"];p[222]=n['"'];p[173]=n._;p[61]=n["+"];p[59]=n[":"]; +function ia(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0=b?4:4294967295>=b?8:9);c=c?"0x":"";var d;d=void 0===d?0:d;var e="";isNaN(a)?a=null:null!=a&&(0>a&&-1a&&(a+=Math.pow(16,b)),a>=Math.pow(16,b)&&(b=Math.ceil(Math.log(a)/Math.log(16))));for(var f=d||-1;0=g?48:55),e=String.fromCharCode(g)+e;a=Math.trunc(a/16)}f--}return(void 0===c?"":c)+e} +function ka(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0"']/g,function(a){return oa[a]})}function pa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} +var oa={"&":"&","<":"<",">":">",'"':""","'":"'"},qa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"}; +function ra(a){var b,c="";b||(b=new Date);for(var d=b.getHours(),e=b.getDate(),f=b.getMonth()+1,g=0;gd?"am":"pm";break;case "d":c+=("0"+e).slice(-2);break;case "D":c+=sa[b.getDay()].substr(0,3);break;case "F":c+=ta[f-1];break;case "g":c+=d?12a?this.Be=this.id:(this.Cd=this.id.substr(0,a),this.Be=this.id.substr(a+1));this.X={ready:!1,Ho:!1,Io:!1,Je:!1,Sb:!1,Yd:!1,error:!1};this.Df=null;this.X.error=!1;this.Ea=this.R=this.oa=this.na=null;Ua.push(this)}function Va(a,b,c){Wa[a]&&b&&(Wa[a][b]=c)}function q(a){window&&window.alert(a)} +function Xa(a){var b=!1;window&&(b=window.confirm(a));return b}function Ya(a,b){a.value+=b;b=a.value;8192e?d+=b+"\n":d=d.substr(0,e)+c+d.substr(e+b.length);8192Math.abs(a.B-b)?1:2),1==a.G?b=a.B:2==a.G&&(d=a.A));a.A=d;a.B=b;if(0<=d&&d>d.shift;d=g*a.oa.A;f=(g+f.Jo)*a.oa.A-1;0f&&(d=f);c=d;break a}c=-1}if(-1!==c&&(c&=-16,c!=a.M)){b=c;if(a.context&&a.J&&a.K){e=Ab-Bb;f=a.J.width;a.K.fillStyle=Cb;a.K.fillRect(0,e,f,Bb);d=e+Db;g=a.J;var h=a.K,k,m=null.style.color,r=a.ja=10;a.D=r;a.I=d;a.ba=a.aa=Db;k||(k=a.W||a.aa+"px "+Eb);a.Y=a.W=k;g&&(a.N=g);h&&(a.H=h,a.U=m||"white");a.L=a.N.width/24|0;if(null==b)Fb(a,"Mouse over memory to dump");else for(Fb(a,ja(b,8,!0),null,0,1),k=1;16>=k;k++){d="";for(g=1;8>=g;g++)h=a.oa,m=b++,h=h.Y[(m&h.D)>>>h.B].Bd(m&h.C,m),Fb(a,ja(h,2),null,1), +d+=32<=h&&128>h?String.fromCharCode(h):".";Fb(a,d,null,0,1)}a.context.drawImage(a.J,0,e,f,Bb,a.pa,a.ra,a.la,a.qa)}a.M=c}}}function Fb(a,b,c,d,e){a.H.font=a.Y;a.H.fillStyle=a.U;a.H.fillText(b,a.D,a.I);a.D+=a.L;null!=c&&(16!=a.ma?b=c.toString():(b=8>a.da?"0x":"",b+=ja(c,a.da)),a.H.fillText(b,a.D,a.I),a.D+=a.L);d&&(a.D+=a.L*d);e&&(a.D=a.ja,a.I+=(a.ba+2)*(e||1))} +function ub(){for(var a=!1,b=cb(document,"pcx86","panel"),c=0;c>2,Ab=xb,Cb="black",Bb=xb>>1;Ma(ub); +function Gb(a,b,c){u.call(this,"Bus",a);this.R=b;this.Ea=c;this.F=a.busWidth||20;this.N=Math.pow(2,this.F);this.W=this.D=this.N-1|0;this.B=32==this.F||20>=this.F?12:24>=this.F?14:15;this.A=1<>2;this.C=this.A-1;this.H=this.N/this.A|0;this.K=this.H-1;this.I=[];this.J=[];this.L=[];this.M=[];a=new w;Hb(a,this.Ea);this.Y=Array(this.H);for(b=0;b>>a.B;0g&&(r=g);if(k&&k.size){if(k.type==d&&k.controller==e){if(f+g<=k.ee)return k.xe+=k.ee-f,k.ee=f,!0;if(f>=k.ee+k.xe){r=k.size-(f-m);r>g&&(r=g);k.xe=f-k.ee+r;f=m+a.A;g-=r;h++;continue}}return Kb(a,Lb,f,g)}f=new w(f,r,a.A,d,e);Hb(f,a.Ea,k);a.Y[h++]=f;f=m+a.A;g-=r}return 0>=g?(e=a.R,e.pa&-2147483648&&Mb(e),a.R.X.cb||(e=c/1024|0,a.status((e?e+"Kb ":c+" bytes ")+Nb[d]+" at "+ja(b))),!0):Kb(a,Pb,b,c)} +function Ib(a,b){32==a.F?b?a.G&&(Qb(a,1048576,1048576,a.G),a.G=null):a.G||(a.G=Rb(a,1048576,1048576),Qb(a,1048576,1048576,Rb(a,0,1048576))):20>>this.B;0>>a.B;0>>=a.B;0>>a.B;0>>this.B].oc(a&this.C,a)};function bc(a,b){var c=b&a.C,d=(b&a.D)>>>a.B;return c!=a.C?a.Y[d].$e(c,b):a.Y[d++].Bd(c,b)|a.Y[d&a.K].Bd(0,b+1)<<8} +l.Bb=function(a,b){this.Y[(a&this.D)>>>this.B].pc(a&this.C,b&255,a)};function cc(a,b,c){var d=b&a.C,e=(b&a.D)>>>a.B;d!=a.C?a.Y[e].qh(d,c&65535,b):(a.Y[e++].ef(d,c&255,b),a.Y[e&a.K].ef(0,c>>8&255,b+1))} +function dc(a,b){var c=0,d=[],e=!a.G&&a.W==a.D;e||Ib(a,!0);for(var f=0;f>>=f)&k;if(void 0!==g&&g[0])g[0](b,k,e);f+=h<<3;b+=h;c-=h}}function Kb(a,b,c,d,e){b="Memory block error ("+b+": "+ja(c)+","+ja(d)+")";e?a.Ea?a.Ea.message(b):a.log(b):q(b);return!1} +var zb,ic={Pl:20,count:8,Go:1,type:3},jc=0,kc;for(kc in ic){var lc=ic[kc];ic[kc]={Il:(1<>1),this.S=new Int32Array(this.L,0,c>>2),Tb(this,Yb?Zb:$b);else{this.S=Array(c>>2);for(e=0;e>2),b=0;b>8,c)};l.nh=function(a,b,c){this.pc(a++,b&255,c++);this.pc(a++,b>>8&255,c++);this.pc(a++,b>>16&255,c++);this.pc(a,b>>>24,c)};l.Um=function(a){return this.S[a>>2]>>>((a&3)<<3)&255}; +l.fn=function(a){var b=a>>2;a=(a&3)<<3;var c=this.S[b]>>a;return 24>a?c&65535:c&255|(this.S[b+1]&255)<<8};l.$m=function(a){var b=a>>2;a=(a&3)<<3;var c=this.S[b];a&&(c=c>>>a|this.S[b+1]<<32-a);return c};l.vn=function(a,b){var c=a>>2;a=(a&3)<<3;this.S[c]=this.S[c]&~(255<>2;a=(a&3)<<3;24>a?this.S[c]=this.S[c]&~(65535<>8);this.Fa=!0}; +l.Bn=function(a,b){var c=a>>2;if(a=(a&3)<<3){var d=-1<>>32-a}else this.S[c]=b;this.Fa=!0};l.Tm=function(a,b){this.F&&zc(this.F,b,1,!1);return this.Bd(a,b)};l.en=function(a,b){this.F&&zc(this.F,b,2,!1);return this.$e(a,b)};l.Zm=function(a,b){this.F&&zc(this.F,b,4,!1);return this.hh(a,b)};l.un=function(a,b,c){this.F&&zc(this.F,c,1,!0);this.H||this.ef(a,b,c)};l.Gn=function(a,b,c){this.F&&zc(this.F,c,2,!0);this.H||this.qh(a,b,c)}; +l.An=function(a,b,c){this.F&&zc(this.F,c,4,!0);this.H||this.R(a,b,c)};l.Wm=function(a,b){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.I;return this.J.oc(a,b)};l.hn=function(a,b){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.I;return this.J.Ze(a,b)};l.bn=function(a,b){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.I;return this.J.Rd(a,b)};l.xn=function(a,b,c){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.M;this.J.pc(a,b,c)}; +l.Jn=function(a,b,c){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.M;this.J.gf(a,b,c)};l.Dn=function(a,b,c){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.M;this.J.ff(a,b,c)};l.Xm=function(a,b){return Ac(this.F,b,!1).oc(a,b)};l.jn=function(a,b){return Ac(this.F,b,!1).Ze(a,b)};l.cn=function(a,b){return Ac(this.F,b,!1).Rd(a,b)};l.yn=function(a,b,c){Ac(this.F,c,!0).pc(a,b,c)};l.Kn=function(a,b,c){Ac(this.F,c,!0).gf(a,b,c)};l.En=function(a,b,c){Ac(this.F,c,!0).ff(a,b,c)};l.Sm=function(a){return this.Ha[a]}; +l.Ej=function(a){return this.Ha[a]};l.Vm=function(a){this.A.S[this.C]|=32;this.B.S[this.D]|=32;this.oc=this.Ej;return this.Ha[a]};l.dn=function(a){return this.K.getUint16(a,!0)};l.Jj=function(a){return a&1?this.Ha[a]|this.Ha[a+1]<<8:this.ud[a>>1]};l.gn=function(a){this.A.S[this.C]|=32;this.B.S[this.D]|=32;this.Ze=this.Jj;return a&1?this.Ha[a]|this.Ha[a+1]<<8:this.ud[a>>1]};l.Ym=function(a){return this.K.getInt32(a,!0)}; +l.Gj=function(a){return a&3?this.Ha[a]|this.Ha[a+1]<<8|this.Ha[a+2]<<16|this.Ha[a+3]<<24:this.S[a>>2]};l.an=function(a){this.A.S[this.C]|=32;this.B.S[this.D]|=32;this.Rd=this.Gj;return a&3?this.Ha[a]|this.Ha[a+1]<<8|this.Ha[a+2]<<16|this.Ha[a+3]<<24:this.S[a>>2]};l.tn=function(a,b){this.Ha[a]=b;this.Fa=!0};l.Qj=function(a,b){this.Ha[a]=b;this.Fa=!0};l.wn=function(a,b){this.Ha[a]=b;this.A.S[this.C]|=32;this.B.S[this.D]|=96;this.pc=this.Qj;this.J.Fa=!0}; +l.Fn=function(a,b){this.K.setUint16(a,b,!0);this.Fa=!0};l.Sj=function(a,b){a&1?(this.Ha[a]=b,this.Ha[a+1]=b>>8):this.ud[a>>1]=b;this.Fa=!0};l.In=function(a,b){a&1?(this.Ha[a]=b,this.Ha[a+1]=b>>8):this.ud[a>>1]=b;this.A.S[this.C]|=32;this.B.S[this.D]|=96;this.gf=this.Sj;this.J.Fa=!0};l.zn=function(a,b){this.K.setInt32(a,b,!0);this.Fa=!0};l.Rj=function(a,b){a&3?(this.Ha[a]=b,this.Ha[a+1]=b>>8,this.Ha[a+2]=b>>16,this.Ha[a+3]=b>>24):this.S[a>>2]=b;this.Fa=!0}; +l.Cn=function(a,b){a&3?(this.Ha[a]=b,this.Ha[a+1]=b>>8,this.Ha[a+2]=b>>16,this.Ha[a+3]=b>>24):this.S[a>>2]=b;this.A.S[this.C]|=32;this.B.S[this.D]|=96;this.ff=this.Rj;this.J.Fa=!0};function Bc(a){pb&&!Yb&&(a=a<<24|a<<8&16711680|a>>8&65280|a>>>24);return a} +var pc=0,Xb=2,qc=5,tc=6,Nb="NONE RAM ROM VIDEO H/W UNPAGED PAGED".split(" "),oc=0,vc=[],ac=[w.prototype.Um,w.prototype.vn,w.prototype.fn,w.prototype.Hn,w.prototype.$m,w.prototype.Bn],yc=[w.prototype.Tm,w.prototype.un,w.prototype.en,w.prototype.Gn,w.prototype.Zm,w.prototype.An],uc=[w.prototype.Wm,w.prototype.xn,w.prototype.hn,w.prototype.Jn,w.prototype.bn,w.prototype.Dn],sc=[w.prototype.Xm,w.prototype.yn,w.prototype.jn,w.prototype.Kn,w.prototype.cn,w.prototype.En]; +if(pb)var $b=[w.prototype.Sm,w.prototype.tn,w.prototype.dn,w.prototype.Fn,w.prototype.Ym,w.prototype.zn],Zb=[w.prototype.Ej,w.prototype.Qj,w.prototype.Jj,w.prototype.Sj,w.prototype.Gj,w.prototype.Rj],Cc=[w.prototype.Vm,w.prototype.wn,w.prototype.gn,w.prototype.In,w.prototype.an,w.prototype.Cn]; +function Dc(a,b){u.call(this,"CPU",a);b=a.cycles||b;var c=a.multiplier||1;this.V={};this.V.yd=b;this.V.zi=this.V.sg=this.V.md=c;this.V.Gf=Math.round(this.V.yd/1E4)/100;this.V.hd=this.V.re=this.V.Gf*this.V.md;this.X.Pj=this.X.cb=this.X.Zf=!1;this.X.Gd=a.autoStart;this.X.ei=!1;this.X.zf=!1;this.V.Hf=this.V.se=0;this.V.If=a.csStart;this.V.Le=a.csInterval;this.V.Me=a.csStop;this.qa=[];this.pi=this.kn.bind(this)}ca(Dc,u);l=Dc.prototype; +l.kc=function(a,b,c,d){this.na=a;this.oa=b;this.Ea=d;for(b=0;ba.V.md)b=a.V.md;a.V.yi=Math.round(1E3/Hc);a.V.Ml=Math.floor(a.V.yd/Hc*b);a.V.sg=b} +function Sc(a,b){var c=a.Ic+a.Sc+a.dd-a.A;b&&1a.V.Gf&&(c=Math.round(c/a.V.md));return c}function Ic(a){a.Ic=a.Sc=a.dd=a.A=0;Jc(a);Pc(a,a.V.zi)} +function Pc(a,b,c){if(void 0!==b){0b[1])&&(c=a.V.yd*a.V.sg/1E3*c|0,a.X.cb&&(c+=Vc(a)),b[1]=c)}function Wc(a){for(var b=[],c=0;cthis.V.yi&&(this.V.Zc+=a,this.V.Zc>this.V.Ke&&(this.V.Zc=this.V.Ke))}try{this.X.Zf=!1;do{for(var b,c=this.X.zf?1:this.V.yd*this.V.sg|0,d=this.qa.length-1;0<=d;d--){var e=this.qa[d];0>e[1]||c>e[1]&&(c=e[1])}b=c;if(this.U){Xc(this.U);var f=this.U,a=b,g=f.qa[0];if(g.Ld){var h=(Sc(f.R,f.M)-g.jd)/f.Ba|0,k=Yc(f,0)-h;g.mode==Zc&&(k-=h);var m=k*f.Ba|0;g.mode==Zc&&(m>>= +1);a>m&&(a=m)}b=a;var r=this.U,a=b;if(r.A&&r.A[$c]&ad){var y=r.Y-Sc(r.R,r.M);0y&&(a=y)}b=a}try{this.uh(b)}catch(N){if("number"!=typeof N)throw N;}for(var a=b=Vc(this),t=this.qa.length-1;0<=t;t--){var z=this.qa[t];0>z[1]||(z[1]-=a,0>=z[1]&&(z[1]=-1,z[3](),0<=z[2]&&Uc(this,t,z[2])))}a=b;if(this.X.zf){var D=!1;this.V.Hf=this.V.Hf+this.li()|0;this.V.se-=a;0>=this.V.se&&(this.V.se+=this.V.Le,D=!0);0<=this.V.Me&&this.V.Me<=Sc(this)&&(this.V.Le=this.V.Me=-1,Jc(this),Mc(this),D=!0);D&&this.qb(Sc(this)+ +" cycles: checksum="+ja(this.V.Hf))}}while(this.X.cb&&!this.X.Zf)}catch(N){Mc(this);Lc(this);this.na&&this.na.stop(va(),Sc(this));nb(this,N.stack||N.message);return}if(this.X.cb){b=setTimeout;c=this.pi;this.V.Od=va();d=this.V.yi;this.V.Jf&&(d=Math.round(d*this.V.Jf/this.V.Ml));d-=this.V.Od-this.V.Ke;if(e=this.V.Od-this.V.Zc)this.V.hd=Math.round(this.Sc/(10*e))/100,864E5<=e&&(this.Ic=0,this.U&&Xc(this.U,!0),Pc(this));0>d?(-1E3>d&&(this.V.Zc-=d),d=0):this.V.hd>>0)+b>this.C&&(8088>=this.A.ca?this.A.K|=8:x.call(this.A,13));return this.va+a|0};l.ai=function(a,b){return(a>>>0)+b<=this.C?this.va+a|0:this.wf()};l.fk=function(a,b){return(a>>>0)+b>this.C?this.va+a|0:this.wf()};l.wf=function(){x.call(this.A,13,0);return-1};l.ci=function(a,b){return(a>>>0)+b<=this.C?this.va+a|0:this.yf()};l.gk=function(a,b){return(a>>>0)+b>this.C?this.va+a|0:this.yf()};l.yf=function(){x.call(this.A,13,0);return-1}; +function hd(a,b,c,d,e){a.ha=b;a.va=d;a.jb=e;a.C=(e>>>0)+1;a.nb=c;a.type=c&7936;a.ext=c>>16&192;a.cc=(b&4?a.A.mc.va:a.A.Jb)+(b&65528)|0;a.id>>0)+1;a.nb=e;a.type=e&7936;a.ext=0;a.cc=b;a.id>>0)+1,a.nb=a.B.nb,a.type=a.B.type,a.ext=a.B.ext,a.cc=a.B.cc,a.B.ha=-1,dd(a,!0,!0,!1),a.va;a.B.ha=-1;var f=e.ga(b+0),g=e.ga(b+4),h=g&7936,k=e.ga(b+2)|(g&255)<<16,m=e.ga(b+6),r=c&65528;if(80386<=e.ca){var y=f,k=k|(m&65280)<<16,f=f|(m&15)<<16;m&128&&(f=f<<12|4095)}switch(a.id){case kd:var t=a.D;a.ne=!1;if(t&&c==ld&&a.F.length){var z=a.F[a.Ye-1];if(z&&!z())return-1}var D=c&3,N=(g&24576)>>13,z=-1,P,aa;r|| +b>=e.Jb&&b=a.tb&&(D>a.tb&&(z=A(e),md(e,A(e),!0),B(e,z),a.ne=!0),z=0);else{if(256==h||2304==h)return nd(a,c,t)?a.va:-1;if(1024==h)z=2,aa=0,Dh||2048==(h&2560))return x.call(e,13,c&65532),-1;if(!(g&32768))return x.call(e,11,c&65532),-1}break;case gd:if(!r||4096>h||512!=(h&2560))return x.call(e,13,c&65532),-1;if(!(g&32768))return x.call(e,12, +c&65532),-1;break;case id:t=h&-513;if(!r||256!=t&&2304!=t)return x.call(e,13,c&65532),-1;2304==t&&(a.Vh=k+e.ga(k+102)|0,a.ck=k+a.jb|0);break;case fd:if(!(h&4096)&&768>>0)+1,a.nb=g,a.type=h,a.ext=m,a.cc=b,dd(a,!0,!0,!1));return k} +function nd(a,b,c){var d=a.A,e=a.tb,f=d.la.ha,g=d.la.va;if(!c){if(!(d.la.type&512))return x.call(d,13,b&65532),!1;d.Za(d.la.cc+4,d.la.nb&=-513)}if(-1===d.la.load(b))return!1;var h=d.la.va;if(!1!==c){if(d.la.type&512)return x.call(d,13,b&65532),!1;d.Za(d.la.cc+4,d.la.nb|=512)}d.la.type=d.la.type&-513|d.la.nb&512;256==d.la.type||768==d.la.type?(d.Za(g+14,F(d)),d.Za(g+16,wd(d)),d.Za(g+18,d.F),d.Za(g+20,d.H),d.Za(g+22,d.L),d.Za(g+24,d.G),d.Za(g+26,C(d)),d.Za(g+28,d.M),d.Za(g+30,d.J),d.Za(g+32,d.I),d.Za(g+ +34,d.xa.ha),d.Za(g+36,d.fa.ha),d.Za(g+38,d.W.ha),d.Za(g+40,d.Ga.ha),d.mc.load(d.ga(h+42)),xd(d,d.ga(h+16)|(c?16384:0)),d.F=d.ga(h+18),d.H=d.ga(h+20),d.L=d.ga(h+22),d.G=d.ga(h+24),d.M=d.ga(h+28),d.J=d.ga(h+30),d.I=d.ga(h+32),d.xa.load(d.ga(h+34)),d.Ga.load(d.ga(h+40)),yd(d,d.ga(h+14),d.ga(h+36)),b=38,g=26,a.tb>>0)+1)}; +function dd(a,b,c,d){void 0===c&&(c=!!(a.A.pa&1));a.ke=!1;if(c)if(a.load=a.Ff,a.vi=a.Fl,a.sb=a.ai,a.Kb=a.ci,void 0===d&&(d=!!(a.A.N&131072)),d)a.load=a.J,a.sb=a.H,a.Kb=a.I,a.tb=a.jc=3,a.T=2,a.O=a.ta=65535,a.jb=65535,a.C=a.jb+1,a.Jc=a.T,a.cc=-1,a.ne=!1;else{if(!(a.ha&-4))a.sb=a.wf,a.Kb=a.yf;else if(a.type&4096){6144==(a.type&6656)&&(a.sb=a.wf);if(a.type&2048||!(a.type&512))a.Kb=a.yf;1024==(a.type&3072)&&(a.sb==a.ai&&(a.sb=a.fk),a.Kb==a.ci&&(a.Kb=a.gk),a.ke=!0);b&&a.id>13,80386>a.A.ca||!(a.ext&64)?(a.T=2,a.O=65535):(a.T=4,a.O=-1),a.Jc=a.T,a.ta=a.O)}else a.load=a.wi,a.vi=a.Gl,a.sb=a.xf,a.Kb=a.xf,a.tb=a.jc=0,a.cc=-1,a.ne=!1}var kd=1,vd=2,gd=3,id=4,fd=6,ld=1; +function Ad(a){var b,c=+a.model||8088;switch(c){default:b=4772727;break;case 80286:b=6E6;break;case 80386:b=16E6}Dc.call(this,a,b);this.ca=c;a=a.stepping;this.pd=c+(a?ia(a,16):0);this.Qh=61442;this.od=1792;this.Oh=28672;this.hf=4;this.Ma=255;this.B=80286<=this.ca?rb:qb;this.ra=Bd;this.Zh=Cd;this.$h=Dd;this.di=Ed;if(80186<=this.ca&&(this.ra=Bd.slice(),this.Zh=Cd.slice(),this.$h=Dd.slice(),this.Ma=31,this.ra[15]=Fd,this.ra[96]=Gd,this.ra[97]=Hd,this.ra[98]=Id,this.ra[99]=Fd,this.ra[100]=Fd,this.ra[101]= +Fd,this.ra[102]=Fd,this.ra[103]=Fd,this.ra[104]=Jd,this.ra[105]=Kd,this.ra[106]=Ld,this.ra[107]=Md,this.ra[108]=Nd,this.ra[109]=Od,this.ra[110]=Pd,this.ra[111]=Qd,this.ra[192]=Rd,this.ra[193]=Sd,this.ra[200]=Td,this.ra[201]=Ud,this.ra[241]=Vd,this.Zh[7]=Wd,this.$h[7]=Wd,80286<=this.ca)){this.Qh=2;this.od|=28672;this.hf=0;this.ra[15]=Xd;this.cd=Yd.slice();for(c=0;c=this.pd&&(this.cd[166]=fe,this.cd[167]=ge)}}this.lf=[];this.Uh=[];this.ag=0;Ic(this);this.X.complete=this.X.hk=!1;this.ji=0;this.Nc=this.Y=[];this.Eb=this.Rh=this.Db=this.jf=this.ze=this.Ae=this.Dc=0;he(this)}ca(Ad,Dc); +function Mb(a){var b;if(a.Y===a.Nc){a.Y=Array(a.jf);a.mf=new w(null,0,0,qc,null,a);Hb(a.mf,a.Ea);for(b=0;b>>20,f=a.Nc[(a.Vc+e&a.Ae)>>>a.Eb],g=f.Rd(e);if(!(g&1))return d||je.call(a,b,!1,c),a.Ce;if(!(g&4)&&3==a.La)return d||je.call(a,b,!0,c),a.Ce;var h=(b&4190208)>>>10,g=a.Nc[((g&-4096)+h&a.Ae)>>>a.Eb],k=g.Rd(h);if(!(k&1))return d||je.call(a,b,!1,c),a.Ce;if(!(k&4)&&3==a.La)return d||je.call(a,b,!0,c),a.Ce;c=a.Nc[((k&-4096)+(b&4095)&a.Ae)>>>a.Eb];if(d)return c;d=b>>>a.Eb;k=a.Y[d];b&=-4096;var m;0>2;b.B=g;b.D=h>>2;pb&&Yb&&c.S&&!c.controller&&!c.fe&&!c.ge?(b.Ha=c.Ha,b.ud=c.ud,b.S=c.S,Tb(b,Cc)):(b.I=c?Bc(32):0,b.M=c?Bc(96):0,Tb(b,uc));Hb(b,a.Ea,k);a.Y[d]=b;a.kf.push(d);return b}function ke(a){a.Y!==a.Nc&&(a.Y=a.Nc,a.mf=null,a.kf=null,a.Ce=null)}l=Ad.prototype;l.reset=function(){he(this);Ic(this);this.X.error=!1}; +function le(a,b){var c;switch(b){case 0:c=a.F;break;case 1:c=a.H;break;case 2:c=a.L;break;case 3:c=a.G;break;case 4:c=C(a);break;case 5:c=a.M;break;case 6:c=a.J;break;case 7:c=a.I}return c}function me(a,b,c){switch(b){case 0:a.F=c;break;case 1:a.H=c;break;case 2:a.L=c;break;case 3:a.G=c;break;case 4:B(a,c);break;case 5:a.M=c;break;case 6:a.J=c;break;case 7:a.I=c}} +function he(a){a.F=0;a.G=0;a.H=0;a.L=0;a.lc=0;a.M=0;a.J=0;a.I=0;a.fc=!1;a.Ba=a.Sa=0;a.Jl=[0,0];a.Ol=[0,0];a.ua=0;a.gi=0;a.aa=0;a.pa=65520;a.Xb=0;a.Qc=1023;a.N=a.Zb=0;a.Zd=a.De=a.sd=a.$d=0;a.sc=-1;a.Tc=a.uc=-1;a.Uc=a.ma=-1;a.fa=new cd(a,kd,"CS");a.Ga=new cd(a,vd,"DS");a.xa=new cd(a,vd,"ES");a.W=new cd(a,gd,"SS");B(a,0);md(a,0);if(80386<=a.ca){switch(a.pd){case 80562:case 80563:a.L=771;break;case 80578:a.L=772;break;case 80594:a.L=773;break;case 80595:case 80596:a.L=776}a.pa=16;a.si=0;a.rd=0;a.Vc=0; +a.Cb=[0,0,0,0,null,null,0,0];a.pf=[null,null,null,null,null,null,0,0];a.rb=new cd(a,vd,"FS");a.vb=new cd(a,vd,"GS");ke(a)}a.cg=new cd(a,0,"NULL");a.Ca=a.Ga;a.Gb=a.W;a.K=a.ba=0;a.C=a.D=-1;a.Da=a.cg;a.Qa=0;if(80286>a.ca)yd(a,0,65535);else{a.Jb=0;a.Oc=65535;a.mc=new cd(a,5,"LDT",!0);a.la=new cd(a,id,"TSS",!0);a.gb=new cd(a,fd,"VER",!0);yd(a,65520,61440);var b,c=F(a);b=a.fa;var d=-65536;80386>b.A.ca&&(d&=16777215);b=b.va=d;a.da=b+c|0;a.bg=(b>>>0)+(a.fa.jb>>>0)+1}xd(a,0);pd(a)} +function ne(a){2==a.Jc?(a.ni=a.ga,a.Yb=oe,a.ec=pe,a.Rc=qe,2==a.T?(a.ja=re,a.za=se,a.eb=te):(a.ja=ue,a.za=ve,a.eb=we)):(a.ni=a.ea,a.Yb=xe,a.ec=ye,a.Rc=ze,2==a.T?(a.ja=Ae,a.za=Be,a.eb=Ce):(a.ja=De,a.za=Ee,a.eb=Fe))}function qd(a,b){a.T!=b&&(a.ba|=1024,a.T=b,a.O=2==b?65535:-1,Ge(a))}function Ge(a){2==a.T?(a.wb=32768,a.mb=a.ga,a.Lb=a.Za,2==a.Jc?(a.ja=re,a.za=se,a.eb=te):(a.ja=Ae,a.za=Be,a.eb=Ce)):(a.wb=-2147483648,a.mb=a.ea,a.Lb=a.Ta,2==a.Jc?(a.ja=ue,a.za=ve,a.eb=we):(a.ja=De,a.za=Ee,a.eb=Fe))} +function He(a){a.Jc=a.fa.Jc;a.ta=a.fa.ta;ne(a);a.T=a.fa.T;a.O=a.fa.O;Ge(a);a.ba&=-3073}l.li=function(){var a=this.F+this.G+this.H+this.L+C(this)+this.M+this.J+this.I|0;return a=a+F(this)+this.fa.ha+this.Ga.ha+this.W.ha+this.xa.ha+wd(this)|0};function Ie(a,b,c){void 0===a.lf[b]&&(a.lf[b]=[]);a.lf[b].push(c)}function Je(a,b){var c=a.Uh[b];null!=c&&(c(--a.ag),delete a.Uh[b])} +function Ke(a,b){for(var c=a.Cb[7],d=c>>16,e=0;4>e;e++){if(c&3){var f=!!(d&1),g=a.Cb[e],g=g&~(d>>2&3);if(b){var g=a.Y[g>>>a.Eb],h=a;f?g.ge++||(h&&(g.F=h),xc(g,yc,!1)):g.fe++||(h&&(g.F=h),wc(g,yc,!1))}else g=a.Y[g>>>a.Eb],f?--g.ge||(f=g,f.pc=f.H?f.oh:f.ef,f.gf=f.H?f.ph:f.qh,f.ff=f.H?f.nh:f.R):--g.fe||(f=g,f.oc=f.Bd,f.Ze=f.$e,f.Rd=f.hh)}c>>=2;d>>=4}} +function zc(a,b,c,d){if(!(a.K&8192)&&a.Cb[7]&255){c--;var e=a.Cb[7],f=e>>16;d=d?1:0==d?3:0;for(var g=0;4>g;g++){if(e&3&&(f&3)==d){var h=f>>2;if(b+c>=a.Cb[g]&&b<=a.Cb[g]+h){a.Cb[6]|=1<>=2;f>>=4}}}function pd(a,b,c){void 0===b&&(b=!!(a.pa&1));void 0===c&&(c=!!(a.N&131072));a.di=b&&!c?Le:Ed;dd(a.fa,!1,b,c);dd(a.Ga,!1,b,c);dd(a.W,!1,b,c);dd(a.xa,!1,b,c);80386<=a.ca&&(dd(a.rb,!1,b,c),dd(a.vb,!1,b,c));He(a)} +l.save=function(a){var b=new Me(this);b.set(0,[this.F,this.G,this.H,this.L,C(this),this.M,this.J,this.I]);var c=F(this),d=this.fa.save(),e=this.Ga.save(),f=this.W.save(),g=this.xa.save(),h;null!=this.Jb?(h=[this.pa,this.Jb,this.Oc,this.Xb,this.Qc,this.mc.save(),this.la.save(),this.Zb],80386<=this.ca&&(h.push(this.si),h.push(this.rd),h.push(this.Vc),h.push(this.Cb),h.push(this.pf))):h=null;c=[c,d,e,f,g,h,wd(this)];80386<=this.ca&&(c.push(this.rb.save()),c.push(this.vb.save()));b.set(1,c);b.set(2,[this.Ca.Xf, +this.Gb.Xf,this.K,this.ba,this.Qa,this.C,this.D]);b.set(3,[0,this.Ic,this.V.md,a,Wc(this)]);b.set(4,dc(this.oa,!!(this.pa&-2147483648)));return b.data()}; +l.restore=function(a){var b=a[0];this.F=b[0];this.G=b[1];this.H=b[2];this.L=b[3];var c=b[4];this.M=b[5];this.J=b[6];this.I=b[7];b=a[1];this.fa.restore(b[1]);this.Ga.restore(b[2]);this.W.restore(b[3]);this.xa.restore(b[4]);var d=b[5];d&&d.length&&(this.pa=d[0],this.Jb=d[1],this.Oc=d[2],this.Xb=d[3],this.Qc=d[4],this.mc.restore(d[5]),this.la.restore(d[6]),this.Zb=d[7],80386<=this.ca&&(this.si=d[8],this.rd=d[9],this.Vc=d[10],this.Cb=d[11],this.pf=d[12]),pd(this));xd(this,b[6]);var d=!1,e;a:{e=this.oa; +var f=a[4],g;for(g=0;g>>0)+(a.fa.jb>>>0)+1;a.La=a.fa.tb;He(a)} +function yd(a,b,c,d){var e=a.fa;e.Ye=b;e.D=d;b=e.load(c);return-1!==b?(Pe(a,b+(a.fa.Ye&a.fa.O)),a.fa.ne):null}function Qe(a,b){var c=(a.da>>>0)+b;c>a.bg&&(8088>=a.ca?(c=a.fa.va+(c-a.bg&a.O),2==b&&(a.K|=8)):x.call(a,13,0));return c|0}function Re(a){a.da=a.Uc}function C(a){return a.lc&~a.W.ta|a.Aa-a.W.va}function B(a,b){a.lc=b;a.Aa=a.W.va+(b&a.W.ta)|0} +function Se(a,b,c,d,e,f){if(63!=(e&63)&&e!=a.resultType){var g=(e^a.resultType)&a.resultType;g&&(g&1&&Te(a),g&2&&Ue(a),g&4&&Ve(a),g&8&&We(a),g&16&&Xe(a),g&32&&Ye(a))}f?(a.Zd=d,a.sd=b):(a.Zd=b,a.sd=d);a.De=c;a.$d=d;a.resultType=e}function Ze(a,b,c,d,e){a.resultType=c|26;a.$d=b;d?$e(a):af(a);e?bf(a):cf(a);return b}function df(a,b,c,d){c&d?$e(a):af(a);(b^c)&d?bf(a):cf(a)}function ef(a){return Te(a)?1:0} +function Te(a){a.resultType&1&&(a.N&=-2,(a.Zd^(a.Zd^a.De)&(a.De^a.sd))&a.resultType&-2147450752&&(a.N|=1),a.resultType&=-2);return a.N&1}function Ue(a){a.resultType&2&&(a.N&=-5,38505>>((a.$d^a.$d>>4)&15)&1&&(a.N|=4),a.resultType&=-3);return a.N&4}function Ve(a){a.resultType&4&&(a.N&=-17,(a.sd^a.Zd^a.De)&16&&(a.N|=16),a.resultType&=-5);return a.N&16}function We(a){a.resultType&8&&(a.N&=-65,a.$d&((a.resultType&-2147450752)-1|a.resultType&-2147450752)||(a.N|=64),a.resultType&=-9);return a.N&64} +function Xe(a){a.resultType&16&&(a.N&=-129,a.$d&a.resultType&-2147450752&&(a.N|=128),a.resultType&=-17);return a.N&128}function Ye(a){a.resultType&32&&(a.N&=-2049,(a.Zd^a.sd)&(a.De^a.sd)&a.resultType&-2147450752&&(a.N|=2048),a.resultType&=-33);return a.N&2048}function af(a){a.resultType&=-2;a.N&=-2}function ff(a){a.resultType&=-5;a.N&=-17}function gf(a){a.resultType&=-9;a.N&=-65}function cf(a){a.resultType&=-33;a.N&=-2049}function $e(a){a.resultType&=-2;a.N|=1} +function hf(a){a.resultType&=-5;a.N|=16}function jf(a){a.resultType&=-9;a.N|=64}function bf(a){a.resultType&=-33;a.N|=2048}function wd(a){return a.N&-2262|Te(a)|Ue(a)|Ve(a)|We(a)|Xe(a)|Ye(a)}function kf(a,b){b|=a.pa&1|65520;a.pa=a.pa&-65536|b&65535;a.pa&1&&pd(a,!0)}function xd(a,b,c){a.pa&1||(b&=~a.Oh);void 0===c&&(c=a.La);c?b=b&-12289|a.N&12288:a.Zb=(b&12288)>>12;c>a.Zb&&(b=b&-513|a.N&512);a.resultType=128;a.N=a.N&~(a.od|2261)|b&(a.od|2261)|a.Qh;a.N&256&&(a.Qa|=2,a.K|=4)} +function lf(a,b,c){var d=0;if(a.pa&1&&(a.La>a.Zb||a.N&131072)&&a.la.Vh)for(var e=a.la.Vh+(b>>>3),d=(1<>>=8,e++;return d?(x.call(a,13,0),!1):!0} +l.Ab=function(a,b,c){switch(b){case "EAX":case "EBX":case "ECX":case "EDX":case "ESP":case "EBP":case "ESI":case "EDI":case "EIP":case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "IP":case "PC":case "CS":case "DS":case "SS":case "ES":case "FS":case "GS":case "CR0":case "CR2":case "CR3":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "V":this.ia[b]=c;this.ji++;a=!0;break;default:a=Dc.prototype.Ab.call(this,a,b,c)}return a}; +function mf(a,b,c,d){var e=(d?a.Nc:a.Y)[(b&a.Dc)>>>a.Eb];e&&e.type==qc&&(e=Ac(a,b,!1,!0));if(e){var f=b&a.Db;if(!c||1==c)return e.Bd(f,b);if(2==c)return f>>this.Eb].oc(a&this.Db,a)}; +l.ga=function(a){var b=a&this.Db,c=(a&this.Dc)>>>this.Eb;this.A-=this.B.Of;if(b>>this.Eb;if(b>>this.Eb].pc(a&this.Db,b&255,a)}; +l.Za=function(a,b){var c=a&this.Db,d=(a&this.Dc)>>>this.Eb;this.A-=this.B.Of;c>8&255,a+1))};l.Ta=function(a,b){var c=a&this.Db,d=(a&this.Dc)>>>this.Eb;this.A-=this.B.Of;if(c>>=8}};function nf(a,b,c){a.Da=b;a.fb=c&a.ta;a.C=b.sb(a.fb,1);return a.K&1?0:a.Ia(a.C)} +function I(a,b){return nf(a,a.Ca,b)}function J(a,b){return nf(a,a.Gb,b)}function of(a,b,c){a.Da=b;a.fb=c&a.ta;a.C=b.sb(a.fb,a.T);if(a.K&9){if(a.K&1)return 0;a=a.Ia(a.C)|a.Ia(b.sb(0,1))<<8}else a=a.mb(a.C);return a}function K(a,b){a.Da=a.Ca;a.fb=b&a.ta;a.C=a.Da.sb(a.fb,2);if(a.K&9){if(a.K&1)return 0;b=a.Ia(a.C)|a.Ia(a.Da.sb(0,1))<<8;a.K&=-9}else b=a.ga(a.C);return b} +function L(a,b){a.Da=a.Gb;a.fb=b&a.ta;a.C=a.Da.sb(a.fb,2);if(a.K&9){if(a.K&1)return 0;b=a.Ia(a.C)|a.Ia(a.Da.sb(0,1))<<8;a.K&=-9}else b=a.ga(a.C);return b}function M(a,b){a.Da=a.Ca;a.fb=b&a.ta;a.C=a.Da.sb(a.fb,4);return a.K&1?0:a.ea(a.C)}function O(a,b){a.Da=a.Gb;a.fb=b&a.ta;a.C=a.Da.sb(a.fb,4);return a.K&1?0:a.ea(a.C)}function pf(a,b){a.K&2||a.Bb(a.Da.Kb(a.fb,1),b)}function qf(a,b){if(!(a.K&2)){var c=a.Da.Kb(a.fb,2);a.K&8?(a.Bb(c,b),a.Bb(a.Da.Kb(0,1),b>>8),a.K&=-9):a.Za(c,b)}} +function rf(a,b){a.K&2||a.Ta(a.Da.Kb(a.fb,4),b)}function rd(a,b,c){c=b.sb(c,a.T);a.K&8?(b=a.Ia(c)|a.Ia(b.sb(0,1))<<8,a.K&=-9):b=a.mb(c);return b}function sf(a,b,c,d){c=b.Kb(c,a.T);a.K&8?(a.Bb(c,d),a.Bb(b.Kb(0,1),d>>8),a.K&=-9):a.Lb(c,d)}l.ka=function(){var a=Qe(this,1),b=this.Ia(this.da);this.da=a;return b};function tf(a){var b,c=Qe(a,2);a.K&8?(b=a.Ia(a.da)|a.Ia(c-1)<<8,a.K&=-9):b=a.ga(a.da);a.da=c;return b} +function Q(a){var b,c=Qe(a,a.Jc);a.K&8?(b=a.Ia(a.da)|a.Ia(c-1)<<8,a.K&=-9):b=a.ni(a.da);a.da=c;return b}l.ya=function(){var a,b=Qe(this,this.T);this.K&8?(a=this.Ia(this.da)|this.Ia(b-1)<<8,this.K&=-9):a=this.mb(this.da);this.da=b;return a};l.P=function(){var a=Qe(this,1),b=this.Ia(this.da)<<24>>24;this.da=a;return b}; +function A(a){var b=a.mb(a.Aa);a.Aa=a.Aa+a.T|0;var c=(a.ti>>>0)-(a.Aa>>>0);0>c&&(8088>=a.ca?(B(a,a.Aa-a.W.va&a.W.ta),-1>c&&(b=b&255|a.Ia(a.Aa-1)<<8)):-1>c?x.call(a,12,0):(!a.W.ke&&a.W.jb==a.W.ta||a.W.ke&&!a.W.jb)&&B(a,a.Aa-a.W.va&a.W.ta));return b}function E(a,b){sd(a,b,a.T)} +function sd(a,b,c,d){d=void 0===d?c:d;var e=a.Aa-c|0,f=(e>>>0)-(a.ui>>>0);if(0>f){if(8088>=a.ca&&-1==f){a.Bb(e+1,b>>8);B(a,e-a.W.va&a.W.ta);a.Bb(a.Aa,b);return}if(!a.W.ke&&a.W.jb==a.W.ta||a.W.ke&&!a.W.jb){if(f>-c){x.call(a,12,0);return}B(a,e-a.W.va&a.W.ta);e=a.Aa}else{x.call(a,12,0);return}}switch(d){case 1:a.Bb(e,b);break;case 2:a.Za(e,b);break;case 4:a.Ta(e,b)}a.Aa=e} +function uf(a,b,c){var d=4;1==b.length&&(d=1,c=c?1:0);if(80386>a.ca)2this.ca?0:1;for(var b=0;2>b;b++){switch(a){case 0:if(this.Qa&1&&this.N&512){var c=vf(this.U);if(-1<=c&&(this.Qa&=-2,0<=c)){this.Qa&=-5;wf.call(this,c);break a}}break;case 1:if(this.Qa&2){this.Qa&=-3;80386<= +this.ca&&(this.Cb[6]|=16384);wf.call(this,1);break a}}a=1-a}}if(this.Qa&4){this.K=this.A=0;break}}this.K=0;this.ra[this.ka()].call(this)}while(0>11;Af(this);Bf(this,a[b++]);for(c=0;c=Cf&&Df(a,Ef))}function Af(a){a.Z&=-129;a.Z&~a.F&63&&(a.Z|=128);if(a.Z&128&&!(a.F&128))return a=a.U,a.ca>=Cf?Ff(a,Ef):a.da&Gf||wf.call(a.R,2),!0;a=a.U;a.ca>=Cf&&Df(a,Ef);return!1}function Hf(a,b){80387<=a.ca||(b&=-65);a.Z|=b;return Af(a)} +function If(a,b){return isFinite(b)?!0:!Hf(a,Infinity===b?8:16)}function Jf(a,b,c){var d=null;null!=b&&null!=c&&(d=b+c,If(a,d)||(d=null));return d}function Kf(a,b,c){var d=null;null!=b&&null!=c&&(d=b-c,If(a,d)||(d=null));return d}function Lf(a,b,c){var d=null;null!=b&&null!=c&&(d=b*c,If(a,d)||(d=null));return d}function Mf(a,b,c){var d=null;null==b||null==c||!c&&Hf(a,2)||(d=b/c,If(a,d)||(d=null));return d} +function Nf(a,b,c){if(null!=b&&null!=c){var d=0;isNaN(b)||isNaN(c)?d=17664:(b-=c,0>b?d=256:b||(d=16384));a.Z=a.Z&-18177|d;return!0}return!1}function Of(a,b,c){if(null==b)return null;var d=a.F&3072;d?d=1024==d||3072==d&&0=c){if(Hf(a,1))return null;d=-c}else if(d<-c){if(Hf(a,1))return null;d=-c}a.G[0]=d|0;2147483648d&&(a.G[1]=-1))}return d} +function Pf(a,b){var c=3;a.C&1<=c;c<<=1)3!=(b&3)&&(a.C|=c),b>>=2}function Qf(a){var b=a.B+0&7;return a.C&1<>20&2047;var e=2147483648|(d&1048575)<<11|c>>>21;2047==b?b=32767:b?b+=15360:e&=2147483647;a.D[0]=c<<11;a.D[1]=e;a.D[2]=d>>16&32768|b;d=a.D}return d}function Vf(a){return a.R.ga(a.R.C)<<16>>16} +function Wf(a){return a.R.ea(a.R.C)}function Xf(a){a.ja[0]=a.R.ea(a.R.C);return a.Y[0]}function Yf(a){a.G[0]=a.R.ea(a.R.C);a.G[1]=a.R.ea(a.R.C+4);return a.K[0]}function Zf(a){a.D[0]=a.R.ea(a.R.C);a.D[1]=a.R.ea(a.R.C+4);a.D[2]=a.R.ga(a.R.C+8);return a.D}l.lh=function(){this.R.Ta(this.R.C,this.G[0])};l.Oj=function(){this.R.Ta(this.R.C,this.G[0]);this.R.Ta(this.R.C+4,this.G[1])};function $f(a){a.R.Ta(a.R.C,a.D[0]);a.R.Ta(a.R.C+4,a.D[1]);a.R.Za(a.R.C+8,a.D[2])} +function ag(a,b){var c=b[1],d=(b[2]&32768)>>4,e=b[2]&32767;b=b[0]>>>11|c<<21;c=c>>11&1048575;32767==e?e=2047:e&&(e+=-15360,0>=e&&(e=2047,b=c=0));a.G[0]=b;a.G[1]=c|(d|e)<<20;return a.K[0]}function bg(a,b){for(var c=0,d=1;b--;)c+=(a&15)*d,d*=10,a>>=4;return c}function cg(a,b){for(var c=0,d=0;b--;)c|=a%10<>11;Af(a);Bf(a,d.mb(b+=d.T));!(d.pa&1)||d.N&131072?(a.I=d.mb(b+=d.T),c=d.mb(b+=d.T),a.N=c&2047,a.I|=(c&-4096)<<4,a.L=-1,a.J=d.mb(b+=d.T),a.J|=(d.mb(b+=d.T)&-4096)<<4,a.M=-1):(a.I=d.mb(b+=d.T),c=d.mb(b+=d.T),a.L=c&65535,a.N=c>>16&2047,a.J=d.mb(b+=d.T),a.M=d.mb(b+=d.T)&65535);return b+d.T} +function gg(a,b){var c=a.R;c.Lb(b,a.F);c.Lb(b+=c.T,a.Z|a.B<<11);c.Lb(b+=c.T,zf(a));if(!(c.pa&1)||c.N&131072){var d=(a.L<<4)+a.I;c.Lb(b+=c.T,d);c.Lb(b+=c.T,d>>4&-4096|a.N);d=(a.M<<4)+a.J;c.Lb(b+=c.T,d);c.Lb(b+=c.T,d>>4&-4096)}else c.Lb(b+=c.T,a.I),c.Lb(b+=c.T,a.L|a.N<<16),c.Lb(b+=c.T,a.J),c.Lb(b+=c.T,a.M);return b+c.T}function hg(){this.Z&=-32896;Af(this)}function ig(){Nf(this,R(this,0),R(this,this.A))}function jg(){Nf(this,R(this,0),R(this,this.A))&&dg(this)}function kg(){jg.call(this)} +function lg(){S(this,0,Mf(this,R(this,0),Xf(this)))}function mg(){this.C&=~(1<>20&2047)-1023),this.G[1]=(this.G[1]|1072693248)&-1073741825,eg(this,this.K[0]))},102:function(){this.B=this.B-1&7;this.Z&=-513},103:function(){this.B=this.B+1&7;this.Z&=-513},112:function(){S(this, +0,R(this,0)%R(this,1))},113:function(){S(this,1,R(this,1)*Math.log(R(this,0)+1)/Math.LN2)&&dg(this)},114:function(){var a=R(this,0),b=null;if(0<=a||!Hf(this,1))b=Math.sqrt(a),If(this,b)||(b=null);S(this,0,b)},116:function(){S(this,0,Of(this,R(this,0),Fg))},117:function(){var a=R(this,0),b=R(this,1);null!=a&&null!=b&&S(this,0,a*Math.pow(2,0>>0);eg(this,a)},6:function(){var a= +Of(this,dg(this));null!=a&&(this.D[0]=cg(a,8),this.D[1]=cg(a/1E8,8),this.D[2]=cg(a/1E16,2),0>a&&(this.D[2]|=32768),$f(this))},7:function(){null!=Of(this,R(this,0),Fg)&&(this.Oj(),dg(this))},48:function(){mg.call(this);dg(this)},49:zg,50:ug,51:ug,52:xg}},Hg=[hg,ng,og,pg,qg,rg,vg,sg,wg,xg];Ma(function(){for(var a=cb(document,"pcx86","fpu"),b=0;b>16,c=c<<16>>16,d=d<<16>>16);this.A-=this.B.Ci;(bd)&&x.call(this,5);this.K|=2;return a}function Qg(a,b){var c=0;if(b){gf(this);for(var d=1;d&this.O;){if(b&d){a=c;break}d<<=1;c++}}else jf(this);this.A-=11+3*c;return a}function Rg(a,b){var c=0;if(b){gf(this);for(var d=2==this.T?15:31,e=1<>>=1;c++;d--}}else jf(this);this.A-=11+3*c;return a} +function Sg(a,b){a&1<<(b&(2==this.T?15:31))?$e(this):af(this);this.A-=-1===this.C?3:6;this.K|=2;return a}function Tg(a,b){b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=-1===this.C?6:8;return a^b}function Ug(a,b){b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=-1===this.C?6:8;return a&~b}function Vg(a,b){b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=-1===this.C?6:8;return a|b} +function Wg(a,b){if(-1===this.C)return Sg.call(this,a,b);var c=this.T<<3;if(b>=c||b<-c)a=of(this,this.Da,this.fb+(b>>(2==this.T?4:5))*this.T);b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=6;this.K|=2;return a}function Xg(a,b){if(-1===this.C)return Tg.call(this,a,b);var c=this.T<<3;if(b>=c||b<-c)a=of(this,this.Da,this.fb+(b>>(2==this.T?4:5))*this.T);b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=8;return a^b} +function Yg(a,b){if(-1===this.C)return Ug.call(this,a,b);var c=this.T<<3;if(b>=c||b<-c)a=of(this,this.Da,this.fb+(b>>(2==this.T?4:5))*this.T);b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=8;return a&~b}function Zg(a,b){if(-1===this.C)return Vg.call(this,a,b);var c=this.T<<3;if(b>=c||b<-c)a=of(this,this.Da,this.fb+(b>>(2==this.T?4:5))*this.T);b=1<<(b&(2==this.T?15:31));a&b?$e(this):af(this);this.A-=8;return a|b} +function $g(a,b){Se(this,a,b,a-b|0,191,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zg:this.B.zb;this.K|=2;return a}function ah(a,b){Se(this,a,b,a-b|0,this.wb|63,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zg:this.B.zb;this.K|=2;return a} +function bh(a){if(this.qd){var b=this.qd,c=this.gi,d=this.aa,e=d>>3&7;b.A=d&7;var f=(3>(d>>6&3)?0:48)+e;(217==c||219==c)&&52<=f&&(f=e<<4|b.A);if(e=Gg[c][f]){if(0>Hg.indexOf(e)){var f=b.R,g=f.Uc;8087==b.ca&&(f.ba&16&&g++,f.ba&32&&g++);b.L=f.fa.ha;b.I=g-f.fa.va;-1!==f.C&&(b.M=f.Da.ha,b.J=f.C-f.Da.va);b.N=(c&7)<<8|d}e.call(b)}}this.A-=-1===this.C?2:8;return a}function ch(a){if(80186>this.ca)return T.call(this,a);x.call(this,13,0);return a}function Wd(a){x.call(this,6);return a} +function T(a){Zd.call(this);return a}function dh(a,b){a=eh.call(this,this.P(),b);80386>this.ca&&(this.A-=12);return a}function fh(a,b){a=this.ya();a=2==this.T?eh.call(this,a,b):gh.call(this,a,b);80386>this.ca&&(this.A-=12);return a}function hh(a,b){var c=!1;0>b&&(b=-b|0,c=!c);0>a&&(a=-a|0,c=!c);ih.call(this,a,b);c&&(this.Ba=~this.Ba+1|0,this.Sa=~this.Sa+(this.Ba?0:1)|0)} +function eh(a,b){a=(a<<16>>16)*(b<<16>>16)|0;32767a?($e(this),bf(this)):(af(this),cf(this));this.A-=-1===this.C?9:12;return a&65535}function gh(a,b){hh.call(this,a,b);this.Sa!=this.Ba>>31?($e(this),bf(this)):(af(this),cf(this));this.A-=-1===this.C?9:12;return this.Ba}function jh(a,b){this.A-=14+(-1===this.C?0:2);gf(this);-1!==this.gb.load(b)&&this.gb.jc>=this.La&&this.gb.jc>=(b&3)&&(jf(this),a=this.gb.nb&-256,2=this.La)&&this.gb.jc>=(b&3))return jf(this),this.gb.jb;gf(this);return a}function qh(a,b){if(-1===this.C)return Zd.call(this),a;md(this,this.ga(this.C+this.T));this.A-=this.B.te;return b} +function rh(a,b){this.A-=-1===this.D?-1===this.C?this.B.lj:this.B.kj:this.B.ij;return b}function sh(a,b){switch(this.aa>>3&7){case 4:this.ua=this.F;break;case 5:this.ua=this.H;break;case 6:this.ua=this.L;break;case 7:this.ua=this.G}return b}function th(a,b){return b} +function uh(a,b){a=this.aa>>3&7;switch(a){case 0:this.ua=this.F;break;case 2:this.ua=this.L;break;case 3:this.ua=this.G;break;default:if(80286==this.ca||80386==this.ca&&4!=a&&5!=a)x.call(this,6);else switch(a){case 1:this.ua=this.H;break;case 4:this.ua=C(this);break;case 5:this.ua=this.M;break;case 6:this.ua=this.J;break;case 7:this.ua=this.I}}return rh.call(this,0,b)} +function vh(a,b){switch(this.aa>>3&7){case 0:b=this.xa.ha;break;case 1:b=this.fa.ha;break;case 2:b=this.W.ha;break;case 3:b=this.Ga.ha;break;case 4:if(80386<=this.ca){b=this.rb.ha;break}x.call(this,6);b=a;break;case 5:if(80386<=this.ca){b=this.vb.ha;break}default:x.call(this,6),b=a}-1!==this.D&&qd(this,2);return rh.call(this,0,b)} +function ih(a,b){if(a&-65536||b&-65536){var c=b&65535;b>>>=16;var d=a&65535;a>>>=16;var e=c*d,d=(e>>>16)+b*d,f=d>>>16,d=(d&65535)+c*a;this.Ba=d<<16|e&65535;this.Sa=f+((d>>>16)+b*a)|0}else this.Ba=a*b|0,this.Sa=0}function wh(a,b){this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return Ze(this,a|b,128)}function xh(a,b){this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return Ze(this,a|b,this.wb)&this.O} +function yh(a,b){var c=a-b-ef(this)|0;Se(this,a,b,c,191,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return c&255}function zh(a,b){var c=a-b-ef(this)|0;Se(this,a,b,c,this.wb|63,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return c&this.O}function Ah(){return Ye(this)?1:0}function Bh(){return Te(this)?1:0}function Ch(){return Te(this)?0:1}function Dh(){return We(this)?1:0}function Eh(){return We(this)?0:1}function Fh(){return Te(this)||We(this)?1:0} +function Gh(){return Te(this)||We(this)?0:1}function Hh(){return Xe(this)?1:0}function Ih(){return Xe(this)?0:1}function Jh(){return Ue(this)?1:0}function Kh(){return Ue(this)?0:1}function Lh(){return!Xe(this)!=!Ye(this)?1:0}function Mh(){return!Xe(this)!=!Ye(this)?0:1}function Nh(){return We(this)||!Xe(this)!=!Ye(this)?1:0}function Oh(){return We(this)||!Xe(this)!=!Ye(this)?0:1}function Ph(a,b){return Qh.call(this,a,b,this.ka())}function Rh(a,b){return Sh.call(this,a,b,this.ka())} +function Th(a,b){return Qh.call(this,a,b,this.H&31)}function Uh(a,b){return Sh.call(this,a,b,this.H&31)}function Vh(a,b){return Wh.call(this,a,b,this.ka())}function Xh(a,b){return ai.call(this,a,b,this.ka())}function bi(a,b){return Wh.call(this,a,b,this.H&31)}function ci(a,b){return ai.call(this,a,b,this.H&31)}function di(a,b){var c=a-b|0;Se(this,a,b,c,191,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return c&255} +function ei(a,b){var c=a-b|0;Se(this,a,b,c,this.wb|63,!0);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return c&this.O}function fi(a,b){Ze(this,a&b,128);this.A-=-1===this.D?-1===this.C?this.B.ah:this.B.Ue:this.B.Ue;this.K|=2;return a}function gi(a,b){Ze(this,a&b,this.wb);this.A-=-1===this.D?-1===this.C?this.B.ah:this.B.Ue:this.B.Ue;this.K|=2;return a}function hi(a,b){var c=this.F&this.O,d=(1<<(this.H&31))-1;return a&~(d<>(this.F&this.O)&(1<<(this.H&31))-1&this.O}function ji(a,b){if(-1===this.C){switch(this.aa&7){case 0:this.F=this.F&-256|a;break;case 1:this.H=this.H&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.F=this.F&-65281|a<<8;break;case 5:this.H=this.H&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}this.A-=this.B.dh}else this.D=this.C,pf(this,a),this.A-=this.B.bh;return b} +function ki(a,b){if(-1===this.C){switch(this.aa&7){case 0:this.F=this.F&~this.O|a;break;case 1:this.H=this.H&~this.O|a;break;case 2:this.L=this.L&~this.O|a;break;case 3:this.G=this.G&~this.O|a;break;case 4:B(this,C(this)&~this.O|a);break;case 5:this.M=this.G&~this.O|a;break;case 6:this.J=this.J&~this.O|a;break;case 7:this.I=this.I&~this.O|a}this.A-=this.B.dh}else{this.D=this.C;if(!(this.K&2)){var c=this.Da.Kb(this.fb,this.T);this.K&8?(this.Bb(c,a),this.Bb(this.Da.Kb(0,1),a>>8),this.K&=-9):this.Lb(c, +a)}this.A-=this.B.bh}return b}function li(a,b){a^=b;Ze(this,a,128);this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return a}function mi(a,b){this.A-=-1===this.D?-1===this.C?this.B.$b:this.B.zb:this.B.nc;return Ze(this,a^b,this.wb)&this.O}function ni(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function oi(a){var b=a-1|0;Se(this,a,1,b,this.wb|62,!0);this.A-=2;return a&~this.O|b&this.O} +function pi(a,b,c){c>>>=0;if(!c||c<=b>>>0)return!1;var d=0,e=1,f=this.Jl;f[0]=c>>>0;f[1]=0;c=this.Ol;c[0]=a>>>0;for(c[1]=b>>>0;0>>=0,a[1]++),e+=e;do 0<=ni(c,f)&&(a=c,b=f,a[0]-=b[0],a[1]-=b[1],0>a[0]&&(a[0]>>>=0,a[1]--),d+=e),a=f,a[0]>>>=1,a[1]&1&&(a[0]=(a[0]|2147483648)>>>0),a[1]>>>=1,e/=2;while(1<=e);this.Ba=d;this.Sa=c[0];return!0}function qi(a){var b=a+1|0;Se(this,a,1,b,this.wb|62);this.A-=2;return a&~this.O|b&this.O} +function zd(a){this.Vc=a;this.pa&-2147483648&&Mb(this)}function ri(a){this.K|=1;this.ec.call(this,a);this.A-=-1===this.C?4:5}function Qh(a,b,c){if(c){16>>16-c)&65535;Ze(this,a,32768,d&32768)}return a}function Sh(a,b,c){if(c){var d=a<>>32-c;Ze(this,a,-2147483648,d&-2147483648)}return a}function Wh(a,b,c){if(c){16>>c-1;a=(d>>>1|b<<16-c)&65535;Ze(this,a,32768,d&1)}return a} +function ai(a,b,c){if(c){var d=a>>>c-1;a=d>>>1|b<<32-c;Ze(this,a,-2147483648,d&1)}return a}function si(){this.A-=-1===this.C?2:this.B.yj;return 1}function ti(){var a=this.H&255;this.A-=(-1===this.C?this.B.Ug:this.B.Tg)+(a<this.sc?(-1!=this.Tc&&(this.Tc!==this.fa.ha&&(this.fa.tb=this.Tc&3,Oe(this,this.Tc)),this.Tc=-1),this.Uc!==this.da&&Pe(this,this.Uc),-1!=this.uc&&(this.uc!==this.W.ha&&md(this,this.uc),this.uc=-1),-1!==this.ma&&(this.ma!==this.Aa&&B(this,this.lc&~this.W.ta|this.ma-this.W.va),this.ma=-1)):8!=this.sc?(b=0,a=8):(b=0,a=-1,he(this),e=d=!1)):Pe(this,this.Uc);var f=a,g=b,h=mf(this,this.da);204!=h||this.Qc||(d=!1);this.N&131072&&(6==f&& +99==h||13==f&&205==h)&&(d=!1);983040<=this.da&&1048575>=this.da&&(d=!1);if(d){var k=this.X.cb,f="Fault "+ja(f,2,!0)+(null!=g?" ("+ja(g,4,!0)+")":"")+" on opcode "+ja(h,2,!0);d&&k&&(f+=" (blocked)");this.wa(f);Mc(this)}if(d&&e)throw-1;if(e)throw this.sc=a,yi.call(this,a,b,c),this.Uc=this.da,this.K=1==a?this.K|8192:this.K|4096,a;}function je(a,b,c){this.rd=a;a=0;b&&(a|=1);c&&(a|=2);3==this.La&&(a|=4);x.call(this,14,a)} +function Ai(a){var b=a.nb&7680;a.ha&65528&&(6144==b||7168==b||7168>b&&a.jc>8&255;break;case 197:c=this.H>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F&255;break;case 1:b=this.H&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.F>>8&255;break;case 5:b=this.H>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=this.F&-256|a;break;case 1:this.H= +this.H&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.F=this.F&-65281|a<<8;break;case 5:this.H=this.H&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function pe(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=I(this,this.G+this.J);this.D=this.C;break;case 1:b=I(this,this.G+this.I);this.D=this.C;break;case 2:b=J(this,this.M+this.J);this.D=this.C;break;case 3:b=J(this,this.M+this.I);this.D=this.C;break;case 4:b=I(this,this.J);this.D=this.C;break;case 5:b=I(this,this.I);this.D=this.C;break;case 6:b=I(this,Q(this));this.D=this.C;break;case 7:b=I(this,this.G);this.D=this.C;break;case 64:b=I(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:b=I(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=J(this,this.M+this.J+this.P());this.D=this.C;break;case 67:b=J(this,this.M+this.I+this.P());this.D=this.C;break;case 68:b=I(this,this.J+this.P());this.D=this.C;break;case 69:b=I(this,this.I+this.P());this.D=this.C;break;case 70:b=J(this,this.M+this.P());this.D=this.C;break;case 71:b=I(this,this.G+this.P());this.D=this.C;break;case 128:b=I(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:b=I(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:b=J(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:b=J(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:b=I(this,this.J+Q(this));this.D=this.C;break;case 133:b=I(this,this.I+Q(this));this.D=this.C;break;case 134:b=J(this,this.M+Q(this));this.D=this.C;break;case 135:b=I(this,this.G+Q(this));this.D=this.C;break;case 192:b=this.F&255;break;case 193:b=this.H&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.F>>8&255;break; +case 197:b=this.H>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b=this.G>>8&255;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F&255;break;case 1:c=this.H&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.F>>8&255;break;case 5:c=this.H>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:pf(this,a);this.A-=this.B.Bc;break;case 1:case 2:pf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:pf(this, +a);this.A-=this.B.gc;break;case 6:pf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:pf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:pf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:pf(this,a);this.A-=this.B.Pa;break;case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H= +this.H&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function qe(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=I(this,this.G+this.J);this.D=this.C;break;case 1:c=I(this,this.G+this.I);this.D=this.C;break;case 2:c=J(this,this.M+this.J);this.D=this.C;break;case 3:c=J(this,this.M+this.I);this.D=this.C;break;case 4:c=I(this,this.J);this.D=this.C;break;case 5:c=I(this,this.I);this.D=this.C;break;case 6:c=I(this,Q(this));this.D=this.C;break;case 7:c=I(this,this.G);this.D=this.C;break;case 64:c=I(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:c=I(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=J(this,this.M+this.J+this.P());this.D=this.C;break;case 67:c=J(this,this.M+this.I+this.P());this.D=this.C;break;case 68:c=I(this,this.J+this.P());this.D=this.C;break;case 69:c=I(this,this.I+this.P());this.D=this.C;break;case 70:c=J(this,this.M+this.P());this.D=this.C;break;case 71:c=I(this,this.G+this.P());this.D=this.C;break;case 128:c=I(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:c=I(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:c=J(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:c=J(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:c=I(this,this.J+Q(this));this.D=this.C;break;case 133:c=I(this,this.I+Q(this));this.D=this.C;break;case 134:c=J(this,this.M+Q(this));this.D=this.C;break;case 135:c=I(this,this.G+Q(this));this.D=this.C;break;case 192:c=this.F&255;break;case 193:c=this.H&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.F>>8&255;break; +case 197:c=this.H>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:pf(this,a);this.A-=this.B.Bc;break;case 1:case 2:pf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:pf(this,a);this.A-=this.B.gc;break;case 6:pf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:pf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:pf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:pf(this, +a);this.A-=this.B.Pa;break;case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H=this.H&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function re(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=K(this,this.G+this.J);this.A-=this.B.Bc;break;case 1:c=K(this,this.G+this.I);this.A-=this.B.Cc;break;case 2:c=L(this,this.M+this.J);this.A-=this.B.Cc;break;case 3:c=L(this,this.M+this.I);this.A-=this.B.Bc;break;case 4:c=K(this,this.J);this.A-=this.B.gc;break;case 5:c=K(this,this.I);this.A-=this.B.gc;break;case 6:c=K(this,Q(this));this.A-=this.B.$c;break;case 7:c=K(this,this.G);this.A-=this.B.gc;break;case 64:c=K(this,this.G+this.J+this.P()); +this.A-=this.B.Mb;break;case 65:c=K(this,this.G+this.I+this.P());this.A-=this.B.Nb;break;case 66:c=L(this,this.M+this.J+this.P());this.A-=this.B.Nb;break;case 67:c=L(this,this.M+this.I+this.P());this.A-=this.B.Mb;break;case 68:c=K(this,this.J+this.P());this.A-=this.B.Pa;break;case 69:c=K(this,this.I+this.P());this.A-=this.B.Pa;break;case 70:c=L(this,this.M+this.P());this.A-=this.B.Pa;break;case 71:c=K(this,this.G+this.P());this.A-=this.B.Pa;break;case 128:c=K(this,this.G+this.J+Q(this));this.A-=this.B.Mb; +break;case 129:c=K(this,this.G+this.I+Q(this));this.A-=this.B.Nb;break;case 130:c=L(this,this.M+this.J+Q(this));this.A-=this.B.Nb;break;case 131:c=L(this,this.M+this.I+Q(this));this.A-=this.B.Mb;break;case 132:c=K(this,this.J+Q(this));this.A-=this.B.Pa;break;case 133:c=K(this,this.I+Q(this));this.A-=this.B.Pa;break;case 134:c=L(this,this.M+Q(this));this.A-=this.B.Pa;break;case 135:c=K(this,this.G+Q(this));this.A-=this.B.Pa;break;case 192:c=this.F&65535;break;case 193:c=this.H&65535;break;case 194:c= +this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c=this.M&65535;break;case 198:c=this.J&65535;break;case 199:c=this.I&65535;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F&65535;break;case 1:b=this.H&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=C(this)&65535;break;case 5:b=this.M&65535;break;case 6:b=this.J&65535;break;case 7:b=this.I&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=this.F&-65536| +a;break;case 1:this.H=this.H&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:B(this,C(this)&-65536|a);break;case 5:this.M=this.M&-65536|a;break;case 6:this.J=this.J&-65536|a;break;case 7:this.I=this.I&-65536|a}} +function se(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=K(this,this.G+this.J);this.D=this.C;break;case 1:b=K(this,this.G+this.I);this.D=this.C;break;case 2:b=L(this,this.M+this.J);this.D=this.C;break;case 3:b=L(this,this.M+this.I);this.D=this.C;break;case 4:b=K(this,this.J);this.D=this.C;break;case 5:b=K(this,this.I);this.D=this.C;break;case 6:b=K(this,Q(this));this.D=this.C;break;case 7:b=K(this,this.G);this.D=this.C;break;case 64:b=K(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:b=K(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=L(this,this.M+this.J+this.P());this.D=this.C;break;case 67:b=L(this,this.M+this.I+this.P());this.D=this.C;break;case 68:b=K(this,this.J+this.P());this.D=this.C;break;case 69:b=K(this,this.I+this.P());this.D=this.C;break;case 70:b=L(this,this.M+this.P());this.D=this.C;break;case 71:b=K(this,this.G+this.P());this.D=this.C;break;case 128:b=K(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:b=K(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:b=L(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:b=L(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:b=K(this,this.J+Q(this));this.D=this.C;break;case 133:b=K(this,this.I+Q(this));this.D=this.C;break;case 134:b=L(this,this.M+Q(this));this.D=this.C;break;case 135:b=K(this,this.G+Q(this));this.D=this.C;break;case 192:b=this.F&65535;break;case 193:b=this.H&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=C(this)&65535; +break;case 197:b=this.M&65535;break;case 198:b=this.J&65535;break;case 199:b=this.I&65535;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F&65535;break;case 1:c=this.H&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=C(this)&65535;break;case 5:c=this.M&65535;break;case 6:c=this.J&65535;break;case 7:c=this.I&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:qf(this,a);this.A-=this.B.Bc;break;case 1:case 2:qf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:qf(this, +a);this.A-=this.B.gc;break;case 6:qf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:qf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:qf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:qf(this,a);this.A-=this.B.Pa;break;case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:B(this,C(this)&-65536|a);break; +case 197:this.M=this.M&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a}} +function te(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=K(this,this.G+this.J);this.D=this.C;break;case 1:c=K(this,this.G+this.I);this.D=this.C;break;case 2:c=L(this,this.M+this.J);this.D=this.C;break;case 3:c=L(this,this.M+this.I);this.D=this.C;break;case 4:c=K(this,this.J);this.D=this.C;break;case 5:c=K(this,this.I);this.D=this.C;break;case 6:c=K(this,Q(this));this.D=this.C;break;case 7:c=K(this,this.G);this.D=this.C;break;case 64:c=K(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:c=K(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=L(this,this.M+this.J+this.P());this.D=this.C;break;case 67:c=L(this,this.M+this.I+this.P());this.D=this.C;break;case 68:c=K(this,this.J+this.P());this.D=this.C;break;case 69:c=K(this,this.I+this.P());this.D=this.C;break;case 70:c=L(this,this.M+this.P());this.D=this.C;break;case 71:c=K(this,this.G+this.P());this.D=this.C;break;case 128:c=K(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:c=K(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:c=L(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:c=L(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:c=K(this,this.J+Q(this));this.D=this.C;break;case 133:c=K(this,this.I+Q(this));this.D=this.C;break;case 134:c=L(this,this.M+Q(this));this.D=this.C;break;case 135:c=K(this,this.G+Q(this));this.D=this.C;break;case 192:c=this.F&65535;break;case 193:c=this.H&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535; +break;case 197:c=this.M&65535;break;case 198:c=this.J&65535;break;case 199:c=this.I&65535;break;default:c=0}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:qf(this,a);this.A-=this.B.Bc;break;case 1:case 2:qf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:qf(this,a);this.A-=this.B.gc;break;case 6:qf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:qf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:qf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:qf(this, +a);this.A-=this.B.Pa;break;case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:B(this,C(this)&-65536|a);break;case 197:this.M=this.M&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a}} +function ue(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=M(this,this.G+this.J);this.A-=this.B.Bc;break;case 1:c=M(this,this.G+this.I);this.A-=this.B.Cc;break;case 2:c=O(this,this.M+this.J);this.A-=this.B.Cc;break;case 3:c=O(this,this.M+this.I);this.A-=this.B.Bc;break;case 4:c=M(this,this.J);this.A-=this.B.gc;break;case 5:c=M(this,this.I);this.A-=this.B.gc;break;case 6:c=M(this,Q(this));this.A-=this.B.$c;break;case 7:c=M(this,this.G);this.A-=this.B.gc;break;case 64:c=M(this,this.G+this.J+this.P()); +this.A-=this.B.Mb;break;case 65:c=M(this,this.G+this.I+this.P());this.A-=this.B.Nb;break;case 66:c=O(this,this.M+this.J+this.P());this.A-=this.B.Nb;break;case 67:c=O(this,this.M+this.I+this.P());this.A-=this.B.Mb;break;case 68:c=M(this,this.J+this.P());this.A-=this.B.Pa;break;case 69:c=M(this,this.I+this.P());this.A-=this.B.Pa;break;case 70:c=O(this,this.M+this.P());this.A-=this.B.Pa;break;case 71:c=M(this,this.G+this.P());this.A-=this.B.Pa;break;case 128:c=M(this,this.G+this.J+Q(this));this.A-=this.B.Mb; +break;case 129:c=M(this,this.G+this.I+Q(this));this.A-=this.B.Nb;break;case 130:c=O(this,this.M+this.J+Q(this));this.A-=this.B.Nb;break;case 131:c=O(this,this.M+this.I+Q(this));this.A-=this.B.Mb;break;case 132:c=M(this,this.J+Q(this));this.A-=this.B.Pa;break;case 133:c=M(this,this.I+Q(this));this.A-=this.B.Pa;break;case 134:c=O(this,this.M+Q(this));this.A-=this.B.Pa;break;case 135:c=M(this,this.G+Q(this));this.A-=this.B.Pa;break;case 192:c=this.F;break;case 193:c=this.H;break;case 194:c=this.L;break; +case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.M;break;case 198:c=this.J;break;case 199:c=this.I;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F;break;case 1:b=this.H;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=C(this);break;case 5:b=this.M;break;case 6:b=this.J;break;case 7:b=this.I;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=a;break;case 1:this.H=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:B(this,a);break;case 5:this.M= +a;break;case 6:this.J=a;break;case 7:this.I=a}} +function ve(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=M(this,this.G+this.J);this.D=this.C;break;case 1:b=M(this,this.G+this.I);this.D=this.C;break;case 2:b=O(this,this.M+this.J);this.D=this.C;break;case 3:b=O(this,this.M+this.I);this.D=this.C;break;case 4:b=M(this,this.J);this.D=this.C;break;case 5:b=M(this,this.I);this.D=this.C;break;case 6:b=M(this,Q(this));this.D=this.C;break;case 7:b=M(this,this.G);this.D=this.C;break;case 64:b=M(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:b=M(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=O(this,this.M+this.J+this.P());this.D=this.C;break;case 67:b=O(this,this.M+this.I+this.P());this.D=this.C;break;case 68:b=M(this,this.J+this.P());this.D=this.C;break;case 69:b=M(this,this.I+this.P());this.D=this.C;break;case 70:b=O(this,this.M+this.P());this.D=this.C;break;case 71:b=M(this,this.G+this.P());this.D=this.C;break;case 128:b=M(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:b=M(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:b=O(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:b=O(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:b=M(this,this.J+Q(this));this.D=this.C;break;case 133:b=M(this,this.I+Q(this));this.D=this.C;break;case 134:b=O(this,this.M+Q(this));this.D=this.C;break;case 135:b=M(this,this.G+Q(this));this.D=this.C;break;case 192:b=this.F;break;case 193:b=this.H;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=C(this);break;case 197:b=this.M;break; +case 198:b=this.J;break;case 199:b=this.I;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F;break;case 1:c=this.H;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=C(this);break;case 5:c=this.M;break;case 6:c=this.J;break;case 7:c=this.I;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:rf(this,a);this.A-=this.B.Bc;break;case 1:case 2:rf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:rf(this,a);this.A-=this.B.gc;break;case 6:rf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:rf(this, +a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:rf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:rf(this,a);this.A-=this.B.Pa;break;case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:B(this,a);break;case 197:this.M=a;break;case 198:this.J=a;break;case 199:this.I=a}} +function we(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=M(this,this.G+this.J);this.D=this.C;break;case 1:c=M(this,this.G+this.I);this.D=this.C;break;case 2:c=O(this,this.M+this.J);this.D=this.C;break;case 3:c=O(this,this.M+this.I);this.D=this.C;break;case 4:c=M(this,this.J);this.D=this.C;break;case 5:c=M(this,this.I);this.D=this.C;break;case 6:c=M(this,Q(this));this.D=this.C;break;case 7:c=M(this,this.G);this.D=this.C;break;case 64:c=M(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:c=M(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=O(this,this.M+this.J+this.P());this.D=this.C;break;case 67:c=O(this,this.M+this.I+this.P());this.D=this.C;break;case 68:c=M(this,this.J+this.P());this.D=this.C;break;case 69:c=M(this,this.I+this.P());this.D=this.C;break;case 70:c=O(this,this.M+this.P());this.D=this.C;break;case 71:c=M(this,this.G+this.P());this.D=this.C;break;case 128:c=M(this,this.G+this.J+Q(this));this.D=this.C;break;case 129:c=M(this,this.G+this.I+Q(this)); +this.D=this.C;break;case 130:c=O(this,this.M+this.J+Q(this));this.D=this.C;break;case 131:c=O(this,this.M+this.I+Q(this));this.D=this.C;break;case 132:c=M(this,this.J+Q(this));this.D=this.C;break;case 133:c=M(this,this.I+Q(this));this.D=this.C;break;case 134:c=O(this,this.M+Q(this));this.D=this.C;break;case 135:c=M(this,this.G+Q(this));this.D=this.C;break;case 192:c=this.F;break;case 193:c=this.H;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.M;break; +case 198:c=this.J;break;case 199:c=this.I}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:rf(this,a);this.A-=this.B.Bc;break;case 1:case 2:rf(this,a);this.A-=this.B.Cc;break;case 4:case 5:case 7:rf(this,a);this.A-=this.B.gc;break;case 6:rf(this,a);this.A-=this.B.$c;break;case 64:case 67:case 128:case 131:rf(this,a);this.A-=this.B.Mb;break;case 65:case 66:case 129:case 130:rf(this,a);this.A-=this.B.Nb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:rf(this, +a);this.A-=this.B.Pa;break;case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:B(this,a);break;case 197:this.M=a;break;case 198:this.J=a;break;case 199:this.I=a}} +function xe(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=I(this,this.F);break;case 1:c=I(this,this.H);break;case 2:c=I(this,this.L);break;case 3:c=I(this,this.G);break;case 4:c=I(this,Ci.call(this,0));break;case 5:c=I(this,Q(this));break;case 6:c=I(this,this.J);break;case 7:c=I(this,this.I);break;case 64:c=I(this,this.F+this.P());break;case 65:c=I(this,this.H+this.P());break;case 66:c=I(this,this.L+this.P());break;case 67:c=I(this,this.G+this.P());break;case 68:c=I(this,Ci.call(this,1)+this.P()); +break;case 69:c=J(this,this.M+this.P());break;case 70:c=I(this,this.J+this.P());break;case 71:c=I(this,this.I+this.P());break;case 128:c=I(this,this.F+Q(this));break;case 129:c=I(this,this.H+Q(this));break;case 130:c=I(this,this.L+Q(this));break;case 131:c=I(this,this.G+Q(this));break;case 132:c=I(this,Ci.call(this,2)+Q(this));break;case 133:c=J(this,this.M+Q(this));break;case 134:c=I(this,this.J+Q(this));break;case 135:c=I(this,this.I+Q(this));break;case 192:c=this.F&255;break;case 193:c=this.H& +255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.F>>8&255;break;case 197:c=this.H>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F&255;break;case 1:b=this.H&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.F>>8&255;break;case 5:b=this.H>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F= +this.F&-256|a;break;case 1:this.H=this.H&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.F=this.F&-65281|a<<8;break;case 5:this.H=this.H&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function ye(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=I(this,this.F);this.D=this.C;break;case 1:b=I(this,this.H);this.D=this.C;break;case 2:b=I(this,this.L);this.D=this.C;break;case 3:b=I(this,this.G);this.D=this.C;break;case 4:b=I(this,Ci.call(this,0));this.D=this.C;break;case 5:b=I(this,Q(this));this.D=this.C;break;case 6:b=I(this,this.J);this.D=this.C;break;case 7:b=I(this,this.I);this.D=this.C;break;case 64:b=I(this,this.F+this.P());this.D=this.C;break;case 65:b=I(this,this.H+this.P()); +this.D=this.C;break;case 66:b=I(this,this.L+this.P());this.D=this.C;break;case 67:b=I(this,this.G+this.P());this.D=this.C;break;case 68:b=I(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:b=J(this,this.M+this.P());this.D=this.C;break;case 70:b=I(this,this.J+this.P());this.D=this.C;break;case 71:b=I(this,this.I+this.P());this.D=this.C;break;case 128:b=I(this,this.F+Q(this));this.D=this.C;break;case 129:b=I(this,this.H+Q(this));this.D=this.C;break;case 130:b=I(this,this.L+Q(this));this.D= +this.C;break;case 131:b=I(this,this.G+Q(this));this.D=this.C;break;case 132:b=I(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:b=J(this,this.M+Q(this));this.D=this.C;break;case 134:b=I(this,this.J+Q(this));this.D=this.C;break;case 135:b=I(this,this.I+Q(this));this.D=this.C;break;case 192:b=this.F&255;break;case 193:b=this.H&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.F>>8&255;break;case 197:b=this.H>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b= +this.G>>8&255;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F&255;break;case 1:c=this.H&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.F>>8&255;break;case 5:c=this.H>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H= +this.H&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:pf(this,a)}} +function ze(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=I(this,this.F);this.D=this.C;break;case 1:c=I(this,this.H);this.D=this.C;break;case 2:c=I(this,this.L);this.D=this.C;break;case 3:c=I(this,this.G);this.D=this.C;break;case 4:c=I(this,Ci.call(this,0));this.D=this.C;break;case 5:c=I(this,Q(this));this.D=this.C;break;case 6:c=I(this,this.J);this.D=this.C;break;case 7:c=I(this,this.I);this.D=this.C;break;case 64:c=I(this,this.F+this.P());this.D=this.C;break;case 65:c=I(this,this.H+this.P()); +this.D=this.C;break;case 66:c=I(this,this.L+this.P());this.D=this.C;break;case 67:c=I(this,this.G+this.P());this.D=this.C;break;case 68:c=I(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:c=J(this,this.M+this.P());this.D=this.C;break;case 70:c=I(this,this.J+this.P());this.D=this.C;break;case 71:c=I(this,this.I+this.P());this.D=this.C;break;case 128:c=I(this,this.F+Q(this));this.D=this.C;break;case 129:c=I(this,this.H+Q(this));this.D=this.C;break;case 130:c=I(this,this.L+Q(this));this.D= +this.C;break;case 131:c=I(this,this.G+Q(this));this.D=this.C;break;case 132:c=I(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:c=J(this,this.M+Q(this));this.D=this.C;break;case 134:c=I(this,this.J+Q(this));this.D=this.C;break;case 135:c=I(this,this.I+Q(this));this.D=this.C;break;case 192:c=this.F&255;break;case 193:c=this.H&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.F>>8&255;break;case 197:c=this.H>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c= +this.G>>8&255;break;default:c=0}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H=this.H&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:pf(this,a)}} +function Ae(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=K(this,this.F);break;case 1:c=K(this,this.H);break;case 2:c=K(this,this.L);break;case 3:c=K(this,this.G);break;case 4:c=K(this,Ci.call(this,0));break;case 5:c=K(this,Q(this));break;case 6:c=K(this,this.J);break;case 7:c=K(this,this.I);break;case 64:c=K(this,this.F+this.P());break;case 65:c=K(this,this.H+this.P());break;case 66:c=K(this,this.L+this.P());break;case 67:c=K(this,this.G+this.P());break;case 68:c=K(this,Ci.call(this,1)+this.P()); +break;case 69:c=L(this,this.M+this.P());break;case 70:c=K(this,this.J+this.P());break;case 71:c=K(this,this.I+this.P());break;case 128:c=K(this,this.F+Q(this));break;case 129:c=K(this,this.H+Q(this));break;case 130:c=K(this,this.L+Q(this));break;case 131:c=K(this,this.G+Q(this));break;case 132:c=K(this,Ci.call(this,2)+Q(this));break;case 133:c=L(this,this.M+Q(this));break;case 134:c=K(this,this.J+Q(this));break;case 135:c=K(this,this.I+Q(this));break;case 192:c=this.F&65535;break;case 193:c=this.H& +65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c=this.M&65535;break;case 198:c=this.J&65535;break;case 199:c=this.I&65535;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F&65535;break;case 1:b=this.H&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=C(this)&65535;break;case 5:b=this.M&65535;break;case 6:b=this.J&65535;break;case 7:b=this.I&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F= +this.F&-65536|a;break;case 1:this.H=this.H&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:B(this,C(this)&-65536|a);break;case 5:this.M=this.M&-65536|a;break;case 6:this.J=this.J&-65536|a;break;case 7:this.I=this.I&-65536|a}} +function Be(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=K(this,this.F);this.D=this.C;break;case 1:b=K(this,this.H);this.D=this.C;break;case 2:b=K(this,this.L);this.D=this.C;break;case 3:b=K(this,this.G);this.D=this.C;break;case 4:b=K(this,Ci.call(this,0));this.D=this.C;break;case 5:b=K(this,Q(this));this.D=this.C;break;case 6:b=K(this,this.J);this.D=this.C;break;case 7:b=K(this,this.I);this.D=this.C;break;case 64:b=K(this,this.F+this.P());this.D=this.C;break;case 65:b=K(this,this.H+this.P()); +this.D=this.C;break;case 66:b=K(this,this.L+this.P());this.D=this.C;break;case 67:b=K(this,this.G+this.P());this.D=this.C;break;case 68:b=K(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:b=L(this,this.M+this.P());this.D=this.C;break;case 70:b=K(this,this.J+this.P());this.D=this.C;break;case 71:b=K(this,this.I+this.P());this.D=this.C;break;case 128:b=K(this,this.F+Q(this));this.D=this.C;break;case 129:b=K(this,this.H+Q(this));this.D=this.C;break;case 130:b=K(this,this.L+Q(this));this.D= +this.C;break;case 131:b=K(this,this.G+Q(this));this.D=this.C;break;case 132:b=K(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:b=L(this,this.M+Q(this));this.D=this.C;break;case 134:b=K(this,this.J+Q(this));this.D=this.C;break;case 135:b=K(this,this.I+Q(this));this.D=this.C;break;case 192:b=this.F&65535;break;case 193:b=this.H&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=C(this)&65535;break;case 197:b=this.M&65535;break;case 198:b=this.J&65535;break; +case 199:b=this.I&65535;break;default:b=0}switch(this.aa>>3&7){case 0:c=this.F&65535;break;case 1:c=this.H&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=C(this)&65535;break;case 5:c=this.M&65535;break;case 6:c=this.J&65535;break;case 7:c=this.I&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:B(this,C(this)& +-65536|a);break;case 197:this.M=this.M&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a;break;default:qf(this,a)}} +function Ce(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=K(this,this.F);this.D=this.C;break;case 1:c=K(this,this.H);this.D=this.C;break;case 2:c=K(this,this.L);this.D=this.C;break;case 3:c=K(this,this.G);this.D=this.C;break;case 4:c=K(this,Ci.call(this,0));this.D=this.C;break;case 5:c=K(this,Q(this));this.D=this.C;break;case 6:c=K(this,this.J);this.D=this.C;break;case 7:c=K(this,this.I);this.D=this.C;break;case 64:c=K(this,this.F+this.P());this.D=this.C;break;case 65:c=K(this,this.H+this.P()); +this.D=this.C;break;case 66:c=K(this,this.L+this.P());this.D=this.C;break;case 67:c=K(this,this.G+this.P());this.D=this.C;break;case 68:c=K(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:c=L(this,this.M+this.P());this.D=this.C;break;case 70:c=K(this,this.J+this.P());this.D=this.C;break;case 71:c=K(this,this.I+this.P());this.D=this.C;break;case 128:c=K(this,this.F+Q(this));this.D=this.C;break;case 129:c=K(this,this.H+Q(this));this.D=this.C;break;case 130:c=K(this,this.L+Q(this));this.D= +this.C;break;case 131:c=K(this,this.G+Q(this));this.D=this.C;break;case 132:c=K(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:c=L(this,this.M+Q(this));this.D=this.C;break;case 134:c=K(this,this.J+Q(this));this.D=this.C;break;case 135:c=K(this,this.I+Q(this));this.D=this.C;break;case 192:c=this.F&65535;break;case 193:c=this.H&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c=this.M&65535;break;case 198:c=this.J&65535;break; +case 199:c=this.I&65535;break;default:c=0}a=a[this.aa>>3&7].call(this,c,b.call(this));switch(d){case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:B(this,C(this)&-65536|a);break;case 197:this.M=this.M&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a;break;default:qf(this,a)}} +function De(a){var b,c;switch((this.aa=this.ka())&199){case 0:c=M(this,this.F);break;case 1:c=M(this,this.H);break;case 2:c=M(this,this.L);break;case 3:c=M(this,this.G);break;case 4:c=M(this,Ci.call(this,0));break;case 5:c=M(this,Q(this));break;case 6:c=M(this,this.J);break;case 7:c=M(this,this.I);break;case 64:c=M(this,this.F+this.P());break;case 65:c=M(this,this.H+this.P());break;case 66:c=M(this,this.L+this.P());break;case 67:c=M(this,this.G+this.P());break;case 68:c=M(this,Ci.call(this,1)+this.P()); +break;case 69:c=O(this,this.M+this.P());break;case 70:c=M(this,this.J+this.P());break;case 71:c=M(this,this.I+this.P());break;case 128:c=M(this,this.F+Q(this));break;case 129:c=M(this,this.H+Q(this));break;case 130:c=M(this,this.L+Q(this));break;case 131:c=M(this,this.G+Q(this));break;case 132:c=M(this,Ci.call(this,2)+Q(this));break;case 133:c=O(this,this.M+Q(this));break;case 134:c=M(this,this.J+Q(this));break;case 135:c=M(this,this.I+Q(this));break;case 192:c=this.F;break;case 193:c=this.H;break; +case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.M;break;case 198:c=this.J;break;case 199:c=this.I;break;default:c=0}var d=this.aa>>3&7;switch(d){case 0:b=this.F;break;case 1:b=this.H;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=C(this);break;case 5:b=this.M;break;case 6:b=this.J;break;case 7:b=this.I;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=a;break;case 1:this.H=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:B(this, +a);break;case 5:this.M=a;break;case 6:this.J=a;break;case 7:this.I=a}} +function Ee(a){var b,c,d=(this.aa=this.ka())&199;switch(d){case 0:b=M(this,this.F);this.D=this.C;break;case 1:b=M(this,this.H);this.D=this.C;break;case 2:b=M(this,this.L);this.D=this.C;break;case 3:b=M(this,this.G);this.D=this.C;break;case 4:b=M(this,Ci.call(this,0));this.D=this.C;break;case 5:b=M(this,Q(this));this.D=this.C;break;case 6:b=M(this,this.J);this.D=this.C;break;case 7:b=M(this,this.I);this.D=this.C;break;case 64:b=M(this,this.F+this.P());this.D=this.C;break;case 65:b=M(this,this.H+this.P()); +this.D=this.C;break;case 66:b=M(this,this.L+this.P());this.D=this.C;break;case 67:b=M(this,this.G+this.P());this.D=this.C;break;case 68:b=M(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:b=O(this,this.M+this.P());this.D=this.C;break;case 70:b=M(this,this.J+this.P());this.D=this.C;break;case 71:b=M(this,this.I+this.P());this.D=this.C;break;case 128:b=M(this,this.F+Q(this));this.D=this.C;break;case 129:b=M(this,this.H+Q(this));this.D=this.C;break;case 130:b=M(this,this.L+Q(this));this.D= +this.C;break;case 131:b=M(this,this.G+Q(this));this.D=this.C;break;case 132:b=M(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:b=O(this,this.M+Q(this));this.D=this.C;break;case 134:b=M(this,this.J+Q(this));this.D=this.C;break;case 135:b=M(this,this.I+Q(this));this.D=this.C;break;case 192:b=this.F;break;case 193:b=this.H;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=C(this);break;case 197:b=this.M;break;case 198:b=this.J;break;case 199:b=this.I;break;default:b=0}switch(this.aa>> +3&7){case 0:c=this.F;break;case 1:c=this.H;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=C(this);break;case 5:c=this.M;break;case 6:c=this.J;break;case 7:c=this.I;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:B(this,a);break;case 197:this.M=a;break;case 198:this.J=a;break;case 199:this.I=a;break;default:rf(this,a)}} +function Fe(a,b){var c,d=(this.aa=this.ka())&199;switch(d){case 0:c=M(this,this.F);this.D=this.C;break;case 1:c=M(this,this.H);this.D=this.C;break;case 2:c=M(this,this.L);this.D=this.C;break;case 3:c=M(this,this.G);this.D=this.C;break;case 4:c=M(this,Ci.call(this,0));this.D=this.C;break;case 5:c=M(this,Q(this));this.D=this.C;break;case 6:c=M(this,this.J);this.D=this.C;break;case 7:c=M(this,this.I);this.D=this.C;break;case 64:c=M(this,this.F+this.P());this.D=this.C;break;case 65:c=M(this,this.H+this.P()); +this.D=this.C;break;case 66:c=M(this,this.L+this.P());this.D=this.C;break;case 67:c=M(this,this.G+this.P());this.D=this.C;break;case 68:c=M(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:c=O(this,this.M+this.P());this.D=this.C;break;case 70:c=M(this,this.J+this.P());this.D=this.C;break;case 71:c=M(this,this.I+this.P());this.D=this.C;break;case 128:c=M(this,this.F+Q(this));this.D=this.C;break;case 129:c=M(this,this.H+Q(this));this.D=this.C;break;case 130:c=M(this,this.L+Q(this));this.D= +this.C;break;case 131:c=M(this,this.G+Q(this));this.D=this.C;break;case 132:c=M(this,Ci.call(this,2)+Q(this));this.D=this.C;break;case 133:c=O(this,this.M+Q(this));this.D=this.C;break;case 134:c=M(this,this.J+Q(this));this.D=this.C;break;case 135:c=M(this,this.I+Q(this));this.D=this.C;break;case 192:c=this.F;break;case 193:c=this.H;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.M;break;case 198:c=this.J;break;case 199:c=this.I;break;default:c=0}a=a[this.aa>> +3&7].call(this,c,b.call(this));switch(d){case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:B(this,a);break;case 197:this.M=a;break;case 198:this.J=a;break;case 199:this.I=a;break;default:rf(this,a)}} +function Ci(a){var b=this.ka(),c=b>>6,d,e;switch(b>>3&7){case 0:d=this.F;break;case 1:d=this.H;break;case 2:d=this.L;break;case 3:d=this.G;break;case 4:d=0;break;case 5:d=this.M;break;case 6:d=this.J;break;case 7:d=this.I}switch(b&7){case 0:e=this.F;break;case 1:e=this.H;break;case 2:e=this.L;break;case 3:e=this.G;break;case 4:e=C(this);this.Ca=this.Gb;break;case 5:a?(e=this.M,this.Ca=this.Gb):e=Q(this);break;case 6:e=this.J;break;case 7:e=this.I}return(d<>8&255;9<(c&15)||Ve(this)?(c+=6,80286<=this.ca&&255>8&255;9<(c&15)||Ve(this)?(c=c-6&15,d=d-1&255,a=b=1):a=b=0;this.F=this.F&-65536|d<<8|c;a?$e(this):af(this);b?hf(this):ff(this);this.A-=this.B.Pd},function(){this.F=qi.call(this,this.F)},function(){this.H=qi.call(this,this.H)},function(){this.L=qi.call(this,this.L)},function(){this.G=qi.call(this,this.G)},function(){B(this, +qi.call(this,C(this)))},function(){this.M=qi.call(this,this.M)},function(){this.J=qi.call(this,this.J)},function(){this.I=qi.call(this,this.I)},function(){this.F=oi.call(this,this.F)},function(){this.H=oi.call(this,this.H)},function(){this.L=oi.call(this,this.L)},function(){this.G=oi.call(this,this.G)},function(){B(this,oi.call(this,C(this)))},function(){this.M=oi.call(this,this.M)},function(){this.J=oi.call(this,this.J)},function(){this.I=oi.call(this,this.I)},function(){E(this,this.F&this.O);this.A-= +this.B.tc},function(){E(this,this.H&this.O);this.A-=this.B.tc},function(){E(this,this.L&this.O);this.A-=this.B.tc},function(){E(this,this.G&this.O);this.A-=this.B.tc},function(){E(this,C(this)-2&65535);this.A-=this.B.tc},function(){E(this,this.M&this.O);this.A-=this.B.tc},function(){E(this,this.J&this.O);this.A-=this.B.tc},function(){E(this,this.I&this.O);this.A-=this.B.tc},function(){this.F=this.F&~this.O|A(this);this.A-=this.B.ac},function(){this.H=this.H&~this.O|A(this);this.A-=this.B.ac},function(){this.L= +this.L&~this.O|A(this);this.A-=this.B.ac},function(){this.G=this.G&~this.O|A(this);this.A-=this.B.ac},function(){B(this,C(this)&~this.O|A(this));this.A-=this.B.ac},function(){this.M=this.M&~this.O|A(this);this.A-=this.B.ac},function(){this.J=this.J&~this.O|A(this);this.A-=this.B.ac},function(){this.I=this.I&~this.O|A(this);this.A-=this.B.ac},Di,Ei,Fi,Gi,Hi,Ii,Ji,Ki,Li,Mi,Ni,Oi,Pi,Qi,Ri,Si,Di,Ei,Fi,Gi,Hi,Ii,Ji,Ki,Li,Mi,Ni,Oi,Pi,Qi,Ri,Si,Ti,function(){this.eb.call(this,hj,this.ya);this.A-=-1===this.D? +1:this.B.Nf},Ti,function(){this.eb.call(this,hj,this.P);this.A-=-1===this.D?1:this.B.Nf},function(){this.ec.call(this,fi)},function(){this.za.call(this,gi)},function(){this.Yb.call(this,ji)},function(){this.ja.call(this,ki)},Vi,Wi,Xi,Yi,function(){this.K|=1;this.za.call(this,vh)},function(){this.K|=1;this.Ca=this.Gb=this.cg;this.ja.call(this,lh)},function(){var a;this.ja.call(this,uh);switch(this.aa>>3&7){case 0:a=this.F;this.F=this.ua;ud(this,a);break;case 1:a=this.H;this.H=this.ua;Oe(this,a);break; +case 2:a=this.L;this.L=this.ua;md(this,a);break;case 3:a=this.G;this.G=this.ua;td(this,a);break;case 4:a=C(this);B(this,this.ua);80386<=this.ca?this.rb.load(a):ud(this,a);break;case 5:a=this.M;this.M=this.ua;80386<=this.ca?this.vb.load(a):Oe(this,a);break;case 6:a=this.J;this.J=this.ua;md(this,a);break;case 7:a=this.I,this.I=this.ua,td(this,a)}},function(){this.K|=1;this.ma=this.Aa;this.ua=A(this);this.eb.call(this,ij,wi);this.ma=-1},function(){this.A-=3},function(){var a=this.F;this.F=this.F&~this.O| +this.H&this.O;this.H=this.H&~this.O|a&this.O;this.A-=3},function(){var a=this.F;this.F=this.F&~this.O|this.L&this.O;this.L=this.L&~this.O|a&this.O;this.A-=3},function(){var a=this.F;this.F=this.F&~this.O|this.G&this.O;this.G=this.G&~this.O|a&this.O;this.A-=3},function(){var a=this.F,b=C(this);this.F=this.F&~this.O|b&this.O;B(this,b&~this.O|a&this.O);this.A-=3},function(){var a=this.F;this.F=this.F&~this.O|this.M&this.O;this.M=this.M&~this.O|a&this.O;this.A-=3},function(){var a=this.F;this.F=this.F& +~this.O|this.J&this.O;this.J=this.J&~this.O|a&this.O;this.A-=3},function(){var a=this.F;this.F=this.F&~this.O|this.I&this.O;this.I=this.I&~this.O|a&this.O;this.A-=3},function(){this.F=2==this.T?this.F&-65536|this.F<<24>>24&65535:this.F<<16>>16;this.A-=2},function(){this.L=2==this.T?this.L&-65536|(this.F&32768?65535:0):this.F&-2147483648?-1:0;this.A-=this.B.Ei},function(){xi.call(this,this.ya(),tf(this));this.A-=this.B.Hi},function(){this.A-=3},function(){var a=wd(this);a&131072&&3>this.Zb?x.call(this, +13,0):(E(this,a&-196609),this.A-=this.B.tc)},function(){if(this.N&131072&&3>this.Zb)x.call(this,13,0);else{var a=A(this),a=a&65535|this.N&-65536;xd(this,a);this.A-=this.B.ac}},function(){var a=this.F>>8&255;a&1?$e(this):af(this);a&4?(this.resultType&=-3,this.N|=4):(this.resultType&=-3,this.N&=-5);a&16?hf(this):ff(this);a&64?jf(this):gf(this);a&128?(this.resultType&=-17,this.N|=128):(this.resultType&=-17,this.N&=-129);this.A-=this.B.Ob},function(){this.F=this.F&-65281|(wd(this)&213)<<8;this.A-=this.B.Ob}, +function(){var a=this.F&-256,b;b=Q(this);b=this.Ia(this.Ca.sb(b,1));this.F=a|b;this.A-=this.B.Jg},function(){this.F=this.F&~this.O|rd(this,this.Ca,Q(this));this.A-=this.B.Jg},function(){var a=Q(this),b=this.F;this.Bb(this.Ca.Kb(a,1),b);this.A-=this.B.Kg},function(){sf(this,this.Ca,Q(this),this.F);this.A-=this.B.Kg},function(){var a=1,b=0,c=this.ta,d=this.B.Lg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Ng,this.ba&256||(this.A-=this.B.Mg));if(a--){var e=this.Ia(this.Ca.sb(this.J&c,1));this.Bb(this.xa.Kb(this.I& +c,1),e);e=this.N&1024?-1:1;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.A-=d;this.H=this.H&~c|this.H-b&c;a&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.Lg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Ng,this.ba&256||(this.A-=this.B.Mg));if(a--){sf(this,this.xa,this.I&c,rd(this,this.Ca,this.J&c));var e=this.N&1024?-this.T:this.T;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.A-=d;this.H=this.H&~c|this.H-b&c;a&&(Re(this),this.K|=256)}},function(){var a= +1,b=0,c=this.ta,d=this.B.wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.yg,this.ba&256||(this.A-=this.B.xg));if(a--){var e=nf(this,this.Ca,this.J),f=nf(this,this.xa,this.I);this.D=this.C;$g.call(this,e,f);e=this.N&1024?-1:1;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.zb;a&&We(this)==(this.ba&64)&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.yg,this.ba&256||(this.A-=this.B.xg));if(a--){var e= +of(this,this.Ca,this.J&c),f=of(this,this.xa,this.I&c);this.D=this.C;ah.call(this,e,f);e=this.N&1024?-this.T:this.T;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.zb;a&&We(this)==(this.ba&64)&&(Re(this),this.K|=256)}},function(){Ze(this,this.F&this.ka(),128);this.A-=this.B.Pd},function(){Ze(this,this.F&this.ya(),this.wb);this.A-=this.B.Pd},function(){var a=1,b=0,c=this.ta,d=this.B.Wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Yg,this.ba&256||(this.A-= +this.B.Xg));if(a--){var e=this.F;this.Bb(this.xa.Kb(this.I&c,1),e);this.H=this.H&~c|this.H-b&c;80546<=this.pd&&80564>=this.pd&&!(this.ba&2048)!=(103!=this.Ia(this.da))&&(c^=-65536);this.I=this.I&~c|this.I+(this.N&1024?-1:1)&c;this.A-=d;a&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.Wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Yg,this.ba&256||(this.A-=this.B.Xg));a--&&(sf(this,this.xa,this.I&c,this.F),this.I=this.I&~c|this.I+(this.N&1024?-this.T:this.T)&c,this.H=this.H&~c|this.H- +b&c,this.A-=d,a&&(Re(this),this.K|=256))},function(){var a=1,b=0,c=this.ta,d=this.B.Dg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Fg,this.ba&256||(this.A-=this.B.Eg));if(a--){var e=this.Ia(this.Ca.sb(this.J&c,1));this.F=this.F&-256|e;this.J=this.J&~c|this.J+(this.N&1024?-1:1)&c;this.H=this.H&~c|this.H-b&c;this.A-=d;a&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.Dg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Fg,this.ba&256||(this.A-=this.B.Eg));if(a--){var e=rd(this,this.Ca,this.J&c);this.F= +this.F&~this.O|e;this.J=this.J&~c|this.J+(this.N&1024?-this.T:this.T)&c;this.H=this.H&~c|this.H-b&c;this.A-=d;a&&(Re(this),this.K|=256)}},function(){var a=1,b=0,c=this.ta,d=this.B.Qg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Sg,this.ba&256||(this.A-=this.B.Rg));if(a--){var e=this.F&255,f=nf(this,this.xa,this.I);this.D=this.C;$g.call(this,e,f);this.I=this.I&~c|this.I+(this.N&1024?-1:1)&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.zb;a&&We(this)==(this.ba&64)&&(Re(this),this.K|=256)}},function(){var a= +1,b=0,c=this.ta,d=this.B.Qg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Sg,this.ba&256||(this.A-=this.B.Rg));if(a--){var e=this.F&this.O,f=of(this,this.xa,this.I&c);this.D=this.C;ah.call(this,e,f);this.I=this.I&~c|this.I+(this.N&1024?-this.T:this.T)&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.zb;a&&We(this)==(this.ba&64)&&(Re(this),this.K|=256)}},function(){this.F=this.F&-256|this.ka();this.A-=this.B.Ob},function(){this.H=this.H&-256|this.ka();this.A-=this.B.Ob},function(){this.L=this.L&-256|this.ka(); +this.A-=this.B.Ob},function(){this.G=this.G&-256|this.ka();this.A-=this.B.Ob},function(){this.F=this.F&-65281|this.ka()<<8;this.A-=this.B.Ob},function(){this.H=this.H&-65281|this.ka()<<8;this.A-=this.B.Ob},function(){this.L=this.L&-65281|this.ka()<<8;this.A-=this.B.Ob},function(){this.G=this.G&-65281|this.ka()<<8;this.A-=this.B.Ob},function(){this.F=this.F&~this.O|this.ya();this.A-=this.B.Ob},function(){this.H=this.H&~this.O|this.ya();this.A-=this.B.Ob},function(){this.L=this.L&~this.O|this.ya(); +this.A-=this.B.Ob},function(){this.G=this.G&~this.O|this.ya();this.A-=this.B.Ob},function(){B(this,C(this)&~this.O|this.ya());this.A-=this.B.Ob},function(){this.M=this.M&~this.O|this.ya();this.A-=this.B.Ob},function(){this.J=this.J&~this.O|this.ya();this.A-=this.B.Ob},function(){this.I=this.I&~this.O|this.ya();this.A-=this.B.Ob},bj,cj,bj,cj,function(){this.ja.call(this,mh)},function(){this.ja.call(this,kh)},function(){this.K|=1;this.Rc.call(this,jj,this.ka)},function(){this.K|=1;this.eb.call(this, +jj,this.ya)},dj,ej,dj,ej,function(){if(this.N&131072&&3>this.Zb)x.call(this,13,0);else{var a=this.B.Yi;this.sc=-1;yi.call(this,3,null,a)}},function(){var a=this.ka();if(this.N&131072&&3>this.Zb)x.call(this,13,0);else{var b;a:{b=this.lf[a];if(void 0!==b)for(var c=0;cthis.Zb)x.call(this,13,0);else{var a=this.B.Zi;this.sc=-1;yi.call(this,4,null,a)}else this.A-= +this.B.$i},function(){if(this.N&131072&&3>this.Zb)x.call(this,13,0);else{this.uc=this.W.ha;this.ma=this.Aa;this.A-=this.B.Wi;if(this.pa&1&&this.N&16384){var a=this.ga(this.la.va+0);nd(this.fa,a,!1)}else{var a=this.La,b=A(this),c=A(this),d=A(this);if(this.N&131072)d=d&131071|this.N&-131072;else if(d&131072){var e=A(this),f=A(this),g=A(this),h=A(this),k=A(this),m=A(this);pd(this,!0,!0);md(this,f);B(this,e);ud(this,g);td(this,h);this.rb.load(k);this.vb.load(m)}null!=yd(this,b,c,!1)&&(xd(this,d,a),this.ag&& +Je(this,this.da))}this.uc=this.ma=-1}},function(){this.Rc.call(this,Zi,si)},function(){this.eb.call(this,2==this.T?$i:aj,si)},function(){this.Rc.call(this,Zi,ti)},function(){this.eb.call(this,2==this.T?$i:aj,ti)},function(){var a=this.ka();if(a){var b=this.F&255;this.F=this.F&-65536|b/a<<8|b%a;Ze(this,this.F,128);this.A-=this.B.Bi}else Bi.call(this)},function(){var a=this.F&255,b=(this.F>>8&255)*this.ka()|0,c=a+b|0;this.F=this.F&-65536|c&255;Se(this,a,b,c,191);this.A-=this.B.Ai},function(){this.F= +this.F&-256|(Te(this)?255:0);this.A-=2},function(){this.F=this.F&-256|nf(this,this.Ca,this.G+(this.F&255));this.A-=this.B.zj},function(){fj.call(this,216)},function(){fj.call(this,217)},function(){fj.call(this,218)},function(){fj.call(this,219)},function(){fj.call(this,220)},function(){fj.call(this,221)},function(){fj.call(this,222)},function(){fj.call(this,223)},function(){var a=this.P(),b=this.H-1&this.ta;this.H=this.H&~this.ta|b;b&&!We(this)?(H(this,F(this)+a),this.A-=this.B.gj):this.A-=this.B.Gg}, +function(){var a=this.P(),b=this.H-1&this.ta;this.H=this.H&~this.ta|b;b&&We(this)?(H(this,F(this)+a),this.A-=this.B.Hg):this.A-=this.B.Ig},function(){var a=this.P(),b=this.H-1&this.ta;this.H=this.H&~this.ta|b;b?(H(this,F(this)+a),this.A-=this.B.fj):this.A-=this.B.Gg},function(){var a=this.P();this.H&this.ta?this.A-=this.B.Ig:(H(this,F(this)+a),this.A-=this.B.Hg)},function(){var a=this.ka();lf(this,a,1)&&(this.F=this.F&-256|fc(this.oa,a,1,this.da-2)&255,this.A-=this.B.Bg)},function(){var a=this.ka(); +lf(this,a,this.T)&&(this.F=this.F&~this.O|fc(this.oa,a,this.T,this.da-2)&this.O,this.A-=this.B.Bg)},function(){var a=this.ka();lf(this,a,1)&&(hc(this.oa,a,1,this.F&255,this.da-2),this.A-=this.B.Pg)},function(){var a=this.ka();lf(this,a,this.T)&&(hc(this.oa,a,this.T,this.F&this.O,this.da-2),this.A-=this.B.Pg)},function(){var a=this.ya(),b=F(this),a=b+a;E(this,b);H(this,a);this.A-=this.B.Fi},function(){var a=this.ya();H(this,F(this)+a);this.A-=this.B.Cg},function(){yd(this,this.ya(),tf(this));this.A-= +this.B.bj},function(){var a=this.P();H(this,F(this)+a);this.A-=this.B.Cg},function(){var a=this.L&65535;lf(this,a,1)&&(this.F=this.F&-256|fc(this.oa,a,1,this.da-1)&255,this.A-=this.B.Ag)},function(){var a=this.L&65535;lf(this,a,this.T)&&(this.F=this.F&~this.O|fc(this.oa,a,this.T,this.da-1)&this.O,this.A-=this.B.Ag)},function(){var a=this.L&65535;lf(this,a,1)&&(hc(this.oa,a,1,this.F&255,this.da-1),this.A-=this.B.Og)},function(){var a=this.L&65535;lf(this,a,2)&&(hc(this.oa,a,this.T,this.F&this.O,this.da- +1),this.A-=this.B.Og)},gj,gj,function(){this.K|=132;this.A-=this.B.Hc},function(){this.K|=68;this.A-=this.B.Hc},function(){this.N&131072?x.call(this,13,0):(this.Qa|=4,this.A-=2,this.N&512||Mc(this))},function(){Te(this)?af(this):$e(this);this.A-=2},function(){this.fc=!1;this.Rc.call(this,kj,vi);this.fc&&(this.F=this.F&~this.O|this.Ba&this.O)},function(){this.fc=!1;this.eb.call(this,lj,vi);this.fc&&(this.F=this.F&~this.O|this.Ba&this.O,this.L=this.L&~this.O|this.Sa&this.O)},function(){af(this);this.A-= +2},function(){$e(this);this.A-=2},function(){this.La>this.Zb?x.call(this,13,0):(this.N&=-513,this.A-=this.B.Di)},function(){this.La>this.Zb?x.call(this,13,0):(this.N|=512,this.K|=4,this.A-=2)},function(){this.N&=-1025;this.A-=2},function(){this.N|=1024;this.A-=2},function(){this.Rc.call(this,Cd,vi)},function(){this.eb.call(this,Dd,vi)}],Ui=[Kg,wh,Ig,yh,Mg,di,li,$g],hj=[Lg,xh,Jg,zh,Ng,ei,mi,ah],ij=[function(a,b){this.A-=-1===this.D?this.B.ac:this.B.rj;return b},ch,ch,ch,ch,ch,ch,ch],jj=[function(a, +b){this.A-=-1===this.D?this.B.jj:this.B.hj;return b},T,T,T,T,T,T,T],Zi=[function(a,b){var c=a;if(b&=this.Ma){var d;(b&=7)?(d=a<>8-b)&255):d=a<<7;df(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ma){var d;(b&=7)?(d=a<<8-b,c=(a>>>b|d)&255):d=a;df(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ma){var d=ef(this);(b%=9)?(c=(a<>9-b)&255,d=a<>b|d<<8-b|a<< +9-b)&255,d=a<<8-b):d<<=7;df(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ma){var d=0;8>>b-1,a=b>>>1&255,Ze(this,a,128,b&1,a&128);return a},T,function(a,b){if(b&=this.Ma)9>24>>b-1,a=b>>1&255,Ze(this,a,128,b&1);return a}],$i=[function(a,b){var c=a;if(b&=this.Ma){var d;(b&=15)?(d=a<>16-b)&65535):d=a<<15;df(this,c,d,32768)}return c},function(a,b){var c= +a;if(b&=this.Ma){var d;(b&=15)?(d=a<<16-b,c=(a>>>b|d)&65535):d=a;df(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ma){var d=ef(this);(b%=17)?(c=(a<>17-b)&65535,d=a<>b|d<<16-b|a<<17-b)&65535,d=a<<16-b):d<<=15;df(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ma){var d=0;16>>b-1,a=b>>>1&65535,Ze(this,a,32768,b&1,a&32768);return a},T,function(a,b){if(b&=this.Ma)17>16>>b-1,a=b>>1&65535,Ze(this,a,32768,b&1);return a}],aj=[function(a,b){var c=a;if(b&=this.Ma)c=a<>>32-b,df(this,c,a<>>b|d;df(this,c,d,-2147483648)}return c},function(a,b){var c=a;if(b&=this.Ma)c=ef(this),c=a<>>32-b>>>1,df(this,c,a<>>b|c<<32-b|a<<32-b<<1,df(this,c,a<<32-b,-2147483648);return c},function(a,b){var c=a;if(b&=this.Ma)a<<=b-1,c=a<<1,Ze(this,c,-2147483648,a&-2147483648,(c^a)&-2147483648);return c},function(a,b){if(b&=this.Ma)b=a>>>b-1,a=b>>>1,Ze(this,a,-2147483648,b&1,a&-2147483648);return a},T,function(a,b){if(b&=this.Ma)b=a>>b-1,a=b>>1,Ze(this,a,-2147483648,b&1);return a}],kj=[function(a,b){b=this.ka();Ze(this,a&b,128);this.A-=-1===this.C?this.B.$g:this.B.Zg;this.K|=2;return a}, +T,function(a){this.A-=-1===this.C?this.B.Te:this.B.Se;return a^255},function(a){var b=-a|0;Se(this,0,a,b,191,!0);this.A-=-1===this.C?this.B.Te:this.B.Se;return b&255},function(a){this.Ba=(this.F&255)*a&65535;this.Ba&65280?($e(this),bf(this)):(af(this),cf(this));this.fc=!0;this.A-=-1===this.C?this.B.nj:this.B.mj;this.K|=2;return a},function(a){var b=(this.F<<24>>24)*(a<<24>>24)|0;this.Ba=b&65535;127b?($e(this),bf(this)):(af(this),cf(this));this.fc=!0;this.A-=-1===this.C?this.B.Ti:this.B.Si; +this.K|=2;return a},function(a,b){if(!a)return Bi.call(this),a;var c=(b=this.F&65535)/a;if(255>24,d=(b=this.F<<16>>16)/c|0;if(d!=d<<24>>24||8086==this.ca&&-128==d)return Bi.call(this),a;this.Ba=d&255|(b%c&255)<<8;this.fc=!0;this.A-=-1===this.C?this.B.Pi:this.B.Oi;this.K|=2;return a}],lj=[function(a,b){b=this.ya();Ze(this, +a&b,this.wb);this.A-=-1===this.C?this.B.$g:this.B.Zg;this.K|=2;return a},T,function(a){this.A-=-1===this.C?this.B.Te:this.B.Se;return a^this.O},function(a){var b=-a|0;Se(this,0,a,b,this.wb|63,!0);this.A-=-1===this.C?this.B.Te:this.B.Se;return b&this.O},function(a,b){2==this.T?(b=this.F&65535,b=b*a|0,this.Ba=b&65535,this.Sa=b>>16&65535):(ih.call(this,a,this.F),80563==this.pd&&68657152==this.F&&129==a&&(this.Sa=0));this.Sa?($e(this),bf(this)):(af(this),cf(this));this.fc=!0;this.A-=-1===this.C?this.B.pj: +this.B.oj;this.K|=2;return a},function(a,b){2==this.T?(b=this.F&65535,b=(b<<16>>16)*(a<<16>>16)|0,this.Ba=b&65535,this.Sa=b>>16&65535,b=32767b):(hh.call(this,a,this.F),b=this.Sa!=this.Ba>>31);b?($e(this),bf(this)):(af(this),cf(this));this.fc=!0;this.A-=-1===this.C?this.B.Vi:this.B.Ui;this.K|=2;return a},function(a,b){if(2==this.T){if(!a)return Bi.call(this),a;b=65536*(this.L&65535)+(this.F&65535);var c=b/a;if(65536<=c)return Bi.call(this),a;this.Ba=c&65535;this.Sa=b%a&65535}else{if(!pi.call(this, +this.F,this.L,a))return Bi.call(this),a;this.Ba|=0;this.Sa|=0}this.fc=!0;this.A-=-1===this.C?this.B.Ni:this.B.Mi;this.K|=2;return a},function(a,b){if(2==this.T){if(!a)return Bi.call(this),a;var c=a<<16>>16,d=(b=this.L<<16|this.F&65535)/c|0;if(d!=d<<16>>16||8086==this.ca&&-32768==d)return Bi.call(this),a;this.Ba=d&65535;this.Sa=b%c&65535}else{b=this.F;var c=this.L,d=a,e=0,f=0;0>d&&(d=-d|0,e=1-e);0>c&&(b=-b|0,c=~c+(b?0:1)|0,f=1,e=1-e);!pi.call(this,b,c,d)||this.Ba>2147483647+e||this.Sa>2147483647+f? +b=!1:(e&&(this.Ba=-this.Ba),f&&(this.Sa=-this.Sa),b=!0);if(!b)return Bi.call(this),a;this.Ba|=0;this.Sa|=0}this.fc=!0;this.A-=-1===this.C?this.B.Ri:this.B.Qi;this.K|=2;return a}],Cd=[function(a){var b=a+1|0;Se(this,a,1,b,190);this.A-=-1===this.C?this.B.Re:this.B.Qe;return b&255},function(a){var b=a-1|0;Se(this,a,1,b,190,!0);this.A-=-1===this.C?this.B.Re:this.B.Qe;return b&255},T,T,T,T,T,T],Dd=[function(a){var b=a+1|0;Se(this,a,1,b,this.wb|62);this.A-=-1===this.C?this.B.Re:this.B.Qe;return b&this.O}, +function(a){var b=a-1|0;Se(this,a,1,b,this.wb|62,!0);this.A-=-1===this.C?this.B.Re:this.B.Qe;return b&this.O},function(a){E(this,F(this));H(this,a);this.A-=-1===this.C?this.B.Ji:this.B.Ii;this.K|=2;return a},function(a){if(-1===this.C)return T.call(this,a);this.ma=this.Aa;xi.call(this,a,this.ga(this.C+this.T));this.A-=this.B.Gi;this.K|=2;this.ma=-1;return a},function(a){H(this,a);this.A-=-1===this.C?this.B.dj:this.B.cj;this.K|=2;return a},function(a){if(-1===this.C)return T.call(this,a);yd(this,a, +this.ga(this.C+this.T));this.A-=this.B.aj;this.K|=2;return a},function(a){var b=a;this.K&512&&(a=a-2&65535,80286>this.ca&&(b=a));E(this,b);this.A-=-1===this.C?this.B.tc:this.B.tj;this.K|=2;return a},T];function fe(){this.ja.call(this,ii);this.A-=-1===this.C?6:13}function ge(){this.za.call(this,hi);this.A-=-1===this.C?12:19}var Yd=Array(256);Yd[0]=function(){16>(this.Ia(this.da)&56)&&(this.K|=1);this.eb.call(this,this.di,vi)};Yd[1]=function(){this.Ia(this.da)&16||(this.K|=1);this.eb.call(this,mj,vi)}; +Yd[2]=function(){!(this.pa&1)||this.N&131072?x.call(this,6):this.ja.call(this,jh)};Yd[3]=function(){!(this.pa&1)||this.N&131072?x.call(this,6):this.ja.call(this,ph)}; +Yd[5]=function(){this.La?x.call(this,13,0,0,!0):(kf(this,this.ga(2054)),this.I=this.ga(2086),this.J=this.ga(2088),this.M=this.ga(2090),this.G=this.ga(2094),this.L=this.ga(2096),this.H=this.ga(2098),this.F=this.ga(2100),jd(this.xa,2102,this.ga(2084)),jd(this.fa,2108,this.ga(2082)),jd(this.W,2114,this.ga(2080)),jd(this.Ga,2120,this.ga(2078)),xd(this,this.ga(2072)),H(this,this.ga(2074)),B(this,this.ga(2092)),this.Jb=this.ga(2126)|this.Ia(2128)<<16,this.Oc=this.Jb+this.ga(2130),this.Xb=this.ga(2138)| +this.Ia(2140)<<16,this.Qc=this.Xb+this.ga(2142),jd(this.mc,2132,this.ga(2076)),jd(this.la,2144,this.ga(2070)),this.A-=195)};Yd[6]=function(){this.La?x.call(this,13,0):(this.pa&=-9,this.A-=2)};Yd[11]=Fd;Yd[166]=Fd;Yd[255]=Fd;var G=[];G[5]=Fd; +G[7]=function(){if(this.La)x.call(this,13,0,0,!0);else{var a=this.xa.sb(this.I&this.ta,204);if(-1!==a){this.pa=this.ea(a);pd(this);this.pa&-2147483648?Mb(this):ke(this);var b=this.ea(a+168),c=(b&24576)>>13;xd(this,this.ea(a+4),c);this.Jb=this.ea(a+112);this.Oc=this.Jb+this.ea(a+116);this.Xb=this.ea(a+100);this.Qc=this.Xb+this.ea(a+104);hd(this.mc,this.ea(a+56),this.ea(a+120),this.ea(a+124),this.ea(a+128));hd(this.la,this.ea(a+52),this.ea(a+84),this.ea(a+88),this.ea(a+92));this.I=this.ea(a+12);this.J= +this.ea(a+16);this.M=this.ea(a+20);this.G=this.ea(a+28);this.L=this.ea(a+32);this.H=this.ea(a+36);this.F=this.ea(a+40);hd(this.vb,this.ea(a+60),this.ea(a+132),this.ea(a+136),this.ea(a+140));hd(this.rb,this.ea(a+64),this.ea(a+144),this.ea(a+148),this.ea(a+152));hd(this.Ga,this.ea(a+68),this.ea(a+156),this.ea(a+160),this.ea(a+164));hd(this.W,this.ea(a+72),b,this.ea(a+172),this.ea(a+176));hd(this.fa,this.ea(a+76),this.ea(a+180),this.ea(a+184),this.ea(a+188));hd(this.xa,this.ea(a+80),this.ea(a+192),this.ea(a+ +196),this.ea(a+200));H(this,this.ea(a+8));B(this,this.ea(a+24))}this.A-=122<<(a&3?1:0)}};G[16]=Vi;G[17]=Wi;G[18]=Xi;G[19]=Yi;G[32]=function(){if(this.La)x.call(this,13,0);else{var a,b=this.ka();switch((b&56)>>3){case 0:a=this.pa;break;case 2:a=this.rd;break;case 3:a=this.Vc;break;default:Zd.call(this);return}me(this,b&7,a);this.A-=6}};G[33]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;4==b||5==b?Zd.call(this):(me(this,a&7,this.Cb[b]),this.A-=22)}}; +G[34]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=le(this,a&7);switch((a&56)>>3){case 0:this.pa=b;pd(this);this.pa&-2147483648?Mb(this):ke(this);this.A-=10;break;case 2:this.rd=b;this.A-=4;break;case 3:zd.call(this,b);this.A-=5;break;default:Zd.call(this)}}};G[35]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;4==b||5==b?Zd.call(this):(a=le(this,a&7),a!=this.Cb[b]&&(Ke(this,!1),this.Cb[b]=a,Ke(this,!0)),this.A-=4>b?22:14)}}; +G[36]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;6>b?Zd.call(this):(me(this,a&7,this.pf[b]),this.A-=12)}};G[38]=function(){if(this.La)x.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;6>b?Zd.call(this):(this.pf[b]=le(this,a&7),this.A-=12)}};G[128]=function(){var a=this.ya();Ye(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[129]=function(){var a=this.ya();Ye(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)}; +G[130]=function(){var a=this.ya();Te(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[131]=function(){var a=this.ya();Te(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[132]=function(){var a=this.ya();We(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[133]=function(){var a=this.ya();We(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[134]=function(){var a=this.ya();Te(this)||We(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka}; +G[135]=function(){var a=this.ya();Te(this)||We(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[136]=function(){var a=this.ya();Xe(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[137]=function(){var a=this.ya();Xe(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[138]=function(){var a=this.ya();Ue(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[139]=function(){var a=this.ya();Ue(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)}; +G[140]=function(){var a=this.ya();!Xe(this)!=!Ye(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[141]=function(){var a=this.ya();!Xe(this)==!Ye(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[142]=function(){var a=this.ya();We(this)||!Xe(this)!=!Ye(this)?(H(this,F(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};G[143]=function(){var a=this.ya();We(this)||!Xe(this)!=!Ye(this)?this.A-=this.B.Ka:(H(this,F(this)+a),this.A-=this.B.Ja)};G[144]=function(){ri.call(this,Ah)}; +G[145]=function(){ri.call(this,Ah)};G[146]=function(){ri.call(this,Bh)};G[147]=function(){ri.call(this,Ch)};G[148]=function(){ri.call(this,Dh)};G[149]=function(){ri.call(this,Eh)};G[150]=function(){ri.call(this,Fh)};G[151]=function(){ri.call(this,Gh)};G[152]=function(){ri.call(this,Hh)};G[153]=function(){ri.call(this,Ih)};G[154]=function(){ri.call(this,Jh)};G[155]=function(){ri.call(this,Kh)};G[156]=function(){ri.call(this,Lh)};G[157]=function(){ri.call(this,Mh)};G[158]=function(){ri.call(this,Nh)}; +G[159]=function(){ri.call(this,Oh)};G[160]=function(){sd(this,this.rb.ha,this.T,2);this.A-=this.B.Qd};G[161]=function(){this.ma=this.Aa;var a=A(this);this.rb.load(a);this.A-=this.B.ac;this.ma=-1};G[163]=function(){this.za.call(this,Wg);-1!==this.C&&(this.A-=6)};G[164]=function(){this.za.call(this,2==this.T?Ph:Rh);this.A-=-1===this.C?3:7};G[165]=function(){this.za.call(this,2==this.T?Th:Uh);this.A-=-1===this.C?3:7};G[168]=function(){sd(this,this.vb.ha,this.T,2);this.A-=this.B.Qd}; +G[169]=function(){this.ma=this.Aa;var a=A(this);this.vb.load(a);this.A-=this.B.ac;this.ma=-1};G[171]=function(){this.za.call(this,Zg);-1!==this.C&&(this.A-=5)};G[172]=function(){this.za.call(this,2==this.T?Vh:Xh);this.A-=-1===this.C?3:7};G[173]=function(){this.za.call(this,2==this.T?bi:ci);this.A-=-1===this.C?3:7};G[175]=function(){this.ja.call(this,2==this.T?eh:gh)};G[178]=function(){this.ja.call(this,qh)};G[179]=function(){this.za.call(this,Yg);-1!==this.C&&(this.A-=5)}; +G[180]=function(){this.ja.call(this,nh)};G[181]=function(){this.ja.call(this,oh)}; +G[182]=function(){this.Yb.call(this,sh);switch(this.aa>>3&7){case 0:this.F=this.F&~this.O|this.F&255;break;case 1:this.H=this.H&~this.O|this.H&255;break;case 2:this.L=this.L&~this.O|this.L&255;break;case 3:this.G=this.G&~this.O|this.G&255;break;case 4:this.lc=this.lc&~this.O|this.F>>8&255;this.F=this.ua;break;case 5:this.M=this.M&~this.O|this.H>>8&255;this.H=this.ua;break;case 6:this.J=this.J&~this.O|this.L>>8&255;this.L=this.ua;break;case 7:this.I=this.I&~this.O|this.G>>8&255,this.G=this.ua}this.A-= +-1===this.C?3:6};G[183]=function(){qd(this,2);this.ja.call(this,th);switch(this.aa>>3&7){case 0:this.F=this.F&65535;break;case 1:this.H=this.H&65535;break;case 2:this.L=this.L&65535;break;case 3:this.G=this.G&65535;break;case 4:this.lc=this.lc&65535;break;case 5:this.M=this.M&65535;break;case 6:this.J=this.J&65535;break;case 7:this.I=this.I&65535}this.A-=-1===this.C?3:6};G[186]=function(){this.eb.call(this,nj,this.ka)};G[187]=function(){this.za.call(this,Xg);-1!==this.C&&(this.A-=5)}; +G[188]=function(){this.ja.call(this,Qg)};G[189]=function(){this.ja.call(this,Rg)}; +G[190]=function(){this.Yb.call(this,sh);switch(this.aa>>3&7){case 0:this.F=this.F&~this.O|(this.F&255)<<24>>24&this.O;break;case 1:this.H=this.H&~this.O|(this.H&255)<<24>>24&this.O;break;case 2:this.L=this.L&~this.O|(this.L&255)<<24>>24&this.O;break;case 3:this.G=this.G&~this.O|(this.G&255)<<24>>24&this.O;break;case 4:this.lc=this.lc&~this.O|this.F<<16>>24&this.O;this.F=this.ua;break;case 5:this.M=this.M&~this.O|this.H<<16>>24&this.O;this.H=this.ua;break;case 6:this.J=this.J&~this.O|this.L<<16>>24& +this.O;this.L=this.ua;break;case 7:this.I=this.I&~this.O|this.G<<16>>24&this.O,this.G=this.ua}this.A-=-1===this.C?3:6};G[191]=function(){qd(this,2);this.ja.call(this,th);switch(this.aa>>3&7){case 0:this.F=this.F<<16>>16;break;case 1:this.H=this.H<<16>>16;break;case 2:this.L=this.L<<16>>16;break;case 3:this.G=this.G<<16>>16;break;case 4:this.lc=this.lc<<16>>16;break;case 5:this.M=this.M<<16>>16;break;case 6:this.J=this.J<<16>>16;break;case 7:this.I=this.I<<16>>16}this.A-=-1===this.C?3:6}; +var Le=[function(){this.A-=2+(-1===this.C?0:1);return this.mc.ha},function(){this.A-=2+(-1===this.C?0:1);return this.la.ha},function(a){this.K|=2;this.mc.load(a);this.A-=17+(-1===this.C?0:2);return a},function(a){this.K|=2;-1!==this.la.load(a)&&(this.Za(this.la.cc+4,this.la.nb|=512),this.la.type|=512);this.A-=17+(-1===this.C?0:2);return a},function(a){this.K|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.gb.load(a)&&2048!=(this.gb.nb&2560)&&(this.gb.jc>=this.La&&this.gb.jc>=(a&3)||7168==(this.gb.nb& +7168)))return jf(this),a;gf(this);return a},function(a){this.K|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.gb.load(a)&&512==(this.gb.nb&2560)&&this.gb.jc>=this.La&&this.gb.jc>=(a&3))return jf(this),a;gf(this);return a},T,T],Ed=[Wd,Wd,Wd,Wd,Wd,Wd,T,T],mj=[function(a){if(-1===this.C)x.call(this,6);else{a=this.Oc-this.Jb;var b=this.Jb;80286==this.ca?b|=-16777216:80386<=this.ca&&2!=this.T&&(a|=b<<16);this.Ta(this.C+2,b);this.A-=11}return a},function(a){if(-1===this.C)x.call(this,6);else{a=this.Qc-this.Xb; +var b=this.Xb;80286==this.ca?b|=-16777216:80386<=this.ca&&2!=this.T&&(a|=b<<16);this.Ta(this.C+2,b);this.A-=12}return a},function(a){-1===this.C||this.N&131072?x.call(this,6):(this.Jb=this.ea(this.C+2)&(this.O|this.O<<8),a&=65535,this.Oc=this.Jb+a,this.K|=2,this.A-=11);return a},function(a){-1===this.C||this.N&131072?x.call(this,6):(this.Xb=this.ea(this.C+2)&(this.O|this.O<<8),a&=65535,this.Qc=this.Xb+a,this.K|=2,this.A-=12);return a},function(){this.A-=2+(-1===this.C?0:1);return this.pa},T,function(a){this.N& +131072?x.call(this,6):(kf(this,a),this.A-=-1===this.C?3:6,this.K|=2);return a},T],nj=[T,T,T,T,Sg,Vg,Ug,Tg]; +function U(a){u.call(this,"ChipSet",a);var b=a.model;b&&!oj[b]&&q("Unrecognized ChipSet model: "+b);this.ca=oj[b]||pj;this.B=[];b=qj(a[rj]);this.B[0]=[b,b];null==b&&(this.L=[360,360],(b=a.floppies)&&b.length&&(this.L=b),sj(this,tj,this.L.length),sj(this,uj,a.monitor||(this.ca=Cf&&(this.za=this.la=2);this.M=a.scaleTimers||!1;this.Sa=a.dateRTC;this.La=this.Ma=!1;this.Ga=0;if(a=a.sound)this.Ga="number"!=typeof a||0>a||1d||1=Cf){this.F=Vj;this.J=0;this.I=Wj;this.pa=0;this.K=Xj|Yj;512<=Zj(this)&&(this.K|=ak);+bk(this,uj,void 0)==ck&&(this.K|=dk);(this.ca|0)==Hj&&(this.K=this.K|ek|fk);this.ra= +gk|hk;this.G=Array(8);this.W=0;a&&(this.A=Array(ik));jk(this,this.Sa);for(a=kk;a<=lk;a++)this.A[a]=0;for(a=mk;a>8} +l.save=function(){var a=new Me(this);a.set(0,[this.B]);for(var b=[],c=0;c=Cf&&(a.set(5,[this.F,this.J,this.I,this.pa,this.K,this.ra]),a.set(6,[this.G[7],this.G,this.W,this.A,this.ma,this.Y]));return a.data()}; +l.restore=function(a){var b,c;b=a[0];Array.isArray(b[0])?this.B=b[0]:(this.B[0][0]=b[0],this.B[1][0]=b[1]&15,this.B[0][1]=b[2],this.B[1][1]=b[3]&15);Nj(this);b=a[1];for(c=0;c=f;f++){var g="pcjs-bitCell";f||(g+=" pcjs-bitCellLeft");d+='
    '+f+"
    \n"}e.innerHTML=d;Uk(a,b,c,!0)}function Vk(a,b,c){if(b=(a=V[a.ca|0])&&a[b])for(var d in b)if(a=b[d],a.ic&1<d.ib[0]&&(d.ib[0]=255,d.ib[1]--,0>d.ib[1]&&(d.ib[1]=255)));return e}function il(a,b,c,d){a=a.D[b];c=a.Tb[c];c.ib[a.Ib]=c.dc[a.Ib]=d;a.Ib^=1} +function jl(a,b){a=a.D[b];b=a.Fb|kl;a.Fb&=~ll;return b}function ml(a,b,c){a=a.D[b];b=c&3;a.Fb=a.Fb&~(16<>2].Tb[b&3],c,d,e)}function ql(a,b,c){b=a.D[b>>2].Tb[b&3];b.Af&&b.kg&&b.Pf?(c&&(b.done=c),b.Nd||vl(a,b,!0)):c&&c(!0)} +function vl(a,b,c){c&&(b.count=b.ib[1]<<8|b.ib[0],b.type=b.mode&wl,b.ii=b.Bf=!1);for(var d=!1;0<=b.count&&(c=b.tf<<16|b.hb[1]<<8|b.hb[0],b.type==xl?(d=!0,function(c){b.kg.call(b.Af,b.Pf,-1,function(e,g){0>e&&(b.ii||(b.ii=!0),e=255);b.Nd||a.oa.Bb(c,e);(d=g)&&setTimeout(function(){yl(b)||vl(a,b)},0)})}(c)):b.type==zl?(c=a.oa.Ia(c),0>b.kg.call(b.Af,b.Pf,c)&&(b.Bf=!0)):b.type!=Al&&(b.Bf=!0)),!d&&!yl(b););} +function yl(a){if(!a.Bf&&0<=--a.count&&(a.mode&Bl?(a.hb[0]--,0>a.hb[0]&&(a.hb[0]=255,a.hb[1]--,0>a.hb[1]&&(a.hb[1]=255))):(a.hb[0]++,255>3];b=1<<(b&7);d.Ub&b||(d.Ub|=b,d.Ne=c||0,Ol(a))}function Df(a,b){var c=a.bc[b>>3];b=1<<(b&7);c.Ub&b&&(c.Ub&=~b,Ol(a))}function Ol(a,b){var c,d=-1;1>=1),Qc(a.R,d))),b==$l&&c==dm&&Nk(a))} +function em(a,b,c){var d=0,e=c&fm;b?(d=3,a.fa=c):a.ua=c;if(e==gm){if(!(c&hm))for(e=0;2>=e;e++)if(c&im<=e;e++)c&im<>nm,f=c&om,g=c±c&=qm;if(c==rm)mm(a,d+e);else{var d=d+e,h=a.qa[d];h.df=c;h.mode=g;h.hg=f;h.dc=[0,0];h.ib=[0,0];h.Id=[0,0];h.Lc=!1;h.je=!1;h.Ld=!1;h.oe=!1;Vl(a,d);b==$l&&e==am&&Df(a,bm);b==$l&&e==dm&&255==a.bc[0].Wc&&a.H==(sm|tm|um|vm)&&(e= +a.qa[0],e.zc[0]=e.dc[0],e.zc[1]=e.dc[1],e.jd=Sc(a.R,a.M))}}}function cm(a,b){a=a.qa[b];(b=a.dc[1]<<8|a.dc[0])||(b=1==a.gd?256:65536);return b}function Yc(a,b){a=a.qa[b];(b=a.zc[1]<<8|a.zc[0])||(b=1==a.gd?256:65536);return b}function mm(a,b){Wl(a,b);var c=a.qa[b];c.Id[0]=c.ib[0];c.Id[1]=c.ib[1];c.je=!0;Vl(a,b)}function Vl(a,b){a=a.qa[b];a.Yc=a.df==wm?1:0;a.gd=a.df==xm?2:1} +function Wl(a,b,c){var d=a.qa[b];if(d.Ld&&(b!=dm||a.H&sm)){var e=Sc(a.R,a.M),f=(e-d.jd)/a.Ba|0;0>f&&(d.jd=e,f=0);var g=cm(a,b),h=Yc(a,b)-f;d.mode==Yl?(0>=h&&(h=0),h||(d.Lc=!0,d.Ld=!1,b||Ff(a,bm))):d.mode==ym?(d.Lc=1!=h,0>=h&&(h=g+h,0>=h&&(h=g),d.zc[0]=h&255,d.zc[1]=h>>8&255,d.jd=e,!b&&d.Lc&&Ff(a,bm))):d.mode==Zc&&(h-=f,0>=h&&(d.Lc=!d.Lc,h=g+h,0>=h&&(h=g),d.zc[0]=h&255,d.zc[1]=h>>8&255,d.jd=e,!b&&d.Lc&&Ff(a,bm)));d.ib[0]=h&255;d.ib[1]=h>>8&255;c&&(a.jd=0)}return d} +function Xc(a,b){for(var c=0;c=Cf){b=a.R.V.yd;c=Sc(a.R,a.M);null==a.Aa&&(a.ma=Sc(a.R,a.M),a.Qa=1024,a.Aa=Math.floor(a.R.V.yd/a.Qa),Lk(a));c>=a.Y&&(a.A[Ik]|=zm,a.A[$c]&ad&&(a.A[Ik]|=Am,Ff(a,Bm)),a.Y=c+a.Aa);a.A[vk]==a.A[wk]&&a.A[xk]==a.A[yk]&&a.A[zk]==a.A[Ak]&&(a.A[Ik]|=Cm,a.A[$c]&Dm&&(a.A[Ik]|=Am,Ff(a,Bm)));var d=c-a.ma,e=Math.floor(d/b);if(e&&!(a.A[$c]&Em)){for(;e--;)if(60<=++a.A[vk]&&(a.A[vk]=0,60<=++a.A[xk]&&(a.A[xk]=0,24<=++a.A[zk]))){a.A[zk]=0;a.A[Bk]=a.A[Bk]% +7+1;var f;f=a.A[Ek];var g=ua[a.A[Dk]-1];28==g&&(f%4||!(f%100)&&f%400||g++);f=g;++a.A[Ck]>f&&(a.A[Ck]=1,12<++a.A[Dk]&&(a.A[Dk]=1,a.A[Ek]=(a.A[Ek]+1)%100))}a.A[Ik]|=Fm;a.A[$c]&Gm&&(a.A[Ik]|=Am,Ff(a,Bm))}a.ma=c-d%b}}l.jl=function(){var a=this.xa;this.ja&Hm&&(this.H&Im?a=this.B[0][1]:this.C&&(a=Jm(this.C)));return a};l.Gm=function(a,b){this.xa=b};l.kl=function(){return this.H};l.Hm=function(a,b){Om(this,b)}; +function Om(a,b){var c=!!(b&Pm),d=!!(a.H&Pm);a.H=b;a.C&&Qm(a.C,!(b&Im),!!(b&vm));c!=d&&Nk(a,c)}l.ll=function(){var a=0,a=(this.ca|0)==Lj?this.H&tm?a|this.B[1][1]&Rm:a|this.B[1][1]>>4&1:this.H&Sm?a|this.B[0][1]>>4:a|this.B[0][1]&15;this.H&sm&&Wl(this,dm).Lc&&(a=this.H&Pm?a|Tm:a|Um);return a};l.Im=function(a,b){this.Ca=b};l.ml=function(){return this.ja};l.Jm=function(a,b){this.ja=b};l.vk=function(){var a=this.C?Jm(this.C):0;this.ba&=~Vm;return a};l.Sl=function(){};l.uk=function(){return this.H}; +l.Rl=function(a,b){Om(this,b)};l.wk=function(){return this.ba};l.xk=function(){var a=this.pa;this.F&=~(Vm|Wm);this.C&&Xm(this.C);return a};l.Ul=function(a,b){if(this.F&Ym)switch(this.J){case Zm:$m(this,b);break;case an:bn(this,b);break;default:if($m(this,this.I&~Wj),this.C){a=this.C;var c=b,d=-1;switch(a.F||c){case cn:d=dn;a.Pb=[];en(a,fn);break;case gn:a.F&&(c=0);en(a,dn);a.F=c;break;case hn:a.F&&(c=0),en(a,dn),a.F=c}jn(this,d)}}this.J=b;this.F&=~Ym}; +l.yk=function(){return this.H&~(kn|ln)|(Sc(this.R)&64?ln:0)};l.Vl=function(a,b){Om(this,b)};l.zk=function(){var a=this.F&255;this.F&Wm&&(this.F|=Vm,this.F&=~Wm);return a}; +l.Tl=function(a,b){this.J=b;this.F|=Ym;a=0;this.J>=mn&&(a=this.J^15,this.J=mn);switch(this.J){case nn:jn(this,this.I);break;case on:$m(this,this.I|Wj);break;case pn:$m(this,this.I&~Wj);this.C&&Xm(this.C);break;case qn:this.C&&(this.C.Pb=[]);$m(this,this.I|Wj);jn(this,rn);bn(this,gk|hk);break;case sn:jn(this,tn);break;case un:jn(this,this.K);break;case vn:jn(this,this.ra);break;case wn:jn(this,this.I&Wj?0:xn);break;case mn:a&1&&he(this.R)}}; +function $m(a,b){a.I=b;a.F=a.F&~yn|b&zn;a.C&&Qm(a.C,!!(b&An),!(b&Wj))}function jn(a,b,c){0<=b&&(a.pa=b,c?a.F|=Vm:(a.F&=~Vm,a.F|=Wm))}function bn(a,b){a.ra=b;Ib(a.oa,!!(b&hk));b&gk||he(a.R)}function Bn(a,b){a.cac?c=c?c:12:c=(c-=12)?c+128:140,d=!0);this.A[$c]&Hn||(d&&128>4)+(d&15),e=!0);if(a==zk||a==Ak)e&&23=d?d=12==d?0:d:(d-=116,d=24==d?12:d))}}else d=b;this.A[a]=d;a==$c&&c&ad&&b&ad&&Lk(this)};l.Cj=function(a,b){this.da=b};l.tm=function(){};l.um=function(){this.qd&&yf(this.qd)}; +function Nk(a,b){if(a.N){void 0!==b?a.La=b:b=!!(a.La&&a.R&&a.R.X.cb);var c=Math.round(xj/cm(a,dm));if(20>c||2E4>>4,0,this.G,this.C,this.H),delete this.H);return!0};Ln.prototype.Qb=function(){return!0}; +function Mn(a,b,c,d){if(d)a.wa("Unable to load system ROM (error "+d+": "+b+")",0>d);else{Va(a.Cd,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.longs||e.data;if(f)a.A=f;else if(g)for(a.A=Array(4*g.length),d=c=0;c>8&255,a.A[d++]=g[c]>>16&255,a.A[d++]=g[c]>>24&255;else a.A=e;a.H=e.symbols;if(!a.A.length){q("Empty ROM: "+b);return}if(1==a.A.length){q(a.A[0]);return}}catch(h){a.wa("ROM data error: "+h.message);return}else for(b= +c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e>>d.B].ef(e&d.C,a.A[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.F?b.push(a.F):null!=a.F&&a.F.length&&(b=a.F);for(c=0;cthis.B?kk:23,c=a.A[b]|a.A[b+1]<<8,c=c+(this.A>>10);a.A[b]=c&255;a.A[b+1]=c>>8;uk(a)}}else q("No RAM allocated")}; +l.save=function(){var a=new Me(this);this.controller&&a.set(0,this.controller.save());return a.data()};l.restore=function(a){return this.controller?this.controller.restore(a[0]):!0};function Sn(a){this.F=a;this.C=Un;this.D=Vn;this.B=Wn;this.A=null}l=Sn.prototype;l.save=function(){return[this.C,this.B]};l.restore=function(a){this.Bb(0,a[0]&255);this.Bb(2,a[1]&255);return!0};l.Ia=function(a){var b=255;2>a?b=a&1?this.D>>8:this.D&255:4>a&&(b=a&1?this.B>>8:this.B&255);return b}; +l.Bb=function(a,b){if(a)2==a&&(this.B=this.B&-256|b);else if(b!=(this.C&255)){a=this.F.oa;if(b&Xn)this.A&&(Qb(a,Yn,Zn,this.A),this.A=null);else{this.A||(this.A=Rb(a,Yn,Zn));var c=Rb(a,$n,Zn);Qb(a,Yn,Zn,c,b&ao?1:Xb)}this.C=this.C&-256|b}};l.mi=function(){return bo};l.lg=function(){return co};var Tn=-2134900736,$n=16646144,Yn=917504,Zn=131072,Xn=1,ao=2,Un=65535,Vn=2575,Wn=2,bo=[null,0],co=[function(a){return this.controller.Ia(a)},null,null,function(a,b){this.controller.Bb(a,b)},null,null]; +Ma(function(){for(var a=cb(document,"pcx86","ram"),b=0;b=n.Fd&&d<=n.z&&(d-=n.Fd-n.Ed),d=po[e]==d),d){(a=a.ia["key-"+e])&&void 0!==c&&(a.style.color=c?"#ffffff":"#000000",a.style.backgroundColor=c?"#000000":"#ffffff");break}}}l.kc=function(a,b,c,d){this.na=a;this.oa=b;this.R=c;this.Ea=d;this.U=tb(a,"ChipSet");this.G=Fc(a,"autoType")||this.G;Ie(c,33,this.Bl.bind(this))}; +l.Bl=function(){if(10==(this.R.F>>8&255))if(this.M=!0,this.J)this.J(),this.J=null,this.M=!1;else{var a=this.G;!this.D&&a&&(this.D=a,this.mg(this.D))}return!0};function fo(a,b){var c=0;a.ca=null;"string"==typeof b&&(a.ca=b.toUpperCase(),c=so.indexOf(a.ca),0>c&&(c=0));if(b=so[c])a.da=parseInt(b.substr(2),10)}function Qm(a,b,c){a.L!==c&&(a.L=a.N=c)&&(a.H=!0);a.I!==b&&(a.I=b)&&!a.N&&Dn(a,!0);a.I&&a.N&&(a.Pb=[],en(a,fn),a.N=!1)}function en(a,b){a.U&&(a.Pb.unshift(b),a.H=!0,Bn(a.U,b))} +function Xm(a){var b;a.Pb.length&&a.H&&(b=a.Pb[0],a.U&&Bn(a.U,b))}function Jm(a){var b=0;a.Pb.length&&(b=a.Pb[0]);return b}function Dn(a,b){0>=1);if(b&xo){if(!1===d)return!0;d=null}null==d?d=!((c?a.C:a.Vb)&b):d||b&yo&&(b=yo);if(c){a.C&=~b;d&&(a.C|=b);c=b;var f,g;for(g in zo)d="led-"+g,e=zo[g],c&&c!=e||!(f=a.ia[d])||(f.style.backgroundColor=a.C&e?"#00ff00":"#000000")}else a.Vb&=~b,d&&(a.Vb|=b);return!0}}return!1} +function jo(a,b,c){if((W[b]||W[b+=1E3])&&a.R&&a.R.X.cb){vo[b]&&a.A.length&&0e||(e==a.A.length&&(d={},d.Xd=b,d.Vb=a.Vb,ro(a,b,!0),e++),0b.ad){if(!b.Ie){qo(a,b.Xd);return}b.Ie=!1;c=a.fa}else c=1==b.ad++?500:100;b.mh=setTimeout(function(a){return function(){Ao(a,b)}}(a),c)}} +function Co(a,b,c){var d=b;if(b>=n.Ed&&b<=n.qf)!(a.Vb&(Do|Eo|Fo))==c&&(d=b+(n.Fd-n.Ed));else if(b>=n.Fd&&b<=n.z)!!(a.Vb&(Do|Eo|Fo))==c&&(d=b-(n.Fd-n.Ed));else if(!!(a.Vb&(Do|Eo))==c){if(a=p[b])d=a}else if(a=ha[b])d=a;return d}l.Qf=function(a){a||(this.Vb&=~yo)}; +function go(a,b,c){var d=!0,e=!1,f=!1,g=b.keyCode;if(!ho(a.na))return!1;a.B="";gb(a.Cd);var h=Co(a,g,!0);a.jg&&h==n["`"]&&(g=h=27);if(W[g+1E3])if(h+=1E3,2==b.location&&(h+=2E3),oo(a,h,!1,c)){if(20==g||144==g||145==g)a.aa||(c=e=!0);if(!(c||91!=g&&93!=g))for(var k=0;k=n.Ed&&b<=n.qf||b>=n.Fd&&b<=n.z;e>>>=8;){var g=0,h=e&255;f==Po||f==Qo?d.push(f|(c?0:Oo)):(h==X?a.C&(Do|Eo)||a.C&Fo&&b||(g=h):h==Ro?a.C&(Go|So)||(g=h):h==To?a.C&(Ho|Uo)||(g=h):d.push(f|(c?0:Oo)),g&&(c?d.unshift(g):d.push(g|Oo)))}for(c=0;c"]]=52|X<<8;W[n["/"]]=53; +W[n["?"]]=53|X<<8;W[3016]=54;W[1044]=55;W[1018]=To;W[1032]=57;W[ko]=58;W[1112]=59;W[1113]=60;W[1114]=61;W[1115]=62;W[1116]=63;W[1117]=64;W[1118]=65;W[1119]=66;W[1120]=67;W[1121]=68;W[lo]=69;W[mo]=70;W[1036]=71;W[1038]=72;W[1033]=73;W[1109]=74;W[1037]=75;W[1101]=76;W[1039]=77;W[1107]=78;W[1035]=79;W[1040]=80;W[1034]=81;W[1045]=82;W[1046]=No;W[4027]=84;W[1122]=87;W[1123]=88;W[1091]=91;W[1093]=93;W[1224]=91;W[Xo]=46|Ro<<8;W[Io]=70|Ro<<8;W[4046]=No|Ro<<8|To<<16;W[4045]=82|Ro<<8|To<<16; +W[4013]=28|Ro<<8|To<<16;var cn=255,gn=243,hn=237,fn=170,dn=250,Wo=255,Vo=20;Ma(function(){for(var a=cb(document,"pcx86","keyboard"),b=0;bc.length)c=[!1,0,null,null,0,Array(b>2,32768));this.Wb=c[0];this.Ec=c[1];this.bf=c[2];this.Z=c[3];this.hc=c[4]&255;this.Tf=c[4]>>8&255;this.Ua=c[5];this.pg=$o;this.Ad=this.Ua[bp]|this.Ua[cp]<<8;this.sf=63;if(b>=On){this.sf=255;this.pg=ap;(b=c[6])||(b=[!1,0,Array(dp),0,f==ck?0:ep, +0,0,Array(fp),0,0,0,Array(gp),0,[this.ab,this.Hb,this.Xc],Array(this.Xc>>2),hp|ip|jp|kp|lp,0,-1,0,-1,0,-1,0,0,0,0,mp,np,0,0,op,Array(pp)]);this.He=b[0];this.Sd=b[1];this.vc=b[2];this.ih=b[3];this.cf=b[4];this.Wf=b[5];this.Vd=b[6];this.Ud=b[7];this.Kj=b[8];this.Lj=b[9];this.Td=b[10];this.nd=b[11];this.pb=b[12];d=b[13];"number"==typeof d&&(d=[this.ab,this.Hb,d]);this.ab=d[0];this.Hb=d[1];d=this.Xc>>2;if((this.td=b[14])&&this.td.length=On){var c=[];c[0]=a.He;c[1]=a.Sd;c[2]=a.vc;c[3]=a.ih;c[4]=a.cf;c[5]=a.Wf;c[6]=a.Vd;c[7]=a.Ud;c[8]=a.Kj;c[9]=a.Lj;c[10]=a.Td;c[11]=a.nd;c[12]=a.pb;c[13]=[a.ab,a.Hb,a.Xc];var d;if(d=a.td){var e=0,f=[];if(void 0!==d[0])for(var g=0;2>g;g++)for(var h=g;h>1;f[e++]=k;h=m}f.length=On){var d=0,e=0,f=0;switch(b){case xp:d=yp;a.Oa==Qn&&(e=zp);break;case Ap:a.Oa==On&&(d=Bp);break;case Cp:d=Dp;a.Oa==Qn&&(e=Ep);break;case Fp:d=Gp;a.Oa==Qn&&(e=Hp);break;case Ip:d=Jp;a.Oa==Qn&&(f=Kp);break;case Lp:d=Mp,a.Oa==Qn&&(f=Np)}d&&(c|=a.Ua[Op]&d?256:0,c|=a.Ua[Op]&e?512:0,c|=a.Ua[Pp]&f?512:0)}return c} +var cp=12,bp=13,$o=18,xp=6,Op=7,yp=1,Gp=2,Dp=4,Jp=8,Mp=16,Bp=32,zp=32,Hp=64,Ep=128,Pp=9,Kp=32,Np=64,Ap=10,Cp=16,Fp=18,Ip=21,Lp=24,ap=25,Qp={},Rp=(Qp[0]=255,Qp[1]=255,Qp[2]=255,Qp[3]=15,Qp[4]=127,Qp[5]=31,Qp[6]=127,Qp[7]=127,Qp[8]=3,Qp[9]=31,Qp[10]=127,Qp[11]=31,Qp[cp]=63,Qp[bp]=255,Qp[14]=63,Qp[15]=255,Qp[16]=63,Qp[17]=255,Qp),dp=20,ep=1,mp=1,fp=5,np=255,op=0,pp=256,gp=9,hp=1024,ip=4096,tp=65280,jp=0,kp=16,vp=255,lp=-2147483648,qp=[];qp[2]=hp;qp[3]=hp|ip;qp[16]=1280;qp[512]=jp;qp[1024]=jp|32; +qp[1536]=jp|96;qp[2560]=jp|160;qp[3584]=jp|224;qp[768]=jp|kp;qp[4096]=1;qp[8192]=2;qp[24576]=98;qp[40960]=162;qp[57344]=226;var up=[];up[hp]=function(a){a+=this.G;return(this.controller.pb=this.S[a])>>this.controller.eh&255};up[hp|16384]=function(a){return(this.controller.pb=this.S[(a&-4)+this.G])>>((a&3)<<3)&255};up[hp|ip]=function(a){a+=this.G;var b=this.controller.pb=this.S[a&-2];return(a&1?b>>8:b)&255}; +up[1280]=function(a){a+=this.G;a=this.controller.pb=this.S[a];for(var b=this.controller.rg,c=this.controller.qg&b,d=0,e=128;e;)(a&b)==c&&(d|=e),c>>>=1,b>>>=1,e>>=1;return d};up[jp]=function(a,b){a+=this.G;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +up[jp|32]=function(a,b){a+=this.G;b=b>>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +up[jp|96]=function(a,b){a+=this.G;b=b>>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b&=this.controller.pb;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +up[jp|160]=function(a,b){a+=this.G;b=b>>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b|=this.controller.pb;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +up[jp|224]=function(a,b){a+=this.G;b=b>>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.zd;b^=this.controller.pb;b=b&this.controller.ub|this.controller.pb&~this.controller.ub;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)};up[jp|4]=function(a,b){var c=(a&-4)+this.G;a=(a&3)<<3;b=b<>this.controller.Ac|b<<8-this.controller.Ac&255;b=(b|b<<8|b<<16|b<<24)&this.controller.ub;b=this.controller.Ve&b|this.controller.pb&~b;b=b&this.controller.Ya|this.S[a]&~this.controller.Ya;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +function Y(a,b,c,d,e){u.call(this,"Video",a);var f=this,g;this.Oc=Ea("Gecko/");this.ca=a.model;var h=Tp[this.ca]||Tp.mda;this.Oa=h[0];this.Xc=a.memory||0;this.Uc=a.switches;this.Lb=a.randomize;null==this.Lb&&(this.Lb=1);this.ba=a.mode;if(null==this.ba||null==Up[this.ba])this.ba=h[1];this.Jb=a.charCols;this.sc=a.charRows;if(void 0===this.Jb||void 0===this.sc)this.Jb=Up[this.ba][0],this.sc=Up[this.ba][1];this.Y=a.screenWidth;this.ja=a.screenHeight;this.Qc=a.scale;this.qd=12<=Math.round(this.Y/this.Jb); +this.M=b;this.J=c;this.F=(this.Ef=d)||b||null;this.Zb=a.screenColor||"black";this.Tc=(1-(Ia("flicker")||a.flicker||0)).toString();this.Eb=!1;b&&(b.style.backgroundColor=this.Zb);e&&(e.style.backgroundColor=this.Zb);b=a.smoothing;(c=Ia("smoothing"))&&(b="true"==c);null!=b&&(g=Fa(this.J,"imageSmoothingEnabled"))&&(this.J[g]=b);this.cd=a.touchScreen;this.gb=Vp;this.K=null;this.pd=a.autoLock;this.ab=this.Hb=0;this.pa=[];this.fa=Array(this.Oa==Qn?256:16);this.Ga=!1;if(this.N=e)if(g=Fa(e,"requestFullscreen")|| +Fa(e,"requestFullScreen")){this.N.A=e[g];if(e=Fa(document,"on","fullscreenchange")){var k=Fa(document,"fullscreenElement")||Fa(document,"fullScreenElement");document.addEventListener(e,function(){Wp(f,!!k)},!1)}(e=Fa(document,"on","fullscreenerror"))&&document.addEventListener(e,function(){Wp(f,null)},!1)}if(this.F&&(this.F.onfocus=function(){return f.Qf(!0)},this.F.onblur=function(){return f.Qf(!1)},this.F.Md=(g=Fa(this.F,"requestPointerLock"))&&this.F[g],this.F.B=(g=Fa(this.F,"exitPointerLock"))&& +this.F[g],this.F.Md&&(e=Fa(document,"on","pointerlockchange")))){var m=Fa(document,"pointerLockElement");document.addEventListener(e,function(){f.Xe(!(!m||document[m]!==f.F))},!1)}(this.xa=a.fontROM)&&"json"!=la(this.xa)&&(this.xa=xa()+"/api/v1/dump?file="+this.xa+"&format=bytes")}ca(Y,u);l=Y.prototype; +l.kc=function(a,b,c,d){var e=this;this.oa=b;this.R=c;this.Ea=d;c=+Fc(a,"randomize");0<=c&&1>=c&&(this.Lb=c);c=(c=Tp[this.ca])&&c[0];c!==Xp&&(ec(b,this,Yp),gc(b,this,Zp));c!==$p&&(ec(b,this,aq),gc(b,this,bq));this.Oa>=On&&(ec(b,this,cq),gc(b,this,dq));this.Oa==Qn&&(ec(b,this,eq),gc(b,this,fq));if((this.C=tb(a,"Keyboard"))&&this.M){for(var f in this.ia)0c&&(a=Math.round(c/b*100)+"%")}d.Oc?(d.M.style.width=a,d.M.style.width=a,d.M.style.display="block",d.M.style.margin="auto"):(d.N.style.width=a,d.N.style.height="auto");d.N.style.backgroundColor=d.Zb;d.N.A()}d.F&&d.F.focus()}}:c.parentNode.removeChild(c), +!0;case "lockPointer":return this.sd=c.textContent,this.F&&this.F.Md?c.onclick=function(){d.Md(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){lq(d,!0)},!0}return!1};function Wp(a,b){!b&&a.N&&(a.Oc?a.M.style.width=a.M.style.height="":a.N.style.width=a.N.style.height="");a.C&&(a.C.jg=b)}l.Md=function(a){var b=!1;this.F&&(a?this.F.Md&&(this.F.Md(),this.K&&this.K.Xe(!0),b=!0):this.F.B&&(this.F.B(),this.K&&this.K.Xe(!1),b=!0),this.F&&this.F.focus());return b}; +l.Xe=function(a){this.K&&(this.K.Xe(a),this.C&&(this.C.jg=a));var b=this.ia.lockPointer;b&&(b.textContent=a?"Press Esc to Unlock Pointer":this.sd)};function gq(a,b){var c=a.F;c&&!a.gb&&(a.gb=b,c.addEventListener("touchstart",function(b){Kn(a.U,b);a.gb!=jq&&nq(a,b,!0)},!1),b!=jq&&(c.addEventListener("touchmove",function(b){nq(a,b)},!0),c.addEventListener("touchend",function(b){nq(a,b,!1)},!1),a.mb=a.rb=a.dd=-1,a.mc=!1,a.Cb=null,a.lc=!1,a.rd=function(){a.lc=!0;a.K.ie(oq,!0)}))} +l.Qf=function(a){this.C&&this.C.Qf(a)}; +function nq(a,b,c){var d,e,f=0,g=0;d=a.M;do isNaN(d.offsetLeft)||(f+=d.offsetLeft,g+=d.offsetTop);while(d=d.offsetParent);var h=a.Y/a.M.offsetWidth,k=a.ja/a.M.offsetHeight;b.targetTouches&&b.targetTouches.length?(d=b.targetTouches[0].pageX,e=b.targetTouches[0].pageY):(d=b.pageX,e=b.pageY);d=(d-f)*h;e=(e-g)*k;if(a.gb==iq)c&&jo(a.C,pq[e/(a.ja/3)|0][d/(a.Y/3)|0],!0);else if(a.K){g=a.mc;f=b.timeStamp-a.dd;!0===c?(a.mc=500f){a.K.ie(oq,!0);a.K.ie(oq,!1);return}}if(c||0>a.mb||0>a.rb)a.mb=d,a.rb=e;c=Math.round(d-a.mb);b=Math.round(e-a.rb);a.mb=d;a.rb=e;a.K.ng(c,b,a.mb,a.rb)}}l.Rb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Qb=function(a){return a?this.save():!0}; +l.reset=function(){var a=0;this.U&&(a=+bk(this.U,uj,void 0));this.ca||(this.Oa=a==ck?$p:Xp);this.ba=qq;switch(this.Oa){case Qn:a=7;break;case On:var b=rq[this.wb];b&&(a=b[0]);a||(a=4);break;case $p:a=ck;this.ba=sq;break;default:a=2}this.da!==a&&(this.da=a);this.B=null;this.W=this.Xb=new Yo(this,$p);this.I=this.Db=new Yo(this,Xp);this.Oa>1&255,c=c>>8&~wq,c>>4==(c&15)&&(c^=15)):(d=c&255,c=(c&256?xq|yq:zq|Aq)|Bq&c>>8);cc(this.oa,b,d|c<<8)}lq(this,!0)}};function tq(a){a.A.cf&ep?(a.W=a.Xb,a.I=a.A):(a.W=a.A,a.I=a.Db)}l.save=function(){var a=new Me(this);a.set(0,sp(this.Xb));a.set(1,sp(this.Db));a.set(2,[this.da,this.ba,this.ma]);a.set(3,sp(this.A));return a.data()}; +l.restore=function(a){var b=a[2];this.da=b[0];this.ba=b[1];this.ma=b[2];this.B=null;this.W=this.Xb=new Yo(this,$p,a[0]);this.I=this.Db=new Yo(this,Xp,a[1]);this.A=new Yo(this,this.Oa,a[3],this.Xc);this.A.Wb&&tq(this);uq(this);if(!Cq(this))return!1;Dq(this);return!0}; +function kq(a,b,c,d){if(d)a.wa("Unable to load font ROM (error "+d+": "+b+")",0>d);else{Va(a.Cd,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f.length){q("Empty font ROM: "+b);return}if(1==f.length){q(f[0]);return}if(8192==f.length)Pn(a,f,[6144,0]);else if(2048==f.length)Pn(a,f,[0]);else{a.wa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.wa("Font ROM data error: "+g.message);return}(a.J||a.Ea)&&v(a)}} +function Eq(a,b){if(1==b)return a.fa[0]=Fq[zq],a.fa[1]=Fq[xq],a.fa;if(2==b){var c=a.B.bf;if(a.B===a.A){var d=a.A.vc[0],c=d&7;d&16&&(c|=8);18!=a.A.vc[1]&&(c|=32)}a.fa[0]=Fq[c&15];c=c&32?Gq:Hq;for(d=0;de;e++)f=d[e]||0,g=f<<2&252,h=f>>4&252,f=f>>10&252,a.fa[e]=[g,h,f,255];else{var k=d&&d[255];b=null!=c.vc[15]?c.vc:Iq;for(e=0;16>e;e++)f=b[e]&63,k?(f|= +(c.vc[20]&12)<<4,c.vc[16]&128&&(f&=-49,f|=(c.vc[20]&3)<<4),f=d[f],g=f<<2&252,h=f>>4&252,f=f>>10&252):(g=(f&4?170:0)|(f&32?85:0),h=(f&2?170:0)|(f&16?85:0),f=(f&1?170:0)|(f&8?85:0)),a.fa[e]=[g,h,f,255]}a.Ga=!0}return a.fa}function Pn(a,b,c,d){a.vb=b;a.Qa=c;a.Ca=d} +function uq(a,b){var c=!1;if(window&&a.vb&&(!b||a.G)){var d=0,e=a.Ca?a.Ca:8,f=Eq(a);null!=a.Qa[0]&&Jq(a,Kq,a.Qa[0],d,e,8,a.vb,f)&&(c=!0);d=a.Ca?0:2048;e=a.Ca?a.Ca:9;null!=a.Qa[1]&&(Jq(a,Lq,a.Qa[1],d,e,14,a.vb,Mq,Nq)&&(c=!0),a.Ca&&Jq(a,a.Oa,a.Qa[1],0,a.Ca,14,a.vb,f)&&(c=!0))}b||(a.aa=-1,a.za=-1,a.ra=0);return c}function Jq(a,b,c,d,e,f,g,h,k){var m=!1;null!=c&&(Oq(a,b,c,d,e,f,g,h,k)&&(m=!0),a.qd&&Oq(a,b<<1,c,d,e,f,g,h,k)&&(m=!0));return m} +function Oq(a,b,c,d,e,f,g,h,k){var m=!1,r=b&1?0:1,y=a.pa[b],t=16>h.length?h.length:16;y||(y={qc:e<Ha||!aa?Ha:8,Zh=Km.createImageData(m.qc,m.rc);for(Ob=0;256>Ob;Ob++){for(rc=0;rc=Ha-2,St=Kc[rc>(8<=od&&192<=Ob&&223>=Ob?7:od)?z:Yh;Pq(Zh,Lm,Mm,Nm);N&&Pq(Zh,Lm+1,Mm,Nm)}Km.putImageData(Zh,(Ob&15)*m.qc,(Ob>>4)*m.rc)}m.be[D]="#"+ja(z[0],2)+ja(z[1],2)+ja(z[2],2);m.Sh[D]=z;m.dg[D]=Tf;m=!0}}a.pa[b]=y;return m}function Qq(a){0a.za&&(a.za=0):a.za=-1} +function Dq(a){if(a.G){for(var b=10;15>=b;b++)if(null==a.B.Ua[b])return;var c=a.B.Ua[10],b=c&31,d=a.B.Ua[11]&Rp[11],e=a.B.Ua[9]&Rp[9],f=!1;a.B===a.A&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)Rq(a);else{c=a.B.Ua[15];c|=(a.B.Ua[14]&a.B.sf)<<8;a.aa!=c&&(Rq(a),a.aa=c);d=d-b+1;if(a.Vc!=b||a.Ic!=d)a.Vc=b,a.Ic=d;a.ua=e+1;Qq(a)}}} +function Rq(a){if(0<=a.aa){if(void 0!==a.L){var b=Sq<<8,c=a.L[a.aa];if(c&b){var c=c&~b,b=a.aa%a.D,d=a.aa/a.D|0;a.G&&a.pa[a.G]&&(a.Ba&&Tq(a,b,d,c,a.Ba),Tq(a,b,d,c));a.L[a.aa]=c}}a.aa=-1}} +function Uq(a){var b,c=a.B;a.Nc=!1;var d=c.nd[5];if(null!=d){b=hp;var e=jp,f=c.nd[3]&31;switch(d&3){case 0:if(f){e=jp|32;switch(f&24){case 8:e=jp|96;break;case 16:e=jp|160;break;case 24:e=jp|224}c.Ac=f&7}break;case 1:e=1;break;case 2:switch(f&24){default:e=2;break;case 8:e=98;break;case 16:e=162;break;case 24:e=226}break;case 3:a.Oa==Qn&&(e=3,c.Ac=f&7)}d&8&&(b=1280);c=c.Ud[4];null!=c&&(c&4||(b|=ip,e|=kp),d&64&&(c&8&&(b|=16384,e|=4),a.Nc=!0));b|=e}return b} +function Vq(a,b){var c=a.B;return c&&null!=b&&b!=c.og?(c.Yf(b),a.oa.Yf(c.ab,c.Hb,c.lg(),!0),!0):!1} +function Cq(a,b){var c,d=a.ma,e=a.B;if(e)if(e.Oa==$p)d=sq;else if(e.Oa>=On){var d=null,f=e.Xc>>2,g=32768=e.Ua[Fp]?$q:ar:br:g&128|| +350>f?d=m?cr:dr:480<=f&&(d=a.da==ck?er:fr):d=m?7-d:gr:d-=m?2:0);c=Uq(a)}}else e.Ec&8?(e.Ec&2?(d=e.Ec&16?gr:hr,e.Ec&4||--d):(d=e.Ec&1?qq:ir,e.Ec&4&&--d),a.Eb&&(a.M.style.opacity="1",a.Eb=!1)):!a.Eb&&1>+a.Tc&&(a.Eb=!0,a.M.style.opacity=a.Tc,e=a.R,e.X.Zf=!0,Lc(e));else a.ma=null,null==d&&(d=a.ba);if(!vq(a,d,b))return!1;Vq(a,c);return!0} +function vq(a,b,c){if(null!=b&&(b!=a.ma||c)){a.od=0;a.ma=b;a.Ga=!1;b=a.B||(b==sq?a.W:a.I);if(b!=a.B||b.ab!=a.ab||b.Hb!=a.Hb){Rq(a);if(a.ab){if(!Vb(a.oa,a.ab,a.Hb))return!1;a.B&&(a.B.Wb=!1)}a.B=b;b.Wb=!0;a.ab=b.ab;a.Hb=b.Hb;if(!Jb(a.oa,b.ab,b.Hb,3,b===a.A?b:null))return!1}a:{a.G=0;a.D=a.Jb;a.H=a.sc;a.Ma=a.D;a.Gb=Up[sq][2];b=0;if(c=Up[a.ma])a.D=c[0],a.H=c[1],a.Gb=c[2],b=c[3],a.G=c[4],4!=a.da&&7!=a.da||a.B!==a.A||a.G!=Kq||(7==(a.A.Ua[Pp]&31)?a.H=350>wp(a.A,Fp)?43:50:a.G=a.Oa);a.Sc=a.D*a.H|0;a.Rc=a.Sc/ +a.Gb|0;a.Sa=a.Rc;a.Yb=0;void 0!==b&&(a.Sa=(a.Sa<<1)+b|0,a.Yb=a.Sa+b>>1);if(a.pa.length){a.la=a.Y/a.D|0;a.qa=a.ja/a.H|0;if(a.G){b=a.pa[a.G];if(!b)break a;c=a.pa[a.G<<1];a.Qc&&80==a.D?c&&a.la>=3*c.qc>>2&&(a.G<<=1,b=c):(c&&a.la>=c.qc&&(a.G<<=1,b=c),a.Qc||(a.la=b.qc,a.qa=b.rc));a.eb=a.fb=0;b&&(a.eb=a.D*b.qc,a.fb=a.H*b.rc)}else a.la=a.qa=1,a.eb=a.D,a.fb=a.H;a.La=a.J.createImageData(a.eb,a.fb);a.Aa=document.createElement("canvas");a.Aa.width=a.eb;a.Aa.height=a.fb;a.Ba=a.Aa.getContext("2d");a.uc=a.Dc=0; +a.ec=a.Y;a.fc=a.ja;b=a.Y-a.D*a.la;c=a.ja-a.H*a.qa;0>1,a.ec-=b);0>1,a.fc-=c);if(b||c)a.J.fillStyle=a.M.style.backgroundColor,a.J.fillRect(0,0,a.Y,a.ja)}}jr(a,!0);lq(a)}return!0}function Pq(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function kr(a){a.ra=-1;a.Da=!1;var b=a.Rc;if(void 0===a.L||a.L.length!=b)a.L=Array(b)}function jr(a,b){b||(a.Ga=!1);kr(a)} +function Tq(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.pa[a.G];h.Ee&&(d=h.Ee[d]);var k=g>>4&15;h.Ee&&(k=h.Ee[k]);e?(b*=h.qc,c*=h.rc,e.fillStyle=h.be[k],e.fillRect(b,c,h.qc,h.rc)):(b=b*a.la+a.uc,c=c*a.qa+a.Dc,a.J.fillStyle=h.be[k],a.J.fillRect(b,c,a.la,a.qa));g&lr&&(k=(f&15)*h.qc,f=(f>>4)*h.rc,e?e.drawImage(h.dg[d],k,f,h.qc,h.rc,b,c,h.qc,h.rc):a.J.drawImage(h.dg[d],k,f,h.qc,h.rc,b,c,a.la,a.qa));g&Sq&&(f=a.Vc,g=a.Ic,e?(a.ua&&a.ua!==h.rc&&(f=f*h.rc/a.ua|0,g=g*h.rc/a.ua|0),e.fillStyle=h.be[d],e.fillRect(b, +c+f,h.qc,g)):(a.ua&&a.ua!==a.qa&&(f=f*a.qa/a.ua|0,g=g*a.qa/a.ua|0),a.J.fillStyle=h.be[d],a.J.fillRect(b,c+f,a.la,g)))} +function lq(a,b){b=void 0===b?!1:b;if(a.X.Sb){var c=!1,d=a.B;d&&(d!==a.A?d.Ec&8&&(c=!0):d.Sd&32&&(c=!0));if(c||b){if(b)kr(a);else if(void 0===a.L)return;c=!1;!(b||++a.od&15)&&0<=a.za&&(a.za++,c=!0);var e=a.Sc,f=a.ab,g=f,h=g+a.Hb;a.ma>=$q&&(f=g=655360,h=g+65536);if(mr(a,d)&8||d.We&&d.We=On&&d.Ua[19]&&d.Ua[19]<<1!=d.Ua[1]+1&&(a.Ma=d.Ua[19]<<(a.G?1:d.Ua[20]&64?3:4),k=(a.Ma*(a.H-1)+a.D)/ +a.Gb|0,a.ma<=sq&&(k<<=1));var r=d=0;g+k>h&&(r=k,g>=h?(d=f+(g-h),k=0):(d=f,k=h-g,r-=k));h=a.aa-(m>>1);g=nr(a,f,g,k,0,h,e,b,c);r&&(g+=nr(a,f,d,r,0+g,h,e,b,c));g&&(a.Da=!0)}}} +function nr(a,b,c,d,e,f,g,h,k){var m=d>>1;m>g&&(m=g);var r=c+d;if(h=!h&&a.Da){h=a.oa;for(var y=!0,t=c>>>h.B,z=h.A-(c&h.C);0f)return m;c+=f<<1;e+=f;g=e+1}}if(a.G){if(a.pa[a.G]){b=c;c=e;k=f=e=0;h=lr<<8;d=1048575;t=a.B.Ec&32;a.Oa>=On&&(t=a.B.vc[16]&8);y=a.aa-a.B.Ad;t&&(k=wq<<8,d&=~k,a.za&2||(d&=~h));for(a.ra=0;b>1;g=0;c=a.Gb;e=b;f=16==c?65536:196608;k=16==c?1:2;h=Eq(a,k);var y=d=0,t=a.D,z=0,D=a.H,N=0;for(a.ra=0;e>8|(P&255)<<8,aa=f,ya=16;d>=k))>>(ya-=k);Pq(a.La,d++,y,h[Kc])}d>z&&(z=d);y=N&&(N=y+1)}e+=2;g++;if(d>=a.D){d= +0;y+=2;if(y>a.H)break;y==a.H&&(y=1,e=b+a.Yb)}}ta.D?a.Ma-a.D-N>>3:0;for(a.ra=0;c>=8;k>y&&(y=k);h=z&&(z=h+1)}c+=D;if(k>=a.D){k=0;if(++h>a.H)break;c+= +P}}N&&(g=0)}else{m=0;g=r-c;e=Eq(a);f=a.B.td;h=k=0;d=a.D;y=0;t=a.H;z=0;D=a.B.vc[19]&15;N=a.Ma>a.D?a.Ma-a.D-D>>3:0;for(a.ra=0;caa&&(ya=aa)):(P<<=D,ya-=D,a.Da=!1):(a.Da&&P===a.L[m]?(k+=ya,ya=0):a.L[m]=P,m++);if(ya){ky&&(y=k);h=z&&(z=h+1)}if(k>=a.D){k=0;if(++h>a.H)break;c+=N}}D&&(g=0)}da&&(b.vg=a,a=-a|0);a%b.tg>b.Ll&&(c|=1);a%b.ug>b.Nl&&(c|=9);b.fh=a/b.ug|0;return c}l.fl=function(){var a=this.W,b;a.Wb&&(b=a.hc);return b};l.Dm=function(a,b){a=this.W;a.Tf=a.hc;a.hc=b&31};l.el=function(){return pr(this.W)};l.Cm=function(a,b){qr(this,this.W,b)};l.gl=function(){return this.W.Ec};l.Em=function(a,b){this.W.Ec=b;Cq(this,!1)};l.hl=function(){return rr(this,this.W)};l.Bj=function(a,b){this.A.Wf=this.A.Wf&-4|b&3};l.Ek=function(){return this.A.Sd}; +l.bk=function(){return this.A.vc[this.A.Sd&31]};l.Aj=function(a,b){a=this.A;var c=a.Sd&32;if(a.He){a.He=!1;var d=a.Sd&31;if(16<=d||!c)if(sr||a.vc[d]!==b)a.vc[d]=b,jr(this,!1)}else a.Sd=b,a.He=!0,b&32&&!c&&uq(this,!0)&&lq(this,!0),b=a.Ua[bp],b|=(a.Ua[cp]&a.sf)<<8,a.Ad!=b&&(a.Ad=b,jr(this)),a.We=0};l.rl=function(){var a=0;if(this.Oa==On)a=3-((this.A.cf&12)>>2),a=(this.wb&1<>this.A.wc&63;this.A.wc+=6;12Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.height="auto";0<=za().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth, +d.screenHeight),c.onresize(null));var f=+(Ia("aspect")||d.aspect);f&&.3<=f&&3.33>=f&&(La("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ea("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Y(d,e,g,f,c);bb(d,c)}}); +function tr(a){u.call(this,"ParallelPort",a);this.G=a.adapter;switch(this.G){case 1:this.D=956;this.C=7;break;case 2:this.D=888;this.C=7;break;case 3:this.D=632;this.C=5;break;default:q("Unrecognized parallel adapter #"+this.G);return}this.A=this.B=null;a=a.binding;"console"==a?this.B="":$a(this,a,ur)}ca(tr,u);l=tr.prototype;l.Ab=function(a,b,c){switch(b){case ur:return this.ia[b]=this.A=c,!0}return!1}; +l.kc=function(a,b,c,d){this.oa=b;this.R=c;this.Ea=d;this.U=tb(a,"ChipSet");ec(b,this,vr,this.D);gc(b,this,wr,this.D);v(this)};l.Rb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Qb=function(a){return a?this.save():!0};l.reset=function(){xr(this)};l.save=function(){var a=new Me(this),b=0,c=[];c[b++]=this.F;c[b++]=this.Fb;c[b]=this.Fe;a.set(0,c);return a.data()};l.restore=function(a){return xr(this,a[0])}; +function xr(a,b){var c=0;b||(b=[0,0,0]);a.F=b[c++];a.Fb=b[c++];a.Fe=b[c];return!0}l.Tk=function(){return this.F};l.ql=function(){return this.Fb};l.Pk=function(){return this.Fe};l.pm=function(a,b){this.F=b;this.Fb|=yr;a=!1;this.A&&(8==b?this.A.value=this.A.value.slice(0,-1):(this.A.value+=String.fromCharCode(b),this.A.scrollTop=this.A.scrollHeight),a=!0);if(null!=this.B){if(10==b||1024<=this.B.length)this.qb(this.B),this.B="";10!=b&&(this.B+=String.fromCharCode(b));a=!0}a&&(this.Fb&=~yr);zr(this)}; +l.km=function(a,b){this.Fe=b;zr(this)};function zr(a){a.U&&a.C&&(a.Fe&Ar&&!(a.Fb&yr)?Ff(a.U,a.C):Df(a.U,a.C))}var ur="buffer",yr=64,Ar=16,vr={0:tr.prototype.Tk,1:tr.prototype.ql,2:tr.prototype.Pk},wr={0:tr.prototype.pm,2:tr.prototype.km};Ma(function(){for(var a=cb(document,"pcx86","parallel"),b=0;b=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=pa(c[0]);if(d!=this.Be)return;c=pa(c[1]);if(this.F=fb(c)){var e=this.F.exports;if(e){var f=e.connect;f&&f.call(this.F,this.N);if(this.aa=e.receiveData){this.N=a;this.W=e.receiveStatus;this.status("Connected "+this.Cd+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}}; +l.Rb=function(a,b){if(!b)if(this.ri(this.N),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Qb=function(a){return a?this.save():!0};l.reset=function(){Hr(this)};l.save=function(){var a=new Me(this),b=0,c=[];c[b++]=this.da;c[b++]=this.ja;c[b++]=this.K;c[b++]=this.L;c[b++]=this.D;c[b++]=this.I;c[b++]=this.Y;c[b++]=this.A;c[b++]=this.B;c[b]=this.H;a.set(0,c);return a.data()};l.restore=function(a){return Hr(this,a[0])}; +function Hr(a,b){var c=0;b||(b=[0,0,Ir,0,Jr,0,0,Kr|Lr,a.pa,[]]);a.da=b[c++];a.ja=b[c++];a.K=b[c++];a.L=b[c++];a.D=b[c++];a.I=b[c++];a.Y=b[c++];a.A=b[c++];a.B=b[c++];a.H=b[c];return!0}l.af=function(a){if("number"==typeof a)this.H.push(a);else if("string"==typeof a)for(var b=0;b>8:this.L};l.al=function(){var a=this.D;this.D|=Jr;return a};l.bl=function(){return this.I};l.dl=function(){return this.Y};l.cl=function(){return this.A};l.il=function(){var a=this.B;this.B&=~(Nr|Or);return a}; +l.Mm=function(a,b){if(this.I&Rr)this.K=this.K&-256|b;else{this.ja=b;this.A&=~(Kr|Lr);a=!1;this.aa&&this.aa.call(this.F,b)&&(a=!0);if(this.C){if(13==b)this.J=0;else if(8==b)this.C.value=this.C.value.slice(0,-1),0":String.fromCharCode(b);a=c.length;32>b&&1==a&&(a=0);9==b&&(a=this.ma||8,a-=this.J%a,this.ma&&(c=" ".slice(0,a)));!this.J&&a&&(10!=this.qa&&(c="\n"+c),this.la&&(c=String.fromCharCode(this.la)+ +c));this.C.value+=c;this.C.scrollTop=this.C.scrollHeight;this.J+=a}this.qa=b;a=!0}else if(null!=this.G){if(10==b||1024<=this.G.length)this.qb(this.G),this.G="";10!=b&&(this.G+=String.fromCharCode(b));a=!0}a&&(this.A=this.A|Kr|Lr,Pr(this))}};l.zm=function(a,b){this.I&Rr?this.K=this.K&255|b<<8:this.L=b};l.Am=function(a,b){this.I=b};l.Bm=function(a,b){a=b^this.Y;this.Y=b;a&(Sr|Tr)&&this.W&&(a=0,this.N?(a|=b&Tr?32:0,a|=b&Sr?320:0):(a|=b&Tr?16:0,a|=b&Sr?1048576:0),this.W.call(this.F,a))}; +function Pr(a){var b=-1;a.A&Qr&&a.L&Ur?b=Vr:a.A&Kr&&a.L&Wr?b=Xr:a.B&(Nr|Or)&&a.L&Yr&&(b=Zr);0<=b?(a.D&=~(Jr|$r),a.D|=b,a.U&&a.M&&Ff(a.U,a.M,100)):(a.D|=Jr,a.U&&a.M&&Df(a.U,a.M))}var Er="buffer",Ir=384,Ur=1,Wr=2,Yr=8,Jr=1,Vr=4,Xr=2,Zr=0,$r=6,Rr=128,Sr=1,Tr=2,Qr=1,Kr=32,Lr=64,Nr=1,Or=2,Cr=16,Dr=32,Fr={0:Br.prototype.nl,1:Br.prototype.$k,2:Br.prototype.al,3:Br.prototype.bl,4:Br.prototype.dl,5:Br.prototype.cl,6:Br.prototype.il},Gr={0:Br.prototype.Mm,1:Br.prototype.zm,3:Br.prototype.Am,4:Br.prototype.Bm}; +Ma(function(){for(var a=cb(document,"pcx86","serial"),b=0;ba.A||0>a.B)a.A=b.screenX,a.B=b.screenY;a.M?(c=b.movementX||b.mozMovementX||b.webkitMovementX||0,d=b.movementY||b.mozMovementY||b.webkitMovementY||0):(c=b.screenX-a.A,d=b.screenY-a.B);a.A=b.screenX;a.B=b.screenY;a.ng(c,d,a.A,a.B)}} +l.ie=function(a,b){if(this.Wb&&this.R&&this.R.X.cb)switch(a){case oq:this.K!=b&&(this.K=b,gs(this));break;case hs:this.L!=b&&(this.L=b,gs(this))}};l.ng=function(a,b){this.Wb&&this.R&&this.R.X.cb&&(a=Math.round(Math.abs(a)*this.J)*Math.sign(a)||Math.sign(a),b=Math.round(Math.abs(b)*this.J)*Math.sign(b)||Math.sign(b),a||b)&&(this.H=a,this.I=b,gs(this))};function gs(a){a.G.af([64|(a.K?32:0)|(a.L?16:0)|(a.I&192)>>4|(a.H&192)>>6,a.H&63,a.I&63]);a.H=a.I=0} +l.$j=function(a){var b=1048592==(a&1048592);if(b){if(!this.Wb){var c=!1;this.C&16||(this.reset(),c=!0);this.C&1048576||(c=!0);c&&this.G.af([is,is]);bs(this);this.Wb=b}}else this.Wb&&(cs(this),this.Wb=b);this.C=a};var is=77,oq=0,hs=2;Ma(function(){for(var a=cb(document,"pcx86","mouse"),b=0;b>2;var e=d=0,a=new DataView(a,0,c);g.A=Array(g.kb);for(c=0;cb.indexOf("/api/v1/dump")&&(a=la(b),"json"==a||"gz"==a?f=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(f=qs(this,b),this.Cf=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"): +ma(b,"/")&&(c="dir"),f=xa()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.me?"":d)+"&format=json"));var k="Loading "+f+"...";return!!wa(f,null,!0,function(a,b,c){rs(g,a,b,c)},function(){g.qb(k,mb.ae)})}; +function rs(a,b,c,d){var e=null;a.pe=!1;var f=!(!(0>d&&a.na)||a.na.X.Sb);if(a.Cf)d?a.wa('Unable to connect to disk "'+a.F+'" (error '+d+": "+c+")",f):(a.C=!0,e=a);else if(d)a.wa('Unable to load disk "'+a.Pc+'" (error '+d+": "+b+")",f);else{Va(a.controller.Cd,b,c);try{if(0g&&0c.indexOf("0x")&& +'["'!=c.substr(0,2)?JSON.parse(c.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+c+")");if(h.length)if(1==h.length)q(h[0]);else{a.kb=h.length;a.$a=h[0].length;a.Xa=h[0][0].length;var k=h[0][0][0];a.ob=k&&k.length||512;for(d=c=0;d>2,r=k.pattern;void 0===r&&(r=k.pattern=0);var y=k.data;if(void 0===y){var t=k.bytes;if(void 0!==t&&t.length){for(var z=m<<2,D=t.length;D< +z;D++)t[D]=r;ss(k,t,0)}else k.data=y=[],t&&(k.pattern=r|r<<8|r<<16|r<<24);delete k.bytes}ps(k,d,f);for(z=0;zg)break;e|=g<b&&(b=0);2E3>2,e=Array(d),f=0;f>2,e=a.data;a=a.pattern;for(var f=0;f>8&255;c[d++]=g>>16&255;c[d++]=g>>24&255}return c}l.read=function(a,b){var c=-1;if(a&&b>2,c=(d>((b&3)<<3)&255;return c}; +l.write=function(a,b,c){if(this.pe)return!1;if(b>2;b=(b&3)<<3;for(var g=d.length;g<=f;g++)d[g]=e;a.yc?f=a.Mc+a.yc&&(a.yc+=f-(a.Mc+a.yc)+1):(a.Mc=f,a.yc=1);d[f]=d[f]&~(255<=this.A.length||k>=this.A[h].length||m>=this.A[h][k].length){c="sector (CHS="+h+":"+k+":"+m+") out of range ("+ +b+" changes applied)";b=-1;break}if(this.pe){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.A[h][k][m]){for(k=h.data.length;kb&&-2!=b&&this.wa("Unable to restore disk '"+this.Pc+": "+c);return b}; +l.toJSON=function(){var a;a=0;for(var b;b=ts(this,a++);)Bs(b);a=JSON.stringify(this.A,function(a,b){if("file"!=a)return b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")}; +function Bs(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}var ks=0;function Cs(a){u.call(this,"FDC",a);this.dmaRead=Cs.prototype.Uj;this.dmaWrite=Cs.prototype.Vj;this.dmaFormat=Cs.prototype.ik;this.M=Ds(a.autoMount);this.K=a.sortBy||"name";"none"==this.K&&(this.K=null);this.B=[];this.L=!Ea("Mobi")&&window&&"FileReader"in window;this.exports={loadDisk:this.xi,wait:this.rn}}ca(Cs,u);l=Cs.prototype; +l.Ab=function(a,b,c){var d=this;switch(b){case "listDisks":this.ia[b]=c;if(this.K){b=[];for(a=0;ag.sa.restore(z)&&(h=!1);h&&g.sa&&void 0!==g.Ra&&(g.Va=g.sa.seek(g.yb,g.Wa,g.bb));h||(e=!1)}a.H=b[c++]||0;a.F=b[c]||Ts;return e} +function Ns(a){var b=0,c=[];c[b++]=a.Na;c[b++]=0;c[b++]=a.Z;c[b++]=a.G;c[b++]=a.D;c[b++]=a.C;c[b++]=a.I;for(var d=b++,e=0,f=[],g=0;gRs(a,e,b,c,!1,d);){if(!window.confirm("Click OK to reload the original disk and discard any changes."))return!1;var f=a,g=c,h;for(h=0;ha.kb||f[1]>a.$a)&&(this.wa('Diskette "'+c+'" too large for drive '+String.fromCharCode(65+a.Na)),b=null);b?(a.sa=b,a.Mj=c,a.Wd=d,Vs(this,d)||Ks(this,c,d),Ss(this,c,d,b),f=b.info(),this.H|=Ws,a.qe||this.wa('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.Na),a.Jd||e),a.Kf=f[0],a.Oe=f[1],a.Pe=f[2],this.na&&Tc(this.na)):a.le=!1;a.Jd&&(a.Jd=!1,--this.J||v(this));Fs(this,a.Na);a.qe&&(a.qe(),a.qe=null)}; +function Ks(a,b,c,d){if((a=a.ia.listDisks)&&a.options){for(var e=0;e'+a+"");c.innerHTML=a}}l.rn=function(a){for(var b=0;b=this.C&&(this.Z&=~(Zs|$s),this.D=this.C=0);return a}; +l.rm=function(a,b){this.C=bt[a].fd){b=!1;this.D=0;a=ct(this);var c,d,e,f,g,h=a&at;switch(h){case dt:ct(this);ct(this);et(this);break;case ft:d=ct(this);this.Na=d&3;c=this.A[this.Na];et(this);gt(this,(c.lb&ht)>>>24);break;case it:case jt:d=ct(this);b=d>>2&1;this.Na=d&3;c=this.A[this.Na];c.Wa=b;d=c.yb=ct(this);e=ct(this);f=c.bb=ct(this);g=ct(this);c.xb=128<>2&1;this.Na=d&3;c=this.A[this.Na];d=c.yb;e=c.Wa=b;f=c.bb= +1;g=0;c.lb=mt;c.sa&&(c.Va=c.sa.seek(c.yb,c.Wa,c.bb))?g=c.Va.length>>8:c.lb=kt|lt;ot(this,c,a,b,d,e,f,g);b=!0;break;case vt:d=ct(this);b=d>>2&1;this.Na=d&3;c=this.A[this.Na];d=c.yb;e=c.Wa=b;f=1;g=ct(this);c.xb=128<>2&1,d=ct(this),c.yb+= +d-c.vd,0>c.yb&&(c.yb=0),c.yb>=c.kb&&(c.yb=c.kb-1),c.vd=d,c.lb=qt,c.yb||(c.lb|=rt),et(this),b=!0}0>>8);gt(a,(b.lb&yt)>>>16);var k=0;if(e!=b.yb||f!=b.Wa)k=g=1;c&zt&&(f^=k,d||(k=0));gt(a,e+k);gt(a,f);gt(a,g);gt(a,h)}function ct(a){var b=a.G[a.D];a.D++;return b} +function et(a){a.D=a.C=0}function gt(a,b){a.G[a.C++]=b}l.Uj=function(a,b,c){void 0===b||0>b?this.ve(a,c):c(-1,!1)};l.Vj=function(a,b){return void 0!==b&&0<=b?At(a,b):-1};l.ik=function(a,b){if(void 0!==b&&0<=b)a:if(a.lb)a=-1;else{a.Gc[a.he++]=b;if(a.he==a.Gc.length){a.yb=a.Gc[0];a.Wa=a.Gc[1];a.bb=a.Gc[2];a.xb=128<At(a,a.Xh)){a=-1;break a}a.vf++}a.vf>=a.wd&&(b=-1);a=b}else a=-1;return a}; +l.ve=function(a,b){var c=-1,d=null,e=0;if(!a.lb&&a.sa){do{if(a.Va&&(e=a.Ra,0<=(c=a.sa.read(a.Va,a.Ra++)))){d=a.Va;break}a.Va=a.sa.seek(a.yb,a.Wa,a.bb);if(!a.Va){a.lb=Bt|lt;break}a.Ra=0;Ct(a)}while(1)}b(c,!1,d,e)};function At(a,b){if(a.lb||!a.sa)return-1;do{if(a.Va&&a.sa.write(a.Va,a.Ra++,b))break;a.Va=a.sa.seek(a.yb,a.Wa,a.bb);if(!a.Va){a.lb=Dt|lt;b=-1;break}a.Ra=0;Ct(a)}while(1);return b}function Ct(a){a.bb++;a.bb>=a.Pe+1&&(a.bb=1,a.Wa++,a.Wa>=a.Oe&&(a.Wa=0,a.yb++))} +var Qs="Floppy Drive",Xs=4,Ys=8,$s=16,Zs=64,Os=128,dt=3,ft=4,it=5,jt=6,pt=7,st=8,ut=10,vt=13,wt=15,at=31,zt=128,mt=0,kt=8,qt=32,lt=64,Ps=192,tt=255,nt=512,Bt=1024,Dt=8192,xt=65280,yt=16711680,rt=268435456,ht=-16777216,Ws=128,Ts=0;ba={}; +var bt={3:{fd:3,xd:0,name:ba.yo},4:{fd:2,xd:1,name:ba.wo},5:{fd:9,xd:7,name:ba.Do},6:{fd:9,xd:7,name:ba.so},7:{fd:2,xd:0,name:ba.uo},8:{fd:1,xd:2,name:ba.xo},10:{fd:2,xd:7,name:ba.to},13:{fd:6,xd:7,name:ba.oo},15:{fd:3,xd:0,name:ba.vo}},Is={1009:Cs.prototype.Vk,1012:Cs.prototype.Xk,1013:Cs.prototype.Uk,1015:Cs.prototype.Wk},Js={1010:Cs.prototype.sm,1013:Cs.prototype.rm,1015:Cs.prototype.qm}; +Ma(function(){for(var a=cb(document,"pcx86","fdc"),b=0;bk.sa.restore(g)&&(z=!1),z&&void 0!==k.Ra&&(k.Va=k.sa.seek(k.Dd,k.Wa,k.bb+k.uf)));z||(e=!1);null!=a.W&&1>=d&&(a.W|=(f.type&3)<<(1-d<<1))}0<=a.Na&&(a.B=a.A[a.Na]); +return e} +function Lt(a){var b=0,c=[];a.L?(c[b++]=a.H,c[b++]=a.ra,c[b++]=a.I,c[b++]=a.da,c[b++]=a.ba,c[b++]=a.aa,c[b++]=a.N,c[b++]=a.Z,c[b++]=a.fa,c[b++]=[a.K,a.Na]):(c[b++]=a.W,c[b++]=a.Z,c[b++]=a.G,c[b++]=a.D,c[b++]=a.C,c[b++]=a.pa,c[b++]=a.ma,c[b++]=a.qa,c[b++]=a.M);for(var d=0,e=[],f=0;f=this.C&&(this.D=this.C=0,this.Z&=~(Wt|Xt|Yt));return a}; +l.Om=function(a,b){this.C=a&&(this.Z|=Wt,this.Z&=~$t,au(this))};l.xl=function(){var a=this.Z;this.D=a.B.ob?(a.Z=cu,a.ve(a.B,function(b){0<=b?(du(a),a.U&&a.U.ca==Hj&&(a.Z=0),a.Z=a.Z|Mt|eu|fu):(a.Z=gu,a.H=hu)},!1)):a.Z=Mt|eu));return b}l.Yj=function(){return bu(this)|bu(this)<<8};function iu(a,b){a.B&&a.B.xb>=a.B.ob&&(0>ju(a.B,b)?(a.Z=gu,a.H=hu):(1==a.B.Ra||a.B.Ra==a.B.ob)&&1=a.B.ob&&(a.Z|=fu)))} +l.Zl=function(a,b){iu(this,b&255);iu(this,b>>8&255)};l.Dk=function(){return this.H};l.dm=function(a,b){this.ra=b};l.Fk=function(){return this.I};l.bm=function(a,b){this.I=b};l.Gk=function(){return this.da};l.cm=function(a,b){this.da=b};l.Bk=function(){return this.ba};l.Yl=function(a,b){this.ba=b};l.Ak=function(){return this.aa};l.Xl=function(a,b){this.aa=b};l.Ck=function(){return this.N};l.$l=function(a,b){this.N=b;this.Z=this.A[this.N&ku?1:0]?this.Z|Mt|eu:this.Z&~Mt}; +l.Hk=function(){var a=this.Z;this.Z&Mt&&(this.Z&=~cu);return a};l.Wl=function(a,b){this.fa=b;this.U&&Df(this.U,14);lu(this)};l.am=function(a,b){this.K&mu&&!(b&mu)&&(this.H=nu);this.K=b}; +function lu(a){var b=!1,c=a.fa,d=a.N&ku?1:0,e=a.N&ou,f=a.ba|(a.aa&pu)<<8,g=a.da,h=a.I||256;a.Na=-1;a.B=null;a.H=qu;a.Z=Mt|eu;var k=a.A[d];k?(k.Dd=f,k.Wa=e,k.bb=g,k.xb=h*k.ob,c=c>=ru?c:c&su,k.Va=null,k.Ra=0,k.errorCode=0,a.Na=d,a.B=k):c=-1;switch(c&su){case tu:b=!0;break;case uu:a.Z=cu;a.ve(k,function(b){0<=b&&a.U?(du(a),a.Z=Mt|eu|fu):(a.Z=gu,a.H=hu)},!1);break;case vu:a.Z=fu;break;case wu:b=!0;break;case xu:b=!0;break;case ru:a.H=nu;b=!0;break;case yu:k.$a=e+1,k.Xa=h,b=!0}b&&du(a)} +function du(a){!a.U||a.K&zu||Ff(a.U,14,120)} +function au(a){a.D=0;var b=Au(a),c=Au(a),d=c&32,e=d>>5,f=c&31,g=Au(a),h=Au(a),k=g<<2&768|h,m=g&63,r=Au(a),y=Au(a),t=a.A[e];t&&(t.Dd=k,t.Wa=f,t.bb=m,t.xb=r*t.ob);switch(b){case Bu:Cu(a,t?t.errorCode:Du);Eu(a,c);Eu(a,g);Eu(a,h);Eu(a,Fu|d);b=-1;break;case Zt:for(c=0;0<=(b=Au(a));)t&&cb?this.ve(a,c):c(-1,!1)};l.Xj=function(a,b){return void 0!==b&&0<=b?ju(a,b):-1}; +l.jk=function(a,b){void 0!==b&&0<=b?(a.Raju(a,a.Xh)){a=-1;break a}a.vf++}a.vf>=a.wd&&(b=-1);a=b}else a=-1;return a}; +function Nu(a,b,c){b.errorCode=Du;if(b.sa&&(b.Va=null,a.U)){b.errorCode=Ot;ul(a.U,3,a,"dmaRead",b);ql(a.U,3,function(a){a||b.errorCode!=Ot||(b.errorCode=Du);c(b.errorCode?Gu:Fu)});return}c(b.errorCode?Gu:Fu)}function Pu(a,b,c){b.errorCode=Du;if(b.sa&&(b.Va=null,a.U)){b.errorCode=Ot;ul(a.U,3,a,"dmaWrite",b);ql(a.U,3,function(a){a||(b.errorCode==Ot&&(b.errorCode=Du),b.errorCode==Su&&(b.errorCode=Ot));c(b.errorCode?Gu:Fu)});return}c(b.errorCode?Gu:Fu)} +function Ru(a,b,c){b.errorCode=Du;b.de&&b.de.length==b.xb||(b.de=Array(b.xb));b.Ra=0;a.U?(b.errorCode=Ot,ul(a.U,3,a,"dmaWriteBuffer",b),ql(a.U,3,function(a){a||b.errorCode!=Ot||(b.errorCode=Du);c(b.errorCode?Gu:Fu)})):c(b.errorCode?Gu:Fu)} +l.ve=function(a,b,c){var d=-1,e=null,f=0;if(a.errorCode)return b&&b(d,!1,e,f),d;var g=!1!==c?1:0;if(a.Va&&(f=a.Ra,d=a.sa.read(a.Va,a.Ra),a.Ra+=g,0<=d))return e=a.Va,b&&b(d,!1,e,f),d;if(b){if(a.sa)return a.sa.seek(a.Dd,a.Wa,a.bb+a.uf,!1,function(c,k){(a.Va=c)?(e=c,f=a.Ra=0,Tu(a),d=a.sa.read(a.Va,a.Ra),a.Ra+=g):a.errorCode=Su;b(d,k,e,f)}),d;a.errorCode=Su;b(d,!1,e,f)}return d}; +function ju(a,b){if(a.errorCode)return-1;do{if(a.Va&&a.sa.write(a.Va,a.Ra++,b))break;a.sa&&a.sa.seek(a.Dd,a.Wa,a.bb+a.uf,!0,function(b){a.Va=b});if(!a.Va){a.errorCode=Su;b=-1;break}a.Ra=0;Tu(a)}while(1);return b}function Tu(a){a.bb++;var b=1-a.uf;a.bb>=a.Xa+b&&(a.bb=b,a.Wa++,a.Wa>=a.$a&&(a.Wa=0,a.Dd++))}l.zl=function(){var a=this.R.L&255;!(this.R.F>>8)&&128>8||!this.U)||(a=!(this.U.bc[0].Wc&64));return a?!0:!1}; +var Pt="Hard Drive",Ut=["XTC","ATC","COMPAQ"],Qt=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966, +6],19:[1023,8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}],It=496,nu=1,qu=0,hu=16,pu=3,ou=15,ku=16,gu=1,fu=8,eu=16,Mt=64,cu=128,tu=16,uu=32,vu=48,wu=64,xu= +112,ru=144,yu=145,su=240,zu=2,mu=4,Fu=0,Gu=2,Ju=0,Ku=1,Bu=3,Lu=5,Mu=8,Ou=10,Zt=12,Qu=15,Hu=224,Iu=228,Ot=0,Du=4,Su=20,Nt=0,$t=1,Wt=2,Xt=4,Yt=8,Vt=32,Ft={800:Z.prototype.wl,801:Z.prototype.xl,802:Z.prototype.vl},Et={496:Z.prototype.Yj,497:Z.prototype.Dk,498:Z.prototype.Fk,499:Z.prototype.Gk,500:Z.prototype.Bk,501:Z.prototype.Ak,502:Z.prototype.Ck,503:Z.prototype.Hk},Ht={800:Z.prototype.Om,801:Z.prototype.Rm,802:Z.prototype.Qm,803:Z.prototype.Pm,807:Z.prototype.gh,811:Z.prototype.gh,815:Z.prototype.gh}, +Gt={496:Z.prototype.Zl,497:Z.prototype.dm,498:Z.prototype.bm,499:Z.prototype.cm,500:Z.prototype.Yl,501:Z.prototype.Xl,502:Z.prototype.$l,503:Z.prototype.Wl,1014:Z.prototype.am};Ma(function(){for(var a=cb(document,"pcx86","hdc"),b=0;b=this.D||(this.D=1);this.F=0;this.ma=a.busWidth||a.buswidth;this.A=Wu;this.M=null;this.J=this.fa=!1;this.pa=Fc(this,"url")||"";this.ra=(Math.random()+.1).toString(36).substr(2,12);this.B=Xu(this);if(this.R=ab("CPU",this.id)){this.Ea=ab("Debugger",this.id);this.C=[];for(b=null;b=tb(this,"Video",b);)this.C.push(b);this.oa=new Gb({id:this.Cd+".bus",busWidth:this.ma}, +this.R,this.Ea);var e,f=eb(this.id);this.ba=(this.I=ab("Panel",this.id))&&this.I.ia.print;this.ja=this.wa;this.la=this.print;this.qa=this.qb;this.ba&&(this.ja=this.I.wa,this.la=this.I.print,this.qa=this.I.qb);for(b=0;b\nLicense: GPL version 3 or later "); +for(b=0;bWu){if(d.load(this.M)){this.G=new Me(this,"1.36.2",gv);this.G.load()&&(a!=fv&&hv(this,d)&&(a=iv),jv(this.G));this.G.set(ev,ra("Y-m-d H:i:s"));kv(this.G);var e=this.A&&!this.J;if(a==fv||Xa("Click OK to restore the previous PCx86 machine state.")){if(c=dv(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +g?(this.wa("Error: "+g),"unable to verify user"==g&&(Da(lv,""),this.B=null)):this.qb(f+": "+g),jv(d),d.load()?(c=dv(d),e=!0):c=!1))}e&&bv(this,c?d:null)}else a==iv&&d.clear()}else bv(this);delete this.M;delete this.N}e=eb(this.id);for(f=0;fa[1];a=a[2];if(d=this.ia.power)d.textContent="Shutdown";this.X.Sb=!0;this.R&&(mv(this, +this.R,b,c,a),this.R.Gd());this.da&&(hv(this,b),b.clear());!c&&this.G&&(this.G.clear(),delete this.G);this.F=0;gb(this.Cd,Fc(this,"autoScript"))};function hv(a,b){if(!a.X.Yd){if(Xa("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.36.2"};d.url=a.pa;d.user=c;d.type="bug";d.data=b;wa("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1} +function nv(a,b,c){var d,e="none";if(a.F)return null;a.F--;var f=new Me(a,"1.36.2"),g=new Me(a,"1.36.2",cv),h=ra("Y-m-d H:i:s");g.set(ev,h);f.set(ev,h);f.set(ov,"1.36.2");f.set(pv,window?window.location.href:null);f.set(qv,za());a.R&&a.R.Qb&&(d=a.R.Qb(b,c),"object"===typeof d&&f.set(a.R.id,d),c&&(a.R.X.Sb=!1,!1===d&&(e=null)));for(var h=eb(a.id),k=0;kf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/, +"$1PCx86$2"),a=a.replace(/().*?(<\/xsl:variable>)/,"$1pcx86$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){f=null,a=r.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");wa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,r=/( [a-z]+=)(['"])(.*?)\2/gi;m=r.exec(f);)k=0>k.toLowerCase().indexOf(m[1].toLowerCase())?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+ +"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);yv(a,b,c)}})}else c(a,null)} +function zv(a,b,c,d){function e(a){if(void 0===h){var b=g&&cb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=na(a))}function f(a){e("Error: "+a);k&&(--vv||Qa(!0));k=!1}var g,h,k=!0;vv++;Wa[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=m:y.appendChild(document.createTextNode(m));r.appendChild(y)}c|| +(c="/versions/pcx86/1.36.2/components.xsl");m=function(d,h){h?wv(c,null,null,!1,e,function(d,k){k?(Va(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--vv||Qa(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--vv||Qa(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?wv(b,a,d,!0,e,m):xv(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(t){f(t.message)}return k}function Av(a,b,c,d){Qa(!1);return zv(a,b,c,d)}window.embedPC=Av;window.embedPCx86=Av; +window.commandMachine=function(a,b,c,d,e,f){if("script"==e)return gb(c,f)?(b&&(a.disabled=!0),!0):!1;if(d){var g=ab(d,c+".machine");if(g){var h=g.exports;if(h&&(h=h[e]))return h.call(g,f)?(b&&(a.disabled=!0),!0):!1}}console.log("unimplemented: commandMachine('"+c+"','"+d+"','"+e+"','"+f+"')");return!1};window.enableEvents=Qa;window.sendEvent=Sa; +function Bv(a,b,c,d){if(!c&&b){d.push(b);a=Wa[d[0]];b=null;for(var e in a)if(ma(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?wa(b,null,!0,function(a,b){Cv(b,d)}):Cv(null,d)}else q("Error ("+c+") requesting "+a)} +function Cv(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];if(c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);)/)){var h=Wa[f],k={},m;for(m in h){var r=h[m],y=la(m);if("xml"==y){for(y=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=y.exec(h[m]);){var t=d[2];t&&(h[t]||(r=r.replace(d[0],"")))}d=m=ka(m)}else"xsl"==y&&(e=m=ka(m));k[m]=r}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, +"©"),a=Ka(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
    \n')+"...\n",a=a+(' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + + + + + + js + + + +
    + + + + + + + + + + js + + + "" + + + + + +
    +
    + + + + + + + + + + + + + + + , + + + + + + + + + + + + + .machine + . + . + + + + + + + + + + + + + + + + + + + + ,comment:'' + + + + + + border:1px solid black;border-radius:15px; + border:; + + + + + + left:; + + + + + + top:; + + + + + + + + width:; + width:;max-width:; + width:auto;max-width:; + + + + + + + + height:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto;clear:both; + position:; + position:relative; + + + + + overflow:auto;width:100%; + + background-color:; + background-color:; + + + + + - -component + +
    + + + + + + +
    + + + + + + + + --object -screen + + +
    +
    + +
    + +
    +
    + + + + +
    + + +
    [XML]
    + +
    + + +
    +
    +
    +
    + + + + + text-align:center; + + + +

    +
    + + +
    +
    + + + + + + +
    +
    + + + + type:'' + + + binding:'' + + + value:'' + + + + border:1px solid black; + border:; + + + + + + width:; + + + + + + height:; + + + + + + left:; + + + + + + top:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto; + clear:both; + position:; + position:relative; + text-align:; + float:left; + + + + + + + + + + + + + + + + + + +
    + + + font-size:; + + + + + -label + + + + width:; + width:; + + + + + + + + text-align:right; + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + ; + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8088 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + + null + + + + + + 0 + + + + + + + -1 + + + + + + + -1 + + + + + + + -1 + + + + + + ,model:'',stepping:'',fpu:,cycles:,multiplier:,autoStart:,addrReset:,csStart:,csInterval:,csStop: + + + + + + + + + + + + + + + 8087 + + + + + + + + + + + + ,model:'',stepping:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + true + + + + + + + false + + + + + + {} + + + + + + + + + + + + + + + + + + + chipset + ,model:'',scaleTimers:,sw1:'',sw2:'',sound:,floppies:,monitor:'',dateRTC:'' + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + device + ,type:'',baudReceive:,baudTransmit:,autoMount:'' + + + + + + + + + + + + + + + + + + + + keyboard + ,model:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + parallel + ,adapter:,binding:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + 0 + + + + + + + false + + + + + serial + ,adapter:,baudReceive:,baudTransmit:,binding:'',tabSize:,charBOL:,upperCase: + + + + + + + + + + + + + + + + + + + + + 0.5 + + + + + mouse + ,serial:'',scaleMouse: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdc + ,autoMount:'',sortBy:'' + + + + + + + + + + + + + + + + + + + + + xt + + + + + hdc + ,drives:'',type:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + null + + + + + + + + + + + + + + + + + rom + ,addr:,size:,alias:,file:'',notify:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + null + + + + + + null + + + + + + true + + + + + ram + ,addr:,size:,file:'',load:,exec:,test: + + + + + + + + + + + + + + + + + + + + + null + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 0 + + + + + + 0 + + + + + + false + + + + + + 1bpp + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + false + + + + + + 1 + + + + + + 1 + + + + + + + 80 + + + + + + + 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + 0 + + + + + + null + + + + + + 0 + + + + + + 60 + + + + + + 0.5 + + + + + video + ,model:'',mode:,screenWidth:,screenHeight:,screenColor:'',screenRotate:,bufferAddr:,bufferRAM:,bufferFormat:'',bufferCols:,bufferRows:,bufferBits:,bufferLeft:,bufferRotate:,memory:,switches:'',scale:,cellWidth:,cellHeight:,charCols:,charRows:,fontROM:'',fontColor:'',touchScreen:'',autoLock:,aspectRatio:,smoothing:,interruptRate:,refreshRate:,flicker: + + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + + + debugger + ,base:,commands:'',messages:'' + + + + + + + + + + + + + + panel + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + computer + ,autoPower:,busWidth:,resume:'',state:'' + + + + + + + + diff --git a/versions/pdpjs/1.36.2/document.css b/versions/pdpjs/1.36.2/document.css new file mode 100644 index 000000000..7072b406e --- /dev/null +++ b/versions/pdpjs/1.36.2/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/pdpjs/1.36.2/document.xsl b/versions/pdpjs/1.36.2/document.xsl new file mode 100644 index 000000000..439c4937d --- /dev/null +++ b/versions/pdpjs/1.36.2/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

    +
    + + + + + + + +

    +
    + +

    +
    +
    +
    + + + + + + +
    +
    + + +
    + +   + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/pdpjs/1.36.2/machine.xsl b/versions/pdpjs/1.36.2/machine.xsl new file mode 100644 index 000000000..fb3a59d65 --- /dev/null +++ b/versions/pdpjs/1.36.2/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pdpjs/1.36.2/manifest.xsl b/versions/pdpjs/1.36.2/manifest.xsl new file mode 100644 index 000000000..90b9964fa --- /dev/null +++ b/versions/pdpjs/1.36.2/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/pdpjs/1.36.2/outline.xsl b/versions/pdpjs/1.36.2/outline.xsl new file mode 100644 index 000000000..3e0a1cab7 --- /dev/null +++ b/versions/pdpjs/1.36.2/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pdpjs/1.36.2/pdp10-dbg.js b/versions/pdpjs/1.36.2/pdp10-dbg.js new file mode 100644 index 000000000..1daea2f67 --- /dev/null +++ b/versions/pdpjs/1.36.2/pdp10-dbg.js @@ -0,0 +1,306 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/device.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/computer.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpustate.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpuops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/macro10.js (C) Jeff Parsons 2012-2017 +*/ +var m,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ba="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this;function ca(){ca=function(){};ba.Symbol||(ba.Symbol=da)}var ea=0;function da(a){return"jscomp_symbol_"+(a||"")+ea++} +function fa(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});fa=function(){}}function ha(a){var b=0;return ia(function(){return ba?-b:b}});ma("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); +var na={vc:0,Nb:1,xc:2,yc:3,zc:4,Ac:5,Bc:6,Cc:7,xb:8,Dc:9,Ob:10,Ec:11,Fc:12,Pb:13,Gc:14,Hc:15,Ic:16,Jc:17,Kc:18,Lc:19,Mc:20,Nc:21,Oc:22,Pc:23,Qc:24,Rc:25,Sc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,wb:65,uc:66,wc:67,Tc:68,E:69,Uc:70,Vc:71,Wc:72,Xc:73,Yc:74,Zc:75,$c:76,ad:77,bd:78,dd:79,ed:80,Q:81,fd:82,gd:83,hd:84,jd:85,kd:86,ld:87, +nd:88,od:89,Sb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,pd:97,qd:98,rd:99,d:100,e:101,sd:102,td:103,ud:104,vd:105,xd:106,k:107,yd:108,zd:109,n:110,Ad:111,p:112,q:113,r:114,Bd:115,t:116,Dd:117,Ed:118,Fd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Qb:127}; +function oa(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function qa(a,b,c){b?12=b?6:16777215>=b?8:12);return pa(a,8,b,c?"0o":"")} +function xa(a,b){b?11=Math.abs(a)?5:11;return pa(a,10,b)}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return pa(a,16,b,c?"0x":"")}function ya(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return Ca[a]})}function Da(a,b){return(a+" ").slice(0,b)}function Ea(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Ca={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0f;f++){var g;switch(g="Y-m-d H:i:s".charAt(f)){case "a":b+=12>c?"am":"pm";break;case "d":b+=("0"+d).slice(-2);break;case "D":b+=Ja[a.getDay()].substr(0,3);break;case "F":b+=Ka[e-1];break;case "g":b+=c?12b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.la=g.load;d.ya=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;c>8&255,d.ea[f++]=e[c]>>16&255,d.ea[f++]=e[c]>>24&255;else(e=g.data)?d.Oa=e:d.ea=g;d.ea&&(d.ea.length?1==d.ea.length&&(q(d.ea[0]),d=null):(q("Empty resource: "+a),d=null));d.aa=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.Db=this.id:(this.$a=this.id.substr(0,a),this.Db=this.id.substr(a+1));this.A={ready:!1,Ua:!1,ob:!1,wd:!1,ba:!1,ub:!1,error:!1};this.cb=null;this.A.error=!1;this.da=c||0;this.D=this.v=this.H=this.G=null;jb.push(this)} +function pb(a,b,c){qb[a]&&b&&(qb[a][b]=c)}function rb(){return Date.now()||+new Date}function q(a){window&&window.alert(a)}function sb(a){var b=!1;window&&(b=window.confirm(a));return b}function tb(a,b){a.value+=b;b=a.value;8192d?c+=a+"\n":c=c.substr(0,d)+(a+ +".")+c.substr(d+a.length);8192a;a++)this.b["S"+a]=[0,0,!1,!1,this.ec,a];this.D=this.v=this.H=this.G=null;this.exports={hold:this.Wb,toggle:this.pc,reset:this.lc, +set:this.oc};Rb(this)}la(hc,r);m=hc.prototype;m.reset=function(a){this.stop();a&&jc(this,this.w=0)}; +m.sa=function(a,b,c,d){if(this.G&&this.G.sa(a,b,c,d)||this.v&&this.v.sa(a,b,c,d)||this.D&&this.D.sa(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){kc(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){lc(a,b)}}(this,b),a.ontouchstart= +function(a,b){return function(c){kc(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){lc(a,b)}}(this,b),!0):r.prototype.sa.call(this,a,b,c,d)}};m.La=function(a,b,c,d){this.G=a;this.H=b;this.v=c;this.D=d;mc(this);nc(this)};m.Aa=function(a,b){if(!b)if(this.V&&oc(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.ra=function(a){return a?this.save():!0};m.save=function(){var a=new G(this);a.set(0,[this.i,this.w,this.j]);return a.data()}; +m.restore=function(a){if(a=a[0])pc(this,this.i=a[0]),jc(this,this.w=a[1]),qc(this,a[2]);return!0};m.lc=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}nc(this);return!0};function rc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function mc(a,b){for(var c in a.C)rc(a,c,null!=b?b:a.C[c])}function sc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function nc(a){for(var b in a.b)sc(a,b,a.b[b][1])} +m.Wb=function(a,b,c){if(kc(this,b)){if(c){var d=this;setTimeout(function(){lc(d,b);a&&a()},+c);return!1}lc(this,b)}return!0};m.oc=function(a,b){if("SR"==a)return qc(this,oa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,sc(this,a,c[1]),!0):!1};m.pc=function(a){return kc(this,a)?(lc(this,a),!0):!1};function kc(a,b){var c=a.b[b];return c?(sc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=tc&&(a.O=b==uc,a.R=b==vc),!0):!1} +function lc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(sc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.fc=function(a){a||this.v.A.P||(H(this.v,this.i),this.b[wc]&&this.b[wc][1]&&xc(this.v))};m.gc=function(){};m.ac=function(a){a||this.v.Y()}; +m.Zb=function(a){if(!a&&!this.v.A.P)if(this.b[wc]&&this.b[wc][1])xc(this.v);else{if((a=this.D)&&!Sb(a,!0))Tb(a,!0),yc(a,0,null),Tb(a,!1);else try{var b=this.v.Ya(1);0c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Wa+=h.B-e,h.B=e,!0;if(e>=h.B+h.Wa){l=h.size-(e-k);l>f&&(l=f);h.Wa=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Kc(Lc,e,f)}e=new Gc(a,e,l,16384,d);Hc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Qc[d]+" at "+qa(b)),!0):Kc(Rc,b,c)} +function Ec(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function Dc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Ic(a){for(var b=0,c=[],d=0;d=a.ta&&(a.ta+=a.pa,c=!0);0<=a.ua&&a.ua<=ld(a)&&(a.pa=a.ua=-1,hd(a),a.Y(),c=!0);c&&a.u(ld(a)+" cycles: checksum="+n(a.Ga))}} +m.sa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.G)if(a=d.G,a.A.ba)a=!0;else{var b=null,c,h=vb(a.id);for(c=0;ca.Z/a.ca?b=1:d=!0;a.ha=b;b=a.ib*a.ha;if(a.ca!=b){a.ca=b;b=a.ca.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.G&&pd(a.G)}Ac(a,a.M);a.M=0;a.L=rb();a.S=0;nd(a);return d}function qd(a,b){for(var c=a.R.length-1;0<=c;c--){var d=a.R[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function rd(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function sd(a,b){var c=a.V-=a.N;a.N=0;b&&(a.V=0);return c} +m.mc=function(){if(this.A.P){this.ab>=this.lb&&nd(this,!0);this.va=0;this.Fa=rb();if(this.S){var a=this.Fa-this.S;a>this.kb&&(this.L+=a,this.L>this.Fa&&(this.L=this.Fa))}try{do{var b=qd(this,this.A.Ta?1:this.Ia);try{this.Ya(b)}catch(e){if("number"!=typeof e)throw e;}b=sd(this,!0);this.va+=b;this.M+=b;Bc(this,b);zc(this,b);this.ma-=b;if(0>=this.ma){this.ma+=this.Ia;++this.mb>=td&&(this.G&&K(this.G,void 0),this.mb=0);break}}while(this.A.P)}catch(e){this.Y();this.G&&this.G.stop(rb(),ld(this));Eb(this, +e.stack||e.message);return}if(this.A.P){a=setTimeout;b=this.Fb;this.S=rb();var c=this.kb;this.va&&(c=Math.round(c*this.va/this.Ia));var c=c-(this.S-this.Fa),d=this.S-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.W=0,md(this)));if(0>c||this.Zc&&(this.L-=c),c=0;this.ab+=this.va;this.S+=c;a(b,c)}}}; +function xc(a,b){if(!Fb(a))if(a.A.P)a.u(a.toString()+" busy");else{md(a);a.A.P=!0;a.A.gb=!0;var c=a.J.run;c&&(c.textContent="Halt");a.G&&(b&&pd(a.G,!0),a.G.start(a.L,ld(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.Ya=function(){return 0};m.Y=function(a){var b=!1;if(this.A.P){sd(this);Ac(this,this.M);this.M=0;this.A.P=!1;if(b=this.J.run)b.textContent="Run";this.G&&this.G.stop(rb(),ld(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var od=30,td=15,ed=["power","reset"]; +function ud(a){var b=+a.model||1001;dd.call(this,a,1E6);this.jb=b;this.Za=+a.addrReset||0;this.Tb=vd.bind(this);this.w=M.bind(this);this.Ca=null;this.vb=[];this.A.complete=!1}la(ud,dd);m=ud.prototype; +m.reset=function(){this.status("Model "+this.jb);this.A.P&&this.Y();this.Ja=this.Ka=this.b=this.I=0;this.i=this.oa=this.Za;this.K=this.O=-1;this.F=this.j=0;this.nb=[0,0];this.wa=[0,0];this.na=[0,0];this.xa=[0,0];this.Ba=this.i;this.C=0;this.f=this.ic;this.g=this.tc;this.Ca=null;gd(this);this.A.error=!1;dd.prototype.reset.call(this)};m.Kb=function(){return 0}; +m.save=function(){var a=new G(this);a.set(0,[this.b,this.I,this.Ja,this.Ka,this.i,this.O,this.K,this.j,this.C,this.oa,this.Ba,this.Za]);a.set(1,[]);a.set(2,[this.W,this.ha,this.A.ga]);a.set(3,wd(this));a.set(4,rd(this));return a.data()}; +m.restore=function(a){var b;b=a[0];fa();ca();fa();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ja=b.next().value;this.Ka=b.next().value;this.i=b.next().value;this.O=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.oa=b.next().value;this.Ba=b.next().value;this.Za=b.next().value;b=a[2];this.W=b[0];md(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};m.tc=function(a,b){var c=this.H;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; +m.Ya=function(a){this.A.complete=!0;var b=this.D?Ad(this.D)?1:this.A.gb?-1:0:0,c=a?this.A.gb?0:1:-1;this.A.gb=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(Bd(this.D,zd(this),c)){this.Y();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&Bd(this.D,zd(this),c)){this.Y();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ja=this.f(this.b):0<=this.O?(this.I=this.Ka=this.f(this.O),this.O=-1):(this.I= +this.Ka=this.f(this.oa=this.i),this.i=(this.i+1)%Yb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ja=this.f(a))&Xb;a=this.I&4194304?-1:this.Ka/ec|0;0<=a&&this.Tb(a);this.N--}while(0>4].call(this,a,a&15)}function O(a){this.w(a)} +function Dd(){var a=0,b=this.f(this.b),c=b/fc&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=100-d));b=c*fc+(d<<24)+(b&16777215);a&&(b=(b+a)%E);this.g(this.b,b)}function Ed(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/fc&63,d=this.K>>24&63;a=32>c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.j&=-8193;this.K=-1}} +function Fd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/fc&63,d=this.K>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%E;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.j&=-8193;this.K=-1}}function Gd(a,b){this.g(b,this.f(this.b))}function Hd(a,b){this.g(b,this.b)}function Id(a,b){this.g(this.b,this.f(b))}function Jd(a,b){this.g(b,0)}function Kd(a,b){this.g(b,D-this.f(b))}function Ld(a,b){this.g(b,D)} +function Md(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Nd(a,d,c)+(c-(c&x)))}function Od(a,b){var c=this.f(b);this.g(b,Nd(a,c,0))}function Pd(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Nd(a,c,b)+(b-(b&x)))}function Qd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>A?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ie(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Nd(a,d,c)+c)} +function je(a,b){var c=this.b*y,d=this.f(b);this.g(b,Nd(a,d,c)+c)}function ke(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Nd(a,c,b)+b)}function le(a,b){var c=this.f(this.b),d=(c&x)*y,c=Nd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function me(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,ne(a,d,c)+c)}function oe(a,b){var c=this.f(b);this.g(b,ne(a,c,this.b)+this.b)}function pe(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,ne(a,c,b)+b)} +function qe(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Zb?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function re(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,ne(a,d,c)+c)}function se(a,b){var c=this.f(b);this.g(b,ne(a,c,0))}function te(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,ne(a,c,b)+b)}function ue(a,b){var c=this.f(this.b),d=c/y|0,c=ne(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function P(a){ve[a&7].call(this,a,a>>3&127)} +function we(){}function xe(){}function M(a){this.u("undefined opcode: "+qa(a));yd(this,-1);this.Y()}function ye(a){a>A&&(a!=C?a=bc-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%E;ze.call(this,a,b,c);return c} +function Ae(a,b,c){var d=!1,e=!1;if(void 0===c){if(!a)return this.j|=131104,-1;c=b>A?D:0}else if((c=(aA&&(a=E-a,d=!d);c>A&&(b?(c=D-c,b=E-b):c&&(c=E-c),e=!0,d=!d);f=this.nb;f[0]=0;f[1]=0;f=this.wa;f[0]=1;f[1]=0;f=this.na;f[0]=a;f[1]=0;a=this.xa;a[0]=b;for(a[1]=c;0c[0]&&(c[0]+=E,c[1]--),Ce(this.nb,this.wa),De(this.xa)))break;Ee(this.na);Ee(this.wa)}while(!De(this.wa));b=this.nb[0];this.F=this.xa[0];d&&b&&(b=E-b);e&&this.F&&(this.F=E-this.F);return b} +function Fe(a,b,c,d){var e=a,f=b;b=!1;var g;e>A&&(d||1001!=this.jb||e!=C)&&(e=E-e,b=!b);f>A&&(f=E-f,b=!b);if(eA)&&(g!=D||a<=A)&&(this.j|=131072),g=a);return g} +function Ge(a){a?a==C?this.j|=163840:a=bc-a:this.j|=98304;return a}function He(a,b){var c=a-b;0>c&&(c+=E);ze.call(this,c,b,a);return c}function ze(a,b,c){a=Math.trunc(a/ac);b=Math.trunc(b/ac);c=Math.trunc(c/ac);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/F|0)&(b/F|0))*F+((a&b)>>>0)}function S(a,b){return R(a,(~(b/F|0)&15)*F+(~b>>>0))}function Ie(a,b){return(a>>0)}function T(a,b){return(a/F|0|b/F|0)*F+((a|b)>>>0)}function U(a){return a>>0)}function W(a){return(a/y|0)+(a&x)*y}function ne(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Zb?x*y:0}return b}function Nd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>A?x:0}return b} +function Ce(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=E&&(a[0]%=E,a[1]++)}function Be(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Ee(a){a[1]%2&&(a[0]+=E);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function De(a){return!a[0]&&!a[1]} +var Cd=[O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},Dd,function(a,b){this.j&8192||(Dd.call(this),this.j|=8192);Ed.call(this,0,b)},Ed,function(a,b){this.j&8192||(Dd.call(this),this.j|=8192);Fd.call(this,0,b)},Fd,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)}, +function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)}, +function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},Gd,Hd,Id,function(a,b){b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(b,a)},function(a,b){this.g(b,this.b*y)},function(a,b){a=this.f(b);a=(a/y|0)+(a&x)*y;this.g(this.b,a)},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,Ge.call(this,this.f(this.b)))},function(a,b){this.g(b, +Ge.call(this,this.b))},function(a,b){this.g(this.b,Ge.call(this,this.f(b)))},function(a,b){a=Ge.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,ye.call(this,this.f(this.b)))},function(a,b){this.g(b,this.b)},function(a,b){this.g(this.b,ye.call(this,this.f(b)))},function(a,b){a=ye.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,Fe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(b,Fe.call(this,this.f(b),this.b,!0))},function(a, +b){this.g(this.b,Fe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(this.b,this.g(b,Fe.call(this,this.f(b),this.f(this.b),!0)))},function(a,b){this.g(b,Fe.call(this,this.f(b),this.f(this.b)));this.g(b+1&15,this.F)},function(a,b){this.g(b,Fe.call(this,this.f(b),this.b));this.g(b+1&15,this.F)},function(a,b){this.g(this.b,Fe.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Fe.call(this,this.f(b),this.f(this.b))));this.g(b+1&15,this.F)},function(a,b){a=Ae.call(this, +this.f(this.b),this.f(b));0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=Ae.call(this,this.b,this.f(b));0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=Ae.call(this,this.f(this.b),this.f(b));0>a||this.g(this.b,a)},function(a,b){a=Ae.call(this,this.f(this.b),this.f(b));0>a||(this.g(this.b,this.g(b,a)),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=Ae.call(this,this.f(this.b),c,a);0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c= +this.f(b+1&15),c=Ae.call(this,this.b,c,a);0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);b=this.f(b+1&15);b=Ae.call(this,this.f(this.b),b,a);0>b||this.g(this.b,b)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=Ae.call(this,this.f(this.b),c,a);0>c||(this.g(b,this.g(this.b,c)),this.g(b+1&15,this.F))},function(a,b){if(a=(this.b&$b)<<14>>23|this.b&255){var c,d,e=this.f(b);0a&&(c+=e*Math.pow(2,a)%C,d=C-Math.pow(2,35-a)),eA&&(this.j|=131072):e-d=a?c=eA&&(d=E-Math.pow(2,36+a),c+=d));this.g(b,c)}},function(a,b){if(a=((this.b&$b)<<14>>23|this.b&255)%36){var c=this.f(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%E+Math.trunc(c/Math.pow(2,36-a));this.g(b,c)}},function(a,b){if(a=(this.b&$b)<<14>>23|this.b&255){var c=this.f(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.g(b,c)}},function(a,b){a=0;var c=this.f(b);if(c){for(;c>23|this.b&255){var c,d=this.f(b),e=this.f(b+1&15);if(0A&&dA&&eA&&(this.j|=131072):e-c<=A&&(this.j|=131072);e=0;f>A&&(d+=C,e+=C)}else d=d*Math.pow(2,a)%C+Math.trunc(e%C/Math.pow(2,35-a)),e=e*Math.pow(2,a)%C,c=C-Math.pow(2,35-a),f<=A?f+c>A&&(this.j|=131072):(f-c<=A&&(this.j|=131072),d+=C,e+=C)}else-36>=a?(e=-72>=a?d> +A?D:0:Math.trunc(d%C/Math.pow(2,-a-35)),d<=A?d=0:(d=D,e+=C)):(c=d>A?E-Math.pow(2,36+a):0,e=Math.trunc(e%C/Math.pow(2,-a))+d%C*Math.pow(2,35+a)%C,d=Math.trunc(d/Math.pow(2,-a))+c,d>A&&(e+=C));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=((this.b&$b)<<14>>23|this.b&255)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%E+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%E+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%E+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2, +a-36)%E+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,b){if(a=(this.b&$b)<<14>>23|this.b&255){var c=this.f(b),d=this.f(b+1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%E,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},M,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b, +a)},function(a,b){for(var c=a=!1,d=this.f(b),e=d/y|0,d=d&x;!a;)if(this.g(d,this.f(e)),(a=d>=this.b)||(e=e+1&x,d=d+1&x,c=!0),a||!this.A.P){c&&this.g(b,e*y+d);a||yd(this,-1);break}},function(a,b){a=(this.f(b)+262145)%E;this.g(b,a);a=C&&H(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&xd(this,this.Ja/y|0);b&4&&this.Y();b&8&&this.w(a);H(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,H(this,this.b))},function(){this.O= +this.b},M,function(a,b){a=(this.f(b)+262145)%E;this.g(b,a);a/y|0||(this.j|=262144);this.g(a&Xb,(this.j&x)*y+this.i);this.j&=-8193;H(this,this.b)},function(a,b){a=this.f(b);a+=262145;this.g(a&Xb,this.f(this.b));a>=E&&(a-=E);a/y|0||(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Xb);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=E);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Xb);a-=262145;0>a&&(a+=E);(a/y|0)==x&&(this.j|=262144);this.g(b, +a);H(this,c&Xb)},function(){this.g(this.b,(this.j&x)*y+this.i);this.j&=-8193;H(this,this.b+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);this.j&=-8193;H(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);H(this,this.b+1)},function(a,b){a=this.f(b);this.g(b,this.f(a/y|0));H(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))}, +function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,b){this.g(b,He.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,He.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,He.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,He.call(this,this.f(b),this.f(this.b))))},we,function(a,b){0>Ie(this.f(b),this.b)&&H(this,this.i+1)},function(a,b){Ie(this.f(b),this.b)||H(this,this.i+1)},function(a,b){0>=Ie(this.f(b),this.b)&&H(this, +this.i+1)},function(){H(this,this.i+1)},function(a,b){0<=Ie(this.f(b),this.b)&&H(this,this.i+1)},function(a,b){Ie(this.f(b),this.b)&&H(this,this.i+1)},function(a,b){0Ie(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(a,b){Ie(this.f(b),this.f(this.b))||H(this,this.i+1)},function(a,b){0>=Ie(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(){H(this,this.i+1)},function(a,b){0<=Ie(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(a, +b){Ie(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(a,b){0U(this.f(b))&&H(this,this.b)},function(a,b){U(this.f(b))||H(this,this.b)},function(a,b){0>=U(this.f(b))&&H(this,this.b)},function(){H(this,this.b)},function(a,b){0<=U(this.f(b))&&H(this,this.b)},function(a,b){U(this.f(b))&&H(this,this.b)},function(a,b){0U(a)&& +H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);U(a)||H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0>=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){H(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));U(a)||H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=U(a)&&H(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0<=U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));U(a)||H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0>=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));H(this,this.i+1);b&&this.g(b,a)},function(a,b){a= +this.g(this.b,Q.call(this,this.f(this.b),1));0<=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),D));U(a)||H(this,this.b)},function(a,b){a= +this.g(b,Q.call(this,this.f(b),D));0>=U(a)&&H(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),D));H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),D));0<=U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),D));U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),D));0U(a)&&H(this, +this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));U(a)||H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));0>=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));0<=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));U(a)&&H(this,this.i+ +1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),D));0>>f.i;0>>= +f.i;0>>a.i;0g&&g>=-C&&(g+=E);for(var g=Math.trunc(Math.abs(g))%E,h=d;f--&&h=na.wb&&c<=na.Sb&&(b=c-(na.wb-na.Nb));b&&(a.preventDefault&&a.preventDefault(),d.eb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==na.Pb&&(b=na.Ob);d.eb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); +a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.eb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.La=function(a,b,c,d){this.G=a;this.H=b;this.v=c;this.D=d;Rb(this)}; +m.Lb=function(a){if(!this.b){var b=fd(this.G,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.Db)return;c=Ea(c[1]);if(this.b=wb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.$a+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Aa=function(a,b){if(!b)if(this.Lb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +m.ra=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new G(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.eb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.C&&a.w.length&&(a.C=0);if(0>a.C||b!=a.w[a.C])a.w.splice(0,0,b),a.C=0;a.C--}else a.V?b="end":b=a.w[a.C+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Ue(a,b,c){if(32>=a.L)return b&c;b=X(a,b,0,!0);c=X(a,c,0,!0);return((b/Ve|0)&(c/Ve|0))*Ve+((b&c)>>>0)} +function We(a,b,c){if(32>=a.L)return b|c;b=X(a,b,0,!0);c=X(a,c,0,!0);return((b/Ve|0)^(c/Ve|0))*Ve+((b^c)>>>0)}Se.prototype.Ib=function(a,b){return a*b};function X(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b<<32-c>>32-c:(a=Math.pow(2,c-1),b>=a?(e=b%a,(b/a|0)&1&&(e-=a)):b<-a&&(e=b%a,((-b-1)/a|0)&1?e&&(e+=a):e||(e-=a)));b!=e&&(b=e);return b} +function Xe(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f=a.Ib(f,g);break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "^/":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1: +0;break;case "&":f=Ue(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=X(e,f,0,!0),g=X(e,g,0,!0),f=(f/Ve|0|g/Ve|0)*Ve+((f|g)>>>0));break;case "^!":f=We(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case ",,":f=X(a,f,18,!0)*Math.pow(2,18)+X(a,g,18,!0);break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=X(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=Ye(a,b,0,b.length,a.T,c);void 0!==d&&e&&ef(a,null,d)}return d} +function $e(a,b,c){for(;c;){switch(c&3){case 1:b=-X(a,b);break;case 2:b=We(a,b,-1);break;case 3:for(var d=35;0<=d&&!Ue(a,b,Math.pow(2,d));)d--;b=35-d}c>>>=2}return b} +function Ze(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.rb(b);if(0<=f)f=a.sb(f);else if(f=b,a.b[f]?f=a.b[f].value:(f=f.substr(0,6),f=a.b[f]&&a.b[f].value),null!=f){var h=a.b[b]&&a.b[b].Mb;h&&(g?g.push(h):(g=df(a,h,d),void 0!==g?f+=g:(d||a.u("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=oa(b,1=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function ff(a){var b=a.b;a.b={};return b}function gf(a,b){var c=0;if(a.b){if(b)return ef(a,b,a.b[b]&&a.b[b].value);b=Object.keys(a.b);b.sort();for(var d=0;d=a?8:262143>=a?18:36);b=pa(b,2,a,"",e);break;case 8:b=qa(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +var bf={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},af={",,":1,"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20},Ve=Math.pow(2,32); +function hf(a){Se.call(this,a);this.Ia=!1;this.Fa=18;this.L=36;this.S=["<",">"];this.ta=[];this.Ha=Y();this.M=Y(0);this.oa=Y(0);this.ha=Y(0);this.I=[];this.i=this.N=this.K=[];jf(this);this.W=this.pa=0;this.j=[];this.Ba=void 0;kf(this);this.D=this;this.va={};this.da=this.Eb=0;this.Z=null;this.R=[];lf(this,a.messages);this.ua=a.commands;this.Ga=[];this.O=0;this.Na=this.Ca=null;this.F=this.Ka=this.Ja=this.na=this.xa=0;this.wa=this.ma=this.ca=null;var b=this;window?void 0===window[t]&&(window[t]=function(a){return kd(b, +a)}):void 0===global[t]&&(global[t]=function(a){return kd(b,a)})}la(hf,Se);function mf(a){a=a&&a.B;null==a&&(a=-1);return a}function Y(a,b,c){return{B:void 0===a?null:a,bb:void 0===b?!1:b,qa:!1,T:c}}function nf(a,b,c,d){a.B=b;a.bb=c||!1;a.qa=!1;a.T=d}function of(a){return[a.B,a.bb,a.qa,a.T,a.fb]}function pf(a,b){var c=Y(b[0],b[1],b[2]);c.qa=b[3];b[4]&&(c.zb=Te(a,c.fb=b[4]));return c}m=hf.prototype; +m.La=function(a,b,c,d){this.H=b;this.G=a;this.v=c;this.ma=a.j;this.Fa=b.F;(b=fd(a,"messages"))&&lf(this,b);if(a=fd(a,"commands"))this.ua=a;qf(this,function(a){a:{var b=d.H.b,c=a[0],e=a=0,k=b.length;if(c){a=mf(rf(d,c,d.oa));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.H.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Qc[c],p&&d.u(n(p.id,8)+" %"+ +n(e<a&&(a+=E);0>b&&(b+=E);a=Fe.call(this.v,a,b,!1,!0);a>=C&&(a-=E);return a}; +function rf(a,b,c){var d,e;c||(c=Y());var f=c.B;if(void 0!==b){a:{var g,f=a.S[0],h=a.S[1];g="("==f||"{"==f||"["==f?"\\":"";for(var k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);){var l=df(a,g[1]);if(void 0===l){b=void 0;break a}b=b.replace(f+g[1]+h,null!=l?L(a,l):"undefined")}if(a.ta.length)for(f=a.ta[0],h=a.ta[1],g="("==f||"{"==f||"["==f?"\\":"",k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);)b=b.replace("["+g[1]+"]","unimplemented");for(;f=b.match(/\$([a-z]+)/i);){h= +null;switch(f[1].toLowerCase()){case "ops":h=0}if(null==h)break;b=b.replace(f[0],h.toString())}}"%"==b.charAt(0)&&(d=!0,b=b.substr(1));var p,f=b,u;if(f.match(/^[a-z_][a-z0-9_]*$/i))for(f=f.toUpperCase(),h=0;ha&&a>=-C&&(a+=E);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function uf(a,b){return L(a,b/Yb,18)+" "+L(a,b%Yb,18)} +function lf(a,b){a.D=a;a.da=a.Eb=536870916;a.Z=null;a.R=[];b=Te(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in gc){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.oa==b&&(b=yd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(nf(a.j[a.W],b),++a.W==a.j.length&&(a.W=0)));return!1} +function Nf(a,b,c,d){var e=Y(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/cc|0,u;for(u in Of)if(g=Of[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Pf;l=p&3;break;case 32256:k=Qf;l=p&7;break;case 29248:k=Rf,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Sf&&(k="B");k=Tf[g||0]+k;if(g){if(28700==h)h=f/dc&127,l=L(a,h,-1);else for(h=f>>23&15,l=L(a,h,-1),p=0;l&&p>18&15)&&(k+="("+L(a,f, +-1)+")")}else k=Da(k,8)+uf(a,f);f=k;g="";h=L(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+uf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ta?h+("cycles="+ld(a.v).toString()+" cs="+n(a.v.Ga)):h+(null!=d?"="+d.toString():""));return h} +function Vf(a,b,c,d,e){var f=-1,g,h;if(b){for(var k=b.toUpperCase(),l=0;lSf&&(J="B");if(k==Tf[h]+J){f=29248!=g?z:(z&3)<<1|(z&12)<<2;f=(B|f<<6)*cc;break}}if(0<=f)break}if(0<=f)break}!(0>f)||c&&c.match(/^[0-9A-Z$%.?]/i)|| +(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),2h||127h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function jf(a){var b,c;a.i=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.xa=0;a.pa=0} +m.Ra=function(a,b,c){var d=!0;c||Wf(this,a,b,!1,!0);if(a!=this.i){var e=mf(b);if(-1===e)this.u("invalid address: "+L(this,b.B,18)),d=!1;else{var f=this.H;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.qa=!0:(Xf(this,a,a.length-1,"set"),kf(this)));return d};function Wf(a,b,c,d,e){var f=!1;c=mf(c);for(var g=1;g>>d.i],b==a.K));h.qa||kf(a);break}}return f} +function Yf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=qa(d,2);nf(e.Ha,d);f+="="+L(e,e.Ma(e.Ha),36)+" ";c+=f}if(b){b="";for(d=0;d=Af?1:d==xf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.I.push({Cd:b,B:c,Xb:d,aa:e,Bb:f})}function ag(a,b,c){var d=[],e=mf(b)>>>0;for(b=0;b>>0,h=f.Xb;if(e>=g&&e>>d.i].g(a,b&16383,b);null==f&&(f=b);b>g&&(g=b);e++});e?(b="start address ",null!=c?(H(a.v,c),b+=L(a,c)):b+="unspecified",a.u(e+" words loaded at "+L(a,f)+"-"+L(a,g)+", "+b),id(a)):a.u("no data")}function bg(a,b,c,d){var e={},f=a.I[b].Bb,g=0,h=null;0<=c&&c=b[1][0]?b[1]:void 0,e=d?b[2]:b[1],f=rf(a,d,a.ha);if(!e)return a.u("begin assemble at "+L(a,f.B,18)),a.V=!0,K(a.G),!0;var g=e.match(/^(['"]?)(.*?)(\.klm|\.mac|\.html|\.txt|)\1$/i);if(g&&(g[1]||g[3])){f=rf(a,d);if(a.wa)a.u("assembly already in progress");else{var h=g[2]+g[3];g[3]||(c+="s");var k=f.B,l=a.wa=new Hg(a);Jg(l,h,k,c,function(b,c){if(!b)try{var d=l.J;null==d&&(d=k);cg(a,l.U,d)}catch(z){"number"==typeof z?b=z||-1:(a.u(z.message), +b=-1)}b&&a.u("error ("+b+") processing "+(c||h));a.wa=null;b||kd(a)})}return!1}b.shift();b.shift();b.shift();b=Vf(a,e,b.join(""),f.B||0);0<=b&&(a.yb(f,b),a.u(Nf(a,f)));return!0}function Kg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return gf(a)||a.u("no variables"),!0;if(!c[2])return gf(a,c[1]);if(!c[3])return delete a.b[c[1]],!0;b=df(a,c[3]);return void 0!==b?(a.b[c[1]]={value:b,Mb:void 0},!0):!1}a.u("invalid assignment:"+b);return!1} +function Lg(a,b,c){var d=null;b=rf(a,b);var e=ag(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+n(f,4,!0)),f=e[0]+" ("+L(a,e[1],18)+")"+g,c&&a.u(f),d=f);4b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case wf:H(h, +g);nf(a.M,h.i);break;case zf:xd(h,g);break;case Af:f=131072;break;case Bf:f=65536;break;case Cf:f=32768;break;case Df:f=8192;break;case Ef:f=32;break;case Ff:f=262144}f&&(h.j=g?h.j|f:h.j&~f);K(a.G);a.u("updated registers:")}}a.u($f(a,e));c&&(nf(a.M,zd(d)),Lf(a,L(a,a.M.B,18)))}}function Mg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ha;l=b;h.B=l.B;h.bb=l.bb;h.qa=l.qa;h.T=l.T;a.u(Nf(a,b,g,f));e-=b.B-k;c++}} +function Zf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(Jf+b):(a.V&&(a.u("ended assemble at "+L(a,a.ha.B,18)),a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Qb(a)&&0B||"z"ta.length&&(a.u("note: only "+ta.length+" available"),ga=ta.length);ka-=ga;0>ka&&(null==ta[ta.length-1].B?(ga=ka+ga,ka=0):ka+=ta.length);var Vd=[];"call"==lg&&(Gb=1E5,Vd=["CALL"]);for(void 0!==kg&&a.u(ga+" instructions earlier:");0=ta.length&&(ka=0);a.Ba=ga;ng++;Gb--}}ng|| +(a.u("no "+mg+"history available"),a.Ba=void 0)}else{var Qa=0,qg="ds"==lb,Ib=rf(a,sa,a.oa);Ga&&("l"==Ga.charAt(0)?(Ga=Ga.substr(1)||ei,Qa=Ze(a,Ga)):Qa=rf(a,Ga).B-Ib.B,0>Qa&&(Qa=0),65536Jb?".":String.fromCharCode(Jb)),Nc=Nc-7}Ra&&(Ra+="\n");Ra=qg?Ra+(ua+","):Ra+(sa+": "+ua+(0>sg?" "+Yd:""))}Ra&&a.u(Ra);a.T=gi}}}break;case "e":if("else"==k[0])break;var tg,ug,vg=k[0],$d=k[1];"e"==vg||"ew"==vg?(tg=a.Ma,ug=a.yb):$d=null;if(null==$d)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else for(var ae=rf(a,$d,a.oa),be=2;bede;){for(var Sa=null,li=256;65536>Mb.B>>>0;){ee.B=a.Ma(Mb,2);if(null==Mb.B||!li--)break;if(!(ee.B&1)){for(var mi=a,Oc=ee,yg=null,Nb=Oc.B,zg=Nb,fe=1;6>=fe&&Nb;fe++){if(2Fg)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.O)a.u("step in progress");else{var Gg=Y(a.v.i);a.Ma(Gg);a.O?(a.Ra(a.i,Gg,!0),Hf(a)||(a.G&&pd(a.G),a.O=0)):Ng(a,Fg?"tr":"t")}break;case "r":if("reset"==b){a.G&&a.G.reset();break}Kf(a,k);break;case "s":a:switch(k[1]){case "base":if(k[2]){var ob=+k[2];if(2==ob||8==ob||10==ob||16==ob)a.T=ob;else{a.u("invalid base: "+ +ob);break}}a.u("default base: "+a.T);break;case "cs":var Pb;void 0!==k[3]&&(Pb=+k[3]);switch(k[2]){case "int":a.v.pa=Pb;break;case "start":a.v.Ha=Pb;break;case "stop":a.v.ua=Pb;break;default:a.u("unknown cs option");break a}void 0!==Pb&&hd(a.v);a.u("checksums "+(a.v.A.Ta?"enabled":"disabled"));break;case "sp":void 0!==k[2]&&(md(a.v,+k[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ca.toFixed(2)+"Mhz")+" ("+a.v.ha+"x)");break;default:if(k[1]){a.u("unknown option: "+ +k[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":Ng(a,k[0],k[1]);break;case "u":Lf(a,k[1],k[2],8);break;case "v":if("var"==k[0]){Kg(a,b.substr(3))||(d=!1);break}if("ver"==k[0]){a.u((Wb||"PDP10")+" version 1.36.2 ("+a.v.jb+",RELEASE)");a.u(window? +window.navigator.userAgent:"");break}f=!0;break;case "?":if(k[1]){Mg(a,b.substr(1));break}var ge="commands:",he;for(he in Pg)ge+="\n"+Da(he,9)+Pg[he];Ad(a)||(ge+="\nnote: history disabled if no exec breakpoints");a.u(ge);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(Ig){a.u("Debugger "+(Ig.stack||Ig.message)),d=!1}return d}function kd(a,b,c){null!=b&&(a.Ga=Te(a,b,c));for(;b=a.Ga.shift();)if(!Zf(a,b))return!1;return!0} +var Pg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Sf=20,Tf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "), +wf=0,xf=1,yf=2,zf=3,Af=4,Bf=5,Cf=6,Df=7,Ef=8,Ff=9,vf="PC RA EA PS OV C0 C1 BI ND PD".split(" "),Qg={},Of=(Qg[28672]={0:101},Qg[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Qg[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Sf, +9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Qg[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Qg[29248]={24576:79,24640:80,25088:81,25152:82},Qg[28700]={28672:93,28676:94,28680:95,28684:96, +28688:97,28692:98,28696:99,28700:100},Qg),Pf=["","I","M","S"],Qf=" L E LE A GE N G".split(" "),Rf="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Uf=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],Gf=1E3,Jf=">> ";bb(function(){for(var a=v(document,t,"debugger"),b=0;bb.indexOf(":")&&0<=".MAC.KLM".indexOf(b.slice(-4).toUpperCase())&&(b+=".txt");La(b,null,!0,function(b,d,e){if(e)a.done&&a.done(e,b);else{e=d;if(Aa(b,".html")){e="";var c;for(b=/
    ([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Ug(a,"unrecognized HTML entity '"+c[0]+"'")}d=e.split(/(\r?\n)/);
    +if(d.length&1){if(c=d.pop())Ug(a,"unexpected line '"+c+"'"),d.push(c),d.push("")}else Ug(a,"unexpected number of lines ("+d.length+")");a.D=a.D.concat(d);a.N[a.R]=d.length>>1;a.R++;setTimeout(function(){Tg(a)},0)}})}}
    +function Sg(a){if(0<=a.W.indexOf("p"))a.u(a.D.join(""));else{var b=ff(a.b);Vg(a,"APR",0);Vg(a,"PI",4);try{for(var c=0;ca.W.indexOf("d")&&(a.b.b=b)}}
    +function Xg(a,b,c,d,e){var f,g;null!=a.w&&(b=bh(a,b));for(var h=!0,k="";h;){g=b.match(a.ha);if(!g||g[5]&&";"!=g[5].slice(0,1))return a.error("failed to parse line '"+b+"'"),!1;h=!1;k=g[2].toUpperCase();if(k==ch||k==dh)c=null;if(c){for(f=0;fz)break;var u=z+1,J=z+l.length,Mc="",ra="";z&&(Mc=b[z-1]).match(/[0-9A-Z$%.]/i)||!(J>=b.length)&&(ra=b[J]).match(/[0-9A-Z$%.]/i)||
    +("'"==Mc&&z--,"'"==ra&&J++,b=b.substr(0,z)+p+b.substr(J),u=z+p.length,h=!0)}}c=null}if(a.i&&(1==a.i&&(f=b.indexOf(a.C),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.S+" definition in '"+b+"'")),1=I?a.X+=I:a.error("unrecognized BLOCK expression '"+k+"'");break;case rh:k=c;b=g=0;for(c=36;I=sh(a,k);){k=k.substr(I.length).trim();d=I;if(e=I.match(/^\((.*)\)\s*(.*)$/))e[1]&&(g=$g(a,"^D"+e[1])),d=e[2];if(g){d=d?$g(a,d):0;if(void 0===d||0>g||36c&&th(a,b);break;case uh:(k=c)?(a.J=$g(a,k),void 0===a.J&&a.error("unrecognized END expression '"+k+"'")):a.J=a.la;break;case vh:wh(a,c);break;case xh:Yg(a);break;case yh:a.X=$g(a,c)||0;break;case zh:Zg(a);break;case Ah:wh(a,c.replace(",",",,"));break;case Bh:case Ch:case Dh:case Eh:case Fh:case Gh:case Hh:case Ih:case Jh:case Kh:case Lh:case Mh:case ch:case dh:case Nh:case Oh:jh(a,k,g);break;case Ph:k=Qh(a,c);for(I=0;Id.Ea&&Z(a,d.ka);break;case Kh:0>=d.Ea&&Z(a,d.ka);break;case Ch:case Lh:case Dh:case Ih:d.Ea&&Z(a,d.ka);break;case ch:case dh:for(b=0;ba.Da&&(a.Da=a.X);a.X=0}function ai(a){if(a.G.length){var b=a.G[a.G.length-1].name;b&&a.M.push({name:b,U:a.U,fa:a.fa});b=a.G.pop();a.U=b.U;a.fa=b.fa;a.X=b.X;a.Da=b.Da;a.G.length||-1==a.Da||a.error("scope restore error")}else a.error("scope nesting error")}
    +function sh(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d"==h&&0>--g){a.error("missing bracket(s) in '"+b+"'");break}}}g?0f&&(g=g.replace(/\.([^0-9]|$)/g,L(a.b,d,-1)+"$1"),f=df(a.b,g,c),void 0===f&&a.error("unable to parse expression '"+b+"'",e));return f}
    +function ih(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e=--c){g=e;break}}0>c&&a.error("missing bracket(s) in '"+b+"'");0<=f&&(d=b.substr(f,g-f));return d}function Wg(a,b){b=void 0===b?a.ia:b;for(var c=0;b>a.N[c];)if(b-=a.N[c],cd?c="":(c=b.substr(d+1),b=b.substr(0,d),a.w=null);a.F+=b}if(null==a.w){var d=b=0,e,f,g=a.F.length;a.S==oh&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(th(a,d),b=0)}b&&th(a,d)}return c}
    +function jh(a,b,c){var d,e,f,g,h,k;a.C="<";a.O=">";g=h=k=[];if(b==Bh){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*,?\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" in '"+c+"'"),c;f=e[1];if(e[2]&&","!=e[2]){h=g=Qh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}d=ci;b=3}else if(b==Nh){a.C="[";a.O="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
    +b+" in '"+c+"'"),c;f=e[1];d=Zh;b=2}else if(b==kh)a.C="[",a.O="]",f="?"+xa(++a.ca,5),a.v[f]&&a.error("literal symbol '"+f+"' redefined"),e=[c[0],c.substr(1)],d=di,b=0;else if(b==ch||b==dh){a.j||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" operands '"+c+"'"),c;for(d=0;d=E)&&Ug(a,"truncated value "+qa(b)+" at location "+qa(c)+" to "+qa(d));return d}Hg.prototype.error=function(a,b){throw Error("error in "+Wg(this,b)+": "+a);};
    +function Ug(a,b){a.u("warning in "+Wg(a,void 0)+": "+b)}Hg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};
    +var fh=1,gh=2,hh=4,nh="ASCII",oh="ASCIZ",qh="BLOCK",rh="BYTE",Bh="DEFINE",uh="END",vh="EXP",Ch="IF1",Dh="IFDEF",Eh="IFDIF",Fh="IFE",Gh="IFG",Hh="IFGE",Ih="IFIDN",Jh="IFL",Kh="IFLE",Lh="IFN",Mh="IFNDEF",ch="IRP",dh="IRPC",Rh="LALL",xh="LIT",kh="LITERAL",Sh="LIST",yh="LOC",Th="NOSYM",Nh="OPDEF",Uh="PAGE",Ph="PURGE",Oh="REPEAT",ph="SIXBIT",Vh="SUBTTL",Wh="TITLE",zh="VAR",Xh="XALL",Ah="XWD",Yh="XLIST",ci=-1,Zh=-2,di=-3,bi=-4;
    +function pi(a,b,c){r.call(this,"Computer",a,33554432);this.A.ba=!1;this.S=null;qi(this,b);this.O=fd(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.M=this.I=this.N=null;this.L=this.W=!1;this.K=this.C=null;this.V=this.R=!1;this.ca=fd(this,"url")||"";(Math.random()+.1).toString(36);this.i=ri(this);if(this.v=xb("CPU",this.id)){this.D=xb("Debugger",this.id);this.H=new Fc({id:this.$a+".bus",busWidth:this.Z},this.v,this.D);var d,e=vb(this.id);if(this.F=(this.j=xb("Panel",this.id))&&
    +this.j.J.print)for(b=0;b\nLicense: GPL version 3 or later ");for(b=0;bsi){if(ti(d,this.M)){this.C=new G(this,"1.36.2",Ci);ti(this.C)&&(Di(this,d),a=Ei,Fi(this.C));this.C.set(zi,Ia());Gi(this.C);var e=this.b&&!this.L;if(a==Ai||sb("Click OK to restore the previous "+Wb+" machine state, or CANCEL to reset the machine.")){if(c=yi(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?ti(d,g):("error"==f&&"no machine state"!=
    +g?(this.ja("Error: "+g),"unable to verify user"==g&&(Va(Hi,""),this.i=null)):this.u(f+": "+g),Fi(d),ti(d)?(c=yi(d),e=!0):c=!1))}e&&wi(this,c?d:null)}else a==Ei&&d.clear()}else wi(this);delete this.M;delete this.K}e=vb(this.id);for(f=0;fa[1];a=a[2];this.V=!0;this.A.ba=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Ii(this,this.v,b,c,a),K(this,-2),this.v.ga());this.R&&(Di(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
    +function Di(a,b){if(sb("There may be a problem with your "+Wb+" machine.\n\nTo help us diagnose it, click OK to send this "+Wb+" machine state to http://www.pcjs.org.")){var c=a.ca;a=a.i||"";b=b.toString();var d={};d.app=Wb;d.ver="1.36.2";d.url=c;d.user=a;d.type="bug";d.data=b;La("http://www.pcjs.org/api/v1/report",d,!0)}}
    +function Og(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.36.2"),g=new G(a,"1.36.2",xi),h=Ia();g.set(zi,h);f.set(zi,h);f.set(Ji,"1.36.2");f.set(Ki,window?window.location.href:null);f.set(Li,window?window.navigator.userAgent:"");a.v&&a.v.ra&&(c&&(b&&(a.v.A.ga=a.v.A.P),a.v.Y()),d=a.v.ra(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.ba=!1,!1===d&&(e=null)));for(var h=vb(a.id),k=0;k=d||30<=(c.hb+=d))&&(e.textContent=c.A.P?c.Z.toFixed(2)+"Mhz":"Stopped",c.hb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.P;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.T||8,e=e||0,e=8==f?qa(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,
    +"$1PDPjs$2"),a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");La(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/gi;l=p.exec(f);)k=0>k.toLowerCase().indexOf(l[1].toLowerCase())?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+
    +"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");a=a.replace(d[0],g);Ti(a,b,c)}})}else c(a,null)}
    +function Ui(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&v(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Ba(a))}function g(a){f("Error: "+a);l&&(--Qi||fb(!0));l=!1}var h,k,l=!0;Qi++;qb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],B=document.createElement("style");B.type="text/css";B.styleSheet?B.styleSheet.cssText=p:B.appendChild(document.createTextNode(p));u.appendChild(B)}d||
    +(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.36.2/components.xsl");p=function(e,k){k?Ri(d,null,a,null,!1,f,function(a,e){e?(pb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Qi||fb(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Qi||
    +fb(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Ri(c,b,a,e,!0,f,p):Si(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(z){g(z.message)}return l}window.embedPDP10=function(a,b,c,d){fb(!1);return Ui("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){fb(!1);return Ui("pdp11",a,b,c,d)};
    +window.commandMachine=function(a,b,c,d,e,f){if("script"==e){d=!1;c+=".machine";if(!f)delete zb[c],d=!0;else if("string"==typeof f&&!zb[c]){d=!0;e=zb;for(var g=c,h=f.length,k=[],l=[],p="",u=null,B=0;B  1        G       (Ground)
    + *     TD      2  <->  3        RD      (Received Data)
    + *     RD      3  <->  2        TD      (Transmitted Data)
    + *     RTS     4  <->  5        CTS     (Clear To Send)
    + *     CTS     5  <->  4        RTS     (Request To Send)
    + *     DSR   6+8  <->  20       DTR     (Data Terminal Ready)
    + *     SG      7  <->  7        SG      (Signal Ground)
    + *     DTR    20  <->  6+8      DSR     (Data Set Ready + Carrier Detect)
    + *     RI     22  <->  22       RI      (Ring Indicator)
    + *
    + * TODO: Move these definitions to a more appropriate shared file at some point.
    + */
    +var RS232 = {
    +    RTS: {
    +        PIN:  4,
    +        MASK: 0x00000010
    +    },
    +    CTS: {
    +        PIN:  5,
    +        MASK: 0x00000020
    +    },
    +    DSR: {
    +        PIN:  6,
    +        MASK: 0x00000040
    +    },
    +    CD: {
    +        PIN:  8,
    +        MASK: 0x00000100
    +    },
    +    DTR: {
    +        PIN:  20,
    +        MASK: 0x00100000
    +    },
    +    RI: {
    +        PIN:  22,
    +        MASK: 0x00400000
    +    }
    +};
    +
    +/*
    + * NODE should be true if we're running under NodeJS (eg, command-line), false if not (eg, web browser)
    + */
    +var NODE = false;
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/*
    + * Our "DiskDump API", such as it was, used to look like:
    + *
    + *      http://jsmachines.net/bin/convdisk.php?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img
    + *
    + * To make it (a bit) more "REST-like", the above request now looks like:
    + *
    + *      http://www.pcjs.org/api/v1/dump?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img
    + *
    + * Similarly, our "FileDump API" used to look like:
    + *
    + *      http://jsmachines.net/bin/convrom.php?rom=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json
    + *
    + * and that request now looks like:
    + *
    + *      http://www.pcjs.org/api/v1/dump?file=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json
    + *
    + * I don't think it makes sense to avoid "query" parameters, because blending the path of a disk image with the
    + * the rest of the URL would be (a) confusing, and (b) more work to parse.
    + */
    +var DumpAPI = {
    +    ENDPOINT:       "/api/v1/dump",
    +    QUERY: {
    +        DIR:        "dir",      // value is path of a directory (DiskDump only)
    +        DISK:       "disk",     // value is path of a disk image (DiskDump only)
    +        FILE:       "file",     // value is path of a ROM image file (FileDump only)
    +        IMG:        "img",      // alias for DISK
    +        PATH:       "path",     // value is path of a one or more files (DiskDump only)
    +        FORMAT:     "format",   // value is one of FORMAT values below
    +        COMMENTS:   "comments", // value is either "true" or "false"
    +        DECIMAL:    "decimal",  // value is either "true" to force all numbers to decimal, "false" or undefined otherwise
    +        MBHD:       "mbhd",     // value is hard drive size in Mb (formerly "mbsize") (DiskDump only) (DEPRECATED)
    +        SIZE:       "size"      // value is target disk size in Kb (supersedes "mbhd") (DiskDump only)
    +    },
    +    FORMAT: {
    +        JSON:       "json",     // default
    +        JSON_GZ:    "gz",       // gzip is currently used ONLY for compressed JSON
    +        DATA:       "data",     // same as "json", but built without JSON.stringify() (DiskDump only)
    +        HEX:        "hex",      // deprecated
    +        OCTAL:      "octal",    // displays data as octal words
    +        BYTES:      "bytes",    // displays data as hex bytes; normally used only when comments are enabled
    +        WORDS:      "words",    // displays data as hex words; normally used only when comments are enabled
    +        LONGS:      "longs",    // displays data as dwords
    +        IMG:        "img",      // returns the raw disk data (ie, using a Buffer object) (DiskDump only)
    +        ROM:        "rom"       // returns the raw file data (ie, using a Buffer object) (FileDump only)
    +    }
    +};
    +
    +/*
    + * Because we use an overloaded API endpoint (ie, one that's shared with the FileDump module), we must
    + * also provide a list of commands which, when combined with the endpoint, define a unique request.
    + */
    +DumpAPI.asDiskCommands = [DumpAPI.QUERY.DIR, DumpAPI.QUERY.DISK, DumpAPI.QUERY.PATH];
    +DumpAPI.asFileCommands = [DumpAPI.QUERY.FILE];
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017
    + */
    +
    +var ReportAPI = {
    +    ENDPOINT:       "/api/v1/report",
    +    QUERY: {
    +        APP:        "app",
    +        VER:        "ver",
    +        URL:        "url",
    +        USER:       "user",
    +        TYPE:       "type",
    +        DATA:       "data"
    +    },
    +    TYPE: {
    +        BUG:        "bug"
    +    },
    +    RES: {
    +        OK:         "Thank you"
    +    }
    +};
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/*
    + * Examples of User API requests:
    + *
    + *      web.getHost() + UserAPI.ENDPOINT + '?' + UserAPI.QUERY.REQ + '=' + UserAPI.REQ.VERIFY + '&' + UserAPI.QUERY.USER + '=' + sUser;
    + */
    +var UserAPI = {
    +    ENDPOINT:       "/api/v1/user",
    +    QUERY: {
    +        REQ:        "req",      // specifies a request
    +        USER:       "user",     // specifies a user ID
    +        STATE:      "state",    // specifies a state ID
    +        DATA:       "data"      // specifies state data
    +    },
    +    REQ: {
    +        CREATE:     "create",   // creates a user ID
    +        VERIFY:     "verify",   // requests verification of a user ID
    +        STORE:      "store",    // stores a machine state on the server
    +        LOAD:       "load"      // loads a machine state from the server
    +    },
    +    RES: {
    +        CODE:       "code",
    +        DATA:       "data"
    +    },
    +    CODE: {
    +        OK:         "ok",
    +        FAIL:       "error"
    +    },
    +    FAIL: {
    +        DUPLICATE:  "user already exists",
    +        VERIFY:     "unable to verify user",
    +        BADSTATE:   "invalid state parameter",
    +        NOSTATE:    "no machine state",
    +        BADLOAD:    "unable to load machine state",
    +        BADSTORE:   "unable to save machine state"
    +    }
    +};
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017
    + */
    +
    +var Keys = {
    +    /*
    +     * Keys and/or key combinations that generate common ASCII codes.
    +     *
    +     * NOTE: If you're looking for a general-purpose ASCII code table, see Str.ASCII in strlib.js;
    +     * if something's missing, that's probably the more appropriate table to add it to.
    +     *
    +     * TODO: The Closure Compiler doesn't inline all references to these values, at least those with
    +     * quoted property names, which is why I've 'unquoted' as many of them as possible.  One solution
    +     * would be to add mnemonics for all of them, not just the non-printable ones (eg, SPACE instead
    +     * of ' ', AMP instead of '&', etc.)
    +     */
    +    ASCII: {
    +          BREAK:  0, CTRL_A:  1, CTRL_B:  2, CTRL_C:  3, CTRL_D:  4, CTRL_E:  5, CTRL_F:  6, CTRL_G:  7,
    +         CTRL_H:  8, CTRL_I:  9, CTRL_J: 10, CTRL_K: 11, CTRL_L: 12, CTRL_M: 13, CTRL_N: 14, CTRL_O: 15,
    +         CTRL_P: 16, CTRL_Q: 17, CTRL_R: 18, CTRL_S: 19, CTRL_T: 20, CTRL_U: 21, CTRL_V: 22, CTRL_W: 23,
    +         CTRL_X: 24, CTRL_Y: 25, CTRL_Z: 26,
    +            ' ': 32,    '!': 33,    '"': 34,    '#': 35,    '$': 36,    '%': 37,    '&': 38,    "'": 39,
    +            '(': 40,    ')': 41,    '*': 42,    '+': 43,    ',': 44,    '-': 45,    '.': 46,    '/': 47,
    +            '0': 48,    '1': 49,    '2': 50,    '3': 51,    '4': 52,    '5': 53,    '6': 54,    '7': 55,
    +            '8': 56,    '9': 57,    ':': 58,    ';': 59,    '<': 60,    '=': 61,    '>': 62,    '?': 63,
    +            '@': 64,     A:  65,     B:  66,     C:  67,     D:  68,     E:  69,     F:  70,     G:  71,
    +             H:  72,     I:  73,     J:  74,     K:  75,     L:  76,     M:  77,     N:  78,     O:  79,
    +             P:  80,     Q:  81,     R:  82,     S:  83,     T:  84,     U:  85,     V:  86,     W:  87,
    +             X:  88,     Y:  89,     Z:  90,    '[': 91,    '\\':92,    ']': 93,    '^': 94,    '_': 95,
    +            '`': 96,     a:  97,     b:  98,     c:  99,     d: 100,     e: 101,     f: 102,     g: 103,
    +             h:  104,    i: 105,     j: 106,     k: 107,     l: 108,     m: 109,     n: 110,     o: 111,
    +             p:  112,    q: 113,     r: 114,     s: 115,     t: 116,     u: 117,     v: 118,     w: 119,
    +             x:  120,    y: 121,     z: 122,    '{':123,    '|':124,    '}':125,    '~':126,   DEL: 127
    +    },
    +    /*
    +     * Browser keyCodes we must pay particular attention to.  For the most part, these are non-alphanumeric
    +     * or function keys, some which may require special treatment (eg, preventDefault() if returning false on
    +     * the initial keyDown event is insufficient).
    +     *
    +     * keyCodes for most common ASCII keys can simply use the appropriate ASCII code above.
    +     *
    +     * Most of these represent non-ASCII keys (eg, the LEFT arrow key), yet for some reason, browsers defined
    +     * them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37).
    +     */
    +    KEYCODE: {
    +        /* 0x08 */ BS:          8,          // BACKSPACE        (ASCII.CTRL_H)
    +        /* 0x09 */ TAB:         9,          // TAB              (ASCII.CTRL_I)
    +        /* 0x0A */ LF:          10,         // LINE FEED        (ASCII.CTRL_J) (TODO: Determine if any key actually generates this)
    +        /* 0x0D */ CR:          13,         // CARRIAGE RETURN  (ASCII.CTRL_M)
    +        /* 0x10 */ SHIFT:       16,
    +        /* 0x11 */ CTRL:        17,
    +        /* 0x12 */ ALT:         18,
    +        /* 0x13 */ PAUSE:       19,         // PAUSE/BREAK
    +        /* 0x14 */ CAPS_LOCK:   20,
    +        /* 0x1B */ ESC:         27,
    +        /* 0x20 */ SPACE:       32,
    +        /* 0x21 */ PGUP:        33,
    +        /* 0x22 */ PGDN:        34,
    +        /* 0x23 */ END:         35,
    +        /* 0x24 */ HOME:        36,
    +        /* 0x25 */ LEFT:        37,
    +        /* 0x26 */ UP:          38,
    +        /* 0x27 */ RIGHT:       39,
    +        /* 0x27 */ FF_QUOTE:    39,
    +        /* 0x28 */ DOWN:        40,
    +        /* 0x2C */ FF_COMMA:    44,
    +        /* 0x2C */ PRTSC:       44,
    +        /* 0x2D */ INS:         45,
    +        /* 0x2E */ DEL:         46,
    +        /* 0x2E */ FF_PERIOD:   46,
    +        /* 0x2F */ FF_SLASH:    47,
    +        /* 0x30 */ ZERO:        48,
    +        /* 0x31 */ ONE:         49,
    +        /* 0x32 */ TWO:         50,
    +        /* 0x33 */ THREE:       51,
    +        /* 0x34 */ FOUR:        52,
    +        /* 0x35 */ FIVE:        53,
    +        /* 0x36 */ SIX:         54,
    +        /* 0x37 */ SEVEN:       55,
    +        /* 0x38 */ EIGHT:       56,
    +        /* 0x39 */ NINE:        57,
    +        /* 0x3B */ FF_SEMI:     59,
    +        /* 0x3D */ FF_EQUALS:   61,
    +        /* 0x5B */ CMD:         91,         // aka WIN
    +        /* 0x5B */ FF_LBRACK:   91,
    +        /* 0x5C */ FF_BSLASH:   92,
    +        /* 0x5D */ RCMD:        93,         // aka MENU
    +        /* 0x5D */ FF_RBRACK:   93,
    +        /* 0x60 */ NUM_0:       96,
    +        /* 0x60 */ NUM_INS:     96,
    +        /* 0x60 */ FF_BQUOTE:   96,
    +        /* 0x61 */ NUM_1:       97,
    +        /* 0x61 */ NUM_END:     97,
    +        /* 0x62 */ NUM_2:       98,
    +        /* 0x62 */ NUM_DOWN:    98,
    +        /* 0x63 */ NUM_3:       99,
    +        /* 0x63 */ NUM_PGDN:    99,
    +        /* 0x64 */ NUM_4:       100,
    +        /* 0x64 */ NUM_LEFT:    100,
    +        /* 0x65 */ NUM_5:       101,
    +        /* 0x65 */ NUM_CENTER:  101,
    +        /* 0x66 */ NUM_6:       102,
    +        /* 0x66 */ NUM_RIGHT:   102,
    +        /* 0x67 */ NUM_7:       103,
    +        /* 0x67 */ NUM_HOME:    103,
    +        /* 0x68 */ NUM_8:       104,
    +        /* 0x68 */ NUM_UP:      104,
    +        /* 0x69 */ NUM_9:       105,
    +        /* 0x69 */ NUM_PGUP:    105,
    +        /* 0x6A */ NUM_MUL:     106,
    +        /* 0x6B */ NUM_ADD:     107,
    +        /* 0x6D */ NUM_SUB:     109,
    +        /* 0x6E */ NUM_DEL:     110,        // aka PERIOD
    +        /* 0x6F */ NUM_DIV:     111,
    +        /* 0x70 */ F1:          112,
    +        /* 0x71 */ F2:          113,
    +        /* 0x72 */ F3:          114,
    +        /* 0x73 */ F4:          115,
    +        /* 0x74 */ F5:          116,
    +        /* 0x75 */ F6:          117,
    +        /* 0x76 */ F7:          118,
    +        /* 0x77 */ F8:          119,
    +        /* 0x78 */ F9:          120,
    +        /* 0x79 */ F10:         121,
    +        /* 0x7A */ F11:         122,
    +        /* 0x7B */ F12:         123,
    +        /* 0x90 */ NUM_LOCK:    144,
    +        /* 0x91 */ SCROLL_LOCK: 145,
    +        /* 0xAD */ FF_DASH:     173,
    +        /* 0xBA */ SEMI:        186,        // Firefox:  59 (FF_SEMI)
    +        /* 0xBB */ EQUALS:      187,        // Firefox:  61 (FF_EQUALS)
    +        /* 0xBC */ COMMA:       188,
    +        /* 0xBD */ DASH:        189,        // Firefox: 173 (FF_DASH)
    +        /* 0xBE */ PERIOD:      190,
    +        /* 0xBF */ SLASH:       191,
    +        /* 0xC0 */ BQUOTE:      192,
    +        /* 0xDB */ LBRACK:      219,
    +        /* 0xDC */ BSLASH:      220,
    +        /* 0xDD */ RBRACK:      221,
    +        /* 0xDE */ QUOTE:       222,
    +        /* 0xE0 */ FF_CMD:      224,        // Firefox only (used for both CMD and RCMD)
    +        //
    +        // The following biases use what I'll call Decimal Coded Binary or DCB (the opposite of BCD),
    +        // where the thousands digit is used to store the sum of "binary" digits 1 and/or 2 and/or 4.
    +        //
    +        // Technically, that makes it DCO (Decimal Coded Octal), but then again, BCD should have really
    +        // been called HCD (Hexadecimal Coded Decimal), so if "they" can take liberties, so can I.
    +        //
    +        // ONDOWN is a bias we add to browser keyCodes that we want to handle on "down" rather than on "press".
    +        //
    +        ONDOWN:                 1000,
    +        //
    +        // ONRIGHT is a bias we add to browser keyCodes that need to check for a "right" location (default is "left")
    +        //
    +        ONRIGHT:                2000,
    +        //
    +        // FAKE is a bias we add to signal these are fake keyCodes corresponding to internal keystroke combinations.
    +        // The actual values are for internal use only and merely need to be unique and used consistently.
    +        //
    +        FAKE:                   4000
    +    },
    +    /*
    +     * The set of values that a browser may store in the 'location' property of a keyboard event object
    +     * which we also support.
    +     */
    +    LOCATION: {
    +        LEFT:                   1,
    +        RIGHT:                  2,
    +        NUMPAD:                 3
    +    }
    +};
    +
    +/*
    + * Check the event object's 'location' property for a non-zero value for the following ONRIGHT keys.
    + */
    +Keys.KEYCODE.NUM_CR = Keys.KEYCODE.CR + Keys.KEYCODE.ONRIGHT;
    +
    +
    +/*
    + * Maps Firefox keyCodes to their more common keyCode counterparts; a number of entries in this table
    + * are no longer valid (if indeed they ever were), so they've been commented out.  It's likely that I
    + * simply extended this table to resolve additional differences in other browsers (ie, Opera), but without
    + * browser-specific checks, it's not safe to perform all the mappings shown below.
    + */
    +Keys.FF_KEYCODES = {};
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_SEMI]   = Keys.KEYCODE.SEMI;           //  59 -> 186
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.KEYCODE.EQUALS;         //  61 -> 187
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_DASH]   = Keys.KEYCODE.DASH;           // 173 -> 189
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_CMD]    = Keys.KEYCODE.CMD;            // 224 -> 91
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_COMMA]  = Keys.KEYCODE.COMMA;       //  44 -> 188
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_PERIOD] = Keys.KEYCODE.PERIOD;      //  46 -> 190
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_SLASH]  = Keys.KEYCODE.SLASH;       //  47 -> 191
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BQUOTE] = Keys.KEYCODE.BQUOTE;      //  96 -> 192
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_LBRACK  = Keys.KEYCODE.LBRACK;      //  91 -> 219
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BSLASH] = Keys.KEYCODE.BSLASH;      //  92 -> 220
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_RBRACK] = Keys.KEYCODE.RBRACK;      //  93 -> 221
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_QUOTE]  = Keys.KEYCODE.QUOTE;       //  39 -> 222
    +
    +/*
    + * Maps non-ASCII keyCodes to their ASCII counterparts
    + */
    +Keys.NONASCII_KEYCODES = {};
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.ASCII['-'];         // 173 -> 45
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SEMI]    = Keys.ASCII[';'];         // 186 -> 59
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.EQUALS]  = Keys.ASCII['='];         // 187 -> 61
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.DASH]    = Keys.ASCII['-'];         // 189 -> 45
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.COMMA]   = Keys.ASCII[','];         // 188 -> 44
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.PERIOD]  = Keys.ASCII['.'];         // 190 -> 46
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SLASH]   = Keys.ASCII['/'];         // 191 -> 47
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BQUOTE]  = Keys.ASCII['`'];         // 192 -> 96
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.LBRACK]  = Keys.ASCII['['];         // 219 -> 91
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BSLASH]  = Keys.ASCII['\\'];        // 220 -> 92
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.RBRACK]  = Keys.ASCII[']'];         // 221 -> 93
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.QUOTE]   = Keys.ASCII["'"];         // 222 -> 39
    +
    +/*
    + * Maps unshifted keyCodes to their shifted counterparts; to be used when a shift-key is down.
    + * Alphabetic characters are handled in code, since they must also take CAPS_LOCK into consideration.
    + */
    +Keys.SHIFTED_KEYCODES = {};
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['1']]     = Keys.ASCII['!'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['2']]     = Keys.ASCII['@'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['3']]     = Keys.ASCII['#'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['4']]     = Keys.ASCII['$'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['5']]     = Keys.ASCII['%'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['6']]     = Keys.ASCII['^'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['7']]     = Keys.ASCII['&'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['8']]     = Keys.ASCII['*'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['9']]     = Keys.ASCII['('];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['0']]     = Keys.ASCII[')'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SEMI]   = Keys.ASCII[':'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.EQUALS] = Keys.ASCII['+'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.COMMA]  = Keys.ASCII['<'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.DASH]   = Keys.ASCII['_'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.PERIOD] = Keys.ASCII['>'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SLASH]  = Keys.ASCII['?'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BQUOTE] = Keys.ASCII['~'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.LBRACK] = Keys.ASCII['{'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BSLASH] = Keys.ASCII['|'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.RBRACK] = Keys.ASCII['}'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.QUOTE]  = Keys.ASCII['"'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_DASH]   = Keys.ASCII['_'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.ASCII['+'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_SEMI]   = Keys.ASCII[':'];
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017
    + */
    +
    +class Str {
    +    /**
    +     * isValidInt(s, base)
    +     *
    +     * The built-in parseInt() function has the annoying feature of returning a partial value (ie,
    +     * up to the point where it encounters an invalid character); eg, parseInt("foo", 16) returns 0xf.
    +     *
    +     * So it's best to use our own Str.parseInt() function, which will in turn use this function to
    +     * validate the entire string.
    +     *
    +     * @param {string} s is the string representation of some number
    +     * @param {number} [base] is the radix to use (default is 10); only 2, 8, 10 and 16 are supported
    +     * @return {boolean} true if valid, false if invalid (or the specified base isn't supported)
    +     */
    +    static isValidInt(s, base)
    +    {
    +        if (!base || base == 10) return s.match(/^-?[0-9]+$/) !== null;
    +        if (base == 16) return s.match(/^-?[0-9a-f]+$/i) !== null;
    +        if (base == 8) return s.match(/^-?[0-7]+$/) !== null;
    +        if (base == 2) return s.match(/^-?[01]+$/) !== null;
    +        return false;
    +    }
    +
    +    /**
    +     * parseInt(s, base)
    +     *
    +     * This is a wrapper around the built-in parseInt() function.  Our wrapper recognizes certain prefixes
    +     * ('$' or "0x" for hex, '#' or "0o" for octal) and suffixes ('.' for decimal, 'h' for hex, 'y' for
    +     * binary), and then calls isValidInt() to ensure we don't convert strings that contain partial values;
    +     * see isValidInt() for details.
    +     *
    +     * The use of multiple prefix/suffix combinations is undefined (although for the record, we process
    +     * prefixes first).  We do NOT support the "0b" prefix to indicate binary UNLESS one or more commas are
    +     * also present (because "0b" is also a valid hex sequence), and we do NOT support a single leading zero
    +     * to indicate octal (because such a number could also be decimal or hex).  Any number of commas are
    +     * allowed; we remove them all before calling the built-in parseInt().
    +     *
    +     * More recently, we've added support for "^D", "^O", and "^B" prefixes to accommodate the base overrides
    +     * that the PDP-10's MACRO-10 assembly language supports (decimal, octal, and binary, respectively).
    +     * If this support turns out to adversely affect other debuggers, then it will have to be "conditionalized".
    +     * Similarly, we've added support for "K", "M", and "G" MACRO-10-style suffixes that add 3, 6, or 9 zeros
    +     * to the value to be parsed, respectively.
    +     *
    +     * @param {string} s is the string representation of some number
    +     * @param {number} [base] is the radix to use (default is 10); can be overridden by prefixes/suffixes
    +     * @return {number|undefined} corresponding value, or undefined if invalid
    +     */
    +    static parseInt(s, base)
    +    {
    +        var value;
    +
    +        if (s) {
    +            if (!base) base = 10;
    +
    +            var ch, chPrefix, chSuffix;
    +            var fCommas = (s.indexOf(',') > 0);
    +            if (fCommas) s = s.replace(/,/g, '');
    +
    +            ch = chPrefix = s.charAt(0);
    +            if (chPrefix == '#') {
    +                base = 8;
    +                chPrefix = '';
    +            }
    +            else if (chPrefix == '$') {
    +                base = 16;
    +                chPrefix = '';
    +            }
    +            if (ch != chPrefix) {
    +                s = s.substr(1);
    +            }
    +            else {
    +                ch = chPrefix = s.substr(0, 2);
    +                if (chPrefix == '0b' && fCommas || chPrefix == '^B') {
    +                    base = 2;
    +                    chPrefix = '';
    +                }
    +                else if (chPrefix == '0o' || chPrefix == '^O') {
    +                    base = 8;
    +                    chPrefix = '';
    +                }
    +                else if (chPrefix == '^D') {
    +                    base = 10;
    +                    chPrefix = '';
    +                }
    +                else if (chPrefix == '0x') {
    +                    base = 16;
    +                    chPrefix = '';
    +                }
    +                if (ch != chPrefix) s = s.substr(2);
    +            }
    +            ch = chSuffix = s.slice(-1);
    +            if (chSuffix == 'Y' || chSuffix == 'y') {
    +                base = 2;
    +                chSuffix = '';
    +            }
    +            else if (chSuffix == '.') {
    +                base = 10;
    +                chSuffix = '';
    +            }
    +            else if (chSuffix == 'H' || chSuffix == 'h') {
    +                base = 16;
    +                chSuffix = '';
    +            }
    +            else if (chSuffix == 'K') {
    +                chSuffix = '000';
    +            }
    +            else if (chSuffix == 'M') {
    +                chSuffix = '000000';
    +            }
    +            else if (chSuffix == 'G') {
    +                chSuffix = '000000000';
    +            }
    +            if (ch != chSuffix) s = s.slice(0, -1) + chSuffix;
    +            /*
    +             * This adds support for the MACRO-10 binary shifting (Bn) suffix, which must be stripped from the
    +             * number before parsing, and then applied to the value after parsing.  If n is omitted, 35 is assumed,
    +             * which is a net shift of zero.  If n < 35, then a left shift of (35 - n) is required; if n > 35, then
    +             * a right shift of -(35 - n) is required.
    +             */
    +            var v, shift = 0;
    +            if (base <= 10) {
    +                var match = s.match(/(-?[0-9]+)B([0-9]*)/);
    +                if (match) {
    +                    s = match[1];
    +                    shift = 35 - ((match[2] || 35) & 0xff);
    +                }
    +            }
    +            if (Str.isValidInt(s, base) && !isNaN(v = parseInt(s, base))) {
    +                /*
    +                 * With the need to support larger (eg, 36-bit) integers, truncating to 32 bits is no longer helpful.
    +                 *
    +                 *      value = v|0;
    +                 */
    +                if (shift) {
    +                    /*
    +                     * Since binary shifting is a logical operation, and since shifting by division only works properly
    +                     * with positive numbers, we must convert a negative value to a positive value, by computing the two's
    +                     * complement.
    +                     */
    +                    if (v < 0) v += Math.pow(2, 36);
    +                    if (shift > 0) {
    +                        v *= Math.pow(2, shift);
    +                    } else {
    +                        v = Math.trunc(v / Math.pow(2, -shift));
    +                    }
    +                }
    +                value = v;
    +            }
    +        }
    +        return value;
    +    }
    +
    +    /**
    +     * toBase(n, radix, cch, sPrefix, nGrouping)
    +     *
    +     * Displays the given number as an unsigned integer using the specified radix and number of digits.
    +     *
    +     * @param {number|null|undefined} n
    +     * @param {number} radix (ie, the base)
    +     * @param {number} cch (the desired number of digits)
    +     * @param {string} [sPrefix] (default is none)
    +     * @param {number} [nGrouping]
    +     * @return {string}
    +     */
    +    static toBase(n, radix, cch, sPrefix = "", nGrouping = 0)
    +    {
    +        /*
    +         * An initial "falsey" check for null takes care of both null and undefined;
    +         * we can't rely entirely on isNaN(), because isNaN(null) returns false, oddly enough.
    +         *
    +         * Alternatively, we could mask and shift n regardless of whether it's null/undefined/NaN,
    +         * since JavaScript coerces such operands to zero, but I think there's "value" in seeing those
    +         * values displayed differently.
    +         */
    +        var s = "";
    +        if (isNaN(n)) {
    +            n = null;
    +        } else if (n != null) {
    +            /*
    +             * Callers that produced an input by dividing by a power of two rather than shifting (in order
    +             * to access more than 32 bits) may produce a fractional result, which ordinarily we would simply
    +             * ignore, but if the integer portion is zero and the sign is negative, we should probably treat
    +             * this value as a sign-extension.
    +             */
    +            if (n < 0 && n > -1) n = -1;
    +            /*
    +             * Negative values should be two's complemented according to the number of digits; for example,
    +             * 12 octal digits implies an upper limit 8^12.
    +             */
    +            if (n < 0) {
    +                n += Math.pow(radix, cch);
    +            }
    +            if (n >= Math.pow(radix, cch)) {
    +                cch = Math.ceil(Math.log(n) / Math.log(radix));
    +            }
    +        }
    +        var g = nGrouping || -1;
    +        while (cch-- > 0) {
    +            if (!g) {
    +                s = ',' + s;
    +                g = nGrouping;
    +            }
    +            if (n == null) {
    +                s = '?' + s;
    +            } else {
    +                var d = n % radix;
    +                d += (d >= 0 && d <= 9? 0x30 : 0x41 - 10);
    +                s = String.fromCharCode(d) + s;
    +                n = Math.trunc(n / radix);
    +            }
    +            g--;
    +        }
    +        return sPrefix + s;
    +    }
    +
    +    /**
    +     * toBin(n, cch, nGrouping)
    +     *
    +     * Converts an integer to binary, with the specified number of digits (up to a maximum of 36).
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of binary digits (0 or undefined for default of either 8, 18, or 36)
    +     * @param {number} [nGrouping]
    +     * @return {string} the binary representation of n
    +     */
    +    static toBin(n, cch, nGrouping)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN2) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 0b11111111) {
    +                cch = 8;
    +            } else if (v <= 0b111111111111111111) {
    +                cch = 18;
    +            } else {
    +                cch = 36;
    +            }
    +        } else if (cch > 36) cch = 36;
    +        return Str.toBase(n, 2, cch, "", nGrouping);
    +    }
    +
    +    /**
    +     * toBinBytes(n, cb, fPrefix)
    +     *
    +     * Converts an integer to binary, with the specified number of bytes (up to the default of 4).
    +     *
    +     * @param {number|null|undefined} n (interpreted as a 32-bit value)
    +     * @param {number} [cb] is the desired number of binary bytes (4 is both the default and the maximum)
    +     * @param {boolean} [fPrefix]
    +     * @return {string} the binary representation of n
    +     */
    +    static toBinBytes(n, cb, fPrefix)
    +    {
    +        var s = "";
    +        if (!cb || cb > 4) cb = 4;
    +        for (var i = 0; i < cb; i++) {
    +            if (s) s = ',' + s;
    +            s = Str.toBin(n & 0xff, 8) + s;
    +            n >>= 8;
    +        }
    +        return (fPrefix? "0b" : "") + s;
    +    }
    +
    +    /**
    +     * toOct(n, cch, fPrefix)
    +     *
    +     * Converts an integer to octal, with the specified number of digits (default of 6; max of 12)
    +     *
    +     * You might be tempted to use the built-in n.toString(8) instead, but it doesn't zero-pad and it
    +     * doesn't properly convert negative values.  Moreover, if n is undefined, n.toString() will throw
    +     * an exception, whereas this function will return '?' characters.
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of octal digits (0 or undefined for default of either 6, 8, or 12)
    +     * @param {boolean} [fPrefix]
    +     * @return {string} the octal representation of n
    +     */
    +    static toOct(n, cch, fPrefix)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(8)) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 0o777777) {
    +                cch = 6;
    +            } else if (v <= 0o77777777) {
    +                cch = 8;
    +            } else {
    +                cch = 12;
    +            }
    +        } else if (cch > 12) cch = 12;
    +        return Str.toBase(n, 8, cch, fPrefix? "0o" : "");
    +    }
    +
    +    /**
    +     * toDec(n, cch)
    +     *
    +     * Converts an integer to decimal, with the specified number of digits (default of 5; max of 11)
    +     *
    +     * You might be tempted to use the built-in n.toString(10) instead, but it doesn't zero-pad and it
    +     * doesn't properly convert negative values.  Moreover, if n is undefined, n.toString() will throw
    +     * an exception, whereas this function will return '?' characters.
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of decimal digits (0 or undefined for default of either 5 or 11)
    +     * @return {string} the decimal representation of n
    +     */
    +    static toDec(n, cch)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN10) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 99999) {
    +                cch = 5;
    +            } else {
    +                cch = 11;
    +            }
    +        } else if (cch > 11) cch = 11;
    +        return Str.toBase(n, 10, cch);
    +    }
    +
    +    /**
    +     * toHex(n, cch, fPrefix)
    +     *
    +     * Converts an integer to hex, with the specified number of digits (default of 4 or 8, max of 9).
    +     *
    +     * You might be tempted to use the built-in n.toString(16) instead, but it doesn't zero-pad and it
    +     * doesn't properly convert negative values; for example, if n is -2147483647, then n.toString(16)
    +     * will return "-7fffffff" instead of "80000001".  Moreover, if n is undefined, n.toString() will
    +     * throw an exception, whereas this function will return '?' characters.
    +     *
    +     * NOTE: The following work-around (adapted from code found on StackOverflow) would be another solution,
    +     * taking care of negative values, zero-padding, and upper-casing, but not null/undefined/NaN values:
    +     *
    +     *      s = (n < 0? n + 0x100000000 : n).toString(16);
    +     *      s = "00000000".substr(0, 8 - s.length) + s;
    +     *      s = s.substr(0, cch).toUpperCase();
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of hex digits (0 or undefined for default of either 4, 8, or 9)
    +     * @param {boolean} [fPrefix]
    +     * @return {string} the hex representation of n
    +     */
    +    static toHex(n, cch, fPrefix)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(16)) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 0xffff) {
    +                cch = 4;
    +            } else if (v <= 0xffffffff) {
    +                cch = 8;
    +            } else {
    +                cch = 9;
    +            }
    +        } else if (cch > 9) cch = 9;
    +        return Str.toBase(n, 16, cch, fPrefix? "0x" : "");
    +    }
    +
    +    /**
    +     * toHexByte(b)
    +     *
    +     * Alias for Str.toHex(b, 2, true)
    +     *
    +     * @param {number|null|undefined} b is a byte value
    +     * @return {string} the hex representation of b
    +     */
    +    static toHexByte(b)
    +    {
    +        return Str.toHex(b, 2, true);
    +    }
    +
    +    /**
    +     * toHexWord(w)
    +     *
    +     * Alias for Str.toHex(w, 4, true)
    +     *
    +     * @param {number|null|undefined} w is a word (16-bit) value
    +     * @return {string} the hex representation of w
    +     */
    +    static toHexWord(w)
    +    {
    +        return Str.toHex(w, 4, true);
    +    }
    +
    +    /**
    +     * toHexLong(l)
    +     *
    +     * Alias for Str.toHex(l, 8, true)
    +     *
    +     * @param {number|null|undefined} l is a dword (32-bit) value
    +     * @return {string} the hex representation of w
    +     */
    +    static toHexLong(l)
    +    {
    +        return Str.toHex(l, 8, true);
    +    }
    +
    +    /**
    +     * getBaseName(sFileName, fStripExt)
    +     *
    +     * This is a poor-man's version of Node's path.basename(), which Node-only components should use instead.
    +     *
    +     * Note that if fStripExt is true, this strips ANY extension, whereas path.basename() strips the extension only
    +     * if it matches the second parameter (eg, path.basename("/foo/bar/baz/asdf/quux.html", ".html") returns "quux").
    +     *
    +     * @param {string} sFileName
    +     * @param {boolean} [fStripExt]
    +     * @return {string}
    +     */
    +    static getBaseName(sFileName, fStripExt)
    +    {
    +        var sBaseName = sFileName;
    +
    +        var i = sFileName.lastIndexOf('/');
    +        if (i >= 0) sBaseName = sFileName.substr(i + 1);
    +
    +        /*
    +         * This next bit is a kludge to clean up names that are part of a URL that includes unsightly query parameters.
    +         */
    +        i = sBaseName.indexOf('&');
    +        if (i > 0) sBaseName = sBaseName.substr(0, i);
    +
    +        if (fStripExt) {
    +            i = sBaseName.lastIndexOf(".");
    +            if (i > 0) {
    +                sBaseName = sBaseName.substring(0, i);
    +            }
    +        }
    +        return sBaseName;
    +    }
    +
    +    /**
    +     * getExtension(sFileName)
    +     *
    +     * This is a poor-man's version of Node's path.extname(), which Node-only components should use instead.
    +     *
    +     * Note that we EXCLUDE the period from the returned extension, whereas path.extname() includes it.
    +     *
    +     * @param {string} sFileName
    +     * @return {string} the filename's extension (in lower-case and EXCLUDING the "."), or an empty string
    +     */
    +    static getExtension(sFileName)
    +    {
    +        var sExtension = "";
    +        var i = sFileName.lastIndexOf(".");
    +        if (i >= 0) {
    +            sExtension = sFileName.substr(i + 1).toLowerCase();
    +        }
    +        return sExtension;
    +    }
    +
    +    /**
    +     * endsWith(s, sSuffix)
    +     *
    +     * @param {string} s
    +     * @param {string} sSuffix
    +     * @return {boolean} true if s ends with sSuffix, false if not
    +     */
    +    static endsWith(s, sSuffix)
    +    {
    +        return s.indexOf(sSuffix, s.length - sSuffix.length) !== -1;
    +    }
    +
    +    /**
    +     * escapeHTML(sHTML)
    +     *
    +     * @param {string} sHTML
    +     * @return {string} with HTML entities "escaped", similar to PHP's htmlspecialchars()
    +     */
    +    static escapeHTML(sHTML)
    +    {
    +        return sHTML.replace(/[&<>"']/g, function(m)
    +        {
    +            return Str.aHTMLEscapeMap[m];
    +        });
    +    }
    +
    +    /**
    +     * replace(sSearch, sReplace, s)
    +     *
    +     * The JavaScript replace() function ALWAYS interprets "$" specially in replacement strings, even when
    +     * the search string is NOT a RegExp; specifically:
    +     *
    +     *      $$  Inserts a "$"
    +     *      $&  Inserts the matched substring
    +     *      $`  Inserts the portion of the string that precedes the matched substring
    +     *      $'  Inserts the portion of the string that follows the matched substring
    +     *      $n  Where n is a positive integer less than 100, inserts the nth parenthesized sub-match string,
    +     *          provided the first argument was a RegExp object
    +     *
    +     * So, if a replacement string containing dollar signs passes through a series of replace() calls, untold
    +     * problems could result.  Hence, this function, which simply uses the replacement string as-is.
    +     *
    +     * Similar to the JavaScript replace() method (when sSearch is a string), this replaces only ONE occurrence
    +     * (ie, the FIRST occurrence); it might be nice to add options to replace the LAST occurrence and/or ALL
    +     * occurrences, but we'll revisit that later.
    +     *
    +     * @param {string} sSearch
    +     * @param {string} sReplace
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static replace(sSearch, sReplace, s)
    +    {
    +        var i = s.indexOf(sSearch);
    +        if (i >= 0) {
    +            s = s.substr(0, i) + sReplace + s.substr(i + sSearch.length);
    +        }
    +        return s;
    +    }
    +
    +    /**
    +     * replaceAll(sSearch, sReplace, s)
    +     *
    +     * @param {string} sSearch
    +     * @param {string} sReplace
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static replaceAll(sSearch, sReplace, s)
    +    {
    +        var a = {};
    +        a[sSearch] = sReplace;
    +        return Str.replaceArray(a, s);
    +    }
    +
    +    /**
    +     * replaceArray(a, s)
    +     *
    +     * @param {Object} a
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static replaceArray(a, s)
    +    {
    +        var sMatch = "";
    +        for (var k in a) {
    +            /*
    +             * As noted in:
    +             *
    +             *      http://www.regexguru.com/2008/04/escape-characters-only-when-necessary/
    +             *
    +             * inside character classes, only backslash, caret, hyphen and the closing bracket need to be
    +             * escaped.  And in fact, if you ensure that the closing bracket is first, the caret is not first,
    +             * and the hyphen is last, you can avoid escaping those as well.
    +             */
    +            k = k.replace(/([\\[\]*{}().+?])/g, "\\$1");
    +            sMatch += (sMatch? '|' : '') + k;
    +        }
    +        return s.replace(new RegExp('(' + sMatch + ')', "g"), function(m)
    +        {
    +            return a[m];
    +        });
    +    }
    +
    +    /**
    +     * pad(s, cch, fPadLeft)
    +     *
    +     * NOTE: the maximum amount of padding currently supported is 40 spaces.
    +     *
    +     * @param {string} s is a string
    +     * @param {number} cch is desired length
    +     * @param {boolean} [fPadLeft] (default is padding on the right)
    +     * @return {string} the original string (s) with spaces padding it to the specified length
    +     */
    +    static pad(s, cch, fPadLeft)
    +    {
    +        var sPadding = "                                        ";
    +        return fPadLeft? (sPadding + s).slice(-cch) : (s + sPadding).slice(0, cch);
    +    }
    +
    +    /**
    +     * stripLeadingZeros(s, fPad)
    +     *
    +     * @param {string} s
    +     * @param {boolean} [fPad]
    +     * @return {string}
    +     */
    +    static stripLeadingZeros(s, fPad)
    +    {
    +        var cch = s.length;
    +        s = s.replace(/^0+([0-9A-F]+)$/i, "$1");
    +        if (fPad) s = Str.pad(s, cch, true);
    +        return s;
    +    }
    +
    +    /**
    +     * trim(s)
    +     *
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static trim(s)
    +    {
    +        if (String.prototype.trim) {
    +            return s.trim();
    +        }
    +        return s.replace(/^\s+|\s+$/g, "");
    +    }
    +
    +    /**
    +     * toASCIICode(b)
    +     *
    +     * @param {number} b
    +     * @return {string}
    +     */
    +    static toASCIICode(b)
    +    {
    +        var s;
    +        if (b != Str.ASCII.CR && b != Str.ASCII.LF) {
    +            s = Str.aASCIICodes[b];
    +        }
    +        if (s) {
    +            s = '<' + s + '>';
    +        } else {
    +            s = String.fromCharCode(b);
    +        }
    +        return s;
    +    }
    +}
    +
    +Str.aHTMLEscapeMap = {
    +    '&': '&',
    +    '<': '<',
    +    '>': '>',
    +    '"': '"',
    +    "'": '''
    +};
    +
    +/*
    + * Future home of a general-purpose ASCII table.  TODO: Flesh it out.
    + */
    +Str.ASCII = {
    +    LF:     0x0A,
    +    CR:     0x0D
    +};
    +
    +/*
    + * Table for converting "unprintable" ASCII codes into mnemonics, to more clearly see what's being printed.
    + */
    +Str.aASCIICodes = {
    +    0x00:   "NUL",
    +    0x01:   "SOH",      // (CTRL_A) Start of Heading
    +    0x02:   "STX",      // (CTRL_B) Start of Text
    +    0x03:   "ETX",      // (CTRL_C) End of Text
    +    0x04:   "EOT",      // (CTRL_D) End of Transmission
    +    0x05:   "ENQ",      // (CTRL_E) Enquiry
    +    0x06:   "ACK",      // (CTRL_F) Acknowledge
    +    0x07:   "BEL",      // (CTRL_G) Bell
    +    0x08:   "BS",       // (CTRL_H) Backspace
    +    0x09:   "TAB",      // (CTRL_I) Horizontal Tab
    +    0x0A:   "LF",       // (CTRL_J) Line Feed (New Line)
    +    0x0B:   "VT",       // (CTRL_K) Vertical Tab
    +    0x0C:   "FF",       // (CTRL_L) Form Feed (New Page)
    +    0x0D:   "CR",       // (CTRL_M) Carriage Return
    +    0x0E:   "SO",       // (CTRL_N) Shift Out
    +    0x0F:   "SI",       // (CTRL_O) Shift In
    +    0x10:   "DLE",      // (CTRL_P) Data Link Escape
    +    0x11:   "XON",      // (CTRL_Q) Device Control 1 (aka DC1)
    +    0x12:   "DC2",      // (CTRL_R) Device Control 2
    +    0x13:   "XOFF",     // (CTRL_S) Device Control 3 (aka DC3)
    +    0x14:   "DC4",      // (CTRL_T) Device Control 4
    +    0x15:   "NAK",      // (CTRL_U) Negative Acknowledge
    +    0x16:   "SYN",      // (CTRL_V) Synchronous Idle
    +    0x17:   "ETB",      // (CTRL_W) End of Transmission Block
    +    0x18:   "CAN",      // (CTRL_X) Cancel
    +    0x19:   "EM",       // (CTRL_Y) End of Medium
    +    0x1A:   "SUB",      // (CTRL_Z) Substitute
    +    0x1B:   "ESC",      // Escape
    +    0x1C:   "FS",       // File Separator
    +    0x1D:   "GS",       // Group Separator
    +    0x1E:   "RS",       // Record Separator
    +    0x1F:   "US"        // Unit Separator
    +};
    +
    +Str.TYPES = {
    +    NULL:       0,
    +    BYTE:       1,
    +    WORD:       2,
    +    DWORD:      3,
    +    NUMBER:     4,
    +    STRING:     5,
    +    BOOLEAN:    6,
    +    OBJECT:     7,
    +    ARRAY:      8
    +};
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/**
    + * @typedef {{
    + *  mask:       number,
    + *  shift:      number
    + * }}
    + */
    +var BitField;
    +
    +/**
    + * @typedef {Object.}
    + */
    +var BitFields;
    +
    +class Usr {
    +    /**
    +     * binarySearch(a, v, fnCompare)
    +     *
    +     * @param {Array} a is an array
    +     * @param {number|string|Array|Object} v
    +     * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare]
    +     * @return {number} the index of matching entry if non-negative, otherwise the index of the insertion point
    +     */
    +    static binarySearch(a, v, fnCompare)
    +    {
    +        var left = 0;
    +        var right = a.length;
    +        var found = 0;
    +        if (fnCompare === undefined) {
    +            fnCompare = function(a, b)
    +            {
    +                return a > b ? 1 : a < b ? -1 : 0;
    +            };
    +        }
    +        while (left < right) {
    +            var middle = (left + right) >> 1;
    +            var compareResult;
    +            compareResult = fnCompare(v, a[middle]);
    +            if (compareResult > 0) {
    +                left = middle + 1;
    +            } else {
    +                right = middle;
    +                found = !compareResult;
    +            }
    +        }
    +        return found ? left : ~left;
    +    }
    +
    +    /**
    +     * binaryInsert(a, v, fnCompare)
    +     *
    +     * If element v already exists in array a, the array is unchanged (we don't allow duplicates); otherwise, the
    +     * element is inserted into the array at the appropriate index.
    +     *
    +     * @param {Array} a is an array
    +     * @param {number|string|Array|Object} v is the value to insert
    +     * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare]
    +     */
    +    static binaryInsert(a, v, fnCompare)
    +    {
    +        var index = Usr.binarySearch(a, v, fnCompare);
    +        if (index < 0) {
    +            a.splice(-(index + 1), 0, v);
    +        }
    +    }
    +
    +    /**
    +     * getTimestamp()
    +     *
    +     * @return {string} timestamp containing the current date and time ("yyyy-mm-dd hh:mm:ss")
    +     */
    +    static getTimestamp()
    +    {
    +        return Usr.formatDate("Y-m-d H:i:s");
    +    }
    +
    +    /**
    +     * getMonthDays(nMonth, nYear)
    +     *
    +     * Note that if we're being called on behalf of the RTC, its year is always truncated to two digits (mod 100),
    +     * so we have no idea what century the year 0 might refer to.  When using the normal leap-year formula, 0 fails
    +     * the mod 100 test but passes the mod 400 test, so as far as the RTC is concerned, every century year is a leap
    +     * year.  Since we're most likely dealing with the year 2000, that's fine, since 2000 was also a leap year.
    +     *
    +     * TODO: There IS a separate CMOS byte that's supposed to be set to CMOS_ADDR.CENTURY_DATE; it's always BCD,
    +     * so theoretically it will contain values like 0x19 or 0x20 (for the 20th and 21st centuries, respectively), and
    +     * we could add that as another parameter to this function, to improve the accuracy, but that would go beyond what
    +     * a real RTC actually does.
    +     *
    +     * @param {number} nMonth (1-12)
    +     * @param {number} nYear (normally a 4-digit year, but it may also be mod 100)
    +     * @return {number} the maximum (1-based) day allowed for the specified month and year
    +     */
    +    static getMonthDays(nMonth, nYear)
    +    {
    +        var nDays = Usr.aMonthDays[nMonth - 1];
    +        if (nDays == 28) {
    +            if ((nYear % 4) === 0 && ((nYear % 100) || (nYear % 400) === 0)) {
    +                nDays++;
    +            }
    +        }
    +        return nDays;
    +    }
    +
    +    /**
    +     * formatDate(sFormat, date)
    +     *
    +     * @param {string} sFormat (eg, "F j, Y", "Y-m-d H:i:s")
    +     * @param {Date} [date] (default is the current time)
    +     * @return {string}
    +     *
    +     * Supported identifiers in sFormat include:
    +     *
    +     *      a:  lowercase ante meridiem and post meridiem (am or pm)
    +     *      d:  day of the month, 2 digits with leading zeros (01,02,...,31)
    +     *      D:  3-letter day of the week ("Sun","Mon",...,"Sat")
    +     *      F:  month ("January","February",...,"December")
    +     *      g:  hour in 12-hour format, without leading zeros (1,2,...,12)
    +     *      h:  hour in 24-hour format, without leading zeros (0,1,...,23)
    +     *      H:  hour in 24-hour format, with leading zeros (00,01,...,23)
    +     *      i:  minutes, with leading zeros (00,01,...,59)
    +     *      j:  day of the month, without leading zeros (1,2,...,31)
    +     *      l:  day of the week ("Sunday","Monday",...,"Saturday")
    +     *      m:  month, with leading zeros (01,02,...,12)
    +     *      M:  3-letter month ("Jan","Feb",...,"Dec")
    +     *      n:  month, without leading zeros (1,2,...,12)
    +     *      s:  seconds, with leading zeros (00,01,...,59)
    +     *      y:  2-digit year (eg, 14)
    +     *      Y:  4-digit year (eg, 2014)
    +     *
    +     * For more inspiration, see: http://php.net/manual/en/function.date.php (of which we support ONLY a subset).
    +     */
    +    static formatDate(sFormat, date)
    +    {
    +        var sDate = "";
    +        if (!date) date = new Date();
    +        var iHour = date.getHours();
    +        var iDay = date.getDate();
    +        var iMonth = date.getMonth() + 1;
    +        for (var i = 0; i < sFormat.length; i++) {
    +            var ch;
    +            switch ((ch = sFormat.charAt(i))) {
    +            case 'a':
    +                sDate += (iHour < 12 ? "am" : "pm");
    +                break;
    +            case 'd':
    +                sDate += ('0' + iDay).slice(-2);
    +                break;
    +            case 'D':
    +                sDate += Usr.asDays[date.getDay()].substr(0, 3);
    +                break;
    +            case 'F':
    +                sDate += Usr.asMonths[iMonth - 1];
    +                break;
    +            case 'g':
    +                sDate += (!iHour ? 12 : (iHour > 12 ? iHour - 12 : iHour));
    +                break;
    +            case 'h':
    +                sDate += iHour;
    +                break;
    +            case 'H':
    +                sDate += ('0' + iHour).slice(-2);
    +                break;
    +            case 'i':
    +                sDate += ('0' + date.getMinutes()).slice(-2);
    +                break;
    +            case 'j':
    +                sDate += iDay;
    +                break;
    +            case 'l':
    +                sDate += Usr.asDays[date.getDay()];
    +                break;
    +            case 'm':
    +                sDate += ('0' + iMonth).slice(-2);
    +                break;
    +            case 'M':
    +                sDate += Usr.asMonths[iMonth - 1].substr(0, 3);
    +                break;
    +            case 'n':
    +                sDate += iMonth;
    +                break;
    +            case 's':
    +                sDate += ('0' + date.getSeconds()).slice(-2);
    +                break;
    +            case 'y':
    +                sDate += ("" + date.getFullYear()).slice(-2);
    +                break;
    +            case 'Y':
    +                sDate += date.getFullYear();
    +                break;
    +            default:
    +                sDate += ch;
    +                break;
    +            }
    +        }
    +        return sDate;
    +    }
    +
    +    /**
    +     * defineBitFields(bfs)
    +     *
    +     * Prepares a bit field definition for use with getBitField() and setBitField(); eg:
    +     *
    +     *      var bfs = Usr.defineBitFields({num:20, count:8, btmod:1, type:3});
    +     *
    +     * The above defines a set of bit fields containing four fields: num (bits 0-19), count (bits 20-27), btmod (bit 28), and type (bits 29-31).
    +     *
    +     *      Usr.setBitField(bfs.num, n, 1);
    +     *
    +     * The above set bit field "bfs.num" in numeric variable "n" to the value 1.
    +     *
    +     * @param {Object} bfs
    +     * @return {BitFields}
    +     */
    +    static defineBitFields(bfs)
    +    {
    +        var bit = 0;
    +        for (var f in bfs) {
    +            var width = bfs[f];
    +            var mask = ((1 << width) - 1) << bit;
    +            bfs[f] = {mask: mask, shift: bit};
    +            bit += width;
    +        }
    +        return bfs;
    +    }
    +
    +    /**
    +     * initBitFields(bfs, ...)
    +     *
    +     * @param {BitFields} bfs
    +     * @param {...number} var_args
    +     * @return {number} a value containing all supplied bit fields
    +     */
    +    static initBitFields(bfs, var_args)
    +    {
    +        var v = 0, i = 1;
    +        for (var f in bfs) {
    +            if (i >= arguments.length) break;
    +            v = Usr.setBitField(bfs[f], v, arguments[i++]);
    +        }
    +        return v;
    +    }
    +
    +    /**
    +     * getBitField(bf, v)
    +     *
    +     * @param {BitField} bf
    +     * @param {number} v is a value containing bit fields
    +     * @return {number} the value of the bit field in v defined by bf
    +     */
    +    static getBitField(bf, v)
    +    {
    +        return (v & bf.mask) >> bf.shift;
    +    }
    +
    +    /**
    +     * setBitField(bf, v, n)
    +     *
    +     * @param {BitField} bf
    +     * @param {number} v is a value containing bit fields
    +     * @param {number} n is a value to store in v in the bit field defined by bf
    +     * @return {number} updated v
    +     */
    +    static setBitField(bf, v, n)
    +    {
    +        return (v & ~bf.mask) | ((n << bf.shift) & bf.mask);
    +    }
    +
    +    /**
    +     * indexOf(a, t, i)
    +     *
    +     * Use this instead of Array.prototype.indexOf() if you can't be sure the browser supports it.
    +     *
    +     * @param {Array} a
    +     * @param {*} t
    +     * @param {number} [i]
    +     * @returns {number}
    +     */
    +    static indexOf(a, t, i)
    +    {
    +        if (Array.prototype.indexOf) {
    +            return a.indexOf(t, i);
    +        }
    +        i = i || 0;
    +        if (i < 0) i += a.length;
    +        if (i < 0) i = 0;
    +        for (var n = a.length; i < n; i++) {
    +            if (i in a && a[i] === t) return i;
    +        }
    +        return -1;
    +    }
    +}
    +
    +Usr.asDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    +Usr.asMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
    +Usr.aMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    +
    +/**
    + * getTime()
    + *
    + * @return {number} the current time, in milliseconds
    + */
    +Usr.getTime = Date.now || function() { return +new Date(); };
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017
    + */
    +
    +
    +/*
    + * According to http://www.w3schools.com/jsref/jsref_obj_global.asp, these are the *global* properties
    + * and functions of JavaScript-in-the-Browser:
    + *
    + * Property             Description
    + * ---
    + * Infinity             A numeric value that represents positive/negative infinity
    + * NaN                  "Not-a-Number" value
    + * undefined            Indicates that a variable has not been assigned a value
    + *
    + * Function             Description
    + * ---
    + * decodeURI()          Decodes a URI
    + * decodeURIComponent() Decodes a URI component
    + * encodeURI()          Encodes a URI
    + * encodeURIComponent() Encodes a URI component
    + * escape()             Deprecated in version 1.5. Use encodeURI() or encodeURIComponent() instead
    + * eval()               Evaluates a string and executes it as if it was script code
    + * isFinite()           Determines whether a value is a finite, legal number
    + * isNaN()              Determines whether a value is an illegal number
    + * Number()             Converts an object's value to a number
    + * parseFloat()         Parses a string and returns a floating point number
    + * parseInt()           Parses a string and returns an integer
    + * String()             Converts an object's value to a string
    + * unescape()           Deprecated in version 1.5. Use decodeURI() or decodeURIComponent() instead
    + *
    + * And according to http://www.w3schools.com/jsref/obj_window.asp, these are the properties and functions
    + * of the *window* object.
    + *
    + * Property             Description
    + * ---
    + * closed               Returns a Boolean value indicating whether a window has been closed or not
    + * defaultStatus        Sets or returns the default text in the statusbar of a window
    + * document             Returns the Document object for the window (See Document object)
    + * frames               Returns an array of all the frames (including iframes) in the current window
    + * history              Returns the History object for the window (See History object)
    + * innerHeight          Returns the inner height of a window's content area
    + * innerWidth           Returns the inner width of a window's content area
    + * length               Returns the number of frames (including iframes) in a window
    + * location             Returns the Location object for the window (See Location object)
    + * name                 Sets or returns the name of a window
    + * navigator            Returns the Navigator object for the window (See Navigator object)
    + * opener               Returns a reference to the window that created the window
    + * outerHeight          Returns the outer height of a window, including toolbars/scrollbars
    + * outerWidth           Returns the outer width of a window, including toolbars/scrollbars
    + * pageXOffset          Returns the pixels the current document has been scrolled (horizontally) from the upper left corner of the window
    + * pageYOffset          Returns the pixels the current document has been scrolled (vertically) from the upper left corner of the window
    + * parent               Returns the parent window of the current window
    + * screen               Returns the Screen object for the window (See Screen object)
    + * screenLeft           Returns the x coordinate of the window relative to the screen
    + * screenTop            Returns the y coordinate of the window relative to the screen
    + * screenX              Returns the x coordinate of the window relative to the screen
    + * screenY              Returns the y coordinate of the window relative to the screen
    + * self                 Returns the current window
    + * status               Sets or returns the text in the statusbar of a window
    + * top                  Returns the topmost browser window
    + *
    + * Method               Description
    + * ---
    + * alert()              Displays an alert box with a message and an OK button
    + * atob()               Decodes a base-64 encoded string
    + * blur()               Removes focus from the current window
    + * btoa()               Encodes a string in base-64
    + * clearInterval()      Clears a timer set with setInterval()
    + * clearTimeout()       Clears a timer set with setTimeout()
    + * close()              Closes the current window
    + * confirm()            Displays a dialog box with a message and an OK and a Cancel button
    + * createPopup()        Creates a pop-up window
    + * focus()              Sets focus to the current window
    + * moveBy()             Moves a window relative to its current position
    + * moveTo()             Moves a window to the specified position
    + * open()               Opens a new browser window
    + * print()              Prints the content of the current window
    + * prompt()             Displays a dialog box that prompts the visitor for input
    + * resizeBy()           Resizes the window by the specified pixels
    + * resizeTo()           Resizes the window to the specified width and height
    + * scroll()             This method has been replaced by the scrollTo() method.
    + * scrollBy()           Scrolls the content by the specified number of pixels
    + * scrollTo()           Scrolls the content to the specified coordinates
    + * setInterval()        Calls a function or evaluates an expression at specified intervals (in milliseconds)
    + * setTimeout()         Calls a function or evaluates an expression after a specified number of milliseconds
    + * stop()               Stops the window from loading
    + */
    +
    +class Web {
    +    /**
    +     * log(s, type)
    +     *
    +     * For diagnostic output only.  DEBUG must be true (or "--debug" specified via the command-line)
    +     * for Component.log() to display anything.
    +     *
    +     * @param {string} [s] is the message text
    +     * @param {string} [type] is the message type
    +     */
    +    static log(s, type)
    +    {
    +        Component.log(s, type);
    +    }
    +
    +    /**
    +     * notice(s, fPrintOnly, id)
    +     *
    +     * @param {string} s is the message text
    +     * @param {boolean} [fPrintOnly]
    +     * @param {string} [id] is the caller's ID, if any
    +     */
    +    static notice(s, fPrintOnly, id)
    +    {
    +        Component.notice(s, fPrintOnly, id);
    +    }
    +
    +    /**
    +     * getResource(sURL, dataPost, fAsync, done, progress)
    +     *
    +     * Request the specified resource (sURL), and once the request is complete, notify done().
    +     *
    +     * If fAsync is true, a done() callback should ALWAYS be supplied; otherwise, you'll have no
    +     * idea when the request is complete or what the response was.  done() is passed three parameters:
    +     *
    +     *      done(sURL, sResource, nErrorCode)
    +     *
    +     * If nErrorCode is zero, sResource should contain the requested data; otherwise, an error occurred.
    +     *
    +     * If dataPost is set to a string, that string can be used to control the response format;
    +     * by default, the response format is plain text, but you can specify "bytes" to request arbitrary
    +     * binary data, which should come back as a string of bytes.
    +     *
    +     * TODO: The "bytes" option works by calling overrideMimeType(), which was never a best practice.
    +     * Instead, we should implement supported response types ("text" and "arraybuffer", at a minimum)
    +     * by setting xmlHTTP.responseType to one of those values before calling xmlHTTP.send().
    +     *
    +     * @param {string} sURL
    +     * @param {string|Object|null} [dataPost] for a POST request (default is a GET request)
    +     * @param {boolean} [fAsync] is true for an asynchronous request
    +     * @param {function(string,string,number)} [done]
    +     * @param {function(number)} [progress]
    +     * @return {Array|null} Array containing [sResource, nErrorCode], or null if no response yet
    +     */
    +    static getResource(sURL, dataPost, fAsync = false, done, progress)
    +    {
    +        var nErrorCode = 0, sResource = null, response = null;
    +
    +        if (typeof resources == 'object' && (sResource = resources[sURL])) {
    +            if (done) done(sURL, sResource, nErrorCode);
    +            return [sResource, nErrorCode];
    +        }
    +        else if (fAsync && typeof resources == 'function') {
    +            resources(sURL, function(sResource, nErrorCode)
    +            {
    +                if (done) done(sURL, sResource, nErrorCode);
    +            });
    +            return response;
    +        }
    +
    +        if (DEBUG) {
    +            /*
    +             * The larger resources we put on archive.pcjs.org should also be available locally...
    +             */
    +            sURL = sURL.replace(/^http:\/\/archive.pcjs.org(\/.*)\/([^\/]*)$/, "$1/archive/$2");
    +        }
    +
    +
    +        var xmlHTTP = (window.XMLHttpRequest? new window.XMLHttpRequest() : new window.ActiveXObject("Microsoft.XMLHTTP"));
    +        if (fAsync) {
    +            xmlHTTP.onreadystatechange = function()
    +            {
    +                if (xmlHTTP.readyState !== 4) {
    +                    if (progress) progress(1);
    +                    return;
    +                }
    +                /*
    +                 * The following line was recommended for WebKit, as a work-around to prevent the handler firing multiple
    +                 * times when debugging.  Unfortunately, that's not the only XMLHttpRequest problem that occurs when
    +                 * debugging, so I think the WebKit problem is deeper than that.  When we have multiple XMLHttpRequests
    +                 * pending, any debugging activity means most of them simply get dropped on floor, so what may actually be
    +                 * happening are mis-notifications rather than redundant notifications.
    +                 *
    +                 *      xmlHTTP.onreadystatechange = undefined;
    +                 */
    +                sResource = xmlHTTP.responseText;
    +                /*
    +                 * The normal "success" case is an HTTP status code of 200, but when testing with files loaded
    +                 * from the local file system (ie, when using the "file:" protocol), we have to be a bit more "flexible".
    +                 */
    +                if (xmlHTTP.status == 200 || !xmlHTTP.status && sResource.length && Web.getHostProtocol() == "file:") {
    +                    if (MAXDEBUG) Web.log("xmlHTTP.onreadystatechange(" + sURL + "): returned " + sResource.length + " bytes");
    +                }
    +                else {
    +                    nErrorCode = xmlHTTP.status || -1;
    +                    Web.log("xmlHTTP.onreadystatechange(" + sURL + "): error code " + nErrorCode);
    +                }
    +                if (progress) progress(2);
    +                if (done) done(sURL, sResource, nErrorCode);
    +            };
    +        }
    +
    +        if (progress) progress(0);
    +
    +        if (dataPost && typeof dataPost == "object") {
    +            var sDataPost = "";
    +            for (var p in dataPost) {
    +                if (!dataPost.hasOwnProperty(p)) continue;
    +                if (sDataPost) sDataPost += "&";
    +                sDataPost += p + '=' + encodeURIComponent(dataPost[p]);
    +            }
    +            sDataPost = sDataPost.replace(/%20/g, '+');
    +            if (MAXDEBUG) Web.log("Web.getResource(POST " + sURL + "): " + sDataPost.length + " bytes");
    +            xmlHTTP.open("POST", sURL, fAsync);     // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it)
    +            xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    +            xmlHTTP.send(sDataPost);
    +        } else {
    +            if (MAXDEBUG) Web.log("Web.getResource(GET " + sURL + ")");
    +            xmlHTTP.open("GET", sURL, fAsync);      // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it)
    +            if (dataPost == "bytes") {
    +                xmlHTTP.overrideMimeType("text/plain; charset=x-user-defined");
    +            }
    +            xmlHTTP.send();
    +        }
    +
    +        if (!fAsync) {
    +            sResource = xmlHTTP.responseText;
    +            if (xmlHTTP.status == 200) {
    +                if (MAXDEBUG) Web.log("Web.getResource(" + sURL + "): returned " + sResource.length + " bytes");
    +            } else {
    +                nErrorCode = xmlHTTP.status || -1;
    +                Web.log("Web.getResource(" + sURL + "): error code " + nErrorCode);
    +            }
    +            if (done) done(sURL, sResource, nErrorCode);
    +            response = [sResource, nErrorCode];
    +        }
    +        return response;
    +    }
    +
    +    /**
    +     * parseMemoryResource(sURL, sData)
    +     *
    +     * This converts a variety of JSON-style data streams into an Object with the following properties:
    +     *
    +     *      aBytes
    +     *      aSymbols
    +     *      addrLoad
    +     *      addrExec
    +     *
    +     * If the source data contains a 'bytes' array, it's passed through to 'aBytes'; alternatively, if
    +     * it contains a 'words' array, the values are converted from 16-bit to 8-bit and stored in 'aBytes',
    +     * and if it contains a 'longs' array, the values are converted from 32-bit longs into bytes and
    +     * stored in 'aBytes'.
    +     *
    +     * Alternatively, if the source data contains a 'data' array, we simply pass that through to the output
    +     * object as:
    +     *
    +     *      aData
    +     *
    +     * @param {string} sURL
    +     * @param {string} sData
    +     * @return {Object|null} (resource)
    +     */
    +    static parseMemoryResource(sURL, sData)
    +    {
    +        var i;
    +        var resource = {
    +            aBytes: null,
    +            aSymbols: null,
    +            addrLoad: null,
    +            addrExec: null
    +        };
    +
    +        if (sData.charAt(0) == "[" || sData.charAt(0) == "{") {
    +            try {
    +                var a, ib, data;
    +
    +                if (sData.substr(0, 1) == "<") {    // if the "data" begins with a "<"...
    +                    /*
    +                     * Early server configs reported an error (via the nErrorCode parameter) if a tape URL was invalid,
    +                     * but more recent server configs now display a somewhat friendlier HTML error page.  The downside,
    +                     * however, is that the original error has been buried, and we've received "data" that isn't actually
    +                     * tape data.  So if the data we've received appears to be "HTML-like", we treat it as an error message.
    +                     */
    +                    throw new Error(sData);
    +                }
    +
    +                /*
    +                 * TODO: IE9 is rather unfriendly and restrictive with regard to how much data it's willing to
    +                 * eval().  In particular, the 10Mb disk image we use for the Windows 1.01 demo config fails in
    +                 * IE9 with an "Out of memory" exception.  One work-around would be to chop the data into chunks
    +                 * (perhaps one track per chunk, using regular expressions) and then manually re-assemble it.
    +                 *
    +                 * However, it turns out that using JSON.parse(sDiskData) instead of eval("(" + sDiskData + ")")
    +                 * is a much easier fix. The only drawback is that we must first quote any unquoted property names
    +                 * and remove any comments, because while eval() was cool with them, JSON.parse() is more particular;
    +                 * the following RegExp replacements take care of those requirements.
    +                 *
    +                 * The use of hex values is something else that eval() was OK with, but JSON.parse() is not, and
    +                 * while I've stopped using hex values in DumpAPI responses (at least when "format=json" is specified),
    +                 * I can't guarantee they won't show up in "legacy" images, and there's no simple RegExp replacement
    +                 * for transforming hex values into decimal values, so I cop out and fall back to eval() if I detect
    +                 * any hex prefixes ("0x") in the sequence.  Ditto for error messages, which appear like so:
    +                 *
    +                 *      ["unrecognized disk path: test.img"]
    +                 */
    +                if (sData.indexOf("0x") < 0 && sData.indexOf("0o") < 0 && sData.substr(0, 2) != '["') {
    +                    data = JSON.parse(sData.replace(/([a-z]+):/gm, '"$1":').replace(/\/\/[^\n]*/gm, ""));
    +                } else {
    +                    data = eval("(" + sData + ")");
    +                }
    +
    +                resource.addrLoad = data['load'];
    +                resource.addrExec = data['exec'];
    +
    +                if (a = data['bytes']) {
    +                    resource.aBytes = a;
    +                }
    +                else if (a = data['words']) {
    +                    /*
    +                     * Convert all words into bytes
    +                     */
    +                    resource.aBytes = new Array(a.length * 2);
    +                    for (i = 0, ib = 0; i < a.length; i++) {
    +                        resource.aBytes[ib++] = a[i] & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 8) & 0xff;
    +
    +                    }
    +                }
    +                else if (a = data['longs']) {
    +                    /*
    +                     * Convert all dwords (longs) into bytes
    +                     */
    +                    resource.aBytes = new Array(a.length * 4);
    +                    for (i = 0, ib = 0; i < a.length; i++) {
    +                        resource.aBytes[ib++] = a[i] & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 8) & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 16) & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 24) & 0xff;
    +                    }
    +                }
    +                else if (a = data['data']) {
    +                    resource.aData = a;
    +                }
    +                else {
    +                    resource.aBytes = data;
    +                }
    +
    +                if (resource.aBytes) {
    +                    if (!resource.aBytes.length) {
    +                        Component.error("Empty resource: " + sURL);
    +                        resource = null;
    +                    }
    +                    else if (resource.aBytes.length == 1) {
    +                        Component.error(resource.aBytes[0]);
    +                        resource = null;
    +                    }
    +                }
    +                resource.aSymbols = data['symbols'];
    +
    +            } catch (e) {
    +                Component.error("Resource data error (" + sURL + "): " + e.message);
    +                resource = null;
    +            }
    +        }
    +        else {
    +            /*
    +             * Parse the data manually; we assume it's a series of hex byte-values separated by whitespace.
    +             */
    +            var ab = [];
    +            var sHexData = sData.replace(/\n/gm, " ").replace(/ +$/, "");
    +            var asHexData = sHexData.split(" ");
    +            for (i = 0; i < asHexData.length; i++) {
    +                var n = parseInt(asHexData[i], 16);
    +                if (isNaN(n)) {
    +                    Component.error("Resource data error (" + sURL + "): invalid hex byte (" + asHexData[i] + ")");
    +                    break;
    +                }
    +                ab.push(n & 0xff);
    +            }
    +            if (i == asHexData.length) resource.aBytes = ab;
    +        }
    +        return resource;
    +    }
    +
    +    /**
    +     * sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName)
    +     *
    +     * Send a report (eg, bug report) to the server.
    +     *
    +     * @param {string} sApp (eg, "PCjs")
    +     * @param {string} sVer (eg, "1.02")
    +     * @param {string} sURL (eg, "/devices/pc/machine/5150/mda/64kb/machine.xml")
    +     * @param {string} sUser (ie, the user key, if any)
    +     * @param {string} sType (eg, "bug"); one of ReportAPI.TYPE.*
    +     * @param {string} sReport (eg, unparsed state data)
    +     * @param {string} [sHostName] (default is http://SITEHOST)
    +     */
    +    static sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName)
    +    {
    +        var dataPost = {};
    +        dataPost[ReportAPI.QUERY.APP] = sApp;
    +        dataPost[ReportAPI.QUERY.VER] = sVer;
    +        dataPost[ReportAPI.QUERY.URL] = sURL;
    +        dataPost[ReportAPI.QUERY.USER] = sUser;
    +        dataPost[ReportAPI.QUERY.TYPE] = sType;
    +        dataPost[ReportAPI.QUERY.DATA] = sReport;
    +        var sReportURL = (sHostName? sHostName : "http://" + SITEHOST) + ReportAPI.ENDPOINT;
    +        Web.getResource(sReportURL, dataPost, true);
    +    }
    +
    +    /**
    +     * getHost()
    +     *
    +     * @return {string}
    +     */
    +    static getHost()
    +    {
    +        return ("http://" + (window? window.location.host : SITEHOST));
    +    }
    +
    +    /**
    +     * getHostURL()
    +     *
    +     * @return {string|null}
    +     */
    +    static getHostURL()
    +    {
    +        return (window? window.location.href : null);
    +    }
    +
    +    /**
    +     * getHostProtocol()
    +     *
    +     * @return {string}
    +     */
    +    static getHostProtocol()
    +    {
    +        return (window? window.location.protocol : "file:");
    +    }
    +
    +    /**
    +     * getUserAgent()
    +     *
    +     * @return {string}
    +     */
    +    static getUserAgent()
    +    {
    +        return (window? window.navigator.userAgent : "");
    +    }
    +
    +    /**
    +     * hasLocalStorage
    +     *
    +     * true if localStorage support exists, is enabled, and works; false otherwise
    +     *
    +     * @return {boolean}
    +     */
    +    static hasLocalStorage()
    +    {
    +        if (Web.fLocalStorage == null) {
    +            var f = false;
    +            if (window) {
    +                try {
    +                    window.localStorage.setItem(Web.sLocalStorageTest, Web.sLocalStorageTest);
    +                    f = (window.localStorage.getItem(Web.sLocalStorageTest) == Web.sLocalStorageTest);
    +                    window.localStorage.removeItem(Web.sLocalStorageTest);
    +                } catch (e) {
    +                    Web.logLocalStorageError(e);
    +                    f = false;
    +                }
    +            }
    +            Web.fLocalStorage = f;
    +        }
    +        return Web.fLocalStorage;
    +    }
    +
    +    /**
    +     * logLocalStorageError(e)
    +     *
    +     * @param {Error} e is an exception
    +     */
    +    static logLocalStorageError(e)
    +    {
    +        Web.log(e.message, "localStorage error");
    +    }
    +
    +    /**
    +     * getLocalStorageItem(sKey)
    +     *
    +     * Returns the requested key value, or null if the key does not exist, or undefined if localStorage is not available
    +     *
    +     * @param {string} sKey
    +     * @return {string|null|undefined} sValue
    +     */
    +    static getLocalStorageItem(sKey)
    +    {
    +        var sValue;
    +        if (window) {
    +            try {
    +                sValue = window.localStorage.getItem(sKey);
    +            } catch (e) {
    +                Web.logLocalStorageError(e);
    +            }
    +        }
    +        return sValue;
    +    }
    +
    +    /**
    +     * setLocalStorageItem(sKey, sValue)
    +     *
    +     * @param {string} sKey
    +     * @param {string} sValue
    +     * @return {boolean} true if localStorage is available, false if not
    +     */
    +    static setLocalStorageItem(sKey, sValue)
    +    {
    +        try {
    +            window.localStorage.setItem(sKey, sValue);
    +            return true;
    +        } catch (e) {
    +            Web.logLocalStorageError(e);
    +        }
    +        return false;
    +    }
    +
    +    /**
    +     * removeLocalStorageItem(sKey)
    +     *
    +     * @param {string} sKey
    +     */
    +    static removeLocalStorageItem(sKey)
    +    {
    +        try {
    +            window.localStorage.removeItem(sKey);
    +        } catch (e) {
    +            Web.logLocalStorageError(e);
    +        }
    +    }
    +
    +    /**
    +     * getLocalStorageKeys()
    +     *
    +     * @return {Array}
    +     */
    +    static getLocalStorageKeys()
    +    {
    +        var a = [];
    +        try {
    +            for (var i = 0, c = window.localStorage.length; i < c; i++) {
    +                a.push(window.localStorage.key(i));
    +            }
    +        } catch (e) {
    +            Web.logLocalStorageError(e);
    +        }
    +        return a;
    +    }
    +
    +    /**
    +     * reloadPage()
    +     */
    +    static reloadPage()
    +    {
    +        if (window) window.location.reload();
    +    }
    +
    +    /**
    +     * isUserAgent(s)
    +     *
    +     * Check the browser's user-agent string for the given substring; "iOS" and "MSIE" are special values you can
    +     * use that will match any iOS or MSIE browser, respectively (even IE11, in the case of "MSIE").
    +     *
    +     * 2013-11-06: In a questionable move, MSFT changed the user-agent reported by IE11 on Windows 8.1, eliminating
    +     * the "MSIE" string (which MSDN calls a "version token"; see http://msdn.microsoft.com/library/ms537503.aspx);
    +     * they say "public websites should rely on feature detection, rather than browser detection, in order to design
    +     * their sites for browsers that don't support the features used by the website." So, in IE11, we get a user-agent
    +     * that tries to fool apps into thinking the browser is more like WebKit or Gecko:
    +     *
    +     *      Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
    +     *
    +     * That's a nice idea, but in the meantime, they hosed the XSL transform code in embed.js, which contained
    +     * some very critical browser-specific code; turning on IE's "Compatibility Mode" didn't help either, because
    +     * that's a sledgehammer solution which restores the old user-agent string but also disables other features like
    +     * HTML5 canvas support. As an interim solution, I'm treating any "MSIE" check as a check for either "MSIE" or
    +     * "Trident".
    +     *
    +     * UPDATE: I've since found ways to make the code in embed.js more browser-agnostic, so for now, there's isn't
    +     * any code that cares about "MSIE", but I've left the change in place, because I wouldn't be surprised if I'll
    +     * need more IE-specific code in the future, perhaps for things like copy/paste functionality, or mouse capture.
    +     *
    +     * @param {string} s is a substring to search for in the user-agent; as noted above, "iOS" and "MSIE" are special values
    +     * @return {boolean} is true if the string was found, false if not
    +     */
    +    static isUserAgent(s)
    +    {
    +        if (window) {
    +            var userAgent = Web.getUserAgent();
    +            /*
    +             * Here's one case where we have to be careful with Component, because when isUserAgent() is called by
    +             * the init code below, component.js hasn't been loaded yet.  The simple solution for now is to remove the call.
    +             *
    +             *      Web.log("agent: " + userAgent);
    +             *
    +             * And yes, it would be pointless to use the conditional (?) operator below, if not for the Google Closure
    +             * Compiler (v20130823) failing to detect the entire expression as a boolean.
    +             */
    +            return s == "iOS" && !!userAgent.match(/(iPod|iPhone|iPad)/) && !!userAgent.match(/AppleWebKit/) || s == "MSIE" && !!userAgent.match(/(MSIE|Trident)/) || (userAgent.indexOf(s) >= 0);
    +        }
    +        return false;
    +    }
    +
    +    /**
    +     * isMobile()
    +     *
    +     * Check the browser's user-agent string for the substring "Mobi", as per Mozilla recommendation:
    +     *
    +     *      https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent
    +     *
    +     * @return {boolean} is true if the browser appears to be a mobile (ie, non-desktop) web browser, false if not
    +     */
    +    static isMobile()
    +    {
    +        return Web.isUserAgent("Mobi");
    +    }
    +
    +    /**
    +     * findProperty(obj, sProp, sSuffix)
    +     *
    +     * If both sProp and sSuffix are set, then any browser-specific prefixes are inserted between sProp and sSuffix,
    +     * and if a match is found, it is returned without sProp.
    +     *
    +     * For example, if findProperty(document, 'on', 'fullscreenchange') discovers that 'onwebkitfullscreenchange' exists,
    +     * it will return 'webkitfullscreenchange', in preparation for an addEventListener() call.
    +     *
    +     * More commonly, sSuffix is not used, so whatever property is found is returned as-is.
    +     *
    +     * @param {Object|null|undefined} obj
    +     * @param {string} sProp
    +     * @param {string} [sSuffix]
    +     * @return {string|null}
    +     */
    +    static findProperty(obj, sProp, sSuffix)
    +    {
    +        if (obj) {
    +            for (var i = 0; i < Web.asBrowserPrefixes.length; i++) {
    +                var sName = Web.asBrowserPrefixes[i];
    +                if (sSuffix) {
    +                    sName += sSuffix;
    +                    var sEvent = sProp + sName;
    +                    if (sEvent in obj) return sName;
    +                } else {
    +                    if (!sName) {
    +                        sName = sProp[0];
    +                    } else {
    +                        sName += sProp[0].toUpperCase();
    +                    }
    +                    sName += sProp.substr(1);
    +                    if (sName in obj) return sName;
    +                }
    +            }
    +        }
    +        return null;
    +    }
    +
    +    /**
    +     * getURLParm(sParm)
    +     *
    +     * First looks for sParm exactly as specified, then looks for the lower-case version.
    +     *
    +     * @param {string} sParm
    +     * @return {string|undefined}
    +     */
    +    static getURLParm(sParm)
    +    {
    +        if (!Web.parmsURL) {
    +            Web.parmsURL = Web.parseURLParms();
    +        }
    +        return Web.parmsURL[sParm] || Web.parmsURL[sParm.toLowerCase()];
    +    }
    +
    +    /**
    +     * parseURLParms(sParms)
    +     *
    +     * @param {string} [sParms] containing the parameter portion of a URL (ie, after the '?')
    +     * @return {Object} containing properties for each parameter found
    +     */
    +    static parseURLParms(sParms)
    +    {
    +        var aParms = {};
    +        if (window) {       // an alternative to "if (typeof module === 'undefined')" if require("defines") was used
    +            if (!sParms) {
    +                /*
    +                 * Note that window.location.href returns the entire URL, whereas window.location.search
    +                 * returns only the parameters, if any (starting with the '?', which we skip over with a substr() call).
    +                 */
    +                sParms = window.location.search.substr(1);
    +            }
    +            var match;
    +            var pl = /\+/g; // RegExp for replacing addition symbol with a space
    +            var search = /([^&=]+)=?([^&]*)/g;
    +            var decode = function(s)
    +            {
    +                return decodeURIComponent(s.replace(pl, " "));
    +            };
    +
    +            while ((match = search.exec(sParms))) {
    +                aParms[decode(match[1])] = decode(match[2]);
    +            }
    +        }
    +        return aParms;
    +    }
    +
    +    /**
    +     * downloadFile(sData, sType, fBase64, sFileName)
    +     *
    +     * @param {string} sData
    +     * @param {string} sType
    +     * @param {boolean} [fBase64]
    +     * @param {string} [sFileName]
    +     */
    +    static downloadFile(sData, sType, fBase64, sFileName)
    +    {
    +        var link = null, sAlert;
    +        var sURI = "data:application/" + sType + (fBase64? ";base64" : "") + ",";
    +
    +        if (!Web.isUserAgent("Firefox")) {
    +            sURI += (fBase64? sData : encodeURI(sData));
    +        } else {
    +            sURI += (fBase64? sData : encodeURIComponent(sData));
    +        }
    +        if (sFileName) {
    +            link = document.createElement('a');
    +            if (typeof link.download != 'string') link = null;
    +        }
    +        if (link) {
    +            link.href = sURI;
    +            link.download = sFileName;
    +            document.body.appendChild(link);    // Firefox allegedly requires the link to be in the body
    +            link.click();
    +            document.body.removeChild(link);
    +            sAlert = 'Check your Downloads folder for ' + sFileName + '.';
    +        } else {
    +            window.open(sURI);
    +            sAlert = 'Check your browser for a new window/tab containing the requested data' + (sFileName? (' (' + sFileName + ')') : '') + '.';
    +        }
    +        return sAlert;
    +    }
    +
    +    /**
    +     * onCountRepeat(n, fnRepeat, fnComplete, msDelay)
    +     *
    +     * Call fnRepeat() n times with an msDelay millisecond delay between calls,
    +     * then call fnComplete() when n has been exhausted OR fnRepeat() returns false.
    +     *
    +     * @param {number} n
    +     * @param {function()} fnRepeat
    +     * @param {function()} fnComplete
    +     * @param {number} [msDelay]
    +     */
    +    static onCountRepeat(n, fnRepeat, fnComplete, msDelay)
    +    {
    +        var fnTimeout = function doCountRepeat()
    +        {
    +            n -= 1;
    +            if (n >= 0) {
    +                if (!fnRepeat()) n = 0;
    +            }
    +            if (n > 0) {
    +                setTimeout(fnTimeout, msDelay || 0);
    +                return;
    +            }
    +            fnComplete();
    +        };
    +        fnTimeout();
    +    }
    +
    +    /**
    +     * onClickRepeat(e, msDelay, msRepeat, fn)
    +     *
    +     * Repeatedly call fn() with an initial msDelay, and an msRepeat delay thereafter,
    +     * as long as HTML control Object e has an active "down" event and fn() returns true.
    +     *
    +     * @param {Object} e
    +     * @param {number} msDelay
    +     * @param {number} msRepeat
    +     * @param {function(boolean)} fn is passed false on the first call, true on all repeated calls
    +     */
    +    static onClickRepeat(e, msDelay, msRepeat, fn)
    +    {
    +        var ms = 0, timer = null, fIgnoreMouseEvents = false;
    +
    +        var fnRepeat = function doClickRepeat()
    +        {
    +            if (fn(ms === msRepeat)) {
    +                timer = setTimeout(fnRepeat, ms);
    +                ms = msRepeat;
    +            }
    +        };
    +        e.onmousedown = function()
    +        {
    +            // Web.log("onMouseDown()");
    +            if (!fIgnoreMouseEvents) {
    +                if (!timer) {
    +                    ms = msDelay;
    +                    fnRepeat();
    +                }
    +            }
    +        };
    +        e.ontouchstart = function()
    +        {
    +            // Web.log("onTouchStart()");
    +            if (!timer) {
    +                ms = msDelay;
    +                fnRepeat();
    +            }
    +        };
    +        e.onmouseup = e.onmouseout = function()
    +        {
    +            // Web.log("onMouseUp()/onMouseOut()");
    +            if (timer) {
    +                clearTimeout(timer);
    +                timer = null;
    +            }
    +        };
    +        e.ontouchend = e.ontouchcancel = function()
    +        {
    +            // Web.log("onTouchEnd()/onTouchCancel()");
    +            if (timer) {
    +                clearTimeout(timer);
    +                timer = null;
    +            }
    +            /*
    +             * Devices that generate ontouch* events ALSO generate onmouse* events,
    +             * and generally do so immediately after all the touch events are complete,
    +             * so unless we want double the action, we need to ignore mouse events.
    +             */
    +            fIgnoreMouseEvents = true;
    +        };
    +    }
    +
    +    /**
    +     * onPageEvent(sName, fn)
    +     *
    +     * For 'onload', 'onunload', and 'onpageshow' events, most callers should NOT use this function, but
    +     * instead use Web.onInit(), Web.onShow(), and Web.onExit(), respectively.
    +     *
    +     * The only components that should still use onPageEvent() are THIS component (see the bottom of this file)
    +     * and components that need to capture other events (eg, the 'onresize' event in the Video component).
    +     *
    +     * This function creates a chain of callbacks, allowing multiple JavaScript modules to define handlers
    +     * for the same event, which wouldn't be possible if everyone modified window['onload'], window['onunload'],
    +     * etc, themselves.  However, that's less of a concern now, because assuming everyone else is now using
    +     * onInit(), onExit(), etc, then there really IS only one component setting the window callback: this one.
    +     *
    +     * NOTE: It's risky to refer to obscure event handlers with "dot" names, because the Closure Compiler may
    +     * erroneously replace them (eg, window.onpageshow is a good example).
    +     *
    +     * @param {string} sFunc
    +     * @param {function()} fn
    +     */
    +    static onPageEvent(sFunc, fn)
    +    {
    +        if (window) {
    +            var fnPrev = window[sFunc];
    +            if (typeof fnPrev !== 'function') {
    +                window[sFunc] = fn;
    +            } else {
    +                /*
    +                 * TODO: Determine whether there's any value in receiving/sending the Event object that the
    +                 * browser provides when it generates the original event.
    +                 */
    +                window[sFunc] = function onWindowEvent()
    +                {
    +                    if (fnPrev) fnPrev();
    +                    fn();
    +                };
    +            }
    +        }
    +    };
    +
    +    /**
    +     * onInit(fn)
    +     *
    +     * Use this instead of setting window.onload.  Allows multiple JavaScript modules to define their own 'onload' event handler.
    +     *
    +     * @param {function()} fn
    +     */
    +    static onInit(fn)
    +    {
    +        Web.aPageEventHandlers['init'].push(fn);
    +    };
    +
    +    /**
    +     * onShow(fn)
    +     *
    +     * @param {function()} fn
    +     *
    +     * Use this instead of setting window.onpageshow.  Allows multiple JavaScript modules to define their own 'onpageshow' event handler.
    +     */
    +    static onShow(fn)
    +    {
    +        Web.aPageEventHandlers['show'].push(fn);
    +    };
    +
    +    /**
    +     * onExit(fn)
    +     *
    +     * @param {function()} fn
    +     *
    +     * Use this instead of setting window.onunload.  Allows multiple JavaScript modules to define their own 'onunload' event handler.
    +     */
    +    static onExit(fn)
    +    {
    +        Web.aPageEventHandlers['exit'].push(fn);
    +    };
    +
    +    /**
    +     * doPageEvent(afn)
    +     *
    +     * @param {Array.} afn
    +     */
    +    static doPageEvent(afn)
    +    {
    +        if (Web.fPageEventsEnabled) {
    +            try {
    +                for (var i = 0; i < afn.length; i++) {
    +                    afn[i]();
    +                }
    +            } catch (e) {
    +                Web.notice("An unexpected exception occurred:\n\n" + e.message + "\n\nPlease send this information to support@pcjs.org. Thanks.");
    +            }
    +        }
    +    };
    +
    +    /**
    +     * enablePageEvents(fEnable)
    +     *
    +     * @param {boolean} fEnable is true to enable page events, false to disable (they're enabled by default)
    +     */
    +    static enablePageEvents(fEnable)
    +    {
    +        if (!Web.fPageEventsEnabled && fEnable) {
    +            Web.fPageEventsEnabled = true;
    +            if (Web.fPageLoaded) Web.sendPageEvent('init');
    +            if (Web.fPageShowed) Web.sendPageEvent('show');
    +            return;
    +        }
    +        Web.fPageEventsEnabled = fEnable;
    +    }
    +
    +    /**
    +     * sendPageEvent(sEvent)
    +     *
    +     * This allows us to manually trigger page events.
    +     *
    +     * @param {string} sEvent (one of 'init', 'show' or 'exit')
    +     */
    +    static sendPageEvent(sEvent)
    +    {
    +        if (Web.aPageEventHandlers[sEvent]) {
    +            Web.doPageEvent(Web.aPageEventHandlers[sEvent]);
    +        }
    +    }
    +}
    +
    +Web.parmsURL = null;            // initialized on first call to parseURLParms()
    +
    +Web.aPageEventHandlers = {
    +    'init': [],                 // list of window 'onload' handlers
    +    'show': [],                 // list of window 'onpageshow' handlers
    +    'exit': []                  // list of window 'onunload' handlers (although we prefer to use 'onbeforeunload' if possible)
    +};
    +
    +Web.asBrowserPrefixes = ['', 'moz', 'ms', 'webkit'];
    +
    +Web.fPageLoaded = false;        // set once the page's first 'onload' event has occurred
    +Web.fPageShowed = false;        // set once the page's first 'onpageshow' event has occurred
    +Web.fPageEventsEnabled = true;  // default is true, set to false (or true) by enablePageEvents()
    +
    +/**
    + * fLocalStorage
    + *
    + * true if localStorage support exists, is enabled, and works; "falsey" otherwise
    + *
    + * @type {boolean|null}
    + */
    +Web.fLocalStorage = null;
    +
    +/**
    + * TODO: Is there any way to get the Closure Compiler to stop inlining this string?  This isn't cutting it.
    + *
    + * @const {string}
    + */
    +Web.sLocalStorageTest = "PCjs.localStorage";
    +
    +Web.onPageEvent('onload', function onPageLoad() {
    +    Web.fPageLoaded = true;
    +    Web.doPageEvent(Web.aPageEventHandlers['init']);
    +});
    +
    +Web.onPageEvent('onpageshow', function onPageShow() {
    +    Web.fPageShowed = true;
    +    Web.doPageEvent(Web.aPageEventHandlers['show']);
    +});
    +
    +Web.onPageEvent(Web.isUserAgent("iOS")? 'onpagehide' : (Web.isUserAgent("Opera")? 'onunload' : 'onbeforeunload'), function onPageUnload() {
    +    Web.doPageEvent(Web.aPageEventHandlers['exit']);
    +});
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/*
    + * All PCjs components now use JSDoc types, primarily so that Google's Closure Compiler will compile
    + * everything with zero warnings when ADVANCED_OPTIMIZATIONS are enabled.  For more information about
    + * the JSDoc types supported by the Closure Compiler:
    + *
    + *      https://developers.google.com/closure/compiler/docs/js-for-compiler#types
    + *
    + * I also attempted to validate this code with JSLint, but it complained too much; eg, it didn't like
    + * "while (true)", a tried and "true" programming convention for decades, and it wanted me to replace
    + * all "++" and "--" operators with "+= 1" and "-= 1", use "(s || '')" instead of "(s? s : '')", etc.
    + *
    + * I prefer sticking with traditional C-style idioms, in part because they are more portable.  That
    + * does NOT mean I'm trying to write "portable JavaScript," but some of this code was ported from C code
    + * I'd written long ago, so portability is good, and I'm not going to throw that away if there's no need.
    + *
    + * UPDATE: I've since switched from JSLint to JSHint, which seems to have more reasonable defaults.
    + * And for new code, I have adopted some popular JavaScript idioms, like "(s || '')", although the need
    + * for those kinds of expressions will be reduced as I also start adopting some ES6 features, like
    + * default parameters.
    + */
    +
    +
    +/**
    + * Since the Closure Compiler treats ES6 classes as @struct rather than @dict by default,
    + * it deters us from defining named properties on our components; eg:
    + *
    + *      this['exports'] = {...}
    + *
    + * results in an error:
    + *
    + *      Cannot do '[]' access on a struct
    + *
    + * So, in order to define 'exports', we must override the @struct assumption by annotating
    + * the class as @unrestricted (or @dict).  Note that this must be done both here and in the
    + * subclass (eg, SerialPort), because otherwise the Compiler won't allow us to *reference*
    + * the named property either.
    + *
    + * TODO: Consider marking ALL our classes unrestricted, because otherwise it forces us to
    + * define every single property the class uses in its constructor, which results in a fair
    + * bit of redundant initialization, since many properties aren't (and don't need to be) fully
    + * initialized until the appropriate init(), reset(), restore(), etc. function is called.
    + *
    + * The upside, however, may be that since the structure of the class is completely defined by
    + * the constructor, JavaScript engines may be able to optimize and run more efficiently.
    + *
    + * @unrestricted
    + */
    +class Component {
    +    /**
    +     * Component(type, parms, bitsMessage)
    +     *
    +     * A Component object requires:
    +     *
    +     *      type: a user-defined type name (eg, "CPU")
    +     *
    +     * and accepts any or all of the following (parms) properties:
    +     *
    +     *      id: component ID (default is "")
    +     *      name: component name (default is ""; if blank, toString() will use the type name only)
    +     *      comment: component comment string (default is undefined)
    +     *
    +     * Component subclasses will usually have additional (parms) properties.
    +     *
    +     * @param {string} type
    +     * @param {Object} [parms]
    +     * @param {number} [bitsMessage] selects message(s) that the component wants to enable (default is 0)
    +     */
    +    constructor(type, parms, bitsMessage)
    +    {
    +        this.type = type;
    +
    +        if (!parms) parms = {'id': "", 'name': ""};
    +
    +        this.id = parms['id'] || "";
    +        this.name = parms['name'];
    +        this.comment = parms['comment'];
    +        this.parms = parms;
    +
    +        /*
    +         * The following Component properties need to be accessible by other machines and/or command scripts;
    +         * well, OK, or we could have exported some new functions to walk the contents of these properties, as we
    +         * did with findMachineComponent(), but this works just as well.
    +         *
    +         * Also, while the double-assignment looks silly (ie, using both dot and bracket property notation), it
    +         * resolves a complaint from the Closure Compiler, because if we use ONLY bracket notation here, then the
    +         * Compiler wants us to change all the other references to bracket notation as well.
    +         */
    +        this.exports = this['exports'] = {};
    +        this.bindings = this['bindings'] = {};
    +
    +        var i = this.id.indexOf('.');
    +        if (i < 0) {
    +            this.idComponent = this.id;
    +        } else {
    +            this.idMachine = this.id.substr(0, i);
    +            this.idComponent = this.id.substr(i + 1);
    +        }
    +
    +        /*
    +         * Gather all the various component flags (booleans) into a single "flags" object, and encourage
    +         * subclasses to do the same, to reduce the property clutter we have to wade through while debugging.
    +         */
    +        this.flags = {
    +            ready:      false,
    +            busy:       false,
    +            busyCancel: false,
    +            initDone:   false,
    +            powered:    false,
    +            unloading:  false,
    +            error:      false
    +        };
    +
    +        this.fnReady = null;
    +        this.clearError();
    +        this.bitsMessage = bitsMessage || 0;
    +
    +        this.cmp = null;
    +        this.bus = null;
    +        this.cpu = null;
    +        this.dbg = null;
    +
    +        /*
    +         * TODO: Consider adding another parameter to the Component() constructor that allows components to tell
    +         * us if they support single or multiple instances per machine.  For example, there can be multiple SerialPort
    +         * components per machine, but only one CPU component (some machines also support an FPU, but that component
    +         * is considered separate from the CPU).
    +         *
    +         * It's not critical, but it would help catch machine configuration errors; for example, a machine that mistakenly
    +         * includes two CPU components may, aside from wasting memory, end up with odd side-effects, like unresponsive
    +         * CPU controls.
    +         */
    +        Component.add(this);
    +    }
    +
    +    /**
    +     * Component.add(component)
    +     *
    +     * @param {Component} component
    +     */
    +    static add(component)
    +    {
    +        /*
    +         * This just generates a lot of useless noise, handy in the early days, not so much these days....
    +         *
    +         *      if (DEBUG) Component.log("Component.add(" + component.type + "," + component.id + ")");
    +         */
    +        Component.components.push(component);
    +    }
    +
    +    /**
    +     * Component.addMachine(idMachine)
    +     *
    +     * @param {string} idMachine
    +     */
    +    static addMachine(idMachine)
    +    {
    +        Component.machines[idMachine] = {};
    +    }
    +
    +    /**
    +     * Component.addMachineResource(idMachine, sName, data)
    +     *
    +     * @param {string} idMachine
    +     * @param {string|null} sName (name of the resource)
    +     * @param {*} data
    +     */
    +    static addMachineResource(idMachine, sName, data)
    +    {
    +        /*
    +         * I used to assert(Component.machines[idMachine]), but when we're running as a Node app, embed.js is not used,
    +         * so addMachine() is never called, so resources do not need to be recorded.
    +         */
    +        if (Component.machines[idMachine] && sName) {
    +            Component.machines[idMachine][sName] = data;
    +        }
    +    }
    +
    +    /**
    +     * Component.getMachineResources(idMachine)
    +     *
    +     * @param {string} idMachine
    +     * @return {Object|undefined}
    +     */
    +    static getMachineResources(idMachine)
    +    {
    +        return Component.machines[idMachine];
    +    }
    +
    +    /**
    +     * Component.getTime()
    +     *
    +     * @return {number} the current time, in milliseconds
    +     */
    +    static getTime()
    +    {
    +        return Date.now() || +new Date();
    +    }
    +
    +    /**
    +     * Component.log(s, type)
    +     *
    +     * For diagnostic output only.
    +     *
    +     * @param {string} [s] is the message text
    +     * @param {string} [type] is the message type
    +     */
    +    static log(s, type)
    +    {
    +        if (!COMPILED) {
    +            if (s) {
    +                var sElapsed = "", sMsg = (type? (type + ": ") : "") + s;
    +                if (typeof Usr != "undefined") {
    +                    if (Component.msStart === undefined) {
    +                        Component.msStart = Component.getTime();
    +                    }
    +                    sElapsed = (Component.getTime() - Component.msStart) + "ms: ";
    +                }
    +                sMsg = sMsg.replace(/\r/g, '\\r').replace(/\n/g, ' ');
    +                if (window && window.console) console.log(sElapsed + sMsg);
    +            }
    +        }
    +    }
    +
    +    /**
    +     * Component.assert(f, s)
    +     *
    +     * Verifies conditions that must be true (for DEBUG builds only).
    +     *
    +     * The Closure Compiler should automatically remove all references to Component.assert() in non-DEBUG builds.
    +     * TODO: Add a task to the build process that "asserts" there are no instances of "assertion failure" in RELEASE builds.
    +     *
    +     * @param {boolean} f is the expression we are asserting to be true
    +     * @param {string} [s] is description of the assertion on failure
    +     */
    +    static assert(f, s)
    +    {
    +        if (DEBUG) {
    +            if (!f) {
    +                if (!s) s = "assertion failure";
    +                Component.log(s);
    +                throw new Error(s);
    +            }
    +        }
    +    }
    +
    +    /**
    +     * Component.print(s)
    +     *
    +     * Components that inherit from this class should use this.print(), rather than Component.print(), because
    +     * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the
    +     * class method would improperly affect any other machines loaded on the same page).
    +     *
    +     * @this {Component}
    +     * @param {string} s
    +     */
    +    static print(s)
    +    {
    +        if (!COMPILED) {
    +            var i = s.lastIndexOf('\n');
    +            if (i >= 0) {
    +                Component.println(s.substr(0, i));
    +                s = s.substr(i + 1);
    +            }
    +            Component.printBuffer += s;
    +        }
    +    }
    +
    +    /**
    +     * Component.println(s, type, id)
    +     *
    +     * Components that inherit from this class should use this.println(), rather than Component.println(), because
    +     * if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the
    +     * class method would improperly affect any other machines loaded on the same page).
    +     *
    +     * @param {string} [s] is the message text
    +     * @param {string} [type] is the message type
    +     * @param {string} [id] is the caller's ID, if any
    +     */
    +    static println(s, type, id)
    +    {
    +        if (!COMPILED) {
    +            s = Component.printBuffer + (s || "");
    +            Component.log((id? (id + ": ") : "") + (s? ("\"" + s + "\"") : ""), type);
    +            Component.printBuffer = "";
    +        }
    +    }
    +
    +    /**
    +     * Component.notice(s, fPrintOnly, id)
    +     *
    +     * notice() is like println() but implies a need for user notification, so we alert() as well.
    +     *
    +     * @param {string} s is the message text
    +     * @param {boolean} [fPrintOnly]
    +     * @param {string} [id] is the caller's ID, if any
    +     * @return {boolean}
    +     */
    +    static notice(s, fPrintOnly, id)
    +    {
    +        if (!COMPILED) {
    +            Component.println(s, Component.TYPE.NOTICE, id);
    +        }
    +        if (!fPrintOnly) Component.alertUser((id? (id + ": ") : "") + s);
    +        return true;
    +    }
    +
    +    /**
    +     * Component.warning(s)
    +     *
    +     * @param {string} s describes the warning
    +     */
    +    static warning(s)
    +    {
    +        if (!COMPILED) {
    +            Component.println(s, Component.TYPE.WARNING);
    +        }
    +        Component.alertUser(s);
    +    }
    +
    +    /**
    +     * Component.error(s)
    +     *
    +     * @param {string} s describes the error; an alert() is displayed as well
    +     */
    +    static error(s)
    +    {
    +        if (!COMPILED) {
    +            Component.println(s, Component.TYPE.ERROR);
    +        }
    +        Component.alertUser(s);
    +    }
    +
    +    /**
    +     * Component.alertUser(sMessage)
    +     *
    +     * @param {string} sMessage
    +     */
    +    static alertUser(sMessage)
    +    {
    +        if (window) {
    +            window.alert(sMessage);
    +        } else {
    +            Component.log(sMessage);
    +        }
    +    };
    +
    +    /**
    +     * Component.confirmUser(sPrompt)
    +     *
    +     * @param {string} sPrompt
    +     * @returns {boolean} true if the user clicked OK, false if Cancel/Close
    +     */
    +    static confirmUser(sPrompt)
    +    {
    +        var fResponse = false;
    +        if (window) {
    +            fResponse = window.confirm(sPrompt);
    +        }
    +        return fResponse;
    +    }
    +
    +    /**
    +     * Component.promptUser()
    +     *
    +     * @param {string} sPrompt
    +     * @param {string} [sDefault]
    +     * @returns {string|null}
    +     */
    +    static promptUser(sPrompt, sDefault)
    +    {
    +        var sResponse = null;
    +        if (window) {
    +            sResponse = window.prompt(sPrompt, sDefault === undefined? "" : sDefault);
    +        }
    +        return sResponse;
    +    }
    +
    +    /**
    +     * Component.appendControl(control, sText)
    +     *
    +     * @param {Object} control
    +     * @param {string} sText
    +     */
    +    static appendControl(control, sText)
    +    {
    +        control.value += sText;
    +        /*
    +         * Prevent the