Aleksandar Andrejevic
5ef6274619
[SOFT386]
...
Fix the header in soft386.h.
svn path=/branches/ntvdm/; revision=60486
2013-09-30 22:13:51 +00:00
Aleksandar Andrejevic
17a32f3b2a
[SOFT386]
...
Change the license of Soft386 to GPLv2. The previous license was also
GPLv2, but it had a runtime linking exception. The new license is the
original GPLv2 with no exceptions.
svn path=/branches/ntvdm/; revision=60485
2013-09-30 22:01:38 +00:00
Aleksandar Andrejevic
1294b156ea
[SOFT386]
...
Fix previous fix.
svn path=/branches/ntvdm/; revision=60468
2013-09-30 03:10:38 +00:00
Aleksandar Andrejevic
d4d6e6eca9
[SOFT386]
...
Fix limit check.
svn path=/branches/ntvdm/; revision=60467
2013-09-30 03:05:08 +00:00
Aleksandar Andrejevic
6bde6a89b7
[SOFT386]
...
Fix previous fix.
svn path=/branches/ntvdm/; revision=60466
2013-09-30 02:28:17 +00:00
Aleksandar Andrejevic
462be21fd0
[SOFT386]
...
Remove whitespace from empty line.
Fix addressing bug.
svn path=/branches/ntvdm/; revision=60465
2013-09-30 02:06:55 +00:00
Aleksandar Andrejevic
79355ae971
[SOFT386]
...
Fix prefix handling.
svn path=/branches/ntvdm/; revision=60464
2013-09-30 00:27:56 +00:00
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
ed24b5ee8e
[SOFT386]
...
Fetching the immediate operand once is sufficient.
svn path=/branches/ntvdm/; revision=60462
2013-09-29 23:45:06 +00:00
Aleksandar Andrejevic
747864f105
[SOFT386]
...
Move the code for ADD/OR/ADC/SBB/AND/SUB/XOR/CMP to Soft386ArithmeticOperation,
and use that function to implement groups 0x80, 0x81, 0x82 and 0x83.
svn path=/branches/ntvdm/; revision=60461
2013-09-29 23:38:31 +00:00
Aleksandar Andrejevic
fce8b3f276
[SOFT386]
...
The immediate operand should be fetched before attempting to read the
MOD-REG-R/M byte operands.
svn path=/branches/ntvdm/; revision=60460
2013-09-29 22:24:46 +00:00
Aleksandar Andrejevic
6605a6f215
[SOFT386]
...
Implement opcode groups 0xC0 and 0xC1, also using Soft386RotateOperation.
Remove two unnecessary blank lines.
svn path=/branches/ntvdm/; revision=60459
2013-09-29 22:23:01 +00:00
Aleksandar Andrejevic
e365b99113
[SOFT386]
...
Move the ROL/ROR/RCL/RCR/SHL/SHR/SAL/SAR handling code to Soft386RotateOperation,
then use that to implement opcode groups 0xD0, 0xD1, 0xD2 and 0xD3.
svn path=/branches/ntvdm/; revision=60458
2013-09-29 22:15:32 +00:00
Aleksandar Andrejevic
4490103840
[SOFT386]
...
Implement opcode group 0xD0 (instructions ROL, ROR, RCL, RCR, SHL, SHR, SAL, SAR).
svn path=/branches/ntvdm/; revision=60455
2013-09-29 18:39:59 +00:00
Aleksandar Andrejevic
9328c2226b
[SOFT386]
...
Implement opcode group 0xFE.
svn path=/branches/ntvdm/; revision=60453
2013-09-29 16:07:06 +00:00
Aleksandar Andrejevic
f7a2f36dd0
[SOFT386]
...
Implement opcode groups 0xC6 and 0xC7.
svn path=/branches/ntvdm/; revision=60452
2013-09-29 16:01:10 +00:00
Aleksandar Andrejevic
87a7896249
[SOFT386]
...
Implement opcode group 0x8F.
svn path=/branches/ntvdm/; revision=60451
2013-09-29 15:52:20 +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
0c91026f75
[NTVDM]
...
Change the instruction in the interrupt handlers to "INC SP" twice
instead of one "ADD SP, 2". It's shorter and supported by soft386 already.
svn path=/branches/ntvdm/; revision=60397
2013-09-28 00:55:28 +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
56948f4801
[SOFT386]
...
Remove whitespace from empty line.
svn path=/branches/ntvdm/; revision=60258
2013-09-21 00:45:28 +00:00
Aleksandar Andrejevic
7328873681
[SOFT386]
...
Implement external stack modification.
[NTVDM]
Implement EmulatorSetStack for NEW_EMULATOR.
svn path=/branches/ntvdm/; revision=60257
2013-09-21 00:41:41 +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
Hermès Bélusca-Maïto
9620dafb0c
[SOFT386]
...
Use SOFT386_EXCEPTIONS instead of INT for the ExceptionCode parameter in Soft386ExceptionWithErrorCode and Soft386Exception.
svn path=/branches/ntvdm/; revision=60196
2013-09-17 23:17:50 +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
9e913c05f5
Fix a compilation error.
...
svn path=/branches/ntvdm/; revision=60194
2013-09-17 23:10:26 +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
Hermès Bélusca-Maïto
c27ff5b52f
[SOFT386]
...
- Code formatting (align on 4-space)
- Fix union / struct problem in _SOFT386_PAGE_TABLE.
svn path=/branches/ntvdm/; revision=60189
2013-09-17 21:47:38 +00:00
Hermès Bélusca-Maïto
7588e8cb68
Add a fictitious (commented) field to help the reader to know that indeed, the high bits are indeed reserved.
...
svn path=/branches/ntvdm/; revision=60188
2013-09-17 21:27:29 +00:00
Aleksandar Andrejevic
375bcfd674
[SOFT386]
...
Fix hypothetical bug.
svn path=/branches/ntvdm/; revision=60187
2013-09-17 21:15:52 +00:00
Aleksandar Andrejevic
593f4baf1a
[SOFT386]
...
Fix struct/union mixup.
svn path=/branches/ntvdm/; revision=60186
2013-09-17 20:57:35 +00:00
Hermès Bélusca-Maïto
1baee6b6b5
[SOFT386]: Fix compilation with MSVC.
...
svn path=/branches/ntvdm/; revision=60185
2013-09-17 20:41:26 +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