Skip to content

Configuration

gdwnldsKSC edited this page Aug 9, 2026 · 3 revisions

Documentation to come.

Configuration file/parameter reference:

// Specifying values
//
// Numeric values can be specified as a number ("500"), as a number with a
// suffix ("100K" = 102400), or as a fancy combination ("2G512M" = 2.5 G).
//
// Boolean values can be specified as "true"/"false", "yes"/"no", or "1"/"0".
//
// String-constants are best specified in double quotes ("string"). If the
// string needs to contain double quotes, double the double quotes.
// ("One ""word"" in this string is quoted")
//
// Comments
//
// Three comment forms are recognized: // and ; comment out the rest of the
// line (the ; form only when it is the first non-blank character on the
// line), and /* ... */ comments out a block. A ';' after a value keeps its
// usual meaning as the end of that setting.
//
// Unknown values
//
// The emulator knows which values each device class reads. Any value it
// finds in a device's section that the device does not read is ignored,
// and a warning is printed at startup so you can remove it from this file.

// GUI
//
// If you want to use an emulated graphics card, the emulator needs to interface
// with the OS'es user interface. The supported GUI is SDL (simple directmedia
// layer): gui=sdl. The emulator needs to be compiled with -DHAVE_SDL.
//
// gui=win32 is accepted for backward compatibility and now selects the SDL
// GUI as well. On systems built with X11 support, the legacy X11 GUI is
// still available (gui=X11), but it lags far behind the SDL GUI.

gui = sdl
{
  // VARIABLE: keyboard.use_mapping
  //
  // Use a keymap file to translate host keys to guest scancodes. Enable this
  // if you use a non-US keyboard layout. The default is false (US layout,
  // no translation).

  keyboard.use_mapping = false;

  // VARIABLE: keyboard.map
  //
  // The keymap file to use when keyboard.use_mapping is enabled. The default
  // is "keys.map".

  keyboard.map = "keys.map";

  // VARIABLE: mouse.speed
  //
  // Multiplier applied to host mouse motion before it is passed to the guest.
  // Use a value below 1.0 to slow the guest pointer down (e.g. 0.5 for half
  // speed), or above 1.0 (up to 10.0) to speed it up. The default is 1.0.

  //mouse.speed = 0.5;

  // VARIABLES: mouse.invert_x and mouse.invert_y
  //
  // Reverse the direction of host mouse motion on the horizontal and/or
  // vertical axis. Enable both if the guest pointer moves opposite to your
  // mouse or trackpad in both directions. The defaults are false.

  //mouse.invert_x = true;
  //mouse.invert_y = true;

  // VARIABLE: video.linear
  //
  // Filtering used when the guest display is scaled to the window size:
  // true = linear (smooth), false = nearest neighbor (sharp pixels).
  // The default is true.

  //video.linear = true;

  // VARIABLE: video.scale_ratio
  //
  // Integer scale factor for the emulator window (1 - 8). For example, 2
  // renders the guest's 640x480 display in a 1280x960 window. The default
  // is 0, which sizes the window automatically from the OS display scale
  // (DPI) setting.

  //video.scale_ratio = 2;

  // VARIABLE: video.scale_change_enable
  //
  // Allow changing the window scale factor at runtime with the configured
  // hotkey.scale_up and hotkey.scale_down bindings. The default is false.
  // hotkey.reset_window works with or without this setting.

  //video.scale_change_enable = true;

  // VARIABLES: hotkey.*
  //
  // Host key combinations used for SDL GUI actions. Values are quoted,
  // case-insensitive combinations such as "Ctrl+F11" or "GUI+Shift+M".
  // Modifiers, if any, precede exactly one non-modifier key. Supported
  // modifiers are Ctrl, Alt, Shift and GUI; Control, Option, Command, Cmd,
  // Super, Win, Windows and Meta are accepted aliases. The key name uses SDL's
  // names, including F1-F24, PageUp, PageDown, Home, End, Insert, Delete,
  // Escape, letters and digits. PgUp, PgDn, Esc, Del and Ins are also accepted.
  // Only the listed modifiers may be held.
  // Set a binding to "none" to disable that keyboard binding. Invalid or
  // duplicate bindings are reported and the affected actions are disabled.
  //
  // mouse_capture toggles mouse capture; media opens or closes the removable
  // media selector; ctrl_alt_delete sends Ctrl+Alt+Delete to the guest;
  // reset_window restores the guest-driven window size; scale_up and
  // scale_down adjust the runtime window scale.
  //
  // Omitted values use the defaults shown below. The scale bindings take
  // effect only when video.scale_change_enable is true.

  //hotkey.mouse_capture   = "Ctrl+F10";
  //hotkey.media           = "Ctrl+F11";
  //hotkey.ctrl_alt_delete = "Ctrl+Alt+End";
  //hotkey.reset_window    = "Ctrl+Alt+Home";
  //hotkey.scale_up        = "Ctrl+PageUp";
  //hotkey.scale_down      = "Ctrl+PageDown";
}

