When a 'state' file is passed as a URL parameter, that's supposed to override a machine's 'resume' setting, but if a 'state' file is passed as EITHER a computer parameter (the original XML-based method) OR as a machine parameter (a newer method that allows a web page to override certain XML settings), that is NOT supposed to override the 'resume' setting. This restores the ability of the DONKEY.BAS demo to BOTH define a state file AND allow the machine to be suspended and resumed. Additionally, a new-ish Video card property (offStartAddr), which was originally added for the EGA/VGA, was not properly initialized for other cards, so when we restored the display of a suspended machine with a CGA, nothing would be displayed, due to lots of NaN buffer address calculations.
This commit is contained in:
commit
c0fa2979b3
12 changed files with 1463 additions and 1455 deletions
|
|
@ -7,7 +7,7 @@ redirect_from:
|
|||
---
|
||||
|
||||
IBM PC with Color Graphics (CGA) Display
|
||||
---
|
||||
----------------------------------------
|
||||
|
||||
All our 64Kb configurations of the IBM PC Model 5150 w/CGA are located here, including:
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.35.1/machine.xsl"?>
|
||||
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="default">
|
||||
<name pos="center">IBM PC (Model 5150), CGA, 64K</name>
|
||||
<computer id="pc-cga-64k" name="IBM PC"/>
|
||||
<computer id="pc-cga-64k" name="IBM PC" resume="1"/>
|
||||
<ram id="ramLow" addr="0x00000"/>
|
||||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.35.1/machine.xsl"?>
|
||||
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="default">
|
||||
<name pos="center">IBM PC (Model 5150), CGA, 64K</name>
|
||||
<computer id="pc-cga-64k" name="IBM PC"/>
|
||||
<computer id="pc-cga-64k" name="IBM PC" resume="1"/>
|
||||
<ram id="ramLow" addr="0x00000"/>
|
||||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -261,9 +261,12 @@ class Computer extends Component {
|
|||
* OVERRIDES everything; it overrides any 'state' Computer parameter AND it disables resume of any saved state in
|
||||
* localStorage (in other words, it prevents fAllowResume from being true, and forcing resume off).
|
||||
*/
|
||||
var fAllowResume;
|
||||
var sState = this.getMachineParm('state') || (fAllowResume = true) && parmsComputer['state'];
|
||||
|
||||
var fAllowResume = false;
|
||||
var sState = Web.getURLParm('state');
|
||||
if (!sState) {
|
||||
fAllowResume = true;
|
||||
sState = this.getMachineParm('state', parmsComputer);
|
||||
}
|
||||
if (sState) {
|
||||
sStatePath = this.sStatePath = sState;
|
||||
if (!fAllowResume) {
|
||||
|
|
|
|||
|
|
@ -363,6 +363,7 @@ class Card {
|
|||
this.regCRTData = data[5];
|
||||
this.nCRTCRegs = Card.CRTC.TOTAL_REGS;
|
||||
this.asCRTCRegs = DEBUGGER? Card.CRTC.REGS : [];
|
||||
this.offStartAddr = ((this.regCRTData[Card.CRTC.START_ADDR_HI] << 8) + this.regCRTData[Card.CRTC.START_ADDR_LO])|0;
|
||||
|
||||
if (nCard >= Video.CARD.EGA) {
|
||||
this.nCRTCRegs = Card.CRTC.EGA.TOTAL_REGS;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -46650,6 +46650,7 @@ class Card {
|
|||
this.regCRTData = data[5];
|
||||
this.nCRTCRegs = Card.CRTC.TOTAL_REGS;
|
||||
this.asCRTCRegs = DEBUGGER? Card.CRTC.REGS : [];
|
||||
this.offStartAddr = ((this.regCRTData[Card.CRTC.START_ADDR_HI] << 8) + this.regCRTData[Card.CRTC.START_ADDR_LO])|0;
|
||||
|
||||
if (nCard >= Video.CARD.EGA) {
|
||||
this.nCRTCRegs = Card.CRTC.EGA.TOTAL_REGS;
|
||||
|
|
@ -73937,9 +73938,12 @@ class Computer extends Component {
|
|||
* OVERRIDES everything; it overrides any 'state' Computer parameter AND it disables resume of any saved state in
|
||||
* localStorage (in other words, it prevents fAllowResume from being true, and forcing resume off).
|
||||
*/
|
||||
var fAllowResume;
|
||||
var sState = this.getMachineParm('state') || (fAllowResume = true) && parmsComputer['state'];
|
||||
|
||||
var fAllowResume = false;
|
||||
var sState = Web.getURLParm('state');
|
||||
if (!sState) {
|
||||
fAllowResume = true;
|
||||
sState = this.getMachineParm('state', parmsComputer);
|
||||
}
|
||||
if (sState) {
|
||||
sStatePath = this.sStatePath = sState;
|
||||
if (!fAllowResume) {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue