2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
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 *******************************************************************/
17 /* PRIVATE VARIABLES **********************************************************/
20 * This is the list of registered BOP handlers.
22 static EMULATOR_BOP_PROC BopProc
[EMULATOR_MAX_BOP_NUM
] = { NULL
};
24 /* PUBLIC FUNCTIONS ***********************************************************/
26 VOID
RegisterBop(BYTE BopCode
, EMULATOR_BOP_PROC BopHandler
)
28 BopProc
[BopCode
] = BopHandler
;
31 VOID WINAPI
EmulatorBiosOperation(PFAST486_STATE State
, UCHAR BopCode
)
33 WORD StackSegment
, StackPointer
;
37 StackSegment
= State
->SegmentRegs
[FAST486_REG_SS
].Selector
;
38 StackPointer
= State
->GeneralRegs
[FAST486_REG_ESP
].LowWord
;
41 Stack
= (LPWORD
)SEG_OFF_TO_PTR(StackSegment
, StackPointer
);
43 /* Call the BOP handler */
44 if (BopProc
[BopCode
] != NULL
)
45 BopProc
[BopCode
](Stack
);
47 DPRINT("Invalid BOP code: 0x%02X\n", BopCode
);