Now we are ready to start preparing to IPL directly from a DASD volume instead of the card reader.  When the CPU IPL’s from DASD the IPL record at CC=0000 HH=00000 R=01 will be read into memory.  Just like our first IPL card it contains a PSW and two CCW’s.  The first CCW is a Read Data (X’06’). Since it is chained from the initial IPL CCW we do not need a Seek or Search CCW.  The Read CCW will read the next record on the track (CC=0000 HH=0000 R=02).  This second IPL record contains additional CCW’s and data.

The first IPL record has a Key Length of 4 with the value ‘IPL1’ and a Data Length of 24.  The second IPL record has a Key Length of 4 with a value of ‘IPL2′  and a Data Length of 144 (or at least it does on my 3350).  These records were created when the volume was initialized.

The third record is the Volume Label and is followed by the IPL text in record 4.

Our IPL1 record needs to contain a PSW and two CCW’s.  We will load the contents of the second record at location x’4000’ so our first record needs to contain:

00000000 00005000  PSW
06004000 60000060  Read Data into location x'4000', Command Chain, SLI, x'60' byes of data
08004000 00000000  TIC location x'4000'

This will cause x’60’ byes from our IPL2 record to be read into location x’4000′ and then the CCW program will TIC (branch) to get the next CCW from that location.

Our IPL2 record needs to contain the necessary CCW’s and data fields to read in the IPL text from record 4.  We will read the IPL text into location x’5000′.  Our IPL2 record needs to contain:

07004021 40000006 SEEK, Command Chain
31004023 40000005 SEARCH ID Equal, Command Chain
08004008 00000000 TIC (back to search CCW)
06005000 2000**** READ Data, SLI
00000000 00000004 MBBCCHHR (for Seek and Search)

The data length in the Read Data CCW should be the same as the actual length of our IPL text record.

[Next – TXXIPL2D – Writing IPL Text To DASD]