$R-,S- Unit CRCS; Interface FUNCTION CRC (VAR buf; len : WORD) : WORD; FUNCTION ChkSum (VAR buf; len : WORD): WORD; Implementation TYPE CrcTabType = ARRAY [BYTE] OF WORD; VAR CrcTab : CrcTabType; FUNCTION CRC (VAR buf; len : WORD) : WORD; BEGIN Inline( $1E {push ds} /$1E {push ds} /$07 {pop es} /$8D/$3E/>CRCTAB {lea di,[>crctab]} /$C5/$76/CRCTAB {lea di,[>crctab]} /$BE/$08/$84 {mov si,$8408} /$FC {cld} /$31/$DB {xor bx,bx} /$89/$D9 {mov cx,bx} {l2:} /$89/$D8 {mov ax,bx} /$B1/$08 {mov cl,8} {l3:} /$D1/$E8 {shr ax,1} /$73/$02 {jnc l4} /$31/$F0 {xor ax,si} {l4:} /$E2/$F8 {loop l3} /$AB {stosw} /$FE/$C3 {inc bl} /$75/$EF {jnz l2} ); END.