;TridentBootIOCBs.bravo  
;last edited by DEG       1-Sep-84 22:49:27 - Add copyright notice.  
;last edited by ETN   February 2, 1982  4:21 PM - Add IOCB.tries for initial retries  
;last edited by ETN   January 13, 1982  6:28 PM - Fix boot from 1,2,or3 bug  
;last edited by ETN   December 31, 1981  3:14 PM - Fix bug in DataParam  
;created by ETN   December 7, 1981  1:40 PM 

; Copyright (C) 1981, 1982, 1983 by Xerox Corporation.  All rights reserved.

;IOCBs and CSB used in trident booting. 
;  There is one IOCB. DCB[0] points at it. DCB[0] can be and is used for all drives. 
;  Based on the boot drive, the BitSignAdr is merged into
;        seekParam, headerParam, dataParam, and the r/v forms of labelParam(42/46).
;  Its initial value in the vrr IOCB are for vrr of page 0.

	@100	;data area
;  ********  IOCB for vrr  ********
#01	B	;0:      special block type =ignore.  Also IOCB.clientHeader.cylinder
	FE	;1:      word count.  Also IOCB.clientHeader.{head, sector}
	0	;2:      unused
	0	;3:      unused
 	0 0	;4-5:   IOCB.dataPtr {low, high}
	0060	;6:      IOCB.tries 96 total retries during initial
	0	;7:      IOCB.pageCount
	0 0	;8-9:   IOCB.deviceStatus
	0000 0000 ;A-B:   IOCB.diskHeader [microcode gets header from here also]
	0	;C:      unused
	0000	;D:      IOCB.microNext
	0000	;E:      IOCB.dcbOffset
	0000	;F:      IOCB.filePageLo

;  IOCB.seekParam
	0000	;10:     .transferMask
	0000	;11:     .kDrive  no recal needed [BitSignAdr will be merged here] 
	0C00	;12:     .kCyl
	0C00	;13:     .kHead
;  IOCB.headerParam
	0117	;14:     .op=headerVerify, incrDataPtr=TRUE, firstIOCB=TRUE
	2C44	;15:     .command
	0083	;16:     .control [BitSignAdr will be merged here]
	0E00	;17:     .errorMask
;  IOCB.labelParam
	0 0 0 0	;18-1B:  set dynamically for vrr/vvr (see 40 & 44 below)
;  IOCB.dataParam
	000E	;1C:     .op=dataRead
	2C44	;1D:     .command
	008E	;1E:     .control [BitSignAdr will be merged here]
	0600	;1F:     .errorMask

;  IOCB.clientLabel  20 - 29
	0 0 0 0 0
	0 0 0 0 0
; unused during boot
	0 0 0 0 0 0	;2A-2F:   

;  IOCB.diskLabel  30 - 39
	0 0 0 0 0
	0 0 0 0 0
; unused during boot
	0 0 0 0 0 0	;3A-3F:   

; The following are used to switch between label read and label verify
;  label read param
	000A	;40:     .op=labelRead
	2C44	;41:     .command
	008C	;42:     .control [BitSignAdr will be merged here]
	0600	;43:     .errorMask
;  label verify param
	000B	;44:     .op=labelVerify
	2C44	;45:     .command
	0085	;46:     .control [BitSignAdr will be merged here]
	0E00	;47:     .errorMask

; ********  initial CSB  ********
; Can and do use DSB(0) even for any boot drive because the microcode gets all
;  necessary info from the IOCB. 

; DSB (0)
	0 	;48:     .pilotNext   
	0	;49:     .microNext 
	0 	;4A:     .pilotTail   
	C000 	;4B:     .recalibrate=1, .selectMask=8, .type=0, .dcbOffset=0   
; DSB (1)
	0 	;4C:     .pilotNext   
	0 	;4D:     .microNext   
	0 	;4E:     .pilotTail   
	A004 	;4F:     .recalibrate=1, .selectMask=4, .type=0, .dcbOffset=4   
; DSB (2)
	0 	;50:     .pilotNext   
	0 	;51:     .microNext   
	0 	;52:     .pilotTail   
	9008 	;53:     .recalibrate=1, .selectMask=2, .type=0, .dcbOffset=8   
; DSB (3)
	0 	;54:     .pilotNext   
	0 	;55:     .microNext   
	0 	;56:     .pilotTail   
	880A 	;57:     .recalibrate=1, .selectMask=1, .type=0, .dcbOffset=A