| 
 | 
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 | 
 
This is an automatic "excavation" of a thematic subset of
 See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software.  | 
top - metrics - download
    Length: 1536 (0x600)
    Types: TextFile
    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◀