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

;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