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.