|
|
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: 3840 (0xf00)
Types: TextFile
Names: »tmovedump«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦this⟧ »tmovedump«
<* program movedump 08.11-1616 *>
begin
comment: the program moves the coredump due to autoload from the system disc
to the file identified by <outfile>. The program mooves 168 segments
starting with <firstsegment>.
if <outfile> is not created , movedump will create a
temporary file on a disc.
default values are :
<firstsegment> = 840
error messages :
syntax errors refers to the parameter number in the fp call.
monitor errors are described in the rc 8000 monitor, part 2 reference manual.
rcsl 31-d477 .
fp call : 1
<outfile>=movedump<s>device.<devicespec>(.<firstsegment>)
0
parameter number: 0 1 2 3 4
<devicespec> = <deviceno> ! <devicename> ;
boolean create;
real array outfile, dummy, deviceno, devicename, firstsegment(1:2);
integer k, i, j, s, l;
integer array ia(1:10);
zone inzone(128,1,stderror), outzone(128,1,stderror);
procedure syntax(no);
integer no ;
begin
write(out,<:<10>***movedump: syntax error at parameter:>,<<ddd>,no,<:<10>:>);
goto stop;
end;
<* clear discname array *>
for i:= 1 step 1 until 2 do
devicename(i):= real extend 0 ;
create:= false;
<* check of syntax *>
<* check of parameter outfile *>
i:=j:=s:=l:=1 ;
k:=system(4,0,outfile);
if k<> 2 shift 12 add 10 then syntax(0);
<* check outfile different from movedump *>
if outfile(1) = real <:moved:> add 117 and
outfile(2) = real <:mp:> then syntax(0) ;
open(outzone,4,string outfile(increase(i)),0);
<* check if outfile is created *>
k:=monitor(42,outzone,0,ia) ; <* lookup entry *>
if k<> 0 then
begin
ia(1):= 168 ; ia(2):= 1 ;
for j:=3 step 1 until 10 do
ia(j):=0 ;
ia(6):= systime(7,0,0.0) ;
k:=monitor(40,outzone,0,ia) ; <* create entry *>
if k <> 0 then begin
write(out,<:<10>***movedump: monitor 40, entry not created due to monitor result:>,<<ddd>,k,<:<10>:>);
goto stop; end;
end ;
<* check of parameter device *>
k:=system(4,2,dummy);
if (k <> 4 shift 12 add 10 ) or (dummy(1) <> real <:devic:> add 101 ) then syntax(2) ;
<* check of parameter devicespec *>
k:=system(4,3,deviceno);
if k = 8 shift 12 add 4 then create:= true
else if k = 8 shift 12 add 10 then
begin
for i:=1 step 1 until 2 do devicename(i):=deviceno(i) ;
open(inzone,4,string devicename(increase(s)),0) ;
end
else syntax(3);
<* check parameter firstsegment *>
k:=system(4,4,firstsegment);
if k = 0 then firstsegment(1):= 840 else
if k<> 8 shift 12 add 4 then syntax(4);
<* creation of pheripheral process *>
if create then
begin
open(inzone,4,string devicename(increase(l)),0) ;
k:=monitor(54,inzone,round deviceno(1),ia);
if k<>0 then begin
write(out,<:<10>***movedump: monitor 54, proces not created due to monitor result:>,<<ddd>,k,<:<10>:>);
goto stop; end;
end;
<* positioning of infile *>
setposition(inzone,0,round firstsegment(1));
outrec6(outzone,512);
<* transfer of data *>
for i:=1 step 1 until 168-1 do begin
inrec6(inzone,512);
tofrom(outzone,inzone,512);
outrec6(outzone,512);
end;
close(inzone,true);
close(outzone,true);
stop : end;
▶EOF◀