|
|
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: 3840 (0xf00)
Types: TextFile
Names: »tmux«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦this⟧ »tmux«
mode list.yes
(
muxrun=set 75 disc3
scope user muxrun
muxlist=set 100
scope day muxlist
mode listing.yes
o muxlist
muxrun=algol blocks.yes
if warning.yes
c=message syntax
if warning.no
c=message ok
o c
)
begin
<*mux
Multiplexer program for Motorola M6800 microcomputers connected
to an HC8000.
1982-04-19*>
integer i,j;
integer no_of_cpu,max_ch_index,z_buf_size,z_head_size;
integer field cpu_nr,cpu_size,cpu_state,
cpu_free_channels,cpu_f_ch_ref,
cpu_auto_ch_ref,cpu_rec_size;
long array field cpu_ps,cpu_trm,cpu_rec,cpu_data,
cpu_reserver;
integer field ch_nr,ch_cpu,ch_first_z,ch_last_z,
ch_state,ch_m_op,ch_m_f_a,ch_m_l_a,
ch_m_c_a,ch_result,ch_a_status,
ch_a_half,ch_a_chars,ch_rec_size;
integer array field ch_mess,ch_answer;
i:=0;
i:=cpu_nr:=i+2;
i:=cpu_size:=i+2;
i:=cpu_state:=i+2;
i:=cpu_free_channels:=i+2;
i:=cpu_f_ch_ref:=i+2;
i:=cpu_auto_ch_ref:=i+2;
i:=cpu_ps:=i;
i:=cpu_trm:=i+10;
i:=cpu_rec:=i+10;
i:=cpu_data:=i+10;
i:=cpu_reserver:=i+10;
i:=cpu_rec_size:=i+12; <*name,starttime*>
i:=0;
i:=z_head_size:=i;
i:=0;
i:=ch_nr:=i+2;
i:=ch_cpu:=i+2;
i:=ch_first_z:=i+2;
i:=ch_last_z:=i+2;
i:=ch_state:=i+2;
ch_mess:=i;
i:=ch_m_op:=i+2;
i:=ch_m_f_a:=i+2;
i:=ch_m_l_a:=i+2;
i:=ch_m_c_a:=i+2;
i:=ch_answer:=ch_mess+18;
i:=ch_result:=i;
i:=ch_a_status:=i+2;
i:=ch_a_half:=i+2;
i:=ch_a_chars:=i+2;
i:=ch_rec_size:=ch_answer+18;
algol copy.muxdef;
begin
integer array cpu(1:no_of_cpu*cpu_rec_size//2),
channel(1:no_of_cpu*(max_ch_index+1)),
z(1:no_of_cpu*(z_head_size//2+z_buf_size*
max_ch_index//2));
procedure list_cpu_table(z);
zone z;
begin
integer i;
integer array field cpu_f;
cpu_f:=-cpu_rec_size;
write(out,"nl",1,
<:cpu name size trm rec data state reserver free:>);
for i:=1 step 1 until no_of_cpu do
begin
cpu_f:=cpu_f+cpu_rec_size;
write(z,"nl",1,<<dd >,cpu.cpu_f.cpu_nr,
true,8,cpu.cpu_f.cpu_ps,
cpu.cpu_f.cpu_size,"sp",3,
true,8,cpu.cpu_f.cpu_trm,true,8,cpu.cpu_f.cpu_rec,
true,8,cpu.cpu_f.cpu_data,
case cpu.cpu_f.cpu_state+1 of(<:free :>),
true,8,cpu.cpu_f.cpu_reserver,
<< ddd>,cpu.cpu_f.cpu_free_channels);
end for cpu;
end list_cpu_table;
begin
<*initialize cpu_table*>
zone z(128,1,stderror);
long array txt(1:3);
array field f;
integer cpu_c,char,nr,size;
integer array field cpu_f;
f:=0;
open(z,4,<:muxdef:>,0);
repeat readstring(z,txt,1) until txt(1)=long <:defin:> add 'e';
repeat readstring(z,txt,1) until txt(1)=long <:data:>;
cleararray(cpu);
repeatchar(z);
cpu_f:=-cpu_rec_size;
for cpu_c:=1 step 1 until no_of_cpu do
begin
nr:=0;
cpu_f:=cpu_f+cpu_rec_size;
read(z,nr); repeatchar(z);
read_char(z,char);
cpu.cpu_f.cpu_nr:=nr;
txt(2):=0;
readstring(z,txt.f,1);
for i:=1,2 do cpu.cpu_f.cpu_ps(i):=txt(i);
read(z,size);
cpu.cpu_f.cpu_size:=size;
txt(2):=0; readstring(z,txt,1);
for i:=1,2 do cpu.cpu_f.cpu_trm(i):=txt(i);
txt(2):=0; readstring(z,txt,1);
for i:=1,2 do cpu.cpu_f.cpu_rec(i):=txt(i);
txt(2):=0; readstring(z,txt,1);
for i:=1,2 do cpu.cpu_f.cpu_data(i):=txt(i);
end for cpu;
close(z,true);
if true then list_cpu_table(out);
end initialize cpu_table;
end;
end;
▶EOF◀