[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]
{
So does anyone have any good read-write routines that
will read/write words of bit legnths 9-13?
}
function add_code : integer;
const Input_bit_count : integer = 0;
Inbuf : longint =0;
var i : longint;
begin
while input_bit_count <= 24 do
begin
i := getnextbyte; { shftL/R is an asm longint shift }
InBuf := InBuf or shftL(i,24-input_bit_count);
inc(input_bit_count,8);
end;
i := shftR(InBuf,32-num_bits);
InBuf := shftL(InBuf,num_bits);
input_bit_count := input_bit_count -num_bits;
add_code := i;
end;
procedure add_code (code:word);
const bits : integer = 0;
begin
lz_buffer[lz_cnt] := lo(bit_buf or (code shl bits));
inc(lz_cnt);
if (code_len + bits) < 16
then begin
bit_buf := lo(code shr (8-bits));
bits := bits +code_len -8;
end
else begin
lz_buffer[lz_cnt] := lo(code shr (8-bits));
inc(lz_cnt);
bit_buf := lo(code shr (16-bits));
bits := (bits + code_len -16);
end;
end;
[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]