|
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 - download
Length: 20736 (0x5100) Types: TextFile Names: »htsys «
└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system └─⟦a957ba283⟧ └─ ⟦this⟧ »htsys «
systemmodul. :1: sys: parametererklæringer \f message sys_parametererklæringer side 1 - 810127/cl; boolean testbit0 ,testbit1 ,testbit2 ,testbit3 ,testbit4 ,testbit5 , testbit6 ,testbit7 ,testbit8 ,testbit9 ,testbit10,testbit11, testbit12,testbit13,testbit14,testbit15,testbit16,testbit17, testbit18,testbit19,testbit20,testbit21,testbit22,testbit23, testbit24,testbit25,testbit26,testbit27,testbit28,testbit29, testbit30,testbit31,testbit32,testbit33,testbit34,testbit35, testbit36,testbit37,testbit38,testbit39,testbit40,testbit41, testbit42,testbit43,testbit44,testbit45,testbit46,testbit47; boolean cl_overvåget,out_tw_lp, cm_test; integer låsning; \f message sys_parametererklæringer side 2 - 810310.hko; <* hjælpevariable *> integer i,j,k; integer array ia(1:32); integer array field iaf,ref; real r; real array ra(1:3); real array field raf; real field rf; long array la(1:2); long array field laf; procedure ud; begin <* outchar(out,'nl'); if out_tw_lp then setposition(out,0,0); *> flushout('nl'); end; \f message sys_parametererklæringer side 3 - 810310/hko; <* hovedmodul_parametre *> integer sys_mod, io_mod, op_mod, gar_mod, rad_mod, vt_mod; <* operations_parametre *> integer field kilde, retur, resultat, opkode; real field tid; integer array field data; boolean sys_optype, io_optype, op_optype, gar_optype, rad_optype, vt_optype, gen_optype; \f message sys_parametererklæringer side 4 - 820301/hko,cl; <* trimme-variable *> integer max_antal_operatører, max_antal_taleveje, max_antal_garageterminaler, max_antal_garager, max_antal_områder, max_antal_radiokanaler, max_antal_pabx, max_antal_kanaler, max_antal_mobilopkald, min_antal_nødopkald, max_antal_grupper, max_antal_gruppeopkald, max_antal_spring, max_antal_busser, max_antal_linie_løb, max_antal_fejltekster, max_linienr, op_maske_lgd, tv_maske_lgd; integer array konsol_navn, taleswitch_in_navn, taleswitch_out_navn, radio_fr_navn, radio_rf_navn(1:4), alfabet(0:255); integer tf_systællere, tf_stoptabel, tf_bplnavne, tf_bpldef, tf_alarmlgd; :2: sys: parameterinitialisering \f message sys_parameterinitialisering side 1 - 810305/hko; copyout; cl_overvåget:= false; getzone6(out,ia); out_tw_lp:= ia(1) extract 12 = 8 or ia(1) extract 12 = 14; testbit0 :=testbit( 0); testbit1 :=testbit( 1); testbit2 :=testbit( 2); testbit3 :=testbit( 3); testbit4 :=testbit( 4); testbit5 :=testbit( 5); testbit6 :=testbit( 6); testbit7 :=testbit( 7); testbit8 :=testbit( 8); testbit9 :=testbit( 9); testbit10:=testbit(10); testbit11:=testbit(11); testbit12:=testbit(12); testbit13:=testbit(13); testbit14:=testbit(14); testbit15:=testbit(15); testbit16:=testbit(16); testbit17:=testbit(17); testbit18:=testbit(18); testbit19:=testbit(19); testbit20:=testbit(20); testbit21:=testbit(21); testbit22:=testbit(22); testbit23:=testbit(23); \f message sys_parameterinitialisering side 2 - 810316/cl; testbit24:=testbit(24); testbit25:=testbit(25); testbit26:=testbit(26); testbit27:=testbit(27); testbit28:=testbit(28); testbit29:=testbit(29); testbit30:=testbit(30); testbit31:=testbit(31); testbit32:=testbit(32); testbit33:=testbit(33); testbit34:=testbit(34); testbit35:=testbit(35); testbit36:=testbit(36); testbit37:=testbit(37); testbit38:=testbit(38); testbit39:=testbit(39); testbit40:=testbit(40); testbit41:=testbit(41); testbit42:=testbit(42); testbit43:=testbit(43); testbit44:=testbit(44); testbit45:=testbit(45); testbit46:=testbit(46); testbit47:=testbit(47); cm_test:= false; <*+1*> cm_test:= true; <*-1*> \f message sys_parameterinitialisering side 3 - 810409/cl,hko; timeinterval:=1; <* tidsinterval for cmon's timeoutinspection *> if findfpparam(<:låsning:>,true,ia) > 0 then låsning:= ia(1) else låsning:= 0; \f message sys_parameterinitialisering side 4 - 820301/hko/cl; <* initialisering af hovedmodul_parametre *> i:=0; sys_mod:=i; i:=i+1; io_mod:=i; i:=i+1; op_mod:=i; i:=i+1; gar_mod:=i; i:=i+1; rad_mod:=i; i:=i+1; vt_mod:=i; <* initialisering af operationstyper *> sys_optype:=false add (1 shift sys_mod); io_optype:= false add (1 shift io_mod); op_optype:= false add (1 shift op_mod); gar_optype:=false add (1 shift gar_mod); rad_optype:=false add (1 shift rad_mod); vt_optype:= false add (1 shift vt_mod); gen_optype:=false add (1 shift 11); <* initialisering af fieldvariable for operationer *> i:=2; kilde:=i; i:=i+4; tid:=i; i:=i+2; retur:=i; i:=i+2; opkode:=i; i:=i+2; resultat:=i; i:=i+0; data:=i; <* initialisering af trimme-variable *> max_antal_operatører:=28; <* hvis > 32 skal tf_systællere udvides *> max_antal_taleveje:=12; max_antal_garageterminaler:=3; max_antal_garager:=99; max_antal_radiokanaler:=16; max_antal_pabx:=2; max_antal_kanaler:=14; <* 1 pabx + 13 radio *> max_antal_områder:=11; <* hvis > 16 skal tf_systællere udvides *> max_antal_mobilopkald:=100; min_antal_nødopkald:=20; max_antal_grupper:=16; max_antal_gruppeopkald:=16; max_antal_spring:=16; max_antal_busser:=2000; max_antal_linie_løb:=2000; max_antal_fejltekster:=21; max_linienr:=999; <*<=999*> op_maske_lgd:= ((1+max_antal_operatører+23)//24)*2; tv_maske_lgd:= ((1+max_antal_taleveje+23)//24)*2; \f message sys_parameterinitialisering side 5 - 880901/cl; <* initialisering af konsol-navn *> raf:= 0; if findfpparam(<:io:>,false,ia)>0 then begin for i:= 1 step 1 until 4 do konsol_navn(i):= ia(i); end else system(7,0,konsol_navn); <* movestring(konsol_navn.raf,1,<:console1:>); *> raf:= 0; <* intialiserning af talevejsswitchens navn *> movestring(taleswitch_in_navn.raf,1,<:taleswitchi:>); movestring(taleswitch_out_navn.raf,1,<:taleswitch:>); <* initialisering af radiokanalnavne *> movestring(radio_fr_navn.raf,1,<:radiofr:>); movestring(radio_rf_navn.raf,1,<:radiorf:>); <* initialisering af 'input'-alfabet *> isotable(alfabet); alfabet('esc'):= 8 shift 12 + 'esc'; <* for i:='a' step 1 until 'å' do alfabet(i):=alfabet(i)-32; *> for i:= 128 step 1 until 255 do alfabet(i):= 0 shift 12 + i; intable(alfabet); <* initialsering af tf_systællere *> tf_systællere:= 1024<*tabelfil*> + 8; tf_stoptabel := 1024<*tabelfil*> + 5; tf_bpl_navne := 1024<*tabelfil*> + 12; tf_bpl_def := 1024<*tabelfil*> + 13; tf_alarmlgd := 1024<*tabelfil*> + 14; :4: sys: erklæringer \f message sys_erklæringer side 1 - 810406/cl,hko; zone zdummy(1,1,stderror), zrl(128,1,stderror), zbillede(128,1,stderror); real array fejltekst(1:max_antal_fejltekster); real systællere_nulstillet; integer nulstil_systællere, top_bpl_gruppe; integer array ingen_operatører, alle_operatører(1:(op_maske_lgd//2)), ingen_taleveje, alle_taleveje(1:(tv_maske_lgd//2)), bpl_def(1:(128*(op_maske_lgd//2))), bpl_tilst(0:127,1:2), operatør_stop(0:max_antal_operatører,0:3), område_id(1:max_antal_områder,1:2), pabx_id(1:max_antal_pabx), radio_id(1:max_antal_radiokanaler), kanal_id(1:max_antal_kanaler), opkalds_tællere(1:(max_antal_områder*5)), <* maxantal <= 16 *> operatør_tællere(1:(max_antal_operatører*5)); <* maxantal <= 32 *> boolean array operatør_auto_include(1:max_antal_operatører), garage_auto_include(1:max_antal_garageterminaler); long array terminal_navn(1:(2*max_antal_operatører)), garage_terminal_navn(1:(2*max_antal_garageterminaler)), bpl_navn(0:127), område_navn(1:max_antal_områder), kanal_navn(1:max_antal_kanaler); \f message procedure findområde side 1 - 880901/cl; integer procedure find_bpl(navn); value navn; long navn; begin integer i; find_bpl:= 0; for i:= 0 step 1 until 127 do if navn = bpl_navn(i) then find_bpl:= i; end; integer procedure findområde(omr); value omr; integer omr; begin integer i; if omr = '*' shift 16 then findområde:= -1 else begin findområde:= 0; for i:= 1 step 1 until max_antal_områder do if (extend omr) shift 24=område_navn(i) then findområde:= i; end; end; \f message procedure tæl_opkald side 1 - 880926/cl; procedure opdater_tf_systællere; begin integer zi; integer array field iaf; real field rf; disable begin skrivfil(tf_systællere,1,zi); rf:= iaf:= 4; fil(zi).rf:= systællere_nulstillet; fil(zi).iaf(1):= nulstil_systællere; iaf:= 32; tofrom(fil(zi).iaf,opkalds_tællere,max_antal_områder*10); iaf:= 192; tofrom(fil(zi).iaf,operatør_tællere,max_antal_operatører*10); setposition(fil(zi),0,0); end; end; procedure tæl_opkald(område,type); value område,type; integer område,type; begin increase(opkalds_tællere((område-1)*5+type)); disable opdater_tf_systællere; end; procedure tæl_opkald_pr_operatør(operatør,type); value operatør,type; integer operatør,type; begin increase(operatør_tællere((operatør-1)*5+type)); disable opdater_tf_systællere; end; procedure skriv_opkaldstællere(z); zone z; begin integer omr,typ,rpc; integer array ialt(1:5); real r; for typ:= 1 step 1 until 5 do ialt(typ):= 0; write(z,"nl",2,<:+++++ opkaldstællere +++++:>,"nl",2, <:omr ud ind-alm ind-nød ej.forb optaget:>,"nl",1); for omr:= 1 step 1 until max_antal_områder do begin write(z,true,6,string område_navn(omr),":",1); for typ:= 1 step 1 until 5 do begin write(z,<< ddddddd>,opkalds_tællere((omr-1)*5+typ)); ialt(typ):= ialt(typ)+opkalds_tællere((omr-1)*5+typ); end; outchar(z,'nl'); end; write(z,"-",47,"nl",1,<:I ALT ::>); for typ:= 1 step 1 until 5 do write(z,<< ddddddd>,ialt(typ)); outchar(z,'nl'); for typ:= 1 step 1 until 5 do ialt(typ):= 0; write(z,"nl",1, <:oper. ud ind-alm ind-nød ej.forb optaget:>,"nl",1); for omr:= 1 step 1 until max_antal_operatører do begin if bpl_navn(omr)=long<::> then write(z,"sp",6-write(z,<:op:>,<<d>,omr),":",1) else write(z,true,6,string bpl_navn(omr),":",1); for typ:= 1 step 1 until 5 do begin write(z,<< ddddddd>,operatør_tællere((omr-1)*5+typ)); ialt(typ):= ialt(typ)+operatør_tællere((omr-1)*5+typ); end; outchar(z,'nl'); end; write(z,"-",47,"nl",1,<:I ALT ::>); for typ:= 1 step 1 until 5 do write(z,<< ddddddd>,ialt(typ)); outchar(z,'nl'); rpc:= replace_char(1,':'); write(z,"nl",1,<:nulstilles :>); if nulstil_systællere = (-1) then write(z,<:ikke automatisk:>,"nl",1) else write(z,<:automatisk kl. :>,<<zd dd dd>,nulstil_systællere,"nl",1); replace_char(1,'.'); write(z,<:nulstillet d. :>,<<zd dd dd>, systime(4,systællere_nulstillet,r)," ",1); replace_char(1,':'); write(z,<<zd dd dd>,r,"nl",1); replace_char(1,rpc); end; \f message procedure start_operation side 1 - 810521/hko; procedure start_operation(op_ref,kor,ret_sem,kode); value kor,ret_sem,kode; integer array field op_ref; integer kor,ret_sem,kode; <* op_ref: kald, reference til operation kor: kald, kilde= hovedmodulnr*100 +løbenr = korutineident. ret_sem: kald, retursemafor kode: kald, suppl shift 12 + operationskode proceduren initialiserer en operations hoved med parameterværdierne samt tidfeltet med aktueltid. resultatfelt og datafelter nulstilles. *> begin integer i; d.op_ref.kilde:= kor; systime(1,0,d.op_ref.tid); d.op_ref.retur:=ret_sem; d.op_ref.op_kode:=kode; d.op_ref.resultat:=0; for i:=(d.op_ref.opsize-data)//2 step -1 until 1 do d.op_ref.data(i):=0; end start_operation; \f message procedure afslut_operation side 1 - 810331/hko; procedure afslut_operation(op_ref,sem); value op_ref,sem; integer op_ref,sem; begin integer array field op; op:=op_ref; if sem>0 then signal_ch(sem,op,d.op.optype) else if sem=-1 then signal_ch(d.op.retur,op,d.op.optype) else ; end afslut_operation; \f message procedure fejlreaktion - side 1 - 810424/cl,hko; procedure fejlreaktion(nr,værdi,str,måde); value nr,værdi,måde; integer nr,værdi,måde; string str; begin disable begin write(out,<:<10>!!! :>); if nr>0 and nr <=max_antal_fejltekster then write(out,string fejltekst(nr)) else write(out,<:fejl nr.:>,nr); outchar(out,'sp'); if måde shift (-12) extract 2=1 then outintbits(out,værdi) else if måde shift (-12) extract 2=2 then write(out,<:":>,false add værdi,1,<:":>) else write(out,værdi); write(out,"sp",1,str,"nl",1,<< zddddd>,systime(5,0,r),r, <: korutine nr=:>,<<d>, abs curr_coruno, <: ident=:>,curr_coruid,"nl",0); if testbit27 and måde extract 12=1 then trace(1); ud; end;<*disable*> if måde extract 12 =2 then trapmode:=1 shift 13; if måde extract 12= 0 then trap(-1) else if måde extract 12 = 2 then trap(-2); end fejlreaktion; procedure trace(n); value n; integer n; begin trap(finis); trap(n); finis: end trace; \f message procedure overvåget side 1 - 810413/cl; boolean procedure overvåget; begin disable begin integer i,måde; integer array field cor; integer array ia(1:12); i:= system(12,0,ia); if i > 0 then begin i:= system(12,1,ia); måde:= ia(3); end else måde:= 0; if måde<>0 then begin cor:= coroutine(abs ia(3)); overvåget:= d.cor.corutestmask shift (-11); end else overvåget:= cl_overvåget; end; end; \f message procedure antal_bits_ia side 1 - 940424/cl; integer procedure antal_bits_ia(ia,n,ø); value n,ø; integer array ia; integer n,ø; begin integer i, ant; ant:= 0; for i:= n step 1 until ø do if læsbit_ia(ia,i) then ant:= ant+1; end; message procedure trunk_til_omr side 1 - 881006/cl; integer procedure trunk_til_omr(trunk); value trunk; integer trunk; begin integer i,j; j:=0; for i:= 1 step 1 until max_antal_områder do if område_id(i,2) extract 12 = trunk extract 12 then j:=i; trunk_til_omr:=j; end; integer procedure omr_til_trunk(omr); value omr; integer omr; begin omr_til_trunk:= område_id(omr,2) extract 12; end; integer procedure port_til_omr(port); value port; integer port; begin if port shift (-6) extract 6 = 2 then port_til_omr:= pabx_id(port extract 6) else if port shift (-6) extract 6 = 3 then port_til_omr:= radio_id(port extract 6) else port_til_omr:= 0; end; integer procedure kanal_til_port(kanal); value kanal; integer kanal; begin kanal_til_port:= kanal_id(kanal) shift (-5) extract 3 shift 6 + kanal_id(kanal) extract 5; end; integer procedure port_til_kanal(port); value port; integer port; begin integer i,j; j:=0; for i:= 1 step 1 until max_antal_kanaler do if kanal_id(i) = port shift (-6) shift 5 + port extract 5 then j:=i; port_til_kanal:= j; end; integer procedure kanal_til_omr(kanal); value kanal; integer kanal; begin kanal_til_omr:= port_til_omr( kanal_til_port(kanal) ); end; :5: sys: initialisering \f message sys_initialisering side 1 - 810601/hko; trapmode:= 1 shift 15; errorbits:= 1; <* warning.no ok.no *> trap(coru_term); open(zbillede,4,<:billede:>,0); write(zbillede,"ff",1,"nl",2,<:********** billede for kørsel startet :>, <<zddddd>,systime(5,0,r),".",1,r,<: **********:>,"nl",1); system(2,0,ia); open(zdummy,4,ia,0); close(zdummy,false); monitor(42,zdummy,0,ia); laf:= 0; write(zbillede,"nl",1,<:prog.vers. :>,<<dddddd.dddd>, systime(6,ia(6),r)+r/1000000,"nl",2, <:konsolnavn: :>,konsol_navn.laf,"nl",1); open(zrl,4,<:radiolog:>,0); if monitor(42)lookup_entry:(zrl,0,ia)<>0 or monitor(52)create_areaproc:(zrl,0,ia)<>0 or monitor(8)reserve_process:(zrl,0,ia)<>0 then begin ia(1):=1; ia(2):= 3; for i:= 3 step 1 until 10 do ia(i):= 0; monitor(40)create_area:(zrl,0,ia); end; for i:=1 step 1 until max_antal_fejltekster do fejltekst(i):= real (case i of ( <* 1*><:filsystem:>, <* 2*><:operationskode:>, <* 3*><:programfejl:>, <* 4*><:monitor<'_'>resultat=:>, <* 5*><:læs<'_'>fil:>, <* 6*><:skriv<'_'>fil:>, <* 7*><:modif<'_'>fil:>, <* 8*><:hent<'_'>fil<'_'>dim:>, <* 9*><:sæt<'_'>fil<'_'>dim:>, <*10*><:vogntabel:>, <*11*><:fremmed operation:>, <*12*><:operationstype:>, <*13*><:opret<'_'>fil:>, <*14*><:tilknyt<'_'>fil:>, <*15*><:frigiv<'_'>fil:>, <*16*><:slet<'_'>fil:>, <*17*><:ydre enhed, status=:>, <*18*><:tabelfil:>, <*19*><:radio:>, <*20*><:mobilopkald, bus:>, <*21*><:talevejsswitch:>, <*99*><:ftslut:>)); for i:= 1 step 1 until max_antal_områder do begin område_navn(i):= long (case i of (<:TLF:>,<:VHF:>,<:KBH:>,<:RO:>,<:FS:>,<:HHL:>,<:GLX:>, <:KJ:>,<:HI:>,<:HG:>,<:BA:>) ); område_id(i,1):= område_navn(i) shift (-24) extract 24; område_id(i,2):= (case i of ( 2, 3, 13, 3, 3, 3, 3, 3, 3, 3, 3)) shift 6 add (case i of ( 2, 5, 2, 9, 10, 11, 12, 13, 14, 15, 16)); end; pabx_id(1):= -1; pabx_id(2):= 1; for i:= 1 step 1 until max_antal_radiokanaler do begin radio_id(i):= case i of ( 3, 3, 3, 3, 2, -1, -1, -1, 4, 5, 6, 7, 8, 9, 10, 11); end; for i:=1 step 1 until max_antal_kanaler do begin kanal_navn(i):= long (case i of ( <:K1:>,<:K2:>,<:K3:>,<:K4:>,<:K5:>,<:K9:>,<:K10:>,<:K11:>,<:K12:>, <:K13:>,<:K14:>,<:K15:>,<:K16:>,<:L4190:>) ); kanal_id(i):= (case i of ( 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2)) shift 5 + (case i of ( 2, 3, 4, 1, 5, 9,10,11,12,13,14,15,16, 2)); end; for i:= 1 step 1 until op_maske_lgd//2 do ingen_operatører(i):= alle_operatører(i):= 0; for i:= 1 step 1 until tv_maske_lgd//2 do ingen_taleveje(i):= alle_taleveje(i):= 0; begin long array navn(1:2); long array field doc, ref; doc:= 2; iaf:= 0; movestring(navn,1,<:terminal0:>); for i:= 1 step 1 until max_antal_operatører do begin ref:=(i-1)*8; k:=9; if i>9 then skrivtegn(navn.iaf, k, '0' + i//10); skrivtegn(navn.iaf,k,'0'+ i mod 10); open(zdummy,8,navn,0); close(zdummy,true); k:= monitor(42,zdummy,0,ia); if k=0 then tofrom(terminal_navn.ref,ia.doc,8) else tofrom(terminal_navn.ref,navn,8); operatør_auto_include(i):= false; sætbit_ia(alle_operatører,i,1); end; movestring(navn,1,<:garage0:>); for i:= 1 step 1 until max_antal_garageterminaler do begin ref:=(i-1)*8; k:=7; if i>9 then skrivtegn(navn.iaf, k, '0' + i//10); skrivtegn(navn.iaf,k,'0'+ i mod 10); open(zdummy,8,navn,0); close(zdummy,true); k:= monitor(42,zdummy,0,ia); if k=0 then tofrom(garage_terminal_navn.ref,ia.doc,8) else tofrom(garage_terminal_navn.ref,navn,8); garage_auto_include(i):= false; end; end; for i:= 1 step 1 until max_antal_taleveje do sætbit_ia(alle_taleveje,i,1); for i:= 1 step 1 until findfpparam(<:operatør:>,true,ia) do if 1<=ia(i) and ia(i)<=max_antal_operatører then operatør_auto_include(ia(i)):= true; for i:= 1 step 1 until findfpparam(<:garage:>,true,ia) do if 1<=ia(i) and ia(i)<=max_antal_garageterminaler then garage_auto_include(ia(i)):= true; :6: sys: trapaktion \f message sys trapaktion side 1 - 810521/hko/cl; trap(finale); write(zbillede,"ff",1,"nl",1,<:***** coroutine-monitor køer *****:>); for i:= 4<*readyqueue*>, 8<*idlequeue*>, 12<*timerqueue*> do begin k:= 0; write(zbillede,"nl",2,case i//4 of(<:readyqueue->:>,<:idlequeue ->:>, <:timerqueue->:>)); iaf:= i; for iaf:= d.iaf.next while iaf<>i do begin ref:= firstcoru + (iaf-firstcoru)//corusize*corusize; write(zbillede,<: cr:>,<<zdd>,d.ref.coruident//1000); k:=k+1; if k mod 10 = 0 then write(zbillede,"nl",1,"sp",12); end; end; outchar(zbillede,'nl'); skriv_opkaldstællere(zbillede); :7: sys: finale \f message sys_finale side 1 - 810428/hko; finale: trap(slut_finale); <* algol_pause:=algol_pause shift 24 shift (-24); *> endaction:=0; ▶EOF◀