|
|
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: 6912 (0x1b00)
Types: TextFile
Names: »pttxt «
└─⟦9ccaf6601⟧ Bits:30008165 Bånd med SW8000 kildetekst/release værktøjer
└─⟦f546e193b⟧
└─⟦this⟧ »pttxt «
****** Program til udskrift af testoutput fra tascat ******
begin
zone z(128,1,end_file);
integer field type,besked_adr,besked_lgd,corout_nr,b_prio,
c_prio,wait_time,semafor_nr,akt_cor_nr,
proc_nr,param,cause,status_w;
long field klok,wait_select;
long array field document;
integer array field besked;
integer i,max_seg,min_tid_seg,seg;
long tid,min_tid,oldklok;
real t;
real array inname(1:2);
boolean stop;
integer array tail(1:10);
procedure end_file(z,s,b);
zone z;
integer s,b;
begin
if s extract 1=1 then
stderror(z,s,b)
else
if (s shift (-18)) extract 1=1 then
begin
setposition(z,0,1);
inrec6(z,512);
b:=512;
end
else
stderror(z,s,b);
end;
procedure print_rec(max_rec);
value max_rec;
integer max_rec;
begin
integer rec;
rec:=0;
repeat
inrec6(z,16);
rec:=rec+1;
if (z.klok>=oldklok) or (z.type<3) then
begin
if z.type>2 then
begin
write(out,<:<'nl'>:>,<<dddddddd>,z.klok-oldklok);
oldklok:=z.klok;
end
else
write(out,<:<'nl'> :>);
if z.type=0 then
begin
write(out,<: nul record stop:>);
end;
if z.type=1 then
begin
write(out,<: s-data :>);
for i:=1 step 1 until 7 do
write(out,<<-ddddddd>,z.besked(i));
end;
if z.type=2 then
begin
write(out,<: w-data :>);
for i:=1 step 1 until 7 do
write(out,<<-ddddddd>,z.besked(i));
end;
if (z.type=4) or (z.type=5) then
begin
write(out,<: signal :>);
write(out,<<-ddddddd>,z.akt_cor_nr,z.semafor_nr,
z.besked_adr,z.besked_lgd,z.b_prio);
end;
if z.type=8 then
begin
write(out,<: wait :>);
write(out,<<-ddddddd>,z.akt_cor_nr,z.semafor_nr,
z.wait_time,z.wait_select);
end;
if (z.type=16) or (z.type=18) then
begin
write(out,<: wait-exit :>);
write(out,<<-ddddddd>,z.akt_cor_nr,z.semafor_nr,
z.besked_adr,z.besked_lgd,z.c_prio);
end;
if z.type=64 then
begin
write(out,<: cor-to-sem:>);
write(out,<<-ddddddd>,z.corout_nr,z.semafor_nr);
end;
if z.type=128 then
begin
write(out,<: activate :>);
write(out,<<-ddddddd>,z.corout_nr);
end;
if (z.type=1024) then
begin
write(out,<: stop :>);
end;
if (z.type=1025) then
begin
write(out,<: trap :>);
write(out,<<-ddddddd>,z.akt_cor_nr,z.proc_nr,
z.param,z.cause);
end;
if (z.type=1026) then
begin
write(out,<: give_up :>);
write(out,<<-ddddddd>,z.akt_cor_nr,z.proc_nr,
z.param,z.status_w);
end;
if (z.type=1027) then
begin
write(out,<: document :>);
write(out,z.document);
end;
if (z.type=1028) then
begin
write(out,<: cont :>);
write(out,<<-ddddddd>,z.akt_cor_nr,z.proc_nr,
z.param);
end;
if (z.type=1029) then
begin
write(out,<: trace :>);
write(out,<<-ddddddd>,z.akt_cor_nr,z.proc_nr,
z.param,z.cause,z.status_w);
end;
if (z.type=1030) then
begin
write(out,<: message :>);
write(out,<<-ddddddd>,z.akt_cor_nr,z.proc_nr,z.param);
end;
end;
until ((z.type>2) and (oldklok>z.klok)) or
(z.type=1024) or (max_rec=rec) or (z.type=0);
end;
type:=besked:=document:=2;
proc_nr:=besked_adr:=corout_nr:=4;
param:=besked_lgd:=wait_select:=6;
cause:=b_prio:=c_prio:=wait_time:=8;
status_w:=semafor_nr:=10;
akt_cor_nr:=12;
klok:=16;
system(4,1,inname);
open(z,4,inname,1 shift 18);
monitor(42,z,0,tail);
max_seg:=tail(1)-1;
inrec6(z,16);
tid:=z.klok;
write(out,<:<10>Segments in testfile: :>,max_seg+1,<:<10>:>);
oldklok:=z.klok;
write(out,<:Test start: :>,<< dd dd dd>,
systime(4,z.klok/10000,t),t,<:<10>:>);
setposition(z,0,0);
print_rec(32);
min_tid:= (extend (-1)) shift (-1); <* Max long *>
min_tid_seg:=0;
seg:=1;
stop:=false;
while (seg<=max_seg) and -,stop do
begin
setposition(z,0,seg);
inrec6(z,16);
while (z.type=1) or (z.type=2) do
inrec6(z,16);
if z.type=0 then
stop:=true
else
if z.klok<min_tid then
begin
min_tid:=z.klok;
min_tid_seg:=seg;
end;
seg:=seg+1;
end;
if min_tid_seg>0 then
begin
write(out,<:<10><10>:>,"-",79,<:<10>:>);
write(out,<:Start segment: :>,min_tid_seg,<:<10>:>);
setposition(z,0,min_tid_seg);
print_rec(max_seg*32);
end;
close(z,true);
end;
*******************************************************************************
Udskrift format:
<tid siden start> <navn> <data>
<data> afhænger af <navn> som følgende:
s-data: data ord 1 til data ord 7.
w-data: data ord 1 til data ord 7.
signal: aktuel korutine nummer,
semafor nummer,
besked adresse,
besked længde,
besked prioritet.
wait: aktuel korutine nummer,
semafor nummer,
wait time,
wait select.
wait-
exit: aktuel korutine nummer,
semafor nummer,
besked adresse,
besked længde,
korutine prioritet.
cor-to-
sem: korutine nummer,
semafor nummer.
activate: korutine nummer.
trap: aktuel korutine nummer,
procedure nummer,
parameter,
cause.
give-up: aktuel korutine nummer,
procedure nummer,
parameter,
status word.
document: document navn
cont: aktuel korutine nummer,
procedure nummer,
forrige trap procedure nummer.
trace: aktuel korutine nummer,
parameter 1,
parameter 2,
parameter 3,
parameter 4.
message: aktuel korutine nummer,
fra procedure nummer,
årsag.
stop:
nul stop:
-------------------------------------------------------------------------------
Er aktuel korutine nummer negativ er korutinen i disable mode
under genereringen af test record'en
*******************************************************************************
▶EOF◀