xref: /original-bsd/sys/vax/mdec/rdboot.c (revision 801f6a8d)
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