reactos.git
9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 16 Oct 2013 03:14:12 +0000 (03:14 +0000)]
[SOFT386]
Implement the far absolute indirect JMP/CALL instructions in group 0xFF.

svn path=/branches/ntvdm/; revision=60688

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 16 Oct 2013 02:22:40 +0000 (02:22 +0000)]
[SOFT386]
Fix bugs in SF calculation.

svn path=/branches/ntvdm/; revision=60687

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 16 Oct 2013 01:44:39 +0000 (01:44 +0000)]
[SOFT386]
Implement the near absolute indirect JMP/CALL in opcode group 0xFF.

svn path=/branches/ntvdm/; revision=60686

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 16 Oct 2013 00:41:24 +0000 (00:41 +0000)]
[SOFT386]
Start implementing call gate support.
Implement the direct far call opcode (0x9A).

svn path=/branches/ntvdm/; revision=60685

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 15 Oct 2013 19:03:40 +0000 (19:03 +0000)]
[SOFT386]
Implement the PUSH instruction in opcode group 0xFF.

svn path=/branches/ntvdm/; revision=60681

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 15 Oct 2013 18:54:11 +0000 (18:54 +0000)]
[SOFT386]
Implement far returns (both versions in Soft386OpcodeRetFar).

svn path=/branches/ntvdm/; revision=60680

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 15 Oct 2013 17:27:23 +0000 (17:27 +0000)]
[SOFT386]
Implement far jumps.

svn path=/branches/ntvdm/; revision=60679

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 13 Oct 2013 23:59:52 +0000 (23:59 +0000)]
[SOFT386]
Halfplement REPZ/REPNZ for CMPS and SCAS.

svn path=/branches/ntvdm/; revision=60658

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 13 Oct 2013 21:15:01 +0000 (21:15 +0000)]
[SOFT386]
Implement the REP prefix for MOVS.
Fix the REP prefix in INS, OUTS and STOS to simulate the DI
wrap-around even if DF is set.

svn path=/branches/ntvdm/; revision=60645

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 12 Oct 2013 13:58:34 +0000 (13:58 +0000)]
[SOFT386]
Implement Soft386Interrupt.
[NTVDM]
Implement EmulatorInterrupt and EmulatorExternalInterrupt for NEW_EMULATOR.

svn path=/branches/ntvdm/; revision=60628

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 11 Oct 2013 23:45:42 +0000 (23:45 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 11 Oct 2013 20:54:46 +0000 (20:54 +0000)]
[SOFT386]
Improve the performance of Soft386CalculateParity.

svn path=/branches/ntvdm/; revision=60621

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 11 Oct 2013 20:48:19 +0000 (20:48 +0000)]
[SOFT386]
Fix prefix handling.

svn path=/branches/ntvdm/; revision=60620

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 11 Oct 2013 19:24:58 +0000 (19:24 +0000)]
[SOFT386]
Fix a bad call to RtlFillMemory.

svn path=/branches/ntvdm/; revision=60618

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 11 Oct 2013 19:02:06 +0000 (19:02 +0000)]
[SOFT386]
Fix incorrect (reverse) handling of the DF flag.

svn path=/branches/ntvdm/; revision=60617

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 11 Oct 2013 18:34:31 +0000 (18:34 +0000)]
[SOFT386]
Implement the REP prefix for OUTS, LODS and STOS.

svn path=/branches/ntvdm/; revision=60616

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 11 Oct 2013 16:31:35 +0000 (16:31 +0000)]
[SOFT386]
Clear the memory block before it's used.

svn path=/branches/ntvdm/; revision=60612

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 11 Oct 2013 12:24:05 +0000 (12:24 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Thu, 10 Oct 2013 19:01:41 +0000 (19:01 +0000)]
[SOFT386]
Implement the REP prefix for the INS instruction.

svn path=/branches/ntvdm/; revision=60600

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 9 Oct 2013 21:48:52 +0000 (21:48 +0000)]
[SOFT386]
Implement an API for external segment modification.
[NTVDM]
Implement EmulatorSetRegister for NEW_EMULATOR.

svn path=/branches/ntvdm/; revision=60591

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 9 Oct 2013 19:49:41 +0000 (19:49 +0000)]
[SOFT386]
Fix the carry flag in the SAR instruction.

