[comp.sys.amiga] Questions about M68881 FPU

te07+@ANDREW.CMU.EDU.UUCP (09/18/87)

I have just gotten a 68881 for my Amiga which I plugged into my multifunction 
card of my Starboard.  If anyone out there has a similar set up or knows about
it, please send me what you know.  Microbotics provided a MathIEEE library file
to replace the standard Amiga one, but they had no executable examples or
meaningful documentation.  Here are some specific question I have, but feel free
to ramble on(for this reason send mail to me rather than posting).
	- Can you use it like the Motorola User's Manual says it can
	  be used?  Meaning -- can I use floating point opcodes as if it
	  was a regular command?
	- What is the form of BCD floating point?
	- How would you convert from floating point to ASCII and back?
	- Why should I use the libraries rather than address it directly?
Those are some starting questions but please tell me as much as you think
is meaningful.  Also, if you have any examples you could send I would 
apreciate it.

Thanks,

Tom Epperly
****************************************************************
te07@andrew.cmu.edu (ARPANET)
te07%tb.cc.cmu.edu@cmuccvma.bitnet (BITNET)
te07@tb.cc.cmu.edu (CCNET)
te07%tb.cc.cmu.edu@csnet-relay
****************************************************************
te07#%andrew.cmu.edu@seismo.UUCP (so I have been told)

dillon@CORY.BERKELEY.EDU (Matt Dillon) (09/18/87)

>	  be used?  Meaning -- can I use floating point opcodes as if it
>	  was a regular command?

	Not with a 68000.  It *is* possible to write a trap handler for the
illegal instruction, but it would be extremely slow.  Only a 68020 supports
co-processors with actual machine instructions.  I.E. the co-processor must
be mapped for a 68000/10 to be able to use it.

>	- What is the form of BCD floating point?

	No idea.

>	- How would you convert from floating point to ASCII and back?

	No specifics.  Assuming you have the IEEE floating point format
	reference it would be a simple matter to write a small subroutine
	to do it.  The question seems slightly out of place.

>	- Why should I use the libraries rather than address it directly?
>Those are some starting questions but please tell me as much as you think
>is meaningful.  Also, if you have any examples you could send I would 
>apreciate it.

	I assume the support library handles multi-tasking compatibility
to some degree (or is this handled by the OS???).  That Aside, there is
another very good reason to use the library rather than access the chip
directly:  It means you can run your program on any Amiga, with or without 
a 68881.

					-Matt

stever@videovax.Tek.COM (Steven E. Rice, P.E.) (09/21/87)

In article <8709180202.AA07941@cory.Berkeley.EDU>, Matt Dillon
(dillon@CORY.BERKELEY.EDU) writes:

>> 	- What is the form of BCD floating point?


MC68881 Packed Decimal Real format
----------------------------------

        91       80     67                                               0
---------------------------------------------------------------------------
| | |  |  |  |  |      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|S|S|*2| 3-digit|Zero**|  |  |  |  |  |  |  17-digit |  |  |  |  |  |  |  |
|M|E|  |Exponent|      |  |  |  |  |  |  |  Mantissa |  |  |  |  |  |  |  |
| | |  |  |  |  |      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
---------------------------------------------------------------------------
                          ^
                          |_ Implicit decimal point

SM = Sign of the Mantissa
SE = Sign of the Exponent
*2 = Two bits used only for +/- infinity and NANs; zero otherwise
Zero** = Zero unless a binary-to-decimal conversion overflow occurs

This is from the _MC68881 Floating-Point Coprocessor User's Manual_,
First Edition, Motorola (1985).

>> 	- How would you convert from floating point to ASCII and back?
> 
> 	No specifics.  Assuming you have the IEEE floating point format
> 	reference it would be a simple matter to write a small subroutine
> 	to do it.  The question seems slightly out of place.

Conversion between ASCII and Packed Decimal Real is pretty trivial.  The
68881 has the ability to convert between integer and IEEE Floating Point
formats and the Packed Decimal Real format.  The key is that the 68881 is
*FAST*.  (Presumably, the math library that came with the board also has
a conversion routine. . .)

					Steve Rice

-----------------------------------------------------------------------------
new: stever@videovax.tv.Tek.com
old: {decvax | hplabs | ihnp4 | uw-beaver | cae780}!tektronix!videovax!stever