****
****    Dimostrazione in assembler dell'utilizzo delle funzioni della
****               Fast Floating Point Conversion Library
****   funzioni accessibili linkando il sorgente contenente le relative
****              chiamate con la linker library Amiga.lib
****
****   AUTORE .............. Alberto Geneletti
****   			     REV. 1.0  giugno 1991
****   PACKAGE ............. HiSoftDevpac Amiga 2.14
****   COMPILER OPTION ..... +L (file non eseguibile)
****   LINKER  COMMAND ..... BLINK source LIBRARY Amiga.lib
****

        incdir	":include/"

        include	exec/exec_lib.i
        include	libraries/dos_lib.i
        include libraries/dos.i
	
         XREF    _afp
         XREF    _arnd
         XREF    _dbf
         XREF    _fpa
         XREF    _fpbcd

	 XREF    _printf
	 XDEF    _stdout
	 XDEF    _DOSBase

	moveq	#31,d0				
	lea	dos_name(pc),a1
	CALLEXEC OpenLibrary                
	move.l	d0,_DOSBase
      
	CALLDOS Output
	move.l	d0,_stdout



****    NumeroFFP = afp(&string);

	pea	PiGreco		  converte la stringa PiGreco
	jsr     _afp		
	addq.l   #4,sp		      nell'equivalente FFP
	move.l	d0,NumeroFFP



****    Esponente = fpa(NumeroFFP,&string);
	
	pea     OutputString	     converte poi NumeroFFP
	move.l	NumeroFFP,-(sp)		
	jsr	_fpa		           (3.14 etc)
	addq.l	#8,sp
	move.l	d0,Esponente	         in OutputString

	pea	OutputString             e la visualizza
	jsr	_printf
	addq.l	#04,sp
	pea	CR
	jsr	_printf
	addq.l	#4,sp

		

****    arnd(Epsilon,Esponente,&string);

	pea     OutputString	     appossima il valore PiGreco
	move.l	Esponente,-(sp)
	move.l	#-4,-(sp) 		con errore < 1.E-04
	jsr	_arnd
	add.l	#12,sp		il risultato e' ancora una stringa

        pea	OutputString          che viene visualizzata
	jsr	_printf
	addq.l	#04,sp
	pea	CR
	jsr	_printf
	addq.l	#4,sp



****    NumeroFFP = dbf(Esponente,Mantissa);

	move.l	#1234,-(sp)		   mantissa

	move.l	#1,-(sp)		   esponente
	jsr	_dbf
	addq.l	#8,sp		      del numero 1234E+01
	move.l	d0,NumeroFFP		  = .1234E-05
	
	pea     OutputString	     
	move.l	NumeroFFP,-(sp)		 converte in 
	jsr	_fpa		           
	addq.l	#8,sp		        stringa ASCII
	move.l	d0,Esponente	         

        pea	OutputString           e la visualizza
	jsr	_printf
	addq.l	#04,sp
	pea	CR
	jsr	_printf
	addq.l	#4,sp



****	fpbcd(NumeroFFP,&stringa);

	pea     OutputString         converte NumeroFFP

	move.l	NumeroFFP,-(sp)    in una stringa che lo 
	jsr     _fpbcd  
	addq.l	#8,sp           rappresenti in formato BCD
	
	pea	OutputString          e la visualizza
	jsr	_printf
	addq.l	#04,sp
	pea	CR
	jsr	_printf
	addq.l	#4,sp
	

	move.l _DOSBase,a1
	CALLEXEC CloseLibrary
	rts


		cnop	0,4

NumeroFFP	dc.l	0
Esponente	dc.l	0
OutputString	ds.b	40
PiGreco 	dc.b	'3.14159265635897',0
	
_stdout		dc.l	0
_DOSBase	dc.l	0
dos_name	DOSNAME
CR		dc.b	10,0
				
