Contributor: CHRIS PRIEDE > I made a Program in Turbo-Pascal that rotates the bits in one Byte so I can > encrypt/decrypt a File, however the routine is slow. I then made the same > Program in turbo-C using _RotLeft and _RotRight, the speed of execution was > Really faster than Turbo-Pascal. Does anybody know of a way to rotate the > bits of one Byte in turbo-Pascal and FAST !!!! Since 80xxx CPUs have bit rotate instructions (ROL, ROR), it would be a shame to use some clumsy HLL Construct. BTW, I'm sure _RotLeft and _RotRight use rotate instructions too, possibly insert them Inline. If you are using TP 6.0+, try something like this: { to rotate left } Function RotLeft(B, Count: Byte): Byte; Assembler; Asm mov al, B mov cl, Count rol al, cl end; { to rotate right } Function RotRight(B, Count: Byte): Byte; Assembler; Asm mov al, B mov cl, Count ror al, cl end; Of course, if you need to do this in only a few places it would be better not to define Functions, but insert Asm blocks in your code directly. The fastest Pascal way to rotate Byte would be something like this: Function RotLeft(B, Count: Byte): Byte; Var W : Word; A : Array[0..1] of Byte Absolute W; begin A[0] := B; A[1] := B; W := W shl Count; RotLeft := A[1]; end; To rotate right With this method, you would shift right and return A[0]. I would like to think this is as fast as it gets in TP without assembly, but one can never be sure. Anyway, I recommend the assembly solution over this one, it is faster and more elegant.