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