⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6805ops.c

📁 这个是延伸mame的在wince平台下的游戏模拟器的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/* $91 ILLEGAL */

/* $92 ILLEGAL */

/* $93 ILLEGAL */

/* $94 ILLEGAL */

/* $95 ILLEGAL */

/* $96 ILLEGAL */

/* $97 TAX inherent ---- */
INLINE void tax (void)
{
	xreg=areg;
}

/* $98 CLC */

/* $99 SEC */

/* $9A CLI */

/* $9B SEI */

/* $9C RSP inherent ---- */
INLINE void rsp (void)
{
	sreg = 0x7f;
}

/* $9D NOP inherent ---- */
INLINE void nop (void)
{
}

/* $9E ILLEGAL */

/* $9F TXA inherent ---- */
INLINE void txa (void)
{
	areg=xreg;
}


#if macintosh
#pragma mark ____Ax____
#endif

/* $a0 SUBA immediate ?*** */
INLINE void suba_im( void )
{
	word	t,r;
	IMMBYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $a1 CMPA immediate ?*** */
INLINE void cmpa_im( void )
{
	word	t,r;
	IMMBYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
}

/* $a2 SBCA immediate ?*** */
INLINE void sbca_im( void )
{
	word	t,r;
	IMMBYTE(t); r = areg-t-(cc&0x01);
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $a3 CPX immediate -*** */
INLINE void cpx_im( void )
{
	word	t,r;
	IMMBYTE(t); r = xreg-t;
	CLR_NZC; SET_FLAGS8(xreg,t,r);
}

/* $a4 ANDA immediate -**- */
INLINE void anda_im( void )
{
	byte t;
	IMMBYTE(t); areg &= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $a5 BITA immediate -**- */
INLINE void bita_im( void )
{
	byte t,r;
	IMMBYTE(t); r = areg&t;
	CLR_NZ; SET_NZ8(r);
}

/* $a6 LDA immediate -**- */
INLINE void lda_im( void )
{
	IMMBYTE(areg);
	CLR_NZ; SET_NZ8(areg);
}

/* $a7 ILLEGAL */

/* $a8 EORA immediate -**- */
INLINE void eora_im( void )
{
	byte t;
	IMMBYTE(t); areg ^= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $a9 ADCA immediate **** */
INLINE void adca_im( void )
{
	word t,r;
	IMMBYTE(t); r = areg+t+(cc&0x01);
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $aa ORA immediate -**- */
INLINE void ora_im( void )
{
	byte t;
	IMMBYTE(t); areg |= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $ab ADDA immediate **** */
INLINE void adda_im( void )
{
	word t,r;
	IMMBYTE(t); r = areg+t;
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $ac ILLEGAL */

/* $ad BSR ---- */
INLINE void bsr( void )
{
	byte t;
	IMMBYTE(t); PUSHWORD(pcreg); pcreg += SIGNED(t);
}

/* $ae LDX immediate -**- */
INLINE void ldx_im( void )
{
	IMMBYTE(xreg);
	CLR_NZ; SET_NZ8(xreg);
}

/* $af ILLEGAL */


#if macintosh
#pragma mark ____Bx____
#endif

/* $b0 SUBA direct ?*** */
INLINE void suba_di( void )
{
	word	t,r;
	DIRBYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $b1 CMPA direct ?*** */
INLINE void cmpa_di( void )
{
	word	t,r;
	DIRBYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
}

/* $b2 SBCA direct ?*** */
INLINE void sbca_di( void )
{
	word	t,r;
	DIRBYTE(t); r = areg-t-(cc&0x01);
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $b3 CPX direct -*** */
INLINE void cpx_di( void )
{
	word	t,r;
	DIRBYTE(t); r = xreg-t;
	CLR_NZC; SET_FLAGS8(xreg,t,r);
}

/* $b4 ANDA direct -**- */
INLINE void anda_di( void )
{
	byte t;
	DIRBYTE(t); areg &= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $b5 BITA direct -**- */
INLINE void bita_di( void )
{
	byte t,r;
	DIRBYTE(t); r = areg&t;
	CLR_NZ; SET_NZ8(r);
}

/* $b6 LDA direct -**- */
INLINE void lda_di( void )
{
	DIRBYTE(areg);
	CLR_NZ; SET_NZ8(areg);
}

/* $b7 STA direct -**- */
INLINE void sta_di( void )
{
	CLR_NZ; SET_NZ8(areg);
	DIRECT; M_WRMEM(eaddr,areg);
}

/* $b8 EORA direct -**- */
INLINE void eora_di( void )
{
	byte t;
	DIRBYTE(t); areg ^= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $b9 ADCA direct **** */
INLINE void adca_di( void )
{
	word t,r;
	DIRBYTE(t); r = areg+t+(cc&0x01);
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $ba ORA direct -**- */
INLINE void ora_di( void )
{
	byte t;
	DIRBYTE(t); areg |= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $bb ADDA direct **** */
INLINE void adda_di( void )
{
	word t,r;
	DIRBYTE(t); r = areg+t;
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $bc JMP direct -*** */
INLINE void jmp_di( void )
{
	DIRECT;
	pcreg = eaddr;
}

/* $bd JSR direct ---- */
INLINE void jsr_di( void )
{
	DIRECT; PUSHWORD(pcreg);
	pcreg = eaddr;
}

/* $be LDX direct -**- */
INLINE void ldx_di( void )
{
	DIRBYTE(xreg);
	CLR_NZ; SET_NZ8(xreg);
}

/* $bf STX direct -**- */
INLINE void stx_di( void )
{
	CLR_NZ; SET_NZ8(xreg);
	DIRECT; M_WRMEM(eaddr,xreg);
}


#if macintosh
#pragma mark ____Cx____
#endif

/* $c0 SUBA extended ?*** */
INLINE void suba_ex( void )
{
	word	t,r;
	EXTBYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $c1 CMPA extended ?*** */
INLINE void cmpa_ex( void )
{
	word	t,r;
	EXTBYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
}

/* $c2 SBCA extended ?*** */
INLINE void sbca_ex( void )
{
	word	t,r;
	EXTBYTE(t); r = areg-t-(cc&0x01);
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $c3 CPX extended -*** */
INLINE void cpx_ex( void )
{
	word	t,r;
	EXTBYTE(t); r = xreg-t;
	CLR_NZC; SET_FLAGS8(xreg,t,r);
}

/* $c4 ANDA extended -**- */
INLINE void anda_ex( void )
{
	byte t;
	EXTBYTE(t); areg &= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $c5 BITA extended -**- */
INLINE void bita_ex( void )
{
	byte t,r;
	EXTBYTE(t); r = areg&t;
	CLR_NZ; SET_NZ8(r);
}

/* $c6 LDA extended -**- */
INLINE void lda_ex( void )
{
	EXTBYTE(areg);
	CLR_NZ; SET_NZ8(areg);
}

/* $c7 STA extended -**- */
INLINE void sta_ex( void )
{
	CLR_NZ; SET_NZ8(areg);
	EXTENDED; M_WRMEM(eaddr,areg);
}

/* $c8 EORA extended -**- */
INLINE void eora_ex( void )
{
	byte t;
	EXTBYTE(t); areg ^= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $c9 ADCA extended **** */
INLINE void adca_ex( void )
{
	word t,r;
	EXTBYTE(t); r = areg+t+(cc&0x01);
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $ca ORA extended -**- */
INLINE void ora_ex( void )
{
	byte t;
	EXTBYTE(t); areg |= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $cb ADDA extended **** */
INLINE void adda_ex( void )
{
	word t,r;
	EXTBYTE(t); r = areg+t;
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $cc JMP extended -*** */
INLINE void jmp_ex( void )
{
	EXTENDED;
	pcreg = eaddr;
}

/* $cd JSR extended ---- */
INLINE void jsr_ex( void )
{
	EXTENDED; PUSHWORD(pcreg);
	pcreg = eaddr;
}

/* $ce LDX extended -**- */
INLINE void ldx_ex( void )
{
	EXTBYTE(xreg);
	CLR_NZ; SET_NZ8(xreg);
}

/* $cf STX extended -**- */
INLINE void stx_ex( void )
{
	CLR_NZ; SET_NZ8(xreg);
	EXTENDED; M_WRMEM(eaddr,xreg);
}


#if macintosh
#pragma mark ____Dx____
#endif

/* $d0 SUBA indexed, 2 byte offset ?*** */
INLINE void suba_ix2( void )
{
	word	t,r;
	IDX2BYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $d1 CMPA indexed, 2 byte offset ?*** */
INLINE void cmpa_ix2( void )
{
	word	t,r;
	IDX2BYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
}

/* $d2 SBCA indexed, 2 byte offset ?*** */
INLINE void sbca_ix2( void )
{
	word	t,r;
	IDX2BYTE(t); r = areg-t-(cc&0x01);
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $d3 CPX indexed, 2 byte offset -*** */
INLINE void cpx_ix2( void )
{
	word	t,r;
	IDX2BYTE(t); r = xreg-t;
	CLR_NZC; SET_FLAGS8(xreg,t,r);
}

/* $d4 ANDA indexed, 2 byte offset -**- */
INLINE void anda_ix2( void )
{
	byte t;
	IDX2BYTE(t); areg &= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $d5 BITA indexed, 2 byte offset -**- */
INLINE void bita_ix2( void )
{
	byte t,r;
	IDX2BYTE(t); r = areg&t;
	CLR_NZ; SET_NZ8(r);
}

/* $d6 LDA indexed, 2 byte offset -**- */
INLINE void lda_ix2( void )
{
	IDX2BYTE(areg);
	CLR_NZ; SET_NZ8(areg);
}

/* $d7 STA indexed, 2 byte offset -**- */
INLINE void sta_ix2( void )
{
	CLR_NZ; SET_NZ8(areg);
	INDEXED2; M_WRMEM(eaddr,areg);
}

/* $d8 EORA indexed, 2 byte offset -**- */
INLINE void eora_ix2( void )
{
	byte t;
	IDX2BYTE(t); areg ^= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $d9 ADCA indexed, 2 byte offset **** */
INLINE void adca_ix2( void )
{
	word t,r;
	IDX2BYTE(t); r = areg+t+(cc&0x01);
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $da ORA indexed, 2 byte offset -**- */
INLINE void ora_ix2( void )
{
	byte t;
	IDX2BYTE(t); areg |= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $db ADDA indexed, 2 byte offset **** */
INLINE void adda_ix2( void )
{
	word t,r;
	IDX2BYTE(t); r = areg+t;
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $dc JMP indexed, 2 byte offset -*** */
INLINE void jmp_ix2( void )
{
	INDEXED2;
	pcreg = eaddr;
}

/* $dd JSR indexed, 2 byte offset ---- */
INLINE void jsr_ix2( void )
{
	INDEXED2; PUSHWORD(pcreg);
	pcreg = eaddr;
}

/* $de LDX indexed, 2 byte offset -**- */
INLINE void ldx_ix2( void )
{
	IDX2BYTE(xreg);
	CLR_NZ; SET_NZ8(xreg);
}

/* $df STX indexed, 2 byte offset -**- */
INLINE void stx_ix2( void )
{
	CLR_NZ; SET_NZ8(xreg);
	INDEXED2; M_WRMEM(eaddr,xreg);
}


#if macintosh
#pragma mark ____Ex____
#endif

/* $e0 SUBA indexed, 1 byte offset ?*** */
INLINE void suba_ix1( void )
{
	word	t,r;
	IDX1BYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $e1 CMPA indexed, 1 byte offset ?*** */
INLINE void cmpa_ix1( void )
{
	word	t,r;
	IDX1BYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
}

/* $e2 SBCA indexed, 1 byte offset ?*** */
INLINE void sbca_ix1( void )
{
	word	t,r;
	IDX1BYTE(t); r = areg-t-(cc&0x01);
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $e3 CPX indexed, 1 byte offset -*** */
INLINE void cpx_ix1( void )
{
	word	t,r;
	IDX1BYTE(t); r = xreg-t;
	CLR_NZC; SET_FLAGS8(xreg,t,r);
}

/* $e4 ANDA indexed, 1 byte offset -**- */
INLINE void anda_ix1( void )
{
	byte t;
	IDX1BYTE(t); areg &= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $e5 BITA indexed, 1 byte offset -**- */
INLINE void bita_ix1( void )
{
	byte t,r;
	IDX1BYTE(t); r = areg&t;
	CLR_NZ; SET_NZ8(r);
}

/* $e6 LDA indexed, 1 byte offset -**- */
INLINE void lda_ix1( void )
{
	IDX1BYTE(areg);
	CLR_NZ; SET_NZ8(areg);
}

/* $e7 STA indexed, 1 byte offset -**- */
INLINE void sta_ix1( void )
{
	CLR_NZ; SET_NZ8(areg);
	INDEXED1; M_WRMEM(eaddr,areg);
}

/* $e8 EORA indexed, 1 byte offset -**- */
INLINE void eora_ix1( void )
{
	byte t;
	IDX1BYTE(t); areg ^= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $e9 ADCA indexed, 1 byte offset **** */
INLINE void adca_ix1( void )
{
	word t,r;
	IDX1BYTE(t); r = areg+t+(cc&0x01);
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $ea ORA indexed, 1 byte offset -**- */
INLINE void ora_ix1( void )
{
	byte t;
	IDX1BYTE(t); areg |= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $eb ADDA indexed, 1 byte offset **** */
INLINE void adda_ix1( void )
{
	word t,r;
	IDX1BYTE(t); r = areg+t;
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $ec JMP indexed, 1 byte offset -*** */
INLINE void jmp_ix1( void )
{
	INDEXED1;
	pcreg = eaddr;
}

/* $ed JSR indexed, 1 byte offset ---- */
INLINE void jsr_ix1( void )
{
	INDEXED1; PUSHWORD(pcreg);
	pcreg = eaddr;
}

/* $ee LDX indexed, 1 byte offset -**- */
INLINE void ldx_ix1( void )
{
	IDX1BYTE(xreg);
	CLR_NZ; SET_NZ8(xreg);
}

/* $ef STX indexed, 1 byte offset -**- */
INLINE void stx_ix1( void )
{
	CLR_NZ; SET_NZ8(xreg);
	INDEXED1; M_WRMEM(eaddr,xreg);
}


#if macintosh
#pragma mark ____Fx____
#endif

/* $f0 SUBA indexed ?*** */
INLINE void suba_ix( void )
{
	word	t,r;
	IDXBYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $f1 CMPA indexed ?*** */
INLINE void cmpa_ix( void )
{
	word	t,r;
	IDXBYTE(t); r = areg-t;
	CLR_NZC; SET_FLAGS8(areg,t,r);
}

/* $f2 SBCA indexed ?*** */
INLINE void sbca_ix( void )
{
	word	t,r;
	IDXBYTE(t); r = areg-t-(cc&0x01);
	CLR_NZC; SET_FLAGS8(areg,t,r);
	areg = r;
}

/* $f3 CPX indexed -*** */
INLINE void cpx_ix( void )
{
	word	t,r;
	IDXBYTE(t); r = xreg-t;
	CLR_NZC; SET_FLAGS8(xreg,t,r);
}

/* $f4 ANDA indexed -**- */
INLINE void anda_ix( void )
{
	byte t;
	IDXBYTE(t); areg &= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $f5 BITA indexed -**- */
INLINE void bita_ix( void )
{
	byte t,r;
	IDXBYTE(t); r = areg&t;
	CLR_NZ; SET_NZ8(r);
}

/* $f6 LDA indexed -**- */
INLINE void lda_ix( void )
{
	IDXBYTE(areg);
	CLR_NZ; SET_NZ8(areg);
}

/* $f7 STA indexed -**- */
INLINE void sta_ix( void )
{
	CLR_NZ; SET_NZ8(areg);
	INDEXED; M_WRMEM(eaddr,areg);
}

/* $f8 EORA indexed -**- */
INLINE void eora_ix( void )
{
	byte t;
	IDXBYTE(t); areg ^= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $f9 ADCA indexed **** */
INLINE void adca_ix( void )
{
	word t,r;
	IDXBYTE(t); r = areg+t+(cc&0x01);
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $fa ORA indexed -**- */
INLINE void ora_ix( void )
{
	byte t;
	IDXBYTE(t); areg |= t;
	CLR_NZ; SET_NZ8(areg);
}

/* $fb ADDA indexed **** */
INLINE void adda_ix( void )
{
	word t,r;
	IDXBYTE(t); r = areg+t;
	CLR_HNZC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
	areg = r;
}

/* $fc JMP indexed -*** */
INLINE void jmp_ix( void )
{
	INDEXED;
	pcreg = eaddr;
}

/* $fd JSR indexed ---- */
INLINE void jsr_ix( void )
{
	INDEXED; PUSHWORD(pcreg);
	pcreg = eaddr;
}

/* $fe LDX indexed -**- */
INLINE void ldx_ix( void )
{
	IDXBYTE(xreg);
	CLR_NZ; SET_NZ8(xreg);
}

/* $ff STX indexed -**- */
INLINE void stx_ix( void )
{
	CLR_NZ; SET_NZ8(xreg);
	INDEXED; M_WRMEM(eaddr,xreg);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -