|
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: 33024 (0x8100) Types: TextFile Names: »crashtxt «
└─⟦9ccaf6601⟧ Bits:30008165 Bånd med SW8000 kildetekst/release værktøjer └─⟦40b1eb8cd⟧ └─⟦this⟧ »crashtxt «
begin <* %W% (RC International) %G% *> integer field i,t,s,c,f,j,ver1,ver2; integer type,l,time,coru,fourth,old,e,file,block,rest,segno,top_seg,low_seg, lno,maxno,p,q,last_rec,first_rec,x,y,masker,fra,til, next_first, tas_top_dump,menu_top_dump,first_menu_dump,first_tas_dump, d_date,d_time,w0,w1,w2,w3,d_ic, vers_d,vers_t,first_code,first_proc,last_proc, noprint_max, area_table_base, area_table_top, tdescr_pool, tdescr_size, used_tdescr, cl_var, buffer_index, pool_index; long field st,tim; integer array tail(1:10),m_val(1:30,1:30),maxtrue(1:30), buffer_table(1:10,1:4), pool_table(1:10,1:6); long min_time,old_time,t_dif; boolean ch,stk,eb,stop,outfile,next_or_prev,print_menu_name,print_tas_name, to_from; boolean array maske(1:30,1:30), noprint(0:1000); long array p_name,foname,finame(1:3); real r,v,start_up; real array txt(1:300), buffer_name, pool_name(0:10); zone zo,z(128,1,stderror); zone mdmpz(5000,1,stderror); zone tdmpz(1024,1,stderror); procedure read_command; begin boolean end_init,end_felt,end_maske; integer c,i,j,mno,fno,p; end_init:=false; next_or_prev:=false; to_from:=true; repeat write(out,<:(?,l,c,m,n,p,k,f,t,o,s,d,a,b,q,+,-,<nl>) -> :>); setposition(out,0,0); skip_sp(c); if c >= '0' and c<='9' then begin repeatchar(in); c:=10; to_from:=false; end else begin if c <> '?' then begin i:=c; while i<>10 do readchar(in,i); <* skip resten af linien *> end; end; if c = 'l' then begin <* list masker *> if masker=0 then write(out,<:ingen masker <10>:>) else begin write(out,<: :>, <: type, coru, fourth, p1, p2, p3, p4<10>:>); for i:=1 step 1 until masker do begin write(out,<:<10>maske :>,<< dd>,i,<: : :>); for j:=1 step 1 until 7 do if maske(i,j) then write(out,<< ddddd>,m_val(i,j),<:, :>) else write(out,<: , :>); end; outchar(out,10); end; end else if c = 'c' then begin <* clear maske *> for i:=1 step 1 until 30 do for j:=1 step 1 until 30 do maske(i,j):=false; for i:=1 step 1 until 30 do maxtrue(i):=0; masker:=0; end else if c = 'm' then begin <* sæt maske *> mno:=0; write(out,<: :>, <: type, coru, fourth, p1, p2, p3, p4<10>:>); end_maske:=false; repeat <* et gennemløb for hver maske *> fno:=0; mno:=mno+1; write(out,<:maske :>,<< d>,mno,<: - :>); setposition(out,0,0); end_felt:=false; repeat <* et gennemløb for hvert felt *> skip_sp(c); if c<>10 then repeatchar(in); if c = 10 then begin if mno-1>masker then masker:=mno-1; if fno=0 then end_maske:=end_felt:=true else end_felt:=true; end else if c = '*' then begin <* tom felt *> fno:=fno+1; maske(mno,fno):=false; readchar(in,c); end else if c<'0' or c>'9' then begin write(out,<:*** forkert felt<10>:>); mno:=mno-1; readchar(in,c); end else begin read(in,p); repeatchar(in); fno:=fno+1; maske(mno,fno):=true; m_val(mno,fno):=p; if p > maxtrue(mno) then maxtrue(mno):=fno; end; until end_felt; until end_maske; end else if c = 'k' then begin for i:=0 step 1 until noprint_max do noprint(i):=false; end else if c = 'n' then begin write(out,<:noprint liste : :>); setposition(out,0,0); repeat skip_sp(c); if c <> 10 then begin repeatchar(in); read(in,i); repeatchar(in); if i<=noprint_max then begin if i>0 then begin j:=i; noprint(i):=true; end else begin i:=-i; for j:=j+1 while j<=i do noprint(j):=true; end; end else begin write(out,<:<10>number out of range<10>:>); setposition(out,0,0); end; end; until c=10; end else if c = 'p' then begin for i:=0 step 1 until noprint_max do begin if noprint(i) then begin write(out,<< d>,i); j:=i; for j:=j+1 while noprint(j) do; if j > i+1 then begin i:=j-1; write(out,<<-d>,-i); end; end end; write(out,<:<10>:>); end else if c = 'f' then begin write(out,<:Fra (:>,<< d>,fra,<:) : :>); setposition(out,0,0); skip_sp(c); if c <> 10 then begin repeatchar(in); read(in,fra); end; end else if c = 't' then begin write(out,<:Til (:>,<< d>,til,<:) : :>); setposition(out,0,0); skip_sp(c); if c <> 10 then begin repeatchar(in); read(in,til); end; end else if c = 'o' then begin write(out,<:Output file : :>); setposition(out,0,0); readchar(in,c); if c = 10 then begin outfile:=false; outchar(zo,25); close(zo,true); end else begin repeatchar(in); readstring(in,foname,1); open(zo,4,foname,0); outfile:=true; end; end else if c = '+' then begin next_first:=last_rec; next_or_prev:=true; end_init:=true; end else if c = '-' then begin next_first:=first_rec-18; next_or_prev:=true; end_init:=true; end else if c = '?' then begin skip_sp(c); if c = 10 then write(out,<: l list masker c clear masker m sæt masker n sæt noprint p list noprint k slet noprint f sæt Fra t sæt Til o sæt navn på outputfil s list startup version firstproc d print fra menu dump a print fra tas dump q quit + list næste 20 test records - list forrige 20 test records nl list udvalgte test records :>) else if c = 'l' then write(out,<:lister søgemasker<10>:>) else write(out,<:ikke beskerver endnu<10>:>); i:=c; while i<>10 do readchar(in,i); <* skip resten af linien *> end else if c = 's' then begin if outfile then write(zo,<:<10>start - up :>, << dd dd dd>,systime(4,start_up,start_up),start_up, <:<10>version :>,vers_d,vers_t, <:<10>first code = :>,<< ddddddd>,first_code, <:<10>first proc = :>,<< ddddddd>,first_proc, <:<10>last proc = :>,<< ddddddd>,last_proc,<:<10>:>) else write(out,<:<10>start - up :>, << dd dd dd>,systime(4,start_up,start_up),start_up, <:<10>version :>,vers_d,vers_t, <:<10>first code = :>,<< ddddddd>,first_code, <:<10>first proc = :>,<< ddddddd>,first_proc, <:<10>last proc = :>,<< ddddddd>,last_proc,<:<10>:>); end else if c = 'd' then begin if outfile then print_menu_dump(zo) else print_menu_dump(out); end else if c = 'a' then begin print_tas_dump; end else if c = 'b' then begin write(out,<:buffer tabel:<10>:>, string buffer_name(0), <: first last S left<10>:>); for i:=1 step 1 until buffer_index do write(out,string buffer_name(i), << dddddd>, buffer_table(i,1), buffer_table(i,2), buffer_table(i,4), buffer_table(i,3),<:<10>:>); write(out,<:<10>pool table:<10>:>, string pool_name(0), <: pool N S first last left<10>:>); for i:=1 step 1 until pool_index do write(out,string pool_name(i), << dddddd>, pool_table(i,1), << ddd>, pool_table(i,2), pool_table(i,3), << dddddd>,pool_table(i,4), pool_table(i,5), pool_table(i,6),<:<10>:>); end else if c = 10 then end_init:=true else if c = 'q' then goto FIN; until end_init; end; procedure skip_sp(c); integer c; begin repeat readchar(in,c); until c<>32; end; procedure print_menu_dump(zout); zone zout; begin boolean end_pd; integer c,i,addr,la,fi,lin,nxt,ant; boolean array field ee; integer array field ia; ia:=0; if print_menu_name then begin write(out,<:menu dump fil navn : :>); setposition(out,0,0); readstring(in,p_name,1); open(mdmpz,4,p_name,0); monitor(42,mdmpz,i,tail); menu_top_dump:=tail(1); inrec6(mdmpz,18); first_menu_dump:=mdmpz.ia(1); d_date:=mdmpz.ia(2); d_time:=mdmpz.ia(3); w0:=mdmpz.ia(4); w1:=mdmpz.ia(5); w2:=mdmpz.ia(6); w3:=mdmpz.ia(7); d_ic:=mdmpz.ia(9); print_menu_name:=false; end; end_pd:=false; repeat write(out,<:MENU (d,l,c,a,s,t,p,?<nl>) -> :>); setposition(out,0,0); skip_sp(c); if c <> '?' then begin i:=c; while i<>10 do readchar(in,i); <* skip resten af linien *> end; if c = 'd' then begin write(zout,<:<10>first_proc :>,<< -dddddd>,first_menu_dump, <:<10>version :>,d_date,d_time, <:<10>w0 :>,w0, <:<10>w1 :>,w1, <:<10>w2 :>,w2, <:<10>w3 :>,w3, <:<10>ic :>,d_ic,<:<10>:>); end else if c = 'l' then begin integer array cdsr(1:pool_table(3,2)); integer nxt, s, c_pool, i; c_pool:=pool_table(3,1); nxt:=c_pool+8; s:=pool_table(3,3); for i:=1 step 1 until pool_table(3,2) do begin cdsr(i):=nxt; nxt:=nxt+s; end; write(out,<:link : :>); setposition(out,0,0); read(in,addr); if addr<>0 and addr < first_proc then addr:=cdsr(addr)+332; if menu_dump_pos(mdmpz,addr,48) then write(zout,<:link :>,<< dddd>,addr, <: (:>,addr - first_menu_dump,<:):>, <:<10>operation :>,mdmpz.ia(1),mdmpz.ia(2),mdmpz.ia(3), <:<10>reserve :>,mdmpz.ia(4),mdmpz.ia(5),mdmpz.ia(6), <:<10>free seg :>,mdmpz.ia(7),mdmpz.ia(8),mdmpz.ia(9), <:<10>cur_op :>,mdmpz.ia(10), <:<10>ident :>,mdmpz.ia(11), <:<10>first_used :>,mdmpz.ia(12) shift (-12),mdmpz.ia(12) extract 12, <:<10>first_free :>,mdmpz.ia(13) shift (-12),mdmpz.ia(13) extract 12, <:<10>segments :>,mdmpz.ia(14),<:<10>:>); end else if c = 'c' then begin integer c_ant; c_ant:=pool_table(3,2); <* antal cdescr *> begin integer array cdsr(1:c_ant); integer nxt, s, c_pool, i; c_pool:=pool_table(3,1); nxt:=c_pool+8; s:=pool_table(3,3); for i:=1 step 1 until c_ant do begin cdsr(i):=nxt; nxt:=nxt+s; end; write(out,<:cdescr : :>); setposition(out,0,0); read(in,addr); if addr <> 0 then begin if addr < first_proc then addr:=cdsr(addr); print_cdescr(zout,addr) end else begin <* list alle *> if menu_dump_pos(mdmpz,c_pool,8) then begin nxt:=mdmpz.ia(4); while nxt<>0 do begin for i:=1 step 1 until c_ant do if cdsr(i)=nxt then cdsr(i):=0; if menu_dump_pos(mdmpz,nxt,8) then nxt:=mdmpz.ia(1) else nxt:=0; end; write(zout,<: cdescr id ic ret st ti nx.ac nx.sm nx.mb<10>:>); for i:=1 step 1 until c_ant do begin if cdsr(i)<>0 then begin if menu_dump_pos(mdmpz,cdsr(i),60) then begin write(zout,<< dddddd>,cdsr(i),<:,:>, << dd>,i,<:::>, << ddd>,mdmpz.ia(5), << dddddd>,mdmpz.ia(1)-first_proc, mdmpz.ia(17)-first_proc, << dd>, mdmpz.ia(4) extract 3, mdmpz.ia(12)); if mdmpz.ia(6)<>mdmpz.ia(7) then write(zout,<< dddddd>,mdmpz.ia(6)) else write(zout,<: :>); if mdmpz.ia(8)<>mdmpz.ia(9) then write(zout,<< dddddd>,mdmpz.ia(8)) else write(zout,<: :>); if mdmpz.ia(10)<>mdmpz.ia(11) then write(zout,<< dddddd>,mdmpz.ia(10)) else write(zout,<: :>); outchar(zout,10); end else goto SL; end; <* end cdsr(i) <> 0 *> end; <* for i:= *> SL: end <* read dump ok *> else write(zout,<:dump area too small<10>:>); end <* list alle *> end <* array block *> end else if c = 'a' then begin write(out,<:area table : base :>, << dd>, area_table_base, <: : top :>, area_table_top, <:<10>:>); write(out,<:første, sidste : :>); setposition(out,0,0); read(in,fi,la); fi:=(fi//10)*10; lin:=0; ee:=0; if la>area_table_top then la:=area_table_top; if menu_dump_pos(mdmpz,area_table_base,area_table_top) then begin for i:=fi step 1 until la do begin if lin mod 10 = 0 then begin write(zout,<:<10>:>,<<ddd>,i,<:: :>); lin:=0; end; write(zout,<< dddd>,mdmpz.ee(i+1) extract 12); lin:=lin+1; end; write(zout,<:<10>:>); end; end else if c = 's' then begin write(out,<:første : :>); setposition(out,0,0); read(in,fi); lin:=0; ee:=0; if menu_dump_pos(mdmpz,area_table_base,area_table_top) then begin for i:=fi, mdmpz.ee(i+1) extract 12 while i<>fi do begin if lin mod 10 = 0 then begin write(zout,<:<10>:>); lin:=0; end; write(zout,<< dddd>,i); if i=4095 then goto slt; lin:=lin+1; end; slt: write(zout,<:<10>:>); end; end else if c = 't' then begin integer array field tdes; real array field uid, tname; integer t_ant; integer array tdsr(1:500); integer nxt, s, t_pool, i; t_pool:=pool_table(5,1); t_ant:=pool_table(5,2); nxt:=t_pool+8; s:=pool_table(5,3); for i:=1 step 1 until t_ant do begin tdsr(i):=nxt; nxt:=nxt+s; end; write(out,<:tdescr : :>); setposition(out,0,0); read(in,addr); if addr <> 0 then begin if addr<first_proc then addr:=tdsr(addr); if menu_dump_pos(mdmpz,addr,tdescr_size) then begin tdes:=0; uid:=tdes+6; tname:=tdes+22; write(zout,<< dddddd>,addr,<:: :>,<< dddddd>, mdmpz.tdes(2),mdmpz.tdes(3), <: :>,mdmpz.uid,<< d>,mdmpz.tdes(10), << ddddd>, mdmpz.tdes(11), << d>,mdmpz.tdes(17), << ddddddd>,mdmpz.tdes(18), <: :>,mdmpz.tname,<:<10>:>); end; end else begin <* list alle *> if menu_dump_pos(mdmpz,cl_var,350) then begin used_tdescr:=mdmpz.ia(89); end; write(zout,<:used tdescr :>,<< dd>,used_tdescr,tdescr_pool, tdescr_size,<:<10>:>); if menu_dump_pos(mdmpz,tdescr_pool,tdescr_size) then begin i:=used_tdescr; while i<>0 do begin tdes:=(i-tdescr_pool); uid:=tdes+6; tname:=tdes+22; write(zout,<< ddd>,i,<: : :>,<< dddddd>,mdmpz.tdes(2),mdmpz.tdes(3), <: :>,mdmpz.uid,<< d>,mdmpz.tdes(10), << ddddd>, mdmpz.tdes(11), << d>,mdmpz.tdes(17), << ddddddd>,mdmpz.tdes(18), <: :>,mdmpz.tname,<:<10>:>); i:=mdmpz.ia(1+(i-tdescr_pool)/2); end end; end end else if c = 'p' then begin write(out,<:first : :>); setposition(out,0,0); read(in,fi); write(out,<:number : :>); setposition(out,0,0); read(in,ant); ia:=0; if menu_dump_pos(mdmpz,fi,ant*2) then begin for i:=1 step 1 until ant do begin write(zout,<< -ddddddd>,mdmpz.ia(i)); if i mod 8 = 0 then outchar(zout,10); end; write(zout,<:<10>:>); end; end else if c = '?' then begin skip_sp(c); if c = 10 then write(out,<: d dump registers l link c cdescr a area table s spool area t terminals p print ? help :>) else write(out,<:ikke beskrevet endnu<10>:>); i:=c; while i<>10 do readchar(in,i); <* skip resten af linien *> end else if c = 10 then end_pd:=true; until end_pd; end; procedure print_cdescr(z,addr); value addr; integer addr; zone z; begin integer array field ia; ia:=0; if menu_dump_pos(mdmpz,addr,60) then write(z,<:cdescr :>,<< -dddddd>,addr, <:<10>ic :>,mdmpz.ia(1), <:<10>prio :>,mdmpz.ia(2), <:<10>t-mask :>,mdmpz.ia(3), <:<10>type :>,mdmpz.ia(4) extract 3, <:<10>ident :>,mdmpz.ia(5), <:<10>run_lst :>,mdmpz.ia(6),mdmpz.ia(7), <:<10>sem_lst :>,mdmpz.ia(8),mdmpz.ia(9), <:<10>mbx_lst :>,mdmpz.ia(10),mdmpz.ia(11), <:<10>:>); end; boolean procedure menu_dump_pos(z,p,l); value p,l; zone z; integer p,l; begin integer segno,r,addr; addr:=p - first_menu_dump; if addr < 0 then begin write(out,<<d>,addr,<: not a core addr<10>:>); menu_dump_pos:=false; end else begin menu_dump_pos:=true; segno:=(addr // 1024) * 2; r:=addr mod 1024; <* write(out,<:seg,rest :>,<< dddd>,segno,r,<:<10>:>); setposition(out,0,0); *> if segno >= menu_top_dump then begin write(out,<:adresse uden for dump<10>:>); menu_dump_pos:=false; end else begin setposition(z,0,segno); inrec6(z,r); inrec6(z,l); end; end; end; procedure print_tas_dump; begin boolean end_pd; integer c,i,addr,la,fi,lin; boolean array field ee; integer array field ia; ia:=0; if print_tas_name then begin write(out,<:tas dump fil navn : :>); setposition(out,0,0); readstring(in,p_name,1); open(tdmpz,4,p_name,0); monitor(42,tdmpz,i,tail); tas_top_dump:=tail(1); print_tas_name:=false; end; end_pd:=false; repeat write(out,<:TAS (t,<nl>) -> :>); setposition(out,0,0); skip_sp(c); i:=c; while i<>10 do readchar(in,i); <* skip resten af linien *> if c = 't' then begin end else if c = 10 then end_pd:=true; until end_pd; end; boolean procedure tas_dump_pos(z,p,l); value p,l; zone z; integer p,l; begin integer segno,r,addr; addr:=p - first_tas_dump; if addr < 0 then begin write(out,<<d>,addr,<: not a core addr<10>:>); tas_dump_pos:=false; end else begin tas_dump_pos:=true; segno:=(addr // 1024) * 2; r:=addr mod 1024; write(out,<:seg,rest :>,<< dddd>,segno,r,<:<10>:>); setposition(out,0,0); if segno >= tas_top_dump then begin write(out,<:adresse uden for dump<10>:>); tas_dump_pos:=false; end else begin setposition(z,0,segno); inrec6(z,r); inrec6(z,l); end; end; end; procedure skip(no); value no; integer no; begin integer i; setposition(z,0,0); rest:=inrec6(z,4); segno:=0; lno:=0; for i:=1 step 1 until no do next(false,false); end; procedure skriv_tegn(zz,t); value t; integer t; zone zz; begin integer ch; for i:=-16,-8,0 do begin ch:=(t shift i) extract 8; if ch<32 or ch>127 then write(zz,<:(:>,<<d>,ch,<:):>) else outchar(zz,ch); end; end; procedure skriv(zout); zone zout; begin integer field i; integer ch; write(zout,<<dddd>,lno,<:. :>); if type<281 then write(zout,string txt(type)) else write(zout,<: :>); write(zout,<<dddd>,type,<: - :>); t_dif := time - old_time; old_time := time; write(zout,<< ddddd>,t_dif); write(zout,<< ddd>,coru extract 12,<:/:>); i:=coru shift (-12); if i < 7 then write(zout, case i+1 of ( <:C,:>, <:D,:>, <:T,:>, <:M,:>, <:W,:>, <:P,:>, <:R,:> ) ) else write(zout,<<d>,i); write(zout, << dddddd>,fourth,<:::>); if type = 101 or type = 275 or type = 278 or type = 279 then begin for i:=2 step 2 until l do begin skriv_tegn(zout,z.i); end; end else if type = 277 or type = 274 then begin write(zout,<:******:>); i:=2; skriv_tegn(zout,z.i); i:=4; write(zout,<< -ddddddd>,z.i); end else if type = 27 or type = 29 then begin i:=2; write(zout,<< -ddddddd>,z.i); i:=4; write(zout,<< -ddddddd>,z.i); i:=6; write(zout,<<dddd>,z.i shift (-12),<:,:>,z.i extract 12); for i:=8 step 2 until l do begin write(zout,<< -ddddddd>,z.i); if i mod 8=0 and i<l then write(zout,<:<10>:>,false add 32,42); end; end else if type = 41 then begin for i:=2 step 2 until l do begin write(zout,<< -ddddddd>,z.i); if (i+8) mod 16=0 and i<l then write(zout,<:<10> :>); end; end else if type = 121 or type = 122 then begin i:=2; write(zout,<<dddd>,z.i shift (-12),<:,:>,z.i extract 12); for i:=4 step 2 until l do begin write(zout,<< -ddddddd>,z.i); if i mod 8=0 and i<l then write(zout,<:<10>:>,false add 32,42); end; end else if type = 124 then begin write(zout,<: :>); for i:=2,4,6,8 do skriv_tegn(zout,z.i); write(zout,<:<10>:>,false add 32,42); for i:=12 step 2 until l do begin write(zout,<< -ddddddd>,z.i); if i = 18 then write(zout,<:<10>:>,false add 32,42); end; end else if type = 130 then begin write(out,<: :>); for i:=2,4,6,8 do skriv_tegn(zout,z.i); write(zout,<:<10>:>,false add 32,42); for i:=12 step 2 until l do begin write(zout,<< -ddddddd>,z.i); end; end else begin for i:=2 step 2 until l do begin write(zout,<< -ddddddd>,z.i); if i mod 8=0 and i<l then write(zout,<:<10>:>,false add 32,42); end; end; outchar(zout,10); end; procedure next(prt,b); value prt,b; boolean prt,b; begin integer array field ia; rep: <* write(out,<:<10>** rest = :>,<< d>,rest,<:<10>:>); *> if rest = 0 then begin if segno = 0 then segno:=low_seg else begin segno:=segno+1; if segno=top_seg then segno:=1; if segno=low_seg then begin l:=0; time:=0; coru:=0; fourth:=0; type:=1023; goto exit_next; end; end; <* write(out,<:<10>** seg = :>,<< d>,segno,<:<10>:>); *> setposition(z,0,segno); rest:=inrec6(z,4); if z.tim = 0 then begin rest:=inrec6(z,rest); goto rep; end; end; if rest<8 then i:=rest else i:=8; rest:=inrec6(z,i); type := z.t extract 12; if type = 0 then begin if rest=0 then goto rep; rest:=inrec6(z,rest); goto rep end; l:=z.t shift (-12); time:=z.s; coru:=z.c; fourth:=z.f; if l>rest then begin write(out,<:<10>trouble :>,l,rest,<:<10>:>); inrec6(z,rest); goto rep; end; rest:=inrec6(z,l); if type=1 then begin if prt then begin r:=z.st/10000; write(out,<:<10>start - up :>, << dd dd dd>,systime(4,r,r),r, <:<10>version :>,z.ver1,z.ver2); start_up := r; vers_d := z.ver1; vers_t := z.ver2; i:=2; write(out,<:<10>first code = :>,<< ddddddd>,z.i); first_code := z.i; i:=12; write(out,<:<10>first proc = :>,<< ddddddd>,z.i); first_proc := z.i; i:=14; write(out,<:<10>last proc = :>,<< ddddddd>,z.i); last_proc := z.i; write(out,false add 10,2); end; goto rep end else if type=40 then begin if b then begin ia:=0; pool_index:=pool_index+1; pool_table(pool_index,1):=z.ia(3); <* pool addr *> pool_table(pool_index,2):=z.ia(1); <* number of elements *> pool_table(pool_index,3):=z.ia(2); <* bufsize *> pool_table(pool_index,4):=z.ia(3)+8;<* first *> pool_table(pool_index,5):=z.ia(3)+6+z.ia(1)*z.ia(2); <* last *> pool_table(pool_index,6):=z.ia(4); <* left *> end; <* goto rep *> end else if type=41 then begin if b then begin ia:=0; cl_var:=fourth; area_table_base:=z.ia(79); area_table_top:=z.ia(80); tdescr_pool:=z.ia(88); tdescr_size:=z.ia(84) - tdescr_pool; end; <* goto rep *> end else if type=44 then begin if b then begin ia:=0; buffer_index:=buffer_index+1; buffer_table(buffer_index,1):=z.ia(2); <* first *> buffer_table(buffer_index,2):=z.ia(3); <* last *> buffer_table(buffer_index,3):=z.ia(4); <* left *> buffer_table(buffer_index,4):=z.ia(3)-z.ia(2)+2; <* size *> end; <* goto rep *> end; exit_next: lno:=lno+1; end next; t:=2; s:=4; c:=6; f:=8; st:=6; ver1:=8; ver2:=10; old:=0; tim:=4; old_time := 0; t_dif:=0; outfile:=false; print_menu_name:=true; print_tas_name:=true; stop:=false; for x:=1 step 1 until 30 do for y:=1 step 1 until 30 do maske(x,y):=false; for x:=1 step 1 until 30 do maxtrue(x):=0; masker:=0; noprintmax:=1000; for i:=0 step 1 until 1000 do noprint(i):=false; buffer_index:=0; pool_index:=0; <*navne array*> for i:=1 step 1 until 280 do txt(i):=real( case i of ( <* 1 *> <:start-up:>,<:start-co:>,<:start :>,<:wait :>,<:pass :>, <* 6 *> <:inspect :>,<:csendmes:>,<:cwaitans:>,<:exit cwa:>,<:cregret :>, <* 11 *> <:signal :>,<:wait sem:>,<:exit ws :>,<:send let:>,<:inspectm:>, <* 16 *> <:wait let:>,<:exit wl :>,<:send mes:>,<:wait buf:>,<:exit wb :>, <* 21 *> <:rel buf :>,<:exit :>,<:answer :>,<:answer a:>,<:message :>, <* 26 *> <:timer sc:>,<:mes arri:>,<:att answ:>,<:tem mess:>,<:rem ans :>, <* 31 *> <:creat co:>,<:remov co:>,<:g open :>,<:g lock :>,<:exit gl :>, <* 36 *> <:wait sle:>,<:exit wsl:>,<:get buf :>,<:answer t:>,<:crt pool:>, <* 41 *> <:cl var :>,<: :>,<: :>,<: :>,<: :>, <* 46 *> <: :>,<: :>,<: :>,<: :>,<:crt link:>, <* 51 *> <:rem link:>,<:adj link:>,<:putop-e :>,<:check op:>,<:releasop:>, <* 56 *> <:get spoo:>,<:get free:>,<:adjust :>,<:rel_cte :>,<:seg io :>, <* 61 *> <:look nam:>,<:in mcl n:>,<:rem mcln:>,<:get mseg:>,<: :>, <* 66 *> <:next :>,<:c spoola:>,<:r spoola:>,<:seg ispo:>,<:ext spoo:>, <* 71 *> <:cut area:>,<:move :>,<:w-error :>,<: :>,<:new term:>, <* 76 *> <:searchth:>,<:in sess :>,<:out sess:>,<:unlink s:>,<:get tdat:>, <* 81 *> <:link th :>,<:ulink th:>,<:link ph :>,<:ulink ph:>,<: :>, <* 86 *> <: :>,<: :>,<: :>,<:rel op e:>,<:put op e:>, <* 91 *> <:get f-cb:>,<:dis term:>,<:con term:>,<: :>,<:put op :>, <* 96 *> <: :>,<: :>,<: :>,<:get abs :>,<: :>, <* 101*> <:userid :>,<:push :>,<:pop :>,<:crt mcl :>,<:var addr:>, <* 106*> <:alloc va:>,<:del var :>,<:set var :>,<:wait :>,<:wait op :>, <* 111*> <:wait ter:>,<:tasc mes:>,<:s-att :>,<:rem ph :>,<:rem th l:>, <* 116*> <:crt user:>,<:crt ph :>,<:mcl exit:>,<:term th :>,<:direct :>, <* 121*> <:input op:>,<:output o:>,<:sim in :>,<:ctrl op :>,<:cont mcl:>, <* 126*> <:answer i:>,<:f8000 in:>,<:send f8 :>,<:f8 read :>,<:term s-w:>, <* 131*> <:signon :>,<:to_from :>,<: :>,<: :>,<: :>, <* 136*> <: :>,<: :>,<: :>,<: :>,<:init_td :>, <* 141*> <:c_read :>,<:c_write :>,<:get t ad:>,<:comp txt:>,<:move txt:>, <* 146*> <:outtext :>,<:c_outtxt:>,<:write :>,<:erase :>,<:cursor :>, <* 151*> <:in_text :>,<:rd_char :>,<:rd pass :>,<:strip nl:>,<:strip sp:>, <* 156*> <: :>,<: :>,<: :>,<: :>,<:run mcl :>, <* 161*> <:end_th :>,<:ex err 1:>,<:ex err 2:>,<:ex err 3:>,<: :>, <* 166*> <: :>,<: :>,<: :>,<: :>,<:next op :>, <* 171*> <:status :>,<: :>,<: :>,<: :>,<: :>, <* 176*> <: :>,<: :>,<: :>,<: :>,<: :>, <* 181*> <:lette.th:>,<:sear.th :>,<:op_mes :>,<:crt ph :>,<: :>, <* 186*> <: :>,<:start rm:>,<: :>,<: :>,<: :>, <* 191*> <: :>,<: :>,<: :>,<: :>,<: :>, <* 196*> <: :>,<: :>,<: :>,<: :>,<:i sysm :>, <* 201*> <:in strg :>,<:in point:>,<:gen sysm:>,<:w sysm :>,<:find ses:>, <* 206*> <:search p:>,<:new pass:>,<:new ses :>,<:rem ses :>,<:brk ses :>, <* 211*> <:kill out:>,<:send att:>,<:get char:>,<: :>,<: :>, <* 216*> <: :>,<: :>,<: :>,<:start sm:>,<:goto ac :>, <* 221*> <: :>,<: :>,<: :>,<: :>,<: :>, <* 226*> <: :>,<: :>,<: :>,<: :>,<: :>, <* 231*> <: :>,<: :>,<: :>,<: :>,<: :>, <* 236*> <: :>,<: :>,<: :>,<: :>,<: :>, <* 241*> <: :>,<: :>,<: :>,<: :>,<: :>, <* 246*> <: :>,<: :>,<: :>,<: :>,<:s rem m :>, <* 251*> <:wait :>,<:term.ph :>,<:wait_op :>,<:cr-l-m :>,<:rm-l-m :>, <* 256*> <:lo-l-m :>,<:de-b-u :>,<:search-l:>,<:sent att:>,<:send inp:>, <* 261*> <:copy :>,<:set nul :>,<:sense-r :>,<:input :>,<:output-s:>, <* 266*> <:start-i :>,<:adj pool:>,<:adj th-l:>,<:send-ctl:>,<:c-mcl :>, <* 271*> <:term-dat:>,<:getid :>,<:res-term:>,<:sim in :>,<:i-date :>, <* 276*> <:answer :>,<:output :>,<:o-date :>,<:s_date :>,<:next_mes:> )); buffer_name(0):=real <: :>; buffer_name(1):=real <:signon :>; buffer_name(2):=real <:term type :>; buffer_name(3):=real <:mcl table :>; buffer_name(4):=real <:segment table :>; buffer_name(5):=real <:area table :>; buffer_name(6):=real <:core table :>; buffer_name(7):=real <:core buffer :>; pool_name(0):=real <: :>; pool_name(1):=real <:systext :>; pool_name(2):=real <:event descr :>; pool_name(3):=real <:cdescr :>; pool_name(4):=real <:terminal :>; pool_name(5):=real <:terminal beskr :>; write(out,<:fil navn : :>); setposition(out,0,0); readstring(in,finame,1); open(z,4,finame,0); monitor(42,z,i,tail); top_seg:=tail(1); min_time:= (extend (-1)) shift (-1); setposition(z,0,1); for i:=1 step 1 until top_seg-1 do begin inrec6(z,512); if min_time > z.tim and z.tim<>0 then begin low_seg:=i; min_time:=z.tim; end; end; <* tæl antal test records *> setposition(z,0,0); rest:=inrec6(z,4); maxno:=0; segno:=0; count: next(false,true); maxno:=maxno+1; if type<>1023 then goto count; setposition(z,0,0); rest:=inrec6(z,4); segno:=0; next(true,false); write(out,<:<10>Antal test records = :>,<< ddd>,maxno,<:<10>:>); setposition(out,0,0); fra:=maxno-18; til:=maxno; repeat read_command; if -,next_or_prev then begin if to_from then begin write(out,<:Fra, Til :>); setposition(out,0,0); end; readchar(in,i); if i = 10 then begin first_rec:=fra; last_rec:=til; end else begin repeatchar(in); read(in,first_rec); read(in,last_rec); end; end else begin first_rec:=next_first; last_rec:=next_first+18; end; if last_rec > maxno then last_rec:=maxno; if first_rec<1 then first_rec:=1; skip(first_rec-1); for q:=first_rec step 1 until last_rec do begin next(false,false); if noprint_max >= type then begin if noprint(type) then begin goto next_rec; end; end; if masker = 0 then begin if outfile then skriv(zo) else skriv(out); end else for x:=1 step 1 until masker do begin if maske(x,1) then begin if m_val(x,1) <> type then goto skrv; end; if maske(x,2) then begin if m_val(x,2) <> coru extract 12 then goto skrv; end; if maske(x,3) then begin if m_val(x,3) <> fourth then goto skrv; end; i:=0; y:=l/2; if 3+y < maxtrue(x) then goto skrv; for p:=4 step 1 until 3+y do begin i:=i+2; if maske(x,p) then begin if (m_val(x,p) <> z.i) then goto skrv; end; end; if outfile then skriv(zo) else skriv(out); goto next_rec; skrv: end; next_rec: if type = 1023 then goto try_next; end; try_next: until false; FIN: end; ▶EOF◀