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

⟦928903fe4⟧ TextFile

    Length: 96768 (0x17a00)
    Types: TextFile
    Names: »procstx     «

Derivation

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

TextFile

procs=set 1 disc1
scope user procs
procs=algol connect.no
begin
message procs  880530/ho  side 1;

<* Program procs skriver en liste over interne processer og frie hoved-
   lager områder.

   Kald:
   =====
             1            1       1
   (<udfil>=) procs (alle)  (døde)
             0            0       0

   Parameter 'alle' angiver at også monitors processer listes.
   Parameter 'døde' angiver at også nedlagte processer listes.

   Kaldte procedurer:
   ==================

   closefp,
   openfp.

   Ændringshistorie:
   =================
     880530 ho:  Original version.
     900523 ho:  Prioritet skrives også.
*>
\f

message procs  900523/ho  side 2;

  boolean
    alle, døde;

  integer
    int_ant, første_int, adr,
    int_størrelse,
    noofrecs, result, explanation,
    reclgd,
    ant, nr,
    sadr, maxadr, prevtop, tilstand,
    i, j, k;

  integer field
    parent,
    faddr, taddr,
    pdesc,
    buf, area,
    status, prio;

  integer array
    keydescr(1:2<*noofkeys*>,1:2),
    param(1:7),
    proc(-2:60),
    wrkstore(1:10),
    ia(1:20);

  integer array field
    iaf;

  long array
    hostnavn(1:2),
    filnavn(1:2),
    rec(1:10),
    procs(1:10*24);

  long field
    starttid,
    cpu;

  long
    ll;

  long array field
    laf,
    navn;

  real
    r, t,
    eof;

  real array
    names(1:6);

  real array field
    raf;

  zone
    z(1,1,stderror),
    zu, zp, z1, z2(128,1,stderror);
\f

message procs  900523/ho  side 3;

  copyout;

  parent:=2;
  faddr:=4;
  taddr:=6;
  pdesc:=8;
  navn:=8;
  buf:=18;
  area:=20;
  cpu:=24;
  starttid:=28;
  status:=30;
  prio:=32;
  reclgd:=32;

  iaf:= 2;
  hostnavn(1):=hostnavn(2):= long<::>;
  open(z,0,<:jobhost:>,0);
  if monitor(42)lookup:(z,0,ia)=0 then tofrom(hostnavn,ia.iaf,8);
  close(z,true);

  ll:=0;
  laf:=raf:=0;
  openfp(zu,0);
  
  alle:=findfpparam(<:alle:>,true,ia)>=0;
  døde:=findfpparam(<:døde:>,true,ia)>=0;

  system(5,78,ia);
  intant:=(ia(2)-ia(1))//2;
  første_int:=ia(1);
  wrkstore(1):=28;
  wrkstore(2):=1;
  open(zp,4,<::>,0);
  i:=monitor(40)create entry:(zp,0,wrkstore);
  if i>0 then
    system(9,i+0*write(zu,"nl",1,<:*** procs: create entry :>,
      case i of (<::>,<:catalog fejl:>,<::>,<:ingen bs-ressourcer:>,<::>,<::>,
                 <:intet maincatalog:>)),<:monitor40:>);
\f

message procs  900523/ho  side 4;

  begin
    integer array intprocref(1:intant);

    system(5,første_int,intprocref);
    int_størrelse:=(intprocref(2)-intprocref(1));
    ant:=0;
    for i:=1 step 1 until intant do
    begin
      adr:=intprocref(1)-4+intstørrelse*(i-1);
      iaf:=-6;
      system(5,adr,proc.iaf);
      if testbit(1) or testbit(2) then outchar(zu,'ff');
      if testbit(2) then
      begin
        write(zu,"nl",2,<:PROCESBESKRIVELSE:>,i,"nl",2);
        skrivtotal(zu,proc.iaf.raf,intstørrelse,0);
      end;
      iaf:=0;
      rec.parent:=proc(25); <*parent descr addr*>
      if true  <*!!!!!*> and proc(50)<proc(11) then
      begin
        rec.faddr:=proc(11)+ <*første addr*>
                   proc(49); <*curr. base*>
        rec.taddr:=proc(12)+ <*top addr*>
                   proc(49); <*curr. base*>
      end
      else
      begin
        rec.faddr:=proc(50); <*første addr*>
        rec.taddr:=proc(51); <*top addr*>
      end;
      rec.pdesc:=adr+4;    <*proc descr addr *>
      rec.buf:=proc(13)shift (-12);
      rec.area:=proc(13) extract 12;
      rec.cpu:=proc.laf(14);
      rec.starttid:=proc.laf(15);
      rec.status:=proc(5);
      rec.prio:=proc(15);
      raf:=0;
      laf:=0;
      tofrom(rec.navn,proc.laf,8);
      if alle or rec.iaf(5)<> 0 and rec.iaf(2)>8 then
      begin
        if testbit(1) then
        begin
          write(zu,"nl",2,<:PROC-REC:>,i,"nl",2);
          skrivtotal(zu,rec.raf,reclgd,0);
        end;
        open(z2,0,rec.navn,0);
        close(z2,true);
        j:=monitor(4,z2,0,ia);
