home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wunderki.zip / F48H.ASM < prev    next >
Assembly Source File  |  1993-08-16  |  1KB  |  128 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Turbo Pascal Run-time Library                   *
  5. ; *    Real Support Routines                *
  6. ; *                            *
  7. ; *     Copyright (c) 1988,92 Borland International     *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    F48H
  12.  
  13.     INCLUDE    SE.ASM
  14.  
  15. CODE    SEGMENT    BYTE PUBLIC
  16.  
  17.     ASSUME    CS:CODE
  18.  
  19. ; Externals
  20.  
  21.     EXTRN    RealAdd:NEAR,RealSub:NEAR,RealMul:NEAR,RealDiv:NEAR
  22.     EXTRN    RealCmp:NEAR,RealFloat:NEAR,RealTrunc:NEAR
  23.     EXTRN    HaltError:NEAR
  24.  
  25. ; Publics
  26.  
  27.     PUBLIC    RAdd,RSub,RMul,RDiv,RCmp,RFloat,RTrunc
  28.     PUBLIC    RRound,RSqr
  29.  
  30. ; Add
  31.  
  32. RAdd:
  33.  
  34.     CALL    RealAdd
  35.     JC    ROverflow
  36.     RETF
  37.  
  38. ; Subtract
  39.  
  40. RSub:
  41.  
  42.     CALL    RealSub
  43.     JC    ROverflow
  44.     RETF
  45.  
  46. ; Square
  47.  
  48. RSqr:
  49.  
  50.     MOV    CX,AX
  51.     MOV    SI,BX
  52.     MOV    DI,DX
  53.  
  54. ; Multiply
  55.  
  56. RMul:
  57.  
  58.     CALL    RealMul
  59.     JC    ROverflow
  60.     RETF
  61.  
  62. ; Divide
  63.  
  64. RDiv:
  65.  
  66.     OR    CL,CL
  67.     JZ    RDivZero
  68.     CALL    RealDiv
  69.     JC    ROverflow
  70.     RETF
  71.  
  72. ; Compare
  73.  
  74. RCmp:
  75.  
  76.     CALL    RealCmp
  77.     RETF
  78.  
  79. ; Float
  80.  
  81. RFloat:
  82.  
  83.     CALL    RealFloat
  84.     RETF
  85.  
  86. ; Trunc function
  87.  
  88. RTrunc:
  89.  
  90.     MOV    CH,0
  91.     CALL    RealTrunc
  92.     JC    RRangeError
  93.     RETF
  94.  
  95. ; Round function
  96.  
  97. RRound:
  98.  
  99.     MOV    CH,1
  100.     CALL    RealTrunc
  101.     JC    RRangeError
  102.     RETF
  103.  
  104. ; Trunc or Round range error
  105.  
  106. RRangeError:
  107.  
  108.     MOV    AX,207
  109.     JMP    HaltError
  110.  
  111. ; Overflow error
  112.  
  113. ROverflow:
  114.  
  115.     MOV    AX,205
  116.     JMP    HaltError
  117.  
  118. ; Divide by zero error
  119.  
  120. RDivZero:
  121.  
  122.     MOV    AX,200
  123.     JMP    HaltError
  124.  
  125. CODE    ENDS
  126.  
  127.     END
  128.