// // Generate a "Chicago" checksum for a DOS 8.3 filename. // Written for clarity, not elegance! // USHORT CalcChecksum (char Name83[]) { USHORT i, LowBit, Checksum; Checksum = Name83[0] ; for (i=1; i <= 11 ; i++) { // Rotate the checksum 1 bit right LowBit = Checksum & 1 ; Checksum >>= 1 ; if (LowBit) Checksum &= 0x8000 ; // Add the next character Checksum += Name83[i] ; } return Checksum; } ; ; Generate a "Chicago" checksum ; MOV SI,OFFSET NAME83 SUB BL,BL MOV CX,11 LABEL1: ROR BL,1 LODSB ADD BL,AL LOOP LABEL1