xref: /csrg-svn/sys/ufs/ffs/ffs_tables.c (revision 4462)
1*4462Smckusick /* Copyright (c) 1981 Regents of the University of California */
2*4462Smckusick 
3*4462Smckusick /* @(#)ffs_tables.c 1.1 10/04/81 */
4*4462Smckusick 
5*4462Smckusick #include "../h/param.h"
6*4462Smckusick 
7*4462Smckusick /*	partab.c	4.2	81/03/08	*/
8*4462Smckusick 
9*4462Smckusick /*
10*4462Smckusick  * Table giving parity for characters and indicating
11*4462Smckusick  * character classes to tty driver.  In particular,
12*4462Smckusick  * if the low 6 bits are 0, then the character needs
13*4462Smckusick  * no special processing on output.
14*4462Smckusick  */
15*4462Smckusick 
16*4462Smckusick char partab[] = {
17*4462Smckusick 	0001,0201,0201,0001,0201,0001,0001,0201,
18*4462Smckusick 	0202,0004,0003,0201,0005,0206,0201,0001,
19*4462Smckusick 	0201,0001,0001,0201,0001,0201,0201,0001,
20*4462Smckusick 	0001,0201,0201,0001,0201,0001,0001,0201,
21*4462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
22*4462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
23*4462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
24*4462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
25*4462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
26*4462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
27*4462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
28*4462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
29*4462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0200,
30*4462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
31*4462Smckusick 	0200,0000,0000,0200,0000,0200,0200,0000,
32*4462Smckusick 	0000,0200,0200,0000,0200,0000,0000,0201,
33*4462Smckusick 
34*4462Smckusick 	/*
35*4462Smckusick 	 * 7 bit ascii ends with the last character above,
36*4462Smckusick 	 * but we contine through all 256 codes for the sake
37*4462Smckusick 	 * of the tty output routines which use special vax
38*4462Smckusick 	 * instructions which need a 256 character trt table.
39*4462Smckusick 	 */
40*4462Smckusick 
41*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
42*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
43*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
44*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
45*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
46*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
47*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
48*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
49*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
50*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
51*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
52*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
53*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
54*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
55*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007,
56*4462Smckusick 	0007,0007,0007,0007,0007,0007,0007,0007
57*4462Smckusick };
58*4462Smckusick 
59*4462Smckusick /*
60*4462Smckusick  * bit patterns for identifying fragments in the block map
61*4462Smckusick  * used as ((map & around) == inside)
62*4462Smckusick  */
63*4462Smckusick int around[9] = {
64*4462Smckusick 	0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff, 0x1ff, 0x3ff
65*4462Smckusick };
66*4462Smckusick int inside[9] = {
67*4462Smckusick 	0x0, 0x2, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe
68*4462Smckusick };
69*4462Smckusick 
70*4462Smckusick /*
71*4462Smckusick  * given a block map bit pattern, this table tells whether a
72*4462Smckusick  * particular size fragment is available.
73*4462Smckusick  * used as:
74*4462Smckusick  * if ((1 << (size - 1)) & fragtbl[map]) {
75*4462Smckusick  *	at least one fragment of the indicated size is available
76*4462Smckusick  * }
77*4462Smckusick  * This table is used by the scanc instruction on the VAX to
78*4462Smckusick  * quickly find an appropriate fragment.
79*4462Smckusick  */
80*4462Smckusick #if FRAG == 4
81*4462Smckusick char fragtbl[256] = {
82*4462Smckusick 	0x0, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4,
83*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x2, 0x3, 0x4, 0x8,
84*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
85*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
86*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
87*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
88*4462Smckusick 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
89*4462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
90*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
91*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
92*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
93*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
94*4462Smckusick 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
95*4462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
96*4462Smckusick 	0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4,
97*4462Smckusick 	0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc,
98*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
99*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
100*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
101*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
102*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5,
103*4462Smckusick 	0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9,
104*4462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7,
105*4462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb,
106*4462Smckusick 	0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6,
107*4462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa,
108*4462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7,
109*4462Smckusick 	0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb,
110*4462Smckusick 	0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4,
111*4462Smckusick 	0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc,
112*4462Smckusick 	0x8, 0x9, 0x9, 0xa, 0x9, 0x9, 0xa, 0xc,
113*4462Smckusick 	0x9, 0x9, 0x9, 0xb, 0xa, 0xb, 0xc, 0x8,
114*4462Smckusick };
115*4462Smckusick #endif
116*4462Smckusick 
117*4462Smckusick #if FRAG == 8
118*4462Smckusick char fragtbl[256] = {
119*4462Smckusick 	0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04,
120*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x02, 0x03, 0x04, 0x08,
121*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
122*4462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x04, 0x05, 0x08, 0x10,
123*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
124*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
125*4462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
126*4462Smckusick 	0x04, 0x05, 0x05, 0x06, 0x08, 0x09, 0x10, 0x20,
127*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
128*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
129*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
130*4462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
131*4462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
132*4462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
133*4462Smckusick 	0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
134*4462Smckusick 	0x08, 0x09, 0x09, 0x0a, 0x10, 0x11, 0x20, 0x40,
135*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
136*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
137*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
138*4462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11,
139*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05,
140*4462Smckusick 	0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09,
141*4462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
142*4462Smckusick 	0x05, 0x05, 0x05, 0x07, 0x09, 0x09, 0x11, 0x21,
143*4462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06,
144*4462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a,
145*4462Smckusick 	0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
146*4462Smckusick 	0x02, 0x03, 0x03, 0x02, 0x06, 0x07, 0x0a, 0x12,
147*4462Smckusick 	0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04,
148*4462Smckusick 	0x05, 0x05, 0x05, 0x07, 0x06, 0x07, 0x04, 0x0c,
149*4462Smckusick 	0x08, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0c,
150*4462Smckusick 	0x10, 0x11, 0x11, 0x12, 0x20, 0x21, 0x40, 0x80,
151*4462Smckusick };
152*4462Smckusick #endif
153