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
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
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
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
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
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
Aleksandar Andrejevic [Tue, 15 Oct 2013 17:27:23 +0000 (17:27 +0000)]
[SOFT386]
Implement far jumps.
svn path=/branches/ntvdm/; revision=60679
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
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
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
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
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
Aleksandar Andrejevic [Fri, 11 Oct 2013 20:48:19 +0000 (20:48 +0000)]
[SOFT386]
Fix prefix handling.
svn path=/branches/ntvdm/; revision=60620
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
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
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
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
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
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
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
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
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
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
Aleksandar Andrejevic [Tue, 8 Oct 2013 23:03:56 +0000 (23:03 +0000)]
[SOFT386]
Fix prefix handling.
svn path=/branches/ntvdm/; revision=60585
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
Aleksandar Andrejevic [Mon, 7 Oct 2013 20:38:01 +0000 (20:38 +0000)]
[SOFT386]
Implement opcode group 0xF7.
svn path=/branches/ntvdm/; revision=60582
Aleksandar Andrejevic [Sun, 6 Oct 2013 23:57:41 +0000 (23:57 +0000)]
[SOFT386]
Implement opcode group 0xF6.
svn path=/branches/ntvdm/; revision=60568
Aleksandar Andrejevic [Sun, 6 Oct 2013 15:22:52 +0000 (15:22 +0000)]
[SOFT386]
Start implementing extended opcodes.
svn path=/branches/ntvdm/; revision=60562
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
Aleksandar Andrejevic [Sat, 5 Oct 2013 20:06:19 +0000 (20:06 +0000)]
[SOFT386]
Halfplement INS and OUTS.
svn path=/branches/ntvdm/; revision=60540
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
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
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
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
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
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
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
Aleksandar Andrejevic [Mon, 30 Sep 2013 03:10:38 +0000 (03:10 +0000)]
[SOFT386]
Fix previous fix.
svn path=/branches/ntvdm/; revision=60468
Aleksandar Andrejevic [Mon, 30 Sep 2013 03:05:08 +0000 (03:05 +0000)]
[SOFT386]
Fix limit check.
svn path=/branches/ntvdm/; revision=60467
Aleksandar Andrejevic [Mon, 30 Sep 2013 02:28:17 +0000 (02:28 +0000)]
[SOFT386]
Fix previous fix.
svn path=/branches/ntvdm/; revision=60466
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
Aleksandar Andrejevic [Mon, 30 Sep 2013 00:27:56 +0000 (00:27 +0000)]
[SOFT386]
Fix prefix handling.
svn path=/branches/ntvdm/; revision=60464
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
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
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
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
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
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
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
Aleksandar Andrejevic [Sun, 29 Sep 2013 16:07:06 +0000 (16:07 +0000)]
[SOFT386]
Implement opcode group 0xFE.
svn path=/branches/ntvdm/; revision=60453
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
Aleksandar Andrejevic [Sun, 29 Sep 2013 15:52:20 +0000 (15:52 +0000)]
[SOFT386]
Implement opcode group 0x8F.
svn path=/branches/ntvdm/; revision=60451
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
Aleksandar Andrejevic [Sat, 28 Sep 2013 18:56:58 +0000 (18:56 +0000)]
[SOFT386]
Stubplement opcode group handlers.
svn path=/branches/ntvdm/; revision=60441
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
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
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
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
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
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
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
Aleksandar Andrejevic [Wed, 25 Sep 2013 18:34:57 +0000 (18:34 +0000)]
[SOFT386]
Implement the ENTER instruction.
svn path=/branches/ntvdm/; revision=60350
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
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
Aleksandar Andrejevic [Mon, 23 Sep 2013 14:10:14 +0000 (14:10 +0000)]
[SOFT386]
Implement the POPF instruction.
svn path=/branches/ntvdm/; revision=60341
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
Aleksandar Andrejevic [Sat, 21 Sep 2013 02:33:01 +0000 (02:33 +0000)]
[SOFT386]
Implement the PUSHF instruction.
svn path=/branches/ntvdm/; revision=60261
Aleksandar Andrejevic [Sat, 21 Sep 2013 02:18:41 +0000 (02:18 +0000)]
[SOFT386]
Fix prefix handling.
svn path=/branches/ntvdm/; revision=60260
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
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
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
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
Aleksandar Andrejevic [Thu, 19 Sep 2013 23:24:05 +0000 (23:24 +0000)]
[SOFT386]
Implement the RET instruction.
svn path=/branches/ntvdm/; revision=60229
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
Aleksandar Andrejevic [Wed, 18 Sep 2013 21:13:40 +0000 (21:13 +0000)]
[SOFT386]
Implement the LEAVE instruction.
svn path=/branches/ntvdm/; revision=60201
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
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
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
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
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
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
Aleksandar Andrejevic [Tue, 17 Sep 2013 21:15:52 +0000 (21:15 +0000)]
[SOFT386]
Fix hypothetical bug.
svn path=/branches/ntvdm/; revision=60187
Aleksandar Andrejevic [Tue, 17 Sep 2013 20:57:35 +0000 (20:57 +0000)]
[SOFT386]
Fix struct/union mixup.
svn path=/branches/ntvdm/; revision=60186
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
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
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
Aleksandar Andrejevic [Sun, 15 Sep 2013 18:18:58 +0000 (18:18 +0000)]
[SOFT386]
Implement JMP rel16/32
svn path=/branches/ntvdm/; revision=60146
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
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
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
Aleksandar Andrejevic [Thu, 12 Sep 2013 00:05:23 +0000 (00:05 +0000)]
[SOFT386]
Implement ARPL.
svn path=/branches/ntvdm/; revision=60050
Aleksandar Andrejevic [Wed, 11 Sep 2013 23:31:35 +0000 (23:31 +0000)]
[SOFT386]
Implement PUSHA and POPA.
svn path=/branches/ntvdm/; revision=60049
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
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
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
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
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
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
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
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