|
|
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: 6144 (0x1800)
Types: TextFile
Names: »linkcentral«, »linkcntr4tx «
└─⟦4ee9f7d29⟧ Bits:30008158 SW8002/2
└─⟦1aff65501⟧
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦1aff65501⟧ »ncp4pack «
└─⟦0af7ac4b3⟧
└─⟦this⟧ »linkcentral«
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »linkcntr4tx «
begin
<*linkcentral*>
integer array zdescr(1:20),shdescr(1:12);
zone z(6,1,stderror),p(1,1,stderror),px(1,1,stderror);
integer bsmkind,bsbufs,bsbufsize,counter,
twmkind,twbufs,twbufsize,
ptrmkind,ptrbufs,ptrbufsize,
ptpmkind,ptpbufs,ptpbufsize,
lptmkind,lptbufs,lptbufsize,
cdrmkind,cdrbufs,cdrbufsize,
mtmkind,mtbufs,mtbufsize,
fdmkind,fdbufs,fdbufsize,
address;
boolean newname;
procedure bs(devno,devname);
integer devno;
string devname;
linkup(bsmkind,bsbufs,bsbufsize,devno,devname);
procedure tw(devno,devname);
integer devno;
string devname;
linkup(twmkind,twbufs,twbufsize,devno,devname);
procedure ptr(devno,devname);
integer devno;
string devname;
linkup(ptrmkind,ptrbufs,ptrbufsize,devno,devname);
procedure ptp(devno,devname);
integer devno;
string devname;
linkup(ptpmkind,ptpbufs,ptpbufsize,devno,devname);
procedure lpt(devno,devname);
integer devno;
string devname;
linkup(lptmkind,lptbufs,lptbufsize,devno,devname);
procedure cdr(devno,devname);
integer devno;
string devname;
linkup(cdrmkind,cdrbufs,cdrbufsize,devno,devname);
procedure mt(devno,devname);
integer devno;
string devname;
linkup(mtmkind,mtbufs,mtbufsize,devno,devname);
procedure fd(devno,devname);
integer devno;
string devname;
linkup(fdmkind,fdbufs,fdbufsize,devno,devname);
procedure host(hostno,hostid,homereg,netid);
integer hostno,hostid,homereg,netid;
begin
shdescr(7):=hostno;
shdescr(8):=hostid;
shdescr(9):=homereg shift 12 + netid;
counter:=counter+1;
end host;
procedure name(devicename);
string devicename;
begin
open(px,0,devicename,0);
counter:=counter+1;
newname:=true;
end name;
procedure sendrelease(address);
integer address;
begin
integer i, j, tries, maxtries; integer array help(1:12), help1(1:20);
maxtries:=50;
tries:=0;
for i:=1 step 1 until 12 do
help(i):=shdescr(i);
getzone6(z,help1);
shdescr(4):=2 shift 12 + 1;
shdescr(7):=address;
setshare6(z,shdescr,1);
monitor(16,z,1,shdescr);
monitor(18,z,1,shdescr);
testready:
for i:=1 step 1 until 12 do
shdescr(i):=help(i);
shdescr(4):=1 shift 12 + 1 shift 2 + 1;
shdescr(5):=zdescr(19) + 1;
shdescr(6):=zdescr(19) + 1 + 20;
shdescr(7):=address;
setshare6(z,shdescr,1);
monitor(16,z,1,shdescr);
tries:=tries+1;
i:=monitor(18,z,1,shdescr);
j:=shdescr(1) shift (-12) extract 3;
if i=1 and (j=1 or j=2) and tries<maxtries then
goto testready;
for i:=1 step 1 until 12 do
shdescr(i):=help(i);
setzone6(z,help1);
setshare6(z,shdescr,1);
end sendrelease;
procedure releaselink(devname);
string devname;
begin
zone zz(1,1,stderror);
integer array ia(1:2);
integer i;
counter:=counter+1;
open(zz,0,devname,0);
address:=monitor(4,zz,i,ia);
if address<>0 then
sendrelease(address);
close(zz,true);
end releaselink;
procedure linkup(mkind,bufno,bufsize,devno,devname);
integer mkind,bufno,bufsize,devno;
string devname;
begin
integer i,j;
integer array field iaf;
integer array name(1:20);
counter:=counter+1;
open(p,0,devname,0);
getzone6(p,name);
close(p,true);
iaf:=0;
shdescr(4):=1 shift 12 + 7 shift 1 +0;
shdescr(5):=zdescr(19)+1;
shdescr(6):=zdescr(19)+1+20;
setshare6(z,shdescr,1);
zdescr(14):=zdescr(19);
zdescr(15):=zdescr(19)+zdescr(20);
zdescr(16):=24;
setzone6(z,zdescr);
begin
integer array start,stop(1:2);
integer pheripherals;
system(5,74,start);
system(5,76,stop);
pheripherals:=(stop(1)-start(1))/2-1;
begin
integer array nametable(0:pheripherals);
integer array field iaf;
iaf := -2;
system(5,start(1),nametable.iaf);
if devno<=pheripherals then
sendrelease(nametable(devno));
end;
end;
z.iaf(1):=mkind;
z.iaf(2):=bufno;
z.iaf(3):=bufsize;
for i:=4 step 1 until 7 do
z.iaf(i):=name(i-2);
z.iaf(8):=devno;
monitor(16,z,1,shdescr);
if monitor(18,z,1,name)=1 then
begin
if newname then
begin
if name(1) extract 12 = 0 then
begin
if monitor(54,px,devno,shdescr)<>0 then
write(out,<:<10>error in call no.:>,<<dddd>,
counter-1,<:<10>***devname:>);
end;
newname:=false;
close(px,true);
end;
if name(1) extract 12 =-1 then
write(out,<:<10>error in call no.:>,<<dddd>,counter,<:<10>***operation rejected:>)
else
if name(1) extract 12<>0 then
write(out,<:<10>error in call no.:>,<<dddd>,counter,
case name(1) extract 12 of
(<:<10>***device trouble :>,
<:<10>***device reserved:>,
<:<10>***no resources:>));
end
else
begin
write(out,<:<10>error in call no.:>,<<dddd>,counter,
<:<10>***unintelligible:>);
close(px,true);
end;
end linkup;
newname:=false;
counter:=0;
bsmkind:=6;
bsbufs:=1;
bsbufsize:=768;
twmkind:=8;
twbufs:=1;
twbufsize:=128;
ptrmkind:=2 shift 12 +10;
ptrbufs:=1;
ptrbufsize:=128;
ptpmkind:=2 shift 12 +12;
ptpbufs:=1;
ptpbufsize:=172;
lptmkind:=14;
lptbufs:=1;
lptbufsize:=172;
cdrmkind:=10 shift 12+16;
cdrbufs:=1;
cdrbufsize:=256;
mtmkind:=18;
mtbufs:=1;
mtbufsize:=4*768+18;
fdmkind:=22;
fdbufs:=1;
fdbufsize:=342*3//2;
open(z,0,<:host:>,0);
getzone6(z,zdescr);
getshare6(z,shdescr,1);
algol copy.1;
end;
▶EOF◀