home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
612b.lha
/
IAS_Library
/
IAS.DOC.pp
/
IAS.DOC
Wrap
Text File
|
1992-03-02
|
5KB
|
173 lines
IAS Library - A fixed Point Maths Library
By C Eales 1991
The IAS library is a library that has functions for handling fixed point 32 bit
mathematics, it uses the following format for its numbers :-
x xxxxxxxxxxxxxxx . xxxxxxxxxxxxxxxx
31 30-16 15-0
Bit 31 is the sign bit (0 = + , 1 = -)
Bits 30-16 Hold the absolute integer value of the number 0-32767.
Bits 15-0 Hold the fractional part of the number (divide value by 65536 to
find the value of the fraction.
But for most purposes this is Un-needed as the library contains nearly all
the functions you need. The library comes in an assembler only form, as
I don't know how C stubs are created (could someone write one?) But the
routines are quite straight forward so a C front end should be easy to write.
The library also contains a few integer routines, to make programming with
the library easier. At the moment there isn't a comparison routine, but
cmp.l d0,d1 will work for absolute values and then if they are signed, it
just involves a little extra work, but I havent had time (or need) to put
it in yet! Also there is a slight problem with the ASCII routines, in that
it uses an internal workspace, so if your task is calling one and it gets
stopped half way through by another task, then that task calls the routine
then the result will get garbled, so it is safest to call FORBID and PERMIT
around any calls to the ASCII routines, I could put it in the routines but I
don't like the idea of calling FORBID in a library, incase a DEADLOCK occurs
(so it's your problem not mine now).
This Libray,include file,docs are freeware, so please distribute freely.
I can be reached at the following address if you want to ask about something:
Craig Eales
6 Orchard Park
Grimoldby
LOUTH
Lincs
LN11 8SW
ENGLAND
Or by email at CSTDXGD@WARWICK.AC.UK
The Functions
INTmulu - Multiply 2 unsigned 32 bit integers
inputs d0 - 32 bit integer
d1 - 32 bit integer
result d2 - 32 bit unsigned product of d0,d1
It just multiplies the two arguments together in 32 bit form and returns
the value in d2.
INTdivu - Divide 2 unsigned 32 bit integers
inputs d0 - 32 bit integer
d1 - 32 bit integer
result d2 - unsigned 32 bit result of d0/d1
This is a full 32 bit unsigned divide of integers. It is based on the one
in the ARP library.
IASdivs - Multiply 2 IAS numbers
inputs d0 - IAS format number
d1 - IAS format number
result d2 - IAS format number which is d0/d1
This caries out a full IAS signed division of d0 by d1 and then puts the
result into d2.
IASabs - Find Absolute Value of an IAS number
inputs d0 - an IAS format number
result d0 - an IAS format number = abs(d0)
This just adjusts the IAS number in d0 to its mod value.
IAScif - Convert a signed integer to IAS form
inputs d0 - 16 Bit signed Integer (sign on the 32 bits)
result d0 - The IAS representation of d0
This takes the argument integer in d0 and converts it into an IAS format
number. NOTE It only evaluates the final 16 bits but checks its sign on the
full 32 bits, so $0000FFFF will be converted to 32767.0 in IAS.
IAScfi - Convert IAS form number to a signed integer
inputs d0 - an IAS format number
result d0 - A signed 32 bit integer equal to trunc(d0)
This converts the passed IAS number into its signed intteger form (all
fractions are dropped).
IASsub - Subtract two IAS numbers
inputs d0 - IAS format number
d1 - IAS fromat number
result d2 - IAS format number equal to d0-d1
This just subracts the second argument from the first and stores it in d2.
IASadd - Add two IAS numbers
inputs d0 - IAS format number
d1 - IAS format number
result d2 - IAS format number which equals d0+d1
This adds together the arguments then stores the result in d2.
IASmuls - Multiply two IAS numbers
inputs d0 - IAS format number
d1 - IAS format number
result d2 - IAS format number which equals d0*d1
This multiplies the two arguments together and returns in d2 the result.
IASdivi - Divide an IAS number by an integer
inputs d0 - IAS format number
d1 - 32 bit signed integer
result d2 - IAS format number which equals d0/d1
This divides an IAS number by an integer and returns the result in d2, this
is quicker than dividing by an IAS number.
IAScfa - Convert an IAS number to an ASCII string
inputs d0 - IAS format number
a0 - a pointer to a 12 byte buffer
This converts an IAS number into an ascii null terminated string starting
at a0.
IAScia - Convert 32 bit signed integer to an ASCII string
inputs d0 - a 32 bit signed integer
a0 - a pointer to a 12 byte buffer
This converts a 32 bit signed integer into a null terminated string starting
at a0.