|
|
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: 2304 (0x900)
Types: TextFile
Names: »tdisccopy«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦e4d872f9f⟧ »cproc«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦e4d872f9f⟧ »cproc«
└─⟦this⟧
;ali
mode list.yes
mode 15.yes list.yes
disccopy=algol
1978-04-22
external
boolean procedure disccopy(infile,outfile);
string infile,outfile;
begin
integer result,insegments,outsegments,i,free,
blocklength;
integer array itail,otail(1:10),todesc,fromdesc(1:20);
array inname,outname(1:3);
free:=((system(2,i,inname)-1536)//512)+1;
blocklength:=free*512;
disccopy:=true;
cleararray(inname);
movestring(inname,1,infile);
result:=lookuptail(inname,itail);
if result>0 or itail(1)<=0 then
begin
i:=1;
write(out,<:<10>**disccopy infile :>,string inname(increase(i)),
<: entry:>);
if result=0 then write(out,<: size:>,itail(1)) else
write(out,<: lookup result :>,result);
disccopy:=false;
end infile improper;
insegments:=itail(1);
cleararray(outname);
movestring(outname,1,outfile);
result:=lookuptail(outname,otail);
if result>0 or otail(1)<=0 then
begin
i:=1;
write(out,<:<10>**disccopy outfile :>,string outname(increase(i)),
<: entry:>);
if result=0 then write(out,<: size:>,otail(1)) else
write(out,<: lookup result :>,result);
disccopy:=false;
end outfile improper;
outsegments:=otail(1);
if outsegments<insegments then
begin
i:=1;
write(out,<:<10>**disccopy infile :>,string inname(increase(i)),insegments);
i:=1;
write(out,<: greater than outfile :>,string outname(increase(i)),outsegments);
disccopy:=false;
end else
begin
zone z(free*128,1,stderror);
procedure flip;
begin
getzone6(z,fromdesc);
setzone6(z,todesc);
end;
procedure flop;
begin
getzone6(z,todesc);
setzone6(z,fromdesc);
end;
getzone6(z,todesc);
i:=1;
open(z,4,string inname(increase(i)),0); flip;
i:=1;
open(z,4,string outname(increase(i)),0); flop;
for i:=inrec6(z,0) while i>2 do
begin
inrec6(z,i); flip;
outrec6(z,i);
if i=blocklength then outrec6(z,0) else close(z,true);
flop;
end;
close(z,true); flip;
close(z,true); flop;
end zone;
end disccopy;
end
testcopy=set 100
testcopy=algol list.yes
begin
integer i,j;
array n1,n2(1:3);
cleararray(n1); cleararray(n2);
readlsfp(n2);
readinfp(n1,1);
i:=j:=1;
disccopy(string n1(increase(i)),string n2(increase(j)))
end;
testa1=set 25
testa2=set 30
testa2=move fplibman
testa1=move listman
testa2=testcopy testa1
lookup testa1 testa2
compare testa1.testa2.text
▶EOF◀