6502 CPU の研究部屋

Z80 の 研究部屋M6809 の 研究部屋HuC6280 CPU の 研究部屋と同様に、 6502 CPU について調査したデータを置いておきます。

6502 CPU と言っていますが、まずはファミコンの CPU (RP2A03G) を調査します。

RP2A03G には D フラグが 1 の場合の ADC と SBC が存在しないため、調査していません。

トップページへ戻る


目次

  1. 信号線の調査データ [Nov.10 2019]
  2. [IMPLIED] [Nov.10 2019]
  3. [ACCUMULATOR] [Nov.10 2019]
  4. [IMMEDIATE] [Nov.10 2019]
  5. [RELATIVE] [Nov.10 2019]
  6. [ZEROPAGE] [Nov.10 2019]
  7. [ABSOLUTE] [Nov.10 2019]
  8. [ZEROPAGE INDIRECT] [Nov.10 2019]
  9. [JMP INDIR] [Nov.10 2019]
  10. [INTERRUPT] [Nov.10 2019]
  11. [BAD NOP] (調査次第追加)
  12. [その他調査データ] (調査次第追加)

トップページへ戻る


信号線の調査データ [Nov.10 2019]

RP2A03G のマスタークロック 1 周期経過ごとに制御信号線やバスの値を読んで記録したデータです。

ほぼ実用動作の周波数でデータを取ったので、Φ2 の変化からアドレスやデータが変化するまでに少し遅延がありますが、特に問題はないと思います。

マスタークロックの 1 周期ごとにデータを取得しているため、CPU の 1 サイクルが 12 行になっています。

例として、NOP 命令実行時の信号線の変化を次に掲載します。

                 _ ___ ___
Phi2 Addr Data R/W NMI IRQ
 0   0210  EA   1   1   1 ; #1 fetch instruction (NOP)
 0   0210  00   1   1   1
 0   0210  00   1   1   1
 0   0210  00   1   1   1
 1   0210  00   1   1   1
 1   0210  EA   1   1   1
 1   0210  EA   1   1   1
 1   0210  EA   1   1   1
 1   0210  EA   1   1   1
 1   0210  EA   1   1   1
 1   0210  EA   1   1   1
 1   0210  EA   1   1   1

 0   0210  EA   1   1   1 ; #2
 0   0210  00   1   1   1 ; NOP のような 1 バイト命令も 2 バイト目を読む (値は捨てられる)
 0   0211  00   1   1   1
 0   0211  00   1   1   1
 1   0211  00   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 (ここまでで NOP の実行は完了)

 0   0211  4C   1   1   1 ; fetch next instruction
 0   0211  00   1   1   1
 0   0211  00   1   1   1
 0   0211  00   1   1   1
 1   0211  00   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1
 1   0211  4C   1   1   1

NOP 命令は 2 クロックサイクルで完了する命令です。なので上のかたまり(12 行のブロック) 2 つで完了します。

3 つめのブロックは次の命令をフェッチしていることを確認するための参考情報です。

12 行のブロックの最初の 4 行はアドレス変化期間 (Φ2=L 期間)、後の 8 行はデータバスアクセス期間(Φ2=H 期間)です。

トップページへ戻る


[IMPLIED]

[RP2A03G]
BRK_IMPLIED_00_7cycles.txt
CLC_IMPLIED_18_2cycles.txt
CLD_IMPLIED_D8_2cycles.txt
CLI_IMPLIED_58_2cycles.txt
CLV_IMPLIED_B8_2cycles.txt
DEX_IMPLIED_CA_2cycles.txt
DEY_IMPLIED_88_2cycles.txt
INX_IMPLIED_E8_2cycles.txt
INY_IMPLIED_C8_2cycles.txt
NOP_IMPLIED_EA_2cycles.txt
PHA_IMPLIED_48_3cycles.txt
PHP_IMPLIED_08_3cycles.txt
PLA_IMPLIED_68_4cycles.txt
PLP_IMPLIED_28_4cycles.txt
RTI_IMPLIED_40_6cycles.txt
RTS_IMPLIED_60_6cycles.txt
SEC_IMPLIED_38_2cycles.txt
SED_IMPLIED_F8_2cycles.txt
SEI_IMPLIED_78_2cycles.txt
TAX_IMPLIED_AA_2cycles.txt
TAY_IMPLIED_A8_2cycles.txt
TSX_IMPLIED_BA_2cycles.txt
TXA_IMPLIED_8A_2cycles.txt
TXS_IMPLIED_9A_2cycles.txt
TYA_IMPLIED_98_2cycles.txt