sys0 = tsunami 
{

// VARIABLE: rom.srm
//
// Specify the filename of the original (compressed) ROM image. This file is 
// essential to the functioning of the emulator. This file an be obtained from HP 
// (it's on the firmware-update CD-ROM for Alpha ES40 systems).
//
  rom.srm = "rom\cl67srmrom.exe";

// VARIABLES: rom.flash and rom.dpr
//
// Specify the filenames of Flash and DPR ROM images. These files are not required,
// but will be created he first time the emulator runs.
// Contents of Flash and DPR ROM will be put in these files after successful 
// termination of the emulator. This allows setting SRM variables such as auto_action
// and boot_osflags. 
//
  rom.flash = "rom\flash.rom";
  rom.dpr = "rom\dpr.rom";

// VARIABLE: memory.bits
//
// Only amounts of memory that are a power of 2 are supported. This number
// determines the amount of memory, by setting the number of bits in the address
// (and thus which power of 2).
//
// 26 = 64 MB
// 27 = 128MB
// 28 = 256 MB
// 29 = 512 MB
// 30 = 1GB
// 31 = 2GB
// 32 = 4GB
// 33 = 8GB
// 34 = 16GB
// 35 = 32GB (platform maximum)
//
  memory.bits = 30;

// VARIABLE: time
//
// Override the guest clock with a fixed date (or date+time). Interpreted as
// UTC, matching the runtime ARC/SRM TOY edit path — the value you write is
// what the guest sees.
// Sets the initial TOY offset; subsequent guest writes (ARC/SRM TOY edits or
// the OS setting the clock) take precedence and overwrite the offset for the
// rest of the run. The override does not survive emulator restart, so set
// this every launch if you need a stable fake date.
// Format: "YYYY-MM-DD" or "YYYY-MM-DD HH:MM:SS"
//
//time = "2017-05-01";              // fake date only
//time = "2017-05-01 12:00:00";     // fake date + time

// VARIABLE: arc_year_compat
//
// Encode the TOY year register as offset from 1980 (instead of the standard
// 2-digit year-mod-100 used by OpenVMS, Tru64 UNIX, Linux, etc).
//
// Background: the ARC console firmware on this emulator reads the TOY year
// byte with a 1980 base — for example, value 26 means 2006, value 46 means
// 2026. OpenVMS and other OSes read the same byte with a 2000 base (with a
// pivot at year 57 for 1900s vs 2000s, see EXE$GL_TRANSITION_YEAR). The two
// conventions disagree by 20 years, so only one console can display the
// correct year at a time.
//
// Off (default): year is encoded year-mod-100. OpenVMS/Tru64/Linux see the
// correct year. ARC displays year - 20 (e.g. 2006 instead of 2026).
//
// On: year is encoded as (year - 1980). ARC displays the correct year.
// OpenVMS will see year + 20 from the BBW (e.g. 2046 instead of 2026), and
// at boot will either prompt the operator for the date, or — if SYSGEN
// TIMEPROMPTWAIT is set to 0 — silently fall back to its last saved system
// time and continue normally.
//
//arc_year_compat = true;

// VARIABLE: exit_on_pal_halt
//
// Usually when then operating system shuts down, it would transfer control
// to the PAL console code. Enabling this option will exit the emulator
// instead.
//
// exit_on_pal_halt = false;

  cpu0 = ev68cb
  {
    speed = 800M;

    // VARIABLE: palcode.vms.nohle
    //
    // Disable the high-level emulation (HLE) of the OpenVMS PALcode and run
    // the real SRM PALcode instead. Only meaningful on interpreter builds:
    // JIT builds always run the real PALcode, with or without this. Set it
    // on each CPU. The default is false (HLE enabled where available).

    //palcode.vms.nohle = true;
  }

  cpu1 = ev68cb
  {
    speed = 800M;
  }

// System Internal PCI Devices: ali, ali_ide, ali_usb
//
// The following PCI-devices are built into the system, and should
// always be at the PCI-id's they are on in this sample configuration
// file for compatibility. 

  pci0.7 = ali{
    lpt.outfile = "lpt.out";
    vga_console = true;
  }

  pci0.15 = ali_ide
  {
    // VARIABLE: dma
    //
    // Allow the guest to use (busmaster) DMA transfers on this IDE
    // controller. Set to false to force PIO-only operation. The default
    // is true.

    //dma = false;

    // sub-components: disk<x>.<y>
    //
    // Here, up to 4 IDE disks can be defined (0.0, 0.1, 1.0 and 1.1).
    //
    // All disk types (file, device, ramdisk) accept the identity values
    // model_number, serial_number and rev_number, shown in the first disk
    // below. (serial_num and rev_num are accepted as aliases.)
    //
    // file: create a disk using a file on the host filesystem as a disk image
    // CD-ROM devices are not created automatically; define one under whichever
    // IDE or SCSI controller should host it. It may omit file to start empty,
    // for example: disk1.0 = file { cdrom = true; }

    disk0.0 = file
    {
      file =          "img\disk0.img";
      serial_number = "VMS";
      rev_number    = "8.3";
      model_number  = "OpenVMS8.3";
      read_only     = false;
      cdrom         = false;

      // if the file does not exist, it will be created if autocreate_size is set
      // to the desired size of the disk.
      autocreate_size = 600M;
    }
    disk1.0 = file
    {
      file =          "img\vms83.iso";
      read_only     = true;
      cdrom         = true;
    }
    
    // device: create a disk using a physical device
    //
    // WARNING: making a physical disk device writeable here may
    // seriously jeopardize the contents of that disk.
    //
    // Windows syntax for device: \\.\CDRom0, \\.\PhysicalDrive0
    //
    // UNIX-like syntax for device: /dev/sda
    //
    // (Commented out because disk1.0 is already defined above; defining
    // the same disk twice silently replaces the earlier definition.)

    //disk1.0 = device
    //{
    //  device        = "\\.\CDRom0";
    //  read_only     = true;
    //  cdrom         = true;
    //}
    
    // ramdisk: create a disk using a portion of host RAM
    //
    // If a file value is given and the file exists, the ramdisk is sized to
    // the file and preloaded with its contents (a RAM-backed copy of a disk
    // image; changes are not written back to the file).
    disk1.1 = ramdisk
    {
      size = 10M;
      //file = "img\preload.img";
    }
  }

  pci0.19 = ali_usb {}

  pci0.17 = ali_pmu {}

// "Free" PCI Devices
//
// These can occupy pci0.1 .. pci0.4 and pci1.1 .. pci1.6
//
// AFAIK, VGA should always be on pci0.x.

  // S3 Trio64 VGA card
  //
  // rom: the VGA BIOS image to use. 
  // The default is "vgabios.bin" in the emulator's working directory.
  // Real S3 Trio64 VGA BIOS images work, GNU vgabios project also works, but
  // may not enable or support all S3 features.

  pci0.2 = s3
  {
    rom = "rom\VGABIOSFILE.bin";
  }

  // Symbios SCSI controller
  //
  // The 53c810 supports 7 disks (0.0..0.6).
  pci0.3 = sym53c810
  {
   disk0.0 = file
    {
      file =          "img\dka0.img";
      read_only     = false;
      cdrom         = false;
    }
    disk0.4 = file
    {
      file =          "img\scsi_cd.iso";
      read_only     = true;
      cdrom         = true;
    }
    disk0.5 = ramdisk 
    {
      size = 10M;
    }
  }

  // LSI 53C1020 Fusion-MPT SCSI controller
  //
  // The flash value optionally names a persistent raw 512 KiB card image.
  // If the file does not exist, ES40 creates it when possible. Omitting flash
  // leaves the card volatile, so runtime BIOS and IOC firmware changes do
  // not survive an emulator restart. Use a different backing file for every
  // emulated controller.
  //
  // The rom and firmware values are optional first-use seeds. They initialize
  // a new card image but are not reapplied when an existing flash image loads.
  // Missing or invalid seeds do not prevent the behavioral IOC from starting.
  // Use mptps.rom and it_1030.fw from a compatible LSI firmware package; do
  // not use the 53C1020A/1030T firmware with this controller model. The
  // supplied image's 1030-B0 header does not change the emulated 1020 identity.
  // The 53C1020 is not a native Alpha boot controller. SRM may identify it as
  // pka, but has no Fusion-MPT boot driver. AlphaBIOS can execute the optional,
  // unmodified x86 mptps.rom; when it installs successfully, attached disks
  // appear through the SCSIBIOS interface. Firmware-level discovery has been
  // verified, but booting an operating system from such a disk has not. Without
  // the option ROM, or under SRM, disks require guest OS Fusion-MPT support.

  //pci1.1 = lsi53c1020
  //{
  //  flash = "rom\lsi53c1020.flash";
  //  rom = "rom\mptps.rom";
  //  firmware = "rom\it_1030.fw";
  //}

  pci0.4 = dec21143 {

    // VARIABLE: type
    //
    // Selects how this NIC talks to the host network:
    //   "pcap"  (the default) - capture/inject packets on an existing host
    //           adapter via libpcap/npcap. Works on Windows and any Unix
    //           with libpcap.
    //   "tap"   - use a TAP virtual network device. Only available on
    //           Linux, FreeBSD and NetBSD. Plays more nicely with host
    //           firewalling/bridging than pcap's promiscuous capture.
    //   "vmnet" macOS only: Use the macOS vmnet framework which uses a
    //           host's network interface as a bridge to effectively place
    //           the Alpha system on the same subnet as the host.
    //
    //type = "pcap";
    //type = "tap";
    //type = "vmnet";
    
    // VARIABLE: adapter
    //
    // type = "pcap": defines the host computer's adapter to use for the
    // emulated NIC. If you're unsure of this, start the emulator without
    // this variable set, and you will be presented with a list of
    // adapters to choose from. You can enter the name indicated on this
    // line.
    //
    // Windows syntax:
    // adapter = "\Device\NPF_{F266CDC2-6BA2-43D8-8B00-1C468F737ED7}"
    //
    // Linux syntax:
    //adapter = "eth0"
    
    //adapter = "\Device\NPF_{F266CDC2-6BA2-43D8-8B00-1C468F737ED7}";

    // type = "tap": the name of the TAP device to use. On Linux this is
    // the TAP interface name, which can be created with
    // `ip tuntap add mode tap <name>; ip link set dev <name> up` and
    // possibly added to a bridge with `ip link set dev <name> master <bridge>`.
    // On FreeBSD/NetBSD this references the TAP device node, eg. /dev/tap0,
    // to be created eg. with `ifconfig tap0 create; ifconfig tap0 up` and
    // add it with `brconfig bridge0 add tap0 up`.
    //
    //adapter = "tap0";

    // type = "vmnet": the name of the host's network interface to use as the bridge
    //
    //adapter = "en0";

    // VARIABLE: mac
    //
    // Defines the ethernet MAC address to be used by the virtual nic.
    // The variable format is: xx-xx-xx-xx-xx-xx, where all values are in hex.
    // This value should be unique on your network, or Bad Things Will Happen.
    //
    // The default value is: 08-00-2B-E5-40-<nic#>

	//mac = "08-00-2B-E5-40-00";

    // VARIABLE: queue
    //
    // The number of frames the receive queue can hold between the host
    // capture interface and the emulated NIC. Frames that arrive while the
    // queue is full are dropped (and reported on the console). The default
    // is 1024.

    //queue = 1024;

    // VARIABLE: drop_privileges
    //
    // For vmnet interfaces, controls whether privileges are dropped after the
    // interface is initialized. (ES40 starts with privileges enabled but
    // doesn't need privileges once the network interfaces are initialized.)
    // If you configure multiple network interfaces with vmnet, set this
    // variable to false on all but the interface in the highest PCI slot.
    // The default is true.
    
    // drop_privileges = true;
    
    // VARIABLE: crc
    //
    // Calculate a real ethernet CRC (FCS) for frames delivered to the
    // guest. When false, a zeroed placeholder CRC is appended instead,
    // which saves host CPU; guests normally never check it. The default
    // is false.

    //crc = true;

    // VARIABLE: trace_packets
    //
    // Dump every transmitted and received packet to the console, for
    // network debugging. Very noisy. The default is false.

    //trace_packets = true;
  }

// Serial ports
//
// The ES40 hardware always has two serial ports, and SRM and the guest OSes
// expect both UARTs to exist. You do not have to configure both (or either)
// of them: any port missing from this file is synthesized automatically as
// a null_attach port (see below), with a console warning.

  serial0 = serial {

    // VARIABLE: port
    //
    // Determines which Telnet port is opened to receive connections for the emulated
    // serial port. The default is 8000 + the port number.

    port = 21264;

    // VARIABLE: action
    //
    // Defines the action to take for each serial port (= a telnet client). If you want
    // to connect manually, leave this out.

    action = """c:\Program Files\PuTTY\putty.exe"" telnet://localhost:21264";

    // VARIABLE: null_attach
    //
    // Present the port to the guest as a healthy, idle UART with nothing
    // attached: transmitted bytes are silently discarded, nothing ever
    // arrives, and no Telnet port is opened. Use this for a port you never
    // intend to connect to. This is also what the emulator synthesizes for
    // a serial port that is left out of the configuration entirely. The
    // default is false.

    //null_attach = true;

    // VARIABLE: disabled
    //
    // Make the guest see no UART at this address at all, so drivers skip
    // the port completely. No Telnet port is opened. Unlike null_attach,
    // the UART appears absent rather than present-but-idle. The default
    // is false.

    //disabled = true;

    // VARIABLE: raw_mode
    //
    // Pass the byte stream through unmodified: no Telnet protocol (IAC)
    // processing and no throttling to emulated line speed. Required when
    // the port carries a binary protocol such as windbg (KD) or kgdb
    // instead of a terminal session. The default is false.

    //raw_mode = true;
  }

  serial1 = serial {
    port = 21265;
    action = """c:\Program Files\PuTTY\putty.exe"" telnet://localhost:21265";
  }

// Floppy controller
//
// The ES40's floppy controller and 3.5-inch 1.44 MB drive A are created
// automatically.  Without this block, drive A starts with no media.  Use the
// block below to insert an image at startup.  An optional drive B is disk0.1.
// Configure drive B as `disk0.1 = file {}` to install it with no media.

//fdc0 = floppy
//{
//  disk0.0 = file
//  {
//    file      = "img\floppy.img";
//    read_only = false;
//  }
//}

// MPU-401 MIDI interface (Windows hosts only)
//
// An MPU-401 (UART mode) MIDI interface on the ISA bus. MIDI data sent by
// the guest is played on a host MIDI output device.
//
// VARIABLE: midi_out
//
// The host MIDI output device number to play on. The default is 0 (the
// Windows default MIDI device).

//mpu0 = mpu401
//{
//  midi_out = 0;
//}

// ES1370 audio card
//
// An Ensoniq AudioPCI ES1370 sound card. Requires the emulator to be
// compiled with SDL support. Takes no configuration values.

//pci1.1 = es1370 {}
}

Clone this wiki locally