
COPROCESSOR HARDWARE INTERFACE
| ~B~b/67/~~/lab | MACRO ASSEMBLER | Test for presence of a Numerics Chip. | Revision 1." | PAGE 1 | |
| DOS | 3.2B  | MACRO ASSEMBLER V2.B ASSEMBLY Of MODULE | TEST- NPX | 
 | |
| OBJECT MODULE PLACED IN fINDNPX.oBJ | 
 | 
 | |||
| LaC | OBJ | LINE | SOURCE | 
 | 
 | 
+1 StitleC'Test for presence of a Numerics Chip. Revision 1.0')
nalle Test_NPX
stack segment stack ' stack'
BBBB(18B
1111 l
| e9C8 1111 | 7 | sst | 
| 
 | ~ | stack | 
| 
 | 9 | data | 
| 
 | 18 | |
| 
 | 11 | temp | 
| 
 | 12 | data | 
| 
 | 13 | 
 | 
| 
 | H | dgroup | 
| 
 | 15 | cgroup | 
| 
 | lb | 
 | 
| 
 | 17 | code | 
| 
 | 18 | 
 | 
| 
 | 19 | start: | 
| 
 | 2B | |
| 
 | 21 | 
 | 
| 
 | 22 | , | 
| 
 | 23 | |
| 
 | 2~ | 
| dw | lBB dup (? l | 
dw ends
segment public 'data'
dw Bh
ends
group data, stack group code
segllent public 'code'
assume cs: cgroup, ds: dgroup
Look for an 8B87. 8B287. i387 SX or i387 DX NPX.
Note that we cannot execute WAIT on lIB8b/M if no 8887 is present.
| BBBB | 
 | 25 | test_npx: | 
 | 
 | ; nust use non"wait form | 
| BBBB | 9BDBE3 | 2b | fninit | 
 | 
 | |
| BBB3 | BEBBBB | 27 | mov | si ,offset | dgroup: terap | |
| BBBb | C7B~5A5A | 2~ | mov | word ptr [sil,SASAH ; Initialize temp to  | ||
| BBBBA | 9BDD3C | 29 | fnstsw | [sil | 
 | nust use  | 
| 
 | 
 | 3B | 
 | 
 | 
 | It is not necessary to use a blAIT instruction | 
| 
 | 
 | 31 | 
 | 
 | 
 | after fnstsw or fnstew. Do not use one here. | 
| BBn | aB3CBB | 32 | cmp | byte ptr | [sil," | See if correct" status with zeroes was read | 
| BB1B | 752A | 33 | jne | no_npx | 
 | Jump if not a valid status word. meaning no NPX | 
| 
 | 
 | 3~ | 
 | 
 | 
 | 
 | 
35Naill see if ones .can be correctly written from the control word.
3b
| BB12 | 9BD93C | 37 | fnstcw | [sil | Look at the control word; do not use k1AIT form | 
| 
 | 
 | 38 | 
 | ax. [sil | »0 not use a IIIAIT instruction here! | 
| BB15 | ~aB~ | 39 | mov | See if ones can be written by NPX | |
| BB17 | 253f18 | ~B | and | ax. 193fh | See if selected parts of control. word look OK | 
| BB1A | 3D3fBB | ~l | cmp | ax.3fh | {heck that· ones and zeroes were correctly read | 
| BBH'751D | ~2 | jne | no_npx | Jump if no NPX is installed | |
| 
 | 
 | ~3 | 
 | 
 | 
 | 
~~Somne numerics chip is installed. NPX 
~5 See if the NPX is an 8B~7. ~B2a7. i387 SX or i387 DX NPX
~b This code is necessary if a denormal exception handler is used or the
~7 new i367 J)X NPX instructions will be used .
. ~6
