[net.micro.amiga] Problem with Amigaterm.c and Lattice 3.03

AFA-DFSEC@caip.UUCP (01/22/86)

From: AFA-DFSEC@GUNTER-ADAM.ARPA

I was recently trying to implement kermit protocals into Michael Mounier's
Amigaterm.  I compiled it with 3.03 and got no error messages but when the
program fired up I got a CLI TASK HELD error and then a guru meditation number.

I checked through the code, even tried recompiling the original with the same
results.  I have narrowed it down to the Serial Port stuff but am stuck there.

If I take out the OPen serial all works fine, or if I take out the SetMenuStrip
all works fine.  Any ideas would be nice.  If I get this problem overcome I
gladly post Amigaterm with Kermit protocals.

By the way, Aterm does compile under 3.02 but my kermit code does not. It gets
a CZXERR in pass 2.  HWELP!!
Glenn Watt
-------

cem@intelca.UUCP (Chuck McManis) (01/22/86)

I have the same problem, any hints from Amiga or Lattice on what they 
may have changed in the SetMenuStrip call between V3.02 and V3.03?

--Chuck

> From: AFA-DFSEC@GUNTER-ADAM.ARPA
> 
> I was recently trying to implement kermit protocals into Michael Mounier's
> Amigaterm.  I compiled it with 3.03 and got no error messages but when the
> program fired up I got a CLI TASK HELD error and then a guru meditation number.
> 
> I checked through the code, even tried recompiling the original with the same
> results.  I have narrowed it down to the Serial Port stuff but am stuck there.
> 
> If I take out the OPen serial all works fine, or if I take out the SetMenuStrip
> all works fine.  Any ideas would be nice.  If I get this problem overcome I
> gladly post Amigaterm with Kermit protocals.
> 
> By the way, Aterm does compile under 3.02 but my kermit code does not. It gets
> a CXERR in pass 2.  HWELP!!
> Glenn Watt
> -------

-- 
                                            - - - D I S C L A I M E R - - - 
{ihnp4,fortune}!dual\                     All opinions expressed herein are my
        {qantel,idi}-> !intelca!cem       own and not those of my employer, my
 {ucbvax,hao}!hplabs/                     friends, or my avocado plant. :-}

cem@intelca.UUCP (01/27/86)

Concerning the difficulty of compiling the AmigaTerm program with
V3.03 of the Lattice C compiler. There is a bug in the code generator
that causes it to miscompile &varptr[n+1] (Oh why is C such a bear to
compile?) change the two lines in AmigaTerm that use this syntax to 
&varptr[n]+1 and it works fine. 

And so it goes,

--Chuck
-- 
                                            - - - D I S C L A I M E R - - - 
{ihnp4,fortune}!dual\                     All opinions expressed herein are my
        {qantel,idi}-> !intelca!cem       own and not those of my employer, my
 {ucbvax,hao}!hplabs/                     friends, or my avocado plant. :-}

rick@anasazi.UUCP (Rick Coupland) (01/28/86)

I also had problems compiling Amigaterm using version 3.03 of the Lattice
C compiler.  I was finaly able to track this problem down to a bug in
the compiler which was incorrectly compiling experssions of the form
"&array[var+con]".  I have notified Lattice of this bug and presumable it will
be fixed in the next release.

I was able to get around the problem in Amigaterm by changing the routines
"InitFileItems" and "InitRSItems" to use pointer variables rather than
arrays with a variable subscript.  If anyone would like a copy of my modified
versions of these routines, reply by mail and I will send it.

The following is a copy of the test program which I sent to Lattice which
illustrates the bug which was causing the problems with Amigaterm:
-------------------------------------------------------------------------------
/* Test program to demonstrate a bug in version 3.03 of the amiga
   Lattice C compiler                                              */

/* Compile this program and look at the object file with OMD.
   The compiler generates code which calculates an incorrect value
   for the pointer which is being assigned to xl[n].ptr             */

struct xyz {
      struct xyz *ptr;
      short value;
};

struct xyz xl[5];

main()
{
   short n;

   for (n=0; n<4; n++) {

/* The following line compiles incorrectly */
      xl[n].ptr = &xl[n+1];

      xl[n].value = 5*n;
   }
   printf("%x, %x, %x, %x\n",&xl[1],&xl[2],&xl[3],&xl[4]);
   for (n=0; n<4; n++)
      printf("xl[%d].ptr = %x\n",n,xl[n].ptr);
}

bill@dayton.UUCP (Bill Argyros) (02/06/86)

In article <506@anasazi.UUCP> rick@anasazi.UUCP (Rick Coupland) writes:
>
>I also had problems compiling Amigaterm using version 3.03 of the Lattice
>C compiler.  .....

	Could one of you who have Amigaterm.c please send me the
source.  We must have come on-line (on-net?) after it was
posted.
	Please mail responses to me rather than re-post the source.

Thanks...

-- 

UUCP: ihnp4!rosevax!dayton!bill         Bill Argyros
ATT : (612) 375-6651                    Dayton Hudson Department Store Company
                                        700 on the Mall
                                        Mpls, Mn. 55408