diff --git a/apps/pcx86/1981/visicalc/manifest.xml b/apps/pcx86/1981/visicalc/manifest.xml index 3905fbf2bf..5486753921 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 9a31ebdaf5..4aaa888c5a 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 d4b5606e54..254e3bad8a 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 4777a872cc..0245800f10 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 d285ca31d3..27cc4f3cf0 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 b16db6889e..16e25191a4 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 f82fdadb61..3aed73bae9 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 9e0817eda4..37bdbb772f 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 787a28f619..ed3119cd8d 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 81e5cb3f7a..fbc96cbb15 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 8ec0a4592a..69c5728bd8 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 302c55f18e..8f16ac9e83 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 9e0340cda5..edcdfa1e6c 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 2d1b8216d3..45b42a8020 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 59440c9d1d..f45f3953f8 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 9612e9cc6f..31be62121a 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 c90db2b865..8ed24aea91 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 3b20718d39..505a2000cf 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 e96dd58eda..c33477bc9c 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 2e36d7272d..14985a9e1c 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 594989cc12..563838c8df 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 292912bb96..16964ad0e0 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 b1ca5b2fcc..ecf41916c9 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 6a85dd0a74..8fb58f689d 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 c68695b597..3c1b884749 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 0a3e1afbe5..00c262069f 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 31acc6f118..b3d4038630 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 def153c137..7985ea34b2 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 6fd39331c5..eab7fbb7d4 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 b5880847f9..ab982fc040 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 b9b41a25c8..52d9c4125b 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/debugger/machine.xml b/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml index 83fbbc518c..215e3ecb6f 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.xml b/devices/pcx86/machine/5150/cga/64kb/machine.xml index f522d621a0..ab75e42b3c 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 01aaefbc1b..13a0366c2e 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 56eb2ec6a1..a26a8530c2 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 822a8d9b6b..f89dfa0565 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 2079648d2d..3e497e315a 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 cd2ad68711..36ba23287c 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 483f970001..f7d7eedeee 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 88273d8cbb..7eb49e62d1 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 cc414d4836..2378a1053a 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 959a156c3c..9114d6908e 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 52f4a0e72c..a651ba0b1d 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 28ef88865a..2480c6186c 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 9f3e5b62f2..1d130d76ca 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 4add6f76e9..7d8adce010 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 87d6d62d33..7c78e3a091 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 e5172dac15..72083f3b48 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 47f9cbb1b0..6ee1919fce 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 ed94e696de..3ab6e9f4b3 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 e73d96be27..dd553fa735 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 3ca7e285bf..81e35b0ed4 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 cfa514da4e..a2c579ae16 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 d6935e3d96..d4950c9f70 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 a42968794f..b65960caca 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 ceff00d842..12d258e8e8 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 cb3f2a28df..786e8e9bf5 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 372933b566..05ea1e752a 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 1fae2b8bad..1bb0c52fb2 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 6aeb12e6bf..66dca29d42 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 b721c808e8..65c0a6369f 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 68b3fe0bb9..fd6e01d4ef 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 a5c3f8ba1f..3c286f2d5d 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 af4631fda4..33da7e4759 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 0559eeb6ab..4df60160d4 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 68bba50b52..1c56d0615c 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 f74e58c7f1..4f47735bd5 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 c2e6f74baf..bc4d974d8f 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 d0cf7c7a92..53e343d90c 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 e827fcbaab..472724265a 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 9bc2d23130..98b34ee345 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 318c76618c..737c5af709 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 d1b656c345..0a234df3eb 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 98987841da..fe4459a92e 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 ddffaad5fd..0702fc68cf 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 0a541636f7..7ab169b93e 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 88f771fc12..0617ee2f57 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 153b21edee..2a1cff415e 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 5f53193d9b..1b65e922ac 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 f4ca0966c7..96dba5bd3c 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 c38250e710..79a6ef93bb 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 22d1a6fbba..f348d65636 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 03d7fc97b9..aadc68e992 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 6f87205ec4..cd7a936ec4 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 b06835febc..feb1e3c577 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 7a880432d0..54e6eb8be2 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 38f4d232b6..593ac21eac 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 dbf2ecace3..792d6fcd37 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 3de21b8f0e..8c17dc34f8 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 cb3f153d38..891a5bc1eb 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 0e35f61dfc..62abe8986e 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 69f8959879..d3af02dfb0 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 1e07768489..2519fdc95f 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 14e13f5df2..6494c4faf8 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 aa9feda188..541d368150 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 690844acbb..d77f949ba1 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 03329e01d9..baf6aac3b5 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 82e18a8683..df03fbc1d1 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 4f5796a552..3ba60eb6f4 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 fc822bb51d..f1061dc6fd 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 9f90414abc..c5c8fbbbb4 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 fde893a0e4..a33c45e7c9 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 28f6f1c150..20cb167b12 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 1fe0fe1205..a4f41e629a 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 986d22947b..55eba85396 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 6c65ff2ac7..0029dc39f9 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 1049809244..2f92ea54b0 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 ed3b2062b2..7cf2d48aa3 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 6cc31b92c1..c2bdd8f426 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 f1e7d8b332..abc9de06b3 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 55c4643282..b026f0de8a 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 d7ce9c8d03..56d0abf2b3 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 a0e667cf66..d47b0d7b60 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 f33a0c0381..e9a4d31099 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 8d4b017ed5..4ca30a1d51 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 5a3eae0019..5d03c9fa77 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 0183e374ee..89bd91fc9e 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 6fb6bf12d4..6c6a5597a0 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 db3a10bd6f..2ff22bac3c 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 fda83ddfff..f10334daf0 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 1c97367cc1..fc7179828e 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 35b89aa315..dad64cdb87 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 697b87460d..a697eb711b 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 15f53196d7..c65dfb9eb6 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 32847ea257..ad704b0324 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 7683c61931..bbdb486870 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 0cfc2023a8..de539dc984 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 deb34342f8..efdad6c500 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 f0b9fd3800..69fe72c793 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 1ead0b45a4..aa4c04983b 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 14db9d9fd1..49506f272d 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/micropro/wordstar/3.30/manifest.xml b/disks/pcx86/apps/micropro/wordstar/3.30/manifest.xml index f3bfed71a1..8338fe5a1d 100644 --- a/disks/pcx86/apps/micropro/wordstar/3.30/manifest.xml +++ b/disks/pcx86/apps/micropro/wordstar/3.30/manifest.xml @@ -1,5 +1,5 @@ - + WordStar 3.30 diff --git a/disks/pcx86/apps/micropro/wordstar/4.00/manifest.xml b/disks/pcx86/apps/micropro/wordstar/4.00/manifest.xml index d0c8397c20..e021c636dc 100644 --- a/disks/pcx86/apps/micropro/wordstar/4.00/manifest.xml +++ b/disks/pcx86/apps/micropro/wordstar/4.00/manifest.xml @@ -1,5 +1,5 @@ - + WordStar 4.00 diff --git a/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml b/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml index fa8865acff..7a53360319 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 b6d88453d8..cbfa6dcbcc 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 31bbb78ab5..7950ec87b7 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 87d090fb97..7e6e9fe3de 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 dd7404aa77..3a7f2ace60 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/omniview/4.30/manifest.xml b/disks/pcx86/apps/other/omniview/4.30/manifest.xml index 2de91b38d1..763c24d918 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 79a70318ec..b612a624dc 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 889cd7c698..b194f2056e 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/cpm/1.1b/debugger/machine.xml b/disks/pcx86/cpm/1.1b/debugger/machine.xml index 9010c96a8c..1b881f19ff 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 aaad6af547..589db60ce0 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 dbf195eb2c..9c8960ee1f 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 316161c5a5..c6cf0a73d9 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 dc03d5b0b7..8ec30ff638 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 a00ac0dda8..7ec10fdde4 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 bce6941fe0..cc0dffe0d7 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 8bf126634e..5af70163ec 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 86ad8c6edf..cf6191791e 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 454582cb54..621dd8a640 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 4518dbcc93..34301d433e 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 cebd73b8ff..6f90aab788 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 615a214dab..e58ab60fa1 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 1a327ce5b3..477a70f0b8 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 bb91a31150..83a19c9a9f 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 fd501ed05b..43d2df851a 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 8acee4ef4c..3dfd6dcbc2 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 0b5b9baefd..62e8d8be53 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 13bb64c0c9..59b8e3c641 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 128284463c..bbc1047c16 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 27297f5410..e3c3f6e462 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 5b399b5a2b..ecab107f5b 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 d084a8e6da..d575c47fba 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 a110796638..7eac9d9279 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/3.20/manifest.xml b/disks/pcx86/dos/microsoft/3.20/manifest.xml index f6f69a1526..f5d121c3f7 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 2081375289..5b75bf76a3 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 73b6442da6..6b73a456d0 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 0543949807..75f35393fb 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 a8845d2320..13b215ae1f 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 843dcafb6d..6dad7b1783 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 f150af3351..d734a02804 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 643ddf3374..7d4a78df7e 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 7074df36e3..952925363f 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 3f917354d7..dfac679de7 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 7ca59f4453..940692ee25 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 d94ce2a9bf..68d8f1335f 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 331e7db0de..6416d8d2bb 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 f8ebbb9c87..7bc76ea4c6 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 8a8a5cb5cc..8e7e0214b1 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 49955587fa..0caac81479 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 806bea26c2..fa5d39007e 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 99bb88b2bf..a76970b5c7 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 d50c22a338..d35d6f140a 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 42b7a23448..7b05aa7c21 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 e34a790115..e3dd3aa480 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 b06c011623..9a7649a2fd 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 afbe2e9809..bca0583153 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 4e8599ec5b..27fa747650 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 3ddb2b2937..d33cf60278 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 94b3e71baa..bcfcdca5cb 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 72490d520a..03033d0200 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 e2ad946bfc..6d5afc0dfc 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 0434b4b998..6778873c84 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 c7eefd7a44..24f0380667 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 4bb29222ae..e6a5a166e9 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 8e17bd2148..db60c062b6 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/shareware/pcmag/manifest.xml b/disks/pcx86/shareware/pcmag/manifest.xml index 34d5d6e9b6..483dd3304a 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 4ffa5e78cd..8a85786857 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 9673aad810..389537ae3d 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 474f0c7fce..50aaa6c37d 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 a6b54b5334..9ac6ba1c39 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 b8f6549d60..631a4d8a46 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 fa3b78f619..5fa0addc3c 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 2bc3761fbd..19724724a2 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 311c5f5e92..16e5479bcd 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 c8240b854b..084dabffc1 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 a03ea7a7b8..65db9cc10e 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 2ffe78d757..fa01ff5b99 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 ab1bc2c0ca..259434c89e 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 8a038ee83f..de9e899d69 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 d8ffaec380..6b38924f40 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 f6b9be39cf..3533879f53 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 5a379ca87a..190342107e 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 cfea20846e..8c563d7b80 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 9dfb94945a..ea5b8a7f6d 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 e855fea8cd..eb60b0cdca 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 4746980353..f37793fea5 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 5b2a7dda4a..a8ee7f07c5 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 2c53843610..a7e29a0ac1 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 8ba2a961b3..f086c98a42 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 4c8fcabcea..1c7d313f4e 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/5.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml index d12b8ebda9..c6d9b0cbf7 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/os2/sdk/1.02/manifest.xml b/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml index 753776b0b4..8495555872 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 8fa06317d4..89b8e018d5 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 fc3c1431df..4a4e9948a6 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 da79d07fee..9dffff78e0 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 ccbf058453..8f669cea6a 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 d7c8d192ed..751802b64c 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 932c0752af..47c950f5af 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 66ecbd5e8b..ec02f8a66d 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 dc4a2ff437..5fc6fc242b 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 8051c9ab30..7189c248d2 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 c199a7b642..946fd2d432 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 69dd7c43ae..41a31d19e1 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 503d8cb1a5..112d30195e 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 531150734f..c542a11ed5 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 c2edf65457..56ba0a69ce 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 603368a43e..47a34af90c 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 afeacd6d47..4642703347 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 8ac016584d..7f47da2f09 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 df47ef1da4..034cf713d5 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 be53cdc5f5..aaeda8495f 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 8f9f29eade..a244b0febd 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 3ec0a7be95..4ab788a71e 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 56ccd6ef90..4ed69492d2 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 7a20fc3d6b..bbf32d764d 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 b93feda444..e714addcab 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 9f85999987..f227c61fb2 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 0f05cc5793..166e864636 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 1202bec6ee..daf7325831 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 48f9eaeb52..cd7ffcaa76 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 b0a92882bc..fbbf94c0d4 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 0ddcf60f2a..ae48487252 100644 --- a/docs/pcx86/examples/components.xsl +++ b/docs/pcx86/examples/components.xsl @@ -14,12 +14,12 @@ pcjs pcx86 PCx86 - 1.36.0 + 1.36.1 www.pcjs.org #FAEBD7 - + diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index f4babdad18..07d2cd90db 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -834,7 +834,7 @@ break}a:{var qd,rd=null,gb=g[1];"?"==gb&&(gb=void 0);if(void 0!==gb){var De=0;if ","),++vC%10||(fh+="\n\t"),"key"==qd&&(qd="keys"),fh+=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")+(fh||"none"));By(a)}break;case "o":var Mm=g[1],xC=g[2];if(Mm&&"?"!=Mm){var Nm=oy(a,Mm,"port #"),Om=oy(a,xC);void 0!==Nm&&void 0!==Om&&(Nc(a.na,Nm,1,Om),a.O(oa(Nm)+": "+na(Om)))}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]){xB(a,b.substr(5));break}var Zt="pr"==g[0]?1:0,tf=1+Zt;if(a.K)a.O("step in progress");else{var nj,$t=!1,Jb=zy(a,z(a.G),a.G.ba.T);do switch(nj=!1,a.ya(Jb)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:bz(a,Jb,1);nj=!0;break;case 204:case 206:a.K=tf;bz(a,Jb,1);break;case 205:case 224:case 225:case 226:a.K=tf;bz(a,Jb,Jb.Jb?4:2);break;case 232:a.K=tf;bz(a,Jb,Jb.Jb?5:3);break;case 154:a.K=tf;bz(a,Jb,Jb.Jb?7:5);break;case 255:var au=a.mb(Jb)& 14591;if(4351==au||6399==au)a.K=tf,oA(a,Jb);break;case 243:case 242:bz(a,Jb,1);$t=nj=!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:$t&&(a.K=tf,bz(a,Jb,1))}while(nj);a.K?(a.sd(a.B,Jb,!0),eA(a,void 0)&&Ad(a.G,void 0,void 0)||(a.pa&&a.pa.ed(),a.K=0)):zB(a,Zt?"tr":"t")}break;case "r":if("reset"==b){a.pa&&a.pa.reset();break}fA(a,g);break;case "t":zB(a,g[0],g[1]);break;case "u":gA(a,g[1],g[2],8);break;case "v":if("var"== -g[0]){sB(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.36.0 ("+a.G.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 gh;void 0!==g[3]&&(gh=+g[3]);switch(g[2]){case "int":a.G.Y.Te=gh;break;case "start":a.G.Y.vf=gh;break;case "stop":a.G.Y.Ve=gh;break;default:a.O("unknown cs option");break a}void 0!==gh&&yd(a.G);a.O("checksums "+(a.G.Z.Ke?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(Ed(a.G, +g[0]){sB(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.36.1 ("+a.G.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 gh;void 0!==g[3]&&(gh=+g[3]);switch(g[2]){case "int":a.G.Y.Te=gh;break;case "start":a.G.Y.vf=gh;break;case "stop":a.G.Y.Ve=gh;break;default:a.O("unknown cs option");break a}void 0!==gh&&yd(a.G);a.O("checksums "+(a.G.Z.Ke?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(Ed(a.G, +g[2])||a.O("warning: using 1x multiplier, previous target not reached"));a.O("target speed: "+(a.G.Y.se.toFixed(2)+"Mhz")+" ("+a.G.Y.Bd+"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]){xB(a,b.substr(1));break}var Pm="commands:",Qm;for(Qm in BB)Pm+= "\n"+va(Qm,7)+BB[Qm];Jg(a)||(Pm+="\nnote: frequency/history disabled if no exec breakpoints");a.O(Pm);break;default:a.O("unknown command: "+b),d=!1}}}catch(cu){a.O("debugger error: "+(cu.stack||cu.message)),d=!1}return d}function Dy(a,b,c){b=a.Bg(b,c);for(var d in b)if(!nA(a,b[+d]))return!1;return!0} var bA={16:262144,19:524288,21:32768,22:65536,28:2048,33:134217728,51:16777216},aA=[26,28,40,42,109],BB={"?":"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", @@ -866,24 +866,24 @@ Fy,[119,R|S|W,DB|4096]],[[155,R|U|4096,V|U|4096],Fy,[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},Py={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\nLicense: GPL version 3 or later "); -for(b=0;b\nLicense: GPL version 3 or later "); +for(b=0;bVB){if(d.load(this.M)){this.F=new Wf(this,"1.36.0",fC);this.F.load()&&(a!=eC&&gC(this,d)&&(a=hC),iC(this.F));this.F.set(dC,za("Y-m-d H:i:s"));jC(this.F);var e=this.A&&!this.J;if(a==eC||pb("Click OK to restore the previous PCx86 machine state.")){if(c=cC(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +l.Of=function(a,b){for(var c=this,d=xb(this.id),e=0;e<=d.length;e++){var f=eVB){if(d.load(this.M)){this.F=new Wf(this,"1.36.1",fC);this.F.load()&&(a!=eC&&gC(this,d)&&(a=hC),iC(this.F));this.F.set(dC,za("Y-m-d H:i:s"));jC(this.F);var e=this.A&&!this.J;if(a==eC||pb("Click OK to restore the previous PCx86 machine state.")){if(c=cC(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= g?(this.Ca("Error: "+g),"unable to verify user"==g&&(La(kC,""),this.B=null)):this.O(f+": "+g),iC(d),d.load()?(c=cC(d),e=!0):c=!1))}e&&aC(this,c?d:null)}else a==hC&&d.clear()}else aC(this);delete this.M;delete this.N}e=xb(this.id);for(f=0;fa[1];a=a[2];if(!this.Z.nf){for(var d=0;d/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);FC(a,b,c)}})}else c(a,null)} function GC(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&&(--CC||bb(!0));k=!1}var g,h,k=!0;CC++;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.0/components.xsl");m=function(d,h){h?DC(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,--CC||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),--CC||bb(!0)):f("invalid machine element: "+ +(c="/versions/pcx86/1.36.1/components.xsl");m=function(d,h){h?DC(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,--CC||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),--CC||bb(!0)):f("invalid machine element: "+ a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?DC(b,a,d,!0,e,m):EC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function HC(a,b,c,d){bb(!1);return GC(a,b,c,d)}window.embedPC=HC;window.embedPCx86=HC; 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 IC(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){JC(b,d)}):JC(null,d)}else ab("Error ("+c+") requesting "+a)} function JC(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.1/document.css b/versions/c1pjs/1.36.1/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/c1pjs/1.36.1/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.1/document.xsl b/versions/c1pjs/1.36.1/document.xsl new file mode 100644 index 0000000000..3ec8770476 --- /dev/null +++ b/versions/c1pjs/1.36.1/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.1/machine.xsl b/versions/c1pjs/1.36.1/machine.xsl new file mode 100644 index 0000000000..2bf64c9cd1 --- /dev/null +++ b/versions/c1pjs/1.36.1/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/c1pjs/1.36.1/manifest.xsl b/versions/c1pjs/1.36.1/manifest.xsl new file mode 100644 index 0000000000..f4b8391621 --- /dev/null +++ b/versions/c1pjs/1.36.1/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.1/outline.xsl b/versions/c1pjs/1.36.1/outline.xsl new file mode 100644 index 0000000000..52632331ad --- /dev/null +++ b/versions/c1pjs/1.36.1/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.1/common.css b/versions/pc8080/1.36.1/common.css new file mode 100644 index 0000000000..a569abc642 --- /dev/null +++ b/versions/pc8080/1.36.1/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.1/common.xsl b/versions/pc8080/1.36.1/common.xsl new file mode 100644 index 0000000000..a9749fe11a --- /dev/null +++ b/versions/pc8080/1.36.1/common.xsl @@ -0,0 +1,58 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +

    Powered by JavaScript, Vanilla JS, and GitHub

    +
    +
    +
    + + +
    +

    + +
    +
    + +
    diff --git a/versions/pc8080/1.36.1/components.css b/versions/pc8080/1.36.1/components.css new file mode 100644 index 0000000000..101b964a4c --- /dev/null +++ b/versions/pc8080/1.36.1/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.1/components.xsl b/versions/pc8080/1.36.1/components.xsl new file mode 100644 index 0000000000..04cc55587b --- /dev/null +++ b/versions/pc8080/1.36.1/components.xsl @@ -0,0 +1,1402 @@ + + + +]> + + + + + + + + pc + pcjs + pc8080 + PC8080 + 1.36.1 + 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.1/document.css b/versions/pc8080/1.36.1/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/pc8080/1.36.1/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.1/document.xsl b/versions/pc8080/1.36.1/document.xsl new file mode 100644 index 0000000000..6952fca371 --- /dev/null +++ b/versions/pc8080/1.36.1/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.1/machine.xsl b/versions/pc8080/1.36.1/machine.xsl new file mode 100644 index 0000000000..40aca633b1 --- /dev/null +++ b/versions/pc8080/1.36.1/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.36.1/manifest.xsl b/versions/pc8080/1.36.1/manifest.xsl new file mode 100644 index 0000000000..5f3043cdce --- /dev/null +++ b/versions/pc8080/1.36.1/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.1/outline.xsl b/versions/pc8080/1.36.1/outline.xsl new file mode 100644 index 0000000000..104539eed1 --- /dev/null +++ b/versions/pc8080/1.36.1/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.1/pc8080-dbg.js b/versions/pc8080/1.36.1/pc8080-dbg.js new file mode 100644 index 0000000000..7dc0ead797 --- /dev/null +++ b/versions/pc8080/1.36.1/pc8080-dbg.js @@ -0,0 +1,313 @@ +(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&1073741824?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.1",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.1"};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.1"),g=new zd(a,"1.36.1",zi),h=Fa();g.set(Bi,h);f.set(Bi,h);f.set(Li,"1.36.1");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.1/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.1/document.css b/versions/pcx86/1.36.1/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/pcx86/1.36.1/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.1/document.xsl b/versions/pcx86/1.36.1/document.xsl new file mode 100644 index 0000000000..0326c1ce95 --- /dev/null +++ b/versions/pcx86/1.36.1/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.1/machine.xsl b/versions/pcx86/1.36.1/machine.xsl new file mode 100644 index 0000000000..69b7838d7d --- /dev/null +++ b/versions/pcx86/1.36.1/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pcx86/1.36.1/manifest.xsl b/versions/pcx86/1.36.1/manifest.xsl new file mode 100644 index 0000000000..410aa8c9f7 --- /dev/null +++ b/versions/pcx86/1.36.1/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.1/outline.xsl b/versions/pcx86/1.36.1/outline.xsl new file mode 100644 index 0000000000..e7008bfd4c --- /dev/null +++ b/versions/pcx86/1.36.1/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.1/pcx86-dbg.js b/versions/pcx86/1.36.1/pcx86-dbg.js new file mode 100644 index 0000000000..07d2cd90db --- /dev/null +++ b/versions/pcx86/1.36.1/pcx86-dbg.js @@ -0,0 +1,907 @@ +(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,ee:65,ri:66,si:67,ti:68,E:69,ui:70,vi:71,wi:72,xi:73,yi:74,zi:75,Ai:76,Bi:77,Ci:78,Di:79,Ei:80,Q:81,Fi:82,Gi:83,Hi:84,Ii:85,Ji:86,Ki:87,Li:88,Mi:89,ag:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,fe: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.Be=this.id:(this.de=this.id.substr(0,a),this.Be=this.id.substr(a+1));this.Z={ready:!1,lf:!1,Zg:!1,nf:!1,bc:!1,ze:!1,error:!1};this.ng=null;this.Z.error=!1;this.jc=c||0;this.ca=this.G=this.na=this.pa=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.H?b=a.B:2==a.H&&(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.X=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].ae(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.qa,a.va,a.ma,a.ra)}a.N=c}}}function gc(a,b,c,d,e){a.I.font=a.aa;a.I.fillStyle=a.X;a.I.fillText(b,a.D,a.J);a.D+=a.M;null!=c&&(16!=a.oa?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.G=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.H=[];this.K=this.L=!1;this.X=[];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.Ae+=k.za-f,k.za=f,!0;if(f>=k.za+k.Ae){p=k.size-(f-m);p>g&&(p=g);k.Ae=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.G),a.G.Z.Va||(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].Jf(c,b):a.aa[d++].ae(c,b)|a.aa[d&a.P].ae(0,b+1)<<8} +l.tb=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].oi(d,c&65535,b):(a.aa[e++].bf(d,c&255,b),a.aa[e&a.P].bf(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.V=new Int32Array(this.I,0,c>>2),tc(this,Ac?Bc:Cc);else{this.V=Array(c>>2);for(e=0;e>2),b=0;b>8,c)};l.mi=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.V[a>>2]>>>((a&3)<<3)&255}; +l.Ho=function(a){var b=a>>2;a=(a&3)<<3;var c=this.V[b]>>a;return 24>a?c&65535:c&255|(this.V[b+1]&255)<<8};l.Bo=function(a){var b=a>>2;a=(a&3)<<3;var c=this.V[b];a&&(c=c>>>a|this.V[b+1]<<32-a);return c};l.Xo=function(a,b){var c=a>>2;a=(a&3)<<3;this.V[c]=this.V[c]&~(255<>2;a=(a&3)<<3;24>a?this.V[c]=this.V[c]&~(65535<>8);this.Na=!0}; +l.cp=function(a,b){var c=a>>2;if(a=(a&3)<<3){var d=-1<>>32-a}else this.V[c]=b;this.Na=!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.ae(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.Jf(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.gi(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.cf(0,b,c):this.bf(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.cf(0,b,c):this.oi(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.cf(0,b,c):this.K(a,b,c)};l.xo=function(a,b){this.ob.V[this.A]|=this.F;this.pb.V[this.B]|=this.F;return this.ud.Cc(a,b)}; +l.Jo=function(a,b){this.ob.V[this.A]|=this.F;this.pb.V[this.B]|=this.F;return this.ud.If(a,b)};l.Do=function(a,b){this.ob.V[this.A]|=this.F;this.pb.V[this.B]|=this.F;return this.ud.Od(a,b)};l.Zo=function(a,b,c){this.ob.V[this.A]|=this.F;this.pb.V[this.B]|=this.J;this.ud.Ec(a,b,c)};l.lp=function(a,b,c){this.ob.V[this.A]|=this.F;this.pb.V[this.B]|=this.J;this.ud.Qf(a,b,c)};l.fp=function(a,b,c){this.ob.V[this.A]|=this.F;this.pb.V[this.B]|=this.J;this.ud.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).If(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.Oa[a]};l.Pk=function(a){return this.Oa[a]};l.wo=function(a){this.ob.V[this.A]|=32;this.pb.V[this.B]|=32;this.Cc=this.Pk;return this.Oa[a]}; +l.Fo=function(a){return this.H.getUint16(a,!0)};l.Uk=function(a){return a&1?this.Oa[a]|this.Oa[a+1]<<8:this.Td[a>>1]};l.Io=function(a){this.ob.V[this.A]|=32;this.pb.V[this.B]|=32;this.If=this.Uk;return a&1?this.Oa[a]|this.Oa[a+1]<<8:this.Td[a>>1]};l.zo=function(a){return this.H.getInt32(a,!0)};l.Rk=function(a){return a&3?this.Oa[a]|this.Oa[a+1]<<8|this.Oa[a+2]<<16|this.Oa[a+3]<<24:this.V[a>>2]}; +l.Co=function(a){this.ob.V[this.A]|=32;this.pb.V[this.B]|=32;this.Od=this.Rk;return a&3?this.Oa[a]|this.Oa[a+1]<<8|this.Oa[a+2]<<16|this.Oa[a+3]<<24:this.V[a>>2]};l.Vo=function(a,b){this.Oa[a]=b;this.Na=!0};l.bl=function(a,b){this.Oa[a]=b;this.Na=!0};l.Yo=function(a,b){this.Oa[a]=b;this.ob.V[this.A]|=32;this.pb.V[this.B]|=96;this.Ec=this.bl;this.ud.Na=!0};l.hp=function(a,b){this.H.setUint16(a,b,!0);this.Na=!0};l.dl=function(a,b){a&1?(this.Oa[a]=b,this.Oa[a+1]=b>>8):this.Td[a>>1]=b;this.Na=!0}; +l.kp=function(a,b){a&1?(this.Oa[a]=b,this.Oa[a+1]=b>>8):this.Td[a>>1]=b;this.ob.V[this.A]|=32;this.pb.V[this.B]|=96;this.Qf=this.dl;this.ud.Na=!0};l.ap=function(a,b){this.H.setInt32(a,b,!0);this.Na=!0};l.cl=function(a,b){a&3?(this.Oa[a]=b,this.Oa[a+1]=b>>8,this.Oa[a+2]=b>>16,this.Oa[a+3]=b>>24):this.V[a>>2]=b;this.Na=!0}; +l.ep=function(a,b){a&3?(this.Oa[a]=b,this.Oa[a+1]=b>>8,this.Oa[a+2]=b>>16,this.Oa[a+3]=b>>24):this.V[a>>2]=b;this.ob.V[this.A]|=32;this.pb.V[this.B]|=96;this.Pf=this.cl;this.ud.Na=!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.Yd=b;this.Y.Fj=this.Y.ph=this.Y.Bd=c;this.Y.qg=Math.round(this.Y.Yd/1E4)/100;this.Y.Ld=this.Y.se=this.Y.qg*this.Y.Bd;this.Z.ki=this.Z.Va=this.Z.Rf=!1;this.Z.ie=a.autoStart;this.Z.ij=!1;this.Z.Ke=!1;this.Y.tf=this.Y.Ue=0;this.Y.vf=a.csStart;this.Y.Te=a.csInterval;this.Y.Ve=a.csStop;this.ra=[];this.xj=this.Lo.bind(this)}ba(sd,ib);l=sd.prototype; +l.uc=function(a,b,c,d){this.pa=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.Sb(),c=!0);c&&a.O(Cd(a)+" cycles: checksum="+q(a.Y.tf))}} +l.Eb=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.la[b]=c;a=!0;break;case "run":this.la[b]=c;c.onclick=function(){var a=d.Z.Va,b;if(b=d.pa)if(b=d.pa,b.Z.ze&&(b.Z.ze=!1,b.Z.nf&&!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.Bd)b=a.Y.Bd;a.Y.Ej=Math.round(1E3/wd);a.Y.jn=Math.floor(a.Y.Yd/wd*b);a.Y.ph=b} +function Cd(a,b){var c=a.Hd+a.nd+a.cd-a.A;b&&1a.Y.qg&&(c=Math.round(c/a.Y.Bd));return c}function xd(a){a.Hd=a.nd=a.cd=a.A=0;yd(a);Ed(a,a.Y.Fj)} +function Ed(a,b,c){var d=!0;if(void 0!==b){0a.Y.Ld/a.Y.se&&(b=a.Y.Fj,d=!1);a.Y.Ld=0;a.Y.Bd=b;b=a.Y.qg*a.Y.Bd;if(a.Y.se!=b){a.Y.se=b;b=a.Y.se.toFixed(2)+"Mhz";var e=a.la.setSpeed;e&&(e.textContent=b);a.O("target speed: "+b)}c&&a.pa&&a.pa.ed()}Gd(a,a.nd);a.nd=0;a.Y.yd=a.Y.te=0;Hd(a);for(c=a.ra.length-1;0<=c;c--)b=a.ra[c],0<=b[2]&&Id(a,c,b[2],!0);return d}function vd(a,b,c,d){d=void 0===d?-1:d;var e=a.ra.length;a.ra.push([b,-1,d,c]);0<=d&&Id(a,e,d)} +function Id(a,b,c,d){0<=b&&bb[1])&&(c=a.Y.Yd*a.Y.ph/1E3*c|0,a.Z.Va&&(c+=Jd(a)),b[1]=c)}function Kd(a){for(var b=[],c=0;cthis.Y.Ej&&(this.Y.yd+=a,this.Y.yd>this.Y.sf&&(this.Y.yd=this.Y.sf))}try{this.Z.Rf=!1;do{for(var b,c=this.Z.Ke?1:this.Y.Yd*this.Y.ph|0,d=this.ra.length-1;0<=d;d--){var e=this.ra[d];0>e[1]||c>e[1]&&(c=e[1])}b=c;if(this.X){Ld(this.X);var f=this.X,a=b,g=f.ra[0];if(g.pe){var h=(Cd(f.G,f.N)-g.kd)/f.Da|0,k=Md(f,0)-h;g.mode==Nd&&(k-=h);var m=k*f.Da|0;g.mode==Nd&&(m>>= +1);a>m&&(a=m)}b=a;var p=this.X,a=b;if(p.A&&p.A[Pd]&Qd){var v=p.U-Cd(p.G,p.N);0v&&(a=v)}b=a}try{this.Kg(b)}catch(G){if("number"!=typeof G)throw G;}b=Jd(this,!0);this.Y.sg+=b;this.nd+=b;Bd(this,b);for(var a=b,u=this.ra.length-1;0<=u;u--){var D=this.ra[u];0>D[1]||(D[1]-=a,0>=D[1]&&(D[1]=-1,D[3](),0<=D[2]&&Id(this,u,D[2])))}}while(this.Z.Va&&!this.Z.Rf)}catch(G){this.Sb();zd(this);this.pa&&this.pa.stop(Ea(),Cd(this));Gb(this,G.stack||G.message);return}if(this.Z.Va){b=setTimeout;c=this.xj;this.Y.te= +Ea();d=this.Y.Ej;this.Y.sg&&(d=Math.round(d*this.Y.sg/this.Y.jn));d-=this.Y.te-this.Y.sf;if(e=this.Y.te-this.Y.yd)this.Y.Ld=Math.round(this.nd/(10*e))/100,864E5<=e&&(this.Hd=0,this.X&&Ld(this.X,!0),Ed(this));if(0>d||this.Y.Ldd&&(this.Y.yd-=d),d=0;this.Y.te+=d;b(c,d)}}}; +function Ad(a,b,c){if(Hb(a))return!1;if(a.Z.Va)return c||a.O(a.toString()+" busy"),!1;Ed(a);a.Z.Va=!0;a.Z.ki=!0;a.X&&a.X.start();if(c=a.la.run)c.textContent="Halt";a.pa&&(Rd(a.pa,!0),b&&a.pa.ed(!0),a.pa.start(a.Y.yd,Cd(a)));setTimeout(a.xj,0);return!0}l.Kg=function(){return 0}; +l.Sb=function(a){var b=!1;if(this.Z.Va){Jd(this);Gd(this,this.nd);this.nd=0;this.Z.Va=!1;this.X&&this.X.stop();if(b=this.la.run)b.textContent="Run";this.pa&&(this.pa.stop(Date.now()||+new Date,Cd(this)),Rd(this.pa,!0));this.ca||this.status("Stopped");b=!0}this.Z.complete=a;return b};function zd(a,b){a.pa&&Rd(a.pa,b)}var wd=30,td=["power","reset"]; +function Sd(a,b,c,d){this.Lb=a;this.ca=a.ca;this.id=b;this.dc=c||"";this.T=0;this.Qa=65535;this.Nb=this.Qa+1;this.Cb=this.rc=this.ext=this.nb=this.type=this.ta=0;this.Ob=-1;this.W=this.Lc=2;this.R=this.wa=65535;this.H=this.lh;this.F=this.D=this.ig;this.A={T:-1,ta:0,Qa:0,nb:0,type:0,ext:0,Ob:-1};1==this.id&&(this.Gf=0,this.C=null,this.Pe=!1,this.G=Array(32),this.B=[]);Td(this,!0,d);this.id||(this.Ub=this.Bb=this.bj)}function Ud(a,b){a.B.push(b);return[a.B.length,Vd]}l=Sd.prototype; +l.lh=function(a){this.T=a&65535;return this.ta=this.T<<4};l.pg=function(a,b){var c,d,e=this.Lb;a&=65535;a&4?(c=e.Gb.ta,d=c+e.Gb.Qa|0):(c=e.Kb,d=e.Ic);if(c){c=c+(a&65528)|0;if(d-c|0)return e.A-=15,Xd(this,c,a,b);this.id>>0)+b>this.Nb&&(8088>=this.Lb.da?this.Lb.M|=8:x.call(this.Lb,13));return this.ta+a|0};l.aj=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.cj=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 $d(a,b,c,d,e){a.T=b;a.ta=d;a.Qa=e;a.Nb=(e>>>0)+1;a.nb=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.nb=e;a.type=e&7936;a.ext=0;a.Ob=b;a.id>>0)+1,a.nb=a.A.nb,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 ce:var u=a.C;a.Pe=!1;if(u&&c==Vd&&a.B.length){var D=a.B[a.Gf-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=de(e),ee(e,de(e),!0),fe(e,D),a.Pe=!0),D=0);else{if(256==h||2304==h)return ge(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 Zd: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 ae:u=h&-513;if(!p||256!=u&&2304!=u)return x.call(e,13,c&65532),-1;2304==u&&(a.Ri=k+e.ja(k+102)|0,a.ql=k+a.Qa|0);break;case Yd:if(!(h&4096)&&768>>0)+1,a.nb=g,a.type=h,a.ext=m,a.Ob=b,Td(a,!0,!0,!1));return k} +function ge(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.nb&=-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.nb|=512)}d.ka.type=d.ka.type&-513|d.ka.nb&512;256==d.ka.type||768==d.ka.type?(d.ib(g+14,z(d)),d.ib(g+16,pe(d)),d.ib(g+18,d.D),d.ib(g+20,d.I),d.ib(g+22,d.L),d.ib(g+24,d.H),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.oa.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)),qe(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.H=d.ja(h+24),d.N=d.ja(h+28),d.K=d.ja(h+30),d.J=d.ja(h+32),d.oa.load(d.ja(h+34)),d.Fa.load(d.ja(h+40)),re(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.qa&1));a.gd=!1;if(c)if(a.load=a.pg,a.Cj=a.bn,a.Bb=a.aj,a.Ub=a.cj,void 0===d&&(d=!!(a.Lb.P&131072)),d)a.load=a.H,a.Bb=a.D,a.Ub=a.F,a.Cb=a.rc=3,a.W=2,a.R=a.wa=65535,a.Qa=65535,a.Nb=a.Qa+1,a.Lc=a.W,a.Ob=-1,a.Pe=!1;else{if(!(a.T&-4))a.Bb=a.hg,a.Ub=a.jg;else if(a.type&4096){6144==(a.type&6656)&&(a.Bb=a.hg);if(a.type&2048||!(a.type&512))a.Ub=a.jg;1024==(a.type&3072)&&(a.Bb==a.aj&&(a.Bb=a.wl),a.Ub==a.cj&&(a.Ub=a.xl),a.gd=!0);b&&a.id>13,80386>a.Lb.da||!(a.ext&64)?(a.W=2,a.R=65535):(a.W=4,a.R=-1),a.Lc=a.W,a.wa=a.R)}else a.load=a.lh,a.Cj=a.cn,a.Bb=a.ig,a.Ub=a.ig,a.Cb=a.rc=0,a.Ob=-1,a.Pe=!1}var ce=1,oe=2,Zd=3,ae=4,Yd=6,Vd=1; +function te(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.Qi=61442;this.Qd=1792;this.pi=28672;this.Sf=4;this.Xa=255;this.B=80286<=this.da?Rb:Qb;this.xa=ue;this.$i=ve;this.gj=we;this.lj=xe;if(80186<=this.da&&(this.xa=ue.slice(),this.$i=ve.slice(),this.gj=we.slice(),this.Xa=31,this.xa[15]=ye,this.xa[96]=Ee,this.xa[97]=Fe,this.xa[98]=Ge,this.xa[99]=ye,this.xa[100]=ye,this.xa[101]= +ye,this.xa[102]=ye,this.xa[103]=ye,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.$i[7]=Ue,this.gj[7]=Ue,80286<=this.da)){this.Qi=2;this.Qd|=28672;this.Sf=0;this.xa[15]=Ve;this.Gd=We.slice();for(c=0;c=this.Rd&&(this.Gd[166]=gf,this.Gd[167]=hf)}}this.Vf=[];this.Wf=[];this.Yf=0;xd(this);this.Z.complete=this.Z.hj=!1;this.rj=0;this.tc=this.aa=[];this.lb=this.Mg=this.Fb=this.Tf=this.df=this.ef=this.dd=0;jf(this)}ba(te,sd);function kf(a,b,c,d){b=(d?a.tc:a.aa)[b>>>a.lb];c?--b.le||fd(b):--b.ke||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.ef)>>>a.lb],g=f.Od(e);if(!(g&1))return d||nf.call(a,b,!1,c),a.ff;if(!(g&4)&&3==a.Wa)return d||nf.call(a,b,!0,c),a.ff;var h=(b&4190208)>>>10,g=a.tc[((g&-4096)+h&a.ef)>>>a.lb],k=g.Od(h);if(!(k&1))return d||nf.call(a,b,!1,c),a.ff;if(!(k&4)&&3==a.Wa)return d||nf.call(a,b,!0,c),a.ff;c=a.tc[((k&-4096)+(b&4095)&a.ef)>>>a.lb];if(d)return c;d=b>>>a.lb;k=a.aa[d];b&=-4096;var m;0>2;b.pb=g;b.B=h>>2;Pb&&Ac&&c.V&&!c.controller&&!c.ke&&!c.le?(b.Oa=c.Oa,b.Td=c.Td,b.V=c.V,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.ff=null)}l=te.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.H;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.H=c;break;case 4:fe(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.H=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.qa=65520;a.Qb=0;a.ad=1023;a.P=a.mc=0;a.Ce=a.gf=a.Sd=a.De=0;a.Sc=-1;a.od=a.Tc=-1;a.pd=a.va=-1;a.ba=new Sd(a,ce,"CS");a.Fa=new Sd(a,oe,"DS");a.oa=new Sd(a,oe,"ES");a.U=new Sd(a,Zd,"SS");fe(a,0);ee(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.qa=16;a.Ng=0;a.qd=0;a.Uc= +0;a.Tb=[0,0,0,0,null,null,0,0];a.$f=[null,null,null,null,null,null,0,0];a.La=new Sd(a,oe,"FS");a.Pa=new Sd(a,oe,"GS");of(a)}a.Qg=new Sd(a,0,"NULL");a.Ha=a.Fa;a.Vb=a.U;a.M=a.ha=0;a.C=a.F=-1;a.Ja=a.Qg;a.bb=0;if(80286>a.da)re(a,0,65535);else{a.Kb=0;a.Ic=65535;a.Gb=new Sd(a,5,"LDT",!0);a.ka=new Sd(a,ae,"TSS",!0);a.zb=new Sd(a,Yd,"VER",!0);re(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.Qa>>>0)+1}qe(a,0);he(a)} +function wf(a){2==a.Lc?(a.Wb=a.ja,a.lc=xf,a.vc=yf,a.md=zf,2==a.W?(a.ma=Af,a.Ba=Bf,a.ub=Cf):(a.ma=Df,a.Ba=Ef,a.ub=Ff)):(a.Wb=a.ia,a.lc=Gf,a.vc=Hf,a.md=If,2==a.W?(a.ma=Jf,a.Ba=Kf,a.ub=Lf):(a.ma=Mf,a.Ba=Nf,a.ub=Of))}function ie(a,b){a.W!=b&&(a.ha|=1024,a.W=b,a.R=2==b?65535:-1,Pf(a))}function Pf(a){2==a.W?(a.Hb=32768,a.mb=a.ja,a.gc=a.ib,2==a.Lc?(a.ma=Af,a.Ba=Bf,a.ub=Cf):(a.ma=Jf,a.Ba=Kf,a.ub=Lf)):(a.Hb=-2147483648,a.mb=a.ia,a.gc=a.eb,2==a.Lc?(a.ma=Df,a.Ba=Ef,a.ub=Ff):(a.ma=Mf,a.Ba=Nf,a.ub=Of))} +function Qf(a){a.Lc=a.ba.Lc;a.wa=a.ba.wa;wf(a);a.W=a.ba.W;a.R=a.ba.R;Pf(a);a.ha&=-3073}l.sj=function(){var a=this.D+this.H+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.oa.T+pe(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.Tb[7],d=c>>16,e=0;4>e;e++){if(c&3){var f=!!(d&1),g=a.Tb[e],g=g&~(d>>2&3);b?a.aa[g>>>a.lb].sd(g&a.Fb,f,a):(g=a.aa[g>>>a.lb],f?--g.le||fd(g):--g.ke||ed(g))}c>>=2;d>>=4}}function id(a,b,c,d){if(!(a.M&8192)&&a.Tb[7]&255){c--;var e=a.Tb[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.Tb[g]&&b<=a.Tb[g]+h){a.Tb[6]|=1<>=2;f>>=4}}} +function he(a,b,c){void 0===b&&(b=!!(a.qa&1));void 0===c&&(c=!!(a.P&131072));a.lj=b&&!c?Vf:xe;Td(a.ba,!1,b,c);Td(a.Fa,!1,b,c);Td(a.U,!1,b,c);Td(a.oa,!1,b,c);80386<=a.da&&(Td(a.La,!1,b,c),Td(a.Pa,!1,b,c));Qf(a)} +l.save=function(a){var b=new Wf(this);b.set(0,[this.D,this.H,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.oa.save(),h;null!=this.Kb?(h=[this.qa,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.Tb),h.push(this.$f))):h=null;c=[c,d,e,f,g,h,pe(this)];80386<=this.da&&(c.push(this.La.save()),c.push(this.Pa.save()));b.set(1,c);b.set(2,[this.Ha.dc, +this.Vb.dc,this.M,this.ha,this.bb,this.C,this.F]);b.set(3,[0,this.Hd,this.Y.Bd,a,Kd(this)]);b.set(4,Gc(this.na,!!(this.qa&-2147483648)));return b.data()}; +l.restore=function(a){var b=a[0];this.D=b[0];this.H=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.oa.restore(b[4]);var d=b[5];d&&d.length&&(this.qa=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.Tb=d[11],this.$f=d[12]),he(this));qe(this,b[6]);var d=!1,e;a:{e=this.na; +var f=a[4],g;for(g=0;g>>0)+(a.ba.Qa>>>0)+1;a.Wa=a.ba.Cb;Qf(a)} +function re(a,b,c,d){var e=a.ba;e.Gf=b;e.C=d;b=e.load(c);return-1!==b?(Zf(a,b+(a.ba.Gf&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.Da-a.U.ta}function fe(a,b){a.Ac=b;a.Da=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.Ce=d,a.Sd=b):(a.Ce=b,a.Sd=d);a.gf=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.Ce^(a.Ce^a.gf)&(a.gf^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.Ce^a.gf)&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.Ce^a.Sd)&(a.gf^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 pe(a){return a.P&-2262|cg(a)|dg(a)|eg(a)|fg(a)|gg(a)|hg(a)}function tg(a,b){b|=a.qa&1|65520;a.qa=a.qa&-65536|b&65535;a.qa&1&&he(a,!0)}function qe(a,b,c){a.qa&1||(b&=~a.pi);void 0===c&&(c=a.Wa);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.Qi;a.P&256&&(a.bb|=2,a.M|=4)} +function ug(a,b,c,d){var e=0;if(a.qa&1&&(a.Wa>a.mc||a.P&131072)&&a.ka.Ri)for(var f=a.ka.Ri+(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.la[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.dd)>>>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.ae(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.dd)>>>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.dd)>>>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.dd)>>>this.lb;this.A-=this.B.yg;if(c>>=8}}; +function wg(a,b,c){a.Ja=b;a.yb=c&a.wa;a.C=b.Bb(a.yb,1);return a.M&1?0:a.ya(a.C)}function C(a,b){return wg(a,a.Ha,b)}function xg(a,b){return wg(a,a.Vb,b)}function yg(a,b,c){a.Ja=b;a.yb=c&a.wa;a.C=b.Bb(a.yb,a.W);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.mb(a.C);return a}function E(a,b){a.Ja=a.Ha;a.yb=b&a.wa;a.C=a.Ja.Bb(a.yb,2);if(a.M&9){if(a.M&1)return 0;b=a.ya(a.C)|a.ya(a.Ja.Bb(0,1))<<8;a.M&=-9}else b=a.ja(a.C);return b} +function zg(a,b){a.Ja=a.Vb;a.yb=b&a.wa;a.C=a.Ja.Bb(a.yb,2);if(a.M&9){if(a.M&1)return 0;b=a.ya(a.C)|a.ya(a.Ja.Bb(0,1))<<8;a.M&=-9}else b=a.ja(a.C);return b}function F(a,b){a.Ja=a.Ha;a.yb=b&a.wa;a.C=a.Ja.Bb(a.yb,4);return a.M&1?0:a.ia(a.C)}function Cg(a,b){a.Ja=a.Vb;a.yb=b&a.wa;a.C=a.Ja.Bb(a.yb,4);return a.M&1?0:a.ia(a.C)}function Dg(a,b){a.M&2||a.tb(a.Ja.Ub(a.yb,1),b)}function Eg(a,b){if(!(a.M&2)){var c=a.Ja.Ub(a.yb,2);a.M&8?(a.tb(c,b),a.tb(a.Ja.Ub(0,1),b>>8),a.M&=-9):a.ib(c,b)}} +function Fg(a,b){a.M&2||a.eb(a.Ja.Ub(a.yb,4),b)}function je(a,b,c){c=b.Bb(c,a.W);a.M&8?(b=a.ya(c)|a.ya(b.Bb(0,1))<<8,a.M&=-9):b=a.mb(c);return b}function Gg(a,b,c,d){c=b.Ub(c,a.W);a.M&8?(a.tb(c,d),a.tb(b.Ub(0,1),d>>8),a.M&=-9):a.gc(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.Lc);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.Ga=function(){var a,b=$f(this,this.W);this.M&8?(a=this.ya(this.ea)|this.ya(b-1)<<8,this.M&=-9):a=this.mb(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 de(a){var b=a.mb(a.Da);a.Da=a.Da+a.W|0;var c=(a.Pg>>>0)-(a.Da>>>0);0>c&&(8088>=a.da?(fe(a,a.Da-a.U.ta&a.U.wa),-1>c&&(b=b&255|a.ya(a.Da-1)<<8)):-1>c?x.call(a,12,0):(!a.U.gd&&a.U.Qa==a.U.wa||a.U.gd&&!a.U.Qa)&&fe(a,a.Da-a.U.ta&a.U.wa));return b}function ne(a,b){ke(a,b,a.W)} +function ke(a,b,c,d){d=void 0===d?c:d;var e=a.Da-c|0,f=(e>>>0)-(a.zj>>>0);if(0>f){if(8088>=a.da&&-1==f){a.tb(e+1,b>>8);fe(a,e-a.U.ta&a.U.wa);a.tb(a.Da,b);return}if(!a.U.gd&&a.U.Qa==a.U.wa||a.U.gd&&!a.U.Qa){if(f>-c){x.call(a,12,0);return}fe(a,e-a.U.ta&a.U.wa);e=a.Da}else{x.call(a,12,0);return}}switch(d){case 1:a.tb(e,b);break;case 2:a.ib(e,b);break;case 4:a.eb(e,b)}a.Da=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.bb&1&&this.P&512){var f=Kg(this.X);if(-1<=f&&(this.bb&=-2,0<=f)){this.bb&=-5;Lg.call(this, +f);d=!0;break a}}break;case 1:if(this.bb&2){this.bb&=-3;80386<=this.da&&(this.Tb[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.bb&4){this.M=this.A=0;break}}if(b){if(Mg(this.ca,this.ea,c)){this.Sb();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&&Ug(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.X,a.da>=Tg?ih(a,hh):a.ba&jh||Lg.call(a.G,2),!0;a=a.X;a.da>=Tg&&Ug(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.H[0]=d|0;2147483648d&&(a.H[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.G.ia(a.G.C)}function zh(a){a.ha[0]=a.G.ia(a.G.C);return a.aa[0]}function Ah(a){a.H[0]=a.G.ia(a.G.C);a.H[1]=a.G.ia(a.G.C+4);return a.K[0]} +function Bh(a){a.D[0]=a.G.ia(a.G.C);a.D[1]=a.G.ia(a.G.C+4);a.D[2]=a.G.ja(a.G.C+8);return a.D}l.ji=function(){this.G.eb(this.G.C,this.H[0])};l.al=function(){this.G.eb(this.G.C,this.H[0]);this.G.eb(this.G.C+4,this.H[1])};function Ch(a){a.G.eb(a.G.C,a.D[0]);a.G.eb(a.G.C+4,a.D[1]);a.G.ib(a.G.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.H[0]=b;a.H[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.mb(b+=d.W));!(d.qa&1)||d.P&131072?(a.I=d.mb(b+=d.W),c=d.mb(b+=d.W),a.P=c&2047,a.I|=(c&-4096)<<4,a.M=-1,a.J=d.mb(b+=d.W),a.J|=(d.mb(b+=d.W)&-4096)<<4,a.N=-1):(a.I=d.mb(b+=d.W),c=d.mb(b+=d.W),a.M=c&65535,a.P=c>>16&2047,a.J=d.mb(b+=d.W),a.N=d.mb(b+=d.W)&65535);return b+d.W} +function Jh(a,b){var c=a.G;c.gc(b,a.cc);c.gc(b+=c.W,Pg(a));c.gc(b+=c.W,Qg(a));if(!(c.qa&1)||c.P&131072){var d=(a.M<<4)+a.I;c.gc(b+=c.W,d);c.gc(b+=c.W,d>>4&-4096|a.P);d=(a.N<<4)+a.J;c.gc(b+=c.W,d);c.gc(b+=c.W,d>>4&-4096)}else c.gc(b+=c.W,a.I),c.gc(b+=c.W,a.M|a.P<<16),c.gc(b+=c.W,a.J),c.gc(b+=c.W,a.N);return b+c.W}function Kh(){this.ga&=-32896;Rg(this)}function Lh(){qh(this,K(this,0),K(this,this.A))}function Mh(){qh(this,K(this,0),K(this,this.A))&&Gh(this)}function Nh(){Mh.call(this)} +function Oh(){M(this,0,ph(this,K(this,0),zh(this)))}function Ph(){this.C&=~(1<>20&2047)-1023),this.H[1]=(this.H[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,K(this,0)%K(this,1))},113:function(){M(this,1,K(this,1)*Math.log(K(this,0)+1)/Math.LN2)&&Gh(this)},114:function(){var a=K(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,K(this,0),hi))},117:function(){var a=K(this,0),b=K(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,K(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.W?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.W?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.W?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.W?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.W?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.W<<3;if(b>=c||b<-c)a=yg(this,this.Ja,this.yb+(b>>(2==this.W?4:5))*this.W);b=1<<(b&(2==this.W?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.W<<3;if(b>=c||b<-c)a=yg(this,this.Ja,this.yb+(b>>(2==this.W?4:5))*this.W);b=1<<(b&(2==this.W?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.W<<3;if(b>=c||b<-c)a=yg(this,this.Ja,this.yb+(b>>(2==this.W?4:5))*this.W);b=1<<(b&(2==this.W?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.W<<3;if(b>=c||b<-c)a=yg(this,this.Ja,this.yb+(b>>(2==this.W?4:5))*this.W);b=1<<(b&(2==this.W?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.xh: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.xh: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.G,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.Ja.T,b.J=f.C-f.Ja.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.Ga();a=2==this.W?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.Wa&&this.zb.rc>=(b&3)&&(sg(this),a=this.zb.nb&-256,2=this.Wa)&&this.zb.rc>=(b&3))return sg(this),this.zb.Qa;qg(this);return a}function Ui(a,b){if(-1===this.C)return Xe.call(this),a;ee(this,this.ja(this.C+this.W));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.H}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.H;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.oa.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.La.T;break}x.call(this,6);b=a;break;case 5:if(80386<=this.da){b=this.Pa.T;break}default:x.call(this,6),b=a}-1!==this.F&&ie(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 ej(){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.Zh:this.B.Cf:this.B.Cf;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.Zh:this.B.Cf:this.B.Cf;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.H=this.H&-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.H=this.H&-65281|a<<8}this.A-=this.B.ai}else this.F=this.C,Dg(this,a),this.A-=this.B.$h;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.H=this.H&~this.R|a;break;case 4:fe(this,y(this)&~this.R|a);break;case 5:this.N=this.H&~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.ai}else{this.F=this.C;if(!(this.M&2)){var c=this.Ja.Ub(this.yb,this.W);this.M&8?(this.tb(c,a),this.tb(this.Ja.Ub(0,1),a>>8),this.M&=-9):this.gc(c, +a)}this.A-=this.B.$h}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.qa=a;he(this);this.qa&-2147483648?lf(this):of(this)}function se(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.Sh:this.B.Rh)+(a<this.Sc?(-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&&ee(this,this.Tc),this.Tc=-1),-1!==this.va&&(this.va!==this.Da&&fe(this,this.Ac&~this.U.wa|this.va-this.U.ta),this.va=-1)):8!=this.Sc?(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.Va,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.Sb())):(this.Ca(f),this.Sb())}if(d&&e)throw-1;if(e)throw this.Sc=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.Wa&&(a|=4);x.call(this,14,a)}function lk(a){var b=a.nb&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.H>>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.H&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.H>>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.H=this.H&-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.H=this.H&-65281|a<<8}} +function yf(a){var b,c,d=(this.fa=this.sa())&199;switch(d){case 0:b=C(this,this.H+this.K);this.F=this.C;break;case 1:b=C(this,this.H+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.H);this.F=this.C;break;case 64:b=C(this,this.H+this.K+this.S());this.F=this.C;break; +case 65:b=C(this,this.H+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.H+this.S());this.F=this.C;break;case 128:b=C(this,this.H+this.K+H(this));this.F=this.C;break;case 129:b=C(this,this.H+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.H+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.H&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.H>>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.H&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.H>>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.Qc;break;case 1:case 2:Dg(this,a);this.A-=this.B.Rc;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.zd;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.H=this.H&-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.H=this.H&-65281|a<<8}} +function zf(a,b){var c,d=(this.fa=this.sa())&199;switch(d){case 0:c=C(this,this.H+this.K);this.F=this.C;break;case 1:c=C(this,this.H+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.H);this.F=this.C;break;case 64:c=C(this,this.H+this.K+this.S());this.F=this.C;break; +case 65:c=C(this,this.H+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.H+this.S());this.F=this.C;break;case 128:c=C(this,this.H+this.K+H(this));this.F=this.C;break;case 129:c=C(this,this.H+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.H+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.H&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.H>>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.Qc;break;case 1:case 2:Dg(this,a);this.A-=this.B.Rc;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.zd;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.H=this.H&-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.H=this.H&-65281|a<<8}} +function Af(a){var b,c;switch((this.fa=this.sa())&199){case 0:c=E(this,this.H+this.K);this.A-=this.B.Qc;break;case 1:c=E(this,this.H+this.J);this.A-=this.B.Rc;break;case 2:c=zg(this,this.N+this.K);this.A-=this.B.Rc;break;case 3:c=zg(this,this.N+this.J);this.A-=this.B.Qc;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.zd;break;case 7:c=E(this,this.H);this.A-=this.B.xc;break;case 64:c=E(this,this.H+this.K+ +this.S());this.A-=this.B.Xb;break;case 65:c=E(this,this.H+this.J+this.S());this.A-=this.B.Yb;break;case 66:c=zg(this,this.N+this.K+this.S());this.A-=this.B.Yb;break;case 67:c=zg(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=zg(this,this.N+this.S());this.A-=this.B.Za;break;case 71:c=E(this,this.H+this.S());this.A-=this.B.Za;break;case 128:c=E(this,this.H+this.K+H(this)); +this.A-=this.B.Xb;break;case 129:c=E(this,this.H+this.J+H(this));this.A-=this.B.Yb;break;case 130:c=zg(this,this.N+this.K+H(this));this.A-=this.B.Yb;break;case 131:c=zg(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=zg(this,this.N+H(this));this.A-=this.B.Za;break;case 135:c=E(this,this.H+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.H&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.H&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.H=this.H&-65536|a;break;case 4:fe(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.H+this.K);this.F=this.C;break;case 1:b=E(this,this.H+this.J);this.F=this.C;break;case 2:b=zg(this,this.N+this.K);this.F=this.C;break;case 3:b=zg(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.H);this.F=this.C;break;case 64:b=E(this,this.H+this.K+this.S());this.F=this.C;break; +case 65:b=E(this,this.H+this.J+this.S());this.F=this.C;break;case 66:b=zg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:b=zg(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=zg(this,this.N+this.S());this.F=this.C;break;case 71:b=E(this,this.H+this.S());this.F=this.C;break;case 128:b=E(this,this.H+this.K+H(this));this.F=this.C;break;case 129:b=E(this,this.H+this.J+H(this)); +this.F=this.C;break;case 130:b=zg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:b=zg(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=zg(this,this.N+H(this));this.F=this.C;break;case 135:b=E(this,this.H+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.H&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.H&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.Qc;break;case 1:case 2:Eg(this,a);this.A-=this.B.Rc;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.zd;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.H=this.H&-65536|a;break;case 196:fe(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.H+this.K);this.F=this.C;break;case 1:c=E(this,this.H+this.J);this.F=this.C;break;case 2:c=zg(this,this.N+this.K);this.F=this.C;break;case 3:c=zg(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.H);this.F=this.C;break;case 64:c=E(this,this.H+this.K+this.S());this.F=this.C;break; +case 65:c=E(this,this.H+this.J+this.S());this.F=this.C;break;case 66:c=zg(this,this.N+this.K+this.S());this.F=this.C;break;case 67:c=zg(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=zg(this,this.N+this.S());this.F=this.C;break;case 71:c=E(this,this.H+this.S());this.F=this.C;break;case 128:c=E(this,this.H+this.K+H(this));this.F=this.C;break;case 129:c=E(this,this.H+this.J+H(this)); +this.F=this.C;break;case 130:c=zg(this,this.N+this.K+H(this));this.F=this.C;break;case 131:c=zg(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=zg(this,this.N+H(this));this.F=this.C;break;case 135:c=E(this,this.H+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.H&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.Qc;break;case 1:case 2:Eg(this,a);this.A-=this.B.Rc;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.zd;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.H=this.H&-65536|a;break;case 196:fe(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.H+this.K);this.A-=this.B.Qc;break;case 1:c=F(this,this.H+this.J);this.A-=this.B.Rc;break;case 2:c=Cg(this,this.N+this.K);this.A-=this.B.Rc;break;case 3:c=Cg(this,this.N+this.J);this.A-=this.B.Qc;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.zd;break;case 7:c=F(this,this.H);this.A-=this.B.xc;break;case 64:c=F(this,this.H+this.K+ +this.S());this.A-=this.B.Xb;break;case 65:c=F(this,this.H+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.H+this.S());this.A-=this.B.Za;break;case 128:c=F(this,this.H+this.K+H(this)); +this.A-=this.B.Xb;break;case 129:c=F(this,this.H+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.H+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.H;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.H;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.H=a;break;case 4:fe(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.H+this.K);this.F=this.C;break;case 1:b=F(this,this.H+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.H);this.F=this.C;break;case 64:b=F(this,this.H+this.K+this.S());this.F=this.C;break; +case 65:b=F(this,this.H+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.H+this.S());this.F=this.C;break;case 128:b=F(this,this.H+this.K+H(this));this.F=this.C;break;case 129:b=F(this,this.H+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.H+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.H;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.H;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.Qc;break;case 1:case 2:Fg(this,a);this.A-=this.B.Rc;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.zd;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.H=a;break;case 196:fe(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.H+this.K);this.F=this.C;break;case 1:c=F(this,this.H+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.H);this.F=this.C;break;case 64:c=F(this,this.H+this.K+this.S());this.F=this.C;break; +case 65:c=F(this,this.H+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.H+this.S());this.F=this.C;break;case 128:c=F(this,this.H+this.K+H(this));this.F=this.C;break;case 129:c=F(this,this.H+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.H+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.H;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.Qc;break;case 1:case 2:Fg(this,a);this.A-=this.B.Rc;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.zd;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.H=a;break;case 196:fe(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.H);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.H+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.H+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.H&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.H>>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.H&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.H>>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.H=this.H&-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.H=this.H&-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.H);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.H+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.H+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.H&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.H>>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.H&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.H>>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.H=this.H&-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.H=this.H&-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.H);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.H+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.H+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.H&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.H>>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.H=this.H&-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.H=this.H&-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.H);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.H+this.S());break;case 68:c=E(this,nk.call(this,1)+this.S()); +break;case 69:c=zg(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.H+H(this));break;case 132:c=E(this,nk.call(this,2)+H(this));break;case 133:c=zg(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.H&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.H&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.H=this.H&-65536|a;break;case 4:fe(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.H);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.H+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=zg(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.H+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=zg(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.H&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.H&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.H=this.H&-65536|a;break;case 196:fe(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.H);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.H+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=zg(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.H+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=zg(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.H&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.H=this.H&-65536|a;break;case 196:fe(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.H);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.H+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.H+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.H;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.H;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.H=a;break;case 4:fe(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.H);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.H+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.H+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.H;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.H;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.H=a;break;case 196:fe(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.H);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.H+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.H+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.H;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.H=a;break;case 196:fe(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.H;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.H;break;case 4:e=y(this);this.Ha=this.Vb;break;case 5:a?(e=this.N,this.Ha=this.Vb):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.ue},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.H=ak.call(this,this.H)},function(){fe(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.H=Yj.call(this,this.H)},function(){fe(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(){ne(this,this.D&this.R); +this.A-=this.B.Jc},function(){ne(this,this.I&this.R);this.A-=this.B.Jc},function(){ne(this,this.L&this.R);this.A-=this.B.Jc},function(){ne(this,this.H&this.R);this.A-=this.B.Jc},function(){ne(this,y(this)-2&65535);this.A-=this.B.Jc},function(){ne(this,this.N&this.R);this.A-=this.B.Jc},function(){ne(this,this.K&this.R);this.A-=this.B.Jc},function(){ne(this,this.J&this.R);this.A-=this.B.Jc},function(){this.D=this.D&~this.R|de(this);this.A-=this.B.oc},function(){this.I=this.I&~this.R|de(this);this.A-= +this.B.oc},function(){this.L=this.L&~this.R|de(this);this.A-=this.B.oc},function(){this.H=this.H&~this.R|de(this);this.A-=this.B.oc},function(){fe(this,y(this)&~this.R|de(this));this.A-=this.B.oc},function(){this.N=this.N&~this.R|de(this);this.A-=this.B.oc},function(){this.K=this.K&~this.R|de(this);this.A-=this.B.oc},function(){this.J=this.J&~this.R|de(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.ub.call(this, +Tk,this.Ga);this.A-=-1===this.F?1:this.B.xg},Ek,function(){this.ub.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.ma.call(this,Uj)},Gk,Hk,Ik,Jk,function(){this.M|=1;this.Ba.call(this,Zi)},function(){this.M|=1;this.Ha=this.Vb=this.Qg;this.ma.call(this,Pi)},function(){var a;this.ma.call(this,Yi);switch(this.fa>>3&7){case 0:a=this.D;this.D=this.Aa;me(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;ee(this,a);break;case 3:a=this.H;this.H=this.Aa;le(this,a);break;case 4:a=y(this);fe(this,this.Aa);80386<=this.da?this.La.load(a):me(this,a);break;case 5:a=this.N;this.N=this.Aa;80386<=this.da?this.Pa.load(a):Yf(this,a);break;case 6:a=this.K;this.K=this.Aa;ee(this,a);break;case 7:a=this.J,this.J=this.Aa,le(this,a)}},function(){this.M|=1;this.va=this.Da;this.Aa=de(this);this.ub.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.H&this.R;this.H=this.H&~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;fe(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.W?this.D&-65536|this.D<<24>>24&65535:this.D<<16>>16;this.A-=2},function(){this.L=2==this.W?this.L&-65536|(this.D&32768?65535:0):this.D&-2147483648?-1:0;this.A-=this.B.Kj},function(){ik.call(this,this.Ga(),Hg(this));this.A-=this.B.Nj},function(){this.A-=3},function(){var a=pe(this);a&131072&& +3>this.mc?x.call(this,13,0):(ne(this,a&-196609),this.A-=this.B.Jc)},function(){if(this.P&131072&&3>this.mc)x.call(this,13,0);else{var a=de(this),a=a&65535|this.P&-65536;qe(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|(pe(this)& +213)<<8;this.A-=this.B.Zb},function(){var a=this.D&-256,b;b=H(this);b=this.ya(this.Ha.Bb(b,1));this.D=a|b;this.A-=this.B.Hh},function(){this.D=this.D&~this.R|je(this,this.Ha,H(this));this.A-=this.B.Hh},function(){var a=H(this),b=this.D;this.tb(this.Ha.Ub(a,1),b);this.A-=this.B.Ih},function(){Gg(this,this.Ha,H(this),this.D);this.A-=this.B.Ih},function(){var a=1,b=0,c=this.wa,d=this.B.Jh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Lh,this.ha&256||(this.A-=this.B.Kh));if(a--){var e=this.ya(this.Ha.Bb(this.K& +c,1));this.tb(this.oa.Ub(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.Jh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Lh,this.ha&256||(this.A-=this.B.Kh));if(a--){Gg(this,this.oa,this.J&c,je(this,this.Ha,this.K&c));var e=this.P&1024?-this.W:this.W;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.uh;this.ha&192&&(a=this.I&c,b=1,d=this.B.wh,this.ha&256||(this.A-=this.B.vh));if(a--){var e=wg(this,this.Ha,this.K),f=wg(this,this.oa,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.uh;this.ha&192&&(a=this.I&c,b=1,d=this.B.wh,this.ha&256|| +(this.A-=this.B.vh));if(a--){var e=yg(this,this.Ha,this.K&c),f=yg(this,this.oa,this.J&c);this.F=this.C;Di.call(this,e,f);e=this.P&1024?-this.W:this.W;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.ue},function(){ig(this,this.D&this.Ga(),this.Hb);this.A-=this.B.ue},function(){var a=1,b=0,c=this.wa,d=this.B.Uh;this.ha&192&&(a=this.I&c,b= +1,d=this.B.Wh,this.ha&256||(this.A-=this.B.Vh));if(a--){var e=this.D;this.tb(this.oa.Ub(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.Uh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Wh,this.ha&256||(this.A-=this.B.Vh));a--&&(Gg(this,this.oa,this.J&c,this.D),this.J=this.J&~c|this.J+(this.P&1024?-this.W: +this.W)&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.Bh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Dh,this.ha&256||(this.A-=this.B.Ch));if(a--){var e=this.ya(this.Ha.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.Bh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Dh,this.ha&256||(this.A-=this.B.Ch));if(a--){var e= +je(this,this.Ha,this.K&c);this.D=this.D&~this.R|e;this.K=this.K&~c|this.K+(this.P&1024?-this.W:this.W)&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.Oh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Qh,this.ha&256||(this.A-=this.B.Ph));if(a--){var e=this.D&255,f=wg(this,this.oa,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.Oh;this.ha&192&&(a=this.I&c,b=1,d=this.B.Qh,this.ha&256||(this.A-=this.B.Ph));if(a--){var e=this.D&this.R,f=yg(this,this.oa,this.J&c);this.F=this.C;Di.call(this,e,f);this.J=this.J&~c|this.J+(this.P&1024?-this.W:this.W)&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.H=this.H&-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.H=this.H&-65281|this.sa()<<8;this.A-=this.B.Zb},function(){this.D=this.D&~this.R|this.Ga();this.A-=this.B.Zb},function(){this.I=this.I&~this.R|this.Ga();this.A-=this.B.Zb},function(){this.L=this.L& +~this.R|this.Ga();this.A-=this.B.Zb},function(){this.H=this.H&~this.R|this.Ga();this.A-=this.B.Zb},function(){fe(this,y(this)&~this.R|this.Ga());this.A-=this.B.Zb},function(){this.N=this.N&~this.R|this.Ga();this.A-=this.B.Zb},function(){this.K=this.K&~this.R|this.Ga();this.A-=this.B.Zb},function(){this.J=this.J&~this.R|this.Ga();this.A-=this.B.Zb},Nk,Ok,Nk,Ok,function(){this.ma.call(this,Qi)},function(){this.ma.call(this,Oi)},function(){this.M|=1;this.md.call(this,Vk,this.sa)},function(){this.M|= +1;this.ub.call(this,Vk,this.Ga)},Pk,Qk,Pk,Qk,function(){if(this.P&131072&&3>this.mc)x.call(this,13,0);else{var a=this.B.dk;this.Sc=-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.Sc=-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.Da;this.A-=this.B.bk;if(this.qa&1&&this.P&16384){var a=this.ja(this.ka.ta+0);ge(this.ba,a,!1)}else{var a=this.Wa,b=de(this),c=de(this),d=de(this);if(this.P&131072)d=d&131071|this.P&-131072;else if(d&131072){var e=de(this),f=de(this),g=de(this),h=de(this),k=de(this),m=de(this);he(this,!0,!0);ee(this,f);fe(this,e);me(this,g);le(this,h);this.La.load(k); +this.Pa.load(m)}null!=re(this,b,c,!1)&&(qe(this,d,a),this.Yf&&Tf(this,this.ea))}this.Tc=this.va=-1}},function(){this.md.call(this,Kk,dk)},function(){this.ub.call(this,2==this.W?Lk:Mk,dk)},function(){this.md.call(this,Kk,ek)},function(){this.ub.call(this,2==this.W?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.Ha,this.H+(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.Eh},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.Fh):this.A-=this.B.Gh},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.Eh},function(){var a=this.S();this.I&this.wa?this.A-=this.B.Gh:(B(this,z(this)+a),this.A-=this.B.Fh)},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.zh)},function(){var a=this.sa();ug(this,a,this.W,!0)&&(this.D=this.D&~this.R|Jc(this.na,a,this.W,this.ea-2)&this.R,this.A-=this.B.zh)},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.Nh)},function(){var a=this.sa();ug(this,a,this.W,!1)&&(Nc(this.na,a,this.W,this.D&this.R,this.ea-2),this.A-=this.B.Nh)},function(){var a=this.Ga(),b=z(this),a=b+a;ne(this,b);B(this,a);this.A-=this.B.Lj},function(){var a=this.Ga();B(this, +z(this)+a);this.A-=this.B.Ah},function(){re(this,this.Ga(),Hg(this));this.A-=this.B.hk},function(){var a=this.S();B(this,z(this)+a);this.A-=this.B.Ah},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.yh)},function(){var a=this.L&65535;ug(this,a,this.W,!0)&&(this.D=this.D&~this.R|Jc(this.na,a,this.W,this.ea-1)&this.R,this.A-=this.B.yh)},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.Mh)}, +function(){var a=this.L&65535;ug(this,a,2,!1)&&(Nc(this.na,a,this.W,this.D&this.R,this.ea-1),this.A-=this.B.Mh)},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.bb|=4,this.A-=2,this.ca&&r(this,-2147483648)?(ag(this),this.ca.Sb()):this.P&512||(this.ca&&ag(this),this.Sb()))},function(){cg(this)?kg(this):jg(this);this.A-=2},function(){this.wc=!1;this.md.call(this,Xk,gk);this.wc&&(this.D=this.D&~this.R|this.Ea&this.R)}, +function(){this.wc=!1;this.ub.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.Wa>this.mc?x.call(this,13,0):(this.P&=-513,this.A-=this.B.Jj)},function(){this.Wa>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.md.call(this,ve,gk)},function(){this.ub.call(this,we,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.Xa){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.Xa){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.Xa){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.Xa){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.Xa)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.Xa){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.Xa){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.Xa){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.Xa){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.Xa)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.Xa)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.Xa)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.Xa)a<<=b-1,c=a<<1,ig(this,c,-2147483648,a&-2147483648,(c^a)&-2147483648);return c},function(a,b){if(b&=this.Xa)b=a>>>b-1,a=b>>>1,ig(this,a,-2147483648,b&1,a&-2147483648);return a},Gi,function(a, +b){if(b&=this.Xa)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.Yh:this.B.Xh;this.M|=2;return a},Gi,function(a){this.A-=-1===this.C?this.B.Bf:this.B.Af;return a^255},function(a){var b=-a|0;bg(this,0,a,b,191,!0);this.A-=-1===this.C?this.B.Bf:this.B.Af;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.Ga();ig(this,a&b,this.Hb);this.A-=-1===this.C?this.B.Yh:this.B.Xh;this.M|=2;return a},Gi,function(a){this.A-=-1===this.C?this.B.Bf:this.B.Af;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.Bf:this.B.Af;return b&this.R},function(a,b){2==this.W?(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.W?(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.W){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.W){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}],ve=[function(a){var b=a+1|0;bg(this,a,1,b,190);this.A-=-1===this.C?this.B.zf:this.B.yf;return b&255},function(a){var b=a-1|0;bg(this,a,1,b,190, +!0);this.A-=-1===this.C?this.B.zf:this.B.yf;return b&255},Gi,Gi,Gi,Gi,Gi,Gi],we=[function(a){var b=a+1|0;bg(this,a,1,b,this.Hb|62);this.A-=-1===this.C?this.B.zf:this.B.yf;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.zf:this.B.yf;return b&this.R},function(a){ne(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.Da;ik.call(this,a,this.ja(this.C+this.W)); +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);re(this,a,this.ja(this.C+this.W));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));ne(this,b);this.A-=-1===this.C?this.B.Jc:this.B.Ak;this.M|=2;return a},Gi];function gf(){this.ma.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.ub.call(this,this.lj,gk)};We[1]=function(){this.ya(this.ea)&16||(this.M|=1);this.ub.call(this,Zk,gk)};We[2]=function(){!(this.qa&1)||this.P&131072?x.call(this,6):this.ma.call(this,Ni)};We[3]=function(){!(this.qa&1)||this.P&131072?x.call(this,6):this.ma.call(this,Ti)}; +We[5]=function(){this.Wa?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.H=this.ja(2094),this.L=this.ja(2096),this.I=this.ja(2098),this.D=this.ja(2100),be(this.oa,2102,this.ja(2084)),be(this.ba,2108,this.ja(2082)),be(this.U,2114,this.ja(2080)),be(this.Fa,2120,this.ja(2078)),qe(this,this.ja(2072)),B(this,this.ja(2074)),fe(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),be(this.Gb,2132,this.ja(2076)),be(this.ka,2144,this.ja(2070)),this.A-=195)};We[6]=function(){this.Wa?x.call(this,13,0):(this.qa&=-9,this.A-=2)};We[11]=ye;We[166]=ye;We[255]=ye;var A=[];A[5]=ye; +A[7]=function(){if(this.Wa)x.call(this,13,0,0,!0);else{var a=this.oa.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;qe(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);$d(this.Gb,this.ia(a+56),this.ia(a+120),this.ia(a+124),this.ia(a+128));$d(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.H= +this.ia(a+28);this.L=this.ia(a+32);this.I=this.ia(a+36);this.D=this.ia(a+40);$d(this.Pa,this.ia(a+60),this.ia(a+132),this.ia(a+136),this.ia(a+140));$d(this.La,this.ia(a+64),this.ia(a+144),this.ia(a+148),this.ia(a+152));$d(this.Fa,this.ia(a+68),this.ia(a+156),this.ia(a+160),this.ia(a+164));$d(this.U,this.ia(a+72),b,this.ia(a+172),this.ia(a+176));$d(this.ba,this.ia(a+76),this.ia(a+180),this.ia(a+184),this.ia(a+188));$d(this.oa,this.ia(a+80),this.ia(a+192),this.ia(a+196),this.ia(a+200));B(this,this.ia(a+ +8));fe(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.Wa)x.call(this,13,0);else{var a,b=this.sa();switch((b&56)>>3){case 0:a=this.qa;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.Wa)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.Tb[b]),this.A-=22)}}; +A[34]=function(){if(this.Wa)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:se.call(this,b);this.A-=5;break;default:Xe.call(this)}}};A[35]=function(){if(this.Wa)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.Tb[b]&&(Uf(this,!1),this.Tb[b]=a,Uf(this,!0)),this.A-=4>b?22:14)}}; +A[36]=function(){if(this.Wa)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.Wa)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.Ga();hg(this)?(B(this,z(this)+a),this.A-=this.B.Ra):this.A-=this.B.Sa};A[129]=function(){var a=this.Ga();hg(this)?this.A-=this.B.Sa:(B(this,z(this)+a),this.A-=this.B.Ra)}; +A[130]=function(){var a=this.Ga();cg(this)?(B(this,z(this)+a),this.A-=this.B.Ra):this.A-=this.B.Sa};A[131]=function(){var a=this.Ga();cg(this)?this.A-=this.B.Sa:(B(this,z(this)+a),this.A-=this.B.Ra)};A[132]=function(){var a=this.Ga();fg(this)?(B(this,z(this)+a),this.A-=this.B.Ra):this.A-=this.B.Sa};A[133]=function(){var a=this.Ga();fg(this)?this.A-=this.B.Sa:(B(this,z(this)+a),this.A-=this.B.Ra)};A[134]=function(){var a=this.Ga();cg(this)||fg(this)?(B(this,z(this)+a),this.A-=this.B.Ra):this.A-=this.B.Sa}; +A[135]=function(){var a=this.Ga();cg(this)||fg(this)?this.A-=this.B.Sa:(B(this,z(this)+a),this.A-=this.B.Ra)};A[136]=function(){var a=this.Ga();gg(this)?(B(this,z(this)+a),this.A-=this.B.Ra):this.A-=this.B.Sa};A[137]=function(){var a=this.Ga();gg(this)?this.A-=this.B.Sa:(B(this,z(this)+a),this.A-=this.B.Ra)};A[138]=function(){var a=this.Ga();dg(this)?(B(this,z(this)+a),this.A-=this.B.Ra):this.A-=this.B.Sa};A[139]=function(){var a=this.Ga();dg(this)?this.A-=this.B.Sa:(B(this,z(this)+a),this.A-=this.B.Ra)}; +A[140]=function(){var a=this.Ga();!gg(this)!=!hg(this)?(B(this,z(this)+a),this.A-=this.B.Ra):this.A-=this.B.Sa};A[141]=function(){var a=this.Ga();!gg(this)==!hg(this)?(B(this,z(this)+a),this.A-=this.B.Ra):this.A-=this.B.Sa};A[142]=function(){var a=this.Ga();fg(this)||!gg(this)!=!hg(this)?(B(this,z(this)+a),this.A-=this.B.Ra):this.A-=this.B.Sa};A[143]=function(){var a=this.Ga();fg(this)||!gg(this)!=!hg(this)?this.A-=this.B.Sa:(B(this,z(this)+a),this.A-=this.B.Ra)};A[144]=function(){ck.call(this,dj)}; +A[145]=function(){ck.call(this,dj)};A[146]=function(){ck.call(this,ej)};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(){ke(this,this.La.T,this.W,2);this.A-=this.B.ve};A[161]=function(){this.va=this.Da;var a=de(this);this.La.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.W?Bj:Dj);this.A-=-1===this.C?3:7};A[165]=function(){this.Ba.call(this,2==this.W?Fj:Gj);this.A-=-1===this.C?3:7};A[168]=function(){ke(this,this.Pa.T,this.W,2);this.A-=this.B.ve}; +A[169]=function(){this.va=this.Da;var a=de(this);this.Pa.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.W?Hj:Jj);this.A-=-1===this.C?3:7};A[173]=function(){this.Ba.call(this,2==this.W?Lj:Mj);this.A-=-1===this.C?3:7};A[175]=function(){this.ma.call(this,2==this.W?Ii:Ki)};A[178]=function(){this.ma.call(this,Ui)};A[179]=function(){this.Ba.call(this,Ai);-1!==this.C&&(this.A-=5)}; +A[180]=function(){this.ma.call(this,Ri)};A[181]=function(){this.ma.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.H=this.H&~this.R|this.H&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.H>>8&255,this.H=this.Aa}this.A-= +-1===this.C?3:6};A[183]=function(){ie(this,2);this.ma.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.H=this.H&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.ub.call(this,$k,this.sa)};A[187]=function(){this.Ba.call(this,zi);-1!==this.C&&(this.A-=5)}; +A[188]=function(){this.ma.call(this,si)};A[189]=function(){this.ma.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.H=this.H&~this.R|(this.H&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.H<<16>>24&this.R,this.H=this.Aa}this.A-=-1===this.C?3:6};A[191]=function(){ie(this,2);this.ma.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.H=this.H<<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.nb|=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.nb&2560)&&(this.zb.rc>=this.Wa&&this.zb.rc>=(a&3)||7168==(this.zb.nb&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.nb&2560)&&this.zb.rc>=this.Wa&&this.zb.rc>=(a&3))return sg(this),a;qg(this);return a},Gi,Gi],xe=[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.W&&(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.W&&(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.qa},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.M=[360,360],(b=a.floppies)&&b.length&&(this.M=b),fl(this,gl,this.M.length),fl(this,hl,a.monitor||(this.da=Tg&&(this.Aa=this.fa=2);this.N=a.scaleTimers||!1;this.La=a.dateRTC;this.Ha=!1;a.sound&&(this.Fa=this.ha=null,window&&(this.Fa=window.AudioContext|| +window.webkitAudioContext),this.Fa&&(this.ha=new this.Fa));this.reset(!0)}ba(al,ib);l=al.prototype; +l.uc=function(a,b,c,d){this.na=b;this.G=c;this.ca=d;this.pa=a;this.Kc=Vb(a,"FPU");fl(this,jl,this.Kc?1:0,!0);this.C=Vb(a,"Keyboard");this.Da=c.Y.Yd/kl;Ic(b,this,ll);Mc(b,this,ml);this.da=Tg){this.D=Nl;this.K=0;this.J=Ol;this.ma=0;this.L=Pl|Ql;512<=Rl(this)&&(this.L|=Sl);+Tl(this,hl,void 0)==Ul&&(this.L|=Vl);(this.da|0)==ul&&(this.L=this.L|Wl|Xl);this.oa= +Yl|Zl;this.X=Array(8);this.P=0;a&&(this.A=Array(zl));$l(this,this.La);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]&Tm||(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.K,this.J,this.ma,this.L,this.oa]),a.set(6,[this.X[7],this.X,this.P,this.A,this.ka,this.U]));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;dn(a,b,c,!0)}function en(a,b,c){if(b=(a=fn[a.da|0])&&a[b])for(var d in b)if(a=b[d],a.zc&1<g.qb[0]&&(g.qb[0]=255,g.qb[1]--,0>g.qb[1]&&(g.qb[1]=255)));return h}function un(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.qb[g.Ab]=a.qc[g.Ab]=e;g.Ab^=1}function vn(a,b,c,d){var e=a.F[b],f=e.Pb|wn;e.Pb&=~xn;r(a,768)&&t(a,c,null,d,"DMA"+b+".STATUS",f,!0);return f} +function yn(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 Cn(a,b,c){b=a.F[b>>2].pc[b&3];b.kg&&b.bh&&b.zg?(c&&(b.done=c),b.re||Mn(a,b,!0)):c&&c(!0)} +function Mn(a,b,c){c&&(b.count=b.qb[1]<<8|b.qb[0],b.type=b.mode&Nn,b.pj=b.lg=!1);for(var d=!1;0<=b.count&&(c=b.eg<<16|b.vb[1]<<8|b.vb[0],b.type==On?(d=!0,function(c){b.bh.call(b.kg,b.zg,-1,function(e,g){0>e&&(b.pj||(b.pj=!0),e=255);b.re||a.na.tb(c,e);(d=g)&&setTimeout(function(){Pn(b)||Mn(a,b)},0)})}(c)):b.type==Qn?(c=a.na.ya(c),0>b.bh.call(b.kg,b.zg,c)&&(b.lg=!0)):b.type!=Rn&&(b.lg=!0)),!d&&!Pn(b););} +function Pn(a){if(!a.lg&&0<=--a.count&&(a.mode&Sn?(a.vb[0]--,0>a.vb[0]&&(a.vb[0]=255,a.vb[1]--,0>a.vb[1]&&(a.vb[1]=255))):(a.vb[0]++,255>3];b=1<<(b&7);d.ec&b||(d.ec|=b,d.We=c||0,ho(a))}function Ug(a,b){var c=a.ic[b>>3];b=1<<(b&7);c.ec&b&&(c.ec&=~b,ho(a))}function ho(a,b){var c,d=-1;1>=1),Fd(a.G,e))),b==uo&&c==yo&&Xm(a))}function zo(a,b,c,d){t(a,c,null,d,"PIT"+b+".CTRL",null,2048);return b?a.va:a.qa} +function Ao(a,b,c,d,e){t(a,c,d,e,"PIT"+b+".CTRL",null,2048);e=0;c=d&Bo;b?(e=3,a.va=d):a.qa=d;if(c==Co){if(!(d&Do))for(c=0;2>=c;c++)if(d&Eo<=c;c++)d&Eo<>=Jo;var f=d&Ko,g=d&Lo;d&=Mo;if(d==No)Io(a,e+c);else{e+=c;var h=a.ra[e];h.Mf=d;h.mode=g;h.Yg=f;h.qc=[0,0];h.qb=[0,0];h.me=[0,0];h.hd=!1;h.Me=!1;h.pe=!1;h.Qe=!1;qo(a,e);b==uo&&c==vo&&Ug(a,wo);b==uo&&c==yo&&255== +a.ic[0].td&&a.I==(Oo|Po|Qo|Ro)&&(b=a.ra[0],b.Oc[0]=b.qc[0],b.Oc[1]=b.qc[1],b.kd=Cd(a.G,a.N))}}}function xo(a,b){a=a.ra[b];(b=a.qc[1]<<8|a.qc[0])||(b=1==a.Zc?256:65536);return b}function Md(a,b){a=a.ra[b];(b=a.Oc[1]<<8|a.Oc[0])||(b=1==a.Zc?256:65536);return b}function Io(a,b){yl(a,b);var c=a.ra[b];c.me[0]=c.qb[0];c.me[1]=c.qb[1];c.Me=!0;qo(a,b)}function qo(a,b){a=a.ra[b];a.wd=a.Mf==So?1:0;a.Zc=a.Mf==To?2:1} +function yl(a,b,c){var d=a.ra[b];if(d.pe&&(b!=yo||a.I&Oo)){var e=Cd(a.G,a.N),f=(e-d.kd)/a.Da|0;0>f&&(d.kd=e,f=0);var g=xo(a,b),h=Md(a,b)-f;d.mode==so?(0>=h&&(h=0),h||(d.hd=!0,d.pe=!1,b||ih(a,wo))):d.mode==Uo?(d.hd=1!=h,0>=h&&(h=g+h,0>=h&&(h=g),d.Oc[0]=h&255,d.Oc[1]=h>>8&255,d.kd=e,!b&&d.hd&&ih(a,wo))):d.mode==Nd&&(h-=f,0>=h&&(d.hd=!d.hd,h=g+h,0>=h&&(h=g),d.Oc[0]=h&255,d.Oc[1]=h>>8&255,d.kd=e,!b&&d.hd&&ih(a,wo)));d.qb[0]=h&255;d.qb[1]=h>>8&255;c&&(a.kd=0)}return d} +function Ld(a,b){for(var c=0;c=Tg){b=a.G.Y.Yd;c=Cd(a.G,a.N);null==a.Ba&&(a.ka=Cd(a.G,a.N),a.Ja=1024,a.Ba=Math.floor(a.G.Y.Yd/a.Ja),Vm(a));c>=a.U&&(a.A[Rm]|=Vo,a.A[Pd]&Qd&&(a.A[Rm]|=Wo,ih(a,Xo)),a.U=c+a.Ba);a.A[lm]==a.A[mm]&&a.A[nm]==a.A[om]&&a.A[pm]==a.A[qm]&&(a.A[Rm]|=Yo,a.A[Pd]&Zo&&(a.A[Rm]|=Wo,ih(a,Xo)));var d=c-a.ka,e=Math.floor(d/b);if(e&&!(a.A[Pd]&$o)){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[Rm]|=ap;a.A[Pd]&bp&&(a.A[Rm]|=Wo,ih(a,Xo))}a.ka=c-d%b}}l.Am=function(a,b){var c=this.xa;this.ea&cp&&(this.I&dp?c=this.B[0][1]:this.C&&(c=ep(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.xa=b};l.Bm=function(a,b){var c=this.I;t(this,a,null,b,"PPI_B",c);return c}; +l.io=function(a,b,c){t(this,a,b,c,"PPI_B");fp(this,b)};function fp(a,b){var c=!!(b&gp),d=!!(a.I&gp);a.I=b;a.C&&hp(a.C,!(b&dp),!!(b&Ro));c!=d&&Xm(a,c)}l.Cm=function(a,b){var c=0,c=(this.da|0)==Dl?this.I&Po?c|this.B[1][1]&ip:c|this.B[1][1]>>4&1:this.I&jp?c|this.B[0][1]>>4:c|this.B[0][1]&15;this.I&Oo&&yl(this,yo).hd&&(c=this.I&gp?c|kp:c|lp);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.Ea=b};l.Dm=function(a,b){var c=this.ea;t(this,a,null,b,"PPI_CTRL",c);return c}; +l.ko=function(a,b,c){t(this,a,b,c,"PPI_CTRL");this.ea=b};l.Ml=function(a,b){var c=this.C?ep(this.C):0;t(this,a,null,b,"8041_KBD",c);this.aa&=~mp;return c};l.rn=function(a,b,c){t(this,a,b,c,"8041_KBD")};l.Ll=function(a,b){var c=this.I;t(this,a,null,b,"8041_CTRL",c);return c};l.qn=function(a,b,c){t(this,a,b,c,"8041_CTRL");fp(this,b)};l.Nl=function(a,b){var c=this.aa;t(this,a,null,b,"8041_STATUS",c);return c}; +l.Ol=function(a,b){var c=this.ma;t(this,a,null,b,"8042_OUTBUFF",c,16384);this.D&=~(mp|np);this.C&&op(this.C);return c}; +l.tn=function(a,b,c){t(this,a,b,c,"8042_INBUF.DATA",null,16384);if(this.D&pp)switch(this.K){case qp:rp(this,b);break;case sp:tp(this,b);break;default:if(rp(this,this.J&~Ol),this.C){a=this.C;c=b;var d=-1;r(a)&&Nb(a,"sendCmd("+na(c)+")");switch(a.H||c){case up:d=vp;wp(a);break;case xp:a.H&&(c=0);yp(a,vp);a.H=c;break;case zp:a.H&&(c=0);yp(a,vp);a.H=c;break;default:Nb(a,"sendCmd(): unrecognized command")}Ap(this,d)}}this.K=b;this.D&=~pp}; +l.Pl=function(a,b){var c=this.I&~(Bp|Cp)|(Cd(this.G)&64?Cp: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);fp(this,b)};l.Ql=function(a,b){t(this,a,null,b,"8042_STATUS",this.D,16384);a=this.D&255;this.D&np&&(this.D|=mp,this.D&=~np);return a}; +l.sn=function(a,b,c){t(this,a,b,c,"8042_INBUFF.CMD",null,16384);this.K=b;this.D|=pp;a=0;this.K>=Dp&&(a=this.K^15,this.K=Dp);switch(this.K){case Ep:Ap(this,this.J);break;case Fp:rp(this,this.J|Ol);break;case Gp:rp(this,this.J&~Ol);this.C&&op(this.C);break;case Hp:this.C&&(a=this.C,a.A=[],r(a)&&Nb(a,"scan codes flushed"));rp(this,this.J|Ol);Ap(this,Ip);tp(this,Yl|Zl);break;case Jp:Ap(this,Kp);break;case Lp:Ap(this,this.L);break;case Mp:Ap(this,this.oa);break;case Np:Ap(this,this.J&Ol?0:Op);break;case Dp:a& +1&&jf(this.G)}};function rp(a,b){a.J=b;a.D=a.D&~Pp|b&Qp;a.C&&hp(a.C,!!(b&Rp),!(b&Ol))}function Ap(a,b,c){0<=b&&(a.ma=b,c?a.D|=mp:(a.D&=~mp,a.D|=np))}function tp(a,b){a.oa=b;jc(a.na,!!(b&Zl));b&Yl||jf(a.G)}function Sp(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&&Vm(this)};l.Mk=function(a,b,c){t(this,a,b,c,"NMI");this.ba=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.G.D>>8;Sf(this.G,a,function(a,d){return function(c){d=Cd(a.G)-d;var e,g=a.G.L&255,h=a.G.L>>8,k=a.G.L&255,m=a.G.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.G.I)+" DH(month)="+na(m)+" DL(day)="+na(k);g=a.ca;h=d;g.message("INT "+na(26)+": C="+(cg(g.G)?1:0)+(e||"")+" (cycles="+h+(c?",level="+(c+1):"")+")")}}(this,Cd(this.G)))}return!0}; +function Xm(a,b){if(a.ha)try{void 0!==b?a.Ha=b:b=!!(a.Ha&&a.G&&a.G.Z.Va);var c=Math.round(kl/xo(a,yo));if(20>c||2E4>>4,0,this.H,this.C,this.Jd),delete this.Jd);return!0};$p.prototype.$b=function(){return!0}; +function aq(a,b,c,d){if(d)a.Ca("Unable to load system ROM (error "+d+": "+b+")",0>d);else{nb(a.de,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.Ca("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].bf(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 hq(a){this.D=a;this.C=jq;this.G=kq;this.B=lq;this.A=null}l=hq.prototype;l.save=function(){return[this.C,this.B]};l.restore=function(a){this.tb(0,a[0]&255);this.tb(2,a[1]&255);return!0};l.ya=function(a){var b=255;2>a?b=a&1?this.G>>8:this.G&255:4>a&&(b=a&1?this.B>>8:this.B&255);return b}; +l.tb=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&mq)this.A&&(qc(a,nq,oq,this.A),this.A=null);else{this.A||(this.A=rc(a,nq,oq));var c=rc(a,pq,oq);qc(a,nq,oq,c,b&qq?1:zc)}this.C=this.C&-256|b}};l.tj=function(){return rq};l.dh=function(){return sq};var iq=-2134900736,pq=16646144,nq=917504,oq=131072,mq=1,qq=2,jq=65535,kq=2575,lq=2,rq=[null,0],sq=[function(a){return this.controller.ya(a)},null,null,function(a,b){this.controller.tb(a,b)},null,null]; +Xa(function(){for(var a=vb(document,"pcx86","ram"),b=0;b=n.fe&&d<=n.z&&(d-=n.fe-n.ee),d=Dq[e]==d),d){(a=a.la["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.pa=a;this.na=b;this.G=c;this.ca=d;this.X=Vb(a,"ChipSet");this.I=ud(a,"autoType")||this.I;Rf(c,33,this.Sm.bind(this))}; +l.Sm=function(){if(10==(this.G.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.hh(this.F))}return!0};function uq(a,b){var c=0;a.da=null;"string"==typeof b&&(a.da=b.toUpperCase(),c=Gq.indexOf(a.da),0>c&&(c=0));if(b=Gq[c])a.ha=parseInt(b.substr(2),10)}function wp(a){Nb(a,"keyboard reset",65792);a.A=[];yp(a,Hq)}function hp(a,b,c){a.N!==c&&(a.N=a.U=c)&&(a.J=!0);a.K!==b&&(a.K=b)&&!a.U&&Up(a,!0);a.K&&a.U&&(wp(a),a.U=!1)} +function yp(a,b){a.X&&(a.A.unshift(b),a.J=!0,Sp(a.X,b))}function op(a){var b=0;a.A.length&&a.J&&(b=a.A[0],a.X&&Sp(a.X,b));r(a)&&Nb(a,b?"scan code "+na(b)+" available":"no scan codes available")}function ep(a){var b=0;a.A.length&&(b=a.A[0]);r(a)&&Nb(a,"scan code "+na(b)+" delivered");return b}function Up(a,b){0>=1);if(b&Mq){if(!1===d)return!0;d=null}null==d?d=!((c?a.D:a.kc)&b):d||b&Nq&&(b=Nq);if(c){a.D&=~b;d&&(a.D|=b);c=b;var f,g;for(g in Oq)d="led-"+g,e=Oq[g],c&&c!=e||!(f=a.la[d])||(f.style.backgroundColor=a.D&e?"#00ff00":"#000000")}else a.kc&=~b,d&&(a.kc|=b);return!0}}return!1} +function xq(a,b,c){if((N[b]||N[b+=1E3])&&a.G&&a.G.Z.Va){Kq[b]&&a.B.length&&0e||(e==a.B.length&&(d={},d.ye=b,d.kc=a.kc,Fq(a,b,!0),e++),0b.Ad){if(!b.mf){Eq(a,b.ye);return}b.mf=!1;c=a.ka}else c=1==b.Ad++?500:100;b.li=setTimeout(function(a){return function(){Pq(a,b)}}(a),c)}} +function Rq(a,b,c){var d=b;if(b>=n.ee&&b<=n.ag)!(a.kc&(Sq|Tq|Uq))==c&&(d=b+(n.fe-n.ee));else if(b>=n.fe&&b<=n.z)!!(a.kc&(Sq|Tq|Uq))==c&&(d=b-(n.fe-n.ee));else if(!!(a.kc&(Sq|Tq))==c){if(a=ha[b])d=a}else if(a=ga[b])d=a;return d}l.Ag=function(a){a||(this.kc&=~Nq)}; +function vq(a,b,c){var d=!0,e=!1,f=!1,g=b.keyCode;a.C="";zb(a.de);var h=Rq(a,g,!0);a.ah&&h==n["`"]&&(g=h=27);if(N[g+1E3])if(h+=1E3,2==b.location&&(h+=2E3),Cq(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.ee&&b<=n.ag||b>=n.fe&&b<=n.z;e>>>=8;){var g=0,h=e&255;f==dr||f==er?d.push(f|(c?0:cr)):(h==O?a.D&(Sq|Tq)||a.D&Uq&&b||(g=h):h==fr?a.D&(Vq|gr)||(g=h):h==hr?a.D&(Wq|ir)||(g=h):d.push(f|(c?0:cr)),g&&(c?d.unshift(g):d.push(g|cr)))}for(c=0;c"]]=52|O<<8;N[n["/"]]=53; +N[n["?"]]=53|O<<8;N[3016]=54;N[1044]=55;N[1018]=hr;N[1032]=57;N[yq]=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[zq]=69;N[Aq]=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]=br;N[4027]=84;N[1122]=87;N[1123]=88;N[1091]=91;N[1093]=93;N[1224]=91;N[lr]=46|fr<<8;N[Xq]=70|fr<<8;N[4046]=br|fr<<8|hr<<16;N[4045]=82|fr<<8|hr<<16; +N[4013]=28|fr<<8|hr<<16;var up=255,xp=243,zp=237,Hq=170,vp=250,kr=255,jr=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.hc=c[4]&255;this.Eg=c[4]>>8&255;this.$a=c[5];this.mh=or;this.dg=qr;this.$d=this.$a[rr]|this.$a[sr]<<8;this.cg=63;if(b>=dq){this.cg=255; +this.mh=pr;this.dg=tr;(b=c[6])||(b=[!1,0,Array(ur),0,f==Ul?0:vr,0,0,Array(wr),0,0,0,Array(xr),0,[this.fb,this.Rb,this.vd],Array(this.vd>>2),yr|zr|Ar|Br|Cr,0,-1,0,-1,0,-1,0,0,0,0,Dr,Er,0,0,Fr,Array(Gr)]);this.Le=b[0];this.Cd=b[1];this.Dc=b[2];this.Sg=Hr;this.Hg=b[3];this.af=b[4];this.Lf=b[5];this.Fd=b[6];this.be=b[7];this.Ug=Ir;this.Vk=b[8];this.Wk=b[9];this.Ed=b[10];this.Dd=b[11];this.Tg=Jr;this.wb=b[12];d=b[13];"number"==typeof d&&(d=[this.fb,this.Rb,d]);this.fb=d[0];this.Rb=d[1];d=this.vd>>2;if((this.fd= +b[14])&&this.fd.length=dq){var c=[];c[0]=a.Le;c[1]=a.Cd;c[2]=a.Dc;c[3]=a.Hg;c[4]=a.af;c[5]=a.Lf;c[6]=a.Fd;c[7]=a.be;c[8]=a.Vk;c[9]=a.Wk;c[10]=a.Ed;c[11]=a.Dd;c[12]=a.wb;c[13]=[a.fb,a.Rb,a.vd];var d;if(d=a.fd){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=dq){var d=0,e=0,f=0;switch(b){case Sr:d=Tr;a.Ka==fq&&(e=Ur);break;case Vr:a.Ka==dq&&(d=Wr);break;case Xr:d=Yr;a.Ka==fq&&(e=Zr);break;case $r:d=as;a.Ka==fq&&(e=bs);break;case cs:d=ds;a.Ka==fq&&(f=es);break;case fs:d=gs,a.Ka==fq&&(f=hs)}d&&(c|=a.$a[is]&d?256:0,c|=a.$a[is]&e?512:0,c|=a.$a[js]&f?512:0)}return c} +var sr=12,rr=13,or=18,Sr=6,is=7,Tr=1,as=2,Yr=4,ds=8,gs=16,Wr=32,Ur=32,bs=64,Zr=128,js=9,es=32,hs=64,Vr=10,Xr=16,$r=18,cs=21,fs=24,pr=25,ks={},ls=(ks[0]=255,ks[1]=255,ks[2]=255,ks[3]=15,ks[4]=127,ks[5]=31,ks[6]=127,ks[7]=127,ks[8]=3,ks[9]=31,ks[10]=127,ks[11]=31,ks[sr]=63,ks[rr]=255,ks[14]=63,ks[15]=255,ks[16]=63,ks[17]=255,ks),qr="HTOTAL HDISP HSPOS HSWIDTH VTOTAL VTOTADJ VDISP VSPOS ILMODE MAXSCAN CURSTART CUREND STARTHIGH STARTLOW CURHIGH CURLOW PENHIGH PENLOW".split(" "),tr="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(" "), +ur=20,Hr="PAL00 PAL01 PAL02 PAL03 PAL04 PAL05 PAL06 PAL07 PAL08 PAL09 PAL0A PAL0B PAL0C PAL0D PAL0E PAL0F MODE OVERSCAN PLANES HPAN".split(" "),vr=1,Dr=1,wr=5,Ir=["RESET","CLOCKING","MAPMASK","CHARMAP","MEMMODE"],Er=255,Fr=0,Gr=256,xr=9,Jr="SRESET ESRESET COLORCMP DATAROT READMAP MODE MISC COLORDC BITMASK".split(" "),yr=1024,zr=4096,Pr=65280,Ar=0,Br=16,Rr=255,Cr=-2147483648,Kr=[];Kr[2]=yr;Kr[3]=yr|zr;Kr[16]=1280;Kr[512]=Ar;Kr[1024]=Ar|32;Kr[1536]=Ar|96;Kr[2560]=Ar|160;Kr[3584]=Ar|224;Kr[768]=Ar|Br; +Kr[4096]=1;Kr[8192]=2;Kr[24576]=98;Kr[40960]=162;Kr[57344]=226;var Qr=[];Qr[yr]=function(a){a+=this.G;return(this.controller.wb=this.V[a])>>this.controller.bi&255};Qr[yr|16384]=function(a){return(this.controller.wb=this.V[(a&-4)+this.G])>>((a&3)<<3)&255};Qr[yr|zr]=function(a){a+=this.G;var b=this.controller.wb=this.V[a&-2];return(a&1?b>>8:b)&255}; +Qr[1280]=function(a){a+=this.G;a=this.controller.wb=this.V[a];for(var b=this.controller.oh,c=this.controller.nh&b,d=0,e=128;e;)(a&b)==c&&(d|=e),c>>>=1,b>>>=1,e>>=1;return d};Qr[Ar]=function(a,b){a+=this.G;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b=b&this.controller.Db|this.controller.wb&~this.controller.Db;b=b&this.controller.kb|this.V[a]&~this.controller.kb;this.V[a]!=b&&(this.V[a]=b,this.Na=!0)}; +Qr[Ar|32]=function(a,b){a+=this.G;b=b>>this.controller.Pc|b<<8-this.controller.Pc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b=b&this.controller.Db|this.controller.wb&~this.controller.Db;b=b&this.controller.kb|this.V[a]&~this.controller.kb;this.V[a]!=b&&(this.V[a]=b,this.Na=!0)}; +Qr[Ar|96]=function(a,b){a+=this.G;b=b>>this.controller.Pc|b<<8-this.controller.Pc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b&=this.controller.wb;b=b&this.controller.Db|this.controller.wb&~this.controller.Db;b=b&this.controller.kb|this.V[a]&~this.controller.kb;this.V[a]!=b&&(this.V[a]=b,this.Na=!0)}; +Qr[Ar|160]=function(a,b){a+=this.G;b=b>>this.controller.Pc|b<<8-this.controller.Pc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b|=this.controller.wb;b=b&this.controller.Db|this.controller.wb&~this.controller.Db;b=b&this.controller.kb|this.V[a]&~this.controller.kb;this.V[a]!=b&&(this.V[a]=b,this.Na=!0)}; +Qr[Ar|224]=function(a,b){a+=this.G;b=b>>this.controller.Pc|b<<8-this.controller.Pc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b^=this.controller.wb;b=b&this.controller.Db|this.controller.wb&~this.controller.Db;b=b&this.controller.kb|this.V[a]&~this.controller.kb;this.V[a]!=b&&(this.V[a]=b,this.Na=!0)};Qr[Ar|4]=function(a,b){var c=(a&-4)+this.G;a=(a&3)<<3;b=b<>this.controller.Pc|b<<8-this.controller.Pc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Db;b=this.controller.Df&b|this.controller.wb&~b;b=b&this.controller.kb|this.V[a]&~this.controller.kb;this.V[a]!=b&&(this.V[a]=b,this.Na=!0)}; +function Q(a,b,c,d,e){ib.call(this,"Video",a,262144);var f=this,g;this.Uc=Ma("Gecko/");this.da=a.model;var h=ns[this.da]||ns.mda;this.Ka=h[0];this.vd=a.memory||0;this.nd=a.switches;this.ea=a.mode;if(null==this.ea||null==os[this.ea])this.ea=h[1];this.Qb=a.charCols;this.wc=a.charRows;if(void 0===this.Qb||void 0===this.wc)this.Qb=os[this.ea][0],this.wc=os[this.ea][1];this.aa=a.screenWidth;this.ka=a.screenHeight;this.ad=a.scale;this.Qd=12<=Math.round(this.aa/this.Qb);this.N=b;this.L=c;this.F=(this.og= +d)||b||null;this.gc=a.screenColor||"black";this.md=(1-(Qa("flicker")||a.flicker||0)).toString();this.Gb=!1;b&&(b.style.backgroundColor=this.gc);e&&(e.style.backgroundColor=this.gc);b=a.smoothing;(c=Qa("smoothing"))&&(b="true"==c);null!=b&&(g=Na(this.L,"imageSmoothingEnabled"))&&(this.L[g]=b);this.od=a.touchScreen;this.Ac=ps;this.H=null;this.Hd=a.autoLock;this.fb=this.Rb=0;this.qa=[];this.ha=Array(this.Ka==fq?256:16);this.Ja=!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(){qs(f,!!k)},!1)}(e=Na(document,"on","fullscreenerror"))&&document.addEventListener(e,function(){qs(f,null)},!1)}if(this.F&&(this.F.onfocus=function(){return f.Ag(!0)},this.F.onblur=function(){return f.Ag(!1)},this.F.qe=(g=Na(this.F,"requestPointerLock"))&&this.F[g],this.F.B=(g=Na(this.F,"exitPointerLock"))&&this.F[g],this.F.qe&&(e=Na(document, +"on","pointerlockchange")))){var m=Na(document,"pointerLockElement");document.addEventListener(e,function(){f.Ff(!(!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.G=c;this.ca=d;c=(c=ns[this.da])&&c[0];c!==rs&&(Ic(b,this,ss),Mc(b,this,ts));c!==us&&(Ic(b,this,vs),Mc(b,this,ws));this.Ka>=dq&&(Ic(b,this,xs),Mc(b,this,ys));this.Ka==fq&&(Ic(b,this,zs),Mc(b,this,As));d&&xl(d,262144,function(a){if(e.B)if(a[0]){var b=e.B;if(b.fd){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(L):la(L>>(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.ma)),b=e.B,Nr(b,"CRTC",b.hc,b.$a,b.dg),b.Ka>=dq&&(Nr(b," GRC",b.Ed,b.Dd,b.Tg),Nr(b," SEQ",b.Fd,b.be,b.Ug),Nr(b," ATC",b.Cd, +b.Dc,b.Sg),Nr(b," ATCINDX",b.Cd),b.ca.O(" ATCDATA: "+b.Le),Nr(b," FEAT",b.Lf),Nr(b," MISC",b.af),Nr(b," STATUS0",b.Hg)),Nr(b," STATUS1",b.ga),b.Ka!=us&&b.Ka!=rs||Nr(b," MODEREG",b.Vc),b.Ka==rs&&Nr(b," COLOR",b.Ze),b.Ka>=dq&&(b.ca.O(" LATCHES: "+q(b.wb)),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.la)0c&&(a=Math.round(c/b*100)+"%")}d.Uc?(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.gc;d.P.A()}d.F&&d.F.focus()}}:c.parentNode.removeChild(c), +!0;case "lockPointer":return this.Sd=c.textContent,this.F&&this.F.qe?c.onclick=function(){d.qe(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){Fs(d,!0)},!0}return!1};function qs(a,b){!b&&a.P&&(a.Uc?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.ah=b)} +l.qe=function(a){var b=!1;this.F&&(a?this.F.qe&&(this.F.qe(),this.H&&this.H.Ff(!0),b=!0):this.F.B&&(this.F.B(),this.H&&this.H.Ff(!1),b=!0),this.F&&this.F.focus());return b};l.Ff=function(a){this.H&&(this.H.Ff(a),this.C&&(this.C.ah=a));var b=this.la.lockPointer;b&&(b.textContent=a?"Press Esc to Unlock Pointer":this.Sd)}; +function Bs(a,b){var c=a.F;c&&!a.Ac&&(c.addEventListener("touchstart",function(b){Hs(a,b,!0)},!1),c.addEventListener("touchmove",function(b){Hs(a,b)},!0),c.addEventListener("touchend",function(b){Hs(a,b,!1)},!1),a.Ac=b,a.lb=a.ub=a.pd=-1,a.vc=!1,a.Hb=null,a.tc=!1,a.Rd=function(){a.tc=!0;a.H.Xd(Is,!0)})}l.Ag=function(a){this.C&&this.C.Ag(a)}; +function Hs(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.Ac==Ds)c&&xq(a.C,Js[e/(a.ka/3)|0][d/(a.aa/3)|0],!0);else if(a.H){g=a.vc;f=b.timeStamp-a.pd;!0===c?(a.vc=500f){a.H.Xd(Is,!0);a.H.Xd(Is,!1);return}}if(c||0>a.lb||0>a.ub)a.lb=d,a.ub=e;c=Math.round(d-a.lb);b=Math.round(e-a.ub);a.lb=d;a.ub=e;a.H.rf(c,b,a.lb,a.ub)}}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,b=0;this.X&&(b=+Tl(this.X,hl,void 0));this.da||(this.Ka=b==Ul?us:rs);this.ea=Ks;switch(this.Ka){case fq:b=7;break;case dq:var c=Ls[this.zb];c&&(b=c[0]);b||(b=4);break;case us:b=Ul;this.ea=Ms;break;default:b=2}this.fa!==b&&(this.fa=b,a=!0);this.B=null;this.U=this.Tb=new mr(this,us);this.K=this.Fb=new mr(this,rs);this.Ka>1&255,d=d>>8&~Qs,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?Rs|Ss:Ts|Us)|Vs&d>>8);Fc(this.na,b,c|d<<8)}Fs(this,!0)}};function Ns(a){a.A.af&vr?(a.U=a.Tb,a.K=a.A):(a.U=a.A,a.K=a.Fb)}l.save=function(){var a=new Wf(this);a.set(0,Mr(this.Tb));a.set(1,Mr(this.Fb));a.set(2,[this.fa,this.ea,this.ma]);a.set(3,Mr(this.A));return a.data()}; +l.restore=function(a){var b=a[2];this.fa=b[0];this.ea=b[1];this.ma=b[2];this.B=null;this.U=this.Tb=new mr(this,us,a[0]);this.K=this.Fb=new mr(this,rs,a[1]);this.A=new mr(this,this.Ka,a[3],this.vd);this.A.sc&&Ns(this);Os(this);if(!Ws(this))return!1;Xs(this);return!0}; +function Es(a,b,c,d){if(d)a.Ca("Unable to load font ROM (error "+d+": "+b+")",0>d);else{nb(a.de,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)eq(a,f,[6144,0]);else if(2048==f.length)eq(a,f,[0]);else{a.Ca("Unrecognized font data length ("+f.length+")");return}}catch(g){a.Ca("Font ROM data error: "+g.message);return}(a.L||a.ca)&&Kb(a)}} +function Ys(a,b){if(1==b)return a.ha[0]=Zs[Ts],a.ha[1]=Zs[Rs],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]=Zs[c&15];c=c&32?$s:at;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:bt;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.Ja=!0}return a.ha}function eq(a,b,c,d){a.yb=b;a.Wa=c;a.Fa=d} +function Os(a,b){var c=!1;if(window&&a.yb&&(!b||a.I)){var d=0,e=a.Fa?a.Fa:8,f=Ys(a);null!=a.Wa[0]&&ct(a,dt,a.Wa[0],d,e,8,a.yb,f)&&(c=!0);d=a.Fa?0:2048;e=a.Fa?a.Fa:9;null!=a.Wa[1]&&(ct(a,et,a.Wa[1],d,e,14,a.yb,ft,gt)&&(c=!0),a.Fa&&ct(a,a.Ka,a.Wa[1],0,a.Fa,14,a.yb,f)&&(c=!0))}b||(a.ba=-1,a.Ba=-1,a.va=0);return c}function ct(a,b,c,d,e,f,g,h,k){var m=!1;null!=c&&(ht(a,b,c,d,e,f,g,h,k)&&(m=!0),a.Qd&&ht(a,b<<1,c,d,e,f,g,h,k)&&(m=!0));return m} +function ht(a,b,c,d,e,f,g,h,k){var m=!1,p=b&1?0:1,v=a.qa[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;it(lb,Ag,ef,Bg);I&&it(lb,Ag+1,ef,Bg)}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.Oi[G]=D;m.Rg[G]=qa;m=!0}}a.qa[b]=v;return m}function jt(a){0a.Ba&&(a.Ba=0):a.Ba=-1} +function Xs(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]&ls[11],e=a.B.$a[9]&ls[9],f=!1;a.B===a.A&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)kt(a);else{c=a.B.$a[15];c|=(a.B.$a[14]&a.B.cg)<<8;a.ba!=c&&(kt(a),a.ba=c);d=d-b+1;if(a.qd!=b||a.Sc!=d)a.qd=b,a.Sc=d;a.xa=e+1;jt(a)}}} +function kt(a){if(0<=a.ba){if(void 0!==a.M){var b=lt<<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.qa[a.I]&&(a.Ea&&mt(a,b,d,c,a.Ea),mt(a,b,d,c));a.M[a.ba]=c}}a.ba=-1}} +function nt(a){var b,c=a.B;a.Tc=!1;var d=c.Dd[5];if(null!=d){b=yr;var e=Ar,f=c.Dd[3]&31;switch(d&3){case 0:if(f){e=Ar|32;switch(f&24){case 8:e=Ar|96;break;case 16:e=Ar|160;break;case 24:e=Ar|224}c.Pc=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.Ka==fq&&(e=3,c.Pc=f&7)}d&8&&(b=1280);c=c.be[4];null!=c&&(c&4||(b|=zr,e|=Br),d&64&&(c&8&&(b|=16384,e|=4),a.Tc=!0));b|=e}return b} +function ot(a,b){var c=a.B;return c&&null!=b&&b!=c.rg?(c.Jg(b),a.na.Jg(c.fb,c.Rb,c.dh(),!0),!0):!1} +function Ws(a,b){var c,d=a.ma,e=a.B;if(e)if(e.Ka==us)d=Ms;else if(e.Ka>=dq){var d=null,f=e.vd>>2,g=32768=e.$a[$r]?tt:ut:vt:g&128|| +350>f?d=m?wt:xt:480<=f&&(d=a.fa==Ul?yt:zt):d=m?7-d:At:d-=m?2:0);c=nt(a)}}else e.Vc&8?(e.Vc&2?(d=e.Vc&16?At:Bt,e.Vc&4||--d):(d=e.Vc&1?Ks:Ct,e.Vc&4&&--d),a.Gb&&(a.N.style.opacity="1",a.Gb=!1)):!a.Gb&&1>+a.md&&(a.Gb=!0,a.N.style.opacity=a.md,e=a.G,Jd(e),e.Z.Rf=!0,zd(e));else a.ma=null,null==d&&(d=a.ea);if(!Ps(a,d,b))return!1;ot(a,c);return!0} +function Ps(a,b,c){if(null!=b&&(b!=a.ma||c)){a.Gd=0;a.ma=b;a.Ja=!1;b=a.B||(b==Ms?a.U:a.K);if(b!=a.B||b.fb!=a.fb||b.Rb!=a.Rb){kt(a);if(a.fb){if(!wc(a.na,a.fb,a.Rb))return!1;a.B&&(a.B.sc=!1)}a.B=b;b.sc=!0;a.fb=b.fb;a.Rb=b.Rb;if(!kc(a.na,b.fb,b.Rb,3,b===a.A?b:null))return!1}a:{a.I=0;a.D=a.Qb;a.J=a.wc;a.Pa=a.D;a.Kb=os[Ms][2];b=0;if(c=os[a.ma])a.D=c[0],a.J=c[1],a.Kb=c[2],b=c[3],a.I=c[4],4!=a.fa&&7!=a.fa||a.B!==a.A||a.I!=dt||(7==(a.A.$a[js]&31)?a.J=350>Or(a.A,$r)?43:50:a.I=a.Ka);a.dd=a.D*a.J|0;a.cd=a.dd/ +a.Kb|0;a.Xa=a.cd;a.Vb=0;void 0!==b&&(a.Xa=(a.Xa<<1)+b|0,a.Vb=a.Xa+b>>1);if(a.qa.length){a.ra=a.aa/a.D|0;a.oa=a.ka/a.J|0;if(a.I){b=a.qa[a.I];if(!b)break a;c=a.qa[a.I<<1];a.ad&&80==a.D?c&&a.ra>=3*c.Gc>>2&&(a.I<<=1,b=c):(c&&a.ra>=c.Gc&&(a.I<<=1,b=c),a.ad||(a.ra=b.Gc,a.oa=b.Hc));a.bb=a.cb=0;b&&(a.bb=a.D*b.Gc,a.cb=a.J*b.Hc)}else a.ra=a.oa=1,a.bb=a.D,a.cb=a.J;a.La=a.L.createImageData(a.bb,a.cb);a.Da=document.createElement("canvas");a.Da.width=a.bb;a.Da.height=a.cb;a.Ea=a.Da.getContext("2d");a.Ic=a.Kc=0; +a.lc=a.aa;a.mc=a.ka;b=a.aa-a.D*a.ra;c=a.ka-a.J*a.oa;0>1,a.lc-=b);0>1,a.mc-=c);if(b||c)a.L.fillStyle=a.N.style.backgroundColor,a.L.fillRect(0,0,a.aa,a.ka)}}bu(a,!0);Fs(a)}return!0}function it(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 du(a){a.va=-1;a.Ha=!1;var b=a.cd;if(void 0===a.M||a.M.length!=b)a.M=Array(b)}function bu(a,b){b||(a.Ja=!1);du(a)} +function mt(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.qa[a.I];h.hf&&(d=h.hf[d]);var k=g>>4&15;h.hf&&(k=h.hf[k]);e?(b*=h.Gc,c*=h.Hc,e.fillStyle=h.Fe[k],e.fillRect(b,c,h.Gc,h.Hc)):(b=b*a.ra+a.Ic,c=c*a.oa+a.Kc,a.L.fillStyle=h.Fe[k],a.L.fillRect(b,c,a.ra,a.oa));g&eu&&(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.ra,a.oa));g<&&(f=a.qd,g=a.Sc,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.oa&&(f=f*a.oa/a.xa|0,g=g*a.oa/a.xa|0),a.L.fillStyle=h.Fe[d],a.L.fillRect(b,c+f,a.ra,g)))} +function Fs(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.Cd&32&&(c=!0));if(c||b){if(b)du(a);else if(void 0===a.M)return;c=!1;!(b||++a.Gd&15)&&0<=a.Ba&&(a.Ba++,c=!0);var e=a.dd,f=a.fb,g=f,h=g+a.Rb;a.ma>=tt&&(f=g=655360,h=g+65536);if(fu(a,d)&8||d.Ef&&d.Ef=dq&&d.$a[19]&&d.$a[19]<<1!=d.$a[1]+1&&(a.Pa=d.$a[19]<<(a.I?1:d.$a[20]&64?3:4),k=(a.Pa*(a.J-1)+a.D)/ +a.Kb|0,a.ma<=Ms&&(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=gu(a,f,g,k,0,h,e,b,c);p&&(g+=gu(a,f,d,p,0+g,h,e,b,c));g&&(a.Ha=!0)}}} +function gu(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.Ha){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.qa[a.I]){b=c;c=e;k=f=e=0;h=eu<<8;d=1048575;u=a.B.Vc&32;a.Ka>=dq&&(u=a.B.Dc[16]&8);v=a.ba-a.B.$d;u&&(k=Qs<<8,d&=~k,a.Ba&2||(d&=~h));for(a.va=0;b>1;g=0;c=a.Kb;e=b;f=16==c?65536:196608;k=16==c?1:2;h=Ys(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,L=16;d>=k))>>(L-=k);it(a.La,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.Vb)}}ua.D?a.Pa-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=Ys(a);f=a.B.fd;h=k=0;d=a.D;v=0;u=a.J;D=0;G=a.B.Dc[19]&15;I=a.Pa>a.D?a.Pa-a.D-G>>3:0;for(a.va=0;cP&&(L=P)):(J<<=G,L-=G,a.Ha=!1):(a.Ha&&J===a.M[m]?(k+=L,L=0):a.M[m]=J,m++);if(L){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.th=a,a=-a|0);a%b.qh>b.hn&&(c|=1);a%b.rh>b.kn&&(c|=9);b.ci=a/b.rh|0;return c}l.wm=function(a,b){return iu(this,this.U,a,b)};l.co=function(a,b,c){var d=this.U;d.Eg=d.hc;d.hc=b&31;t(this,a,b,c,"CRTC.INDX")};l.vm=function(a,b){return ju(this,this.U,a,b)};l.bo=function(a,b,c){ku(this,this.U,a,b,c)};l.xm=function(a,b){return lu(this,this.U,b)};l.eo=function(a,b,c){a=this.U;t(this,a.port+4,b,c,"MODE");a.Vc=b;Ws(this,!1)}; +l.ym=function(a,b){return mu(this,this.U,b)};l.Lk=function(a,b,c){this.A.Lf=this.A.Lf&-4|b&3;t(this,a,b,c,"FEAT")};l.Vl=function(a,b){a=this.A.Cd;b&&!r(this)||t(this,960,null,b,"ATC.INDX",a);return a};l.ol=function(a,b){a=this.A.Dc[this.A.Cd&31];b&&!r(this)||t(this,960,null,b,"ATC."+this.A.Sg[this.A.Cd&31],a);return a}; +l.Kk=function(a,b,c){var d=this.A,e=d.Cd&32;if(d.Le){d.Le=!1;var f=d.Cd&31;if(16<=f||!e)if(nu||d.Dc[f]!==b)c&&!r(this)||t(this,a,b,c,"ATC."+d.Sg[f]),d.Dc[f]=b,bu(this,!1)}else d.Cd=b,t(this,a,b,c,"ATC.INDX"),d.Le=!0,b&32&&!e&&Os(this,!0)&&Fs(this,!0),a=d.$a[rr],a|=(d.$a[sr]&d.cg)<<8,d.$d!=a&&(d.$d=a,bu(this)),d.Ef=0}; +l.Im=function(a,b){a=0;if(this.Ka==dq)a=3-((this.A.af&12)>>2),a=(this.zb&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 ou(a){ib.call(this,"ParallelPort",a,4194304);this.H=a.adapter;switch(this.H){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.H);return}this.A=this.B=null;a=a.binding;"console"==a?this.B="":sb(this,a,pu)}ba(ou,ib);l=ou.prototype;l.Eb=function(a,b,c){switch(b){case pu:return this.la[b]=this.A=c,!0}return!1}; +l.uc=function(a,b,c,d){this.na=b;this.G=c;this.ca=d;this.X=Vb(a,"ChipSet");Ic(b,this,qu,this.D);Mc(b,this,ru,this.D);Kb(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(){su(this)};l.save=function(){var a=new Wf(this),b=0,c=[];c[b++]=this.F;c[b++]=this.Pb;c[b]=this.jf;a.set(0,c);return a.data()};l.restore=function(a){return su(this,a[0])}; +function su(a,b){var c=0;b||(b=[0,0,0]);a.F=b[c++];a.Pb=b[c++];a.jf=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.jf;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|=tu;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&=~tu);uu(this)};l.Kn=function(a,b,c){t(this,a,b,c,"CTRL");this.jf=b;uu(this)}; +function uu(a){a.X&&a.C&&(a.jf&vu&&!(a.Pb&tu)?ih(a.X,a.C):Ug(a.X,a.C))}var pu="buffer",tu=64,vu=16,qu={0:ou.prototype.jm,1:ou.prototype.Hm,2:ou.prototype.fm},ru={0:ou.prototype.Pn,2:ou.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.Be)return;c=wa(c[1]);if(this.F=yb(c)){var e=this.F.exports;if(e){var f=e.connect;f&&f.call(this.F,this.P);if(this.ba=e.receiveData){this.P=a;this.U=e.receiveStatus;this.status("Connected "+this.de+"."+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(){Cu(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.D;c[b++]=this.C;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 Cu(this,a[0])}; +function Cu(a,b){var c=0;b||(b=[0,0,Du,0,Eu,0,0,Fu|Gu,a.qa,[]]);a.fa=b[c++];a.ka=b[c++];a.L=b[c++];a.M=b[c++];a.D=b[c++];a.C=b[c++];a.aa=b[c++];a.A=b[c++];a.B=b[c++];a.J=b[c];return!0}l.Kf=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.C&Mu?"DLM":"IER",c);return c};l.rm=function(a,b){var c=this.D;this.D|=Eu;t(this,a,null,b,"IIR",c);return c};l.sm=function(a,b){var c=this.C;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&=~(Iu|Ju);t(this,a,null,b,"MSR",c);return c}; +l.no=function(a,b,c){t(this,a,b,c,this.C&Mu?"DLL":"THR");if(this.C&Mu)this.L=this.L&-256|b;else{this.ka=b;this.A&=~(Fu|Gu);a=!1;Nb(this,"transmitByte("+na(b)+")");this.ba&&this.ba.call(this.F,b)&&(a=!0);if(this.H){if(13==b)this.K=0;else if(8==b)this.H.value=this.H.value.slice(0,-1),0":String.fromCharCode(b);a=d.length;32>b&&1==a&&(a=0);9==b&&(a=this.oa||8,a-=this.K%a,this.oa&&(d=va("",a)));!this.K&&a&&(10!=this.ra&&(d="\n"+d),this.ma&& +(d=String.fromCharCode(this.ma)+d));this.H.value+=d;this.H.scrollTop=this.H.scrollHeight;this.K+=a}this.ra=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|Fu|Gu,Ku(this))}};l.Zn=function(a,b,c){t(this,a,b,c,this.C&Mu?"DLM":"IER");this.C&Mu?this.L=this.L&255|b<<8:this.M=b};l.$n=function(a,b,c){t(this,a,b,c,"LCR");this.C=b}; +l.ao=function(a,b,c){var d=b^this.aa;t(this,a,b,c,"MCR");this.aa=b;d&(Nu|Ou)&&this.U&&(a=0,this.P?(a|=b&Ou?32:0,a|=b&Nu?320:0):(a|=b&Ou?16:0,a|=b&Nu?1048576:0),this.U.call(this.F,a))};function Ku(a){var b=-1;a.A&Lu&&a.M&Pu?b=Qu:a.A&Fu&&a.M&Ru?b=Su:a.B&(Iu|Ju)&&a.M&Tu&&(b=Uu);0<=b?(a.D&=~(Eu|Vu),a.D|=b,a.X&&a.N&&ih(a.X,a.N,100)):(a.D|=Eu,a.X&&a.N&&Ug(a.X,a.N))} +var zu="buffer",Du=384,Pu=1,Ru=2,Tu=8,Eu=1,Qu=4,Su=2,Uu=0,Vu=6,Mu=128,Nu=1,Ou=2,Lu=1,Fu=32,Gu=64,Iu=1,Ju=2,xu=16,yu=32,Au={0:wu.prototype.Em,1:wu.prototype.qm,2:wu.prototype.rm,3:wu.prototype.sm,4:wu.prototype.um,5:wu.prototype.tm,6:wu.prototype.zm},Bu={0:wu.prototype.no,1:wu.prototype.Zn,3:wu.prototype.$n,4:wu.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.rf(c,d,a.A,a.B)}} +l.Xd=function(a,b){if(this.sc&&this.G&&this.G.Z.Va){var c="mouse button"+a+" "+(b?"dn":"up");switch(a){case Is:if(this.L!=b){this.L=b;bv(this,c);return}break;case cv:if(this.M!=b){this.M=b;bv(this,c);return}}Nb(this,c+": ignored")}};l.rf=function(a,b,c,d){this.sc&&this.G&&this.G.Z.Va&&(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,bv(this,null,c,d))}; +function bv(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.H.Kf([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.H.Kf([dv,dv]),Nb(this,"serial mouse ID sent"));Xu(this);this.sc=b}}else this.sc&&(Nb(this,"serial mouse inactive"),Yu(this),this.sc=b);this.C=a};var dv=77,Is=0,cv=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.rb);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=lv(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){mv(g,a,b,c)},function(){g.O(k,Fb.Ee)})}; +function mv(a,b,c,d){var e=null;a.Re=!1;var f=!(!(0>d&&a.pa)||a.pa.Z.bc);if(a.mg)d?a.Ca('Unable to connect to disk "'+a.H+'" (error '+d+": "+c+")",f):(a.D=!0,nv(a),e=a);else if(d)a.Ca('Unable to load disk "'+a.ld+'" (error '+d+": "+b+")",f);else{nb(a.controller.de,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.rb=h.length;a.gb=h[0].length;a.Ua=h[0][0].length;var k=h[0][0][0];a.Ma=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;ov(k,u,0)}else k.data=v=[],u&&(k.pattern=p|p<<8|p<<16|p<<24);delete k.bytes}kv(k,d,f);for(D=0;Db;b++){if(128==qv(a,e,c+0,1)){d.Hf=qv(a,e,c+8,4);(e=pv(a,d.Hf))&&(f=!0);break}c+=16}if(!f)return}d.qf||(d.qf=qv(a,e,19,2)||qv(a,e,32,4),d.pf=qv(a,e,14,2),d.kh=d.pf+qv(a,e,22,2)*qv(a,e,16,1),d.sh=qv(a,e,17,2),d.uf=qv(a,e,13,1));d.ih=d.kh+((32*d.sh+(d.Ma-1))/d.Ma|0);d.gn=(d.qf-d.ih)/d.uf|0;d.ug=4084>=d.gn?12:16;d.Il=12==d.ug?4086:65526;b=[];for(e=d.kh;e>=8;f+=2;if(k)for(;m--;)Ev(d,f,1),254>=k?(p=k,v=Ev(d,f+1),f+=3):(p=Ev(d,f+3,1),v=Ev(d,f+4),f+=6),d.rd[p]&&(d.rd[p].ge[h]=[v]),d.A[h]=[p,v],h++;else h+=m}(g=tv(e,Hv,c))&&Iv(e,g+c);g=tv(e,Jv,c);h=tv(e,Kv,c);g&&h&&Iv(e,g,g+h)}}}} +function sv(a,b,c,d,e){var f,g=a.C.length,h=b.Ma/32|0;b.mq=d+"\\";for(var k=0;kG)break;for(var I=u.ih+(G-2)*u.uf,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 pv(a,b){var c=a.gb*a.Ua,d=b/c|0;return dg)break;e|=g<=f)break;e+=String.fromCharCode(f)}return e}function kv(a,b,c,d,e,f){a||(a={sector:d,length:e,data:[],pattern:f});a.Jl=b;a.Kl=c;a.jd=a.Nc=0;a.Na=!1;return a} +function lv(a,b){b="action=open&volume="+b+("&mode="+a.mode);b+="&chs="+a.rb+":"+a.gb+":"+a.Ua+":"+a.Ma;b+="&machine="+iv(a.controller);b+="&user="+jv(a.controller);return Ga()+"/api/v1/disk?"+b} +function Nv(a,b,c,d,e,f,g){if(a.D){var h;h="action=read&volume="+a.H;h+="&chs="+a.rb+":"+a.gb+":"+a.Ua+":"+a.Ma;h=h+("&addr="+b+":"+c+":"+d+":"+e)+("&machine="+iv(a.controller));h+="&user="+jv(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;ov(J,m,k);k+=J.length;G++}k=h[4]}(h=h[5])&&h(p,k)})}else g&&g(-1,!1)} +function Ov(a,b,c,d,e,f,g){if(a.D){var h={};a.M=!0;h.action="write";h.volume=a.H;h.chs=a.rb+":"+a.gb+":"+a.Ua+":"+a.Ma;h.addr=b+":"+c+":"+d+":"+e;h.machine=iv(a.controller);h.user=jv(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.Nc?f=a.jd+a.Nc&&(a.Nc+=f-(a.jd+a.Nc)+1):(a.jd=f,a.Nc=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.Ca("Unable to restore disk '"+this.ld+": "+c):nv(this);return b}; +l.toJSON=function(){var a;a=0;for(var b;b=pv(this,a++);)Tv(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 Tv(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 fv=0;function Mv(a,b,c,d,e,f){this.ua=a;this.dc=c;this.Vg=d;this.Zi=e;this.he=f}function Ev(a,b,c){var d;c=c||2;var e=b&511,f=pv(a.ua,a.he[b>>9]);if(f){if(e+c<=f.length)return qv(a.ua,f,e,c);for(e=d=0;c--;)d|=Ev(a,b++,1)<=e.di&&a<=e.Hk){d=a-=e.di;var f,g;for(g in e.ge){var h=e.ge[g],k=a-h[0];if(!k){c=this.Nf+"!"+h[1];break}b&&0g.ua.restore(D)&&(h=!1);h&&g.ua&&void 0!==g.Ta&&(g.hb=g.ua.seek(g.Ib,g.ab,g.jb));h||(e=!1)}a.H=b[c++]||0;a.cc=b[c]||kw;return e} +function ew(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;giw(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.rb||f[1]>a.gb)&&(this.Ca('Diskette "'+c+'" too large for drive '+String.fromCharCode(65+a.Ya)),b=null);b?(a.ua=b,a.Yk=c,a.xe=d,nw(this,d)||bw(this,c,d),jw(this,c,d,b),f=b.info(),this.H|=ow,a.Se||this.Ca('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.Ya),a.ne||e),a.tg=f[0],a.wf=f[1],a.xf=f[2],this.pa&&this.pa.ed()):a.Ne=!1;a.ne&&(a.ne=!1,--this.K||Kb(this));Xv(this,a.Ya);a.Se&&(a.Se(),a.Se=null)}; +function bw(a,b,c,d){if((a=a.la.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&=~(rw|sw),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=uw[a].Kd){b=!1;this.D=0;a=vw(this);var d,e,f,g,h=a&tw;switch(h){case ww:vw(this);vw(this);xw(this);break;case yw:c=vw(this);this.Ya=c&3;d=this.A[this.Ya];xw(this);zw(this,(d.sb&Aw)>>>24);break;case Bw:case Cw:c=vw(this);b=c>>2&1;this.Ya=c&3;d=this.A[this.Ya];d.ab=b;c=d.Ib=vw(this);e=vw(this);f=d.jb=vw(this);g=vw(this);d.xb=128<>2&1;this.Ya= +c&3;d=this.A[this.Ya];c=d.Ib;e=d.ab=b;f=d.jb=1;g=0;d.sb=mw;d.ua&&(d.hb=d.ua.seek(d.Ib,d.ab,d.jb))?g=d.hb.length>>8:d.sb=Dw|Ew;Gw(this,d,a,b,c,e,f,g);b=!0;break;case Nw:c=vw(this);b=c>>2&1;this.Ya=c&3;d=this.A[this.Ya];c=d.Ib;e=d.ab=b;f=1;g=vw(this);d.xb=128<>2&1,c=vw(this),d.Ib+=c-d.Ud,0>d.Ib&&(d.Ib=0),d.Ib>=d.rb&&(d.Ib=d.rb-1),d.Ud=c,d.sb=Iw,d.Ib||(d.sb|=Jw),xw(this),b=!0}0>>8);zw(a,(b.sb&Qw)>>>16);var k=0;if(e!=b.Ib||f!=b.ab)k=g=1;c&Rw&&(f^=k,d||(k=0));zw(a,e+k);zw(a,f);zw(a,g);zw(a,h)}function vw(a){var b=a.F[a.D];a.D++;return b}function xw(a){a.D=a.C=0}function zw(a,b){a.F[a.C++]=b}l.gl=function(a,b,c){void 0===b||0>b?this.we(a,c):c(-1,!1)};l.hl=function(a,b){return void 0!==b&&0<=b?Sw(a,b):-1}; +l.yl=function(a,b){if(void 0!==b&&0<=b)a:if(a.sb)a=-1;else{a.Yc[a.Je++]=b;if(a.Je==a.Yc.length){a.Ib=a.Yc[0];a.ab=a.Yc[1];a.jb=a.Yc[2];a.xb=128<Sw(a,a.Vi)){a=-1;break a}a.gg++}a.gg>=a.Vd&&(b=-1);a=b}else a=-1;return a};l.we=function(a,b){var c=-1,d=null,e=0;if(!a.sb&&a.ua){do{if(a.hb&&(e=a.Ta,0<=(c=a.ua.read(a.hb,a.Ta++)))){d=a.hb;break}a.hb=a.ua.seek(a.Ib,a.ab,a.jb);if(!a.hb){a.sb=Tw|Ew;break}a.Ta=0;Uw(a)}while(1)}b(c,!1,d,e)}; +function Sw(a,b){if(a.sb||!a.ua)return-1;do{if(a.hb&&a.ua.write(a.hb,a.Ta++,b))break;a.hb=a.ua.seek(a.Ib,a.ab,a.jb);if(!a.hb){a.sb=Vw|Ew;b=-1;break}a.Ta=0;Uw(a)}while(1);return b}function Uw(a){a.jb++;a.jb>=a.xf+1&&(a.jb=1,a.ab++,a.ab>=a.wf&&(a.ab=0,a.Ib++))}var hw="Floppy Drive",pw=4,qw=8,sw=16,rw=64,fw=128,ww=3,yw=4,Bw=5,Cw=6,Hw=7,Kw=8,Mw=10,Nw=13,Ow=15,tw=31,Rw=128,mw=0,Dw=8,Iw=32,Ew=64,gw=192,Lw=255,Fw=512,Tw=1024,Vw=8192,Pw=65280,Qw=16711680,Jw=268435456,Aw=-16777216,ow=128,kw=0;aa={}; +var uw={3:{Kd:3,Wd:0,name:aa.Zp},4:{Kd:2,Wd:1,name:aa.Xp},5:{Kd:9,Wd:7,name:aa.eq},6:{Kd:9,Wd:7,name:aa.Tp},7:{Kd:2,Wd:0,name:aa.Vp},8:{Kd:1,Wd:2,name:aa.Yp},10:{Kd:2,Wd:7,name:aa.Up},13:{Kd:6,Wd:7,name:aa.Pp},15:{Kd:3,Wd:0,name:aa.Wp}},$v={1009:Uv.prototype.lm,1012:Uv.prototype.nm,1013:Uv.prototype.km,1015:Uv.prototype.mm},aw={1010:Uv.prototype.Sn,1013:Uv.prototype.Rn,1015:Uv.prototype.Qn}; +Xa(function(){for(var a=vb(document,"pcx86","fdc"),b=0;bk.ua.restore(g)&&(D=!1),D&&void 0!==k.Ta&&(k.hb=k.ua.seek(k.Pd,k.ab,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 dx(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.qa,c[b++]=a.oa,c[b++]=a.ra,c[b++]=a.N);for(var d=0,e=[],f=0;f=this.C&&(this.D=this.C=0,this.ga&=~(mx|nx|ox));return c};l.po=function(a,b,c){t(this,a,b,c,"DATA["+this.C+"]");this.C=a&&(this.ga|=mx,this.ga&=~qx,rx(this))};l.Om=function(a,b){var c=this.ga;t(this,a,null,b,"STATUS",c);this.D=a.B.Ma?(a.ga=tx,a.we(a.B,function(b){0<=b?(ux(a),a.X&&a.X.da==ul&&(a.ga=0),a.ga=a.ga|ex|vx|wx):(a.ga=xx,a.I=yx)},!1)):a.ga=ex|vx));return d}l.kl=function(a,b){return sx(this,a,b)|sx(this,a,b)<<8}; +function zx(a,b,c,d){if(a.B&&a.B.xb>=a.B.Ma)if(0>Ax(a.B,c))a.ga=xx,a.I=yx;else if(1==a.B.Ta||a.B.Ta==a.B.Ma)r(a,1048832)&&t(a,b,c,d,"DATA["+a.B.Ta+"]"),1=a.B.Ma&&(a.ga|=wx))}l.yn=function(a,b,c){zx(this,a,b&255,c);zx(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&Bx?1:0]?this.ga|ex|vx:this.ga&~ex};l.Yl=function(a,b){var c=this.ga;t(this,a,null,b,"STATUS",c);this.ga&ex&&(this.ga&=~tx);return c};l.vn=function(a,b,c){t(this,a,b,c,"COMMAND");this.ha=b;this.X&&Ug(this.X,14);Cx(this)};l.An=function(a,b,c){t(this,a,b,c,"FDR");this.L&Dx&&!(b&Dx)&&(this.I=Ex);this.L=b}; +function Cx(a){var b=!1,c=a.ha,d=a.U&Bx?1:0,e=a.U&Fx,f=a.ea|(a.ba&Gx)<<8,g=a.fa,h=a.J||256;a.Ya=-1;a.B=null;a.I=Hx;a.ga=ex|vx;var k=a.A[d];k?(k.Pd=f,k.ab=e,k.jb=g,k.xb=h*k.Ma,c=c>=Ix?c:c&Jx,k.hb=null,k.Ta=0,k.errorCode=0,a.Ya=d,a.B=k):c=-1;switch(c&Jx){case Kx:b=!0;break;case Lx:a.ga=tx;a.we(k,function(b){0<=b&&a.X?(ux(a),a.ga=ex|vx|wx):(a.ga=xx,a.I=yx)},!1);break;case Mx:a.ga=wx;break;case Nx:b=!0;break;case Ox:b=!0;break;case Ix:a.I=Ex;b=!0;break;case Px:k.gb=e+1,k.Ua=h,b=!0}b&&ux(a)} +function ux(a){!a.X||a.L&Qx||ih(a.X,14,120)} +function rx(a){a.D=0;var b=Rx(a),c=Rx(a),d=c&32,e=d>>5,f=c&31,g=Rx(a),h=Rx(a),k=g<<2&768|h,m=g&63,p=Rx(a),v=Rx(a),u=a.A[e];u&&(u.Pd=k,u.ab=f,u.jb=m,u.xb=p*u.Ma);switch(b){case Sx:Tx(a,u?u.errorCode:Ux);Vx(a,c);Vx(a,g);Vx(a,h);Vx(a,Wx|d);b=-1;break;case px:for(c=0;0<=(b=Rx(a));)u&&cb?this.we(a,c):c(-1,!1)};l.jl=function(a,b){return void 0!==b&&0<=b?Ax(a,b):-1}; +l.zl=function(a,b){void 0!==b&&0<=b?(a.TaAx(a,a.Vi)){a=-1;break a}a.gg++}a.gg>=a.Vd&&(b=-1);a=b}else a=-1;return a}; +function dy(a,b,c){b.errorCode=Ux;if(b.ua&&(b.hb=null,a.X)){b.errorCode=gx;Ln(a.X,3,a,"dmaRead",b);Cn(a.X,3,function(a){a||b.errorCode!=gx||(b.errorCode=Ux);c(b.errorCode?Xx:Wx)});return}c(b.errorCode?Xx:Wx)}function fy(a,b,c){b.errorCode=Ux;if(b.ua&&(b.hb=null,a.X)){b.errorCode=gx;Ln(a.X,3,a,"dmaWrite",b);Cn(a.X,3,function(a){a||(b.errorCode==gx&&(b.errorCode=Ux),b.errorCode==iy&&(b.errorCode=gx));c(b.errorCode?Xx:Wx)});return}c(b.errorCode?Xx:Wx)} +function hy(a,b,c){b.errorCode=Ux;b.He&&b.He.length==b.xb||(b.He=Array(b.xb));b.Ta=0;a.X?(b.errorCode=gx,Ln(a.X,3,a,"dmaWriteBuffer",b),Cn(a.X,3,function(a){a||b.errorCode!=gx||(b.errorCode=Ux);c(b.errorCode?Xx:Wx)})):c(b.errorCode?Xx:Wx)} +l.we=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.Ta,d=a.ua.read(a.hb,a.Ta),a.Ta+=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.ab,a.jb+a.fg,!1,function(c,k){(a.hb=c)?(e=c,f=a.Ta=0,jy(a),d=a.ua.read(a.hb,a.Ta),a.Ta+=g):a.errorCode=iy;b(d,k,e,f)}),d;a.errorCode=iy;b(d,!1,e,f)}return d}; +function Ax(a,b){if(a.errorCode)return-1;do{if(a.hb&&a.ua.write(a.hb,a.Ta++,b))break;a.ua&&a.ua.seek(a.Pd,a.ab,a.jb+a.fg,!0,function(b){a.hb=b});if(!a.hb){a.errorCode=iy;b=-1;break}a.Ta=0;jy(a)}while(1);return b}function jy(a){a.jb++;var b=1-a.fg;a.jb>=a.Ua+b&&(a.jb=b,a.ab++,a.ab>=a.gb&&(a.ab=0,a.Pd++))}l.Pm=function(){var a=this.G.L&255;!(this.G.D>>8)&&128>8||!this.X)||(a=!(this.X.ic[0].td&64));return a?!0:!1}; +var hx="Hard Drive",kx=["XTC","ATC","COMPAQ"],ix=[{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]}],ax=496,Ex=1,Hx=0,yx=16,Gx=3,Fx=15,Bx=16,xx=1,wx=8,vx=16,ex=64,tx=128,Kx=16,Lx=32,Mx=48,Nx=64,Ox= +112,Ix=144,Px=145,Jx=240,Qx=2,Dx=4,Wx=0,Xx=2,$x=0,ay=1,Sx=3,by=5,cy=8,ey=10,px=12,gy=15,Yx=224,Zx=228,gx=0,Ux=4,iy=20,fx=0,qx=1,mx=2,nx=4,ox=8,lx=32,Yw={800:Ww.prototype.Nm,801:Ww.prototype.Om,802:Ww.prototype.Mm},Xw={496:Ww.prototype.kl,497:Ww.prototype.Ul,498:Ww.prototype.Wl,499:Ww.prototype.Xl,500:Ww.prototype.Sl,501:Ww.prototype.Rl,502:Ww.prototype.Tl,503:Ww.prototype.Yl},$w={800:Ww.prototype.po,801:Ww.prototype.so,802:Ww.prototype.ro,803:Ww.prototype.qo,807:Ww.prototype.ei,811:Ww.prototype.ei, +815:Ww.prototype.ei},Zw={496:Ww.prototype.yn,497:Ww.prototype.Dn,498:Ww.prototype.Bn,499:Ww.prototype.Cn,500:Ww.prototype.xn,501:Ww.prototype.wn,502:Ww.prototype.zn,503:Ww.prototype.vn,1014:Ww.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 ly(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 my(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=ly(e,18,!0)*Math.pow(2,18)+ly(f,18,!0);break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=ly(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=ny(a,b,0,b.length,a.D,c);void 0!==d&&e&&vy(a,null,d)}return d} +function wy(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=uy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?ty(a,g):"undefined")}if(a.Da.length)for(d=a.Da[0],e=a.Da[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 py(a,b){for(;b;){switch(b&3){case 1:a=-ly(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 oy(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.eh(b);if(0<=f)f=a.fh(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=uy(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 xy(a,b){var c=0;if(a.I){if(b)return vy(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 ry={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},qy={",,":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 yy(a){ky.call(this,a);this.qa=4;this.ma=5;this.wa=1048575;this.N=zy(this,0,0);this.Ba=zy(this,0,0);this.ea=zy(this,0,0);this.F=[];this.B=this.X=this.L=[];Ay(this);this.xa=0;By(this);this.Ea={};Cy(this,a.messages);this.Ja=a.commands;var b=this;window?void 0===window.pcx86&&(window.pcx86=function(a){return Dy(b,a)}):void 0===global.pcx86&&(global.pcx86=function(a){return Dy(b,a)})}ba(yy,ky);l=yy.prototype; +l.uc=function(a,b,c,d){this.na=b;this.G=c;this.pa=a;this.bb=Vb(a,"FDC");this.Pa=Vb(a,"HDC");this.Kc=Vb(a,"FPU");this.H=Vb(a,"Mouse");(a=ud(a,"messages"))&&Cy(this,a);this.ma=b.I>>2;this.wa=b.N;this.Xa=new Sd(this.G,7,"DBG");this.oa=Ey;80186<=this.G.da&&(this.oa=Ey.slice(),this.oa[15]=Fy,80286<=this.G.da&&(this.oa[15]=Gy,80386<=this.G.da&&(this.qa=8)));xl(this,64,function(a){Hy(d,d.G.tc,a[0])});xl(this,4,function(a){if(a=a[0]){var b=oy(d,a);if(void 0===b)d.O("invalid selector: "+a);else if(a=Iy(d, +b,Jy),d.O("dumpSel("+oa(a?a.T:b)+"): %"+q(a?a.Ob:null,d.ma)),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=Ky[a.type];e&&(c=e[0],b=e[1])}!c||a.nb&32768||(c+=",not present");d.O((b?"seg="+oa(a.ta&65535)+" off="+oa(a.Qa):"base="+q(a.ta,d.ma)+" limit="+Ly(a.Qa))+" 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=oy(d,a));if(void 0===b)d.O("invalid MCB");else for(d.O("dumpMCB("+oa(b)+")");b;){a=zy(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(My(0,b)+": '"+String.fromCharCode(c)+"' PID="+oa(e)+" LEN="+oa(k)+' "'+Ny(d,a,8)+'"');b+=1+k}});xl(this,128,function(a){Hy(d,d.G.aa,a[0],d.G.aa!==d.G.tc)});xl(this,8,function(a){a:{if(a=a[0]){var b=oy(d,a);if(void 0===b){d.O("invalid task selector: "+ +a);break a}a=Iy(d,b,Jy)}else a=d.G.ka;d.O("dumpTSS("+oa(a?a.T:b)+"): %"+q(a?a.ta:null,d.ma));if(a){var b="",c=a.type&-513,e=256==c?4:8,k=256==c?Oy:Py,m,p,v,u;for(u in k)m=k[u],p=a.ta+m,v=vg(d.G,p,2),2304==c&&(v|=vg(d.G,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.G,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.Fa=!1;Rf(this.G,48,this.Tm.bind(this));Rf(this.G,65,this.Um.bind(this));this.aa=null;Rf(this.G,104,this.Vm.bind(this));Kb(this)};function Qy(a,b,c,d,e,f){b=Ny(a,b);var g=Iy(a,d),g=g?g.Qa+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=Ry(a,b,c);e[b+h]=0;bq(a,b,c,d,0,null,g,e)} +function Sy(a,b,c,d){var e=a.Wc(b,2),f=a.Wc(b,2),g=Ty(a,b,4),h=Ty(a,b,4),k=zy(a,Ty(a,b,4),a.Wc(b,2));b=zy(a,Ty(a,b,4),a.Wc(b,2));b=Ny(a,b).toUpperCase();var k=Ny(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=Ry(a,k,e);c[k+m]=g;bq(a,k,e,f,g,null,h,c)}function Uy(a,b,c){c=Ny(a,c).toUpperCase();Vy(a,c,b)} +l.Tm=function(){var a=this.G;if(null!=this.J&&2752554==a.D){var b=a.L&65535,c=a.K&65535,d=zy(this,y(a)+12,a.U.T);switch(Ty(this,d)){case 336:Sy(this,zy(this,a.H,b),!c,!!this.J)}}return!0}; +l.Um=function(a){var b=this.G,c=b.D&65535,d=b.H&65535,e=b.I&65535,f=b.L&65535,g=b.K&65535,h=b.J&65535,k=b.oa.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:Qy(this,zy(this,h,k),d+1,e,!(g&1),!!this.J);break;case 82:Vy(this,null, +d);break;case 127:this.J&&(b.D=b.D&-65536|(this.Fa?0:1));break;case 131:this.J&&(a=zy(this,b.L,e),this.La++?(this.O("TRAPFAULT failed"),Wy(this,this.B,a,!0,!0),this.La=0,this.Sb()):(this.O("INT 0x41 TRAPFAULT: fault="+oa(d)+" error="+q(b.K,8,!0)+" addr="+Xy(a)),this.sd(this.B,a,!0),By(this,!0)));break;case 141:this.J&&(b.D=b.D&-65536|1);break;case 336:Sy(this,zy(this,b.H,f),!g,!!this.J);break;case 338:Uy(this,d,zy(this,b.J,f))}this.Fa=!1;return!this.J}; +l.Vm=function(a){var b=this.G,c=b.D&255,d=b.D>>8&255,e=b.H&65535,f=b.I&65535,g=b.L&65535,h=b.J&65535,k=b.oa.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],me(b,a[1]));break;case 72:Vy(this,null,e);break;case 80:32==c?Qy(this,zy(this,h,k),0,f,!0,!!this.aa):128>c?Qy(this,zy(this,h,k),e+1,c&64?g:f,!(c&1),!!this.aa):Sy(this,zy(this,h,k),!(c&1),!!this.aa),this.aa&&(b.D=b.D&-256|1)}return!this.aa};l.vl=function(){var a=this.G;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.la[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Dy(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.A>>0)+1;a.nb=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=Iy(this,a.T,a.type);e&&(b=a.Ia||0,c=c||1,d=e=-1===e.Ob||e.gd&&(b>>>0)+c>e.Nb||!e.gd&&(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.G,d,1,a.type==az)|0,b&&bz(this,a,b));return c}; +l.mb=function(a,b){return a.Jb?Ty(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.G,d,2,a.type==az)|0,b&&bz(this,a,b));return c};function Ty(a,b,c){var d=-1,e=a.Wb(b,!1,4);-1!==e&&(d=vg(a.G,e,4,b.type==az)|0,c&&bz(a,b,c));return d}l.tb=function(a,b,c,d){var e=this.Wb(a,!0,1);if(-1!==e){if(a.type!=az)this.G.tb(e,b);else{var f=this.na;f.aa[(e&f.C)>>>f.A].bf(e&f.D,b&255,e)}c&&bz(this,a,c);d||zd(this.G,!0)}}; +l.fl=function(a,b,c){var d=this.Wb(a,!0,2);-1!==d&&(a.type!=az?this.G.ib(d,b):Fc(this.na,d,b),c&&bz(this,a,c),zd(this.G,!0))};function zy(a,b,c,d,e,f,g){return cz(a,{},b,c,d,e,f,g)}function cz(a,b,c,d,e,f,g,h){b.Ia=c||0;b.T=d;b.za=e;b.type=f||(Zy(a)?Jy:$y);b.Jb=null!=g?g:!(!a.G||4!=a.G.ba.W);b.fc=null!=h?h:!(!a.G||4!=a.G.ba.Lc);b.xd=!1;return b}function dz(a){return[a.Ia,a.T,a.za,a.xd,a.Jb,a.fc,a.Ie,a.$g]}function ez(a){return{Ia:a[0],T:a[1],za:a[2],xd:a[3],Jb:a[4],fc:a[5],Ie:a[6],$g:a[7]}} +function fz(a,b,c){if(null!=b.T&&(a=Iy(a,b.T,b.type))){var d=b.Ia&a.wa;if(!a.gd){if(d>>>0>=a.Nb)return!1}else if(d>>>0f?null!=h?(g=uy(a,b,void 0),f=null):(f=uy(a,b,void 0),null==f&&(g=null)):(h=uy(a,b.substring(0,f),void 0),g=uy(a,b.substring(f+1),void 0),f=null)}null!=g&&(e=zy(a,g,h,f,c),d||fz(a,e,!0)||(a.O("invalid offset: "+Xy(e)),e=null));return e}function jz(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.pl=a.Bg(b.Xk=c[2]))}l.Ok=function(a,b){var c=gz(this,b);return a.replace("["+b+"]",c?q(this.mb(c),c.Jb?8:4):"undefined")}; +function bz(a,b,c){c=c||1;null!=b.za&&(b.za+=c);null!=b.T&&(b.Ia+=c,fz(a,b)||(b.Ia=0,b.za=null))}function My(a,b,c){return null!=b?q(b,4)+":"+q(a,a&-65536||c?8:4):q(a)}function Xy(a){var b;switch(a.type){case $y:case kz:b="&";break;case Jy:b="#";break;case iz:b="%";break;case az:b="%%";break;default:b=a.T?"":"%"}return a.type>=iz||null==a.T?b+q(a.za):b+My(a.Ia,a.T,a.fc)} +function Ny(a,b,c){var d="";for(c=c||256;d.length>>a.G.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.G,e,!1,!0)),d.type==c?h++||a.O("..."):(c=d.type,h=oc[c],c==$c&&(d=d.ud,h+=" -> "+oc[d.type]),d&&a.O(q(d.id,8)+" %"+q(f<c&&(c=Ca(mz,a.substr(b,2))));return c}; +function nz(a,b){var c=0,d=a.fh(b);if(null!=d)switch(b){case oz:case pz:case qz:case rz:case sz:case tz:case uz:case vz:c=2;break;case wz:case xz:case yz:case zz:case Az:case Bz:case Cz:case Dz:case Ez:case Fz+Gz:case Fz+Hz:case Fz+Iz:case Fz+Jz:case Fz+Kz:case Fz+Lz:c=4;break;case Mz:case Nz:case Oz:case Pz:case Qz:case Rz:case Sz:case Tz:case Uz:case Vz:case Wz:case Xz:case Yz:c=8;break;case Zz:c=a.qa}return c?q(d,c):"??"} +l.fh=function(a){var b;if(0<=a){var c=this.G;switch(a){case oz:b=c.D&255;break;case pz:b=c.I&255;break;case qz:b=c.L&255;break;case rz:b=c.H&255;break;case sz:b=c.D>>8&255;break;case tz:b=c.I>>8&255;break;case uz:b=c.L>>8&255;break;case vz:b=c.H>>8&255;break;case wz:b=c.D&65535;break;case xz:b=c.I&65535;break;case yz:b=c.L&65535;break;case zz:b=c.H&65535;break;case Az:b=y(c)&65535;break;case Bz:b=c.N&65535;break;case Cz:b=c.K&65535;break;case Dz:b=c.J&65535;break;case Ez:b=z(c)&65535;break;case Zz:b= +pe(c);break;case Fz+Gz:b=c.oa.T;break;case Fz+Hz:b=c.ba.T;break;case Fz+Iz:b=c.U.T;break;case Fz+Jz:b=c.Fa.T;break;default:if(80286==this.G.da)a==Uz&&(b=c.qa);else if(80386<=this.G.da)switch(a){case Mz:b=c.D;break;case Nz:b=c.I;break;case Oz:b=c.L;break;case Pz:b=c.H;break;case Qz:b=y(c);break;case Rz:b=c.N;break;case Sz:b=c.K;break;case Tz:b=c.J;break;case Uz:b=c.qa;break;case Vz:b=c.Ng;break;case Wz:b=c.qd;break;case Xz:b=c.Uc;break;case Fz+Kz:b=c.La.T;break;case Fz+Lz:b=c.Pa.T;break;case Yz:b= +z(c)}}}return b}; +function $z(a,b){b=wy(a,b)||b;for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.eh(b,c+1),0<=e&&(b=b.substr(0,c)+nz(a,e)+b.substr(c+1+mz[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=gz(a,e))?(d=e+' "'+Ny(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=gz(a,e))?(bz(a,d), +d=e+' "'+Ny(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+Xy(zy(this,z(this.G),this.G.ba.T))+" (%"+q(this.G.ea)+")");this.Aa&&a==this.Aa||(this.Aa=a,this.jc&-2147483648&&(this.Sb(),a+=" (cpu halted)"),this.O(a),this.G&&(a=this.G,Jd(a),a.Z.Rf=!0,zd(a)))}; +function Wk(a,b,c,d){var e,f;if(!d&&(d=r(a,1)&&0>aA.indexOf(b),!d)){var g=bA[b];g&&(d=r(a,g)?!0:524288==g&&r(a,g=1048576))}d&&(e=a.G.D>>8&255,f=a.G.L&255,33==b&&11==e||524288==g&&128<=f||1048576==g&&128>f)&&(d=!1);d&&((g=(g=Sb[b])&&g[e]||"")&&(g=" "+$z(a,g)),a.message("INT "+na(b)+": AH="+na(e)+" at "+My(c-2-a.G.ba.ta,a.G.ba.T)+g));return d} +function Ob(a,b,c,d,e,f,g,h){h|=256;if(null==e||(a.jc&h)==h)h=null,null!=e&&(h=a.G.ba.T,e-=a.G.ba.ta),a.message(b.Be+"."+(null!=d?"outPort":"inPort")+"("+oa(c)+","+(f?f:"unknown")+(null!=d?","+na(d):"")+")"+(null!=g?": "+na(g):"")+(null!=e?" at "+My(e,h):""))}l.gh=function(){this.O("Type ? for help with PCx86 Debugger commands");cA(this);if(this.Ja){var a=this.Ja;this.Ja=null;Dy(this,a)}}; +function By(a,b){var c;if(Jg(a)){if(!a.U||!a.U.length){a.U=Array(dA);for(c=0;c>>g.lb].sd(f&g.Fb,a==this.L);h&&nc(g)}}e&&(a.push(b),c?(null!=b.za&&(b.T=null),b.xd=!0):(d||kA(this,a,a.length-1,"set"),By(this)));return e}; +function Wy(a,b,c,d,e){for(var f=!1,g=lA(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=tA[f])&&(v=u[D]);v&&(p=uA,k=v,m=k[0])}m>=p.length&&(g=a.ya(b,1),k=vA[m-p.length][g>>3&7],m=k[0]);p=p[m];u=k.length-1;v="";b.Jb&&(m==wA? +p="CWDE":m==xA?p="CDQ":m>=yA&&m<=zA&&(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>>AA);m==BA&&(f==CA?v="[%800]":f==DA&&(v="ES:["+(b.fc?"E":"")+"DI]"));var P=J&EA;if(P!=FA)if(P==GA)D=!1;else{var L=J&HA;if(L>=R)if(0>g&&(g=a.ya(b,1)),L>6,qa=g&7;if(3>jb){P=!p.indexOf("FI");if(!jb&&(!J.fc&&6==qa||J.fc&&5==qa))jb=2;else{if(J.fc)if(4!=qa)qa+= +8;else{var Z=L,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=JA[kb+8];4!=uc&&(lb&&(lb+="+"),lb+=JA[uc+8],eb&&(lb+="*"+(1<>24),2)):Z+("+"+q(L,2))):2==jb&&(Z&&(Z+="+"),J.fc?(L=Ty(L,J,4),Z+=q(L)):(L=L.Wc(J,2),Z+=q(L,4)));Z="["+Z+"]";if(1==ka){L="";I&=EA;I==S&&(I=J.Jb?KA:T);switch(I){case LA:L="FAR";break;case U:L="BYTE";break;case T:if(P){L="INT16";break}L="WORD"; +break;case KA:L="DWORD";break;case MA:if(P){L="INT32";break}case NA:L="REAL32";break;case OA:if(P){L="INT64";break}case PA:L="REAL64";break;case QA:L="REAL80";break;case RA:L="BCD80"}L&&(Z=L+" "+Z)}}else Z=SA(L,qa,I,J);I=Z}else I=L==IA?SA(a,g&7,J,b):SA(a,g>>3&7,J,b);else if(L==TA)I="1";else if(L==V){I=a;P=J;L=b;J=" ";switch(P&EA){case U:P&W&&(J=q(I.ya(L,1),2));break;case UA:J=q(I.ya(L,1)<<24>>24,L.Jb?8:4);break;case S:if(L.Jb){J=q(Ty(I,L,4));break}case T:J=q(I.Wc(L,2),4);break;case LA:L=zy(I,I.mb(L, +!0),I.Wc(L,2),null,L.type,L.Jb,L.fc);J=Xy(L);I=VA(I,L);I[0]&&(J+=" ("+I[0]+")");break;default:J="imm("+oa(P)+")"}I=J}else L==WA?(b.fc?(I=8,J=Ty(a,b,4)):(I=4,J=a.Wc(b,2)),I="["+q(J,I)+"]"):L==XA?(I=P==U?a.ya(b,1)<<24>>24:a.mb(b,!0),J=b.Ia+I&(b.Jb?-1:65535),I=q(J,b.Jb?8:4),J=VA(a,zy(a,J,b.T)),J[0]&&(I+=" ("+J[0]+")")):L==X?I=P==YA?"ST":P==ZA?"ST("+(g&7)+")":SA(a,(J&$A)>>8,J,b):L==aB?I=SA(a,(J&$A)>>8,bB,b):L==cB?I="DS:[SI]":L==dB&&(I="ES:[DI]");if(!I||!I.length){v="INVALID";break}0Lz||b>=Kz&&80386>a.G.da)return"??";b+=Fz}else if(e==gB)b+=Uz;else if(e==hB)b+=iB;else if(e==jB)b+=kB;else if(a=c&EA,a>=T&&(b=wz&&b<=Dz&&4a.G.da&&(d="\n"+d,c+=e,e="");c+="\n"+nB(a,a.G.ba,b)+" ";80386<=a.G.da&&(e+="\n",c+=nB(a,a.G.La,b)+" "+nB(a,a.G.Pa,b)+"\n");c+=oB(a,"LD",a.G.Gb.T,a.G.Gb.ta,a.G.Gb.ta+a.G.Gb.Qa)+" "+oB(a,"GD",null,a.G.Kb,a.G.Ic)+" "+oB(a,"ID", +null,a.G.Qb,a.G.ad)+" ";c=c+(d+" "+e)+mB(a,Uz);80386<=a.G.da&&(c+=mB(a,Wz)+mB(a,Xz))}else 80386<=a.G.da&&(c+=nB(a,a.G.La,b)+" "+nB(a,a.G.Pa,b)+" ");return c+=mB(a,Zz)+lB(a,"V")+lB(a,"D")+lB(a,"I")+lB(a,"T")+lB(a,"S")+lB(a,"Z")+lB(a,"A")+lB(a,"P")+lB(a,"C")}l.dj=function(a,b){return a[0]>b[0]?1:a[0]>>0,p],I=ya(D,u,a.dj);0>I&&D.splice(-(I+1),0,u)}G&&(v.a=G.replace(/''/g,'"'))}a.F.push({Nf:b,mn:c,T:d,Ia:e,za:f,$m:g,Jd:h,Ni:m})} +function Vy(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 "+Xy(b)),p=!0):(a.tb(b,c,1,!0),m++)})})(a,g);zd(a.G, +!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 fA(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.qa&&(h=null);switch(h){case "AL":a.G.D= +a.G.D&-256|g&255;break;case "AH":a.G.D=a.G.D&-65281|g<<8&255;break;case "AX":a.G.D=a.G.D&-65536|g&65535;break;case "BL":a.G.H=a.G.H&-256|g&255;break;case "BH":a.G.H=a.G.H&-65281|g<<8&255;break;case "BX":a.G.H=a.G.H&-65536|g&65535;break;case "CL":a.G.I=a.G.I&-256|g&255;break;case "CH":a.G.I=a.G.I&-65281|g<<8&255;break;case "CX":a.G.I=a.G.I&-65536|g&65535;break;case "DL":a.G.L=a.G.L&-256|g&255;break;case "DH":a.G.L=a.G.L&-65281|g<<8&255;break;case "DX":a.G.L=a.G.L&-65536|g&65535;break;case "SP":fe(a.G, +y(a.G)&-65536|g&65535);break;case "BP":a.G.N=a.G.N&-65536|g&65535;break;case "SI":a.G.K=a.G.K&-65536|g&65535;break;case "DI":a.G.J=a.G.J&-65536|g&65535;break;case "DS":le(a.G,g);break;case "ES":me(a.G,g);break;case "SS":ee(a.G,g);break;case "CS":Yf(a.G,g);a.N=zy(a,z(a.G),a.G.ba.T);break;case "IP":case "EIP":B(a.G,g);a.N=zy(a,z(a.G),a.G.ba.T);break;case "PC":case "PS":qe(a.G,g);break;case "C":g?jg(a.G):kg(a.G);break;case "P":g?(e=a.G,e.resultType&=-3,e.P|=4):(e=a.G,e.resultType&=-3,e.P&=-5);break; +case "A":g?rg(a.G):pg(a.G);break;case "Z":g?sg(a.G):qg(a.G);break;case "S":g?(e=a.G,e.resultType&=-17,e.P|=128):(e=a.G,e.resultType&=-17,e.P&=-129);break;case "I":g?(e=a.G,e.P|=512):(e=a.G,e.P&=-513);break;case "D":g?(e=a.G,e.P|=1024):(e=a.G,e.P&=-1025);break;case "V":g?lg(a.G):mg(a.G);break;default:var k=!0;if(80286<=a.G.da)switch(k=!1,h){case "MS":tg(a.G,g);break;case "TR":-1===a.G.ka.load(g)&&(f=!1);break;default:if(k=!0,80386<=a.G.da)switch(k=!1,h){case "EAX":a.G.D=g;break;case "EBX":a.G.H=g; +break;case "ECX":a.G.I=g;break;case "EDX":a.G.L=g;break;case "ESP":fe(a.G,g);break;case "EBP":a.G.N=g;break;case "ESI":a.G.K=g;break;case "EDI":a.G.J=g;break;case "FS":a.G.La.load(g);break;case "GS":a.G.Pa.load(g);break;case "CR0":a.G.qa=g;bk.call(a.G,g);break;case "CR2":a.G.qd=g;break;case "CR3":a.G.Uc=g;se.call(a.G,g);break;default:k=!0}}if(k){a.O("unknown register: "+e);return}}if(!f){a.O("invalid value: "+b);return}zd(a.G);a.O("updated registers:")}}a.O(pB(a,d));c&&(a.N=zy(a,z(a.G),a.G.ba.T), +gA(a,Xy(a.N)))}}function xB(a,b){b=wa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.O($z(a,c[2])):uy(a,b,!1)}function yB(a,b,c){for(var d=null,e=b.Ia,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=oA(a,b,g,f);b.$g||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 nA(a,b,c){var d=!0;try{if(!b.length||"end"==b)a.fa&&(a.O("ended assemble at "+Xy(a.ea)),a.N=a.ea,a.fa=!1),b="";else if(!c){var e=">> ";a.G.qa&1&&(e=a.G.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.Si=a.G.Uc+Ra.Ik;Ra.ob=qf.aa[(Ra.Si&qf.C)>>>qf.A];Ra.Aj=Ra.ob.Od(Ra.Ik);Ra.Jk=(Vg&4190208)>>>10;Ra.Ti=(Ra.Aj&-4096)+Ra.Jk;Ra.pb=qf.aa[(Ra.Ti&qf.C)>>>qf.A];Ra.Bj=Ra.pb.Od(Ra.Jk);Ra.rl=(Ra.Bj&-4096)+(Vg&4095)}if(pf=Ra){a.O("linear PDE addr PDE PTE addr PTE physical");a.O("--------- ---------- -------- ---------- -------- ----------");var ze="%"+q(Vg),ze=ze+(" %%"+lz(pf.Si,pf.Aj)),ze= +ze+(" %%"+lz(pf.Ti,pf.Bj,!0)),ze=ze+(" %%"+q(pf.rl));a.O(ze)}else a.O("unsupported operation")}}else a.O("missing address")}else{if("d"==qa){if("disk"==db){Z[0]="l";Z[1]="json";uB(a,Z);break a}for(jb in Tb)if(Z[1]==jb){var Dt=a.Ea[jb];Dt?(Z.shift(),Z.shift(),Dt(Z)):a.O("no dump registered for "+db);break a}db||(qa=a.lb||"db")}if("dh"==qa){var Et=db,Ft=Oa,Wg=kb,Wg=void 0===Wg?"history":Wg,Gt="",Ht=0,Oc=a.ra,nd=a.U;if(nd.length){var yc=+Et||a.Wa,Xg=+Ft||10;isNaN(yc)?yc=Xg:Gt="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 zm=[];"call"==Ft&&(Xg=1E5,zm=["CALL"]);for(void 0!==Et&&a.O(yc+" instructions earlier:");0=nd.length&&(Oc=0);a.Wa=yc; +Ht++;Xg--}}Ht||(a.O("no "+Gt+"history available"),a.Wa=void 0)}else if("di"==qa){Z.shift();var Am=Z[0];if(Am){var Zg=oy(a,Am);if(void 0===Zg||0>Zg||255"abwd".indexOf(qa[1]))a.O("unrecognized dump command"); +else{a.lb=qa;var Ae=gz(a,db);if(Ae&&(null!=Ae.T||null!=Ae.za)){var rf=0;if(Oa){if("l"==Oa.charAt(0))Oa=Oa.substr(1)||kb,rf=oy(a,Oa);else{var Ot=gz(a,Oa);if(!Ot)break a;rf=Ot.Ia-Ae.Ia+1}if(0>rf||65536>4||1,Dm=4==sf?16:a.D;"a"==qa[1]&&(Bm=!0,Cm=25,Dm=160,$g=Cm*Dm);for(;Cm--&&0<$g;){var ah=0,Em=0,bh,Fm="",gj="",db=Xy(Ae);for(bh=Dm;0hj?String.fromCharCode(hj):Bm?"":".";$g--}Be&&(Be+="\n");Be=Bm?Be+gj:Be+(db+" "+Fm+va(gj,gj.length+3*bh+1,!0))}Be&&a.O(Be.replace(/\s*$/,""));a.Ba=Ae}}}}}break;case "e":if("else"==g[0])break;var ij=1,Pt=255,Qt=a.ya,Rt=a.tb;"ew"==g[0]&&(ij=2,Pt=65535,Qt=a.Wc,Rt=a.fl);var St=ij<<1,Tt=g[1];if(null==Tt)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 jj=gz(a,Tt);if(jj)for(var kj= +2;kjKm;){for(var pd=null,uC=256;Wd.Ia>>>0>>0;){eh.Ia=a.mb(Wd,!0);if(null==Wd.za||!uC--)break;eh.T=Vt;if(pd=yB(a,eh))break;eh.T=a.mb(Wd);if(pd=yB(a,eh,!0)){Vt=a.mb(Wd,!0);0\nLicense: GPL version 3 or later "); +for(b=0;bVB){if(d.load(this.M)){this.F=new Wf(this,"1.36.1",fC);this.F.load()&&(a!=eC&&gC(this,d)&&(a=hC),iC(this.F));this.F.set(dC,za("Y-m-d H:i:s"));jC(this.F);var e=this.A&&!this.J;if(a==eC||pb("Click OK to restore the previous PCx86 machine state.")){if(c=cC(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +g?(this.Ca("Error: "+g),"unable to verify user"==g&&(La(kC,""),this.B=null)):this.O(f+": "+g),iC(d),d.load()?(c=cC(d),e=!0):c=!1))}e&&aC(this,c?d:null)}else a==hC&&d.clear()}else aC(this);delete this.M;delete this.N}e=xb(this.id);for(f=0;fa[1];a=a[2];if(!this.Z.nf){for(var d=0;df.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);FC(a,b,c)}})}else c(a,null)} +function GC(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&&(--CC||bb(!0));k=!1}var g,h,k=!0;CC++;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?DC(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,--CC||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),--CC||bb(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?DC(b,a,d,!0,e,m):EC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function HC(a,b,c,d){bb(!1);return GC(a,b,c,d)}window.embedPC=HC;window.embedPCx86=HC; +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 IC(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){JC(b,d)}):JC(null,d)}else ab("Error ("+c+") requesting "+a)} +function JC(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+('\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.1/pcx86.js b/versions/pcx86/1.36.1/pcx86.js new file mode 100644 index 0000000000..9860c3d6b9 --- /dev/null +++ b/versions/pcx86/1.36.1/pcx86.js @@ -0,0 +1,710 @@ +(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,Dd:65,rh:66,sh:67,uh:68,E:69,vh:70,wh:71,xh:72,yh:73,zh:74,Ah:75,Bh:76,Ch:77,Dh:78,Eh:79,Fh:80,Q:81,Gh:82,Hh:83,Ih:84,Jh:85,Kh:86,Lh:87,Mh:88,Oh:89,qf:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Ed: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},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 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 ha(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 ja(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0"']/g,function(a){return na[a]})}function oa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} +var na={"&":"&","<":"<",">":">",'"':""","'":"'"},pa={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 qa(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+=ra[b.getDay()].substr(0,3);break;case "F":c+=sa[f-1];break;case "g":c+=d?12a?this.Ae=this.id:(this.Bd=this.id.substr(0,a),this.Ae=this.id.substr(a+1));this.X={ready:!1,Ho:!1,Io:!1,Ie:!1,Sb:!1,Xd:!1,error:!1};this.Df=null;this.X.error=!1;this.Da=this.R=this.na=this.pa=null;Ta.push(this)}function Ua(a,b,c){Va[a]&&b&&(Va[a][b]=c)}function q(a){window&&window.alert(a)} +function Wa(a){var b=!1;window&&(b=window.confirm(a));return b}function Xa(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.A;f=(g+f.Jo)*a.na.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,ia(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.Y[(m&h.D)>>>h.B].Ad(m&h.C,m),Fb(a,ia(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.oa,a.ta,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+=ia(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=bb(document,"pcx86","panel"),c=0;c>2,Ab=xb,Cb="black",Bb=xb>>1;La(ub); +function Gb(a,b,c){u.call(this,"Bus",a);this.R=b;this.Da=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 v;Hb(a,this.Da);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 v(f,r,a.A,d,e);Hb(f,a.Da,k);a.Y[h++]=f;f=m+a.A;g-=r}return 0>=g?(e=a.R,e.oa&-2147483648&&Mb(e),a.R.X.cb||(e=c/1024|0,a.status((e?e+"Kb ":c+" bytes ")+Nb[d]+" at "+ia(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].Ze(c,b):a.Y[d++].Ad(c,b)|a.Y[d&a.K].Ad(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].ph(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+": "+ia(c)+","+ia(d)+")";e?a.Da?a.Da.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.mh=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.Ad(a,b)};l.en=function(a,b){this.F&&zc(this.F,b,2,!1);return this.Ze(a,b)};l.Zm=function(a,b){this.F&&zc(this.F,b,4,!1);return this.gh(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.ph(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.Ye(a,b)};l.bn=function(a,b){this.A.S[this.C]|=this.I;this.B.S[this.D]|=this.I;return this.J.Qd(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).Ye(a,b)};l.cn=function(a,b){return Ac(this.F,b,!1).Qd(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.Ga[a]}; +l.Ej=function(a){return this.Ga[a]};l.Vm=function(a){this.A.S[this.C]|=32;this.B.S[this.D]|=32;this.oc=this.Ej;return this.Ga[a]};l.dn=function(a){return this.K.getUint16(a,!0)};l.Jj=function(a){return a&1?this.Ga[a]|this.Ga[a+1]<<8:this.td[a>>1]};l.gn=function(a){this.A.S[this.C]|=32;this.B.S[this.D]|=32;this.Ye=this.Jj;return a&1?this.Ga[a]|this.Ga[a+1]<<8:this.td[a>>1]};l.Ym=function(a){return this.K.getInt32(a,!0)}; +l.Gj=function(a){return a&3?this.Ga[a]|this.Ga[a+1]<<8|this.Ga[a+2]<<16|this.Ga[a+3]<<24:this.S[a>>2]};l.an=function(a){this.A.S[this.C]|=32;this.B.S[this.D]|=32;this.Qd=this.Gj;return a&3?this.Ga[a]|this.Ga[a+1]<<8|this.Ga[a+2]<<16|this.Ga[a+3]<<24:this.S[a>>2]};l.tn=function(a,b){this.Ga[a]=b;this.Fa=!0};l.Qj=function(a,b){this.Ga[a]=b;this.Fa=!0};l.wn=function(a,b){this.Ga[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.Ga[a]=b,this.Ga[a+1]=b>>8):this.td[a>>1]=b;this.Fa=!0};l.In=function(a,b){a&1?(this.Ga[a]=b,this.Ga[a+1]=b>>8):this.td[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.Ga[a]=b,this.Ga[a+1]=b>>8,this.Ga[a+2]=b>>16,this.Ga[a+3]=b>>24):this.S[a>>2]=b;this.Fa=!0}; +l.Cn=function(a,b){a&3?(this.Ga[a]=b,this.Ga[a+1]=b>>8,this.Ga[a+2]=b>>16,this.Ga[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=[v.prototype.Um,v.prototype.vn,v.prototype.fn,v.prototype.Hn,v.prototype.$m,v.prototype.Bn],yc=[v.prototype.Tm,v.prototype.un,v.prototype.en,v.prototype.Gn,v.prototype.Zm,v.prototype.An],uc=[v.prototype.Wm,v.prototype.xn,v.prototype.hn,v.prototype.Jn,v.prototype.bn,v.prototype.Dn],sc=[v.prototype.Xm,v.prototype.yn,v.prototype.jn,v.prototype.Kn,v.prototype.cn,v.prototype.En]; +if(pb)var $b=[v.prototype.Sm,v.prototype.tn,v.prototype.dn,v.prototype.Fn,v.prototype.Ym,v.prototype.zn],Zb=[v.prototype.Ej,v.prototype.Qj,v.prototype.Jj,v.prototype.Sj,v.prototype.Gj,v.prototype.Rj],Cc=[v.prototype.Vm,v.prototype.wn,v.prototype.gn,v.prototype.In,v.prototype.an,v.prototype.Cn]; +function Dc(a,b){u.call(this,"CPU",a);b=a.cycles||b;var c=a.multiplier||1;this.V={};this.V.xd=b;this.V.zi=this.V.rg=this.V.md=c;this.V.Gf=Math.round(this.V.xd/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.Fd=a.autoStart;this.X.di=!1;this.X.zf=!1;this.V.Hf=this.V.se=0;this.V.If=a.csStart;this.V.Ke=a.csInterval;this.V.Le=a.csStop;this.qa=[];this.pi=this.kn.bind(this)}ba(Dc,u);l=Dc.prototype; +l.kc=function(a,b,c,d){this.pa=a;this.na=b;this.Da=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.xd/Hc*b);a.V.rg=b} +function Sc(a,b){var c=a.Ic+a.Tc+a.Sc-a.A;b&&1a.V.Gf&&(c=Math.round(c/a.V.md));return c}function Ic(a){a.Ic=a.Tc=a.Sc=a.A=0;Jc(a);Pc(a,a.V.zi)} +function Pc(a,b,c){if(void 0!==b){0a.V.hd/a.V.re&&(b=a.V.zi);a.V.hd=0;a.V.md=b;b=a.V.Gf*a.V.md;if(a.V.re!=b){a.V.re=b;b=a.V.re.toFixed(2)+"Mhz";var d=a.ia.setSpeed;d&&(d.textContent=b);a.tb("target speed: "+b)}c&&a.pa&&Tc(a.pa)}a.Ic+=a.Tc;a.Tc=0;a.V.Zc=a.V.Nd=0;Rc(a);for(c=a.qa.length-1;0<=c;c--)b=a.qa[c],0<=b[2]&&Uc(a,c,b[2],!0)}function Gc(a,b,c,d){d=void 0===d?-1:d;var e=a.qa.length;a.qa.push([b,-1,d,c]);0<=d&&Uc(a,e,d)} +function Uc(a,b,c,d){0<=b&&bb[1])&&(c=a.V.xd*a.V.rg/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.Je&&(this.V.Zc=this.V.Je))}try{this.X.Zf=!1;do{for(var b,c=this.X.zf?1:this.V.xd*this.V.rg|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.Kd){var h=(Sc(f.R,f.N)-g.jd)/f.Aa|0,k=Yc(f,0)-h;g.mode==Zc&&(k-=h);var m=k*f.Aa|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.W-Sc(r.R,r.N);0y&&(a=y)}b=a}try{this.th(b)}catch(N){if("number"!=typeof N)throw N;}b=Vc(this,!0);this.V.Jf+=b;this.Tc+=b;a=b;if(this.X.zf){var t=!1;this.V.Hf=this.V.Hf+this.li()|0;this.V.se-=a;0>=this.V.se&&(this.V.se+=this.V.Ke,t=!0);0<=this.V.Le&&this.V.Le<=Sc(this)&&(this.V.Ke=this.V.Le=-1,Jc(this),Mc(this),t=!0);t&&this.tb(Sc(this)+" cycles: checksum="+ia(this.V.Hf))}for(var a=b,z=this.qa.length-1;0<=z;z--){var B=this.qa[z]; +0>B[1]||(B[1]-=a,0>=B[1]&&(B[1]=-1,B[3](),0<=B[2]&&Uc(this,z,B[2])))}}while(this.X.cb&&!this.X.Zf)}catch(N){Mc(this);Lc(this);this.pa&&this.pa.stop(ua(),Sc(this));mb(this,N.stack||N.message);return}if(this.X.cb){b=setTimeout;c=this.pi;this.V.Nd=ua();d=this.V.yi;this.V.Jf&&(d=Math.round(d*this.V.Jf/this.V.Ml));d-=this.V.Nd-this.V.Je;if(e=this.V.Nd-this.V.Zc)this.V.hd=Math.round(this.Tc/(10*e))/100,864E5<=e&&(this.Ic=0,this.U&&Xc(this.U,!0),Pc(this));if(0>d||this.V.hdd&&(this.V.Zc-= +d),d=0;this.V.Nd+=d;b(c,d)}}};function Nc(a,b){var c;a.X.error?(a.tb(a.toString()+" error"),c=!0):c=!1;if(c)return!1;if(a.X.cb)return a.tb(a.toString()+" busy"),!1;Pc(a);a.X.cb=!0;a.X.Pj=!0;a.U&&a.U.start();if(c=a.ia.run)c.textContent="Halt";a.pa&&(bd(a.pa,!0),b&&Tc(a.pa,!0),a.pa.start(a.V.Zc,Sc(a)));setTimeout(a.pi,0);return!0}l.th=function(){return 0}; +function Mc(a,b){if(a.X.cb){Vc(a);a.Ic+=a.Tc;a.Tc=0;a.X.cb=!1;a.U&&a.U.stop();var c=a.ia.run;c&&(c.textContent="Run");a.pa&&(a.pa.stop(Date.now()||+new Date,Sc(a)),bd(a.pa,!0));a.Da||a.status("Stopped")}a.X.complete=b}function Lc(a){a.pa&&bd(a.pa,void 0)}var Hc=30,Ec=["power","reset"]; +function cd(a,b,c,d){this.A=a;this.Da=a.Da;this.id=b;this.Xf=c||"";this.ha=0;this.jb=65535;this.C=this.jb+1;this.rb=this.jc=this.ext=this.nb=this.type=this.va=0;this.cc=-1;this.T=this.Jc=2;this.O=this.sa=65535;this.J=this.wi;this.I=this.H=this.xf;this.B={ha:-1,va:0,jb:0,nb:0,type:0,ext:0,cc:-1};1==this.id&&(this.Xe=0,this.D=null,this.ne=!1,this.G=Array(32),this.F=[]);dd(this,!0,d);this.id||(this.Jb=this.qb=this.ai)}l=cd.prototype;l.wi=function(a){this.ha=a&65535;return this.va=this.ha<<4}; +l.Ff=function(a,b){var c,d,e=this.A;a&=65535;a&4?(c=e.mc.va,d=c+e.mc.jb|0):(c=e.Ob,d=e.Oc);if(c){c=c+(a&65528)|0;if(d-c|0)return e.A-=15,ed(this,c,a,b);this.id>>0)+b>this.C&&(8088>=this.A.ca?this.A.K|=8:w.call(this.A,13));return this.va+a|0};l.$h=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(){w.call(this.A,13,0);return-1};l.bi=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(){w.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.Ob)+(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.Xe-1];if(z&&!z())return-1}var B=c&3,N=(g&24576)>>13,z=-1,P,Z;r|| +b>=e.Ob&&b=a.rb&&(B>a.rb&&(z=x(e),md(e,x(e),!0),A(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,Z=0,Bh||2048==(h&2560))return w.call(e,13,c&65532),-1;if(!(g&32768))return w.call(e,11,c&65532),-1}break;case gd:if(!r||4096>h||512!=(h&2560))return w.call(e,13,c&65532),-1;if(!(g&32768))return w.call(e,12,c&65532), +-1;break;case id:t=h&-513;if(!r||256!=t&&2304!=t)return w.call(e,13,c&65532),-1;2304==t&&(a.Uh=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.rb,f=d.la.ha,g=d.la.va;if(!c){if(!(d.la.type&512))return w.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 w.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,E(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.Ia.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.Ia.load(d.ga(h+40)),yd(d,d.ga(h+14),d.ga(h+36)),b=38,g=26,a.rb>>0)+1)}; +function dd(a,b,c,d){void 0===c&&(c=!!(a.A.oa&1));a.ke=!1;if(c)if(a.load=a.Ff,a.vi=a.Fl,a.qb=a.$h,a.Jb=a.bi,void 0===d&&(d=!!(a.A.N&131072)),d)a.load=a.J,a.qb=a.H,a.Jb=a.I,a.rb=a.jc=3,a.T=2,a.O=a.sa=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.qb=a.wf,a.Jb=a.yf;else if(a.type&4096){6144==(a.type&6656)&&(a.qb=a.wf);if(a.type&2048||!(a.type&512))a.Jb=a.yf;1024==(a.type&3072)&&(a.qb==a.$h&&(a.qb=a.fk),a.Jb==a.bi&&(a.Jb=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.sa=a.O)}else a.load=a.wi,a.vi=a.Gl,a.qb=a.xf,a.Jb=a.xf,a.rb=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?ha(a,16):0);this.Ph=61442;this.od=1792;this.Nh=28672;this.hf=4;this.Qa=255;this.B=80286<=this.ca?rb:qb;this.ta=Bd;this.Yh=Cd;this.Zh=Dd;this.ci=Ed;if(80186<=this.ca&&(this.ta=Bd.slice(),this.Yh=Cd.slice(),this.Zh=Dd.slice(),this.Qa=31,this.ta[15]=Fd,this.ta[96]=Gd,this.ta[97]=Hd,this.ta[98]=Id,this.ta[99]=Fd,this.ta[100]=Fd,this.ta[101]= +Fd,this.ta[102]=Fd,this.ta[103]=Fd,this.ta[104]=Jd,this.ta[105]=Kd,this.ta[106]=Ld,this.ta[107]=Md,this.ta[108]=Nd,this.ta[109]=Od,this.ta[110]=Pd,this.ta[111]=Qd,this.ta[192]=Rd,this.ta[193]=Sd,this.ta[200]=Td,this.ta[201]=Ud,this.ta[241]=Vd,this.Yh[7]=Wd,this.Zh[7]=Wd,80286<=this.ca)){this.Ph=2;this.od|=28672;this.hf=0;this.ta[15]=Xd;this.cd=Yd.slice();for(c=0;c=this.pd&&(this.cd[166]=fe,this.cd[167]=ge)}}this.lf=[];this.Th=[];this.ag=0;Ic(this);this.X.complete=this.X.hk=!1;this.ji=0;this.Nc=this.Y=[];this.Eb=this.Qh=this.Db=this.jf=this.ye=this.ze=this.Hc=0;he(this)}ba(Ad,Dc); +function Mb(a){var b;if(a.Y===a.Nc){a.Y=Array(a.jf);a.mf=new v(null,0,0,qc,null,a);Hb(a.mf,a.Da);for(b=0;b>>20,f=a.Nc[(a.dd+e&a.ze)>>>a.Eb],g=f.Qd(e);if(!(g&1))return d||je.call(a,b,!1,c),a.Be;if(!(g&4)&&3==a.La)return d||je.call(a,b,!0,c),a.Be;var h=(b&4190208)>>>10,g=a.Nc[((g&-4096)+h&a.ze)>>>a.Eb],k=g.Qd(h);if(!(k&1))return d||je.call(a,b,!1,c),a.Be;if(!(k&4)&&3==a.La)return d||je.call(a,b,!0,c),a.Be;c=a.Nc[((k&-4096)+(b&4095)&a.ze)>>>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.Ga=c.Ga,b.td=c.td,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.Da,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.Be=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:A(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.Ya=0;a.Jl=[0,0];a.Ol=[0,0];a.ua=0;a.gi=0;a.aa=0;a.oa=65520;a.Xb=0;a.Qc=1023;a.N=a.Zb=0;a.Zd=a.Ce=a.Yd=a.$d=0;a.sc=-1;a.Uc=a.uc=-1;a.Vc=a.ma=-1;a.fa=new cd(a,kd,"CS");a.Ia=new cd(a,vd,"DS");a.xa=new cd(a,vd,"ES");a.W=new cd(a,gd,"SS");A(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.oa=16;a.si=0;a.rd=0;a.dd=0; +a.Cb=[0,0,0,0,null,null,0,0];a.pf=[null,null,null,null,null,null,0,0];a.ub=new cd(a,vd,"FS");a.vb=new cd(a,vd,"GS");ke(a)}a.cg=new cd(a,0,"NULL");a.Ca=a.Ia;a.Gb=a.W;a.K=a.ba=0;a.C=a.D=-1;a.Ea=a.cg;a.Xa=0;if(80286>a.ca)yd(a,0,65535);else{a.Ob=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=E(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.Pb=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.Pb=a.Ra,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.sa=a.fa.sa;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+E(this)+this.fa.ha+this.Ia.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.Th[b];null!=c&&(c(--a.ag),delete a.Th[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.nh:f.ef,f.gf=f.H?f.oh:f.ph,f.ff=f.H?f.mh:f.R):--g.fe||(f=g,f.oc=f.Ad,f.Ye=f.Ze,f.Qd=f.gh)}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.oa&1));void 0===c&&(c=!!(a.N&131072));a.ci=b&&!c?Le:Ed;dd(a.fa,!1,b,c);dd(a.Ia,!1,b,c);dd(a.W,!1,b,c);dd(a.xa,!1,b,c);80386<=a.ca&&(dd(a.ub,!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=E(this),d=this.fa.save(),e=this.Ia.save(),f=this.W.save(),g=this.xa.save(),h;null!=this.Ob?(h=[this.oa,this.Ob,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.dd),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.ub.save()),c.push(this.vb.save()));b.set(1,c);b.set(2,[this.Ca.Xf, +this.Gb.Xf,this.K,this.ba,this.Xa,this.C,this.D]);b.set(3,[0,this.Ic,this.V.md,a,Wc(this)]);b.set(4,dc(this.na,!!(this.oa&-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.Ia.restore(b[2]);this.W.restore(b[3]);this.xa.restore(b[4]);var d=b[5];d&&d.length&&(this.oa=d[0],this.Ob=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.dd=d[10],this.Cb=d[11],this.pf=d[12]),pd(this));xd(this,b[6]);var d=!1,e;a:{e=this.na; +var f=a[4],g;for(g=0;g>>0)+(a.fa.jb>>>0)+1;a.La=a.fa.rb;He(a)} +function yd(a,b,c,d){var e=a.fa;e.Xe=b;e.D=d;b=e.load(c);return-1!==b?(Pe(a,b+(a.fa.Xe&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)):w.call(a,13,0));return c|0}function Re(a){a.da=a.Vc}function C(a){return a.lc&~a.W.sa|a.Aa-a.W.va}function A(a,b){a.lc=b;a.Aa=a.W.va+(b&a.W.sa)|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.Yd=b):(a.Zd=b,a.Yd=d);a.Ce=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.Ce)&(a.Ce^a.Yd))&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.Yd^a.Zd^a.Ce)&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.Yd)&(a.Ce^a.Yd)&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.oa&1|65520;a.oa=a.oa&-65536|b&65535;a.oa&1&&pd(a,!0)}function xd(a,b,c){a.oa&1||(b&=~a.Nh);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.Ph;a.N&256&&(a.Xa|=2,a.K|=4)} +function lf(a,b,c){var d=0;if(a.oa&1&&(a.La>a.Zb||a.N&131072)&&a.la.Uh)for(var e=a.la.Uh+(b>>>3),d=(1<>>=8,e++;return d?(w.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.Hc)>>>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.Ad(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.Hc)>>>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.Hc)>>>this.Eb;this.A-=this.B.Of;c>8&255,a+1))};l.Ra=function(a,b){var c=a&this.Db,d=(a&this.Hc)>>>this.Eb;this.A-=this.B.Of;if(c>>=8}};function nf(a,b,c){a.Ea=b;a.fb=c&a.sa;a.C=b.qb(a.fb,1);return a.K&1?0:a.Ha(a.C)} +function H(a,b){return nf(a,a.Ca,b)}function I(a,b){return nf(a,a.Gb,b)}function of(a,b,c){a.Ea=b;a.fb=c&a.sa;a.C=b.qb(a.fb,a.T);if(a.K&9){if(a.K&1)return 0;a=a.Ha(a.C)|a.Ha(b.qb(0,1))<<8}else a=a.mb(a.C);return a}function J(a,b){a.Ea=a.Ca;a.fb=b&a.sa;a.C=a.Ea.qb(a.fb,2);if(a.K&9){if(a.K&1)return 0;b=a.Ha(a.C)|a.Ha(a.Ea.qb(0,1))<<8;a.K&=-9}else b=a.ga(a.C);return b} +function K(a,b){a.Ea=a.Gb;a.fb=b&a.sa;a.C=a.Ea.qb(a.fb,2);if(a.K&9){if(a.K&1)return 0;b=a.Ha(a.C)|a.Ha(a.Ea.qb(0,1))<<8;a.K&=-9}else b=a.ga(a.C);return b}function L(a,b){a.Ea=a.Ca;a.fb=b&a.sa;a.C=a.Ea.qb(a.fb,4);return a.K&1?0:a.ea(a.C)}function M(a,b){a.Ea=a.Gb;a.fb=b&a.sa;a.C=a.Ea.qb(a.fb,4);return a.K&1?0:a.ea(a.C)}function pf(a,b){a.K&2||a.Bb(a.Ea.Jb(a.fb,1),b)}function qf(a,b){if(!(a.K&2)){var c=a.Ea.Jb(a.fb,2);a.K&8?(a.Bb(c,b),a.Bb(a.Ea.Jb(0,1),b>>8),a.K&=-9):a.Za(c,b)}} +function rf(a,b){a.K&2||a.Ra(a.Ea.Jb(a.fb,4),b)}function rd(a,b,c){c=b.qb(c,a.T);a.K&8?(b=a.Ha(c)|a.Ha(b.qb(0,1))<<8,a.K&=-9):b=a.mb(c);return b}function sf(a,b,c,d){c=b.Jb(c,a.T);a.K&8?(a.Bb(c,d),a.Bb(b.Jb(0,1),d>>8),a.K&=-9):a.Pb(c,d)}l.ka=function(){var a=Qe(this,1),b=this.Ha(this.da);this.da=a;return b};function tf(a){var b,c=Qe(a,2);a.K&8?(b=a.Ha(a.da)|a.Ha(c-1)<<8,a.K&=-9):b=a.ga(a.da);a.da=c;return b} +function O(a){var b,c=Qe(a,a.Jc);a.K&8?(b=a.Ha(a.da)|a.Ha(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.Ha(this.da)|this.Ha(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.Ha(this.da)<<24>>24;this.da=a;return b}; +function x(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?(A(a,a.Aa-a.W.va&a.W.sa),-1>c&&(b=b&255|a.Ha(a.Aa-1)<<8)):-1>c?w.call(a,12,0):(!a.W.ke&&a.W.jb==a.W.sa||a.W.ke&&!a.W.jb)&&A(a,a.Aa-a.W.va&a.W.sa));return b}function D(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);A(a,e-a.W.va&a.W.sa);a.Bb(a.Aa,b);return}if(!a.W.ke&&a.W.jb==a.W.sa||a.W.ke&&!a.W.jb){if(f>-c){w.call(a,12,0);return}A(a,e-a.W.va&a.W.sa);e=a.Aa}else{w.call(a,12,0);return}}switch(d){case 1:a.Bb(e,b);break;case 2:a.Za(e,b);break;case 4:a.Ra(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.Xa&1&&this.N&512){var c=vf(this.U);if(-1<=c&&(this.Xa&=-2,0<=c)){this.Xa&=-5;wf.call(this,c);break a}}break;case 1:if(this.Xa&2){this.Xa&=-3;80386<= +this.ca&&(this.Cb[6]|=16384);wf.call(this,1);break a}}a=1-a}}if(this.Xa&4){this.K=this.A=0;break}}this.K=0;this.ta[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.aa&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 Tf(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.kh=function(){this.R.Ra(this.R.C,this.G[0])};l.Oj=function(){this.R.Ra(this.R.C,this.G[0]);this.R.Ra(this.R.C+4,this.G[1])};function $f(a){a.R.Ra(a.R.C,a.D[0]);a.R.Ra(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.oa&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.Pb(b,a.F);c.Pb(b+=c.T,a.Z|a.B<<11);c.Pb(b+=c.T,zf(a));if(!(c.oa&1)||c.N&131072){var d=(a.L<<4)+a.I;c.Pb(b+=c.T,d);c.Pb(b+=c.T,d>>4&-4096|a.N);d=(a.M<<4)+a.J;c.Pb(b+=c.T,d);c.Pb(b+=c.T,d>>4&-4096)}else c.Pb(b+=c.T,a.I),c.Pb(b+=c.T,a.L|a.N<<16),c.Pb(b+=c.T,a.J),c.Pb(b+=c.T,a.M);return b+c.T}function hg(){this.Z&=-32896;Af(this)}function ig(){Nf(this,Q(this,0),Q(this,this.A))}function jg(){Nf(this,Q(this,0),Q(this,this.A))&&dg(this)}function kg(){jg.call(this)} +function lg(){R(this,0,Mf(this,Q(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(){R(this, +0,Q(this,0)%Q(this,1))},113:function(){R(this,1,Q(this,1)*Math.log(Q(this,0)+1)/Math.LN2)&&dg(this)},114:function(){var a=Q(this,0),b=null;if(0<=a||!Hf(this,1))b=Math.sqrt(a),If(this,b)||(b=null);R(this,0,b)},116:function(){R(this,0,Of(this,Q(this,0),Fg))},117:function(){var a=Q(this,0),b=Q(this,1);null!=a&&null!=b&&R(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,Q(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];La(function(){for(var a=bb(document,"pcx86","fpu"),b=0;b>16,c=c<<16>>16,d=d<<16>>16);this.A-=this.B.Ci;(bd)&&w.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.Ea,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.Ea,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.Ea,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.Ea,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.yg: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.yg: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.Vc;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.Ea.ha,b.J=f.C-f.Ea.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 S.call(this,a);w.call(this,13,0);return a}function Wd(a){w.call(this,6);return a} +function S(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.Ya=~this.Ya+(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.Ya!=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)w.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.Ia.ha;break;case 4:if(80386<=this.ca){b=this.ub.ha;break}w.call(this,6);b=a;break;case 5:if(80386<=this.ca){b=this.vb.ha;break}default:w.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.Ya=f+((d>>>16)+b*a)|0}else this.Ba=a*b|0,this.Ya=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 Zh.call(this,a,b,this.ka())}function $h(a,b){return ai.call(this,a,b,this.ka())}function bi(a,b){return Zh.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.$g:this.B.Te:this.B.Te;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.$g:this.B.Te:this.B.Te;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.bh}else this.D=this.C,pf(this,a),this.A-=this.B.ah;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:A(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.bh}else{this.D=this.C;if(!(this.K&2)){var c=this.Ea.Jb(this.fb,this.T);this.K&8?(this.Bb(c,a),this.Bb(this.Ea.Jb(0,1),a>>8),this.K&=-9):this.Pb(c, +a)}this.A-=this.B.ah}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.Ya=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.dd=a;this.oa&-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 Zh(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.Tg:this.B.Sg)+(a<this.sc?(-1!=this.Uc&&(this.Uc!==this.fa.ha&&(this.fa.rb=this.Uc&3,Oe(this,this.Uc)),this.Uc=-1),this.Vc!==this.da&&Pe(this,this.Vc),-1!=this.uc&&(this.uc!==this.W.ha&&md(this,this.uc),this.uc=-1),-1!==this.ma&&(this.ma!==this.Aa&&A(this,this.lc&~this.W.sa|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.Vc);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 "+ia(f,2,!0)+(null!=g?" ("+ia(g,4,!0)+")":"")+" on opcode "+ia(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.Vc=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);w.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=H(this,this.G+this.J);this.D=this.C;break;case 1:b=H(this,this.G+this.I);this.D=this.C;break;case 2:b=I(this,this.M+this.J);this.D=this.C;break;case 3:b=I(this,this.M+this.I);this.D=this.C;break;case 4:b=H(this,this.J);this.D=this.C;break;case 5:b=H(this,this.I);this.D=this.C;break;case 6:b=H(this,O(this));this.D=this.C;break;case 7:b=H(this,this.G);this.D=this.C;break;case 64:b=H(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:b=H(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=I(this,this.M+this.J+this.P());this.D=this.C;break;case 67:b=I(this,this.M+this.I+this.P());this.D=this.C;break;case 68:b=H(this,this.J+this.P());this.D=this.C;break;case 69:b=H(this,this.I+this.P());this.D=this.C;break;case 70:b=I(this,this.M+this.P());this.D=this.C;break;case 71:b=H(this,this.G+this.P());this.D=this.C;break;case 128:b=H(this,this.G+this.J+O(this));this.D=this.C;break;case 129:b=H(this,this.G+this.I+O(this)); +this.D=this.C;break;case 130:b=I(this,this.M+this.J+O(this));this.D=this.C;break;case 131:b=I(this,this.M+this.I+O(this));this.D=this.C;break;case 132:b=H(this,this.J+O(this));this.D=this.C;break;case 133:b=H(this,this.I+O(this));this.D=this.C;break;case 134:b=I(this,this.M+O(this));this.D=this.C;break;case 135:b=H(this,this.G+O(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.Kb;break;case 65:case 66:case 129:case 130:pf(this,a);this.A-=this.B.Lb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:pf(this,a);this.A-=this.B.Oa;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=H(this,this.G+this.J);this.D=this.C;break;case 1:c=H(this,this.G+this.I);this.D=this.C;break;case 2:c=I(this,this.M+this.J);this.D=this.C;break;case 3:c=I(this,this.M+this.I);this.D=this.C;break;case 4:c=H(this,this.J);this.D=this.C;break;case 5:c=H(this,this.I);this.D=this.C;break;case 6:c=H(this,O(this));this.D=this.C;break;case 7:c=H(this,this.G);this.D=this.C;break;case 64:c=H(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:c=H(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=I(this,this.M+this.J+this.P());this.D=this.C;break;case 67:c=I(this,this.M+this.I+this.P());this.D=this.C;break;case 68:c=H(this,this.J+this.P());this.D=this.C;break;case 69:c=H(this,this.I+this.P());this.D=this.C;break;case 70:c=I(this,this.M+this.P());this.D=this.C;break;case 71:c=H(this,this.G+this.P());this.D=this.C;break;case 128:c=H(this,this.G+this.J+O(this));this.D=this.C;break;case 129:c=H(this,this.G+this.I+O(this)); +this.D=this.C;break;case 130:c=I(this,this.M+this.J+O(this));this.D=this.C;break;case 131:c=I(this,this.M+this.I+O(this));this.D=this.C;break;case 132:c=H(this,this.J+O(this));this.D=this.C;break;case 133:c=H(this,this.I+O(this));this.D=this.C;break;case 134:c=I(this,this.M+O(this));this.D=this.C;break;case 135:c=H(this,this.G+O(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.Kb;break;case 65:case 66:case 129:case 130:pf(this,a);this.A-=this.B.Lb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:pf(this, +a);this.A-=this.B.Oa;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=J(this,this.G+this.J);this.A-=this.B.Bc;break;case 1:c=J(this,this.G+this.I);this.A-=this.B.Cc;break;case 2:c=K(this,this.M+this.J);this.A-=this.B.Cc;break;case 3:c=K(this,this.M+this.I);this.A-=this.B.Bc;break;case 4:c=J(this,this.J);this.A-=this.B.gc;break;case 5:c=J(this,this.I);this.A-=this.B.gc;break;case 6:c=J(this,O(this));this.A-=this.B.$c;break;case 7:c=J(this,this.G);this.A-=this.B.gc;break;case 64:c=J(this,this.G+this.J+this.P()); +this.A-=this.B.Kb;break;case 65:c=J(this,this.G+this.I+this.P());this.A-=this.B.Lb;break;case 66:c=K(this,this.M+this.J+this.P());this.A-=this.B.Lb;break;case 67:c=K(this,this.M+this.I+this.P());this.A-=this.B.Kb;break;case 68:c=J(this,this.J+this.P());this.A-=this.B.Oa;break;case 69:c=J(this,this.I+this.P());this.A-=this.B.Oa;break;case 70:c=K(this,this.M+this.P());this.A-=this.B.Oa;break;case 71:c=J(this,this.G+this.P());this.A-=this.B.Oa;break;case 128:c=J(this,this.G+this.J+O(this));this.A-=this.B.Kb; +break;case 129:c=J(this,this.G+this.I+O(this));this.A-=this.B.Lb;break;case 130:c=K(this,this.M+this.J+O(this));this.A-=this.B.Lb;break;case 131:c=K(this,this.M+this.I+O(this));this.A-=this.B.Kb;break;case 132:c=J(this,this.J+O(this));this.A-=this.B.Oa;break;case 133:c=J(this,this.I+O(this));this.A-=this.B.Oa;break;case 134:c=K(this,this.M+O(this));this.A-=this.B.Oa;break;case 135:c=J(this,this.G+O(this));this.A-=this.B.Oa;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:A(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=J(this,this.G+this.J);this.D=this.C;break;case 1:b=J(this,this.G+this.I);this.D=this.C;break;case 2:b=K(this,this.M+this.J);this.D=this.C;break;case 3:b=K(this,this.M+this.I);this.D=this.C;break;case 4:b=J(this,this.J);this.D=this.C;break;case 5:b=J(this,this.I);this.D=this.C;break;case 6:b=J(this,O(this));this.D=this.C;break;case 7:b=J(this,this.G);this.D=this.C;break;case 64:b=J(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:b=J(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=K(this,this.M+this.J+this.P());this.D=this.C;break;case 67:b=K(this,this.M+this.I+this.P());this.D=this.C;break;case 68:b=J(this,this.J+this.P());this.D=this.C;break;case 69:b=J(this,this.I+this.P());this.D=this.C;break;case 70:b=K(this,this.M+this.P());this.D=this.C;break;case 71:b=J(this,this.G+this.P());this.D=this.C;break;case 128:b=J(this,this.G+this.J+O(this));this.D=this.C;break;case 129:b=J(this,this.G+this.I+O(this)); +this.D=this.C;break;case 130:b=K(this,this.M+this.J+O(this));this.D=this.C;break;case 131:b=K(this,this.M+this.I+O(this));this.D=this.C;break;case 132:b=J(this,this.J+O(this));this.D=this.C;break;case 133:b=J(this,this.I+O(this));this.D=this.C;break;case 134:b=K(this,this.M+O(this));this.D=this.C;break;case 135:b=J(this,this.G+O(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.Kb;break;case 65:case 66:case 129:case 130:qf(this,a);this.A-=this.B.Lb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:qf(this,a);this.A-=this.B.Oa;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:A(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=J(this,this.G+this.J);this.D=this.C;break;case 1:c=J(this,this.G+this.I);this.D=this.C;break;case 2:c=K(this,this.M+this.J);this.D=this.C;break;case 3:c=K(this,this.M+this.I);this.D=this.C;break;case 4:c=J(this,this.J);this.D=this.C;break;case 5:c=J(this,this.I);this.D=this.C;break;case 6:c=J(this,O(this));this.D=this.C;break;case 7:c=J(this,this.G);this.D=this.C;break;case 64:c=J(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:c=J(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=K(this,this.M+this.J+this.P());this.D=this.C;break;case 67:c=K(this,this.M+this.I+this.P());this.D=this.C;break;case 68:c=J(this,this.J+this.P());this.D=this.C;break;case 69:c=J(this,this.I+this.P());this.D=this.C;break;case 70:c=K(this,this.M+this.P());this.D=this.C;break;case 71:c=J(this,this.G+this.P());this.D=this.C;break;case 128:c=J(this,this.G+this.J+O(this));this.D=this.C;break;case 129:c=J(this,this.G+this.I+O(this)); +this.D=this.C;break;case 130:c=K(this,this.M+this.J+O(this));this.D=this.C;break;case 131:c=K(this,this.M+this.I+O(this));this.D=this.C;break;case 132:c=J(this,this.J+O(this));this.D=this.C;break;case 133:c=J(this,this.I+O(this));this.D=this.C;break;case 134:c=K(this,this.M+O(this));this.D=this.C;break;case 135:c=J(this,this.G+O(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.Kb;break;case 65:case 66:case 129:case 130:qf(this,a);this.A-=this.B.Lb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:qf(this, +a);this.A-=this.B.Oa;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:A(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=L(this,this.G+this.J);this.A-=this.B.Bc;break;case 1:c=L(this,this.G+this.I);this.A-=this.B.Cc;break;case 2:c=M(this,this.M+this.J);this.A-=this.B.Cc;break;case 3:c=M(this,this.M+this.I);this.A-=this.B.Bc;break;case 4:c=L(this,this.J);this.A-=this.B.gc;break;case 5:c=L(this,this.I);this.A-=this.B.gc;break;case 6:c=L(this,O(this));this.A-=this.B.$c;break;case 7:c=L(this,this.G);this.A-=this.B.gc;break;case 64:c=L(this,this.G+this.J+this.P()); +this.A-=this.B.Kb;break;case 65:c=L(this,this.G+this.I+this.P());this.A-=this.B.Lb;break;case 66:c=M(this,this.M+this.J+this.P());this.A-=this.B.Lb;break;case 67:c=M(this,this.M+this.I+this.P());this.A-=this.B.Kb;break;case 68:c=L(this,this.J+this.P());this.A-=this.B.Oa;break;case 69:c=L(this,this.I+this.P());this.A-=this.B.Oa;break;case 70:c=M(this,this.M+this.P());this.A-=this.B.Oa;break;case 71:c=L(this,this.G+this.P());this.A-=this.B.Oa;break;case 128:c=L(this,this.G+this.J+O(this));this.A-=this.B.Kb; +break;case 129:c=L(this,this.G+this.I+O(this));this.A-=this.B.Lb;break;case 130:c=M(this,this.M+this.J+O(this));this.A-=this.B.Lb;break;case 131:c=M(this,this.M+this.I+O(this));this.A-=this.B.Kb;break;case 132:c=L(this,this.J+O(this));this.A-=this.B.Oa;break;case 133:c=L(this,this.I+O(this));this.A-=this.B.Oa;break;case 134:c=M(this,this.M+O(this));this.A-=this.B.Oa;break;case 135:c=L(this,this.G+O(this));this.A-=this.B.Oa;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:A(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=L(this,this.G+this.J);this.D=this.C;break;case 1:b=L(this,this.G+this.I);this.D=this.C;break;case 2:b=M(this,this.M+this.J);this.D=this.C;break;case 3:b=M(this,this.M+this.I);this.D=this.C;break;case 4:b=L(this,this.J);this.D=this.C;break;case 5:b=L(this,this.I);this.D=this.C;break;case 6:b=L(this,O(this));this.D=this.C;break;case 7:b=L(this,this.G);this.D=this.C;break;case 64:b=L(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:b=L(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=M(this,this.M+this.J+this.P());this.D=this.C;break;case 67:b=M(this,this.M+this.I+this.P());this.D=this.C;break;case 68:b=L(this,this.J+this.P());this.D=this.C;break;case 69:b=L(this,this.I+this.P());this.D=this.C;break;case 70:b=M(this,this.M+this.P());this.D=this.C;break;case 71:b=L(this,this.G+this.P());this.D=this.C;break;case 128:b=L(this,this.G+this.J+O(this));this.D=this.C;break;case 129:b=L(this,this.G+this.I+O(this)); +this.D=this.C;break;case 130:b=M(this,this.M+this.J+O(this));this.D=this.C;break;case 131:b=M(this,this.M+this.I+O(this));this.D=this.C;break;case 132:b=L(this,this.J+O(this));this.D=this.C;break;case 133:b=L(this,this.I+O(this));this.D=this.C;break;case 134:b=M(this,this.M+O(this));this.D=this.C;break;case 135:b=L(this,this.G+O(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.Kb;break;case 65:case 66:case 129:case 130:rf(this,a);this.A-=this.B.Lb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:rf(this,a);this.A-=this.B.Oa;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:A(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=L(this,this.G+this.J);this.D=this.C;break;case 1:c=L(this,this.G+this.I);this.D=this.C;break;case 2:c=M(this,this.M+this.J);this.D=this.C;break;case 3:c=M(this,this.M+this.I);this.D=this.C;break;case 4:c=L(this,this.J);this.D=this.C;break;case 5:c=L(this,this.I);this.D=this.C;break;case 6:c=L(this,O(this));this.D=this.C;break;case 7:c=L(this,this.G);this.D=this.C;break;case 64:c=L(this,this.G+this.J+this.P());this.D=this.C;break; +case 65:c=L(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=M(this,this.M+this.J+this.P());this.D=this.C;break;case 67:c=M(this,this.M+this.I+this.P());this.D=this.C;break;case 68:c=L(this,this.J+this.P());this.D=this.C;break;case 69:c=L(this,this.I+this.P());this.D=this.C;break;case 70:c=M(this,this.M+this.P());this.D=this.C;break;case 71:c=L(this,this.G+this.P());this.D=this.C;break;case 128:c=L(this,this.G+this.J+O(this));this.D=this.C;break;case 129:c=L(this,this.G+this.I+O(this)); +this.D=this.C;break;case 130:c=M(this,this.M+this.J+O(this));this.D=this.C;break;case 131:c=M(this,this.M+this.I+O(this));this.D=this.C;break;case 132:c=L(this,this.J+O(this));this.D=this.C;break;case 133:c=L(this,this.I+O(this));this.D=this.C;break;case 134:c=M(this,this.M+O(this));this.D=this.C;break;case 135:c=L(this,this.G+O(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.Kb;break;case 65:case 66:case 129:case 130:rf(this,a);this.A-=this.B.Lb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:rf(this, +a);this.A-=this.B.Oa;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:A(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=H(this,this.F);break;case 1:c=H(this,this.H);break;case 2:c=H(this,this.L);break;case 3:c=H(this,this.G);break;case 4:c=H(this,Ci.call(this,0));break;case 5:c=H(this,O(this));break;case 6:c=H(this,this.J);break;case 7:c=H(this,this.I);break;case 64:c=H(this,this.F+this.P());break;case 65:c=H(this,this.H+this.P());break;case 66:c=H(this,this.L+this.P());break;case 67:c=H(this,this.G+this.P());break;case 68:c=H(this,Ci.call(this,1)+this.P()); +break;case 69:c=I(this,this.M+this.P());break;case 70:c=H(this,this.J+this.P());break;case 71:c=H(this,this.I+this.P());break;case 128:c=H(this,this.F+O(this));break;case 129:c=H(this,this.H+O(this));break;case 130:c=H(this,this.L+O(this));break;case 131:c=H(this,this.G+O(this));break;case 132:c=H(this,Ci.call(this,2)+O(this));break;case 133:c=I(this,this.M+O(this));break;case 134:c=H(this,this.J+O(this));break;case 135:c=H(this,this.I+O(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=H(this,this.F);this.D=this.C;break;case 1:b=H(this,this.H);this.D=this.C;break;case 2:b=H(this,this.L);this.D=this.C;break;case 3:b=H(this,this.G);this.D=this.C;break;case 4:b=H(this,Ci.call(this,0));this.D=this.C;break;case 5:b=H(this,O(this));this.D=this.C;break;case 6:b=H(this,this.J);this.D=this.C;break;case 7:b=H(this,this.I);this.D=this.C;break;case 64:b=H(this,this.F+this.P());this.D=this.C;break;case 65:b=H(this,this.H+this.P()); +this.D=this.C;break;case 66:b=H(this,this.L+this.P());this.D=this.C;break;case 67:b=H(this,this.G+this.P());this.D=this.C;break;case 68:b=H(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:b=I(this,this.M+this.P());this.D=this.C;break;case 70:b=H(this,this.J+this.P());this.D=this.C;break;case 71:b=H(this,this.I+this.P());this.D=this.C;break;case 128:b=H(this,this.F+O(this));this.D=this.C;break;case 129:b=H(this,this.H+O(this));this.D=this.C;break;case 130:b=H(this,this.L+O(this));this.D= +this.C;break;case 131:b=H(this,this.G+O(this));this.D=this.C;break;case 132:b=H(this,Ci.call(this,2)+O(this));this.D=this.C;break;case 133:b=I(this,this.M+O(this));this.D=this.C;break;case 134:b=H(this,this.J+O(this));this.D=this.C;break;case 135:b=H(this,this.I+O(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=H(this,this.F);this.D=this.C;break;case 1:c=H(this,this.H);this.D=this.C;break;case 2:c=H(this,this.L);this.D=this.C;break;case 3:c=H(this,this.G);this.D=this.C;break;case 4:c=H(this,Ci.call(this,0));this.D=this.C;break;case 5:c=H(this,O(this));this.D=this.C;break;case 6:c=H(this,this.J);this.D=this.C;break;case 7:c=H(this,this.I);this.D=this.C;break;case 64:c=H(this,this.F+this.P());this.D=this.C;break;case 65:c=H(this,this.H+this.P()); +this.D=this.C;break;case 66:c=H(this,this.L+this.P());this.D=this.C;break;case 67:c=H(this,this.G+this.P());this.D=this.C;break;case 68:c=H(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:c=I(this,this.M+this.P());this.D=this.C;break;case 70:c=H(this,this.J+this.P());this.D=this.C;break;case 71:c=H(this,this.I+this.P());this.D=this.C;break;case 128:c=H(this,this.F+O(this));this.D=this.C;break;case 129:c=H(this,this.H+O(this));this.D=this.C;break;case 130:c=H(this,this.L+O(this));this.D= +this.C;break;case 131:c=H(this,this.G+O(this));this.D=this.C;break;case 132:c=H(this,Ci.call(this,2)+O(this));this.D=this.C;break;case 133:c=I(this,this.M+O(this));this.D=this.C;break;case 134:c=H(this,this.J+O(this));this.D=this.C;break;case 135:c=H(this,this.I+O(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=J(this,this.F);break;case 1:c=J(this,this.H);break;case 2:c=J(this,this.L);break;case 3:c=J(this,this.G);break;case 4:c=J(this,Ci.call(this,0));break;case 5:c=J(this,O(this));break;case 6:c=J(this,this.J);break;case 7:c=J(this,this.I);break;case 64:c=J(this,this.F+this.P());break;case 65:c=J(this,this.H+this.P());break;case 66:c=J(this,this.L+this.P());break;case 67:c=J(this,this.G+this.P());break;case 68:c=J(this,Ci.call(this,1)+this.P()); +break;case 69:c=K(this,this.M+this.P());break;case 70:c=J(this,this.J+this.P());break;case 71:c=J(this,this.I+this.P());break;case 128:c=J(this,this.F+O(this));break;case 129:c=J(this,this.H+O(this));break;case 130:c=J(this,this.L+O(this));break;case 131:c=J(this,this.G+O(this));break;case 132:c=J(this,Ci.call(this,2)+O(this));break;case 133:c=K(this,this.M+O(this));break;case 134:c=J(this,this.J+O(this));break;case 135:c=J(this,this.I+O(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:A(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=J(this,this.F);this.D=this.C;break;case 1:b=J(this,this.H);this.D=this.C;break;case 2:b=J(this,this.L);this.D=this.C;break;case 3:b=J(this,this.G);this.D=this.C;break;case 4:b=J(this,Ci.call(this,0));this.D=this.C;break;case 5:b=J(this,O(this));this.D=this.C;break;case 6:b=J(this,this.J);this.D=this.C;break;case 7:b=J(this,this.I);this.D=this.C;break;case 64:b=J(this,this.F+this.P());this.D=this.C;break;case 65:b=J(this,this.H+this.P()); +this.D=this.C;break;case 66:b=J(this,this.L+this.P());this.D=this.C;break;case 67:b=J(this,this.G+this.P());this.D=this.C;break;case 68:b=J(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:b=K(this,this.M+this.P());this.D=this.C;break;case 70:b=J(this,this.J+this.P());this.D=this.C;break;case 71:b=J(this,this.I+this.P());this.D=this.C;break;case 128:b=J(this,this.F+O(this));this.D=this.C;break;case 129:b=J(this,this.H+O(this));this.D=this.C;break;case 130:b=J(this,this.L+O(this));this.D= +this.C;break;case 131:b=J(this,this.G+O(this));this.D=this.C;break;case 132:b=J(this,Ci.call(this,2)+O(this));this.D=this.C;break;case 133:b=K(this,this.M+O(this));this.D=this.C;break;case 134:b=J(this,this.J+O(this));this.D=this.C;break;case 135:b=J(this,this.I+O(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:A(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=J(this,this.F);this.D=this.C;break;case 1:c=J(this,this.H);this.D=this.C;break;case 2:c=J(this,this.L);this.D=this.C;break;case 3:c=J(this,this.G);this.D=this.C;break;case 4:c=J(this,Ci.call(this,0));this.D=this.C;break;case 5:c=J(this,O(this));this.D=this.C;break;case 6:c=J(this,this.J);this.D=this.C;break;case 7:c=J(this,this.I);this.D=this.C;break;case 64:c=J(this,this.F+this.P());this.D=this.C;break;case 65:c=J(this,this.H+this.P()); +this.D=this.C;break;case 66:c=J(this,this.L+this.P());this.D=this.C;break;case 67:c=J(this,this.G+this.P());this.D=this.C;break;case 68:c=J(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:c=K(this,this.M+this.P());this.D=this.C;break;case 70:c=J(this,this.J+this.P());this.D=this.C;break;case 71:c=J(this,this.I+this.P());this.D=this.C;break;case 128:c=J(this,this.F+O(this));this.D=this.C;break;case 129:c=J(this,this.H+O(this));this.D=this.C;break;case 130:c=J(this,this.L+O(this));this.D= +this.C;break;case 131:c=J(this,this.G+O(this));this.D=this.C;break;case 132:c=J(this,Ci.call(this,2)+O(this));this.D=this.C;break;case 133:c=K(this,this.M+O(this));this.D=this.C;break;case 134:c=J(this,this.J+O(this));this.D=this.C;break;case 135:c=J(this,this.I+O(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:A(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=L(this,this.F);break;case 1:c=L(this,this.H);break;case 2:c=L(this,this.L);break;case 3:c=L(this,this.G);break;case 4:c=L(this,Ci.call(this,0));break;case 5:c=L(this,O(this));break;case 6:c=L(this,this.J);break;case 7:c=L(this,this.I);break;case 64:c=L(this,this.F+this.P());break;case 65:c=L(this,this.H+this.P());break;case 66:c=L(this,this.L+this.P());break;case 67:c=L(this,this.G+this.P());break;case 68:c=L(this,Ci.call(this,1)+this.P()); +break;case 69:c=M(this,this.M+this.P());break;case 70:c=L(this,this.J+this.P());break;case 71:c=L(this,this.I+this.P());break;case 128:c=L(this,this.F+O(this));break;case 129:c=L(this,this.H+O(this));break;case 130:c=L(this,this.L+O(this));break;case 131:c=L(this,this.G+O(this));break;case 132:c=L(this,Ci.call(this,2)+O(this));break;case 133:c=M(this,this.M+O(this));break;case 134:c=L(this,this.J+O(this));break;case 135:c=L(this,this.I+O(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:A(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=L(this,this.F);this.D=this.C;break;case 1:b=L(this,this.H);this.D=this.C;break;case 2:b=L(this,this.L);this.D=this.C;break;case 3:b=L(this,this.G);this.D=this.C;break;case 4:b=L(this,Ci.call(this,0));this.D=this.C;break;case 5:b=L(this,O(this));this.D=this.C;break;case 6:b=L(this,this.J);this.D=this.C;break;case 7:b=L(this,this.I);this.D=this.C;break;case 64:b=L(this,this.F+this.P());this.D=this.C;break;case 65:b=L(this,this.H+this.P()); +this.D=this.C;break;case 66:b=L(this,this.L+this.P());this.D=this.C;break;case 67:b=L(this,this.G+this.P());this.D=this.C;break;case 68:b=L(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:b=M(this,this.M+this.P());this.D=this.C;break;case 70:b=L(this,this.J+this.P());this.D=this.C;break;case 71:b=L(this,this.I+this.P());this.D=this.C;break;case 128:b=L(this,this.F+O(this));this.D=this.C;break;case 129:b=L(this,this.H+O(this));this.D=this.C;break;case 130:b=L(this,this.L+O(this));this.D= +this.C;break;case 131:b=L(this,this.G+O(this));this.D=this.C;break;case 132:b=L(this,Ci.call(this,2)+O(this));this.D=this.C;break;case 133:b=M(this,this.M+O(this));this.D=this.C;break;case 134:b=L(this,this.J+O(this));this.D=this.C;break;case 135:b=L(this,this.I+O(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:A(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=L(this,this.F);this.D=this.C;break;case 1:c=L(this,this.H);this.D=this.C;break;case 2:c=L(this,this.L);this.D=this.C;break;case 3:c=L(this,this.G);this.D=this.C;break;case 4:c=L(this,Ci.call(this,0));this.D=this.C;break;case 5:c=L(this,O(this));this.D=this.C;break;case 6:c=L(this,this.J);this.D=this.C;break;case 7:c=L(this,this.I);this.D=this.C;break;case 64:c=L(this,this.F+this.P());this.D=this.C;break;case 65:c=L(this,this.H+this.P()); +this.D=this.C;break;case 66:c=L(this,this.L+this.P());this.D=this.C;break;case 67:c=L(this,this.G+this.P());this.D=this.C;break;case 68:c=L(this,Ci.call(this,1)+this.P());this.D=this.C;break;case 69:c=M(this,this.M+this.P());this.D=this.C;break;case 70:c=L(this,this.J+this.P());this.D=this.C;break;case 71:c=L(this,this.I+this.P());this.D=this.C;break;case 128:c=L(this,this.F+O(this));this.D=this.C;break;case 129:c=L(this,this.H+O(this));this.D=this.C;break;case 130:c=L(this,this.L+O(this));this.D= +this.C;break;case 131:c=L(this,this.G+O(this));this.D=this.C;break;case 132:c=L(this,Ci.call(this,2)+O(this));this.D=this.C;break;case 133:c=M(this,this.M+O(this));this.D=this.C;break;case 134:c=L(this,this.J+O(this));this.D=this.C;break;case 135:c=L(this,this.I+O(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:A(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=O(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.Od},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(){A(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(){A(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(){D(this,this.F&this.O);this.A-= +this.B.tc},function(){D(this,this.H&this.O);this.A-=this.B.tc},function(){D(this,this.L&this.O);this.A-=this.B.tc},function(){D(this,this.G&this.O);this.A-=this.B.tc},function(){D(this,C(this)-2&65535);this.A-=this.B.tc},function(){D(this,this.M&this.O);this.A-=this.B.tc},function(){D(this,this.J&this.O);this.A-=this.B.tc},function(){D(this,this.I&this.O);this.A-=this.B.tc},function(){this.F=this.F&~this.O|x(this);this.A-=this.B.ac},function(){this.H=this.H&~this.O|x(this);this.A-=this.B.ac},function(){this.L= +this.L&~this.O|x(this);this.A-=this.B.ac},function(){this.G=this.G&~this.O|x(this);this.A-=this.B.ac},function(){A(this,C(this)&~this.O|x(this));this.A-=this.B.ac},function(){this.M=this.M&~this.O|x(this);this.A-=this.B.ac},function(){this.J=this.J&~this.O|x(this);this.A-=this.B.ac},function(){this.I=this.I&~this.O|x(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);A(this,this.ua);80386<=this.ca?this.ub.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=x(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;A(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?w.call(this, +13,0):(D(this,a&-196609),this.A-=this.B.tc)},function(){if(this.N&131072&&3>this.Zb)w.call(this,13,0);else{var a=x(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.Mb},function(){this.F=this.F&-65281|(wd(this)&213)<<8;this.A-=this.B.Mb}, +function(){var a=this.F&-256,b;b=O(this);b=this.Ha(this.Ca.qb(b,1));this.F=a|b;this.A-=this.B.Ig},function(){this.F=this.F&~this.O|rd(this,this.Ca,O(this));this.A-=this.B.Ig},function(){var a=O(this),b=this.F;this.Bb(this.Ca.Jb(a,1),b);this.A-=this.B.Jg},function(){sf(this,this.Ca,O(this),this.F);this.A-=this.B.Jg},function(){var a=1,b=0,c=this.sa,d=this.B.Kg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Mg,this.ba&256||(this.A-=this.B.Lg));if(a--){var e=this.Ha(this.Ca.qb(this.J&c,1));this.Bb(this.xa.Jb(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.sa,d=this.B.Kg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Mg,this.ba&256||(this.A-=this.B.Lg));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.sa,d=this.B.vg;this.ba&192&&(a=this.H&c,b=1,d=this.B.xg,this.ba&256||(this.A-=this.B.wg));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.sa,d=this.B.vg;this.ba&192&&(a=this.H&c,b=1,d=this.B.xg,this.ba&256||(this.A-=this.B.wg));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.Od},function(){Ze(this,this.F&this.ya(),this.wb);this.A-=this.B.Od},function(){var a=1,b=0,c=this.sa,d=this.B.Vg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Xg,this.ba&256||(this.A-= +this.B.Wg));if(a--){var e=this.F;this.Bb(this.xa.Jb(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.Ha(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.sa,d=this.B.Vg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Xg,this.ba&256||(this.A-=this.B.Wg));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.sa,d=this.B.Cg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Eg,this.ba&256||(this.A-=this.B.Dg));if(a--){var e=this.Ha(this.Ca.qb(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.sa,d=this.B.Cg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Eg,this.ba&256||(this.A-=this.B.Dg));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.sa,d=this.B.Pg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Rg,this.ba&256||(this.A-=this.B.Qg));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.sa,d=this.B.Pg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Rg,this.ba&256||(this.A-=this.B.Qg));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.Mb},function(){this.H=this.H&-256|this.ka();this.A-=this.B.Mb},function(){this.L=this.L&-256|this.ka(); +this.A-=this.B.Mb},function(){this.G=this.G&-256|this.ka();this.A-=this.B.Mb},function(){this.F=this.F&-65281|this.ka()<<8;this.A-=this.B.Mb},function(){this.H=this.H&-65281|this.ka()<<8;this.A-=this.B.Mb},function(){this.L=this.L&-65281|this.ka()<<8;this.A-=this.B.Mb},function(){this.G=this.G&-65281|this.ka()<<8;this.A-=this.B.Mb},function(){this.F=this.F&~this.O|this.ya();this.A-=this.B.Mb},function(){this.H=this.H&~this.O|this.ya();this.A-=this.B.Mb},function(){this.L=this.L&~this.O|this.ya(); +this.A-=this.B.Mb},function(){this.G=this.G&~this.O|this.ya();this.A-=this.B.Mb},function(){A(this,C(this)&~this.O|this.ya());this.A-=this.B.Mb},function(){this.M=this.M&~this.O|this.ya();this.A-=this.B.Mb},function(){this.J=this.J&~this.O|this.ya();this.A-=this.B.Mb},function(){this.I=this.I&~this.O|this.ya();this.A-=this.B.Mb},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)w.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)w.call(this,13,0);else{var b;a:{b=this.lf[a];if(void 0!==b)for(var c=0;cthis.Zb)w.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)w.call(this,13,0);else{this.uc=this.W.ha;this.ma=this.Aa;this.A-=this.B.Wi;if(this.oa&1&&this.N&16384){var a=this.ga(this.la.va+0);nd(this.fa,a,!1)}else{var a=this.La,b=x(this),c=x(this),d=x(this);if(this.N&131072)d=d&131071|this.N&-131072;else if(d&131072){var e=x(this),f=x(this),g=x(this),h=x(this),k=x(this),m=x(this);pd(this,!0,!0);md(this,f);A(this,e);ud(this,g);td(this,h);this.ub.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.sa;this.H=this.H&~this.sa|b;b&&!We(this)?(G(this,E(this)+a),this.A-=this.B.gj):this.A-=this.B.Fg}, +function(){var a=this.P(),b=this.H-1&this.sa;this.H=this.H&~this.sa|b;b&&We(this)?(G(this,E(this)+a),this.A-=this.B.Gg):this.A-=this.B.Hg},function(){var a=this.P(),b=this.H-1&this.sa;this.H=this.H&~this.sa|b;b?(G(this,E(this)+a),this.A-=this.B.fj):this.A-=this.B.Fg},function(){var a=this.P();this.H&this.sa?this.A-=this.B.Hg:(G(this,E(this)+a),this.A-=this.B.Gg)},function(){var a=this.ka();lf(this,a,1)&&(this.F=this.F&-256|fc(this.na,a,1,this.da-2)&255,this.A-=this.B.Ag)},function(){var a=this.ka(); +lf(this,a,this.T)&&(this.F=this.F&~this.O|fc(this.na,a,this.T,this.da-2)&this.O,this.A-=this.B.Ag)},function(){var a=this.ka();lf(this,a,1)&&(hc(this.na,a,1,this.F&255,this.da-2),this.A-=this.B.Og)},function(){var a=this.ka();lf(this,a,this.T)&&(hc(this.na,a,this.T,this.F&this.O,this.da-2),this.A-=this.B.Og)},function(){var a=this.ya(),b=E(this),a=b+a;D(this,b);G(this,a);this.A-=this.B.Fi},function(){var a=this.ya();G(this,E(this)+a);this.A-=this.B.Bg},function(){yd(this,this.ya(),tf(this));this.A-= +this.B.bj},function(){var a=this.P();G(this,E(this)+a);this.A-=this.B.Bg},function(){var a=this.L&65535;lf(this,a,1)&&(this.F=this.F&-256|fc(this.na,a,1,this.da-1)&255,this.A-=this.B.zg)},function(){var a=this.L&65535;lf(this,a,this.T)&&(this.F=this.F&~this.O|fc(this.na,a,this.T,this.da-1)&this.O,this.A-=this.B.zg)},function(){var a=this.L&65535;lf(this,a,1)&&(hc(this.na,a,1,this.F&255,this.da-1),this.A-=this.B.Ng)},function(){var a=this.L&65535;lf(this,a,2)&&(hc(this.na,a,this.T,this.F&this.O,this.da- +1),this.A-=this.B.Ng)},gj,gj,function(){this.K|=132;this.A-=this.B.Gc},function(){this.K|=68;this.A-=this.B.Gc},function(){this.N&131072?w.call(this,13,0):(this.Xa|=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.Ya&this.O)},function(){af(this);this.A-= +2},function(){$e(this);this.A-=2},function(){this.La>this.Zb?w.call(this,13,0):(this.N&=-513,this.A-=this.B.Di)},function(){this.La>this.Zb?w.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},S,S,S,S,S,S,S],Zi=[function(a,b){var c=a;if(b&=this.Qa){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.Qa){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.Qa){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.Qa){var d=0;8>>b-1,a=b>>>1&255,Ze(this,a,128,b&1,a&128);return a},S,function(a,b){if(b&=this.Qa)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.Qa){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.Qa){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.Qa){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.Qa){var d=0;16>>b-1,a=b>>>1&65535,Ze(this,a,32768,b&1,a&32768);return a},S,function(a,b){if(b&=this.Qa)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.Qa)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.Qa)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.Qa)a<<=b-1,c=a<<1,Ze(this,c,-2147483648,a&-2147483648,(c^a)&-2147483648);return c},function(a,b){if(b&=this.Qa)b=a>>>b-1,a=b>>>1,Ze(this,a,-2147483648,b&1,a&-2147483648);return a},S,function(a,b){if(b&=this.Qa)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.Zg:this.B.Yg;this.K|=2;return a}, +S,function(a){this.A-=-1===this.C?this.B.Se:this.B.Re;return a^255},function(a){var b=-a|0;Se(this,0,a,b,191,!0);this.A-=-1===this.C?this.B.Se:this.B.Re;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.Zg:this.B.Yg;this.K|=2;return a},S,function(a){this.A-=-1===this.C?this.B.Se:this.B.Re;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.Se:this.B.Re;return b&this.O},function(a,b){2==this.T?(b=this.F&65535,b=b*a|0,this.Ba=b&65535,this.Ya=b>>16&65535):(ih.call(this,a,this.F),80563==this.pd&&68657152==this.F&&129==a&&(this.Ya=0));this.Ya?($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.Ya=b>>16&65535,b=32767b):(hh.call(this,a,this.F),b=this.Ya!=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.Ya=b%a&65535}else{if(!pi.call(this, +this.F,this.L,a))return Bi.call(this),a;this.Ba|=0;this.Ya|=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.Ya=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.Ya>2147483647+f? +b=!1:(e&&(this.Ba=-this.Ba),f&&(this.Ya=-this.Ya),b=!0);if(!b)return Bi.call(this),a;this.Ba|=0;this.Ya|=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.Qe:this.B.Pe;return b&255},function(a){var b=a-1|0;Se(this,a,1,b,190,!0);this.A-=-1===this.C?this.B.Qe:this.B.Pe;return b&255},S,S,S,S,S,S],Dd=[function(a){var b=a+1|0;Se(this,a,1,b,this.wb|62);this.A-=-1===this.C?this.B.Qe:this.B.Pe;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.Qe:this.B.Pe;return b&this.O},function(a){D(this,E(this));G(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 S.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){G(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 S.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));D(this,b);this.A-=-1===this.C?this.B.tc:this.B.tj;this.K|=2;return a},S];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.Ha(this.da)&56)&&(this.K|=1);this.eb.call(this,this.ci,vi)};Yd[1]=function(){this.Ha(this.da)&16||(this.K|=1);this.eb.call(this,mj,vi)}; +Yd[2]=function(){!(this.oa&1)||this.N&131072?w.call(this,6):this.ja.call(this,jh)};Yd[3]=function(){!(this.oa&1)||this.N&131072?w.call(this,6):this.ja.call(this,ph)}; +Yd[5]=function(){this.La?w.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.Ia,2120,this.ga(2078)),xd(this,this.ga(2072)),G(this,this.ga(2074)),A(this,this.ga(2092)),this.Ob=this.ga(2126)|this.Ha(2128)<<16,this.Oc=this.Ob+this.ga(2130),this.Xb=this.ga(2138)| +this.Ha(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?w.call(this,13,0):(this.oa&=-9,this.A-=2)};Yd[11]=Fd;Yd[166]=Fd;Yd[255]=Fd;var F=[];F[5]=Fd; +F[7]=function(){if(this.La)w.call(this,13,0,0,!0);else{var a=this.xa.qb(this.I&this.sa,204);if(-1!==a){this.oa=this.ea(a);pd(this);this.oa&-2147483648?Mb(this):ke(this);var b=this.ea(a+168),c=(b&24576)>>13;xd(this,this.ea(a+4),c);this.Ob=this.ea(a+112);this.Oc=this.Ob+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.ub,this.ea(a+64),this.ea(a+144),this.ea(a+148),this.ea(a+152));hd(this.Ia,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));G(this,this.ea(a+8));A(this,this.ea(a+24))}this.A-=122<<(a&3?1:0)}};F[16]=Vi;F[17]=Wi;F[18]=Xi;F[19]=Yi;F[32]=function(){if(this.La)w.call(this,13,0);else{var a,b=this.ka();switch((b&56)>>3){case 0:a=this.oa;break;case 2:a=this.rd;break;case 3:a=this.dd;break;default:Zd.call(this);return}me(this,b&7,a);this.A-=6}};F[33]=function(){if(this.La)w.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)}}; +F[34]=function(){if(this.La)w.call(this,13,0);else{var a=this.ka(),b=le(this,a&7);switch((a&56)>>3){case 0:this.oa=b;pd(this);this.oa&-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)}}};F[35]=function(){if(this.La)w.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)}}; +F[36]=function(){if(this.La)w.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)}};F[38]=function(){if(this.La)w.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)}};F[128]=function(){var a=this.ya();Ye(this)?(G(this,E(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};F[129]=function(){var a=this.ya();Ye(this)?this.A-=this.B.Ka:(G(this,E(this)+a),this.A-=this.B.Ja)}; +F[130]=function(){var a=this.ya();Te(this)?(G(this,E(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};F[131]=function(){var a=this.ya();Te(this)?this.A-=this.B.Ka:(G(this,E(this)+a),this.A-=this.B.Ja)};F[132]=function(){var a=this.ya();We(this)?(G(this,E(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};F[133]=function(){var a=this.ya();We(this)?this.A-=this.B.Ka:(G(this,E(this)+a),this.A-=this.B.Ja)};F[134]=function(){var a=this.ya();Te(this)||We(this)?(G(this,E(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka}; +F[135]=function(){var a=this.ya();Te(this)||We(this)?this.A-=this.B.Ka:(G(this,E(this)+a),this.A-=this.B.Ja)};F[136]=function(){var a=this.ya();Xe(this)?(G(this,E(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};F[137]=function(){var a=this.ya();Xe(this)?this.A-=this.B.Ka:(G(this,E(this)+a),this.A-=this.B.Ja)};F[138]=function(){var a=this.ya();Ue(this)?(G(this,E(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};F[139]=function(){var a=this.ya();Ue(this)?this.A-=this.B.Ka:(G(this,E(this)+a),this.A-=this.B.Ja)}; +F[140]=function(){var a=this.ya();!Xe(this)!=!Ye(this)?(G(this,E(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};F[141]=function(){var a=this.ya();!Xe(this)==!Ye(this)?(G(this,E(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};F[142]=function(){var a=this.ya();We(this)||!Xe(this)!=!Ye(this)?(G(this,E(this)+a),this.A-=this.B.Ja):this.A-=this.B.Ka};F[143]=function(){var a=this.ya();We(this)||!Xe(this)!=!Ye(this)?this.A-=this.B.Ka:(G(this,E(this)+a),this.A-=this.B.Ja)};F[144]=function(){ri.call(this,Ah)}; +F[145]=function(){ri.call(this,Ah)};F[146]=function(){ri.call(this,Bh)};F[147]=function(){ri.call(this,Ch)};F[148]=function(){ri.call(this,Dh)};F[149]=function(){ri.call(this,Eh)};F[150]=function(){ri.call(this,Fh)};F[151]=function(){ri.call(this,Gh)};F[152]=function(){ri.call(this,Hh)};F[153]=function(){ri.call(this,Ih)};F[154]=function(){ri.call(this,Jh)};F[155]=function(){ri.call(this,Kh)};F[156]=function(){ri.call(this,Lh)};F[157]=function(){ri.call(this,Mh)};F[158]=function(){ri.call(this,Nh)}; +F[159]=function(){ri.call(this,Oh)};F[160]=function(){sd(this,this.ub.ha,this.T,2);this.A-=this.B.Pd};F[161]=function(){this.ma=this.Aa;var a=x(this);this.ub.load(a);this.A-=this.B.ac;this.ma=-1};F[163]=function(){this.za.call(this,Wg);-1!==this.C&&(this.A-=6)};F[164]=function(){this.za.call(this,2==this.T?Ph:Rh);this.A-=-1===this.C?3:7};F[165]=function(){this.za.call(this,2==this.T?Th:Uh);this.A-=-1===this.C?3:7};F[168]=function(){sd(this,this.vb.ha,this.T,2);this.A-=this.B.Pd}; +F[169]=function(){this.ma=this.Aa;var a=x(this);this.vb.load(a);this.A-=this.B.ac;this.ma=-1};F[171]=function(){this.za.call(this,Zg);-1!==this.C&&(this.A-=5)};F[172]=function(){this.za.call(this,2==this.T?Vh:$h);this.A-=-1===this.C?3:7};F[173]=function(){this.za.call(this,2==this.T?bi:ci);this.A-=-1===this.C?3:7};F[175]=function(){this.ja.call(this,2==this.T?eh:gh)};F[178]=function(){this.ja.call(this,qh)};F[179]=function(){this.za.call(this,Yg);-1!==this.C&&(this.A-=5)}; +F[180]=function(){this.ja.call(this,nh)};F[181]=function(){this.ja.call(this,oh)}; +F[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};F[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};F[186]=function(){this.eb.call(this,nj,this.ka)};F[187]=function(){this.za.call(this,Xg);-1!==this.C&&(this.A-=5)}; +F[188]=function(){this.ja.call(this,Qg)};F[189]=function(){this.ja.call(this,Rg)}; +F[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};F[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},S,S],Ed=[Wd,Wd,Wd,Wd,Wd,Wd,S,S],mj=[function(a){if(-1===this.C)w.call(this,6);else{a=this.Oc-this.Ob;var b=this.Ob;80286==this.ca?b|=-16777216:80386<=this.ca&&2!=this.T&&(a|=b<<16);this.Ra(this.C+2,b);this.A-=11}return a},function(a){if(-1===this.C)w.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.Ra(this.C+2,b);this.A-=12}return a},function(a){-1===this.C||this.N&131072?w.call(this,6):(this.Ob=this.ea(this.C+2)&(this.O|this.O<<8),a&=65535,this.Oc=this.Ob+a,this.K|=2,this.A-=11);return a},function(a){-1===this.C||this.N&131072?w.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.oa},S,function(a){this.N& +131072?w.call(this,6):(kf(this,a),this.A-=-1===this.C?3:6,this.K|=2);return a},S],nj=[S,S,S,S,Sg,Vg,Ug,Tg]; +function T(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.M=[360,360],(b=a.floppies)&&b.length&&(this.M=b),sj(this,tj,this.M.length),sj(this,uj,a.monitor||(this.ca=Cf&&(this.xa=this.fa=2);this.N=a.scaleTimers||!1;this.La=a.dateRTC;this.Ea=!1;a.sound&&(this.Ca=this.ja=null,window&&(this.Ca=window.AudioContext||window.webkitAudioContext), +this.Ca&&(this.ja=new this.Ca));this.reset(!0)}ba(T,u);l=T.prototype;l.kc=function(a,b,c,d){this.na=b;this.R=c;this.Da=d;this.pa=a;this.qd=tb(a,"FPU");sj(this,wj,this.qd?1:0,!0);this.C=tb(a,"Keyboard");this.Aa=c.V.xd/xj;ec(b,this,yj);gc(b,this,zj);this.ca=Cf){this.F=Vj;this.K=0;this.J=Wj;this.ma=0;this.L=Xj|Yj;512<=Zj(this)&&(this.L|=ak);+bk(this,uj,void 0)==ck&&(this.L|=dk);(this.ca|0)==Hj&&(this.L=this.L|ek|fk);this.oa= +gk|hk;this.G=Array(8);this.U=0;a&&(this.A=Array(ik));jk(this,this.La);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.K,this.J,this.ma,this.L,this.oa]),a.set(6,[this.G[7],this.G,this.U,this.A,this.la,this.W]));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=U[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.jg&&b.Pf?(c&&(b.done=c),b.Md||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.jg.call(b.Af,b.Pf,-1,function(e,g){0>e&&(b.ii||(b.ii=!0),e=255);b.Md||a.na.Bb(c,e);(d=g)&&setTimeout(function(){yl(b)||vl(a,b)},0)})}(c)):b.type==zl?(c=a.na.Ha(c),0>b.jg.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.Me=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.ba=c):a.ta=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.cf=c;h.mode=g;h.hg=f;h.dc=[0,0];h.ib=[0,0];h.Hd=[0,0];h.Lc=!1;h.je=!1;h.Kd=!1;h.oe=!1;Vl(a,d);b==$l&&e==am&&Df(a,bm);b==$l&&e==dm&&255==a.bc[0].Wc&&a.I==(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.N))}}}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.Hd[0]=c.ib[0];c.Hd[1]=c.ib[1];c.je=!0;Vl(a,b)}function Vl(a,b){a=a.qa[b];a.Yc=a.cf==wm?1:0;a.gd=a.cf==xm?2:1} +function Wl(a,b,c){var d=a.qa[b];if(d.Kd&&(b!=dm||a.I&sm)){var e=Sc(a.R,a.N),f=(e-d.jd)/a.Aa|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.Kd=!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.xd;c=Sc(a.R,a.N);null==a.za&&(a.la=Sc(a.R,a.N),a.Ia=1024,a.za=Math.floor(a.R.V.xd/a.Ia),Lk(a));c>=a.W&&(a.A[Ik]|=zm,a.A[$c]&ad&&(a.A[Ik]|=Am,Ff(a,Bm)),a.W=c+a.za);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.la,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=ta[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.la=c-d%b}}l.jl=function(){var a=this.ua;this.da&Lm&&(this.I&Mm?a=this.B[0][1]:this.C&&(a=Nm(this.C)));return a};l.Gm=function(a,b){this.ua=b};l.kl=function(){return this.I};l.Hm=function(a,b){Om(this,b)}; +function Om(a,b){var c=!!(b&Pm),d=!!(a.I&Pm);a.I=b;a.C&&Qm(a.C,!(b&Mm),!!(b&vm));c!=d&&Nk(a,c)}l.ll=function(){var a=0,a=(this.ca|0)==Lj?this.I&tm?a|this.B[1][1]&Rm:a|this.B[1][1]>>4&1:this.I&Sm?a|this.B[0][1]>>4:a|this.B[0][1]&15;this.I&sm&&Wl(this,dm).Lc&&(a=this.I&Pm?a|Tm:a|Um);return a};l.Im=function(a,b){this.Ba=b};l.ml=function(){return this.da};l.Jm=function(a,b){this.da=b};l.vk=function(){var a=this.C?Nm(this.C):0;this.Y&=~Vm;return a};l.Sl=function(){};l.uk=function(){return this.I}; +l.Rl=function(a,b){Om(this,b)};l.wk=function(){return this.Y};l.xk=function(){var a=this.ma;this.F&=~(Vm|Wm);this.C&&Xm(this.C);return a};l.Ul=function(a,b){if(this.F&Ym)switch(this.K){case Zm:$m(this,b);break;case an:bn(this,b);break;default:if($m(this,this.J&~Wj),this.C){a=this.C;var c=b,d=-1;switch(a.F||c){case cn:d=dn;a.Nb=[];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.K=b;this.F&=~Ym}; +l.yk=function(){return this.I&~(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.K=b;this.F|=Ym;a=0;this.K>=mn&&(a=this.K^15,this.K=mn);switch(this.K){case nn:jn(this,this.J);break;case on:$m(this,this.J|Wj);break;case pn:$m(this,this.J&~Wj);this.C&&Xm(this.C);break;case qn:this.C&&(this.C.Nb=[]);$m(this,this.J|Wj);jn(this,rn);bn(this,gk|hk);break;case sn:jn(this,tn);break;case un:jn(this,this.L);break;case vn:jn(this,this.oa);break;case wn:jn(this,this.J&Wj?0:xn);break;case mn:a&1&&he(this.R)}}; +function $m(a,b){a.J=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.ma=b,c?a.F|=Vm:(a.F&=~Vm,a.F|=Wm))}function bn(a,b){a.oa=b;Ib(a.na,!!(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.aa=b};l.tm=function(){};l.um=function(){this.qd&&yf(this.qd)}; +function Nk(a,b){if(a.ja)try{void 0!==b?a.Ea=b:b=!!(a.Ea&&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};Kn.prototype.Qb=function(){return!0}; +function Ln(a,b,c,d){if(d)a.wa("Unable to load system ROM (error "+d+": "+b+")",0>d);else{Ua(a.Bd,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 Rn(a){this.F=a;this.C=Tn;this.D=Un;this.B=Vn;this.A=null}l=Rn.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.Ha=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.na;if(b&Wn)this.A&&(Qb(a,Xn,Yn,this.A),this.A=null);else{this.A||(this.A=Rb(a,Xn,Yn));var c=Rb(a,Zn,Yn);Qb(a,Xn,Yn,c,b&$n?1:Xb)}this.C=this.C&-256|b}};l.mi=function(){return ao};l.kg=function(){return bo};var Sn=-2134900736,Zn=16646144,Xn=917504,Yn=131072,Wn=1,$n=2,Tn=65535,Un=2575,Vn=2,ao=[null,0],bo=[function(a){return this.controller.Ha(a)},null,null,function(a,b){this.controller.Bb(a,b)},null,null]; +La(function(){for(var a=bb(document,"pcx86","ram"),b=0;b=n.Ed&&d<=n.z&&(d-=n.Ed-n.Dd),d=no[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.pa=a;this.na=b;this.R=c;this.Da=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.lg(this.D))}return!0};function eo(a,b){var c=0;a.ca=null;"string"==typeof b&&(a.ca=b.toUpperCase(),c=qo.indexOf(a.ca),0>c&&(c=0));if(b=qo[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.Nb=[],en(a,fn),a.N=!1)}function en(a,b){a.U&&(a.Nb.unshift(b),a.H=!0,Bn(a.U,b))} +function Xm(a){var b;a.Nb.length&&a.H&&(b=a.Nb[0],a.U&&Bn(a.U,b))}function Nm(a){var b=0;a.Nb.length&&(b=a.Nb[0]);return b}function Dn(a,b){0>=1);if(b&vo){if(!1===d)return!0;d=null}null==d?d=!((c?a.C:a.Vb)&b):d||b&wo&&(b=wo);if(c){a.C&=~b;d&&(a.C|=b);c=b;var f,g;for(g in xo)d="led-"+g,e=xo[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 ho(a,b,c){if((V[b]||V[b+=1E3])&&a.R&&a.R.X.cb){to[b]&&a.A.length&&0e||(e==a.A.length&&(d={},d.Wd=b,d.Vb=a.Vb,po(a,b,!0),e++),0b.ad){if(!b.He){oo(a,b.Wd);return}b.He=!1;c=a.fa}else c=1==b.ad++?500:100;b.lh=setTimeout(function(a){return function(){yo(a,b)}}(a),c)}} +function Ao(a,b,c){var d=b;if(b>=n.Dd&&b<=n.qf)!(a.Vb&(Bo|Co|Do))==c&&(d=b+(n.Ed-n.Dd));else if(b>=n.Ed&&b<=n.z)!!(a.Vb&(Bo|Co|Do))==c&&(d=b-(n.Ed-n.Dd));else if(!!(a.Vb&(Bo|Co))==c){if(a=p[b])d=a}else if(a=ga[b])d=a;return d}l.Qf=function(a){a||(this.Vb&=~wo)}; +function fo(a,b,c){var d=!0,e=!1,f=!1,g=b.keyCode;a.B="";fb(a.Bd);var h=Ao(a,g,!0);a.ig&&h==n["`"]&&(g=h=27);if(V[g+1E3])if(h+=1E3,2==b.location&&(h+=2E3),mo(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.Dd&&b<=n.qf||b>=n.Ed&&b<=n.z;e>>>=8;){var g=0,h=e&255;f==No||f==Oo?d.push(f|(c?0:Mo)):(h==W?a.C&(Bo|Co)||a.C&Do&&b||(g=h):h==Po?a.C&(Eo|Qo)||(g=h):h==Ro?a.C&(Fo|So)||(g=h):d.push(f|(c?0:Mo)),g&&(c?d.unshift(g):d.push(g|Mo)))}for(c=0;c"]]=52|W<<8;V[n["/"]]=53; +V[n["?"]]=53|W<<8;V[3016]=54;V[1044]=55;V[1018]=Ro;V[1032]=57;V[io]=58;V[1112]=59;V[1113]=60;V[1114]=61;V[1115]=62;V[1116]=63;V[1117]=64;V[1118]=65;V[1119]=66;V[1120]=67;V[1121]=68;V[jo]=69;V[ko]=70;V[1036]=71;V[1038]=72;V[1033]=73;V[1109]=74;V[1037]=75;V[1101]=76;V[1039]=77;V[1107]=78;V[1035]=79;V[1040]=80;V[1034]=81;V[1045]=82;V[1046]=Lo;V[4027]=84;V[1122]=87;V[1123]=88;V[1091]=91;V[1093]=93;V[1224]=91;V[Vo]=46|Po<<8;V[Go]=70|Po<<8;V[4046]=Lo|Po<<8|Ro<<16;V[4045]=82|Po<<8|Ro<<16; +V[4013]=28|Po<<8|Ro<<16;var cn=255,gn=243,hn=237,fn=170,dn=250,Uo=255,To=20;La(function(){for(var a=bb(document,"pcx86","keyboard"),b=0;bc.length)c=[!1,0,null,null,0,Array(b>2,32768));this.Wb=c[0];this.Dc=c[1];this.af=c[2];this.Z=c[3];this.hc=c[4]&255;this.Tf=c[4]>>8&255;this.Sa=c[5];this.og=Yo;this.zd=this.Sa[$o]|this.Sa[ap]<<8;this.sf=63;if(b>=Nn){this.sf=255;this.og=Zo;(b=c[6])||(b=[!1,0,Array(bp),0,f==ck?0:cp, +0,0,Array(dp),0,0,0,Array(ep),0,[this.ab,this.Hb,this.Xc],Array(this.Xc>>2),fp|gp|hp|ip|jp,0,-1,0,-1,0,-1,0,0,0,0,kp,lp,0,0,mp,Array(np)]);this.Ge=b[0];this.Rd=b[1];this.vc=b[2];this.hh=b[3];this.bf=b[4];this.Wf=b[5];this.Ud=b[6];this.Td=b[7];this.Kj=b[8];this.Lj=b[9];this.Sd=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.sd=b[14])&&this.sd.length=Nn){var c=[];c[0]=a.Ge;c[1]=a.Rd;c[2]=a.vc;c[3]=a.hh;c[4]=a.bf;c[5]=a.Wf;c[6]=a.Ud;c[7]=a.Td;c[8]=a.Kj;c[9]=a.Lj;c[10]=a.Sd;c[11]=a.nd;c[12]=a.pb;c[13]=[a.ab,a.Hb,a.Xc];var d;if(d=a.sd){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=Nn){var d=0,e=0,f=0;switch(b){case vp:d=wp;a.Na==Pn&&(e=xp);break;case yp:a.Na==Nn&&(d=zp);break;case Ap:d=Bp;a.Na==Pn&&(e=Cp);break;case Dp:d=Ep;a.Na==Pn&&(e=Fp);break;case Gp:d=Hp;a.Na==Pn&&(f=Ip);break;case Jp:d=Kp,a.Na==Pn&&(f=Lp)}d&&(c|=a.Sa[Mp]&d?256:0,c|=a.Sa[Mp]&e?512:0,c|=a.Sa[Np]&f?512:0)}return c} +var ap=12,$o=13,Yo=18,vp=6,Mp=7,wp=1,Ep=2,Bp=4,Hp=8,Kp=16,zp=32,xp=32,Fp=64,Cp=128,Np=9,Ip=32,Lp=64,yp=10,Ap=16,Dp=18,Gp=21,Jp=24,Zo=25,Op={},Pp=(Op[0]=255,Op[1]=255,Op[2]=255,Op[3]=15,Op[4]=127,Op[5]=31,Op[6]=127,Op[7]=127,Op[8]=3,Op[9]=31,Op[10]=127,Op[11]=31,Op[ap]=63,Op[$o]=255,Op[14]=63,Op[15]=255,Op[16]=63,Op[17]=255,Op),bp=20,cp=1,kp=1,dp=5,lp=255,mp=0,np=256,ep=9,fp=1024,gp=4096,rp=65280,hp=0,ip=16,tp=255,jp=-2147483648,op=[];op[2]=fp;op[3]=fp|gp;op[16]=1280;op[512]=hp;op[1024]=hp|32; +op[1536]=hp|96;op[2560]=hp|160;op[3584]=hp|224;op[768]=hp|ip;op[4096]=1;op[8192]=2;op[24576]=98;op[40960]=162;op[57344]=226;var sp=[];sp[fp]=function(a){a+=this.G;return(this.controller.pb=this.S[a])>>this.controller.dh&255};sp[fp|16384]=function(a){return(this.controller.pb=this.S[(a&-4)+this.G])>>((a&3)<<3)&255};sp[fp|gp]=function(a){a+=this.G;var b=this.controller.pb=this.S[a&-2];return(a&1?b>>8:b)&255}; +sp[1280]=function(a){a+=this.G;a=this.controller.pb=this.S[a];for(var b=this.controller.qg,c=this.controller.pg&b,d=0,e=128;e;)(a&b)==c&&(d|=e),c>>>=1,b>>>=1,e>>=1;return d};sp[hp]=function(a,b){a+=this.G;b=(b|b<<8|b<<16|b<<24)&this.controller.ld|this.controller.yd;b=b&this.controller.sb|this.controller.pb&~this.controller.sb;b=b&this.controller.Wa|this.S[a]&~this.controller.Wa;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +sp[hp|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.yd;b=b&this.controller.sb|this.controller.pb&~this.controller.sb;b=b&this.controller.Wa|this.S[a]&~this.controller.Wa;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +sp[hp|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.yd;b&=this.controller.pb;b=b&this.controller.sb|this.controller.pb&~this.controller.sb;b=b&this.controller.Wa|this.S[a]&~this.controller.Wa;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +sp[hp|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.yd;b|=this.controller.pb;b=b&this.controller.sb|this.controller.pb&~this.controller.sb;b=b&this.controller.Wa|this.S[a]&~this.controller.Wa;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +sp[hp|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.yd;b^=this.controller.pb;b=b&this.controller.sb|this.controller.pb&~this.controller.sb;b=b&this.controller.Wa|this.S[a]&~this.controller.Wa;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)};sp[hp|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.sb;b=this.controller.Ue&b|this.controller.pb&~b;b=b&this.controller.Wa|this.S[a]&~this.controller.Wa;this.S[a]!=b&&(this.S[a]=b,this.Fa=!0)}; +function X(a,b,c,d,e){u.call(this,"Video",a);var f=this,g;this.Nc=Da("Gecko/");this.ca=a.model;var h=Rp[this.ca]||Rp.mda;this.Na=h[0];this.Xc=a.memory||0;this.Tc=a.switches;this.ba=a.mode;if(null==this.ba||null==Sp[this.ba])this.ba=h[1];this.Gb=a.charCols;this.lc=a.charRows;if(void 0===this.Gb||void 0===this.lc)this.Gb=Sp[this.ba][0],this.lc=Sp[this.ba][1];this.Y=a.screenWidth;this.ja=a.screenHeight;this.Oc=a.scale;this.pd=12<=Math.round(this.Y/this.Gb);this.M=b;this.J=c;this.F=(this.Ef=d)||b||null; +this.Xb=a.screenColor||"black";this.Sc=(1-(Ga("flicker")||a.flicker||0)).toString();this.Db=!1;b&&(b.style.backgroundColor=this.Xb);e&&(e.style.backgroundColor=this.Xb);b=a.smoothing;(c=Ga("smoothing"))&&(b="true"==c);null!=b&&(g=Ea(this.J,"imageSmoothingEnabled"))&&(this.J[g]=b);this.Uc=a.touchScreen;this.mc=Tp;this.K=null;this.od=a.autoLock;this.ab=this.Hb=0;this.oa=[];this.fa=Array(this.Na==Pn?256:16);this.Ia=!1;if(this.N=e)if(g=Ea(e,"requestFullscreen")||Ea(e,"requestFullScreen")){this.N.A=e[g]; +if(e=Ea(document,"on","fullscreenchange")){var k=Ea(document,"fullscreenElement")||Ea(document,"fullScreenElement");document.addEventListener(e,function(){Up(f,!!k)},!1)}(e=Ea(document,"on","fullscreenerror"))&&document.addEventListener(e,function(){Up(f,null)},!1)}if(this.F&&(this.F.onfocus=function(){return f.Qf(!0)},this.F.onblur=function(){return f.Qf(!1)},this.F.Ld=(g=Ea(this.F,"requestPointerLock"))&&this.F[g],this.F.B=(g=Ea(this.F,"exitPointerLock"))&&this.F[g],this.F.Ld&&(e=Ea(document,"on", +"pointerlockchange")))){var m=Ea(document,"pointerLockElement");document.addEventListener(e,function(){f.We(!(!m||document[m]!==f.F))},!1)}(this.xa=a.fontROM)&&"json"!=ka(this.xa)&&(this.xa=wa()+"/api/v1/dump?file="+this.xa+"&format=bytes")}ba(X,u);l=X.prototype; +l.kc=function(a,b,c,d){var e=this;this.na=b;this.R=c;this.Da=d;c=(c=Rp[this.ca])&&c[0];c!==Vp&&(ec(b,this,Wp),gc(b,this,Xp));c!==Yp&&(ec(b,this,Zp),gc(b,this,$p));this.Na>=Nn&&(ec(b,this,aq),gc(b,this,bq));this.Na==Pn&&(ec(b,this,cq),gc(b,this,dq));if((this.C=tb(a,"Keyboard"))&&this.M){for(var f in this.ia)0c&&(a=Math.round(c/b*100)+"%")}d.Nc?(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.Xb;d.N.A()}d.F&&d.F.focus()}}:c.parentNode.removeChild(c), +!0;case "lockPointer":return this.rd=c.textContent,this.F&&this.F.Ld?c.onclick=function(){d.Ld(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){iq(d,!0)},!0}return!1};function Up(a,b){!b&&a.N&&(a.Nc?a.M.style.width=a.M.style.height="":a.N.style.width=a.N.style.height="");a.C&&(a.C.ig=b)}l.Ld=function(a){var b=!1;this.F&&(a?this.F.Ld&&(this.F.Ld(),this.K&&this.K.We(!0),b=!0):this.F.B&&(this.F.B(),this.K&&this.K.We(!1),b=!0),this.F&&this.F.focus());return b}; +l.We=function(a){this.K&&(this.K.We(a),this.C&&(this.C.ig=a));var b=this.ia.lockPointer;b&&(b.textContent=a?"Press Esc to Unlock Pointer":this.rd)};function eq(a,b){var c=a.F;c&&!a.mc&&(c.addEventListener("touchstart",function(b){kq(a,b,!0)},!1),c.addEventListener("touchmove",function(b){kq(a,b)},!0),c.addEventListener("touchend",function(b){kq(a,b,!1)},!1),a.mc=b,a.gb=a.mb=a.Vc=-1,a.fc=!1,a.Eb=null,a.ec=!1,a.qd=function(){a.ec=!0;a.K.ie(lq,!0)})}l.Qf=function(a){this.C&&this.C.Qf(a)}; +function kq(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.mc==gq)c&&ho(a.C,mq[e/(a.ja/3)|0][d/(a.Y/3)|0],!0);else if(a.K){g=a.fc;f=b.timeStamp-a.Vc;!0===c?(a.fc=500f){a.K.ie(lq,!0);a.K.ie(lq,!1);return}}if(c||0>a.gb||0>a.mb)a.gb=d,a.mb=e;c=Math.round(d-a.gb);b=Math.round(e-a.mb);a.gb=d;a.mb=e;a.K.mg(c,b,a.gb,a.mb)}}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,b=0;this.U&&(b=+bk(this.U,uj,void 0));this.ca||(this.Na=b==ck?Yp:Vp);this.ba=nq;switch(this.Na){case Pn:b=7;break;case Nn:var c=oq[this.vb];c&&(b=c[0]);b||(b=4);break;case Yp:b=ck;this.ba=pq;break;default:b=2}this.da!==b&&(this.da=b,a=!0);this.B=null;this.W=this.Ob=new Wo(this,Yp);this.I=this.wb=new Wo(this,Vp);this.Na>1&255,d=d>>8&~tq,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?uq|vq:wq|xq)|yq&d>>8);cc(this.na,b,c|d<<8)}iq(this,!0)}};function qq(a){a.A.bf&cp?(a.W=a.Ob,a.I=a.A):(a.W=a.A,a.I=a.wb)}l.save=function(){var a=new Me(this);a.set(0,qp(this.Ob));a.set(1,qp(this.wb));a.set(2,[this.da,this.ba,this.ma]);a.set(3,qp(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.Ob=new Wo(this,Yp,a[0]);this.I=this.wb=new Wo(this,Vp,a[1]);this.A=new Wo(this,this.Na,a[3],this.Xc);this.A.Wb&&qq(this);rq(this);if(!zq(this))return!1;Aq(this);return!0}; +function hq(a,b,c,d){if(d)a.wa("Unable to load font ROM (error "+d+": "+b+")",0>d);else{Ua(a.Bd,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)On(a,f,[6144,0]);else if(2048==f.length)On(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.Da)&&ob(a)}} +function Bq(a,b){if(1==b)return a.fa[0]=Cq[wq],a.fa[1]=Cq[uq],a.fa;if(2==b){var c=a.B.af;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]=Cq[c&15];c=c&32?Dq:Eq;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:Fq;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.Ia=!0}return a.fa}function On(a,b,c,d){a.ub=b;a.Xa=c;a.Ca=d} +function rq(a,b){var c=!1;if(window&&a.ub&&(!b||a.G)){var d=0,e=a.Ca?a.Ca:8,f=Bq(a);null!=a.Xa[0]&&Gq(a,Hq,a.Xa[0],d,e,8,a.ub,f)&&(c=!0);d=a.Ca?0:2048;e=a.Ca?a.Ca:9;null!=a.Xa[1]&&(Gq(a,Iq,a.Xa[1],d,e,14,a.ub,Jq,Kq)&&(c=!0),a.Ca&&Gq(a,a.Na,a.Xa[1],0,a.Ca,14,a.ub,f)&&(c=!0))}b||(a.aa=-1,a.za=-1,a.ta=0);return c}function Gq(a,b,c,d,e,f,g,h,k){var m=!1;null!=c&&(Lq(a,b,c,d,e,f,g,h,k)&&(m=!0),a.pd&&Lq(a,b<<1,c,d,e,f,g,h,k)&&(m=!0));return m} +function Lq(a,b,c,d,e,f,g,h,k){var m=!1,r=b&1?0:1,y=a.oa[b],t=16>h.length?h.length:16;y||(y={qc:e<Ha||!Z?Ha:8,Xh=Hm.createImageData(m.qc,m.rc);for(Ob=0;256>Ob;Ob++){for(rc=0;rc=Ha-2,Pt=Kc[rc>(8<=od&&192<=Ob&&223>=Ob?7:od)?z:Wh;Mq(Xh,Im,Jm,Km);N&&Mq(Xh,Im+1,Jm,Km)}Hm.putImageData(Xh,(Ob&15)*m.qc,(Ob>>4)*m.rc)}m.be[B]="#"+ia(z[0],2)+ia(z[1],2)+ia(z[2],2);m.Rh[B]=z;m.dg[B]=Uf;m=!0}}a.oa[b]=y;return m}function Nq(a){0a.za&&(a.za=0):a.za=-1} +function Aq(a){if(a.G){for(var b=10;15>=b;b++)if(null==a.B.Sa[b])return;var c=a.B.Sa[10],b=c&31,d=a.B.Sa[11]&Pp[11],e=a.B.Sa[9]&Pp[9],f=!1;a.B===a.A&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)Oq(a);else{c=a.B.Sa[15];c|=(a.B.Sa[14]&a.B.sf)<<8;a.aa!=c&&(Oq(a),a.aa=c);d=d-b+1;if(a.cd!=b||a.Hc!=d)a.cd=b,a.Hc=d;a.ua=e+1;Nq(a)}}} +function Oq(a){if(0<=a.aa){if(void 0!==a.L){var b=Pq<<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.oa[a.G]&&(a.Ba&&Qq(a,b,d,c,a.Ba),Qq(a,b,d,c));a.L[a.aa]=c}}a.aa=-1}} +function Rq(a){var b,c=a.B;a.Ic=!1;var d=c.nd[5];if(null!=d){b=fp;var e=hp,f=c.nd[3]&31;switch(d&3){case 0:if(f){e=hp|32;switch(f&24){case 8:e=hp|96;break;case 16:e=hp|160;break;case 24:e=hp|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.Na==Pn&&(e=3,c.Ac=f&7)}d&8&&(b=1280);c=c.Td[4];null!=c&&(c&4||(b|=gp,e|=ip),d&64&&(c&8&&(b|=16384,e|=4),a.Ic=!0));b|=e}return b} +function Sq(a,b){var c=a.B;return c&&null!=b&&b!=c.ng?(c.Yf(b),a.na.Yf(c.ab,c.Hb,c.kg(),!0),!0):!1} +function zq(a,b){var c,d=a.ma,e=a.B;if(e)if(e.Na==Yp)d=pq;else if(e.Na>=Nn){var d=null,f=e.Xc>>2,g=32768=e.Sa[Dp]?Xq:Yq:Zq:g&128|| +350>f?d=m?$q:ar:480<=f&&(d=a.da==ck?br:cr):d=m?7-d:dr:d-=m?2:0);c=Rq(a)}}else e.Dc&8?(e.Dc&2?(d=e.Dc&16?dr:er,e.Dc&4||--d):(d=e.Dc&1?nq:fr,e.Dc&4&&--d),a.Db&&(a.M.style.opacity="1",a.Db=!1)):!a.Db&&1>+a.Sc&&(a.Db=!0,a.M.style.opacity=a.Sc,e=a.R,Vc(e),e.X.Zf=!0,Lc(e));else a.ma=null,null==d&&(d=a.ba);if(!sq(a,d,b))return!1;Sq(a,c);return!0} +function sq(a,b,c){if(null!=b&&(b!=a.ma||c)){a.dd=0;a.ma=b;a.Ia=!1;b=a.B||(b==pq?a.W:a.I);if(b!=a.B||b.ab!=a.ab||b.Hb!=a.Hb){Oq(a);if(a.ab){if(!Vb(a.na,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.na,b.ab,b.Hb,3,b===a.A?b:null))return!1}a:{a.G=0;a.D=a.Gb;a.H=a.lc;a.Qa=a.D;a.Cb=Sp[pq][2];b=0;if(c=Sp[a.ma])a.D=c[0],a.H=c[1],a.Cb=c[2],b=c[3],a.G=c[4],4!=a.da&&7!=a.da||a.B!==a.A||a.G!=Hq||(7==(a.A.Sa[Np]&31)?a.H=350>up(a.A,Dp)?43:50:a.G=a.Na);a.Rc=a.D*a.H|0;a.Qc=a.Rc/ +a.Cb|0;a.Ya=a.Qc;a.Pb=0;void 0!==b&&(a.Ya=(a.Ya<<1)+b|0,a.Pb=a.Ya+b>>1);if(a.oa.length){a.la=a.Y/a.D|0;a.qa=a.ja/a.H|0;if(a.G){b=a.oa[a.G];if(!b)break a;c=a.oa[a.G<<1];a.Oc&&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.Oc||(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.sc=a.uc=0; +a.Yb=a.Y;a.Zb=a.ja;b=a.Y-a.D*a.la;c=a.ja-a.H*a.qa;0>1,a.Yb-=b);0>1,a.Zb-=c);if(b||c)a.J.fillStyle=a.M.style.backgroundColor,a.J.fillRect(0,0,a.Y,a.ja)}}gr(a,!0);iq(a)}return!0}function Mq(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 hr(a){a.ta=-1;a.Ea=!1;var b=a.Qc;if(void 0===a.L||a.L.length!=b)a.L=Array(b)}function gr(a,b){b||(a.Ia=!1);hr(a)} +function Qq(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.oa[a.G];h.De&&(d=h.De[d]);var k=g>>4&15;h.De&&(k=h.De[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.sc,c=c*a.qa+a.uc,a.J.fillStyle=h.be[k],a.J.fillRect(b,c,a.la,a.qa));g&ir&&(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&Pq&&(f=a.cd,g=a.Hc,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 iq(a,b){b=void 0===b?!1:b;if(a.X.Sb){var c=!1,d=a.B;d&&(d!==a.A?d.Dc&8&&(c=!0):d.Rd&32&&(c=!0));if(c||b){if(b)hr(a);else if(void 0===a.L)return;c=!1;!(b||++a.dd&15)&&0<=a.za&&(a.za++,c=!0);var e=a.Rc,f=a.ab,g=f,h=g+a.Hb;a.ma>=Xq&&(f=g=655360,h=g+65536);if(jr(a,d)&8||d.Ve&&d.Ve=Nn&&d.Sa[19]&&d.Sa[19]<<1!=d.Sa[1]+1&&(a.Qa=d.Sa[19]<<(a.G?1:d.Sa[20]&64?3:4),k=(a.Qa*(a.H-1)+a.D)/ +a.Cb|0,a.ma<=pq&&(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=kr(a,f,g,k,0,h,e,b,c);r&&(g+=kr(a,f,d,r,0+g,h,e,b,c));g&&(a.Ea=!0)}}} +function kr(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.Ea){h=a.na;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.oa[a.G]){b=c;c=e;k=f=e=0;h=ir<<8;d=1048575;t=a.B.Dc&32;a.Na>=Nn&&(t=a.B.vc[16]&8);y=a.aa-a.B.zd;t&&(k=tq<<8,d&=~k,a.za&2||(d&=~h));for(a.ta=0;b>1;g=0;c=a.Cb;e=b;f=16==c?65536:196608;k=16==c?1:2;h=Bq(a,k);var y=d=0,t=a.D,z=0,B=a.H,N=0;for(a.ta=0;e>8|(P&255)<<8,Z=f,ya=16;d>=k))>>(ya-=k);Mq(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.Pb)}}ta.D?a.Qa-a.D-N>>3:0;for(a.ta=0;c>=8;k>y&&(y=k);h=z&&(z=h+1)}c+=B;if(k>=a.D){k=0;if(++h>a.H)break;c+=P}}N&& +(g=0)}else{m=0;g=r-c;e=Bq(a);f=a.B.sd;h=k=0;d=a.D;y=0;t=a.H;z=0;B=a.B.vc[19]&15;N=a.Qa>a.D?a.Qa-a.D-B>>3:0;for(a.ta=0;cZ&&(ya=Z)):(P<<=B,ya-=B,a.Ea=!1):(a.Ea&&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}}B&&(g=0)}da&&(b.ug=a,a=-a|0);a%b.sg>b.Ll&&(c|=1);a%b.tg>b.Nl&&(c|=9);b.eh=a/b.tg|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 mr(this.W)};l.Cm=function(a,b){nr(this,this.W,b)};l.gl=function(){return this.W.Dc};l.Em=function(a,b){this.W.Dc=b;zq(this,!1)};l.hl=function(){return or(this,this.W)};l.Bj=function(a,b){this.A.Wf=this.A.Wf&-4|b&3};l.Ek=function(){return this.A.Rd}; +l.bk=function(){return this.A.vc[this.A.Rd&31]};l.Aj=function(a,b){a=this.A;var c=a.Rd&32;if(a.Ge){a.Ge=!1;var d=a.Rd&31;if(16<=d||!c)if(pr||a.vc[d]!==b)a.vc[d]=b,gr(this,!1)}else a.Rd=b,a.Ge=!0,b&32&&!c&&rq(this,!0)&&iq(this,!0),b=a.Sa[$o],b|=(a.Sa[ap]&a.sf)<<8,a.zd!=b&&(a.zd=b,gr(this)),a.Ve=0};l.rl=function(){var a=0;if(this.Na==Nn)a=3-((this.A.bf&12)>>2),a=(this.vb&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<=xa().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=+(Ga("aspect")||d.aspect);f&&.3<=f&&3.33>=f&&(Ka("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");Da("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new X(d,e,g,f,c);ab(d,c)}}); +function qr(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="":Za(this,a,rr)}ba(qr,u);l=qr.prototype;l.Ab=function(a,b,c){switch(b){case rr:return this.ia[b]=this.A=c,!0}return!1}; +l.kc=function(a,b,c,d){this.na=b;this.R=c;this.Da=d;this.U=tb(a,"ChipSet");ec(b,this,sr,this.D);gc(b,this,tr,this.D);ob(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(){ur(this)};l.save=function(){var a=new Me(this),b=0,c=[];c[b++]=this.F;c[b++]=this.Fb;c[b]=this.Ee;a.set(0,c);return a.data()};l.restore=function(a){return ur(this,a[0])}; +function ur(a,b){var c=0;b||(b=[0,0,0]);a.F=b[c++];a.Fb=b[c++];a.Ee=b[c];return!0}l.Tk=function(){return this.F};l.ql=function(){return this.Fb};l.Pk=function(){return this.Ee};l.pm=function(a,b){this.F=b;this.Fb|=vr;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.tb(this.B),this.B="";10!=b&&(this.B+=String.fromCharCode(b));a=!0}a&&(this.Fb&=~vr);wr(this)}; +l.km=function(a,b){this.Ee=b;wr(this)};function wr(a){a.U&&a.C&&(a.Ee&xr&&!(a.Fb&vr)?Ff(a.U,a.C):Df(a.U,a.C))}var rr="buffer",vr=64,xr=16,sr={0:qr.prototype.Tk,1:qr.prototype.ql,2:qr.prototype.Pk},tr={0:qr.prototype.pm,2:qr.prototype.km};La(function(){for(var a=bb(document,"pcx86","parallel"),b=0;b=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=oa(c[0]);if(d!=this.Ae)return;c=oa(c[1]);if(this.D=eb(c)){var e=this.D.exports;if(e){var f=e.connect;f&&f.call(this.D,this.N);if(this.aa=e.receiveData){this.N=a;this.W=e.receiveStatus;this.status("Connected "+this.Bd+"."+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(){Er(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.C;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 Er(this,a[0])}; +function Er(a,b){var c=0;b||(b=[0,0,Fr,0,Gr,0,0,Hr|Ir,a.oa,[]]);a.da=b[c++];a.ja=b[c++];a.K=b[c++];a.L=b[c++];a.C=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.$e=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.C;this.C|=Gr;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&=~(Kr|Lr);return a}; +l.Mm=function(a,b){if(this.I&Or)this.K=this.K&-256|b;else{this.ja=b;this.A&=~(Hr|Ir);a=!1;this.aa&&this.aa.call(this.D,b)&&(a=!0);if(this.F){if(13==b)this.J=0;else if(8==b)this.F.value=this.F.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.F.value+=c;this.F.scrollTop=this.F.scrollHeight;this.J+=a}this.qa=b;a=!0}else if(null!=this.G){if(10==b||1024<=this.G.length)this.tb(this.G),this.G="";10!=b&&(this.G+=String.fromCharCode(b));a=!0}a&&(this.A=this.A|Hr|Ir,Mr(this))}};l.zm=function(a,b){this.I&Or?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&(Pr|Qr)&&this.W&&(a=0,this.N?(a|=b&Qr?32:0,a|=b&Pr?320:0):(a|=b&Qr?16:0,a|=b&Pr?1048576:0),this.W.call(this.D,a))}; +function Mr(a){var b=-1;a.A&Nr&&a.L&Rr?b=Sr:a.A&Hr&&a.L&Tr?b=Ur:a.B&(Kr|Lr)&&a.L&Vr&&(b=Wr);0<=b?(a.C&=~(Gr|Xr),a.C|=b,a.U&&a.M&&Ff(a.U,a.M,100)):(a.C|=Gr,a.U&&a.M&&Df(a.U,a.M))}var Br="buffer",Fr=384,Rr=1,Tr=2,Vr=8,Gr=1,Sr=4,Ur=2,Wr=0,Xr=6,Or=128,Pr=1,Qr=2,Nr=1,Hr=32,Ir=64,Kr=1,Lr=2,zr=16,Ar=32,Cr={0:yr.prototype.nl,1:yr.prototype.$k,2:yr.prototype.al,3:yr.prototype.bl,4:yr.prototype.dl,5:yr.prototype.cl,6:yr.prototype.il},Dr={0:yr.prototype.Mm,1:yr.prototype.zm,3:yr.prototype.Am,4:yr.prototype.Bm}; +La(function(){for(var a=bb(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.mg(c,d,a.A,a.B)}} +l.ie=function(a,b){if(this.Wb&&this.R&&this.R.X.cb)switch(a){case lq:this.K!=b&&(this.K=b,ds(this));break;case es:this.L!=b&&(this.L=b,ds(this))}};l.mg=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,ds(this))};function ds(a){a.G.$e([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.$e([fs,fs]);Zr(this);this.Wb=b}}else this.Wb&&($r(this),this.Wb=b);this.C=a};var fs=77,lq=0,es=2;La(function(){for(var a=bb(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=ka(b),"json"==a||"gz"==a?f=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(f=ns(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"): +la(b,"/")&&(c="dir"),f=wa()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.me?"":d)+"&format=json"));var k="Loading "+f+"...";return!!va(f,null,!0,function(a,b,c){os(g,a,b,c)},function(){g.tb(k,lb.ae)})}; +function os(a,b,c,d){var e=null;a.pe=!1;var f=!(!(0>d&&a.pa)||a.pa.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{Ua(a.controller.Bd,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.Va=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,B=t.length;B< +z;B++)t[B]=r;ps(k,t,0)}else k.data=y=[],t&&(k.pattern=r|r<<8|r<<16|r<<24);delete k.bytes}ms(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=qs(this,a++);)ys(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 ys(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 hs=0;function zs(a){u.call(this,"FDC",a);this.dmaRead=zs.prototype.Uj;this.dmaWrite=zs.prototype.Vj;this.dmaFormat=zs.prototype.ik;this.M=As(a.autoMount);this.K=a.sortBy||"name";"none"==this.K&&(this.K=null);this.B=[];this.L=!Da("Mobi")&&window&&"FileReader"in window;this.exports={loadDisk:this.xi,wait:this.rn}}ba(zs,u);l=zs.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.ra.restore(z)&&(h=!1);h&&g.ra&&void 0!==g.Pa&&(g.Ta=g.ra.seek(g.yb,g.Ua,g.bb));h||(e=!1)}a.H=b[c++]||0;a.F=b[c]||Qs;return e} +function Ks(a){var b=0,c=[];c[b++]=a.Ma;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;gOs(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.Ma)),b=null);b?(a.ra=b,a.Mj=c,a.Vd=d,Ss(this,d)||Hs(this,c,d),Ps(this,c,d,b),f=b.info(),this.H|=Ts,a.qe||this.wa('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.Ma),a.Id||e),a.Kf=f[0],a.Ne=f[1],a.Oe=f[2],this.pa&&Tc(this.pa)):a.le=!1;a.Id&&(a.Id=!1,--this.J||ob(this));Cs(this,a.Ma);a.qe&&(a.qe(),a.qe=null)}; +function Hs(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&=~(Ws|Xs),this.D=this.C=0);return a}; +l.rm=function(a,b){this.C=Zs[a].fd){b=!1;this.D=0;a=$s(this);var c,d,e,f,g,h=a&Ys;switch(h){case at:$s(this);$s(this);bt(this);break;case ct:d=$s(this);this.Ma=d&3;c=this.A[this.Ma];bt(this);dt(this,(c.lb&et)>>>24);break;case ft:case gt:d=$s(this);b=d>>2&1;this.Ma=d&3;c=this.A[this.Ma];c.Ua=b;d=c.yb=$s(this);e=$s(this);f=c.bb=$s(this);g=$s(this);c.xb=128<>2&1;this.Ma=d&3;c=this.A[this.Ma];d=c.yb;e=c.Ua=b;f=c.bb= +1;g=0;c.lb=jt;c.ra&&(c.Ta=c.ra.seek(c.yb,c.Ua,c.bb))?g=c.Ta.length>>8:c.lb=ht|it;lt(this,c,a,b,d,e,f,g);b=!0;break;case st:d=$s(this);b=d>>2&1;this.Ma=d&3;c=this.A[this.Ma];d=c.yb;e=c.Ua=b;f=1;g=$s(this);c.xb=128<>2&1,d=$s(this),c.yb+= +d-c.ud,0>c.yb&&(c.yb=0),c.yb>=c.kb&&(c.yb=c.kb-1),c.ud=d,c.lb=nt,c.yb||(c.lb|=ot),bt(this),b=!0}0>>8);dt(a,(b.lb&vt)>>>16);var k=0;if(e!=b.yb||f!=b.Ua)k=g=1;c&wt&&(f^=k,d||(k=0));dt(a,e+k);dt(a,f);dt(a,g);dt(a,h)}function $s(a){var b=a.G[a.D];a.D++;return b} +function bt(a){a.D=a.C=0}function dt(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?xt(a,b):-1};l.ik=function(a,b){if(void 0!==b&&0<=b)a:if(a.lb)a=-1;else{a.Fc[a.he++]=b;if(a.he==a.Fc.length){a.yb=a.Fc[0];a.Ua=a.Fc[1];a.bb=a.Fc[2];a.xb=128<xt(a,a.Wh)){a=-1;break a}a.vf++}a.vf>=a.vd&&(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.ra){do{if(a.Ta&&(e=a.Pa,0<=(c=a.ra.read(a.Ta,a.Pa++)))){d=a.Ta;break}a.Ta=a.ra.seek(a.yb,a.Ua,a.bb);if(!a.Ta){a.lb=yt|it;break}a.Pa=0;zt(a)}while(1)}b(c,!1,d,e)};function xt(a,b){if(a.lb||!a.ra)return-1;do{if(a.Ta&&a.ra.write(a.Ta,a.Pa++,b))break;a.Ta=a.ra.seek(a.yb,a.Ua,a.bb);if(!a.Ta){a.lb=At|it;b=-1;break}a.Pa=0;zt(a)}while(1);return b}function zt(a){a.bb++;a.bb>=a.Oe+1&&(a.bb=1,a.Ua++,a.Ua>=a.Ne&&(a.Ua=0,a.yb++))} +var Ns="Floppy Drive",Us=4,Vs=8,Xs=16,Ws=64,Ls=128,at=3,ct=4,ft=5,gt=6,mt=7,pt=8,rt=10,st=13,tt=15,Ys=31,wt=128,jt=0,ht=8,nt=32,it=64,Ms=192,qt=255,kt=512,yt=1024,At=8192,ut=65280,vt=16711680,ot=268435456,et=-16777216,Ts=128,Qs=0;aa={}; +var Zs={3:{fd:3,wd:0,name:aa.yo},4:{fd:2,wd:1,name:aa.wo},5:{fd:9,wd:7,name:aa.Do},6:{fd:9,wd:7,name:aa.so},7:{fd:2,wd:0,name:aa.uo},8:{fd:1,wd:2,name:aa.xo},10:{fd:2,wd:7,name:aa.to},13:{fd:6,wd:7,name:aa.oo},15:{fd:3,wd:0,name:aa.vo}},Fs={1009:zs.prototype.Vk,1012:zs.prototype.Xk,1013:zs.prototype.Uk,1015:zs.prototype.Wk},Gs={1010:zs.prototype.sm,1013:zs.prototype.rm,1015:zs.prototype.qm}; +La(function(){for(var a=bb(document,"pcx86","fdc"),b=0;bk.ra.restore(g)&&(z=!1),z&&void 0!==k.Pa&&(k.Ta=k.ra.seek(k.Cd,k.Ua,k.bb+k.uf)));z||(e=!1);null!=a.W&&1>=d&&(a.W|=(f.type&3)<<(1-d<<1))}0<=a.Ma&&(a.B=a.A[a.Ma]); +return e} +function It(a){var b=0,c=[];a.L?(c[b++]=a.H,c[b++]=a.ta,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.Ma]):(c[b++]=a.W,c[b++]=a.Z,c[b++]=a.G,c[b++]=a.D,c[b++]=a.C,c[b++]=a.oa,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&=~(Tt|Ut|Vt));return a};l.Om=function(a,b){this.C=a&&(this.Z|=Tt,this.Z&=~Xt,Yt(this))};l.xl=function(){var a=this.Z;this.D=a.B.ob?(a.Z=$t,a.ve(a.B,function(b){0<=b?(au(a),a.U&&a.U.ca==Hj&&(a.Z=0),a.Z=a.Z|Jt|bu|cu):(a.Z=du,a.H=eu)},!1)):a.Z=Jt|bu));return b}l.Yj=function(){return Zt(this)|Zt(this)<<8}; +function fu(a,b){a.B&&a.B.xb>=a.B.ob&&(0>gu(a.B,b)?(a.Z=du,a.H=eu):(1==a.B.Pa||a.B.Pa==a.B.ob)&&1=a.B.ob&&(a.Z|=cu)))}l.Zl=function(a,b){fu(this,b&255);fu(this,b>>8&255)};l.Dk=function(){return this.H};l.dm=function(a,b){this.ta=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&hu?1:0]?this.Z|Jt|bu:this.Z&~Jt};l.Hk=function(){var a=this.Z;this.Z&Jt&&(this.Z&=~$t);return a};l.Wl=function(a,b){this.fa=b;this.U&&Df(this.U,14);iu(this)};l.am=function(a,b){this.K&ju&&!(b&ju)&&(this.H=ku);this.K=b}; +function iu(a){var b=!1,c=a.fa,d=a.N&hu?1:0,e=a.N&lu,f=a.ba|(a.aa&mu)<<8,g=a.da,h=a.I||256;a.Ma=-1;a.B=null;a.H=nu;a.Z=Jt|bu;var k=a.A[d];k?(k.Cd=f,k.Ua=e,k.bb=g,k.xb=h*k.ob,c=c>=ou?c:c&pu,k.Ta=null,k.Pa=0,k.errorCode=0,a.Ma=d,a.B=k):c=-1;switch(c&pu){case qu:b=!0;break;case ru:a.Z=$t;a.ve(k,function(b){0<=b&&a.U?(au(a),a.Z=Jt|bu|cu):(a.Z=du,a.H=eu)},!1);break;case su:a.Z=cu;break;case tu:b=!0;break;case uu:b=!0;break;case ou:a.H=ku;b=!0;break;case vu:k.$a=e+1,k.Va=h,b=!0}b&&au(a)} +function au(a){!a.U||a.K&wu||Ff(a.U,14,120)} +function Yt(a){a.D=0;var b=xu(a),c=xu(a),d=c&32,e=d>>5,f=c&31,g=xu(a),h=xu(a),k=g<<2&768|h,m=g&63,r=xu(a),y=xu(a),t=a.A[e];t&&(t.Cd=k,t.Ua=f,t.bb=m,t.xb=r*t.ob);switch(b){case yu:zu(a,t?t.errorCode:Au);Bu(a,c);Bu(a,g);Bu(a,h);Bu(a,Cu|d);b=-1;break;case Wt:for(c=0;0<=(b=xu(a));)t&&cb?this.ve(a,c):c(-1,!1)};l.Xj=function(a,b){return void 0!==b&&0<=b?gu(a,b):-1}; +l.jk=function(a,b){void 0!==b&&0<=b?(a.Pagu(a,a.Wh)){a=-1;break a}a.vf++}a.vf>=a.vd&&(b=-1);a=b}else a=-1;return a}; +function Ku(a,b,c){b.errorCode=Au;if(b.ra&&(b.Ta=null,a.U)){b.errorCode=Lt;ul(a.U,3,a,"dmaRead",b);ql(a.U,3,function(a){a||b.errorCode!=Lt||(b.errorCode=Au);c(b.errorCode?Du:Cu)});return}c(b.errorCode?Du:Cu)}function Mu(a,b,c){b.errorCode=Au;if(b.ra&&(b.Ta=null,a.U)){b.errorCode=Lt;ul(a.U,3,a,"dmaWrite",b);ql(a.U,3,function(a){a||(b.errorCode==Lt&&(b.errorCode=Au),b.errorCode==Pu&&(b.errorCode=Lt));c(b.errorCode?Du:Cu)});return}c(b.errorCode?Du:Cu)} +function Ou(a,b,c){b.errorCode=Au;b.de&&b.de.length==b.xb||(b.de=Array(b.xb));b.Pa=0;a.U?(b.errorCode=Lt,ul(a.U,3,a,"dmaWriteBuffer",b),ql(a.U,3,function(a){a||b.errorCode!=Lt||(b.errorCode=Au);c(b.errorCode?Du:Cu)})):c(b.errorCode?Du:Cu)} +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.Ta&&(f=a.Pa,d=a.ra.read(a.Ta,a.Pa),a.Pa+=g,0<=d))return e=a.Ta,b&&b(d,!1,e,f),d;if(b){if(a.ra)return a.ra.seek(a.Cd,a.Ua,a.bb+a.uf,!1,function(c,k){(a.Ta=c)?(e=c,f=a.Pa=0,Qu(a),d=a.ra.read(a.Ta,a.Pa),a.Pa+=g):a.errorCode=Pu;b(d,k,e,f)}),d;a.errorCode=Pu;b(d,!1,e,f)}return d}; +function gu(a,b){if(a.errorCode)return-1;do{if(a.Ta&&a.ra.write(a.Ta,a.Pa++,b))break;a.ra&&a.ra.seek(a.Cd,a.Ua,a.bb+a.uf,!0,function(b){a.Ta=b});if(!a.Ta){a.errorCode=Pu;b=-1;break}a.Pa=0;Qu(a)}while(1);return b}function Qu(a){a.bb++;var b=1-a.uf;a.bb>=a.Va+b&&(a.bb=b,a.Ua++,a.Ua>=a.$a&&(a.Ua=0,a.Cd++))}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 Mt="Hard Drive",Rt=["XTC","ATC","COMPAQ"],Nt=[{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]}],Ft=496,ku=1,nu=0,eu=16,mu=3,lu=15,hu=16,du=1,cu=8,bu=16,Jt=64,$t=128,qu=16,ru=32,su=48,tu=64,uu= +112,ou=144,vu=145,pu=240,wu=2,ju=4,Cu=0,Du=2,Gu=0,Hu=1,yu=3,Iu=5,Ju=8,Lu=10,Wt=12,Nu=15,Eu=224,Fu=228,Lt=0,Au=4,Pu=20,Kt=0,Xt=1,Tt=2,Ut=4,Vt=8,St=32,Ct={800:Y.prototype.wl,801:Y.prototype.xl,802:Y.prototype.vl},Bt={496:Y.prototype.Yj,497:Y.prototype.Dk,498:Y.prototype.Fk,499:Y.prototype.Gk,500:Y.prototype.Bk,501:Y.prototype.Ak,502:Y.prototype.Ck,503:Y.prototype.Hk},Et={800:Y.prototype.Om,801:Y.prototype.Rm,802:Y.prototype.Qm,803:Y.prototype.Pm,807:Y.prototype.fh,811:Y.prototype.fh,815:Y.prototype.fh}, +Dt={496:Y.prototype.Zl,497:Y.prototype.dm,498:Y.prototype.bm,499:Y.prototype.cm,500:Y.prototype.Yl,501:Y.prototype.Xl,502:Y.prototype.$l,503:Y.prototype.Wl,1014:Y.prototype.am};La(function(){for(var a=bb(document,"pcx86","hdc"),b=0;b\nLicense: GPL version 3 or later "); +for(b=0;bTu){if(d.load(this.K)){this.F=new Me(this,"1.36.1",dv);this.F.load()&&(a!=cv&&ev(this,d)&&(a=fv),gv(this.F));this.F.set(bv,qa("Y-m-d H:i:s"));hv(this.F);var e=this.A&&!this.H;if(a==cv||Wa("Click OK to restore the previous PCx86 machine state.")){if(c=av(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&&(Ca(iv,""),this.B=null)):this.tb(f+": "+g),gv(d),d.load()?(c=av(d),e=!0):c=!1))}e&&Zu(this,c?d:null)}else a==fv&&d.clear()}else Zu(this);delete this.K;delete this.L}e=db(this.id);for(f=0;fa[1];a=a[2];if(!this.X.Ie){for(var d=0;df.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+"...");va(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);vv(a,b,c)}})}else c(a,null)} +function wv(a,b,c,d){function e(a){if(void 0===h){var b=g&&bb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ma(a))}function f(a){e("Error: "+a);k&&(--sv||Pa(!0));k=!1}var g,h,k=!0;sv++;Va[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.1/components.xsl");m=function(d,h){h?tv(c,null,null,!1,e,function(d,k){k?(Ua(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--sv||Pa(!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),--sv||Pa(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?tv(b,a,d,!0,e,m):uv(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(t){f(t.message)}return k}function xv(a,b,c,d){Pa(!1);return wv(a,b,c,d)}window.embedPC=xv;window.embedPCx86=xv; +window.commandMachine=function(a,b,c,d,e,f){if("script"==e)return fb(c,f)?(b&&(a.disabled=!0),!0):!1;if(d){var g=$a(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=Pa;window.sendEvent=Ra; +function yv(a,b,c,d){if(!c&&b){d.push(b);a=Va[d[0]];b=null;for(var e in a)if(la(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?va(b,null,!0,function(a,b){zv(b,d)}):zv(null,d)}else q("Error ("+c+") requesting "+a)} +function zv(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=Va[f],k={},m;for(m in h){var r=h[m],y=ka(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=ja(m)}else"xsl"==y&&(e=m=ja(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=Ja(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.1/document.css b/versions/pdpjs/1.36.1/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/pdpjs/1.36.1/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.1/document.xsl b/versions/pdpjs/1.36.1/document.xsl new file mode 100644 index 0000000000..e349df3e37 --- /dev/null +++ b/versions/pdpjs/1.36.1/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.1/machine.xsl b/versions/pdpjs/1.36.1/machine.xsl new file mode 100644 index 0000000000..66b4cc6cea --- /dev/null +++ b/versions/pdpjs/1.36.1/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pdpjs/1.36.1/manifest.xsl b/versions/pdpjs/1.36.1/manifest.xsl new file mode 100644 index 0000000000..f69b2293d9 --- /dev/null +++ b/versions/pdpjs/1.36.1/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.1/outline.xsl b/versions/pdpjs/1.36.1/outline.xsl new file mode 100644 index 0000000000..742a92a4ed --- /dev/null +++ b/versions/pdpjs/1.36.1/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.1/pdp10-dbg.js b/versions/pdpjs/1.36.1/pdp10-dbg.js new file mode 100644 index 0000000000..c0f45d9b2b --- /dev/null +++ b/versions/pdpjs/1.36.1/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.1 ("+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.1",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.1";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.1"),g=new G(a,"1.36.1",xi),h=Ia();g.set(zi,h);f.set(zi,h);f.set(Ji,"1.36.1");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.1/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