-
Notifications
You must be signed in to change notification settings - Fork 21
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 {}
}