* FLOAT A LONG INTEGER
         SECTION  FAST
         XDEF     FAST_FLW
* FLOAT A LONG INTEGER
FAST_FLW
         SUBQ.L   #2,A1             MAKE ROOM ON THE STACK
         MOVE.W   #$081F,D0         D0 IS USED TO CALCULATE EXPONENT
         MOVE.L   2(A6,A1.L),D1     GET L INTO D1
         BEQ.S    FL_ZERO           IF 0, STACK 0
         BPL.S    FL_PLOOP          IF +VE, JUMP
* STACK A NEGATIVE NUMBER
         MOVEQ    #30,D4            BIT TO TEST TO CHECK IF DONE YET
FL_NLOOP
         BTST     D4,D1             IF 2MSB IS 0, DONE
         BEQ.S    FL_STACK
         LSL.L    #1,D1             DOUBLE D1
         SUBQ.W   #1,D0             UPDATE THE EXPONENT
         BRA.S    FL_NLOOP
* STACK A POSITIVE NUMBER
FL_PLOOP
         SUBQ.W   #1,D0             UPDATE THE EXPONENT
         LSL.L    #1,D1             DOUBLE D1, N-FLAG SET AT END POINT
         BEQ.S    FL_ZERO           CATCH IN CASE OF PROBLEMS
         BPL.S    FL_PLOOP
         ADDQ.W   #1,D0             ADJUST THE EXPONENT
         LSR.L    #1,D1             ADJUST THE MANTISSA
* ACTUALLY STACK THE NUMBER
FL_STACK
         MOVE.W   D0,0(A6,A1.L)     STORE EXPONENT
         MOVE.L   D1,2(A6,A1.L)     STORE MANTISSA
         RTS
* STACK 0
FL_ZERO
         CLR.W    0(A6,A1.L)        0 EXPONENT
         CLR.L    0(A6,A1.L)        0 MANTISSA
         RTS
         END
