📄 6808ops.c
字号:
/* $b1 CMPA extended ?**** */
INLINE void cmpa_ex( void )
{
word t,r;
EXTBYTE(t); r = areg-t;
CLR_NZVC; SET_FLAGS8(areg,t,r);
}
/* $b2 SBCA extended ?**** */
INLINE void sbca_ex( void )
{
word t,r;
EXTBYTE(t); r = areg-t-(cc&0x01);
CLR_NZVC; SET_FLAGS8(areg,t,r);
areg = r;
}
/* $b3 SUBD extended -**** */
INLINE void subd_ex( void )
{
dword r,d,b;
EXTWORD(b); d = GETDREG; r = d-b;
CLR_NZVC; SET_FLAGS16(d,b,r);
SETDREG(r);
}
/* $b4 ANDA extended -**0- */
INLINE void anda_ex( void )
{
byte t;
EXTBYTE(t); areg &= t;
CLR_NZV; SET_NZ8(areg);
}
/* $b5 BITA extended -**0- */
INLINE void bita_ex( void )
{
byte t,r;
EXTBYTE(t); r = areg&t;
CLR_NZV; SET_NZ8(r);
}
/* $b6 LDA extended -**0- */
INLINE void lda_ex( void )
{
EXTBYTE(areg);
CLR_NZV; SET_NZ8(areg);
}
/* $b7 STA extended -**0- */
INLINE void sta_ex( void )
{
CLR_NZV; SET_NZ8(areg);
EXTENDED; M_WRMEM(eaddr,areg);
}
/* $b8 EORA extended -**0- */
INLINE void eora_ex( void )
{
byte t;
EXTBYTE(t); areg ^= t;
CLR_NZV; SET_NZ8(areg);
}
/* $b9 ADCA extended ***** */
INLINE void adca_ex( void )
{
word t,r;
EXTBYTE(t); r = areg+t+(cc&0x01);
CLR_HNZVC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
areg = r;
}
/* $ba ORA extended -**0- */
INLINE void ora_ex( void )
{
byte t;
EXTBYTE(t); areg |= t;
CLR_NZV; SET_NZ8(areg);
}
/* $bb ADDA extended ***** */
INLINE void adda_ex( void )
{
word t,r;
EXTBYTE(t); r = areg+t;
CLR_HNZVC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
areg = r;
}
/* $bc CMPX extended -**** */
INLINE void cmpx_ex( void )
{
dword r,d,b;
EXTWORD(b); d = xreg; r = d-b;
CLR_NZVC; SET_FLAGS16(d,b,r);
}
/* $bd JSR extended ----- */
INLINE void jsr_ex( void )
{
EXTENDED; PUSHWORD(pcreg);
pcreg = eaddr; change_pc(pcreg);
}
/* $be LDS extended -**0- */
INLINE void lds_ex( void )
{
EXTWORD(sreg);
CLR_NZV; SET_NZ16(sreg);
}
/* $bf STS extended -**0- */
INLINE void sts_ex( void )
{
CLR_NZV; SET_NZ16(sreg);
EXTENDED; M_WRMEM_WORD(eaddr,sreg);
}
#if macintosh
#pragma mark ____Cx____
#endif
/* $c0 SUBB immediate ?**** */
INLINE void subb_im( void )
{
word t,r;
IMMBYTE(t); r = breg-t;
CLR_NZVC; SET_FLAGS8(breg,t,r);
breg = r;
}
/* $c1 CMPB immediate ?**** */
INLINE void cmpb_im( void )
{
word t,r;
IMMBYTE(t); r = breg-t;
CLR_NZVC; SET_FLAGS8(breg,t,r);
}
/* $c2 SBCB immediate ?**** */
INLINE void sbcb_im( void )
{
word t,r;
IMMBYTE(t); r = breg-t-(cc&0x01);
CLR_NZVC; SET_FLAGS8(breg,t,r);
breg = r;
}
/* $c3 ADDD immediate -**** */
INLINE void addd_im( void )
{
dword r,d,b;
IMMWORD(b); d = GETDREG; r = d+b;
CLR_NZVC; SET_FLAGS16(d,b,r);
SETDREG(r);
}
/* $c4 ANDB immediate -**0- */
INLINE void andb_im( void )
{
byte t;
IMMBYTE(t); breg &= t;
CLR_NZV; SET_NZ8(breg);
}
/* $c5 BITB immediate -**0- */
INLINE void bitb_im( void )
{
byte t,r;
IMMBYTE(t); r = breg&t;
CLR_NZV; SET_NZ8(r);
}
/* $c6 LDB immediate -**0- */
INLINE void ldb_im( void )
{
IMMBYTE(breg);
CLR_NZV; SET_NZ8(breg);
}
/* is this a legal instruction? */
/* $c7 STB immediate -**0- */
INLINE void stb_im( void )
{
CLR_NZV; SET_NZ8(breg);
IMM8; M_WRMEM(eaddr,breg);
}
/* $c8 EORB immediate -**0- */
INLINE void eorb_im( void )
{
byte t;
IMMBYTE(t); breg ^= t;
CLR_NZV; SET_NZ8(breg);
}
/* $c9 ADCB immediate ***** */
INLINE void adcb_im( void )
{
word t,r;
IMMBYTE(t); r = breg+t+(cc&0x01);
CLR_HNZVC; SET_FLAGS8(breg,t,r); SET_H(breg,t,r);
breg = r;
}
/* $ca ORB immediate -**0- */
INLINE void orb_im( void )
{
byte t;
IMMBYTE(t); breg |= t;
CLR_NZV; SET_NZ8(breg);
}
/* $cb ADDB immediate ***** */
INLINE void addb_im( void )
{
word t,r;
IMMBYTE(t); r = breg+t;
CLR_HNZVC; SET_FLAGS8(breg,t,r); SET_H(breg,t,r);
breg = r;
}
/* $cc LDD immediate -**0- */
INLINE void ldd_im( void )
{
word t;
IMMWORD(t); SETDREG(t);
CLR_NZV; SET_NZ16(t);
}
/* is this a legal instruction? */
/* $cd STD immediate -**0- */
INLINE void std_im( void )
{
word t;
IMM16; t=GETDREG;
CLR_NZV; SET_NZ16(t);
M_WRMEM_WORD(eaddr,t);
}
/* $ce LDX immediate -**0- */
INLINE void ldx_im( void )
{
IMMWORD(xreg);
CLR_NZV; SET_NZ16(xreg);
}
/* $cf STX immediate -**0- */
INLINE void stx_im( void )
{
CLR_NZV; SET_NZ16(xreg);
IMM16; M_WRMEM_WORD(eaddr,xreg);
}
#if macintosh
#pragma mark ____Dx____
#endif
/* $d0 SUBB direct ?**** */
INLINE void subb_di( void )
{
word t,r;
DIRBYTE(t); r = breg-t;
CLR_NZVC; SET_FLAGS8(breg,t,r);
breg = r;
}
/* $d1 CMPB direct ?**** */
INLINE void cmpb_di( void )
{
word t,r;
DIRBYTE(t); r = breg-t;
CLR_NZVC; SET_FLAGS8(breg,t,r);
}
/* $d2 SBCB direct ?**** */
INLINE void sbcb_di( void )
{
word t,r;
DIRBYTE(t); r = breg-t-(cc&0x01);
CLR_NZVC; SET_FLAGS8(breg,t,r);
breg = r;
}
/* $d3 ADDD direct -**** */
INLINE void addd_di( void )
{
dword r,d,b;
DIRWORD(b); d = GETDREG; r = d+b;
CLR_NZVC; SET_FLAGS16(d,b,r);
SETDREG(r);
}
/* $d4 ANDB direct -**0- */
INLINE void andb_di( void )
{
byte t;
DIRBYTE(t); breg &= t;
CLR_NZV; SET_NZ8(breg);
}
/* $d5 BITB direct -**0- */
INLINE void bitb_di( void )
{
byte t,r;
DIRBYTE(t); r = breg&t;
CLR_NZV; SET_NZ8(r);
}
/* $d6 LDB direct -**0- */
INLINE void ldb_di( void )
{
DIRBYTE(breg);
CLR_NZV; SET_NZ8(breg);
}
/* $d7 STB direct -**0- */
INLINE void stb_di( void )
{
CLR_NZV; SET_NZ8(breg);
DIRECT; M_WRMEM(eaddr,breg);
}
/* $d8 EORB direct -**0- */
INLINE void eorb_di( void )
{
byte t;
DIRBYTE(t); breg ^= t;
CLR_NZV; SET_NZ8(breg);
}
/* $d9 ADCB direct ***** */
INLINE void adcb_di( void )
{
word t,r;
DIRBYTE(t); r = breg+t+(cc&0x01);
CLR_HNZVC; SET_FLAGS8(breg,t,r); SET_H(breg,t,r);
breg = r;
}
/* $da ORB direct -**0- */
INLINE void orb_di( void )
{
byte t;
DIRBYTE(t); breg |= t;
CLR_NZV; SET_NZ8(breg);
}
/* $db ADDB direct ***** */
INLINE void addb_di( void )
{
word t,r;
DIRBYTE(t); r = breg+t;
CLR_HNZVC; SET_FLAGS8(breg,t,r); SET_H(breg,t,r);
breg = r;
}
/* $dc LDD direct -**0- */
INLINE void ldd_di( void )
{
word t;
DIRWORD(t); SETDREG(t);
CLR_NZV; SET_NZ16(t);
}
/* $dd STD direct -**0- */
INLINE void std_di( void )
{
word t;
DIRECT; t=GETDREG;
CLR_NZV; SET_NZ16(t);
M_WRMEM_WORD(eaddr,t);
}
/* $de LDX direct -**0- */
INLINE void ldx_di( void )
{
DIRWORD(xreg);
CLR_NZV; SET_NZ16(xreg);
}
/* $dF STX direct -**0- */
INLINE void stx_di( void )
{
CLR_NZV; SET_NZ16(xreg);
DIRECT; M_WRMEM_WORD(eaddr,xreg);
}
#if macintosh
#pragma mark ____Ex____
#endif
/* $e0 SUBB indexed ?**** */
INLINE void subb_ix( void )
{
word t,r;
IDXBYTE(t); r = breg-t;
CLR_NZVC; SET_FLAGS8(breg,t,r);
breg = r;
}
/* $e1 CMPB indexed ?**** */
INLINE void cmpb_ix( void )
{
word t,r;
IDXBYTE(t); r = breg-t;
CLR_NZVC; SET_FLAGS8(breg,t,r);
}
/* $e2 SBCB indexed ?**** */
INLINE void sbcb_ix( void )
{
word t,r;
IDXBYTE(t); r = breg-t-(cc&0x01);
CLR_NZVC; SET_FLAGS8(breg,t,r);
breg = r;
}
/* $e3 ADDD indexed -**** */
INLINE void addd_ix( void )
{
dword r,d,b;
IDXWORD(b); d = GETDREG; r = d+b;
CLR_NZVC; SET_FLAGS16(d,b,r);
SETDREG(r);
}
/* $e4 ANDB indexed -**0- */
INLINE void andb_ix( void )
{
byte t;
IDXBYTE(t); breg &= t;
CLR_NZV; SET_NZ8(breg);
}
/* $e5 BITB indexed -**0- */
INLINE void bitb_ix( void )
{
byte t,r;
IDXBYTE(t); r = breg&t;
CLR_NZV; SET_NZ8(r);
}
/* $e6 LDB indexed -**0- */
INLINE void ldb_ix( void )
{
IDXBYTE(breg);
CLR_NZV; SET_NZ8(breg);
}
/* $e7 STB indexed -**0- */
INLINE void stb_ix( void )
{
CLR_NZV; SET_NZ8(breg);
INDEXED; M_WRMEM(eaddr,breg);
}
/* $e8 EORB indexed -**0- */
INLINE void eorb_ix( void )
{
byte t;
IDXBYTE(t); breg ^= t;
CLR_NZV; SET_NZ8(breg);
}
/* $e9 ADCB indexed ***** */
INLINE void adcb_ix( void )
{
word t,r;
IDXBYTE(t); r = breg+t+(cc&0x01);
CLR_HNZVC; SET_FLAGS8(breg,t,r); SET_H(breg,t,r);
breg = r;
}
/* $ea ORB indexed -**0- */
INLINE void orb_ix( void )
{
byte t;
IDXBYTE(t); breg |= t;
CLR_NZV; SET_NZ8(breg);
}
/* $eb ADDB indexed ***** */
INLINE void addb_ix( void )
{
word t,r;
IDXBYTE(t); r = breg+t;
CLR_HNZVC; SET_FLAGS8(breg,t,r); SET_H(breg,t,r);
breg = r;
}
/* $ec LDD indexed -**0- */
INLINE void ldd_ix( void )
{
word t;
IDXWORD(t); SETDREG(t);
CLR_NZV; SET_NZ16(t);
}
/* $ed STD indexed -**0- */
INLINE void std_ix( void )
{
word t;
INDEXED; t=GETDREG;
CLR_NZV; SET_NZ16(t);
M_WRMEM_WORD(eaddr,t);
}
/* $ee LDX indexed -**0- */
INLINE void ldx_ix( void )
{
IDXWORD(xreg);
CLR_NZV; SET_NZ16(xreg);
}
/* $ef STX indexed -**0- */
INLINE void stx_ix( void )
{
CLR_NZV; SET_NZ16(xreg);
INDEXED; M_WRMEM_WORD(eaddr,xreg);
}
#if macintosh
#pragma mark ____Fx____
#endif
/* $f0 SUBB extended ?**** */
INLINE void subb_ex( void )
{
word t,r;
EXTBYTE(t); r = breg-t;
CLR_NZVC; SET_FLAGS8(breg,t,r);
breg = r;
}
/* $f1 CMPB extended ?**** */
INLINE void cmpb_ex( void )
{
word t,r;
EXTBYTE(t); r = breg-t;
CLR_NZVC; SET_FLAGS8(breg,t,r);
}
/* $f2 SBCB extended ?**** */
INLINE void sbcb_ex( void )
{
word t,r;
EXTBYTE(t); r = breg-t-(cc&0x01);
CLR_NZVC; SET_FLAGS8(breg,t,r);
breg = r;
}
/* $f3 ADDD extended -**** */
INLINE void addd_ex( void )
{
dword r,d,b;
EXTWORD(b); d = GETDREG; r = d+b;
CLR_NZVC; SET_FLAGS16(d,b,r);
SETDREG(r);
}
/* $f4 ANDB extended -**0- */
INLINE void andb_ex( void )
{
byte t;
EXTBYTE(t); breg &= t;
CLR_NZV; SET_NZ8(breg);
}
/* $f5 BITB extended -**0- */
INLINE void bitb_ex( void )
{
byte t,r;
EXTBYTE(t); r = breg&t;
CLR_NZV; SET_NZ8(r);
}
/* $f6 LDB extended -**0- */
INLINE void ldb_ex( void )
{
EXTBYTE(breg);
CLR_NZV; SET_NZ8(breg);
}
/* $f7 STB extended -**0- */
INLINE void stb_ex( void )
{
CLR_NZV; SET_NZ8(breg);
EXTENDED; M_WRMEM(eaddr,breg);
}
/* $f8 EORB extended -**0- */
INLINE void eorb_ex( void )
{
byte t;
EXTBYTE(t); breg ^= t;
CLR_NZV; SET_NZ8(breg);
}
/* $f9 ADCB extended ***** */
INLINE void adcb_ex( void )
{
word t,r;
EXTBYTE(t); r = breg+t+(cc&0x01);
CLR_HNZVC; SET_FLAGS8(breg,t,r); SET_H(breg,t,r);
breg = r;
}
/* $fa ORB extended -**0- */
INLINE void orb_ex( void )
{
byte t;
EXTBYTE(t); breg |= t;
CLR_NZV; SET_NZ8(breg);
}
/* $fb ADDB extended ***** */
INLINE void addb_ex( void )
{
word t,r;
EXTBYTE(t); r = breg+t;
CLR_HNZVC; SET_FLAGS8(breg,t,r); SET_H(breg,t,r);
breg = r;
}
/* $fc LDD extended -**0- */
INLINE void ldd_ex( void )
{
word t;
EXTWORD(t); SETDREG(t);
CLR_NZV; SET_NZ16(t);
}
/* $fd STD extended -**0- */
INLINE void std_ex( void )
{
word t;
EXTENDED; t=GETDREG;
CLR_NZV; SET_NZ16(t);
M_WRMEM_WORD(eaddr,t);
}
/* $fe LDX extended -**0- */
INLINE void ldx_ex( void )
{
EXTWORD(xreg);
CLR_NZV; SET_NZ16(xreg);
}
/* $ff STX extended -**0- */
INLINE void stx_ex( void )
{
CLR_NZV; SET_NZ16(xreg);
EXTENDED; M_WRMEM_WORD(eaddr,xreg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -