[comp.sys.amiga.tech] Compiling for 68020/68881 with Manx

ng@maxwell.physics.purdue.edu (Nicholas J. Giordano) (04/10/89)

I recently succeeded in getting my Lucas board to work in my A1000,
and I have been comparing some benchmark tests to the results I got
with a 68000 installed.  While the machine now runs faster, I do not
get nearly the speed increase quoted in the Transactor article.
In addition, the benchmark programs on the Lucas disk do not run
as fast as advertised (they are about a factor of 10-20 slower than
given in the article, and about a factor of 2 faster than with the
68000).

I have an A1000 with 1/2 MB and one external floppy.  The Lucas board
is running at 20 MHz (with 16 MHz parts).  I am using Workbench 1.3,
and I believe that all the standard libraries are in the libs directory.
I am compiling with Manx 3.6a, and have tried using the +2 and +f8
compiler switches, with either ma.lib or mt.lib (in all cases I have
used 16 bit ints, small code and small data models).  When I use
the +2 and +f8 switches, everyting seems to compile and link fine,
but the machine crashes.

Any suggestions would be greatly appreciated.

Nick

daveh@cbmvax.UUCP (Dave Haynie) (04/10/89)

in article <2125@pur-phy>, ng@maxwell.physics.purdue.edu (Nicholas J. Giordano) says:

> I am compiling with Manx 3.6a, and have tried using the +2 and +f8
> compiler switches, with either ma.lib or mt.lib (in all cases I have
> used 16 bit ints, small code and small data models).  When I use
> the +2 and +f8 switches, everyting seems to compile and link fine,
> but the machine crashes.

First check to see that your 68881 is really being seen by the system.  If
you have a copy of SetCPU, it'll tell you.  So will a GURU "B", for F-Line
emulation exception, most probably.  If everything's really working, you
should try using the "m8.lib" family of libraries with the +f8 option.

> Nick
-- 
Dave Haynie  "The 32 Bit Guy"     Commodore-Amiga  "The Crew That Never Rests"
   {uunet|pyramid|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
              Amiga -- It's not just a job, it's an obsession

ng@maxwell.physics.purdue.edu (Nicholas J. Giordano) (04/12/89)

In article <6560@cbmvax.UUCP> daveh@cbmvax.UUCP (Dave Haynie) writes:
>in article <2125@pur-phy>, ng@maxwell.physics.purdue.edu (Nicholas J. Giordano) says:
>
>> I am compiling with Manx 3.6a, and have tried using the +2 and +f8
>> ---- stuff deleted ----
>> but the machine crashes.
>
>First check to see that your 68881 is really being seen by the system.  If
>you have a copy of SetCPU, it'll tell you.  So will a GURU "B", for F-Line
>emulation exception, most probably.  If everything's really working, you
>should try using the "m8.lib" family of libraries with the +f8 option.

Thanks for the tip - I ran setcpu and as you suspected the system is
not seeing the 68881.

It is seeing the 68020 though.  I didn't think that the Lucas board would
boot up if the 68881 doesn't show some signs of life, but maybe that
is not the case.  Also, I do not get a GURU "B" - instead I get an type
"D" GURU.

Any more help or suggestions would be greatly appreciated.

Nick

daveh@cbmvax.UUCP (Dave Haynie) (04/18/89)

in article <2135@pur-phy>, ng@maxwell.physics.purdue.edu (Nicholas J. Giordano) says:

> Thanks for the tip - I ran setcpu and as you suspected the system is
> not seeing the 68881.

> It is seeing the 68020 though.  I didn't think that the Lucas board would
> boot up if the 68881 doesn't show some signs of life, but maybe that
> is not the case.  Also, I do not get a GURU "B" - instead I get an type
> "D" GURU.

I'm kind of surprised it works myself.  I guess when Exec does it's '881
test, it's just checking to see if an '881 instruction actually works, not
what kind of exception is actually taken if it doesn't work.

Here's the trick.  Normally, the 68020 expects a 68881 to respond to any
68881 instruction, whether it's there or not.  If someone else responds, or
if the 68881 hookup is somehow in trouble, you'll get the "D" GURU, which is
a Coprocessor Protocol Violation exception.  If you really meant to run
without a 68881 in a system, you'd have to decode for a 68881 and generate
a bus error when the '881 is accessed.  That causes the '020 to generate the
F-line exception (a "B" GURU if there's no handler for it) just like a
68000 would.

Since you're trying to use the '881, you need to get it actually working.
There's really not all that much I can tell here about what your '881 is
doing wrong.  First thing I'd check would be the connections to it and
to the logic that creates the '881 chip select.  Something is generating 
the DSACK(s) for that '881 cycle.  First thing I'd look for is the 68881
chip select being made OK.  Next, make sure that both DSACKs and all the
proper address lines are connected.  If it still doesn't work, check all
other connections.  I really can't suggest much else without more info.

> Any more help or suggestions would be greatly appreciated.

> Nick
-- 
Dave Haynie  "The 32 Bit Guy"     Commodore-Amiga  "The Crew That Never Rests"
   {uunet|pyramid|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
              Amiga -- It's not just a job, it's an obsession