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

⟦5e6e48d24⟧ TextFile

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

Derivation

└─⟦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⟧ 

TextFile



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