Exemple #1
0
/* $ff STX extended -**0- */
INLINE void stx_ex( void )
{
	CLR_NZV;
	SET_NZ16(X);
	EXTENDED;
	WM16(EAD,&m6808.x);
}
Exemple #2
0
/* $ef STX indexed -**0- */
INLINE void stx_ix( void )
{
	CLR_NZV;
	SET_NZ16(X);
	INDEXED;
	WM16(EAD,&m6808.x);
}
Exemple #3
0
/* $fd STD extended -**0- */
INLINE void std_ex( void )
{
	EXTENDED;
	CLR_NZV;
	SET_NZ16(D);
	WM16(EAD,&m6808.d);
}
Exemple #4
0
/* $dF STX direct -**0- */
INLINE void stx_di( void )
{
	CLR_NZV;
	SET_NZ16(X);
	DIRECT;
	WM16(EAD,&m6808.x);
}
Exemple #5
0
/* $ed STD indexed -**0- */
INLINE void std_ix( void )
{
	INDEXED;
	CLR_NZV;
	SET_NZ16(D);
	WM16(EAD,&m6808.d);
}
Exemple #6
0
/* $cf STX immediate -**0- */
INLINE void stx_im( void )
{
	CLR_NZV;
	SET_NZ16(X);
	IMM16;
	WM16(EAD,&m6808.x);
}
Exemple #7
0
/* $dd STD direct -**0- */
INLINE void std_di( void )
{
	DIRECT;
	CLR_NZV;
	SET_NZ16(D);
	WM16(EAD,&m6808.d);
}
Exemple #8
0
/* $bf STS extended -**0- */
INLINE void sts_ex( void )
{
	CLR_NZV;
	SET_NZ16(S);
	EXTENDED;
	WM16(EAD,&m6808.s);
}
Exemple #9
0
/* $cd STD immediate -**0- */
INLINE void std_im( void )
{
	IMM16;
	CLR_NZV;
	SET_NZ16(D);
	WM16(EAD,&m6808.d);
}
Exemple #10
0
/* $af STS indexed -**0- */
INLINE void sts_ix( void )
{
	CLR_NZV;
	SET_NZ16(S);
	INDEXED;
	WM16(EAD,&m6808.s);
}
Exemple #11
0
/* $9f STS direct -**0- */
INLINE void sts_di( void )
{
	CLR_NZV;
	SET_NZ16(S);
	DIRECT;
	WM16(EAD,&m6808.s);
}
Exemple #12
0
/* $8f STS immediate -**0- */
INLINE void sts_im( void )
{
	CLR_NZV;
	SET_NZ16(S);
	IMM16;
	WM16(EAD,&m6808.s);
}
Exemple #13
0
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
}
Exemple #14
0
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
}
Exemple #15
0
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();
}