|
|
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: 5376 (0x1500)
Types: TextFile
Names: »tnetproc«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦fd91a6c89⟧ »tm68net«
└─⟦this⟧
;ali time 4 0
;copyright Anders Lindgård, march 1979;
mode list.yes
lookup netalglist
if ok.yes
mode 15.yes
lookup stdvar
if ok.no
i tstdvar
clear netinit
beskyt std1.netinit.1
netinit=stdvar list.yes key.2
1980-05-08
begin
integer opsense,opstart=8192,optransfer=16394,opstop=24576,opautoload=32768,
oplock=40960,opunlock=49152,
opinput=12288,opoutput=20480;
integer netiosw,netprogsw;
boolean neterror=true;
end;
beskyt std.opsense std.opstart std.opstop std.opautoload,
std.optransfer,
al3.oplock al3.opunlock,
std.opinput std.opoutput,
std.neterror,
std.netiosw std.netprogsw
clear checkandres
beskyt std.checkandres.4
checkandres=hcalg
external
integer procedure checkandres(name);
string name;
begin
integer res,pda;
array n,nr(1:2);
cleararray(n);
movestring(n,1,name);
res:=reserveproc(n,0);
if res<>0 and neterror then
begin
write(out,nl,1,star,2,string inc(n));
pda:=description(n);
if pda>0 and res=1 then
begin
nameload(procidbit(wordload(pda+12))+2,nr);
write(out,sp,4,<: reserved by :>,string inc(nr));
end else
write(out,case res of (<::>,<: not user :>,<: does not exist :>));
end res<>0;
checkandres:=res;
end check and res;
end;
clear netoperat
beskyt std.netoperat.4
netoperat=hcalg
external
integer procedure netoperat(name,op,block);
value op,block; integer op,block;
string name;
if op=0 or op=8192 or op=16394 or op=24576 or op=32768
or op=40960 or op=49152 then
begin
array n(1:3);
integer array M(1:8);
integer res;
cleararray(n);
movestring(n,1,name);
res:=checkandres(string inc(n));
if res>0 then res:=res+8;
if res=0 then
begin
M(1):=op; M(2):=block;
res:=waitanswer(sendmessage(n,M),M);
netiosw:=M(1);
netprogsw:=M(3);
if res<>1 and neterror then write(out,nl,1,star,2,
<:netoperat :>,string inc(n),
<: result :>,res,<: wait answer:>) else
if M(1)<>0 then
begin
if neterror then write(out,nl,1,star,2,
<:netoperat :>,string inc(n),<: status error:>);
if neterror then writebinary(out,M(1));
end;
end res ok;
netoperat:=res;
end netoperat else
begin
netoperat:=0;
if neterror then write(out,nl,1,star,2,
<:netoperat :>,name,<: operation error:>,op);
end;
end;
clear netabsio
beskyt std.netabsio.4
netabsio=hcalg
external
integer procedure netabsio(name,op,data,first);
value op,first; integer op,first;
string name;
integer array data;
if op=12288 or op=20480 then
begin
integer res;
integer array M,A(1:8);
array n(1:3);
cleararray(n);
movestring(n,1,name);
res:=checkandres(string inc(n));
if res>0 then res:=res+8
else
begin
M(1):=op;
M(2):=firstaddr(data);
M(3):=M(2)+510;
M(4):=first;
for res:=waitanswer(sendmessage(n,M),A) while res=1 and
A(1)=0 and A(2)=0 do;
netiosw:=A(1);
netprogsw:=A(3);
if res<>1 and neterror then write(out,nl,1,star,2,
<:netabsio :>,string inc(n),<: result :>,res,<: wait answer:>) else
if A(1)<>0 then
begin
if neterror then write(out,nl,1,star,2,
<:netabsio :>,string inc(n),<: status error:>);
if neterror then writebinary(out,A(1));
end;
end res ok;
netabsio:=res;
end netabsio else
begin
netabsio:=0;
if neterror then write(out,nl,1,star,2,
<:netabsio :>,name,<: operation error:>);
end;
end
clear netprogload
beskyt std.netprogload.5
netprogload=hcalg
external
integer procedure netprogload(name,bs);
string name,bs;
begin
array n,b(1:3);
integer array M,A(1:8),t(1:10);
integer res,segm,lastsegm;
zone z(128,1,stderror);
integer array field ia;
cleararray(n);
movestring(n,1,name);
res:=checkandres(string inc(n));
if res>0 then res:=res+8
else
begin
M(1):=opautoload;
res:=waitanswer(sendmessage(n,M),M);
netiosw:=M(1);
netprogsw:=M(3);
if res<>1 and neterror then write(out,nl,1,star,2,
<:netprogload :>,string inc(n),
<: result :>,res,<: wait answer autoload:>) else
if M(1)<>0 then
begin
if neterror then write(out,nl,1,star,2,
<:netprogload :>,string inc(n),<: status autoload:>);
if neterror then writebinary(out,M(1));
end else
begin
cleararray(b);
movestring(b,1,bs);
res:=lookuptail(b,t);
if res<>0 then
begin
res:=res+16;
if neterror then write(out,nl,1,star,2,
<:netprogload :>,string inc(b),<: lookup result :>,res-16);
end else
if t(1)<2 or t(10)<512 then
begin
res:=17;
if neterror then write(out,nl,1,star,2,
<:netprogload :>,string inc(b),<: area size :>,
t(1),<: load size:>,t(10)-512);
end else
begin
open(z,4,string inc(b),0);
setposition(z,0,1);
lastsegm:=(t(10)-1)//512;
for segm:=1 step 1 until lastsegm do
begin
inrec(z,128);
res:=netabsio(string inc(n),opoutput,z.ia,(segm-1)*768);
end for segm;
end check tail;
end res bs ok;
end res ok;
netprogload:=res;
end netprogram load ;
end;
mode list.no 15.no
▶EOF◀