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