[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference rusure::math

Title:Mathematics at DEC
Moderator:RUSURE::EDP
Created:Mon Feb 03 1986
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:2083
Total number of notes:14613

123.0. "Floating Point; IBM to VAX" by HARE::STAN () Thu Aug 09 1984 02:14

Here's a program by Yuichi Inasawa for converting a floating point number
from IBM hexadecimal format to VAX-11 binary format:

   8-AUG-1984 00:32           TKOV60::INASAWA     

============================================================================
	.title	cvtfhb
;++
;	subroutine cvtfhb (data,nofd)
;	real	data(*)
;	integer	nofd
;
;  purpose  -  to convert single floating point
;				from Hexadecimal(IBM) to Binary(VAX-11)
;
;  last edit  -  2-DEC-1981
;
;			programed by  Inasawa, Yuichi
;
;
;	 --- VAX-11 single floating format ---
;
;	  5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
;	+---------------+---------------+
;	:s:    exp        :   frac_2    :
;	:---------------+---------------+
;	:     frac_1    :     frac_0    :
;	+---------------+---------------+
;	                                    exp
;	s=0 + (0.1|frac_2|frac_1|frac_0) * 2
;	  1 -
;
;	 --- IBM single floating format ---
;
;	  5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
;	+---------------+---------------+
;	:     frac_1    :     frac_0    :
;	:---------------+---------------+
;	:s:    exp      :     frac_2    :
;	+---------------+---------------+
;	                                    exp
;	s=0 + (0.|frac_2|frac_1|frac_0) * 16
;	  1 -
;--

data	= 4
nofd	= 8

	.entry	cvtfhb,	^m<r2,r3,r4>

	movl	#1,r0
	cmpb	#2,(ap)
	bneq	1$

	movl	@nofd(ap),r0
	bleq	return
1$:
	movl	data(ap),r1
next:				; +---+---+---+---+
	movb	0(r1),-(sp)	; ! 0 ! 1 ! 2 ! 3 !
	movb	1(r1),-(sp)	; +---+---+---+---+
	movb	2(r1),-(sp)	;
	movb	3(r1),-(sp)	; +---+---+---+---+
	movl	(sp)+,r2	; ! 3 ! 2 ! 1 ! 0 !
				; +---+---+---+---+
	extzv	#24,#7,r2,r3
	subl2	#^x40,r3
	ashl	#2,r3,r3

	bicl3	#^xFF000000,r2,r4
	bneq	1$
	clrl	r3
	brb	mov
1$:
	bbs	#23,r4,2$
	ashl	#1,r4,r4
	decl	r3
	brb	1$
2$:
	addl2	#^x80,r3
	ashl	#7,r3,r3
	insv	r4,#16,#16,r3
	ashl	#-16,r4,r4
	insv	r4,#0,#7,r3

	bbc	#31,r2,mov
	bisl	#^x8000,r3
mov:
	movl	r3,(r1)+
	sobgtr	r0,next

return:
	ret

	.end
T.RTitleUserPersonal
Name
DateLines