Rounded out the PC8080 portion of the tree
This commit is contained in:
parent
b04ef7e49f
commit
e9099c6d38
22 changed files with 154 additions and 21 deletions
|
|
@ -8,9 +8,9 @@ permalink: /blog/2016/04/30/
|
|||
Or rather, introducing [PC8080](/modules/pc8080/), a new 8080-based machine emulator recently added to the
|
||||
PCjs Project.
|
||||
|
||||
Our first [8080 Test Machine](/devices/pc8080/machine/test/) loads a copy of the
|
||||
Our first [8080 Test Machine](/devices/pc8080/machine/exerciser/) loads a copy of the
|
||||
[8080 Exerciser](https://web.archive.org/web/20151006085348/http://www.idb.me.uk/sunhillow/8080.html)
|
||||
(specifically, [8080EX1](/devices/pc8080/rom/test/8080EX1.MAC)) and intercepts the exerciser's CP/M console
|
||||
(specifically, [8080EX1](/devices/pc8080/rom/exerciser/8080EX1.MAC)) and intercepts the exerciser's CP/M console
|
||||
calls so that you can see its progress in the Control Panel window. It's a "headless" test machine
|
||||
(no keyboard or display), so that's all you get.
|
||||
|
||||
|
|
|
|||
|
|
@ -11,8 +11,9 @@ Device Configurations
|
|||
|
||||
All PCjs machines are built from the following collections of devices:
|
||||
|
||||
* [IBM PC Devices](pc/)
|
||||
* [Challenger 1P Devices](c1p/)
|
||||
* 6502-based Devices (e.g., [Challenger 1P](c1p/))
|
||||
* [8080-based Devices](pc8080/) (e.g., [Space Invaders](pc8080/machine/invaders/))
|
||||
* [8086-based Devices](pc/) (e.g., [IBM PC, including 80286 and 80386-based compatibles](pc/machine/))
|
||||
|
||||
These devices are user-installable components that you would typically find in a real personal computer,
|
||||
such as keyboards, disk controllers with one or more disk drives, video cards, etc.
|
||||
|
|
|
|||
|
|
@ -9,11 +9,12 @@ redirect_from:
|
|||
IBM PC Device Configurations
|
||||
---
|
||||
|
||||
[PC Machines](machine/) are built from a collection of devices, including:
|
||||
[IBM PC Machines](machine/) are built from a collection of [Devices](/devices/), including:
|
||||
|
||||
* CPU
|
||||
* CPU (e.g., 8088, 80286, 80386)
|
||||
* RAM
|
||||
* [ROMs](rom/)
|
||||
* ChipSets (e.g., 8259, 8253, 8237)
|
||||
* [Keyboards](keyboard/)
|
||||
* [Video Adapters](video/)
|
||||
* Floppy Drive Controllers
|
||||
|
|
@ -30,8 +31,8 @@ Complete machine configurations are constructed from those devices. A Machine C
|
|||
that lists all the device components to be used. A Machine XML file can choose to configure every device itself,
|
||||
or it can include pre-configured device XML files, such as those provided above or elsewhere.
|
||||
|
||||
For example, here's what the machine located at
|
||||
[/devices/pc/machine/5150/mda/64kb/machine.xml](/devices/pc/machine/5150/mda/64kb/machine.xml) looks like:
|
||||
Here's an example of [IBM 5150](/devices/pc/machine/5150/mda/64kb/)
|
||||
[XML](/devices/pc/machine/5150/mda/64kb/machine.xml):
|
||||
|
||||
<machine id="ibm5150" class="pc" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">IBM PC (Model 5150) with Monochrome Display</name>
|
||||
|
|
@ -49,7 +50,7 @@ For example, here's what the machine located at
|
|||
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000"/>
|
||||
</machine>
|
||||
|
||||
All the devices are fully configured within the Machine XML file, except for the
|
||||
In this example, all the devices are fully configured within the machine XML file, except for the
|
||||
[Video](/docs/pcjs/video/) [XML](/devices/pc/video/ibm/mda/ibm-mda.xml),
|
||||
[Floppy Disk Controller (FDC)](/docs/pcjs/fdc/) [XML](/disks/pc/compiled/samples.xml), and
|
||||
[Keyboard](/docs/pcjs/keyboard/) [XML](/devices/pc/keyboard/us83-buttons-arrows.xml).
|
||||
|
|
|
|||
47
devices/pc8080/README.md
Normal file
47
devices/pc8080/README.md
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
layout: page
|
||||
title: 8080-Based Device Configurations
|
||||
permalink: /devices/pc8080/
|
||||
---
|
||||
|
||||
8080-Based Device Configurations
|
||||
---
|
||||
|
||||
[8080-Based Machines](machine/) are built from a collection of devices, including:
|
||||
|
||||
* CPU (8080)
|
||||
* RAM
|
||||
* [ROMs](rom/)
|
||||
* ChipSets
|
||||
* Video Adapters
|
||||
* [Control Panels](panel/)
|
||||
|
||||
Complete machine configurations are constructed from those devices. A machine configuration is a single XML file
|
||||
that lists all the device components to be used. A machine XML file can choose to configure every device itself,
|
||||
or it can include pre-configured device XML files, such as those provided above or elsewhere.
|
||||
|
||||
For example, here's what the [Space Invaders (1978)](/devices/pc8080/machine/invaders/)
|
||||
[XML](/devices/pc8080/machine/invaders/machine.xml) looks like:
|
||||
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pc8080/1.22.0/machine.xsl"?>
|
||||
<machine id="invaders" class="pc8080" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">Space Invaders</name>
|
||||
<computer id="computer" busWidth="16"/>
|
||||
<cpu id="cpu8080" model="8080" cycles="2000000"/>
|
||||
<rom id="romH" addr="0x0000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-H.json"/>
|
||||
<rom id="romG" addr="0x0800" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-G.json"/>
|
||||
<rom id="romF" addr="0x1000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-F.json"/>
|
||||
<rom id="romE" addr="0x1800" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-E.json"/>
|
||||
<ram id="ram" addr="0x2000" size="0x2000"/>
|
||||
<video id="video" screenWidth="224" screenHeight="256" bufferAddr="0x2400" bufferCols="256" bufferRows="224" bufferBits="1" interruptRate="120" rotation="90" width="40%" pos="left" padding="8px">
|
||||
<menu>
|
||||
<title>224x256 Screen (Rotated)</title>
|
||||
</menu>
|
||||
</video>
|
||||
<chipset id="chipset" model="SI1978"/>
|
||||
<panel ref="/devices/pc8080/panel/left.xml"/>
|
||||
<debugger id="debugger" commands="s 8086"/>
|
||||
</machine>
|
||||
|
||||
In this example, all the devices are fully configured within the machine XML file, except for the
|
||||
[Control Panel](panel/) [XML](panel/left.xml).
|
||||
13
devices/pc8080/machine/README.md
Normal file
13
devices/pc8080/machine/README.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
layout: page
|
||||
title: 8080-Based Machine Configurations
|
||||
permalink: /devices/pc8080/machine/
|
||||
---
|
||||
|
||||
8080-Based Machine Configurations
|
||||
---
|
||||
|
||||
The following 8080-based machines are currently available:
|
||||
|
||||
* [Space Invaders (1978)](invaders/)
|
||||
* [8080 Exerciser Test Machine](exerciser/)
|
||||
|
|
@ -1,14 +1,16 @@
|
|||
---
|
||||
layout: page
|
||||
title: 8080 Test Machine
|
||||
permalink: /devices/pc8080/machine/test/
|
||||
title: 8080 Exerciser Test Machine
|
||||
permalink: /devices/pc8080/machine/exerciser/
|
||||
redirect_from:
|
||||
- /devices/pc8080/machine/test/
|
||||
machines:
|
||||
- type: pc8080
|
||||
id: test8080
|
||||
debugger: true
|
||||
---
|
||||
|
||||
8080 Test Machine
|
||||
8080 Exerciser Test Machine
|
||||
---
|
||||
|
||||
This is a test of [PC8080](/modules/pc8080/), a new 8080-based machine emulator being added to the
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pc8080/1.22.0/machine.xsl"?>
|
||||
<machine id="test8080" class="pc8080" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">8080 Test Machine</name>
|
||||
<name pos="center">8080 Exerciser Test Machine</name>
|
||||
<computer id="computer" busWidth="16"/>
|
||||
<cpu id="cpu8080" model="8080" cycles="2000000"/>
|
||||
<rom id="romTest" addr="0x0100" size="0x1200" file="/devices/pc8080/rom/test/8080EX1.json" writable="true"/>
|
||||
<rom id="romTest" addr="0x0100" size="0x1200" file="/devices/pc8080/rom/exerciser/8080EX1.json" writable="true"/>
|
||||
<ram id="ramTest" addr="0x1300" size="0xED00"/>
|
||||
<panel ref="/devices/pc8080/panel/wide.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
layout: page
|
||||
title: Space Invaders (Under Construction)
|
||||
title: Space Invaders (1978)
|
||||
permalink: /devices/pc8080/machine/invaders/
|
||||
machines:
|
||||
- type: pc8080
|
||||
|
|
@ -8,7 +8,7 @@ machines:
|
|||
debugger: true
|
||||
---
|
||||
|
||||
Space Invaders (Under Construction)
|
||||
Space Invaders (1978)
|
||||
---
|
||||
|
||||
This is a test of [PC8080](/modules/pc8080/), a new 8080-based machine emulator recently added to the
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
<rom id="romG" addr="0x0800" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-G.json"/>
|
||||
<rom id="romF" addr="0x1000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-F.json"/>
|
||||
<rom id="romE" addr="0x1800" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-E.json"/>
|
||||
<ram id="ram" addr="0x2000" size="0x2000"/>
|
||||
<chipset id="chipset" model="SI1978"/>
|
||||
<ram id="ram" addr="0x2000" size="0x0400"/>
|
||||
<video id="video" screenWidth="224" screenHeight="256" bufferAddr="0x2400" bufferCols="256" bufferRows="224" bufferBits="1" interruptRate="120" rotation="90" width="40%" pos="left" padding="8px">
|
||||
<menu>
|
||||
<title>224x256 Screen (Rotated)</title>
|
||||
</menu>
|
||||
</video>
|
||||
<chipset id="chipset" model="SI1978"/>
|
||||
<panel ref="/devices/pc8080/panel/left.xml"/>
|
||||
<debugger id="debugger" commands="s 8086"/>
|
||||
</machine>
|
||||
|
|
|
|||
16
devices/pc8080/panel/README.md
Normal file
16
devices/pc8080/panel/README.md
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
layout: page
|
||||
title: 8080-Based Control Panels
|
||||
permalink: /devices/pc8080/panel/
|
||||
---
|
||||
|
||||
8080-Based Control Panels
|
||||
---
|
||||
|
||||
[Control Panels](/docs/pcjs/panel/) are XML files that define layouts for Debugger-related controls.
|
||||
|
||||
The following 8080-based control panel configuration files are currently available:
|
||||
|
||||
- [left.xml](left.xml) (created for Space Invaders)
|
||||
- [wide.xml](wide.xml) (a wider version of the above)
|
||||
|
||||
18
devices/pc8080/rom/README.md
Normal file
18
devices/pc8080/rom/README.md
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
layout: page
|
||||
title: 8080-Based ROMs
|
||||
permalink: /devices/pc8080/rom/
|
||||
---
|
||||
|
||||
8080-Based ROMs
|
||||
---
|
||||
|
||||
ROMs are added to machines by including one *[ROM](/docs/pcjs/rom/)* component in the machine XML configuration file
|
||||
for each ROM in the machine; eg:
|
||||
|
||||
<rom id="romH" addr="0x0000" size="0x0800" file="/devices/pc8080/rom/invaders/INVADERS-H.json"/>
|
||||
|
||||
The project currently contains the following 8080-based ROMs:
|
||||
|
||||
* [Space Invaders (1978)](invaders/)
|
||||
* [8080 Exerciser Tests](exerciser/)
|
||||
15
devices/pc8080/rom/exerciser/README.md
Normal file
15
devices/pc8080/rom/exerciser/README.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
layout: page
|
||||
title: 8080 Exerciser Tests
|
||||
permalink: /devices/pc8080/rom/exerciser/
|
||||
---
|
||||
|
||||
8080 Exerciser Tests
|
||||
---
|
||||
|
||||
* [8080EX1](8080EX1.MAC)
|
||||
* [8080EXER](8080EXER.MAC)
|
||||
* [8080PRE](8080PRE.MAC)
|
||||
|
||||
Our [8080 Exerciser Test Machine](/devices/pc8080/machine/exerciser/) runs the [8080EX1](8080EX1.MAC),
|
||||
since it is the most comprehensive test, and was designed specifically for the Intel 8080.
|
||||
15
devices/pc8080/rom/invaders/README.md
Normal file
15
devices/pc8080/rom/invaders/README.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
layout: page
|
||||
title: Space Invaders (1978) ROMs
|
||||
permalink: /devices/pc8080/rom/invaders/
|
||||
---
|
||||
|
||||
Space Invaders (1978) ROMs
|
||||
---
|
||||
|
||||
The original [Space Invaders (1978)](/devices/pc8080/machine/invaders/) contains 4 2Kb ROMs:
|
||||
|
||||
* [INVADERS-H](INVADERS-H.json) (loaded at 0x0000)
|
||||
* [INVADERS-G](INVADERS-G.json) (loaded at 0x0800)
|
||||
* [INVADERS-F](INVADERS-F.json) (loaded at 0x1000)
|
||||
* [INVADERS-E](INVADERS-E.json) (loaded at 0x1800)
|
||||
|
|
@ -17,8 +17,11 @@ Defines all the properties required for the CPU component to initialize, along w
|
|||
|
||||
Attributes
|
||||
---
|
||||
* *model* (optional; default is 8088)
|
||||
* *model* (optional; default is 8088; supported values include: 8086, 8088, 80186, 80286, and 80386)
|
||||
* Defines the CPU model, adjusting the CPU's capabilities accordingly.
|
||||
* *stepping* (optional; if specified, it must be a 2-character string, such as "A0" or "B1")
|
||||
* Defines the CPU stepping, adjusting the CPU's capabilities accordingly.
|
||||
* Currently supported only on the 80386 model.
|
||||
* *cycles* (optional; default is 4772727)
|
||||
* Defines the simulated CPU speed in terms of cycles. The default is 4.77Mhz. The exact speed will vary, according
|
||||
to the whims of JavaScript, your web browser, and your machine's overall workload.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ Overview
|
|||
PC8080 is an 8080-based Machine Emulation Module. The code is derived from [PCjs](/modules/pcjs/),
|
||||
the IBM PC Emulation Module.
|
||||
|
||||
It is still a work-in-progress. The only demo currently available is this [8080 Test Machine](/devices/pc8080/machine/test/).
|
||||
It is still a work-in-progress. See the list of available [PC8080 Machines](/devices/pc8080/machine/).
|
||||
|
||||
PC8080 is currently comprised of the following non-shared components, as listed in [package.json](../../package.json)
|
||||
(see the *pc8080Files* property):
|
||||
|
|
|
|||
|
|
@ -9,7 +9,9 @@ IBM PC Emulation Module (PCjs)
|
|||
|
||||
Overview
|
||||
---
|
||||
The PCjs IBM PC Emulation Module divides PC functionality into variety of logical and visual components.
|
||||
The PCjs IBM PC Emulation Module is the engine underlying all our [IBM PC Machines](/devices/pc/machine/).
|
||||
|
||||
This module divides PC functionality into variety of logical and visual components.
|
||||
In general, each JavaScript file is responsible for a single component or set of related components (eg,
|
||||
[chipset.js](lib/chipset.js)). Most components represent familiar PC devices, such as video cards, disk
|
||||
controllers, etc.
|
||||
|
|
|
|||
Loading…
Reference in a new issue