diff --git a/_config.yml b/_config.yml
index d7f2c0237..7d0b7eafe 100644
--- a/_config.yml
+++ b/_config.yml
@@ -20,3 +20,71 @@ kramdown:
# Custom site settings
pcjs_domain: pcjs.net
pcjs_version: 1.20.1
+pcjs_compiled: false
+
+c1pjs_scripts:
+ - /modules/shared/lib/defines.js
+ - /modules/shared/lib/dumpapi.js
+ - /modules/shared/lib/reportapi.js
+ - /modules/shared/lib/strlib.js
+ - /modules/shared/lib/usrlib.js
+ - /modules/shared/lib/weblib.js
+ - /modules/shared/lib/component.js
+ - /modules/c1pjs/lib/defines.js
+ - /modules/c1pjs/lib/panel.js
+ - /modules/c1pjs/lib/cpu.js
+ - /modules/c1pjs/lib/rom.js
+ - /modules/c1pjs/lib/ram.js
+ - /modules/c1pjs/lib/keyboard.js
+ - /modules/c1pjs/lib/video.js
+ - /modules/c1pjs/lib/serial.js
+ - /modules/c1pjs/lib/disk.js
+ - /modules/c1pjs/lib/debugger.js
+ - /modules/c1pjs/lib/computer.js
+ - /modules/shared/lib/embed.js
+
+pcjs_scripts:
+ - /modules/shared/lib/defines.js
+ - /modules/shared/lib/diskapi.js
+ - /modules/shared/lib/dumpapi.js
+ - /modules/shared/lib/reportapi.js
+ - /modules/shared/lib/userapi.js
+ - /modules/shared/lib/strlib.js
+ - /modules/shared/lib/usrlib.js
+ - /modules/shared/lib/weblib.js
+ - /modules/shared/lib/component.js
+ - /modules/pcjs/lib/defines.js
+ - /modules/pcjs/lib/x86.js
+ - /modules/pcjs/lib/interrupts.js
+ - /modules/pcjs/lib/messages.js
+ - /modules/pcjs/lib/panel.js
+ - /modules/pcjs/lib/bus.js
+ - /modules/pcjs/lib/memory.js
+ - /modules/pcjs/lib/cpu.js
+ - /modules/pcjs/lib/x86seg.js
+ - /modules/pcjs/lib/x86cpu.js
+ - /modules/pcjs/lib/x86fpu.js
+ - /modules/pcjs/lib/x86func.js
+ - /modules/pcjs/lib/x86ops.js
+ - /modules/pcjs/lib/x86op0f.js
+ - /modules/pcjs/lib/x86modb.js
+ - /modules/pcjs/lib/x86modw.js
+ - /modules/pcjs/lib/x86modb16.js
+ - /modules/pcjs/lib/x86modw16.js
+ - /modules/pcjs/lib/x86modb32.js
+ - /modules/pcjs/lib/x86modw32.js
+ - /modules/pcjs/lib/x86modsib.js
+ - /modules/pcjs/lib/chipset.js
+ - /modules/pcjs/lib/rom.js
+ - /modules/pcjs/lib/ram.js
+ - /modules/pcjs/lib/keyboard.js
+ - /modules/pcjs/lib/video.js
+ - /modules/pcjs/lib/serialport.js
+ - /modules/pcjs/lib/mouse.js
+ - /modules/pcjs/lib/disk.js
+ - /modules/pcjs/lib/fdc.js
+ - /modules/pcjs/lib/hdc.js
+ - /modules/pcjs/lib/debugger.js
+ - /modules/pcjs/lib/state.js
+ - /modules/pcjs/lib/computer.js
+ - /modules/shared/lib/embed.js
diff --git a/_includes/machine-engines.html b/_includes/machine-engines.html
index 3c64d4e5c..7e074d0bf 100644
--- a/_includes/machine-engines.html
+++ b/_includes/machine-engines.html
@@ -1,11 +1,27 @@
{% for machine in page.machines %}
{% capture machine_embed %}window.embed{{ machine.type | remove:'-dbg' | upcase }}{% endcapture %}
- {% if machine.config %}{% capture machine_config %}{{ machine.config }}{% endcapture %}{% else %}{% assign machine_config = "machine.xml" %}{% endif %}
- {% capture machine_template %}{{ site.baseurl }}/versions/{{ machine.type | remove:'-dbg' }}js/{{ site.pcjs_version }}/components.xsl{% endcapture %}
- {% capture machine_script %}/{{ machine.type }}.js{% endcapture %}
- {% unless machine_scripts contains machine_script %}
-
+ {% unless machine.config %}
+ {% assign machine_config = "machine.xml" %}
+ {% else %}
+ {% capture machine_config %}{{ machine.config }}{% endcapture %}
{% endunless %}
- {% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %}
-
+ {% capture machine_template %}{{ site.baseurl }}/versions/{{ machine.type | remove:'-dbg' }}js/{{ site.pcjs_version }}/components.xsl{% endcapture %}
+ {% if site.pcjs_compiled %}
+ {% capture machine_script %}{% endcapture %}
+ {% unless machine_scripts contains machine_script %}
+ {{ machine_script }}
+ {% endunless %}
+ {% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %}
+ {% else %}
+ {% if machine.type == "pc" or machine.type == "pc-dbg" %}{% assign array_scripts = site.pcjs_scripts %}{% endif %}
+ {% if machine.type == "c1p" or machine.type == "c1p-dbg" %}{% assign array_scripts = site.c1pjs_scripts %}{% endif %}
+ {% for script in array_scripts %}
+ {% capture machine_script %}{% endcapture %}
+ {% unless machine_scripts contains machine_script %}
+ {{ machine_script }}
+ {% endunless %}
+ {% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %}
+ {% endfor %}
+ {% endif %}
+
{% endfor %}
diff --git a/_includes/machine-styles.html b/_includes/machine-styles.html
index a841a2868..f9b535712 100644
--- a/_includes/machine-styles.html
+++ b/_includes/machine-styles.html
@@ -1,5 +1,9 @@
{% for machine in page.machines %}
- {% capture machine_style %}{{ site.baseurl }}/versions/{{ machine.type | remove:'-dbg' }}js/{{ site.pcjs_version }}/components.css{% endcapture %}
+ {% unless site.pcjs_compiled %}
+ {% capture machine_style %}{{ site.baseurl }}/modules/{{ machine.type | remove:'-dbg' }}js/templates/components.css{% endcapture %}
+ {% else %}
+ {% capture machine_style %}{{ site.baseurl }}/versions/{{ machine.type | remove:'-dbg' }}js/{{ site.pcjs_version }}/components.css{% endcapture %}
+ {% endunless %}
{% unless machine_styles contains machine_style %}
{% endunless %}
diff --git a/devices/c1p/machine/8kb/array/README.md b/devices/c1p/machine/8kb/array/README.md
index 14606802a..035393dda 100644
--- a/devices/c1p/machine/8kb/array/README.md
+++ b/devices/c1p/machine/8kb/array/README.md
@@ -1,12 +1,13 @@
+---
+layout: page
+title: OSI Challenger 1P (8Kb) "Server Array"
+permalink: /devices/c1p/machine/8kb/array/
+machines:
+ - type: c1p
+ id: osi1
+---
+
Challenger 1P (8Kb) "Server Array"
---
-[Machine #1](/devices/c1p/machine/8kb/small/ "C1Pjs:OSI1")
-[Machine #2](/devices/c1p/machine/8kb/small/ "C1Pjs:OSI2")
-[Machine #3](/devices/c1p/machine/8kb/small/ "C1Pjs:OSI3")
-[Machine #4](/devices/c1p/machine/8kb/small/ "C1Pjs:OSI4")
-[Machine #5](/devices/c1p/machine/8kb/small/ "C1Pjs:OSI5")
-[Machine #6](/devices/c1p/machine/8kb/small/ "C1Pjs:OSI6")
-[Machine #7](/devices/c1p/machine/8kb/small/ "C1Pjs:OSI7")
-[Machine #8](/devices/c1p/machine/8kb/small/ "C1Pjs:OSI8")
-[Machine #9](/devices/c1p/machine/8kb/small/ "C1Pjs:OSI9")
+{% include machine.html id="osi1" %}