1.01 | What is Hercules? |
1.02 | So what exactly does that mean? |
1.03 | Is it functional enough to run production work? |
1.04 | What are the licensing restrictions for Hercules? |
2.01 | Can it run OS/390, VM/ESA, VSE/ESA? |
2.02 | What operating systems can I run legally? |
2.03 | What other programs will run under Hercules? |
2.04 | Where can I obtain OS/360 ? |
2.05 | Where can I obtain MVS ? |
2.06 | Where can I obtain VM/370 ? |
2.07 | Where can I obtain DOS/VS ? |
2.08 | Where can I obtain Linux/390 ? |
2.09 | Where can I find documentation? |
3.01 | What PC hardware do I need to run Hercules? |
3.02 | What PC software do I need to run Hercules? |
3.03 | What sort of MIPS rate can I expect? |
3.04 | Which C compiler should I use to build Hercules? |
3.05 | Why do I get an unexpected fixed-point divide exception (program check 0009 or abend 0C9) on a CVB instruction? |
3.06 | Do you plan to port Hercules to other platforms? |
4.01 | How can I create a virtual DASD volume? |
4.02 | Can I read a tape which was created on a mainframe? |
4.03 | Can I attach a PC tape drive to Hercules? |
4.04 | Can I process mainframe tapes with Hercules? |
4.05 | Can I create Assembler programs without a mainframe? |
5.01 | What architectural features are implemented? |
6.01 | Who are the Herculeans? |
7.01 | Where can I obtain technical support? |
Hercules is a software implementation of the System/370, ESA/390 and z/Architecture hardware which runs under Linux on several hardware platforms including the Intel Pentium PC, and under Windows NT and Windows 2000.
It means that your PC can emulate an IBM mainframe processor. The mainframe can range from a 360 to a z900 - running in "System/370" mode, "ESA/390" mode, or "z/Architecture" mode.
Hercules executes S/370, ESA/390, and z/Architecture instructions and channel programs. It emulates mainframe I/O devices by using PC devices. For example, 3390 DASD devices are emulated by large files on your hard disk, and local 3270 screens are emulated by tn3270 sessions. (Note: Not all 370 and 390 features have been implemented in Hercules. See the list of particulars later in this document. Also, certain non-standard models, 360/20s, and the 360/67 virtual memory mode are not emulated.)
Hercules implements only the raw S/370, ESA/390, and z/Architecture instruction set; it does not provide any operating system facilities. This means that you need to provide an operating system or standalone program which Hercules can load from an emulated disk or tape device. You will have to write the operating system or standalone program yourself, unless you can manage to obtain a license from IBM to run one of their operating systems on your PC, or use IBM programs and operating systems which have been placed in the public domain.
No. At the moment it's a system programmer's toy, though it's rapidly becoming good enough to run a wide range of software without problems.
Hercules is a copyright work which has been made generally available, subject to the terms of the Q Public License. In essence this allows free use and distribution of the program for personal and commercial use. You may not distribute modified copies of the program, but you may distribute your own patches along with the program, provided that you also grant the maintainer permission to include those patches in future versions of the program. You may not copy any portion of the source code for use in any other program.
Hercules is not, repeat, not GPL software! The GNU General Public License is a Unix/Linux software licensing agreement, which we, the authors, will not participate in. We believe that the QPL, which has been certified as compliant with the Open Source Definition, provides the benefits and protections of open source for both users and developers, without the political baggage that has come to be associated with the GPL.
Yes. Hercules is a software implementation of ESA/390, and so it is capable of running OS/390, VSE/ESA, and VM/ESA, as well as older versions of these OS's.
Most 3rd party operating systems like Linux/390, z/Linux and TELPAR are covered under their own free license and can therefore run under Hercules without any legal problems.
OS/360 (PCP, MFT and MVT) is in the public domain, as far as we know. The status of OSes for which IBM did not charge a license fee is somewhat murky; these include MVS 3.8, VM/370 release 6, and DOS/VS release 34.
The legal status outside the USA, where something like public domain or software without copyright doesn't exist, is "copyrighted software provided at no charge". It is a known fact that vendors like amdahl, Hitachi, Nixdorf and others modified those operating systems, and distributed them as their own OS for their own hardware, without asking IBM for permission. But law had been changed over that time, so its not clear if the same legal status applies in your country right now.
Rick Fochtman managed to obtain a letter from IBM that he is allowed to distribute OS/360. Try to ask your salesdroid for a similar letter for VM/370, MVS 3.8j or DOS/VS next time he wants to sell you a major upgrade.
OS/390 and other ESA versions of OS's are definitely licensed to a particular machine. Therefore, in practice you cannot run any classic ESA operating system on your PC unless you can obtain a license from IBM allowing you to do so. It is believed that there are, however, three legal ways you could run OS/390, VM/ESA, or VSE/ESA under Hercules:
Any program which uses the S/370, ESA/390, or z/Architecture instruction set, as implemented in Hercules. Some special utilities in the form of standalone programs are known to run well. I can particularly recommend Jan Jaeger's excellent standalone editor (ZZSA) which is included in the Hercules distribution, or it can be downloaded from http://home.worldonline.nl/~jjaeger; I use it regularly to look at DASD while debugging an OS installation, which is just what it's designed to do. Note: ZZSA runs in ESA/390 mode. See Jan Jaeger's website for more information and special logon procedures.
1. Rick Fochtman's OS/360 archive CD is now obtainable by download from these locations:
2. If you are interested in obtaining a copy of the CD itself, contact Rick Fochtman at rfochtman@ync.net.
3. Alternatively, you can download the OS/360 Y2K Starter package which contains a full featured MVT system on a 3330 image, with some minimal documentation. The configuration is that of a 370/158 with 4 megabytes of main storage, running OS/MVT Release 21.0. The same site also offers a MVTDBL volume and a Builder package for those who like to participate in OS/360 nucleus hacking.
The Original MVS 3.8 distribution as it was first used came from
who advise using the mirrors atSeveral people have generated a functional MVS system from this archive :
Bob Abeles started a VM/370 web site at:
Right now it's in an embryonic state. If anyone has material that they'd like to contribute, please send it to me. I'm looking for FAQ material, command summaries, how-to's, personal experiences and anecdotes, machine room photos, and just about anything else you think might be of interest.
I've put the DOS/VS r34 install tape on my site. It'll expand to a 21 MB AWSTAPE file, dosrel34.aws. You need the Coverletter to install it. Read the relevant postings of the Hercules mailing list first, as the install process is quite obscure.
You can grab those files at :
The process of downloading and installing Linux/390 is best described by the Getting Started with Linux/390 document. Take a look at, David Pitts' GCC/EGCS Compiler Page if you need GCC and GNU utils for OS/390 to bootstrap Linux from source.
The Creating Hercules DASD document describes various methods of creating and loading virtual DASD volumes.
I've produced a document describing how to build an OS/360 system on Hercules, called "OS/360 on Hercules". It can be found at
This will build an MVT system without TCAM/TSO, but with two 3270 consoles. You will need Malcolm Beattie's "Guide to Using 3270 Consoles and Terminals for Hercules" with this MVT version.
The N.U.D.E guides can be found at :
IBM provides only current documentation, ...
but many things haven't changed since 1964 :
It depends how fast you want it to run. A Pentium 200 with 32Mb RAM is probably the minimum practical requirement; 500+ MHz with 128Mb RAM would be much better. Hercules doesn't use any fancy graphics, but it does need a fast processor to achieve a reasonable MIPS rate.
If you can afford a multiprocessor system, so much the better. Hercules makes extensive use of multi-threading to overlap I/O with CPU activity, so you should find that a dual or quad Pentium 200 system will outperform a uniprocessor Pentium 450. My development system is a Compaq ProLiant 6000 with four Pentium Pro 200s, and response time is quite satisfactory.
Hercules does not depend on the Pentium architecture. I've built and run it successfully on a 500 MHz Alpha 21164, and others have run it on SPARC and S/390 (!) Linux systems. (One guy has even run OS/360 under Hercules under Linux/390 under Hercules under Linux/390 under VM/ESA!) The only weirdness about building the package on an Alpha is that you'll get compiler warnings about "unsigned long value, unsigned long long format". You can ignore these.
You will need enough Linux swap space to accommodate your S/390 real storage (main storage plus expanded storage). For maximum throughput, you should set your main and expanded storage sizes high enough to eliminate S/390 paging. S/390 storage is allocated out of Linux virtual storage, so if you can provide enough RAM to eliminate Linux paging as well, then so much the better.
You also need enough hard disk space to accommodate the emulated DASD. A virtual "3330 model 1" disk drive will need about 100 megabytes of space for emulation (a 3330-11 will need about 200 megabytes). A 3380 "single density" model will need about 650MB, and a 3390 model 2 needs about 2GB. If you use the compressed CKD DASD feature, these sizes will shrink dramatically, usually to about 20 to 30 percent of the original size.
1. You need a Linux system with POSIX threads (pthread) support. I will only provide support for Linux 2.2.x kernels with glibc2 (libc6) as supplied in popular distributions such as Red Hat 6.0 or later and SuSE Linux 6.1 or later. My development system runs Red Hat 6.1. You can also run under Windows NT or Windows 2000, though Hercules isn't quite as polished on that platform.
2. An egcs C compiler, normally distributed with Linux. See the notes below on this compiler. If you wish to rebuild the Windows version, you will need the Cygwin tools from Red Hat.
3. You will also need tn3270 client software for the virtual 3270 console. The tn3270 client can run on the same machine as Hercules, or on any Unix or Windows box with a TCP/IP connection to the Hercules machine.
The supported and recommended tn3270 clients for Hercules are:
Other tn3270 clients, such as QWS3270, IBM Personal Communications, Attachmate Extra, or Dynacomm Elite should also work in most cases, but be aware that some tn3270 clients have bugs which make them unusable as OS/360 or MVS consoles.
With the performance enhancements which began around release 1.60, thanks to work by Juergen Dobrinski, Valery Pogonchenko, and Jan Jaeger, you should now see an execution speed of around 0.8 to 1 MIPS, even on a Pentium 200. That's enough to run OS/360 (MFT or MVT) with a response time similar to that of a 3033 from the 1970's. It's also fast enough to run VSE/ESA with an acceptable response time. If you want to run OS/390 instead of OS/360, you'd better get a gigahertz or so Pentium III. On a fast dual Pentium III it's now not unusual to see 5 MIPS or better.
Typical I/O rates of around 50 EXCP/second are reported on average hardware, with rates over 500/second achievable with hardware RAID.
You must use the egcs C compiler. I am using the version that
came with Red Hat 6.1 and it seems to work OK. The version number reported
by the Linux command cc -v
is: egcs-2.91.66 19990314/Linux
(egcs-1.1.2 release). If your compiler is version 2.9 or higher, it's
EGCS-based, and should work fine, as EGCS version 1 is just another name
for gcc version 2.9.
The older gcc compiler is known to produce incorrect code for some 64-bit (unsigned long) integer operations. I have had reports that earlier versions of egcs produce strange results too.
If you have both an old gcc and egcs compilers installed, use the CC
parameter on the "make" command to force it to choose the correct compiler:
make CC=egcs
...
Red Hat 7.0 ships with two versions of gcc. If you don't do anything
special, you get gcc 2.96, which will not compile the Linux kernel, so
they included 2.91 as well as kgcc
. If you encounter
problems when building Hercules with the 2.96 compiler, try
make CC=kgcc
instead. I would appreciate reports as to how well the 2.96 compiler works,
as it is a development snapshot, and lots of folks, including the GCC
development team ad Linus Torvalds, were very unhappy that Red Hat included
it in their distribution.
You are using an old gcc compiler. You must use the newer egcs-based compiler instead. See previous question for the required compiler level.
Not really, no. We simply do not have the resources to support more than one operating system.
It should be noted however that we do make efforts to ensure Hercules builds and run on several different operating system platforms (mostly just Linux, Windows and Apple right now), but we of course simply cannot guarantee that it will run on every operating system platform out there.
If you want to make Hercules run on FreeBSD, Solaris, Linux 2.0.x, or whatever, then by all means go ahead. I welcome reports of any bugs or problems you find, but I probably won't fix problems if it means introducing platform-specific code, and I will not be able to test new releases against other platforms. Folks who have gotten it compiled on the BSDs report that the hardest part is removing the Linux-specific tape support.
The Hercules code is not intended to be specific to Intel hardware, so if you find any issues or faults related to running on other hardware (SPARC, Alpha, PPC, ...) under Linux 2.2, then I'm likely to be receptive to fixing that sort of problem. Issues related to Unix variants are less likely to be fixed however.
The Creating Hercules DASD document describes various methods of creating and loading virtual DASD volumes.
Yes, indirectly. The mainframe tape must be converted to AWSTAPE format and then downloaded to your PC. The tapeconv.jcl file in the Hercules directory contains a sample program which you can run under OS/390 on your mainframe system. It reads a file from tape and converts it to AWSTAPE format. Download the AWSTAPE file to your PC (making sure to choose binary format for the download), and then add the downloaded filename to the Hercules configuration file as a virtual tape device. You will then be able to read the tape file from the virtual tape drive located on your PC.
Note: the "tapeconv" program will not correctly process input tapes
whose block size exceeds 32760!
One symptom of this may be the message "
ADRY011E I/O ERROR - DEVICE NOT ATTACHED.0000,NA,00...00,0000"
when attempting to restore from tape originally created using the default
DF/DSS block size. The solution is to recreate the dump tape with
DCB=BLKSIZE=32760.
Yes. Hercules can read and write tapes on SCSI drives. I have tested this with 4mm DAT, QIC-1000, and 9-track drives.
Yes. It is possible to obtain 9-track open reel drives and 3480-type cartridge drives which attach to the SCSI bus. Hercules makes these appear to the operating system as channel-attached 3420 or 3480 devices, making it possible to read and write real mainframe tapes.
Yes. If you want to write Assembler (BAL) programs to run on Hercules, but you don't have access to a mainframe, then there are two interesting products which you can run on your PC to assemble programs:
Sam Golob wrote a fascinating review of these two products in the September 1999 issue of NaSPA Technical Support magazine.
The following standard features have been implemented:
The following optional features have been implemented:
The following standard feature has not yet been implemented:
The following standard feature has been partially implemented:
The following optional features have been partially implemented:
The following features are not yet implemented, either due to lack of documentation, limited host system capability, or lack of supporting hardware:
Hercules is compliant with IBM's ALS-1, ALS-2 and ALS-3 architectural level sets to the degree necessary to run all OS/390 versions through 2.10 and known versions of z/OS in both ARCHLVL 1 and ARCHLVL 2 mode, and Linux and z/VM in both ESA/390 and z/Architecture mode.
The following people are among those who have contributed to this project, either as coders or as testers or both:
And thanks for support and encouragement from:
If anyone feels they have been unfairly omitted from either of these lists, please let me (Jay Maynard) know.
If your question and/or concern is not addressed in this FAQ, please post your question to the Hercules-390 forum:
Files and archives at: http://groups.yahoo.com/group/hercules-390 Community email addresses: Post message: hercules-390@yahoogroups.com Subscribe: hercules-390-subscribe@yahoogroups.com Unsubscribe: hercules-390-unsubscribe@yahoogroups.com List owner: hercules-390-owner@yahoogroups.com
The Hercules-390 forum is in fact your primary source for Hercules support, and you are strongly encouraged to subscribe. We have a vibrant, active community of over 3200+ members, many of which are very knowledgeable in many different areas of mainframe technology, both from a hardware point of view as well as from an operating system and software point of view.
In addition to the main Hercules-390 forum, other more specialized Hercules forums also exist to provide more focused support for a variety of popular IBM mainframe operating systems, such as DOS, VM, and MVS.
* Note! the use of Yahoo! as host for the Hercules-390 and related forums should in no way be interpreted as an endorsement of the Yahoo! service.
If you have any comments and questions, please join the Hercules discussion
group at
http://groups.yahoo.com/group/hercules-390
Last updated 3 October 2003