README and JSON updates
This commit is contained in:
parent
c0cefd79c8
commit
a54d5564a7
43 changed files with 15526 additions and 3931 deletions
|
|
@ -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 <rom> 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 <video> 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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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 <cpu> 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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue