DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦27c1fd0c8⟧ TextFile

    Length: 2304 (0x900)
    Types: TextFile
    Names: »claimproctx «

Derivation

└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system
    └─⟦a957ba283⟧ 
        └─ ⟦this⟧ »claimproctx « 

TextFile

message procedure claimproc side 1. (hko,ar) 781101;


boolean procedure claimproc
      (keyno,bsno,bsname,entries,segm,slicelength);
value keyno, bsno;
integer keyno,bsno,entries,segm,slicelength;
long array bsname;
<*

    claimproc finder en proces's ledige resourcer på baggrundslageret.

    parametrene har følgende betydning:
    claimproc(return, boolean)  true if bsno>=0 and bsno<=max bsno
                                     and keyno is legal
                                else false. If claimproc is false then
                                all return parameters are zero.
    keyno    (call, integer)    0=temp
                                2=login
                                3=user/project
    bsno     (call, integer)    main bsdevice is 0
    bsname   (return, long array 1:2) name of called device
    entries  (return, integer)  no. of entries of key=keyno on called
                                device
    segm     (return, integer)  no. of segm. of key=keyno on called
                                device
    slicelength (return, integer) slicelength on called device
*>
\f

begin
own boolean init;
own integer bsdevices,firstbs,ownadr,monrel;
integer i;
long array field name;
integer array core(1:18);
  if -,init then
  begin
    init:=true;
    system(5,64,core);
    monrel:=core(1) shift (-12);  <*monitor release*>
    system(5,92,core);
    bsdevices:=(core(3)-core(1))//2;
    firstbs:=core(1);
    ownadr:=system(6,i,bsname);
  end;
  if bsno<0 or bsno>=bsdevices 
  or keyno<>0 and keyno<>2 and keyno<>3 then
  begin 
    claimproc:=false;
    goto exitclaim
  end;
  claimproc:=true;
  begin integer array nametable(1:bsdevices);
    name:=18;
    system(5,firstbs,nametable);
    system(5,nametable(bsno+1)-36,core);
    if core(10)=0 then goto exitclaim;
    bsname(1):=core.name(1); bsname(2):=core.name(2);
    slicelength:=core(15);
    system(5,ownadr+core(1),core);
    if monrel<=8 then
    begin
      entries:=core(keyno+1) shift (-12);
      segm:=core(keyno+1) extract 12 * slicelength;
    end else
    begin
      entries:=core(2*keyno +1);
      segm:=core(2*keyno + 2) * slicelength;
    end;
  end;
  if false then
  begin
exitclaim:
    entries:=segm:=slicelength:=0;
    bsname(1):=bsname(2):=0;
  end;
end claimproc;
▶EOF◀