47 lines
1.2 KiB
NASM
47 lines
1.2 KiB
NASM
|
subttl emfinit.asm - Emulator initialization and FINIT instruction
|
||
|
page
|
||
|
;*******************************************************************************
|
||
|
;emfinit.asm - Emulator initialization and FINIT instruction
|
||
|
;
|
||
|
; Microsoft Confidential
|
||
|
;
|
||
|
; Copyright (c) Microsoft Corporation 1991
|
||
|
; All Rights Reserved
|
||
|
;
|
||
|
;Revision History:
|
||
|
;
|
||
|
; [] 09/05/91 TP Initial 32-bit version.
|
||
|
;
|
||
|
;*******************************************************************************
|
||
|
|
||
|
|
||
|
EM_ENTRY eEmulatorInit
|
||
|
EmulatorInit:
|
||
|
EM_ENTRY eFINIT
|
||
|
eFINIT:
|
||
|
mov esi,BEGstk
|
||
|
mov EMSEG:[CURstk],INITstk
|
||
|
mov ecx,Numlev
|
||
|
xor eax,eax
|
||
|
|
||
|
EmInitLoop:
|
||
|
mov EMSEG:[esi].ExpSgn,bTAG_EMPTY ;Exponent and sign are zero
|
||
|
mov EMSEG:[esi].lManHi,eax
|
||
|
mov EMSEG:[esi].lManLo,eax
|
||
|
|
||
|
add esi, Reg87Len
|
||
|
loop EmInitLoop
|
||
|
|
||
|
mov EMSEG:[StatusWord],ax ; clear status word
|
||
|
mov [esp+4].OldStatus,ax ; clear saved status word.
|
||
|
mov EMSEG:[PrevCodeOff],eax
|
||
|
mov EMSEG:[PrevDataOff],eax
|
||
|
mov EMSEG:[LongControlWord],InitControlWord
|
||
|
mov eax,offset Round64near
|
||
|
mov EMSEG:[RoundMode],eax ;Address of round routine
|
||
|
mov EMSEG:[TransRound],eax ;Address of round routine
|
||
|
mov EMSEG:[SavedRoundMode],eax
|
||
|
mov EMSEG:[ZeroVector],offset SaveResult
|
||
|
mov EMSEG:[Einstall], 1
|
||
|
ret
|