Hercules emulator

related topics
{system, computer, user}
{math, number, function}
{area, community, home}
{law, state, case}
{style, bgcolor, rowspan}

Hercules is a computer emulator which allows software designed for IBM mainframe computers (System/370, System/390, zSeries, and System z) and for plug-compatible mainframes (such as Amdahl machines) to run on other types of computer hardware: notably on low-cost personal computers. Although there are other mainframe emulators which perform a similar function, Hercules is significant in that it enables private individuals to run mainframe computer software on their own personal computers. Hercules runs under multiple operating systems including Linux, Windows, FreeBSD, Solaris and Mac OS X and is released under the open source software license QPL[1]. It is analogous to Bochs and QEMU in that it emulates CPU instructions and peripheral devices only; the operating system has to be supplied by the user. Hercules was notably the first mainframe emulator to incorporate 64-bit z/Architecture support, beating out commercial offerings.

Roger Bowler, a mainframe systems programmer, started development of the Hercules emulator in 1999. Jay Maynard currently maintains and hosts the project.



The emulator is written almost entirely in C. Machine specific assembly code, which other emulators use, was ruled out due to its lack of portability even though it could significantly improve performance. There are two exceptions: hardware assists are used to provide inter-processor consistency when emulating multiple CPUs on SMP host systems; and assembler assists are used to convert between little-endian and big-endian data on platforms where the operating system provides them, or if the host processor is a member of the x86 or x86-64 families.

Operating systems status

Hercules is technically compatible with all IBM mainframe operating systems; even older versions which no longer run on newer mainframes. However, many mainframe operating systems require vendor licenses to run legally.

  • There is no legal restriction that prevents running the open source operating systems Linux on System z and OpenSolaris for System z on the Hercules emulator. They run well on Hercules, and many Linux on System z developers do their work using Hercules. Several Linux distributions include ports for ESA/390 and some also include a separate z/Architecture port. Linux distributions with mainframe ports include SUSE Linux Enterprise Server, Red Hat Enterprise Linux, Debian Linux, CentOS, and Slackware. OpenSolaris has been ported to System z, with a heavy reliance on features provided by z/VM. (Emulation of those specific z/VM features for OpenSolaris is included starting in Hercules Version 3.07.)
  • Older IBM operating systems including OS/360, DOS/360, DOS/VS, MVS, VM/370, and TSS/370 are either public domain or "copyrighted software provided without charge."[2]
  • Newer licensed operating systems, such as OS/390, z/OS, VSE/ESA, z/VSE, VM/ESA, z/VM, TPF/ESA, and z/TPF are technically compatible but cannot legally run on the Hercules emulator except in very limited circumstances.
  • IBM's Coupling Facility control code, which enables Parallel Sysplex, is also licensed, as is UTS.
  • MUSIC/SP may be available for education or demonstration purposes upon request to its copyright holder, McGill University. Some MUSIC/SP features, notably networking, require z/VM. However, a complete demonstration version of MUSIC/SP, packaged with the Sim390 mainframe emulator, is available.
  • Certain unencumbered editors and utilities, which can run on a mainframe without a parent operating system, may be available to run on Hercules.

Full article ▸

related documents
Windows Me
Accelerated Graphics Port
Apple Lisa
Slave clock
Parallel port
Audio Video Interleave
Dial-up internet access
Internet Protocol
Intel 8051
Intelligent network
Amiga 500
Pocket PC
Intel 8085
Windows NT
Wearable computer
Phantom circuit
Windows 1.0
User Datagram Protocol
Wireless telegraphy
Data storage device
Fast Ethernet
AOL Instant Messenger