Hercules Windows GUI Interface

"Frequently Asked Questions"

  1. "I can't read the text buttons on the buttons! Why is the font so tiny? Can't you make it bigger so I can read it?"

    I wish I could, but no, I can't.   :(

    The buttons are bitmaps and the text that you can [barely] see on them is part of the bitmap itself, and bitmap fonts don't scale too well I'm afraid.

    I tried using a larger font for the text on the buttons, but the result was that all of the text wouldn't fit on the button. When I tried making the buttons larger to accomodate the text in the larger font, the buttons ended up being far too large and wouldn't fit comfortably on the control panel.

    I even tried making the buttons without any text at all and then programmatically displaying text over top of the buttons in a slighly larger TrueType font, but as before, the text ended up being bigger than the buttons themselves.

    I wanted the buttons to look as close as possible to what the actual buttons on the front panel of a real IBM mainframe look like, and on a real mainframe, the buttons look pretty much just like what you see (although the buttons on a real mainframe are quite a bit larger than the buttons you see on your screen, but then again, a mainframe front panel is also quite a bit larger than the screen on a personal computer!).

    I would like to invite others to please take a stab at designing realistic buttons with text that you can read, because, as I said, quite frankly, I've given up trying myself. (I'm a programmer and not a graphics design artist, damn it! :)

    Note however that in an attempt to help address this issue, all the buttons do have tooltips associated with them so when you move your mouse over the button, a tooltip should be displayed identifying what that button is for.

  2. "I can't seem to get Hercules to start! Whenever I press the Power On button (or select Power On from the menu), I get a dialog box that says "CreateProcess() failed". What's going on?"

    If you attempt to 'PowerOn' Hercules via HercGUI and receive an error dialog similar to the following:

    then this simply means you are missing the Microsoft Visual C++ Runtime (MSVCRT) DLLs and manifests that are required by the MSVC version of Hercules.

    On very old versions of HercGUI and/or Hercules this issue would only occur on Windows ME systems as a result a bug in my GUI that didn't properly handle blanks in the pathname leading to Hercules executables. This has since been corrected in later versions.

    There are two ways to correct the situation: either a) download and install the required runtime DLLs directly from the Microsoft web site (go to Microsoft's web site do a search for "Visual C++ Runtime redistributables") or b) download and install the latest "native msi" version of Hercules from the main Hercules-390 web site.

    If the dialog instead mentions that it can't find "Prometheus.exe":

    then that simply means you're running an older version of HercGUI64.exe (an earlier experimental 64-bit version of HercGUI) which was originally designed to run a custom 64-bit version of Hercules called "Prometheus.exe".

    "Prometheus.exe" doesn't actually exist anywhere. It was going to be the name of my custom 64-bit version of Hercules for Windows but it never materialized. (I may still some day finish it, but don't hold your breath.)

    To workaround the issue either install the latest version of HercGUI that has this issue fixed (version 1.12 or greater), or, if such a version does not yet exist (Note: version 1.12 has not been released yet at the time I'm writing this), simply add a new String value to the

    HKEY_CURRENT_USERS\Software\Software Development Laboratories\Hercules\Settings

    branch of the registry called "emulator.exe" and set its value to "hercules.exe" instead.

    Another reason that the "Create Process() failed" dialog can appear (if you are using the Cygwin version of Hercules and not the new MSVC version) is because the system can't find the required CygWin dlls. You must have the CygWin dlls installed on your system and they need to be somewhere where the system can find them. (Most people find it convenient to keep them in the same directory as the Hercules executables themselves.)

    To determine exactly which .dll is missing or can't be found (or otherwise obtain a bit more information as to what exactly Windows is complaining about), try executing Hercules in non-GUI mode. To do this, simply double-click on the 'hercules.exe' file directly. (I.e. don't run Herc through the gui; run it from a command prompt (MS-DOS Prompt) console window instead). When you do this, Windows should then display an error dialog providing the specifics regarding what .dll is missing, etc.

    Finally, when all else fails, double check your configured Executable Files directory preference. Select "Preferences" from the File menu and make sure the directory specified for the 'Executable Files' entry is correct. Some people have found they accidentally changed this value somehow, and if it's not correct (i.e. if it's pointing to the wrong directory), then Windows will obviously not be able to find the Hercules executable whenever the GUI tells it to look for it there, leading to a CreateProcess failure.

  3. "When I press the Power On button, Hercules seems to try to start up, but I get a bunch of strange messages on my console and no devices are appearing in my Device List."

    If you see messages similar to the following appear on your console after pressing Power On ...

            FFF9E6EF MAINSTOR= command invalid. Enter ? for help.
            FFF9E6EF LIST=0
            FFF9E6EF LIST=0 command invalid. Enter ? for help.
            FFF9E6EF EGS=1
            FFF9E6EF EGS=1 command invalid. Enter ? for help.
            FFF9E6EF GS=1
            FFF9E6EF GS=1 command invalid. Enter ? for help.
            FFF9E6EF ] AREGS=0
            FFF9E6EF ] AREGS=0 command invalid. Enter ? for help.
            FFF9E6EF ] FREGS=0
            FFF9E6EF ] FREGS=0 command invalid. Enter ? for help.

    ... then you're trying to use a non-GUI compatible version of Hercules with my GUI. Older versions of the emulator didn't have external GUI support by default and needed to be specially compiled. You're probably using an older version of the emulator.

    You need to use an "External GUI Compatible" version of Hercules along with my GUI in order for things to work right. Note that all Win32 versions of the Hercules emulator beginning with version 2.12 are external GUI compatible by default.

    To correct this problem, simply download and install the current version (2.12 or greater) of the Hercules emulator. These versions of Hercules all have external GUI support built into them by default.

  4. "Do you plan on porting your GUI to other platforms? (e.g. Linux, etc)"

    Not at this time, no.

    Malcolm Beattie tells me, however, that it appears to work just fine under wine on Linux. (you don't even need any of the MFC or CygWin dlls either; just enter "wine HercGUI.exe" and away it goes!)

    There is, of course, nothing stopping you (or anyone else for that matter) from porting it to another platform (except maybe the time and effort involved to do so). The complete source code is, afterall, available to anyone that wants it.

    As I mentioned on my download page, however, I wrote it in Microsoft Visual C++ and made extensive use of their Foundation Class Library (MFC) (which is licensed code), so if you are going to try to port it to another platform, you need to be aware that you're probably going to have to port (read: completely re-write yourself) the entire Foundation Class Library (which is a daunting task in and of itself and is the main reason why I don't plan on porting it to another platform myself any time soon.)   However... if you plan on porting it directly to Linux wine, I believe the wine folks have already completed that task for you. Please see the Wine HQ web page for more information.

  5. "HHC020I Cannot obtain xxx mb of main storage: Not enough memory"

    (Hercules 2.17.1 and earlier only)

    This appears to be a Cygwin issue related to a built-in limit on the maximum amount of memory that can be malloc'ed at one time and is controlled by the "heap_chunk_in_mb" registry value.

    To increase the value, you have to either add the "heap_chunk_in_mb" registry entry if it doesn't exist yet or increase its value if it does, as explained in the following Cgwin mailing list posts:


  6. "HHCCF031S Cannot obtain nnnMB main storage"

    (Hercules 3.0 and later only)

    Due to the change in Hercules' "mainstor" memory allocation technique to address a "double memory consumption" bug in Cygwin's malloc implementation, some Windows Hercules users may experience the above "out of memory" error whenever Hercules is started with a large MAINSIZE configuration file value.

    This error will most likely occur (if it does at all) for those users who have manually adjusted their Cygwin 'heap_chunk_in_mb' Windows registry setting value (in order to allow them to specify a large MAINSIZE value when running Hercules). If this problem does occur (i.e. if you do happen to experience the above mentioned error with this new release of Hercules), then either reduce your 'heap_chunk_in_mb' value (yes, that's correct: reduce it, as in change it to a smaller value) or else remove it altogether (so as to let it default).

    A complete technical discussion of this issue can be found in the RELEASE.NOTES file in the source distribution.

    You may also be interested in my "Maximizing Hercules Available Memory" web page as well, which explains how to potentially recover hundreds of megabytes of memory for use by Hercules.