A Fresh Look at IBM 3270 Information Display SystemFollow article
Classic mainframe display system from the past that was in many ways ahead of its time.
The IBM mainframe computer has evolved over a period spanning almost six decades and in part, this has been in response to wider industry trends, with notably the advent of “midrange” and personal computers, and the sweeping success of TCP/IP. However, the mainframe has also been responsible for delivering features and functionality which would only come much later to smaller systems, not to mention enduring and enviable reliability which is hard to beat today.
This post takes a look at the IBM 3270 Information Display System, which played a key role in enabling a single mainframe computer to scale and serve thousands of users. It should also be noted that, while discussing the system mostly in the past tense, the mainframe itself very much lives on and actually so does 3270, albeit nowadays as a protocol that is run on top of TCP/IP.
Large Scale Systems
IBM 3090 Processor Training video.
Most computer systems that you might encounter on a day-to-day basis are more or less the same and whether a server, desktop or mobile device, will have a similar architecture. The main differences being the number of CPU cores, and the amount of RAM and disk storage. In addition to which, with the exception of perhaps a graphics processor (GPU) or storage controller, the main processor is responsible for handling just about everything else.
In contrast, large scale systems put the mainframe at the centre and adopt a far more hierarchical design. There are still one or more “main” CPUs, but in addition to which there are also many special-purpose processors designed to handle specific tasks, such as I/O, communications and cryptography. A mainframe is constructed in such as way as to ensure that wherever possible the Central Processor Complex (CPC) is left to do what it does best, while many other specialised processors and the wider overall system work to offload tasks.
This brings us neatly to the snappily named IBM 3270, which was a family of computer terminals that transferred large blocks of data to the mainframe, thereby reducing the number of I/O interrupts. Not unlike how these days a web page might be tabbed around and data entered into its various fields and validated, before finally pressing submit and only at this point data being sent to a server. This might seem like an obvious thing to do now, but for many years midrange systems would typically have to respond to every single keypress of every attached terminal.
Mainframes bring numerous other benefits too, such as a very high uptime and the ability to hot-swap even CPUs and to update their microcode (firmware) while they are operational. Likewise, commodity platforms clearly have their benefits also, not least of which being the cost for less mission-critical applications. Further to which, things have become particularly interesting in more recent years, as modern mainframes adopt a hybrid strategy and run Linux workloads alongside classical mainframe ones, with the machines shrinking in size and cost also.
In any case, the object of this post is not to perform any kind of detailed comparison of computer architectures and next let’s take a look at 3270 in a bit more detail.
Data stream and Interface
A defining characteristic of the display system is its data stream. Whereas a regular non-IBM terminal would simply transmit keyboard presses and display inbound characters in real-time, 3270 terminals and printers have buffers that are managed by commands that allow them to be erased, written to, read from and copied etc. Each location on the screen has an address and its contents are manipulated by the mainframe, but this, in turn, is only ever interrupted and data sent to it when a special key is pressed, such as Enter, SysReq, Clear or one of the PF keys. Hence once a program updates the screen, communication is complete and the user is free to move between fields and input data, with this only then being sent when this is requested.
An IBM 3270 physical interface frame (github.com/lowobservable).
The physical interface of choice for a regular terminal is RS-232 and the standard specifies 15m as the maximum cable length, with a typical speed of 9,600 bits/second. Whereas a 3270 terminal has a 93 ohm coax connection and can be located up to 3 kilometres from its controller, with a data link that operates at 2.3587 Mb/s. In addition to which multiplexers are available that allow a single cable to be used to connect multiple terminals, while some later terminals are capable of also supporting multiple sessions and file transfer.
This may all sound a little strange nowadays when Ethernet and TCP/IP have been pretty much been the standard networking technologies for some time. However, for decades there were many competing standards and IBM, with 3270 and Systems Network Architecture (SNA), were one of those leading the race, along with others such as Digital Equipment Corporation with DECnet.
As previously mentioned, 3270 is very much still alive and well, thanks to Telnet 3270 — aka tn3270 — which allows terminal emulation software running on platforms such as Linux and Windows to send and receive 3270 data streams over the telnet protocol. While many mainframe applications may have moved to more modern desktop or web front-ends, system and application programming will still generally be carried out via a tn3270 terminal session.
An IBM 3279, David Fischer CC BY-SA 3.0.
There are numerous variants of 3270 display and each with its own model number — having evolved over the years to become cheaper and to support new features, such as colour instead of monochrome displays, and integration of a floppy drive and support for file transfer.
One key distinction amongst 3270 displays is the Control Unit Terminal (CUT) vs. Distributed Function Terminal (DFT) variants. With the former, the data stream is terminated at the display controller, whereas with the latter which came later, the display is able to handle most of the data stream itself. The benefits of DFT include the ability to support file transfer and multiple sessions.
The advent of the PC also saw the introduction of 3270 emulation, with expansion boards manufactured in ISA, MCA and PCI variants, along with PCMCIA cards for laptops.
Tracking down a complete 3270 display nowadays is not easy and this is something that I’d been searching for every now and again, over a period spanning about 10 years. In the end, finally giving in and buying one from the US, as they appear to be somewhat more common there than they are here in the UK; sometimes a base unit with the logic board may be found, but the matching monitor and keyboard — both of which IBM proprietary — are much harder to track down.
Monitors are presumably becoming fewer as they suffer age-related failures, while the keyboards on the other hand have become increasingly coveted for their legendary build quality and positive typing action. This can be frustrating for the admittedly smaller number of us who would like to run complete original terminal setups, but at least they’re not going to landfill.
The display pictured at the top of this post is an IBM 3179, which was announced in 1984, has a 14 inch CRT and boasts 7 colours. At the time of introduction, this could have been connected directly to the mainframe processor via a display/printer adapter, else via a controller such as an IBM 3274. Controllers were often located at remote sites and featured Token Ring, Ethernet or “teleprocessing” adapters that would allow connection via a telecoms circuit, such as synchronous serial.
Since this terminal would be used in the UK a 115VAC transformer was be needed and a Block 200VA autotransformerselected for use with it.
The transformer is supplied with a US standard mains socket for output and so this was cut off and replaced with a C13 cable mount IEC connector.
Of course, the last thing we’d want to happen now is to forgetfully attempt to power the display with UK 230VAC, so a warning stickerwas affixed by the mains input.
A display needs a controller and here I’d been a little more lucky and managed to track down a couple of 3174 Establishment Controllers in the UK. These will each directly connect up to 8x displays and versions were offered with synchronous, asynchronous, Ethernet and Token Ring interfaces for remote connection to one or more mainframes. Local variants were also produced that featured “Bus & Tag”, a parallel interface that enables direct connection to the mainframe — or rather via yet more specialist processors which take care of channel communications.
The 3174 is actually a fascinating piece of equipment in itself and was an eminently flexible platform, that could be configured such that a display was connected to a default service or presented options, with support for TCP/IP along with SNA. Also the ability to act as a gateway between these different worlds and allow displays to connect to ASCII hosts, such as a UNIX server. Other features included response time monitoring for ensuring the quality of service.
Unfortunately, 3174 models with Ethernet appear to be particularly rare and putting one of the variants that I acquired to use, is going to involve converting from a serial port or Token Ring interface. As such this is going to be a longer-term project.
A Raspberry Pi 1 sat on top of an IBM 4381 processor multi-chip module.
At this point, it’s likely not clear why anyone today would want a fully functional 3270 display and how they might practically put one to use. For context, back in May 2012 I wrote a post which demonstrated how a Raspberry Pi could be used to run software called Hercules, to emulate a mainframe, which could then in turn run a genuine vintage mainframe operating system — and having a real mainframe terminal to use with this combination would be the icing on the cake!
Open Establishment Controller
Fortunately, it appears that I am not alone in this desire, nor failure to acquire a 3174 with Ethernet interface. GitHub user lowobservable found themselves in a similar predicament and set out to create a project named oec — short for open establishment controller — which provides a Python implementation, along with an open hardware coax interface to use with this. To say that I was delighted to stumble across this project would be something of an understatement.
Their first-generation hardware design uses the now obsolete National Semiconductor DP8340 IBM 3270 protocol transmitter and DP8341 receiver ICs, together with an Arduino Mega 2560. Whereas the later interface2 design replaces those ICs with a Lattice iCE40 FPGA and uses an STM32 microcontroller. When I first learned of the project over a year ago I managed to pick up some of the National Semiconductor ICs from an eBay vendor in the US, hence plan to build up this version first. At some point in the future, I may have a go at building the FPGA + STM32 version also.