*** ../lb1sf68.asm	Mon Mar  1 07:06:44 1999
--- lb1sf68.asm	Thu Dec 23 20:41:29 1999
***************
*** 1227,1233 ****
  	bclr	IMM (31),d0		|
  	cmpl	IMM (0x7ff00000),d0	|
  	bge	2f			|
! 	movel	d0,d0           	| check for zero, since we don't  '
  	bne	Ladddf$ret		| want to return -0 by mistake
  	bclr	IMM (31),d7		|
  	bra	Ladddf$ret		|
--- 1227,1234 ----
  	bclr	IMM (31),d0		|
  	cmpl	IMM (0x7ff00000),d0	|
  	bge	2f			|
! 	movel	d0,d2           	| check for zero, since we don't  '
! 	orl	d1,d2			|
  	bne	Ladddf$ret		| want to return -0 by mistake
  	bclr	IMM (31),d7		|
  	bra	Ladddf$ret		|
***************
*** 1559,1572 ****
  #ifndef __mcf5200__
  	lsrl	IMM (1),d0
  	roxrl	IMM (1),d1
  	addw	IMM (1),d4
  #else
  	lsrl	IMM (1),d1
! 	btst	IMM (0),d0
! 	beq	10f
  	bset	IMM (31),d1
! 10:	lsrl	IMM (1),d0
! 	addl	IMM (1),d4
  #endif
  	bra	Lround$exit
  
--- 1560,1575 ----
  #ifndef __mcf5200__
  	lsrl	IMM (1),d0
  	roxrl	IMM (1),d1
+ 	roxrl	IMM (1),d2
+ 	roxrl	IMM (1),d3
  	addw	IMM (1),d4
  #else
  	lsrl	IMM (1),d1
! 	scs	d3
! 	lsrl	IMM (1),d0
! 	bcc	10f
  	bset	IMM (31),d1
! 10:	addl	IMM (1),d4
  #endif
  	bra	Lround$exit
  
***************
*** 1839,1845 ****
  | their final destination:
  	movel	d6,d0
  	movel	d7,d1
- 	movel	IMM (0),d3
  
  | Here we have finished the division, with the result in d0-d1-d2-d3, with
  | 2^21 <= d6 < 2^23. Thus bit 23 is not set, but bit 22 could be set.
--- 1842,1847 ----
***************
*** 2759,2765 ****
  #else
  	cmpl	IMM (0xff),d2
  #endif
! 	bhi	1f
  	bclr	IMM (FLT_MANT_DIG-1),d0
  #ifndef __mcf5200__
  	lslw	IMM (7),d2
--- 2761,2767 ----
  #else
  	cmpl	IMM (0xff),d2
  #endif
! 	bge	1f
  	bclr	IMM (FLT_MANT_DIG-1),d0
  #ifndef __mcf5200__
  	lslw	IMM (7),d2
***************
*** 3052,3058 ****
--- 3054,3064 ----
  	lsll	IMM (31-FLT_MANT_DIG+1),d6		
  
  | Start the loop (we loop #FLT_MANT_DIG times):
+ #ifndef __mcf5200__
  	movew	IMM (FLT_MANT_DIG-1),d3	
+ #else
+ 	movel	IMM (FLT_MANT_DIG-1),d3	
+ #endif
  1:	addl	d1,d1		| shift sum 
  	addxl	d0,d0
  	lsll	IMM (1),d6	| get bit bn
***************
*** 3075,3081 ****
  	swap	d1
  	movew	d1,d3
  	andw	IMM (0x03ff),d3
! 	andw	IMM (0xfd00),d1
  #else
  	movel	d1,d3
  	lsll	IMM (8),d1
--- 3081,3087 ----
  	swap	d1
  	movew	d1,d3
  	andw	IMM (0x03ff),d3
! 	andw	IMM (0xfc00),d1
  #else
  	movel	d1,d3
  	lsll	IMM (8),d1
***************
*** 3084,3090 ****
  	moveq	IMM (22),d5
  	lsrl	d5,d3
  	orl	d3,d1
! 	andl	IMM (0xfffffd00),d1
  #endif
  	lsll	IMM (8),d0
  	addl	d0,d0
--- 3090,3096 ----
  	moveq	IMM (22),d5
  	lsrl	d5,d3
  	orl	d3,d1
! 	andl	IMM (0xfffffc00),d1
  #endif
  	lsll	IMM (8),d0
  	addl	d0,d0
***************
*** 3263,3274 ****
  	movel	IMM (0),d6	| 
  	movel	d6,d7
  
  	movew	IMM (FLT_MANT_DIG+1),d3
  1:	cmpl	d0,d1		| is a < b?
  	bhi	2f		|
  	bset	d3,d6		| set a bit in d6
  	subl	d1,d0		| if a >= b  a <-- a-b
! 	beq	3f		| if a is zero, exit
  2:	addl	d0,d0		| multiply a by 2
  #ifndef __mcf5200__
  	dbra	d3,1b
--- 3269,3284 ----
  	movel	IMM (0),d6	| 
  	movel	d6,d7
  
+ #ifndef __mcf5200__
  	movew	IMM (FLT_MANT_DIG+1),d3
+ #else
+ 	movel	IMM (FLT_MANT_DIG+1),d3
+ #endif
  1:	cmpl	d0,d1		| is a < b?
  	bhi	2f		|
  	bset	d3,d6		| set a bit in d6
  	subl	d1,d0		| if a >= b  a <-- a-b
! 	beq	4f		| if a is zero, exit
  2:	addl	d0,d0		| multiply a by 2
  #ifndef __mcf5200__
  	dbra	d3,1b
***************
*** 3278,3284 ****
--- 3288,3298 ----
  #endif
  
  | Now we keep going to set the sticky bit ...
+ #ifndef __mcf5200__
  	movew	IMM (FLT_MANT_DIG),d3
+ #else
+ 	movel	IMM (FLT_MANT_DIG),d3
+ #endif
  1:	cmpl	d0,d1
  	ble	2f
  	addl	d0,d0
***************
*** 3288,3294 ****
  	subql	IMM(1),d3
  	bpl	1b
  #endif
! 	movel	IMM (0),d1
  	bra	3f
  2:	movel	IMM (0),d1
  #ifndef __mcf5200__
--- 3302,3308 ----
  	subql	IMM(1),d3
  	bpl	1b
  #endif
! 4:	movel	IMM (0),d1
  	bra	3f
  2:	movel	IMM (0),d1
  #ifndef __mcf5200__
