Previous 199869 Revisions Next

r23909 Monday 24th June, 2013 at 14:20:06 UTC by Fabio Priuli
LR35902: renamed FLAG_C/H/N/Z to LR35902_FLAG_C/H/N/Z to avoid
clash against G65816 flags with same name. nw.
[src/emu/cpu/lr35902]lr35902.c lr35902.h opc_cb.h opc_main.h

trunk/src/emu/cpu/lr35902/lr35902.c
r23908r23909
4646#define HALTED  0x02
4747
4848
49const UINT8 lr35902_cpu_device::FLAG_Z = 0x80;
50const UINT8 lr35902_cpu_device::FLAG_N = 0x40;
51const UINT8 lr35902_cpu_device::FLAG_H = 0x20;
52const UINT8 lr35902_cpu_device::FLAG_C = 0x10;
53
5449//**************************************************************************
5550//  LR35902 DEVICE
5651//**************************************************************************
r23908r23909
182177
183178      case STATE_GENFLAGS:
184179         string.printf("%c%c%c%c",
185            m_F & FLAG_Z   ? 'Z' : '.',
186            m_F & FLAG_N   ? 'N' : '.',
187            m_F & FLAG_H   ? 'H' : '.',
188            m_F & FLAG_C   ? 'C' : '.'
180            m_F & LR35902_FLAG_Z   ? 'Z' : '.',
181            m_F & LR35902_FLAG_N   ? 'N' : '.',
182            m_F & LR35902_FLAG_H   ? 'H' : '.',
183            m_F & LR35902_FLAG_C   ? 'C' : '.'
189184         );
190185         break;
191186   }
trunk/src/emu/cpu/lr35902/lr35902.h
r23908r23909
7777
7878protected:
7979   address_space_config m_program_config;
80
80   
8181   UINT8 m_A;
8282   UINT8 m_F;
8383   UINT8 m_B;
r23908r23909
110110   UINT8   m_features;
111111   const UINT16 *c_regs;
112112   const struct lr35902_config *m_config;
113
113   
114114   /* Flag bit definitions */
115   static const UINT8 FLAG_Z;
116   static const UINT8 FLAG_N;
117   static const UINT8 FLAG_H;
118   static const UINT8 FLAG_C;
115   static const UINT8 LR35902_FLAG_Z = 0x80;
116   static const UINT8 LR35902_FLAG_N = 0x40;
117   static const UINT8 LR35902_FLAG_H = 0x20;
118   static const UINT8 LR35902_FLAG_C = 0x10;
119119};
120120
121121extern const device_type LR35902;
trunk/src/emu/cpu/lr35902/opc_main.h
r23908r23909
33   register UINT8 r,f; \
44   x++; \
55   r=(x);  \
6   f=(UINT8)(m_F&FLAG_C); \
7   if( r==0 )       f|=FLAG_Z; \
8   if( (r&0xF)==0 ) f|=FLAG_H; \
6   f=(UINT8)(m_F&LR35902_FLAG_C); \
7   if( r==0 )       f|=LR35902_FLAG_Z; \
8   if( (r&0xF)==0 ) f|=LR35902_FLAG_H; \
99   m_F=f; \
1010}
1111
r23908r23909
1414   register UINT8 r,f; \
1515   x--; \
1616   r=(x);  \
17   f=(UINT8)((m_F&FLAG_C)|FLAG_N); \
18   if( r==0 )       f|=FLAG_Z; \
19   if( (r&0xF)==0xF ) f|=FLAG_H; \
17   f=(UINT8)((m_F&LR35902_FLAG_C)|LR35902_FLAG_N); \
18   if( r==0 )       f|=LR35902_FLAG_Z; \
19   if( (r&0xF)==0xF ) f|=LR35902_FLAG_H; \
2020   m_F=f; \
2121}
2222
r23908r23909
2626   register UINT8 f; \
2727   r1=((m_H<<8)|m_L)+(x); \
2828   r2=(((m_H<<8)|m_L)&0xFFF)+((x)&0xFFF); \
29   f=(UINT8)(m_F&FLAG_Z); \
30   if( r1>0xFFFF ) f|=FLAG_C; \
31   if( r2>0x0FFF ) f|=FLAG_H; \
29   f=(UINT8)(m_F&LR35902_FLAG_Z); \
30   if( r1>0xFFFF ) f|=LR35902_FLAG_C; \
31   if( r2>0x0FFF ) f|=LR35902_FLAG_H; \
3232   m_L = r1; \
3333   m_H = r1 >> 8; \
3434   m_F=f; \
r23908r23909
4141   r1=(UINT16)((m_A&0xF)+((x)&0xF)); \
4242   r2=(UINT16)(m_A+(x)); \
4343   m_A=(UINT8)r2; \
44   if( ((UINT8)r2)==0 ) f=FLAG_Z; \
44   if( ((UINT8)r2)==0 ) f=LR35902_FLAG_Z; \
4545   else f=0; \
46   if( r2>0xFF ) f|=FLAG_C; \
47   if( r1>0xF )  f|=FLAG_H; \
46   if( r2>0xFF ) f|=LR35902_FLAG_C; \
47   if( r1>0xF )  f|=LR35902_FLAG_H; \
4848   m_F=f; \
4949}
5050
r23908r23909
5555   r1=(UINT16)((m_A&0xF)-((x)&0xF)); \
5656   r2=(UINT16)(m_A-(x)); \
5757   m_A=(UINT8)r2; \
58   if( ((UINT8)r2)==0 ) f=FLAG_N|FLAG_Z; \
59   else f=FLAG_N; \
60   if( r2>0xFF ) f|=FLAG_C; \
61   if( r1>0xF )  f|=FLAG_H; \
58   if( ((UINT8)r2)==0 ) f=LR35902_FLAG_N|LR35902_FLAG_Z; \
59   else f=LR35902_FLAG_N; \
60   if( r2>0xFF ) f|=LR35902_FLAG_C; \
61   if( r1>0xF )  f|=LR35902_FLAG_H; \
6262   m_F=f; \
6363}
6464
r23908r23909
6969   register UINT8 f; \
7070   r=(UINT16)(m_A-(x)); \
7171   if( ((UINT8)r)==0 ) \
72   f=FLAG_N|FLAG_Z; \
72   f=LR35902_FLAG_N|LR35902_FLAG_Z; \
7373   else \
74   f=FLAG_N; \
75   f|=(UINT8)((r>>8)&FLAG_C); \
74   f=LR35902_FLAG_N; \
75   f|=(UINT8)((r>>8)&LR35902_FLAG_C); \
7676   if( (r^m_A^(x))&0x10 ) \
77   f|=FLAG_H; \
77   f|=LR35902_FLAG_H; \
7878   m_F=f; \
7979   }
8080 */
r23908r23909
8585   register UINT8 f; \
8686   r1=(UINT16)((m_A&0xF)-((x)&0xF)); \
8787   r2=(UINT16)(m_A-(x)); \
88   if( ((UINT8)r2)==0 ) f=FLAG_N|FLAG_Z; \
89   else f=FLAG_N; \
90   if( r2>0xFF ) f|=FLAG_C; \
91   if( r1>0xF )  f|=FLAG_H; \
88   if( ((UINT8)r2)==0 ) f=LR35902_FLAG_N|LR35902_FLAG_Z; \
89   else f=LR35902_FLAG_N; \
90   if( r2>0xFF ) f|=LR35902_FLAG_C; \
91   if( r1>0xF )  f|=LR35902_FLAG_H; \
9292   m_F=f; \
9393}
9494
r23908r23909
9696{ \
9797   register UINT16 r1,r2; \
9898   register UINT8 f; \
99   r1=(UINT16)((m_A&0xF)-((x)&0xF)-((m_F&FLAG_C)?1:0)); \
100   r2=(UINT16)(m_A-(x)-((m_F&FLAG_C)?1:0)); \
99   r1=(UINT16)((m_A&0xF)-((x)&0xF)-((m_F&LR35902_FLAG_C)?1:0)); \
100   r2=(UINT16)(m_A-(x)-((m_F&LR35902_FLAG_C)?1:0)); \
101101   m_A=(UINT8)r2; \
102   if( ((UINT8)r2)==0 ) f=FLAG_N|FLAG_Z; \
103   else f=FLAG_N; \
104   if( r2>0xFF ) f|=FLAG_C; \
105   if( r1>0xF )  f|=FLAG_H; \
102   if( ((UINT8)r2)==0 ) f=LR35902_FLAG_N|LR35902_FLAG_Z; \
103   else f=LR35902_FLAG_N; \
104   if( r2>0xFF ) f|=LR35902_FLAG_C; \
105   if( r1>0xF )  f|=LR35902_FLAG_H; \
106106   m_F=f; \
107107}
108108
r23908r23909
110110{ \
111111   register UINT16 r1,r2;  \
112112   register UINT8 f; \
113   r1=(UINT16)((m_A&0xF)+((x)&0xF)+((m_F&FLAG_C)?1:0));  \
114   r2=(UINT16)(m_A+(x)+((m_F&FLAG_C)?1:0)); \
115   if( (m_A=(UINT8)r2)==0 ) f=FLAG_Z; \
113   r1=(UINT16)((m_A&0xF)+((x)&0xF)+((m_F&LR35902_FLAG_C)?1:0));  \
114   r2=(UINT16)(m_A+(x)+((m_F&LR35902_FLAG_C)?1:0)); \
115   if( (m_A=(UINT8)r2)==0 ) f=LR35902_FLAG_Z; \
116116   else f=0; \
117   if( r2>0xFF )   f|=FLAG_C; \
118   if( r1>0xF )    f|=FLAG_H; \
117   if( r2>0xFF )   f|=LR35902_FLAG_C; \
118   if( r1>0xF )    f|=LR35902_FLAG_H; \
119119   m_F=f; \
120120}
121121
122122#define AND_A_X(x) \
123123   if( (m_A&=(x))==0 ) \
124   m_F=FLAG_H|FLAG_Z; \
124   m_F=LR35902_FLAG_H|LR35902_FLAG_Z; \
125125   else \
126   m_F=FLAG_H;
126   m_F=LR35902_FLAG_H;
127127
128128#define XOR_A_X(x) \
129129   if( (m_A^=(x))==0 ) \
130   m_F=FLAG_Z; \
130   m_F=LR35902_FLAG_Z; \
131131   else \
132132   m_F=0;
133133
134134#define OR_A_X(x) \
135135   if( (m_A|=(x))==0 ) \
136   m_F=FLAG_Z; \
136   m_F=LR35902_FLAG_Z; \
137137   else \
138138   m_F=0;
139139
r23908r23909
190190   m_A = (UINT8) ((m_A << 1) | (m_A >> 7));
191191   if (m_A & 1)
192192   {
193   m_F = FLAG_C;
193   m_F = LR35902_FLAG_C;
194194   }
195195   else
196196   {
r23908r23909
244244   m_F = 0;
245245   if (m_A & 0x80)
246246   {
247   m_F |= FLAG_C;
247   m_F |= LR35902_FLAG_C;
248248   }
249249   break;
250250case 0x10: /*      STOP */
r23908r23909
289289   break;
290290case 0x17: /*      RLA */
291291
292   x = (m_A & 0x80) ? FLAG_C : 0;
292   x = (m_A & 0x80) ? LR35902_FLAG_C : 0;
293293
294   m_A = (UINT8) ((m_A << 1) | ((m_F & FLAG_C) ? 1 : 0));
294   m_A = (UINT8) ((m_A << 1) | ((m_F & LR35902_FLAG_C) ? 1 : 0));
295295   m_F = x;
296296   break;
297297case 0x18: /*      JR      n8 */
r23908r23909
340340   break;
341341case 0x1F: /*      RRA */
342342
343   x = (m_A & 1) ? FLAG_C : 0;
343   x = (m_A & 1) ? LR35902_FLAG_C : 0;
344344
345   m_A = (UINT8) ((m_A >> 1) | ((m_F & FLAG_C) ? 0x80 : 0));
345   m_A = (UINT8) ((m_A >> 1) | ((m_F & LR35902_FLAG_C) ? 0x80 : 0));
346346   m_F = x;
347347   break;
348348case 0x20: /*      JR NZ,n8 */
349349   {
350350      INT8 offset = mem_read_byte( m_PC++ );
351      if (! (m_F & FLAG_Z) )
351      if (! (m_F & LR35902_FLAG_Z) )
352352      {
353353         m_PC += offset;
354354         cycles_passed( 4 );
r23908r23909
405405   {
406406      int tmp = m_A;
407407
408      if ( ! ( m_F & FLAG_N ) ) {
409         if ( ( m_F & FLAG_H ) || ( tmp & 0x0F ) > 9 )
408      if ( ! ( m_F & LR35902_FLAG_N ) ) {
409         if ( ( m_F & LR35902_FLAG_H ) || ( tmp & 0x0F ) > 9 )
410410            tmp += 6;
411         if ( ( m_F & FLAG_C ) || tmp > 0x9F )
411         if ( ( m_F & LR35902_FLAG_C ) || tmp > 0x9F )
412412            tmp += 0x60;
413413      } else {
414         if ( m_F & FLAG_H ) {
414         if ( m_F & LR35902_FLAG_H ) {
415415            tmp -= 6;
416            if ( ! ( m_F & FLAG_C ) )
416            if ( ! ( m_F & LR35902_FLAG_C ) )
417417               tmp &= 0xFF;
418418         }
419         if ( m_F & FLAG_C )
419         if ( m_F & LR35902_FLAG_C )
420420               tmp -= 0x60;
421421      }
422      m_F &= ~ ( FLAG_H | FLAG_Z );
422      m_F &= ~ ( LR35902_FLAG_H | LR35902_FLAG_Z );
423423      if ( tmp & 0x100 )
424         m_F |= FLAG_C;
424         m_F |= LR35902_FLAG_C;
425425      m_A = tmp & 0xFF;
426426      if ( ! m_A )
427         m_F |= FLAG_Z;
427         m_F |= LR35902_FLAG_Z;
428428   }
429429   break;
430430case 0x28: /*      JR Z,n8 */
431431   {
432432      INT8 offset = mem_read_byte( m_PC++ );
433433
434      if (m_F & FLAG_Z)
434      if (m_F & LR35902_FLAG_Z)
435435      {
436436         m_PC += offset;
437437         cycles_passed( 4 );
r23908r23909
486486case 0x2F: /*      CPL */
487487
488488   m_A = ~m_A;
489   m_F |= FLAG_N | FLAG_H;
489   m_F |= LR35902_FLAG_N | LR35902_FLAG_H;
490490   break;
491491case 0x30: /*      JR NC,n8 */
492492   {
493493      INT8 offset = mem_read_byte( m_PC++ );
494494
495      if ( ! (m_F & FLAG_C) )
495      if ( ! (m_F & LR35902_FLAG_C) )
496496      {
497497         m_PC += offset;
498498         cycles_passed( 4 );
r23908r23909
528528      UINT16 addr = ( m_H << 8 ) | m_L;
529529      register UINT8 r, f;
530530
531      f = (UINT8) (m_F & FLAG_C);
531      f = (UINT8) (m_F & LR35902_FLAG_C);
532532      r = mem_read_byte( addr );
533533      r += 1;
534534      mem_write_byte( addr, r );
535535
536536      if (r == 0)
537         f |= FLAG_Z;
537         f |= LR35902_FLAG_Z;
538538
539539      if ((r & 0xF) == 0)
540         f |= FLAG_H;
540         f |= LR35902_FLAG_H;
541541
542542      m_F = f;
543543   }
r23908r23909
547547      UINT16 addr = ( m_H << 8 ) | m_L;
548548      register UINT8 r, f;
549549
550      f = (UINT8) ((m_F & FLAG_C) | FLAG_N);
550      f = (UINT8) ((m_F & LR35902_FLAG_C) | LR35902_FLAG_N);
551551      r = mem_read_byte( addr );
552552      r -= 1;
553553      mem_write_byte( addr, r );
554554
555555      if (r == 0)
556         f |= FLAG_Z;
556         f |= LR35902_FLAG_Z;
557557
558558      if ((r & 0xF) == 0xF)
559         f |= FLAG_H;
559         f |= LR35902_FLAG_H;
560560
561561      m_F = f;
562562   }
r23908r23909
569569   break;
570570case 0x37: /*      SCF */
571571
572   m_F = (UINT8) ((m_F & FLAG_Z) | FLAG_C);
572   m_F = (UINT8) ((m_F & LR35902_FLAG_Z) | LR35902_FLAG_C);
573573   break;
574574case 0x38: /*      JR C,n8 */
575575   {
576576      INT8 offset = mem_read_byte( m_PC++ );
577577
578      if (m_F & FLAG_C)
578      if (m_F & LR35902_FLAG_C)
579579      {
580580         m_PC += offset;
581581         cycles_passed( 4 );
r23908r23909
618618   break;
619619case 0x3F: /*      CCF */
620620
621   m_F = (UINT8) ((m_F & FLAG_Z) | ((m_F & FLAG_C) ? 0 : FLAG_C));
621   m_F = (UINT8) ((m_F & LR35902_FLAG_Z) | ((m_F & LR35902_FLAG_C) ? 0 : LR35902_FLAG_C));
622622   break;
623623case 0x40: /*      LD B,B */
624624   break;
r23908r23909
10261026   break;
10271027case 0xA7: /*      AND A,A */
10281028
1029   m_F = (m_A == 0) ? (FLAG_H | FLAG_Z) : FLAG_H;
1029   m_F = (m_A == 0) ? (LR35902_FLAG_H | LR35902_FLAG_Z) : LR35902_FLAG_H;
10301030   break;
10311031case 0xA8: /*      XOR A,B */
10321032
r23908r23909
11321132   break;
11331133case 0xC0: /*      RET NZ */
11341134   cycles_passed( 4 );
1135   if (!(m_F & FLAG_Z))
1135   if (!(m_F & LR35902_FLAG_Z))
11361136   {
11371137      m_PC = mem_read_word( m_SP );
11381138      m_SP += 2;
r23908r23909
11471147      UINT16 addr = mem_read_word( m_PC );
11481148      m_PC += 2;
11491149
1150      if ( ! (m_F & FLAG_Z) )
1150      if ( ! (m_F & LR35902_FLAG_Z) )
11511151      {
11521152         m_PC = addr;
11531153         cycles_passed( 4 );
r23908r23909
11631163      UINT16 addr = mem_read_word( m_PC );
11641164      m_PC += 2;
11651165
1166      if ( ! (m_F & FLAG_Z) )
1166      if ( ! (m_F & LR35902_FLAG_Z) )
11671167      {
11681168         m_SP -= 2;
11691169         mem_write_word( m_SP, m_PC );
r23908r23909
11891189   break;
11901190case 0xC8: /*      RET Z */
11911191   cycles_passed( 4 );
1192   if (m_F & FLAG_Z)
1192   if (m_F & LR35902_FLAG_Z)
11931193   {
11941194      m_PC = mem_read_word( m_SP );
11951195      m_SP += 2;
r23908r23909
12061206      UINT16 addr = mem_read_word( m_PC );
12071207      m_PC += 2;
12081208
1209      if (m_F & FLAG_Z)
1209      if (m_F & LR35902_FLAG_Z)
12101210      {
12111211         m_PC = addr;
12121212         cycles_passed( 4 );
r23908r23909
12251225      UINT16 addr = mem_read_word( m_PC );
12261226      m_PC += 2;
12271227
1228      if (m_F & FLAG_Z)
1228      if (m_F & LR35902_FLAG_Z)
12291229      {
12301230         m_SP -= 2;
12311231         mem_write_word( m_SP, m_PC );
r23908r23909
12581258   break;
12591259case 0xD0: /*      RET NC */
12601260   cycles_passed( 4 );
1261   if (!(m_F & FLAG_C))
1261   if (!(m_F & LR35902_FLAG_C))
12621262   {
12631263      m_PC = mem_read_word( m_SP );
12641264      m_SP += 2;
r23908r23909
12731273      UINT16 addr = mem_read_word( m_PC );
12741274      m_PC += 2;
12751275
1276      if ( ! (m_F & FLAG_C) )
1276      if ( ! (m_F & LR35902_FLAG_C) )
12771277      {
12781278         m_PC = addr;
12791279         cycles_passed( 4 );
r23908r23909
12871287      UINT16 addr = mem_read_word( m_PC );
12881288      m_PC += 2;
12891289
1290      if ( ! (m_F & FLAG_C) )
1290      if ( ! (m_F & LR35902_FLAG_C) )
12911291      {
12921292         m_SP -= 2;
12931293         mem_write_word( m_SP, m_PC );
r23908r23909
13131313   break;
13141314case 0xD8: /*      RET C */
13151315   cycles_passed( 4 );
1316   if (m_F & FLAG_C)
1316   if (m_F & LR35902_FLAG_C)
13171317   {
13181318      m_PC = mem_read_word( m_SP );
13191319      m_SP += 2;
r23908r23909
13311331      UINT16 addr = mem_read_word( m_PC );
13321332      m_PC += 2;
13331333
1334      if (m_F & FLAG_C)
1334      if (m_F & LR35902_FLAG_C)
13351335      {
13361336         m_PC = addr;
13371337         cycles_passed( 4 );
r23908r23909
13451345      UINT16 addr = mem_read_word( m_PC );
13461346      m_PC += 2;
13471347
1348      if (m_F & FLAG_C)
1348      if (m_F & LR35902_FLAG_C)
13491349      {
13501350         m_SP -= 2;
13511351         mem_write_word( m_SP, m_PC );
r23908r23909
14141414
14151415   if ( ( m_SP & 0xFF ) + (UINT8)(n & 0xFF) > 0xFF )
14161416   {
1417      m_F = FLAG_C;
1417      m_F = LR35902_FLAG_C;
14181418   }
14191419   else
14201420   {
r23908r23909
14231423
14241424   if ( ( m_SP & 0x0F ) + ( n & 0x0F ) > 0x0F )
14251425   {
1426      m_F |= FLAG_H;
1426      m_F |= LR35902_FLAG_H;
14271427   }
14281428
14291429   m_SP = (UINT16) ( m_SP + n );
r23908r23909
15091509
15101510   if ( ( m_SP & 0xFF ) + (UINT8)(n & 0xFF) > 0xFF )
15111511   {
1512      m_F = FLAG_C;
1512      m_F = LR35902_FLAG_C;
15131513   }
15141514   else
15151515   {
r23908r23909
15181518
15191519   if ( ( m_SP & 0x0F ) + ( n & 0x0F ) > 0x0F )
15201520   {
1521      m_F |= FLAG_H;
1521      m_F |= LR35902_FLAG_H;
15221522   }
15231523
15241524   UINT16 res = m_SP + n;
trunk/src/emu/cpu/lr35902/opc_cb.h
r23908r23909
33   register UINT8 f;           \
44   (x)=(UINT8)(((x)<<1)|((x)>>7));      \
55   if( (x)&1 )                 \
6      f=FLAG_C;               \
6      f=LR35902_FLAG_C;               \
77   else                        \
88      f=0;                    \
99   if( (x)==0 )                \
10      f|=FLAG_Z;              \
10      f|=LR35902_FLAG_Z;              \
1111   m_F=f;          \
1212}
1313
1414#define RL_8BIT(x)              \
1515{                               \
1616   register UINT8 r;           \
17   r=((x)&0x80)?FLAG_C:0;      \
18   (x)=(UINT8)(((x)<<1)|((m_F&FLAG_C)?1:0));    \
17   r=((x)&0x80)?LR35902_FLAG_C:0;      \
18   (x)=(UINT8)(((x)<<1)|((m_F&LR35902_FLAG_C)?1:0));    \
1919   if( (x)==0 )                \
20      r|=FLAG_Z;              \
20      r|=LR35902_FLAG_Z;              \
2121   m_F=r;          \
2222}
2323
r23908r23909
2626   register UINT8 f;           \
2727   (x)=(UINT8)(((x)>>1)|((x)<<7));      \
2828   if( (x)&0x80 )              \
29      f=FLAG_C;               \
29      f=LR35902_FLAG_C;               \
3030   else                        \
3131      f=0;                    \
3232   if( (x)==0 )                \
33      f|=FLAG_Z;              \
33      f|=LR35902_FLAG_Z;              \
3434   m_F=f;          \
3535}
3636
3737#define RR_8BIT(x)              \
3838{                               \
3939   register UINT8 r;           \
40   r=((x)&1)?FLAG_C:0;         \
41   (x)=(UINT8)(((x)>>1)|((m_F&FLAG_C)?0x80:0));     \
40   r=((x)&1)?LR35902_FLAG_C:0;         \
41   (x)=(UINT8)(((x)>>1)|((m_F&LR35902_FLAG_C)?0x80:0));     \
4242   if( (x)==0 )                \
43      r|=FLAG_Z;              \
43      r|=LR35902_FLAG_Z;              \
4444   m_F=r;          \
4545}
4646
r23908r23909
4848{                               \
4949   register UINT8 f;           \
5050   if( (x)&0x80 )              \
51      f=FLAG_C;               \
51      f=LR35902_FLAG_C;               \
5252   else                        \
5353      f=0;                    \
5454   (x)<<=1;                    \
5555   if( (x)==0 )                \
56      f|=FLAG_Z;              \
56      f|=LR35902_FLAG_Z;              \
5757   m_F=f;          \
5858}
5959
r23908r23909
6161{                               \
6262   register UINT8 f;           \
6363   if( (x)&1 )                 \
64      f=FLAG_C;               \
64      f=LR35902_FLAG_C;               \
6565   else                        \
6666      f=0;                    \
6767   (x)=(UINT8)(((char)(x))>>1);     \
6868   if( (x)==0 )                \
69      f|=FLAG_Z;              \
69      f|=LR35902_FLAG_Z;              \
7070   m_F=f;          \
7171}
7272
7373#define SWAP_8BIT(x)            \
7474   (x)=(UINT8)(((x)>>4)|((x)<<4));      \
7575   if( (x)==0 )                \
76      m_F=FLAG_Z; \
76      m_F=LR35902_FLAG_Z; \
7777   else                        \
7878      m_F=0;
7979
r23908r23909
8282{                               \
8383   register UINT8 f;           \
8484   if( (x)&1 )                 \
85      f=FLAG_C;               \
85      f=LR35902_FLAG_C;               \
8686   else                        \
8787      f=0;                    \
8888   (x)>>=1;                    \
8989   if( (x)==0 )                \
90      f|=FLAG_Z;              \
90      f|=LR35902_FLAG_Z;              \
9191   m_F=f;          \
9292}
9393
9494#define BIT_8BIT(n,x)           \
9595   if( (x)&(1<<(n)) )          \
96      m_F=(UINT8)(FLAG_H|(m_F&FLAG_C));  \
96      m_F=(UINT8)(LR35902_FLAG_H|(m_F&LR35902_FLAG_C));  \
9797   else                        \
98      m_F=(UINT8)(FLAG_Z|FLAG_H|(m_F&FLAG_C));
98      m_F=(UINT8)(LR35902_FLAG_Z|LR35902_FLAG_H|(m_F&LR35902_FLAG_C));
9999
100100#define RES_8BIT(n,x)   (x)&=~(1<<(n));
101101

Previous 199869 Revisions Next


© 1997-2024 The MAME Team