home *** CD-ROM | disk | FTP | other *** search
/ Falcon 030 Power 2 / F030_POWER2.iso / ST_STE / MAGS / ICTARI10.ARJ / ictari.10 / ASSEMBLY / FLOAT_PT / FP_STOS.S < prev   
Text File  |  1994-02-25  |  1KB  |  52 lines

  1. ;Initialise floating point binary file
  2. ;ENTRY File FLOAT.BIN loaded into RAM at label fp_data
  3. ;EXIT  All 32 bit addresses re-located in fp_data block
  4.  
  5. init_float    movem.l    d0-d1/a0-a1,-(sp)
  6.     lea    fp_data,a0    locate fp data
  7.     move.l    2(a0),a1    fetch offset to relocation
  8.     add    #28,a0    locate base addr
  9.     move.l    a0,d1    d1=offset value
  10.     add.l    a0,a1    a1=relocation table
  11.     add.l    (a1)+,a0    a0=1st address
  12.     add.l    d1,(a0)
  13. init_float1    tst.b    (a1)    end of table ?
  14.     beq    init_float3
  15.     cmp.b    #1,(a1)    large gap ?
  16.     beq    init_float2
  17.     move.b    (a1)+,d0
  18.     and    #$ff,d0
  19.     add    d0,a0    set next addr
  20.     add.l    d1,(a0)    change addr
  21.     bra    init_float1
  22.     
  23. init_float2    add    #254,a0    add 254 to pointer
  24.     add    #1,a1    next byte
  25.     bra    init_float1
  26.     
  27. init_float3    movem.l    (sp)+,d0-d1/a0-a1
  28.     rts
  29.  
  30. ;Floating point entry routine
  31. ;ENTRY d0.l and d1.l hold fp number
  32. ;      d2.l and d3.l hold fp number (if reqd)
  33. ;      d4 holds function number (0-28)
  34. ;      a0 holds buffer address (if reqd)
  35. ;EXIT  d0.l and d1.l hold result (or d0 holds No of chrs in string)
  36.  
  37. float_point    movem.l    d2-d7/a0-a6,-(sp)
  38.     move.l    d4,d7    swap registers
  39.     move.l    d3,d4    around to make
  40.     move.l    d2,d3    it easier to
  41.     move.l    d1,d2    use the routines
  42.     move.l    d0,d1
  43.     move.l    d7,d0
  44.     lsl    #2,d0    d0x4
  45.     lea    fp_data+$398c,a6 locate look-up table
  46.     move.l    0(a6,d0),a6    locate function start
  47.     jsr    (a6)    execute function
  48.     movem.l    (sp)+,d2-d7/a0-a6
  49.     rts
  50.     
  51. fp_data    incbin    'F:\DEVPAC\ROUTINES\FLOAT.BIN',0
  52.