DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦0ab2de6b2⟧ TextFile

    Length: 3840 (0xf00)
    Types: TextFile
    Names: »tmux«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦this⟧ »tmux« 

TextFile

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◀