Commit | Line | Data |
---|---|---|
5576d804 KM |
1 | /* Copyright (c) 1981 Regents of the University of California */ |
2 | ||
b6407c9d | 3 | /* @(#)ffs_tables.c 1.3 %G% */ |
5576d804 KM |
4 | |
5 | #include "../h/param.h" | |
6 | ||
7 | /* partab.c 4.2 81/03/08 */ | |
8 | ||
9 | /* | |
10 | * Table giving parity for characters and indicating | |
11 | * character classes to tty driver. In particular, | |
12 | * if the low 6 bits are 0, then the character needs | |
13 | * no special processing on output. | |
14 | */ | |
15 | ||
1b940b13 | 16 | unsigned char partab[] = { |
5576d804 KM |
17 | 0001,0201,0201,0001,0201,0001,0001,0201, |
18 | 0202,0004,0003,0201,0005,0206,0201,0001, | |
19 | 0201,0001,0001,0201,0001,0201,0201,0001, | |
20 | 0001,0201,0201,0001,0201,0001,0001,0201, | |
21 | 0200,0000,0000,0200,0000,0200,0200,0000, | |
22 | 0000,0200,0200,0000,0200,0000,0000,0200, | |
23 | 0000,0200,0200,0000,0200,0000,0000,0200, | |
24 | 0200,0000,0000,0200,0000,0200,0200,0000, | |
25 | 0200,0000,0000,0200,0000,0200,0200,0000, | |
26 | 0000,0200,0200,0000,0200,0000,0000,0200, | |
27 | 0000,0200,0200,0000,0200,0000,0000,0200, | |
28 | 0200,0000,0000,0200,0000,0200,0200,0000, | |
29 | 0000,0200,0200,0000,0200,0000,0000,0200, | |
30 | 0200,0000,0000,0200,0000,0200,0200,0000, | |
31 | 0200,0000,0000,0200,0000,0200,0200,0000, | |
32 | 0000,0200,0200,0000,0200,0000,0000,0201, | |
33 | ||
34 | /* | |
35 | * 7 bit ascii ends with the last character above, | |
36 | * but we contine through all 256 codes for the sake | |
37 | * of the tty output routines which use special vax | |
38 | * instructions which need a 256 character trt table. | |
39 | */ | |
40 | ||
41 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
42 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
43 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
44 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
45 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
46 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
47 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
48 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
49 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
50 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
51 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
52 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
53 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
54 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
55 | 0007,0007,0007,0007,0007,0007,0007,0007, | |
56 | 0007,0007,0007,0007,0007,0007,0007,0007 | |
57 | }; | |
58 | ||
59 | /* | |
60 | * bit patterns for identifying fragments in the block map | |
61 | * used as ((map & around) == inside) | |
62 | */ | |
63 | int around[9] = { | |
64 | 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff, 0x1ff, 0x3ff | |
65 | }; | |
66 | int inside[9] = { | |
67 | 0x0, 0x2, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe | |
68 | }; | |
69 | ||
70 | /* | |
b6407c9d | 71 | * given a block map bit pattern, the frag tables tell whether a |
5576d804 | 72 | * particular size fragment is available. |
b6407c9d | 73 | * |
5576d804 | 74 | * used as: |
b6407c9d | 75 | * if ((1 << (size - 1)) & fragtbl[fs->fs_frag][map] { |
5576d804 KM |
76 | * at least one fragment of the indicated size is available |
77 | * } | |
b6407c9d KM |
78 | * |
79 | * These tables are used by the scanc instruction on the VAX to | |
5576d804 KM |
80 | * quickly find an appropriate fragment. |
81 | */ | |
b6407c9d KM |
82 | |
83 | unsigned char fragtbl1[256] = { | |
84 | 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
85 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
86 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
87 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
88 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
89 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
90 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
91 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
92 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
93 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
94 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
95 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
96 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
97 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
98 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
99 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
100 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
101 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
102 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
103 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
104 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
105 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
106 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
107 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
108 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
109 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
110 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
111 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
112 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
113 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
114 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
115 | 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, | |
116 | }; | |
117 | ||
118 | unsigned char fragtbl2[256] = { | |
119 | 0x0, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x3, | |
120 | 0x1, 0x1, 0x1, 0x3, 0x2, 0x3, 0x3, 0x2, | |
121 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3, | |
122 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3, | |
123 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3, | |
124 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3, | |
125 | 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, | |
126 | 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, | |
127 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3, | |
128 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3, | |
129 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3, | |
130 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3, | |
131 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3, | |
132 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3, | |
133 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, | |
134 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, | |
135 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3, | |
136 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3, | |
137 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3, | |
138 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3, | |
139 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x3, | |
140 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x3, 0x3, | |
141 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, | |
142 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, | |
143 | 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, | |
144 | 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, | |
145 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, | |
146 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, | |
147 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, | |
148 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, | |
149 | 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, | |
150 | 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, | |
151 | }; | |
152 | ||
153 | unsigned char fragtbl4[256] = { | |
5576d804 KM |
154 | 0x0, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, |
155 | 0x1, 0x1, 0x1, 0x3, 0x2, 0x3, 0x4, 0x8, | |
156 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5, | |
157 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9, | |
158 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5, | |
159 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9, | |
160 | 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6, | |
161 | 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa, | |
162 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5, | |
163 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9, | |
164 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5, | |
165 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9, | |
166 | 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6, | |
167 | 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa, | |
168 | 0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4, | |
169 | 0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc, | |
170 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5, | |
171 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9, | |
172 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5, | |
173 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9, | |
174 | 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x3, 0x5, | |
175 | 0x1, 0x1, 0x1, 0x3, 0x3, 0x3, 0x5, 0x9, | |
176 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, | |
177 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb, | |
178 | 0x2, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x6, | |
179 | 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x6, 0xa, | |
180 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, | |
181 | 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0xb, | |
182 | 0x4, 0x5, 0x5, 0x6, 0x5, 0x5, 0x6, 0x4, | |
183 | 0x5, 0x5, 0x5, 0x7, 0x6, 0x7, 0x4, 0xc, | |
184 | 0x8, 0x9, 0x9, 0xa, 0x9, 0x9, 0xa, 0xc, | |
185 | 0x9, 0x9, 0x9, 0xb, 0xa, 0xb, 0xc, 0x8, | |
186 | }; | |
5576d804 | 187 | |
b6407c9d | 188 | unsigned char fragtbl8[256] = { |
5576d804 KM |
189 | 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04, |
190 | 0x01, 0x01, 0x01, 0x03, 0x02, 0x03, 0x04, 0x08, | |
191 | 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, | |
192 | 0x02, 0x03, 0x03, 0x02, 0x04, 0x05, 0x08, 0x10, | |
193 | 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, | |
194 | 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09, | |
195 | 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06, | |
196 | 0x04, 0x05, 0x05, 0x06, 0x08, 0x09, 0x10, 0x20, | |
197 | 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, | |
198 | 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09, | |
199 | 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, | |
200 | 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11, | |
201 | 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06, | |
202 | 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a, | |
203 | 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04, | |
204 | 0x08, 0x09, 0x09, 0x0a, 0x10, 0x11, 0x20, 0x40, | |
205 | 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, | |
206 | 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09, | |
207 | 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, | |
208 | 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11, | |
209 | 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, | |
210 | 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09, | |
211 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, | |
212 | 0x05, 0x05, 0x05, 0x07, 0x09, 0x09, 0x11, 0x21, | |
213 | 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06, | |
214 | 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a, | |
215 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, | |
216 | 0x02, 0x03, 0x03, 0x02, 0x06, 0x07, 0x0a, 0x12, | |
217 | 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04, | |
218 | 0x05, 0x05, 0x05, 0x07, 0x06, 0x07, 0x04, 0x0c, | |
219 | 0x08, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0c, | |
220 | 0x10, 0x11, 0x11, 0x12, 0x20, 0x21, 0x40, 0x80, | |
221 | }; | |
b6407c9d KM |
222 | |
223 | /* | |
224 | * the actual fragtbl array | |
225 | */ | |
226 | unsigned char *fragtbl[MAXFRAG + 1] = { | |
227 | 0, fragtbl1, fragtbl2, 0, fragtbl4, 0, 0, 0, fragtbl8, | |
228 | }; |