Hercules running Robert O'Hara's Six Pack distribution (http://www.smrcc.org.uk/members/g4ugm/VM370.htm)
Source for the Docker image can be found at https://github.com/rbanffy/vm370
To run it,
docker run -p 3270:3270 rbanffy/vm370. Then you can connect your 3270 sessions to port 3280.
From the archive:
Welcome to VM/370 and VM/380 "SixPack" version 1.2!
Now with full screen editing!!!
Now with DOS!!!
The base operating system is IBM's VM/370 Release 6 operating system, the last unlicensed version of VM/370. It is designed to run on the Hercules Emulator.
Warning! I am a hobbiest - I do this for fun. No warrenties expressed or implied as to the quality or usefulnees of this product are made. Don't use the SixPack for anything important like controlling a nuclear reactor or flying an airplane.
Changes in version 1.2 of the "SixPack" include:
The BREXX interpreter is integrated into CMS and runs
from resident memory. This means you can now write
EXECs in the REXX language, and they will
automatically be executed by the resident REXX
interpreter. Also, these EXECs can invoke any CMS
program, including the language processors such as
ASSEMBLE, FORTRAN, PLI, etc. The source code for
BREXX is on the BREXX 191 disk. Type HELP REXX for
The GCIC file list and fullscreen editor is available
as RUNGCIC EXEC on the Y disk. See GCIC MEMO on MAINT
19D (the U disk) for more information.
CMS/DOS and VSAM are alive and well. The CMSAMS,
CMSDOS, CMSVSAM and INSTVSAM saved systems and
segements are all present.
The native CMS version of the GCC runtime library is
now resident in memory. Thus it is possible to write
very small programs in C. Type HELP GCCLIB for more
The CP command now allows you to stack or discard the
messages it would otherwise display at the terminal.
Very useful when writing EXECs.
During initialization, CMS executes "SYSPROF EXEC"
before executing "PROFILE EXEC". This allows you to
ensure certain commands are always executed for users.
If the virtual machine size is 4MB or larger, LDRTBLS
are set to 64 pages instead of 3 pages.
The CP TRANSFER command has been fixed. You can now
transfer spool files to other users. The bug in the
CP QUERY DASD command has been fixed. The endless
loop in the QUERY SYNONYM ALL command has been fixed.
The PL/360 language is now correctly installed on the
19E (Y) disk.
I have cleaned up the 19E (Y) disk. Source code for
the various programs that were there has been removed
and put on MAINT's 093 disk. Documentation for those
programs has been moved to MAINT 19D.
Features of the "SixPack"
o Support for the S/380 architecture, which allows you
to run programs that access memory greater than 16
megabytes. For example, to compile the Gnu C
compiler, you need more that 16 megabytes of memory
for the compiler. S/380 allows you to compile it on
CMS. Speaking of which...
o The Gnu C Compiler, with both a "traditional" runtime
library (PDPCLIB) and a "native CMS" runtime library
(GCCLIB). GCC specifically supports access to memory
above 16MB. The source code for the GCC compiler and
both runtimes is on the GCCCMS userid's disks. Type
HELP GCC for more information.
o An up-to-date, accurate, and fairly complete help
o Extended parameter list support, meaning it is
possible to pass mixed-case parameters to EXECs and C
o Current line highlighting and multifile editing in
o Other programs such as COMPARE, DIFF, FLIST, RESLIB,
SCAN, VMARC are all available on the CMS Y disk. Type
HELP CMSCMDS to list all available CMS commands.
o A set of batch files lets you run the SixPack in a
remote, automated manner. Thus you can run batch
programs such as compiliations from a command prompt
in Windows, Linux, or other host operating system.
Notes on the BREXX interpreter
Just like VM/SP and its successors, EXECs writting in the REXX language have the filetype of EXEC, and must begin with a REXX comment line. Note that BREXX is somewhat flakey. Please report any problems you encounter to the H390-VM group on Yahoo. Try out REXXTRY EXEC!
Note that loading BREXX and the GCCLIB runtime (required for REXX) into memory consumes 250K of memory. Thus you may want to run in a larger virtual machine than you previously used.
If you do not plan to use BREXX, you can prevent their loading into memory by overriding the SYSPROF EXEC on the Y disk. Simply create SYSPROF EXEC on your A disk with these lines in it:
&CONTROL OFF NOMSG
ACCESS 19D U/S
Doing this of course means that you cannot run REXX EXECs.
This zip file is set up to run on Windows, mainly because that is what I run. Hercules runs on other platforms (Linux, Mac OS), so it should be a straightforward matter to adjust the configuration files to get it up and running elsewhere.
Unzip "SixPack.zip" into a suitable directory. Make sure you choose the option to preserve relative file names. In the "SixPack" directory (or whatever you call it) there should be three subdirectories: 3270, Disks, and IO.
Install the current version of Hercules from http://hercules-390.org. If you want to make use of the limited 31-bit addressing capabilities of this release, install Hercules/380 from http://mvs380.sourceforge.net.
Ensure the directory containing "hercules.exe" is in your path.
If you have been using CMSUSER for your work userid, feel free to replace the 6th disk (vm3350-6.6f0.cckd) with your disk from a previous version of the sixpack.
If you plan to use the batch automation capability, read "batch.txt" in the Batch directory for more information. If you don't plan to use this feature, you can delete the Batch directory.
Running the SixPack
Run "sixpack.cmd" and Hercules should launch, followed in a few seconds by a 3270 terminal emulator.
By default the OPERATOR userid logs in using the Hercules window. From the command line you can issue Hercules commands. To issue commands to the OPERATOR userid you must prefix the command with a single "/". To shut everything down, first log off any users you have been using. Then from the Hercules window type "/shutdown" to bring down VM/370. Finally, issue the Hercules "quit" command.
There are several userids defined:
CMSUSER (password of CMSUSER): This userid is best for general work on the system. It has several minidisks defined, all residing on a dedicated disk pack. You can backup any work you store on these disks by simply making a copy of the disk pack's shadow file.
I recommend you login as CMSUSER (password of CMSUSER) for most general work. This user's minidisks reside on their own volume (the 6th pack), making backup of your own work much easier.
MAINT (password of CPCMS): This is the system programmer's userid. Logon here if you want to perform system programming tasks. For example, you could edit the SIXPACK DIRECT A1 file to change the name of CMSUSER to your name, save the file, then issue the DIRECT SIXPACK command to update the sytem directory. SYSPROG MEMO on MAINT's 191 disk has useful information on how to rebuild the CMS and CP nucleii.
GCCCMS (password of GCCCMS): Here you will find the source for the GCC compiler, plus useful EXECs set up to help you do bulk compilations of C programs.
BREXX (password of BREXX): Here you will find the source code for the BREXX REXX interpreter.
Type HELP CMSCMDS for an overview of the available commands.
The included wc3270 emulator is launched from the "sixpack.cmd" file. You can modify this command file to launch your preferred 3270 emulator. You can get wc3270 from http://x3270.bgp.nu. See the wc3270 documentation for more information.
What is VM/370 and VM/380?
System/370 is a 24-bit architecture: 16MB (2**24) is the maximum addressible memory. System/380 is the enhanced version of the S/370 architecture created by Paul Edwards, and supported by the 380 version of the Hercules emulator, available at http://mvs380.sourceforge.net. In the SixPack you can use the S/370-XA instructions BASR and BASM to enter 31-bit mode and address storage above the 16MB line. Note that this storage is unmanaged, so only one program per Hercules "computer" can use it at a time. You can access this memory from assembler language programs or from C programs.
The SixPack is brought to you by Robert O'Hara, Paul Edwards, and Dave Wade. It is based on earlier versions of VM/370 for Hercules developed by Andy Norrie and Paul Gorlinsky. Thanks to Roc, Martin Taylor, Mike Stramba, and Kevin Leonard for fixes included in version 1.2.
Robert O'Hara, Redmond Washington, October 2010.