There are two main versions of the Hercules emulator: the original development branch aka Spinhawk, which is maintained by Roger Bowler and others, and the Hyperion fork from SoftDevLabs (SDL). Next let’s take a look at installing the Hercules mainframe emulator, followed by VM/370 operating system. That’s it, we now have our 3270 coax interface and open establishment controller set up. Now on to installing OEC and we started by cloning the git repository and creating a Python virtual environment, before installing the required modules with pip. To ensure that this would be in our path, we then edited ~/.bashrc and added: PATH=$PATH:/usr/local/opt/python-3.9.5/bin OEC configure -prefix=/usr/local/opt/python-3.9.5
$ sudo apt install git build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-devįollowing which we could get the latest Python 3.x sources, build and install these. We started by installing the build dependencies, along with git. OEC requires Python 3.8 or greater, while Raspbian is provided with Python 3.7, so we needed to install a more recent version. Our coax terminal interface is now complete, but the OEC application itself is written in Python and we’ll run this on a Raspberry Pi 4 4GB (182-2096) Following which we could open the coax interface1 firmware project, select Build and then Upload.
This makes use of VS Code and since we already have it installed, we just needed to open its Extension Manager, search for the PlatformIO IDE and select to install. Once assembled the shield was then fitted onto an Arduino Mega 2560 (715-4084)Īt this point, we could now program the Arduino and the firmware sources are provided as a PlatformIO project.
Given that the 3270 ICs are becoming quite rare, it was decided to socket these so that reuse would be possible. Working up to larger components, such as the capacitors and pulse transformer. The 3270 ICs had been acquired some time ago before the v2 design was completed, so this is the version that we’ll be building here.Īs is customary, we started out by soldering the smaller components, such as resistors. There are currently two versions of the coax interface: the original is an Arduino shield that uses hard-to-find 3270 transmitter and receiver ASICs, while the more recent v2 design uses an STM32 microcontroller together with an iCE40 FPGA. However, in our case, we actually want to use a classic terminal and so this means interfacing with its coax connection, but on the other side, the OEC will use TN3270 for connecting to the emulated mainframe.
Interface buildĪs noted in the previous post, the 3270 data stream (protocol) can be run over a TCP/IP connection - aka TN3270 - and this is commonly used with mainframe computers today unsurprisingly very few would use a real physical terminal, when much more convenient terminal emulation is available for Linux, Windows and Mac. The OEC hardware is Arduino-based and in our case, we’ll be using this to interface with an emulated mainframe running on a Raspberry Pi 4.
In this post, we now take a look at a rather neat open-source implementation of an “establishment controller” which is used to interface a 3270 series terminal with a mainframe. In a previous post, we took a fresh look at IBM 3270 and noted how this family of terminals is particularly interesting, working as part of a highly integrated system that allowed a mainframe computer to scale and serve thousands of users.
Building the Open Establishment Controller interface and using this to connect a 3270 terminal to an emulated IBM mainframe running VM/370.