Hi!
Chromatix wrote:
Hmm. Cross-checking the 'zpx' entries in my 65c02 timing table did reveal several places where I'd neglected to add a dead cycle.
But now I have 4 cycles too many. Given that I'm specifically targeting a 65c02, is that consistent with the expected difference from an NMOS 6502? I notice that the timing of decimal-mode arithmetic is not checked, and that is one place where a difference *would* exist.
This is a profile from my simulator at
https://github.com/dmsc/mini65-sim , showing the cycles spent at each address, you can use that to check your trace:
Code:
CYCLES PC INSTRUCTION ; BYTES
6 0101 : RTS ; [60]
2 1000 : LDX #$FF ; [A2][FF]
2 1002 : TXS ; [9A]
2 1003 : LDX #$01 ; [A2][01]
3 1005 : STX $17 ; [86][17]
3 1007 : STX $18 ; [86][18]
3 1009 : STX $16 ; [86][16]
2 100B : TXA ; [8A]
2 100C : TAY ; [A8]
2 100D : TYA ; [98]
2 100E : TSX ; [BA]
2 100F : TAX ; [AA]
2 1010 : LDX #$00 ; [A2][00]
2 1012 : LDY #$00 ; [A0][00]
6 1014 : ORA ($17,X) ; [01][17]
3 1016 : ORA $17 ; [05][17]
2 1018 : ORA #$00 ; [09][00]
4 101A : ORA $1717 ; [0D][17][17]
5 101D : ORA ($17),Y ; [11][17]
4 101F : ORA $17,X ; [15][17]
4 1021 : ORA $1717,X ; [1D][17][17]
4 1024 : ORA $1717,Y ; [19][17][17]
2 1027 : DEX ; [CA]
2 1028 : DEY ; [88]
6 1029 : ORA ($17,X) ; [01][17]
6 102B : ORA ($17),Y ; [11][17]
4 102D : ORA $17,X ; [15][17]
5 102F : ORA $1717,X ; [1D][17][17]
5 1032 : ORA $1717,Y ; [19][17][17]
2 1035 : INX ; [E8]
2 1036 : INY ; [C8]
6 1037 : AND ($17,X) ; [21][17]
3 1039 : AND $17 ; [25][17]
2 103B : AND #$00 ; [29][00]
4 103D : AND $1717 ; [2D][17][17]
5 1040 : AND ($17),Y ; [31][17]
4 1042 : AND $17,X ; [35][17]
4 1044 : AND $1717,X ; [3D][17][17]
4 1047 : AND $1717,Y ; [39][17][17]
2 104A : DEX ; [CA]
2 104B : DEY ; [88]
6 104C : AND ($17,X) ; [21][17]
6 104E : AND ($17),Y ; [31][17]
4 1050 : AND $17,X ; [35][17]
5 1052 : AND $1717,X ; [3D][17][17]
5 1055 : AND $1717,Y ; [39][17][17]
2 1058 : LDX #$00 ; [A2][00]
2 105A : LDY #$00 ; [A0][00]
6 105C : EOR ($17,X) ; [41][17]
3 105E : EOR $17 ; [45][17]
2 1060 : EOR #$00 ; [49][00]
4 1062 : EOR $1717 ; [4D][17][17]
5 1065 : EOR ($17),Y ; [51][17]
4 1067 : EOR $17,X ; [55][17]
4 1069 : EOR $1717,X ; [5D][17][17]
4 106C : EOR $1717,Y ; [59][17][17]
2 106F : DEX ; [CA]
2 1070 : DEY ; [88]
6 1071 : EOR ($17,X) ; [41][17]
6 1073 : EOR ($17),Y ; [51][17]
4 1075 : EOR $17,X ; [55][17]
5 1077 : EOR $1717,X ; [5D][17][17]
5 107A : EOR $1717,Y ; [59][17][17]
2 107D : LDX #$00 ; [A2][00]
2 107F : LDY #$00 ; [A0][00]
6 1081 : ADC ($17,X) ; [61][17]
3 1083 : ADC $17 ; [65][17]
2 1085 : ADC #$00 ; [69][00]
4 1087 : ADC $1717 ; [6D][17][17]
5 108A : ADC ($17),Y ; [71][17]
4 108C : ADC $17,X ; [75][17]
4 108E : ADC $1717,X ; [7D][17][17]
4 1091 : ADC $1717,Y ; [79][17][17]
2 1094 : DEX ; [CA]
2 1095 : DEY ; [88]
6 1096 : ADC ($17,X) ; [61][17]
6 1098 : ADC ($17),Y ; [71][17]
4 109A : ADC $17,X ; [75][17]
5 109C : ADC $1717,X ; [7D][17][17]
5 109F : ADC $1717,Y ; [79][17][17]
2 10A2 : LDX #$00 ; [A2][00]
2 10A4 : LDY #$00 ; [A0][00]
2 10A6 : LDA #$01 ; [A9][01]
6 10A8 : STA ($17,X) ; [81][17]
3 10AA : STA $17 ; [85][17]
4 10AC : STA $1717 ; [8D][17][17]
6 10AF : STA ($17),Y ; [91][17]
4 10B1 : STA $17,X ; [95][17]
5 10B3 : STA $1717,X ; [9D][17][17]
5 10B6 : STA $1717,Y ; [99][17][17]
2 10B9 : DEX ; [CA]
2 10BA : DEY ; [88]
6 10BB : STA ($17,X) ; [81][17]
6 10BD : STA ($17),Y ; [91][17]
4 10BF : STA $17,X ; [95][17]
5 10C1 : STA $1717,X ; [9D][17][17]
5 10C4 : STA $1717,Y ; [99][17][17]
2 10C7 : LDX #$00 ; [A2][00]
2 10C9 : LDY #$00 ; [A0][00]
6 10CB : LDA ($17,X) ; [A1][17]
3 10CD : LDA $17 ; [A5][17]
2 10CF : LDA #$00 ; [A9][00]
4 10D1 : LDA $1717 ; [AD][17][17]
5 10D4 : LDA ($17),Y ; [B1][17]
4 10D6 : LDA $17,X ; [B5][17]
4 10D8 : LDA $1717,X ; [BD][17][17]
4 10DB : LDA $1717,Y ; [B9][17][17]
2 10DE : DEX ; [CA]
2 10DF : DEY ; [88]
6 10E0 : LDA ($17,X) ; [A1][17]
6 10E2 : LDA ($17),Y ; [B1][17]
4 10E4 : LDA $17,X ; [B5][17]
5 10E6 : LDA $1717,X ; [BD][17][17]
5 10E9 : LDA $1717,Y ; [B9][17][17]
2 10EC : LDX #$00 ; [A2][00]
2 10EE : LDY #$00 ; [A0][00]
6 10F0 : CMP ($17,X) ; [C1][17]
3 10F2 : CMP $17 ; [C5][17]
2 10F4 : CMP #$00 ; [C9][00]
4 10F6 : CMP $1717 ; [CD][17][17]
5 10F9 : CMP ($17),Y ; [D1][17]
4 10FB : CMP $17,X ; [D5][17]
4 10FD : CMP $1717,X ; [DD][17][17]
4 1100 : CMP $1717,Y ; [D9][17][17]
2 1103 : DEX ; [CA]
2 1104 : DEY ; [88]
6 1105 : CMP ($17,X) ; [C1][17]
6 1107 : CMP ($17),Y ; [D1][17]
4 1109 : CMP $17,X ; [D5][17]
5 110B : CMP $1717,X ; [DD][17][17]
5 110E : CMP $1717,Y ; [D9][17][17]
2 1111 : LDX #$00 ; [A2][00]
2 1113 : LDY #$00 ; [A0][00]
6 1115 : SBC ($17,X) ; [E1][17]
3 1117 : SBC $17 ; [E5][17]
2 1119 : SBC #$00 ; [E9][00]
4 111B : SBC $1717 ; [ED][17][17]
5 111E : SBC ($17),Y ; [F1][17]
4 1120 : SBC $17,X ; [F5][17]
4 1122 : SBC $1717,X ; [FD][17][17]
4 1125 : SBC $1717,Y ; [F9][17][17]
2 1128 : DEX ; [CA]
2 1129 : DEY ; [88]
6 112A : SBC ($17,X) ; [E1][17]
6 112C : SBC ($17),Y ; [F1][17]
4 112E : SBC $17,X ; [F5][17]
5 1130 : SBC $1717,X ; [FD][17][17]
5 1133 : SBC $1717,Y ; [F9][17][17]
2 1136 : LDX #$00 ; [A2][00]
5 1138 : ASL $17 ; [06][17]
5 113A : LSR $17 ; [46][17]
6 113C : ASL $1717 ; [0E][17][17]
6 113F : LSR $1717 ; [4E][17][17]
6 1142 : ASL $17,X ; [16][17]
6 1144 : LSR $17,X ; [56][17]
7 1146 : ASL $1717,X ; [1E][17][17]
7 1149 : LSR $1717,X ; [5E][17][17]
2 114C : DEX ; [CA]
6 114D : ASL $17,X ; [16][17]
6 114F : LSR $17,X ; [56][17]
7 1151 : ASL $1717,X ; [1E][17][17]
7 1154 : LSR $1717,X ; [5E][17][17]
2 1157 : LDX #$00 ; [A2][00]
5 1159 : ROL $17 ; [26][17]
5 115B : ROR $17 ; [66][17]
6 115D : ROL $1717 ; [2E][17][17]
6 1160 : ROR $1717 ; [6E][17][17]
6 1163 : ROL $17,X ; [36][17]
6 1165 : ROR $17,X ; [76][17]
7 1167 : ROL $1717,X ; [3E][17][17]
7 116A : ROR $1717,X ; [7E][17][17]
2 116D : DEX ; [CA]
6 116E : ROL $17,X ; [36][17]
6 1170 : ROR $17,X ; [76][17]
7 1172 : ROL $1717,X ; [3E][17][17]
7 1175 : ROR $1717,X ; [7E][17][17]
2 1178 : LDY #$00 ; [A0][00]
3 117A : LDX $17 ; [A6][17]
3 117C : STX $17 ; [86][17]
4 117E : LDX $1717 ; [AE][17][17]
4 1181 : STX $1717 ; [8E][17][17]
4 1184 : LDX $17,Y ; [B6][17]
4 1186 : STX $17,Y ; [96][17]
4 1188 : LDX $1717,Y ; [BE][17][17]
2 118B : DEY ; [88]
4 118C : LDX $17,Y ; [B6][17]
4 118E : STX $17,Y ; [96][17]
5 1190 : LDX $1717,Y ; [BE][17][17]
2 1193 : LDX #$00 ; [A2][00]
5 1195 : DEC $17 ; [C6][17]
5 1197 : INC $17 ; [E6][17]
6 1199 : DEC $1717 ; [CE][17][17]
6 119C : INC $1717 ; [EE][17][17]
6 119F : DEC $17,X ; [D6][17]
6 11A1 : INC $17,X ; [F6][17]
7 11A3 : DEC $1717,X ; [DE][17][17]
7 11A6 : INC $1717,X ; [FE][17][17]
2 11A9 : DEX ; [CA]
6 11AA : DEC $17,X ; [D6][17]
6 11AC : INC $17,X ; [F6][17]
7 11AE : DEC $1717,X ; [DE][17][17]
7 11B1 : INC $1717,X ; [FE][17][17]
2 11B4 : LDX #$00 ; [A2][00]
3 11B6 : BPL $11BA ; [10][02] (1 times taken)
4 11B8 : BPL $1216 ;*[10][5C] (1 times taken)
2 11BA : BMI $11BA ; [30][FE]
3 11BC : BPL $11B8 ; [10][FA] (1 times taken)
3 11BE : BEQ $11C2 ; [F0][02] (1 times taken)
4 11C0 : BEQ $1218 ;*[F0][56] (1 times taken)
2 11C2 : BNE $11C2 ; [D0][FE]
3 11C4 : BEQ $11C0 ; [F0][FA] (1 times taken)
2 11C6 : LDX #$FF ; [A2][FF]
3 11C8 : BMI $11CC ; [30][02] (1 times taken)
4 11CA : BMI $121A ;*[30][4E] (1 times taken)
2 11CC : BPL $11CC ; [10][FE]
3 11CE : BMI $11CA ; [30][FA] (1 times taken)
3 11D0 : BNE $11D4 ; [D0][02] (1 times taken)
4 11D2 : BNE $121C ;*[D0][48] (1 times taken)
2 11D4 : BEQ $11D4 ; [F0][FE]
3 11D6 : BNE $11D2 ; [D0][FA] (1 times taken)
2 11D8 : CLC ; [18]
3 11D9 : BCC $11DD ; [90][02] (1 times taken)
4 11DB : BCC $121E ;*[90][41] (1 times taken)
2 11DD : BCS $11DD ; [B0][FE]
3 11DF : BCC $11DB ; [90][FA] (1 times taken)
2 11E1 : SEC ; [38]
3 11E2 : BCS $11E6 ; [B0][02] (1 times taken)
4 11E4 : BCS $1220 ;*[B0][3A] (1 times taken)
2 11E6 : BCC $11E6 ; [90][FE]
3 11E8 : BCS $11E4 ; [B0][FA] (1 times taken)
2 11EA : CLV ; [B8]
3 11EB : BVC $11EF ; [50][02] (1 times taken)
4 11ED : BVC $1222 ;*[50][33] (1 times taken)
2 11EF : BVS $11EF ; [70][FE]
3 11F1 : BVC $11ED ; [50][FA] (1 times taken)
2 11F3 : LDA #$7F ; [A9][7F]
2 11F5 : ADC #$7F ; [69][7F]
3 11F7 : BVS $11FB ; [70][02] (1 times taken)
4 11F9 : BVS $1224 ;*[70][29] (1 times taken)
2 11FB : BVC $11FB ; [50][FE]
3 11FD : BVS $11F9 ; [70][FA] (1 times taken)
2 11FF : INY ; [C8]
2 1200 : DEY ; [88]
2 1201 : INX ; [E8]
2 1202 : DEX ; [CA]
2 1203 : NOP ; [EA]
2 1204 : ASL A ; [0A]
2 1205 : ROL A ; [2A]
2 1206 : LSR A ; [4A]
2 1207 : ROR A ; [6A]
6 1208 : JSR $1226 ; [20][26][12]
3 120B : PHA ; [48]
4 120C : PLA ; [68]
3 120D : PHP ; [08]
4 120E : PLP ; [28]
2 120F : SEI ; [78]
2 1210 : CLI ; [58]
2 1211 : SED ; [F8]
2 1212 : CLD ; [D8]
3 1213 : JMP $123B ; [4C][3B][12]
4 1216 : BPL $11BE ;*[10][A6] (1 times taken)
4 1218 : BEQ $11C6 ;*[F0][AC] (1 times taken)
4 121A : BMI $11D0 ;*[30][B4] (1 times taken)
4 121C : BNE $11D8 ;*[D0][BA] (1 times taken)
4 121E : BCC $11E1 ;*[90][C1] (1 times taken)
4 1220 : BCS $11EA ;*[B0][C8] (1 times taken)
4 1222 : BVC $11F3 ;*[50][CF] (1 times taken)
4 1224 : BVS $11FF ;*[70][D9] (1 times taken)
6 1226 : JSR $1234 ; [20][34][12]
4 1229 : LDA $1233 ; [AD][33][12]
2 122C : LDX #$00 ; [A2][00]
6 122E : STA ($17,X) ; [81][17]
5 1230 : JMP ($0017) ; [6C][17][00]
4 1234 : PLA ; [68]
2 1235 : CLC ; [18]
2 1236 : ADC #$01 ; [69][01]
3 1238 : PHA ; [48]
3 1239 : PHA ; [48]
6 123A : RTI ; [40]
2 123B : LDX #$00 ; [A2][00]
3 123D : BIT $17 ; [24][17]
4 123F : BIT $1717 ; [2C][17][17]
3 1242 : LDY $17 ; [A4][17]
3 1244 : STY $17 ; [84][17]
4 1246 : LDY $1717 ; [AC][17][17]
4 1249 : STY $1717 ; [8C][17][17]
4 124C : LDY $17,X ; [B4][17]
4 124E : STY $17,X ; [94][17]
4 1250 : LDY $1717,X ; [BC][17][17]
2 1253 : DEX ; [CA]
4 1254 : LDY $17,X ; [B4][17]
4 1256 : STY $17,X ; [94][17]
5 1258 : LDY $1717,X ; [BC][17][17]
2 125B : CPY #$17 ; [C0][17]
3 125D : CPY $17 ; [C4][17]
4 125F : CPY $1717 ; [CC][17][17]
2 1262 : CPX #$17 ; [E0][17]
3 1264 : CPX $17 ; [E4][17]
4 1266 : CPX $1717 ; [EC][17][17]
The profile summary is:
Code:
Total Instructions: 300
Total Branches: 40 (13.3% of instructions)
Total Branches Taken: 32 (80.0% of branches)
Branches cross-page: 16 (50.0% of taken branches)
Absolute X cross-page: 8
Absolute Y cross-page: 8
Indirect Y cross-page: 7