Hercules is a software implementation of S/370 and ESA/390 which runs under Linux on a Pentium PC.
It means that your PC can emulate an IBM mainframe processor. Hercules executes S/370 and ESA/390 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.
Hercules only implements the raw S/370 and ESA/390 instruction set; it does not provide any operating system facilities. This means that you need to provide a standalone program or operating system which Hercules can load from an emulated disk or tape device. You will have to write the standalone program or operating system yourself, unless you can manage to obtain a license from IBM to run one of their operating systems on your PC.
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 software implementation of ESA/390, and so it is capable of running OS/390, VSE/ESA, and the VM/ESA 370 Feature, as well as older versions of these OSes. Hercules will not run the ESA/390 version of VM/ESA because it does not implement the required VM Assist and SIE instructions.
In practice you cannot run any 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 370 Feature, or VSE/ESA under Hercules:
You can run OS/360 on Hercules in S/370 mode. OS/360 is in the public domain and (if my understanding is correct) can be run without licensing problems.
Some standalone programs are known to run well. I can particularly recommend Jan Jaeger's excellent standalone editor (ZZSA) which you can download 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. A copy of ZZSA is included in the Hercules distribution.
Rick Fochtman's OS/360 archive CD is now obtainable by download from these locations:
You can use the dasdload
and dasdisup
programs
(see the Creating Hercules DASD [ http://www.conmicro.cx/hercules/hercload.html
] page)
to build an OS/360 IPL volume from the unloaded files on the
archive CD.
Alternatively, you can download my mftr33.tar.gz [ http://www.conmicro.cx/hercules/mftr33.tar.gz ] package which contains a minimal MFT system on a 3330 image, with some minimal documentation.
I've produced a document describing how to build an OS/360 system on Hercules. It can be found at http://www.conmicro.cx/hercos360.
Malcolm Beattie has also produced two useful documents:
Guide to installing TSO under MVT on Hercules
at
http://users.ox.ac.uk/~mbeattie/hercules/tso.html
Guide to using 3270 consoles and terminals for Hercules
at
http://users.ox.ac.uk/~mbeattie/hercules/3270.html
and for adding multiple 3270 terminals to TCAM, see the document by Mike Ross at http://www.corestore.org/hercules.html
Hercules is a copyright work which has been made available for use by any individual, subject to the terms of the Hercules Public Licence [ http://www.conmicro.cx/hercules/herclic.html ]. In essence this allows private individuals to freely copy, modify, and execute the program for personal use. You may not sell the program, or copy any portion of the source code for use in any other program. Any modifications you make to the program are subject to the same restrictions. The Hercules Public Licence does not permit any form of commercial use or distribution, except as a platform to develop commercial software on. If you wish to use Hercules for commercial purposes, drop me an email and we'll work out licensing terms.
Hercules is not, repeat, not GPL software!
It depends how fast you want it to run. A Pentium 166 with 16Mb RAM is probably the minimum practical requirement; 550MHz 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. A Celeron processor (with as high a clock speed as you can afford) will probably give the best price/performance ratio.
If you can afford a multiprocessor system, so much the better. Hercules makes extensive use of multithreading 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 3380 will need about 650MB, and a 3390 model 2 needs about 2GB.
Don't get excited... on a Pentium Pro 200, I am seeing an execution speed of between 0.4 and 0.7 MIPS. That's enough to run OS/360 (MFT or MVT) with a response time similar to that of a 370/145 from the 1970's. It's also fast enough to run VSE/ESA with a slow but acceptable response time. If you want to run OS/390 you'd better wait until Intel processor speeds get into the gigahertz range (which isn't that far off, now).
I haven't measured the I/O rate, but I would imagine it is abysmal.
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 will also need tn3270 client software. This does not have to run on the Linux box. You can use any Windows tn3270 client (such as QWS3270, Vista tn3270 [ http://www.tombrennansoftware.com ], IBM Personal Communications, Attachmate Extra, or Dynacomm Elite), or any Unix tn3270 client (such as x3270).
You must use the egcs compiler. I am using the version that came with Red Hat 6.1 and it seems to work OK. The version number reported by cc -v is: egcs-2.91.66 19990314/Linux (egcs-1.1.2 release).
The older gcc compiler is known to produce incorrect code for some 64-bit (unsigned long long) integer operations. I have had reports that earlier versions of egcs produce strange results too.
If you have both the gcc and egcs compilers installed, use the CC
parameter on the make command to force it to choose
the correct compiler:
make CC=egcs
You are using the gcc compiler. You must use the egcs compiler instead. See previous question for the required compiler level.
No. I do not have the resources to support more than one operating system.
If you want to make Hercules run on Windows, 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.
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 more receptive to fixing that sort of problem than fixing issues related to Unix variants (if I haven't found them already on my Alpha).
The Creating Hercules DASD [ http://www.conmicro.cx/hercules/hercload.html ] page describes various methods of creating and loading virtual DASD volumes.
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.
Note: the tapeconv program will not correctly
process input tapes whose blocksize exceeds 32760!
One symptom of this may be
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 blocksize. The solution is to recreate
the dump tape with DCB=BLKSIZE=32760.
Hercules can read and write SCSI tapes. I have tested this with 4mm DAT, QIC-1000, and 9-track drives. It is possible to obtain 3480 type drives which attach to the SCSI bus, so in theory it should be possible to read real mainframe cartridges using Hercules. Unfortunately, these drives are shockingly expensive (about 10,000 dollars apiece last time I enquired), so unless someone wants to donate one to me, this tantalising possibility will have to remain in the realms of fantasy for the time being.
If you want to write standalone 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:
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 features have not yet been implemented:
The following optional features are not yet implemented but probably will be in due course:
The following features are not implemented, and are unlikely to be, either due to lack of documentation, limited host system capability, or lack of supporting hardware:
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) know.
If you have any comments and questions, join the Hercules discussion group at http://www.onelist.com/community/hercules-390
Last updated 4 September 2000
Copyright 2000