Olly, the author of OllyDbg, presents his new open source joke:

      JASON v1.00

Download Jason
Download Jason sources

1. What is Jason?
2. Hercules
3. Installation and operation
4. Bookshelf
5. Hercules console
6. CPU
7. Display
8. Console printer
9. Printer
10. Card reader and editor
11. Card punch
12. DASD device
13. Tape device
14. Device indicators
15. Licensing

1. What is Jason?

Jason 1.00 is an integrated graphical frontend to the Hercules S/370, ESA/390 and z/Architecture Emulator. What, you haven't heard of Hercules before? It's a masterpiece that emulates IBM mainframes, from old good IBM System/360 and up to the modern z Series... No, it has nothing to do with IBM compatible... No, it can't emulate Xbox 360... Oh, you are asking what a mainframe is? Then probably you don't need Jason.

Long, long ago, Anno Domini 1964, a company known as Big Blue, or else International Business Machines, introduced its first series of its most successfull and influential computers: IBM System/360. These days, the computers were big and expensive, and each new model was almost, but not entirely unlike its predecessor, so the programmers were busy porting code from old machines to new. Usually this was done in Assembler, although Fortran and Algol were already here. So the idea behind the S/360 was simply brilliant: it was a series of compatible computers, where program - provided sufficient memory - could be executed on each box. By the way, some programs from the mid-70's are still running on z9...

S/360 and its successors were unbelievably successful. Tens of thousands computers were sold. IBM mainframes were everywhere: banking, scientific calculations, ticket reservation... When I was a student, my first programs were written in Fortran IV and compiled on IBM 370. So I was really excited when I
discovered that there is a perfect IBM mainframe emulator on the Internet: the Hercules. For some reasons, IBM did not bother with copyrighting its first operating systems, so they are now in public domain and can be freely and legally used. I immediately installed the emulator, downloaded OS MVT 21.8 and... was unable to use it because terminals were not included. And without 3270 terminals, MVT is unusable. I downloaded 3270 emulator, configured it, attached to Hercules - twice! - and finally got the IEA101A prompt. (This is the first message that OS displays after successfull bootstrapping). But even then, instead of putting the deck or punched cards into the reader, I was forced to type command-line commands. Instead of fan-fold paper, the output was redirected to the file. Still, I was happy.

The Hercules as such is powerful but not very handy. I also tried Fish's GUI (a graphical front-end to the Hercules)and was disappointed. This GUI allowed to edit the tiniest details of the configuration and made device mounting  easier, but terminal and keypunch were absent, and there was no viewer for the printer output.Therefore I decided to write an integrated tool that would combine all these components. The idea of Jason was born.

Oh, but why Jason? Like Hercules, Jason was a Greek mythological hero, and together with Hercules was on the quest for the Golden Fleece. As you see, they have already collaborated in the past!  (A joke).

Please note: I did it just for fun! Of course, as a professional programmer I maintained some minimal coding standards, but don't expect too much. Just evoke these old good times when the computers were young!

2. Hercules

If you are not familiar with Hercules and OS MVT, there is a list of sites (absolutely incomplete!) where you may download Hercules and OS, and get additional information:
3. Installation and operation

This is Jason

            This is Jason!

Install Hercules and your favorite OS. Edit configuration file so that it specifies correct DASD and tape volumes. That's all. You don't need to add Hercules path to the environment, Jason will do this for you dynamically.

Now copy jason.exe to your directory of choice. Hercules directory is a good choice. If your configuration file is called hercules.cfg, Jason will find it automatically. If necessary, create desktop shortcut.

Start Jason. It will attempt to locate Hercules executable and configuration file. Defaults are <jason directory>\hercules.exe and <jason directory>\hercules.cnf. If any file is missing, Jason will ask you to find them manually:

Sometimes Hercules stops or crashes on attempt to attach console printer. Probably this is my error, but I was unable to find the reason. To avoid this, leave checkbox Connect console printer unchecked. Other options will be explained elsewhere.

Now Hercules opens devices and reports them to Jason. Devices are displayed in the top part of the Jason window in order of their arrival. If necessary, rearrange them by pressing left mouse button on device and dragging it while pressing. First three devices (Bookshelf, Herculse console and CPU) are fixed and cannot be moved. Jason saves order of devices to the file jason.ini. Use right mouse button to scroll device strip.

