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