|
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◀