home *** CD-ROM | disk | FTP | other *** search
-
- ; *******************************************************
- ; * *
- ; * Turbo Pascal Run-time Library *
- ; * Real Support Routines *
- ; * *
- ; * Copyright (c) 1988,92 Borland International *
- ; * *
- ; *******************************************************
-
- TITLE F48H
-
- INCLUDE SE.ASM
-
- CODE SEGMENT BYTE PUBLIC
-
- ASSUME CS:CODE
-
- ; Externals
-
- EXTRN RealAdd:NEAR,RealSub:NEAR,RealMul:NEAR,RealDiv:NEAR
- EXTRN RealCmp:NEAR,RealFloat:NEAR,RealTrunc:NEAR
- EXTRN HaltError:NEAR
-
- ; Publics
-
- PUBLIC RAdd,RSub,RMul,RDiv,RCmp,RFloat,RTrunc
- PUBLIC RRound,RSqr
-
- ; Add
-
- RAdd:
-
- CALL RealAdd
- JC ROverflow
- RETF
-
- ; Subtract
-
- RSub:
-
- CALL RealSub
- JC ROverflow
- RETF
-
- ; Square
-
- RSqr:
-
- MOV CX,AX
- MOV SI,BX
- MOV DI,DX
-
- ; Multiply
-
- RMul:
-
- CALL RealMul
- JC ROverflow
- RETF
-
- ; Divide
-
- RDiv:
-
- OR CL,CL
- JZ RDivZero
- CALL RealDiv
- JC ROverflow
- RETF
-
- ; Compare
-
- RCmp:
-
- CALL RealCmp
- RETF
-
- ; Float
-
- RFloat:
-
- CALL RealFloat
- RETF
-
- ; Trunc function
-
- RTrunc:
-
- MOV CH,0
- CALL RealTrunc
- JC RRangeError
- RETF
-
- ; Round function
-
- RRound:
-
- MOV CH,1
- CALL RealTrunc
- JC RRangeError
- RETF
-
- ; Trunc or Round range error
-
- RRangeError:
-
- MOV AX,207
- JMP HaltError
-
- ; Overflow error
-
- ROverflow:
-
- MOV AX,205
- JMP HaltError
-
- ; Divide by zero error
-
- RDivZero:
-
- MOV AX,200
- JMP HaltError
-
- CODE ENDS
-
- END
-