Diff for /xmil/z80c/z80c_cb.c between versions 1.3 and 1.7

version 1.3, 2004/08/08 14:00:56 version 1.7, 2008/06/02 20:07:32
Line 1 Line 1
 //----------------------------------------------------------------------------  /* -----------------------------------------------------------------------
 //   *
 //  Z80C : Z80 Engine - GENERIC   * Z80C : Z80 Engine - GENERIC
 //   *
 //                                  Copyright by Studio Milmake 1999-2000,2004   *                              Copyright by Studio Milmake 1999-2000,2004
 //   *
 //----------------------------------------------------------------------------   *------------------------------------------------------------------------ */
   
   
 #include        "compiler.h"  #include        "compiler.h"
 #include        "z80core.h"  #include        "z80core.h"
Line 19  static REG8 CPUCALL _cb_rlc(REG8 v) { Line 18  static REG8 CPUCALL _cb_rlc(REG8 v) {
   
         R_Z80F = v >> 7;          R_Z80F = v >> 7;
         ret = (v << 1) | R_Z80F;          ret = (v << 1) | R_Z80F;
         R_Z80F |= ZSPtable[ret];          R_Z80F |= z80szp_flag[(UINT8)ret];
         return(ret);          return(ret);
 }  }
   
Line 29  static REG8 CPUCALL _cb_rrc(REG8 v) { Line 28  static REG8 CPUCALL _cb_rrc(REG8 v) {
   
         R_Z80F = v & 1;          R_Z80F = v & 1;
         ret = (v >> 1) | (R_Z80F << 7);          ret = (v >> 1) | (R_Z80F << 7);
         R_Z80F |= ZSPtable[ret];          R_Z80F |= z80szp_flag[(UINT8)ret];
         return(ret);          return(ret);
 }  }
   
Line 38  static REG8 CPUCALL _cb_rl(REG8 v) { Line 37  static REG8 CPUCALL _cb_rl(REG8 v) {
         REG8    ret;          REG8    ret;
   
         ret = (v << 1) | (R_Z80F & 1);          ret = (v << 1) | (R_Z80F & 1);
         R_Z80F = ZSPtable[ret] | (v >> 7);          R_Z80F = z80szp_flag[(UINT8)ret] | (v >> 7);
         return(ret);          return(ret);
 }  }
   
Line 47  static REG8 CPUCALL _cb_rr(REG8 v) { Line 46  static REG8 CPUCALL _cb_rr(REG8 v) {
         REG8    ret;          REG8    ret;
   
         ret = (v >> 1) | (R_Z80F << 7);          ret = (v >> 1) | (R_Z80F << 7);
         R_Z80F = ZSPtable[ret] | (v & 1);          R_Z80F = z80szp_flag[(UINT8)ret] | (v & 1);
         return(ret);          return(ret);
 }  }
   
Line 56  static REG8 CPUCALL _cb_sla(REG8 v) { Line 55  static REG8 CPUCALL _cb_sla(REG8 v) {
         REG8    ret;          REG8    ret;
   
         ret = (v << 1);          ret = (v << 1);
         R_Z80F = ZSPtable[ret] | (v >> 7);          R_Z80F = z80szp_flag[(UINT8)ret] | (v >> 7);
         return(ret);          return(ret);
 }  }
   
Line 64  static REG8 CPUCALL _cb_sra(REG8 v) { Line 63  static REG8 CPUCALL _cb_sra(REG8 v) {
   
         REG8    ret;          REG8    ret;
   
         ret = (((char)v) / 2);          ret = (((SINT8)v) >> 1);
         R_Z80F = ZSPtable[ret] | (v & 1);          R_Z80F = z80szp_flag[(UINT8)ret] | (v & 1);
         return(ret);          return(ret);
 }  }
   
Line 74  static REG8 CPUCALL _cb_sll(REG8 v) { Line 73  static REG8 CPUCALL _cb_sll(REG8 v) {
         REG8    ret;          REG8    ret;
   
         ret = (v << 1) | 1;          ret = (v << 1) | 1;
         R_Z80F = ZSPtable[ret] | (v >> 7);          R_Z80F = z80szp_flag[(UINT8)ret] | (v >> 7);
         return(ret);          return(ret);
 }  }
   
Line 83  static REG8 CPUCALL _cb_srl(REG8 v) { Line 82  static REG8 CPUCALL _cb_srl(REG8 v) {
         REG8    ret;          REG8    ret;
   
         ret = v >> 1;          ret = v >> 1;
         R_Z80F = ZSPtable[ret] | (v & 1);          R_Z80F = z80szp_flag[ret] | (v & 1);
         return(ret);          return(ret);
 }  }
   
Line 116  void z80c_cb(void) { Line 115  void z80c_cb(void) {
                                 *reg = rolsft_proc[bit](*reg);                                  *reg = rolsft_proc[bit](*reg);
                                 break;                                  break;
   
                         case 0x40:                                                                              // bit                          case 0x40:                                                                              /* bit */
                                 R_Z80F &= C_FLAG;                                  R_Z80F &= C_FLAG;
                                 if ((*reg) & (1 << bit)) {                                  if ((*reg) & (1 << bit)) {
                                         if (bit != 7) {                                          if (bit != 7) {
Line 131  void z80c_cb(void) { Line 130  void z80c_cb(void) {
                                 }                                  }
                                 break;                                  break;
   
                         case 0x80:                                                                              // reset                          case 0x80:                                                                              /* reset */
                                 (*reg) &= ~(1 << bit);                                  (*reg) &= ~(1 << bit);
                                 break;                                  break;
   
                         case 0xc0:                                                                              // set                          case 0xc0:                                                                              /* set */
                                 (*reg) |= 1 << bit;                                  (*reg) |= 1 << bit;
                                 break;                                  break;
                 }                  }
Line 148  void z80c_cb(void) { Line 147  void z80c_cb(void) {
                                 xhl = rolsft_proc[bit](xhl);                                  xhl = rolsft_proc[bit](xhl);
                                 break;                                  break;
   
                         case 0x40:                                                                              // bit                          case 0x40:                                                                              /* bit */
                                 Z80_COUNT(12);                                  Z80_COUNT(12);
                                 R_Z80F &= C_FLAG;                                  R_Z80F &= C_FLAG;
                                 if (xhl & (1 << bit)) {                                  if (xhl & (1 << bit)) {
Line 164  void z80c_cb(void) { Line 163  void z80c_cb(void) {
                                 }                                  }
                                 return;                                  return;
   
                         case 0x80:                                                                              // reset                          case 0x80:                                                                              /* reset */
                                 Z80_COUNT(15);                                  Z80_COUNT(15);
                                 xhl &= ~(1 << bit);                                  xhl &= ~(1 << bit);
                                 break;                                  break;
   
                         case 0xc0:                                                                              // set                          case 0xc0:                                                                              /* set */
                                 Z80_COUNT(15);                                  Z80_COUNT(15);
                                 xhl |= 1 << bit;                                  xhl |= 1 << bit;
                                 break;                                  break;
Line 196  void z80c_ixcb(void) { Line 195  void z80c_ixcb(void) {
                         xi = rolsft_proc[bit](xi);                          xi = rolsft_proc[bit](xi);
                         break;                          break;
   
                 case 0x40:                                                                              // bit                  case 0x40:                                                                              /* bit */
                         Z80_COUNT(20);                          Z80_COUNT(20);
                         R_Z80F &= C_FLAG;                          R_Z80F &= C_FLAG;
                         if (xi & (1 << bit)) {                          if (xi & (1 << bit)) {
Line 212  void z80c_ixcb(void) { Line 211  void z80c_ixcb(void) {
                         }                          }
                         return;                          return;
   
                 case 0x80:                                                                              // reset                  case 0x80:                                                                              /* reset */
                         Z80_COUNT(23);                          Z80_COUNT(23);
                         xi &= ~(1 << bit);                          xi &= ~(1 << bit);
                         break;                          break;
   
                 case 0xc0:                                                                              // set                  case 0xc0:                                                                              /* set */
                         Z80_COUNT(23);                          Z80_COUNT(23);
                         xi |= 1 << bit;                          xi |= 1 << bit;
                         break;                          break;
Line 243  void z80c_iycb(void) { Line 242  void z80c_iycb(void) {
                         xi = rolsft_proc[bit](xi);                          xi = rolsft_proc[bit](xi);
                         break;                          break;
   
                 case 0x40:                                                                              // bit                  case 0x40:                                                                              /* bit */
                         Z80_COUNT(20);                          Z80_COUNT(20);
                         R_Z80F &= C_FLAG;                          R_Z80F &= C_FLAG;
                         if (xi & (1 << bit)) {                          if (xi & (1 << bit)) {
Line 259  void z80c_iycb(void) { Line 258  void z80c_iycb(void) {
                         }                          }
                         return;                          return;
   
                 case 0x80:                                                                              // reset                  case 0x80:                                                                              /* reset */
                         Z80_COUNT(23);                          Z80_COUNT(23);
                         xi &= ~(1 << bit);                          xi &= ~(1 << bit);
                         break;                          break;
   
                 case 0xc0:                                                                              // set                  case 0xc0:                                                                              /* set */
                         Z80_COUNT(23);                          Z80_COUNT(23);
                         xi |= 1 << bit;                          xi |= 1 << bit;
                         break;                          break;

Removed from v.1.3  
changed lines
  Added in v.1.7


RetroPC.NET-CVS <cvs@retropc.net>