|
|
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: 96768 (0x17a00)
Types: TextFile
Names: »procstx «
└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system
└─⟦a957ba283⟧
└─⟦this⟧ »procstx «
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◀