目次へ戻る


[ACCUMULATOR]

[RP2A03G]
ASL_ACCUM_0A_2cycles.txt
LSR_ACCUM_4A_2cycles.txt
ROL_ACCUM_2A_2cycles.txt
ROR_ACCUM_6A_2cycles.txt

目次へ戻る


[IMMEDIATE]

[RP2A03G]
ADC_IMM_69_AA_2cycles.txt
AND_IMM_29_AA_2cycles.txt
CMP_IMM_C9_AA_2cycles.txt
CPX_IMM_E0_AA_2cycles.txt
CPY_IMM_C0_AA_2cycles.txt
EOR_IMM_49_AA_2cycles.txt
LDA_IMM_A9_AA_2cycles.txt
LDX_IMM_A2_AA_2cycles.txt
LDY_IMM_A0_AA_2cycles.txt
ORA_IMM_09_AA_2cycles.txt
SBC_IMM_E9_AA_2cycles.txt

目次へ戻る


[RELATIVE]

2cycles は分岐なし(FALSE)
3cycles は分岐あり・ページ境界越えなし(TRUE)
4cycles は分岐あり・ページ境界越えあり(TRUE_PBC) (PBC: Page Boundary Crossing)

[RP2A03G]
BCC_FALSE_REL_90_FE_2cycles.txt
BCS_FALSE_REL_B0_FE_2cycles.txt
BEQ_FALSE_REL_F0_FE_2cycles.txt
BMI_FALSE_REL_30_FE_2cycles.txt
BNE_FALSE_REL_D0_FE_2cycles.txt
BPL_FALSE_REL_10_FE_2cycles.txt
BVC_FALSE_REL_50_FE_2cycles.txt
BVS_FALSE_REL_70_FE_2cycles.txt
BCC_TRUE_REL_90_55_3cycles.txt
BCS_TRUE_REL_B0_55_3cycles.txt
BEQ_TRUE_REL_F0_55_3cycles.txt
BMI_TRUE_REL_30_55_3cycles.txt
BNE_TRUE_REL_D0_55_3cycles.txt
BPL_TRUE_REL_10_55_3cycles.txt
BVC_TRUE_REL_50_55_3cycles.txt
BVS_TRUE_REL_70_55_3cycles.txt
BCC_TRUE_PBC_REL_90_ED_4cycles.txt
BCS_TRUE_PBC_REL_B0_ED_4cycles.txt
BEQ_TRUE_PBC_REL_F0_ED_4cycles.txt
BMI_TRUE_PBC_REL_30_ED_4cycles.txt
BNE_TRUE_PBC_REL_D0_ED_4cycles.txt
BPL_TRUE_PBC_REL_10_ED_4cycles.txt
BVC_TRUE_PBC_REL_50_ED_4cycles.txt
BVS_TRUE_PBC_REL_70_ED_4cycles.txt

目次へ戻る


[ZEROPAGE]

Undocumented な命令も含めていますが間違いがあるかもしれません。
[RP2A03G]
ADC_ZP_65_AA_3cycles.txt
AND_ZP_25_AA_3cycles.txt
ASL_ZP_06_AA_5cycles.txt
BIT_ZP_24_AA_3cycles.txt
CMP_ZP_C5_AA_3cycles.txt
CPX_ZP_E4_AA_3cycles.txt
CPY_ZP_C4_AA_3cycles.txt
DEC_ZP_C6_AA_5cycles.txt
EOR_ZP_45_AA_3cycles.txt
INC_ZP_E6_AA_5cycles.txt
ISB_ZP_E7_AA_5cycles.txt
LDA_ZP_A5_AA_3cycles.txt
LDX_ZP_A6_AA_3cycles.txt
LDY_ZP_A4_AA_3cycles.txt
LSR_ZP_46_AA_5cycles.txt
ORA_ZP_05_AA_3cycles.txt
ROL_ZP_26_AA_5cycles.txt
ROR_ZP_66_AA_5cycles.txt
RRA_ZP_67_AA_5cycles.txt
SBC_ZP_E5_AA_3cycles.txt
SLO_ZP_07_AA_5cycles.txt
SRE_ZP_47_AA_5cycles.txt
STA_ZP_85_AA_3cycles.txt
STX_ZP_86_AA_3cycles.txt
STY_ZP_84_AA_3cycles.txt
ADC_ZPX_75_AA_4cycles.txt
AND_ZPX_35_AA_4cycles.txt
ASL_ZPX_16_AA_6cycles.txt
CMP_ZPX_D5_AA_4cycles.txt
DEC_ZPX_D6_AA_6cycles.txt
EOR_ZPX_55_AA_4cycles.txt
INC_ZPX_F6_AA_6cycles.txt
ISB_ZPX_F7_AA_6cycles.txt
LDA_ZPX_B5_AA_4cycles.txt
LDY_ZPX_B4_AA_4cycles.txt
LSR_ZPX_56_AA_6cycles.txt
ORA_ZPX_15_AA_4cycles.txt
ROL_ZPX_36_AA_6cycles.txt
ROR_ZPX_76_AA_6cycles.txt
RRA_ZPX_77_AA_6cycles.txt
SBC_ZPX_F5_AA_4cycles.txt
SLO_ZPX_17_AA_6cycles.txt
SRE_ZPX_57_AA_6cycles.txt
STA_ZPX_95_AA_4cycles.txt
STY_ZPX_94_AA_4cycles.txt
LDX_ZPY_B6_AA_4cycles.txt
STX_ZPY_96_AA_4cycles.txt