svn path=/branches/ntvdm/; revision=60589

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 9 Oct 2013 19:11:42 +0000 (19:11 +0000)]
[SOFT386]
Don't single-step on a prefix. Single-step should execute one whole instruction.

svn path=/branches/ntvdm/; revision=60588

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 9 Oct 2013 00:36:37 +0000 (00:36 +0000)]
[SOFT386]
Fix more prefix handling code.
Implement the XLAT instruction.

svn path=/branches/ntvdm/; revision=60586

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 8 Oct 2013 23:03:56 +0000 (23:03 +0000)]
[SOFT386]
Fix prefix handling.

svn path=/branches/ntvdm/; revision=60585

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 8 Oct 2013 22:27:48 +0000 (22:27 +0000)]
[SOFT386]
Fix a bug in the CMP instruction.
Implement the SBB instruction.

svn path=/branches/ntvdm/; revision=60584

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 7 Oct 2013 20:38:01 +0000 (20:38 +0000)]
[SOFT386]
Implement opcode group 0xF7.

svn path=/branches/ntvdm/; revision=60582

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 6 Oct 2013 23:57:41 +0000 (23:57 +0000)]
[SOFT386]
Implement opcode group 0xF6.

svn path=/branches/ntvdm/; revision=60568

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 6 Oct 2013 15:22:52 +0000 (15:22 +0000)]
[SOFT386]
Start implementing extended opcodes.

svn path=/branches/ntvdm/; revision=60562

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 5 Oct 2013 20:12:08 +0000 (20:12 +0000)]
[SOFT386]
Set the opcode handler for the INS and OUTS instructions to be
Soft386OpcodeIns and Soft386OpcodeOuts, respectively.

svn path=/branches/ntvdm/; revision=60543

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 5 Oct 2013 20:06:19 +0000 (20:06 +0000)]
[SOFT386]
Halfplement INS and OUTS.

svn path=/branches/ntvdm/; revision=60540

9 years ago[NTVDM]
Aleksandar Andrejevic [Fri, 4 Oct 2013 21:16:58 +0000 (21:16 +0000)]
[NTVDM]
Properly handle the case when the console framebuffer could not be created.

svn path=/branches/ntvdm/; revision=60526

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 4 Oct 2013 19:51:11 +0000 (19:51 +0000)]
[SOFT386]
Fix bugs in STOS and LODS (only one register is incremented).
Implement CMPS and SCAS.

svn path=/branches/ntvdm/; revision=60525

9 years ago[SOFT386]
Aleksandar Andrejevic [Thu, 3 Oct 2013 20:56:36 +0000 (20:56 +0000)]
[SOFT386]
Halfplement MOVS, STOS and LODS.
Stubplement CMPS and SCAS.

svn path=/branches/ntvdm/; revision=60515

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 1 Oct 2013 15:02:07 +0000 (15:02 +0000)]
[SOFT386]
Implement the (undocumented) opcode SALC.

svn path=/branches/ntvdm/; revision=60492

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 1 Oct 2013 01:31:36 +0000 (01:31 +0000)]
[SOFT386]
Halfplement group 0xFF (Only INC/DEC).

svn path=/branches/ntvdm/; revision=60487

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 30 Sep 2013 22:13:51 +0000 (22:13 +0000)]
[SOFT386]
Fix the header in soft386.h.

svn path=/branches/ntvdm/; revision=60486

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 30 Sep 2013 22:01:38 +0000 (22:01 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 30 Sep 2013 03:10:38 +0000 (03:10 +0000)]
[SOFT386]
Fix previous fix.

svn path=/branches/ntvdm/; revision=60468

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 30 Sep 2013 03:05:08 +0000 (03:05 +0000)]
[SOFT386]
Fix limit check.

svn path=/branches/ntvdm/; revision=60467

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 30 Sep 2013 02:28:17 +0000 (02:28 +0000)]
[SOFT386]
Fix previous fix.

svn path=/branches/ntvdm/; revision=60466

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 30 Sep 2013 02:06:55 +0000 (02:06 +0000)]
[SOFT386]
Remove whitespace from empty line.
Fix addressing bug.

