****
****    Dimostrazione in assembler dell'utilizzo delle funzioni delle
****			librerie matematiche FFP
****	  	  mathffp.library e mathtrans.library
****            
****   AUTORE .............. Alberto Geneletti
****   			     REV. 1.0  giugno 1991
****   PACKAGE ............. HiSoftDevpac Amiga 2.14
****

	incdir	":include/"
	include	exec/exec_lib.i


**** macro e offset esemplificativi di mathffp

_LVOSPFlt	EQU	-36 
_LVOSPMul	EQU	-78 

CALLFFP	MACRO
	move.l	_MathBase,a6
	jsr	_LVO\1(a6)
	ENDM

FFPNAME	MACRO
	dc.b	'mathffp.library',0
	ENDM


**** macro e offset esemplificativi di mathtrans

_LVOSPPow	EQU	-90
_LVOSPSincos	EQU	-54  

CALLMATHTRANS	MACRO
	move.l	_MathTransBase,a6
	jsr	_LVO\1(a6)
	ENDM

MATHTRANSNAME	MACRO
	dc.b	'mathtrans.library',0
	ENDM



	moveq	#31,d0				
	lea	mathffp_name(pc),a1         apre libreria mathffp
	CALLEXEC OpenLibrary                
	move.l	d0,_MathBase                       (in ROM)

	moveq	#31,d0				
	lea	mathtrans_name(pc),a1       apre libreria mathtrans
	CALLEXEC OpenLibrary                
	move.l	d0,_MathTransBase	   (su disco nella dir LIBS:)

	move.l	#5,d0
	CALLFFP	SPFlt			    conversione intero/FFP
	move.l	d0,Raggio

	move.l	#2,d0
	CALLFFP SPFlt
	move.l	PiGreco,d1	      Circonferenza = 2 * PiGreco * Raggio
	CALLFFP SPMul
	move.l	Raggio,d1                  risultato in Circonferenza
	CALLFFP SPMul
	move.l	d0,Circonferenza

	move.l	#3,d0
	CALLFFP SPFlt			Calcolo del volume di un cubo di
	move.l	Lato,d1		
	CALLFFP SPPow				Lato = 1234.5678
	move.l	d0,VolumeDelCubo

	move.l	Angolo,d0               Calcolo del seno e del coseno di
	move.l	#Coseno,d1
	CALLMATHTRANS SPSincos		          PiGreco/3
	move.l	d0,Seno

	move.l _MathTransBase,a1
	CALLEXEC CloseLibrary
	
	move.l _MathBase,a1
	CALLEXEC CloseLibrary
	rts
 
_MathBase	dc.l	0
_MathTransBase	dc.l	0
mathffp_name	FFPNAME
mathtrans_name	MATHTRANSNAME

**** le seguenti rappresentazioni esadecimali di numeri in virgola mobile
**** sono state ricavate per mezzo del comando cli FFP.

PiGreco		dc.l	$c90fdb42   equivalente a 3.14...
Lato		dc.l	$9a522b4b   equivalente a 1234.5678
Raggio		dc.l	0   questo valore intero verra' assegnato con flt

VolumeDelCubo	dc.l	0   memorizzeremo qui i risultati delle 
Circonferenza	dc.l	0   operazioni

Angolo		dc.l	$860a5241   equivalente a 60 gradi
Seno		dc.l	0
Coseno		dc.l	0

