summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6800/6800ops.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6800/6800ops.hxx')
-rw-r--r--src/devices/cpu/m6800/6800ops.hxx382
1 files changed, 196 insertions, 186 deletions
diff --git a/src/devices/cpu/m6800/6800ops.hxx b/src/devices/cpu/m6800/6800ops.hxx
index 83bc10827c5..eab1825c0e3 100644
--- a/src/devices/cpu/m6800/6800ops.hxx
+++ b/src/devices/cpu/m6800/6800ops.hxx
@@ -41,7 +41,8 @@ OP_HANDLER( illegl3 )
OP_HANDLER( trap )
{
logerror("m6800: illegal opcode: address %04X, op %02X\n",PC-1,(int) M_RDOP_ARG(PC-1)&0xFF);
- TAKE_TRAP();
+ PC--;
+ take_trap();
}
/* $00 ILLEGAL */
@@ -58,7 +59,7 @@ OP_HANDLER( nop )
/* $04 LSRD inherent -0*-* */
OP_HANDLER( lsrd )
{
- uint16_t t;
+ u16 t;
CLR_NZVC; t = D; CC|=(t&0x0001);
t>>=1; SET_Z16(t);
if (NXORC) SEV;
@@ -69,7 +70,7 @@ OP_HANDLER( lsrd )
OP_HANDLER( asld )
{
int r;
- uint16_t t;
+ u16 t;
t = D; r=t<<1;
CLR_NZVC; SET_FLAGS16(t,t,r);
D=r;
@@ -79,8 +80,11 @@ OP_HANDLER( asld )
OP_HANDLER( tap )
{
CC=A;
- ONE_MORE_INSN();
- CHECK_IRQ_LINES(); /* HJB 990417 */
+
+ // TAP temporarily sets the I flag and blocks IRQ until the next opcode
+ // (if the next opcode is TAP, IRQ is blocked again)
+ execute_one();
+ check_irq_lines();
}
/* $07 TPA inherent ----- */
@@ -130,23 +134,24 @@ OP_HANDLER( sec )
/* $0e CLI */
OP_HANDLER( cli )
{
+ u8 i = CC & 0x10;
CLI;
- ONE_MORE_INSN();
- CHECK_IRQ_LINES(); /* HJB 990417 */
+
+ // pending IRQ won't be triggered until next machine cycle
+ if (i) execute_one();
+ check_irq_lines();
}
/* $0f SEI */
OP_HANDLER( sei )
{
SEI;
- ONE_MORE_INSN();
- CHECK_IRQ_LINES(); /* HJB 990417 */
}
/* $10 SBA inherent -**** */
OP_HANDLER( sba )
{
- uint16_t t;
+ u16 t;
t=A-B;
CLR_NZVC; SET_FLAGS8(A,B,t);
A=t;
@@ -155,7 +160,7 @@ OP_HANDLER( sba )
/* $11 CBA inherent -**** */
OP_HANDLER( cba )
{
- uint16_t t;
+ u16 t;
t=A-B;
CLR_NZVC; SET_FLAGS8(A,B,t);
}
@@ -191,10 +196,10 @@ OP_HANDLER( tba )
CLR_NZV; SET_NZ8(A);
}
-/* $18 XGDX inherent ----- */ /* HD63701YO only */
+/* $18 XGDX inherent ----- */ /* HD63701Y0 only */
OP_HANDLER( xgdx )
{
- uint16_t t = X;
+ u16 t = X;
X = D;
D=t;
}
@@ -202,32 +207,35 @@ OP_HANDLER( xgdx )
/* $19 DAA inherent (A) -**0* */
OP_HANDLER( daa )
{
- uint8_t msn, lsn;
- uint16_t t, cf = 0;
+ u8 msn, lsn;
+ u16 t, cf = 0;
msn=A & 0xf0; lsn=A & 0x0f;
- if( lsn>0x09 || CC&0x20 ) cf |= 0x06;
- if( msn>0x80 && lsn>0x09 ) cf |= 0x60;
- if( msn>0x90 || CC&0x01 ) cf |= 0x60;
+ if (lsn>0x09 || CC&0x20) cf |= 0x06;
+ if (msn>0x80 && lsn>0x09) cf |= 0x60;
+ if (msn>0x90 || CC&0x01) cf |= 0x60;
t = cf + A;
- CLR_NZV; /* keep carry from previous operation */
- SET_NZ8((uint8_t)t); SET_C8(t);
+ CLR_NZV; // keep carry from previous operation
+ SET_NZ8((u8)t); SET_C8(t);
A = t;
}
/* $1a ILLEGAL */
-/* $1a SLP */ /* HD63701YO only */
+/* $1a SLP */ /* HD63701Y0 only */
OP_HANDLER( slp )
{
- /* wait for next IRQ (same as waiting of wai) */
+ // wait for next IRQ (same as waiting of WAI)
m_wai_state |= M6800_SLP;
- EAT_CYCLES();
+
+ check_irq_lines();
+ if (m_wai_state & M6800_SLP)
+ eat_cycles();
}
/* $1b ABA inherent ***** */
OP_HANDLER( aba )
{
- uint16_t t;
+ u16 t;
t=A+B;
CLR_HNZVC; SET_FLAGS8(A,B,t); SET_H(A,B,t);
A=t;
@@ -244,113 +252,112 @@ OP_HANDLER( aba )
/* $20 BRA relative ----- */
OP_HANDLER( bra )
{
- uint8_t t;
- IMMBYTE(t);
- PC+=SIGNED(t);
+ u8 t;
+ BRANCH(1);
}
/* $21 BRN relative ----- */
-static uint8_t m6800_brn_t; // hack around GCC 4.6 error because we need the side effects of IMMBYTE
OP_HANDLER( brn )
{
- IMMBYTE(m6800_brn_t);
+ u8 t;
+ BRANCH(0);
}
/* $22 BHI relative ----- */
OP_HANDLER( bhi )
{
- uint8_t t;
+ u8 t;
BRANCH(!(CC&0x05));
}
/* $23 BLS relative ----- */
OP_HANDLER( bls )
{
- uint8_t t;
+ u8 t;
BRANCH(CC&0x05);
}
/* $24 BCC relative ----- */
OP_HANDLER( bcc )
{
- uint8_t t;
+ u8 t;
BRANCH(!(CC&0x01));
}
/* $25 BCS relative ----- */
OP_HANDLER( bcs )
{
- uint8_t t;
+ u8 t;
BRANCH(CC&0x01);
}
/* $26 BNE relative ----- */
OP_HANDLER( bne )
{
- uint8_t t;
+ u8 t;
BRANCH(!(CC&0x04));
}
/* $27 BEQ relative ----- */
OP_HANDLER( beq )
{
- uint8_t t;
+ u8 t;
BRANCH(CC&0x04);
}
/* $28 BVC relative ----- */
OP_HANDLER( bvc )
{
- uint8_t t;
+ u8 t;
BRANCH(!(CC&0x02));
}
/* $29 BVS relative ----- */
OP_HANDLER( bvs )
{
- uint8_t t;
+ u8 t;
BRANCH(CC&0x02);
}
/* $2a BPL relative ----- */
OP_HANDLER( bpl )
{
- uint8_t t;
+ u8 t;
BRANCH(!(CC&0x08));
}
/* $2b BMI relative ----- */
OP_HANDLER( bmi )
{
- uint8_t t;
+ u8 t;
BRANCH(CC&0x08);
}
/* $2c BGE relative ----- */
OP_HANDLER( bge )
{
- uint8_t t;
+ u8 t;
BRANCH(!NXORV);
}
/* $2d BLT relative ----- */
OP_HANDLER( blt )
{
- uint8_t t;
+ u8 t;
BRANCH(NXORV);
}
/* $2e BGT relative ----- */
OP_HANDLER( bgt )
{
- uint8_t t;
+ u8 t;
BRANCH(!(NXORV||CC&0x04));
}
/* $2f BLE relative ----- */
OP_HANDLER( ble )
{
- uint8_t t;
+ u8 t;
BRANCH(NXORV||CC&0x04);
}
@@ -428,7 +435,8 @@ OP_HANDLER( rti )
PULLBYTE(A);
PULLWORD(pX);
PULLWORD(pPC);
- CHECK_IRQ_LINES(); /* HJB 990417 */
+
+ check_irq_lines();
}
/* $3c PSHX inherent ----- */
@@ -440,28 +448,29 @@ OP_HANDLER( pshx )
/* $3d MUL inherent --*-@ */
OP_HANDLER( mul )
{
- uint16_t t;
+ u16 t;
t=A*B;
CLR_C;
- if(t&0x80) SEC;
+ if (t & 0x80) SEC;
D=t;
}
/* $3e WAI inherent ----- */
OP_HANDLER( wai )
{
- /*
- * WAI stacks the entire machine state on the
- * hardware stack, then waits for an interrupt.
- */
+ // WAI stacks the entire machine state on the hardware stack,
+ // then waits for an interrupt.
m_wai_state |= M6800_WAI;
+
PUSHWORD(pPC);
PUSHWORD(pX);
PUSHBYTE(A);
PUSHBYTE(B);
PUSHBYTE(CC);
- CHECK_IRQ_LINES();
- if (m_wai_state & M6800_WAI) EAT_CYCLES();
+
+ check_irq_lines();
+ if (m_wai_state & M6800_WAI)
+ eat_cycles();
}
/* $3f SWI absolute indirect ----- */
@@ -472,6 +481,7 @@ OP_HANDLER( swi )
PUSHBYTE(A);
PUSHBYTE(B);
PUSHBYTE(CC);
+
SEI;
PCD = RM16(0xfffa);
}
@@ -479,7 +489,7 @@ OP_HANDLER( swi )
/* $40 NEGA inherent ?**** */
OP_HANDLER( nega )
{
- uint16_t r;
+ u16 r;
r=-A;
CLR_NZVC; SET_FLAGS8(0,A,r);
A=r;
@@ -509,7 +519,7 @@ OP_HANDLER( lsra )
/* $46 RORA inherent -**-* */
OP_HANDLER( rora )
{
- uint8_t r;
+ u8 r;
r=(CC&0x01)<<7;
CLR_NZVC; CC|=(A&0x01);
r |= A>>1; SET_NZ8(r);
@@ -529,7 +539,7 @@ OP_HANDLER( asra )
/* $48 ASLA inherent ?**** */
OP_HANDLER( asla )
{
- uint16_t r;
+ u16 r;
r=A<<1;
CLR_NZVC; SET_FLAGS8(A,A,r);
A=r;
@@ -538,7 +548,7 @@ OP_HANDLER( asla )
/* $49 ROLA inherent -**** */
OP_HANDLER( rola )
{
- uint16_t t,r;
+ u16 t,r;
t = A; r = CC&0x01; r |= t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
A=r;
@@ -578,7 +588,7 @@ OP_HANDLER( clra )
/* $50 NEGB inherent ?**** */
OP_HANDLER( negb )
{
- uint16_t r;
+ u16 r;
r=-B;
CLR_NZVC; SET_FLAGS8(0,B,r);
B=r;
@@ -608,7 +618,7 @@ OP_HANDLER( lsrb )
/* $56 RORB inherent -**-* */
OP_HANDLER( rorb )
{
- uint8_t r;
+ u8 r;
r=(CC&0x01)<<7;
CLR_NZVC; CC|=(B&0x01);
r |= B>>1; SET_NZ8(r);
@@ -628,7 +638,7 @@ OP_HANDLER( asrb )
/* $58 ASLB inherent ?**** */
OP_HANDLER( aslb )
{
- uint16_t r;
+ u16 r;
r=B<<1;
CLR_NZVC; SET_FLAGS8(B,B,r);
B=r;
@@ -637,7 +647,7 @@ OP_HANDLER( aslb )
/* $59 ROLB inherent -**** */
OP_HANDLER( rolb )
{
- uint16_t t,r;
+ u16 t,r;
t = B; r = CC&0x01; r |= t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
B=r;
@@ -677,16 +687,16 @@ OP_HANDLER( clrb )
/* $60 NEG indexed ?**** */
OP_HANDLER( neg_ix )
{
- uint16_t r,t;
+ u16 r,t;
IDXBYTE(t); r=-t;
CLR_NZVC; SET_FLAGS8(0,t,r);
WM(EAD,r);
}
-/* $61 AIM --**0- */ /* HD63701YO only */
+/* $61 AIM --**0- */ /* HD63701Y0 only */
OP_HANDLER( aim_ix )
{
- uint8_t t, r;
+ u8 t, r;
IMMBYTE(t);
IDXBYTE(r);
r &= t;
@@ -694,10 +704,10 @@ OP_HANDLER( aim_ix )
WM(EAD,r);
}
-/* $62 OIM --**0- */ /* HD63701YO only */
+/* $62 OIM --**0- */ /* HD63701Y0 only */
OP_HANDLER( oim_ix )
{
- uint8_t t, r;
+ u8 t, r;
IMMBYTE(t);
IDXBYTE(r);
r |= t;
@@ -708,7 +718,7 @@ OP_HANDLER( oim_ix )
/* $63 COM indexed -**01 */
OP_HANDLER( com_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t); t = ~t;
CLR_NZV; SET_NZ8(t); SEC;
WM(EAD,t);
@@ -717,17 +727,17 @@ OP_HANDLER( com_ix )
/* $64 LSR indexed -0*-* */
OP_HANDLER( lsr_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t); CLR_NZVC; CC|=(t&0x01);
t>>=1; SET_Z8(t);
if (NXORC) SEV;
WM(EAD,t);
}
-/* $65 EIM --**0- */ /* HD63701YO only */
+/* $65 EIM --**0- */ /* HD63701Y0 only */
OP_HANDLER( eim_ix )
{
- uint8_t t, r;
+ u8 t, r;
IMMBYTE(t);
IDXBYTE(r);
r ^= t;
@@ -738,7 +748,7 @@ OP_HANDLER( eim_ix )
/* $66 ROR indexed -**-* */
OP_HANDLER( ror_ix )
{
- uint8_t t,r;
+ u8 t,r;
IDXBYTE(t); r=(CC&0x01)<<7;
CLR_NZVC; CC|=(t&0x01);
r |= t>>1; SET_NZ8(r);
@@ -749,7 +759,7 @@ OP_HANDLER( ror_ix )
/* $67 ASR indexed ?**-* */
OP_HANDLER( asr_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t); CLR_NZVC; CC|=(t&0x01);
t>>=1; t|=((t&0x40)<<1);
SET_NZ8(t);
@@ -760,7 +770,7 @@ OP_HANDLER( asr_ix )
/* $68 ASL indexed ?**** */
OP_HANDLER( asl_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t); r=t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
WM(EAD,r);
@@ -769,7 +779,7 @@ OP_HANDLER( asl_ix )
/* $69 ROL indexed -**** */
OP_HANDLER( rol_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t); r = CC&0x01; r |= t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
WM(EAD,r);
@@ -778,16 +788,16 @@ OP_HANDLER( rol_ix )
/* $6a DEC indexed -***- */
OP_HANDLER( dec_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t); --t;
CLR_NZV; SET_FLAGS8D(t);
WM(EAD,t);
}
-/* $6b TIM --**0- */ /* HD63701YO only */
+/* $6b TIM --**0- */ /* HD63701Y0 only */
OP_HANDLER( tim_ix )
{
- uint8_t t, r;
+ u8 t, r;
IMMBYTE(t);
IDXBYTE(r);
r &= t;
@@ -797,7 +807,7 @@ OP_HANDLER( tim_ix )
/* $6c INC indexed -***- */
OP_HANDLER( inc_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t); ++t;
CLR_NZV; SET_FLAGS8I(t);
WM(EAD,t);
@@ -806,7 +816,7 @@ OP_HANDLER( inc_ix )
/* $6d TST indexed -**0- */
OP_HANDLER( tst_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t); CLR_NZVC; SET_NZ8(t);
}
@@ -826,16 +836,16 @@ OP_HANDLER( clr_ix )
/* $70 NEG extended ?**** */
OP_HANDLER( neg_ex )
{
- uint16_t r,t;
+ u16 r,t;
EXTBYTE(t); r=-t;
CLR_NZVC; SET_FLAGS8(0,t,r);
WM(EAD,r);
}
-/* $71 AIM --**0- */ /* HD63701YO only */
+/* $71 AIM --**0- */ /* HD63701Y0 only */
OP_HANDLER( aim_di )
{
- uint8_t t, r;
+ u8 t, r;
IMMBYTE(t);
DIRBYTE(r);
r &= t;
@@ -843,10 +853,10 @@ OP_HANDLER( aim_di )
WM(EAD,r);
}
-/* $72 OIM --**0- */ /* HD63701YO only */
+/* $72 OIM --**0- */ /* HD63701Y0 only */
OP_HANDLER( oim_di )
{
- uint8_t t, r;
+ u8 t, r;
IMMBYTE(t);
DIRBYTE(r);
r |= t;
@@ -857,7 +867,7 @@ OP_HANDLER( oim_di )
/* $73 COM extended -**01 */
OP_HANDLER( com_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t); t = ~t;
CLR_NZV; SET_NZ8(t); SEC;
WM(EAD,t);
@@ -866,7 +876,7 @@ OP_HANDLER( com_ex )
/* $74 LSR extended -0*-* */
OP_HANDLER( lsr_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t);
CLR_NZVC;
CC|=(t&0x01);
@@ -876,10 +886,10 @@ OP_HANDLER( lsr_ex )
WM(EAD,t);
}
-/* $75 EIM --**0- */ /* HD63701YO only */
+/* $75 EIM --**0- */ /* HD63701Y0 only */
OP_HANDLER( eim_di )
{
- uint8_t t, r;
+ u8 t, r;
IMMBYTE(t);
DIRBYTE(r);
r ^= t;
@@ -890,7 +900,7 @@ OP_HANDLER( eim_di )
/* $76 ROR extended -**-* */
OP_HANDLER( ror_ex )
{
- uint8_t t,r;
+ u8 t,r;
EXTBYTE(t); r=(CC&0x01)<<7;
CLR_NZVC; CC|=(t&0x01);
r |= t>>1; SET_NZ8(r);
@@ -901,7 +911,7 @@ OP_HANDLER( ror_ex )
/* $77 ASR extended ?**-* */
OP_HANDLER( asr_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t); CLR_NZVC; CC|=(t&0x01);
t>>=1; t|=((t&0x40)<<1);
SET_NZ8(t);
@@ -912,7 +922,7 @@ OP_HANDLER( asr_ex )
/* $78 ASL extended ?**** */
OP_HANDLER( asl_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t); r=t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
WM(EAD,r);
@@ -921,7 +931,7 @@ OP_HANDLER( asl_ex )
/* $79 ROL extended -**** */
OP_HANDLER( rol_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t); r = CC&0x01; r |= t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
WM(EAD,r);
@@ -930,16 +940,16 @@ OP_HANDLER( rol_ex )
/* $7a DEC extended -***- */
OP_HANDLER( dec_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t); --t;
CLR_NZV; SET_FLAGS8D(t);
WM(EAD,t);
}
-/* $7b TIM --**0- */ /* HD63701YO only */
+/* $7b TIM --**0- */ /* HD63701Y0 only */
OP_HANDLER( tim_di )
{
- uint8_t t, r;
+ u8 t, r;
IMMBYTE(t);
DIRBYTE(r);
r &= t;
@@ -949,7 +959,7 @@ OP_HANDLER( tim_di )
/* $7c INC extended -***- */
OP_HANDLER( inc_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t); ++t;
CLR_NZV; SET_FLAGS8I(t);
WM(EAD,t);
@@ -958,7 +968,7 @@ OP_HANDLER( inc_ex )
/* $7d TST extended -**0- */
OP_HANDLER( tst_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t); CLR_NZVC; SET_NZ8(t);
}
@@ -978,7 +988,7 @@ OP_HANDLER( clr_ex )
/* $80 SUBA immediate ?**** */
OP_HANDLER( suba_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t); r = A-t;
CLR_NZVC; SET_FLAGS8(A,t,r);
A = r;
@@ -987,7 +997,7 @@ OP_HANDLER( suba_im )
/* $81 CMPA immediate ?**** */
OP_HANDLER( cmpa_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t); r = A-t;
CLR_NZVC; SET_FLAGS8(A,t,r);
}
@@ -995,7 +1005,7 @@ OP_HANDLER( cmpa_im )
/* $82 SBCA immediate ?**** */
OP_HANDLER( sbca_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t); r = A-t-(CC&0x01);
CLR_NZVC; SET_FLAGS8(A,t,r);
A = r;
@@ -1004,7 +1014,7 @@ OP_HANDLER( sbca_im )
/* $83 SUBD immediate -**** */
OP_HANDLER( subd_im )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
IMMWORD(b);
d = D;
@@ -1017,7 +1027,7 @@ OP_HANDLER( subd_im )
/* $84 ANDA immediate -**0- */
OP_HANDLER( anda_im )
{
- uint8_t t;
+ u8 t;
IMMBYTE(t); A &= t;
CLR_NZV; SET_NZ8(A);
}
@@ -1025,7 +1035,7 @@ OP_HANDLER( anda_im )
/* $85 BITA immediate -**0- */
OP_HANDLER( bita_im )
{
- uint8_t t,r;
+ u8 t,r;
IMMBYTE(t); r = A&t;
CLR_NZV; SET_NZ8(r);
}
@@ -1048,7 +1058,7 @@ OP_HANDLER( sta_im )
/* $88 EORA immediate -**0- */
OP_HANDLER( eora_im )
{
- uint8_t t;
+ u8 t;
IMMBYTE(t); A ^= t;
CLR_NZV; SET_NZ8(A);
}
@@ -1056,7 +1066,7 @@ OP_HANDLER( eora_im )
/* $89 ADCA immediate ***** */
OP_HANDLER( adca_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t); r = A+t+(CC&0x01);
CLR_HNZVC; SET_FLAGS8(A,t,r); SET_H(A,t,r);
A = r;
@@ -1065,7 +1075,7 @@ OP_HANDLER( adca_im )
/* $8a ORA immediate -**0- */
OP_HANDLER( ora_im )
{
- uint8_t t;
+ u8 t;
IMMBYTE(t); A |= t;
CLR_NZV; SET_NZ8(A);
}
@@ -1073,7 +1083,7 @@ OP_HANDLER( ora_im )
/* $8b ADDA immediate ***** */
OP_HANDLER( adda_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t); r = A+t;
CLR_HNZVC; SET_FLAGS8(A,t,r); SET_H(A,t,r);
A = r;
@@ -1096,7 +1106,7 @@ OP_HANDLER( cmpx_im )
/* $8c CPX immediate -**** (6803) */
OP_HANDLER( cpx_im )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
IMMWORD(b);
d = X;
@@ -1108,7 +1118,7 @@ OP_HANDLER( cpx_im )
/* $8d BSR ----- */
OP_HANDLER( bsr )
{
- uint8_t t;
+ u8 t;
IMMBYTE(t);
PUSHWORD(pPC);
PC += SIGNED(t);
@@ -1134,7 +1144,7 @@ OP_HANDLER( sts_im )
/* $90 SUBA direct ?**** */
OP_HANDLER( suba_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t); r = A-t;
CLR_NZVC; SET_FLAGS8(A,t,r);
A = r;
@@ -1143,7 +1153,7 @@ OP_HANDLER( suba_di )
/* $91 CMPA direct ?**** */
OP_HANDLER( cmpa_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t); r = A-t;
CLR_NZVC; SET_FLAGS8(A,t,r);
}
@@ -1151,7 +1161,7 @@ OP_HANDLER( cmpa_di )
/* $92 SBCA direct ?**** */
OP_HANDLER( sbca_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t); r = A-t-(CC&0x01);
CLR_NZVC; SET_FLAGS8(A,t,r);
A = r;
@@ -1160,7 +1170,7 @@ OP_HANDLER( sbca_di )
/* $93 SUBD direct -**** */
OP_HANDLER( subd_di )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
DIRWORD(b);
d = D;
@@ -1173,7 +1183,7 @@ OP_HANDLER( subd_di )
/* $94 ANDA direct -**0- */
OP_HANDLER( anda_di )
{
- uint8_t t;
+ u8 t;
DIRBYTE(t); A &= t;
CLR_NZV; SET_NZ8(A);
}
@@ -1181,7 +1191,7 @@ OP_HANDLER( anda_di )
/* $95 BITA direct -**0- */
OP_HANDLER( bita_di )
{
- uint8_t t,r;
+ u8 t,r;
DIRBYTE(t); r = A&t;
CLR_NZV; SET_NZ8(r);
}
@@ -1206,7 +1216,7 @@ OP_HANDLER( sta_di )
/* $98 EORA direct -**0- */
OP_HANDLER( eora_di )
{
- uint8_t t;
+ u8 t;
DIRBYTE(t);
A ^= t;
CLR_NZV;
@@ -1216,7 +1226,7 @@ OP_HANDLER( eora_di )
/* $99 ADCA direct ***** */
OP_HANDLER( adca_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t);
r = A+t+(CC&0x01);
CLR_HNZVC;
@@ -1228,7 +1238,7 @@ OP_HANDLER( adca_di )
/* $9a ORA direct -**0- */
OP_HANDLER( ora_di )
{
- uint8_t t;
+ u8 t;
DIRBYTE(t);
A |= t;
CLR_NZV;
@@ -1238,7 +1248,7 @@ OP_HANDLER( ora_di )
/* $9b ADDA direct ***** */
OP_HANDLER( adda_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t);
r = A + t;
CLR_HNZVC;
@@ -1264,7 +1274,7 @@ OP_HANDLER( cmpx_di )
/* $9c CPX direct -**** (6803) */
OP_HANDLER( cpx_di )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
DIRWORD(b);
d = X;
@@ -1301,7 +1311,7 @@ OP_HANDLER( sts_di )
/* $a0 SUBA indexed ?**** */
OP_HANDLER( suba_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = A - t;
CLR_NZVC;
@@ -1312,7 +1322,7 @@ OP_HANDLER( suba_ix )
/* $a1 CMPA indexed ?**** */
OP_HANDLER( cmpa_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = A - t;
CLR_NZVC;
@@ -1322,7 +1332,7 @@ OP_HANDLER( cmpa_ix )
/* $a2 SBCA indexed ?**** */
OP_HANDLER( sbca_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = A - t - (CC&0x01);
CLR_NZVC;
@@ -1333,7 +1343,7 @@ OP_HANDLER( sbca_ix )
/* $a3 SUBD indexed -**** */
OP_HANDLER( subd_ix )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
IDXWORD(b);
d = D;
@@ -1346,7 +1356,7 @@ OP_HANDLER( subd_ix )
/* $a4 ANDA indexed -**0- */
OP_HANDLER( anda_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t); A &= t;
CLR_NZV;
SET_NZ8(A);
@@ -1355,7 +1365,7 @@ OP_HANDLER( anda_ix )
/* $a5 BITA indexed -**0- */
OP_HANDLER( bita_ix )
{
- uint8_t t,r;
+ u8 t,r;
IDXBYTE(t); r = A&t;
CLR_NZV;
SET_NZ8(r);
@@ -1381,7 +1391,7 @@ OP_HANDLER( sta_ix )
/* $a8 EORA indexed -**0- */
OP_HANDLER( eora_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t);
A ^= t;
CLR_NZV;
@@ -1391,7 +1401,7 @@ OP_HANDLER( eora_ix )
/* $a9 ADCA indexed ***** */
OP_HANDLER( adca_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = A + t + (CC&0x01);
CLR_HNZVC;
@@ -1403,7 +1413,7 @@ OP_HANDLER( adca_ix )
/* $aa ORA indexed -**0- */
OP_HANDLER( ora_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t);
A |= t;
CLR_NZV;
@@ -1413,7 +1423,7 @@ OP_HANDLER( ora_ix )
/* $ab ADDA indexed ***** */
OP_HANDLER( adda_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = A+t;
CLR_HNZVC;
@@ -1439,7 +1449,7 @@ OP_HANDLER( cmpx_ix )
/* $ac CPX indexed -**** (6803)*/
OP_HANDLER( cpx_ix )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
IDXWORD(b);
d = X;
@@ -1476,7 +1486,7 @@ OP_HANDLER( sts_ix )
/* $b0 SUBA extended ?**** */
OP_HANDLER( suba_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = A - t;
CLR_NZVC;
@@ -1487,7 +1497,7 @@ OP_HANDLER( suba_ex )
/* $b1 CMPA extended ?**** */
OP_HANDLER( cmpa_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = A-t;
CLR_NZVC;
@@ -1497,7 +1507,7 @@ OP_HANDLER( cmpa_ex )
/* $b2 SBCA extended ?**** */
OP_HANDLER( sbca_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = A-t-(CC&0x01);
CLR_NZVC;
@@ -1508,7 +1518,7 @@ OP_HANDLER( sbca_ex )
/* $b3 SUBD extended -**** */
OP_HANDLER( subd_ex )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
EXTWORD(b);
d = D;
@@ -1521,7 +1531,7 @@ OP_HANDLER( subd_ex )
/* $b4 ANDA extended -**0- */
OP_HANDLER( anda_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t);
A &= t;
CLR_NZV;
@@ -1531,7 +1541,7 @@ OP_HANDLER( anda_ex )
/* $b5 BITA extended -**0- */
OP_HANDLER( bita_ex )
{
- uint8_t t,r;
+ u8 t,r;
EXTBYTE(t);
r = A&t;
CLR_NZV;
@@ -1558,7 +1568,7 @@ OP_HANDLER( sta_ex )
/* $b8 EORA extended -**0- */
OP_HANDLER( eora_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t);
A ^= t;
CLR_NZV;
@@ -1568,7 +1578,7 @@ OP_HANDLER( eora_ex )
/* $b9 ADCA extended ***** */
OP_HANDLER( adca_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = A+t+(CC&0x01);
CLR_HNZVC;
@@ -1580,7 +1590,7 @@ OP_HANDLER( adca_ex )
/* $ba ORA extended -**0- */
OP_HANDLER( ora_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t);
A |= t;
CLR_NZV;
@@ -1590,7 +1600,7 @@ OP_HANDLER( ora_ex )
/* $bb ADDA extended ***** */
OP_HANDLER( adda_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = A+t;
CLR_HNZVC;
@@ -1616,7 +1626,7 @@ OP_HANDLER( cmpx_ex )
/* $bc CPX extended -**** (6803) */
OP_HANDLER( cpx_ex )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
EXTWORD(b);
d = X;
@@ -1653,7 +1663,7 @@ OP_HANDLER( sts_ex )
/* $c0 SUBB immediate ?**** */
OP_HANDLER( subb_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t);
r = B-t;
CLR_NZVC;
@@ -1664,7 +1674,7 @@ OP_HANDLER( subb_im )
/* $c1 CMPB immediate ?**** */
OP_HANDLER( cmpb_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t);
r = B-t;
CLR_NZVC;
@@ -1674,7 +1684,7 @@ OP_HANDLER( cmpb_im )
/* $c2 SBCB immediate ?**** */
OP_HANDLER( sbcb_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t);
r = B-t-(CC&0x01);
CLR_NZVC;
@@ -1685,7 +1695,7 @@ OP_HANDLER( sbcb_im )
/* $c3 ADDD immediate -**** */
OP_HANDLER( addd_im )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
IMMWORD(b);
d = D;
@@ -1698,7 +1708,7 @@ OP_HANDLER( addd_im )
/* $c4 ANDB immediate -**0- */
OP_HANDLER( andb_im )
{
- uint8_t t;
+ u8 t;
IMMBYTE(t);
B &= t;
CLR_NZV;
@@ -1708,7 +1718,7 @@ OP_HANDLER( andb_im )
/* $c5 BITB immediate -**0- */
OP_HANDLER( bitb_im )
{
- uint8_t t,r;
+ u8 t,r;
IMMBYTE(t);
r = B&t;
CLR_NZV;
@@ -1736,7 +1746,7 @@ OP_HANDLER( stb_im )
/* $c8 EORB immediate -**0- */
OP_HANDLER( eorb_im )
{
- uint8_t t;
+ u8 t;
IMMBYTE(t);
B ^= t;
CLR_NZV;
@@ -1746,7 +1756,7 @@ OP_HANDLER( eorb_im )
/* $c9 ADCB immediate ***** */
OP_HANDLER( adcb_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t);
r = B+t+(CC&0x01);
CLR_HNZVC;
@@ -1758,7 +1768,7 @@ OP_HANDLER( adcb_im )
/* $ca ORB immediate -**0- */
OP_HANDLER( orb_im )
{
- uint8_t t;
+ u8 t;
IMMBYTE(t);
B |= t;
CLR_NZV;
@@ -1768,7 +1778,7 @@ OP_HANDLER( orb_im )
/* $cb ADDB immediate ***** */
OP_HANDLER( addb_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t);
r = B+t;
CLR_HNZVC;
@@ -1815,7 +1825,7 @@ OP_HANDLER( stx_im )
/* $d0 SUBB direct ?**** */
OP_HANDLER( subb_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t);
r = B-t;
CLR_NZVC;
@@ -1826,7 +1836,7 @@ OP_HANDLER( subb_di )
/* $d1 CMPB direct ?**** */
OP_HANDLER( cmpb_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t);
r = B-t;
CLR_NZVC;
@@ -1836,7 +1846,7 @@ OP_HANDLER( cmpb_di )
/* $d2 SBCB direct ?**** */
OP_HANDLER( sbcb_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t);
r = B-t-(CC&0x01);
CLR_NZVC;
@@ -1847,7 +1857,7 @@ OP_HANDLER( sbcb_di )
/* $d3 ADDD direct -**** */
OP_HANDLER( addd_di )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
DIRWORD(b);
d = D;
@@ -1860,7 +1870,7 @@ OP_HANDLER( addd_di )
/* $d4 ANDB direct -**0- */
OP_HANDLER( andb_di )
{
- uint8_t t;
+ u8 t;
DIRBYTE(t);
B &= t;
CLR_NZV;
@@ -1870,7 +1880,7 @@ OP_HANDLER( andb_di )
/* $d5 BITB direct -**0- */
OP_HANDLER( bitb_di )
{
- uint8_t t,r;
+ u8 t,r;
DIRBYTE(t);
r = B&t;
CLR_NZV;
@@ -1897,7 +1907,7 @@ OP_HANDLER( stb_di )
/* $d8 EORB direct -**0- */
OP_HANDLER( eorb_di )
{
- uint8_t t;
+ u8 t;
DIRBYTE(t);
B ^= t;
CLR_NZV;
@@ -1907,7 +1917,7 @@ OP_HANDLER( eorb_di )
/* $d9 ADCB direct ***** */
OP_HANDLER( adcb_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t);
r = B+t+(CC&0x01);
CLR_HNZVC;
@@ -1919,7 +1929,7 @@ OP_HANDLER( adcb_di )
/* $da ORB direct -**0- */
OP_HANDLER( orb_di )
{
- uint8_t t;
+ u8 t;
DIRBYTE(t);
B |= t;
CLR_NZV;
@@ -1929,7 +1939,7 @@ OP_HANDLER( orb_di )
/* $db ADDB direct ***** */
OP_HANDLER( addb_di )
{
- uint16_t t,r;
+ u16 t,r;
DIRBYTE(t);
r = B+t;
CLR_HNZVC;
@@ -1975,7 +1985,7 @@ OP_HANDLER( stx_di )
/* $e0 SUBB indexed ?**** */
OP_HANDLER( subb_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = B-t;
CLR_NZVC;
@@ -1986,7 +1996,7 @@ OP_HANDLER( subb_ix )
/* $e1 CMPB indexed ?**** */
OP_HANDLER( cmpb_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = B-t;
CLR_NZVC;
@@ -1996,7 +2006,7 @@ OP_HANDLER( cmpb_ix )
/* $e2 SBCB indexed ?**** */
OP_HANDLER( sbcb_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = B-t-(CC&0x01);
CLR_NZVC;
@@ -2007,7 +2017,7 @@ OP_HANDLER( sbcb_ix )
/* $e3 ADDD indexed -**** */
OP_HANDLER( addd_ix )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
IDXWORD(b);
d = D;
@@ -2020,7 +2030,7 @@ OP_HANDLER( addd_ix )
/* $e4 ANDB indexed -**0- */
OP_HANDLER( andb_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t);
B &= t;
CLR_NZV;
@@ -2030,7 +2040,7 @@ OP_HANDLER( andb_ix )
/* $e5 BITB indexed -**0- */
OP_HANDLER( bitb_ix )
{
- uint8_t t,r;
+ u8 t,r;
IDXBYTE(t);
r = B&t;
CLR_NZV;
@@ -2057,7 +2067,7 @@ OP_HANDLER( stb_ix )
/* $e8 EORB indexed -**0- */
OP_HANDLER( eorb_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t);
B ^= t;
CLR_NZV;
@@ -2067,7 +2077,7 @@ OP_HANDLER( eorb_ix )
/* $e9 ADCB indexed ***** */
OP_HANDLER( adcb_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = B+t+(CC&0x01);
CLR_HNZVC;
@@ -2079,7 +2089,7 @@ OP_HANDLER( adcb_ix )
/* $ea ORB indexed -**0- */
OP_HANDLER( orb_ix )
{
- uint8_t t;
+ u8 t;
IDXBYTE(t);
B |= t;
CLR_NZV;
@@ -2089,7 +2099,7 @@ OP_HANDLER( orb_ix )
/* $eb ADDB indexed ***** */
OP_HANDLER( addb_ix )
{
- uint16_t t,r;
+ u16 t,r;
IDXBYTE(t);
r = B+t;
CLR_HNZVC;
@@ -2110,7 +2120,7 @@ OP_HANDLER( ldd_ix )
// actually this is ADDX, causes garbage in nightgal.cpp otherwise
OP_HANDLER( adcx_im )
{
- uint16_t t,r;
+ u16 t,r;
IMMBYTE(t);
r = X+t;
CLR_HNZVC;
@@ -2148,7 +2158,7 @@ OP_HANDLER( stx_ix )
/* $f0 SUBB extended ?**** */
OP_HANDLER( subb_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = B-t;
CLR_NZVC;
@@ -2159,7 +2169,7 @@ OP_HANDLER( subb_ex )
/* $f1 CMPB extended ?**** */
OP_HANDLER( cmpb_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = B-t;
CLR_NZVC;
@@ -2169,7 +2179,7 @@ OP_HANDLER( cmpb_ex )
/* $f2 SBCB extended ?**** */
OP_HANDLER( sbcb_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = B-t-(CC&0x01);
CLR_NZVC;
@@ -2180,7 +2190,7 @@ OP_HANDLER( sbcb_ex )
/* $f3 ADDD extended -**** */
OP_HANDLER( addd_ex )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
EXTWORD(b);
d = D;
@@ -2193,7 +2203,7 @@ OP_HANDLER( addd_ex )
/* $f4 ANDB extended -**0- */
OP_HANDLER( andb_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t);
B &= t;
CLR_NZV;
@@ -2203,7 +2213,7 @@ OP_HANDLER( andb_ex )
/* $f5 BITB extended -**0- */
OP_HANDLER( bitb_ex )
{
- uint8_t t,r;
+ u8 t,r;
EXTBYTE(t);
r = B & t;
CLR_NZV;
@@ -2230,7 +2240,7 @@ OP_HANDLER( stb_ex )
/* $f8 EORB extended -**0- */
OP_HANDLER( eorb_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t);
B ^= t;
CLR_NZV;
@@ -2240,7 +2250,7 @@ OP_HANDLER( eorb_ex )
/* $f9 ADCB extended ***** */
OP_HANDLER( adcb_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = B+t+(CC&0x01);
CLR_HNZVC;
@@ -2252,7 +2262,7 @@ OP_HANDLER( adcb_ex )
/* $fa ORB extended -**0- */
OP_HANDLER( orb_ex )
{
- uint8_t t;
+ u8 t;
EXTBYTE(t);
B |= t;
CLR_NZV;
@@ -2262,7 +2272,7 @@ OP_HANDLER( orb_ex )
/* $fb ADDB extended ***** */
OP_HANDLER( addb_ex )
{
- uint16_t t,r;
+ u16 t,r;
EXTBYTE(t);
r = B+t;
CLR_HNZVC;
@@ -2282,7 +2292,7 @@ OP_HANDLER( ldd_ex )
/* $fc ADDX extended -**** NSC8105 only. Flags are a guess */
OP_HANDLER( addx_ex )
{
- uint32_t r,d;
+ u32 r,d;
PAIR b;
EXTWORD(b);
d = X;
@@ -2322,8 +2332,8 @@ OP_HANDLER( stx_ex )
// $bb - $mask & [X + $disp8]
OP_HANDLER( btst_ix )
{
- uint8_t val;
- uint8_t mask = M_RDOP_ARG(PCD);
+ u8 val;
+ u8 mask = M_RDOP_ARG(PCD);
{EA=X+(M_RDOP_ARG(PCD+1));PC+=2;}
val = RM(EAD) & mask;
CLR_NZVC; SET_NZ8(val);
@@ -2333,7 +2343,7 @@ OP_HANDLER( btst_ix )
OP_HANDLER( stx_nsc )
{
IMM8;
- uint8_t val = RM(EAD);
+ u8 val = RM(EAD);
IMM8;
EA = X + RM(EAD);
CLR_NZV;