目次へ戻る


[ABSOLUTE]

Undocumented な命令も含めていますが間違いがあるかもしれません。
PBC: Page Boundary Crossing → 1 サイクル追加
[RP2A03G]
ADC_ABS_6D_55_AA_4cycles.txt
AND_ABS_2D_55_AA_4cycles.txt
ASL_ABS_0E_55_AA_6cycles.txt
BIT_ABS_2C_55_AA_4cycles.txt
CMP_ABS_CD_55_AA_4cycles.txt
CPX_ABS_EC_55_AA_4cycles.txt
CPY_ABS_CC_55_AA_4cycles.txt
DEC_ABS_CE_55_AA_6cycles.txt
EOR_ABS_4D_55_AA_4cycles.txt
INC_ABS_EE_55_AA_6cycles.txt
ISB_ABS_EF_55_AA_6cycles.txt
JMP_ABS_4C_55_AA_3cycles.txt
JSR_ABS_20_55_AA_6cycles.txt
LDA_ABS_AD_55_AA_4cycles.txt
LDX_ABS_AE_55_AA_4cycles.txt
LDY_ABS_AC_55_AA_4cycles.txt
LSR_ABS_4E_55_AA_6cycles.txt
ORA_ABS_0D_55_AA_4cycles.txt
ROL_ABS_2E_55_AA_6cycles.txt
ROR_ABS_6E_55_AA_6cycles.txt
RRA_ABS_6F_55_AA_6cycles.txt
SBC_ABS_ED_55_AA_4cycles.txt
SLO_ABS_0F_55_AA_6cycles.txt
SRE_ABS_4F_55_AA_6cycles.txt
STA_ABS_8D_55_AA_4cycles.txt
STX_ABS_8E_55_AA_4cycles.txt
STY_ABS_8C_55_AA_4cycles.txt
ADC_ABSX_7D_55_AA_4cycles.txt
AND_ABSX_3D_55_AA_4cycles.txt
ASL_ABSX_1E_55_AA_7cycles.txt
CMP_ABSX_DD_55_AA_4cycles.txt
DEC_ABSX_DE_55_AA_7cycles.txt
EOR_ABSX_5D_55_AA_4cycles.txt
INC_ABSX_FE_55_AA_7cycles.txt
ISB_ABSX_FF_55_AA_7cycles.txt
LDA_ABSX_BD_55_AA_4cycles.txt
LDY_ABSX_BC_55_AA_4cycles.txt
LSR_ABSX_5E_55_AA_7cycles.txt
ORA_ABSX_1D_55_AA_4cycles.txt
ROL_ABSX_3E_55_AA_7cycles.txt
ROR_ABSX_7E_55_AA_7cycles.txt
RRA_ABSX_7F_55_AA_7cycles.txt
SBC_ABSX_FD_55_AA_4cycles.txt
SHA_ABSX_9F_55_AA_6cycles.txt
SLO_ABSX_1F_55_AA_7cycles.txt
SRE_ABSX_5F_55_AA_7cycles.txt
STA_ABSX_9D_55_AA_5cycles.txt
ADC_PBC_ABSX_7D_55_AA_5cycles.txt
AND_PBC_ABSX_3D_55_AA_5cycles.txt
CMP_PBC_ABSX_DD_55_AA_5cycles.txt
EOR_PBC_ABSX_5D_55_AA_5cycles.txt
LDA_PBC_ABSX_BD_55_AA_5cycles.txt
LDY_PBC_ABSX_BC_55_AA_5cycles.txt
ORA_PBC_ABSX_1D_55_AA_5cycles.txt
SBC_PBC_ABSX_FD_55_AA_5cycles.txt
ADC_ABSY_79_55_AA_4cycles.txt
AND_ABSY_39_55_AA_4cycles.txt
CMP_ABSY_D9_55_AA_4cycles.txt
EOR_ABSY_59_55_AA_4cycles.txt
ISB_ABSY_FB_55_AA_7cycles.txt
LDA_ABSY_B9_55_AA_4cycles.txt
LDX_ABSY_BE_55_AA_4cycles.txt
ORA_ABSY_19_55_AA_4cycles.txt
RRA_ABSY_7B_55_AA_7cycles.txt
SBC_ABSY_F9_55_AA_4cycles.txt
SLO_ABSY_1B_55_AA_7cycles.txt
SRE_ABSY_5B_55_AA_7cycles.txt
STA_ABSY_99_55_AA_5cycles.txt
ADC_PBC_ABSY_79_55_AA_5cycles.txt
AND_PBC_ABSY_39_55_AA_5cycles.txt
CMP_PBC_ABSY_D9_55_AA_5cycles.txt
EOR_PBC_ABSY_59_55_AA_5cycles.txt
LDA_PBC_ABSY_B9_55_AA_5cycles.txt
LDX_PBC_ABSY_BE_55_AA_5cycles.txt
ORA_PBC_ABSY_19_55_AA_5cycles.txt
SBC_PBC_ABSY_F9_55_AA_5cycles.txt

