Emulation Environments

An emulation environment describes a complete emulation setup:

../../_images/emulation-environment.png

The current EaaS implementation of an emulation environment has the following structure:

<emulationEnvironment xmlns="http://bwfla.bwl.de/common/datatypes">

    <!-- Header -->

    <!-- UI Options-->

    <!-- Drive Definitions -->

    <!-- Bindings -->

    <!-- Native Config -->

</emulationEnvironment>

Note

This schema is not stable and may be updated. With introduction of version tags the EaaS framework may provide compat layers and/or automated conversion.

Header Section

The emulation environment’s header components define fields common to all emulators:

  • id (string, REQUIRED) : unique identifier of the environment
  • description: descriptive information
    • title (string, REQUIRED)
    • os (string, REQUIRED)
  • arch (enumeration, resource spec): currently supported only be Qemu: i386, ppc
  • emulator (string, REQUIRED): a EaaS EmulatorBean implementation. An emulator bean integrates a specific emulator into the framework.
    • Supported beans:
      • BasiliskII (example)
      • Beebem (example)
      • DosBox (examples: [Doom](./examples/doom.env))
      • Hatari (example: [Atari](.examples/hatari_tOS206us.env))
      • Kegs (example)
      • PceAtari (example)
      • PceIbmPc (example)
      • PceMacPlus (example)
      • Qemu (examples: [Dos 6.2](./examples/dos620_cdrom.env), [Win 3.11](./examples/win311.env))
      • SheepShaver (examples: [MacOS9](./examples/macos9.env))
      • ViceC128 (example)
      • ViceC64 (example)

Example:

<emulationEnvironment xmlns="http://bwfla.bwl.de/common/datatypes">
    <id>2010</id>
    <description>
        <title>Microsoft DOS 6.20 (CD-ROM)</title>
        <os>dos</os>
    </description>
    <arch>i386</arch>
    <emulator bean="Qemu" />

    <!-- ... -->
</emulationEnvironment>

UI Options

The UI Options allow to configure presentation features.

  • HTML5: HTML5 presentation options
    • pointer_lock (boolean): Enables the HTML5 pointer lock (more information here. Useful if the emulator or the operating system do not support absolute mouse positions (e.g. Windows 3.11).
    • clientKbdLayout (String): the user’s keyboard layout.

Example:

<ui_options>
  <html5>
     <pointer_lock>false</pointer_lock>
  </html5>
  <input>
     <clientKbdLayout>de</clientKbdLayout>
  </input>
</ui_options>

Drive Definitions

Drive definitions define usable drives of for an emulation environment. Drives may have empty data tags (e.g. to define an empty CDROM drive to be bound by a workflow) or predefined data sources (c.f. the Bindings section).

  • data (string, OPTIONAL): URL to a data source. Supported URL types are: http, nbd, binding, file.
  • type (Enumeration): Drive types: cdrom, floppy, disk, iso
  • iface, bus, unit: Emulator / bean specific, sees examples.

Example, defining three drives (floppy, cdrom and disk). The floppy and cdrom drive are unbound yet:

<drive>
  <data></data>
  <iface>ide</iface>
  <bus>0</bus>
  <unit>1</unit>
  <type>cdrom</type>
  <boot>false</boot>
  <filesystem>ISO</filesystem>
 </drive>

 <drive>
  <data></data>
  <iface>floppy</iface>
  <bus>0</bus>
  <unit>0</unit>
  <type>floppy</type>
  <boot>false</boot>
  <filesystem>fat12</filesystem>
 </drive>
 
 <drive>
  <data>binding://main_hdd</data>
  <iface>ide</iface>
  <bus>0</bus>
  <unit>0</unit>
  <type>disk</type>
  <boot>true</boot>
  <plugged>true</plugged>
 </drive>

Bindings

Bindings describes/defines data sources.

  • id (string, REQUIRED): ID of the binding to be referenced within an environment.
  • url (string, REQUIRED): URL to a data source.
  • access (Enumeration): copy or cow (copy on write).

Example, creates a new “main_hdd” binding to be used with a drive. The url references to an image file stored in the configured image-archive:

<binding id="main_hdd">
 <url>imagearchive:qemu-i386-DOS_6.20_CDROM.raw</url>
 <access>cow</access>
</binding>

Native Config

The native config allows to pass emulator specific options to the emulator. See SheepShaver examples.