Initial Program Load

On the IBM 360/20 there was a blue button on the CPU console labeled “IPL.”  On the 370/158 you initiated an IPL using the integrated operator console (a 3270 device with a light pen).  The end result was the same – the IPL function of the processor was invoked.

The device to be used for the IPL process is specified by the operator prior to invoking the IPL function.  It might have been specified using the dials and switches or it may have been specified on the operator console.

When the IPL function is initiated the processor issues a read command to the IPL device.  This read command reads 24 bytes of data.  Yes! That’s all, 24 bytes.  But this is enough to get the process started.

It can’t be just any 24 bytes of data.  It has to be 24 bytes of very specific data.  To understand the IPL process we have to understand two hardware data structures – the Program Status Word (PSW) and Channel Command Word (CCW).  This is because the 24 bytes read by the IPL process must be an eight-byte PSW followed by two eight-bytes CCWs.

In the next section we will explore the PSW so we have a better understanding of how to get our initial program loader up and running.

[ Next – Program Status Word ]

Card Loader

To run a Bare Metal program we must have some way to get our program into the processor and ready for execution.  We could take the approach I used on the 370/158 that didn’t have any I/O devices except the operator console.  On that system I used the Storage Alter function to enter my program in hex.  (This was also a familiar technique used on early microprocessors)

There are a couple of problems doing this.  First is that it can be very time consuming.  Another problem is this process is very error prone – easy to get lost when entering a long string of hex.  Then there is the problem of making code changes.  You can write patches to the code already entered or you start from the beginning and enter everything again.  In my 370/158 days I avoided starting over from the beginning.  I would spend a few minutes each day adding to the existing code in memory.  As it was patched and re-patched it became difficult to keep up with.  I finally gave up when the system had to be shut down due to some maintenance to the facility.  I just couldn’t bring myself to start entering hex from the beginning.

Fortunately the designers of the System 360/370 processors give us an easier way – if we have an input device.  We can IPL from cards, tape or a disk drive.

We will begin with an IPL from a card reader since it is probably the easiest.  At least from the standpoint of an old timer like myself who is very familiar with decks of cards.

Our initial goal  is to create a small set of cards containing the necessary instructions to load an object deck into memory and cause it to begin execution.

[ Next – IPL Initial Program Load ]