|
|
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: 15360 (0x3c00)
Types: TextFile
Names: »htsys «
└─⟦cde9d517b⟧ Bits:30007477 RC8000 Backup tape fra HT's bus-radio system
└─⟦6a563b143⟧
└─⟦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;
long array la(1:2);
long array field laf;
procedure ud;
begin
outchar(out,'nl');
if out_tw_lp then setposition(out,0,0);
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_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;
integer array
konsol_navn,
terminal_navn,
garage_terminal_navn,
radio_fr_in_navn, radio_fr_out_navn,
radio_rf_in_navn, radio_rf_out_navn(1:4),
alfabet(0:127);
boolean
garage_auto_include;
integer tf_systællere;
:2: sys: parameterinitialisering
\f
message sys_parameterinitialisering side 1 - 810305/hko;
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;
if findfpparam(<:garager:>,false,ia) > 0 then
garage_auto_include:= ia(1)<>long<:nej:> shift (-24) extract 24
else
garage_auto_include:= true;
\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:=8;
max_antal_garageterminaler:=7;
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;
max_antal_mobilopkald:= 32;
min_antal_nødopkald:= 6;
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:=20;
max_linienr:= 999; <*<=999*>
\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
movestring(konsol_navn.raf,1,<:console1:>);
<* initialisering af terminalnavn med ikke eksisterende 'terminal0' *>
raf:= 0;
movestring(terminal_navn.raf,1,<:terminal0:>);
<* initialisering af garageterminalnavn med ikke eksisterende 'garage0' *>
movestring(garage_terminal_navn.raf,1,<:garage0:>);
<* initialisering af radiokanalnavne *>
movestring(radio_fr_in_navn.raf,1,<:frinput:>);
movestring(radio_fr_out_navn.raf,1,<:froutput:>);
movestring(radio_rf_in_navn.raf,1,<:rfinput:>);
movestring(radio_rf_out_navn.raf,1,<:rfoutput:>);
<* initialisering af 'input'-alfabet *>
isotable(alfabet);
alfabet('esc'):= 8 shift 12 + 'esc';
<* for i:='a' step 1 until 'å' do alfabet(i):=alfabet(i)-32; *>
intable(alfabet);
<* initialsering af tf_systællere *>
tf_systællere:= 1024<*tabelfil*> + 8;
:4: sys: erklæringer
\f
message sys_erklæringer side 1 - 810406/cl,hko;
zone
zdummy(1,1,stderror),
zbillede(128,1,stderror);
real array fejltekst(1:max_antal_fejltekster);
integer array 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*3));
boolean array
operatør_auto_include(1:max_antal_operatører);
long array 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 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 tæl_opkald(område,type);
value område,type;
integer område,type;
begin
integer zi;
integer array field iaf;
iaf:= 0;
increase(opkalds_tællere((område-1)*3+type));
disable begin
skrivfil(tf_systællere,1,zi);
tofrom(fil(zi).iaf,opkalds_tællere,max_antal_områder*6);
setposition(fil(zi),0,0);
end;
end;
procedure skriv_opkaldstællere(z);
zone z;
begin
integer omr,typ;
write(z,"nl",2,<:+++++ opkaldstællere +++++:>,"nl",2,
<:omr ud ind-alm ind-nød:>,"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 3 do
write(z,<< ddddddd>,opkalds_tællere((omr-1)*3+typ));
outchar(z,'nl');
end;
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 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 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;
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);
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:>,
<*99*><:ftslut:>));
for i:= 1 step 1 until max_antal_områder do
begin
område_navn(i):= long (case i of
(<:TLF:>,<:VHF:>,<:TCT:>,<: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 max_antal_operatører do
operatør_auto_include(i):= false;
for i:= 1 step 1 until findfpparam(<:operatør:>,true,ia) do
operatør_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:
algol_pause:=algol_pause shift 24 shift (-24);
<* endaction:=0; *>
▶EOF◀