svn path=/branches/ntvdm/; revision=60465

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 30 Sep 2013 00:27:56 +0000 (00:27 +0000)]
[SOFT386]
Fix prefix handling.

svn path=/branches/ntvdm/; revision=60464

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 30 Sep 2013 00:02:53 +0000 (00:02 +0000)]
[SOFT386]
Fix the LOOP instruction. LOOP should loop while ECX is not zero, not otherwise.

svn path=/branches/ntvdm/; revision=60463

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 23:45:06 +0000 (23:45 +0000)]
[SOFT386]
Fetching the immediate operand once is sufficient.

svn path=/branches/ntvdm/; revision=60462

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 23:38:31 +0000 (23:38 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 22:24:46 +0000 (22:24 +0000)]
[SOFT386]
The immediate operand should be fetched before attempting to read the
MOD-REG-R/M byte operands.

svn path=/branches/ntvdm/; revision=60460

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 22:23:01 +0000 (22:23 +0000)]
[SOFT386]
Implement opcode groups 0xC0 and 0xC1, also using Soft386RotateOperation.
Remove two unnecessary blank lines.

svn path=/branches/ntvdm/; revision=60459

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 22:15:32 +0000 (22:15 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 18:39:59 +0000 (18:39 +0000)]
[SOFT386]
Implement opcode group 0xD0 (instructions ROL, ROR, RCL, RCR, SHL, SHR, SAL, SAR).

svn path=/branches/ntvdm/; revision=60455

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 16:07:06 +0000 (16:07 +0000)]
[SOFT386]
Implement opcode group 0xFE.

svn path=/branches/ntvdm/; revision=60453

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 16:01:10 +0000 (16:01 +0000)]
[SOFT386]
Implement opcode groups 0xC6 and 0xC7.

svn path=/branches/ntvdm/; revision=60452

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 15:52:20 +0000 (15:52 +0000)]
[SOFT386]
Implement opcode group 0x8F.

svn path=/branches/ntvdm/; revision=60451

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 29 Sep 2013 15:04:43 +0000 (15:04 +0000)]
[SOFT386]
Implement opcode group 0x80. Group 0x82 is just an alias to group 0x80.

svn path=/branches/ntvdm/; revision=60450

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 28 Sep 2013 18:56:58 +0000 (18:56 +0000)]
[SOFT386]
Stubplement opcode group handlers.

svn path=/branches/ntvdm/; revision=60441

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 28 Sep 2013 03:15:48 +0000 (03:15 +0000)]
[SOFT386]
Disallow direct writing to CS. Changing CS must be done with a far jump.

svn path=/branches/ntvdm/; revision=60399

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 28 Sep 2013 03:01:07 +0000 (03:01 +0000)]
[SOFT386]
Implement MOV for segment registers.

svn path=/branches/ntvdm/; revision=60398

9 years ago[NTVDM]
Aleksandar Andrejevic [Sat, 28 Sep 2013 00:55:28 +0000 (00:55 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 28 Sep 2013 00:46:04 +0000 (00:46 +0000)]
[SOFT386]
Fix the BOP opcode. It's LES AX, SP not LES AX, BP.

svn path=/branches/ntvdm/; revision=60396

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 28 Sep 2013 00:29:16 +0000 (00:29 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 27 Sep 2013 21:23:34 +0000 (21:23 +0000)]
[SOFT386]
Fix the return to VM86 mode. The VM flag must be set before the call to Soft386LoadSegment.

svn path=/branches/ntvdm/; revision=60393

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 27 Sep 2013 21:18:09 +0000 (21:18 +0000)]
[SOFT386]
Halfplement the IRET instruction (everything except task switching).

svn path=/branches/ntvdm/; revision=60392

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 25 Sep 2013 18:34:57 +0000 (18:34 +0000)]
[SOFT386]
Implement the ENTER instruction.

svn path=/branches/ntvdm/; revision=60350

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 23 Sep 2013 17:29:42 +0000 (17:29 +0000)]
[SOFT386]
Implement the IMUL instruction. Both versions have been implemented in Soft386OpcodeImulModrm.

svn path=/branches/ntvdm/; revision=60344

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 23 Sep 2013 16:03:23 +0000 (16:03 +0000)]
[SOFT386]
Implement the AAM and AAD instructions.

