More diagnostic output improvements
This commit is contained in:
parent
ea82dfec93
commit
51f8440e9b
40 changed files with 4462 additions and 4398 deletions
|
|
@ -22,7 +22,7 @@ You can also browse our collection of archived disks:
|
|||
* [Challenger 1P Disk Library](/disks/c1p/)
|
||||
* [DEC Disk Library](/disks/dec/)
|
||||
|
||||
{% include_relative pcx86/apps.md %}
|
||||
{% include_relative pcx86/README.md %}
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,67 +1,46 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Application Demos
|
||||
permalink: /apps/pcx86/
|
||||
---
|
||||
IBM PC Application Demos
|
||||
------------------------
|
||||
|
||||
{% include_relative apps.md %}
|
||||
Below are selected [PCx86](/docs/about/pcx86/) demos of classic IBM PC applications. In many cases,
|
||||
we've had to create our own "Demo Disks", because copies of the original distribution disks are difficult
|
||||
to find, and in some cases (e.g., [Executive Suite](/apps/pcx86/1982/esuite/)), the original disks were
|
||||
copy-protected, so we've been forced to use a "cracked" copy of the software instead.
|
||||
|
||||
---
|
||||
A list of all the software available to PCx86 machines can be found in the [IBM PC Disk Library](/disks/pcx86/).
|
||||
|
||||
### Creating IBM PC Application Demos
|
||||
### 1981
|
||||
|
||||
Demos in our [Application Archives](/apps/) combine
|
||||
[Software Application Manifests](/apps/#software-application-manifests) with
|
||||
[Machine Configurations](/devices/pcx86/machine/).
|
||||
* [DONKEY.BAS](/apps/pcx86/1981/donkey/)
|
||||
* [Microsoft Adventure](/disks/pcx86/games/microsoft/adventure/)
|
||||
* [VisiCalc](/apps/pcx86/1981/visicalc/)
|
||||
|
||||
We'll use the [VisiCalc Demo](1981/visicalc/) as an example. First, we choose a machine configuration.
|
||||
For VisiCalc, we chose a Model 5150 machine with a Monochrome Display, and then inserted a link to that machine
|
||||
in the demo's [manifest](1981/visicalc/manifest.xml):
|
||||
### 1982
|
||||
|
||||
```xml
|
||||
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.xml"/>
|
||||
```
|
||||
* [Executive Suite](/apps/pcx86/1982/esuite/)
|
||||
* [RatBas v2.13](/apps/pcx86/1982/ratbas/)
|
||||
* [Zork I](/disks/pcx86/games/infocom/zork1/)
|
||||
|
||||
Next, the [manifest](1981/visicalc/manifest.xml) requires a disk image containing the VisiCalc program
|
||||
(VC.COM). We used the [DiskDump](/modules/diskdump/) module to create that disk image:
|
||||
### 1983
|
||||
|
||||
cd apps/pcx86/1981/visicalc
|
||||
node ../../../../modules/diskdump/bin/diskdump --path="archive/VC.COM;../README.md" --format=json --output=disk.json --manifest
|
||||
* [Adventures in Math v1.00](/apps/pcx86/1983/adventmath/)
|
||||
* [Planetfall](/disks/pcx86/games/infocom/planet/)
|
||||
* [SuperCalc2 v1.00](/disks/pcx86/apps/other/sc2/1.00/)
|
||||
* [SuperCalc3 v1.00](/disks/pcx86/apps/other/sc3/1.00/)
|
||||
* [Zork II](/disks/pcx86/games/infocom/zork2/)
|
||||
* [Zork III](/disks/pcx86/games/infocom/zork3/)
|
||||
|
||||
The DiskDump command created a disk image named "disk.json" containing two files ("VC.COM" from the "archive"
|
||||
subdirectory, and "README.md" from the "archive" parent directory) and automatically added that disk image to the demo's
|
||||
[manifest](1981/visicalc/manifest.xml):
|
||||
### 1984
|
||||
|
||||
```xml
|
||||
<disk id="disk01" size="163840" chs="40:1:8" dir="archive/" href="/apps/pcx86/1981/visicalc/disk.json" md5="61494f998d5fb0e31e7b8bd99f1cc588" md5json="3ad82ed815725e6bd786f92a4714e84f">
|
||||
<file size="27520" time="1981-12-16 23:00:00" attr="0x20" md5="28997dfedb2440c6054d8be835be8634">VC.COM</file>
|
||||
<file dir="../">README.md</file>
|
||||
</disk>
|
||||
```
|
||||
* [The Hitchhiker's Guide to the Galaxy](/disks/pcx86/games/infocom/hhiker/)
|
||||
|
||||
Now that the manifest contains a disk image, we were able to add the manifest to our set of
|
||||
[Sample Disks](/disks/pcx86/samples.xml):
|
||||
### 1985
|
||||
|
||||
```xml
|
||||
<manifest ref="/apps/pcx86/1981/visicalc/manifest.xml" disk="*"/>
|
||||
```
|
||||
* [Rogue](/apps/pcx86/1985/rogue/)
|
||||
|
||||
Next, we started a version of our chosen machine that's also configured to use the Debugger, by loading
|
||||
the following **machine.xml** into a web browser (it's assumed the Node web server is already running on port 8088):
|
||||
### 1987
|
||||
|
||||
http://localhost:8088/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml
|
||||
* [ThinkTank v2.14](/apps/pcx86/1987/thinktank/)
|
||||
|
||||
Then we booted DOS, loaded the VisiCalc disk, ran VisiCalc, pressed the Debugger's "Halt" button, pressed "Clear" to
|
||||
clear the Debugger's output window, and typed the following Debugger command:
|
||||
### 1992
|
||||
|
||||
d state
|
||||
|
||||
We copied-and-pasted the entire contents of the Debugger's output window into a file named "state.json", and then
|
||||
updated the <machine> entry in the [manifest](1981/visicalc/manifest.xml):
|
||||
|
||||
```xml
|
||||
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.xml" state="/apps/pcx86/1981/visicalc/state.json"/>
|
||||
```
|
||||
|
||||
It's important to use a state file *only* with the machine configuration it was created with; in this case, we're OK,
|
||||
because the only difference between the two chosen Model 5150 machines is the addition of the Debugger.
|
||||
* [The Dungeons of Moria v5.5](/apps/pcx86/1992/moria/)
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
IBM PC Application Demos
|
||||
------------------------
|
||||
|
||||
Below are selected [PCx86](/docs/about/pcx86/) demos of classic IBM PC applications. In many cases,
|
||||
we've had to create our own "Demo Disks", because copies of the original distribution disks are difficult
|
||||
to find, and in some cases (e.g., [Executive Suite](/apps/pcx86/1982/esuite/)), the original disks were
|
||||
copy-protected, so we've been forced to use a "cracked" copy of the software instead.
|
||||
|
||||
A list of all the software available to PCx86 machines can be found in the [IBM PC Disk Library](/disks/pcx86/).
|
||||
|
||||
### 1981
|
||||
|
||||
* [DONKEY.BAS](/apps/pcx86/1981/donkey/)
|
||||
* [Microsoft Adventure](/disks/pcx86/games/microsoft/adventure/)
|
||||
* [VisiCalc](/apps/pcx86/1981/visicalc/)
|
||||
|
||||
### 1982
|
||||
|
||||
* [Executive Suite](/apps/pcx86/1982/esuite/)
|
||||
* [RatBas v2.13](/apps/pcx86/1982/ratbas/)
|
||||
* [Zork I](/disks/pcx86/games/infocom/zork1/)
|
||||
|
||||
### 1983
|
||||
|
||||
* [Adventures in Math v1.00](/apps/pcx86/1983/adventmath/)
|
||||
* [Planetfall](/disks/pcx86/games/infocom/planet/)
|
||||
* [SuperCalc2 v1.00](/disks/pcx86/apps/other/sc2/1.00/)
|
||||
* [SuperCalc3 v1.00](/disks/pcx86/apps/other/sc3/1.00/)
|
||||
* [Zork II](/disks/pcx86/games/infocom/zork2/)
|
||||
* [Zork III](/disks/pcx86/games/infocom/zork3/)
|
||||
|
||||
### 1984
|
||||
|
||||
* [The Hitchhiker's Guide to the Galaxy](/disks/pcx86/games/infocom/hhiker/)
|
||||
|
||||
### 1985
|
||||
|
||||
* [Rogue](/apps/pcx86/1985/rogue/)
|
||||
|
||||
### 1987
|
||||
|
||||
* [ThinkTank v2.14](/apps/pcx86/1987/thinktank/)
|
||||
|
||||
### 1992
|
||||
|
||||
* [The Dungeons of Moria v5.5](/apps/pcx86/1992/moria/)
|
||||
67
apps/pcx86/index.md
Normal file
67
apps/pcx86/index.md
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Application Demos
|
||||
permalink: /apps/pcx86/
|
||||
---
|
||||
|
||||
{% include_relative README.md %}
|
||||
|
||||
---
|
||||
|
||||
### Creating IBM PC Application Demos
|
||||
|
||||
Demos in our [Application Archives](/apps/) combine
|
||||
[Software Application Manifests](/apps/#software-application-manifests) with
|
||||
[Machine Configurations](/devices/pcx86/machine/).
|
||||
|
||||
We'll use the [VisiCalc Demo](1981/visicalc/) as an example. First, we choose a machine configuration.
|
||||
For VisiCalc, we chose a Model 5150 machine with a Monochrome Display, and then inserted a link to that machine
|
||||
in the demo's [manifest](1981/visicalc/manifest.xml):
|
||||
|
||||
```xml
|
||||
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.xml"/>
|
||||
```
|
||||
|
||||
Next, the [manifest](1981/visicalc/manifest.xml) requires a disk image containing the VisiCalc program
|
||||
(VC.COM). We used the [DiskDump](/modules/diskdump/) module to create that disk image:
|
||||
|
||||
cd apps/pcx86/1981/visicalc
|
||||
node ../../../../modules/diskdump/bin/diskdump --dir=archive/visicalc.81 --format=json --output=VISICALC1981.json --manifest
|
||||
|
||||
The DiskDump command creates a disk image named **VISICALC1981.json** containing the files the archive/visicalc.81
|
||||
subdirectory (ie, **VC.COM**) and automatically added that disk image to the demo's [manifest](1981/visicalc/manifest.xml):
|
||||
|
||||
```xml
|
||||
<disk id="disk01" chs="40:1:8" dir="archive/visicalc.81" href="/apps/pcx86/1981/visicalc/VISICALC1981.json" md5="5b77efdfb86aa747edb49811db75021d" md5json="b1a45cb769cf04daa259263a92bacf16">
|
||||
<name>VisiCalc (1981)</name>
|
||||
<file size="27520" time="1981-12-16 23:00:00" attr="0x20" md5="28997dfedb2440c6054d8be835be8634">VC.COM</file>
|
||||
<link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
|
||||
</disk>
|
||||
```
|
||||
|
||||
Now that the manifest contains a disk image, we were able to add the manifest to our set of
|
||||
[Sample Disks](/disks/pcx86/samples.xml):
|
||||
|
||||
```xml
|
||||
<manifest ref="/apps/pcx86/1981/visicalc/manifest.xml"/>
|
||||
```
|
||||
|
||||
Next, we started a version of our chosen machine that's also configured to use the Debugger, by loading
|
||||
the following **machine.xml** into a web browser (it's assumed the Node web server is already running on port 8088):
|
||||
|
||||
http://localhost:8088/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml
|
||||
|
||||
Then we booted DOS, loaded the VisiCalc disk, ran VisiCalc, pressed the Debugger's "Halt" button, pressed "Clear" to
|
||||
clear the Debugger's output window, and typed the following Debugger command:
|
||||
|
||||
d state
|
||||
|
||||
We copied-and-pasted the entire contents of the Debugger's output window into a file named "state.json", and then
|
||||
updated the <machine> entry in the [manifest](1981/visicalc/manifest.xml):
|
||||
|
||||
```xml
|
||||
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.xml" state="/apps/pcx86/1981/visicalc/state.json"/>
|
||||
```
|
||||
|
||||
It's important to use a state file *only* with the machine configuration it was created with; in this case, we're OK,
|
||||
because the only difference between the two chosen Model 5150 machines is the addition of the Debugger.
|
||||
|
|
@ -208,7 +208,7 @@
|
|||
padding: 0;
|
||||
resize: none;
|
||||
color: white;
|
||||
font-size: large;
|
||||
font-size: medium;
|
||||
background: rgba(0, 0, 0, .5);
|
||||
opacity: 0;
|
||||
line-height: 0;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -305,11 +305,16 @@ class Computer extends Component {
|
|||
if (sStatePath) this.fServerState = true;
|
||||
}
|
||||
|
||||
if (!sStatePath) {
|
||||
this.sStateURL = sStatePath;
|
||||
|
||||
if (!this.sStateURL) {
|
||||
this.setReady();
|
||||
} else {
|
||||
Web.getResource(sStatePath, null, true, function(sURL, sResource, nErrorCode) {
|
||||
var sProgress = "Loading " + this.sStateURL + "...";
|
||||
Web.getResource(this.sStateURL, null, true, function(sURL, sResource, nErrorCode) {
|
||||
cmp.doneLoad(sURL, sResource, nErrorCode);
|
||||
}, function(nState) {
|
||||
cmp.println(sProgress, Component.TYPE.PROGRESS);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -367,6 +372,7 @@ class Computer extends Component {
|
|||
if (control) {
|
||||
control.style.opacity = "0";
|
||||
control.style.lineHeight = "0";
|
||||
control.value = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,12 +135,13 @@ class ROM extends Component {
|
|||
*/
|
||||
initBus(cmp, bus, cpu, dbg)
|
||||
{
|
||||
var rom = this;
|
||||
this.cmp = cmp;
|
||||
this.bus = bus;
|
||||
this.cpu = cpu;
|
||||
this.dbg = dbg;
|
||||
|
||||
if (this.sFileURL) {
|
||||
var rom = this;
|
||||
var sProgress = "Loading " + this.sFileURL + "...";
|
||||
Web.getResource(this.sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
rom.doneLoad(sURL, sResponse, nErrorCode);
|
||||
|
|
|
|||
|
|
@ -2385,15 +2385,13 @@ class Video extends Component {
|
|||
* }
|
||||
*/
|
||||
|
||||
var sFileURL = parmsVideo['fontROM'];
|
||||
if (sFileURL) {
|
||||
var sFileExt = Str.getExtension(sFileURL);
|
||||
this.sFileURL = parmsVideo['fontROM'];
|
||||
|
||||
if (this.sFileURL) {
|
||||
var sFileExt = Str.getExtension(this.sFileURL);
|
||||
if (sFileExt != "json") {
|
||||
sFileURL = Web.getHost() + DumpAPI.ENDPOINT + '?' + DumpAPI.QUERY.FILE + '=' + sFileURL + '&' + DumpAPI.QUERY.FORMAT + '=' + DumpAPI.FORMAT.BYTES;
|
||||
this.sFileURL = Web.getHost() + DumpAPI.ENDPOINT + '?' + DumpAPI.QUERY.FILE + '=' + this.sFileURL + '&' + DumpAPI.QUERY.FORMAT + '=' + DumpAPI.FORMAT.BYTES;
|
||||
}
|
||||
Web.getResource(sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
video.doneLoad(sURL, sResponse, nErrorCode);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2411,6 +2409,8 @@ class Video extends Component {
|
|||
*/
|
||||
initBus(cmp, bus, cpu, dbg)
|
||||
{
|
||||
var video = this;
|
||||
|
||||
this.bus = bus;
|
||||
this.cpu = cpu;
|
||||
this.dbg = dbg;
|
||||
|
|
@ -2457,7 +2457,6 @@ class Video extends Component {
|
|||
}
|
||||
|
||||
if (DEBUGGER && dbg) {
|
||||
var video = this;
|
||||
dbg.messageDump(Messages.VIDEO, function onDumpVideo(asArgs) {
|
||||
video.dumpVideo(asArgs);
|
||||
});
|
||||
|
|
@ -2495,6 +2494,15 @@ class Video extends Component {
|
|||
else if (this.sTouchScreen == "keygrid") {
|
||||
if (this.kbd) this.captureTouch(Video.TOUCH.KEYGRID);
|
||||
}
|
||||
|
||||
if (this.sFileURL) {
|
||||
var sProgress = "Loading " + this.sFileURL + "...";
|
||||
Web.getResource(this.sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
video.doneLoad(sURL, sResponse, nErrorCode);
|
||||
}, function(nState) {
|
||||
video.println(sProgress, Component.TYPE.PROGRESS);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -973,9 +973,12 @@ class Component {
|
|||
}(controlTextArea);
|
||||
this.println = function(component, control) {
|
||||
return function printlnControl(s, type, id) {
|
||||
if (DEBUG || type != Component.TYPE.PROGRESS) {
|
||||
s = (type != null? (type + ": ") : "") + (s || "");
|
||||
component.print(s + '\n');
|
||||
if (!s) s = "";
|
||||
if (type != Component.TYPE.PROGRESS || s.slice(-3) != "...") {
|
||||
if (type) s = type + ": " + s;
|
||||
Component.appendControl(control, s + '\n');
|
||||
} else {
|
||||
Component.replaceControl(control, s, s + '.');
|
||||
}
|
||||
if (!COMPILED && window && window.console) Component.println(s, type, id);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@
|
|||
padding: 0;
|
||||
resize: none;
|
||||
color: white;
|
||||
font-size: large;
|
||||
font-size: medium;
|
||||
background: rgba(0, 0, 0, .5);
|
||||
opacity: 0;
|
||||
line-height: 0; /* try to prevent Safari on iOS from always displaying a blinking cursor */
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -3104,9 +3104,12 @@ class Component {
|
|||
}(controlTextArea);
|
||||
this.println = function(component, control) {
|
||||
return function printlnControl(s, type, id) {
|
||||
if (DEBUG || type != Component.TYPE.PROGRESS) {
|
||||
s = (type != null? (type + ": ") : "") + (s || "");
|
||||
component.print(s + '\n');
|
||||
if (!s) s = "";
|
||||
if (type != Component.TYPE.PROGRESS || s.slice(-3) != "...") {
|
||||
if (type) s = type + ": " + s;
|
||||
Component.appendControl(control, s + '\n');
|
||||
} else {
|
||||
Component.replaceControl(control, s, s + '.');
|
||||
}
|
||||
if (!COMPILED && window && window.console) Component.println(s, type, id);
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -204,10 +204,13 @@
|
|||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
resize: none;
|
||||
color: white;
|
||||
font-size: medium;
|
||||
background: rgba(0, 0, 0, .5);
|
||||
opacity: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.pcjs-reference {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -3394,9 +3394,12 @@ class Component {
|
|||
}(controlTextArea);
|
||||
this.println = function(component, control) {
|
||||
return function printlnControl(s, type, id) {
|
||||
if (DEBUG || type != Component.TYPE.PROGRESS) {
|
||||
s = (type != null? (type + ": ") : "") + (s || "");
|
||||
component.print(s + '\n');
|
||||
if (!s) s = "";
|
||||
if (type != Component.TYPE.PROGRESS || s.slice(-3) != "...") {
|
||||
if (type) s = type + ": " + s;
|
||||
Component.appendControl(control, s + '\n');
|
||||
} else {
|
||||
Component.replaceControl(control, s, s + '.');
|
||||
}
|
||||
if (!COMPILED && window && window.console) Component.println(s, type, id);
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -204,10 +204,13 @@
|
|||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
resize: none;
|
||||
color: white;
|
||||
font-size: medium;
|
||||
background: rgba(0, 0, 0, .5);
|
||||
opacity: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.pcjs-reference {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -3622,9 +3622,12 @@ class Component {
|
|||
}(controlTextArea);
|
||||
this.println = function(component, control) {
|
||||
return function printlnControl(s, type, id) {
|
||||
if (DEBUG || type != Component.TYPE.PROGRESS) {
|
||||
s = (type != null? (type + ": ") : "") + (s || "");
|
||||
component.print(s + '\n');
|
||||
if (!s) s = "";
|
||||
if (type != Component.TYPE.PROGRESS || s.slice(-3) != "...") {
|
||||
if (type) s = type + ": " + s;
|
||||
Component.appendControl(control, s + '\n');
|
||||
} else {
|
||||
Component.replaceControl(control, s, s + '.');
|
||||
}
|
||||
if (!COMPILED && window && window.console) Component.println(s, type, id);
|
||||
};
|
||||
|
|
@ -43177,12 +43180,13 @@ class ROM extends Component {
|
|||
*/
|
||||
initBus(cmp, bus, cpu, dbg)
|
||||
{
|
||||
var rom = this;
|
||||
this.cmp = cmp;
|
||||
this.bus = bus;
|
||||
this.cpu = cpu;
|
||||
this.dbg = dbg;
|
||||
|
||||
if (this.sFileURL) {
|
||||
var rom = this;
|
||||
var sProgress = "Loading " + this.sFileURL + "...";
|
||||
Web.getResource(this.sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
rom.doneLoad(sURL, sResponse, nErrorCode);
|
||||
|
|
@ -48896,15 +48900,13 @@ class Video extends Component {
|
|||
* }
|
||||
*/
|
||||
|
||||
var sFileURL = parmsVideo['fontROM'];
|
||||
if (sFileURL) {
|
||||
var sFileExt = Str.getExtension(sFileURL);
|
||||
this.sFileURL = parmsVideo['fontROM'];
|
||||
|
||||
if (this.sFileURL) {
|
||||
var sFileExt = Str.getExtension(this.sFileURL);
|
||||
if (sFileExt != "json") {
|
||||
sFileURL = Web.getHost() + DumpAPI.ENDPOINT + '?' + DumpAPI.QUERY.FILE + '=' + sFileURL + '&' + DumpAPI.QUERY.FORMAT + '=' + DumpAPI.FORMAT.BYTES;
|
||||
this.sFileURL = Web.getHost() + DumpAPI.ENDPOINT + '?' + DumpAPI.QUERY.FILE + '=' + this.sFileURL + '&' + DumpAPI.QUERY.FORMAT + '=' + DumpAPI.FORMAT.BYTES;
|
||||
}
|
||||
Web.getResource(sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
video.doneLoad(sURL, sResponse, nErrorCode);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -48922,6 +48924,8 @@ class Video extends Component {
|
|||
*/
|
||||
initBus(cmp, bus, cpu, dbg)
|
||||
{
|
||||
var video = this;
|
||||
|
||||
this.bus = bus;
|
||||
this.cpu = cpu;
|
||||
this.dbg = dbg;
|
||||
|
|
@ -48968,7 +48972,6 @@ class Video extends Component {
|
|||
}
|
||||
|
||||
if (DEBUGGER && dbg) {
|
||||
var video = this;
|
||||
dbg.messageDump(Messages.VIDEO, function onDumpVideo(asArgs) {
|
||||
video.dumpVideo(asArgs);
|
||||
});
|
||||
|
|
@ -49006,6 +49009,15 @@ class Video extends Component {
|
|||
else if (this.sTouchScreen == "keygrid") {
|
||||
if (this.kbd) this.captureTouch(Video.TOUCH.KEYGRID);
|
||||
}
|
||||
|
||||
if (this.sFileURL) {
|
||||
var sProgress = "Loading " + this.sFileURL + "...";
|
||||
Web.getResource(this.sFileURL, null, true, function(sURL, sResponse, nErrorCode) {
|
||||
video.doneLoad(sURL, sResponse, nErrorCode);
|
||||
}, function(nState) {
|
||||
video.println(sProgress, Component.TYPE.PROGRESS);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -74257,11 +74269,16 @@ class Computer extends Component {
|
|||
if (sStatePath) this.fServerState = true;
|
||||
}
|
||||
|
||||
if (!sStatePath) {
|
||||
this.sStateURL = sStatePath;
|
||||
|
||||
if (!this.sStateURL) {
|
||||
this.setReady();
|
||||
} else {
|
||||
Web.getResource(sStatePath, null, true, function(sURL, sResource, nErrorCode) {
|
||||
var sProgress = "Loading " + this.sStateURL + "...";
|
||||
Web.getResource(this.sStateURL, null, true, function(sURL, sResource, nErrorCode) {
|
||||
cmp.doneLoad(sURL, sResource, nErrorCode);
|
||||
}, function(nState) {
|
||||
cmp.println(sProgress, Component.TYPE.PROGRESS);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -74319,6 +74336,7 @@ class Computer extends Component {
|
|||
if (control) {
|
||||
control.style.opacity = "0";
|
||||
control.style.lineHeight = "0";
|
||||
control.value = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -204,10 +204,13 @@
|
|||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
resize: none;
|
||||
color: white;
|
||||
font-size: medium;
|
||||
background: rgba(0, 0, 0, .5);
|
||||
opacity: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.pcjs-reference {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -3394,9 +3394,12 @@ class Component {
|
|||
}(controlTextArea);
|
||||
this.println = function(component, control) {
|
||||
return function printlnControl(s, type, id) {
|
||||
if (DEBUG || type != Component.TYPE.PROGRESS) {
|
||||
s = (type != null? (type + ": ") : "") + (s || "");
|
||||
component.print(s + '\n');
|
||||
if (!s) s = "";
|
||||
if (type != Component.TYPE.PROGRESS || s.slice(-3) != "...") {
|
||||
if (type) s = type + ": " + s;
|
||||
Component.appendControl(control, s + '\n');
|
||||
} else {
|
||||
Component.replaceControl(control, s, s + '.');
|
||||
}
|
||||
if (!COMPILED && window && window.console) Component.println(s, type, id);
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -3622,9 +3622,12 @@ class Component {
|
|||
}(controlTextArea);
|
||||
this.println = function(component, control) {
|
||||
return function printlnControl(s, type, id) {
|
||||
if (DEBUG || type != Component.TYPE.PROGRESS) {
|
||||
s = (type != null? (type + ": ") : "") + (s || "");
|
||||
component.print(s + '\n');
|
||||
if (!s) s = "";
|
||||
if (type != Component.TYPE.PROGRESS || s.slice(-3) != "...") {
|
||||
if (type) s = type + ": " + s;
|
||||
Component.appendControl(control, s + '\n');
|
||||
} else {
|
||||
Component.replaceControl(control, s, s + '.');
|
||||
}
|
||||
if (!COMPILED && window && window.console) Component.println(s, type, id);
|
||||
};
|
||||
|
|
|
|||
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