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