svn path=/branches/ntvdm/; revision=60342

9 years ago[SOFT386]
Aleksandar Andrejevic [Mon, 23 Sep 2013 14:10:14 +0000 (14:10 +0000)]
[SOFT386]
Implement the POPF instruction.

svn path=/branches/ntvdm/; revision=60341

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 21 Sep 2013 18:44:59 +0000 (18:44 +0000)]
[SOFT386]
Implement the MOV AL/AX/EAX, off16/32 and MOV off16/32, AL/AX/EAX instructions.

svn path=/branches/ntvdm/; revision=60289

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 21 Sep 2013 02:33:01 +0000 (02:33 +0000)]
[SOFT386]
Implement the PUSHF instruction.

svn path=/branches/ntvdm/; revision=60261

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 21 Sep 2013 02:18:41 +0000 (02:18 +0000)]
[SOFT386]
Fix prefix handling.

svn path=/branches/ntvdm/; revision=60260

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 21 Sep 2013 01:00:36 +0000 (01:00 +0000)]
[SOFT386]
Fix the CALL instruction. The offset must be fetched before EIP is pushed.

svn path=/branches/ntvdm/; revision=60259

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 21 Sep 2013 00:45:28 +0000 (00:45 +0000)]
[SOFT386]
Remove whitespace from empty line.

svn path=/branches/ntvdm/; revision=60258

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 21 Sep 2013 00:41:41 +0000 (00:41 +0000)]
[SOFT386]
Implement external stack modification.
[NTVDM]
Implement EmulatorSetStack for NEW_EMULATOR.

svn path=/branches/ntvdm/; revision=60257

9 years ago[SOFT386]
Aleksandar Andrejevic [Sat, 21 Sep 2013 00:18:59 +0000 (00:18 +0000)]
[SOFT386]
Implement the INT, INT3 and INTO instructions (all 3 in Soft386OpcodeInt).

svn path=/branches/ntvdm/; revision=60256

9 years ago[SOFT386]
Aleksandar Andrejevic [Thu, 19 Sep 2013 23:24:05 +0000 (23:24 +0000)]
[SOFT386]
Implement the RET instruction.

svn path=/branches/ntvdm/; revision=60229

9 years ago[SOFT386]
Aleksandar Andrejevic [Thu, 19 Sep 2013 22:48:45 +0000 (22:48 +0000)]
[SOFT386]
Implement JECXZ, LOOP, LOOPZ and LOOPNZ.

svn path=/branches/ntvdm/; revision=60226

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 18 Sep 2013 21:13:40 +0000 (21:13 +0000)]
[SOFT386]
Implement the LEAVE instruction.

svn path=/branches/ntvdm/; revision=60201

9 years ago[SOFT386]
Hermès Bélusca-Maïto [Tue, 17 Sep 2013 23:17:50 +0000 (23:17 +0000)]
[SOFT386]
Use SOFT386_EXCEPTIONS instead of INT for the ExceptionCode parameter in Soft386ExceptionWithErrorCode and Soft386Exception.

svn path=/branches/ntvdm/; revision=60196

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 17 Sep 2013 23:12:25 +0000 (23:12 +0000)]
[SOFT386]
Fix the ARPL instruction.
Use "inline" instead of FORCEINLINE for static functions.

svn path=/branches/ntvdm/; revision=60195

9 years agoFix a compilation error.
Hermès Bélusca-Maïto [Tue, 17 Sep 2013 23:10:26 +0000 (23:10 +0000)]
Fix a compilation error.

svn path=/branches/ntvdm/; revision=60194

9 years ago[SOFT386]
Hermès Bélusca-Maïto [Tue, 17 Sep 2013 23:02:22 +0000 (23:02 +0000)]
[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

9 years ago[SOFT386]
Hermès Bélusca-Maïto [Tue, 17 Sep 2013 21:47:38 +0000 (21:47 +0000)]
[SOFT386]
- Code formatting (align on 4-space)
- Fix union / struct problem in _SOFT386_PAGE_TABLE.

svn path=/branches/ntvdm/; revision=60189

9 years agoAdd a fictitious (commented) field to help the reader to know that indeed, the high...
Hermès Bélusca-Maïto [Tue, 17 Sep 2013 21:27:29 +0000 (21:27 +0000)]
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

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 17 Sep 2013 21:15:52 +0000 (21:15 +0000)]
[SOFT386]
Fix hypothetical bug.

