home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_144 / 1.ddi / WINLBSRC.ZIP / FPINIT.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-06-10  |  3.2 KB  |  99 lines

  1. ;[]-----------------------------------------------------------------[]
  2. ;|      FPINIT.ASM -- Pre/post code for WIN87EM                      |
  3. ;[]-----------------------------------------------------------------[]
  4.  
  5. ;
  6. ;       C/C++ Run Time Library - Version 5.0
  7. ;       Copyright (c) 1987, 1992 by Borland International
  8. ;       All Rights Reserved.
  9.  
  10. ;This module is memory model indepedent
  11.  
  12.                 include RULES.ASI
  13.  
  14.                 extrn __FPMATH:far
  15.                 extrn LOADLIBRARY:far
  16.                 extrn __fperr:far
  17.                 extrn __turboFloat
  18.                 extrn __turboCvt
  19.                 extrn __FPVector:dword
  20.                 extrn __LockWIN87EM:word
  21.  
  22.                 public  FIDRQQ          ; wait, esc
  23.                 public  FIARQQ          ; wait, DS:
  24.                 public  FICRQQ          ; wait, CS:
  25.                 public  FIERQQ          ; wait, ES:
  26.                 public  FISRQQ          ; wait, SS:
  27.                 public  FIWRQQ          ; nop, wait
  28.                 public  FJARQQ          ; Esc nn -> DS:nn
  29.                 public  FJCRQQ          ; Esc nn -> CS:nn
  30.                 public  FJSRQQ          ; Esc nn -> ES:nn
  31.  
  32. FIDRQQ          equ     05C32h
  33. FIARQQ          equ     0FE32h
  34. FICRQQ          equ     00E32h
  35. FIERQQ          equ     01632h
  36. FISRQQ          equ     00632h
  37. FIWRQQ          equ     0A23Dh
  38. FJARQQ          equ     04000h
  39. FJCRQQ          equ     0C000h
  40. FJSRQQ          equ     08000h
  41.  
  42. SIGFPE          equ     8
  43. SIG_DFL         equ     0
  44.  
  45.                 public __windowsFloat
  46. __windowsFloat  equ     0
  47.  
  48.                 public  __cvtfak
  49. __cvtfak        equ     0
  50.  
  51. _DATA           segment
  52. LibName         db  'WIN87EM', 0
  53.                 ends
  54.  
  55. _TEXT           segment
  56.                 assume cs:_TEXT,ds:DGROUP
  57.  
  58. __exitfp:       mov     bx,2                    ; close WIN87EM
  59.                 call    __FPMATH
  60.                 ret
  61.  
  62. __initfp:       cmp     __LockWIN87EM, 0        ; lock WIN87EM by forcing load
  63.                 je      NoLock                  ; workaround for DLL unload
  64.                 push    ds                      ;   ordering problem in Windows
  65.                 lea     ax, LibName
  66.                 push    ax
  67.                 call    LOADLIBRARY
  68. NoLock:
  69.                 mov     word ptr __FPVector,offset __FPMATH
  70.                 mov     word ptr __FPVector+2,seg __FPMATH
  71.  
  72.                 xor     bx,bx                   ; init WIN87EM
  73.                 call    __FPMATH
  74.  
  75.                 mov     bx, 3                   ; set exception handler
  76.                 mov     dx, seg    __fperr
  77.                 mov     ax, offset __fperr
  78.                 call    __FPMATH
  79.                 ret
  80.                 ends
  81.  
  82. _INIT_          segment word public 'INITDATA'
  83.                 db      0                       ; near call
  84.                 db      1                       ; priority 1
  85.                 dw      offset __initfp
  86.                 dw      ?
  87.                 ends
  88.  
  89. _EXIT_          segment word public 'EXITDATA'
  90.                 db      0                       ; near call
  91.                 db      1                       ; priority 1
  92.                 dw      offset __exitfp
  93.                 dw      ?
  94.                 ends
  95.  
  96.                 end
  97.