<*      if j=0 and rec.faddr>8 then rec.status:=0;    *>
        if rec.navn.iaf(1)=0 then
          rec.navn.iaf(1):='.' shift 8 add '.' shift 8 add '.';
        outrec6(zp,reclgd);
        tofrom(zp,rec,reclgd);
        ant:=ant+1;
      end;
    end;
  end;
  setposition(zp,0,0);
\f

message procs  890202/ho  side 5;

  param(1):=1;<*blocklength*>
  param(2):=1;<*clear input*>
  param(3):=0;
  param(4):=1;<*fixedlength*>
  param(5):=reclgd;<*rec.length*>
  param(6):=2;<*nooofkeys*>
  param(7):=1;<*runtime alarm*>

  keydescr(1,1):= +2;<*integer*>  keydescr(1,2):=faddr;
  keydescr(2,1):= +2;             keydescr(2,2):=taddr;

  for i:=1 step 1 until 6 do names(i):=real<::>;
  raf:=2;
  getzone6(zp,ia);
  tofrom(names,ia.raf,8);

  noofrecs:=ant;
  eof:=real<::>;
  mdsortproc(param,keydescr,names,eof,noofrecs,result,explanation);
\f

message procs  900523/ho  side 6;

  raf:=8;
  tofrom(filnavn,names.raf,8);
  open(z1,4,filnavn,0);
  write(zu,"nl",1,<:PROCES_______ST.ADR._STØRREL._BUF_AREA ________CPU:>,
           <:_PR_STAT_______STARTTID:>,"nl",1);
  write(zu,"-",79,"nl",1);
  prevtop:=8; sadr:=maxadr:=0;
  for i:=1 step 1 until ant do
  begin
    inrec6(z1,reclgd);
    tofrom(rec,z1,reclgd);
    if rec.navn(1) = long <:s:> then <*s*>
    begin
      sadr:=rec.pdesc;  
      maxadr:=rec.taddr;
    end;
    if i=2 then prevtop:=rec.faddr;

    if (rec.status<>0 or døde) and (alle or true) then
    begin
      if alle or (not alle and i>3) then
      begin
        if rec.faddr>prevtop and prevtop > 0 then
        begin
          write(zu,<:  *** frit__:>,<< ddddddd>,prevtop,
                   rec.faddr-prevtop,"nl",1);
        end;
      end;
      j:=write(zu,rec.navn);
      write(zu,"sp",12-j,<< ddddddd>,
        rec.faddr,rec.taddr-rec.faddr,
        << dddd>,
        rec.buf,rec.area,
        <<dd ddd ddd.d>,rec.cpu/10000.0,
        <<-dd>,rec.prio,"sp",1);
      k:=rec.status extract 12;
      tilstand:=     if k=0   <*ikke eksist.*>          then 0
                else if k=11  <*running*>               then 1
                else if k=200 <*w.f.CPU*>               then 2
                else if k=8   <*running after error*>   then 3
                else if k=176 <*w.f. stop by parent*>   then 4
                else if k=160 <*w.f. stop by ancest*>   then 5
                else if k=184 <*w.f. start by parent*>  then 6
                else if k=168 <*w.f. start by ancest*>  then 7
                else if k=204 <*w.f. procesfunc*>       then 8
                else if k=141 <*w.f. message*>          then 9
                else if k=142 <*w.f. answer*>           then 10
                else if k=143 <*w.f. event*>            then 11
                else                                         12;
      if tilstand=12 then
        write(zu,<<dddd>,rec.status extract 12)
      else
        write(zu,"sp",1,case tilstand+1 of (<:nex:>,
                        <:run:>,<:wcp:>,<:rer:>,<:wSp:>,
                        <:wSa:>,<:wsp:>,<:wsa:>,<:wpf:>,
                        <:wme:>,<:wan:>,<:wev:>,<:???:>));
\f

message procs  890202/ho  side 7;

      t:=rec.starttid/10000.0;
      if t>200000.0 then
        write(zu,<<  zd dd dd>,systime(4,t,r),r);
      write(zu,"nl",1);
      if i=ant then
      begin
        if rec.taddr<maxadr then
        begin
          write(zu,<:  *** frit__:>,<< ddddddd>,rec.taddr,
                   maxadr-rec.taddr,"nl",1);
        end;
      end;
      if rec.faddr > 0 and rec.taddr > prevtop and rec.pdesc <> sadr then 
        prevtop:=rec.taddr;
    end;
  end;<* for i:=1 step 1 until ant *>

  monitor(48)remove entry:(zp,0,ia);
  monitor(48)remove entry:(z1,0,ia);
  write(zu,"-",79,"nl",1);
  write(zu,"sp",12-write(zu,hostnavn),<: d.:>,
           <<zddddd>,systime(5,0,r),".",1,r,"nl",1);
  closefp(zu,true);
  trapmode:=1 shift 10;

message procs  880530/ho  slut;
end
procs
end
▶EOF◀