|
|
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: 96768 (0x17a00)
Types: TextFile
Names: »htio «
└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system
└─⟦a957ba283⟧
└─⟦this⟧ »htio «
io.
:1: io: parametererklæringer
message io_parametererklæringer side 1 - 820301/hko;
:2: io: parameterinitialisering
message io_parameterinitialisering side 1 - 810421/hko;
:3: io: claiming
\f
message io_claiming side 1 - 810421/hko;
max_coru:= max_coru
+ 1 <* hovedmodul io *>
+ 1 <* io kommando *>
+ 1 <* io operatørmeddelelser *>
+ 1 <* io spontane meddelelser *>
+ 1 <* io spoolkorutine *>
+ 1 <* io tællernulstilling *>
;
max_semch:= max_semch
+ 1 <* cs_io *>
+ 1 <* cs_io_komm *>
+ 1 <* cs_io_fil *>
+ 1 <* cs_io_medd *>
+ 1 <* cs_io_spool *>
+ 1 <* cs_io_nulstil *>
;
max_sem:= max_sem
+ 1 <* ss_io_spool_fulde *>
+ 1 <* ss_io_spool_tomme *>
+ 1; <* bs_zio_adgang *>
max_op:=max_op
+ 1; <* fil-operation *>
max_nettoop:=max_nettoop
+ (data+18); <* fil-operation *>
:4: io: erklæringer
\f
message io_erklæringer side 1 - 810421/hko;
integer
cs_io,
cs_io_komm,
cs_io_fil,
cs_io_spool,
cs_io_medd,
cs_io_nulstil,
ss_io_spool_tomme,
ss_io_spool_fulde,
bs_zio_adgang,
io_spool_fil,
io_spool_postantal,
io_spool_postlængde;
integer array field
io_spool_post;
zone z_io(32,1,io_fejl);
procedure io_fejl(z,s,b);
integer s,b;
zone z;
begin
disable begin
integer array iz(1:20);
integer i,j,k;
integer array field iaf;
real array field raf;
if s<>(1 shift 21 + 2) then
begin
getzone6(z,iz);
raf:=2;
iaf:=0;
k:=1;
j:= terminal_tab.iaf.terminal_tilstand;
if j shift(-21)<>6 then
fejlreaktion(17<*ydre enhed status*>,s,string iz.raf(increase(k)),
1 shift 12 <*binært*> +1 <*fortsæt*>);
terminal_tab.iaf.terminal_tilstand:= 6 shift 21
+ terminal_tab.iaf.terminal_tilstand extract 21;
end;
z(1):=real <:<'?'><'?'><'em'>:>;
b:=2;
end; <*disable*>
end io_fejl;
\f
message procedure skriv_auto_spring_medd side 1 - 820301/hko;
procedure skriv_auto_spring_medd(z,medd,tid);
value tid;
zone z;
real tid;
integer array medd;
begin
disable begin
real t;
integer kode,bus,linie,bogst,løb,dato,kl;
long array indeks(1:1);
kode:= medd(1);
indeks(1):= extend medd(5) shift 24;
if kode > 0 and kode < 10 then
begin
write(z,"nl",0,<:-<'>'>:>,case kode of(
<*1*><:linie/løb ikke indsat :>,<*sletning/omkodning/spring *>
<*2*><:linie/løb allerede indsat:>,<*omkodning/spring *>
<*3*><:vogn i kø:>, <*påmindelse i forb. omkod./spring*>
<*4*><:vogn optaget:>, <* - i - - / - *>
<*5*><:spring annulleret:>, <*udløb af ventetid *>
<*6*><::>, <* - af springliste *>
<*7*><::>, <*start af springsekvens *>
<*8*><::>, <*afvikling af springsekvens *>
<*9*><:område kan ikke opdateres:>,<*vt-ændring*>
<::>));
<* if kode = 5 then
begin
bogst:= medd(4);
linie:= bogst shift(-5) extract 10;
bogst:= bogst extract 5;
if bogst > 0 then bogst:= bogst +'A'-1;
write(z,"sp",1,<<z>,linie,false add bogst,1,
".",1,indeks);
end;
*>
outchar(z,'sp');
bus:= medd(2) extract 14;
if bus > 0 then
write(z,<<z>,bus,"/",1);
løb:= medd(3);
<*+4*> if løb shift(-22) <> 1 and løb <> 0 then
fejlreaktion(3<*programfejl*>,løb,<:ikke linie id, spon.medd.:>,1);
<*-4*>
\f
message procedure skriv_auto_spring_medd side 2 - 810507/hko;
linie:= løb shift(-12) extract 10;
bogst:= løb shift(-7) extract 5;
if bogst > 0 then bogst:= bogst +'A'-1;
løb:= løb extract 7;
if medd(3) <> 0 or kode <> 5 then
begin
write(z,<<z>,linie,false add bogst,1,"/",1,løb,"sp",1);
if kode = 5 or kode = 6 then write(z,<:er frit :>);
end;
if kode = 7 or kode = 8 then
write(z,<*indeks,"sp",1,*>
if kode=7 then <:udtaget :> else <:indsat :>);
dato:= systime(4,tid,t);
kl:= t/100.0;
løb:= replace_char(1<*space in number*>,'.');
write(z,<<zd_dd_dd>,dato,<< zd_dd>,kl);
replace_char(1,løb);
end
else <*kode < 1 or kode > 8*>
fejlreaktion(3<*programfejl*>,kode,<:spon.medd. kode:>,1);
end; <*disable*>
end skriv_auto_spring_medd;
\f
message procedure h_io side 1 - 810507/hko;
<* hovedmodulkorutine for io *>
procedure h_io;
begin
integer array field op_ref;
integer k,dest_sem;
procedure skriv_hio(zud,omfang);
value omfang;
zone zud;
integer omfang;
begin
write(zud,"nl",1,<:+++ hovedmodul io :>);
if omfang>0 then
disable begin integer x;
trap(slut);
write(zud,"nl",1,
<: op_ref: :>,op_ref,"nl",1,
<: k: :>,k,"nl",1,
<: dest_sem: :>,dest_sem,"nl",1,
<::>);
skriv_coru(zud,coru_no(100));
slut:
end;
end skriv_hio;
trap(hio_trap);
stack_claim(if cm_test then 198 else 146);
<*+2*>
if testbit0 and overvåget or testbit28 then
skriv_hio(out,0);
<*-2*>
\f
message procedure h_io side 2 - 810507/hko;
repeat
wait_ch(cs_io,op_ref,true,-1);
<*+4*>
if (d.op_ref.optype and (io_optype or gen_optype)) extract 12 =0
then fejlreaktion(12<*operationstype*>,op_ref,<:operation til io:>,1);
<*-4*>
k:=d.op_ref.opkode extract 12;
dest_sem:=
if k = 0 <*attention*> then cs_io_komm else
if k = 22 <*auto vt opdatering*>
or k = 23 <*generel meddelelse*>
or k = 36 <*spring meddelelse*>
or k = 44 <*udeladt i gruppeopkald*>
or k = 45 <*nødopkald modtaget*>
or k = 46 <*nødopkald besvaret*> then cs_io_spool else
if k = 38 <*meddelelse til alle skærme*> then cs_io_medd else
0;
<*+4*>
if dest_sem = 0 then
begin
fejl_reaktion(2<*operationskode*>,k,<:hovedmodul io:>,1);
signal_ch(d.op_ref.retur,op_ref,d.op_ref.optype);
end
else
<*-4*>
begin
signal_ch(dest_sem,op_ref,d.op_ref.optype);
end;
until false;
hio_trap:
disable skriv_hio(zbillede,1);
end h_io;
\f
message procedure io_komm side 1 - 810507/hko;
procedure io_komm;
begin
integer array field op_ref,ref,vt_op,iaf;
integer kode,aktion,status,opgave,dest_sem,vogn,ll,omr,
pos,indeks,sep,sluttegn,operatør,i,j,k;
long navn;
procedure skriv_io_komm(zud,omfang);
value omfang;
zone zud;
integer omfang;
begin
disable
write(zud,"nl",1,<:+++ io_komm :>);
if omfang > 0 then
disable begin integer x;
trap(slut);
write(zud,"nl",1,
<: op-ref: :>,op_ref,"nl",1,
<: kode: :>,kode,"nl",1,
<: aktion: :>,aktion,"nl",1,
<: ref: :>,ref,"nl",1,
<: vt_op: :>,vt_op,"nl",1,
<: status: :>,status,"nl",1,
<: opgave: :>,opgave,"nl",1,
<: dest-sem: :>,dest_sem,"nl",1,
<: iaf: :>,iaf,"nl",1,
<: i: :>,i,"nl",1,
<: j: :>,j,"nl",1,
<: k: :>,k,"nl",1,
<: navn: :>,string navn,"nl",1,
<: pos: :>,pos,"nl",1,
<: indeks: :>,indeks,"nl",1,
<: sep: :>,sep,"nl",1,
<: sluttegn: :>,sluttegn,"nl",1,
<: vogn: :>,vogn,"nl",1,
<: ll: :>,ll,"nl",1,
<: omr: :>,omr,"nl",1,
<: operatør: :>,operatør,"nl",1,
<::>);
skriv_coru(zud,coru_no(101));
slut:
end;
end skriv_io_komm;
\f
message procedure io_komm side 2 - 810424/hko;
trap(io_komm_trap);
stack_claim((if cm_test then 200 else 146)+24+200);
ref:=0;
navn:= long<::>;
<*+2*>
if testbit0 and overvåget or testbit28 then
skriv_io_komm(out,0);
<*-2*>
repeat
<*V*> wait_ch(cs_io_komm,
op_ref,
true,
-1<*timeout*>);
<*+2*>
if testbit1 and overvåget then
disable begin
skriv_io_komm(out,0);
write(out,"nl",1,<:operation fra cs:>,<<d>,cs_io,
<: til io :>);
skriv_op(out,op_ref);
end;
<*-2*>
kode:= d.op_ref.op_kode;
i:= terminal_tab.ref.terminal_tilstand;
status:= i shift(-21);
opgave:=
if kode=0 then 1 <* indlæs kommando *> else
0; <* afvises *>
aktion:= if opgave = 0 then 0 else
(case status +1 of(
<* status *>
<* 0 klar *>(1),
<* 1 - *>(-1),<* ulovlig tilstand *>
<* 2 - *>(-1),<* ulovlig tilstand *>
<* 3 stoppet *>(2),
<* 4 noneksist *>(-1),<* ulovlig tilstand *>
<* 5 - *>(-1),<* ulovlig tilstand *>
<* 6 - *>(-1),<* ulovlig tilstand *>
<* 7 ej knyttet *>(-1),<* ulovlig tilstand *>
-1));
\f
message procedure io_komm side 3 - 810428/hko;
case aktion+6 of
begin
begin
<*-5: terminal optaget *>
d.op_ref.resultat:= 16;
afslut_operation(op_ref,-1);
end;
begin
<*-4: operation uden virkning *>
afslut_operation(op_ref,-1);
end;
begin
<*-3: ulovlig operationskode *>
fejl_reaktion(2<*operationskode*>,kode,<:ulovlig:>,1);
afslut_operation(op_ref,-1);
end;
begin
<*-2: ulovlig aktion *>
fejl_reaktion(3<*programfejl*>,-2,<: ulovlig aktion:>,0);
afslut_operation(op_ref,-1);
end;
begin
<*-1: ulovlig io_tilstand *>
fejl_reaktion(3<*programfejl*>,status,<: ulovlig io-status:>,0);
afslut_operation(op_ref,-1);
end;
begin
<* 0: ikke implementeret *>
fejl_reaktion(2<*operationskode*>,kode,<: ikke implementeret:>,1);
afslut_operation(op_ref,-1);
end;
begin
\f
message procedure io_komm side 4 - 851001/cl;
<* 1: indlæs kommando *>
<*V*> wait(bs_zio_adgang);
<*V*> læs_kommando(z_io,101,op_ref,pos,indeks,sep,sluttegn);
if d.op_ref.resultat > 3 then
begin
<*V*> setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,op_ref,pos,
d.op_ref.resultat);
end
else if d.op_ref.resultat>0 then
begin <*godkendt*>
kode:=d.op_ref.opkode;
i:= kode extract 12;
j:= if kode < 5 or
kode=7 or kode=8 or
kode=72 or kode=73 or kode=74 then 1 <*IN,x/EK,x*>else
if kode=5 or kode=77 then 9 <*FO,L/FO,O*>else
if kode = 9 or kode=10 then 3 <*VO,B/VO,L*>else
if kode =11 or kode=12 or kode=19 or <*VO,I/VO,U/VO,S*>
kode=20 or kode=24 then 4<*VO,F/VO,R*>else
if kode =21 then 5 <*AU*> else
if kode =25 then 6 <*GR,D*> else
if kode =26 then 5 <*GR,S*> else
if kode =27 or kode =28 then 7 <*GR,V/GR,O*>else
if kode =30 then 10 <*SP,D*> else
if kode =31 then 5 <*SP*> else
if kode =32 or kode =33 then 8 <*SP,V/SP,O*>else
if kode =34 or kode =35 then 5 <*SP,R/SP,A*>else
if kode=71 then 11 <*FO,V*> else
if kode =75 then 12 <*TÆ,V *>else
if kode =76 then 12 <*TÆ,N *>else
if kode =65 then 13 <*BE,N *>else
if kode =66 then 14 <*BE,G *>else
if kode =67 then 15 <*BE,V *>else
if kode =68 then 16 <*ST,D *>else
if kode =69 then 17 <*ST,V *>else
if kode =36 then 18 <*AL *>else
if kode =37 then 19 <*CC *>else
if kode>=80 and kode <=88 then 2 <*sys-spec.*>else
if kode>=90 and kode <=92 then 20 <*CQF,I/U/V*>else
0;
if j > 0 then
begin
case j of
begin
begin
\f
message procedure io_komm side 5 - 810424/hko;
<* 1: inkluder/ekskluder ydre enhed *>
d.op_ref.retur:= cs_io_komm;
if kode=1 then d.opref.opkode:=
ia(2) shift 12 + d.opref.opkode extract 12;
d.op_ref.data(1):= ia(1);
signal_ch(if kode < 5 or kode>=72 then cs_rad
else cs_gar,
op_ref,gen_optype or io_optype);
indeks:= op_ref;
wait_ch(cs_io_komm,
op_ref,
true,
-1<*timeout*>);
<*+4*> if op_ref <> indeks then
fejlreaktion(11<*fremmed post*>,op_ref,<:io_kommando:>,0);
<*-4*>
<*V*> setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,op_ref,-1,
d.op_ref.resultat);
end;
begin
\f
message procedure io_komm side 6 - 810501/hko;
<* 2: tid/attention,ja/attention,nej
slut/slut med billede *>
case d.op_ref.opkode -79 of
begin
<* 80: TI *> begin
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
if ia(1) <> 0 or ia(2) <> 0 then
begin real field rf;
rf:= 4;
trap(forbudt);
<*V*> setposition(z_io,0,0);
systime(3,ia.rf,0.0);
if false then
begin
forbudt: skriv_kvittering(z_io,0,-1,
43<*ændring af dato/tid ikke lovlig*>);
end
else
skriv_kvittering(z_io,0,-1,3);
end
else
begin
setposition(z_io,0,0);
write(z_io,<<zddddd>,systime(5,0,r),".",1,r);
end;
end TI;
\f
message procedure io_komm side 7 - 810424/hko;
<*81: AT,J*> begin
<*V*> setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(zio,'nl');
monitor(10)release process:(z_io,0,ia);
skriv_kvittering(z_io,0,-1,3);
end;
<* 82: AT,N*> begin
i:= monitor(8)reserve process:(z_io,0,ia);
<*V*> setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(zio,'nl');
skriv_kvittering(z_io,0,-1,
if i = 0 then 3 else 0);
end;
<* 83: SL *> begin
errorbits:=0; <* warning.no ok.yes *>
trapmode:= 1 shift 13;
trap(-2);
end;
<* 84: SL,B *>begin
errorbits:=1; <* warning.no ok.no *>
trap(-3);
end;
<* 85: SL,K *>begin
errorbits:=1; <* warning.no ok.no *>
disable sæt_bit_i(trapmode,15,0);
trap(-3);
end;
\f
message procedure io_komm side 7a - 810511/cl;
<* 86: TE,J *>begin
setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
for i:= 1 step 1 until indeks do
if 0<=ia(i) and ia(i)<=47 then
begin
case (ia(i)+1) of
begin
testbit0 := true;testbit1 := true;testbit2 := true;
testbit3 := true;testbit4 := true;testbit5 := true;
testbit6 := true;testbit7 := true;testbit8 := true;
testbit9 := true;testbit10:= true;testbit11:= true;
testbit12:= true;testbit13:= true;testbit14:= true;
testbit15:= true;testbit16:= true;testbit17:= true;
testbit18:= true;testbit19:= true;testbit20:= true;
testbit21:= true;testbit22:= true;testbit23:= true;
testbit24:= true;testbit25:= true;testbit26:= true;
testbit27:= true;testbit28:= true;testbit29:= true;
testbit30:= true;testbit31:= true;testbit32:= true;
testbit33:= true;testbit34:= true;testbit35:= true;
testbit36:= true;testbit37:= true;testbit38:= true;
testbit39:= true;testbit40:= true;testbit41:= true;
testbit42:= true;testbit43:= true;testbit44:= true;
testbit45:= true;testbit46:= true;testbit47:= true;
end;
end;
skriv_kvittering(z_io,0,-1,3);
end;
\f
message procedure io_komm side 7b - 810511/cl;
<* 87: TE,N *>begin
setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
for i:= 1 step 1 until indeks do
if 0<=ia(i) and ia(i)<=47 then
begin
case (ia(i)+1) of
begin
testbit0 := false;testbit1 := false;testbit2 := false;
testbit3 := false;testbit4 := false;testbit5 := false;
testbit6 := false;testbit7 := false;testbit8 := false;
testbit9 := false;testbit10:= false;testbit11:= false;
testbit12:= false;testbit13:= false;testbit14:= false;
testbit15:= false;testbit16:= false;testbit17:= false;
testbit18:= false;testbit19:= false;testbit20:= false;
testbit21:= false;testbit22:= false;testbit23:= false;
testbit24:= false;testbit25:= false;testbit26:= false;
testbit27:= false;testbit28:= false;testbit29:= false;
testbit30:= false;testbit31:= false;testbit32:= false;
testbit33:= false;testbit34:= false;testbit35:= false;
testbit36:= false;testbit37:= false;testbit38:= false;
testbit39:= false;testbit40:= false;testbit41:= false;
testbit42:= false;testbit43:= false;testbit44:= false;
testbit45:= false;testbit46:= false;testbit47:= false;
end;
end;
skriv_kvittering(z_io,0,-1,3);
end;
<* 88: O *> begin
integer array odescr,zdescr(1:20);
long array field laf;
integer res, i, j;
i:= j:= 1;
while læstegn(ia,i,res)<>0 do
begin
if 'A'<=res and res<='Å' then res:= res - 'A' + 'a';
skrivtegn(ia,j,res);
end;
laf:= 2;
getzone6(out,odescr);
getzone6(z_io,zdescr);
close(out,zdescr.laf(1)<>odescr.laf(1) or
zdescr.laf(2)<>odescr.laf(2));
laf:= 0;
if ia(1)=0 then
begin
res:= 3;
j:= 0;
end
else
begin
j:= res:= openbs(out,j,ia,0);
if res<>0 then
res:= 46;
end;
if res<>0 then
begin
open(out,8,konsol_navn,0);
if j<>0 then
begin
i:= 1;
fejlreaktion(4,j,string ia.laf(increase(i)),1);
end;
end
else res:= 3;
setposition(z_io,0,0);
skriv_kvittering(z_io,0,-1,res);
end;
end;<*case d.op_ref.opkode -79*>
end;<*case 2*>
begin
\f
message procedure io_komm side 8 - 810424/hko;
<* 3: vogntabel,linienr/-,busnr*>
d.op_ref.retur:= cs_io_komm;
tofrom(d.op_ref.data,ia,10);
indeks:= op_ref;
signal_ch(cs_vt,op_ref,gen_optype or io_optype);
wait_ch(cs_io_komm,
op_ref,
io_optype,
-1<*timeout*>);
<*+2*> if testbit2 and overvåget then
disable begin
skriv_io_komm(out,0);
write(out,"nl",1,<:io operation retur fra vt:>);
skriv_op(out,op_ref);
end;
<*-2*>
<*+4*> if indeks <> op_ref then
fejlreaktion(11<*fremmed post*>,op_ref,<:io_kommando:>,0);
<*-4*>
i:=d.op_ref.resultat;
if i<1 or i>3 then
begin
<*V*> setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,op_ref,-1,d.op_ref.resultat);
end
else
begin
\f
message procedure io_komm side 9 - 820301/hko,cl;
integer antal,filref;
antal:= d.op_ref.data(6);
fil_ref:= d.op_ref.data(7);
pos:= 0;
<*V*> setposition(zio,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
for pos:= pos +1 while pos <= antal do
begin
integer bogst,løb;
disable i:= læsfil(fil_ref,pos,j);
if i <> 0 then
fejlreaktion(5<*læs_fel*>,i,<:io komm., vo,l/vo,b:>,0);
vogn:= fil(j,1) shift (-24) extract 24;
løb:= fil(j,1) extract 24;
if d.op_ref.opkode=9 then
begin i:=vogn; vogn:=løb; løb:=i; end;
ll:= løb shift(-12) extract 10;
bogst:= løb shift(-7) extract 5;
if bogst > 0 then bogst:= bogst+'A'-1;
løb:= løb extract 7;
vogn:= vogn extract 14;
i:= d.op_ref.opkode -8;
for i:= i,i +1 do
begin
j:= (i+1) extract 1;
case j+1 of
begin
write(zio,"sp",if bogst=0 then 1 else 0,<<ddd>,ll,
false add bogst,1,"/",1,true,3,<<d>,løb);
write(zio,<<dddd>,vogn,"sp",1);
end;
end;
if pos mod 5 = 0 then
begin
outchar(zio,'nl');
<*V*> setposition(zio,0,0);
end
else write(zio,"sp",3);
end;
write(zio,"*",1);
\f
message procedure io_komm side 9a - 810505/hko;
d.op_ref.opkode:=104;<*slet fil*>
d.op_ref.data(4):=filref;
indeks:=op_ref;
signal_ch(cs_slet_fil,op_ref,genoptype or iooptype);
<*V*> wait_ch(cs_io_komm,op_ref,io_optype,-1);
<*+2*> if testbit2 and overvåget then
disable begin
skriv_io_komm(out,0);
write(out,"nl",1,<:io operation retur fra sletfil:>);
skriv_op(out,op_ref);
end;
<*-2*>
<*+4*> if op_ref<>indeks then
fejlreaktion(11<*fr.post*>,op_ref,<:io-komm, sletfil:>,0);
<*-4*>
if d.op_ref.data(9)<>0 then
fejlreaktion(3<*prg.fejl*>,d.op_ref.data(9),
<:io-komm, sletfil:>,1);
end;
end;
begin
\f
message procedure io_komm side 10 - 820301/hko;
<* 4 indsæt/udtag/flyt bus i vogntabel, slet vogntabel *>
vogn:=ia(1);
ll:=ia(2);
omr:= if kode=11 or kode=19 then ia(3) else
if kode=12 then ia(2) else 0;
if kode=19 and omr<=0 then
begin
if omr=-1 then omr:= 0
else omr:= 14 shift 20 + 3; <*OMR TCT*>
end;
<*V*> wait_ch(cs_vt_adgang,
vt_op,
gen_optype,
-1<*timeout sek*>);
start_operation(vtop,101,cs_io_komm,
kode);
d.vt_op.data(1):=vogn;
d.vt_op.data(2):=ll;
d.vt_op.data(if kode=19 then 3 else 4):= omr;
indeks:= vt_op;
signal_ch(cs_vt,
vt_op,
gen_optype or io_optype);
<*V*> wait_ch(cs_io_komm,
vt_op,
io_optype,
-1<*timeout sek*>);
<*+2*> if testbit2 and overvåget then
disable begin
skriv_io_komm(out,0);
write(out,"nl",1,
<:iooperation retur fra vt:>);
skriv_op(out,vt_op);
end;
<*-2*>
<*+4*> if vt_op<>indeks then
fejl_reaktion(11<*fremmede op*>,op_ref,
<:io-kommando:>,0);
<*-4*>
<*V*> setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,if d.vt_op.resultat = 11 or
d.vt_op.resultat = 12 then d.vt_op.data(3)
else vt_op,-1,d.vt_op.resultat);
d.vt_op.optype:= genoptype or vt_optype;
disable afslut_operation(vt_op,cs_vt_adgang);
end;
begin
\f
message procedure io_komm side 11 - 810428/hko;
<* 5 autofil-skift
gruppe,slet
spring (igangsæt)
spring,annuler
spring,reserve *>
tofrom(d.op_ref.data,ia,8);
d.op_ref.retur:=cs_io_komm;
indeks:=op_ref;
signal_ch(cs_vt,op_ref,gen_optype or io_optype);
<*V*> wait_ch(cs_io_komm,
op_ref,
io_optype,
-1<*timeout*>);
<*+2*> if testbit2 and overvåget then
disable begin
skriv_io_komm(out,0);
write(out,"nl",1,<:io operation retur fra vt:>);
skriv_op(out,op_ref);
end;
<*-2*>
<*+4*> if indeks<>op_ref then
fejlreaktion(11<*fremmed post*>,op_ref,
<:io-kommando(autofil):>,0);
<*-4*>
<*V*> setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,if (d.op_ref.resultat=11 or
d.op_ref.resultat=12) and kode=34 <*SP,R*> then
d.op_ref.data(4) else op_ref,-1,d.op_ref.resultat);
end;
begin
\f
message procedure io_komm side 12 - 820301/hko/cl;
<* 6 gruppedefinition *>
tofrom(d.op_ref.data,ia,indeks*2);
<*V*> wait_ch(cs_io_fil,vt_op,true,-1<*timeout*>);
start_operation(vt_op,101,cs_io_komm,
101<*opret fil*>);
d.vt_op.data(1):=256;<*postantal*>
d.vt_op.data(2):=1; <*postlængde*>
d.vt_op.data(3):=1; <*segmentantal*>
d.vt_op.data(4):=
2 shift 10; <*spool fil*>
signal_ch(cs_opret_fil,vt_op,io_optype);
pos:=vt_op;<*variabel lånes*>
<*V*> wait_ch(cs_io_komm,vt_op,io_optype,-1<*timeout*>);
<*+4*> if vt_op<>pos then
fejlreaktion(11<*fremmed post*>,vt_op,<:gruppedef:>,0);
if d.vt_op.data(9)<>0 then
fejlreaktion(13<*opret-fil*>,d.vt_op.data(9),
<:io-kommando(gruppedefinition):>,0);
<*-4*>
iaf:=0;
for i:=1 step 1 until indeks-1 do
begin
disable k:=modif_fil(d.vt_op.data(4),i,j);
if k<>0 then
fejlreaktion(7<*modif-fil*>,k,
<:io kommando(gruppe-def):>,0);
fil(j).iaf(1):=d.op_ref.data(i+1);
end;
while sep = ',' do
begin
wait(bs_fortsæt_adgang);
pos:= 1; j:= 0;
while læs_store(z_io,i) < 8 do
begin
skrivtegn(fortsæt,pos,i);
if i = '?' or i = 'esc' then j:= 1; <* skip kommando *>
end;
skrivtegn(fortsæt,pos,'em');
afsluttext(fortsæt,pos);
sluttegn:= i;
if j<>0 then
begin
setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
skriv_kvittering(zio,opref,-1,53);<*annulleret*>
goto gr_ann;
end;
\f
message procedure io_komm side 13 - 810512/hko/cl;
disable begin
integer array værdi(1:4);
integer a_pos,res;
pos:= 0;
repeat
apos:= pos;
læs_paramsæt(fortsæt,a_pos,0,værdi,sep,res);
if res >= 0 then
begin
if res=0 and (sep=',' or indeks>2) then <*ok*>
else if res=0 then res:= -25 <*parameter mangler*>
else if res=2 and (værdi(1)<1 or værdi(1)>9999) then
res:= -7 <*busnr ulovligt*>
else if res=2 or res=6 then
begin
k:=modiffil(d.vt_op.data(4),indeks,j);
if k<>0 then fejlreaktion(7<*modiffil*>,k,
<:io kommando(gruppe-def):>,0);
iaf:= 0;
fil(j).iaf(1):= værdi(1) +
(if res=6 then 1 shift 22 else 0);
indeks:= indeks+1;
if sep = ',' then res:= 0;
end
else res:= -27; <*parametertype*>
end;
if res>0 then pos:= a_pos;
until sep<>'sp' or res<=0;
if res<0 then
begin
d.op_ref.resultat:= -res;
i:=1;
hægt_tekst(d.op_ref.data,i,fortsæt,1);
afsluttext(d.op_ref.data,i);
end;
end;
\f
message procedure io_komm side 13a - 810512/hko/cl;
if d.op_ref.resultat > 3 then
begin
setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,op_ref,pos,d.opref.resultat);
goto gr_ann;
end;
signalbin(bs_fortsæt_adgang);
end while sep = ',';
d.op_ref.data(2):= d.vt_op.data(1):=indeks-1;
k:= sætfildim(d.vt_op.data);
if k<>0 then fejlreaktion(9,k,<:io kommando(gruppe-def):>,0);
d.op_ref.data(3):= d.vt_op.data(4); <*filref*>
signalch(cs_io_fil,vt_op,io_optype or gen_optype);
d.op_ref.retur:=cs_io_komm;
pos:=op_ref;
signal_ch(cs_vt,op_ref,gen_optype or io_optype);
<*V*> wait_ch(cs_io_komm,op_ref,io_optype,-1<*timeout*>);
<*+4*> if pos<>op_ref then
fejlreaktion(11<*fremmed post*>,op_ref,
<:io kommando(gruppedef retur fra vt):>,0);
<*-4*>
<*V*> setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,op_ref,-1,d.op_ref.resultat);
if false then
begin
gr_ann: signalch(cs_slet_fil,vt_op,io_optype);
waitch(cs_io_komm,vt_op,io_optype,-1);
signalch(cs_io_fil,vt_op,io_optype or vt_optype);
end;
end;
begin
\f
message procedure io_komm side 14 - 810525/hko/cl;
<* 7 gruppe(-oversigts-)rapport *>
d.op_ref.retur:=cs_io_komm;
d.op_ref.data(1):=ia(1);
indeks:=op_ref;
signal_ch(cs_vt,op_ref,gen_optype or io_optype);
<*V*> wait_ch(cs_io_komm,op_ref,io_optype,-1<*timeout*>);
<*+4*> if op_ref<>indeks then
fejlreaktion(11<*fremmed post*>,op_ref,
<:io-kommando(gruppe-rapport):>,0);
<*-4*>
<*V*> setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
if d.op_ref.resultat<>3 then
begin
skriv_kvittering(z_io,op_ref,-1,d.op_ref.resultat);
end
else
begin
integer bogst,løb;
if kode = 27 then <* gruppe,vis *>
begin
<*V*> write(z_io,"nl",1,"-",5,"sp",2,<:gruppe: :>,
"G",1,<<z>,d.op_ref.data(1) extract 7,
"sp",2,"-",5,"nl",1);
\f
message procedure io_komm side 15 - 820301/hko;
for pos:=1 step 1 until d.op_ref.data(2) do
begin
disable i:=læsfil(d.op_ref.data(3),pos,j);
if i<>0 then
fejlreaktion(5<*læsfil*>,i,
<:io_kommando(gruppe,vis):>,0);
iaf:=0;
vogn:=fil(j).iaf(1);
if vogn shift(-22) =0 then
write(z_io,<<ddddddd>,vogn extract 14)
else
begin
løb:=vogn extract 7;
bogst:=vogn shift(-7) extract 5;
if bogst>0 then bogst:=bogst+'A'-1;
ll:=vogn shift(-12) extract 10;
write(z_io,"sp",if bogst=0 then 1 else 0,<<ddd>,ll,
false add bogst,1,"/",1,true,3,<<d>,løb);
end;
if pos mod 8 =0 then outchar(z_io,'nl')
else write(z_io,"sp",2);
end;
write(z_io,"*",1);
\f
message procedure io_komm side 16 - 810512/hko/cl;
end
else if kode=28 then <* gruppe,oversigt *>
begin
write(z_io,"nl",1,"-",5,"sp",2,<:gruppe oversigt:>,
"sp",2,"-",5,"nl",2);
for pos:=1 step 1 until d.op_ref.data(1) do
begin
disable i:=læsfil(d.op_ref.data(2),pos,j);
if i<>0 then
fejlreaktion(5<*læsfil*>,i,
<:io-kommando(gruppe-oversigt):>,0);
iaf:=0;
ll:=fil(j).iaf(1);
write(z_io,"G",1,<<z>,true,3,ll extract 7);
if pos mod 10 =0 then outchar(z_io,'nl')
else write(z_io,"sp",3);
end;
write(z_io,"*",1);
end;
<* slet fil *>
d.op_ref.opkode:= 104;
d.op_ref.data(4):= d.op_ref.data(if kode=28 then 2 else 3);
signalch(cs_slet_fil,op_ref,gen_optype or io_optype);
waitch(cs_io_komm,op_ref,io_optype or gen_optype,-1);
end; <* resultat=3 *>
end;
begin
\f
message procedure io_komm side 17 - 810525/cl;
<* 8 spring(-oversigts-)rapport *>
d.op_ref.retur:=cs_io_komm;
tofrom(d.op_ref.data,ia,4);
indeks:=op_ref;
signal_ch(cs_vt,op_ref,gen_optype or io_optype);
<*V*> wait_ch(cs_io_komm,op_ref,io_optype,-1<*timeout*>);
<*+4*> if op_ref<>indeks then
fejlreaktion(11<*fremmed post*>,op_ref,
<:io-kommando(spring-rapport):>,0);
<*-4*>
<*V*> setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
if d.op_ref.resultat<>3 then
begin
skriv_kvittering(z_io,op_ref,-1,d.op_ref.resultat);
end
else
begin
boolean p_skrevet;
integer bogst,løb;
if kode = 32 then <* spring,vis *>
begin
ll:= d.op_ref.data(1) shift (-5) extract 10;
bogst:= d.op_ref.data(1) extract 5;
if bogst<>0 then bogst:= bogst + 'A' - 1;
<*V*> write(z_io,"nl",1,"-",5,"sp",2,<:spring: :>,
<<d>,ll,false add bogst,(bogst<>0) extract 1,
<:.:>,string (extend d.op_ref.data(2) shift 24));
raf:= data+8;
if d.op_ref.raf(1)<>0.0 then
write(z_io,<:, startet :>,<<zddddd>,round
systime(4,d.op_ref.raf(1),r),<:.:>,round r)
else
write(z_io,<:, ikke startet:>);
write(z_io,"sp",2,"-",5,"nl",1);
\f
message procedure io_komm side 18 - 810518/cl;
p_skrevet:= false;
for pos:=1 step 1 until d.op_ref.data(3) do
begin
disable i:=læsfil(d.op_ref.data(4),pos,j);
if i<>0 then
fejlreaktion(5<*læsfil*>,i,
<:io_kommando(spring,vis):>,0);
iaf:=0;
i:= fil(j).iaf(1);
if i < 0 and -, p_skrevet then
begin
outchar(z_io,'('); p_skrevet:= true;
end;
if i > 0 and p_skrevet then
begin
outchar(z_io,')'); p_skrevet:= false;
end;
if pos mod 2 = 0 then
write(z_io,<< dd>,abs i,<:.:>)
else
write(z_io,true,3,<<d>,abs i);
if pos mod 21 = 0 then outchar(z_io,'nl');
end;
write(z_io,"*",1);
\f
message procedure io_komm side 19 - 810525/cl;
end
else if kode=33 then <* spring,oversigt *>
begin
write(z_io,"nl",1,"-",5,"sp",2,<:spring oversigt:>,
"sp",2,"-",5,"nl",2);
for pos:=1 step 1 until d.op_ref.data(1) do
begin
disable i:=læsfil(d.op_ref.data(2),pos,j);
if i<>0 then
fejlreaktion(5<*læsfil*>,i,
<:io-kommando(spring-oversigt):>,0);
iaf:=0;
ll:=fil(j).iaf(1) shift (-5) extract 10;
bogst:=fil(j).iaf(1) extract 5;
if bogst<>0 then bogst:=bogst + 'A' - 1;
write(z_io,"sp",(bogst=0) extract 1 + 1,<<ddd>,ll,
false add bogst,(bogst<>0) extract 1,<:.:>,true,4,
string (extend fil(j).iaf(2) shift 24));
if fil(j,2)<>0.0 then
write(z_io,<:startet :>,<<zddddd>,
round systime(4,fil(j,2),r),<:.:>,round r);
outchar(z_io,'nl');
end;
write(z_io,"*",1);
end;
<* slet fil *>
d.op_ref.opkode:= 104;
if kode=33 then d.op_ref.data(4):= d.op_ref.data(2);
signalch(cs_slet_fil,op_ref,gen_optype or io_optype);
waitch(cs_io_komm,op_ref,io_optype or gen_optype,-1);
end; <* resultat=3 *>
end;
begin
\f
message procedure io_komm side 20 - 820302/hko;
<* 9 fordeling af linier/områder på operatører *>
d.op_ref.retur:=cs_io_komm;
disable
if kode=5 then
begin
integer array io_linietabel(1:max_linienr//3+1);
for ref:= 0 step 512 until (max_linienr//768*512) do
begin
i:= læs_fil(1035,ref//512+1,j);
if i <> 0 then
fejlreaktion(5,i,<:liniefordelingstabel:>,0);
tofrom(io_linietabel.ref,fil(j),
if (((max_linienr+1 - (ref//2*3))+2)//3*2) > 512 then 512
else ((max_linienr+1 - (ref//2*3))+2)//3*2);
end;
ref:=0;
operatør:=ia(1);
for j:=2 step 1 until indeks do
begin
ll:=ia(j);
if ll<>0 then
skrivtegn(io_linietabel,abs(ll)+1,
if ll>0 then operatør else 0);
end;
for ref:= 0 step 512 until (max_linienr//768*512) do
begin
i:= skriv_fil(1035,ref//512+1,j);
if i <> 0 then
fejlreaktion(6,i,<:liniefordelingstabel:>,0);
tofrom(fil(j),io_linietabel.ref,
if (((max_linienr+1 - (ref//2*3))+2)//3*2) > 512
then 512 else ((max_linienr+1 - (ref//2*3))+2)//3*2
);
end;
ref:=0;
end
else
begin
modiffil(1034,1,i);
ref:=0;
operatør:=ia(1);
for j:=2 step 1 until indeks do
begin
ll:=ia(j);
fil(i).ref(ll):= if ll>0 then operatør else 0;
end;
end;
indeks:=op_ref;
signal_ch(cs_rad,op_ref,gen_optype or io_optype);
<*V*> wait_ch(cs_io_komm,op_ref,io_optype,-1);
<*+4*> if op_ref<>indeks then
fejlreaktion(11<*fr.post*>,op_ref,
<:io-komm,liniefordeling retur fra rad:>,0);
<*-4*>
<*V*> setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,op_ref,-1,d.op_ref.resultat);
end;
begin
\f
message procedure io_komm side 21 - 820301/cl;
<* 10 springdefinition *>
tofrom(d.op_ref.data,ia,indeks*2);
<*V*> wait_ch(cs_io_fil,vt_op,true,-1<*timeout*>);
start_operation(vt_op,101,cs_io_komm,
101<*opret fil*>);
d.vt_op.data(1):=128;<*postantal*>
d.vt_op.data(2):=2; <*postlængde*>
d.vt_op.data(3):=1; <*segmentantal*>
d.vt_op.data(4):=
2 shift 10; <*spool fil*>
signal_ch(cs_opret_fil,vt_op,io_optype);
pos:=vt_op;<*variabel lånes*>
<*V*> wait_ch(cs_io_komm,vt_op,io_optype,-1<*timeout*>);
<*+4*> if vt_op<>pos then
fejlreaktion(11<*fremmed post*>,vt_op,<:springdef:>,0);
if d.vt_op.data(9)<>0 then
fejlreaktion(13<*opret-fil*>,d.vt_op.data(9),
<:io-kommando(springdefinition):>,0);
<*-4*>
iaf:=0;
for i:=1 step 1 until indeks-2 do
begin
disable k:=modif_fil(d.vt_op.data(4),i,j);
if k<>0 then
fejlreaktion(7<*modif-fil*>,k,
<:io kommando(spring-def):>,0);
fil(j).iaf(1):=d.op_ref.data(i+2);
end;
while sep = ',' do
begin
wait(bs_fortsæt_adgang);
pos:= 1; j:= 0;
while læs_store(z_io,i) < 8 do
begin
skrivtegn(fortsæt,pos,i);
if i = '?' or i = 'esc' then j:= 1; <* skip kommando *>
end;
skrivtegn(fortsæt,pos,'em');
afsluttext(fortsæt,pos);
sluttegn:= i;
if j<>0 then
begin
setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,opref,-1,53);<*annulleret*>
goto sp_ann;
end;
\f
message procedure io_komm side 22 - 810519/cl;
disable begin
integer array værdi(1:4);
integer a_pos,res;
pos:= 0;
repeat
apos:= pos;
læs_paramsæt(fortsæt,a_pos,0,værdi,sep,res);
if res >= 0 then
begin
if res=0 and (sep=',' or indeks>2) then <*ok*>
else if res=0 then res:= -25 <*parameter mangler*>
else if res=10 and (værdi(1)<1 or værdi(1)>99) then
res:= -44 <*intervalstørrelse ulovlig*>
else if res=10 and (værdi(2)<1 or værdi(2)>99) then
res:= -6 <*løbnr ulovligt*>
else if res=10 then
begin
k:=modiffil(d.vt_op.data(4),indeks-1,j);
if k<>0 then fejlreaktion(7<*modiffil*>,k,
<:io kommando(spring-def):>,0);
iaf:= 0;
fil(j).iaf(1):= værdi(1) shift 12 + værdi(2);
indeks:= indeks+1;
if sep = ',' then res:= 0;
end
else res:= -27; <*parametertype*>
end;
if res>0 then pos:= a_pos;
until sep<>'sp' or res<=0;
if res<0 then
begin
d.op_ref.resultat:= -res;
i:=1;
hægt_tekst(d.op_ref.data,i,fortsæt,1);
afsluttext(d.op_ref.data,i);
end;
end;
\f
message procedure io_komm side 23 - 810519/cl;
if d.op_ref.resultat > 3 then
begin
setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,op_ref,pos,d.opref.resultat);
goto sp_ann;
end;
signalbin(bs_fortsæt_adgang);
end while sep = ',';
d.vt_op.data(1):= indeks-2;
k:= sætfildim(d.vt_op.data);
if k<>0 then fejlreaktion(9,k,<:io kommando(spring-def):>,0);
d.op_ref.data(3):= d.vt_op.data(4); <*filref*>
signalch(cs_io_fil,vt_op,io_optype or gen_optype);
d.op_ref.retur:=cs_io_komm;
pos:=op_ref;
signal_ch(cs_vt,op_ref,gen_optype or io_optype);
<*V*> wait_ch(cs_io_komm,op_ref,io_optype,-1<*timeout*>);
<*+4*> if pos<>op_ref then
fejlreaktion(11<*fremmed post*>,op_ref,
<:io kommando(springdef retur fra vt):>,0);
<*-4*>
<*V*> setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,op_ref,-1,d.op_ref.resultat);
if false then
begin
sp_ann: signalch(cs_slet_fil,vt_op,io_optype);
waitch(cs_io_komm,vt_op,io_optype,-1);
signalch(cs_io_fil,vt_op,io_optype or vt_optype);
signalbin(bs_fortsæt_adgang);
end;
end;
begin
integer i,j,k,opr,lin,max_lin;
boolean o_ud, t_ud;
\f
message procedure io_komm side 23a - 820301/cl;
<* 11 fordelingsrapport *>
<*V*> setposition(z_io,0,0);
if sluttegn <> 'nl' then outchar(z_io,'nl');
max_lin:= max_linienr;
for opr:= 1 step 1 until max_antal_operatører, 0 do
begin
o_ud:= t_ud:= false;
k:= 0;
if opr<>0 then
begin
j:= k:= 0;
for lin:= 1 step 1 until max_lin do
begin
læs_tegn(radio_linietabel,lin+1,i);
if i<>0 then j:= lin;
if opr=i and opr<>0 then
begin
if -, o_ud then
begin
o_ud:= true;
if opr<>0 then
write(z_io,"nl",1,<:operatør:>,<< dd>,opr,
"sp",2,string bpl_navn(opr))
else
write(z_io,"nl",1,<:ikke fordelte:>);
end;
if -, t_ud then
begin
write(z_io,<:<'nl'> linier: :>);
t_ud:= true;
end;
k:=k+1;
if k>1 and k mod 10 = 1 then
write(z_io,"nl",1,"sp",13);
write(z_io,<<ddd >,lin);
end;
if lin=max_lin then max_lin:= j;
end;
end;
k:= 0; t_ud:= false;
for i:= 1 step 1 until max_antal_områder do
begin
if radio_områdetabel(i)= opr then
begin
if -, o_ud then
begin
o_ud:= true;
if opr<>0 then
write(z_io,"nl",1,<:operatør:>,<< dd>,opr,
"sp",2,string bpl_navn(opr))
else
write(z_io,"nl",1,<:ikke fordelte:>);
end;
if -, t_ud then
begin
write(z_io,<:<'nl'> områder: :>);
t_ud:= true;
end;
k:= k+1;
if k>1 and k mod 10 = 1 then
write(z_io,"nl",1,"sp",13);
write(z_io,true,4,string område_navn(i));
end;
end;
if o_ud then write(z_io,"nl",1);
end;
write(z_io,"*",1);
end;
begin
integer omr,typ,sum;
integer array ialt(1:5);
real r;
\f
message procedure io_komm side 24 - 810501/hko;
<* 12 vis/nulstil opkaldstællere *>
if kode=76 and indeks=1 then
begin <* TÆ,N <tid> *>
if ia(1)<(-1) or 2400<ia(1) then
begin
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,opref,-1,64);
end
else
begin
if ia(1)=(-1) then nulstil_systællere:= -1
else nulstil_systællere:= (ia(1) mod 2400)*100;
opdater_tf_systællere;
typ:= opref; <* typ lånes til gemmevariabel *>
d.opref.retur:= cs_io_komm;
signal_ch(cs_io_nulstil,opref,io_optype);
<*V*> wait_ch(cs_io_komm,opref,io_optype,-1);
<*+4*> if opref <> typ then
fejlreaktion(11<*fremmed post*>,opref,
<:io_kommando:>,0);
<*-4*>
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,opref,-1,3);
end;
end
else
begin
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
for typ:= 1 step 1 until 5 do ialt(typ):= 0;
write(z_io,
<:område udgående alm.ind nød ind:>,
<: ind-ialt total ej forb. optaget:>,"nl",1);
for omr := 1 step 1 until max_antal_områder do
begin
sum:= 0;
write(z_io,true,6,string område_navn(omr),":",1);
for typ:= 1 step 1 until 3 do
begin
write(z_io,<< ddddddd>,opkalds_tællere((omr-1)*5+typ));
sum:= sum + opkalds_tællere((omr-1)*5+typ);
ialt(typ):= ialt(typ)+opkalds_tællere((omr-1)*5+typ);
end;
write(z_io,<< ddddddd>,
sum-opkalds_tællere((omr-1)*5+1),sum,"sp",2);
for typ:= 4 step 1 until 5 do
begin
write(z_io,<< ddddddd>,opkalds_tællere((omr-1)*5+typ));
ialt(typ):= ialt(typ)+opkalds_tællere((omr-1)*5+typ);
end;
write(z_io,"nl",1);
end;
sum:= 0;
write(z_io,"nl",1,<:ialt ::>);
for typ:= 1 step 1 until 3 do
begin
write(z_io,<< ddddddd>,ialt(typ));
sum:= sum+ialt(typ);
end;
write(z_io,<< ddddddd>,sum-ialt(1),sum,"sp",2,
ialt(4), ialt(5), "nl",3);
for typ:= 1 step 1 until 5 do ialt(typ):= 0;
write(z_io,
<:oper. udgående alm.ind nød ind:>,
<: ind-ialt total ej forb. optaget:>,"nl",1);
for omr := 1 step 1 until max_antal_operatører do
begin
sum:= 0;
if bpl_navn(omr)=long<::> then
write(z_io,"sp",6-write(z_io,<:op:>,<<d>,omr),":",1)
else
write(z_io,true,6,string bpl_navn(omr),":",1);
for typ:= 1 step 1 until 3 do
begin
write(z_io,<< ddddddd>,operatør_tællere((omr-1)*4+typ));
sum:= sum + operatør_tællere((omr-1)*5+typ);
ialt(typ):= ialt(typ)+operatør_tællere((omr-1)*5+typ);
end;
write(z_io,<< ddddddd>,
sum-operatør_tællere((omr-1)*5+1),sum,"sp",2);
for typ:= 4 step 1 until 5 do
begin
write(z_io,<< ddddddd>,operatør_tællere((omr-1)*5+typ));
ialt(typ):= ialt(typ)+operatør_tællere((omr-1)*5+typ);
end;
write(z_io,"nl",1);
end;
sum:= 0;
write(z_io,"nl",1,<:ialt ::>);
for typ:= 1 step 1 until 3 do
begin
write(z_io,<< ddddddd>,ialt(typ));
sum:= sum+ialt(typ);
end;
write(z_io,<< ddddddd>,sum-ialt(1),sum,"sp",2,
ialt(4),ialt(5),"nl",2);
typ:= replacechar(1,':');
write(z_io,<:tællere nulstilles :>);
if nulstil_systællere=(-1) then
write(z_io,<:ikke automatisk:>,"nl",1)
else
write(z_io,<:automatisk kl. :>,<<zd dd dd>,
nulstil_systællere,"nl",1);
replacechar(1,'.');
write(z_io,<:sidst nulstillet d. :>,<<zd dd dd>,
systime(4,systællere_nulstillet,r));
replacechar(1,':');
write(z_io,<: kl. :>,<<zd dd dd>,r,"nl",1);
replacechar(1,typ);
write(z_io,"*",1,"nl",1);
setposition(z_io,0,0);
if kode = 76 <* nulstil tællere *> then
disable begin
for omr:= 1 step 1 until max_antal_områder*5 do
opkalds_tællere(omr):= 0;
for omr:= 1 step 1 until max_antal_operatører*5 do
operatør_tællere(omr):= 0;
systime(1,0.0,systællere_nulstillet);
opdater_tf_systællere;
typ:= replacechar(1,'.');
write(z_io,<:!!! tællere nulstillet d. :>,<<zd dd dd>,
systime(4,systællere_nulstillet,r));
replacechar(1,':');
write(z_io,<: kl. :>,<<zd dd dd>,r,"nl",1);
replacechar(1,typ);
setposition(z_io,0,0);
end;
end;
end;
begin
\f
message procedure io_komm side 25 - 940522/cl;
<* 13 navngiv betjeningsplads *>
boolean incl;
long field lf;
lf:=6;
operatør:= ia(1);
navn:= ia.lf;
incl:= false add (ia(4) extract 8);
if navn=long<::> then
begin
<* nedlæg navn - check for i brug *>
iaf:= operatør*terminal_beskr_længde;
if terminal_tab.iaf.terminal_tilstand shift (-21)<>7 then
d.opref.resultat:= 48 <*i brug*>
else
begin
for i:= 65 step 1 until top_bpl_gruppe do
begin
iaf:= i*op_maske_lgd;
if læsbit_ia(bpl_def.iaf,operatør) then
d.opref.resultat:= 48<*i brug*>;
end;
end;
if d.opref.resultat <= 3 then
begin
for i:= 1 step 1 until sidste_bus do
if bustabel(i) shift (-14) extract 8 = operatør then
d.opref.resultat:= 48<*i brug*>;
end;
end
else
begin
<* opret/omdøb *>
i:= find_bpl(navn);
if i<>0 and i<>operatør then
d.opref.resultat:= 48 <*i brug*>;
end;
if d.opref.resultat<=3 then
begin
bpl_navn(operatør):= navn;
operatør_auto_include(operatør):= incl;
k:= modif_fil(tf_bpl_navne,operatør,ll);
if k<>0 then
fejlreaktion(7,k,<:betjeningsplads,navngiv:>,0);
lf:= 4;
fil(ll).lf:= navn add (incl extract 8);
setposition(fil(ll),0,0);
<* skriv bplnavne *>
disable begin
zone z(128,1,stderror);
long array field laf;
integer array ia(1:10);
open(z,4,<:bplnavne:>,0);
laf:= 0;
outrec6(z,512);
for i:= 1 step 1 until 127 do
z.laf(i):= bpl_navn(i);
close(z,true);
monitor(42,z,0,ia);
ia(6):= systime(7,0,0.0);
monitor(44,z,0,ia);
end;
d.opref.resultat:= 3;<*udført*>
end;
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,opref,-1,d.opref.resultat);
end;
begin
\f
message procedure io_komm side 26 - 940522/cl;
<* 14 betjeningsplads - gruppe *>
integer ant_i_gruppe;
long field lf;
integer array maske(1:op_maske_lgd//2);
lf:= 4; ant_i_gruppe:= 0;
tofrom(maske,ingen_operatører,op_maske_lgd);
navn:= ia.lf;
operatør:= find_bpl(navn);
for i:= 3 step 1 until indeks do
if sætbit_ia(maske,ia(i),1)=0 then
ant_i_gruppe:= ant_i_gruppe+1;
if ant_i_gruppe=0 then
begin
<* slet gruppe *>
if operatør<=64 then
d.opref.resultat:= (if operatør=0 then 46<*navn ukendt*>
else 62<*navn ulovligt*>)
else
begin
for i:= 1 step 1 until max_antal_operatører do
for j:= 1 step 1 until 3 do
if operatør_stop(i,j)=operatør then
d.opref.resultat:= 48<*i brug*>;
end;
navn:= long<::>;
end
else
begin
if 1<=operatør and operatør<=64 then
d.opref.resultat:= 62<*navn ulovligt*>
else
if operatør=0 then
begin
i:=65;
while i<=127 and operatør=0 do
begin
if bpl_navn(i)=long<::> then operatør:=i;
i:= i+1;
end;
if operatør=0 then
d.opref.resultat:= 32<*ikke plads*>
else if operatør>top_bpl_gruppe then
top_bpl_gruppe:= operatør;
end;
end;
if d.opref.resultat<=3 then
begin
bpl_navn(operatør):= navn;
iaf:= operatør*op_maske_lgd;
tofrom(bpl_def.iaf,maske,op_maske_lgd);
bpl_tilst(operatør,1):= bpl_tilst(operatør,2):= 0;
for i:= 1 step 1 until max_antal_operatører do
begin
if læsbit_ia(maske,i) then
begin
bpl_tilst(operatør,2):= bpl_tilst(operatør,2)+1;
if læsbit_ia(operatør_maske,i) then
bpl_tilst(operatør,1):= bpl_tilst(operatør,1)+1;
end;
end;
k:=modif_fil(tf_bplnavne,operatør,ll);
if k<>0 then
fejlreaktion(7,k,<:btj.plads,gruppenavn:>,0);
lf:= 4;
fil(ll).lf:= navn;
setposition(fil(ll),0,0);
iaf:= 0;
k:= modif_fil(tf_bpl_def,operatør-64,ll);
if k<>0 then
fejlreaktion(7,k,<:btj.plads,gruppedef:>,0);
for i:= 1 step 1 until op_maske_lgd//2 do
fil(ll).iaf(i):= maske(i);
fil(ll).iaf(4):= bpl_tilst(operatør,2);
setposition(fil(ll),0,0);
d.opref.resultat:= 3;
end;
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,opref,-1,d.opref.resultat);
end;
begin
\f
message procedure io_komm side 27 - 940522/cl;
<* 15 vis betjeningspladsdefinitioner *>
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
write(z_io,"nl",1,<:operatørpladser::>,"nl",1);
for i:= 1 step 1 until max_antal_operatører do
begin
write(z_io,<<dd>,i,<:: :>,true,6,string bpl_navn(i),
case operatør_auto_include(i) extract 2 + 1 of(
<:(--):>,<:(ÅB):>,<:(??):>,<:(ST):>));
if i mod 4 = 0 then write(z_io,"nl",1)
else write(z_io,"sp",5);
end;
if max_antal_operatører mod 4 <> 0 then write(z_io,"nl",1);
write(z_io,"nl",1,<:grupper::>,"nl",1);
for i:= 65 step 1 until top_bpl_gruppe do
begin
ll:=0; iaf:= i*op_maske_lgd;
if bpl_navn(i)<>long<::> then
begin
write(z_io,true,6,string bpl_navn(i),":",1);
for j:= 1 step 1 until max_antal_operatører do
begin
if læsbit_ia(bpl_def.iaf,j) then
begin
if ll mod 8 = 0 and ll<>0 then
write(z_io,"nl",1,"sp",7);
write(z_io,"sp",2,string bpl_navn(j));
ll:=ll+1;
end;
end;
write(z_io,"nl",1);
end;
end;
write(z_io,"*",1);
end;
begin
\f
message procedure io_komm side 28 - 940522/cl;
<* 16 stopniveau,definer *>
operatør:= ia(1);
iaf:= operatør*terminal_beskr_længde;
for i:= 1 step 1 until 3 do
operatør_stop(operatør,i):= ia(i+1);
if -,læsbit_ia(operatørmaske,operatør) then
begin
tofrom(opkaldsflag,alle_operatører,op_maske_lgd);
signal_bin(bs_mobilopkald);
end;
k:=modif_fil(tf_stoptabel,operatør,ll);
if k<>0 then
fejlreaktion(7,k,<:stopniveau,definer:>,0);
iaf:= 0;
for i:= 0 step 1 until 3 do
fil(ll).iaf(i+1):= operatør_stop(operatør,i);
setposition(fil(ll),0,0);
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,0,-1,3);
end;
begin
\f
message procedure io_komm side 29 - 940522/cl;
<* 17 stopniveauer,vis *>
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
for operatør:= 1 step 1 until max_antal_operatører do
begin
iaf:=operatør*terminal_beskr_længde;
ll:=0;
ll:=write(z_io,<<dd>,operatør,<:: :>,true,6,
string bpl_navn(operatør),<:(:>,
case terminal_tab.iaf.terminal_tilstand shift (-21)
+ 1 of (<:AKTIV:>,<:AKTIV:>,<:AKTIV:>,<:PAUSE:>,
<:EKSKL:>,<:EKSKL:>,<:EKSKL:>,<:EKSKL:>), <:) :>);
for i:= 1 step 1 until 3 do
ll:= ll+write(z_io,if i=1 then "sp" else "/",1,
if operatør_stop(operatør,i)=0 then <:ALLE:>
else string bpl_navn(operatør_stop(operatør,i)));
if operatør mod 2 = 1 then
write(z_io,"sp",40-ll)
else
write(z_io,"nl",1);
end;
if max_antal_operatører mod 2 <> 0 then write(z_io,"nl",1);
write(z_io,"*",1);
end;
begin
\f
message procedure io_komm side 30 - 941007/cl;
<* 18 alarmlængder *>
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
for operatør:= 1 step 1 until max_antal_operatører do
begin
ll:=0;
ll:=write(z_io,<<dd>,operatør,<:: :>,true,6,
string bpl_navn(operatør));
iaf:=(operatør-1)*opk_alarm_tab_lgd;
if opk_alarm.iaf.alarm_lgd < 0 then
ll:= ll+write(z_io,<:uendelig:>)
else
ll:= ll+write(z_io,<<ddddddd>,
opk_alarm.iaf.alarm_lgd,<: sek.:>);
if operatør mod 2 = 1 then
write(z_io,"sp",40-ll)
else
write(z_io,"nl",1);
end;
if max_antal_operatører mod 2 <> 0 then write(z_io,"nl",1);
write(z_io,"*",1);
end;
begin
<* 19 CC *>
integer i, c;
i:= 1;
while læstegn(ia,i+0,c)<>0 and
i<(op_spool_postlgd-op_spool_text)//2*3
do skrivtegn(d.opref.data,i,c);
repeat skrivtegn(d.opref.data,i,0) until (i mod 6)=1;
d.opref.retur:= cs_io_komm;
signalch(cs_op,opref,io_optype or gen_optype);
<*V*> waitch(cs_io_komm,opref,io_optype,-1);
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,opref,-1,d.opref.resultat);
end;
begin
<* 20: CQF,I CQF,U CQF,V *>
integer kode, res, i, j;
integer array field iaf, iaf1;
long field navn;
kode:= d.opref.opkode extract 12;
navn:= 6; res:= 0;
if kode=90 <*CQF,I*> then
begin
if søg_omr_bus(ia(1),0,0,0,0,0) < 0 then
res:= 10 <*busnr ukendt*>
else
begin
j:= -1;
for i:= 1 step 1 until max_cqf do
begin
iaf:= (i-1)*cqf_lgd;
if ia(1) = cqf_tabel.iaf.cqf_bus or
ia.navn = cqf_tabel.iaf.cqf_id
then res:= 48; <*i brug*>
if j<0 and cqf_tabel.iaf.cqf_bus=0 then j:= i;
end;
if res=0 and j<0 then res:= 32; <*ingen fri plads*>
if res=0 then
begin
iaf:= (j-1)*cqf_lgd;
cqf_tabel.iaf.cqf_bus:= ia(1);
cqf_tabel.iaf.cqf_fejl:= 0;
cqf_tabel.iaf.cqf_id:= ia.navn;
cqf_tabel.iaf.cqf_ok_tid:= real <::>;
cqf_tabel.iaf.cqf_næste_tid:= d.opref.tid + 15*60.0;
res:= 3;
end;
end;
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,opref,-1,res);
end
else
if kode=91 <*CQF,U*> then
begin
j:= -1;
for i:= 1 step 1 until max_cqf do
begin
iaf:= (i-1)*cqf_lgd;
if ia(1) = cqf_tabel.iaf.cqf_bus then j:= i;
end;
if j>=0 then
begin
iaf:= (j-1)*cqf_lgd;
for i:= 1 step 1 until cqf_lgd//2 do
cqf_tabel.iaf(i):= 0;
res:= 3;
end
else res:= 13; <*bus ikke indsat*>
setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,opref,-1,res);
end
else
begin
setposition(z_io,0,0);
skriv_cqf_tabel(z_io,false);
outchar(z_io,'*');
setposition(z_io,0,0);
end;
if kode=90 or kode=91 then
begin
j:= skrivfil(1033,1,i);
if j<>0 then
fejlreaktion(6,j,<:CQF-test cqf-tabel:>,1);
for k:= 1 step 1 until max_cqf do
begin
iaf1:= (k-1)*cqf_lgd;
iaf := (k-1)*cqf_id;
tofrom(fil(i).iaf,cqf_tabel.iaf1,cqf_id);
end;
op_cqf_tab_ændret:= true;
end;
end;<*CQF*>
begin
\f
message procedure io_komm side xx - 940522/cl;
<*+3*> fejl_reaktion(3<*programfejl*>,j,<:case 'opkode':>,2);
<*-3*>
end
end;<*case j *>
end <* j > 0 *>
else
begin
<*V*> setposition(z_io,0,0);
if sluttegn<>'nl' then outchar(z_io,'nl');
skriv_kvittering(z_io,op_ref,-1,
45 <* ikke implementeret *>);
end;
end;<* godkendt *>
<*V*> setposition(z_io,0,0);
signal_bin(bs_zio_adgang);
d.op_ref.retur:=cs_att_pulje;
disable afslut_kommando(op_ref);
end; <* indlæs kommando *>
begin
\f
message procedure io_komm side xx+1 - 810428/hko;
<* 2: aktiver efter stop *>
terminal_tab.ref.terminal_tilstand:= 0 shift 21 +
terminal_tab.ref.terminal_tilstand extract 21;
afslut_operation(op_ref,-1);
signal_bin(bs_zio_adgang);
end;
<*+3*> fejl_reaktion(3<*programfejl *>,aktion,<:case aktion:>,2)
<*-3*>
end; <* case aktion+6 *>
until false;
io_komm_trap:
if -,(alarmcause shift (-24) extract 24 = (-2) and
alarmcause extract 24 = (-13)) then
disable skriv_io_komm(zbillede,1);
end io_komm;
\f
message procedure io_spool side 1 - 810507/hko;
procedure io_spool;
begin
integer
næste_tomme,nr;
integer array field
op_ref;
procedure skriv_io_spool(zud,omfang);
value omfang;
zone zud;
integer omfang;
begin
disable write(zud,"nl",1,<:+++ io_spool :>);
if omfang > 0 then
disable begin integer x;
trap(slut);
write(zud,"nl",1,
<: opref: :>,op_ref,"nl",1,
<: næstetomme::>,næste_tomme,"nl",1,
<: nr :>,nr,"nl",1,
<::>);
skriv_coru(zud,coru_no(102));
slut:
end;<*disable*>
end skriv_io_spool;
trap(io_spool_trap);
næste_tomme:= 1;
stack_claim((if cm_test then 200 else 146)+24 +48);
<*+2*>
if testbit0 and overvåget or testbit28 then
skriv_io_spool(out,0);
<*-2*>
\f
message procedure io_spool side 2 - 810602/hko;
repeat
wait_ch(cs_io_spool,
op_ref,
true,
-1<*timeout*>);
i:= d.op_ref.opkode;
if i = 22 or i = 23 or i = 36 or i = 45 or i = 46 then
begin
wait(ss_io_spool_tomme);
disable modif_fil(io_spoolfil,næste_tomme,nr);
næste_tomme:= (næste_tomme mod io_spool_postantal) +1;
i:= d.op_ref.opsize;
<*+4*> if i > io_spool_postlængde*2 -io_spool_post then
begin
<* fejlreaktion(3,i,<:postlængde,io spool:>,1); *>
i:= io_spool_postlængde*2 -io_spool_post;
end;
<*-4*>
fil(nr,1):= real(extend d.op_ref.opsize shift 24);
tofrom(fil(nr).io_spool_post,d.op_ref,i);
signal(ss_io_spool_fulde);
d.op_ref.resultat:= 1;
end
else
begin
fejlreaktion(2<*operationskode*>,d.op_ref.opkode,
<:io_spool_korutine:>,1);
end;
signal_ch(d.op_ref.retur,op_ref,d.op_ref.optype);
until false;
io_spool_trap:
disable skriv_io_spool(zbillede,1);
end io_spool;
\f
message procedure io_spon side 1 - 810507/hko;
procedure io_spon;
begin
integer
næste_fulde,nr,i,dato,kl;
real t;
procedure skriv_io_spon(zud,omfang);
value omfang;
zone zud;
integer omfang;
begin
disable write(zud,"nl",1,<:+++ io_spon :>);
if omfang > 0 then
disable begin integer x;
trap(slut);
write(zud,"nl",1,
<: næste-fulde::>,næste_fulde,"nl",1,
<: nr :>,nr,"nl",1,
<::>);
skriv_coru(zud,coru_no(103));
slut:
end;<*disable*>
end skriv_io_spon;
trap(io_spon_trap);
næste_fulde:= 1;
stack_claim((if cm_test then 200 else 146) +24 +48);
<*+2*>
if testbit0 and overvåget or testbit28 then
skriv_io_spon(out,0);
<*-2*>
\f
message procedure io_spon side 2 - 810602/hko/cl;
repeat
<*V*> wait(ss_io_spool_fulde);
<*V*> wait(bs_zio_adgang);
<*V*> setposition(zio,0,0);
disable modif_fil(io_spool_fil,næste_fulde,nr);
næste_fulde:= (næste_fulde mod io_spool_postantal) +1;
laf:=data;
k:= fil(nr).io_spool_post.opkode;
if k = 22 or k = 36 then
disable begin
write(z_io,"nl",1,if k=22 then <:auto:> else <:spring:>);
if k=36 then
begin
i:= fil(nr).io_spool_post.data(4);
j:= i extract 5;
if j<>0 then j:=j+'A'-1;
i:= i shift (-5) extract 10;
write(z_io,"sp",(j=0) extract 1 + 1,<<ddd>,i,false add j,1,".",1,
true,4,string(extend fil(nr).io_spool_post.data(5) shift 24));
end;
skriv_auto_spring_medd(zio,fil(nr).io_spool_post.data,
fil(nr).io_spool_post.tid)
end
else if k = 23 then
disable
begin
write(zio,"nl",1,<:-<'>'>:>,fil(nr).io_spool_post.laf);
dato:= systime(4,fil(nr).io_spool_post.tid,t);
kl:= round t;
i:= replace_char(1<*space in number*>,'.');
write(z_io,"sp",2,<<zd_dd_dd>,dato,<< zd_dd_dd>,kl);
replace_char(1,i);
end
else if k = 45 or k = 46 then
disable begin
integer vogn,linie,bogst,løb,t;
t:=fil(nr).io_spool_post.data(2);
outchar(z_io,'nl');
if k = 45 then
write(zio,<<zd.dd>,t/100.0,"sp",1);
write(zio,<:nødopkald fra :>);
vogn:= fil(nr).io_spool_post.data(1);
i:= vogn shift (-22);
if i < 2 then
skrivid(zio,vogn,9)
else
begin
fejlreaktion(3<*programfejl*>,vogn,<:vogn.id, spon.medd:>,1);
write(zio,<:!!!:>,vogn);
end;
\f
message procedure io_spon side 3 - 810507/hko;
if fil(nr).io_spool_post.data(3)<>0 then
write(z_io," ",1,string område_navn(fil(nr).io_spool_post.data(3)));
if k = 46 then
begin
write(zio,<: besvaret:>,<< zd.dd>,t/100.0);
end;
end <*disable*>
else
fejlreaktion(2<*operationskode*>,k,<:io_spon_medd:>,1);
fil(nr,1):= fil(nr,1) add 1;
<*V*> setposition(zio,0,0);
signal_bin(bs_zio_adgang);
signal(ss_io_spool_tomme);
until false;
io_spon_trap:
skriv_io_spon(zbillede,1);
end io_spon;
\f
message procedure io_medd side 1;
procedure io_medd;
begin
integer array field opref;
integer afs, kl, i;
real dato, t;
procedure skriv_io_medd(zud,omfang);
value omfang;
zone zud;
integer omfang;
begin
disable write(zud,"nl",1,<:+++ io_medd :>);
if omfang > 0 then
disable begin integer x;
trap(slut);
write(zud,"nl",1,
<: opref: :>,opref,"nl",1,
<: afs: :>,afs,"nl",1,
<: kl: :>,kl,"nl",1,
<: i: :>,i,"nl",1,
<: dato: :>,<<zddddd>,dato,"nl",1,
<: t: :>,t,"nl",1,
<::>);
skriv_coru(zud,coru_no(104));
slut:
end;<*disable*>
end skriv_io_medd;
trap(io_medd_trap);
stack_claim((if cm_test then 200 else 146) +24 +48);
<*+2*>
if testbit0 and overvåget or testbit28 then
skriv_io_medd(out,0);
<*-2*>
\f
message procedure io_medd side 2;
repeat
<*V*> waitch(cs_io_medd,opref,gen_optype,-1);
<*V*> wait(bs_zio_adgang);
afs:= d.opref.data.op_spool_kilde;
dato:= systime(4,d.opref.data.op_spool_tid,t);
kl:= round t;
write(z_io,"nl",1,<:! fra op:>,<<d>,afs,"sp",1,
if afs=0 then <:SYSOP:> else string bpl_navn(afs));
i:= replacechar(1,'.');
disable write(z_io,"sp",1,<<zd_dd_dd>,kl,"nl",1);
replacechar(1,i);
write(z_io,d.opref.data.op_spool_text);
setposition(z_io,0,0);
signalbin(bs_zio_adgang);
signalch((if afs=0 then d.opref.retur else cs_op),opref,d.opref.optype);
until false;
io_medd_trap:
skriv_io_medd(zbillede,1);
end io_medd;
procedure io_nulstil_tællere;
begin
real nu, dato, kl, forr, næste, et_døgn, r;
integer array field opref;
integer ventetid, omr, typ, sum;
integer array ialt(1:5);
procedure skriv_io_null(zud,omfang);
value omfang;
zone zud;
integer omfang;
begin
disable write(zud,"nl",1,<:+++ io_nulstil_tællere :>);
if omfang > 0 then
disable begin real t; real array field raf;
raf:=0;
trap(slut);
write(zud,"nl",1,
<: opref: :>,opref,"nl",1,
<: ventetid: :>,ventetid,"nl",1,
<: omr: :>,omr,"nl",1,
<: typ: :>,typ,"nl",1,
<: sum: :>,sum,"nl",1);
write(zud,
<: nu: :>,<< zddddd>,systime(4,nu,t),t,"nl",1);
write(zud,
<: forr: :>,<< zddddd>,systime(4,forr,t),t,"nl",1);
write(zud,
<: næste: :>,<< zddddd>,systime(4,næste,t),t,"nl",1);
write(zud,
<: r: :>,<< zddddd>,systime(4,r,t),t,"nl",1,
<: dato: :>,dato,"nl",1,
<: kl: :>,kl,"nl",1,
<: et-døgn: :>,<< dddddd>,et_døgn,"nl",1,
<::>);
write(zud,"nl",1,<:ialt: :>);
skriv_hele(zud,ialt.raf,10,2);
skriv_coru(zud,coru_no(105));
slut:
end;<*disable*>
end skriv_io_null;
trap(io_null_trap);
et_døgn:= 24*60*60.0;
stack_claim(500);
<*+2*>
if testbit0 and overvåget or testbit28 then
skriv_io_null(out,0);
<*-2*>
pass;
systime(1,0.0,nu);
dato:= systime(4,nu,kl);
if nulstil_systællere >= 0 then
begin
if kl>nulstil_systællere then næste:= systid(dato,nulstil_systællere)
+ et_døgn
else næste:= systid(dato,nulstil_systællere);
forr:= næste - et_døgn;
if (forr - systællere_nulstillet) > et_døgn then
næste:= nu;
end;
repeat
ventetid:= (if nulstil_systællere < 0 then (-1) else (næste - nu));
<*V*> waitch(cs_io_nulstil,opref,io_optype,ventetid);
if opref <= 0 then
begin
<* nulstil opkaldstællere *>
wait(bs_zio_adgang);
setposition(z_io,0,0);
for typ:= 1 step 1 until 5 do ialt(typ):= 0;
write(z_io,"nl",1,<:!TÆ,N (automatisk):>,"nl",2,
<:område udgående alm.ind nød ind:>,
<: ind-ialt total ej forb. optaget:>,"nl",1);
for omr := 1 step 1 until max_antal_områder do
begin
sum:= 0;
write(z_io,true,6,string område_navn(omr),":",1);
for typ:= 1 step 1 until 3 do
begin
write(z_io,<< ddddddd>,opkalds_tællere((omr-1)*5+typ));
sum:= sum + opkalds_tællere((omr-1)*5+typ);
ialt(typ):= ialt(typ)+opkalds_tællere((omr-1)*5+typ);
end;
write(z_io,<< ddddddd>,
sum-opkalds_tællere((omr-1)*5+1),sum,"sp",2);
for typ:= 4 step 1 until 5 do
begin
write(z_io,<< ddddddd>,opkalds_tællere((omr-1)*5+typ));
ialt(typ):= ialt(typ)+opkalds_tællere((omr-1)*5+typ);
end;
write(z_io,"nl",1);
end;
sum:= 0;
write(z_io,"nl",1,<:ialt ::>);
for typ:= 1 step 1 until 3 do
begin
write(z_io,<< ddddddd>,ialt(typ));
sum:= sum+ialt(typ);
end;
write(z_io,<< ddddddd>,sum-ialt(1),sum,"sp",2,
ialt(4), ialt(5), "nl",3);
for typ:= 1 step 1 until 5 do ialt(typ):= 0;
write(z_io,<:oper. udgående alm.ind nød ind:>,
<: ind-ialt total ej forb. optaget:>,"nl",1);
for omr := 1 step 1 until max_antal_operatører do
begin
sum:= 0;
if bpl_navn(omr)=long<::> then
write(z_io,"sp",6-write(z_io,<:op:>,<<d>,omr),":",1)
else
write(z_io,true,6,string bpl_navn(omr),":",1);
for typ:= 1 step 1 until 3 do
begin
write(z_io,<< ddddddd>,operatør_tællere((omr-1)*5+typ));
sum:= sum + operatør_tællere((omr-1)*5+typ);
ialt(typ):= ialt(typ)+operatør_tællere((omr-1)*5+typ);
end;
write(z_io,<< ddddddd>,
sum-operatør_tællere((omr-1)*5+1),sum,"sp",2);
for typ:= 4 step 1 until 5 do
begin
write(z_io,<< ddddddd>,operatør_tællere((omr-1)*5+typ));
ialt(typ):= ialt(typ)+operatør_tællere((omr-1)*5+typ);
end;
write(z_io,"nl",1);
end;
sum:= 0;
write(z_io,"nl",1,<:ialt ::>);
for typ:= 1 step 1 until 3 do
begin
write(z_io,<< ddddddd>,ialt(typ));
sum:= sum+ialt(typ);
end;
write(z_io,<< ddddddd>,sum-ialt(1),sum,"sp",2,
ialt(4),ialt(5),"nl",2);
typ:= replacechar(1,':');
write(z_io,<:tællere nulstilles :>);
if nulstil_systællere=(-1) then
write(z_io,<:ikke automatisk:>,"nl",1)
else
write(z_io,<:automatisk kl. :>,<<zd dd dd>,
nulstil_systællere,"nl",1);
replacechar(1,'.');
write(z_io,<:sidst nulstillet d. :>,<<zd dd dd>,
systime(4,systællere_nulstillet,r));
replacechar(1,':');
write(z_io,<: kl. :>,<<zd dd dd>,r,"nl",1);
replacechar(1,typ);
write(z_io,"*",1,"nl",1);
setposition(z_io,0,0);
signal_bin(bs_zio_adgang);
for omr:= 1 step 1 until max_antal_områder*5 do
opkalds_tællere(omr):= 0;
for omr:= 1 step 1 until max_antal_operatører*5 do
operatør_tællere(omr):= 0;
systællere_nulstillet:= næste;
opdater_tf_systællere;
end
else
signalch(d.opref.retur,opref,d.opref.optype);
systime(1,0.0,nu);
dato:= systime(4,nu,kl);
if nulstil_systællere >= 0 then
begin
if kl>nulstil_systællere then næste:= systid(dato,nulstil_systællere)
+ et_døgn
else næste:= systid(dato,nulstil_systællere);
forr:= næste - et_døgn;
end;
until false;
io_null_trap:
skriv_io_null(zbillede,1);
end io_nulstil_tællere;
:5: io: initialisering
\f
message io_initialisering side 1 - 810507/hko;
io_spoolfil:= 1028;
begin
integer array fdim(1:8);
fdim(4):= io_spoolfil;
hent_fildim(fdim);
io_spool_postantal:= fdim(1);
io_spool_postlængde:= fdim(2);
end;
io_spool_post:= 4;
cs_io:= next_semch;
<*+3*> skriv_new_sem(out,3,cs_io,<:cs-io:>);
<*-3*>
i:= next_coru(100,<*ident *>
5,<*prioritet *>
true<*test_maske*>);
j:= new_activity( i,
0,
h_io);
<*+3*>skriv_newactivity(out,i,j);
<*-3*>
cs_io_komm:= next_semch;
<*+3*> skriv_new_sem(out,3,cs_io_komm,<:cs-io-komm:>);
<*-3*>
i:= next_coru(101,<*ident*>
10,<*prioritet*>
true <*testmaske*>);
j:= new_activity( i,
0,
io_komm);<*ingen parametre*>
<*+3*>skriv_newactivity(out,i,j);
<*-3*>
\f
message io_initialisering side 2 - 810520/hko/cl;
bs_zio_adgang:= next_sem;
<*+3*> skriv_new_sem(out,1,bs_zio_adgang,<:bs-zio-adgang:>);
<*-3*>
signal_bin(bs_zio_adgang);
cs_io_spool:= next_semch;
<*+3*> skriv_new_sem(out,3,cs_io_spool,<:cs-io-spool:>);
<*-3*>
cs_io_fil:=next_semch;
<*+3*> skriv_new_sem(out,3,cs_io_fil,<:cs-io-fil:>);
<*-3*>
signal_ch(cs_io_fil,next_op(data+18),gen_optype);
ss_io_spool_fulde:= next_sem;
<*+3*> skriv_new_sem(out,2,ss_io_spool_fulde,<:ss-io-spool-fulde:>);
<*-3*>
ss_io_spool_tomme:= next_sem;
<*+3*> skriv_new_sem(out,2,ss_io_spool_tomme,<:ss-io-spool-tomme:>);
<*-3*>
for i:= 1 step 1 until io_spool_postantal do
signal(ss_io_spool_tomme);
\f
message io_initialisering side 3 - 880901/cl;
i:= next_coru(102,
5,
true);
j:= new_activity(i,0,io_spool);
<*+3*>skriv_newactivity(out,i,j);
<*-3*>
i:= next_coru(103,
10,
true);
j:= new_activity(i,0,io_spon);
<*+3*>skriv_newactivity(out,i,j);
<*-3*>
cs_io_medd:= next_semch;
<*+3*> skriv_new_sem(out,3,cs_io_medd,<:cs-io-medd:>);
<*-3*>
i:= next_coru(104,<*ident *>
10,<*prioritet *>
true<*test_maske*>);
j:= new_activity( i,
0,
io_medd);
<*+3*>skriv_newactivity(out,i,j);
<*-3*>
cs_io_nulstil:= next_semch;
<*+3*> skriv_new_sem(out,3,cs_io_nulstil,<:cs-io-nulstil:>);
<*-3*>
i:= next_coru(105,<*ident *>
10,<*prioritet *>
true<*test_maske*>);
j:= new_activity( i,
0,
io_nulstil_tællere);
<*+3*>skriv_newactivity(out,i,j);
<*-3*>
open(z_io,8,konsol_navn,1 shift 21 + 1 shift 9);
i:= monitor(8)reserve process:(z_io,0,ia);
if i <> 0 then
begin
fejlreaktion(4<*monitor result*>,+i,<:io reservation:>,0);
end
else
begin
ref:= 0;
terminal_tab.ref.terminal_tilstand:= 0;
write(z_io,"nl",3,"sp",10,"*",15,<: busradio startet :>,
<<zddddd>,systime(5,0.0,r),".",1,r,
"sp",1,"*",15,"nl",1);
setposition(z_io,0,0);
end;
▶EOF◀