page    55, 132

;

;  FUNCTION:  ndp_check

;

;  Require MASM 5.1 or later, or equivalent

;

;  Assemble with:       MASM /Mx /z ...

;                       TASM /jMASM /mx /z ...

;


%       .MODEL  memodel,C               ;Add model support via

                                        ;command line macros, e.g.

                                        ;MASM /Mx /Dmemodel=LARGE


        .CODE

control dw      0

;---------------------------------------------------------------

;

; Check for an NDP.

;

;  Returns 0 if no coprocessor

;  Returns 1 if coprocessor present


        PUBLIC  ndp_check

ndp_check       PROC    USES BX
        xor     BX,BX                    ; set up zero return

        fninit                           ; try to initialize the NDP

        mov     byte ptr control+1,0     ; clear memory byte

        fnstcw  control                  ; put control word in memory

        mov     AH,byte ptr control+1    ; if AH is 03h, you got

        cmp     AH,03h                   ;   an NDP on board !!

        jne     SHORT NDPbye
        inc     BX
NDPbye:
        mov     AX,BX
        ret

ndp_check       ENDP

        end


syntax highlighted by Code2HTML, v. 0.9.1