Comment calculer le CRC 16 utilisé dans le protocole XModem

Auteur : Kristian PARADIS

Code adapté du C++
Procédure mCalculerCRC(_Chaine)
//Renvoie une chaine sur 2 octets.
eBit est un entier
eOctet est un entier
eCaract est un entier sans signe
eCRC est un entier sans signe
cChaine est une chaine = _Chaine
POUR eOctet = 1 _A_ taille(cChaine)
	eCaract = ASC(cChaine[[eOctet]])*0x100
	eCRC = OUExbinaire(eCRC,eCaract)
	POUR eBit = 0 _A_ 7
		SI ETBinaire(eCRC,0x8000) <> 0 ALORS
			eCRC = eCRC * 2
			eCRC = OUExbinaire(eCRC,0x1021)
		SINON
			eCRC = eCRC * 2
		FIN
	FIN
	eCRC = ETBinaire(eCrC,0xFFFF)
FIN
RENVOYER Caract(PartieEntiere(eCrC/256)) + Caract(Modulo(eCrc,256))