目次へ戻る


[ZEROPAGE_INDIRECT]

Undocumented な命令も含めていますが間違いがあるかもしれません。
PBC: Page Boundary Crossing → 1 サイクル追加
[RP2A03G]
ADC_INDX_61_AA_6cycles.txt
AND_INDX_21_AA_6cycles.txt
CMP_INDX_C1_AA_6cycles.txt
EOR_INDX_41_AA_6cycles.txt
ISB_INDX_E3_AA_8cycles.txt
LDA_INDX_A1_AA_6cycles.txt
ORA_INDX_01_AA_6cycles.txt
RRA_INDX_63_AA_8cycles.txt
SBC_INDX_E1_AA_6cycles.txt
SLO_INDX_03_AA_8cycles.txt
SRE_INDX_43_AA_8cycles.txt
STA_INDX_81_AA_6cycles.txt
ADC_INDY_71_AA_5cycles.txt
AND_INDY_31_AA_5cycles.txt
CMP_INDY_D1_AA_5cycles.txt
EOR_INDY_51_AA_5cycles.txt
ISB_INDY_F3_AA_8cycles.txt
LDA_INDY_B1_AA_5cycles.txt
ORA_INDY_11_AA_5cycles.txt
RRA_INDY_73_AA_8cycles.txt
SBC_INDY_F1_AA_5cycles.txt
SHA_INDY_93_AA_8cycles.txt
SLO_INDY_13_AA_8cycles.txt
SRE_INDY_53_AA_8cycles.txt
STA_INDY_91_AA_6cycles.txt
ADC_PBC_INDY_71_AA_6cycles.txt
AND_PBC_INDY_31_AA_6cycles.txt
CMP_PBC_INDY_D1_AA_6cycles.txt
EOR_PBC_INDY_51_AA_6cycles.txt
LDA_PBC_INDY_B1_AA_6cycles.txt
ORA_PBC_INDY_11_AA_6cycles.txt
SBC_PBC_INDY_F1_AA_6cycles.txt

目次へ戻る


[JMP_INDIR]

JMP_INDIR_6C_55_AA_5cycles.txt

目次へ戻る


[INTERRUPT]

[RP2A03G]
RESET_8cycles.txt
NMI_7cycles.txt
IRQ_7cycles.txt

目次へ戻る


[BAD NOP]

[RP2A03G]
(調査次第追加)

目次へ戻る


[その他調査データ]

[RP2A03G]
(調査次第追加)

目次へ戻る


トップページへ戻る

(C) Ki 2019

inserted by FC2 system