Documentation updates
This commit is contained in:
parent
c9eda96858
commit
070ea74f2f
13 changed files with 230 additions and 40 deletions
39
_posts/2016-02-06-tidying-the-project.md
Normal file
39
_posts/2016-02-06-tidying-the-project.md
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
---
|
||||||
|
layout: post
|
||||||
|
title: Tidying The Project
|
||||||
|
date: 2016-02-06 10:00:00
|
||||||
|
permalink: /blog/2016/02/06/
|
||||||
|
---
|
||||||
|
|
||||||
|
The next release of PCjs (v1.20.8) is another fairly minor update. It includes basic parallel port emulation, in the
|
||||||
|
form of a **ParallelPort** component that you include in a machine XML file with the <parallel> element, in much
|
||||||
|
the same way you include the **SerialPort** component with the <serial> element.
|
||||||
|
|
||||||
|
I've also tidied a few things in the [Devices](/devices/) folder. ROM images used to be stored under
|
||||||
|
`/devices/pc/basic/` and `/devices/pc/bios/`, but BASIC and BIOS ROM images aren't actually devices; they are the
|
||||||
|
*contents* of ROM devices. So, with that in mind, I've made the following rearrangements:
|
||||||
|
|
||||||
|
* `/devices/pc/basic/ibm-basic-1.00.json` => `/devices/pc/rom/5150/basic/BASIC100.json`
|
||||||
|
* `/devices/pc/basic/ibm-basic-1.10.json` => `/devices/pc/rom/5160/basic/BASIC110.json`
|
||||||
|
* `/devices/pc/bios/5150/*` => `/devices/pc/rom/5150/bios/*`
|
||||||
|
* `/devices/pc/bios/5160/*` => `/devices/pc/rom/5160/bios/*`
|
||||||
|
* `/devices/pc/bios/5170/*` => `/devices/pc/rom/5170/bios/*`
|
||||||
|
* `/devices/pc/bios/compaq/*` => `/devices/pc/rom/compaq/bios/*`
|
||||||
|
|
||||||
|
This structure mirrors what was done with **Machine** and **Video** devices, where the devices are organized
|
||||||
|
first by manufacturer (IBM or COMPAQ) and then by type (MDA, CGA, EGA, etc).
|
||||||
|
|
||||||
|
Here, the first **ROM** subdivision is either a manufacturer or a machine model. A model implies a manufacturer;
|
||||||
|
for example, models 5150 through 5170 refer to IBM PC models.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
The IBM BASIC ROMs require a bit more research. I'm unclear on the exact history of those ROMs, how many variations
|
||||||
|
there were, or whether any of them were machine-dependent.
|
||||||
|
|
||||||
|
The project currently includes only two BASIC ROM versions, 1.00 and 1.10, which were initially released with the
|
||||||
|
first model 5150 and 5160 machines, respectively. However, I've also read reports that later revisions of the model
|
||||||
|
5150 included BASIC ROM 1.10.
|
||||||
|
|
||||||
|
I believe there was also a version 1.20 released for IBM PCjr, but since PCjs does not yet emulate the PCjr, it has
|
||||||
|
not been added to the project.
|
||||||
|
|
@ -140,7 +140,8 @@ code {
|
||||||
pre {
|
pre {
|
||||||
padding: 8px 12px;
|
padding: 8px 12px;
|
||||||
overflow-x: scroll;
|
overflow-x: scroll;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
|
||||||
> code {
|
> code {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
|
|
|
||||||
|
|
@ -28,4 +28,5 @@ The project contains the following IBM PC BIOS ROMs:
|
||||||
As well as BIOS ROMs, with more detailed information, for the following machines:
|
As well as BIOS ROMs, with more detailed information, for the following machines:
|
||||||
|
|
||||||
* [Model 5170](5170/bios/)
|
* [Model 5170](5170/bios/)
|
||||||
* [Compaq DeskPro 386](compaq/deskpro386/)
|
* [Compaq DeskPro 386](compaq/bios/deskpro386/)
|
||||||
|
* [Compaq Portable III](compaq/bios/portable3/)
|
||||||
|
|
|
||||||
52
docs/pcjs/parallel/README.md
Normal file
52
docs/pcjs/parallel/README.md
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: PCjs <parallel> Element
|
||||||
|
permalink: /docs/pcjs/parallel/
|
||||||
|
---
|
||||||
|
|
||||||
|
PCjs ParallelPort Component
|
||||||
|
---
|
||||||
|
|
||||||
|
Format
|
||||||
|
---
|
||||||
|
<parallel>...</parallel>
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
---
|
||||||
|
Creates an instance of the ParallelPort component, which simulates an IBM PC Parallel Printer Adapter.
|
||||||
|
|
||||||
|
Attributes
|
||||||
|
---
|
||||||
|
* *adapter* (required)
|
||||||
|
|
||||||
|
A number (1, 2, or 3) indicating whether this adapter uses port 0x3BC, 0x378, or 0x278. Adapters 1 and 2
|
||||||
|
default to IRQ 7, and adapter 3 defaults to IRQ 5.
|
||||||
|
|
||||||
|
* *binding* (optional)
|
||||||
|
|
||||||
|
The name of an existing control binding (typically a <textarea>) to optionally redirect port I/O to.
|
||||||
|
For example, if you've defined a Control Panel with a <textarea> control bound to "print", specifying a
|
||||||
|
binding of "print" for the Parallel Port component will bind its port to the same control.
|
||||||
|
|
||||||
|
Also supports the attributes of *[Component](/docs/pcjs/component/)*.
|
||||||
|
|
||||||
|
Bindings
|
||||||
|
---
|
||||||
|
* *buffer*
|
||||||
|
|
||||||
|
For use with a control of type "textarea", to send/receive data to/from the port. If you would rather
|
||||||
|
bind the port to an existing control, then use *binding* attribute instead (see above).
|
||||||
|
|
||||||
|
Example
|
||||||
|
---
|
||||||
|
<parallel id="lpt1" adapter="1" binding="print"/>
|
||||||
|
|
||||||
|
Output
|
||||||
|
---
|
||||||
|
<div id="..." class="pc-parallel pc-component">
|
||||||
|
<div class="pc-container">
|
||||||
|
<div class="pcjs-parallel" data-value="id:'...',name:'...',adapter:'...',binding:'...'"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
[Return to [PCjs Documentation](..)]
|
||||||
|
|
@ -46,16 +46,19 @@ if (NODE) {
|
||||||
*
|
*
|
||||||
* The SerialPort component has the following component-specific (parmsSerial) properties:
|
* The SerialPort component has the following component-specific (parmsSerial) properties:
|
||||||
*
|
*
|
||||||
* adapter: 1 (for port 0x3F8) or 2 (for port 0x2F8); 0 if not defined
|
* adapter: 1 (port 0x3F8) or 2 (port 0x2F8); 0 if not defined
|
||||||
*
|
*
|
||||||
* binding: name of a control (based on its "binding" attribute) to bind to this port's I/O
|
* binding: name of a control (based on its "binding" attribute) to bind to this port's I/O
|
||||||
*
|
*
|
||||||
* tabSize: set to a non-zero number to convert tabs to spaces (applies only to output to
|
* tabSize: set to a non-zero number to convert tabs to spaces (applies only to output to
|
||||||
* the above binding); default is 0 (no conversion)
|
* the above binding); default is 0 (no conversion)
|
||||||
*
|
*
|
||||||
* WARNING: Since the XSL file defines 'adapter' as a number, not a string, there's no need to
|
* In the future, we may support 'port' and 'irq' properties that allow the machine to define a
|
||||||
* use parseInt(), and as an added benefit, we don't need to worry about whether a hex or decimal
|
* non-standard serial port configuration, instead of only our pre-defined 'adapter' configurations.
|
||||||
* format was used.
|
*
|
||||||
|
* NOTE: Since the XSL file defines 'adapter' as a number, not a string, there's no need to use
|
||||||
|
* parseInt(), and as an added benefit, we don't need to worry about whether a hex or decimal format
|
||||||
|
* was used.
|
||||||
*
|
*
|
||||||
* This hard-coded approach mimics the original IBM PC Asynchronous Adapter configuration, which
|
* This hard-coded approach mimics the original IBM PC Asynchronous Adapter configuration, which
|
||||||
* contained a pair of "shunt modules" that allowed the user to select a port address of either
|
* contained a pair of "shunt modules" that allowed the user to select a port address of either
|
||||||
|
|
|
||||||
|
|
@ -697,6 +697,33 @@
|
||||||
</xsl:call-template>
|
</xsl:call-template>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="parallel[@ref]">
|
||||||
|
<xsl:param name="machine" select="''"/>
|
||||||
|
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
|
||||||
|
<xsl:apply-templates select="document($componentFile)/parallel"><xsl:with-param name="machine" select="$machine"/></xsl:apply-templates>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="parallel[not(@ref)]">
|
||||||
|
<xsl:param name="machine" select="''"/>
|
||||||
|
<xsl:variable name="adapter">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@adapter"><xsl:value-of select="@adapter"/></xsl:when>
|
||||||
|
<xsl:otherwise>0</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:variable>
|
||||||
|
<xsl:variable name="binding">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="@binding"><xsl:value-of select="@binding"/></xsl:when>
|
||||||
|
<xsl:otherwise/>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:variable>
|
||||||
|
<xsl:call-template name="component">
|
||||||
|
<xsl:with-param name="machine" select="$machine"/>
|
||||||
|
<xsl:with-param name="class">parallel</xsl:with-param>
|
||||||
|
<xsl:with-param name="parms">,adapter:<xsl:value-of select="$adapter"/>,binding:'<xsl:value-of select="$binding"/>'</xsl:with-param>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="serial[@ref]">
|
<xsl:template match="serial[@ref]">
|
||||||
<xsl:param name="machine" select="''"/>
|
<xsl:param name="machine" select="''"/>
|
||||||
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
|
<xsl:variable name="componentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
|
||||||
|
|
|
||||||
23
pubs/pc/reference/intel/80186/README.md
Normal file
23
pubs/pc/reference/intel/80186/README.md
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: Intel 80186/80188 CPU Information
|
||||||
|
permalink: /pubs/pc/reference/intel/80186/
|
||||||
|
---
|
||||||
|
|
||||||
|
Intel 80186/80188 CPU Information
|
||||||
|
---
|
||||||
|
|
||||||
|
80186 Errata
|
||||||
|
---
|
||||||
|
|
||||||
|
* TBD
|
||||||
|
|
||||||
|
80186 Undocumented Instructions
|
||||||
|
---
|
||||||
|
|
||||||
|
* TBD
|
||||||
|
|
||||||
|
Assorted Publications
|
||||||
|
---
|
||||||
|
|
||||||
|
* TBD
|
||||||
|
|
@ -7,7 +7,8 @@ permalink: /pubs/pc/reference/intel/80286/
|
||||||
Intel 80286 CPU Information
|
Intel 80286 CPU Information
|
||||||
---
|
---
|
||||||
|
|
||||||
### 80286 Errata
|
80286 Errata
|
||||||
|
---
|
||||||
|
|
||||||
* [Early Errata: A1 and B1 Steppings](early_errata/)
|
* [Early Errata: A1 and B1 Steppings](early_errata/)
|
||||||
* [ARPL Behavior](arpl/)
|
* [ARPL Behavior](arpl/)
|
||||||
|
|
@ -18,11 +19,13 @@ Intel 80286 CPU Information
|
||||||
* [POPF Behavior](b2_b3_info/#popf-behavior)
|
* [POPF Behavior](b2_b3_info/#popf-behavior)
|
||||||
* [REP MOVS and REP INS Restartability](rep_restart/)
|
* [REP MOVS and REP INS Restartability](rep_restart/)
|
||||||
|
|
||||||
### 80286 Undocumented Instructions
|
80286 Undocumented Instructions
|
||||||
|
---
|
||||||
|
|
||||||
* [LOADALL](loadall/)
|
* [LOADALL](loadall/)
|
||||||
|
|
||||||
### 80286 Real-Mode Emulation Notes
|
80286 Real-Mode Emulation Notes
|
||||||
|
---
|
||||||
|
|
||||||
* [Executing Real Mode Programs in Protected Mode](real_mode/)
|
* [Executing Real Mode Programs in Protected Mode](real_mode/)
|
||||||
* [Discrepancies from an iAPX 86/88 Using Emulation](real_mode/#discrepancies-from-an-iapx-86-88-using-emulation)
|
* [Discrepancies from an iAPX 86/88 Using Emulation](real_mode/#discrepancies-from-an-iapx-86-88-using-emulation)
|
||||||
|
|
@ -30,7 +33,8 @@ Intel 80286 CPU Information
|
||||||
* [Mixing Real Mode and Protected Mode](real_mode/#mixing-real-mode-and-protected-mode)
|
* [Mixing Real Mode and Protected Mode](real_mode/#mixing-real-mode-and-protected-mode)
|
||||||
* [Exceptions from Undefined Opcodes and String Instructions](exceptions/)
|
* [Exceptions from Undefined Opcodes and String Instructions](exceptions/)
|
||||||
|
|
||||||
### Assorted Publications
|
Assorted Publications
|
||||||
|
---
|
||||||
|
|
||||||
[<img src="http://archive.pcjs.org/pubs/pc/reference/intel/iAPX_286_Hardware_Reference--1983/thumbs/iAPX_286_Hardware_Reference--1983.jpg" width="200" height="260" alt="iAPX 286 Hardware Reference (1983)"/>](http://bitsavers.trailing-edge.com/pdf/intel/_dataBooks/1983_iAPX_286_Hardware_Reference.pdf)
|
[<img src="http://archive.pcjs.org/pubs/pc/reference/intel/iAPX_286_Hardware_Reference--1983/thumbs/iAPX_286_Hardware_Reference--1983.jpg" width="200" height="260" alt="iAPX 286 Hardware Reference (1983)"/>](http://bitsavers.trailing-edge.com/pdf/intel/_dataBooks/1983_iAPX_286_Hardware_Reference.pdf)
|
||||||
[<img src="http://archive.pcjs.org/pubs/pc/reference/intel/iAPX_286_Operating_System_Writers_Guide--1983/thumbs/iAPX_286_Operating_System_Writers_Guide--1983.jpg" width="200" height="260" alt="iAPX 286 OS Writer's Guide (1983)"/>](http://bitsavers.trailing-edge.com/pdf/intel/_dataBooks/1983_iAPX_286_Operating_System_Writers_Guide.pdf)
|
[<img src="http://archive.pcjs.org/pubs/pc/reference/intel/iAPX_286_Operating_System_Writers_Guide--1983/thumbs/iAPX_286_Operating_System_Writers_Guide--1983.jpg" width="200" height="260" alt="iAPX 286 OS Writer's Guide (1983)"/>](http://bitsavers.trailing-edge.com/pdf/intel/_dataBooks/1983_iAPX_286_Operating_System_Writers_Guide.pdf)
|
||||||
|
|
|
||||||
|
|
@ -20,12 +20,6 @@ Intel 80386 CPU Information
|
||||||
* [D1 Stepping](#d1-stepping)
|
* [D1 Stepping](#d1-stepping)
|
||||||
* [D2 Stepping](#d2-stepping)
|
* [D2 Stepping](#d2-stepping)
|
||||||
|
|
||||||
80386 Undocumented Instructions
|
|
||||||
---
|
|
||||||
|
|
||||||
* [LOADALL](loadall/)
|
|
||||||
* [IBTS and XBTS](ibts_xbts/)
|
|
||||||
|
|
||||||
80386 Steppings
|
80386 Steppings
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -818,3 +812,9 @@ Revision identifier: 0x08.
|
||||||
### D2 Stepping
|
### D2 Stepping
|
||||||
|
|
||||||
Revision identifier: 0x08 (same as the D1 stepping).
|
Revision identifier: 0x08 (same as the D1 stepping).
|
||||||
|
|
||||||
|
80386 Undocumented Instructions
|
||||||
|
---
|
||||||
|
|
||||||
|
* [LOADALL](loadall/)
|
||||||
|
* [IBTS and XBTS](ibts_xbts/)
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,12 @@ title: "Obsolete 80386 Instructions: IBTS and XBTS"
|
||||||
permalink: /pubs/pc/reference/intel/80386/ibts_xbts/
|
permalink: /pubs/pc/reference/intel/80386/ibts_xbts/
|
||||||
---
|
---
|
||||||
|
|
||||||
### Obsolete 80386 Instructions
|
Obsolete 80386 Instructions
|
||||||
|
---
|
||||||
|
|
||||||
Here's more information on the 80386 opcodes (IBTS and XBTS) that were removed from the 80386 as of the B1 stepping.
|
Here's more information on the 80386 opcodes (IBTS and XBTS) that were removed from the 80386 as of the B1 stepping.
|
||||||
|
|
||||||
[IBTS (0x0F 0xA7)](http://asm.inightmare.org/opcodelst/index.php?op=IBTS)
|
### [IBTS (0x0F 0xA7)](http://asm.inightmare.org/opcodelst/index.php?op=IBTS)
|
||||||
|
|
||||||
Opcode IBTS
|
Opcode IBTS
|
||||||
|
|
||||||
|
|
@ -28,7 +29,7 @@ Here's more information on the 80386 opcodes (IBTS and XBTS) that were removed f
|
||||||
Clocks: IBTS
|
Clocks: IBTS
|
||||||
80386: 12/19
|
80386: 12/19
|
||||||
|
|
||||||
[XBTS (0x0F 0xA6)](http://asm.inightmare.org/opcodelst/index.php?op=XBTS):
|
### [XBTS (0x0F 0xA6)](http://asm.inightmare.org/opcodelst/index.php?op=XBTS)
|
||||||
|
|
||||||
Opcode XBTS
|
Opcode XBTS
|
||||||
|
|
||||||
|
|
|
||||||
23
pubs/pc/reference/intel/8086/README.md
Normal file
23
pubs/pc/reference/intel/8086/README.md
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: Intel 8086/8088 CPU Information
|
||||||
|
permalink: /pubs/pc/reference/intel/8086/
|
||||||
|
---
|
||||||
|
|
||||||
|
Intel 8086/8088 CPU Information
|
||||||
|
---
|
||||||
|
|
||||||
|
8086 Errata
|
||||||
|
---
|
||||||
|
|
||||||
|
* TBD
|
||||||
|
|
||||||
|
8086 Undocumented Instructions
|
||||||
|
---
|
||||||
|
|
||||||
|
* TBD
|
||||||
|
|
||||||
|
Assorted Publications
|
||||||
|
---
|
||||||
|
|
||||||
|
* TBD
|
||||||
|
|
@ -164,24 +164,24 @@ usually of no concern to the programmer. All 8086/8088 addressing modes may be u
|
||||||
operands, enabling convenient processing of numeric arrays, structures, based variables, etc.
|
operands, enabling convenient processing of numeric arrays, structures, based variables, etc.
|
||||||
|
|
||||||
Table S-3. Principal Instructions
|
Table S-3. Principal Instructions
|
||||||
|
|
||||||
Class Instructions
|
Class Instructions
|
||||||
|
|
||||||
Data Transfer Load (all data types), Store (all data types), Exchange
|
Data Transfer Load (all data types), Store (all data types), Exchange
|
||||||
|
|
||||||
Arithmetic Add, Subtract, Multiply, Divide, Subtract Reversed, Divide Reversed,
|
Arithmetic Add, Subtract, Multiply, Divide, Subtract Reversed, Divide Reversed,
|
||||||
Square Root, Scale, Remainder, Integer Part, Change Sign,
|
Square Root, Scale, Remainder, Integer Part, Change Sign,
|
||||||
Absolute Value, Extract
|
Absolute Value, Extract
|
||||||
|
|
||||||
Comparison Compare, Examine, Test
|
Comparison Compare, Examine, Test
|
||||||
|
|
||||||
Transcendental Tangent, Arctangent, 2^x-1, Y*Log2(X + 1), Y*Log2(X)
|
Transcendental Tangent, Arctangent, 2^x-1, Y*Log2(X + 1), Y*Log2(X)
|
||||||
|
|
||||||
Constants 0, 1, π, Log10(2), Loge(2), Log2(10), Log2(e)
|
Constants 0, 1, π, Log10(2), Loge(2), Log2(10), Log2(e)
|
||||||
|
|
||||||
Processor Control Load Control Word, Store Control Word, Store Status Word,
|
Processor Control Load Control Word, Store Control Word, Store Status Word,
|
||||||
Load Environment, Store Environment, Save, Restore, Enable Interrupts,
|
Load Environment, Store Environment, Save, Restore, Enable Interrupts,
|
||||||
Disable Interrupts, Clear Exceptions, Initialize
|
Disable Interrupts, Clear Exceptions, Initialize
|
||||||
|
|
||||||
> NDP routines may also be written in PL/M-86, Intel's high-level language for the 8086 and 8088 CPUs. PL/M-86
|
> NDP routines may also be written in PL/M-86, Intel's high-level language for the 8086 and 8088 CPUs. PL/M-86
|
||||||
provides the programmer with access to many 8087 facilities while reducing the programmer's need to understand the
|
provides the programmer with access to many 8087 facilities while reducing the programmer's need to understand the
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,26 @@ permalink: /pubs/pc/reference/intel/
|
||||||
Intel CPU Documentation
|
Intel CPU Documentation
|
||||||
---
|
---
|
||||||
|
|
||||||
Processor-specific information:
|
### [8086 CPU](8086/)
|
||||||
|
|
||||||
|
### [8087 FPU](8087/)
|
||||||
|
|
||||||
|
### [80186 CPU](80186/)
|
||||||
|
|
||||||
|
### [80286 CPU](80286/)
|
||||||
|
|
||||||
|
* [80286 Errata](80286/#errata)
|
||||||
|
* [80286 Undocumented Instructions](80286/#undocumented-instructions)
|
||||||
|
* [LOADALL](80286/loadall/)
|
||||||
|
* [80286 Real-Mode Emulation Notes](80286/#real-mode-emulation-notes)
|
||||||
|
|
||||||
* [80286 CPU](80286/)
|
### [80386 CPU](80386/)
|
||||||
* [80386 CPU](80386/)
|
|
||||||
|
* [80386 Errata](80386/#errata)
|
||||||
|
* [80386 Steppings](80386/#steppings)
|
||||||
|
* [80386 Undocumented Instructions](80386/#undocumented-instructions)
|
||||||
|
* [LOADALL](80386/loadall/)
|
||||||
|
* [IBTS](80386/ibts_xbts/), [XBTS](80386/ibts_xbts/)
|
||||||
|
|
||||||
### Assorted Publications
|
### Assorted Publications
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue