{
  "@doc": {
    "overview": [
      "The top-level keys in machines.json are unique machine types; they are are used to form the names of the",
      "compiled js packages; exceptions include any type beginning with an address sign (eg, '@doc') and 'shared',",
      "which contains properties common to multiple machines.",
      "",
      "'name' defines the external (displayed) name of the machine (eg, 'PCx86').  For machines that use XSL",
      "template files, it is also propagated to the APPNAME XSL variable.",
      "",
      "'folder' defines the name of the 'machines' source code folder as well as the prefix for the machine's CSS classes;",
      "if not defined, the machine type is used.  For machines that use XSL template files, the value is propagated to",
      "the APPCLASS XSL variable.",
      "",
      "'copy' is an optional property used by new machines to refer to another machine configuration that will be used",
      "for all other machine properties; it saves a bit of repetition for machines that are very similar.",
      "",
      "'modules' is a list of all the JavaScript files that comprise the machine; PCjs 'gulp' tasks will concatenate and",
      "compile the files in the order listed, and if the web server is configured to load uncompiled files, they will",
      "be loaded on their respective web pages in the order listed.",
      "",
      "WARNING: Be sure to update APPVERSION in /machines/pcx86/xsl/components.xsl whenever changing the pcx86 version below."
    ]
  },
  "pcx86": {
    "name": "PCx86",
    "version": "2.24",
    "defines": [
      "APPVERSION",
      "DEBUGGER",
      "SITEURL",
      "BACKTRACK",
      "I386"
    ],
    "factory": "embedPCx86",
    "modules": [
      "./machines/modules/v2/defines.js",
      "./machines/modules/v2/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v2/databuffer.js",
      "./machines/modules/v2/diskapi.js",
      "./machines/modules/v2/dumpapi.js",
      "./machines/modules/v2/reportapi.js",
      "./machines/modules/v2/userapi.js",
      "./machines/modules/v2/keys.js",
      "./machines/modules/v2/pcfs.js",
      "./machines/modules/v2/strlib.js",
      "./machines/modules/v2/usrlib.js",
      "./machines/modules/v2/weblib.js",
      "./machines/modules/v2/component.js",
      "./machines/modules/v2/jsonlib.js",
      "./machines/pcx86/modules/v2/defines.js",
      "./machines/pcx86/modules/v2/message.js",
      "./machines/pcx86/modules/v2/x86.js",
      "./machines/pcx86/modules/v2/charset.js",
      "./machines/pcx86/modules/v2/driveinfo.js",
      "./machines/pcx86/modules/v2/errors.js",
      "./machines/pcx86/modules/v2/interrupts.js",
      "./machines/pcx86/modules/v2/panel.js",
      "./machines/pcx86/modules/v2/bus.js",
      "./machines/pcx86/modules/v2/memory.js",
      "./machines/pcx86/modules/v2/cpu.js",
      "./machines/pcx86/modules/v2/cpux86.js",
      "./machines/pcx86/modules/v2/fpux86.js",
      "./machines/pcx86/modules/v2/segx86.js",
      "./machines/pcx86/modules/v2/x86func.js",
      "./machines/pcx86/modules/v2/x86help.js",
      "./machines/pcx86/modules/v2/x86mods.js",
      "./machines/pcx86/modules/v2/x86ops.js",
      "./machines/pcx86/modules/v2/x86op0f.js",
      "./machines/pcx86/modules/v2/chipset.js",
      "./machines/pcx86/modules/v2/rom.js",
      "./machines/pcx86/modules/v2/ram.js",
      "./machines/pcx86/modules/v2/keyboard.js",
      "./machines/pcx86/modules/v2/video.js",
      "./machines/pcx86/modules/v2/parallel.js",
      "./machines/pcx86/modules/v2/serial.js",
      "./machines/pcx86/modules/v2/testctl.js",
      "./machines/pcx86/modules/v2/testmon.js",
      "./machines/pcx86/modules/v2/mouse.js",
      "./machines/pcx86/modules/v2/disk.js",
      "./machines/pcx86/modules/v2/fdc.js",
      "./machines/pcx86/modules/v2/hdc.js",
      "./machines/modules/v2/dbglib.js",
      "./machines/pcx86/modules/v2/debugger.js",
      "./machines/pcx86/modules/v2/computer.js",
      "./machines/modules/v2/state.js",
      "./machines/modules/v2/embed.js",
      "./machines/modules/v2/save.js"
    ],
    "styles": [
      "./machines/pcx86/xsl/components.css"
    ],
    "css": [
      "./machines/pcx86/xsl/common.css",
      "./machines/pcx86/xsl/components.css"
    ],
    "xsl": [
      "./machines/pcx86/xsl/common.xsl",
      "./machines/pcx86/xsl/components.xsl",
      "./machines/pcx86/xsl/machine.xsl"
    ]
  },
  "pcx86v3": {
    "name": "PCx86",
    "version": "3.00",
    "folder": "pcx86",
    "defines": [
      "FACTORY",
      "VERSION"
    ],
    "factory": "PCx86v3",
    "modules": [
      "./machines/modules/v3/defines.js",
      "./machines/modules/v3/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v3/stdlib.js",
      "./machines/modules/v3/stdio.js",
      "./machines/modules/v3/webio.js",
      "./machines/modules/v3/device.js",
      "./machines/modules/v3/input.js",
      "./machines/modules/v3/led.js",
      "./machines/modules/v3/monitor.js",
      "./machines/modules/v3/time.js",
      "./machines/modules/v3/bus.js",
      "./machines/modules/v3/memory.js",
      "./machines/modules/v3/ram.js",
      "./machines/modules/v3/rom.js",
      "./machines/modules/v3/cpu.js",
      "./machines/modules/v3/debugger.js",
      "./machines/pcx86/modules/v3/cpux86.js",
      "./machines/pcx86/modules/v3/dbgx86.js",
      "./machines/pcx86/modules/v3/video.js",
      "./machines/modules/v3/machine.js"
    ]
  },
  "c1p": {
    "name": "C1Pjs",
    "version": "2.21",
    "folder": "osi/c1p",
    "defines": [
      "APPVERSION",
      "DEBUGGER",
      "SITEURL"
    ],
    "factory": "embedC1P",
    "modules": [
      "./machines/modules/v2/defines.js",
      "./machines/modules/v2/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v2/dumpapi.js",
      "./machines/modules/v2/reportapi.js",
      "./machines/modules/v2/pcfs.js",
      "./machines/modules/v2/strlib.js",
      "./machines/modules/v2/usrlib.js",
      "./machines/modules/v2/weblib.js",
      "./machines/modules/v2/component.js",
      "./machines/osi/c1p/modules/v2/defines.js",
      "./machines/osi/c1p/modules/v2/panel.js",
      "./machines/osi/c1p/modules/v2/cpu.js",
      "./machines/osi/c1p/modules/v2/rom.js",
      "./machines/osi/c1p/modules/v2/ram.js",
      "./machines/osi/c1p/modules/v2/keyboard.js",
      "./machines/osi/c1p/modules/v2/video.js",
      "./machines/osi/c1p/modules/v2/serial.js",
      "./machines/osi/c1p/modules/v2/disk.js",
      "./machines/osi/c1p/modules/v2/debugger.js",
      "./machines/osi/c1p/modules/v2/computer.js",
      "./machines/modules/v2/embed.js"
    ],
    "styles": [
      "./machines/osi/c1p/xsl/components.css"
    ],
    "css": [
      "./machines/osi/c1p/xsl/common.css",
      "./machines/osi/c1p/xsl/components.css"
    ],
    "xsl": [
      "./machines/osi/c1p/xsl/common.xsl",
      "./machines/osi/c1p/xsl/components.xsl",
      "./machines/osi/c1p/xsl/machine.xsl"
    ]
  },
  "pcx80": {
    "name": "PCx80",
    "version": "2.21",
    "defines": [
      "APPVERSION",
      "DEBUGGER",
      "SITEURL"
    ],
    "factory": "embedPCx80",
    "modules": [
      "./machines/modules/v2/defines.js",
      "./machines/modules/v2/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v2/dumpapi.js",
      "./machines/modules/v2/reportapi.js",
      "./machines/modules/v2/userapi.js",
      "./machines/modules/v2/keys.js",
      "./machines/modules/v2/pcfs.js",
      "./machines/modules/v2/strlib.js",
      "./machines/modules/v2/usrlib.js",
      "./machines/modules/v2/weblib.js",
      "./machines/modules/v2/component.js",
      "./machines/pcx80/modules/v2/defines.js",
      "./machines/pcx80/modules/v2/message.js",
      "./machines/pcx80/modules/v2/cpudef.js",
      "./machines/pcx80/modules/v2/panel.js",
      "./machines/pcx80/modules/v2/bus.js",
      "./machines/pcx80/modules/v2/memory.js",
      "./machines/pcx80/modules/v2/cpu.js",
      "./machines/pcx80/modules/v2/cpustate.js",
      "./machines/pcx80/modules/v2/cpuops.js",
      "./machines/pcx80/modules/v2/chipset.js",
      "./machines/pcx80/modules/v2/rom.js",
      "./machines/pcx80/modules/v2/ram.js",
      "./machines/pcx80/modules/v2/keyboard.js",
      "./machines/pcx80/modules/v2/video.js",
      "./machines/pcx80/modules/v2/serial.js",
      "./machines/modules/v2/dbglib.js",
      "./machines/pcx80/modules/v2/debugger.js",
      "./machines/pcx80/modules/v2/computer.js",
      "./machines/modules/v2/state.js",
      "./machines/modules/v2/embed.js"
    ],
    "styles": [
      "./machines/pcx80/xsl/components.css"
    ],
    "css": [
      "./machines/pcx80/xsl/common.css",
      "./machines/pcx80/xsl/components.css"
    ],
    "xsl": [
      "./machines/pcx80/xsl/common.xsl",
      "./machines/pcx80/xsl/components.xsl",
      "./machines/pcx80/xsl/machine.xsl"
    ]
  },
  "pdp10": {
    "name": "PDPjs",
    "version": "2.21",
    "folder": "dec/pdp10",
    "defines": [
      "APPVERSION",
      "DEBUGGER",
      "SITEURL"
    ],
    "factory": "embedPDP10",
    "modules": [
      "./machines/modules/v2/defines.js",
      "./machines/modules/v2/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v2/dumpapi.js",
      "./machines/modules/v2/reportapi.js",
      "./machines/modules/v2/userapi.js",
      "./machines/modules/v2/keys.js",
      "./machines/modules/v2/pcfs.js",
      "./machines/modules/v2/strlib.js",
      "./machines/modules/v2/usrlib.js",
      "./machines/modules/v2/weblib.js",
      "./machines/modules/v2/component.js",
      "./machines/modules/v2/dbglib.js",
      "./machines/dec/pdp10/modules/v2/defines.js",
      "./machines/dec/pdp10/modules/v2/message.js",
      "./machines/dec/pdp10/modules/v2/panel.js",
      "./machines/dec/pdp10/modules/v2/bus.js",
      "./machines/dec/pdp10/modules/v2/device.js",
      "./machines/dec/pdp10/modules/v2/memory.js",
      "./machines/dec/pdp10/modules/v2/cpu.js",
      "./machines/dec/pdp10/modules/v2/cpustate.js",
      "./machines/dec/pdp10/modules/v2/cpuops.js",
      "./machines/dec/pdp10/modules/v2/debugger.js",
      "./machines/dec/pdp10/modules/v2/rom.js",
      "./machines/dec/pdp10/modules/v2/ram.js",
      "./machines/dec/pdp10/modules/v2/serial.js",
      "./machines/dec/pdp10/modules/v2/macro10.js",
      "./machines/dec/pdp10/modules/v2/computer.js",
      "./machines/modules/v2/state.js",
      "./machines/modules/v2/embed.js"
    ],
    "styles": [
      "./machines/dec/pdp10/xsl/components.css"
    ],
    "css": [
      "./machines/dec/pdp10/xsl/common.css",
      "./machines/dec/pdp10/xsl/components.css"
    ],
    "xsl": [
      "./machines/dec/pdp10/xsl/common.xsl",
      "./machines/dec/pdp10/xsl/components.xsl",
      "./machines/dec/pdp10/xsl/machine.xsl"
    ]
  },
  "pdp11": {
    "name": "PDPjs",
    "version": "2.21",
    "folder": "dec/pdp11",
    "defines": [
      "APPVERSION",
      "DEBUGGER",
      "SITEURL"
    ],
    "factory": "embedPDP11",
    "modules": [
      "./machines/modules/v2/defines.js",
      "./machines/modules/v2/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v2/diskapi.js",
      "./machines/modules/v2/dumpapi.js",
      "./machines/modules/v2/reportapi.js",
      "./machines/modules/v2/userapi.js",
      "./machines/modules/v2/keys.js",
      "./machines/modules/v2/pcfs.js",
      "./machines/modules/v2/strlib.js",
      "./machines/modules/v2/usrlib.js",
      "./machines/modules/v2/weblib.js",
      "./machines/modules/v2/component.js",
      "./machines/dec/pdp11/modules/v2/defines.js",
      "./machines/dec/pdp11/modules/v2/message.js",
      "./machines/dec/pdp11/modules/v2/panel.js",
      "./machines/dec/pdp11/modules/v2/bus.js",
      "./machines/dec/pdp11/modules/v2/device.js",
      "./machines/dec/pdp11/modules/v2/memory.js",
      "./machines/dec/pdp11/modules/v2/cpu.js",
      "./machines/dec/pdp11/modules/v2/cpustate.js",
      "./machines/dec/pdp11/modules/v2/cpuops.js",
      "./machines/dec/pdp11/modules/v2/rom.js",
      "./machines/dec/pdp11/modules/v2/ram.js",
      "./machines/dec/pdp11/modules/v2/keyboard.js",
      "./machines/dec/pdp11/modules/v2/serial.js",
      "./machines/dec/pdp11/modules/v2/pc11.js",
      "./machines/dec/pdp11/modules/v2/disk.js",
      "./machines/dec/pdp11/modules/v2/drive.js",
      "./machines/dec/pdp11/modules/v2/rk11.js",
      "./machines/dec/pdp11/modules/v2/rl11.js",
      "./machines/dec/pdp11/modules/v2/rx11.js",
      "./machines/modules/v2/dbglib.js",
      "./machines/dec/pdp11/modules/v2/debugger.js",
      "./machines/dec/pdp11/modules/v2/computer.js",
      "./machines/modules/v2/state.js",
      "./machines/modules/v2/embed.js"
    ],
    "styles": [
      "./machines/dec/pdp11/xsl/components.css"
    ],
    "css": [
      "./machines/dec/pdp11/xsl/common.css",
      "./machines/dec/pdp11/xsl/components.css"
    ],
    "xsl": [
      "./machines/dec/pdp11/xsl/common.xsl",
      "./machines/dec/pdp11/xsl/components.xsl",
      "./machines/dec/pdp11/xsl/machine.xsl"
    ]
  },
  "ti57": {
    "name": "TI57",
    "version": "3.00",
    "folder": "ti/ti57",
    "defines": [
      "FACTORY",
      "VERSION"
    ],
    "factory": "TMS1500",
    "modules": [
      "./machines/modules/v3/defines.js",
      "./machines/modules/v3/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v3/stdlib.js",
      "./machines/modules/v3/stdio.js",
      "./machines/modules/v3/webio.js",
      "./machines/modules/v3/device.js",
      "./machines/modules/v3/input.js",
      "./machines/modules/v3/led.js",
      "./machines/modules/v3/time.js",
      "./machines/modules/v3/bus.js",
      "./machines/modules/v3/memory.js",
      "./machines/modules/v3/rom.js",
      "./machines/modules/v3/cpu.js",
      "./machines/ti/modules/v3/cpu1500.js",
      "./machines/modules/v3/machine.js"
    ]
  },
  "ti55": {
    "name": "TI55",
    "version": "3.00",
    "folder": "ti/ti55",
    "copy": "ti57"
  },
  "ti42": {
    "name": "TI42",
    "version": "3.00",
    "folder": "ti/ti42",
    "copy": "ti57"
  },
  "invaders": {
    "name": "Space Invaders",
    "version": "3.00",
    "folder": "arcade/invaders",
    "defines": [
      "FACTORY",
      "VERSION"
    ],
    "factory": "Invaders",
    "modules": [
      "./machines/modules/v3/defines.js",
      "./machines/modules/v3/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v3/stdlib.js",
      "./machines/modules/v3/stdio.js",
      "./machines/modules/v3/webio.js",
      "./machines/modules/v3/device.js",
      "./machines/modules/v3/input.js",
      "./machines/modules/v3/led.js",
      "./machines/modules/v3/monitor.js",
      "./machines/modules/v3/time.js",
      "./machines/modules/v3/bus.js",
      "./machines/modules/v3/memory.js",
      "./machines/modules/v3/ports.js",
      "./machines/modules/v3/ram.js",
      "./machines/modules/v3/rom.js",
      "./machines/modules/v3/cpu.js",
      "./machines/modules/v3/debugger.js",
      "./machines/pcx80/modules/v3/cpux80.js",
      "./machines/pcx80/modules/v3/dbgx80.js",
      "./machines/arcade/invaders/modules/v3/ports.js",
      "./machines/arcade/invaders/modules/v3/video.js",
      "./machines/modules/v3/machine.js"
    ]
  },
  "led": {
    "name": "LED",
    "version": "3.00",
    "defines": [
      "FACTORY",
      "VERSION"
    ],
    "factory": "LEDs",
    "modules": [
      "./machines/modules/v3/defines.js",
      "./machines/modules/v3/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v3/stdlib.js",
      "./machines/modules/v3/stdio.js",
      "./machines/modules/v3/webio.js",
      "./machines/modules/v3/device.js",
      "./machines/modules/v3/bus.js",
      "./machines/modules/v3/memory.js",
      "./machines/modules/v3/rom.js",
      "./machines/modules/v3/input.js",
      "./machines/modules/v3/led.js",
      "./machines/modules/v3/time.js",
      "./machines/modules/v3/cpu.js",
      "./machines/modules/v3/ledctrl.js",
      "./machines/modules/v3/machine.js"
    ]
  },
  "palm-pilot": {
    "name": "Palm Pilot",
    "version": "3.00",
    "folder": "palm/pilot",
    "defines": [
      "FACTORY",
      "VERSION"
    ],
    "factory": "Pilot",
    "modules": [
      "./machines/modules/v3/defines.js",
      "./machines/modules/v3/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v3/stdlib.js",
      "./machines/modules/v3/stdio.js",
      "./machines/modules/v3/webio.js",
      "./machines/modules/v3/device.js",
      "./machines/modules/v3/input.js",
      "./machines/modules/v3/led.js",
      "./machines/modules/v3/monitor.js",
      "./machines/modules/v3/time.js",
      "./machines/modules/v3/bus.js",
      "./machines/modules/v3/memory.js",
      "./machines/modules/v3/ram.js",
      "./machines/modules/v3/rom.js",
      "./machines/modules/v3/cpu.js",
      "./machines/modules/v3/debugger.js",
      "./machines/motorola/68k/modules/v3/cpu68k.js",
      "./machines/motorola/68k/modules/v3/dbg68k.js",
      "./machines/motorola/68k/modules/v3/eamodes.js",
      "./machines/palm/pilot/modules/v3/ioregs.js",
      "./machines/palm/pilot/modules/v3/video.js",
      "./machines/modules/v3/machine.js"
    ]
  },
  "vt100": {
    "name": "VT100",
    "version": "3.00",
    "folder": "dec/vt100",
    "defines": [
      "FACTORY",
      "VERSION"
    ],
    "factory": "VT100",
    "modules": [
      "./machines/modules/v3/defines.js",
      "./machines/modules/v3/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v3/stdlib.js",
      "./machines/modules/v3/stdio.js",
      "./machines/modules/v3/webio.js",
      "./machines/modules/v3/device.js",
      "./machines/modules/v3/input.js",
      "./machines/modules/v3/led.js",
      "./machines/modules/v3/monitor.js",
      "./machines/modules/v3/time.js",
      "./machines/modules/v3/bus.js",
      "./machines/modules/v3/memory.js",
      "./machines/modules/v3/ports.js",
      "./machines/modules/v3/ram.js",
      "./machines/modules/v3/rom.js",
      "./machines/modules/v3/cpu.js",
      "./machines/modules/v3/debugger.js",
      "./machines/pcx80/modules/v3/cpux80.js",
      "./machines/pcx80/modules/v3/dbgx80.js",
      "./machines/dec/vt100/modules/v3/chips.js",
      "./machines/dec/vt100/modules/v3/keyboard.js",
      "./machines/dec/vt100/modules/v3/serial.js",
      "./machines/dec/vt100/modules/v3/video.js",
      "./machines/modules/v3/machine.js"
    ]
  },
  "pdp11v3": {
    "name": "PDP-11",
    "version": "3.00",
    "folder": "dec/pdp11",
    "defines": [
      "FACTORY",
      "VERSION"
    ],
    "factory": "PDP11v3",
    "modules": [
      "./machines/modules/v3/defines.js",
      "./machines/modules/v3/message.js",
      "./machines/modules/v2/format.js",
      "./machines/modules/v3/stdlib.js",
      "./machines/modules/v3/stdio.js",
      "./machines/modules/v3/webio.js",
      "./machines/modules/v3/device.js",
      "./machines/modules/v3/input.js",
      "./machines/modules/v3/led.js",
      "./machines/modules/v3/time.js",
      "./machines/modules/v3/bus.js",
      "./machines/modules/v3/memory.js",
      "./machines/modules/v3/ports.js",
      "./machines/modules/v3/ram.js",
      "./machines/modules/v3/rom.js",
      "./machines/modules/v3/cpu.js",
      "./machines/modules/v3/debugger.js",
      "./machines/dec/pdp11/modules/v3/pdp11ops.js",
      "./machines/dec/pdp11/modules/v3/pdp11.js",
      "./machines/dec/pdp11/modules/v3/pdp11dbg.js",
      "./machines/dec/pdp11/modules/v3/iopage.js",
      "./machines/dec/pdp11/modules/v3/dl11.js",
      "./machines/dec/pdp11/modules/v3/pc11.js",
      "./machines/modules/v3/machine.js"
    ]
  },
  "shared": {
    "version": "2.21",
    "externs": [
      "./machines/modules/v2/externs.js"
    ]
  }
}
