A Zero Level Interrupt Handler
© 2013 Stan Yack

In 1973 I was working at my first regular full-time job, in IT at Simpsons-Sears. In the three years that I'd been there, I had risen in the ranks of the Technical Services department until, having acquired the job title of "Systems Programmer", I considered myself one of the hotshots.

It was at Sears that I created a "Zero Level Interrupt Handler" (ZLIH), a "patch" to the operating system which today would be called a software "hack". I named it after IBM's First Level Interrupt Handlers, the OS/360 Operating System components that gained control as soon as some real-time event was detected that might require software intervention. Such an event might be the physical failure of an input/output device like a tape drive, or the logical failure of a software instruction.

One of our IBM mainframes was a System/360 Model 50 IBM 360 Model 50 with 512K of RAM. (No, that's not a typo; in 1973 a major corporation's largest mainframe computers could easily have just 1/2 a megabyte of main memory!) That computer, named "the blue Model 50" because of its blue side panels, was periodically suffering "false program checks". That's what we called it when the hardware reported encountering machine instructions whose operation codes were not within the System/360 machine language lexicon, but which our inspection showed to be perfectly valid.

Each false program check resulted in a disastrous collapse of the operating system, requiring that the computer operators re-IPL the system (IPL stands for "initial program load", the IBM mainframe equivalent of a PC reboot.) Even in the early 70s, without today's thousands of online users typically connected to a mainframe server, unplanned rebooting was not something you wanted to have to do. Mainframes were the only computers around — the PC had not been invented yet — and like all large retail corporations, Sears used mainframe programs for accounting, for inventory control, for catalog order processing, ... A re-IPL would suspend all that activity for as long as half an hour. And the IBM lease for the blue Model 50 cost Sears tens of thousand dollars a month, at a time when a typical hi-tech starting salary was just $8,000 a year, so it took a lot of catalogue sales (Sears main source of revenue) to pay for a half hour of system down time and redoing any work irrecoverably lost in a crash.

IBM's engineers were of course called in to try to fix things. But all they could tell us was that the false program checks had something to do with some newly added Gutting a mainframe computer hardware components facilitating online communication ... and they'd have to do some more analysis before they had enough information to fix the problem. Well, our very first online system was nearing the end of its tests, and was scheduled to be implemented very soon. We decided that we couldn't wait for IBM's hardware experts to solve the puzzle.

I was the hacker that found a solution, using low-level tools to modify the IBM OS nucleus, patching its First Level Interrupt Handler, aka the FLIH. (To be technically accurate, I patched the "program new PSW" to transfer control to my ZLIH; if you're actually interested in this stuff, click here to get more technical information from an IBM website). Before letting a failing instruction fall through to the FLIH, my change would have ZLIH retry the failing instruction, just once. Our hope was that any instructions that had failed because of obscure timing problems, like those derailed by our new hardware, would work when those instructions were retried.

I'm now a genuine old-timer in the software business, and I sometimes sit back in my rocking chair, Old fart with handlebar mustacheexpounding on the '70s as the frontier of computing, telling tall tales where hardware and software engineers were the cowboys and Indians, and systems programmers were the lawmen. (Yes, in those days we were almost all male.) With the complexity of software increasing almost beyond human comprehension, today's systems programmers have to be more restrained than we were, carefully installing just the modifications that have received a software vendor's careful scrutiny, always on guard against chaotic software intrusions. Today, installing your own patch into the OS nucleus on a mainframe server would probably be a firing offense!

But in 1973 we mainframe systems programmers were some of the earliest computer gurus, considered to be the wisest technicians in the IT department (or so we thought). Our managers gave us almost unlimited freedom to do whatever we thought necessary to maintain the stability of their magical new computer systems.

And in this case at least, that trust was rewarded: from the time my ZLIH was installed, there were no more false program checks on the blue Model 50.

Click here to see the ZLIH Assembly-language program listing.

Click here to see the ZLIH machine code patches input to the system utility "Superzap".

(Both of these are highly technical, and will make sense to you only if you have an understanding of IBM mainframe Assembly language and System/360 machine code.)

I am an instructional designer and computer softsmith, B Math (University of Waterloo). I have implemented application and system software on several computing platforms including IBM mainframes, MS Windows, MacOS, and UNIX. In recent years I have been teaching and developing online courses.

Stan Yack
Instructional Designer and Softsmith