diff options
Diffstat (limited to 'src/devices/cpu/m6800/6800ops.hxx')
-rw-r--r-- | src/devices/cpu/m6800/6800ops.hxx | 382 |
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; |