|
|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 5376 (0x1500)
Types: TextFileVerbose
Names: »punchbint«
└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
└─⟦093e2ad1c⟧
└─⟦this⟧ »punchbint«
job vr 1 3447 time 60
mode list.yes
punchlist=set 300
o punchlist
head 1
b=algol list.yes xref.yes bossline.yes punch16text
head 1
o c
;convert punchlist std
do wait printer
lp=copy punchlist
do clear printer
end
finis
\f
begin
comment <area=>punch16 mode.<modetype> <areas> dato 30.8.74
<modetype>::=8:8,4:<auto>,0:<boot>;
integer check,esc,mode,i,i0,j,p1,p2,sourceno,word, count;
long l;
real r;
integer field inf1;
integer array filename(0:11);
zone zi(128*2,2,stderror),zo(128,1,stderror);
boolean procedure opennextsource(z, sourceno);
integer sourceno;
zone z;
begin
integer i, j, k, cnt, pno, file, block;
boolean first;
real array field ra;
integer array arr(1:10);
real array rarr(1:2);
procedure alarm;
begin
write(out, <:<10>connect file:>, <<-d>, sourceno, <:<10>:>);
goto slut;
end;
first:=true;
if sourceno>1 then close(z, true);
opennextsource:=true;
pno:=1;
if system(4, pno, rarr)=6 shift 12 + 10 then pno:=pno+1;
cnt:=k:=0;
for j:=system(4, pno, rarr) while cnt<>sourceno and(j<>0 or k<>0) do
begin
if k=4 shift 12 + 10 and (j shift(-12)=4 or j=0) then
cnt:=cnt+1;
k:=j;
pno:=pno+1;
end;
if cnt<>sourceno or pno<>2 and sourceno=0 then opennextsource:=false else
begin
system(4, pno-2, rarr);
cnt:=0;
for i:=0 step 1 until 11 do filename(i):=rarr(1+i//6)
shift(8*(i mod 6)-40)extract 8;
\f
loop:
i:=1;
if sourceno<>0 then
begin
write(out,<:<10>sourcefile: :>);
j:=12-write(out,string rarr(increase(i)));i:=1;
write(out,false add 32,j,<: segm: :>,count//750,
<: bytes: :>,((count mod 768)-3*(count//768)));
end;
open(z, 4, string rarr(increase(i)), 0);
if monitor(42, z, j, arr)<>0 then
begin
for j:=1 step 1 until 10 do arr(j):=0; arr(1):=1;
if monitor(40,z,j,arr)<>0 then alarm;
goto out1;
end;
if first then
begin
file:=arr(7);
block:=arr(8);
first:=false;
end;
if arr(1)<0 then
begin
ra:=2;
rarr(1):=arr.ra(1);
rarr(2):=arr.ra(2);
end;
if arr(1)=1 shift 23 + 4 then
begin
cnt:=cnt+1;
if cnt=100 then alarm;
close(z, false);
goto loop;
end;
if arr(1)<0 then
begin
j:=arr(1) shift(-12) extract 11;
k:=arr(1) extract 12;
if k>20 or k extract 1=1 or arr(1)=0 or j extract 1=1 or
j>(if k=10 or k=12 then 6 else if k=16 then 4 else if
k=18 then 2 else 0) then alarm;
j:=arr(1)extract 23;
if k=20 then j:=j+(14-20);
close(z, false);
k:=1;
open(z, j, string rarr(increase(k)), 0);
end not bsarea;
k:=arr(1) extract 12;
if k<>10 and k<>16 then setposition(z,file,block);
if sourceno<>0 then sourceno:=sourceno+1;
end;
out1:
end opennextsource;
\f
procedure examineparams;
begin
integer names;
names:=1;
begin
boolean first;
integer pno, j, i, type,paramfct;
real array rarr(1:2), name(1:names, 1:2);
integer array field ia;
procedure alarm;
begin
write(out, <:<10>params<10>:>);
goto slut;
end;
for j:=1 step 1 until names do name(j,1):=name(j,2):=real<::>;
name(1,1):= real<:mode:>;
mode:=8;
pno:=1;
if system(4,pno,rarr)=6 shift 12 + 10 then pno:=pno+1;
for j:=system(4,pno,rarr) while j<>0 do
begin
if j<>4 shift 12 + 10 then alarm;
for paramfct:=1 step 1 until names do
if name(paramfct,1)=rarr(1) and
name(paramfct,2)=rarr(2) then goto ud; ud:
first:=true;
for i:=system(4,increase(pno)+1,rarr)while i shift(-12)=8 do
begin comment .param;
type:=if i extract 12=4 then 1 else if rarr(1)=real<:yes:>
then 2 else if rarr(1)=real<:no:> then 3 else 4;
case paramfct of
begin
begin comment mode;
if type=1 then
begin
if rarr(1)<>8 then alarm;
mode:=rarr(1);
paramfct:= names+2;
end else
if rarr(1)=real<:auto:> then
begin
mode:= 4;
paramfct:= names+2;
end else
if rarr(1)=real<:boot:> then
begin
mode:=0;
paramfct:=names+2;
end;
end mode first param;
if -, first then alarm;comment not known;
alarm; comment no more points might follow;
end case paramfct of;
first:= false;
end paramlist;
end outer loop;
end inner block;
end examin params;
\f
;comment programstart;
examineparams;
if -,opennextsource(zo,0) then
open(zo,4 shift 12 +12,<:punch:>,0);
sourceno:= 1;
word:= 0;
for i0:= 0 while opennextsource(zi,sourceno) do
begin
nextblock:
count:= inrec6(zi,0);
if count > 2 then
begin
outrec6(zo,count);
inrec6(zi,count);
tofrom(zo,zi,count);
word:= word + 1;
goto nextblock;
end
else goto slut;
end;
slut:
inf1:= 2;
for i0:= 1 step 1 until 33 do
begin
outrec6(zo,2);
zo.inf1:= 0;
end;
write(out,<:<10>no of segments: :>,word);
close(zo,true);
monitor(42,zo,i,filename);
systime(1,0,r);l:=625*r;
filename(6):=l shift(-15)extract 24;
monitor(44,zo,i,filename);
end;
«eof»