Aleksandar Andrejevic
c425bbc689
[SOFT386]
...
Implement Soft386Interrupt.
[NTVDM]
Implement EmulatorInterrupt and EmulatorExternalInterrupt for NEW_EMULATOR.
svn path=/branches/ntvdm/; revision=60628
2013-10-12 13:58:34 +00:00
Aleksandar Andrejevic
a2e0e03ee6
[SOFT386]
...
- Fix calculation of the AF flag in opcode groups 0xFE and 0xFF (INC/DEC).
- Fix a bug in the REP prefix by simulating the wrap-around of DI which
can occur when the current address size is 16-bit.
- Exception error codes are only pushed on the stack in protected mode.
svn path=/branches/ntvdm/; revision=60625
2013-10-11 23:45:42 +00:00
Aleksandar Andrejevic
8dff09c37a
[SOFT386]
...
Improve the performance of Soft386CalculateParity.
svn path=/branches/ntvdm/; revision=60621
2013-10-11 20:54:46 +00:00
Aleksandar Andrejevic
da5b8fc439
[SOFT386]
...
Fix prefix handling.
svn path=/branches/ntvdm/; revision=60620
2013-10-11 20:48:19 +00:00
Aleksandar Andrejevic
47390630ed
[SOFT386]
...
Fix a bad call to RtlFillMemory.
svn path=/branches/ntvdm/; revision=60618
2013-10-11 19:24:58 +00:00
Aleksandar Andrejevic
37059f6dfc
[SOFT386]
...
Fix incorrect (reverse) handling of the DF flag.
svn path=/branches/ntvdm/; revision=60617
2013-10-11 19:02:06 +00:00
Aleksandar Andrejevic
caf9a0a671
[SOFT386]
...
Implement the REP prefix for OUTS, LODS and STOS.
svn path=/branches/ntvdm/; revision=60616
2013-10-11 18:34:31 +00:00
Aleksandar Andrejevic
20486fd1b7
[SOFT386]
...
Clear the memory block before it's used.
svn path=/branches/ntvdm/; revision=60612
2013-10-11 16:31:35 +00:00
Aleksandar Andrejevic
800969b126
[SOFT386]
...
Fix a bug in Soft386ExceptionWithErrorCode. The instruction pointer exceptions can
return to should point to the instruction that caused the exception.
svn path=/branches/ntvdm/; revision=60603
2013-10-11 12:24:05 +00:00
Aleksandar Andrejevic
b22da55f8f
[SOFT386]
...
Implement the REP prefix for the INS instruction.
svn path=/branches/ntvdm/; revision=60600
2013-10-10 19:01:41 +00:00
Aleksandar Andrejevic
aef0bf1635
[SOFT386]
...
Implement an API for external segment modification.
[NTVDM]
Implement EmulatorSetRegister for NEW_EMULATOR.
svn path=/branches/ntvdm/; revision=60591
2013-10-09 21:48:52 +00:00
Aleksandar Andrejevic
e9829f1830
[SOFT386]
...
Fix the carry flag in the SAR instruction.
svn path=/branches/ntvdm/; revision=60589
2013-10-09 19:49:41 +00:00
Aleksandar Andrejevic
10523b910e
[SOFT386]
...
Don't single-step on a prefix. Single-step should execute one whole instruction.
svn path=/branches/ntvdm/; revision=60588
2013-10-09 19:11:42 +00:00
Aleksandar Andrejevic
182d7c8725
[SOFT386]
...
Fix more prefix handling code.
Implement the XLAT instruction.
svn path=/branches/ntvdm/; revision=60586
2013-10-09 00:36:37 +00:00
Aleksandar Andrejevic
9339e12e69
[SOFT386]
...
Fix prefix handling.
svn path=/branches/ntvdm/; revision=60585
2013-10-08 23:03:56 +00:00
Aleksandar Andrejevic
7078f183fb
[SOFT386]
...
Fix a bug in the CMP instruction.
Implement the SBB instruction.
svn path=/branches/ntvdm/; revision=60584
2013-10-08 22:27:48 +00:00
Aleksandar Andrejevic
f25d1a9f2a
[SOFT386]
...
Implement opcode group 0xF7.
svn path=/branches/ntvdm/; revision=60582
2013-10-07 20:38:01 +00:00
Aleksandar Andrejevic
95b0bb7b60
[SOFT386]
...
Implement opcode group 0xF6.
svn path=/branches/ntvdm/; revision=60568
2013-10-06 23:57:41 +00:00
Aleksandar Andrejevic
f10f82d938
[SOFT386]
...
Start implementing extended opcodes.
svn path=/branches/ntvdm/; revision=60562
2013-10-06 15:22:52 +00:00
Aleksandar Andrejevic
15a8cc4515
[SOFT386]
...
Set the opcode handler for the INS and OUTS instructions to be
Soft386OpcodeIns and Soft386OpcodeOuts, respectively.
svn path=/branches/ntvdm/; revision=60543
2013-10-05 20:12:08 +00:00
Aleksandar Andrejevic
fbcc4ad158
[SOFT386]
...
Halfplement INS and OUTS.
svn path=/branches/ntvdm/; revision=60540
2013-10-05 20:06:19 +00:00
Aleksandar Andrejevic
0043c2f377
[NTVDM]
...
Properly handle the case when the console framebuffer could not be created.
svn path=/branches/ntvdm/; revision=60526
2013-10-04 21:16:58 +00:00
Aleksandar Andrejevic
3593b8c8ef
[SOFT386]
...
Fix bugs in STOS and LODS (only one register is incremented).
Implement CMPS and SCAS.
svn path=/branches/ntvdm/; revision=60525
2013-10-04 19:51:11 +00:00
Aleksandar Andrejevic
c190ca817c
[SOFT386]
...
Halfplement MOVS, STOS and LODS.
Stubplement CMPS and SCAS.
svn path=/branches/ntvdm/; revision=60515
2013-10-03 20:56:36 +00:00
Aleksandar Andrejevic
c2e98bca7f
[SOFT386]
...
Implement the (undocumented) opcode SALC.
svn path=/branches/ntvdm/; revision=60492
2013-10-01 15:02:07 +00:00
Aleksandar Andrejevic
49616f8975
[SOFT386]
...
Halfplement group 0xFF (Only INC/DEC).
svn path=/branches/ntvdm/; revision=60487
2013-10-01 01:31:36 +00:00
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