📄 6808ops.c
字号:
t>>=1; SET_Z8(t);
M_WRMEM(eaddr,t);
}
/* $65 EIM --**0- */ /* HD63701YO only */
INLINE void eim_ix( void )
{
byte t, r;
IMMBYTE(t);
IDXBYTE(r);
r ^= t;
CLR_NZV; SET_NZ8(r);
M_WRMEM(eaddr,r);
}
/* $66 ROR indexed -**-* */
INLINE void ror_ix( void )
{
byte t,r;
IDXBYTE(t); r=(cc&0x01)<<7;
CLR_NZC; cc|=(t&0x01);
r |= t>>1; SET_NZ8(r);
M_WRMEM(eaddr,r);
}
/* $67 ASR indexed ?**-* */
INLINE void asr_ix( void )
{
byte t;
IDXBYTE(t); CLR_NZC; cc|=(t&0x01);
t>>=1; t|=((t&0x40)<<1);
SET_NZ8(t);
M_WRMEM(eaddr,t);
}
/* $68 ASL indexed ?**** */
INLINE void asl_ix( void )
{
word t,r;
IDXBYTE(t); r=t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
M_WRMEM(eaddr,r);
}
/* $69 ROL indexed -**** */
INLINE void rol_ix( void )
{
word t,r;
IDXBYTE(t); r = cc&0x01; r |= t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
M_WRMEM(eaddr,r);
}
/* $6a DEC indexed -***- */
INLINE void dec_ix( void )
{
byte t;
IDXBYTE(t); --t;
CLR_NZV; SET_FLAGS8D(t);
M_WRMEM(eaddr,t);
}
/* $6b TIM --**0- */ /* HD63701YO only */
INLINE void tim_ix( void )
{
byte t, r;
IMMBYTE(t);
IDXBYTE(r);
r &= t;
CLR_NZV; SET_NZ8(r);
}
/* $6c INC indexed -***- */
INLINE void inc_ix( void )
{
byte t;
IDXBYTE(t); ++t;
CLR_NZV; SET_FLAGS8I(t);
M_WRMEM(eaddr,t);
}
/* $6d TST indexed -**0- */
INLINE void tst_ix( void )
{
byte t;
IDXBYTE(t); CLR_NZV; SET_NZ8(t);
}
/* $6e JMP indexed ----- */
INLINE void jmp_ix( void )
{
INDEXED; pcreg=eaddr; change_pc(pcreg);
}
/* $6f CLR indexed -0100 */
INLINE void clr_ix( void )
{
INDEXED; M_WRMEM(eaddr,0);
CLR_NZVC; SEZ;
}
#if macintosh
#pragma mark ____7x____
#endif
/* $70 NEG extended ?**** */
INLINE void neg_ex( void )
{
word r,t;
EXTBYTE(t); r=-t;
CLR_NZVC; SET_FLAGS8(0,t,r);
M_WRMEM(eaddr,r);
}
/* $71 AIM --**0- */ /* HD63701YO only */
INLINE void aim_di( void )
{
byte t, r;
IMMBYTE(t);
DIRBYTE(r);
r &= t;
CLR_NZV; SET_NZ8(r);
M_WRMEM(eaddr,r);
}
/* $72 OIM --**0- */ /* HD63701YO only */
INLINE void oim_di( void )
{
byte t, r;
IMMBYTE(t);
DIRBYTE(r);
r |= t;
CLR_NZV; SET_NZ8(r);
M_WRMEM(eaddr,r);
}
/* $73 COM extended -**01 */
INLINE void com_ex( void )
{
byte t;
EXTBYTE(t); t = ~t;
CLR_NZV; SET_NZ8(t); SEC;
M_WRMEM(eaddr,t);
}
/* $74 LSR extended -0*-* */
INLINE void lsr_ex( void )
{
byte t;
EXTBYTE(t); CLR_NZC; cc|=(t&0x01);
t>>=1; SET_Z8(t);
M_WRMEM(eaddr,t);
}
/* $75 EIM --**0- */ /* HD63701YO only */
INLINE void eim_di( void )
{
byte t, r;
IMMBYTE(t);
DIRBYTE(r);
r ^= t;
CLR_NZV; SET_NZ8(r);
M_WRMEM(eaddr,r);
}
/* $76 ROR extended -**-* */
INLINE void ror_ex( void )
{
byte t,r;
EXTBYTE(t); r=(cc&0x01)<<7;
CLR_NZC; cc|=(t&0x01);
r |= t>>1; SET_NZ8(r);
M_WRMEM(eaddr,r);
}
/* $77 ASR extended ?**-* */
INLINE void asr_ex( void )
{
byte t;
EXTBYTE(t); CLR_NZC; cc|=(t&0x01);
t>>=1; t|=((t&0x40)<<1);
SET_NZ8(t);
M_WRMEM(eaddr,t);
}
/* $78 ASL extended ?**** */
INLINE void asl_ex( void )
{
word t,r;
EXTBYTE(t); r=t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
M_WRMEM(eaddr,r);
}
/* $79 ROL extended -**** */
INLINE void rol_ex( void )
{
word t,r;
EXTBYTE(t); r = cc&0x01; r |= t<<1;
CLR_NZVC; SET_FLAGS8(t,t,r);
M_WRMEM(eaddr,r);
}
/* $7a DEC extended -***- */
INLINE void dec_ex( void )
{
byte t;
EXTBYTE(t); --t;
CLR_NZV; SET_FLAGS8D(t);
M_WRMEM(eaddr,t);
}
/* $7b TIM --**0- */ /* HD63701YO only */
INLINE void tim_di( void )
{
byte t, r;
IMMBYTE(t);
DIRBYTE(r);
r &= t;
CLR_NZV; SET_NZ8(r);
}
/* $7c INC extended -***- */
INLINE void inc_ex( void )
{
byte t;
EXTBYTE(t); ++t;
CLR_NZV; SET_FLAGS8I(t);
M_WRMEM(eaddr,t);
}
/* $7d TST extended -**0- */
INLINE void tst_ex( void )
{
byte t;
EXTBYTE(t); CLR_NZV; SET_NZ8(t);
}
/* $7e JMP extended ----- */
INLINE void jmp_ex( void )
{
EXTENDED; pcreg=eaddr;change_pc(pcreg); /* TS 971002 */
}
/* $7f CLR extended -0100 */
INLINE void clr_ex( void )
{
EXTENDED; M_WRMEM(eaddr,0);
CLR_NZVC; SEZ;
}
#if macintosh
#pragma mark ____8x____
#endif
/* $80 SUBA immediate ?**** */
INLINE void suba_im( void )
{
word t,r;
IMMBYTE(t); r = areg-t;
CLR_NZVC; SET_FLAGS8(areg,t,r);
areg = r;
}
/* $81 CMPA immediate ?**** */
INLINE void cmpa_im( void )
{
word t,r;
IMMBYTE(t); r = areg-t;
CLR_NZVC; SET_FLAGS8(areg,t,r);
}
/* $82 SBCA immediate ?**** */
INLINE void sbca_im( void )
{
word t,r;
IMMBYTE(t); r = areg-t-(cc&0x01);
CLR_NZVC; SET_FLAGS8(areg,t,r);
areg = r;
}
/* $83 SUBD immediate -**** */
INLINE void subd_im( void )
{
dword r,d,b;
IMMWORD(b); d = GETDREG; r = d-b;
CLR_NZVC; SET_FLAGS16(d,b,r);
SETDREG(r);
}
/* $84 ANDA immediate -**0- */
INLINE void anda_im( void )
{
byte t;
IMMBYTE(t); areg &= t;
CLR_NZV; SET_NZ8(areg);
}
/* $85 BITA immediate -**0- */
INLINE void bita_im( void )
{
byte t,r;
IMMBYTE(t); r = areg&t;
CLR_NZV; SET_NZ8(r);
}
/* $86 LDA immediate -**0- */
INLINE void lda_im( void )
{
IMMBYTE(areg);
CLR_NZV; SET_NZ8(areg);
}
/* is this a legal instruction? */
/* $87 STA immediate -**0- */
INLINE void sta_im( void )
{
CLR_NZV; SET_NZ8(areg);
IMM8; M_WRMEM(eaddr,areg);
}
/* $88 EORA immediate -**0- */
INLINE void eora_im( void )
{
byte t;
IMMBYTE(t); areg ^= t;
CLR_NZV; SET_NZ8(areg);
}
/* $89 ADCA immediate ***** */
INLINE void adca_im( void )
{
word t,r;
IMMBYTE(t); r = areg+t+(cc&0x01);
CLR_HNZVC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
areg = r;
}
/* $8a ORA immediate -**0- */
INLINE void ora_im( void )
{
byte t;
IMMBYTE(t); areg |= t;
CLR_NZV; SET_NZ8(areg);
}
/* $8b ADDA immediate ***** */
INLINE void adda_im( void )
{
word t,r;
IMMBYTE(t); r = areg+t;
CLR_HNZVC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
areg = r;
}
/* $8c CMPX immediate -**** */
INLINE void cmpx_im( void )
{
dword r,d,b;
IMMWORD(b); d = xreg; r = d-b;
CLR_NZVC; SET_FLAGS16(d,b,r);
}
/* $8d BSR ----- */
INLINE void bsr( void )
{
byte t;
IMMBYTE(t); PUSHWORD(pcreg); pcreg += SIGNED(t);change_pc(pcreg); /* TS 971002 */
}
/* $8e LDS immediate -**0- */
INLINE void lds_im( void )
{
IMMWORD(sreg);
CLR_NZV; SET_NZ16(sreg);
}
/* $8f STS immediate -**0- */
INLINE void sts_im( void )
{
CLR_NZV; SET_NZ16(sreg);
IMM16; M_WRMEM_WORD(eaddr,sreg);
}
#if macintosh
#pragma mark ____9x____
#endif
/* $90 SUBA direct ?**** */
INLINE void suba_di( void )
{
word t,r;
DIRBYTE(t); r = areg-t;
CLR_NZVC; SET_FLAGS8(areg,t,r);
areg = r;
}
/* $91 CMPA direct ?**** */
INLINE void cmpa_di( void )
{
word t,r;
DIRBYTE(t); r = areg-t;
CLR_NZVC; SET_FLAGS8(areg,t,r);
}
/* $92 SBCA direct ?**** */
INLINE void sbca_di( void )
{
word t,r;
DIRBYTE(t); r = areg-t-(cc&0x01);
CLR_NZVC; SET_FLAGS8(areg,t,r);
areg = r;
}
/* $93 SUBD direct -**** */
INLINE void subd_di( void )
{
dword r,d,b;
DIRWORD(b); d = GETDREG; r = d-b;
CLR_NZVC; SET_FLAGS16(d,b,r);
SETDREG(r);
}
/* $94 ANDA direct -**0- */
INLINE void anda_di( void )
{
byte t;
DIRBYTE(t); areg &= t;
CLR_NZV; SET_NZ8(areg);
}
/* $95 BITA direct -**0- */
INLINE void bita_di( void )
{
byte t,r;
DIRBYTE(t); r = areg&t;
CLR_NZV; SET_NZ8(r);
}
/* $96 LDA direct -**0- */
INLINE void lda_di( void )
{
DIRBYTE(areg);
CLR_NZV; SET_NZ8(areg);
}
/* $97 STA direct -**0- */
INLINE void sta_di( void )
{
CLR_NZV; SET_NZ8(areg);
DIRECT; M_WRMEM(eaddr,areg);
}
/* $98 EORA direct -**0- */
INLINE void eora_di( void )
{
byte t;
DIRBYTE(t); areg ^= t;
CLR_NZV; SET_NZ8(areg);
}
/* $99 ADCA direct ***** */
INLINE void adca_di( void )
{
word t,r;
DIRBYTE(t); r = areg+t+(cc&0x01);
CLR_HNZVC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
areg = r;
}
/* $9a ORA direct -**0- */
INLINE void ora_di( void )
{
byte t;
DIRBYTE(t); areg |= t;
CLR_NZV; SET_NZ8(areg);
}
/* $9b ADDA direct ***** */
INLINE void adda_di( void )
{
word t,r;
DIRBYTE(t); r = areg+t;
CLR_HNZVC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
areg = r;
}
/* $9c CMPX direct -**** */
INLINE void cmpx_di( void )
{
dword r,d,b;
DIRWORD(b); d = xreg; r = d-b;
CLR_NZVC; SET_FLAGS16(d,b,r);
}
/* $9d JSR direct ----- */
INLINE void jsr_di( void )
{
DIRECT; PUSHWORD(pcreg);
pcreg = eaddr; change_pc(pcreg);
}
/* $9e LDS direct -**0- */
INLINE void lds_di( void )
{
DIRWORD(sreg);
CLR_NZV; SET_NZ16(sreg);
}
/* $9f STS direct -**0- */
INLINE void sts_di( void )
{
CLR_NZV; SET_NZ16(sreg);
DIRECT; M_WRMEM_WORD(eaddr,sreg);
}
#if macintosh
#pragma mark ____Ax____
#endif
/* $a0 SUBA indexed ?**** */
INLINE void suba_ix( void )
{
word t,r;
IDXBYTE(t); r = areg-t;
CLR_NZVC; SET_FLAGS8(areg,t,r);
areg = r;
}
/* $a1 CMPA indexed ?**** */
INLINE void cmpa_ix( void )
{
word t,r;
IDXBYTE(t); r = areg-t;
CLR_NZVC; SET_FLAGS8(areg,t,r);
}
/* $a2 SBCA indexed ?**** */
INLINE void sbca_ix( void )
{
word t,r;
IDXBYTE(t); r = areg-t-(cc&0x01);
CLR_NZVC; SET_FLAGS8(areg,t,r);
areg = r;
}
/* $a3 SUBD indexed -**** */
INLINE void subd_ix( void )
{
dword r,d,b;
IDXWORD(b); d = GETDREG; r = d-b;
CLR_NZVC; SET_FLAGS16(d,b,r);
SETDREG(r);
}
/* $a4 ANDA indexed -**0- */
INLINE void anda_ix( void )
{
byte t;
IDXBYTE(t); areg &= t;
CLR_NZV; SET_NZ8(areg);
}
/* $a5 BITA indexed -**0- */
INLINE void bita_ix( void )
{
byte t,r;
IDXBYTE(t); r = areg&t;
CLR_NZV; SET_NZ8(r);
}
/* $a6 LDA indexed -**0- */
INLINE void lda_ix( void )
{
IDXBYTE(areg);
CLR_NZV; SET_NZ8(areg);
}
/* $a7 STA indexed -**0- */
INLINE void sta_ix( void )
{
CLR_NZV; SET_NZ8(areg);
INDEXED; M_WRMEM(eaddr,areg);
}
/* $a8 EORA indexed -**0- */
INLINE void eora_ix( void )
{
byte t;
IDXBYTE(t); areg ^= t;
CLR_NZV; SET_NZ8(areg);
}
/* $a9 ADCA indexed ***** */
INLINE void adca_ix( void )
{
word t,r;
IDXBYTE(t); r = areg+t+(cc&0x01);
CLR_HNZVC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
areg = r;
}
/* $aa ORA indexed -**0- */
INLINE void ora_ix( void )
{
byte t;
IDXBYTE(t); areg |= t;
CLR_NZV; SET_NZ8(areg);
}
/* $ab ADDA indexed ***** */
INLINE void adda_ix( void )
{
word t,r;
IDXBYTE(t); r = areg+t;
CLR_HNZVC; SET_FLAGS8(areg,t,r); SET_H(areg,t,r);
areg = r;
}
/* $ac CMPX indexed -**** */
INLINE void cmpx_ix( void )
{
dword r,d,b;
IDXWORD(b); d = xreg; r = d-b;
CLR_NZVC; SET_FLAGS16(d,b,r);
}
/* $ad JSR indexed ----- */
INLINE void jsr_ix( void )
{
INDEXED; PUSHWORD(pcreg);
pcreg = eaddr; change_pc(pcreg);
}
/* $ae LDS indexed -**0- */
INLINE void lds_ix( void )
{
IDXWORD(sreg);
CLR_NZV; SET_NZ16(sreg);
}
/* $af STS indexed -**0- */
INLINE void sts_ix( void )
{
CLR_NZV; SET_NZ16(sreg);
INDEXED; M_WRMEM_WORD(eaddr,sreg);
}
#if macintosh
#pragma mark ____Bx____
#endif
/* $b0 SUBA extended ?**** */
INLINE void suba_ex( void )
{
word t,r;
EXTBYTE(t); r = areg-t;
CLR_NZVC; SET_FLAGS8(areg,t,r);
areg = r;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -