2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
4 * FILE: subsystems/mvdm/ntvdm/cpu/bop.c
5 * PURPOSE: BIOS Operation Handlers
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
10 /* INCLUDES *******************************************************************/
18 /* PRIVATE VARIABLES **********************************************************/
21 * This is the list of registered BOP handlers.
23 static EMULATOR_BOP_PROC BopProc
[EMULATOR_MAX_BOP_NUM
] = { NULL
};
25 /* PUBLIC FUNCTIONS ***********************************************************/
27 VOID
RegisterBop(BYTE BopCode
, EMULATOR_BOP_PROC BopHandler
)
29 BopProc
[BopCode
] = BopHandler
;
32 VOID FASTCALL
EmulatorBiosOperation(PFAST486_STATE State
, UCHAR BopCode
)
34 WORD StackSegment
, StackPointer
;
38 StackSegment
= State
->SegmentRegs
[FAST486_REG_SS
].Selector
;
39 StackPointer
= State
->GeneralRegs
[FAST486_REG_ESP
].LowWord
;
42 Stack
= (LPWORD
)SEG_OFF_TO_PTR(StackSegment
, StackPointer
);
44 /* Call the BOP handler */
45 if (BopProc
[BopCode
] != NULL
)
46 BopProc
[BopCode
](Stack
);
48 DPRINT1("Invalid BOP code: 0x%02X\n", BopCode
);