ereed@leadsv.UUCP (Ed Reed) (07/26/88)
I am having a problem with a program I am writing on a Macintosh II. The
program is being written in Lightspeed C ver. 3.0, and what follows is the
applicable code:
main()
{
.....other declarations
char DataIn[256];
long HeaderIn;
short CheckSumIn;
short CheckSum;
char *DataInPtr;
long *HeaderInPtr;
short *CheckSumPtr;
.....other initializations
DataInPtr = &DataIn[0];
HeaderInPtr = &HeaderIn;
CheckSumPtr = &CheckSumIn;
.....other statements to open the serial driver(port a)
to reset the serial port to 19.2 Kb
to get hard disk information
to create a data file
to open a data file
while (!(Button())
{
CheckSum = 0;
FSRead( -6, &HeaderCount, &HeaderInPtr );
FSRead( -6, &DataCount, &DataInPtr );
FSRead( -6, &SumCount, &CheckSumPtr );
for (i = 0; i < 256; i++)
{
CheckSum += (short) DataIn[i];
}
if (CheckSum != CheckSumIn)
{
.....write buffer to file
exit program
}
}
}
The problem is that when I do the for loop the CheckSum total does not add up
right. I added a print statement inside the loop in order to make sure what
was being added was correct. I was annoyed to find out it wasn't. Instead of
0 - 255, which was being sent, I was getting 9-39 hex, 50-ff hex, 0-a hex, and
then odd junk. But the interesting thing was when I did a hex dump of the file
it was correct. Now does anyone out there know why I can't do a checksum. Does
the Mac o.s. cause this problem or am I getting the structure of the read
command wrong? I read "Inside Mac, vol 2" which describes the I/O calls and I
think I'm right, so what is wrong?
Please respond directly, do not post your reply.
Joe Hughes
pyramid!leadsv!jhughes