pcjs/_includes/machine-engines.html

84 lines
4.2 KiB
HTML

{% comment %}
As documented in /modules/markout/lib/markout.js, our Node web server recognizes the following machine properties
in the Front Matter of Markdown files, for compatibility with the Jekyll web server:
'id' (eg, "ibm5150")
'name' (eg, "IBM PC (Model 5150) with Monochrome Display")
'type' (eg, "pc" or "c1p")
'debugger' (eg, true)
'config' (eg, "machine.xml")
'template' (eg, "machine.xsl")
'uncompiled' (eg, true)
'parms'
And the following properties (along with any property not listed above) will be added to the 'parms' property:
'autoPower' (eg, "true")
'autoMount' (eg, {"A":{"name":"OS/2 FOOTBALL Boot Disk (v7.68.17)","path":"/disks/pc/os2/misc/football/debugger/FOOTBALL-7.68.17.json"}})
'state' (eg, "state.json")
'messages' (eg, "disk")
And all our JavaScript components expect multi-word property names to use camelCase, so that conversion happens both
here and in markout.js. Examples include 'autopower' ('autoPower') and 'automount' ('autoMount').
{% endcomment %}
{% for machine in page.machines %}
{% capture machine_type %}{{ machine.type | remove:'-dbg' }}{% endcapture %}
{% if machine.debugger %}
{% capture machine_file %}{{ machine_type }}-dbg{% endcapture %}
{% else %}
{% capture machine_file %}{{ machine.type }}{% endcapture %}
{% endif %}
{% capture machine_embed %}embed{{ machine_type | upcase }}{% endcapture %}
{% if machine.automount != nil %}
{% capture machine_autoMount %}{{ machine.automount|jsonify }}{% endcapture %}
{% else %}
{% capture machine_autoMount %}{{ machine.autoMount|jsonify }}{% endcapture %}
{% endif %}
{% if machine.autopower != nil %}
{% capture machine_autoPower %}{{ machine.autopower }}{% endcapture %}
{% elsif machine.autoPower != nil %}
{% capture machine_autoPower %}{{ machine.autoPower }}{% endcapture %}
{% else %}
{% assign machine_autoPower = "true" %}
{% endif %}
{% unless machine.config %}
{% assign machine_config = "machine.xml" %}
{% else %}
{% assign machine_config = machine.config %}
{% endunless %}
{% unless machine.template %}
{% assign machine_template = '' %}
{% else %}
{% assign machine_template = machine.template %}
{% endunless %}
{% capture machine_parms %}{{ site.left_brace }}autoPower:{{ machine_autoPower }},state:"{{ machine.state }}",autoMount:{{ machine_autoMount }},messages:"{{ machine.messages }}"{{ site.right_brace }}{% endcapture %}
{% if site.pcjs.compiled == true and machine.uncompiled != true %}
{% capture machine_script %}<script type="text/javascript" src="{{ site.baseurl }}/versions/{{ machine_type }}js/{{ site.pcjs.version }}/{{ machine_file }}.js"></script>{% endcapture %}
{% unless machine_scripts contains machine_script %}
{{ machine_script }}
{% endunless %}
{% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %}
{% if machine_template == '' %}
{% capture machine_template %}{{ site.baseurl }}/versions/{{ machine_type }}js/{{ site.pcjs.version }}/components.xsl{% endcapture %}
{% endif %}
{% else %}
{% if machine_type == "pc" %}{% assign array_scripts = site.pcjs.pc_scripts %}{% endif %}
{% if machine_type == "c1p" %}{% assign array_scripts = site.pcjs.c1p_scripts %}{% endif %}
{% for script in array_scripts %}
{% capture machine_script %}<script type="text/javascript" src="{{ site.baseurl }}{{ script }}"></script>{% endcapture %}
{% unless machine_scripts contains machine_script %}
{{ machine_script }}
{% endunless %}
{% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %}
{% endfor %}
{% if machine_template == '' %}
{% capture machine_template %}{{ site.baseurl }}/modules/{{ machine_type }}js/templates/components.xsl{% endcapture %}
{% endif %}
{% endif %}
<script type="text/javascript">{{ machine_embed }}('{{ machine.id }}','{{ machine_config }}','{{ machine_template }}','{{ machine_parms }}');</script>
{% if page.build %}
<script type="text/javascript" src="{{ site.baseurl }}/modules/build/lib/build.js"></script>
<script type="text/javascript">buildPC("{{ page.build }}");</script>
{% endif %}
{% endfor %}