;DiskBootIOCBs.bravo last edited by Jim JXF November 9, 1981 1:04 PM: Move the IncrementDataPgNum bit back one word ;Dennis DEG 1-Sep-84 22:44:40 Add copyright notice ; Copyright (C) 1981, 1982, 1983 by Xerox Corporation. All rights reserved. ;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 ;header cylinder[0..15] 0000 ; 2 head[0..7],, sector[0..7] #04 0000 ;label ID[ 0..15] 0000 ; 2 ID[16..31] 0000 ; 3 ID[32..47] 0000 ; 4 ID[48..63] 0000 ; 5 ID[64..89] 0000 ; 6 page[7..22] 0000 ; 7 page[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