;TridentBootIOCBs.bravo ;last edited by Grundler 1-Sep-84 22:49:27 - Add copyright notice. ;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 ; 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