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

📄 nescodes.h

📁 ESS3890+SL原代码(1*16内存)
💻 H
字号:
/* Copyright 2001, ESS Technology, Inc./* SCCSID @(#)nescodes.h	1.1 03/13/02 *//* Based on nescodes.h	1.6 02/28/02 *//* * $Log$ *//** M6502: portable 6502 emulator ****************************//**                                                         **//**                          Codes.h                        **//**                                                         **//** This file contains implementation for the main table of **//** 6502 commands. It is included from 6502.c.              **//**                                                         **//** Copyright (C) Marat Fayzullin 1996-2000                 **//**               Alex Krasivsky  1996                      **//**     You are not allowed to distribute this software     **//**     commercially. Please, notify me, if you make any    **//**     changes to this file.                               **//*************************************************************/#ifdef INES#define SUN_SUPPORTcase 0x10:     ICount -= 2;     if(R->P&NES_N_FLAG) RPC.W++; else { NES_M_JR; } break; /* BPL * REL */#ifdef SUN_SUPPORTcase 0xEF:#endifcase 0x30:     ICount -= 2;     if(R->P&NES_N_FLAG) { NES_M_JR; } else RPC.W++; break; /* BMI * REL */#ifdef SUN_SUPPORTcase 0xFB:#endifcase 0xD0:      ICount -= 2;     if(R->P&NES_Z_FLAG) RPC.W++; else { NES_M_JR; } break; /* BNE * REL */#ifdef SUN_SUPPORTcase 0xF4:case 0xFA:case 0xFC:#endifcase 0xF0:      ICount -= 2;     if(R->P&NES_Z_FLAG) { NES_M_JR; } else RPC.W++; break; /* BEQ * REL */case 0x90:     ICount -= 2;     if(R->P&NES_C_FLAG) RPC.W++; else { NES_M_JR; } break; /* BCC * REL */case 0xB0:     ICount -= 2;     if(R->P&NES_C_FLAG) { NES_M_JR; } else RPC.W++; break; /* BCS * REL */case 0x50:     ICount -= 2;     if(R->P&NES_V_FLAG) RPC.W++; else { NES_M_JR; } break; /* BVC * REL */case 0x70:     ICount -= 2;     if(R->P&NES_V_FLAG) { NES_M_JR; } else RPC.W++; break; /* BVS * REL *//* RTI */case 0x40:  ICount -= 6;  NES_M_POP(R->P);R->P|=NES_R_FLAG;NES_M_POP(RPC.B.l);NES_M_POP(RPC.B.h);  break;/* RTS */case 0x60:  ICount -= 6;  NES_M_POP(RPC.B.l);NES_M_POP(RPC.B.h);RPC.W++;break;/* JSR $ssss ABS */case 0x20:  ICount -= 6;  K.B.l=Op6502(RPC.W++);  K.B.h=Op6502(RPC.W);  NES_M_PUSH(RPC.B.h);  NES_M_PUSH(RPC.B.l);  RPC=K;break;/* JMP $ssss ABS */#ifdef SUN_SUPPORTcase 0xF7:case 0xFF:#endifcase 0x4C:   ICount -= 3;   NES_M_LDWORD(K);RPC=K;break;/* JMP ($ssss) ABDINDIR */case 0x6C:  ICount -= 5;  NES_M_LDWORD(K);  RPC.B.l=Rd6502(K.W++);  RPC.B.h=Rd6502(K.W);  break;/* BRK */case 0x00:  ICount -= 7;  RPC.W++;  NES_M_PUSH(RPC.B.h);NES_M_PUSH(RPC.B.l);  NES_M_PUSH(R->P|NES_B_FLAG);  R->P=(R->P|NES_I_FLAG)&/*~NES_D_FLAG*/0xF7;  RPC.B.l=Rd6502(0xFFFE);  RPC.B.h=Rd6502(0xFFFF);  break;/* CLI */case 0x58:  ICount -= 2;  if((R->IRequest!=NES_INT_NONE)&&(R->P&NES_I_FLAG))  {    R->AfterCLI=1;    R->IBackup=ICount;    ICount=1;  }  R->P&=/*~NES_I_FLAG*/0xFB;  break;/* PLP */case 0x28: ICount -= 4;  NES_M_POP(I);  if((R->IRequest!=NES_INT_NONE)&&((I^R->P)&~I&NES_I_FLAG))  {    R->AfterCLI=1;    R->IBackup=ICount;    ICount=1;  }  R->P=I|NES_R_FLAG;  break;case 0x08:     ICount -= 3;     NES_M_PUSH(R->P);break;               /* PHP */case 0x18:     ICount -= 2;     R->P&=/*~NES_C_FLAG*/0xFE;break;              /* CLC */case 0xB8:      ICount -= 2;     R->P&=/*~NES_V_FLAG*/0xBF;break;              /* CLV */case 0xD8:     ICount -= 2;     R->P&=/*~NES_D_FLAG*/0xF7;break;              /* CLD */case 0x38:     ICount -= 2;     R->P|=NES_C_FLAG;break;               /* SEC */case 0xF8:     ICount -= 2;     R->P|=NES_D_FLAG;break;               /* SED */case 0x78:     ICount -= 2;     R->P|=NES_I_FLAG;break;               /* SEI */case 0x48:     ICount -= 3;     NES_M_PUSH(RA);break;               /* PHA */case 0x68:      ICount -= 4;     NES_M_POP(RA);NES_M_FL(RA);break;     /* PLA */case 0x98:     ICount -= 2;     RA=RY;NES_M_FL(RA);break;       /* TYA */case 0xA8:     ICount -= 2;     RY=RA;NES_M_FL(RY);break;       /* TAY */case 0xC8:     ICount -= 2;     RY=(RY+1)&0xff;NES_M_FL(RY);break;          /* INY */case 0x88:      ICount -= 2;     RY=(RY-1)&0xff;NES_M_FL(RY);break;          /* DEY */case 0x8A:     ICount -= 2;     RA=RX;NES_M_FL(RA);break;       /* TXA */case 0xAA:     ICount -= 2;     RX=RA;NES_M_FL(RX);break;       /* TAX */case 0xE8:     ICount -= 2;     RX=(RX+1)&0xff;NES_M_FL(RX);break;          /* INX */case 0xCA:     ICount -= 2;     RX=(RX-1)&0xff;NES_M_FL(RX);break;          /* DEX */case 0xEA:     ICount -= 2;     break;                            /* NOP */case 0x9A:     ICount -= 2;     R->S=RX;break;                  /* TXS */case 0xBA:     ICount -= 2;     RX=R->S;NES_M_FL(RX);break;       /* TSX */case 0x24:     ICount -= 3;     MR_Zp(I);M_BIT(I);break;       /* BIT $ss ZP */case 0x2C:     ICount -= 4;     MR_Ab(I);M_BIT(I);break;       /* BIT $ssss ABS */case 0x05:     ICount -= 3;     MR_Zp(I);NES_M_ORA(I);break;       /* ORA $ss ZP */case 0x06:     ICount -= 5;     MM_Zp(NES_M_ASL);break;            /* ASL $ss ZP */case 0x25:     ICount -= 3;     MR_Zp(I);NES_M_AND(I);break;       /* AND $ss ZP */case 0x26:     ICount -= 5;     MM_Zp(NES_M_ROL);break;            /* ROL $ss ZP */case 0x45:     ICount -= 3;     MR_Zp(I);NES_M_EOR(I);break;       /* EOR $ss ZP */case 0x46:     ICount -= 5;     MM_Zp(NES_M_LSR);break;            /* LSR $ss ZP */case 0x65:     ICount -= 3;     MR_Zp(I);NES_M_ADC(I);break;       /* ADC $ss ZP */case 0x66:     ICount -= 5;     MM_Zp(NES_M_ROR);break;            /* ROR $ss ZP */case 0x84:     ICount -= 3;     MW_Zp(RY);break;             /* STY $ss ZP */case 0x85:     ICount -= 3;     MW_Zp(RA);break;             /* STA $ss ZP */case 0x86:     ICount -= 3;     MW_Zp(RX);break;             /* STX $ss ZP */case 0xA4:     ICount -= 3;     MR_Zp(RY);NES_M_FL(RY);break;  /* LDY $ss ZP */case 0xA5:     ICount -= 3;     MR_Zp(RA);NES_M_FL(RA);break;  /* LDA $ss ZP */case 0xA6:     ICount -= 3;     MR_Zp(RX);NES_M_FL(RX);break;  /* LDX $ss ZP */case 0xC4:     ICount -= 3;     MR_Zp(I);NES_M_CMP(RY,I);break;  /* CPY $ss ZP */case 0xC5:     ICount -= 3;     MR_Zp(I);NES_M_CMP(RA,I);break;  /* CMP $ss ZP */case 0xC6:     ICount -= 5;     MM_Zp(NES_M_DEC);break;            /* DEC $ss ZP */case 0xE4:     ICount -= 3;     MR_Zp(I);NES_M_CMP(RX,I);break;  /* CPX $ss ZP */case 0xE5:     ICount -= 3;     MR_Zp(I);NES_M_SBC(I);break;       /* SBC $ss ZP */case 0xE6:     ICount -= 5;     MM_Zp(NES_M_INC);break;            /* INC $ss ZP */case 0x0D:     ICount -= 4;     MR_Ab(I);NES_M_ORA(I);break;       /* ORA $ssss ABS */case 0x0E:     ICount -= 6;     MM_Ab(NES_M_ASL);break;            /* ASL $ssss ABS */case 0x2D:     ICount -= 4;     MR_Ab(I);NES_M_AND(I);break;       /* AND $ssss ABS */case 0x2E:     ICount -= 6;     MM_Ab(NES_M_ROL);break;            /* ROL $ssss ABS */case 0x4D:     ICount -= 4;     MR_Ab(I);NES_M_EOR(I);break;       /* EOR $ssss ABS */case 0x4E:     ICount -= 6;     MM_Ab(NES_M_LSR);break;            /* LSR $ssss ABS */case 0x6D:     ICount -= 4;     MR_Ab(I);NES_M_ADC(I);break;       /* ADC $ssss ABS */case 0x6E:     ICount -= 6;     MM_Ab(NES_M_ROR);break;            /* ROR $ssss ABS */case 0x8C:     ICount -= 4;     MW_Ab(RY);break;             /* STY $ssss ABS */case 0x8D:     ICount -= 4;     MW_Ab(RA);break;             /* STA $ssss ABS */case 0x8E:     ICount -= 4;     MW_Ab(RX);break;             /* STX $ssss ABS */case 0xAC:     ICount -= 4;     MR_Ab(RY);NES_M_FL(RY);break;  /* LDY $ssss ABS */case 0xAD:     ICount -= 4;     MR_Ab(RA);NES_M_FL(RA);break;  /* LDA $ssss ABS */case 0xAE:     ICount -= 4;     MR_Ab(RX);NES_M_FL(RX);break;  /* LDX $ssss ABS */case 0xCC:     ICount -= 4;     MR_Ab(I);NES_M_CMP(RY,I);break;  /* CPY $ssss ABS */case 0xCD:     ICount -= 4;     MR_Ab(I);NES_M_CMP(RA,I);break;  /* CMP $ssss ABS */case 0xCE:     ICount -= 4;     MM_Ab(NES_M_DEC);break;            /* DEC $ssss ABS */case 0xEC:     ICount -= 5;     MR_Ab(I);NES_M_CMP(RX,I);break;  /* CPX $ssss ABS */case 0xED:     ICount -= 5;     MR_Ab(I);NES_M_SBC(I);break;       /* SBC $ssss ABS */case 0xEE:     ICount -= 7;     MM_Ab(NES_M_INC);break;            /* INC $ssss ABS */case 0x09:     ICount -= 2;     MR_Im(I);NES_M_ORA(I);break;       /* ORA #$ss IMM */case 0x29:     ICount -= 2;     MR_Im(I);NES_M_AND(I);break;       /* AND #$ss IMM */case 0x49:     ICount -= 2;     MR_Im(I);NES_M_EOR(I);break;       /* EOR #$ss IMM */case 0x69:     ICount -= 2;     MR_Im(I);NES_M_ADC(I);break;       /* ADC #$ss IMM */case 0xA0:     ICount -= 2;     MR_Im(RY);NES_M_FL(RY);break;  /* LDY #$ss IMM */case 0xA2:     ICount -= 2;     MR_Im(RX);NES_M_FL(RX);break;  /* LDX #$ss IMM */case 0xA9:     ICount -= 2;     MR_Im(RA);NES_M_FL(RA);break;  /* LDA #$ss IMM */case 0xC0:     ICount -= 2;     MR_Im(I);NES_M_CMP(RY,I);break;  /* CPY #$ss IMM */case 0xC9:     ICount -= 2;     MR_Im(I);NES_M_CMP(RA,I);break;  /* CMP #$ss IMM */case 0xE0:     ICount -= 2;     MR_Im(I);NES_M_CMP(RX,I);break;  /* CPX #$ss IMM */case 0xE9:     ICount -= 2;     MR_Im(I);NES_M_SBC(I);break;       /* SBC #$ss IMM */case 0x15:     ICount -= 4;     MR_Zx(I);NES_M_ORA(I);break;       /* ORA $ss,x ZP,x */case 0x16:     ICount -= 6;     MM_Zx(NES_M_ASL);break;            /* ASL $ss,x ZP,x */case 0x35:     ICount -= 4;     MR_Zx(I);NES_M_AND(I);break;       /* AND $ss,x ZP,x */case 0x36:     ICount -= 6;     MM_Zx(NES_M_ROL);break;            /* ROL $ss,x ZP,x */case 0x55:     ICount -= 4;     MR_Zx(I);NES_M_EOR(I);break;       /* EOR $ss,x ZP,x */case 0x56:     ICount -= 6;     MM_Zx(NES_M_LSR);break;            /* LSR $ss,x ZP,x */case 0x75:     ICount -= 4;     MR_Zx(I);NES_M_ADC(I);break;       /* ADC $ss,x ZP,x */case 0x76:     ICount -= 6;     MM_Zx(NES_M_ROR);break;            /* ROR $ss,x ZP,x */case 0x94:     ICount -= 4;     MW_Zx(RY);break;             /* STY $ss,x ZP,x */case 0x95:     ICount -= 4;     MW_Zx(RA);break;             /* STA $ss,x ZP,x */case 0x96:     ICount -= 4;     MW_Zy(RX);break;             /* STX $ss,y ZP,y */case 0xB4:     ICount -= 4;     MR_Zx(RY);NES_M_FL(RY);break;  /* LDY $ss,x ZP,x */case 0xB5:     ICount -= 4;     MR_Zx(RA);NES_M_FL(RA);break;  /* LDA $ss,x ZP,x */case 0xB6:     ICount -= 4;     MR_Zy(RX);NES_M_FL(RX);break;  /* LDX $ss,y ZP,y */case 0xD5:     ICount -= 4;     MR_Zx(I);NES_M_CMP(RA,I);break;  /* CMP $ss,x ZP,x */case 0xD6:     ICount -= 6;     MM_Zx(NES_M_DEC);break;            /* DEC $ss,x ZP,x */case 0xF5:     ICount -= 4;     MR_Zx(I);NES_M_SBC(I);break;       /* SBC $ss,x ZP,x */case 0xF6:     ICount -= 6;     MM_Zx(NES_M_INC);break;            /* INC $ss,x ZP,x */case 0x19:     ICount -= 4;     MR_Ay(I);NES_M_ORA(I);break;       /* ORA $ssss,y ABS,y */case 0x1D:     ICount -= 5;     MR_Ax(I);NES_M_ORA(I);break;       /* ORA $ssss,x ABS,x */case 0x1E:     ICount -= 7;     MM_Ax(NES_M_ASL);break;            /* ASL $ssss,x ABS,x */case 0x39:     ICount -= 4;     MR_Ay(I);NES_M_AND(I);break;       /* AND $ssss,y ABS,y */case 0x3D:     ICount -= 5;     MR_Ax(I);NES_M_AND(I);break;       /* AND $ssss,x ABS,x */case 0x3E:     ICount -= 7;     MM_Ax(NES_M_ROL);break;            /* ROL $ssss,x ABS,x */case 0x59:     ICount -= 4;     MR_Ay(I);NES_M_EOR(I);break;       /* EOR $ssss,y ABS,y */case 0x5D:     ICount -= 5;     MR_Ax(I);NES_M_EOR(I);break;       /* EOR $ssss,x ABS,x */case 0x5E:     ICount -= 7;     MM_Ax(NES_M_LSR);break;            /* LSR $ssss,x ABS,x */case 0x79:     ICount -= 4;     MR_Ay(I);NES_M_ADC(I);break;       /* ADC $ssss,y ABS,y */case 0x7D:     ICount -= 5;     MR_Ax(I);NES_M_ADC(I);break;       /* ADC $ssss,x ABS,x */case 0x7E:     ICount -= 7;     MM_Ax(NES_M_ROR);break;            /* ROR $ssss,x ABS,x */case 0x99:     ICount -= 5;     MW_Ay(RA);break;             /* STA $ssss,y ABS,y */case 0x9D:     ICount -= 5;     MW_Ax(RA);break;             /* STA $ssss,x ABS,x */case 0xB9:     ICount -= 4;     MR_Ay(RA);NES_M_FL(RA);break;  /* LDA $ssss,y ABS,y */case 0xBC:     ICount -= 4;     MR_Ax(RY);NES_M_FL(RY);break;  /* LDY $ssss,x ABS,x */case 0xBD:     ICount -= 4;     MR_Ax(RA);NES_M_FL(RA);break;  /* LDA $ssss,x ABS,x */case 0xBE:     ICount -= 4;     MR_Ay(RX);NES_M_FL(RX);break;  /* LDX $ssss,y ABS,y */case 0xD9:     ICount -= 4;     MR_Ay(I);NES_M_CMP(RA,I);break;  /* CMP $ssss,y ABS,y */case 0xDD:     ICount -= 5;     MR_Ax(I);NES_M_CMP(RA,I);break;  /* CMP $ssss,x ABS,x */case 0xDE:     ICount -= 7;     MM_Ax(NES_M_DEC);break;            /* DEC $ssss,x ABS,x */case 0xF9:     ICount -= 4;     MR_Ay(I);NES_M_SBC(I);break;       /* SBC $ssss,y ABS,y */case 0xFD:     ICount -= 5;     MR_Ax(I);NES_M_SBC(I);break;       /* SBC $ssss,x ABS,x */case 0xFE:     ICount -= 9;     MM_Ax(NES_M_INC);break;            /* INC $ssss,x ABS,x */case 0x01:     ICount -= 6;     MR_Ix(I);NES_M_ORA(I);break;       /* ORA ($ss,x) INDEXINDIR */case 0x11:     ICount -= 5;     MR_Iy(I);NES_M_ORA(I);break;       /* ORA ($ss),y INDIRINDEX */case 0x21:     ICount -= 6;     MR_Ix(I);NES_M_AND(I);break;       /* AND ($ss,x) INDEXINDIR */case 0x31:     ICount -= 5;     MR_Iy(I);NES_M_AND(I);break;       /* AND ($ss),y INDIRINDEX */case 0x41:     ICount -= 6;     MR_Ix(I);NES_M_EOR(I);break;       /* EOR ($ss,x) INDEXINDIR */case 0x51:     ICount -= 5;     MR_Iy(I);NES_M_EOR(I);break;       /* EOR ($ss),y INDIRINDEX */case 0x61:     ICount -= 6;     MR_Ix(I);NES_M_ADC(I);break;       /* ADC ($ss,x) INDEXINDIR */case 0x71:     ICount -= 5;     MR_Iy(I);NES_M_ADC(I);break;       /* ADC ($ss),y INDIRINDEX */case 0x81:     ICount -= 6;     MW_Ix(RA);break;             /* STA ($ss,x) INDEXINDIR */case 0x91:     ICount -= 6;     MW_Iy(RA);break;             /* STA ($ss),y INDIRINDEX */case 0xA1:     ICount -= 6;     MR_Ix(RA);NES_M_FL(RA);break;  /* LDA ($ss,x) INDEXINDIR */case 0xB1:     ICount -= 5;     MR_Iy(RA);NES_M_FL(RA);break;  /* LDA ($ss),y INDIRINDEX */case 0xC1:     ICount -= 6;     MR_Ix(I);NES_M_CMP(RA,I);break;  /* CMP ($ss,x) INDEXINDIR */case 0xD1:     ICount -= 5;     MR_Iy(I);NES_M_CMP(RA,I);break;  /* CMP ($ss),y INDIRINDEX */case 0xE1:     ICount -= 6;     MR_Ix(I);NES_M_SBC(I);break;       /* SBC ($ss,x) INDEXINDIR */case 0xF1:     ICount -= 5;     MR_Iy(I);NES_M_SBC(I);break;       /* SBC ($ss),y INDIRINDEX */case 0x0A:     ICount -= 2;     NES_M_ASL(RA);break;             /* ASL a ACC */case 0x2A:     ICount -= 2;     NES_M_ROL(RA);break;             /* ROL a ACC */case 0x4A:     ICount -= 2;     NES_M_LSR(RA);break;             /* LSR a ACC */case 0x6A:     ICount -= 2;     NES_M_ROR(RA);break;             /* ROR a ACC */default:  /* Try to execute a patch function. If it fails, treat */  /* the opcode as undefined.                            */  break;#endif /*INES */

⌨️ 快捷键说明

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