C86CODE	SEGMENT	BYTE PUBLIC
	ASSUME	CS:C86CODE
	PUBLIC	C@FCBF
	PUBLIC	C@FCWF
C@FCBF	PROC	NEAR		;CONVERT BYTE TO FLOATING
	CBW			;CONVERT TO INTEGER
;				;THENCE TO FLOATING
C@FCWF	LABEL	NEAR		;CONVERT INTEGER TO FLOATING
	MOV	CX,9800H	;INITIAL EXPONENT
	MOV	DX,0		;INITIAL ACC. EXTENSION
	CMP	AX,0		;CHECK FOR ZERO INPUT
	JNE	NOTZERO
;				;FLOATING ZERO OUTPUT
	RET
NOTZERO	LABEL	NEAR
	JG	POSTVE		;NEGATE IF NEGATIVE
	MOV	CL,80H		;AND SET RESULT SIGN
	NEG	AX
POSTVE	LABEL	NEAR
LEFT	LABEL	NEAR		;SHIFT LEFT
	SHL	AX,1		;DOUBLE LENGTH 1 BIT
	RCL	DX,1
	DEC	CH		;COMPENSATE EXPONENT (CAN'T OVERFLOW)
	CMP	DL,0
	JGE	LEFT		;UNTIL DL 'SIGN' SET
	AND	DL,7FH		;REMOVE ASSUMED 2**-1
	OR	DX,CX		;INSERT RESULT SIGN&EXPONENT
	RET
C@FCBF	ENDP
C86CODE	ENDS
	END