{% comment %} As discussed in /modules/markout/lib/markout.js, our Node web server recognizes the following machine properties in the Front Matter of our Markdown documents, for compatibility with the Jekyll web server: 'id' (eg, "ibm5150") 'name' (eg, "IBM PC (Model 5150) with Monochrome Display") 'type' (eg, "c1p", "pcx86", "pc8080", "pdp10", "pdp11") 'debugger' (default is false) 'config' (default is "machine.xml") 'template' (default is "machine.xsl") 'debug' (default is false; true enables asserts and is very slow) 'uncompiled' (default is false; true is useful for debugging but slow) 'parms' (stringified object that collects additional machine properties listed below) Note that if you want BACKTRACK support enabled in a machine, both 'debugger' and 'uncompiled' must be true. Also note that while multiple machines ARE supported on a single page, there are some limitations; for example, loading two or more machines of the same 'type' but with different 'debug', 'uncompiled', or 'debugger' settings may not work as desired. The following optional machine properties will be added to the 'parms' property: 'autoMount' (eg, {"A":{"name":"OS/2 FOOTBALL (v7.68.17)","path":"/disks/pc/os2/misc/football/FOOTBALL-76817.json"}}) 'autoPower' (eg, true) 'autoStart' (eg, true) 'drives' (eg, '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pc/fixed/68mb/win95.json"}]') 'resume' (eg, "1") 'state' (eg, "state.json") 'commands' (debugger commands, if any) 'messages' (eg, "fault") 'connection' (eg, "serialPort->vt100a.serialPort") Finally, all our JavaScript components expect multi-word property names to use camelCase, so we automatically convert any lower-case forms to camelCase, both here and in markout.js and components.xsl, in case we've gotten sloppy in any of our Markdown or XML documents. Examples: 'automount' becomes 'autoMount', 'autopower' becomes 'autoPower', etc. {% endcomment %} {% for machine in page.machines %} {% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %} {% if machine_type == "c1p" %} {% assign machine_app = "c1pjs" %} {% elsif machine_type == "pdp10" or machine_type == "pdp11" %} {% assign machine_app = "pdpjs" %} {% else %} {% capture machine_app %}{{ machine_type }}{% endcapture %} {% endif %} {% if machine.debugger %} {% capture machine_file %}{{ machine_type }}-dbg{% endcapture %} {% assign machine_debugger = true %} {% else %} {% capture machine_file %}{{ machine.type }}{% endcapture %} {% if machine.type != machine_type %} {% assign machine_debugger = true %} {% else %} {% assign machine_debugger = false %} {% endif %} {% endif %} {% capture machine_embed %}embed{{ machine_type | upcase | replace:"X86","x86" }}{% endcapture %} {% if machine.automount != nil %} {% if machine.automount == "" %} {% assign machine_autoMount = "{}" %} {% else %} {% capture machine_autoMount %}{{ machine.automount|jsonify }}{% endcapture %} {% endif %} {% else %} {% if machine.autoMount == "" %} {% assign machine_autoMount = "{}" %} {% else %} {% capture machine_autoMount %}{{ machine.autoMount|jsonify }}{% endcapture %} {% endif %} {% endif %} {% if machine.autopower != nil %} {% capture machine_autoPower %},autoPower:{{ machine.autopower }}{% endcapture %} {% elsif machine.autoPower != nil %} {% capture machine_autoPower %},autoPower:{{ machine.autoPower }}{% endcapture %} {% else %} {% assign machine_autoPower = "" %} {% endif %} {% if machine.autostart != nil %} {% capture machine_autoStart %},autoStart:{{ machine.autostart }}{% endcapture %} {% elsif machine.autoStart != nil %} {% capture machine_autoStart %},autoStart:{{ machine.autoStart }}{% endcapture %} {% else %} {% assign machine_autoStart = "" %} {% endif %} {% unless machine.config %} {% assign machine_config = "machine.xml" %} {% else %} {% assign machine_config = machine.config %} {% endunless %} {% if machine.drives != nil %} {% if machine.drives == "" %} {% assign machine_drives = ",drives:[]" %} {% else %} {% capture machine_drives %},drives:{{ machine.drives }}{% endcapture %} {% endif %} {% else %} {% assign machine_drives = "" %} {% endif %} {% unless machine.template %} {% assign machine_template = "" %} {% else %} {% assign machine_template = machine.template %} {% endunless %} {% capture machine_parms %}{{ site.left_brace }}autoMount:{{ machine_autoMount }}{{ machine_autoPower }}{{ machine_autoStart }}{{ machine_drives }},resume:"{{ machine.resume }}",state:"{{ machine.state }}",commands:"{{ machine.commands }}",messages:"{{ machine.messages }}",connection:"{{ machine.connection }}"{{ site.right_brace }}{% endcapture %} {% if site.pcjs.compiled == true and machine.uncompiled != true %} {% capture machine_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_app }}/{{ site.pcjs.version }}/components.xsl{% endcapture %} {% endif %} {% else %} {% if machine_type == "c1p" %}{% assign array_scripts = site.pcjs.c1p_scripts %}{% endif %} {% if machine_type == "pcx86" %}{% assign array_scripts = site.pcjs.pcx86_scripts %}{% endif %} {% if machine_type == "pc8080" %}{% assign array_scripts = site.pcjs.pc8080_scripts %}{% endif %} {% if machine_type == "pdp10" %}{% assign array_scripts = site.pcjs.pdp10_scripts %}{% endif %} {% if machine_type == "pdp11" %}{% assign array_scripts = site.pcjs.pdp11_scripts %}{% endif %} {% for script in array_scripts %} {% if script != "/modules/shared/lib/nodebug.js" or machine.debug != true and site.pcjs.debug != true %} {% capture machine_script %}{% endcapture %} {% unless machine_scripts contains machine_script %} {{ machine_script }} {% if script contains "shared/lib/defines.js" %} {% if site.pcjs.private %} {{ machine_script | replace:"defines.js","private.js" }} {% endif %} {% endif %} {% if script contains "js/lib/defines.js" %} {% if machine_debugger != true %} {{ machine_script | replace:"defines.js","nodebugger.js" }} {% endif %} {% endif %} {% endunless %} {% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %} {% endif %} {% endfor %} {% if machine_template == "" %} {% if machine_app != "c1pjs" %} {% capture machine_template %}{{ site.baseurl }}/modules/shared/templates/components.xsl{% endcapture %} {% else %} {% capture machine_template %}{{ site.baseurl }}/modules/{{ machine_app }}/templates/components.xsl{% endcapture %} {% endif %} {% endif %} {% endif %} {% if machine.sticky == "top" %} {% endif %} {% if page.build %} {% endif %} {% endfor %}