;DiskBootIOCBs.bravo last edited by Jim Frandeen November 9, 1981 1:04 PM: Move the IncrementDataPgNum bit back one word
;IOCB’s used for disk booting. Heads have been moved to cylinder 0 by phase 0

@100;data area
B;special block type, ignore
FE;word count
0;not used
#02
0000;final IOCB status word, set by DiskDlion ucode
0000;next IOCB (should always be 0)
[01;address of seek IOCB
[25;address of transfer IOCB
[30;address of verify read read parameter area
[20;address of verify verify read parameter area
#03
0000;headercylinder[0..15]
0000; 2head[0..7],, sector[0..7]
#04
0000;labelID[ 0..15]
0000; 2ID[16..31]
0000; 3ID[32..47]
0000; 4ID[48..63]
0000; 5ID[64..89]
0000; 6page[7..22]
0000; 7page[0..6],, unused[0..5]← 0 ,, flags[0..2]
0000; 8 type[0..15]
0000; 9 bootChainLink[0..15]
0000; 10

;align on 16 word boundary
0 0 0
0 0 0 0
0 0 0 0

;verify verify read parameter area (must be 16 word aligned)
#20
00;# sectors to write, set at run time
31;(number of sectors that may be skipped in
;looking for the proper sector) + 1
0432;control word to verify header field
1;word count for verify of header field
[03;address of header template in IOCB
1C;abort if NotReady, WriteFault or Overrun after header
3;skip to next sector if CRC or Verify error on header
0432;control word to verify label field
0B;word count for label field verify
[04;address of label field in IOCB
1f;abort if NotReady, WriteFault, Overrun, CRC or
;Verify error after label
0430;control word to Read data field
8100;word count for Read of data field (256)
3;virtual page # for data buffer
1e;abort if NotReady, WriteFault, Overrun or CRC
;error after data
0420;control word used halt hardware after each field
0426;control word used to find sector mark for header

;align on 16 word boundary
0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

;verify read read parameter area (must be 16 word aligned)
#30
00;# sectors to write, set at run time
31;(number of sectors that may be skipped in
;looking for the proper sector) + 1
0432;control word to verify header field
1;word count for verify of header field
[03;address of header template in IOCB
1C;abort if NotReady, WriteFault or Overrun after header
3;skip to next sector if CRC or Verify error on header
0430;control word to Read label field
0C;word count for label field read
[04;address of label field in IOCB
1e;abort if NotReady, WriteFault, Overrun or
;CRC error after label
0430;control word to Read data field
8100;word count for Read of data field (256)
2;virtual page # for data buffer
1e;abort if NotReady, WriteFault, Overrun or CRC
;error after data
0420;control word used halt hardware after each field
0426;control word used to find sector mark for header
;Seek IOCB
#01
0000; -(number of cylinders to move) supplied at run time
8000 0422;insure that Seek Complete
7 0000;Set the IOCBDone bit in UField and clear the
;UStatus register. Otherwise, they will return spurious
;status bits not valid for a Seek operation into the
;final status word.
#06
8000 0000 8000 0000;Send step pulse (two words supplied at run time)
0 [01;increment the remaining distance, Zero yet?
2 [06;no, send another step pulse
6 0 0 0400 [02;yes, quit now.

;transfer IOCB
#25
5 0;load the parameters.
8000 0422;wait for SeekComplete
800;yes, transfer run of pages
2 [26;if had error, finish anyway
#26
6 0 0 0400 [02;finish up IOCB