README and JSON updates

This commit is contained in:
Jeff Parsons 2016-05-23 13:16:25 -07:00
commit a54d5564a7
43 changed files with 15526 additions and 3931 deletions

View file

@ -14,7 +14,9 @@ diagnostics and run [Windows 1.01](/devices/pcx86/machine/5160/ega/640kb/win101/
EGA support is added to a **machine.xml** file using two XML elements; eg:
<video id="videoEGA" model="ega" memory="0x20000" screenwidth="640" screenheight="350"/>
```xml
<video id="videoEGA" model="ega" memory="0x20000" screenwidth="640" screenheight="350"/>
```
The *model* attribute must be set to "ega" and the *memory* attribute should be set to the amount of memory
desired on the card; valid memory sizes are:
@ -29,7 +31,9 @@ window, which the browser will then scale up or down, unless a specific overall
The second required XML element is a &lt;rom&gt; element to load the EGA ROM; eg:
<rom id="romEGA" addr="0xc0000" size="0x4000" file="/devices/pcx86/video/ibm-ega.json" notify="videoEGA"/>
```xml
<rom id="romEGA" addr="0xc0000" size="0x4000" file="/devices/pcx86/video/ibm-ega.json" notify="videoEGA"/>
```
The *notify* attribute must match the *id* of the &lt;video&gt; element, so that the Video component can load
the initial 8x14 and 8x8 fonts from the ROM. Support for dynamic loading of fonts from plane 2 of the EGA's memory

View file

@ -22,11 +22,13 @@ only be **pcx86.js**.
Up until now, all PCx86 machine XML files assumed an 8088 CPU with a 20-bit bus and a model 5150 or 5160 motherboard.
But now, a machine XML file can specify:
<computer name="IBM PC AT" buswidth="24"/>
<cpu model="80286"/>
<chipset model="5170"/>
...
```xml
<computer name="IBM PC AT" buswidth="24"/>
<cpu model="80286"/>
<chipset model="5170"/>
...
```
Conventional emulators are usually NOT able to run original BIOS images, or simulate original PC hardware,
or even run at the same speed as the original PC, making some software difficult or impossible to use. PCx86 takes a
different approach, by attempting to simulate an entire PC as it originally existed. Which is why a PCx86 simulation

View file

@ -113,7 +113,9 @@ breakpoint and then starting the machine, using the PCx86 Debugger *input* field
Alternatively, you can hard-code those commands into the Debugger component of the machine.xml file; eg:
<debugger id="debugger" messages="fault|tss|int" commands='m dos off;bp 1ED4:16B4 "set fn=ah;dos;if fn!=3f||cx!=24"'/>
```xml
<debugger id="debugger" messages="fault|tss|int" commands='m dos off;bp 1ED4:16B4 "set fn=ah;dos;if fn!=3f||cx!=24"'/>
```
Once the 36-byte read is hit, you'll probably want to stop on the next instruction that examine those bytes,
by using a memory read breakpoint:

View file

@ -178,18 +178,24 @@ still continue to run, and if there was no multiplication problem, you would not
PCjs v1.20.0 now supports a "stepping" attribute on the &lt;cpu&gt; element, which you can use to simulate specific
stepping behavior. For example, a *machine.xml* file with the following CPU definition:
<cpu id="cpu386" model="80386" stepping="b0"/>
```xml
<cpu id="cpu386" model="80386" stepping="b0"/>
```
will cause Windows 95 to abort exactly as described as above. Similarly, selecting a 80386 B1 stepping:
<cpu id="cpu386" model="80386" stepping="b1"/>
```xml
<cpu id="cpu386" model="80386" stepping="b1"/>
```
will cause Windows 95 to display the 32-bit multiplication warning shown above (PCjs deliberately fails the exact
multiplication test that Windows 95 performs).
If you want to simulate a B1 stepping that does *not* have the 32-bit multiplication flaw, set the stepping to B2:
<cpu id="cpu386" model="80386" stepping="b2"/>
```xml
<cpu id="cpu386" model="80386" stepping="b2"/>
```
B2 was not an actual 80386 stepping; it is a *pseudo-stepping* that provides a simple way of specifying a B1 80386 that
passes all 32-bit multiplication tests.

View file

@ -73,10 +73,10 @@ The dialog box should provide the following information:
Check your Downloads folder for "pcx86.js", copy it to your web server as "pcx86.js",
and then add the following to your web page:
<div id="ibm5150"></div>
...
<script type="text/javascript" src="pcx86.js"></script>
<script type="text/javascript">embedPC("ibm5150","machine.xml","components.xsl");</script>
<div id="ibm5150"></div>
...
<script type="text/javascript" src="pcx86.js"></script>
<script type="text/javascript">embedPC("ibm5150","machine.xml","components.xsl");</script>
The machine should appear where the <div> is located.
@ -110,8 +110,10 @@ Some notes:
So, even if the original machine always powers on from scratch, the *copied* machine will always resume at the point
it was saved. This behavior, however, can be disabled by passing a *parms* object as the 4th parameter to the
*embedPC()* call, overriding the 'state' property:
<script type="text/javascript">embedPC("ibm5150","machine.xml","components.xsl","{state:null}");</script>
```xml
<script type="text/javascript">embedPC("ibm5150","machine.xml","components.xsl","{state:null}");</script>
```
While the [PCx86 Documentation](/docs/pcx86/) explains how to create a *new* machine, by writing your own machine
XML file and manually copying all the other pieces, the new **Save Machine** feature is the best way to save