1*801f6a8dSbostic /* 2*801f6a8dSbostic ** @(#)rdboot.c 7.1 (Berkeley) 01/22/88 3*801f6a8dSbostic */ 4*801f6a8dSbostic 5*801f6a8dSbostic /* 6*801f6a8dSbostic ** This is a VMB boot block for microvax. For more info, see 7*801f6a8dSbostic ** the KA-630 User's manual. 8*801f6a8dSbostic */ 9*801f6a8dSbostic 10*801f6a8dSbostic /* 11*801f6a8dSbostic ** --------------------------------------------------- 12*801f6a8dSbostic ** BB + 0: | 1 | N | any value | 13*801f6a8dSbostic ** --------------------------------------------------- 14*801f6a8dSbostic */ 15*801f6a8dSbostic xxx: .long 0x001040000 16*801f6a8dSbostic /* 17*801f6a8dSbostic ** --------------------------------------------------- 18*801f6a8dSbostic ** 4: | low lbn | high lbn | 19*801f6a8dSbostic ** --------------------------------------------------- 20*801f6a8dSbostic */ 21*801f6a8dSbostic .long 0x000010000 22*801f6a8dSbostic /* 23*801f6a8dSbostic ** BB + 2*N 24*801f6a8dSbostic ** --------------------------------------------------- 25*801f6a8dSbostic ** + 0: | check byte | K | 0 | 18 (HEX) | 26*801f6a8dSbostic ** --------------------------------------------------- 27*801f6a8dSbostic */ 28*801f6a8dSbostic .long 0x0e7000018 29*801f6a8dSbostic /* 30*801f6a8dSbostic ** --------------------------------------------------- 31*801f6a8dSbostic ** + 4: | any value | 1 or 81 | 0 | 32*801f6a8dSbostic ** --------------------------------------------------- 33*801f6a8dSbostic */ 34*801f6a8dSbostic .long 0x000008100 35*801f6a8dSbostic /* 36*801f6a8dSbostic ** --------------------------------------------------- 37*801f6a8dSbostic ** + 8: | size in blocks of the image | 38*801f6a8dSbostic ** --------------------------------------------------- 39*801f6a8dSbostic */ 40*801f6a8dSbostic .long 0x00000000f 41*801f6a8dSbostic /* 42*801f6a8dSbostic ** --------------------------------------------------- 43*801f6a8dSbostic ** +12: | load offset from default load address | 44*801f6a8dSbostic ** --------------------------------------------------- 45*801f6a8dSbostic */ 46*801f6a8dSbostic .long 0x000000000 47*801f6a8dSbostic /* 48*801f6a8dSbostic ** --------------------------------------------------- 49*801f6a8dSbostic ** +16: | offset into image to start execution | 50*801f6a8dSbostic ** --------------------------------------------------- 51*801f6a8dSbostic */ 52*801f6a8dSbostic .long 0x000000002 53*801f6a8dSbostic /* 54*801f6a8dSbostic ** --------------------------------------------------- 55*801f6a8dSbostic ** +20: | sum of previous three longwords | 56*801f6a8dSbostic ** --------------------------------------------------- 57*801f6a8dSbostic */ 58*801f6a8dSbostic .long 0x000000011 59*801f6a8dSbostic /* 60*801f6a8dSbostic ** 61*801f6a8dSbostic ** BB +0: These two bytes can have any value 62*801f6a8dSbostic ** 63*801f6a8dSbostic ** BB+2: This value is the word offset from the start of the 64*801f6a8dSbostic ** bootblock to the identification area described below. 65*801f6a8dSbostic ** 66*801f6a8dSbostic ** BB+3: This byte must be one. 67*801f6a8dSbostic ** 68*801f6a8dSbostic ** BB+4: This longword contains the logical block number 69*801f6a8dSbostic ** (word swapped) of the secondary image. 70*801f6a8dSbostic ** 71*801f6a8dSbostic ** BB+(2*n)+0: This byte defines the expected instruction set. 72*801f6a8dSbostic ** 18(hex) means VAX. 73*801f6a8dSbostic ** 74*801f6a8dSbostic ** BB+(2*n)+1: This byte defines the expected controller type, 0 75*801f6a8dSbostic ** means unknown. 76*801f6a8dSbostic ** 77*801f6a8dSbostic ** BB+(2*n)+2: This byte defines the file structure on the volume, 78*801f6a8dSbostic ** it may be any value. 79*801f6a8dSbostic ** 80*801f6a8dSbostic ** BB+(2*n)+3: This byte must be the ones complement of the sum of 81*801f6a8dSbostic ** the previous three bytes. 82*801f6a8dSbostic ** 83*801f6a8dSbostic ** BB+(2*n)+4: This byte must be zero. 84*801f6a8dSbostic ** 85*801f6a8dSbostic ** BB+(2*n)+5: This byte must be 1 or 81 (hex). This byte defines 86*801f6a8dSbostic ** the version number of the format standard and the 87*801f6a8dSbostic ** type of disk. The version is one, the high bit is 0 88*801f6a8dSbostic ** for single sided, 1 for double sided. 89*801f6a8dSbostic ** 90*801f6a8dSbostic ** BB+(2*n)+6: These two bytes may be any value, but generally they 91*801f6a8dSbostic ** are zero. 92*801f6a8dSbostic ** 93*801f6a8dSbostic ** BB+(2*n)+8: This entry is a longword containing the size in 94*801f6a8dSbostic ** blocks of the secondary bootstrap image. 95*801f6a8dSbostic ** 96*801f6a8dSbostic ** BB+(2*n)+12: This entry is a longword containing a load offset 97*801f6a8dSbostic ** (usually zero) from the default load address of the 98*801f6a8dSbostic ** secondary bootstrap. 99*801f6a8dSbostic ** 100*801f6a8dSbostic ** BB+(2*n)+16: This entry is a longword containing the byte offset 101*801f6a8dSbostic ** into the secondary bootstrap where execution is to 102*801f6a8dSbostic ** begin. 103*801f6a8dSbostic ** 104*801f6a8dSbostic ** BB+(2*n)+20: This entry is a longword containing the sum of the 105*801f6a8dSbostic ** previous three longwords. 106*801f6a8dSbostic */ 107