//
// 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

