Changed the default page "exit" event handler from "onunload" to "pagehide" for iOS; hopefully, auto-resume machines will work better on mobile devices with that change
This commit is contained in:
parent
cf35125d34
commit
7457e4e44f
43 changed files with 132 additions and 117 deletions
|
|
@ -5,8 +5,8 @@ date: 2015-01-17 11:00:00
|
|||
category: Features
|
||||
permalink: /blog/2015/01/17/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: at-ega-1152k-rev3
|
||||
- id: at-ega-1152k-rev3
|
||||
type: pcx86
|
||||
debugger: true
|
||||
uncompiled: true
|
||||
config: /devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ date: 2015-01-28 11:00:00
|
|||
category: Control Panel
|
||||
permalink: /blog/2015/01/28/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: at-ega-1152k-rev3
|
||||
- id: at-ega-1152k-rev3
|
||||
type: pcx86
|
||||
debugger: true
|
||||
uncompiled: true
|
||||
config: /devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ date: 2015-02-22 11:00:00
|
|||
category: 80386
|
||||
permalink: /blog/2015/02/22/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
- id: deskpro386
|
||||
type: pcx86
|
||||
debugger: true
|
||||
uncompiled: true
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ date: 2015-04-16 11:00:00
|
|||
category: 80386
|
||||
permalink: /blog/2015/04/16/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
- id: deskpro386
|
||||
type: pcx86
|
||||
debugger: true
|
||||
uncompiled: true
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml
|
||||
|
|
|
|||
|
|
@ -5,13 +5,17 @@ date: 2015-07-17 11:00:00
|
|||
category: Windows 95
|
||||
permalink: /blog/2015/07/17/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
- id: deskpro386
|
||||
type: pcx86
|
||||
debugger: true
|
||||
state: /disks/pcx86/windows/win95/4.00.950/deskpro386.json
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml
|
||||
drives: '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pcx86/fixed/68mb/win95.json"}]'
|
||||
autoMount: ''
|
||||
autoMount:
|
||||
A:
|
||||
name: None
|
||||
B:
|
||||
name: None
|
||||
---
|
||||
|
||||
This week (July 14, 2015) was the 20th anniversary of Windows 95 RTM ("Release To Manufacturing"). So I decided to
|
||||
|
|
|
|||
|
|
@ -5,12 +5,16 @@ date: 2015-09-21 11:00:00
|
|||
category: Windows 95
|
||||
permalink: /blog/2015/09/21/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
- id: deskpro386
|
||||
type: pcx86
|
||||
state: /disks/pcx86/windows/win95/4.00.950/deskpro386.json
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml
|
||||
drives: '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pcx86/fixed/68mb/win95.json"}]'
|
||||
autoMount: ''
|
||||
autoMount:
|
||||
A:
|
||||
name: None
|
||||
B:
|
||||
name: None
|
||||
---
|
||||
|
||||
Today, the last serious bug preventing a successful boot of Windows 95 was fixed. I won't bore you with
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ date: 2015-12-27 11:00:00
|
|||
category: OS/2
|
||||
permalink: /blog/2015/12/27/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5170
|
||||
- id: ibm5170
|
||||
type: pcx86
|
||||
debugger: true
|
||||
config: /devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml
|
||||
drives: '[{name:"20Mb Hard Disk",type:2,path:"http://archive.pcjs.org/disks/pcx86/fixed/20mb/IBMOS210-EGA.json"}]'
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ title: The VT100 Terminal
|
|||
date: 2016-08-03 18:00:00
|
||||
permalink: /blog/2016/08/03/
|
||||
machines:
|
||||
- type: pc8080
|
||||
id: vt100
|
||||
- id: vt100
|
||||
type: pc8080
|
||||
config: /devices/pc8080/machine/vt100/machine.xml
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ title: Adventures in Archiving
|
|||
date: 2017-06-15 22:00:00
|
||||
permalink: /blog/2017/06/15/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5150
|
||||
- id: ibm5150
|
||||
type: pcx86
|
||||
config: /devices/pcx86/machine/5150/cga/64kb/machine.xml
|
||||
autoMount:
|
||||
A:
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: "VisiCalc (1981)"
|
||||
permalink: /apps/pcx86/1981/visicalc/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5150-visicalc
|
||||
- id: ibm5150-visicalc
|
||||
type: pcx86
|
||||
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
||||
resume: 1
|
||||
state: /apps/pcx86/1981/visicalc/state.json
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: "Executive Suite (1982)"
|
||||
permalink: /apps/pcx86/1982/esuite/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160-esuite
|
||||
- id: ibm5160-esuite
|
||||
type: pcx86
|
||||
config: /devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml
|
||||
state: /apps/pcx86/1982/esuite/state.json
|
||||
---
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: "RatBas (1982)"
|
||||
permalink: /apps/pcx86/1982/ratbas/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5150-ratbas
|
||||
- id: ibm5150-ratbas
|
||||
type: pcx86
|
||||
config: /devices/pcx86/machine/5150/cga/256kb/machine.xml
|
||||
autoMount:
|
||||
A:
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: "Adventures in Math (1983)"
|
||||
permalink: /apps/pcx86/1983/adventmath/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5150-adventmath
|
||||
- id: ibm5150-adventmath
|
||||
type: pcx86
|
||||
config: /devices/pcx86/machine/5150/cga/64kb/machine.xml
|
||||
resume: 1
|
||||
autoMount:
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: "Rogue (1985)"
|
||||
permalink: /apps/pcx86/1985/rogue/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160-rogue
|
||||
- id: ibm5160-rogue
|
||||
type: pcx86
|
||||
config: /devices/pcx86/machine/5160/cga/640kb/machine.xml
|
||||
state: /apps/pcx86/1985/rogue/state.json
|
||||
resume: 1
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: "ThinkTank (1987)"
|
||||
permalink: /apps/pcx86/1987/thinktank/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160-thinktank
|
||||
- id: ibm5160-thinktank
|
||||
type: pcx86
|
||||
config: /devices/pcx86/machine/5160/cga/640kb/machine.xml
|
||||
state: /apps/pcx86/1987/thinktank/state.json
|
||||
---
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: "The Dungeons of Moria (1992)"
|
||||
permalink: /apps/pcx86/1992/moria/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160-moria55
|
||||
- id: ibm5160-moria55
|
||||
type: pcx86
|
||||
config: /devices/pcx86/machine/5160/cga/640kb/machine.xml
|
||||
state: /apps/pcx86/1992/moria/state.json
|
||||
---
|
||||
|
|
|
|||
|
|
@ -17,12 +17,14 @@ A list of all the software available to PCx86 machines can be found in the [IBM
|
|||
### 1981
|
||||
|
||||
* [DONKEY.BAS](1981/donkey/)
|
||||
* [Microsoft Adventure](/disks/pcx86/games/microsoft/adventure/)
|
||||
* [VisiCalc](1981/visicalc/)
|
||||
|
||||
### 1982
|
||||
|
||||
* [Executive Suite](1982/esuite/)
|
||||
* [RatBas v2.13](1982/ratbas/)
|
||||
* [Zork I](/disks/pcx86/games/infocom/zork1/)
|
||||
|
||||
### 1983
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: OSI Challenger 1P (32Kb) with Disk Support
|
||||
permalink: /devices/c1p/machine/32kb/
|
||||
machines:
|
||||
- type: c1p
|
||||
id: c1p32kb
|
||||
- id: c1p32kb
|
||||
type: c1p
|
||||
debugger: true
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ permalink: /devices/c1p/machine/8kb/
|
|||
---
|
||||
|
||||
Challenger 1P Machine Configurations with 8Kb
|
||||
---
|
||||
---------------------------------------------
|
||||
|
||||
Here are some sample C1P Machine Configurations with 8Kb:
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: OSI Challenger 1P (8Kb) with Additional Software
|
||||
permalink: /devices/c1p/machine/8kb/all/debugger/
|
||||
machines:
|
||||
- type: c1p
|
||||
id: c1p8kb
|
||||
- id: c1p8kb
|
||||
type: c1p
|
||||
debugger: true
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: OSI Challenger 1P (8Kb) with Additional Software
|
||||
permalink: /devices/c1p/machine/8kb/all/
|
||||
machines:
|
||||
- type: c1p
|
||||
id: c1p8kb
|
||||
- id: c1p8kb
|
||||
type: c1p
|
||||
---
|
||||
|
||||
{% include machine.html id="c1p8kb" %}
|
||||
|
|
|
|||
|
|
@ -3,32 +3,32 @@ layout: page
|
|||
title: OSI Challenger 1P (8Kb) "Server Array"
|
||||
permalink: /devices/c1p/machine/8kb/array/
|
||||
machines:
|
||||
- type: c1p
|
||||
id: osi1
|
||||
- id: osi1
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/small/machine.xml
|
||||
- type: c1p
|
||||
id: osi2
|
||||
- id: osi2
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/small/machine.xml
|
||||
- type: c1p
|
||||
id: osi3
|
||||
- id: osi3
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/small/machine.xml
|
||||
- type: c1p
|
||||
id: osi4
|
||||
- id: osi4
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/small/machine.xml
|
||||
- type: c1p
|
||||
id: osi5
|
||||
- id: osi5
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/small/machine.xml
|
||||
- type: c1p
|
||||
id: osi6
|
||||
- id: osi6
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/small/machine.xml
|
||||
- type: c1p
|
||||
id: osi7
|
||||
- id: osi7
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/small/machine.xml
|
||||
- type: c1p
|
||||
id: osi8
|
||||
- id: osi8
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/small/machine.xml
|
||||
- type: c1p
|
||||
id: osi9
|
||||
- id: osi9
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/small/machine.xml
|
||||
redirect_from:
|
||||
- /configs/c1p/machines/array/
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: OSI Challenger 1P (8Kb) with Small Display
|
||||
permalink: /devices/c1p/machine/8kb/embed/
|
||||
machines:
|
||||
- type: c1p
|
||||
id: c1pEmbed
|
||||
- id: c1pEmbed
|
||||
type: c1p
|
||||
redirect_from:
|
||||
- /configs/c1p/machines/8kb/embed/
|
||||
- /demos/c1p/embed.xml/
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: OSI Challenger 1P (8Kb) with Large Display
|
||||
permalink: /devices/c1p/machine/8kb/large/debugger/
|
||||
machines:
|
||||
- type: c1p
|
||||
id: c1p8kb
|
||||
- id: c1p8kb
|
||||
type: c1p
|
||||
debugger: true
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: OSI Challenger 1P (8Kb) with Large Display
|
||||
permalink: /devices/c1p/machine/8kb/large/
|
||||
machines:
|
||||
- type: c1p
|
||||
id: c1p8kb
|
||||
- id: c1p8kb
|
||||
type: c1p
|
||||
redirect_from:
|
||||
- /configs/c1p/machines/8kb/large/
|
||||
- /configs/c1p/machines/8kb/large/machine.xml/
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: OSI Challenger 1P (8Kb) with Small Display
|
||||
permalink: /devices/c1p/machine/8kb/small/
|
||||
machines:
|
||||
- type: c1p
|
||||
id: c1p8kb
|
||||
- id: c1p8kb
|
||||
type: c1p
|
||||
---
|
||||
|
||||
{% include machine.html id="c1p8kb" %}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ permalink: /devices/c1p/machine/
|
|||
---
|
||||
|
||||
Challenger 1P Machine Configurations
|
||||
---
|
||||
------------------------------------
|
||||
|
||||
Here are some sample C1P Machine Configurations:
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ permalink: /devices/pc8080/machine/
|
|||
---
|
||||
|
||||
PC8080 Machine Configurations
|
||||
---
|
||||
-----------------------------
|
||||
|
||||
The following 8080-based machines are currently available:
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ permalink: /devices/pc8080/machine/exerciser/
|
|||
redirect_from:
|
||||
- /devices/pc8080/machine/test/
|
||||
machines:
|
||||
- type: pc8080
|
||||
id: test8080
|
||||
- id: test8080
|
||||
type: pc8080
|
||||
debugger: true
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: Space Invaders (1978)
|
||||
permalink: /devices/pc8080/machine/invaders/
|
||||
machines:
|
||||
- type: pc8080
|
||||
id: invaders
|
||||
- id: invaders
|
||||
type: pc8080
|
||||
---
|
||||
|
||||
Space Invaders (1978)
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: Space Invaders (1978) with Debugger
|
||||
permalink: /devices/pc8080/machine/invaders/debugger/
|
||||
machines:
|
||||
- type: pc8080
|
||||
id: invaders
|
||||
- id: invaders
|
||||
type: pc8080
|
||||
debugger: true
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -3,28 +3,28 @@ layout: page
|
|||
title: PDP-11/70 "Server Array"
|
||||
permalink: /devices/pdp11/machine/1170/array/
|
||||
machines:
|
||||
- type: pdp11
|
||||
id: test1170a
|
||||
- id: test1170-1
|
||||
type: pdp11
|
||||
autoStart: true
|
||||
config: /devices/pdp11/machine/1170/panel/machine.xml
|
||||
- type: pdp11
|
||||
id: test1170b
|
||||
- id: test1170-2
|
||||
type: pdp11
|
||||
autoStart: true
|
||||
config: /devices/pdp11/machine/1170/panel/machine.xml
|
||||
- type: pdp11
|
||||
id: test1170c
|
||||
- id: test1170-3
|
||||
type: pdp11
|
||||
autoStart: true
|
||||
config: /devices/pdp11/machine/1170/panel/machine.xml
|
||||
- type: pdp11
|
||||
id: test1170d
|
||||
- id: test1170-4
|
||||
type: pdp11
|
||||
autoStart: true
|
||||
config: /devices/pdp11/machine/1170/panel/machine.xml
|
||||
---
|
||||
|
||||
{% include machine.html id="test1170a" %}
|
||||
{% include machine.html id="test1170-1" %}
|
||||
|
||||
{% include machine.html id="test1170b" %}
|
||||
{% include machine.html id="test1170-2" %}
|
||||
|
||||
{% include machine.html id="test1170c" %}
|
||||
{% include machine.html id="test1170-3" %}
|
||||
|
||||
{% include machine.html id="test1170d" %}
|
||||
{% include machine.html id="test1170-4" %}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: C1Pjs Documentation
|
||||
permalink: /docs/c1pjs/
|
||||
machines:
|
||||
- type: c1p-dbg
|
||||
id: c1p8kb
|
||||
- id: c1p8kb
|
||||
type: c1p-dbg
|
||||
config: /devices/c1p/machine/8kb/large/debugger/machine.xml
|
||||
redirect_from:
|
||||
- /c1p/
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: Embedding The C1Pjs Simulator
|
||||
permalink: /docs/c1pjs/embed/
|
||||
machines:
|
||||
- type: c1p
|
||||
id: c1p8kb
|
||||
- id: c1p8kb
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/embed/machine.xml
|
||||
redirect_from:
|
||||
- /configs/c1p/embed/
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@ layout: page
|
|||
title: PCx86 Documentation
|
||||
permalink: /docs/pcx86/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5150
|
||||
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
||||
- id: ibm5150
|
||||
type: pcx86
|
||||
resume: 1
|
||||
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
||||
---
|
||||
|
||||
PCx86 Documentation
|
||||
---
|
||||
-------------------
|
||||
|
||||
[PCx86](/docs/about/pcx86/) is a full-featured [IBM PC and PC-compatible](/devices/pcx86/machine/) emulator written
|
||||
entirely in JavaScript. It supports a variety of XT and AT class machines, with processors ranging from the 8088
|
||||
|
|
|
|||
|
|
@ -3,13 +3,13 @@ layout: page
|
|||
title: PCx86 Documentation Examples
|
||||
permalink: /docs/pcx86/examples/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: example3
|
||||
- id: example3
|
||||
type: pcx86
|
||||
config: /docs/pcx86/examples/example3b.xml
|
||||
---
|
||||
|
||||
PCx86 Documentation Examples
|
||||
---
|
||||
----------------------------
|
||||
|
||||
This folder provides all the self-contained [PCx86](/docs/about/pcx86/) examples described in the
|
||||
[Documentation](/docs/pcx86/).
|
||||
|
|
|
|||
|
|
@ -68,8 +68,9 @@ function Xa(a){if(!Ya){var b,c={};if(window){b||(b=window.location.search.substr
|
|||
function Za(a,b,c,d){var e=null;b="data:application/"+b+(c?";base64":"")+",";b=Wa("Firefox")?b+(c?a:encodeURIComponent(a)):b+(c?a:encodeURI(a));d&&(e=document.createElement("a"),"string"!=typeof e.download&&(e=null));e?(e.href=b,e.download=d,document.body.appendChild(e),e.click(),document.body.removeChild(e),a="Check your Downloads folder for "+d+"."):(window.open(b),a="Check your browser for a new window/tab containing the requested data"+(d?" ("+d+")":"")+".");return a}
|
||||
function $a(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}function ab(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}function bb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}
|
||||
function eb(a){gb.init.push(a)}function hb(a){if(jb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){kb(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function lb(a){!jb&&a?(jb=!0,mb&&nb("init"),ob&&nb("show")):jb=a}function nb(a){gb[a]&&hb(gb[a])}var Ya=null,gb={init:[],show:[],exit:[]},mb=!1,ob=!1,jb=!0,Ta=null;bb("onload",function(){mb=!0;hb(gb.init)});bb("onpageshow",function(){ob=!0;hb(gb.show)});
|
||||
bb(Wa("Opera")||Wa("iOS")?"onunload":"onbeforeunload",function(){hb(gb.exit)});function pb(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.zj=b.comment;this.Qk=b;this.exports={};this.na=this.bindings={};a=this.id.indexOf(".");0>a?this.ce=this.id:(this.ye=this.id.substr(0,a),this.ce=this.id.substr(a+1));this.da={ready:!1,qf:!1,bh:!1,Yb:!1,Tf:!1,error:!1};this.rg=null;this.da.error=!1;this.ic=c||0;this.ba=this.H=this.ka=this.pa=this.Je=null;qb.push(this)}
|
||||
function sb(a,b,c){tb[a]&&b&&(tb[a][b]=c)}function kb(a){window&&window.alert(a)}function ub(a){var b=!1;window&&(b=window.confirm(a));return b}function vb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<qb.length;b++){var d=qb[b];a&&d.id.indexOf(a)||c.push(d)}return c}function wb(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<qb.length;c++)if(qb[c].id===a)return qb[c]}return null}
|
||||
bb(Wa("iOS")?"onpagehide":Wa("Opera")?"onunload":"onbeforeunload",function(){hb(gb.exit)});
|
||||
function pb(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.zj=b.comment;this.Qk=b;this.exports={};this.na=this.bindings={};a=this.id.indexOf(".");0>a?this.ce=this.id:(this.ye=this.id.substr(0,a),this.ce=this.id.substr(a+1));this.da={ready:!1,qf:!1,bh:!1,Yb:!1,Tf:!1,error:!1};this.rg=null;this.da.error=!1;this.ic=c||0;this.ba=this.H=this.ka=this.pa=this.Je=null;qb.push(this)}function sb(a,b,c){tb[a]&&b&&(tb[a][b]=c)}function kb(a){window&&window.alert(a)}
|
||||
function ub(a){var b=!1;window&&(b=window.confirm(a));return b}function vb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<qb.length;b++){var d=qb[b];a&&d.id.indexOf(a)||c.push(d)}return c}function wb(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<qb.length;c++)if(qb[c].id===a)return qb[c]}return null}
|
||||
function yb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<qb.length;d++)if(c)c==qb[d]&&(c=null);else if(!(a!=qb[d].type||b&&qb[d].id.indexOf(b)))return qb[d]}return null}function zb(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){kb(c.message+" ("+a+")")}return b}function Ab(a,b,c){var d;b&&(void 0===d&&(d="Panel"),(d=yb(d,a.id))&&(b=d.na[b])&&a.Cb(null,c,b))}
|
||||
function Bb(a,b){b=Cb(b.parentNode,"pcx86-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),k=0;k<h.length;k++)switch(g=h[k],g){case "pcx86-binding":(g=zb(f))&&g.binding&&a.Cb(g.type,g.binding,f,g.value),k=h.length}}}}
|
||||
function Cb(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ function Ja(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return
|
|||
function La(a){if(!Ma){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Ma=c}return Ma[a]||Ma[a.toLowerCase()]}
|
||||
function Na(a,b,c,d){var e=null;b="data:application/"+b+(c?";base64":"")+",";b=Ka("Firefox")?b+(c?a:encodeURIComponent(a)):b+(c?a:encodeURI(a));d&&(e=document.createElement("a"),"string"!=typeof e.download&&(e=null));e?(e.href=b,e.download=d,document.body.appendChild(e),e.click(),document.body.removeChild(e),a="Check your Downloads folder for "+d+"."):(window.open(b),a="Check your browser for a new window/tab containing the requested data"+(d?" ("+d+")":"")+".");return a}
|
||||
function Oa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Pa(a){Qa.init.push(a)}function Ra(a){if(Sa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Ta(a){!Sa&&a?(Sa=!0,Ua&&Va("init"),Wa&&Va("show")):Sa=a}function Va(a){Qa[a]&&Ra(Qa[a])}var Ma=null,Qa={init:[],show:[],exit:[]},Ua=!1,Wa=!1,Sa=!0,Ha=null;
|
||||
Oa("onload",function(){Ua=!0;Ra(Qa.init)});Oa("onpageshow",function(){Wa=!0;Ra(Qa.show)});Oa(Ka("Opera")||Ka("iOS")?"onunload":"onbeforeunload",function(){Ra(Qa.exit)});
|
||||
Oa("onload",function(){Ua=!0;Ra(Qa.init)});Oa("onpageshow",function(){Wa=!0;Ra(Qa.show)});Oa(Ka("iOS")?"onpagehide":Ka("Opera")?"onunload":"onbeforeunload",function(){Ra(Qa.exit)});
|
||||
function t(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.vi=b.comment;this.Jj=b;this.exports={};this.ia=this.bindings={};a=this.id.indexOf(".");0>a?this.Ud=this.id:(this.Wd=this.id.substr(0,a),this.Ud=this.id.substr(a+1));this.aa={ready:!1,yf:!1,ng:!1,Pb:!1,hf:!1,error:!1};this.Hf=null;this.aa.error=!1;this.Ea=this.U=this.ma=this.oa=this.Ef=null;Xa.push(this)}function Ya(a,b,c){Za[a]&&b&&(Za[a][b]=c)}function r(a){window&&window.alert(a)}
|
||||
function ab(a){var b=!1;window&&(b=window.confirm(a));return b}function bb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Xa.length;b++){var d=Xa[b];a&&d.id.indexOf(a)||c.push(d)}return c}function cb(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<Xa.length;c++)if(Xa[c].id===a)return Xa[c]}return null}
|
||||
function db(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<Xa.length;d++)if(c)c==Xa[d]&&(c=null);else if(!(a!=Xa[d].type||b&&Xa[d].id.indexOf(b)))return Xa[d]}return null}function eb(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}function fb(a,b,c){var d;b&&(void 0===d&&(d="Panel"),(d=db(d,a.id))&&(b=d.ia[b])&&a.wb(null,c,b))}
|
||||
|
|
|
|||
|
|
@ -624,15 +624,17 @@ class Computer8080 extends Component {
|
|||
if (!data) {
|
||||
/*
|
||||
* This is a hack that makes it possible for a machine whose ID has been
|
||||
* supplemented with a suffix (a single letter or digit) to find object IDs
|
||||
* in states created from a machine without the suffix.
|
||||
* supplemented with a hyphenated numeric suffix to find object IDs in states
|
||||
* created from a machine without such a suffix.
|
||||
*
|
||||
* For example, if a state file was created from a machine with ID "ibm5160"
|
||||
* but the current machine is "ibm5160a", this attempts a second lookup with
|
||||
* but the current machine is "ibm5160-1", this attempts a second lookup with
|
||||
* "ibm5160", enabling us to find objects that match the original machine ID
|
||||
* (eg, "ibm5160.romEGA").
|
||||
*
|
||||
* See /devices/pcx86/machine/5160/ega/640kb/array/ for examples of this.
|
||||
*/
|
||||
data = stateComputer.get(component.id.replace(/[a-z0-9]\./i, '.'));
|
||||
data = stateComputer.get(component.id.replace(/-[0-9]+\./i, '.'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -623,15 +623,17 @@ class ComputerPDP11 extends Component {
|
|||
if (!data) {
|
||||
/*
|
||||
* This is a hack that makes it possible for a machine whose ID has been
|
||||
* supplemented with a suffix (a single letter or digit) to find object IDs
|
||||
* in states created from a machine without the suffix.
|
||||
* supplemented with a hyphenated numeric suffix to find object IDs in states
|
||||
* created from a machine without such a suffix.
|
||||
*
|
||||
* For example, if a state file was created from a machine with ID "ibm5160"
|
||||
* but the current machine is "ibm5160a", this attempts a second lookup with
|
||||
* but the current machine is "ibm5160-1", this attempts a second lookup with
|
||||
* "ibm5160", enabling us to find objects that match the original machine ID
|
||||
* (eg, "ibm5160.romEGA").
|
||||
*
|
||||
* See /devices/pcx86/machine/5160/ega/640kb/array/ for examples of this.
|
||||
*/
|
||||
data = stateComputer.get(component.id.replace(/[a-z0-9]\./i, '.'));
|
||||
data = stateComputer.get(component.id.replace(/-[0-9]+\./i, '.'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -995,7 +995,7 @@ Web.onPageEvent('onpageshow', function onPageShow() {
|
|||
Web.doPageEvent(Web.aPageEventHandlers['show']);
|
||||
});
|
||||
|
||||
Web.onPageEvent(Web.isUserAgent("Opera") || Web.isUserAgent("iOS")? 'onunload' : 'onbeforeunload', function onPageUnload() {
|
||||
Web.onPageEvent(Web.isUserAgent("iOS")? 'onpagehide' : (Web.isUserAgent("Opera")? 'onunload' : 'onbeforeunload'), function onPageUnload() {
|
||||
Web.doPageEvent(Web.aPageEventHandlers['exit']);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@ layout: page
|
|||
title: 'Selected Live Demos from "Graphics for the IBM PC"'
|
||||
permalink: /pubs/pc/programming/Graphics_for_the_IBM_PC/demos/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: xt-cga-256k-1
|
||||
- id: xt-cga-256k-1
|
||||
type: pcx86
|
||||
state: 02-03.json
|
||||
- type: pcx86
|
||||
id: xt-cga-256k-2
|
||||
- id: xt-cga-256k-2
|
||||
type: pcx86
|
||||
state: 04-01.json
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ layout: page
|
|||
title: VGA "Black Book" Tests
|
||||
permalink: /tests/pcx86/vga/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
- id: deskpro386
|
||||
type: pcx86
|
||||
debugger: true
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml
|
||||
autoMount:
|
||||
|
|
@ -15,7 +15,7 @@ machines:
|
|||
---
|
||||
|
||||
VGA "Black Book" Tests
|
||||
---
|
||||
----------------------
|
||||
|
||||
To aid in the development of PCjs VGA support, I've added some VGA tests to the project.
|
||||
For now, the only "tests" are samples taken directly from
|
||||
|
|
|
|||
Loading…
Reference in a new issue