From 4730d55ed965634a1b9dd4523460b5326552f3ff Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Sun, 9 Nov 2003 09:46:39 +0000 Subject: [PATCH] RCL/RCR instructions changed a bit Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1424 --- src/cpu/instructions.h | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/cpu/instructions.h b/src/cpu/instructions.h index cf00531f..0f2c1e14 100644 --- a/src/cpu/instructions.h +++ b/src/cpu/instructions.h @@ -290,22 +290,20 @@ #define RCLB(op1,op2,load,save) \ if (op2%9) { \ - LoadZF;LoadSF;LoadAF; \ - Bit8u cf=get_CF()!=0; \ - lf_var1b=load(op1); \ - lf_var2b=op2%9; \ + Bit8u cf=(Bit8u)FillFlags()&0x1; \ + lf_var1b=load(op1); \ + lf_var2b=op2%9; \ lflags.type=t_RCLb; \ - lf_resb=(lf_var1b << lf_var2b) | \ - (cf << (lf_var2b-1)) | \ - (lf_var1b >> (9-lf_var2b)); \ - SETFLAGBIT(CF,((lf_var1b >> (8-lf_var2b)) & 1)); \ - save(op1,lf_resb); \ + lf_resb=(lf_var1b << lf_var2b) | \ + (cf << (lf_var2b-1)) | \ + (lf_var1b >> (9-lf_var2b)); \ + SETFLAGBIT(CF,((lf_var1b >> (8-lf_var2b)) & 1)); \ + save(op1,lf_resb); \ } #define RCLW(op1,op2,load,save) \ if (op2%17) { \ - LoadZF;LoadSF;LoadAF; \ - Bit16u cf=get_CF()!=0; \ + Bit16u cf=(Bit16u)FillFlags()&0x1; \ lf_var1w=load(op1); \ lf_var2b=op2%17; \ lflags.type=t_RCLw; \ @@ -318,8 +316,7 @@ #define RCLD(op1,op2,load,save) \ if (op2) { \ - LoadZF;LoadSF;LoadAF; \ - Bit32u cf=get_CF()!=0; \ + Bit32u cf=(Bit32u)FillFlags()&0x1; \ lf_var1d=load(op1); \ lf_var2b=op2; \ lflags.type=t_RCLd; \ @@ -336,8 +333,7 @@ #define RCRB(op1,op2,load,save) \ if (op2%9) { \ - LoadZF;LoadSF;LoadAF; \ - Bit8u cf=get_CF()!=0; \ + Bit8u cf=(Bit8u)FillFlags()&0x1; \ lf_var1b=load(op1); \ lf_var2b=op2%9; \ lflags.type=t_RCRb; \ @@ -349,8 +345,7 @@ #define RCRW(op1,op2,load,save) \ if (op2%17) { \ - LoadZF;LoadSF;LoadAF; \ - Bit16u cf=get_CF()!=0; \ + Bit16u cf=(Bit16u)FillFlags()&0x1; \ lf_var1w=load(op1); \ lf_var2b=op2%17; \ lflags.type=t_RCRw; \ @@ -362,8 +357,7 @@ #define RCRD(op1,op2,load,save) \ if (op2) { \ - LoadZF;LoadSF;LoadAF; \ - Bit32u cf=get_CF()!=0; \ + Bit32u cf=(Bit32u)FillFlags()&0x1; \ lf_var1d=load(op1); \ lf_var2b=op2; \ lflags.type=t_RCRd; \