;
;CONVERT 2 BYTE UNSIGNED INTEGER IX2 TO FLOAT
     LDA #$00
     STA FAC+1
     STA FAC+2
     LDA IX2
     STA FAC+3
     LDA IX2+1
     STA FAC+4
     JSR FLOAT
;
;MOVE TO "ARG"
     JSR TOARG
;
;CONVERT 2 BYTE UNSIGNED INTEGER IX1 TO FLOAT
     LDA #$00
     STA FAC+1
     STA FAC+2
     LDA IX1
     STA FAC+3
     LDA IX1+1
     STA FAC+4
     JSR FLOAT
;
;SAVE FLOATING POINT NUMBER FX1
     LDX #$06
L0   LDA FAC-1,X
     STA FX1-1,X
     DEX
     BNE L0
;
;COMPUTE FX2-FX1
     JSR FSUB
;
;SAVE FX2-FX1 ON STACK FOR LATER USE
     LDX #$06
L1   LDA FAC-1,X
     PHA
     DEX
     BNE L1
;
;CONVERT 2 BYTE UNSIGNED INTEGER IY2 TO FLOAT
     LDA #$00
     STA FAC+1
     STA FAC+2
     LDA IY2
     STA FAC+3
     LDA IY2+1
     STA FAC+4
     JSR FLOAT
;
     JSR TOARG      ;MOVE TO "ARG"
;
;CONVERT 2 BYTE UNSIGNED INTEGER IY1 TO FLOAT
     LDA #$00
     STA FAC
     STA FAC+1
     STA FAC+2
     LDA IY1
     STA FAC+3
     LDA IY1+1
     STA FAC+4
     JSR FLOAT
;
;SAVE FLOATING POINT NUMBER FY1
     LDX #$06
L2   LDA FAC-1,X
     STA FY1-1,X
     DEX
     BNE L2
;
;COMPUTE FY2-FY1
     JSR FSUB
;
     JSR TOARG      ;MOVE TO "ARG"
;
;RETRIEVE FX2-FX1 FROM STACK
     LDX #$FA
L3   PLA
     STA FAC+6,X
     INX
     BNE L3
;
;COMPUTE (FY2-FY1)/(FX2-FX1)
     JSR FDIV
;
;SAVE FLOATING POINT NUMBER  (FY2-FY1)/(FX2-FX1)
     LDX #$06
L4   LDA FAC-1,X
     STA CO-1,X
     DEX
     BNE L4
;
;CONVERT 2 BYTE UNSIGNED INTEGER IX TO FLOAT
     LDA #$00
     STA FAC+1
     STA FAC+2
     LDA IX
     STA FAC+3
     LDA IX+1
     STA FAC+4
     JSR FLOAT
;
;MOVE TO "ARG"
     JSR TOARG
;
;RETRIEVE FX1
     LDX #$06
L5   LDA FX1-1,X
     STA FAC-1,X
     DEX
     BNE L5
;
;COMPUTE FX-FX1
     JSR FSUB
;
;MOVE TO "ARG"
     JSR TOARG
;
;RETRIEVE FLOATING POINT NUMBER  (FY2-FY1)/(FX2-FX1)
     LDX #$06
L6   LDA CO-1,X
     STA FAC-1,X
     DEX
     BNE L6
;
;COMPUTE (FX-FX1)*(FY2-FY1)/(FX2-FX1)
     JSR FMUL
;
;MOVE TO "ARG"
     JSR TOARG
;
;RETRIEVE FLOATING POINT NUMBER  FY1
     LDX #$06
L7   LDA FY1-1,X
     STA FAC-1,X
     DEX
     BNE L7
;
;COMPUTE FY+(FX-FX1)*(FY2-FY1)/(FX2-FX1)
     JSR FADD
;
;CONVERT TO 32 BIT INTEGER
     JSR FIX
;
;SAVE THE 2 LEAST SIGNIFICANT BYTES
     LDA FAC+3
     STA IY
     LDA FAC+4
     STA IY+1
     BRK
IX     .DB  $61  ;X =25000
       .DB  $A8
IX1    .DB  $00  ;X1=231
       .DB  $E7
IX2    .DB  $72  ;X2=29239
       .DB  $37
IY1    .DB  $01  ;Y1=499
       .DB  $F3
IY2    .DB  $7F  ;Y2=32767
       .DB  $FF
;IY SHOULD BE $6D93   28051.6
FX1    *=*+6
FY1    *=*+6
CO     *=*+6
IY     *=*+2

    Source: geocities.com/matsr2007