Updated the VisiCalc demo with an autoType sequence, a fresh disk image, new state file, and reference cards; also, updated autoType support to cancel autoType if a saved machine state is loaded

This commit is contained in:
Jeff Parsons 2017-06-19 08:48:10 -07:00 • committed by Jeff Parsons
commit 5e0e5b7256
16 changed files with 69 additions and 46 deletions

View file

@ -7,17 +7,38 @@ machines:
id: ibm5150
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
state: /apps/pcx86/1981/visicalc/state.json
autoMount:
A:
path: /disks/pcx86/dos/ibm/1.00/PCDOS100.json
B:
path: /apps/pcx86/1981/visicalc/VISICALC1981.json
autoType: 8-10-81\\rb:\\rvc\\r
---
VisiCalc (1981)
---
---------------
{% include machine.html id="ibm5150" %}
VisiCalc Reference
------------------
[From the [website](http://www.bricklin.com/history/refcard1.htm) of Dan Bricklin, co-author of VisiCalc]
![Reference Card 1-2](visicalc-refcard1-2.gif)
![Reference Card 3-4](visicalc-refcard3-4.gif)
![Reference Card 5-6](visicalc-refcard5-6.gif)
![Reference Card 7-8](visicalc-refcard7-8.gif)
![Reference Card 9-10](visicalc-refcard9-10.gif)
VisiCalc History
---
----------------
See [http://www.bricklin.com/history/vcexecutable.htm](http://www.bricklin.com/history/vcexecutable.htm)
VisiCalc License
---
----------------
See [http://www.bricklin.com/history/vclicense.htm](http://www.bricklin.com/history/vclicense.htm)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -12,10 +12,9 @@
<releaseDate>December 16, 1981</releaseDate>
<license href="http://www.bricklin.com/history/vclicense.htm">Lotus Development</license>
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.xml" state="/apps/pcx86/1981/visicalc/state.json"/>
<disk id="disk01" size="163840" chs="40:1:8" dir="archive/" href="/apps/pcx86/1981/visicalc/disk.json" md5="61494f998d5fb0e31e7b8bd99f1cc588" md5json="3ad82ed815725e6bd786f92a4714e84f">
<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>
<file dir="../">README.md</file>
<link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
</disk>
</manifest>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View file

@ -144,10 +144,10 @@ and **TOPTEN**:
[z],55197,LARGE,07-23-81
All those files were deleted as well, leaving 8 files dated "Aug 11 1983". Next, I used the PCjs
[DiskDump](/modules/diskdump/) utility to create a disk image from a directory ("archive/disk") containing
[DiskDump](/modules/diskdump/) utility to create a disk image from a directory ("archive/advemath.100") containing
those files:
diskdump --dir=archive/disk --format=json --output=ADVENTMATH100.json --manifest
diskdump --dir=archive/advemath.100 --format=json --output=ADVENTMATH100.json --manifest
Here's a directory listing of the resulting 160Kb disk image:

View file

@ -509,7 +509,7 @@
<disk path="/disks/pcx86/games/id/wolf3d/1WOLF14.json">Wolfenstein 3D 1.4</disk>
<disk path="/disks/pcx86/games/microsoft/flightsim/1982/FLIGHTSIM-1982.json">MS Flight Simulator (1982)</disk>
<disk path="/disks/pcx86/games/microsoft/flightsim/1984/FLIGHTSIM-1984.json">MS Flight Simulator (1984)</disk>
<disk path="/apps/pcx86/1981/visicalc/disk.json">VisiCalc (1981)</disk>
<disk path="/apps/pcx86/1981/visicalc/VISICALC1981.json">VisiCalc (1981)</disk>
<disk path="/apps/pcx86/1982/esuite/disk.json">Executive Suite (1982)</disk>
<disk path="/apps/pcx86/1982/ratbas/RATBAS213.json">RatBas 2.13</disk>
<disk path="/apps/pcx86/1983/adventmath/ADVENTMATH100.json">Adventures in Math 1.00</disk>

View file

@ -7,7 +7,7 @@
<disk path="/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json">PC-DOS 2.00 (Disk 1)</disk>
<disk path="/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK2.json">PC-DOS 2.00 (Disk 2)</disk>
<disk path="/disks/pcx86/games/microsoft/adventure/ADVENTURE-1981.json">Microsoft Adventure</disk>
<disk path="/apps/pcx86/1981/visicalc/disk.json">VisiCalc (1981)</disk>
<disk path="/apps/pcx86/1981/visicalc/VISICALC1981.json">VisiCalc (1981)</disk>
<disk path="/apps/pcx86/1983/adventmath/ADVENTMATH100.json">Adventures in Math 1.00</disk>
</control>
<control type="button" binding="loadDisk">Load</control>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -736,30 +736,7 @@ class Keyboard extends Component {
break;
}
}
this.initState();
/*
* The current (assumed) physical (and simulated) states of the various shift/lock keys.
*
* TODO: Determine how (or whether) we can query the browser's initial shift/lock key states.
*/
this.bitsState = this.bitsStateSim = 0;
/*
* New scan codes are "pushed" onto abBuffer and then "shifted" off.
*/
this.abBuffer = [];
this.fAdvance = true;
this.prevCharDown = 0;
this.prevKeyDown = 0;
/*
* Make sure the auto-injection buffer is empty (an injection could have been in progress on any reset after the first).
*/
this.autoInject = null;
this.sInjectBuffer = "";
}
/**
@ -801,10 +778,36 @@ class Keyboard extends Component {
initState(data)
{
var i = 0;
if (data === undefined) data = [];
if (!data) {
data = [];
this.autoInject = null;
} else {
this.autoInject = this.autoType;
}
this.fClock = this.fAdvance = data[i++];
this.fData = data[i];
this.bCmdPending = 0; // when non-zero, a command is pending (eg, SET_LED or SET_RATE)
/*
* The current (assumed) physical (and simulated) states of the various shift/lock keys.
*
* TODO: Determine how (or whether) we can query the browser's initial shift/lock key states.
*/
this.bitsState = this.bitsStateSim = 0;
/*
* New scan codes are "pushed" onto abBuffer and then "shifted" off.
*/
this.abBuffer = [];
this.fAdvance = true;
this.prevCharDown = 0;
this.prevKeyDown = 0;
/*
* Make sure the auto-injection buffer is empty (an injection could have been in progress on any reset after the first).
*/
this.sInjectBuffer = "";
return true;
}