diff --git a/README.md b/README.md
index 5131360e9..44985f8b4 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ Some pre-configured machines are shown below, ready to run BASIC, DOS, Windows 1
[
](/devices/pc/machine/5150/cga/64kb/donkey/)
[
](/devices/pc/machine/5160/cga/256kb/demo/)
-[
](/devices/pc/machine/5160/cga/256kb/win101/")
+[
](/devices/pc/machine/5160/cga/256kb/win101/)
[
](/devices/pc/machine/5160/ega/640kb/win101/)
[
](/disks/pc/os2/ibm/1.0/)
[
](/disks/pc/cpm/)
diff --git a/blog/README.md b/blog/README.md
new file mode 100644
index 000000000..dee5eb936
--- /dev/null
+++ b/blog/README.md
@@ -0,0 +1,7 @@
+---
+layout: blog
+title: Blog
+menu_order: 2
+permalink: /blog/
+---
+
diff --git a/devices/c1p/machine/8kb/all/debugger/machine.md b/devices/c1p/machine/8kb/all/debugger/machine.md
new file mode 100644
index 000000000..2dcd36300
--- /dev/null
+++ b/devices/c1p/machine/8kb/all/debugger/machine.md
@@ -0,0 +1,10 @@
+---
+layout: page
+title: "OSI Challenger 1P (8Kb) with Additional Software"
+permalink: /devices/c1p/machine/8kb/all/debugger/
+machines:
+ - type: c1p-dbg
+ id: c1p8kb
+---
+
+{% include machine.html id="c1p8kb" %}
diff --git a/devices/c1p/machine/8kb/all/debugger/machine.xml b/devices/c1p/machine/8kb/all/debugger/machine.xml
index ef018b46f..c45677586 100644
--- a/devices/c1p/machine/8kb/all/debugger/machine.xml
+++ b/devices/c1p/machine/8kb/all/debugger/machine.xml
@@ -1,7 +1,7 @@
- OSI Challenger 1P (8Kb, More Programs)
+ OSI Challenger 1P (8Kb, Additional Software)
diff --git a/devices/c1p/machine/8kb/large/debugger/machine.md b/devices/c1p/machine/8kb/large/debugger/machine.md
new file mode 100644
index 000000000..3f244a931
--- /dev/null
+++ b/devices/c1p/machine/8kb/large/debugger/machine.md
@@ -0,0 +1,10 @@
+---
+layout: page
+title: "OSI Challenger 1P (8Kb) with Large Display"
+permalink: /devices/c1p/machine/8kb/large/debugger/
+machines:
+ - type: c1p-dbg
+ id: c1p8kb
+---
+
+{% include machine.html id="c1p8kb" %}
diff --git a/devices/c1p/machine/8kb/large/machine.md b/devices/c1p/machine/8kb/large/machine.md
new file mode 100644
index 000000000..db7286791
--- /dev/null
+++ b/devices/c1p/machine/8kb/large/machine.md
@@ -0,0 +1,10 @@
+---
+layout: page
+title: "OSI Challenger 1P (8Kb) with Large Display"
+permalink: /devices/c1p/machine/8kb/large/
+machines:
+ - type: c1p
+ id: c1p8kb
+---
+
+{% include machine.html id="c1p8kb" %}
diff --git a/devices/c1p/machine/8kb/small/machine.md b/devices/c1p/machine/8kb/small/machine.md
new file mode 100644
index 000000000..db37026ea
--- /dev/null
+++ b/devices/c1p/machine/8kb/small/machine.md
@@ -0,0 +1,10 @@
+---
+layout: page
+title: "OSI Challenger 1P (8Kb) with Small Display"
+permalink: /devices/c1p/machine/8kb/small/
+machines:
+ - type: c1p
+ id: c1p8kb
+---
+
+{% include machine.html id="c1p8kb" %}
diff --git a/docs/README.md b/docs/README.md
index 3cc59b20a..c2b4e357c 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,4 +1,11 @@
+---
+layout: page
+title: Docs
+menu_order: 6
+permalink: /docs/
+---
+
Documentation
---
-Documentation for [PCjs](/docs/pcjs/) and [C1Pjs](/docs/c1pjs/) is now available.
\ No newline at end of file
+Documentation for [PCjs](/docs/pcjs/) and [C1Pjs](/docs/c1pjs/) is now available.
diff --git a/docs/c1pjs/README.md b/docs/c1pjs/README.md
index 59a57f3d9..8dec2139f 100644
--- a/docs/c1pjs/README.md
+++ b/docs/c1pjs/README.md
@@ -1,3 +1,13 @@
+---
+layout: page
+title: C1Pjs Documentation
+permalink: /docs/c1pjs/
+machines:
+ - type: c1p-dbg
+ id: c1p8kb
+ config: /devices/c1p/machine/8kb/large/debugger/machine.xml
+---
+
C1Pjs Documentation
---
@@ -5,7 +15,7 @@ C1Pjs is a JavaScript simulation of the Challenger 1P, an 8-bit 6502-based micro
manufactured by Ohio Scientific in 1978. The base configuration included 4Kb of RAM and an
8Kb BASIC-in-ROM from Microsoft. Below is a simulation of the 8Kb model.
-[OSI Challenger C1P](/devices/c1p/machine/8kb/large/debugger/ "C1Pjs:c1p8kb:::debugger")
+{% include machine.html id="c1p8kb" %}
More sample [C1P machine configurations](/devices/c1p/machine/) are available, as well as
information on [customizing and embedding](embed/) your own configurations.
@@ -143,6 +153,6 @@ the <canvas> tag until IE9.
### Challenger 1P Reference Manuals
-
-
-
+[
](http://static.pcjs.org/pubs/c1p/techref/pdfs/OSI_BASIC-IN-ROM_Reference_Manual.pdf)
+[
](http://static.pcjs.org/pubs/c1p/techref/pdfs/OSI_C1P_Character_Graphics_Reference_Manual.pdf)
+[
](http://static.pcjs.org/pubs/c1p/techref/pdfs/OSI_C1P_Users_Manual.pdf)
diff --git a/docs/c1pjs/embed/README.md b/docs/c1pjs/embed/README.md
index 138c338b3..64c5b808c 100644
--- a/docs/c1pjs/embed/README.md
+++ b/docs/c1pjs/embed/README.md
@@ -1,6 +1,17 @@
+---
+layout: page
+title: Embedding The C1Pjs Simulator
+permalink: /docs/c1pjs/embed/
+machines:
+ - type: c1p
+ id: c1p8kb
+ config: /devices/c1p/machine/8kb/embed/machine.xml
+---
+
Embedding The C1Pjs Simulator
-===
-[Challenger 1P](/devices/c1p/machine/8kb/embed/ "C1Pjs:c1pDemo")
+---
+
+{% include machine.html id="c1p8kb" %}
If you want to read as little as possible, then just paste the following code onto a web page:
diff --git a/docs/pcjs/README.md b/docs/pcjs/README.md
index c2d31d6a8..720c342fe 100644
--- a/docs/pcjs/README.md
+++ b/docs/pcjs/README.md
@@ -1,10 +1,20 @@
+---
+layout: page
+title: PCjs Documentation
+permalink: /docs/pcjs/
+machines:
+ - type: pc
+ id: ibm5150
+ config: /devices/pc/machine/5150/mda/64kb/machine.xml
+---
+
PCjs Documentation
---
[PCjs](/docs/about/pcjs/) is a full-featured IBM PC, PC XT and PC AT emulator written entirely in JavaScript.
After you've read the Documentation, play with the [Demos](demos/).
-[IBM PC Model 5150](/devices/pc/machine/5150/mda/64kb/ "PCjs:ibm5150")
+{% include machine.html id="ibm5150" %}
The [simulation](/devices/pc/machine/5150/mda/64kb/) above features an Intel 8088
running at 4.77Mhz, with 64Kb of RAM and an IBM Monochrome Display Adapter. To create your
diff --git a/docs/pcjs/chipset/README.md b/docs/pcjs/chipset/README.md
index 7ff4350df..27ede526f 100644
--- a/docs/pcjs/chipset/README.md
+++ b/docs/pcjs/chipset/README.md
@@ -1,7 +1,10 @@
-<chipset>
-===
+---
+layout: page
+title: PCjs <chipset> Element
+permalink: /docs/pcjs/chipset/
+---
-PCjs *ChipSet* XML Specification
+PCjs ChipSet Component
---
Format
diff --git a/docs/pcjs/component/README.md b/docs/pcjs/component/README.md
index 20dac2019..7fe305ed3 100644
--- a/docs/pcjs/component/README.md
+++ b/docs/pcjs/component/README.md
@@ -1,7 +1,10 @@
-<component>
-===
+---
+layout: page
+title: PCjs <component> Element
+permalink: /docs/pcjs/component/
+---
-*Component* XML Specification
+PCjs Component
---
Format
@@ -42,4 +45,4 @@ Output
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/computer/README.md b/docs/pcjs/computer/README.md
index 1789f6128..c4bb60635 100644
--- a/docs/pcjs/computer/README.md
+++ b/docs/pcjs/computer/README.md
@@ -1,7 +1,10 @@
-<computer>
-===
+---
+layout: page
+title: PCjs <computer> Element
+permalink: /docs/pcjs/computer/
+---
-PCjs *Computer* XML Specification
+PCjs Computer Component
---
Format
@@ -62,4 +65,4 @@ Output
Also, if any controls are defined, another <div> of class="pc-controls" is created in the container <div>,
with each control inside a <div> of class="pc-control".
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/cpu/README.md b/docs/pcjs/cpu/README.md
index 2cf1105a0..607b13b6e 100644
--- a/docs/pcjs/cpu/README.md
+++ b/docs/pcjs/cpu/README.md
@@ -1,7 +1,10 @@
-<cpu>
-===
+---
+layout: page
+title: PCjs <cpu> Element
+permalink: /docs/pcjs/cpu/
+---
-PCjs *CPU* XML Specification
+PCjs CPU Component
---
Format
@@ -62,4 +65,4 @@ Output
Also, if any controls are defined, another <div> of class="pc-controls" is created in the container <div>,
with each control inside a <div> of class="pc-control".
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/debugger/README.md b/docs/pcjs/debugger/README.md
index 1a4e3ce51..abff936c4 100644
--- a/docs/pcjs/debugger/README.md
+++ b/docs/pcjs/debugger/README.md
@@ -1,7 +1,10 @@
-<debugger>
-===
+---
+layout: page
+title: PCjs <debugger> Element
+permalink: /docs/pcjs/debugger/
+---
-PCjs *Debugger* XML Specification
+PCjs Debugger Component
---
Format
@@ -51,4 +54,4 @@ Output
Also, if any controls are defined, another <div> of class="pc-controls" is created in the container <div>,
with each control inside a <div> of class="pc-control".
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/demos/README.md b/docs/pcjs/demos/README.md
index 47941cffc..aff3208a2 100644
--- a/docs/pcjs/demos/README.md
+++ b/docs/pcjs/demos/README.md
@@ -1,3 +1,13 @@
+---
+layout: page
+title: PCjs Documentation Demos
+permalink: /docs/pcjs/demos/
+machines:
+ - type: pc
+ id: sample3
+ config: /docs/pcjs/demos/sample3b.xml
+---
+
PCjs Documentation Demos
---
@@ -19,6 +29,6 @@ the "file:" or "http:" protocol.
Have fun!
-[IBM PC using sample3b.xml](sample3b.xml "PCjs:sample3")
+{% include machine.html id="sample3" %}
[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/fdc/README.md b/docs/pcjs/fdc/README.md
index cc8495395..4365fab09 100644
--- a/docs/pcjs/fdc/README.md
+++ b/docs/pcjs/fdc/README.md
@@ -1,7 +1,10 @@
-<FDC>
-===
+---
+layout: page
+title: PCjs <fdc> Element
+permalink: /docs/pcjs/fdc/
+---
-PCjs *FDC* (Floppy Disk Controller) XML Specification
+PCjs Floppy Disk Controller (FDC) Component
---
Format
@@ -72,4 +75,4 @@ Output
Also, if any controls are defined, another <div> of class="pc-controls" is created in the container <div>,
with each control inside a <div> of class="pc-control".
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/hdc/README.md b/docs/pcjs/hdc/README.md
index 53fbf39ab..b593a93b1 100644
--- a/docs/pcjs/hdc/README.md
+++ b/docs/pcjs/hdc/README.md
@@ -1,7 +1,10 @@
-<HDC>
-===
+---
+layout: page
+title: PCjs <hdc> Element
+permalink: /docs/pcjs/hdc/
+---
-PCjs *HDC* (Hard Disk Controller) XML Specification
+PCjs Hard Disk Controller (HDC) Component
---
Format
@@ -72,4 +75,4 @@ Output
Also, if any controls are defined, another <div> of class="pc-controls" is created in the container <div>,
with each control inside a <div> of class="pc-control".
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/keyboard/README.md b/docs/pcjs/keyboard/README.md
index 30cbe8052..a89367f04 100644
--- a/docs/pcjs/keyboard/README.md
+++ b/docs/pcjs/keyboard/README.md
@@ -1,7 +1,10 @@
-<keyboard>
-===
+---
+layout: page
+title: PCjs <keyboard> Element
+permalink: /docs/pcjs/keyboard/
+---
-PCjs *Keyboard* XML Specification
+PCjs Keyboard Component
---
Format
diff --git a/docs/pcjs/machine/README.md b/docs/pcjs/machine/README.md
index 364f486d8..8c651303d 100644
--- a/docs/pcjs/machine/README.md
+++ b/docs/pcjs/machine/README.md
@@ -1,7 +1,10 @@
-<machine>
-===
+---
+layout: page
+title: PCjs <machine> Element
+permalink: /docs/pcjs/machine/
+---
-PCjs *Machine* XML Specification
+PCjs Machine Component
---
Format
@@ -39,4 +42,4 @@ Output
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/mouse/README.md b/docs/pcjs/mouse/README.md
index 5fafb8dc7..228dd77a8 100644
--- a/docs/pcjs/mouse/README.md
+++ b/docs/pcjs/mouse/README.md
@@ -1,7 +1,10 @@
-<mouse>
-===
+---
+layout: page
+title: PCjs <mouse> Element
+permalink: /docs/pcjs/mouse/
+---
-PCjs *Mouse* XML Specification
+PCjs Mouse Component
---
Format
@@ -37,4 +40,4 @@ Output
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/panel/README.md b/docs/pcjs/panel/README.md
index ffff348eb..46e6bb84d 100644
--- a/docs/pcjs/panel/README.md
+++ b/docs/pcjs/panel/README.md
@@ -1,7 +1,10 @@
-<panel>
-===
+---
+layout: page
+title: PCjs <panel> Element
+permalink: /docs/pcjs/panel/
+---
-PCjs *Panel* XML Specification
+PCjs Control Panel Component
---
Format
diff --git a/docs/pcjs/ram/README.md b/docs/pcjs/ram/README.md
index 22a566e4b..726b4d02e 100644
--- a/docs/pcjs/ram/README.md
+++ b/docs/pcjs/ram/README.md
@@ -1,7 +1,10 @@
-<ram>
-===
+---
+layout: page
+title: PCjs <ram> Element
+permalink: /docs/pcjs/ram/
+---
-PCjs *RAM* XML Specification
+PCjs Random-Access Memory (RAM) Component
---
Format
@@ -53,4 +56,4 @@ Output
Also, if any controls are defined, another <div> of class="pc-controls" is created in the container <div>,
with each control inside a <div> of class="pc-control".
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/rom/README.md b/docs/pcjs/rom/README.md
index 08dc7ef41..3ae952c18 100644
--- a/docs/pcjs/rom/README.md
+++ b/docs/pcjs/rom/README.md
@@ -1,7 +1,10 @@
-<rom>
-===
+---
+layout: page
+title: PCjs <rom> Element
+permalink: /docs/pcjs/rom/
+---
-PCjs *ROM* XML Specification
+PCjs Read-Only Memory (ROM) Component
---
Format
@@ -50,4 +53,4 @@ Output
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/serial/README.md b/docs/pcjs/serial/README.md
index 1c66a4a3f..0f6c0837d 100644
--- a/docs/pcjs/serial/README.md
+++ b/docs/pcjs/serial/README.md
@@ -1,7 +1,10 @@
-<serial>
-===
+---
+layout: page
+title: PCjs <serial> Element
+permalink: /docs/pcjs/serial/
+---
-PCjs *SerialPort* XML Specification
+PCjs SerialPort Component
---
Format
@@ -46,4 +49,4 @@ Output
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/docs/pcjs/video/README.md b/docs/pcjs/video/README.md
index c49bd6b17..2770db62f 100644
--- a/docs/pcjs/video/README.md
+++ b/docs/pcjs/video/README.md
@@ -1,7 +1,10 @@
-<video>
-===
+---
+layout: page
+title: PCjs <video> Element
+permalink: /docs/pcjs/video/
+---
-PCjs *Video* XML Specification
+PCjs Video Component
---
Format
@@ -91,4 +94,4 @@ Output
Also, if any controls are defined, another <div> of class="pc-controls" is created in the container <div>,
with each control inside a <div> of class="pc-control".
-[Return to [PCjs Documentation](..)]
\ No newline at end of file
+[Return to [PCjs Documentation](..)]
diff --git a/modules/c1pjs/templates/components.css b/modules/c1pjs/templates/components.css
index 7869669d7..6e9ac0b35 100644
--- a/modules/c1pjs/templates/components.css
+++ b/modules/c1pjs/templates/components.css
@@ -14,6 +14,9 @@
.c1pjs-embed:after {
clear:both;
}
+.c1pjs-machine {
+ padding-bottom: 1em;
+}
.c1pjs-name {
clear: both;
font-weight: bold;
diff --git a/notes.md b/notes.md
index d71b831cf..fc61c87d2 100644
--- a/notes.md
+++ b/notes.md
@@ -134,11 +134,11 @@ To convert PCjs' special links, such as:
to normal Markdown links, search using this regex:
- \!\[(.*?)\]\(([^ )]*) \"link:([^:]*):([0-9]*):([0-9]*)\"\)
+ \!\[(.*?)\]\(([^ )]*) \"link:(.*?):([0-9]*):([0-9]*)\"\)
and replace using this regex:
- [
]($3 "$1")
+ [
]($3)
Jekyll "Cheat Sheet"
diff --git a/versions/c1pjs/1.20.1/components.css b/versions/c1pjs/1.20.1/components.css
index 69ee3112f..0d406adc1 100644
--- a/versions/c1pjs/1.20.1/components.css
+++ b/versions/c1pjs/1.20.1/components.css
@@ -9,6 +9,9 @@
.c1pjs-embed:after {
clear:both;
}
+.c1pjs-machine {
+ padding-bottom: 1em;
+}
.c1pjs-name {
clear: both;
font-weight: bold;