dos_compilers/Microsoft C v5/SRC/STARTUP/CRT0FP.ASM

93 lines
2.2 KiB
NASM
Raw Normal View History

2024-07-02 15:09:28 +02:00
page ,132
title crt0fp - floating point not loaded trap
;***
;crt0fp.asm - floating point not loaded trap
;
; Copyright (c) 1986-1988, Microsoft Corporation, All Rights Reserved
;
;Purpose:
; To trap certain cases where certain necessary floating-point
; software is not loaded. Two specific cases are when 87.LIB
; is linked in but no coprocessor is present, and when floating
; point i/o conversions are done, but no floating-point variables
; or expressions are used in the program.
;
;*******************************************************************************
?DF= 1 ; this is special for c startup
include version.inc
.xlist
include cmacros.inc
.list
createSeg _TEXT, code, word, public, CODE, <>
createSeg _DATA, data, word, public, DATA, DGROUP
createSeg HDR, nhdr, byte, public, MSG, DGROUP
createSeg MSG, nmsg, byte, public, MSG, DGROUP
createSeg PAD, npad, byte, common, MSG, DGROUP
createSeg EPAD, nepad, byte, common, MSG, DGROUP
defGrp DGROUP ; define DGROUP
; Messages used by _fptrap
sBegin nmsg
assumes ds,data
dw 2
db 'R6002',13,10,'- floating point not loaded',13,10,0
sEnd
sBegin npad
assumes ds,data
dw -1
; no padding for now;
; MAX padding would be
; db 22 dup(0)
sEnd
sBegin code
assumes cs,code
externNP _amsg_exit
page
;***
;_fptrap - trap for missing floating-point software
;
;Purpose:
; Catches these cases of incomplete f.p. software linked into a program.
;
; (1) 87.LIB chosen, but no coprocessor present;
; (i.e., emulator not linked)
;
; (2) "%e", "%f", and "%g" i/o conversion formats specified, but
; not all conversion software has been linked in, because the
; program did not use any floating-point variables or expressions.
;
;Entry:
; None.
;
;Exit:
; None.
;
;Uses:
; AX.
;
;Exceptions:
; Transfers control to _amsg_exit which ...
; - Writes error message to standard error: "floating point not loaded";
; - Terminates the program by calling _exit().
;*******************************************************************************
labelNP <PUBLIC,_fptrap>
mov ax,2 ; issue floating point not loaded
jmp _amsg_exit ; and die
sEnd code
end