This is pageNumber.c in view mode; [Download] [Up]
/* (c) 1992 Dirk Schwarzhans, Matthias Braun Use under the terms of the GNU General Public License */ #import "pageNumber.h" #define BIN2ASC(a) (((a) < 10) ? ((a) + '0') : ((a) + 'A' - 10)) void VTNumbersFromPageData(VTPageNumber *pageNumber, VTSubpageNumber *subpageNumber, const unsigned char *data) { *pageNumber = ((data[1008] & 0x7) << 8) | ((data[1001] & 0xF) << 4) | (data[1000] & 0xF); *subpageNumber = ((data[1005] & 0x3) << 11) | ((data[1004] & 0xF) << 7) | ((data[1003] & 0x7) << 4) | (data[1002] & 0xF); } void VTNumbersFromInt(VTPageNumber *pageNumber, VTSubpageNumber *subpageNumber, int pageInt, int subpageInt) { pageInt %= 1000; *pageNumber = ((pageInt / 100) & 7) << 8; pageInt %= 100; *pageNumber |= (pageInt / 10) << 4; pageInt %= 10; *pageNumber |= pageInt; subpageInt %= 10000; *subpageNumber = ((subpageInt / 1000) & 3) << 11; subpageInt %= 1000; *subpageNumber |= (subpageInt / 100) << 7; subpageInt %= 100; *subpageNumber |= ((subpageInt / 10) & 7) << 4; subpageInt %= 10; *subpageNumber |= subpageInt; } void stringFromVTPageNumber(char *string, VTPageNumber pageNumber) { string[0] = BIN2ASC(((pageNumber >> 8) & 7) ? ((pageNumber >> 8) & 7) : 8); string[1] = BIN2ASC((pageNumber >> 4) & 0xF); string[2] = BIN2ASC(pageNumber & 0xF); string[3] = 0; } void stringFromVTsubpageNumber(char *string, VTSubpageNumber subpageNumber) { string[0] = BIN2ASC((subpageNumber >> 11) & 3); string[1] = BIN2ASC((subpageNumber >> 7) & 0xF); string[2] = BIN2ASC((subpageNumber >> 4) & 7); string[3] = BIN2ASC(subpageNumber & 0xF); string[4] = 0; } int intFromVTPageNumber(VTPageNumber pageNumber) { int intNumber; intNumber = 0; intNumber += (((pageNumber >> 8) & 7) ? ((pageNumber >> 8) & 7) : 8) * 100; intNumber += ((pageNumber >> 4) & 0xF) * 10; intNumber += (pageNumber & 0xF); return intNumber; } int intFromVTSubpageNumber(VTSubpageNumber subpageNumber) { int intNumber; intNumber = 0; intNumber = ((subpageNumber >> 11) & 3) * 1000; intNumber += ((subpageNumber >> 7) & 0xF) * 100; intNumber += ((subpageNumber >> 4) & 7) * 10; intNumber += (subpageNumber & 0xF); return intNumber; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.