|
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: 121344 (0x1da00) Types: TextFile Names: »xhtoperatør «
└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system └─⟦a957ba283⟧ └─⟦this⟧ »xhtoperatør «
operatør. :1: operatør: parametererklæringer message operatør_parametererklæringer side 1 - 810422/hko; integer field alarm_kmdo, alarm_tilst, alarm_gtilst, alarm_lgd; real field alarm_start; integer opk_alarm_tab_lgd; :2: operatør: parameterinitialisering message operatør_parameterinitialisering side 1 - 810422/hko; <* felter i opkaldsalarmtabel *> alarm_kmdo := 2; alarm_tilst := 4; alarm_gtilst:= 6; alarm_lgd := 8; alarm_start := 12; opk_alarm_tab_lgd:= 12; :3: operatør: claiming \f message operatør_claiming side 1 - 810520/hko; max_coru:= max_coru +1 <* h_op *> +1 <* alarmur *> +1 <* opkaldsalarmer *> +1 <* talevejsswitch *> +1 <* tv_switch_adm *> +1 <* tv_switch_input *> +max_antal_operatører; max_sem:= 1 <* bs_opk_alarm *> +max_sem; max_semch:= max_semch +1 <* cs_op *> +1 <* cs_op_retur *> +1 <* cs_opk_alarm_ur *> +1 <* cs_opk_alarm_ur_ret *> +1 <* cs_opk_alarm *> +1 <* cs_talevejsswitch *> +1 <* cs_tv_switch_adm *> +1 <* cs_tvswitch_adgang *> +1 <* cs_tvswitch_input *> +1 <* cs_op_iomedd *> +max_antal_operatører<* cs_operatør *> +max_antal_operatører<* cs_op_fil *>; max_op:= max_op + 1 <* talevejsoperation *> + 2 <* tv_switch_input *> + 1 <* op_iomedd *> + 1 <* opk_alarm_ur *> + max_antal_operatører; max_netto_op:= filoplængde*max_antal_operatører + data+128 <* talevejsoperation *> + 2*(data+256) <* tv_switch_input *> + 60 <* op_iomedd *> + data <* opk_alarm_ur *> + max_netto_op; :4: operatør: erklæringer \f message operatør_erklæringer side 1 - 810602/hko; integer cs_op,cs_op_retur,cs_talevejsswitch,cs_tvswitch_adgang,cs_tv_switch_adm, cs_tvswitch_input, cs_op_iomedd, bs_opk_alarm, cs_opk_alarm, cs_opk_alarm_ur, cs_opk_alarm_ur_ret, sidste_tv_brugt; integer array operatørmaske(1:op_maske_lgd//2), op_talevej(0:max_antal_operatører), tv_operatør(0:max_antal_taleveje), opk_alarm(1:max_antal_operatører*(opk_alarm_tab_lgd//2)), ant_i_opkø, cs_operatør, cs_op_fil(1:max_antal_operatører); zone z_tv_in, z_tv_out(128,1,tvswitch_fejl); zone array z_op(max_antal_operatører,320,1,op_fejl); \f message procedure op_fejl side 1 - 830310/hko; procedure op_fejl(z,s,b); integer s,b; zone z; begin disable begin integer array iz(1:20); integer i,j,k,n; integer array field iaf,iaf1,msk; boolean input; real array field raf; getzone6(z,iz); iaf:=raf:=2; input:= iz(13) = 1; getnumber(iz.raf,9,j); <*+2*> if testbit31 then <**> begin <**> write(out,"nl",1,<:blockprocedure: opfejl, operatørnr::>,j,"nl",1, <**> <:s=:>); outintbits(out,s); <**> write(out,"nl",1,<:b=:>,b,"sp",1,if input then <:input:> <**> else <:output:>,"nl",1); <**> setposition(out,0,0); <**> end; <*-2*> iaf:=j*terminal_beskr_længde; k:=1; i:= terminal_tab.iaf.terminal_tilstand; if i shift(-21) < 4 and (s <> (1 shift 21 +2) <*or -,input*>) then fejlreaktion(17<*ydre enhed status*>,s,string iz.raf(increase(k)), 1 shift 12 <*binært*> +1 <*fortsæt*>); if s <> (1 shift 21 +2) then begin terminal_tab.iaf.terminal_tilstand:= 1 shift 23 + terminal_tab.iaf.terminal_tilstand extract 23; tofrom(opkaldsflag,alle_operatører,op_maske_lgd); sæt_bit_ia(opkaldsflag,j,0); if sæt_bit_ia(operatørmaske,j,0)=1 then for k:= j, 65 step 1 until top_bpl_gruppe do begin msk:= k*op_maske_lgd; if læsbit_ia(bpl_def.msk,j) then <**> begin n:= 0; for i:= 1 step 1 until max_antal_operatører do if læsbit_ia(bpl_def.msk,i) then begin iaf1:= i*terminal_beskr_længde; if terminal_tab.iaf1.terminal_tilstand shift (-21) < 3 then n:= n+1; end; bpl_tilst(j,1):= n; end; <**> <* bpl_tilst(j,1):= bpl_tilst(j,1)-1; *> end; signal_bin(bs_mobil_opkald); end; if input or -,input then begin z(1):=real <:<'?'><'?'><'em'>:>; b:=2; end; end; <*disable*> end op_fejl; \f message procedure tvswitch_fejl side 1 - 940426/cl; procedure tvswitch_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; boolean input; real array field raf; getzone6(z,iz); iaf:=raf:=2; input:= iz(13) = 1; <*+2*> if testbit31 then <**> begin <**> write(out,"nl",1,<:blockprocedure: tvswitch:>,"nl",1, <**> <:s=:>); outintbits(out,s); <**> write(out,"nl",1,<:b=:>,b,"sp",1,if input then <:input:> <**> else <:output:>,"nl",1); <**> skrivhele(out,z,b,5); <**> setposition(out,0,0); <**> end; <*-2*> k:=1; if s <> (1 shift 21 +2) then fejlreaktion(17<*ydre enhed status*>,s,string iz.raf(increase(k)), 1 shift 12 <*binært*> +1 <*fortsæt*>); if input or -,input then begin z(1):=real <:<'em'>:>; b:=2; end; end; <*disable*> end tvswitch_fejl; procedure skriv_talevejs_tab(z); zone z; begin write(z,"nl",2,<:talevejsswitch::>); write(z,"nl",1,<: operatører::>,"nl",1); for i:= 1 step 1 until max_antal_operatører do begin write(z,<< dd>,i,":",1,op_talevej(i)); if i mod 8=0 then outchar(z,'nl'); end; write(z,"nl",1,<: taleveje::>,"nl",1); for i:= 1 step 1 until max_antal_taleveje do begin write(z,<< dd>,i,":",1,tv_operatør(i)); if i mod 8=0 then outchar(z,'nl'); end; write(z,"nl",3); end; \f message procedure skriv_opk_alarm_tab side 1; procedure skriv_opk_alarm_tab(z); zone z; begin integer nr; integer array field tab; real t; write(z,"nl",2,<:opkaldsalarmtabel::>,"nl",1, <:operatør kmdo tilst gl.tilst længde start:>,"nl",1); for nr:=1 step 1 until max_antal_operatører do begin tab:= (nr-1)*opk_alarm_tab_lgd; write(z,<< dd >,nr,true,6,string bpl_navn(nr),<:: :>, case opk_alarm.tab.alarm_kmdo+1 of ("-","B","C","F"),1,"sp",5, case opk_alarm.tab.alarm_tilst+1 of ("-","B","C","?"),1,"sp",8, case opk_alarm.tab.alarm_gtilst+1 of ("-","B","C","?"),1,"sp",2, <<-dddd>,opk_alarm.tab.alarm_lgd,"sp",1, << zddddd>,systime(4,opk_alarm.tab.alarm_start,t),t, "nl",1); end; end; \f message procedure ht_symbol side 1 - 851001/cl; procedure ht_symbol(z); zone z; write(z,"esc" add 128,1,<:ÆH:>,"esc" add 128,1,<:ÆJ:>,<: @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@@@@@@@@@@@ @@@@@@@@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@@@@@@@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@@@@@@@@@@@ @@@@@@@@@@@@@ :>,"esc" add 128,1,<:Æ24;1H:>); \f message procedure definer_taster side 1 - 891214,cl; procedure definer_taster(nr); value nr; integer nr; begin setposition(z_op(nr),0,0); write(z_op(nr), "esc" add 128,1, <:P1;2;0ø58/1B4E450D:>, "esc" add 128,1, <:Ø:>, <* f1 = <esc>NE<cr> *> "esc" add 128,1, <:P1;2;0ø59/1B4F500D:>, "esc" add 128,1, <:Ø:>, <* f2 = <esc>OP<cr> *> "esc" add 128,1, <:P1;2;0ø5A/1B4F502C560D:>, "esc" add 128,1, <:Ø:>, <* f3 = <esc>OP,V<cr> *> "esc" add 128,1, <:P1;2;0ø5B/1B4F502C5420:>, "esc" add 128,1, <:Ø:>, <* f4 = <esc>OP,T<sp> *> "esc" add 128,1, <:P1;2;0ø5C/1B4F502C4120:>, "esc" add 128,1, <:Ø:>, <* f5 = <esc>OP,A<sp> *> "esc" add 128,1, <:P1;2;1ø5C/1B4F502C4120:>, "esc" add 128,1, <:Ø:>, <* s-f5 = <esc>OP,A<sp> *> "esc" add 128,1, <:P1;2;0ø5D/1B4D452C4120:>, "esc" add 128,1, <:Ø:>, <* f6 = <esc>ME,A<sp> *> "esc" add 128,1, <:P1;2;1ø5D/1B4D452C4120:>, "esc" add 128,1, <:Ø:>, <* s-f6 = <esc>ME,A<sp> *> "esc" add 128,1, <:P1;2;0ø5E/1B4F5020:>, "esc" add 128,1, <:Ø:>, <* f7 = <esc>OP<sp> *> "esc" add 128,1, <:P1;2;0ø5F/1B56450D:>, "esc" add 128,1, <:Ø:>, <* f8 = <esc>VE<cr> *> "esc" add 128,1, <:P1;2;0ø60/1B4D4F20:>, "esc" add 128,1, <:Ø:>, <* f9 = <esc>MO<sp> *> "esc" add 128,1, <:P1;2;1ø60/1B520D:>, "esc" add 128,1, <:Ø:>, <* s-f9 = <esc>R<cr> *> "esc" add 128,1, <:P1;2;0ø61/1B53540D:>, "esc" add 128,1, <:Ø:>, <* f10 = <esc>ST<cr> *> "esc" add 128,1, <:P1;2;0ø62/1B474520:>, "esc" add 128,1, <:Ø:>, <* f11 = <esc>GE<sp> *> "esc" add 128,1, <:P1;2;1ø62/1B47452C4720:>, "esc" add 128,1, <:Ø:>, <* s-f11 = <esc>GE,G<sp> *> "esc" add 128,1, <:P1;2;0ø63/1B47452C560D:>, "esc" add 128,1, <:Ø:>, <* f12 = <esc>GE,V<cr> *> "esc" add 128,1, <:P1;2;1ø63/1B47452C540D:>, "esc" add 128,1, <:Ø:>, <* s-f12 = <esc>GE,T<sp> *> "esc" add 128,1, <:P1;2;0ø7B/1B564F2C4920:>, "esc" add 128,1, <:Ø:>, <* Ins = <esc>VO,I<sp> *> "esc" add 128,1, <:P1;2;0ø79/1B564F2C5520:>, "esc" add 128,1, <:Ø:>, <* Del = <esc>VO,U<sp> *> "esc" add 128,1, <:P1;2;0ø7F/1B564F2C4620:>, "esc" add 128,1, <:Ø:>, <* Home = <esc>VO,F<sp> *> "esc" add 128,1, <:P1;2;0ø7A/1B564F2C5220:>, "esc" add 128,1, <:Ø:>, <* End = <esc>VO,R<sp> *> "esc" add 128,1, <:P1;2;0ø6F/1B564F2C4C20:>, "esc" add 128,1, <:Ø:>, <* PgUp = <esc>VO,L<sp> *> "esc" add 128,1, <:P1;2;0ø7E/1B564F2C4220:>, "esc" add 128,1, <:Ø:>, <* PgDn = <esc>VO,B<sp> *> "esc" add 128,1, <:P1;2;0ø0E/082008:>, "esc" add 128,1, <:Ø:>, <* Back = <bs><sp><bs> *> <::>); end; \f message procedure skriv_terminal_tab side 1 - 820301/hko; procedure skriv_terminal_tab(z); zone z; begin integer array field ref; integer t1,i,j,id,k; write(z,"ff",1,<: ******* terminalbeskrivelser ******** m m n o o o ø p nr tilst - vnt - n b d t type ident id i kø:>); for i:=1 step 1 until max_antal_operatører do begin ref:=i*terminal_beskr_længde; t1:=terminal_tab.ref(1); id:=terminal_tab.ref(2); k:=terminal_tab.ref(3); write(z,"nl",1,"sp",4,<<dd>,i,<< dddd>,t1 shift(-21), t1 shift(-16) extract 5,t1 shift(-12) extract 4, t1 shift(-6) extract 6,"sp",3); for j:=5 step -1 until 2 do write(z,if læs_bit_i(t1,j) then "X" else "sp",1,"sp",1); write(z,case t1 extract 2 +1 of (<: - :>,<:OPK :>,<:MEDD:>,<:GNM :>), "sp",4); skriv_id(z,id,9); skriv_id(z,k,9); end; write(z,"nl",2,<:samtaleflag::>,"nl",1); outintbits_ia(z,samtaleflag,1,op_maske_lgd//2); write(z,"nl",1); end skriv_terminal_tab; \f message procedure h_operatør side 1 - 810520/hko; <* hovedmodulkorutine for operatørterminaler *> procedure h_operatør; begin integer array field op_ref; integer k,nr,ant,ref,dest_sem; procedure skriv_hoperatør(zud,omfang); value omfang; zone zud; integer omfang; begin write(zud,"nl",1,<:+++ hovedmodul operatør :>); if omfang>0 then disable begin integer x; trap(slut); write(zud,"nl",1, <: op_ref: :>,op_ref,"nl",1, <: nr: :>,nr,"nl",1, <: ant: :>,ant,"nl",1, <: ref: :>,ref,"nl",1, <: k: :>,k,"nl",1, <: dest_sem: :>,dest_sem,"nl",1, <::>); skriv_coru(zud,coru_no(200)); slut: end; end skriv_hoperatør; trap(hop_trap); stack_claim(if cm_test then 198 else 146); <*+2*> if testbit8 and overvåget or testbit28 then skriv_hoperatør(out,0); <*-2*> \f message procedure h_operatør side 2 - 820304/hko; repeat wait_ch(cs_op,op_ref,true,-1); <*+4*> if (d.op_ref.optype and (op_optype or gen_optype)) extract 12 =0 then fejlreaktion(12<*operationstype*>,op_ref,<:operatør:>,1); <*-4*> k:=d.op_ref.opkode extract 12; dest_sem:= if k=0 and d.opref.kilde=299 then cs_talevejsswitch else if k=0 then cs_operatør(d.op_ref.kilde mod 100) else if k=1 or k=2 or k=43 then cs_operatør(d.op_ref.data(1)) else if k=4 then cs_operatør(d.op_ref.data(2)) else if k=40 then 0 else -1; <*+4*> if dest_sem=-1 then begin fejl_reaktion(2<*operationskode*>,k,<:hovedmodul operatør:>,1); signal_ch(d.op_ref.retur,op_ref,d.op_ref.optype); end else <*-4*> if k=40 then begin dest_sem:= d.op_ref.retur; d.op_ref.retur:= cs_op_retur; for nr:= 1 step 1 until max_antal_operatører do begin inspect_ch(cs_operatør(nr),genoptype,ant); if ant < 0 and (læsbit_ia(opkaldsflag,nr) or læsbit_ia(kanalflag,nr) or læsbit_ia(samtaleflag,nr)) and læsbit_ia(operatørmaske,nr) then begin ref:= op_ref; signal_ch(cs_operatør(nr),opref,d.op_ref.optype); <*V*> wait_ch(cs_op_retur,op_ref,true,-1); <*+4*> if op_ref <> ref then fejlreaktion(11<*fr.post*>,op_ref, <:opdater opkaldskø,retur:>,0); <*-4*> end; end; d.op_ref.retur:= dest_sem; signal_ch(dest_sem,op_ref,d.op_ref.optype); end else begin \f message procedure h_operatør side 3 - 810601/hko; if k=8<*ekskluder*> then <*afbryd kommando v. timeout*> begin iaf:=d.op_ref.data(1)*terminal_beskr_længde; terminal_tab.iaf.terminal_tilstand:= 7 shift 21 +terminal_tab.iaf.terminal_tilstand extract 21; end; signal_ch(dest_sem,op_ref,d.op_ref.optype); end; until false; hop_trap: disable skriv_hoperatør(zbillede,1); end h_operatør; \f message procedure operatør side 1 - 820304/hko; procedure operatør(nr); value nr; integer nr; begin integer array field op_ref,ref,vt_op,iaf,tab; integer i,kode,aktion,status,tilstand,bv,bs,bs_tilst, kanal,opgave,pos,indeks,sep,sluttegn,rkom, vogn,ll,garage,skærmmåde,res,s_kanal,v_kanal; real kommstart,kommslut; \f message procedure operatør side 1a - 820301/hko; procedure skriv_operatør(zud,omfang); value omfang; zone zud; integer omfang; begin integer i; i:= write(zud,"nl",1,<:+++ operatør nr::>,nr); write(zud,"sp",26-i); 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, <: iaf: :>,iaf,"nl",1, <: status: :>,status,"nl",1, <: tilstand: :>,tilstand,"nl",1, <: bv: :>,bv,"nl",1, <: bs: :>,bs,"nl",1, <: bs-tilst: :>,bs_tilst,"nl",1, <: kanal: :>,kanal,"nl",1, <: opgave: :>,opgave,"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, <: garage: :>,garage,"nl",1, <: skærmmåde: :>,skærmmåde,"nl",1, <: res: :>,res,"nl",1, <: tab: :>,tab,"nl",1, <::>); skriv_coru(zud,coru_no(200+nr)); slut: end; end skriv_operatør; real procedure now; begin real f,r,r1; long l; systime(1,0,r); l:=r*100; f:=(l mod 100)/100; systime(4,r,r1); now:= r1+f; end; \f message procedure skærmstatus side 1 - 810518/hko; integer procedure skærmstatus(tilstand,b_v,b_s,b_s_tilst); integer tilstand,b_v,b_s,b_s_tilst; begin integer i,j; i:= terminal_tab.ref(1); b_s:= terminal_tab.ref(2); b_s_tilst:= i extract 12; j:= b_s_tilst extract 3; b_v:= i shift (-12) extract 4; tilstand:= i shift (-21); skærmstatus:= if b_v = 0 and b_s = 0 then 0 else if b_v = 0 and j = 1<*opkald*> then 1 else if b_v = 0 and j = 2<*specialopkald*> then 2 else if (bv<>0) and (bs<>0) and (j=3) then 4 else 3; end skærmstatus; \f message procedure skriv_skærm side 1 - 810522/hko; procedure skriv_skærm(nr); value nr; integer nr; begin integer i; disable definer_taster(nr); skriv_skærm_maske(nr); skriv_skærm_opkaldskø(nr); skriv_skærm_b_v_s(nr); for i:= 1 step 1 until max_antal_kanaler do skriv_skærm_kanal(nr,i); cursor(z_op(nr),1,1); <*V*> setposition(z_op(nr),0,0); end skriv_skærm; \f message procedure skriv_skærm_id side 1 - 830310/hko; procedure skriv_skærm_id(nr,id,nød); value nr,id,nød; integer nr,id; boolean nød; begin integer linie,løb,bogst,i,p; i:= id shift (-22); case i+1 of begin begin <* busnr *> p:= write(z_op(nr),if nød then "*" else "sp",1,<<bddd>, (id extract 14) mod 10000); if id shift (-14) extract 8 > 0 then p:= p+write(z_op(nr),".",1, string bpl_navn(id shift (-14) extract 8)); write(z_op(nr),"sp",11-p); end; begin <*linie/løb*> linie:= id shift (-12) extract 10; bogst:= id shift (-7) extract 5; if bogst > 0 then bogst:= bogst +'A'-1; løb:= id extract 7; write(z_op(nr),if nød then "*" else "sp",1, "sp",if bogst=0 then 1 else 0,<<ddd>,linie,<<d>, false add bogst,1,"/",1,løb, "sp",if løb > 9 then 3 else 4); end; begin <*gruppe*> write(z_op(nr),<:GRP :>); if id shift (-21) extract 1 = 1 then begin <*specialgruppe*> løb:= id extract 7; write(z_op(nr),"sp",if løb > 9 then 1 else 2,<:G:>, <<d>,løb,"sp",2); end else begin linie:= id shift (-5) extract 10; bogst:= id extract 5; if bogst > 0 then bogst:= bogst +'A'-1; write(z_op(nr),"sp",if bogst > 0 then 1 else 0,<<ddd>,linie, false add bogst,1,"sp",2); end; end; <* kanal eller område *> begin linie:= (id shift (-20) extract 2) + 1; case linie of begin write(z_op(nr),"sp",11-write(z_op(nr), string kanal_navn(id extract 20))); write(z_op(nr),<:K*:>,"sp",9); write(z_op(nr),"sp",11-write(z_op(nr), <:OMR :>,string område_navn(id extract 20))); write(z_op(nr),<:ALLE:>,"sp",7); end; end; end <* case i *> end skriv_skærm_id; \f message procedure skriv_skærm_kanal side 1 - 820301/hko; procedure skriv_skærm_kanal(nr,kanal); value nr,kanal; integer nr,kanal; begin integer i,j,k,t,omr; integer array field tref,kref; boolean nød; tref:= nr*terminal_beskr_længde; kref:= (kanal-1)*kanal_beskr_længde; t:= kanaltab.kref.kanal_tilstand; j:= terminal_tab.tref(1) shift (-12) extract 4; <* b_v kanalnr *> k:= terminal_tab.tref(2); <* 3 shift 22 +kanal, hvis samtale *> <*V*> setposition(z_op(nr),0,0); cursor(z_op(nr),kanal+2,28); write(z_op(nr),if læsbit_i(kanaltab.kref.kanal_tilstand,10) then "*" else if læsbit_i(kanaltab.kref.kanal_tilstand,11) then "+" else " ",1," ",1); write(z_op(nr),true,6,string kanal_navn(kanal)); omr:= if kanal_id(kanal) shift (-5) extract 3 = 2 then pabx_id(kanal_id(kanal) extract 5) else radio_id(kanal_id(kanal) extract 5); for i:= -2 step 1 until 0 do begin write(z_op(nr), if område_id(omr,1) shift (8*i) extract 8 = 0 then " " else false add (område_id(omr,1) shift (8*i) extract 8),1); end; write(z_op(nr),<:: :>); i:= tv_operatør(kanaltab.kref.kanal_tilstand shift (-16));<*operatør*> if læsbit_ia(kanaltab.kref.kanal_alarm, nr) then begin sætbit_ia(kanaltab.kref.kanal_alarm, nr, 0); write(z_op(nr)<* ,<:ALARM !:>,"bel",1 *>,"esc" add 128,1,<:ÆK:>); end else if kanaltab.kref.kanal_tilstand shift (-12) extract 4 = 15 then write(z_op(nr),<:-:><*UDE AF DRIFT*>,"esc" add 128,1,<:ÆK:>) else if (i > 0 and i <> nr) or (j = kanal <* kanal = kanalnr for ventepos *> or (terminal_tab.tref.terminal_tilstand shift (-21) = 1 <*tilst=samtale*> and k extract 22 = kanal)) then begin write(z_op(nr),<:OPT :>); if bpl_navn(i)=long<::> then write(z_op(nr),<:op:>,<<d>,i) else write(z_op(nr),string bpl_navn(i)); write(z_op(nr),"esc" add 128,1,<:ÆK:>); end else if kanaltab.kref.kanal_tilstand shift (-16) = 0 then write(z_op(nr),"esc" add 128,1,<:ÆK:>) else begin i:= kanaltab.kref.kanal_id1; nød:= læsbit_i(kanaltab.kref.kanal_tilstand,3); skriv_skærm_id(nr,i,nød); write(z_op(nr),if t extract 2 = 3 then <:GNM :> else <:OPKALDT:>); i:= kanaltab.kref.kanal_id2; if i<>0 then skriv_skærm_id(nr,i,false); write(z_op(nr),"esc" add 128,1,<:ÆK:>); end; <*V*> setposition(z_op(nr),0,0); end skriv_skærm_kanal; \f message procedure skriv_skærm_b_v_s side 1 - 810601/hko; procedure skriv_skærm_b_v_s(nr); value nr; integer nr; begin integer i,j,k,kv,ks,t; integer array field tref,kref; tref:= nr*terminal_beskr_længde; i:= terminal_tab.tref.terminal_tilstand; kv:= i shift (-12) extract 4; ks:= terminaltab.tref(2) extract 20; <*V*> setposition(z_op(nr),0,0); cursor(z_op(nr),18,28); write(z_op(nr),"esc" add 128,1,<:ÆK:>); cursor(z_op(nr),20,28); write(z_op(nr),"esc" add 128,1,<:ÆK:>); cursor(z_op(nr),21,28); write(z_op(nr),"esc" add 128,1,<:ÆK:>); cursor(z_op(nr),20,28); if op_talevej(nr)<>0 then begin cursor(z_op(nr),18,28); write(z_op(nr),<:talevej: :>,<<d>,op_talevej(nr)); end; if kv <> 0 then begin kref:= (kv-1)*kanal_beskr_længde; j:= if kv<>ks then kanaltab.kref.kanal_id1 else kanaltab.kref.kanal_id2; k:= if kv<>ks then kanaltab.kref.kanal_alt_id1 else kanaltab.kref.kanal_alt_id2; write(z_op(nr),true,6,string kanal_navn(kv)); skriv_skærm_id(nr,j,kanaltab.kref.kanaltilstand shift(-3) extract 1=1); skriv_skærm_id(nr,k,false); write(z_op(nr),if i extract 2 = 3 then <:GNM:> else <:VNT:>); end; cursor(z_op(nr),21,28); j:= terminal_tab.tref(2); if i shift (-21) <> 0 <*ikke ledig*> then begin \f message procedure skriv_skærm_b_v_s side 2 - 841210/cl; if i shift (-21) = 1 <*samtale*> then begin if j shift (-20) = 12 then begin write(z_op(nr),true,6,string kanal_navn(ks)); end else begin write(z_op(nr),true,6,<:K*:>); k:= 0; while ks shift (-k) extract 1 = 0 and k<max_antal_kanaler do k:= k+1; ks:= k; end; kref:= (ks-1)*kanal_beskr_længde; t:= kanaltab.kref.kanaltilstand; skriv_skærm_id(nr,kanaltab.kref.kanal_id1, t shift (-3) extract 1 = 1); skriv_skærm_id(nr,kanaltab.kref.kanal_alt_id1,false); write(z_op(nr),if i shift (-11) extract 1 = 1 then <:-P-:> else if t shift (-5) extract 1 = 1 then <:MON :> else if t shift (-4) extract 1 = 1 then <:BSV :> else if t shift (-6) extract 1 = 1 then <:PAS :> else if t shift (-7) extract 1 = 1 then <:LYT :> else <:TAL :>); if t shift (-9) extract 1 = 1 then write(z_op(nr),<:ALLE :>); if t shift (-8) extract 1 = 1 then write(z_op(nr),<:KATASTROFE :>); k:= kanaltab.kref.kanal_spec; if t extract 2 <> 3 and t shift (-4) extract 1 = 1 then write(z_op(nr),<<zd.dd>,(k extract 12)/100); end else <* if i shift (-21) = 2 <+optaget+> then *> begin write(z_op(nr),<:K-:>,"sp",3); if j <> 0 then skriv_skærm_id(nr,j,false) else begin j:=terminal_tab.tref(3); skriv_skærm_id(nr,j, false add (if i shift(-4) extract 1 = 1 then 2 <* mobil opk. *> else 0)); end; write(z_op(nr),<:OPT:>); end; end; <*V*> setposition(z_op(nr),0,0); end skriv_skærm_b_v_s; \f message procedure skriv_skærm_maske side 1 - 810511/hko; procedure skriv_skærm_maske(nr); value nr; integer nr; begin integer i; <*V*> setposition(z_op(nr),0,0); write(z_op(nr),"esc" add 128,1,<:ÆH:>,"esc" add 128,1,<:ÆJ:>, "sp",26,"*",5,<: operatør :>,<<d>,nr,"sp",1,string bpl_navn(nr), "sp",1,"*",5,"nl",1,"-",80); for i:= 3 step 1 until 21 do begin cursor(z_op(nr),i,26); outchar(z_op(nr),'!'); end; cursor(z_op(nr),22,1); write(z_op(nr),"-",80); cursor(z_op(nr),1,1); <*V*> setposition(z_op(nr),0,0); end skriv_skærm_maske; \f message procedure skal_udskrives side 1 - 940522/cl; boolean procedure skal_udskrives(fordelt_til,aktuel_skærm); value fordelt_til,aktuel_skærm; integer fordelt_til,aktuel_skærm; begin boolean skal_ud; integer n; integer array field iaf; skal_ud:= true; if fordelt_til > 0 and fordelt_til<>aktuel_skærm then begin for n:= 0 step 1 until 3 do begin if bpl_tilst(operatør_stop(fordelt_til,n),1) > 0 then begin iaf:= operatør_stop(fordelt_til,n)*op_maske_lgd; skal_ud:= læsbit_ia(bpl_def.iaf,aktuel_skærm); goto returner; end; end; end; returner: skal_udskrives:= skal_ud; end; message procedure skriv_skærm_opkaldskø side 1 - 820301/hko; procedure skriv_skærm_opkaldskø(nr); value nr; integer nr; begin integer i,ant,vogn,type,operatør,ttmm,linie,bogst,løb,kmdo; integer array field ref,iaf,tab; boolean skal_ud; <*V*> wait(bs_opkaldskø_adgang); setposition(z_op(nr),0,0); ant:= 0; kmdo:= 0; tab:= (nr-1)*opk_alarm_tab_lgd; ref:= første_nødopkald; if ref=0 then ref:=første_opkald; while ref <> 0 do begin i:= opkaldskø.ref(4); operatør:= i extract 8; type:=i shift (-8) extract 4; <* skal_ud:= operatør = nr or -,læsbit_ia(operatørmaske,operatør); *> if operatør > 64 then begin <* fordelt til gruppe af betjeningspladser *> i:= 0; skal_ud:= true; iaf:= operatør*op_maske_lgd; while skal_ud and i<max_antal_operatører do begin i:=i+1; if læsbit_ia(bpl_def.iaf,i) then skal_ud:= skal_ud and skal_udskrives(i,nr); end; end else skal_ud:= skal_udskrives(operatør,nr); if skal_ud then begin ant:= ant +1; if ant < 6 then begin <*V*> cursor(z_op(nr),ant*2+1,3); ttmm:= i shift (-12); vogn:= opkaldskø.ref(3); if vogn = 0 then vogn:= opkaldskø.ref(2) extract 22; skriv_skærm_id(nr,vogn,type=2); write(z_op(nr),true,4, string område_navn(opkaldskø.ref(5) extract 4), <<zd.dd>,ttmm/100.0); if -, læsbit_ia(opkaldskø.ref.opkald_meldt,nr) then begin if opkaldskø.ref(5) extract 4 <= 2 or opk_alarm.tab.alarm_lgd = 0 then begin if type=2 then write(z_op(nr),"bel",1,"del",8,"bel",1,"del",8,"bel",1) else write(z_op(nr),"bel",1); end else if type>kmdo then kmdo:= type; sætbit_ia(opkaldskø.ref.opkald_meldt,nr,1); end; end;<* ant < 6 *> end;<* operatør ok *> ref:= opkaldskø.ref(1) extract 12; if ref = 0 and type = 2<*nød*> then ref:= første_opkald; end; \f message procedure skriv_skærm_opkaldskø side 2 - 820301/hko; signal_bin(bs_opkaldskø_adgang); if kmdo > opk_alarm.tab.alarm_tilst and kmdo > opk_alarm.tab.alarm_kmdo then begin opk_alarm.tab.alarm_kmdo:= kmdo; signal_bin(bs_opk_alarm); end; if ant > 5 then begin cursor(z_op(nr),13,9); write(z_op(nr),<<+ddd>,ant-5); end else begin for i:= ant +1 step 1 until 6 do begin cursor(z_op(nr),i*2+1,1); write(z_op(nr),"sp",25); end; end; ant_i_opkø(nr):= ant; cursor(z_op(nr),1,1); <*V*> setposition(z_op(nr),0,0); end skriv_skærm_opkaldskø; \f message procedure operatør side 2 - 810522/hko; trap(op_trap); stack_claim((if cm_test then 200 else 146)+24+48+80+175); ref:= nr*terminal_beskr_længde; tab:= (nr-1)*opk_alarm_tab_lgd; skærmmåde:= 0; <*normal*> if operatør_auto_include(nr) then begin waitch(cs_att_pulje,opref,true,-1); i:= operatør_auto_include(nr) extract 2; if i<>3 then i:= 0; start_operation(opref,101,cs_att_pulje,i shift 12 +1); d.opref.data(1):= nr; signalch(cs_rad,opref,gen_optype or io_optype); end; <*+2*> if testbit8 and overvåget or testbit28 then skriv_operatør(out,0); <*-2*> \f message procedure operatør side 3 - 810602/hko; repeat <*V*> wait_ch(cs_operatør(nr), op_ref, true, -1<*timeout*>); <*+2*> if testbit9 and overvåget then disable begin write(out,"nl",1,<:operation fra cs:>,<<d>,cs_operatør(nr), <: til operatør :>,nr); skriv_op(out,op_ref); end; <*-2*> monitor(8)reserve process:(z_op(nr),0,ia); kode:= d.op_ref.op_kode extract 12; i:= terminal_tab.ref.terminal_tilstand; status:= i shift(-21); opgave:= if kode=0 then 1 <* indlæs kommando *> else if kode=1 then 2 <* inkluder *> else if kode=2 then 3 <* ekskluder *> else if kode=40 then 4 <* opdater skærm *> else if kode=43 then 5 <* opkald etableret *> else if kode=4 then 6 <* radiokanal ekskluderet *> else 0; <* afvises *> aktion:= case status +1 of( <* status *> <* opgave: 0 1 2 3 4 5 6 *> <* 0 klar *>(case opgave+1 of( 0, 1, -4, 3, 4, -4, 6)), <* 1 samtale *>(case opgave+1 of( 0, 1, -4, -5, 4, -4, 6)), <* 2 optaget *>(case opgave+1 of( 0, 1, -4, -5, 4, 5, 6)), <* 3 stoppet *>(case opgave+1 of( 0, 2, 2, 3, -4, -4, -4)), <* 4 klar (fejl) *>(case opgave+1 of( 0, -4, 2, 3, -4, -4, 6)), <* 5 samt.(fejl) *>(case opgave+1 of( 0, -4, 2, 3, -4, -4, 6)), <* 6 opt. (fejl) *>(case opgave+1 of( 0, -4, 2, 3, -4, 5, -4)), <* 7 ej knyttet *>(case opgave+1 of( 0, -4, 2, -4, -4, -4, -4)), -1); \f message procedure operatør side 4 - 810424/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: ulovligt operatørterminal_nr *> fejl_reaktion(3<*programfejl*>,nr,<: ikke eksisterende operatør:>,1); afslut_operation(op_ref,-1); end; begin <*-1: ulovlig operatørtilstand *> fejl_reaktion(3<*programfejl*>,status,<: ulovlig operatør-status:>,1); 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 operatør side 5 - 851001/cl; <* 1: indlæs kommando *> <*V*> læs_kommando(z_op(nr),200+nr,op_ref,pos,indeks,sep,sluttegn); if opk_alarm.tab.alarm_tilst > 0 then begin opk_alarm.tab.alarm_kmdo:= 3; signal_bin(bs_opk_alarm); pass; end; if d.op_ref.resultat > 3 then begin <*V*> setposition(z_op(nr),0,0); cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),op_ref,pos, d.op_ref.resultat); end else if d.op_ref.resultat = -1 then begin skærmmåde:= 0; skrivskærm(nr); end else if d.op_ref.resultat>0 then begin <*godkendt*> kode:=d.op_ref.opkode; i:= kode extract 12; j:= if kode = 11 or kode = 12 then 1 <*VO,I/VO,U*> else if kode = 19 then 1 <*VO,S *> else if kode = 20 or kode = 24 then 1 <*VO,F/VO,R*> else if kode = 9 or kode = 10 then 2 <*VO,L/VO,B*> else if kode = 6 then 4 <*STop*> else if 45<=kode and kode<=63 then 3 <*radiokom.*> else if kode = 30 then 5 <*SP,D*> else if kode = 31 then 6 <*SP*> else if kode = 32 or kode = 33 then 7 <*SP,V/SP,O*> else if kode = 34 or kode = 35 then 6 <*SP,R/SP,A*> else if kode = 83 then 8 <*SL*> else if kode = 68 then 9 <*ST,D*> else if kode = 69 then 10 <*ST,V*> else if kode = 36 then 11 <*AL*> else 0; if j > 0 then begin case j of begin begin \f message procedure operatør side 6 - 851001/cl; <* 1 indsæt/udtag/flyt bus i vogntabel *> vogn:=ia(1); ll:=ia(2); kanal:= if kode=11 or kode=19 then ia(3) else if kode=12 then ia(2) else 0; <*V*> wait_ch(cs_vt_adgang, vt_op, gen_optype, -1<*timeout sek*>); start_operation(vtop,200+nr,cs_operatør(nr), kode); d.vt_op.data(1):=vogn; if kode=11 or kode=19 or kode=20 or kode=24 then d.vt_op.data(2):=ll; if kode=19 then d.vt_op.data(3):= kanal else if kode=11 or kode=12 then d.vt_op.data(4):= kanal; indeks:= vt_op; signal_ch(cs_vt, vt_op, gen_optype or op_optype); <*V*> wait_ch(cs_operatør(nr), vt_op, op_optype, -1<*timeout sek*>); <*+2*> if testbit10 and overvåget then disable begin write(out,"nl",1,<:operatør :>,<<d>,nr, <:: operation retur fra vt:>); skriv_op(out,vt_op); end; <*-2*> <*+4*> if vt_op<>indeks then fejl_reaktion(11<*fremmede op*>,op_ref, <:operatør-kommando:>,0); <*-4*> <*V*> setposition(z_op(nr),0,0); cursor(z_op(nr),24,1); <*V*> skriv_kvittering(z_op(nr),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:= gen_optype or vt_optype; disable afslut_operation(vt_op,cs_vt_adgang); end; begin \f message procedure operatør side 7 - 810921/hko,cl; <* 2 vogntabel,linienr/-,busnr *> d.op_ref.retur:= cs_operatør(nr); tofrom(d.op_ref.data,ia,10); indeks:= op_ref; signal_ch(cs_vt,op_ref,gen_optype or op_optype); wait_ch(cs_operatør(nr), op_ref, op_optype, -1<*timeout*>); <*+2*> if testbit10 and overvåget then disable begin write(out,"nl",1,<:operatør operation retur fra vt:>); skriv_op(out,op_ref); end; <*-2*> <*+4*> if indeks <> op_ref then fejlreaktion(11<*fremmed post*>,op_ref,<:operatør komm:>,0); <*-4*> i:= d.op_ref.resultat; if i = 0 or i > 3 then begin <*V*> setposition(z_op(nr),0,0); cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),op_ref,-1,d.op_ref.resultat); end else begin integer antal,fil_ref; skærm_måde:= 1; antal:= d.op_ref.data(6); fil_ref:= d.op_ref.data(7); <*V*> setposition(z_op(nr),0,0); write(z_op(nr),"esc" add 128,1,<:ÆH:>,"esc" add 128,1,<:ÆJ:>, "sp",14,"*",10,"sp",6, <:vogntabeludskrift:>,"sp",6,"*",10,"nl",2); <*V*> setposition(z_op(nr),0,0); \f message procedure operatør side 8 - 841213/cl; pos:= 1; while pos <= antal do begin integer bogst,løb; disable i:= læs_fil(fil_ref,pos,j); if i <> 0 then fejlreaktion(5<*læs_fil*>,i,<:operatør: vo,l/vo,b:>,0) else begin 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(z_op(nr),"sp",(bogst=0) extract 1,<<ddd>,ll, false add bogst,1,"/",1,<<d__>,løb); write(z_op(nr),<<dddd>,vogn,"sp",1); end; end; if pos mod 5 = 0 then begin outchar(z_op(nr),'nl'); <*V*> setposition(z_op(nr),0,0); end else write(z_op(nr),"sp",3); end; pos:=pos+1; end; write(z_op(nr),"*",1,"nl",1); \f message procedure operatør side 8a- 810507/hko; d.opref.opkode:=104; <*slet-fil*> d.op_ref.data(4):=filref; indeks:=op_ref; signal_ch(cs_slet_fil,op_ref,gen_optype or op_optype); <*V*> wait_ch(cs_operatør(nr),op_ref,op_optype,-1); <*+2*> if testbit10 and overvåget then disable begin write(out,"nl",1,<:operatør, slet-fil retur:>); skriv_op(out,op_ref); end; <*-2*> <*+4*> if op_ref<>indeks then fejlreaktion(11<*fr.post*>,op_ref,<:operatør,slet-fil:>,0); <*-4*> if d.op_ref.data(9)<>0 then fejl_reaktion(3<*prg.fejl*>,d.op_ref.data(9), <:operatør, slet_fil:>,1); end; end; begin \f message procedure operatør side 9 - 830310/hko; <* 3 radio_kommandoer *> kode:= d.op_ref.opkode; rkom:= kode-44; disable if testbit14 then begin systime(1,0,kommstart); write(out,<<zd dd dd.dd >,now,<:op:>,<<d__>,nr,<:":>, string bpl_navn(nr),<:" kmdo: :>,case rkom of ( <:OP:>,<:ME:>,<:OP,G:>,<:ME,G:>,<:OP,A:>,<:ME,A:>, <:KA,C:>,<:KA,P:>,<:OP,L:>,<:MO:>,<:VE:>,<:NE:>, <:OP,V:>,<:OP,T:>,<:R:>,<:GE:>,<:GE,G:>,<:GE,V:>, <:GE,T:>),<: start:>); ud; end; d.op_ref.data(4):= nr; <*operatør*> opgave:= if kode = 45 <*OP *> then 1 else if kode = 46 <*ME *> then 2 else if kode = 47 <*OP,G*> then 3 else if kode = 48 <*ME,G*> then 4 else if kode = 49 <*OP,A*> then 5 else if kode = 50 <*ME,A*> then 6 else if kode = 51 <*KA,C*> then 7 else if kode = 52 <*KA,P*> then 8 else if kode = 53 <*OP,L*> then 9 else if kode = 54 <*MO *> then (if ia(1)=0 then 11 else 10) else if kode = 55 <*VE *> then 14 else if kode = 56 <*NE *> then 12 else if kode = 57 <*OP,V*> then 1 else if kode = 58 <*OP,T*> then 1 else if kode = 59 <*R *> then 13 else if kode = 60 <*GE *> then 15 else if kode = 61 <*GE,G*> then 16 else if kode = 62 <*GE,V*> then 15 else if kode = 63 <*GE,T*> then 15 else -1; <*+4*> if opgave < 0 then fejlreaktion(2<*operationskode*>,kode, <:operatør, radio-kommando :>,0); <*-4*> status:= skærm_status(tilstand,b_v,b_s,b_s_tilst); i:= d.op_ref.data(2):= ia(1); <* ident.*> if 5<=opgave and opgave<=8 then d.opref.data(2):= -1; if opgave=13 then d.opref.data(2):= (if læsbit_i(terminaltab.ref.terminaltilstand,11) then 0 else 1); if opgave = 14 then d.opref.data(2):= 1; if opgave=7 or opgave=8 then d.opref.data(3):= -1 else if opgave=5 or opgave=6 then begin if ia(1) shift (-20) = 15 then begin d.opref.data(3):= 15 shift 20; for j:= 1 step 1 until max_antal_kanaler do begin iaf:= (j-1)*kanalbeskrlængde; if læsbit_i(kanaltab.iaf.kanal_tilstand,11) and læsbit_i(ia(1),kanal_til_omr(j)) then sætbit_i(d.opref.data(3),kanal_til_omr(j),1); end; end else d.opref.data(3):= if ia(1)=0 then 14 shift 20 + 3 else ia(1); end else if kode = 57 then d.opref.data(3):= 2 else if kode = 58 then d.opref.data(3):= 1 else if kode = 62 then d.opref.data(3):= 2 else if kode = 63 then d.opref.data(3):= 1 else d.opref.data(3):= ia(2); res:= if (opgave=1 or opgave=3 or opgave=15 or opgave=16) and status>1 then 16 <*skærm optaget*> else if (opgave=1 or opgave=3) and status=0 then 1 else if (opgave=15 or opgave=16) and status=0 then 21 else if (opgave=1 or opgave=3 or opgave=15 or opgave=16) then (if (d.opref.data(3)=1 or d.opref.data(3)=2) and d.opref.data(3) = kanal_til_omr(bs extract 6) then 52 else 1) else if opgave<11 and status>0 then 16 else if opgave=11 and status<2 then 21 else if opgave=12 and status=0 then 22 else if opgave=13 and status=0 then 49 else if opgave=14 and status<>3 then 21 else 1; if res=1 and (d.opref.data(3)=1 or d.opref.data(3)=2) then begin <* specialbetingelser for TLF og VHF *> if (1<opgave and opgave<9) or opgave=16 then res:= 51; end; if skærmmåde<>0 then begin skærm_måde:= 0; skriv_skærm(nr); end; kode:= opgave; if opgave = 15 then opgave:= 1 else if opgave = 16 then opgave:= 3; \f message procedure operatør side 10 - 810616/hko; <* tilknyt talevej (om nødvendigt) *> if res = 1 and op_talevej(nr)=0 then begin i:= sidste_tv_brugt; repeat i:= (i mod max_antal_taleveje)+1; if tv_operatør(i)=0 then begin tv_operatør(i):= nr; op_talevej(nr):= i; end; until op_talevej(nr)<>0 or i=sidste_tv_brugt; if op_talevej(nr)=0 then res:=61 else begin sidste_tv_brugt:= (sidste_tv_brugt mod max_antal_taleveje)+1; <*V*> waitch(cs_tvswitch_adgang,iaf,op_optype,-1); start_operation(iaf,200+nr,cs_operatør(nr), 'A' shift 12 + 44); d.iaf.data(1):= op_talevej(nr); d.iaf.data(2):= nr+16; ll:= 0; repeat signalch(cs_talevejsswitch,iaf,op_optype); <*V*> waitch(cs_operatør(nr),iaf,op_optype,-1); ll:= ll+1; until ll=3 or d.iaf.resultat=3; res:= if d.iaf.resultat=3 then 1 else 61; <* ********* *> delay(1); start_operation(iaf,200+nr,cs_operatør(nr), 'R' shift 12 + 44); ll:= 0; repeat signalch(cs_talevejsswitch,iaf,op_optype); waitch(cs_operatør(nr),iaf,op_optype,-1); ll:= ll+1; until ll=3 or d.iaf.resultat=3; <* ********* *> signalch(cs_tvswitch_adgang,iaf,op_optype); if res<>1 then op_talevej(nr):=tv_operatør(op_talevej(nr)):= 0; end; end; if op_talevej(nr)=0 then res:= 61; d.op_ref.data(1):= op_talevej(nr); if res <= 1 then begin til_radio: <* send operation til radiomodul *> d.op_ref.opkode:= opgave shift 12 + 41; d.op_ref.data(5):= if b_v<>0 then 12 shift 20 + b_v else 0; d.op_ref.data(6):= b_s; d.op_ref.resultat:=0; d.op_ref.retur:= cs_operatør(nr); indeks:= op_ref; <*+2*> if testbit11 and overvåget then disable begin skriv_operatør(out,0); write(out,<: operation til radio:>); skriv_op(out,op_ref); ud; end; <*-2*> signal_ch(cs_rad,op_ref,gen_optype or op_optype); <*V*> wait_ch(cs_operatør(nr),op_ref,op_optype,-1); <*+2*> if testbit12 and overvåget then disable begin skriv_operatør(out,0); write(out,<: operation retur fra radio:>); skriv_op(out,op_ref); ud; end; <*-2*> <*+4*> if op_ref <> indeks then fejlreaktion(11<*fr.post*>,op_ref, <:operatør, retur fra radio:>,0); <*-4*> \f message procedure operatør side 11 - 810529/hko; res:= d.op_ref.resultat; if res < 2 or (res > 3 and (res<>49 or opgave<>11)) then begin <*+4*> if res < 2 then fejlreaktion(3<*prg.fejl*>,res, <: operatør,radio_op,resultat:>,1); <*-4*> if res = 1 then res:= 0; end else begin <* res = 2 eller 3 *> s_kanal:= v_kanal:= 0; opgave:= d.opref.opkode shift (-12); bv:= d.op_ref.data(5) extract 4; bs:= d.op_ref.data(6); if opgave < 10 then begin j:= d.op_ref.data(7) <*type*>; i:= terminal_tab.ref(1) shift (-12) shift 12 extract 21; i:= i + (if opgave=2 or opgave>3 then 2 else 1); terminal_tab.ref(1):= i +(if res=2 then 4 <*optaget*> else 0) +(if (opgave=1 or opgave=9) and j = 2 <*nødopkald*> then 8 <*nød*> else 0) +(if opgave=1 and j > 0 and j < 3 <*mobilopkald*> then 16 else 0) + (if opgave mod 2 = 0 then 64 <*pas*> else 0) + (if opgave=9 then 128 else if opgave>=7 then 256 else if opgave>=5 then 512 else 0) + (if res = 2 then 2 shift 21 <*tilstand = optaget *> else if b_s = 0 then 0 <*tilstand = ledig *> else 1 shift 21 <*tilstand = samtale*>); end else if opgave=10 <*monitering*> or opgave=14 <*ventepos *> then begin <*+4*> if res = 2 then fejlreaktion(3<*prg.fejl*>,res, <: operatør,moniter,res:>,1); <*-4*> iaf:= (bs extract 4 -1)*kanal_beskr_længde; i:= if bs<0 then kanaltab.iaf.kanal_tilstand extract 12 else 0; terminal_tab.ref(1):= i + (if bs < 0 then (1 shift 21) else 0); if opgave=10 then begin s_kanal:= bs; v_kanal:= d.opref.data(5); end; \f message procedure operatør side 12 - 810603/hko; end else if opgave=11 or opgave=12 then begin <*+4*> if res = 2 then fejlreaktion(3<*prg.fejl*>,res, <: operatør,ge/ne,res:>,1); <*-4*> if opgave=11 <*GE*> and res<>49 then begin s_kanal:= terminal_tab.ref(2); v_kanal:= 12 shift 20 + (terminal_tab.ref(1) shift (-12) extract 4); end; terminal_tab.ref(1):= 0; <* s og v felt nedlagt *> end else if opgave=13 then begin if res=2 then fejlreaktion(3<*prg.fejl*>,res, <:operatør,R,res:>,1); sætbit_i(terminaltab.ref.terminaltilstand,11, d.opref.data(2)); end <*+4*> else fejlreaktion(3,opgave,<:operatør, opgave:>,0) <*-4*> ; <*indsæt kanal_nr for b_v_felt i terminalbeskr.*> sæt_hex_ciffer(terminal_tab.ref,3,b_v extract 4); terminal_tab.ref(2):= b_s; terminal_tab.ref(3):= d.op_ref.data(11); if (opgave<10 or opgave=14) and res=3 then <*så henviser b_s til radiokanal*> begin if bs shift (-20) = 12 then begin iaf:= (bs extract 4 -1)*kanal_beskr_længde; kanaltab.iaf.kanal_tilstand:= kanaltab.iaf.kanal_tilstand shift(-10) shift 10 +terminal_tab.ref(1) extract 10; end else begin for i:= 1 step 1 until max_antal_kanaler do begin if læsbit_i(bs,i) then begin iaf:= (i-1)*kanal_beskr_længde; kanaltab.iaf.kanaltilstand:= kanaltab.iaf.kanaltilstand shift (-10) shift 10 + terminal_tab.ref(1) extract 10; end; end; end; end; if kode=15 or kode=16 then begin if opgave<10 then begin opgave:= 11; kanal:= (12 shift 20) + d.opref.data(6) extract 20; goto til_radio; end else if opgave=11 then begin opgave:= 10; d.opref.data(2):= kanal; goto til_radio; end; end else if (kode=1 or kode=3) then begin if opgave<10 and bv<>0 then begin opgave:= 14; d.opref.data(2):= 2; goto til_radio; end; end; <*V*> skriv_skærm_b_v_s(nr); <*V*> if sætbit_ia(opkaldsflag,nr,0) = 1 then skriv_skærm_opkaldskø(nr); for i:= s_kanal, v_kanal do if i<0 then skriv_skærm_kanal(nr,i extract 4); tofrom(kanalflag,alle_operatører,op_maske_lgd); signalbin(bs_mobilopkald); end; <* res = 2 eller 3 *> end; <* res <= 1 *> <* frigiv talevej (om nødvendigt) *> if læs_hex_ciffer(terminal_tab.ref,3,b_v)=0 and terminal_tab.ref(2)=0 <*b_s*> and op_talevej(nr)<>0 then begin <*V*> waitch(cs_tvswitch_adgang,iaf,op_optype,-1); start_operation(iaf,200+nr,cs_operatør(nr), 'D' shift 12 + 44); d.iaf.data(1):= op_talevej(nr); d.iaf.data(2):= nr+16; ll:= 0; repeat signalch(cs_talevejsswitch,iaf,op_optype); <*V*> waitch(cs_operatør(nr),iaf,op_optype,-1); ll:= ll+1; until ll=3 or d.iaf.resultat=3; ll:= d.iaf.resultat; signalch(cs_tvswitch_adgang,iaf,op_optype); if ll<>3 then fejlreaktion(21,op_talevej(nr)*100+nr, <:frigiv operatør fejlet:>,1) else op_talevej(nr):= tv_operatør(op_talevej(nr)):= 0; skriv_skærm_b_v_s(nr); end; disable if testbit14 then begin systime(1,0,kommslut); write(out,<<zd dd dd.dd >,now,<:op:>,<<d__>,nr,<:":>, string bpl_navn(nr),<:" kmdo: :>,case rkom of ( <:OP:>,<:ME:>,<:OP,G:>,<:ME,G:>,<:OP,A:>,<:ME,A:>, <:KA,C:>,<:KA,P:>,<:OP,L:>,<:MO:>,<:VE:>,<:NE:>, <:OP,V:>,<:OP,T:>,<:R:>,<:GE:>,<:GE,G:>,<:GE,V:>, <:GE,T:>),<: slut; res=:>,<<d>,res,<: btid=:>, <<dd.dd>,kommslut-kommstart); ud; end; <*V*> setposition(z_op(nr),0,0); cursor(z_op(nr),24,1); <*V*> skriv_kvittering(z_op(nr),op_ref,-1,res); end; <* radio-kommando *> begin \f message procedure operatør side 13 - 810518/hko; <* 4 stop kommando *> status:= skærm_status(tilstand,b_v,b_s,b_s_tilst); if tilstand <> 0 then begin d.op_ref.resultat:= 16; <*skærm optaget*> end else begin d.op_ref.retur:= cs_operatør(nr); d.op_ref.resultat:= 0; d.op_ref.data(1):= nr; indeks:= op_ref; <*+2*> if testbit11 and overvåget then disable begin skriv_operatør(out,0); write(out,<: stop_operation til radio:>); skriv_op(out,op_ref); ud; end; <*-2*> if opk_alarm.tab.alarm_tilst > 0 then begin opk_alarm.tab.alarm_kmdo:= 3; signal_bin(bs_opk_alarm); end; signal_ch(cs_rad,op_ref,gen_optype or op_optype); <*V*> wait_ch(cs_operatør(nr),op_ref,op_optype,-1); <*+2*> if testbit12 and overvåget then disable begin skriv_operatør(out,0); write(out,<: operation retur fra radio:>); skriv_op(out,op_ref); ud; end; <*-2*> <*+4*> if indeks <> op_ref then fejlreaktion(11<*fr.post*>,op_ref, <: operatør, retur fra radio:>,0); <*-4*> \f message procedure operatør side 14 - 810527/hko; if d.op_ref.resultat = 3 then begin integer k,n; integer array field msk,iaf1; terminal_tab.ref.terminal_tilstand:= 3 shift 21 +terminal_tab.ref.terminal_tilstand extract 21; tofrom(opkaldsflag,alle_operatører,op_maske_lgd); if sæt_bit_ia(operatørmaske,nr,0)=1 then for k:= nr, 65 step 1 until top_bpl_gruppe do begin msk:= k*op_maske_lgd; if læsbit_ia(bpl_def.msk,nr) then <**> begin n:= 0; for i:= 1 step 1 until max_antal_operatører do if læsbit_ia(bpl_def.msk,i) then begin iaf1:= i*terminal_beskr_længde; if terminal_tab.iaf1.terminal_tilstand shift (-21) < 3 then n:= n+1; end; bpl_tilst(k,1):= n; end; <**> <* bpl_tilst(k,1):= bpl_tilst(k,1)-1; *> end; signal_bin(bs_mobil_opkald); <*V*> setposition(z_op(nr),0,0); ht_symbol(z_op(nr)); end; end; <*V*> setposition(z_op(nr),0,0); cursor(z_op(nr),24,1); if d.op_ref.resultat<> 3 then skriv_kvittering(z_op(nr),op_ref,-1,d.op_ref.resultat); end; begin boolean l22; \f message procedure operatør side 15 - 810521/cl; <* 5 springdefinition *> l22:= false; if sep=',' then disable begin setposition(z_op(nr),0,0); cursor(z_op(nr),22,1); write(z_op(nr),"esc" add 128,1,<:ÆK:>,">",1); l22:= true; pos:= 1; while læstegn(d.op_ref.data,pos,i)<>0 do outchar(z_op(nr),i); end; tofrom(d.op_ref.data,ia,indeks*2); <*V*> wait_ch(cs_op_fil(nr),vt_op,true,-1<*timeout*>); start_operation(vt_op,200+nr,cs_operatør(nr), 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,op_optype); pos:=vt_op;<*variabel lånes*> <*V*> wait_ch(cs_operatør(nr),vt_op,op_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), <:op 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, <:op kommando(spring-def):>,0); fil(j).iaf(1):=d.op_ref.data(i+2); end; \f message procedure operatør side 15a - 820301/cl; while sep = ',' do begin setposition(z_op(nr),0,0); cursor(z_op(nr),23,1); write(z_op(nr),"esc" add 128,1,<:ÆK:>,<:+>:>); setposition(z_op(nr),0,0); wait(bs_fortsæt_adgang); pos:= 1; j:= 0; while læs_store(z_op(nr),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_op(nr),0,0); cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),opref,-1,53);<*annulleret*> cursor(z_op(nr),1,1); goto sp_ann; end; \f message procedure operatør side 16 - 810521/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, <:op 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 operatør side 17 - 810521/cl; if d.op_ref.resultat > 3 then begin setposition(z_op(nr),0,0); if l22 then begin cursor(z_op(nr),22,1); l22:= false; write(z_op(nr),"-",80); end; cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),op_ref,pos,d.opref.resultat); goto sp_ann; end; if sep=',' then begin setposition(z_op(nr),0,0); cursor(z_op(nr),22,1); write(z_op(nr),"esc" add 128,1,<:ÆK:>,<:+>:>); pos:= 1; l22:= true; while læstegn(fortsæt,pos,i)<>0 do outchar(z_op(nr),i); 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,<:op kommando(spring-def):>,0); d.op_ref.data(3):= d.vt_op.data(4); <*filref*> signalch(cs_op_fil(nr),vt_op,op_optype or gen_optype); d.op_ref.retur:=cs_operatør(nr); pos:=op_ref; signal_ch(cs_vt,op_ref,gen_optype or op_optype); <*V*> wait_ch(cs_operatør(nr),op_ref,op_optype,-1<*timeout*>); <*+4*> if pos<>op_ref then fejlreaktion(11<*fremmed post*>,op_ref, <:op kommando(springdef retur fra vt):>,0); <*-4*> \f message procedure operatør side 18 - 810521/cl; <*V*> setposition(z_op(nr),0,0); if l22 then begin cursor(z_op(nr),22,1); write(z_op(nr),"-",80); end; cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),op_ref,-1,d.op_ref.resultat); if false then begin sp_ann: signalch(cs_slet_fil,vt_op,op_optype); waitch(cs_operatør(nr),vt_op,op_optype,-1); signalch(cs_op_fil(nr),vt_op,op_optype or vt_optype); signalbin(bs_fortsæt_adgang); end; end; begin \f message procedure operatør side 19 - 810522/cl; <* 6 spring (igangsæt) spring,annuler spring,reserve *> tofrom(d.op_ref.data,ia,6); d.op_ref.retur:=cs_operatør(nr); indeks:=op_ref; signal_ch(cs_vt,op_ref,gen_optype or op_optype); <*V*> wait_ch(cs_operatør(nr), op_ref, op_optype, -1<*timeout*>); <*+2*> if testbit10 and overvåget then disable begin skriv_operatør(out,0); write(out,"nl",1,<:op operation retur fra vt:>); skriv_op(out,op_ref); end; <*-2*> <*+4*> if indeks<>op_ref then fejlreaktion(11<*fremmed post*>,op_ref, <:op kommando(spring):>,0); <*-4*> <*V*> setposition(z_op(nr),0,0); cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),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 operatør side 20 - 810525/cl; <* 7 spring(-oversigts-)rapport *> d.op_ref.retur:=cs_operatør(nr); tofrom(d.op_ref.data,ia,4); indeks:=op_ref; signal_ch(cs_vt,op_ref,gen_optype or op_optype); <*V*> wait_ch(cs_operatør(nr),op_ref,op_optype,-1<*timeout*>); <*+2*> disable if testbit10 and overvåget then begin write(out,"nl",1,<:operatør operation retur fra vt:>); skriv_op(out,op_ref); end; <*-2*> <*+4*> if op_ref<>indeks then fejlreaktion(11<*fremmed post*>,op_ref, <:op kommando(spring-rapport):>,0); <*-4*> <*V*> setposition(z_op(nr),0,0); if d.op_ref.resultat<>3 then begin cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),op_ref,-1,d.op_ref.resultat); end else begin boolean p_skrevet; integer bogst,løb; skærmmåde:= 1; 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_op(nr),"esc" add 128,1,<:ÆH:>, "esc" add 128,1,<:ÆJ:>,"sp",10,"*",5,"sp",5, <: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_op(nr),<:, startet :>,<<zddddd>, round systime(4,d.op_ref.raf(1),r),<:.:>,round r) else write(z_op(nr),<:, ikke startet:>); write(z_op(nr),"sp",5,"*",5,"nl",2); \f message procedure operatør side 21 - 810522/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, <:op kommando(spring,vis):>,0); iaf:=0; i:= fil(j).iaf(1); if i < 0 and -, p_skrevet then begin outchar(z_op(nr),'('); p_skrevet:= true; end; if i > 0 and p_skrevet then begin outchar(z_op(nr),')'); p_skrevet:= false; end; if pos mod 2 = 0 then write(z_op(nr),<< dd>,abs i,<:.:>) else write(z_op(nr),true,3,<<d>,abs i); if pos mod 21 = 0 then outchar(z_op(nr),'nl'); end; write(z_op(nr),"*",1); \f message procedure operatør side 22 - 810522/cl; end else if kode=33 then <* spring,oversigt *> begin write(z_op(nr),"esc" add 128,1,<:ÆH:>, "esc" add 128,1,<:ÆJ:>,"sp",10,"*",5,"sp",5, <:spring oversigt:>,"sp",5,"*",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, <:op 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_op(nr),"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_op(nr),<:startet :>,<<zddddd>, round systime(4,fil(j,2),r),<:.:>,round r); outchar(z_op(nr),'nl'); end; write(z_op(nr),"*",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 op_optype); waitch(cs_operatør(nr),op_ref,op_optype or gen_optype,-1); end; <* resultat=3 *> end; begin \f message procedure operatør side 23 - 940522/cl; <* 8 SLUT *> trapmode:= 1 shift 13; trap(-2); end; begin <* 9 stopniveauer,definer *> integer fno; for i:= 1 step 1 until 3 do operatør_stop(nr,i):= ia(i+1); i:= modif_fil(tf_stoptabel,nr,fno); if i<>0 then fejlreaktion(7,i,<:stoptabel:>,0); iaf:=0; for i:= 0,1,2,3 do fil(fno).iaf(i+1):= operatør_stop(nr,i); setposition(fil(fno),0,0); setposition(z_op(nr),0,0); cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),0,-1,3); end; begin \f message procedure operatør side 24 - 940522/cl; <* 10 stopniveauer,vis *> integer bpl,j,k; skærm_måde:= 1; setposition(z_op(nr),0,0); write(z_op(nr),"esc" add 128,1,<:ÆH:>,"esc" add 128,1,<:ÆJ:>, <:stopniveauer: :>); for i:= 0 step 1 until 3 do begin bpl:= operatør_stop(nr,i); write(z_op(nr),if i=0 then <: :> else <: -> :>, if bpl=0 then <:ALLE:> else string bpl_navn(bpl)); end; write(z_op(nr),"nl",2,<:operatørpladser: :>); j:=0; for bpl:= 1 step 1 until max_antal_operatører do if bpl_navn(bpl)<>long<::> then begin if j mod 8 = 0 and j > 0 then write(z_op(nr),"nl",1,"sp",18); iaf:= bpl*terminal_beskr_længde; write(z_op(nr),if bpl_tilst(bpl,1) > 0 then "*" else " ",1, true,6,string bpl_navn(bpl)); j:=j+1; end; write(z_op(nr),"nl",2,<:operatørgrupper: :>); j:=0; for bpl:= 65 step 1 until top_bpl_gruppe do if bpl_navn(bpl)<>long<::> then begin if j mod 8 = 0 and j > 0 then write(z_op(nr),"nl",1,"sp",19); write(z_op(nr),true,7,string bpl_navn(bpl)); j:=j+1; end; write(z_op(nr),"nl",1,"*",1); end; begin <* 11 alarmlængde *> integer fno; if indeks > 0 then begin opk_alarm.tab.alarm_lgd:= ia(1); i:= modiffil(tf_alarmlgd,nr,fno); if i<>0 then fejlreaktion(7,i,<:alarmlgd:>,0); iaf:= 0; fil(fno).iaf(1):= opk_alarm.tab.alarm_lgd; setposition(fil(fno),0,0); end; setposition(z_op(nr),0,0); cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),opk_alarm.tab.alarm_lgd,-1,63); end; begin d.op_ref.resultat:= 45; <*ikke implementeret*> setposition(z_op(nr),0,0); cursor(z_op(nr),24,1); skriv_kvittering(z_op(nr),op_ref,-1,d.op_ref.resultat); end; \f message procedure operatør side x - 810522/hko; <*+4*> fejl_reaktion(3<*programfejl*>,j,<:case 'opkode':>,2) <*-4*> end;<*case j *> end <* j > 0 *> else begin <*V*> setposition(z_op(nr),0,0); if sluttegn<>'nl' then outchar(z_op(nr),'nl'); skriv_kvittering(z_op(nr),op_ref,-1, 45 <*ikke implementeret *>); end; end;<* godkendt *> <*V*> setposition(z_op(nr),0,0); <*???*> while (læsbit_ia(samtaleflag,nr) or læsbit_ia(opkaldsflag,nr) or læsbit_ia(kanalflag,nr) ) and læsbit_ia(operatørmaske,nr) and skærmmåde = 0 do begin if sætbit_ia(samtaleflag,nr,0)=1 then begin skriv_skærm_bvs(nr); <*940920 if op_talevej(nr)=0 then status:= 0 else inspect(bs_talevej_udkoblet(op_talevej(nr)),status); if status>0 then begin for ll:= 1 step 1 until terminalbeskrlængde//2 do terminaltab.ref(ll):= 0; skriv_skærm_bvs(nr); wait(bs_talevej_udkoblet(op_talevej(nr))); end; for i:= 1 step 1 until max_antal_kanaler do begin iaf:= (i-1)*kanalbeskrlængde; inspect(ss_samtale_nedlagt(i),status); if status>0 and tv_operatør(kanaltab.iaf.kanal_tilstand shift (-16))=nr then begin kanaltab.iaf.kanal_tilstand:= kanaltab.iaf(1) shift (-10) extract 6 shift 10; for ll:= 2 step 1 until kanalbeskrlængde//2 do kanaltab.iaf(ll):= 0; skriv_skærm_kanal(nr,i); repeat wait(ss_samtale_nedlagt(i)); inspect(ss_samtale_nedlagt(i),status); until status=0; end; end; 940920*> cursor(z_op(nr),1,1); setposition(z_op(nr),0,0); end; if (læsbit_ia(opkaldsflag,nr) or læsbit_ia(kanalflag,nr)) and skærmmåde = 0 and læsbit_ia(operatørmaske,nr) then begin if sætbit_ia(opkaldsflag,nr,0) = 1 then skriv_skærm_opkaldskø(nr); if sætbit_ia(kanalflag,nr,0) = 1 then begin for i:= 1 step 1 until max_antal_kanaler do skriv_skærm_kanal(nr,i); end; cursor(z_op(nr),1,1); <*V*> setposition(z_op(nr),0,0); end; end; d.op_ref.retur:=cs_att_pulje; disable afslut_kommando(op_ref); end; <* indlæs kommando *> begin \f message procedure operatør side x+1 - 810617/hko; <* 2: inkluder *> integer k,n; integer array field msk,iaf1; i:=monitor(4) process address:(z_op(nr),0,ia); if i=0 then begin fejlreaktion(3<*programfejl*>,nr, <:operatør(nr) eksisterer ikke:>,1); d.op_ref.resultat:=28; end else begin i:=monitor(8) reserve process:(z_op(nr),0,ia); d.op_ref.resultat:=if i<>0 then 16 <*skærm optaget*> else if d.op_ref.opkode = 0 then 0 else 3;<*udført*> if i > 0 then fejlreaktion(4<*monitor res*>,nr*100 +i, <:operatørskærm reservation:>,1) else begin i:=terminal_tab.ref.terminal_tilstand; <*940418/cl inkluderet sættes i stop - start *> kode:= d.opref.opkode extract 12; if kode <> 0 then terminal_tab.ref.terminal_tilstand:= (d.opref.opkode shift (-12) shift 21) + (i extract 21) else <*940418/cl inkluderet sættes i stop - slut *> terminal_tab.ref.terminal_tilstand:= i extract (if i shift(-21) extract 2 = 3 then 21 else 23); for i:= 1 step 1 until max_antal_kanaler do begin iaf:= (i-1)*kanalbeskrlængde; sætbit_ia(kanaltab.iaf.kanal_alarm,nr,0); end; skærm_måde:= 0; sætbit_ia(operatørmaske,nr, (if terminal_tab.ref.terminal_tilstand shift (-21) = 3 then 0 else 1)); for k:= nr, 65 step 1 until top_bpl_gruppe do begin msk:= k*op_maske_lgd; if læsbit_ia(bpl_def.msk,nr) then <**> begin n:= 0; for i:= 1 step 1 until max_antal_operatører do if læsbit_ia(bpl_def.msk,i) then begin iaf1:= i*terminal_beskr_længde; if terminal_tab.iaf1.terminal_tilstand shift (-21) < 3 then n:= n+1; end; bpl_tilst(k,1):= n; end; <**> <* bpl_tilst(k,1):= bpl_tilst(k,1) + (if læsbit_ia(operatørmaske,nr) then 1 else 0); *> end; tofrom(opkaldsflag,alle_operatører,op_maske_lgd); sætbit_ia(opkaldsflag,nr,0); signal_bin(bs_mobil_opkald); <*940418/cl inkluderet sættes i stop - start *> if terminal_tab.ref.terminal_tilstand shift (-21) = 3 then <*V*> ht_symbol(z_op(nr)) else <*940418/cl inkluderet sættes i stop - slut *> <*V*> skriv_skærm(nr); cursor(z_op(nr),24,1); <*V*> setposition(z_op(nr),0,0); end; end; if d.op_ref.opkode = 0 then signal_ch(cs_operatør(nr),op_ref,d.op_ref.optype) else signal_ch(d.op_ref.retur,op_ref,d.op_ref.optype); end; begin \f message procedure operatør side x+2 - 820304/hko; <* 3: ekskluder *> integer k,n; integer array field iaf1,msk; write(z_op(nr),"esc" add 128,1,<:ÆH:>,"esc" add 128,1,<:ÆJ:>); <*V*> setposition(z_op(nr),0,0); monitor(10) release process:(z_op(nr),0,ia); d.op_ref.resultat:=3; signal_ch(d.op_ref.retur,op_ref,d.op_ref.optype); terminal_tab.ref.terminal_tilstand:= 7 shift 21 + terminal_tab.ref.terminal_tilstand extract 21; if sæt_bit_ia(operatørmaske,nr,0)=1 then for k:= nr, 65 step 1 until top_bpl_gruppe do begin msk:= k*op_maske_lgd; if læsbit_ia(bpl_def.msk,nr) then <**> begin n:= 0; for i:= 1 step 1 until max_antal_operatører do if læsbit_ia(bpl_def.msk,i) then begin iaf1:= i*terminal_beskr_længde; if terminal_tab.iaf1.terminal_tilstand shift (-21) < 3 then n:= n+1; end; bpl_tilst(k,1):= n; end; <**> <* bpl_tilst(k,1):= bpl_tilst(k,1)-1; *> end; signal_bin(bs_mobil_opkald); if opk_alarm.tab.alarm_tilst > 0 then begin opk_alarm.tab.alarm_kmdo:= 3; signal_bin(bs_opk_alarm); end; end; begin <* 4: opdater skærm *> signal_ch(cs_op_retur,op_ref,d.op_ref.optype); while (læsbit_ia(samtaleflag,nr) or læsbit_ia(opkaldsflag,nr) or læsbit_ia(kanalflag,nr) ) and læsbit_ia(operatørmaske,nr) and skærmmåde=0 do begin <*+2*> if testbit13 and overvåget then disable begin write(out,"nl",1,<:opdater skærm(:>,<<d>,nr, <:) opkaldsflag::>,"nl",1); outintbits_ia(out,opkaldsflag,1,op_maske_lgd//2); write(out,<: operatørmaske::>,"nl",1); outintbits_ia(out,operatørmaske,1,op_maske_lgd//2); write(out,<: skærmmåde=:>,skærmmåde,"nl",0); ud; end; <*-2*> if sætbit_ia(samtaleflag,nr,0)=1 and op_talevej(nr)<>0 then begin skriv_skærm_bvs(nr); <*940920 inspect(bs_talevej_udkoblet(op_talevej(nr)),status); if status>0 then begin for ll:= 1 step 1 until terminalbeskrlængde//2 do terminaltab.ref(ll):= 0; skriv_skærm_bvs(nr); wait(bs_talevej_udkoblet(op_talevej(nr))); end; for i:= 1 step 1 until max_antal_kanaler do begin iaf:= (i-1)*kanalbeskrlængde; inspect(ss_samtale_nedlagt(i),status); if status>0 and tv_operatør(kanaltab.iaf.kanal_tilstand shift (-16))=nr then begin kanaltab.iaf.kanal_tilstand:= kanaltab.iaf.kanal_tilstand shift (-10) extract 6 shift 10; for ll:= 2 step 1 until kanalbeskrlængde//2 do kanaltab.iaf(ll):= 0; skriv_skærm_kanal(nr,i); repeat wait(ss_samtale_nedlagt(i)); inspect(ss_samtale_nedlagt(i),status); until status=0; end; end; 940920*> cursor(z_op(nr),1,1); setposition(z_op(nr),0,0); end; if (læsbit_ia(opkaldsflag,nr) or læsbit_ia(kanalflag,nr)) and læsbit_ia(operatørmaske,nr) and skærmmåde = 0 then begin <*V*> setposition(z_op(nr),0,0); if sætbit_ia(opkaldsflag,nr,0) =1 then skriv_skærm_opkaldskø(nr); if sætbit_ia(kanalflag,nr,0) =1 then begin for i:=1 step 1 until max_antal_kanaler do skriv_skærm_kanal(nr,i); end; cursor(z_op(nr),1,1); <*V*> setposition(z_op(nr),0,0); end; end; end; begin \f message procedure operatør side x+3 - 830310/hko; <* 5: samtale etableret *> res:= d.op_ref.resultat; b_v:= d.op_ref.data(3) extract 4; b_s:= d.op_ref.data(4); signal_ch(d.op_ref.retur,op_ref,d.op_ref.optype); if res = 3 and terminal_tab.ref(1) shift(-21) = 2 then begin sætbit_i(terminal_tab.ref(1),21,1); sætbit_i(terminal_tab.ref(1),22,0); sætbit_i(terminal_tab.ref(1),2,0); sæt_hex_ciffer(terminal_tab.ref,3,b_v); terminal_tab.ref(2):= b_s; sæt_bit_i(terminal_tab.ref(1),2<* opt. *>,0); iaf:= (b_s extract 4 - 1)*kanal_beskr_længde; kanaltab.iaf.kanal_tilstand:= kanaltab.iaf.kanal_tilstand shift (-10) shift 10 + terminal_tab.ref(1) extract 10; if læsbit_ia(operatørmaske,nr) and skærmmåde = 0 then begin <*V*> setposition(z_op(nr),0,0); skriv_skærm_b_v_s(nr); <*V*> setposition(z_op(nr),0,0); end; end else if terminal_tab.ref(1) shift(-21) = 2 then begin sætbit_i(terminal_tab.ref(1),22,0); sætbit_i(terminal_tab.ref(1),2,0); sæt_hex_ciffer(terminal_tab.ref,3,b_v); terminal_tab.ref(2):= 0; if læsbit_ia(operatørmaske,nr) and skærmmåde = 0 then begin <*V*> setposition(z_op(nr),0,0); cursor(z_op(nr),21,17); write(z_op(nr),<:EJ FORB:>); <*V*> setposition(z_op(nr),0,0); end; end else fejlreaktion(3<*prg.fejl*>,terminal_tab.ref(1) shift(-21), <:terminal tilstand:>,1); end; begin \f message procedure operatør side x+4 - 810602/hko; <* 6: radiokanal ekskluderet *> læs_hex_ciffer(terminal_tab.ref,3,b_v); pos:= d.op_ref.data(1); signalch(d.op_ref.retur,op_ref,d.op_ref.optype); indeks:= terminal_tab.ref(2); b_s:= if indeks shift (-22) = 3 and indeks extract 22 = pos then indeks extract 4 else 0; if b_v = pos then sæt_hex_ciffer(terminal_tab.ref,3,0); if b_s = pos then begin terminal_tab.ref(2):= 0; sætbit_i(terminal_tab.ref(1),21,0); sætbit_i(terminal_tab.ref(1),22,0); sætbit_i(terminal_tab.ref(1),2,0); end; if skærmmåde=0 then begin if b_v = pos or b_s = pos then <*V*> skriv_skærm_b_v_s(nr); <*V*> skriv_skærm_kanal(nr,pos); cursor(z_op(nr),1,1); setposition(z_op(nr),0,0); end; end; begin <*+4*> fejl_reaktion(3<*programfejl *>,aktion,<:case aktion:>,2); <*-4*> end end; <* case aktion+6 *> until false; op_trap: skriv_operatør(zbillede,1); end operatør; \f message procedure alarmur side 1; procedure alarmur; begin integer ventetid, nr; integer array field opref, tab; real nu; procedure skriv_alarmur(zud,omfang); value omfang; zone zud; integer omfang; begin write(zud,"nl",1,<:+++ alarmur:>); if omfang > 0 then disable begin real t; trap(slut); write(zud,"nl",1, <: ventetid: :>,ventetid,"nl",1, <: nr: :>,nr,"nl",1, <: opref: :>,opref,"nl",1, <: tab: :>,tab,"nl",1, <: nu: :>,<< zddddd>,systime(4,nu,t),t,"nl",1, <::>); skriv_coru(zud,coru_no(295)); slut: end; end skriv_alarmur; trap(alarmur_trap); stackclaim(400); systime(1,0.0,nu); ventetid:= -1; repeat waitch(cs_opk_alarm_ur,opref,op_optype,ventetid); if opref > 0 then signalch(d.opref.retur,opref,op_optype); ventetid:= -1; systime(1,0.0,nu); for nr:= 1 step 1 until max_antal_operatører do begin tab:= (nr-1)*opk_alarm_tab_lgd; if opk_alarm.tab.alarm_tilst > 0 and opk_alarm.tab.alarm_lgd >= 0 then begin if (nu - opk_alarm.tab.alarm_start) >= opk_alarm.tab.alarm_lgd then begin opk_alarm.tab.alarm_kmdo:= 3; signalbin(bs_opk_alarm); if ventetid > 2 or ventetid=(-1) then ventetid:= 2; end else if (nu - opk_alarm.tab.alarm_start) < ventetid or ventetid = (-1) then ventetid:= (nu - opk_alarm.tab.alarm_start); end; end; if ventetid=0 then ventetid:= 1; until false; alarmur_trap: disable skriv_alarmur(zbillede,1); end alarmur; \f message procedure opkaldsalarmer side 1; procedure opkaldsalarmer; begin integer nr, ny_kommando, tilst, aktion, tt; integer array field tab, opref, alarmop; procedure skriv_opkaldsalarmer(zud,omfang); value omfang; zone zud; integer omfang; begin write(zud,"nl",1,<:+++ opkaldsalarmer:>); if omfang>0 then disable begin real array field raf; trap(slut); raf:=0; write(zud,"nl",1, <: nr: :>,nr,"nl",1, <: ny-kommando: :>,ny_kommando,"nl",1, <: tilst: :>,tilst,"nl",1, <: aktion: :>,aktion,"nl",1, <: tt: :>,false add tt,1,"nl",1, <: tab: :>,tab,"nl",1, <: opref: :>,opref,"nl",1, <: alarmop: :>,alarmop,"nl",1, <::>); skriv_coru(zud,coru_no(296)); slut: end; end skriv_opkaldsalarmer; trap(opk_alarm_trap); stackclaim(400); <*+2*>if (testbit8 and overvåget) or testbit28 then skriv_opkaldsalarmer(out,0); <*-2*> repeat wait(bs_opk_alarm); alarmop:= 0; for nr:= 1 step 1 until max_antal_operatører do begin tab:= (nr-1)*opk_alarm_tab_lgd; ny_kommando:= opk_alarm.tab.alarm_kmdo; tilst:= opk_alarm.tab.alarm_tilst; aktion:= case ny_kommando+1 of ( <*ingenting*> case tilst+1 of (4,4,4), <*normal *> case tilst+1 of (1,4,4), <*nød *> case tilst+1 of (2,2,4), <*sluk *> case tilst+1 of (4,3,3)); tt:= case aktion of ('B','C','F','-'); if tt<>'-' then begin <*V*> waitch(cs_tvswitch_adgang,opref,op_optype,-1); startoperation(opref,296,cs_opk_alarm,tt shift 12 + 44); d.opref.data(1):= nr+16; signalch(cs_talevejsswitch,opref,op_optype); <*V*> waitch(cs_opk_alarm,opref,op_optype,-1); if d.opref.resultat = 3 then begin opk_alarm.tab.alarm_kmdo:= 0; opk_alarm.tab.alarm_gtilst:= opk_alarm.tab.alarm_tilst; opk_alarm.tab.alarm_tilst:= case aktion of (1,2,0); if aktion < 3 then begin systime(1,0.0,opk_alarm.tab.alarm_start); if alarmop = 0 then waitch(cs_opk_alarm_ur_ret,alarmop,op_optype,-1); end; end; signalch(cs_tvswitch_adgang,opref,op_optype or gen_optype); end; end; if alarmop<>0 then begin startoperation(alarmop,296,cs_opk_alarm_ur_ret,0); signalch(cs_opk_alarm_ur,alarmop,op_optype); end; until false; opk_alarm_trap: disable skriv_opkaldsalarmer(zbillede,1); end; \f message procedure tvswitch_input side 1 - 940810/cl; procedure tv_switch_input; begin integer array field opref; integer tt,ant; boolean ok; integer array ia(1:128); procedure skriv_tvswitch_input(zud,omfang); value omfang; zone zud; integer omfang; begin write(zud,"nl",1,<:+++ tvswitch-input:>); if omfang>0 then disable begin real array field raf; trap(slut); raf:=0; write(zud,"nl",1, <: opref: :>,opref,"nl",1, <: ok: :>,(if ok then <:TRUE:> else <:FALSE:>),"nl",1, <: ant: :>,ant,"nl",1, <: tt: :>,tt,"nl",1, <::>); write(zud,"nl",1,<:ia: :>); skrivhele(zud,ia.raf,256,2); skriv_coru(zud,coru_no(297)); slut: end; end skriv_tvswitch_input; real procedure now; begin real f,r,r1; long l; systime(1,0,r); l:= r*100; f:= (l mod 100)/100; systime(4,r,r1); now:= r1+f; end; \f boolean procedure læs_tlgr; begin integer kl,ch,i,pos,p; long field lf; boolean ok; integer procedure readch(z,c); zone z; integer c; begin readch:= readchar(z,c); <*+2*> if testbit15 and overvåget then disable begin if ' ' <= c and c <= 'ü' then outchar(out,c) else write(out,"<",1,<<d>,c,">",1); if c='em' then write(out,<: *timeout*:>); end; <*-2*> end; ok:= false; tt:=' '; repeat readchar(z_tv_in,ch); until ch<>'em'; repeatchar(z_tv_in); <*+2*>if testbit15 and overvåget then disable write(out,<<zd dd dd.dd >,now,<:switch-ind: :>); <*-2*> for kl:=readch(z_tv_in,ch) while ch<>'%' and ch<>'nl' and ch<>'em' do ; if ch='%' then begin ant:= 0; pos:= 1; lf:= 4; ok:= true; for i:= 1 step 1 until 128 do ia(i):= 0; for kl:=readch(z_tv_in,ch) while kl = 6 do skrivtegn(ia,pos,ch); p:=pos; repeat afsluttext(ia,p) until p mod 6 = 1; if ia.lf=long<:ACK:> and ch='nl' then tt:= '+' else if ia.lf=long<:NACK:> and ch='nl' then tt:= '-' else if pos=2 and ch=' ' then tt:= ia(1) shift (-16) else ok:= false; if ok and ch=' ' then for kl:=readch(z_tv_in,ch) while ch=' ' do ; while kl = 2 do begin i:= ch - '0'; for kl:=readch(z_tv_in,ch) while kl = 2 do i:= i*10 + ch-'0'; if ant < 128 then begin ant:= ant+1; ia(ant):= i; end else ok:= false; while ch=' ' do kl:=readch(z_tv_in,ch); end; if ch<>'nl' then ok:= false; while ch<>'nl' and ch<>'em' do kl:=readch(z_tv_in,ch); <* !! setposition(z_tv_in,0,0); !! *> <*+2*> if testbit15 and overvåget then disable ud; <*-2*> if tt='+' or tt='-' or tt='Q' or tt='E' then ok:= ok else if tt='C' or tt='N' or tt='P' or tt='U' or tt='S' or tt='Z' then ok:= ok and ant=1 else if tt='X' or tt='Y' then ok:= ok and ant=2 else if tt='T' or tt='W' then ok:= ok and ant=64 else if tt='R' then ok:= ok and ant extract 1 = 0 else begin ok:= false; fejlreaktion(21,tt,<:Ukendt telegramtype:>,2 shift 12 + 1); end; end; <* if ch='%' *> læs_tlgr:= ok; end læs_tlgr; \f trap(tvswitch_input_trap); stackclaim(400); for ant:= 1 step 1 until 128 do ia(ant):= 0; <*+2*>if (testbit8 and overvåget) or testbit28 then skriv_tvswitch_input(out,0); <*-2*> repeat ok:= læs_tlgr; if ok then begin <*V*> waitch(cs_tvswitch_input,opref,op_optype,-1); start_operation(opref,297,cs_tvswitch_input,0); d.opref.resultat:= tt shift 12 + ant; tofrom(d.opref.data,ia,ant*2); signalch(cs_talevejsswitch,opref,op_optype); end; until false; tvswitch_input_trap: disable skriv_tvswitch_input(zbillede,1); end tvswitch_input; \f message procedure tv_switch_adm side 1 - 940502/cl; procedure tv_switch_adm; begin integer array field opref; integer rc; procedure skriv_tv_switch_adm(zud,omfang); value omfang; zone zud; integer omfang; begin write(zud,"nl",1,<:+++ tv-switch-adm:>); if omfang>0 then disable begin trap(slut); write(zud,"nl",1, <: opref: :>,opref,"nl",1, <: rc: :>,rc,"nl",1, <::>); skriv_coru(zud,coru_no(298)); slut: end; end skriv_tv_switch_adm; trap(tv_switch_adm_trap); stackclaim(400); <*+2*> if (testbit8 and overvåget) or testbit28 then disable skriv_tv_switch_adm(out,0); <*-2*> <* !!!!!!! PASSIVER KORUTINEN - cs_tvswitch_adm SIGNALERES ALDRIG !!!!!!! waitch(cs_tvswitch_adm,opref,op_optype,-1); *> repeat waitch(cs_tvswitch_adgang,opref,op_optype,-1); start_operation(opref,298,cs_tvswitch_adm,'R' shift 12 + 44); rc:= 0; repeat signalch(cs_talevejsswitch,opref,op_optype); <*V*> waitch(cs_tvswitch_adm,opref,op_optype,-1); rc:= rc+1; until rc=3 or d.opref.resultat=3; signalch(cs_tvswitch_adgang,opref,op_optype); <*V*> delay(15*60); until false; tv_switch_adm_trap: disable skriv_tv_switch_adm(zbillede,1); end; \f message procedure talevejsswitch side 1 -940426/cl; procedure talevejsswitch; begin integer tt, ant, ventetid; integer array field opref, gemt_op, tab; boolean ok; integer array ia(1:128); procedure skriv_talevejsswitch(zud,omfang); value omfang; zone zud; integer omfang; begin write(zud,"nl",1,<:+++ talevejsswitch:>); if omfang>0 then disable begin real array field raf; trap(slut); raf:= 0; write(zud,"nl",1, <: tt: :>,tt,"nl",1, <: ant: :>,ant,"nl",1, <: ventetid: :>,ventetid,"nl",1, <: opref: :>,opref,"nl",1, <: gemt-op: :>,gemt_op,"nl",1, <: tab: :>,tab,"nl",1, <: ok: :>,(if ok then <:TRUE:> else <:FALSE:>),"nl",1, <::>); write(zud,"nl",1,<:ia: :>); skriv_hele(zud,ia.raf,256,2); skriv_coru(zud,coru_no(299)); slut: end; end skriv_talevejsswitch; real procedure now; begin real f,r,r1; long l; systime(1,0,r); l:= r*100; f:= (l mod 100)/100; systime(4,r,r1); now:= r1+f; end; \f trap(tvswitch_trap); stackclaim(400); for ant:= 1 step 1 until 128 do ia(ant):= 0; <*+2*>if (testbit8 and overvåget) or testbit28 then skriv_talevejsswitch(out,0); <*-2*> ventetid:= -1; ant:= 0; tt:= ' '; repeat waitch(cs_talevejsswitch,opref,gen_optype or op_optype,ventetid); if opref > 0 then begin if d.opref.opkode extract 12 = 0 then begin <*input fra talevejsswitchen *> for ant:= 1 step 1 until 128 do ia(ant):= 0; tt:= d.opref.resultat shift (-12) extract 12; ant:= d.opref.resultat extract 12; tofrom(ia,d.opref.data,ant*2); signalch(d.opref.retur,opref,d.opref.optype); if tt<>'+' and tt<>'-' then begin write(z_tv_out,"%",1,<:ACK:>,"cr",1); setposition(z_tv_out,0,0); <*+2*> if testbit15 and overvåget then disable begin write(out,<<zd dd dd.dd >,now,<:switch-ud: :>,<:%ACK:>); ud; end; <*-2*> end; if (tt='+' or tt='-') and gemt_op<>0 then begin d.gemt_op.resultat:= (if tt='+' then 3 else 0); signalch(d.gemt_op.retur,gemt_op,d.gemt_op.optype); gemt_op:= 0; ventetid:= -1; end else if tt='R' then begin for i:= 1 step 2 until ant do begin if ia(i) <= max_antal_taleveje and 17 <= ia(i+1) and ia(i+1) <= max_antal_operatører+16 then begin if op_talevej(ia(i+1)-16)<>ia(i) then tv_operatør(op_talevej(ia(i+1)-16)):= 0; if tv_operatør(ia(i))<>ia(i+1)-16 then op_talevej(tv_operatør(ia(i))):= 0; tv_operatør(ia(i)):= ia(i+1)-16; op_talevej(ia(i+1)-16):= ia(i); sætbit_ia(samtaleflag,ia(i+1)-16,1); end else if ia(i+1) <= max_antal_taleveje and 17 <= ia(i) and ia(i) <= max_antal_operatører+16 then begin if op_talevej(ia(i))<>ia(i+1)-16 then tv_operatør(op_talevej(ia(i))):= 0; if tv_operatør(ia(i+1)-16)<>ia(i) then op_talevej(tv_operatør(ia(i+1)-16)):= 0; tv_operatør(ia(i+1)):= ia(i)-16; op_talevej(ia(i)-16):= ia(i+1); sætbit_ia(samtaleflag,ia(i)-16,1); end; end; signal_bin(bs_mobil_opkald); <*+2*> if testbit15 and testbit16 and overvåget then disable begin skriv_talevejs_tab(out); ud; end; <*-2*> end <* tt='R' and ant>0 *> else if tt='Y' then begin if ia(1) <= max_antal_taleveje and 17 <= ia(2) and ia(2) <= max_antal_operatører+16 then begin if tv_operatør(ia(1))=ia(2)-16 and op_talevej(ia(2)-16)=ia(1) then tv_operatør(ia(1)):= op_talevej(ia(2)-16):= 0; end else if ia(2) <= max_antal_taleveje and 17 <= ia(1) and ia(1) <= max_antal_operatører+16 then begin if tv_operatør(ia(2))=ia(1)-16 and op_talevej(ia(1)-16)=ia(2) then tv_operatør(ia(2)):= op_talevej(ia(1)-16):= 0; end; end else if tt='C' or tt='N' or tt='P' or tt='U' then begin waitch(cs_op_iomedd,opref,gen_optype,-1); startoperation(opref,299,cs_op_iomedd,23); ant:= 1; hægtstring(d.opref.data,ant,<:switch - port :>); anbringtal(d.opref.data,ant,ia(1),2); if 17<=ia(1) and ia(1)<=16+max_antal_operatører then begin hægtstring(d.opref.data,ant,<: (:>); if bpl_navn(ia(1)-16)=long<::> then begin hægtstring(d.opref.data,ant,<:op:>); anbringtal(d.opref.data,ant,ia(1)-16, if ia(1)-16 > 9 then 2 else 1); end else hægtstring(d.opref.data,ant,string bpl_navn(ia(1)-16)); skrivtegn(d.opref.data,ant,')'); end; hægtstring(d.opref.data,ant, if tt='C' then <: Kontakt med kontrolbox etableret:> else if tt='N' then <: Kontakt med kontrolbox tabt:> else if tt='P' then <: Tilgængelig:> else if tt='U' then <: Ikke tilgængelig:> else <::>); repeat afsluttext(d.opref.data,ant) until ant mod 6 = 1; signalch(cs_io,opref,gen_optype); end else if tt='Z' then begin tab:= (ia(1)-16-1)*opk_alarm_tab_lgd; opk_alarm.tab.alarm_tilst:= opk_alarm.tab.alarm_gtilst; end else begin <* ikke implementeret *> end; end else if d.opref.opkode extract 12 = 44 then begin tt:= d.opref.opkode shift (-12); ok:= true; if tt='E' or tt='Q' or tt='R' or tt='W' or tt='S' or tt='I' then begin <*+2*> if testbit15 and overvåget then disable begin write(out,<<zd dd dd.dd >,now,<:switch-ud: %:>,false add tt,1); ud; end; <*-2*> write(z_tv_out,"%",1,false add tt,1,"cr",1); setposition(z_tv_out,0,0); end else if tt='B' or tt='C' or tt='F' then begin <*+2*> if testbit15 and overvåget then disable begin write(out,<<zd dd dd.dd >,now,<:switch-ud: %:>,false add tt,1, " ",1,<<d>,d.opref.data(1)); ud; end; <*-2*> write(z_tv_out,"%",1,false add tt,1," ",1,<<d>, d.opref.data(1),"cr",1); setposition(z_tv_out,0,0); end else if tt='A' or tt='D' or tt='T' then begin <*+2*> if testbit15 and overvåget then disable begin write(out,<<zd dd dd.dd >,now,<:switch-ud: %:>,false add tt,1, " ",1,<<d>,d.opref.data(1)," ",1,d.opref.data(2)); ud; end; <*-2*> write(z_tv_out,"%",1,false add tt,1," ",1,<<d>, d.opref.data(1)," ",1,d.opref.data(2),"cr",1); setposition(z_tv_out,0,0); end else ok:= false; if ok then begin gemt_op:= opref; ventetid:= 2; end else begin d.opref.resultat:= 4; signalch(d.opref.retur,opref,d.opref.optype); end; end; end else if gemt_op<>0 then begin <*timeout*> d.gemt_op.resultat:= 0; signalch(d.gemt_op.retur,gemt_op,d.gemt_op.optype); gemt_op:= 0; ventetid:= -1; <*+2*> if testbit15 and overvåget then disable begin write(out,<<zd dd dd.dd >,now,<:switch: *Operation Timeout*:>); ud; end; <*-2*> end; until false; tvswitch_trap: disable skriv_talevejsswitch(zbillede,1); end talevejsswitch; :5: operatør: initialisering \f message operatør_initialisering side 1 - 810520/hko; top_bpl_gruppe:= 64; bpl_navn(0):= long<::>; for i:= 1 step 1 until 127 do begin k:= læsfil(tf_bpl_navne,i,j); if k<>0 then fejlreaktion(5,k,<:bplnavne init:>,0); bpl_navn(i):= (long fil(j,1)) shift (-8) shift 8; if i<=max_antal_operatører then operatør_auto_include(i):= false add (fil(j,1) extract 8); if i>64 and fil(j,1)<>real<::> and i>top_bpl_gruppe then top_bpl_gruppe:= i; end; for i:= 0 step 1 until 64 do begin iaf:= i*op_maske_lgd; tofrom(bpl_def.iaf,ingen_operatører,op_maske_lgd); bpl_tilst(i,1):= bpl_tilst(i,2):= 0; if 1<=i and i<= max_antal_operatører then begin bpl_tilst(i,2):= 1; sætbit_ia(bpl_def.iaf,i,1); end; end; for i:= 65 step 1 until 127 do begin k:= læsfil(tf_bpl_def,i-64,j); if k<>0 then fejlreaktion(5,k,<:bpldef init:>,0); iaf:= i*op_maske_lgd; tofrom(bpl_def.iaf,fil(j),op_maske_lgd); bpl_tilst(i,1):= 0; bpl_tilst(i,2):= fil(j,2) extract 24; end; for k:= 0,1,2,3 do operatør_stop(0,k):= 0; iaf:= 0; for i:= 1 step 1 until max_antal_operatører do begin k:= læsfil(tf_stoptabel,i,j); if k<>0 then fejlreaktion(5,k,<:stoptabel init:>,0); operatør_stop(i,0):= i; for k:= 1,2,3 do operatør_stop(i,k):= fil(j).iaf(k+1); ant_i_opkø(i):= 0; end; tofrom(operatørmaske,ingen_operatører,op_maske_lgd); for i:= 0 step 1 until max_antal_operatører do op_talevej(i):= 0; for i:= 0 step 1 until max_antal_taleveje do tv_operatør(i):= 0; sidste_tv_brugt:= max_antal_taleveje; for i:= 1 step 1 until max_antal_operatører*(opk_alarm_tab_lgd//2) do opk_alarm(i):= 0; for i:= 1 step 1 until max_antal_operatører do begin integer array field tab; k:= læsfil(tf_alarmlgd,i,j); if k<>0 then fejlreaktion(5,k,<:alarmlængde init:>,0); tab:= (i-1)*opk_alarm_tab_lgd; opk_alarm.tab.alarm_lgd:= fil(j).iaf(1); opk_alarm.tab.alarm_start:= 0.0; end; laf:= raf:= 0; open(z_tv_in,8,taleswitch_in_navn,1 shift 21 + 1 shift 9); i:= monitor(8)reserve_process:(z_tv_in,0,ia); j:= 1; if i<>0 then fejlreaktion(4,i,string taleswitch_in_navn.raf(increase(j)),1); open(z_tv_out,4 shift 12 + 8,taleswitch_out_navn,1 shift 9); i:= monitor(8)reserve_process:(z_tv_in,0,ia); j:= 1; if i<>0 then fejlreaktion(4,i,string taleswitch_out_navn.raf(increase(j)),1); ia(1):= 3; <*canonical*> ia(2):= 0; <*no echo*> ia(3):= 0; <*prompt*> ia(4):= 2; <*timeout*> setcspterm(taleswitch_in_navn.laf,ia); setcspterm(taleswitch_out_navn.laf,ia); cs_op:= next_semch; <*+3*>skriv_new_sem(out,3,cs_op,<:cs-op(hovedmodul):>); <*-3*> cs_op_retur:= next_semch; <*+3*>skriv_new_sem(out,3,cs_op_retur,<:cs_op_retur:>); <*-3*> i:= nextcoru(200,<*ident*> 10,<*prioitet*> true<*test_maske*>); j:= new_activity( i, 0, h_operatør); <*+3*>skriv_newactivity(out,i,j); <*-3*> \f message operatør_initialisering side 2 - 810520/hko; for k:= 1 step 1 until max_antal_operatører do begin j:=9; if k>9 then skrivtegn(terminal_navn, j,'0'+k//10); skrivtegn(terminal_navn,j,'0'+k mod 10); open(z_op(k),8,terminal_navn,1 shift 21 +1 shift 9); i:= monitor(4) processaddress:(z_op(k),0,ia); ref:=k*terminal_beskr_længde; if i = 0 then begin fejlreaktion(3<*programfejl*>,k,<:skærm eksisterer ikke:>,1); terminal_tab.ref.terminal_tilstand:= 4 shift 21; end else begin terminal_tab.ref.terminal_tilstand:= 7 shift 21;<*ej knyttet*> end; cs_operatør(k):= next_semch; <*+3*>skriv_new_sem(out,3,cs_operatør(k),<:cs-operatør( ):>); <*-3*> cs_op_fil(k):= nextsemch; <*+3*> skriv_new_sem(out,3,cs_op_fil(k),<:cs-op-fil( ):>); <*-3*> signalch(cs_op_fil(k),nextop(filoplængde),op_optype); i:= next_coru(200+k,<*ident*> 10,<*prioitet*> true<*testmaske*>); j:= new_activity( i, 0, operatør,k); <*+3*>skriv_newactivity(out,i,j); <*-3*> end; cs_op_iomedd:= next_semch; <*+3*>skriv_new_sem(out,3,cs_op_iomedd,<:cs-op-iomedd:>); <*-3*> bs_opk_alarm:= next_sem; <*+3*>skriv_new_sem(out,1,bs_opk_alarm,<:bs-opk-alarm:>); <*-3*> cs_opk_alarm:= next_semch; <*+3*>skriv_new_sem(out,3,cs_opk_alarm,<:cs-opk-alarm:>); <*-3*> cs_opk_alarm_ur:= next_semch; <*+3*>skriv_new_sem(out,3,cs_opk_alarm_ur,<:cs-opk-alarm-ur:>); <*-3*> cs_opk_alarm_ur_ret:= next_semch; <*+3*>skriv_new_sem(out,3,cs_opk_alarm_ur_ret,<:cs-opk-alarm-ur-ret:>); <*-3*> cs_tvswitch_adgang:= next_semch; <*+3*>skriv_new_sem(out,3,cs_tvswitch_adgang,<:cs-tvswitch-adgang:>); <*-3*> cs_tv_switch_input:= next_semch; <*+3*>skriv_new_sem(out,3,cs_tv_switch_input,<:cs-tvswitch-input:>); <*-3*> cs_tv_switch_adm:= next_semch; <*+3*>skriv_new_sem(out,3,cs_tv_switch_adm,<:cs-tvswitch-adm:>); <*-3*> cs_talevejsswitch:= next_semch; <*+3*>skriv_new_sem(out,3,cs_talevejsswitch,<:cs-talevejsswitch:>); <*-3*> signalch(cs_op_iomedd,nextop(60),gen_optype); iaf:= nextop(data+128); startoperation(iaf,298,cs_tv_switch_adgang,'I' shift 12 + 44); signal_ch(cs_talevejsswitch,iaf,op_optype); i:= next_coru(295, <*ident*> 8, <*prioritet*> true <*testmaske*>); j:= new_activity( i, 0, alarmur); <*+3*>skriv_new_activity(out,i,j); <*-3*> signal_ch(cs_opk_alarm_ur_ret,nextop(data),op_optype); i:= next_coru(296, <*ident*> 8, <*prioritet*> true <*testmaske*>); j:= new_activity( i, 0, opkaldsalarmer); <*+3*>skriv_new_activity(out,i,j); <*-3*> i:= next_coru(297, <*ident*> 3, <*prioritet*> true <*testmaske*>); j:= new_activity( i, 0, tv_switch_input); <*+3*>skriv_new_activity(out,i,j); <*-3*> for i:= 1,2 do signalch(cs_tvswitch_input,nextop(data+256),op_optype); i:= next_coru(298, <*ident*> 20, <*prioritet*> true <*testmaske*>); j:= new_activity( i, 0, tv_switch_adm); <*+3*>skriv_new_activity(out,i,j); <*-3*> i:= next_coru(299, <*ident*> 3, <*prioritet*> true <*testmaske*>); j:= new_activity( i, 0, talevejsswitch); <*+3*>skriv_new_activity(out,i,j); <*-3*> :6: operatør trapaktion1. \f message operatør trapaktion1 side 1 - 810521/hko; write(zbillede,"nl",1,<:betjeningspladsnavne::>,"nl",1); for i:= 1 step 1 until max_antal_operatører do begin write(zbillede,<<dd>,i,<:: :>,true,6,string bpl_navn(i), case operatør_auto_include(i) extract 2 + 1 of ( <:EK :>,<:IN(ÅB):>,<:?? :>,<:IN(ST):>),<: :>); if i mod 4 = 0 then write(zbillede,"nl",1); end; write(zbillede,"nl",1); write(zbillede,"nl",1,<:top-bpl-gruppe: :>,<<d>,top_bpl_gruppe,"nl",1, <:betjeningspladsgrupper::>,"nl",1); for i:= 1 step 1 until 127 do if bpl_navn(i)<>long<::> then begin k:= write(zbillede,<<dd >,i,true,6,string bpl_navn(i),<:(:>,<<d>, bpl_tilst(i,1),<:/:>,bpl_tilst(i,2),<:):>); write(zbillede,"sp",16-k,<:= :>); iaf:= i*op_maske_lgd; j:=0; for k:= 1 step 1 until max_antal_operatører do begin if læsbit_ia(bpl_def.iaf,k) then begin if j mod 6 = 0 and j > 0 then write(zbillede,"nl",1,"sp",18); write(zbillede,true,6,string bpl_navn(k)); j:= j+1; end; end; write(zbillede,"nl",1); end; write(zbillede,"nl",1,<:stoptabel::>,"nl",1); for i:= 1 step 1 until max_antal_operatører do begin write(zbillede,<<dd >,i); for j:= 0 step 1 until 3 do begin k:= operatør_stop(i,j); write(zbillede,if j=0 then <: :> else <:->:>,if k=0 then <:ALLE:> else string bpl_navn(k)); end; write(zbillede,<: (:>,<<d>,ant_i_opkø(i),<:):>,"nl",1); end; skriv_terminal_tab(zbillede); write(zbillede,"nl",1,<:operatør-maske::>,"nl",1); outintbits_ia(zbillede,operatørmaske,1,op_maske_lgd//2); skriv_opk_alarm_tab(zbillede); skriv_talevejs_tab(zbillede); :7: operatør trapaktion2. \f message operatør_finale side 1 - 810428/hko; goto op_trap2_slut; write(out,<:lukker operatører:>); ud; for k:= 1 step 1 until max_antal_operatører do begin close(z_op(k),true); end; op_trap2_slut: k:=k; ▶EOF◀