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:
Jeff Parsons 2017-06-25 08:32:27 -07:00 committed by Jeff Parsons
commit 7457e4e44f
43 changed files with 132 additions and 117 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"}]'

View file

@ -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
---

View file

@ -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:

View file

@ -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

View file

@ -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
---

View file

@ -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:

View file

@ -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:

View file

@ -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

View file

@ -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
---

View file

@ -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
---

View file

@ -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

View file

@ -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
---

View file

@ -5,7 +5,7 @@ permalink: /devices/c1p/machine/8kb/
---
Challenger 1P Machine Configurations with 8Kb
---
---------------------------------------------
Here are some sample C1P Machine Configurations with 8Kb:

View file

@ -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
---

View file

@ -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" %}

View file

@ -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/

View file

@ -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/

View file

@ -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
---

View file

@ -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/

View file

@ -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" %}

View file

@ -5,7 +5,7 @@ permalink: /devices/c1p/machine/
---
Challenger 1P Machine Configurations
---
------------------------------------
Here are some sample C1P Machine Configurations:

View file

@ -5,7 +5,7 @@ permalink: /devices/pc8080/machine/
---
PC8080 Machine Configurations
---
-----------------------------
The following 8080-based machines are currently available:

View file

@ -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
---

View file

@ -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)

View file

@ -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
---

View file

@ -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" %}

View file

@ -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/

View file

@ -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/

View file

@ -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

View file

@ -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/).

View file

@ -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}

View file

@ -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))}

View file

@ -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, '.'));
}
}

View file

@ -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, '.'));
}
}

View file

@ -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']);
});

View file

@ -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
---

View file

@ -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