|
|
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: »attentiontx«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦80900d603⟧ »giprocfile«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦80900d603⟧ »giprocfile«
└─⟦this⟧
; attention_tx * page 1 27 09 77, 11.26;
; attention
; *********
if listing.yes
char 10 12 10
attention=set 1 disc
attention=algol
external
boolean procedure attention;
____________________________
begin
own integer termaddr, maxwait,
_ sec, att_no, bossaddr;
own boolean init;
boolean io;
integer bufadr, waits, mes_addr, i;
integer array mes_buf(0:11);
real array own_name (0:1);
real time, r;
procedure wait(s);
__________________
value s;
integer s;
begin
comment delay the program in s sec;
zone clock(1, 1, stderror);
integer array sh(1:12);
open(clock, 0, <:clock:>, 0);
get_share(clock, sh, 1);
sh(4):= 0;
sh(5):= s;
set_share(clock, sh, 1);
monitor(16)send_message:(clock, 1, sh);
monitor(18)wait_answer:(clock, 1, sh);
end wait;
\f
comment attention_tx * page 2 27 09 77, 11.26
0 1 2 3 4 5 6 7 8 9 ;
comment initialise;
_ ___________
att_no:= att_no + 1;
if -, init then
begin
real array parentname(0:2);
for i:= 1, i+1 while buf_adr = 0 do
begin
if i mod 10000 = 1000 then
begin
write(out, <:<10>Press attention key:>);
set_position(out, 0, 0);
end;
system(6)any_message:(bufadr, own_name);
end for i;
if system(5)move_core_area:(buf_adr, mes_buf) <> 1
then system(9)run_time_alarm:(buf_adr, <:<10>mes_move:>);
term_addr:= mes_buf(3);
init := true;
att_no := 1;
boss_addr:= system(8)parent description:(i, parentname);
sec := 5;
max_wait := 200;
end if -, init;
comment wait for terminal;
_ __________________
set_position(out, 0, 0);
for waits:= 1, waits + 1 while io do
begin
comment if terminal is not ready then
wait another sec seconds;
integer mes_no, system5, head_addr;
mes_no:= 0;
io:= false;
comment find the start of mes-que for
the extrn. proces with description
address 'term_addr';
if system(5)move_core_area:(term_addr, mes_buf) <> 1
then system(9)run_time_alarm:(term_addr, <:<10>procmove:>);
mes_addr := mes_buf(8);
head_addr:= mes_buf(9);
\f
comment attention_tx * page 3 27 09 77, 11.26
0 1 2 3 4 5 6 7 8 9 ;
for system5:= system(5)move_core_area:(mes_addr, mes_buf)
while mes_buf(0) <> head_addr
and mes_buf(2) = term_addr do
begin
mes_no:= mes_no + 1;
if system5 <> 1 then
system(9)run_time_alarm:(mes_addr, <:<10>mes_move:>);
mes_addr:= mes_buf(0);
io:= io or
abs(mesbuf(3)) = bossaddr;
end for system5;
if io then
begin
if waits>maxwait then
system(9)run_time_alarm:(waits*sec, <:<10>termwait:>);
wait(sec);
end if io;
end for waits;
comment check if attention message;
_ ___________________________
system(6)any_message:(buf_adr, own_name);
if buf_adr>0 then
begin
integer i;
integer array buffer(0:8);
zone z (1, 1, stderror);
monitor(20)wait_message:(z, i, buffer);
attention:= true;
buffer(8):= 1;
monitor (22)send_answer:(z, i, buffer);
end else
attention:= false;
end attention;
end;
if warning.yes
(mode 0.yes
message attention not ok
lookup attention)
▶EOF◀