|
|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 1536 (0x600)
Types: TextFileVerbose
Names: »unpackmesst«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »unpackmesst«
unpackmess=algol list.yes
external
procedure unpack_mess(mess);
real array mess;
begin
integer lower,upper,pack_index,part_one,part_two,no_of_bytes,
_ no_of_int,rel_start,rel_extra,start_index,i;
lower := system(3,upper,mess);
no_of_bytes := mess(1) shift (-32) extract 16 + 2;
no_of_int := upper * 2;
if no_of_bytes < no_of_int * 2 and no_of_bytes >= 16 then
no_of_int := no_of_bytes // 2;
no_of_int := no_of_int + no_of_int mod 2;
upper := no_of_int // 2;
rel_start := no_of_int // 3;
rel_extra := no_of_int mod 3;
start_index := 1 + rel_start - (if rel_extra = 0 then 1 else 0);
i := case rel_extra + 1 of (1,3,2);
for pack_index := upper step -1 until 1 do
begin
part_one := mess(start_index) shift ((-16) * (i - 1)) extract 16;
i := i + 1;
if i > 3 then
begin
start_index := start_index - 1;
i := 1;
end;
part_two := mess(start_index) shift ((-16) * (i - 1)) extract 16;
i := i + 1;
if i > 3 then
begin
start_index := start_index - 1;
i := 1;
end;
mess(pack_index) := real (extend part_two shift 24) add part_one;
end;
end unpack_mess;
end
finis
«eof»