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

⟦7e9e12eda⟧ TextFile

    Length: 7680 (0x1e00)
    Types: TextFile
    Names: »retmstat4tx «

Derivation

└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
    └─⟦75ff9bef3⟧ 
        └─⟦this⟧ »retmstat4tx « 

TextFile

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◀