/* $ff STX extended -**0- */ INLINE void stx_ex( void ) { CLR_NZV; SET_NZ16(X); EXTENDED; WM16(EAD,&m6808.x); }
/* $ef STX indexed -**0- */ INLINE void stx_ix( void ) { CLR_NZV; SET_NZ16(X); INDEXED; WM16(EAD,&m6808.x); }
/* $fd STD extended -**0- */ INLINE void std_ex( void ) { EXTENDED; CLR_NZV; SET_NZ16(D); WM16(EAD,&m6808.d); }
/* $dF STX direct -**0- */ INLINE void stx_di( void ) { CLR_NZV; SET_NZ16(X); DIRECT; WM16(EAD,&m6808.x); }
/* $ed STD indexed -**0- */ INLINE void std_ix( void ) { INDEXED; CLR_NZV; SET_NZ16(D); WM16(EAD,&m6808.d); }
/* $cf STX immediate -**0- */ INLINE void stx_im( void ) { CLR_NZV; SET_NZ16(X); IMM16; WM16(EAD,&m6808.x); }
/* $dd STD direct -**0- */ INLINE void std_di( void ) { DIRECT; CLR_NZV; SET_NZ16(D); WM16(EAD,&m6808.d); }
/* $bf STS extended -**0- */ INLINE void sts_ex( void ) { CLR_NZV; SET_NZ16(S); EXTENDED; WM16(EAD,&m6808.s); }
/* $cd STD immediate -**0- */ INLINE void std_im( void ) { IMM16; CLR_NZV; SET_NZ16(D); WM16(EAD,&m6808.d); }
/* $af STS indexed -**0- */ INLINE void sts_ix( void ) { CLR_NZV; SET_NZ16(S); INDEXED; WM16(EAD,&m6808.s); }
/* $9f STS direct -**0- */ INLINE void sts_di( void ) { CLR_NZV; SET_NZ16(S); DIRECT; WM16(EAD,&m6808.s); }
/* $8f STS immediate -**0- */ INLINE void sts_im( void ) { CLR_NZV; SET_NZ16(S); IMM16; WM16(EAD,&m6808.s); }
void tlcs870_device::do_PUSH_gg(const uint8_t opbyte0, const uint8_t opbyte1) { /* OP (opbyte0) (immval0) (opbyte1) (immval1) (immval2) JF ZF CF HF cycles PUSH gg 1110 10gg 0000 0111 - - - - 4 */ m_cycles = 4; const uint16_t val = get_reg16(opbyte0 & 3); WM16(m_sp.d - 1, val); m_sp.d -= 2; // no flag changes }
void tlcs870_device::do_CALL_gg(const uint8_t opbyte0, const uint8_t opbyte1) { /* OP (opbyte0) (immval0) (opbyte1) (immval1) (immval2) JF ZF CF HF cycles CALL gg 1110 10gg 1111 1100 - - - - 6 */ m_cycles = 6; const uint16_t val = get_reg16(opbyte0 & 3); WM16(m_sp.d - 1, m_addr); m_sp.d -= 2; m_addr = val; // no flag changes on call }
void tlcs870_device::do_LD_indst_rr(const uint8_t opbyte0, const uint8_t opbyte1, const uint16_t dstaddr) { /* OP (opbyte0) (immval0) (opbyte1) (immval1) (immval2) JF ZF CF HF cycles LD (x), rr 1111 0000 xxxx xxxx 0001 00rr 1 - - - 5 LD (PC+A), rr invalid encoding (all PC+A are invalid for dst) ? ? ? ? ? LD (DE), rr 1111 0010 0001 00rr 1 - - - 4 LD (HL), rr 1111 0011 0001 00rr 1 - - - 4 LD (HL+d), rr 1111 0100 dddd dddd 0001 00rr 1 - - - 6 LD (HL+C), rr invalid encoding (all HL+C are invalid for dst) ? ? ? ? ? LD (HL+), rr not listed, invalid due to 16-bit op? ? ? ? ? ? LD (-HL), rr not listed, invalid due to 16-bit op? ? ? ? ? ? aka LD (dst),rr (dst) can only be (x) (pp) or (HL+d) ? not (HL+) or (-HL) ? */ m_cycles += 4; const uint16_t val = get_reg16(opbyte1 & 0x3); WM16(dstaddr, val); set_JF(); }