|
|
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: 7680 (0x1e00)
Types: TextFile
Names: »retmstat4tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »retmstat4tx «
mode list.yes
mainstat5tx=edit mainstat4tx
; split dump in monitor release 80.0
;
l./page ...3/, r/88.09.23/89.07.05/
l./<*9*>/, r/),/,/, l1, i/
<*10*><:addr outside dump area:>),
/, p-1
l./page ...17/, i#
\f
<* fgs 1988.09.23 mainstat page ...16a...*>
procedure position (zdump, first_addr);
value first_addr ;
zone zdump ;
integer first_addr ;
begin
integer segment, relative;
segment :=
seg (zdump, first_addr, relative);
setposition (zdump, 0, segment );
inrec6 (zdump, relative);
end procedure position;
integer
procedure seg (zdump, first_addr, rel);
value first_addr ;
zone zdump ;
integer first_addr, rel ;
begin
own
integer first_addr_low__part, top_addr_low__part,
no_of_segs_low__part,
first_addr_high_part, top_addr_high_part,
no_of_segs_high_part;
integer segment, relative, monrel, no_of_segs_in_dump,
addr_last_w_of_dumptable, first_addr_in_dump,
no_of_words_in_dump, segm_offset;
integer field ifld;
integer array proc (1:10), iadummy (1:1);
\f
<* fgs 1988.09.23 mainstat page ...16b...*>
if testoutput then
write (out,
"nl", 2, <:procedure seg : first addr = :>, first_addr,
"nl", 1, <:seen this dump before = :>,
if seen_this_dump_before then <:true:> else <:false:>);
if not seen_this_dump_before then
begin <*this dumpfile just connected*>
seen_this_dump_before := true;
ifld := 2;
segment := 0;
relative := 64;
setposition (zdump, 0, segment);
inrec6 (zdump, relative );
inrec6 (zdump, 2 );
system (5) move core :(
monitor (4) proc descr addr :(zdump, 0, iadummy), proc);
no_of_segs_in_dump := proc (10);
monrel := zdump.ifld;
if testoutput then
write (out,
"nl", 1, <:monrel = :>, monrel shift (-12), <:.:>, monrel extract 12);
if monrel < 80 shift 12 then
begin <*contigous dump area*>
first_addr_low_part := 0;
no_of_segs_low_part := no_of_segs_in_dump;
top___addr_low_part := no_of_segs_in_dump * 512;
end else
\f
<* fgs 1988.09.23 mainstat page ...16c...*>
begin <*split dump*>
relative := 12;
setposition (zdump, 0, segment);
inrec6 (zdump, relative );
inrec6 (zdump, 2 );
addr_last_w_of_dumptable := zdump.ifld;
relative := addr_last_w_of_dumptable - 8;
if testoutput then
write (out,
"nl", 1, <:addr l w of dumptable = :>, relative);
setposition (zdump, 0, segment);
inrec6 (zdump, relative );
inrec6 (zdump, 2 );
first_addr_low_part := zdump.ifld;
inrec6 (zdump, 2 );
no_of_segs_low_part := zdump.ifld;
top_addr_low_part :=
first_addr_low_part + 512 * no_of_segs_low_part;
inrec6 (zdump, 2 );
first_addr_high_part := zdump.ifld;
inrec6 (zdump, 2 );
no_of_segs_high_part := zdump.ifld;
top_addr_high_part :=
first_addr_high_part + 512 * no_of_segs_high_part;
if testoutput then
write (out,
"nl", 1, <:f. addr low part = :>, first_addr_low_part,
"nl", 1, <:t. addr low part = :>, top___addr_low_part,
"nl", 1, <:n. segs low part = :>, no_of_segs_low_part,
"nl", 1, <:addr. l. w d.tabl = :>, addr_last_w_of_dumptable,
"nl", 1, <:f. addr high part = :>, first_addr_high_part,
"nl", 1, <:t. addr high part = :>, top___addr_high_part,
"nl", 1, <:n. segs high part = :>, no_of_segs_high_part);
end <*split dump*>;
end <*dump file just connected*>;
\f
<* fgs 1988.09.23 mainstat page ...16d...*>
if first_addr >= first_addr_low_part and
first_addr < top___addr_low_part then
begin <*low part*>
first_addr__in_dump := first_addr_low_part;
no_of_words_in_dump := (top_addr_low_part - first_addr) / 2;
segm_offset := 0;
if testoutput then
write (out,
"nl", 1, <:low part ::>,
"nl", 1, <:first addr in dump = :>, first_addr_in_dump,
"nl", 1, <:no of wrds in dump = :>, no_of_words_in_dump,
"nl", 1, <:segment offset = :>, segm_offset);
end else
if first_addr >= first_addr_high_part and
first_addr < top___addr_high_part then
begin <*high part*>
first_addr__in_dump := first_addr_high_part;
no_of_words_in_dump := (top_addr_high_part - first_addr) / 2;
segm_offset := no_of_segs_low_part;
if testoutput then
write (out,
"nl", 1, <:high part ::>,
"nl", 1, <:first addr in dump = :>, first_addr_in_dump,
"nl", 1, <:no of wrds in dump = :>, no_of_words_in_dump,
"nl", 1, <:segment offset = :>, segm_offset);
end else
error (10); <*outside dump*>
segment := segm_offset + (first_addr - first_addr_in_dump) shift (-9);
relative := (first_addr - first_addr_in_dump) extract 9 ;
if testoutput then
write (out,
"nl", 1, <:segment = :>, segment,
"nl", 1, <:relative = :>, relative);
seg := segment;
rel := relative;
end procedure seg;
#
l./page ...17/, r/88.09.23/89.07.05/
l./boolean/, r/testoutput/testoutput, seen_this_dump_before/
l./page ...20/, r/89.01.12/89.07.06/
l./begin <*dump*>/, l3, i/
seen_this_dump_before := false;
/, p-1
l./page ...22/, r/88.09.23/89.07.06/
l./setposition (dz, 0, ia(0)/, d1, i/
position (dz , ia (0));
/, p-2
l./setposition (dz1/, d1, i/
position (dz1, pda );
/, p-2
l./page ...23/, r/88.09.23/89.07.06/
l./inrec6 (dz, 2);/, d1, i/
if main_kind = 80 then
begin
inrec6 (dz, 2); rpd := dz.ifi;
inrec6 (dz, 2); tpd := dz.ifi;
end;
/, p-5
l./setposition (dz, 0, (ia(0)/, d6, i/
position (dz , ia (0) + 2 * devno);
inrec6 (dz , 2 );
pda := dz.ifi ;
position (dz1, pda );
inrec6 (dz1, 2 );
/, p-6
l./inrec6 (dz, 2); rpd :=/, d1, i/
if main_kind = 80 then
begin
inrec6 (dz, 2); rpd := dz.ifi;
inrec6 (dz, 2); tpd := dz.ifi;
end;
/, p-5
l./page ...26/, r/88.09.23/89.07.06/
l./if monrelease > 15 shift/, r/>/>=/
l./page ...27/, r/88.09.23/89.07.06/
l./if monrelease > 15 shift/, r/>/>=/
f
▶EOF◀