At this moment, Hercules is running but CPU is paused and waits for your commands. Click on the CPU image, select CUU address of the booting device (frequently it's 150) and press IPL button. See the blinking lamps? Now, if your OS is a MVT 21.8, your system console terminal will show:

(It will show IEA101A SPECIFY SYSTEM PARAMETERS FOR RELEASE 03.8 if you are running MVS 3.8).

Excellent! Your mainframe is starting! What to do now is best described in the documentation delivered with the OS.

4. Bookshelf


Bookshelf is a device made mostly of virtual wood. (A joke). It can keep references to the frequently used documents. Simply drag and drop your files here. Doubleclick on the title to open it in the default application. Bookshelf does not accept URLs.

Meaning of the buttons:
  • Add book - opens dialog asking you to add new file
  • Open book - opens selected file in the default application
  • Remove - removes selected file from the list
  • Move up - moves selected title one line to the top
  • Move down - moves selected title one line to the bottom

5. Hercules console

This is a replacement for the original Hercules console. It also displays Jason messages (in orange). To send command to Hercules, type it in the bottom line and press Enter or Send.

To change the font, press button Hercules in the Jason setup dialog and select new settings. Only fixed-pitch fonts are allowed.

6. CPU

Left window on the bottom displays current state of the of CPU 0. Registers GR0-GR3 and PSW are mapped to the lamps on the front panel above. Multiprocessor systems are not yet supported.

To boot the system, select CUU address of the boot device on the rotary switches (mouse only!) and press IPL button. Default address is 150.

To change the font used to display contents of registers, press button Hercules in the Jason setup dialog and select new settings. Only fixed-pitch fonts are allowed.

The picture of the front panel corresponds more or less to the IBM System 360 model 65.

7. Display

This device emulates IBM-3278-4 terminal. Only basic features, sufficient for monochrome operation, are implemented in the first version. Note also the following deviations from the standard:

  • Erase EOF is not yet here
  • If field ends with spaces, Insert is still allowed
  • Trailing spaces are discarded
  • If cursor is in the protected field, keyboard input is ignored instead of sending event

Probably there are some other errors, which I was unable to find.

To change the terminal font, press button Display in the Jason setup dialog and select new settings. Only fixed-pitch fonts are allowed.

Emulation of special 3270 keys

PC key

3270 meaning


Toggles between Insert and Overwrite modes















8. Console printer

Console printer in Jason is a pure printing device, without the possibility to reply from the keyboard. Its output is kept in memory. Button Save allows you to save output to the ASCII file. Button Discard clears contents of memory buffer.

To change the font, press button Console in the Jason setup dialog and select new settings. Only fixed-pitch fonts are allowed.

For unknown reasons, on some computers Hercules may stop responding or crashes if console is active. To prevent this, uncheck optionConnect console printer in the Jason setup dialog.

9. Printer

Printers in Jason are made "real-time". They artificially slow down the output, so that you can see the lines flowing on the screen. Unlike in original Hercules, output is not saved to the file. Rather, it is kept in the memory (approximately 1000 pages, 132x60 symbols each). New page processing is turned off. If control program requests new page, printer displays empty line with symbol '♀' in the first position (corresponds to form feed in 437/OEM code page). Jason has different graphical presentations for 1403 and 3211 printers. 3211 is faster, as in the real life.

To change the font, press button Printer in the Jason setup dialog and select new settings. Only fixed-pitch fonts are allowed.

Button Save allows you to save printout to the ASCII file. Button Discard clears contents of memory buffer.

10. Card reader and editor

This device combines card reader and puncher. To start a job, load ASCII file with deck image, edit it if necessary and press Submit button.

The built-in editor is tailored for card images. It has fixed line length of 80 columns. Columns 73-80 are preserved: you can edit them only if cursor is placed in this area. If you insert some text in the middle of the card, symbols that reach column 73 will be discarded. Selection, copy and paste operations work either with part of the single card or with several complete cards. You can't, for example, select text from column 10 on card 1 to column 20 on card 3. If you try this, editor will select cards 1 and 2. Empty fields are interpreted as spaces.

Button Card view toggles between coding form and punched card views. In the punched card mode, editing is fully supported, although you can see only single card at a time.

Tabulation depends on the language. Jason supports Assembler and Fortran. In the autodetect mode, Jason traces several first cards for strings like EXEC FORTHCLG. Cards containing reserved JCL combinations (// or /*) in the first two columns have their own tabulation stops, as listed in the following table:


Tab stops


9, 17, 25, 33, 41, 49, 57, 65, 73, 81


12, 16, 25, 33, 41, 49, 57, 65, 73, 81


6, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 73


10, 16, 25, 30, 35, 40, 45, 50, 55, 60, 65, 73, 81

If you press Enter in the Insert mode, card is split in two. Label remains on the first card. Backspace in the first column merges cards, but only if there is sufficient free space on the previous card. To insert new card, move cursor to column 81 and press Enter.

Ctrl+N renumerates the cards. If deck is small (less than 9999 cards), first card gets number 00010000, second - 00020000, and so on. Maximal length of the file is limited to 1,000,000 cards. Undo buffer keeps approx. 7500 cards.

To change the font, press button Editor in the Jason setup dialog and select new settings. Only fixed-pitch fonts are allowed.

Here is the list of supported keyboard shortcuts. Some of them are available in two forms. Variant 1 is a classical one (Microsoft), and variant 2 is used by Borland's IDE (I am a fan of Borland, and Jason is created with BCB 5.0). Both can be used interchangeably:

Editor shortcuts

Variant 1

Variant 2




Open file



Save contents to file


Ctrl+Q, F

Open text search dialog



Search next


Toggle between form and card view



Select whole text



Renumerate cards (columns 73-80)


Move cursor


Move cursor to column 1


Move cursor to end of text, then to end of label


Move cursor 1 page down


Move cursor 1 page up


Move cursor to the first line


Move cursor to the line following last

Shift+(Arrows, Home, End, PgDn, PgUp)

Extend selection


Delete previous character or merge lines


Delete next character


Split line



Undo last action



Redo last undone action



Cut selection to clipboard



Copy selection to clipboard



Paste clipboard to cursor position


Ctrk+K, C

Copy selection to cursor position


Ctrl+K, V

Move selection to cursor position


Ctrl+K, Y

Delete selection


Ctrl+K, H

Cancel selection



Delete current line


Toggle between Insert and Overwrite modes

Tab (Insert mode)

Insert spaces till the next tab position

Tab (Overwrite mode)

Move cursor to the next tab position

11. Card punch

A card punch device keeps output in the memory buffer. To discard the deck, press Discard. If you want to save cards to file, press Save. Button Card view toggles between the coding form and punched card views.

Card punch uses the same editor as reader, but editing is not allowed. However, you can copy parts of the deck to clipboard.

12. DASD device

If option List DASD and TAPE contents is active, each time new disk is mounted Jason calls utility dasdls.exe and redirects its output into the DASD window. Additionally, it displays volume label (VOLSER) on the disk cover.

Button Mount allows you to replace the volume. As far as I understand, Hercules does not allow to leave DASD device empty.

13. Tape device

When option List DASD and TAPE contents in Jason setup dialog is activated, each time new tape is mounted Jason calls utility tapemap.exe and redirects its output into the associated window. Additionally, it displays volume label (VOL1) on the door.

If left reel has red protection ring, tape is mounted in the read-write mode and write operations are enabled. If ring is absent, tape is read only. Buttons have the following meaning:

  • Mount RO - mounts new tape in the read only mode (with removed protection ring)
  • Mount RW - mounts new tape in the read-write mode (with installed protection ring)
  • Remove - unmounts tape
  • New tape - creates new tape and mounts it in the read-write mode. Volume label is set to the first 6 characters of the file name.

14. Device indicators

Most devices have 4 lamps indicating their current state, as in the top row on the picture below:

  • Red lamp - device is online
  • First green lamp - device is busy
  • Second green lamp - I/O operation is pending
  • Yellow lamp - device is open (attached to the the file)

15. Licensing

Jason is a "clean-room" implementation. I assure that my part of code is written by myself alone and is not based on any 3-rd party work.

However, I can't guarantee that this program doesn't infringe any patents, trade marks or other stuff that makes lawyers rich. If you are going to use Jason, all the burden of proof is on your side.

To make lawyers (un)happy:

Jason is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

Jason is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/

Jason documentation, including this site is released under the Creatice Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Visitors so far: Counter hostet by EUserv

This site is Copyright (C) 2010 Oleh Yuschuk, 
ollydbg at t-online de. You are allowed to cite and mirror it in whole or in parts, according to the Creatice Commons Attribution  - NonCommercial - ShareAlike 3.0 Unported License.