Aleksandar Andrejevic
b9a1962978
[SOFT386]
...
Fix the LOOP instruction. LOOP should loop while ECX is not zero, not otherwise.
svn path=/branches/ntvdm/; revision=60463
2013-09-30 00:02:53 +00:00
Aleksandar Andrejevic
9331ef28b9
[SOFT386]
...
Implement opcode group 0x80. Group 0x82 is just an alias to group 0x80.
svn path=/branches/ntvdm/; revision=60450
2013-09-29 15:04:43 +00:00
Aleksandar Andrejevic
abf9647dd9
[SOFT386]
...
Stubplement opcode group handlers.
svn path=/branches/ntvdm/; revision=60441
2013-09-28 18:56:58 +00:00
Aleksandar Andrejevic
2812f2f8a5
[SOFT386]
...
Disallow direct writing to CS. Changing CS must be done with a far jump.
svn path=/branches/ntvdm/; revision=60399
2013-09-28 03:15:48 +00:00
Aleksandar Andrejevic
6db4f4e558
[SOFT386]
...
Implement MOV for segment registers.
svn path=/branches/ntvdm/; revision=60398
2013-09-28 03:01:07 +00:00
Aleksandar Andrejevic
cad18120fa
[SOFT386]
...
Fix the BOP opcode. It's LES AX, SP not LES AX, BP.
svn path=/branches/ntvdm/; revision=60396
2013-09-28 00:46:04 +00:00
Aleksandar Andrejevic
7e119cf40b
[SOFT386]
...
Implement the LES and LDS instructions.
Add optional support for BOPs (NTVDM-specific).
Fix prefix handling in some functions.
[NTVDM]
Enable BOPs for Soft386 (when NEW_EMULATOR is defined).
Fix the calling convention issue (softx86 uses cdecl, soft386 uses stdcall).
svn path=/branches/ntvdm/; revision=60395
2013-09-28 00:29:16 +00:00
Aleksandar Andrejevic
dc29fa9ab1
[SOFT386]
...
Fix the return to VM86 mode. The VM flag must be set before the call to Soft386LoadSegment.
svn path=/branches/ntvdm/; revision=60393
2013-09-27 21:23:34 +00:00
Aleksandar Andrejevic
78e8653765
[SOFT386]
...
Halfplement the IRET instruction (everything except task switching).
svn path=/branches/ntvdm/; revision=60392
2013-09-27 21:18:09 +00:00
Aleksandar Andrejevic
e05e583e56
[SOFT386]
...
Implement the ENTER instruction.
svn path=/branches/ntvdm/; revision=60350
2013-09-25 18:34:57 +00:00
Aleksandar Andrejevic
597a77ed3c
[SOFT386]
...
Implement the IMUL instruction. Both versions have been implemented in Soft386OpcodeImulModrm.
svn path=/branches/ntvdm/; revision=60344
2013-09-23 17:29:42 +00:00
Aleksandar Andrejevic
442b56b45b
[SOFT386]
...
Implement the AAM and AAD instructions.
svn path=/branches/ntvdm/; revision=60342
2013-09-23 16:03:23 +00:00
Aleksandar Andrejevic
b5a9d7490a
[SOFT386]
...
Implement the POPF instruction.
svn path=/branches/ntvdm/; revision=60341
2013-09-23 14:10:14 +00:00
Aleksandar Andrejevic
432372c3b6
[SOFT386]
...
Implement the MOV AL/AX/EAX, off16/32 and MOV off16/32, AL/AX/EAX instructions.
svn path=/branches/ntvdm/; revision=60289
2013-09-21 18:44:59 +00:00
Aleksandar Andrejevic
60a7ff2e92
[SOFT386]
...
Implement the PUSHF instruction.
svn path=/branches/ntvdm/; revision=60261
2013-09-21 02:33:01 +00:00
Aleksandar Andrejevic
6a2d76ab68
[SOFT386]
...
Fix prefix handling.
svn path=/branches/ntvdm/; revision=60260
2013-09-21 02:18:41 +00:00
Aleksandar Andrejevic
9d7137b757
[SOFT386]
...
Fix the CALL instruction. The offset must be fetched before EIP is pushed.
svn path=/branches/ntvdm/; revision=60259
2013-09-21 01:00:36 +00:00
Aleksandar Andrejevic
34157419d7
[SOFT386]
...
Implement the INT, INT3 and INTO instructions (all 3 in Soft386OpcodeInt).
svn path=/branches/ntvdm/; revision=60256
2013-09-21 00:18:59 +00:00
Aleksandar Andrejevic
1d3d2fc07a
[SOFT386]
...
Implement the RET instruction.
svn path=/branches/ntvdm/; revision=60229
2013-09-19 23:24:05 +00:00
Aleksandar Andrejevic
d3a6556ea5
[SOFT386]
...
Implement JECXZ, LOOP, LOOPZ and LOOPNZ.
svn path=/branches/ntvdm/; revision=60226
2013-09-19 22:48:45 +00:00
Aleksandar Andrejevic
3dc329ae81
[SOFT386]
...
Implement the LEAVE instruction.
svn path=/branches/ntvdm/; revision=60201
2013-09-18 21:13:40 +00:00
Aleksandar Andrejevic
f9dd2776ab
[SOFT386]
...
Fix the ARPL instruction.
Use "inline" instead of FORCEINLINE for static functions.
svn path=/branches/ntvdm/; revision=60195
2013-09-17 23:12:25 +00:00
Hermès Bélusca-Maïto
85f05060e4
[SOFT386]
...
- Put inlined functions in a .inl file, which gets included by the corresponding header file (i.e. fix MSVC builds).
- Use enums types instead of "only" INTs...
svn path=/branches/ntvdm/; revision=60193
2013-09-17 23:02:22 +00:00
Aleksandar Andrejevic
bbb37c9152
[SOFT386]
...
Implement Soft386OpcodeTestAl and Soft386OpcodeTestEax.
These functions were declared and referenced, but never defined.
Why the compiler allowed that without even a warning remains a mystery.
svn path=/branches/ntvdm/; revision=60183
2013-09-17 20:28:26 +00:00
Aleksandar Andrejevic
b78a6cb212
[SOFT386]
...
Implement the direct relative near call (CALL rel16/32) instruction.
svn path=/branches/ntvdm/; revision=60147
2013-09-15 18:26:25 +00:00
Aleksandar Andrejevic
429d182d64
[SOFT386]
...
Implement JMP rel16/32
svn path=/branches/ntvdm/; revision=60146
2013-09-15 18:18:58 +00:00
Aleksandar Andrejevic
99dd92ffa0
[SOFT386]
...
Implement LAHF, SAHF, LEA and PUSH imm16/32
svn path=/branches/ntvdm/; revision=60144
2013-09-15 18:02:41 +00:00
Aleksandar Andrejevic
e1e34dc171
[SOFT386]
...
Implement MOV (mod-reg-r/m).
svn path=/branches/ntvdm/; revision=60136
2013-09-15 15:30:55 +00:00
Aleksandar Andrejevic
a8c1104f57
[SOFT386]
...
Implement ARPL.
svn path=/branches/ntvdm/; revision=60050
2013-09-12 00:05:23 +00:00
Aleksandar Andrejevic
76b87315a8
[SOFT386]
...
Implement PUSHA and POPA.
svn path=/branches/ntvdm/; revision=60049
2013-09-11 23:31:35 +00:00
Aleksandar Andrejevic
f092154985
[SOFT386]
...
Implement many instructions (including ADC, SUB, CDQ, CWDE, ...), and "stubplement" even more of them.
svn path=/branches/ntvdm/; revision=60011
2013-09-10 20:41:43 +00:00
Aleksandar Andrejevic
333e29b35d
[SOFT386]
...
Add the instructions implemented in the previous commit to the opcode table.
svn path=/branches/ntvdm/; revision=59995
2013-09-05 23:50:42 +00:00
Aleksandar Andrejevic
ddcbb9ee92
[SOFT386]
...
Implement the TEST instruction, and the XCHG instruction which uses MOD-REG-R/M for operands.
svn path=/branches/ntvdm/; revision=59994
2013-09-05 23:48:07 +00:00
Aleksandar Andrejevic
f0040c12e8
[SOFT386]
...
Implement the OR, AND and XOR instructions.
svn path=/branches/ntvdm/; revision=59991
2013-09-04 18:28:58 +00:00
Aleksandar Andrejevic
9fd42c0f7d
[SOFT386]
...
Fix a typo.
Use a macro (SOFT386_OPCODE_HANDLER) for function definitions of opcode handlers.
Implement the rest of the ADD opcodes.
svn path=/branches/ntvdm/; revision=59990
2013-09-04 16:36:39 +00:00
Aleksandar Andrejevic
5f874178e7
[SOFT386]
...
Implement helper functions for reading/writing operands of instructions that use
the MOD-REG-R/M byte.
Implement the MOD-REG-R/M ADD instruction for bytes.
svn path=/branches/ntvdm/; revision=59981
2013-09-04 01:11:12 +00:00
Aleksandar Andrejevic
b61bbb9d66
[SOFT386]
...
Implement the "MOV reg8, imm8" instruction.
svn path=/branches/ntvdm/; revision=59952
2013-09-01 17:54:51 +00:00
Aleksandar Andrejevic
179627bf40
[SOFT386]
...
Implement the opcodes for MOV reg16/32, imm16/32
svn path=/branches/ntvdm/; revision=59949
2013-09-01 16:19:29 +00:00
Aleksandar Andrejevic
50e90be14b
[SOFT386]
...
Implement the short unconditional jump instruction (JMP imm8).
svn path=/branches/ntvdm/; revision=59932
2013-08-31 21:23:31 +00:00
Aleksandar Andrejevic
758bdf41d9
[SOFT386]
...
Fix the "persistant prefix" bug.
Fix the conditional jump bug.
Implement Soft386ExecuteAt.
[NTVDM]
Add Soft386 support to ntvdm.
svn path=/branches/ntvdm/; revision=59929
2013-08-31 19:18:12 +00:00
Aleksandar Andrejevic
e8aa2372b7
[SOFT386]
...
Implement port I/O instructions.
svn path=/branches/ntvdm/; revision=59911
2013-08-31 02:13:58 +00:00
Aleksandar Andrejevic
7ecbd63471
[SOFT386]
...
Implement CMC instruction.
svn path=/branches/ntvdm/; revision=59892
2013-08-29 22:18:28 +00:00
Aleksandar Andrejevic
3925c4a3d8
[SOFT386]
...
Add Soft386OpcodeHalt to the opcode table.
svn path=/branches/ntvdm/; revision=59891
2013-08-29 22:11:33 +00:00
Aleksandar Andrejevic
c0a39279ae
[SOFT386]
...
Add checks for illegal prefixes.
Implement HLT and PAUSE.
svn path=/branches/ntvdm/; revision=59890
2013-08-29 22:07:53 +00:00
Aleksandar Andrejevic
5a14da958f
[SOFT386]
...
Implement the CLC, STC, CLI, STI, CLD and STD instructions.
svn path=/branches/ntvdm/; revision=59876
2013-08-29 17:48:32 +00:00
Aleksandar Andrejevic
1143eab8a5
[SOFT386]
...
Implement short conditional jump opcodes.
svn path=/branches/ntvdm/; revision=59856
2013-08-28 17:52:21 +00:00
Aleksandar Andrejevic
3ad78aac17
[SOFT386]
...
Implement the following opcodes:
NOP
XCHG (E)AX, reg16/reg32
svn path=/branches/ntvdm/; revision=59819
2013-08-25 14:53:58 +00:00
Aleksandar Andrejevic
5a86737e91
[SOFT386]
...
Implement the following instructions:
PUSH reg16/reg32
POP reg16/reg32
svn path=/branches/ntvdm/; revision=59816
2013-08-25 12:17:24 +00:00
Aleksandar Andrejevic
fffdba9eb5
[SOFT386]
...
Implement the following opcodes:
INC reg16/reg32
DEC reg16/reg32
svn path=/branches/ntvdm/; revision=59814
2013-08-24 21:32:45 +00:00
Aleksandar Andrejevic
610999cb63
[SOFT386]
...
Implement prefix support.
svn path=/branches/ntvdm/; revision=59810
2013-08-24 11:48:38 +00:00