14462Smckusick /* Copyright (c) 1981 Regents of the University of California */ 24462Smckusick 3*6292Smckusick /* @(#)ffs_tables.c 1.4 03/23/82 */ 44462Smckusick 54462Smckusick #include "../h/param.h" 64462Smckusick 74462Smckusick /* partab.c 4.2 81/03/08 */ 84462Smckusick 94462Smckusick /* 104462Smckusick * Table giving parity for characters and indicating 114462Smckusick * character classes to tty driver. In particular, 124462Smckusick * if the low 6 bits are 0, then the character needs 134462Smckusick * no special processing on output. 144462Smckusick */ 154462Smckusick 164473Smckusic unsigned char partab[] = { 174462Smckusick 0001,0201,0201,0001,0201,0001,0001,0201, 184462Smckusick 0202,0004,0003,0201,0005,0206,0201,0001, 194462Smckusick 0201,0001,0001,0201,0001,0201,0201,0001, 204462Smckusick 0001,0201,0201,0001,0201,0001,0001,0201, 214462Smckusick 0200,0000,0000,0200,0000,0200,0200,0000, 224462Smckusick 0000,0200,0200,0000,0200,0000,0000,0200, 234462Smckusick 0000,0200,0200,0000,0200,0000,0000,0200, 244462Smckusick 0200,0000,0000,0200,0000,0200,0200,0000, 254462Smckusick 0200,0000,0000,0200,0000,0200,0200,0000, 264462Smckusick 0000,0200,0200,0000,0200,0000,0000,0200, 274462Smckusick 0000,0200,0200,0000,0200,0000,0000,0200, 284462Smckusick 0200,0000,0000,0200,0000,0200,0200,0000, 294462Smckusick 0000,0200,0200,0000,0200,0000,0000,0200, 304462Smckusick 0200,0000,0000,0200,0000,0200,0200,0000, 314462Smckusick 0200,0000,0000,0200,0000,0200,0200,0000, 324462Smckusick 0000,0200,0200,0000,0200,0000,0000,0201, 334462Smckusick 344462Smckusick /* 354462Smckusick * 7 bit ascii ends with the last character above, 364462Smckusick * but we contine through all 256 codes for the sake 374462Smckusick * of the tty output routines which use special vax 384462Smckusick * instructions which need a 256 character trt table. 394462Smckusick */ 404462Smckusick 414462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 424462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 434462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 444462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 454462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 464462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 474462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 484462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 494462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 504462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 514462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 524462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 534462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 544462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 554462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007, 564462Smckusick 0007,0007,0007,0007,0007,0007,0007,0007 574462Smckusick }; 584462Smckusick 594462Smckusick /* 604462Smckusick * bit patterns for identifying fragments in the block map 614462Smckusick * used as ((map & around) == inside) 624462Smckusick */ 634462Smckusick int around[9] = { 644462Smckusick 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff, 0x1ff, 0x3ff 654462Smckusick }; 664462Smckusick int inside[9] = { 674462Smckusick 0x0, 0x2, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe 684462Smckusick }; 694462Smckusick 704462Smckusick /* 715323Smckusic * given a block map bit pattern, the frag tables tell whether a 724462Smckusick * particular size fragment is available. 735323Smckusic * 744462Smckusick * used as: 755323Smckusic * if ((1 << (size - 1)) & fragtbl[fs->fs_frag][map] { 764462Smckusick * at least one fragment of the indicated size is available 774462Smckusick * } 785323Smckusic * 795323Smckusic * These tables are used by the scanc instruction on the VAX to 804462Smckusick * quickly find an appropriate fragment. 814462Smckusick */ 825323Smckusic 83*6292Smckusick unsigned char fragtbl124[256] = { 84*6292Smckusick 0x00, 0x16, 0x16, 0x2a, 0x16, 0x16, 0x26, 0x4e, 85*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x2a, 0x3e, 0x4e, 0x8a, 86*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e, 87*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e, 88*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e, 89*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e, 90*6292Smckusick 0x2a, 0x3e, 0x3e, 0x2a, 0x3e, 0x3e, 0x2e, 0x6e, 91*6292Smckusick 0x3e, 0x3e, 0x3e, 0x3e, 0x2a, 0x3e, 0x6e, 0xaa, 92*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e, 93*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e, 94*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e, 95*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e, 96*6292Smckusick 0x26, 0x36, 0x36, 0x2e, 0x36, 0x36, 0x26, 0x6e, 97*6292Smckusick 0x36, 0x36, 0x36, 0x3e, 0x2e, 0x3e, 0x6e, 0xae, 98*6292Smckusick 0x4e, 0x5e, 0x5e, 0x6e, 0x5e, 0x5e, 0x6e, 0x4e, 99*6292Smckusick 0x5e, 0x5e, 0x5e, 0x7e, 0x6e, 0x7e, 0x4e, 0xce, 100*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e, 101*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e, 102*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e, 103*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e, 104*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x16, 0x16, 0x36, 0x5e, 105*6292Smckusick 0x16, 0x16, 0x16, 0x3e, 0x3e, 0x3e, 0x5e, 0x9e, 106*6292Smckusick 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7e, 107*6292Smckusick 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7e, 0xbe, 108*6292Smckusick 0x2a, 0x3e, 0x3e, 0x2a, 0x3e, 0x3e, 0x2e, 0x6e, 109*6292Smckusick 0x3e, 0x3e, 0x3e, 0x3e, 0x2a, 0x3e, 0x6e, 0xaa, 110*6292Smckusick 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7e, 111*6292Smckusick 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x7e, 0xbe, 112*6292Smckusick 0x4e, 0x5e, 0x5e, 0x6e, 0x5e, 0x5e, 0x6e, 0x4e, 113*6292Smckusick 0x5e, 0x5e, 0x5e, 0x7e, 0x6e, 0x7e, 0x4e, 0xce, 114*6292Smckusick 0x8a, 0x9e, 0x9e, 0xaa, 0x9e, 0x9e, 0xae, 0xce, 115*6292Smckusick 0x9e, 0x9e, 0x9e, 0xbe, 0xaa, 0xbe, 0xce, 0x8a, 1165323Smckusic }; 1175323Smckusic 1185323Smckusic unsigned char fragtbl8[256] = { 1194462Smckusick 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x04, 1204462Smckusick 0x01, 0x01, 0x01, 0x03, 0x02, 0x03, 0x04, 0x08, 1214462Smckusick 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, 1224462Smckusick 0x02, 0x03, 0x03, 0x02, 0x04, 0x05, 0x08, 0x10, 1234462Smckusick 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, 1244462Smckusick 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09, 1254462Smckusick 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06, 1264462Smckusick 0x04, 0x05, 0x05, 0x06, 0x08, 0x09, 0x10, 0x20, 1274462Smckusick 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, 1284462Smckusick 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09, 1294462Smckusick 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, 1304462Smckusick 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11, 1314462Smckusick 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06, 1324462Smckusick 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a, 1334462Smckusick 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04, 1344462Smckusick 0x08, 0x09, 0x09, 0x0a, 0x10, 0x11, 0x20, 0x40, 1354462Smckusick 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, 1364462Smckusick 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09, 1374462Smckusick 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, 1384462Smckusick 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x09, 0x11, 1394462Smckusick 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, 1404462Smckusick 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x05, 0x09, 1414462Smckusick 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 1424462Smckusick 0x05, 0x05, 0x05, 0x07, 0x09, 0x09, 0x11, 0x21, 1434462Smckusick 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x06, 1444462Smckusick 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x06, 0x0a, 1454462Smckusick 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 1464462Smckusick 0x02, 0x03, 0x03, 0x02, 0x06, 0x07, 0x0a, 0x12, 1474462Smckusick 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04, 1484462Smckusick 0x05, 0x05, 0x05, 0x07, 0x06, 0x07, 0x04, 0x0c, 1494462Smckusick 0x08, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0c, 1504462Smckusick 0x10, 0x11, 0x11, 0x12, 0x20, 0x21, 0x40, 0x80, 1514462Smckusick }; 1525323Smckusic 1535323Smckusic /* 1545323Smckusic * the actual fragtbl array 1555323Smckusic */ 1565323Smckusic unsigned char *fragtbl[MAXFRAG + 1] = { 157*6292Smckusick 0, fragtbl124, fragtbl124, 0, fragtbl124, 0, 0, 0, fragtbl8, 1585323Smckusic }; 159