svn path=/branches/ntvdm/; revision=60187

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 17 Sep 2013 20:57:35 +0000 (20:57 +0000)]
[SOFT386]
Fix struct/union mixup.

svn path=/branches/ntvdm/; revision=60186

9 years ago[SOFT386]: Fix compilation with MSVC.
Hermès Bélusca-Maïto [Tue, 17 Sep 2013 20:41:26 +0000 (20:41 +0000)]
[SOFT386]: Fix compilation with MSVC.

svn path=/branches/ntvdm/; revision=60185

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 17 Sep 2013 20:28:26 +0000 (20:28 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 15 Sep 2013 18:26:25 +0000 (18:26 +0000)]
[SOFT386]
Implement the direct relative near call (CALL rel16/32) instruction.

svn path=/branches/ntvdm/; revision=60147

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 15 Sep 2013 18:18:58 +0000 (18:18 +0000)]
[SOFT386]
Implement JMP rel16/32

svn path=/branches/ntvdm/; revision=60146

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 15 Sep 2013 18:02:41 +0000 (18:02 +0000)]
[SOFT386]
Implement LAHF, SAHF, LEA and PUSH imm16/32

svn path=/branches/ntvdm/; revision=60144

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 15 Sep 2013 15:30:55 +0000 (15:30 +0000)]
[SOFT386]
Implement MOV (mod-reg-r/m).

svn path=/branches/ntvdm/; revision=60136

9 years ago[SOFT386]
Aleksandar Andrejevic [Fri, 13 Sep 2013 23:01:18 +0000 (23:01 +0000)]
[SOFT386]
Start implementing paging support.
Add support for exception error codes.

svn path=/branches/ntvdm/; revision=60089

9 years ago[SOFT386]
Aleksandar Andrejevic [Thu, 12 Sep 2013 00:05:23 +0000 (00:05 +0000)]
[SOFT386]
Implement ARPL.

svn path=/branches/ntvdm/; revision=60050

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 11 Sep 2013 23:31:35 +0000 (23:31 +0000)]
[SOFT386]
Implement PUSHA and POPA.

svn path=/branches/ntvdm/; revision=60049

9 years ago[SOFT386]
Aleksandar Andrejevic [Tue, 10 Sep 2013 20:41:43 +0000 (20:41 +0000)]
[SOFT386]
Implement many instructions (including ADC, SUB, CDQ, CWDE, ...), and "stubplement" even more of them.

svn path=/branches/ntvdm/; revision=60011

9 years ago[SOFT386]
Aleksandar Andrejevic [Thu, 5 Sep 2013 23:50:42 +0000 (23:50 +0000)]
[SOFT386]
Add the instructions implemented in the previous commit to the opcode table.

svn path=/branches/ntvdm/; revision=59995

9 years ago[SOFT386]
Aleksandar Andrejevic [Thu, 5 Sep 2013 23:48:07 +0000 (23:48 +0000)]
[SOFT386]
Implement the TEST instruction, and the XCHG instruction which uses MOD-REG-R/M for operands.

svn path=/branches/ntvdm/; revision=59994

9 years ago[SOFT386]: Fix build (addendum to revision 59990).
Hermès Bélusca-Maïto [Wed, 4 Sep 2013 20:40:43 +0000 (20:40 +0000)]
[SOFT386]: Fix build (addendum to revision 59990).

svn path=/branches/ntvdm/; revision=59993

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 4 Sep 2013 18:28:58 +0000 (18:28 +0000)]
[SOFT386]
Implement the OR, AND and XOR instructions.

svn path=/branches/ntvdm/; revision=59991

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 4 Sep 2013 16:36:39 +0000 (16:36 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Wed, 4 Sep 2013 01:11:12 +0000 (01:11 +0000)]
[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

9 years ago[SOFT386]
Aleksandar Andrejevic [Sun, 1 Sep 2013 23:49:57 +0000 (23:49 +0000)]
[SOFT386]
Implement "MOD-REG-R/M" byte decoding.

svn path=/branches/ntvdm/; revision=59959