Index: subsystems/ntvdm/CMakeLists.txt =================================================================== --- subsystems/ntvdm/CMakeLists.txt (révision 59680) +++ subsystems/ntvdm/CMakeLists.txt (copie de travail) @@ -1,16 +1,20 @@ include_directories(${REACTOS_SOURCE_DIR}/include/reactos/libs/softx86) +spec2def(ntvdm.exe ntvdm.spec) + list(APPEND SOURCE bios.c dos.c emulator.c pic.c + registers.c timer.c ps2.c vga.c ntvdm.c - ntvdm.rc) + ntvdm.rc + ${CMAKE_CURRENT_BINARY_DIR}/ntvdm.def) add_executable(ntvdm ${SOURCE}) set_module_type(ntvdm win32cui UNICODE) Index: subsystems/ntvdm/ntvdm.spec =================================================================== --- subsystems/ntvdm/ntvdm.spec (révision 0) +++ subsystems/ntvdm/ntvdm.spec (copie de travail) @@ -0,0 +1,88 @@ +@ cdecl getAF() +@ cdecl getAH() +@ cdecl getAL() +@ cdecl getAX() +@ cdecl getBH() +@ cdecl getBL() +@ cdecl getBP() +@ cdecl getBX() +@ cdecl getCF() +@ cdecl getCH() +@ cdecl getCL() +@ cdecl getCS() +@ cdecl getCX() +@ cdecl getDF() +@ cdecl getDH() +@ cdecl getDI() +@ cdecl getDL() +@ cdecl getDS() +@ cdecl getDX() +@ cdecl getEAX() +@ cdecl getEBP() +@ cdecl getEBX() +@ cdecl getECX() +@ cdecl getEDI() +@ cdecl getEDX() +; @ cdecl getEFLAGS() +@ cdecl getEIP() +@ cdecl getES() +@ cdecl getESI() +@ cdecl getESP() +@ cdecl getFS() +@ cdecl getGS() +@ cdecl getIF() +; @ cdecl getIntelRegistersPointer() +@ cdecl getIP() +@ cdecl getMSW() +@ cdecl getOF() +@ cdecl getPF() +@ cdecl getSF() +@ cdecl getSI() +@ cdecl getSP() +@ cdecl getSS() +@ cdecl getZF() + + + +@ cdecl setAF(long) +@ cdecl setAH(long) +@ cdecl setAL(long) +@ cdecl setAX(long) +@ cdecl setBH(long) +@ cdecl setBL(long) +@ cdecl setBP(long) +@ cdecl setBX(long) +@ cdecl setCF(long) +@ cdecl setCH(long) +@ cdecl setCL(long) +@ cdecl setCS(long) +@ cdecl setCX(long) +@ cdecl setDF(long) +@ cdecl setDH(long) +@ cdecl setDI(long) +@ cdecl setDL(long) +@ cdecl setDS(long) +@ cdecl setDX(long) +@ cdecl setEAX(long) +@ cdecl setEBP(long) +@ cdecl setEBX(long) +@ cdecl setECX(long) +@ cdecl setEDI(long) +@ cdecl setEDX(long) +; @ cdecl setEFLAGS(long) +@ cdecl setEIP(long) +@ cdecl setES(long) +@ cdecl setESI(long) +@ cdecl setESP(long) +@ cdecl setFS(long) +@ cdecl setGS(long) +@ cdecl setIF(long) +@ cdecl setIP(long) +@ cdecl setMSW(long) +@ cdecl setOF(long) +@ cdecl setPF(long) +@ cdecl setSF(long) +@ cdecl setSI(long) +@ cdecl setSP(long) +@ cdecl setSS(long) +@ cdecl setZF(long) Index: subsystems/ntvdm/ntvdm.spec =================================================================== --- subsystems/ntvdm/ntvdm.spec (révision 0) +++ subsystems/ntvdm/ntvdm.spec (copie de travail) Modification de propriétés sur subsystems/ntvdm/ntvdm.spec ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: subsystems/ntvdm/registers.c =================================================================== --- subsystems/ntvdm/registers.c (révision 0) +++ subsystems/ntvdm/registers.c (copie de travail) @@ -0,0 +1,639 @@ +/* + * COPYRIGHT: GPL - See COPYING in the top level directory + * PROJECT: ReactOS Virtual DOS Machine + * FILE: registers.c + * PURPOSE: Exported functions for manipulating registers + * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr) + */ + +/* INCLUDES *******************************************************************/ + +#define NDEBUG + +#include "emulator.h" + +/* PUBLIC FUNCTIONS ***********************************************************/ + +ULONG +// CDECL +getEAX(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_AX); +} + +VOID +// CDECL +setEAX(ULONG Value) +{ + EmulatorSetRegister(EMULATOR_REG_AX, Value); +} + +USHORT +// CDECL +getAX(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_AX); +} + +VOID +// CDECL +setAX(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_AX, Value); +} + +UCHAR +// CDECL +getAH(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_AX); +} + +VOID +// CDECL +setAH(UCHAR Value) +{ + EmulatorSetRegister(EMULATOR_REG_AX, Value); +} + +UCHAR +// CDECL +getAL(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_AX); +} + +VOID +// CDECL +setAL(UCHAR Value) +{ + EmulatorSetRegister(EMULATOR_REG_AX, Value); +} + + + +ULONG +// CDECL +getEBX(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_BX); +} + +VOID +// CDECL +setEBX(ULONG Value) +{ + EmulatorSetRegister(EMULATOR_REG_BX, Value); +} + +USHORT +// CDECL +getBX(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_BX); +} + +VOID +// CDECL +setBX(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_BX, Value); +} + +UCHAR +// CDECL +getBH(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_BX); +} + +VOID +// CDECL +setBH(UCHAR Value) +{ + EmulatorSetRegister(EMULATOR_REG_BX, Value); +} + +UCHAR +// CDECL +getBL(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_BX); +} + +VOID +// CDECL +setBL(UCHAR Value) +{ + EmulatorSetRegister(EMULATOR_REG_BX, Value); +} + + + +ULONG +// CDECL +getECX(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_CX); +} + +VOID +// CDECL +setECX(ULONG Value) +{ + EmulatorSetRegister(EMULATOR_REG_CX, Value); +} + +USHORT +// CDECL +getCX(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_CX); +} + +VOID +// CDECL +setCX(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_CX, Value); +} + +UCHAR +// CDECL +getCH(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_CX); +} + +VOID +// CDECL +setCH(UCHAR Value) +{ + EmulatorSetRegister(EMULATOR_REG_CX, Value); +} + +UCHAR +// CDECL +getCL(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_CX); +} + +VOID +// CDECL +setCL(UCHAR Value) +{ + EmulatorSetRegister(EMULATOR_REG_CX, Value); +} + + + +ULONG +// CDECL +getEDX(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_DX); +} + +VOID +// CDECL +setEDX(ULONG Value) +{ + EmulatorSetRegister(EMULATOR_REG_DX, Value); +} + +USHORT +// CDECL +getDX(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_DX); +} + +VOID +// CDECL +setDX(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_DX, Value); +} + +UCHAR +// CDECL +getDH(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_DX); +} + +VOID +// CDECL +setDH(UCHAR Value) +{ + EmulatorSetRegister(EMULATOR_REG_DX, Value); +} + +UCHAR +// CDECL +getDL(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_DX); +} + +VOID +// CDECL +setDL(UCHAR Value) +{ + EmulatorSetRegister(EMULATOR_REG_DX, Value); +} + + + +ULONG +// CDECL +getESP(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_SP); +} + +VOID +// CDECL +setESP(ULONG Value) +{ + EmulatorSetRegister(EMULATOR_REG_SP, Value); +} + +USHORT +// CDECL +getSP(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_SP); +} + +VOID +// CDECL +setSP(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_SP, Value); +} + + + +ULONG +// CDECL +getEBP(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_BP); +} + +VOID +// CDECL +setEBP(ULONG Value) +{ + EmulatorSetRegister(EMULATOR_REG_BP, Value); +} + +USHORT +// CDECL +getBP(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_BP); +} + +VOID +// CDECL +setBP(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_BP, Value); +} + + + +ULONG +// CDECL +getESI(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_SI); +} + +VOID +// CDECL +setESI(ULONG Value) +{ + EmulatorSetRegister(EMULATOR_REG_SI, Value); +} + +USHORT +// CDECL +getSI(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_SI); +} + +VOID +// CDECL +setSI(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_SI, Value); +} + + + +ULONG +// CDECL +getEDI(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_DI); +} + +VOID +// CDECL +setEDI(ULONG Value) +{ + EmulatorSetRegister(EMULATOR_REG_DI, Value); +} + +USHORT +// CDECL +getDI(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_DI); +} + +VOID +// CDECL +setDI(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_DI, Value); +} + + + +ULONG +// CDECL +getEIP(VOID) +{ + // return EmulatorGetRegister(EMULATOR_REG_IP); + return 0; +} + +VOID +// CDECL +setEIP(ULONG Value) +{ + // EmulatorSetRegister(EMULATOR_REG_IP, Value); +} + +USHORT +// CDECL +getIP(VOID) +{ + // return EmulatorGetRegister(EMULATOR_REG_IP); + return 0; +} + +VOID +// CDECL +setIP(USHORT Value) +{ + // EmulatorSetRegister(EMULATOR_REG_IP, Value); +} + + + +USHORT +// CDECL +getCS(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_CS); +} + +VOID +// CDECL +setCS(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_CS, Value); +} + +USHORT +// CDECL +getSS(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_SS); +} + +VOID +// CDECL +setSS(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_SS, Value); +} + +USHORT +// CDECL +getDS(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_DS); +} + +VOID +// CDECL +setDS(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_DS, Value); +} + +USHORT +// CDECL +getES(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_ES); +} + +VOID +// CDECL +setES(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_ES, Value); +} + +USHORT +// CDECL +getFS(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_FS); +} + +VOID +// CDECL +setFS(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_FS, Value); +} + +USHORT +// CDECL +getGS(VOID) +{ + return EmulatorGetRegister(EMULATOR_REG_GS); +} + +VOID +// CDECL +setGS(USHORT Value) +{ + EmulatorSetRegister(EMULATOR_REG_GS, Value); +} + + + +ULONG +// CDECL +getCF(VOID) +{ + return EmulatorGetFlag(EMULATOR_FLAG_CF); +} + +VOID +// CDECL +setCF(ULONG Flag) +{ + if (Flag & 1) + EmulatorSetFlag(EMULATOR_FLAG_CF); + else + EmulatorClearFlag(EMULATOR_FLAG_CF); +} + +ULONG +// CDECL +getPF(VOID) +{ + return EmulatorGetFlag(EMULATOR_FLAG_PF); +} + +VOID +// CDECL +setPF(ULONG Flag) +{ + if (Flag & 1) + EmulatorSetFlag(EMULATOR_FLAG_PF); + else + EmulatorClearFlag(EMULATOR_FLAG_PF); +} + +ULONG +// CDECL +getAF(VOID) +{ + return EmulatorGetFlag(EMULATOR_FLAG_AF); +} + +VOID +// CDECL +setAF(ULONG Flag) +{ + if (Flag & 1) + EmulatorSetFlag(EMULATOR_FLAG_AF); + else + EmulatorClearFlag(EMULATOR_FLAG_AF); +} + +ULONG +// CDECL +getZF(VOID) +{ + return EmulatorGetFlag(EMULATOR_FLAG_ZF); +} + +VOID +// CDECL +setZF(ULONG Flag) +{ + if (Flag & 1) + EmulatorSetFlag(EMULATOR_FLAG_ZF); + else + EmulatorClearFlag(EMULATOR_FLAG_ZF); +} + +ULONG +// CDECL +getSF(VOID) +{ + return EmulatorGetFlag(EMULATOR_FLAG_SF); +} + +VOID +// CDECL +setSF(ULONG Flag) +{ + if (Flag & 1) + EmulatorSetFlag(EMULATOR_FLAG_SF); + else + EmulatorClearFlag(EMULATOR_FLAG_SF); +} + +ULONG +// CDECL +getIF(VOID) +{ + return EmulatorGetFlag(EMULATOR_FLAG_IF); +} + +VOID +// CDECL +setIF(ULONG Flag) +{ + if (Flag & 1) + EmulatorSetFlag(EMULATOR_FLAG_IF); + else + EmulatorClearFlag(EMULATOR_FLAG_IF); +} + +ULONG +// CDECL +getDF(VOID) +{ + return EmulatorGetFlag(EMULATOR_FLAG_DF); +} + +VOID +// CDECL +setDF(ULONG Flag) +{ + if (Flag & 1) + EmulatorSetFlag(EMULATOR_FLAG_DF); + else + EmulatorClearFlag(EMULATOR_FLAG_DF); +} + +ULONG +// CDECL +getOF(VOID) +{ + return EmulatorGetFlag(EMULATOR_FLAG_OF); +} + +VOID +// CDECL +setOF(ULONG Flag) +{ + if (Flag & 1) + EmulatorSetFlag(EMULATOR_FLAG_OF); + else + EmulatorClearFlag(EMULATOR_FLAG_OF); +} + + + +USHORT +// CDECL +getMSW(VOID) +{ + return 0; // UNIMPLEMENTED +} + +VOID +// CDECL +setMSW(USHORT Value) +{ + // UNIMPLEMENTED +} + +/* EOF */ Index: subsystems/ntvdm/registers.c =================================================================== --- subsystems/ntvdm/registers.c (révision 0) +++ subsystems/ntvdm/registers.c (copie de travail) Modification de propriétés sur subsystems/ntvdm/registers.c ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Index: subsystems/ntvdm/registers.h =================================================================== --- subsystems/ntvdm/registers.h (révision 0) +++ subsystems/ntvdm/registers.h (copie de travail) @@ -0,0 +1,112 @@ +/* + * COPYRIGHT: GPL - See COPYING in the top level directory + * PROJECT: ReactOS Virtual DOS Machine + * FILE: registers.c + * PURPOSE: Exported functions for manipulating registers + * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr) + */ + +#ifndef _REGISTERS_H_ +#define _REGISTERS_H_ + +/* INCLUDES *******************************************************************/ + +ULONG getEAX(VOID); +VOID setEAX(ULONG); +USHORT getAX(VOID); +VOID setAX(USHORT); +UCHAR getAH(VOID); +VOID setAH(UCHAR); +UCHAR getAL(VOID); +VOID setAL(UCHAR); + +ULONG getEBX(VOID); +VOID setEBX(ULONG); +USHORT getBX(VOID); +VOID setBX(USHORT); +UCHAR getBH(VOID); +VOID setBH(UCHAR); +UCHAR getBL(VOID); +VOID setBL(UCHAR); + +ULONG getECX(VOID); +VOID setECX(ULONG); +USHORT getCX(VOID); +VOID setCX(USHORT); +UCHAR getCH(VOID); +VOID setCH(UCHAR); +UCHAR getCL(VOID); +VOID setCL(UCHAR); + +ULONG getEDX(VOID); +VOID setEDX(ULONG); +USHORT getDX(VOID); +VOID setDX(USHORT); +UCHAR getDH(VOID); +VOID setDH(UCHAR); +UCHAR getDL(VOID); +VOID setDL(UCHAR); + + + +ULONG getESP(VOID); +VOID setESP(ULONG); +USHORT getSP(VOID); +VOID setSP(USHORT); + +ULONG getEBP(VOID); +VOID setEBP(ULONG); +USHORT getBP(VOID); +VOID setBP(USHORT); + +ULONG getESI(VOID); +VOID setESI(ULONG); +USHORT getSI(VOID); +VOID setSI(USHORT); + +ULONG getEDI(VOID); +VOID setEDI(ULONG); +USHORT getDI(VOID); +VOID setDI(USHORT); + +ULONG getEIP(VOID); +VOID setEIP(ULONG); +USHORT getIP(VOID); +VOID setIP(USHORT); + +USHORT getCS(VOID); +VOID setCS(USHORT); +USHORT getSS(VOID); +VOID setSS(USHORT); +USHORT getDS(VOID); +VOID setDS(USHORT); +USHORT getES(VOID); +VOID setES(USHORT); +USHORT getFS(VOID); +VOID setFS(USHORT); +USHORT getGS(VOID); +VOID setGS(USHORT); + +ULONG getCF(VOID); +VOID setCF(ULONG); +ULONG getPF(VOID); +VOID setPF(ULONG); +ULONG getAF(VOID); +VOID setAF(ULONG); +ULONG getZF(VOID); +VOID setZF(ULONG); +ULONG getSF(VOID); +VOID setSF(ULONG); +ULONG getIF(VOID); +VOID setIF(ULONG); +ULONG getDF(VOID); +VOID setDF(ULONG); +ULONG getOF(VOID); +VOID setOF(ULONG); + +USHORT getMSW(VOID); +VOID setMSW(USHORT); + +#endif // _REGISTERS_H_ + +/* EOF */ Index: subsystems/ntvdm/registers.h =================================================================== --- subsystems/ntvdm/registers.h (révision 0) +++ subsystems/ntvdm/registers.h (copie de travail) Modification de propriétés sur subsystems/ntvdm/registers.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property