mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 17:42:58 +00:00
[NTVDM]
- Thanks Thomas for having pointed me towards the fact that the NTVDM exports were really STDCALL and not CDECL (as I've thought first, because originally I was checking whether the getXX() functions were stdcall or not, and distinguishing VOID stdcall or cdecl functions without the symbols was hopeless). - Halfplement and export Sim32pGetVDMPointer and MGetVdmPointer, needed to run correctly the RageStorm "galaxy" sample mentioned yesterday (see revision 61283). Now it loads and the dispatch call works \o/ - VDD_INIT_PROC and VDD_DISPATCH_PROC have the same signature --> rename them to VDD_PROC. Have fun at testing! svn path=/branches/ntvdm/; revision=61286
This commit is contained in:
parent
ed874b41fc
commit
90ab15cf66
5 changed files with 290 additions and 265 deletions
|
@ -171,4 +171,25 @@ VOID EmulatorSetA20(BOOLEAN Enabled)
|
||||||
A20Line = Enabled;
|
A20Line = Enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PBYTE WINAPI Sim32pGetVDMPointer(ULONG Address, BOOL ProtectedMode)
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
UNREFERENCED_PARAMETER(ProtectedMode);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HIWORD(Address) == Segment (if ProtectedMode == FALSE)
|
||||||
|
* or Selector (if ProtectedMode == TRUE )
|
||||||
|
* LOWORD(Address) == Offset
|
||||||
|
*/
|
||||||
|
return SEG_OFF_TO_PTR(HIWORD(Address), LOWORD(Address));
|
||||||
|
}
|
||||||
|
|
||||||
|
PBYTE WINAPI MGetVdmPointer(ULONG Address, ULONG Size, BOOL ProtectedMode)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(Size);
|
||||||
|
return Sim32pGetVDMPointer(Address, ProtectedMode);
|
||||||
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -1,88 +1,93 @@
|
||||||
@ cdecl getAF()
|
@ stdcall getAF()
|
||||||
@ cdecl getAH()
|
@ stdcall getAH()
|
||||||
@ cdecl getAL()
|
@ stdcall getAL()
|
||||||
@ cdecl getAX()
|
@ stdcall getAX()
|
||||||
@ cdecl getBH()
|
@ stdcall getBH()
|
||||||
@ cdecl getBL()
|
@ stdcall getBL()
|
||||||
@ cdecl getBP()
|
@ stdcall getBP()
|
||||||
@ cdecl getBX()
|
@ stdcall getBX()
|
||||||
@ cdecl getCF()
|
@ stdcall getCF()
|
||||||
@ cdecl getCH()
|
@ stdcall getCH()
|
||||||
@ cdecl getCL()
|
@ stdcall getCL()
|
||||||
@ cdecl getCS()
|
@ stdcall getCS()
|
||||||
@ cdecl getCX()
|
@ stdcall getCX()
|
||||||
@ cdecl getDF()
|
@ stdcall getDF()
|
||||||
@ cdecl getDH()
|
@ stdcall getDH()
|
||||||
@ cdecl getDI()
|
@ stdcall getDI()
|
||||||
@ cdecl getDL()
|
@ stdcall getDL()
|
||||||
@ cdecl getDS()
|
@ stdcall getDS()
|
||||||
@ cdecl getDX()
|
@ stdcall getDX()
|
||||||
@ cdecl getEAX()
|
@ stdcall getEAX()
|
||||||
@ cdecl getEBP()
|
@ stdcall getEBP()
|
||||||
@ cdecl getEBX()
|
@ stdcall getEBX()
|
||||||
@ cdecl getECX()
|
@ stdcall getECX()
|
||||||
@ cdecl getEDI()
|
@ stdcall getEDI()
|
||||||
@ cdecl getEDX()
|
@ stdcall getEDX()
|
||||||
@ cdecl getEFLAGS()
|
@ stdcall getEFLAGS()
|
||||||
@ cdecl getEIP()
|
@ stdcall getEIP()
|
||||||
@ cdecl getES()
|
@ stdcall getES()
|
||||||
@ cdecl getESI()
|
@ stdcall getESI()
|
||||||
@ cdecl getESP()
|
@ stdcall getESP()
|
||||||
@ cdecl getFS()
|
@ stdcall getFS()
|
||||||
@ cdecl getGS()
|
@ stdcall getGS()
|
||||||
@ cdecl getIF()
|
@ stdcall getIF()
|
||||||
; @ cdecl getIntelRegistersPointer()
|
; @ stdcall getIntelRegistersPointer()
|
||||||
@ cdecl getIP()
|
@ stdcall getIP()
|
||||||
@ cdecl getMSW()
|
@ stdcall getMSW()
|
||||||
@ cdecl getOF()
|
@ stdcall getOF()
|
||||||
@ cdecl getPF()
|
@ stdcall getPF()
|
||||||
@ cdecl getSF()
|
@ stdcall getSF()
|
||||||
@ cdecl getSI()
|
@ stdcall getSI()
|
||||||
@ cdecl getSP()
|
@ stdcall getSP()
|
||||||
@ cdecl getSS()
|
@ stdcall getSS()
|
||||||
@ cdecl getZF()
|
@ stdcall getZF()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ cdecl setAF(long)
|
@ stdcall setAF(long)
|
||||||
@ cdecl setAH(long)
|
@ stdcall setAH(long)
|
||||||
@ cdecl setAL(long)
|
@ stdcall setAL(long)
|
||||||
@ cdecl setAX(long)
|
@ stdcall setAX(long)
|
||||||
@ cdecl setBH(long)
|
@ stdcall setBH(long)
|
||||||
@ cdecl setBL(long)
|
@ stdcall setBL(long)
|
||||||
@ cdecl setBP(long)
|
@ stdcall setBP(long)
|
||||||
@ cdecl setBX(long)
|
@ stdcall setBX(long)
|
||||||
@ cdecl setCF(long)
|
@ stdcall setCF(long)
|
||||||
@ cdecl setCH(long)
|
@ stdcall setCH(long)
|
||||||
@ cdecl setCL(long)
|
@ stdcall setCL(long)
|
||||||
@ cdecl setCS(long)
|
@ stdcall setCS(long)
|
||||||
@ cdecl setCX(long)
|
@ stdcall setCX(long)
|
||||||
@ cdecl setDF(long)
|
@ stdcall setDF(long)
|
||||||
@ cdecl setDH(long)
|
@ stdcall setDH(long)
|
||||||
@ cdecl setDI(long)
|
@ stdcall setDI(long)
|
||||||
@ cdecl setDL(long)
|
@ stdcall setDL(long)
|
||||||
@ cdecl setDS(long)
|
@ stdcall setDS(long)
|
||||||
@ cdecl setDX(long)
|
@ stdcall setDX(long)
|
||||||
@ cdecl setEAX(long)
|
@ stdcall setEAX(long)
|
||||||
@ cdecl setEBP(long)
|
@ stdcall setEBP(long)
|
||||||
@ cdecl setEBX(long)
|
@ stdcall setEBX(long)
|
||||||
@ cdecl setECX(long)
|
@ stdcall setECX(long)
|
||||||
@ cdecl setEDI(long)
|
@ stdcall setEDI(long)
|
||||||
@ cdecl setEDX(long)
|
@ stdcall setEDX(long)
|
||||||
@ cdecl setEFLAGS(long)
|
@ stdcall setEFLAGS(long)
|
||||||
@ cdecl setEIP(long)
|
@ stdcall setEIP(long)
|
||||||
@ cdecl setES(long)
|
@ stdcall setES(long)
|
||||||
@ cdecl setESI(long)
|
@ stdcall setESI(long)
|
||||||
@ cdecl setESP(long)
|
@ stdcall setESP(long)
|
||||||
@ cdecl setFS(long)
|
@ stdcall setFS(long)
|
||||||
@ cdecl setGS(long)
|
@ stdcall setGS(long)
|
||||||
@ cdecl setIF(long)
|
@ stdcall setIF(long)
|
||||||
@ cdecl setIP(long)
|
@ stdcall setIP(long)
|
||||||
@ cdecl setMSW(long)
|
@ stdcall setMSW(long)
|
||||||
@ cdecl setOF(long)
|
@ stdcall setOF(long)
|
||||||
@ cdecl setPF(long)
|
@ stdcall setPF(long)
|
||||||
@ cdecl setSF(long)
|
@ stdcall setSF(long)
|
||||||
@ cdecl setSI(long)
|
@ stdcall setSI(long)
|
||||||
@ cdecl setSP(long)
|
@ stdcall setSP(long)
|
||||||
@ cdecl setSS(long)
|
@ stdcall setSS(long)
|
||||||
@ cdecl setZF(long)
|
@ stdcall setZF(long)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ stdcall MGetVdmPointer(long long long)
|
||||||
|
@ stdcall Sim32pGetVDMPointer(long long)
|
||||||
|
|
|
@ -38,112 +38,112 @@ VOID EmulatorSetStack(WORD Segment, DWORD Offset)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getEAX(VOID)
|
getEAX(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EAX].Long;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EAX].Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setEAX(ULONG Value)
|
setEAX(ULONG Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EAX].Long = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EAX].Long = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getAX(VOID)
|
getAX(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EAX].LowWord;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EAX].LowWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setAX(USHORT Value)
|
setAX(USHORT Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EAX].LowWord = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EAX].LowWord = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
CDECL
|
WINAPI
|
||||||
getAH(VOID)
|
getAH(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EAX].HighByte;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EAX].HighByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setAH(UCHAR Value)
|
setAH(UCHAR Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EAX].HighByte = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EAX].HighByte = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
CDECL
|
WINAPI
|
||||||
getAL(VOID)
|
getAL(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EAX].LowByte;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EAX].LowByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setAL(UCHAR Value)
|
setAL(UCHAR Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EAX].LowByte = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EAX].LowByte = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getEBX(VOID)
|
getEBX(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EBX].Long;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EBX].Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setEBX(ULONG Value)
|
setEBX(ULONG Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EBX].Long = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EBX].Long = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getBX(VOID)
|
getBX(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EBX].LowWord;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EBX].LowWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setBX(USHORT Value)
|
setBX(USHORT Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EBX].LowWord = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EBX].LowWord = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
CDECL
|
WINAPI
|
||||||
getBH(VOID)
|
getBH(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EBX].HighByte;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EBX].HighByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setBH(UCHAR Value)
|
setBH(UCHAR Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EBX].HighByte = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EBX].HighByte = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
CDECL
|
WINAPI
|
||||||
getBL(VOID)
|
getBL(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EBX].LowByte;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EBX].LowByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setBL(UCHAR Value)
|
setBL(UCHAR Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EBX].LowByte = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EBX].LowByte = Value;
|
||||||
|
@ -152,56 +152,56 @@ setBL(UCHAR Value)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getECX(VOID)
|
getECX(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_ECX].Long;
|
return EmulatorContext.GeneralRegs[FAST486_REG_ECX].Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setECX(ULONG Value)
|
setECX(ULONG Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_ECX].Long = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_ECX].Long = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getCX(VOID)
|
getCX(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_ECX].LowWord;
|
return EmulatorContext.GeneralRegs[FAST486_REG_ECX].LowWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setCX(USHORT Value)
|
setCX(USHORT Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_ECX].LowWord = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_ECX].LowWord = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
CDECL
|
WINAPI
|
||||||
getCH(VOID)
|
getCH(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_ECX].HighByte;
|
return EmulatorContext.GeneralRegs[FAST486_REG_ECX].HighByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setCH(UCHAR Value)
|
setCH(UCHAR Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_ECX].HighByte = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_ECX].HighByte = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
CDECL
|
WINAPI
|
||||||
getCL(VOID)
|
getCL(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_ECX].LowByte;
|
return EmulatorContext.GeneralRegs[FAST486_REG_ECX].LowByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setCL(UCHAR Value)
|
setCL(UCHAR Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_ECX].LowByte = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_ECX].LowByte = Value;
|
||||||
|
@ -210,56 +210,56 @@ setCL(UCHAR Value)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getEDX(VOID)
|
getEDX(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EDX].Long;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EDX].Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setEDX(ULONG Value)
|
setEDX(ULONG Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EDX].Long = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EDX].Long = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getDX(VOID)
|
getDX(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EDX].LowWord;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EDX].LowWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setDX(USHORT Value)
|
setDX(USHORT Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EDX].LowWord = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EDX].LowWord = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
CDECL
|
WINAPI
|
||||||
getDH(VOID)
|
getDH(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EDX].HighByte;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EDX].HighByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setDH(UCHAR Value)
|
setDH(UCHAR Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EDX].HighByte = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EDX].HighByte = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
CDECL
|
WINAPI
|
||||||
getDL(VOID)
|
getDL(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EDX].LowByte;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EDX].LowByte;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setDL(UCHAR Value)
|
setDL(UCHAR Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EDX].LowByte = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EDX].LowByte = Value;
|
||||||
|
@ -268,28 +268,28 @@ setDL(UCHAR Value)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getESP(VOID)
|
getESP(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_ESP].Long;
|
return EmulatorContext.GeneralRegs[FAST486_REG_ESP].Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setESP(ULONG Value)
|
setESP(ULONG Value)
|
||||||
{
|
{
|
||||||
EmulatorSetStack(getSS(), Value);
|
EmulatorSetStack(getSS(), Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getSP(VOID)
|
getSP(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_ESP].LowWord;
|
return EmulatorContext.GeneralRegs[FAST486_REG_ESP].LowWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setSP(USHORT Value)
|
setSP(USHORT Value)
|
||||||
{
|
{
|
||||||
EmulatorSetStack(getSS(), Value);
|
EmulatorSetStack(getSS(), Value);
|
||||||
|
@ -298,28 +298,28 @@ setSP(USHORT Value)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getEBP(VOID)
|
getEBP(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EBP].Long;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EBP].Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setEBP(ULONG Value)
|
setEBP(ULONG Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EBP].Long = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EBP].Long = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getBP(VOID)
|
getBP(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EBP].LowWord;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EBP].LowWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setBP(USHORT Value)
|
setBP(USHORT Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EBP].LowWord = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EBP].LowWord = Value;
|
||||||
|
@ -328,28 +328,28 @@ setBP(USHORT Value)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getESI(VOID)
|
getESI(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_ESI].Long;
|
return EmulatorContext.GeneralRegs[FAST486_REG_ESI].Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setESI(ULONG Value)
|
setESI(ULONG Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_ESI].Long = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_ESI].Long = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getSI(VOID)
|
getSI(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_ESI].LowWord;
|
return EmulatorContext.GeneralRegs[FAST486_REG_ESI].LowWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setSI(USHORT Value)
|
setSI(USHORT Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_ESI].LowWord = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_ESI].LowWord = Value;
|
||||||
|
@ -358,28 +358,28 @@ setSI(USHORT Value)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getEDI(VOID)
|
getEDI(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EDI].Long;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EDI].Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setEDI(ULONG Value)
|
setEDI(ULONG Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EDI].Long = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EDI].Long = Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getDI(VOID)
|
getDI(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.GeneralRegs[FAST486_REG_EDI].LowWord;
|
return EmulatorContext.GeneralRegs[FAST486_REG_EDI].LowWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setDI(USHORT Value)
|
setDI(USHORT Value)
|
||||||
{
|
{
|
||||||
EmulatorContext.GeneralRegs[FAST486_REG_EDI].LowWord = Value;
|
EmulatorContext.GeneralRegs[FAST486_REG_EDI].LowWord = Value;
|
||||||
|
@ -388,28 +388,28 @@ setDI(USHORT Value)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getEIP(VOID)
|
getEIP(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.InstPtr.Long;
|
return EmulatorContext.InstPtr.Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setEIP(ULONG Value)
|
setEIP(ULONG Value)
|
||||||
{
|
{
|
||||||
EmulatorExecute(getCS(), Value);
|
EmulatorExecute(getCS(), Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getIP(VOID)
|
getIP(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.InstPtr.LowWord;
|
return EmulatorContext.InstPtr.LowWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setIP(USHORT Value)
|
setIP(USHORT Value)
|
||||||
{
|
{
|
||||||
EmulatorExecute(getCS(), Value);
|
EmulatorExecute(getCS(), Value);
|
||||||
|
@ -418,84 +418,84 @@ setIP(USHORT Value)
|
||||||
|
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getCS(VOID)
|
getCS(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.SegmentRegs[FAST486_REG_CS].Selector;
|
return EmulatorContext.SegmentRegs[FAST486_REG_CS].Selector;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setCS(USHORT Value)
|
setCS(USHORT Value)
|
||||||
{
|
{
|
||||||
Fast486SetSegment(&EmulatorContext, FAST486_REG_CS, Value);
|
Fast486SetSegment(&EmulatorContext, FAST486_REG_CS, Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getSS(VOID)
|
getSS(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.SegmentRegs[FAST486_REG_SS].Selector;
|
return EmulatorContext.SegmentRegs[FAST486_REG_SS].Selector;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setSS(USHORT Value)
|
setSS(USHORT Value)
|
||||||
{
|
{
|
||||||
Fast486SetSegment(&EmulatorContext, FAST486_REG_SS, Value);
|
Fast486SetSegment(&EmulatorContext, FAST486_REG_SS, Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getDS(VOID)
|
getDS(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.SegmentRegs[FAST486_REG_DS].Selector;
|
return EmulatorContext.SegmentRegs[FAST486_REG_DS].Selector;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setDS(USHORT Value)
|
setDS(USHORT Value)
|
||||||
{
|
{
|
||||||
Fast486SetSegment(&EmulatorContext, FAST486_REG_DS, Value);
|
Fast486SetSegment(&EmulatorContext, FAST486_REG_DS, Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getES(VOID)
|
getES(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.SegmentRegs[FAST486_REG_ES].Selector;
|
return EmulatorContext.SegmentRegs[FAST486_REG_ES].Selector;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setES(USHORT Value)
|
setES(USHORT Value)
|
||||||
{
|
{
|
||||||
Fast486SetSegment(&EmulatorContext, FAST486_REG_ES, Value);
|
Fast486SetSegment(&EmulatorContext, FAST486_REG_ES, Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getFS(VOID)
|
getFS(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.SegmentRegs[FAST486_REG_FS].Selector;
|
return EmulatorContext.SegmentRegs[FAST486_REG_FS].Selector;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setFS(USHORT Value)
|
setFS(USHORT Value)
|
||||||
{
|
{
|
||||||
Fast486SetSegment(&EmulatorContext, FAST486_REG_FS, Value);
|
Fast486SetSegment(&EmulatorContext, FAST486_REG_FS, Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getGS(VOID)
|
getGS(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.SegmentRegs[FAST486_REG_GS].Selector;
|
return EmulatorContext.SegmentRegs[FAST486_REG_GS].Selector;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setGS(USHORT Value)
|
setGS(USHORT Value)
|
||||||
{
|
{
|
||||||
Fast486SetSegment(&EmulatorContext, FAST486_REG_GS, Value);
|
Fast486SetSegment(&EmulatorContext, FAST486_REG_GS, Value);
|
||||||
|
@ -504,14 +504,14 @@ setGS(USHORT Value)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getCF(VOID)
|
getCF(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorGetFlag(EMULATOR_FLAG_CF);
|
return EmulatorGetFlag(EMULATOR_FLAG_CF);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setCF(ULONG Flag)
|
setCF(ULONG Flag)
|
||||||
{
|
{
|
||||||
if (Flag & 1)
|
if (Flag & 1)
|
||||||
|
@ -521,14 +521,14 @@ setCF(ULONG Flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getPF(VOID)
|
getPF(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorGetFlag(EMULATOR_FLAG_PF);
|
return EmulatorGetFlag(EMULATOR_FLAG_PF);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setPF(ULONG Flag)
|
setPF(ULONG Flag)
|
||||||
{
|
{
|
||||||
if (Flag & 1)
|
if (Flag & 1)
|
||||||
|
@ -538,14 +538,14 @@ setPF(ULONG Flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getAF(VOID)
|
getAF(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorGetFlag(EMULATOR_FLAG_AF);
|
return EmulatorGetFlag(EMULATOR_FLAG_AF);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setAF(ULONG Flag)
|
setAF(ULONG Flag)
|
||||||
{
|
{
|
||||||
if (Flag & 1)
|
if (Flag & 1)
|
||||||
|
@ -555,14 +555,14 @@ setAF(ULONG Flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getZF(VOID)
|
getZF(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorGetFlag(EMULATOR_FLAG_ZF);
|
return EmulatorGetFlag(EMULATOR_FLAG_ZF);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setZF(ULONG Flag)
|
setZF(ULONG Flag)
|
||||||
{
|
{
|
||||||
if (Flag & 1)
|
if (Flag & 1)
|
||||||
|
@ -572,14 +572,14 @@ setZF(ULONG Flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getSF(VOID)
|
getSF(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorGetFlag(EMULATOR_FLAG_SF);
|
return EmulatorGetFlag(EMULATOR_FLAG_SF);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setSF(ULONG Flag)
|
setSF(ULONG Flag)
|
||||||
{
|
{
|
||||||
if (Flag & 1)
|
if (Flag & 1)
|
||||||
|
@ -589,14 +589,14 @@ setSF(ULONG Flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getIF(VOID)
|
getIF(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorGetFlag(EMULATOR_FLAG_IF);
|
return EmulatorGetFlag(EMULATOR_FLAG_IF);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setIF(ULONG Flag)
|
setIF(ULONG Flag)
|
||||||
{
|
{
|
||||||
if (Flag & 1)
|
if (Flag & 1)
|
||||||
|
@ -606,14 +606,14 @@ setIF(ULONG Flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getDF(VOID)
|
getDF(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorGetFlag(EMULATOR_FLAG_DF);
|
return EmulatorGetFlag(EMULATOR_FLAG_DF);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setDF(ULONG Flag)
|
setDF(ULONG Flag)
|
||||||
{
|
{
|
||||||
if (Flag & 1)
|
if (Flag & 1)
|
||||||
|
@ -623,14 +623,14 @@ setDF(ULONG Flag)
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getOF(VOID)
|
getOF(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorGetFlag(EMULATOR_FLAG_OF);
|
return EmulatorGetFlag(EMULATOR_FLAG_OF);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setOF(ULONG Flag)
|
setOF(ULONG Flag)
|
||||||
{
|
{
|
||||||
if (Flag & 1)
|
if (Flag & 1)
|
||||||
|
@ -642,14 +642,14 @@ setOF(ULONG Flag)
|
||||||
|
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
CDECL
|
WINAPI
|
||||||
getEFLAGS(VOID)
|
getEFLAGS(VOID)
|
||||||
{
|
{
|
||||||
return EmulatorContext.Flags.Long;
|
return EmulatorContext.Flags.Long;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setEFLAGS(ULONG Flags)
|
setEFLAGS(ULONG Flags)
|
||||||
{
|
{
|
||||||
EmulatorContext.Flags.Long = Flags;
|
EmulatorContext.Flags.Long = Flags;
|
||||||
|
@ -658,14 +658,14 @@ setEFLAGS(ULONG Flags)
|
||||||
|
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
CDECL
|
WINAPI
|
||||||
getMSW(VOID)
|
getMSW(VOID)
|
||||||
{
|
{
|
||||||
return LOWORD(EmulatorContext.ControlRegisters[FAST486_REG_CR0]);
|
return LOWORD(EmulatorContext.ControlRegisters[FAST486_REG_CR0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
CDECL
|
WINAPI
|
||||||
setMSW(USHORT Value)
|
setMSW(USHORT Value)
|
||||||
{
|
{
|
||||||
/* Set the lower 16 bits (Machine Status Word) of CR0 */
|
/* Set the lower 16 bits (Machine Status Word) of CR0 */
|
||||||
|
|
|
@ -14,104 +14,104 @@
|
||||||
VOID EmulatorSetStack(WORD Segment, DWORD Offset);
|
VOID EmulatorSetStack(WORD Segment, DWORD Offset);
|
||||||
|
|
||||||
|
|
||||||
ULONG getEAX(VOID);
|
ULONG WINAPI getEAX(VOID);
|
||||||
VOID setEAX(ULONG);
|
VOID WINAPI setEAX(ULONG);
|
||||||
USHORT getAX(VOID);
|
USHORT WINAPI getAX(VOID);
|
||||||
VOID setAX(USHORT);
|
VOID WINAPI setAX(USHORT);
|
||||||
UCHAR getAH(VOID);
|
UCHAR WINAPI getAH(VOID);
|
||||||
VOID setAH(UCHAR);
|
VOID WINAPI setAH(UCHAR);
|
||||||
UCHAR getAL(VOID);
|
UCHAR WINAPI getAL(VOID);
|
||||||
VOID setAL(UCHAR);
|
VOID WINAPI setAL(UCHAR);
|
||||||
|
|
||||||
ULONG getEBX(VOID);
|
ULONG WINAPI getEBX(VOID);
|
||||||
VOID setEBX(ULONG);
|
VOID WINAPI setEBX(ULONG);
|
||||||
USHORT getBX(VOID);
|
USHORT WINAPI getBX(VOID);
|
||||||
VOID setBX(USHORT);
|
VOID WINAPI setBX(USHORT);
|
||||||
UCHAR getBH(VOID);
|
UCHAR WINAPI getBH(VOID);
|
||||||
VOID setBH(UCHAR);
|
VOID WINAPI setBH(UCHAR);
|
||||||
UCHAR getBL(VOID);
|
UCHAR WINAPI getBL(VOID);
|
||||||
VOID setBL(UCHAR);
|
VOID WINAPI setBL(UCHAR);
|
||||||
|
|
||||||
ULONG getECX(VOID);
|
ULONG WINAPI getECX(VOID);
|
||||||
VOID setECX(ULONG);
|
VOID WINAPI setECX(ULONG);
|
||||||
USHORT getCX(VOID);
|
USHORT WINAPI getCX(VOID);
|
||||||
VOID setCX(USHORT);
|
VOID WINAPI setCX(USHORT);
|
||||||
UCHAR getCH(VOID);
|
UCHAR WINAPI getCH(VOID);
|
||||||
VOID setCH(UCHAR);
|
VOID WINAPI setCH(UCHAR);
|
||||||
UCHAR getCL(VOID);
|
UCHAR WINAPI getCL(VOID);
|
||||||
VOID setCL(UCHAR);
|
VOID WINAPI setCL(UCHAR);
|
||||||
|
|
||||||
ULONG getEDX(VOID);
|
ULONG WINAPI getEDX(VOID);
|
||||||
VOID setEDX(ULONG);
|
VOID WINAPI setEDX(ULONG);
|
||||||
USHORT getDX(VOID);
|
USHORT WINAPI getDX(VOID);
|
||||||
VOID setDX(USHORT);
|
VOID WINAPI setDX(USHORT);
|
||||||
UCHAR getDH(VOID);
|
UCHAR WINAPI getDH(VOID);
|
||||||
VOID setDH(UCHAR);
|
VOID WINAPI setDH(UCHAR);
|
||||||
UCHAR getDL(VOID);
|
UCHAR WINAPI getDL(VOID);
|
||||||
VOID setDL(UCHAR);
|
VOID WINAPI setDL(UCHAR);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ULONG getESP(VOID);
|
ULONG WINAPI getESP(VOID);
|
||||||
VOID setESP(ULONG);
|
VOID WINAPI setESP(ULONG);
|
||||||
USHORT getSP(VOID);
|
USHORT WINAPI getSP(VOID);
|
||||||
VOID setSP(USHORT);
|
VOID WINAPI setSP(USHORT);
|
||||||
|
|
||||||
ULONG getEBP(VOID);
|
ULONG WINAPI getEBP(VOID);
|
||||||
VOID setEBP(ULONG);
|
VOID WINAPI setEBP(ULONG);
|
||||||
USHORT getBP(VOID);
|
USHORT WINAPI getBP(VOID);
|
||||||
VOID setBP(USHORT);
|
VOID WINAPI setBP(USHORT);
|
||||||
|
|
||||||
ULONG getESI(VOID);
|
ULONG WINAPI getESI(VOID);
|
||||||
VOID setESI(ULONG);
|
VOID WINAPI setESI(ULONG);
|
||||||
USHORT getSI(VOID);
|
USHORT WINAPI getSI(VOID);
|
||||||
VOID setSI(USHORT);
|
VOID WINAPI setSI(USHORT);
|
||||||
|
|
||||||
ULONG getEDI(VOID);
|
ULONG WINAPI getEDI(VOID);
|
||||||
VOID setEDI(ULONG);
|
VOID WINAPI setEDI(ULONG);
|
||||||
USHORT getDI(VOID);
|
USHORT WINAPI getDI(VOID);
|
||||||
VOID setDI(USHORT);
|
VOID WINAPI setDI(USHORT);
|
||||||
|
|
||||||
ULONG getEIP(VOID);
|
ULONG WINAPI getEIP(VOID);
|
||||||
VOID setEIP(ULONG);
|
VOID WINAPI setEIP(ULONG);
|
||||||
USHORT getIP(VOID);
|
USHORT WINAPI getIP(VOID);
|
||||||
VOID setIP(USHORT);
|
VOID WINAPI setIP(USHORT);
|
||||||
|
|
||||||
USHORT getCS(VOID);
|
USHORT WINAPI getCS(VOID);
|
||||||
VOID setCS(USHORT);
|
VOID WINAPI setCS(USHORT);
|
||||||
USHORT getSS(VOID);
|
USHORT WINAPI getSS(VOID);
|
||||||
VOID setSS(USHORT);
|
VOID WINAPI setSS(USHORT);
|
||||||
USHORT getDS(VOID);
|
USHORT WINAPI getDS(VOID);
|
||||||
VOID setDS(USHORT);
|
VOID WINAPI setDS(USHORT);
|
||||||
USHORT getES(VOID);
|
USHORT WINAPI getES(VOID);
|
||||||
VOID setES(USHORT);
|
VOID WINAPI setES(USHORT);
|
||||||
USHORT getFS(VOID);
|
USHORT WINAPI getFS(VOID);
|
||||||
VOID setFS(USHORT);
|
VOID WINAPI setFS(USHORT);
|
||||||
USHORT getGS(VOID);
|
USHORT WINAPI getGS(VOID);
|
||||||
VOID setGS(USHORT);
|
VOID WINAPI setGS(USHORT);
|
||||||
|
|
||||||
ULONG getCF(VOID);
|
ULONG WINAPI getCF(VOID);
|
||||||
VOID setCF(ULONG);
|
VOID WINAPI setCF(ULONG);
|
||||||
ULONG getPF(VOID);
|
ULONG WINAPI getPF(VOID);
|
||||||
VOID setPF(ULONG);
|
VOID WINAPI setPF(ULONG);
|
||||||
ULONG getAF(VOID);
|
ULONG WINAPI getAF(VOID);
|
||||||
VOID setAF(ULONG);
|
VOID WINAPI setAF(ULONG);
|
||||||
ULONG getZF(VOID);
|
ULONG WINAPI getZF(VOID);
|
||||||
VOID setZF(ULONG);
|
VOID WINAPI setZF(ULONG);
|
||||||
ULONG getSF(VOID);
|
ULONG WINAPI getSF(VOID);
|
||||||
VOID setSF(ULONG);
|
VOID WINAPI setSF(ULONG);
|
||||||
ULONG getIF(VOID);
|
ULONG WINAPI getIF(VOID);
|
||||||
VOID setIF(ULONG);
|
VOID WINAPI setIF(ULONG);
|
||||||
ULONG getDF(VOID);
|
ULONG WINAPI getDF(VOID);
|
||||||
VOID setDF(ULONG);
|
VOID WINAPI setDF(ULONG);
|
||||||
ULONG getOF(VOID);
|
ULONG WINAPI getOF(VOID);
|
||||||
VOID setOF(ULONG);
|
VOID WINAPI setOF(ULONG);
|
||||||
|
|
||||||
ULONG getEFLAGS(VOID);
|
ULONG WINAPI getEFLAGS(VOID);
|
||||||
VOID setEFLAGS(ULONG);
|
VOID WINAPI setEFLAGS(ULONG);
|
||||||
|
|
||||||
USHORT getMSW(VOID);
|
USHORT WINAPI getMSW(VOID);
|
||||||
VOID setMSW(USHORT);
|
VOID WINAPI setMSW(USHORT);
|
||||||
|
|
||||||
#endif // _REGISTERS_H_
|
#endif // _REGISTERS_H_
|
||||||
|
|
||||||
|
|
|
@ -16,13 +16,12 @@
|
||||||
#include "bop.h"
|
#include "bop.h"
|
||||||
#include "registers.h"
|
#include "registers.h"
|
||||||
|
|
||||||
typedef VOID (CDECL *VDD_INIT_PROC)(VOID);
|
typedef VOID (WINAPI *VDD_PROC)(VOID);
|
||||||
typedef VOID (CDECL *VDD_DISPATCH_PROC)(VOID);
|
|
||||||
|
|
||||||
typedef struct _VDD_MODULE
|
typedef struct _VDD_MODULE
|
||||||
{
|
{
|
||||||
HMODULE hDll;
|
HMODULE hDll;
|
||||||
VDD_DISPATCH_PROC DispatchRoutine;
|
VDD_PROC DispatchRoutine;
|
||||||
} VDD_MODULE, *PVDD_MODULE;
|
} VDD_MODULE, *PVDD_MODULE;
|
||||||
|
|
||||||
/* BOP Identifiers */
|
/* BOP Identifiers */
|
||||||
|
@ -30,7 +29,7 @@ typedef struct _VDD_MODULE
|
||||||
|
|
||||||
/* PRIVATE VARIABLES **********************************************************/
|
/* PRIVATE VARIABLES **********************************************************/
|
||||||
|
|
||||||
#define MAX_VDD_MODULES 0xFF
|
#define MAX_VDD_MODULES 0xFF + 1
|
||||||
VDD_MODULE VDDList[MAX_VDD_MODULES] = {{NULL}}; // TODO: Maybe use a linked list.
|
VDD_MODULE VDDList[MAX_VDD_MODULES] = {{NULL}}; // TODO: Maybe use a linked list.
|
||||||
// But the number of elements must be <= MAXUSHORT
|
// But the number of elements must be <= MAXUSHORT
|
||||||
|
|
||||||
|
@ -58,14 +57,14 @@ VOID WINAPI ThirdPartyVDDBop(LPWORD Stack)
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
BOOL Success = TRUE;
|
BOOL Success = TRUE;
|
||||||
WORD RetVal = 0;
|
WORD RetVal = 0;
|
||||||
WORD Entry = 0;
|
WORD Entry = 0;
|
||||||
LPCSTR DllName = NULL,
|
LPCSTR DllName = NULL,
|
||||||
InitRoutineName = NULL,
|
InitRoutineName = NULL,
|
||||||
DispatchRoutineName = NULL;
|
DispatchRoutineName = NULL;
|
||||||
HMODULE hDll = NULL;
|
HMODULE hDll = NULL;
|
||||||
VDD_INIT_PROC InitRoutine = NULL;
|
VDD_PROC InitRoutine = NULL,
|
||||||
VDD_DISPATCH_PROC DispatchRoutine = NULL;
|
DispatchRoutine = NULL;
|
||||||
|
|
||||||
DPRINT1("RegisterModule() called\n");
|
DPRINT1("RegisterModule() called\n");
|
||||||
|
|
||||||
|
@ -111,7 +110,7 @@ VOID WINAPI ThirdPartyVDDBop(LPWORD Stack)
|
||||||
/* Load the initialization routine if needed */
|
/* Load the initialization routine if needed */
|
||||||
if (InitRoutineName)
|
if (InitRoutineName)
|
||||||
{
|
{
|
||||||
InitRoutine = (VDD_INIT_PROC)GetProcAddress(hDll, InitRoutineName);
|
InitRoutine = (VDD_PROC)GetProcAddress(hDll, InitRoutineName);
|
||||||
if (InitRoutine == NULL)
|
if (InitRoutine == NULL)
|
||||||
{
|
{
|
||||||
DPRINT1("Failed to load the initialization routine '%s'\n", InitRoutineName);
|
DPRINT1("Failed to load the initialization routine '%s'\n", InitRoutineName);
|
||||||
|
@ -122,7 +121,7 @@ VOID WINAPI ThirdPartyVDDBop(LPWORD Stack)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load the dispatch routine */
|
/* Load the dispatch routine */
|
||||||
DispatchRoutine = (VDD_DISPATCH_PROC)GetProcAddress(hDll, DispatchRoutineName);
|
DispatchRoutine = (VDD_PROC)GetProcAddress(hDll, DispatchRoutineName);
|
||||||
if (DispatchRoutine == NULL)
|
if (DispatchRoutine == NULL)
|
||||||
{
|
{
|
||||||
DPRINT1("Failed to load the dispatch routine '%s'\n", DispatchRoutineName);
|
DPRINT1("Failed to load the dispatch routine '%s'\n", DispatchRoutineName);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue