From:	ADVAX::"mcnc!WKUVX1.BITNET!MACRO32" 26-MAY-1991 14:23:23.09
To:	MACRO32@WKUVX1.BITNET
CC:	
Subj:	Re: UNMACRO now available from MACROSRV@WKUVX1.BITNET

Received: by ADVAX.DECnet (utk-mail11 v1.5) ; Sun, 26 May 91 14:21:31 EDT
Received:  from mcnc by ge-dab.GE.COM (5.61/GE-DAB 1.15) with UUCP
	id AA08300 for ; Sun, 26 May 91 14:09:38 -0400
Received: from UKCC.uky.edu by mcnc.mcnc.org (5.59/MCNC/3-21-91)
	id AA09285; Sun, 26 May 91 13:46:35 -0400
	for ARISIA.DNET.ge.com!EVERHART
Received: from ukcc.uky.edu by UKCC.uky.edu (IBM VM SMTP V2R1)
   with BSMTP id 3452; Sun, 26 May 91 13:46:02 EST
Received: from UKCC by ukcc.uky.edu (Mailer R2.07) with BSMTP id 1610; Sun, 26
 May 91 13:45:46 EST
Received: from WKUVX1.BITNET by ukcc.uky.edu (Mailer R2.07) with BSMTP id 1573;
 Sun, 26 May 91 13:45:13 EST
Received: from vm.uni-c.dk (MAILER) by WKUVX1 (MX V2.2-2) with BSMTP; Sun, 26
          May 1991 12:39:19 CDT
Received: from NEUVM1 by vm.uni-c.dk (Mailer R2.07) with BSMTP id 3617; Sun, 26
          May 91 19:33:12 DNT
Received: from danpost.uni-c.dk by vm.uni-c.dk (IBM VM SMTP V2R1) with TCP;
          Sun, 26 May 91 19:33:11 DNT
Received: from vms2.uni-c.dk by danpost.uni-c.dk (5.65/1.34) id AA11555; Sun,
          26 May 91 17:26:59 GMT
Date: Sun, 26 May 91 19:35 +0200
From: ECOAV@ecostat.aau.dk
Reply-To: mcnc!WKUVX1.BITNET!MACRO32
Subject: Re: UNMACRO now available from MACROSRV@WKUVX1.BITNET
To: MACRO32@WKUVX1.BITNET
Message-Id: <6CE6BCC0285F0010C3@vms2.uni-c.dk>
X-Envelope-To: MACRO32@WKUVX1.BITNET
X-Vms-To: UNIL63::IN%"MACRO32@WKUVX1.BITNET"
 
>I have had problems with access violations from DISASS (the Pascal
>program)---there seem to be pointer problems in init_map().  If I
>can track these down (or somebody out there can tell me what to do)
>it'll be available too.  I'm still working on getting DISM32 ready.
 
The access violations was rather easy to remove. There were a few
horrible PASCAL programming errors in INIT_MAP. My changes are
following. But even with theses changes can I not get it to produce
anything (the documentation is nopresent).
 
                                                            Arne
 
PS: I assume you have DIFF and PATCH up and running !
 
Arne Vajhxj                             Internet: ECOAV@ECOSTAT.AAU.DK
Institute of Economics and Statistics   PSI:      DATAPAX.23830211371400::ECOAV
Aarhus University
Denmark
 
================================================================================
 
*** disass.pas;-0
--- disass.pas
**************
*** 1473,1478
        flags,
        vbn:            unsigned;
        first:          boolean;
 
      begin
        first := true;
--- 1473,1479 -----
        flags,
        vbn:            unsigned;
        first:          boolean;
+       tmp : boolean;
 
      begin
        first := true;
**************
*** 1507,1513
                p^.addr := image_start + (vbn-1)*512;
                if test_mode then
                  writeln( hex(p^.first,8), ' to', hex(p^.last), ', VBN: ', vbn:
 1 );
!               if (map_list = nil) or (map_list^.first > p^.first) then
                  begin
                  p^.next := map_list;
                  map_list := p;
--- 1508,1514 -----
                p^.addr := image_start + (vbn-1)*512;
                if test_mode then
                  writeln( hex(p^.first,8), ' to', hex(p^.last), ', VBN: ', vbn:
 1 );
!               if (map_list = nil) then
                  begin
                  p^.next := map_list;
                  map_list := p;
**************
*** 1514,1519
                  end
                else
                  begin
                  h2 := map_list;
                  repeat
                    h1 := h2;
--- 1515,1525 -----
                  end
                else
                  begin
+                 if (map_list^.first > p^.first)  then
+                 begin
+                 p^.next := map_list;
+                 map_list := p;
+                 end else begin
                  h2 := map_list;
                  repeat
                    h1 := h2;
**************
*** 1518,1524
                  repeat
                    h1 := h2;
                    h2 := h2^.next;
!                 until (h2 = nil) or (h2^.first > p^.first);
                  p^.next := h2;
                  h1^.next := p;
                  end;
--- 1524,1535 -----
                  repeat
                    h1 := h2;
                    h2 := h2^.next;
!                   tmp:=false;
!                   if (h2 = nil) then
!                      tmp:=true
!                   else
!                      if (h2^.first > p^.first) then tmp:=true;
!                 until tmp;
                  p^.next := h2;
                  h1^.next := p;
                  end;
**************
*** 1521,1526
                  until (h2 = nil) or (h2^.first > p^.first);
                  p^.next := h2;
                  h1^.next := p;
                  end;
                if odd(flags div 1024) then             { ISD$V_FIXUPVEC }
                  begin
--- 1532,1538 -----
                  until tmp;
                  p^.next := h2;
                  h1^.next := p;
+                 end;
                  end;
                if odd(flags div 1024) then             { ISD$V_FIXUPVEC }
                  begin
