DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦09c3c028e⟧ TextFile

    Length: 3840 (0xf00)
    Types: TextFile
    Names: »tmovedump«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦this⟧ »tmovedump« 

TextFile

   <* 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◀