6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Fri Sep 20, 2024 1:36 pm

All times are UTC




Post new topic Reply to topic  [ 31 posts ]  Go to page Previous  1, 2, 3  Next
Author Message
PostPosted: Tue Jun 23, 2015 11:01 pm 
Offline

Joined: Sun Oct 14, 2012 7:30 pm
Posts: 107
My PIC based 6502 emulator takes 90.757us to run those 1141us worth of instructions (~12.57MHz). I didn't take out the code for any instruction where a page boundary can be crossed (which corrects the cycle counter), so it could be a bit faster still if I did that. That is using a 70MIPS PIC24EP CPU (assembly code of course - I only write in assembly, no matter what CPU I am using).

I would bet that if I used a PIC32 @200MHz I could get close to 50MHz 6502 emulation. The PIC24EP has 3 cycle memory fetches where the PIC32 has single cycle.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 24, 2015 3:42 am 
Offline
User avatar

Joined: Sun Jun 30, 2013 10:26 pm
Posts: 1948
Location: Sacramento, CA, USA
JimDrew wrote:
... I only write in assembly, no matter what CPU I am using ...

How awesomely primitive of you, Jim! And I mean that as a compliment ... not just to tease.

Mike B.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 24, 2015 3:57 am 
Offline

Joined: Sun Oct 14, 2012 7:30 pm
Posts: 107
Ha! I have been writing in assembly since about 1979... never programmed even a "Hello World!" program in C. 6502, 8051, Z80, 8088, 80x86, 680x0, PPC, AVR, PIC, MIPS, ARM, etc. all different CPUs - but assembly really is not much different other than instruction/operator orders and little vs. big endian. It just makes way more sense (logical) to me, and is so much cleaner, faster, and not wasteful with memory. I do a lot of C to assembly conversion contracts to compact code into a smaller package. Portability is not really an issue, but I can move from one type of CPU to another if needed pretty quickly. I also have huge libraries of code for various functions and peripherals that I can include as needed, so my reusable code percentage is extremely high. I am going to work on that PIC32 version just to see how fast I can make it go. :)


Last edited by JimDrew on Wed Jun 24, 2015 2:50 pm, edited 1 time in total.

Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 24, 2015 7:59 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10938
Location: England
We have a topic for how fast a 6502 we might be able to emulate on an embedded CPU - your PIC32 idea, if you get to it, would be very welcome there. The best so far, I think, is about 20MHz on a 168MHz ARM. (But let's discuss that over there.)
viewtopic.php?f=8&t=1603
Edit: I've posted over there to pick up this idea.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 24, 2015 2:51 pm 
Offline

Joined: Sun Oct 14, 2012 7:30 pm
Posts: 107
Ok, I will jump over there... thanks.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jan 23, 2019 12:53 pm 
Offline

Joined: Mon May 21, 2018 8:09 pm
Posts: 1462
You could add my (unpublished) "lib6502++" to the list of sims which pass this test. I *had* thought there was something wrong with it, but...
Code:
C000: LDX #$FF        ; 4 cyc
C002: TXS             ; 6 cyc
C003: LDX #$01        ; 8 cyc
C005: LDX  $17        ; 10 cyc
C007: LDX  $18        ; 13 cyc
C009: LDX  $16        ; 16 cyc
C00B: TXA             ; 19 cyc
C00C: TAY             ; 21 cyc
C00D: TYA             ; 23 cyc
C00E: TSX             ; 25 cyc
C00F: TAX             ; 27 cyc
C010: LDX #$00        ; 29 cyc
C012: LDY #$00        ; 31 cyc
C014: ORA ($17,X)     ; 33 cyc
C016: ORA  $17        ; 39 cyc
C018: ORA #$00        ; 42 cyc
C01A: ORA  $1717      ; 44 cyc
C01D: ORA ($17),Y     ; 48 cyc
C01F: ORA  $17,X      ; 53 cyc
C021: ORA  $1717,X    ; 57 cyc
C024: ORA  $1717,Y    ; 61 cyc
C027: DEX             ; 65 cyc
C028: DEY             ; 67 cyc
C029: ORA ($17,X)     ; 69 cyc
C02B: ORA ($17),Y     ; 75 cyc
C02D: ORA  $17,X      ; 81 cyc
C02F: ORA  $1717,X    ; 85 cyc
C032: ORA  $1717,Y    ; 90 cyc
C035: INX             ; 95 cyc
C036: INY             ; 97 cyc
C037: AND ($17,X)     ; 99 cyc
C039: AND  $17        ; 105 cyc
C03B: AND #$00        ; 108 cyc
C03D: AND  $1717      ; 110 cyc
C040: AND ($17),Y     ; 114 cyc
C042: AND  $17,X      ; 119 cyc
C044: AND  $1717,X    ; 123 cyc
C047: AND  $1717,Y    ; 127 cyc
C04A: DEX             ; 131 cyc
C04B: DEY             ; 133 cyc
C04C: AND ($17,X)     ; 135 cyc
C04E: AND ($17),Y     ; 141 cyc
C050: AND  $17,X      ; 147 cyc
C052: AND  $1717,X    ; 151 cyc
C055: AND  $1717,Y    ; 156 cyc
C058: LDX #$00        ; 161 cyc
C05A: LDY #$00        ; 163 cyc
C05C: EOR ($17,X)     ; 165 cyc
C05E: EOR  $17        ; 171 cyc
C060: EOR #$00        ; 174 cyc
C062: EOR  $1717      ; 176 cyc
C065: EOR ($17),Y     ; 180 cyc
C067: EOR  $17,X      ; 185 cyc
C069: EOR  $1717,X    ; 188 cyc
C06C: EOR  $1717,Y    ; 192 cyc
C06F: DEX             ; 196 cyc
C070: DEY             ; 198 cyc
C071: EOR ($17,X)     ; 200 cyc
C073: EOR ($17),Y     ; 206 cyc
C075: EOR  $17,X      ; 212 cyc
C077: EOR  $1717,X    ; 215 cyc
C07A: EOR  $1717,Y    ; 220 cyc
C07D: LDX #$00        ; 225 cyc
C07F: LDY #$00        ; 227 cyc
C081: ADC ($17,X)     ; 229 cyc
C083: ADC  $17        ; 235 cyc
C085: ADC #$00        ; 238 cyc
C087: ADC  $1717      ; 240 cyc
C08A: ADC ($17),Y     ; 244 cyc
C08C: ADC  $17,X      ; 249 cyc
C08E: ADC  $1717,X    ; 252 cyc
C091: ADC  $1717,Y    ; 256 cyc
C094: DEX             ; 260 cyc
C095: DEY             ; 262 cyc
C096: ADC ($17,X)     ; 264 cyc
C098: ADC ($17),Y     ; 270 cyc
C09A: ADC  $17,X      ; 276 cyc
C09C: ADC  $1717,X    ; 279 cyc
C09F: ADC  $1717,Y    ; 284 cyc
C0A2: LDX #$00        ; 289 cyc
C0A4: LDY #$00        ; 291 cyc
C0A6: LDA #$01        ; 293 cyc
C0A8: LDA ($17,X)     ; 295 cyc
C0AA: LDA  $17        ; 301 cyc
C0AC: LDA  $1717      ; 304 cyc
C0AF: LDA ($17),Y     ; 308 cyc
C0B1: LDA  $17,X      ; 314 cyc
C0B3: LDA  $1717,X    ; 318 cyc
C0B6: LDA  $1717,Y    ; 323 cyc
C0B9: DEX             ; 328 cyc
C0BA: DEY             ; 330 cyc
C0BB: LDA ($17,X)     ; 332 cyc
C0BD: LDA ($17),Y     ; 338 cyc
C0BF: LDA  $17,X      ; 345 cyc
C0C1: LDA  $1717,X    ; 349 cyc
C0C4: LDA  $1717,Y    ; 355 cyc
C0C7: LDX #$00        ; 361 cyc
C0C9: LDY #$00        ; 363 cyc
C0CB: LDA ($17,X)     ; 365 cyc
C0CD: LDA  $17        ; 371 cyc
C0CF: LDA #$00        ; 374 cyc
C0D1: LDA  $1717      ; 376 cyc
C0D4: LDA ($17),Y     ; 380 cyc
C0D6: LDA  $17,X      ; 385 cyc
C0D8: LDA  $1717,X    ; 389 cyc
C0DB: LDA  $1717,Y    ; 393 cyc
C0DE: DEX             ; 397 cyc
C0DF: DEY             ; 399 cyc
C0E0: LDA ($17,X)     ; 401 cyc
C0E2: LDA ($17),Y     ; 407 cyc
C0E4: LDA  $17,X      ; 413 cyc
C0E6: LDA  $1717,X    ; 417 cyc
C0E9: LDA  $1717,Y    ; 422 cyc
C0EC: LDX #$00        ; 427 cyc
C0EE: LDY #$00        ; 429 cyc
C0F0: CMP ($17,X)     ; 431 cyc
C0F2: CMP  $17        ; 437 cyc
C0F4: CMP #$00        ; 440 cyc
C0F6: CMP  $1717      ; 442 cyc
C0F9: CMP ($17),Y     ; 446 cyc
C0FB: CMP  $17,X      ; 451 cyc
C0FD: CMP  $1717,X    ; 455 cyc
C100: CMP  $1717,Y    ; 459 cyc
C103: DEX             ; 463 cyc
C104: DEY             ; 465 cyc
C105: CMP ($17,X)     ; 467 cyc
C107: CMP ($17),Y     ; 473 cyc
C109: CMP  $17,X      ; 479 cyc
C10B: CMP  $1717,X    ; 483 cyc
C10E: CMP  $1717,Y    ; 488 cyc
C111: LDX #$00        ; 493 cyc
C113: LDY #$00        ; 495 cyc
C115: SBC ($17,X)     ; 497 cyc
C117: SBC  $17        ; 503 cyc
C119: SBC #$00        ; 506 cyc
C11B: SBC  $1717      ; 508 cyc
C11E: SBC ($17),Y     ; 512 cyc
C120: SBC  $17,X      ; 517 cyc
C122: SBC  $1717,X    ; 521 cyc
C125: SBC  $1717,Y    ; 525 cyc
C128: DEX             ; 529 cyc
C129: DEY             ; 531 cyc
C12A: SBC ($17,X)     ; 533 cyc
C12C: SBC ($17),Y     ; 539 cyc
C12E: SBC  $17,X      ; 545 cyc
C130: SBC  $1717,X    ; 549 cyc
C133: SBC  $1717,Y    ; 554 cyc
C136: LDX #$00        ; 559 cyc
C138: ASL  $17        ; 561 cyc
C13A: LSR  $17        ; 566 cyc
C13C: ASL  $1717      ; 571 cyc
C13F: LSR  $1717      ; 577 cyc
C142: ASL  $17,X      ; 583 cyc
C144: LSR  $17,X      ; 589 cyc
C146: ASL  $1717,X    ; 595 cyc
C149: LSR  $1717,X    ; 601 cyc
C14C: DEX             ; 607 cyc
C14D: ASL  $17,X      ; 609 cyc
C14F: LSR  $17,X      ; 615 cyc
C151: ASL  $1717,X    ; 621 cyc
C154: LSR  $1717,X    ; 628 cyc
C157: LDX #$00        ; 635 cyc
C159: ROL  $17        ; 637 cyc
C15B: ROR  $17        ; 642 cyc
C15D: ROL  $1717      ; 647 cyc
C160: ROR  $1717      ; 653 cyc
C163: ROL  $17,X      ; 659 cyc
C165: ROR  $17,X      ; 665 cyc
C167: ROL  $1717,X    ; 671 cyc
C16A: ROR  $1717,X    ; 677 cyc
C16D: DEX             ; 683 cyc
C16E: ROL  $17,X      ; 685 cyc
C170: ROR  $17,X      ; 691 cyc
C172: ROL  $1717,X    ; 697 cyc
C175: ROR  $1717,X    ; 704 cyc
C178: LDY #$00        ; 711 cyc
C17A: LDX  $17        ; 713 cyc
C17C: LDX  $17        ; 716 cyc
C17E: LDX  $1717      ; 719 cyc
C181: LDX  $1717      ; 723 cyc
C184: LDX  $17,Y      ; 727 cyc
C186: LDX  $17,Y      ; 731 cyc
C188: LDX  $1717,Y    ; 735 cyc
C18B: DEY             ; 739 cyc
C18C: LDX  $17,Y      ; 741 cyc
C18E: LDX  $17,Y      ; 745 cyc
C190: LDX  $1717,Y    ; 749 cyc
C193: LDX #$00        ; 754 cyc
C195: DEC  $17        ; 756 cyc
C197: INC  $17        ; 761 cyc
C199: DEC  $1717      ; 766 cyc
C19C: INC  $1717      ; 772 cyc
C19F: DEC  $17,X      ; 778 cyc
C1A1: INC  $17,X      ; 784 cyc
C1A3: DEC  $1717,X    ; 790 cyc
C1A6: INC  $1717,X    ; 797 cyc
C1A9: DEX             ; 804 cyc
C1AA: DEC  $17,X      ; 806 cyc
C1AC: INC  $17,X      ; 812 cyc
C1AE: DEC  $1717,X    ; 818 cyc
C1B1: INC  $1717,X    ; 826 cyc
C1B4: LDX #$00        ; 834 cyc
C1B6: BPL *+4         ; 836 cyc
C1BA: BMI *+0         ; 839 cyc
C1BC: BPL *-4         ; 841 cyc
C1B8: BPL *+94        ; 844 cyc
C216: BPL *-88        ; 848 cyc
C1BE: BEQ *+4         ; 852 cyc
C1C2: BNE *+0         ; 855 cyc
C1C4: BEQ *-4         ; 857 cyc
C1C0: BEQ *+88        ; 860 cyc
C218: BEQ *-82        ; 864 cyc
C1C6: LDX #$FF        ; 868 cyc
C1C8: BMI *+4         ; 870 cyc
C1CC: BPL *+0         ; 873 cyc
C1CE: BMI *-4         ; 875 cyc
C1CA: BMI *+80        ; 878 cyc
C21A: BMI *-74        ; 882 cyc
C1D0: BNE *+4         ; 886 cyc
C1D4: BEQ *+0         ; 889 cyc
C1D6: BNE *-4         ; 891 cyc
C1D2: BNE *+74        ; 894 cyc
C21C: BNE *-68        ; 898 cyc
C1D8: CLC             ; 902 cyc
C1D9: BCC *+4         ; 904 cyc
C1DD: BCS *+0         ; 907 cyc
C1DF: BCC *-4         ; 909 cyc
C1DB: BCC *+67        ; 912 cyc
C21E: BCC *-61        ; 916 cyc
C1E1: SEC             ; 920 cyc
C1E2: BCS *+4         ; 922 cyc
C1E6: BCC *+0         ; 925 cyc
C1E8: BCS *-4         ; 927 cyc
C1E4: BCS *+60        ; 930 cyc
C220: BCS *-54        ; 934 cyc
C1EA: CLV             ; 938 cyc
C1EB: BVC *+4         ; 940 cyc
C1EF: BVS *+0         ; 943 cyc
C1F1: BVC *-4         ; 945 cyc
C1ED: BVC *+53        ; 948 cyc
C222: BVC *-47        ; 952 cyc
C1F3: LDA #$7F        ; 956 cyc
C1F5: ADC #$7F        ; 958 cyc
C1F7: BVS *+4         ; 960 cyc
C1FB: BVC *+0         ; 963 cyc
C1FD: BVS *-4         ; 965 cyc
C1F9: BVS *+43        ; 968 cyc
C224: BVS *-37        ; 972 cyc
C1FF: INY             ; 976 cyc
C200: DEY             ; 978 cyc
C201: INX             ; 980 cyc
C202: DEX             ; 982 cyc
C203: NOP             ; 984 cyc
C204: ASL A           ; 986 cyc
C205: ROL A           ; 988 cyc
C206: LSR A           ; 990 cyc
C207: ROR A           ; 992 cyc
C208: JSR  $C226      ; 994 cyc
C226: JSR  $C234      ; 1000 cyc
C234: PLA             ; 1006 cyc
C235: CLC             ; 1010 cyc
C236: ADC #$01        ; 1012 cyc
C238: PHA             ; 1014 cyc
C239: PHA             ; 1017 cyc
C23A: RTI             ; 1020 cyc
C229: LDA  $C233      ; 1026 cyc
C22C: LDX #$00        ; 1030 cyc
C22E: LDA ($17,X)     ; 1032 cyc
C230: JMP ($0017)     ; 1038 cyc
0101: RTS             ; 1045 cyc
C20B: PHA             ; 1051 cyc
C20C: PLA             ; 1054 cyc
C20D: PHP             ; 1058 cyc
C20E: PLP             ; 1061 cyc
C20F: SEI             ; 1065 cyc
C210: CLI             ; 1067 cyc
C211: SED             ; 1069 cyc
C212: CLD             ; 1071 cyc
C213: JMP  $C23B      ; 1073 cyc
C23B: LDX #$00        ; 1077 cyc
C23D: BIT  $17        ; 1079 cyc
C23F: BIT  $1717      ; 1082 cyc
C242: LDY  $17        ; 1086 cyc
C244: LDY  $17        ; 1089 cyc
C246: LDY  $1717      ; 1092 cyc
C249: LDY  $1717      ; 1096 cyc
C24C: LDY  $17,X      ; 1100 cyc
C24E: LDY  $17,X      ; 1104 cyc
C250: LDY  $1717,X    ; 1108 cyc
C253: DEX             ; 1112 cyc
C254: LDY  $17,X      ; 1114 cyc
C256: LDY  $17,X      ; 1118 cyc
C258: LDY  $1717,X    ; 1122 cyc
C25B: CPY #$17        ; 1127 cyc
C25D: CPY  $17        ; 1129 cyc
C25F: CPY  $1717      ; 1132 cyc
C262: CPX #$17        ; 1136 cyc
C264: CPX  $17        ; 1138 cyc
C266: CPX  $1717      ; 1141 cyc
C269: NOP             ; 1145 cyc

The cycle counts in the above are from *before* the instruction in that line, so subtracting the 4 cycles that it started with (the reset sequence isn't yet emulated with any great precision), the $BB opcode (decoded as NOP) begins after 1141 cycles.


Top
 Profile  
Reply with quote  
PostPosted: Thu Jan 24, 2019 7:21 pm 
Offline

Joined: Mon Sep 17, 2018 2:39 am
Posts: 136
Hi!

Chromatix wrote:
You could add my (unpublished) "lib6502++" to the list of sims which pass this test. I *had* thought there was something wrong with it, but...
Code:
C000: LDX #$FF        ; 4 cyc
C002: TXS             ; 6 cyc
C003: LDX #$01        ; 8 cyc
C005: LDX  $17        ; 10 cyc
C007: LDX  $18        ; 13 cyc
C009: LDX  $16        ; 16 cyc
C00B: TXA             ; 19 cyc
C00C: TAY             ; 21 cyc
C00D: TYA             ; 23 cyc
C00E: TSX             ; 25 cyc
C00F: TAX             ; 27 cyc
C010: LDX #$00        ; 29 cyc
C012: LDY #$00        ; 31 cyc
C014: ORA ($17,X)     ; 33 cyc
C016: ORA  $17        ; 39 cyc
C018: ORA #$00        ; 42 cyc
C01A: ORA  $1717      ; 44 cyc
C01D: ORA ($17),Y     ; 48 cyc
C01F: ORA  $17,X      ; 53 cyc
C021: ORA  $1717,X    ; 57 cyc
C024: ORA  $1717,Y    ; 61 cyc
C027: DEX             ; 65 cyc
C028: DEY             ; 67 cyc
C029: ORA ($17,X)     ; 69 cyc
C02B: ORA ($17),Y     ; 75 cyc
C02D: ORA  $17,X      ; 81 cyc
C02F: ORA  $1717,X    ; 85 cyc
C032: ORA  $1717,Y    ; 90 cyc
C035: INX             ; 95 cyc
C036: INY             ; 97 cyc
C037: AND ($17,X)     ; 99 cyc
C039: AND  $17        ; 105 cyc
C03B: AND #$00        ; 108 cyc
C03D: AND  $1717      ; 110 cyc
C040: AND ($17),Y     ; 114 cyc
C042: AND  $17,X      ; 119 cyc
C044: AND  $1717,X    ; 123 cyc
C047: AND  $1717,Y    ; 127 cyc
C04A: DEX             ; 131 cyc
C04B: DEY             ; 133 cyc
C04C: AND ($17,X)     ; 135 cyc
C04E: AND ($17),Y     ; 141 cyc
C050: AND  $17,X      ; 147 cyc
C052: AND  $1717,X    ; 151 cyc
C055: AND  $1717,Y    ; 156 cyc
C058: LDX #$00        ; 161 cyc
C05A: LDY #$00        ; 163 cyc
C05C: EOR ($17,X)     ; 165 cyc
C05E: EOR  $17        ; 171 cyc
C060: EOR #$00        ; 174 cyc
C062: EOR  $1717      ; 176 cyc
C065: EOR ($17),Y     ; 180 cyc
C067: EOR  $17,X      ; 185 cyc
C069: EOR  $1717,X    ; 188 cyc


This is wrong, as EOR ZP,X takes four cycles, not three. There are more errors than cancel out bellow :P

Regards!


Top
 Profile  
Reply with quote  
PostPosted: Thu Jan 24, 2019 8:05 pm 
Offline

Joined: Mon May 21, 2018 8:09 pm
Posts: 1462
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.


Top
 Profile  
Reply with quote  
PostPosted: Thu Jan 24, 2019 8:31 pm 
Offline

Joined: Mon Sep 17, 2018 2:39 am
Posts: 136
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


Top
 Profile  
Reply with quote  
PostPosted: Thu Jan 24, 2019 8:51 pm 
Offline

Joined: Sun Jun 29, 2014 5:42 am
Posts: 351
Chromatix wrote:
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.

On a 6502. the following always take 7 cycles, regardless of whether there has been a page crossing.
- INC ABS,X
- DEC ABS,X
- ASL ABS,X
- ROL ABS,X
- LSR ABS,X
- ROR ABS,X

On a 65C02, ASL/ROL/LSR/ROR ABS,X take 6 cycles if no page is crossed, and 7 cycles otherwise. INC/DEC ABS,X is unchanged.

I'd check these instructions before anything else.

Dave


Top
 Profile  
Reply with quote  
PostPosted: Thu Jan 24, 2019 9:04 pm 
Offline

Joined: Mon May 21, 2018 8:09 pm
Posts: 1462
I think I've located part of the problem. There are some indexed addressing modes (abx, izy) which take an extra cycle for page-crossing, but only for some instructions and not others. That wasn't allowed for in my design, which accounts for the page-crossing cycle unconditionally - and it's easy to miss that in very concise tables arranged by opcode.

So I essentially have to add two extra addressing modes which don't have the carry-cycle accounting, but which are otherwise identical. Having just fixed that (and reset the cycle counter just before beginning execution), I now have:
Code:
C000: LDX #$FF        ; A=00 X=00 Y=00 S=00    I  ; 0 cyc   fetch C000 -> A2   fetch C001 -> FF
C002: TXS             ; A=00 X=FF Y=00 S=00 N  I  ; 2 cyc   fetch C002 -> 9A
C003: LDX #$01        ; A=00 X=FF Y=00 S=FF N  I  ; 4 cyc   fetch C003 -> A2   fetch C004 -> 01
C005: STX  $17        ; A=00 X=01 Y=00 S=FF    I  ; 6 cyc   fetch C005 -> 86   fetch C006 -> 17   store 0017 <- 01
C007: STX  $18        ; A=00 X=01 Y=00 S=FF    I  ; 9 cyc   fetch C007 -> 86   fetch C008 -> 18   store 0018 <- 01
C009: STX  $16        ; A=00 X=01 Y=00 S=FF    I  ; 12 cyc   fetch C009 -> 86   fetch C00A -> 16   store 0016 <- 01
C00B: TXA             ; A=00 X=01 Y=00 S=FF    I  ; 15 cyc   fetch C00B -> 8A
C00C: TAY             ; A=01 X=01 Y=00 S=FF    I  ; 17 cyc   fetch C00C -> A8
C00D: TYA             ; A=01 X=01 Y=01 S=FF    I  ; 19 cyc   fetch C00D -> 98
C00E: TSX             ; A=01 X=01 Y=01 S=FF    I  ; 21 cyc   fetch C00E -> BA
C00F: TAX             ; A=01 X=FF Y=01 S=FF N  I  ; 23 cyc   fetch C00F -> AA
C010: LDX #$00        ; A=01 X=01 Y=01 S=FF    I  ; 25 cyc   fetch C010 -> A2   fetch C011 -> 00
C012: LDY #$00        ; A=01 X=00 Y=01 S=FF    IZ ; 27 cyc   fetch C012 -> A0   fetch C013 -> 00
C014: ORA ($17,X)     ; A=01 X=00 Y=00 S=FF    IZ ; 29 cyc   fetch C014 -> 01   fetch C015 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 00
C016: ORA  $17        ; A=01 X=00 Y=00 S=FF    I  ; 35 cyc   fetch C016 -> 05   fetch C017 -> 17   fetch 0017 -> 01
C018: ORA #$00        ; A=01 X=00 Y=00 S=FF    I  ; 38 cyc   fetch C018 -> 09   fetch C019 -> 00
C01A: ORA  $1717      ; A=01 X=00 Y=00 S=FF    I  ; 40 cyc   fetch C01A -> 0D   fetch C01B -> 17   fetch C01C -> 17   fetch 1717 -> 00
C01D: ORA ($17),Y     ; A=01 X=00 Y=00 S=FF    I  ; 44 cyc   fetch C01D -> 11   fetch C01E -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 00
C01F: ORA  $17,X      ; A=01 X=00 Y=00 S=FF    I  ; 49 cyc   fetch C01F -> 15   fetch C020 -> 17   fetch 0017 -> 01
C021: ORA  $1717,X    ; A=01 X=00 Y=00 S=FF    I  ; 53 cyc   fetch C021 -> 1D   fetch C022 -> 17   fetch C023 -> 17   fetch 1717 -> 00
C024: ORA  $1717,Y    ; A=01 X=00 Y=00 S=FF    I  ; 57 cyc   fetch C024 -> 19   fetch C025 -> 17   fetch C026 -> 17   fetch 1717 -> 00
C027: DEX             ; A=01 X=00 Y=00 S=FF    I  ; 61 cyc   fetch C027 -> CA
C028: DEY             ; A=01 X=FF Y=00 S=FF N  I  ; 63 cyc   fetch C028 -> 88
C029: ORA ($17,X)     ; A=01 X=FF Y=FF S=FF N  I  ; 65 cyc   fetch C029 -> 01   fetch C02A -> 17   fetch 0016 -> 01   fetch 0017 -> 01   fetch 0101 -> 00
C02B: ORA ($17),Y     ; A=01 X=FF Y=FF S=FF    I  ; 71 cyc   fetch C02B -> 11   fetch C02C -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0200 -> 00
C02D: ORA  $17,X      ; A=01 X=FF Y=FF S=FF    I  ; 77 cyc   fetch C02D -> 15   fetch C02E -> 17   fetch 0016 -> 01
C02F: ORA  $1717,X    ; A=01 X=FF Y=FF S=FF    I  ; 81 cyc   fetch C02F -> 1D   fetch C030 -> 17   fetch C031 -> 17   fetch 1816 -> 00
C032: ORA  $1717,Y    ; A=01 X=FF Y=FF S=FF    I  ; 86 cyc   fetch C032 -> 19   fetch C033 -> 17   fetch C034 -> 17   fetch 1816 -> 00
C035: INX             ; A=01 X=FF Y=FF S=FF    I  ; 91 cyc   fetch C035 -> E8
C036: INY             ; A=01 X=00 Y=FF S=FF    IZ ; 93 cyc   fetch C036 -> C8
C037: AND ($17,X)     ; A=01 X=00 Y=00 S=FF    IZ ; 95 cyc   fetch C037 -> 21   fetch C038 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 00
C039: AND  $17        ; A=00 X=00 Y=00 S=FF    IZ ; 101 cyc   fetch C039 -> 25   fetch C03A -> 17   fetch 0017 -> 01
C03B: AND #$00        ; A=00 X=00 Y=00 S=FF    IZ ; 104 cyc   fetch C03B -> 29   fetch C03C -> 00
C03D: AND  $1717      ; A=00 X=00 Y=00 S=FF    IZ ; 106 cyc   fetch C03D -> 2D   fetch C03E -> 17   fetch C03F -> 17   fetch 1717 -> 00
C040: AND ($17),Y     ; A=00 X=00 Y=00 S=FF    IZ ; 110 cyc   fetch C040 -> 31   fetch C041 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 00
C042: AND  $17,X      ; A=00 X=00 Y=00 S=FF    IZ ; 115 cyc   fetch C042 -> 35   fetch C043 -> 17   fetch 0017 -> 01
C044: AND  $1717,X    ; A=00 X=00 Y=00 S=FF    IZ ; 119 cyc   fetch C044 -> 3D   fetch C045 -> 17   fetch C046 -> 17   fetch 1717 -> 00
C047: AND  $1717,Y    ; A=00 X=00 Y=00 S=FF    IZ ; 123 cyc   fetch C047 -> 39   fetch C048 -> 17   fetch C049 -> 17   fetch 1717 -> 00
C04A: DEX             ; A=00 X=00 Y=00 S=FF    IZ ; 127 cyc   fetch C04A -> CA
C04B: DEY             ; A=00 X=FF Y=00 S=FF N  I  ; 129 cyc   fetch C04B -> 88
C04C: AND ($17,X)     ; A=00 X=FF Y=FF S=FF N  I  ; 131 cyc   fetch C04C -> 21   fetch C04D -> 17   fetch 0016 -> 01   fetch 0017 -> 01   fetch 0101 -> 00
C04E: AND ($17),Y     ; A=00 X=FF Y=FF S=FF    IZ ; 137 cyc   fetch C04E -> 31   fetch C04F -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0200 -> 00
C050: AND  $17,X      ; A=00 X=FF Y=FF S=FF    IZ ; 143 cyc   fetch C050 -> 35   fetch C051 -> 17   fetch 0016 -> 01
C052: AND  $1717,X    ; A=00 X=FF Y=FF S=FF    IZ ; 147 cyc   fetch C052 -> 3D   fetch C053 -> 17   fetch C054 -> 17   fetch 1816 -> 00
C055: AND  $1717,Y    ; A=00 X=FF Y=FF S=FF    IZ ; 152 cyc   fetch C055 -> 39   fetch C056 -> 17   fetch C057 -> 17   fetch 1816 -> 00
C058: LDX #$00        ; A=00 X=FF Y=FF S=FF    IZ ; 157 cyc   fetch C058 -> A2   fetch C059 -> 00
C05A: LDY #$00        ; A=00 X=00 Y=FF S=FF    IZ ; 159 cyc   fetch C05A -> A0   fetch C05B -> 00
C05C: EOR ($17,X)     ; A=00 X=00 Y=00 S=FF    IZ ; 161 cyc   fetch C05C -> 41   fetch C05D -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 00
C05E: EOR  $17        ; A=00 X=00 Y=00 S=FF    IZ ; 167 cyc   fetch C05E -> 45   fetch C05F -> 17   fetch 0017 -> 01
C060: EOR #$00        ; A=01 X=00 Y=00 S=FF    I  ; 170 cyc   fetch C060 -> 49   fetch C061 -> 00
C062: EOR  $1717      ; A=01 X=00 Y=00 S=FF    I  ; 172 cyc   fetch C062 -> 4D   fetch C063 -> 17   fetch C064 -> 17   fetch 1717 -> 00
C065: EOR ($17),Y     ; A=01 X=00 Y=00 S=FF    I  ; 176 cyc   fetch C065 -> 51   fetch C066 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 00
C067: EOR  $17,X      ; A=01 X=00 Y=00 S=FF    I  ; 181 cyc   fetch C067 -> 55   fetch C068 -> 17   fetch 0017 -> 01
C069: EOR  $1717,X    ; A=00 X=00 Y=00 S=FF    IZ ; 185 cyc   fetch C069 -> 5D   fetch C06A -> 17   fetch C06B -> 17   fetch 1717 -> 00
C06C: EOR  $1717,Y    ; A=00 X=00 Y=00 S=FF    IZ ; 189 cyc   fetch C06C -> 59   fetch C06D -> 17   fetch C06E -> 17   fetch 1717 -> 00
C06F: DEX             ; A=00 X=00 Y=00 S=FF    IZ ; 193 cyc   fetch C06F -> CA
C070: DEY             ; A=00 X=FF Y=00 S=FF N  I  ; 195 cyc   fetch C070 -> 88
C071: EOR ($17,X)     ; A=00 X=FF Y=FF S=FF N  I  ; 197 cyc   fetch C071 -> 41   fetch C072 -> 17   fetch 0016 -> 01   fetch 0017 -> 01   fetch 0101 -> 00
C073: EOR ($17),Y     ; A=00 X=FF Y=FF S=FF    IZ ; 203 cyc   fetch C073 -> 51   fetch C074 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0200 -> 00
C075: EOR  $17,X      ; A=00 X=FF Y=FF S=FF    IZ ; 209 cyc   fetch C075 -> 55   fetch C076 -> 17   fetch 0016 -> 01
C077: EOR  $1717,X    ; A=01 X=FF Y=FF S=FF    I  ; 213 cyc   fetch C077 -> 5D   fetch C078 -> 17   fetch C079 -> 17   fetch 1816 -> 00
C07A: EOR  $1717,Y    ; A=01 X=FF Y=FF S=FF    I  ; 218 cyc   fetch C07A -> 59   fetch C07B -> 17   fetch C07C -> 17   fetch 1816 -> 00
C07D: LDX #$00        ; A=01 X=FF Y=FF S=FF    I  ; 223 cyc   fetch C07D -> A2   fetch C07E -> 00
C07F: LDY #$00        ; A=01 X=00 Y=FF S=FF    IZ ; 225 cyc   fetch C07F -> A0   fetch C080 -> 00
C081: ADC ($17,X)     ; A=01 X=00 Y=00 S=FF    IZ ; 227 cyc   fetch C081 -> 61   fetch C082 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 00
C083: ADC  $17        ; A=01 X=00 Y=00 S=FF    I  ; 233 cyc   fetch C083 -> 65   fetch C084 -> 17   fetch 0017 -> 01
C085: ADC #$00        ; A=02 X=00 Y=00 S=FF    I  ; 236 cyc   fetch C085 -> 69   fetch C086 -> 00
C087: ADC  $1717      ; A=02 X=00 Y=00 S=FF    I  ; 238 cyc   fetch C087 -> 6D   fetch C088 -> 17   fetch C089 -> 17   fetch 1717 -> 00
C08A: ADC ($17),Y     ; A=02 X=00 Y=00 S=FF    I  ; 242 cyc   fetch C08A -> 71   fetch C08B -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 00
C08C: ADC  $17,X      ; A=02 X=00 Y=00 S=FF    I  ; 247 cyc   fetch C08C -> 75   fetch C08D -> 17   fetch 0017 -> 01
C08E: ADC  $1717,X    ; A=03 X=00 Y=00 S=FF    I  ; 251 cyc   fetch C08E -> 7D   fetch C08F -> 17   fetch C090 -> 17   fetch 1717 -> 00
C091: ADC  $1717,Y    ; A=03 X=00 Y=00 S=FF    I  ; 255 cyc   fetch C091 -> 79   fetch C092 -> 17   fetch C093 -> 17   fetch 1717 -> 00
C094: DEX             ; A=03 X=00 Y=00 S=FF    I  ; 259 cyc   fetch C094 -> CA
C095: DEY             ; A=03 X=FF Y=00 S=FF N  I  ; 261 cyc   fetch C095 -> 88
C096: ADC ($17,X)     ; A=03 X=FF Y=FF S=FF N  I  ; 263 cyc   fetch C096 -> 61   fetch C097 -> 17   fetch 0016 -> 01   fetch 0017 -> 01   fetch 0101 -> 00
C098: ADC ($17),Y     ; A=03 X=FF Y=FF S=FF    I  ; 269 cyc   fetch C098 -> 71   fetch C099 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0200 -> 00
C09A: ADC  $17,X      ; A=03 X=FF Y=FF S=FF    I  ; 275 cyc   fetch C09A -> 75   fetch C09B -> 17   fetch 0016 -> 01
C09C: ADC  $1717,X    ; A=04 X=FF Y=FF S=FF    I  ; 279 cyc   fetch C09C -> 7D   fetch C09D -> 17   fetch C09E -> 17   fetch 1816 -> 00
C09F: ADC  $1717,Y    ; A=04 X=FF Y=FF S=FF    I  ; 284 cyc   fetch C09F -> 79   fetch C0A0 -> 17   fetch C0A1 -> 17   fetch 1816 -> 00
C0A2: LDX #$00        ; A=04 X=FF Y=FF S=FF    I  ; 289 cyc   fetch C0A2 -> A2   fetch C0A3 -> 00
C0A4: LDY #$00        ; A=04 X=00 Y=FF S=FF    IZ ; 291 cyc   fetch C0A4 -> A0   fetch C0A5 -> 00
C0A6: LDA #$01        ; A=04 X=00 Y=00 S=FF    IZ ; 293 cyc   fetch C0A6 -> A9   fetch C0A7 -> 01
C0A8: STA ($17,X)     ; A=01 X=00 Y=00 S=FF    I  ; 295 cyc   fetch C0A8 -> 81   fetch C0A9 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   store 0101 <- 01
C0AA: STA  $17        ; A=01 X=00 Y=00 S=FF    I  ; 301 cyc   fetch C0AA -> 85   fetch C0AB -> 17   store 0017 <- 01
C0AC: STA  $1717      ; A=01 X=00 Y=00 S=FF    I  ; 304 cyc   fetch C0AC -> 8D   fetch C0AD -> 17   fetch C0AE -> 17   store 1717 <- 01
C0AF: STA ($17),Y     ; A=01 X=00 Y=00 S=FF    I  ; 308 cyc   fetch C0AF -> 91   fetch C0B0 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   store 0101 <- 01
C0B1: STA  $17,X      ; A=01 X=00 Y=00 S=FF    I  ; 314 cyc   fetch C0B1 -> 95   fetch C0B2 -> 17   store 0017 <- 01
C0B3: STA  $1717,X    ; A=01 X=00 Y=00 S=FF    I  ; 318 cyc   fetch C0B3 -> 9D   fetch C0B4 -> 17   fetch C0B5 -> 17   store 1717 <- 01
C0B6: STA  $1717,Y    ; A=01 X=00 Y=00 S=FF    I  ; 323 cyc   fetch C0B6 -> 99   fetch C0B7 -> 17   fetch C0B8 -> 17   store 1717 <- 01
C0B9: DEX             ; A=01 X=00 Y=00 S=FF    I  ; 328 cyc   fetch C0B9 -> CA
C0BA: DEY             ; A=01 X=FF Y=00 S=FF N  I  ; 330 cyc   fetch C0BA -> 88
C0BB: STA ($17,X)     ; A=01 X=FF Y=FF S=FF N  I  ; 332 cyc   fetch C0BB -> 81   fetch C0BC -> 17   fetch 0016 -> 01   fetch 0017 -> 01   store 0101 <- 01
C0BD: STA ($17),Y     ; A=01 X=FF Y=FF S=FF N  I  ; 338 cyc   fetch C0BD -> 91   fetch C0BE -> 17   fetch 0017 -> 01   fetch 0018 -> 01   store 0200 <- 01
C0BF: STA  $17,X      ; A=01 X=FF Y=FF S=FF N  I  ; 344 cyc   fetch C0BF -> 95   fetch C0C0 -> 17   store 0016 <- 01
C0C1: STA  $1717,X    ; A=01 X=FF Y=FF S=FF N  I  ; 348 cyc   fetch C0C1 -> 9D   fetch C0C2 -> 17   fetch C0C3 -> 17   store 1816 <- 01
C0C4: STA  $1717,Y    ; A=01 X=FF Y=FF S=FF N  I  ; 353 cyc   fetch C0C4 -> 99   fetch C0C5 -> 17   fetch C0C6 -> 17   store 1816 <- 01
C0C7: LDX #$00        ; A=01 X=FF Y=FF S=FF N  I  ; 359 cyc   fetch C0C7 -> A2   fetch C0C8 -> 00
C0C9: LDY #$00        ; A=01 X=00 Y=FF S=FF    IZ ; 361 cyc   fetch C0C9 -> A0   fetch C0CA -> 00
C0CB: LDA ($17,X)     ; A=01 X=00 Y=00 S=FF    IZ ; 363 cyc   fetch C0CB -> A1   fetch C0CC -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 01
C0CD: LDA  $17        ; A=01 X=00 Y=00 S=FF    I  ; 369 cyc   fetch C0CD -> A5   fetch C0CE -> 17   fetch 0017 -> 01
C0CF: LDA #$00        ; A=01 X=00 Y=00 S=FF    I  ; 372 cyc   fetch C0CF -> A9   fetch C0D0 -> 00
C0D1: LDA  $1717      ; A=00 X=00 Y=00 S=FF    IZ ; 374 cyc   fetch C0D1 -> AD   fetch C0D2 -> 17   fetch C0D3 -> 17   fetch 1717 -> 01
C0D4: LDA ($17),Y     ; A=01 X=00 Y=00 S=FF    I  ; 378 cyc   fetch C0D4 -> B1   fetch C0D5 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 01
C0D6: LDA  $17,X      ; A=01 X=00 Y=00 S=FF    I  ; 383 cyc   fetch C0D6 -> B5   fetch C0D7 -> 17   fetch 0017 -> 01
C0D8: LDA  $1717,X    ; A=01 X=00 Y=00 S=FF    I  ; 387 cyc   fetch C0D8 -> BD   fetch C0D9 -> 17   fetch C0DA -> 17   fetch 1717 -> 01
C0DB: LDA  $1717,Y    ; A=01 X=00 Y=00 S=FF    I  ; 391 cyc   fetch C0DB -> B9   fetch C0DC -> 17   fetch C0DD -> 17   fetch 1717 -> 01
C0DE: DEX             ; A=01 X=00 Y=00 S=FF    I  ; 395 cyc   fetch C0DE -> CA
C0DF: DEY             ; A=01 X=FF Y=00 S=FF N  I  ; 397 cyc   fetch C0DF -> 88
C0E0: LDA ($17,X)     ; A=01 X=FF Y=FF S=FF N  I  ; 399 cyc   fetch C0E0 -> A1   fetch C0E1 -> 17   fetch 0016 -> 01   fetch 0017 -> 01   fetch 0101 -> 01
C0E2: LDA ($17),Y     ; A=01 X=FF Y=FF S=FF    I  ; 405 cyc   fetch C0E2 -> B1   fetch C0E3 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0200 -> 01
C0E4: LDA  $17,X      ; A=01 X=FF Y=FF S=FF    I  ; 411 cyc   fetch C0E4 -> B5   fetch C0E5 -> 17   fetch 0016 -> 01
C0E6: LDA  $1717,X    ; A=01 X=FF Y=FF S=FF    I  ; 415 cyc   fetch C0E6 -> BD   fetch C0E7 -> 17   fetch C0E8 -> 17   fetch 1816 -> 01
C0E9: LDA  $1717,Y    ; A=01 X=FF Y=FF S=FF    I  ; 420 cyc   fetch C0E9 -> B9   fetch C0EA -> 17   fetch C0EB -> 17   fetch 1816 -> 01
C0EC: LDX #$00        ; A=01 X=FF Y=FF S=FF    I  ; 425 cyc   fetch C0EC -> A2   fetch C0ED -> 00
C0EE: LDY #$00        ; A=01 X=00 Y=FF S=FF    IZ ; 427 cyc   fetch C0EE -> A0   fetch C0EF -> 00
C0F0: CMP ($17,X)     ; A=01 X=00 Y=00 S=FF    IZ ; 429 cyc   fetch C0F0 -> C1   fetch C0F1 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 01
C0F2: CMP  $17        ; A=01 X=00 Y=00 S=FF    IZC; 435 cyc   fetch C0F2 -> C5   fetch C0F3 -> 17   fetch 0017 -> 01
C0F4: CMP #$00        ; A=01 X=00 Y=00 S=FF    IZC; 438 cyc   fetch C0F4 -> C9   fetch C0F5 -> 00
C0F6: CMP  $1717      ; A=01 X=00 Y=00 S=FF    I C; 440 cyc   fetch C0F6 -> CD   fetch C0F7 -> 17   fetch C0F8 -> 17   fetch 1717 -> 01
C0F9: CMP ($17),Y     ; A=01 X=00 Y=00 S=FF    IZC; 444 cyc   fetch C0F9 -> D1   fetch C0FA -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 01
C0FB: CMP  $17,X      ; A=01 X=00 Y=00 S=FF    IZC; 449 cyc   fetch C0FB -> D5   fetch C0FC -> 17   fetch 0017 -> 01
C0FD: CMP  $1717,X    ; A=01 X=00 Y=00 S=FF    IZC; 453 cyc   fetch C0FD -> DD   fetch C0FE -> 17   fetch C0FF -> 17   fetch 1717 -> 01
C100: CMP  $1717,Y    ; A=01 X=00 Y=00 S=FF    IZC; 457 cyc   fetch C100 -> D9   fetch C101 -> 17   fetch C102 -> 17   fetch 1717 -> 01
C103: DEX             ; A=01 X=00 Y=00 S=FF    IZC; 461 cyc   fetch C103 -> CA
C104: DEY             ; A=01 X=FF Y=00 S=FF N  I C; 463 cyc   fetch C104 -> 88
C105: CMP ($17,X)     ; A=01 X=FF Y=FF S=FF N  I C; 465 cyc   fetch C105 -> C1   fetch C106 -> 17   fetch 0016 -> 01   fetch 0017 -> 01   fetch 0101 -> 01
C107: CMP ($17),Y     ; A=01 X=FF Y=FF S=FF    IZC; 471 cyc   fetch C107 -> D1   fetch C108 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0200 -> 01
C109: CMP  $17,X      ; A=01 X=FF Y=FF S=FF    IZC; 477 cyc   fetch C109 -> D5   fetch C10A -> 17   fetch 0016 -> 01
C10B: CMP  $1717,X    ; A=01 X=FF Y=FF S=FF    IZC; 481 cyc   fetch C10B -> DD   fetch C10C -> 17   fetch C10D -> 17   fetch 1816 -> 01
C10E: CMP  $1717,Y    ; A=01 X=FF Y=FF S=FF    IZC; 486 cyc   fetch C10E -> D9   fetch C10F -> 17   fetch C110 -> 17   fetch 1816 -> 01
C111: LDX #$00        ; A=01 X=FF Y=FF S=FF    IZC; 491 cyc   fetch C111 -> A2   fetch C112 -> 00
C113: LDY #$00        ; A=01 X=00 Y=FF S=FF    IZC; 493 cyc   fetch C113 -> A0   fetch C114 -> 00
C115: SBC ($17,X)     ; A=01 X=00 Y=00 S=FF    IZC; 495 cyc   fetch C115 -> E1   fetch C116 -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 01
C117: SBC  $17        ; A=00 X=00 Y=00 S=FF    IZC; 501 cyc   fetch C117 -> E5   fetch C118 -> 17   fetch 0017 -> 01
C119: SBC #$00        ; A=FF X=00 Y=00 S=FF N  I  ; 504 cyc   fetch C119 -> E9   fetch C11A -> 00
C11B: SBC  $1717      ; A=FE X=00 Y=00 S=FF N  I C; 506 cyc   fetch C11B -> ED   fetch C11C -> 17   fetch C11D -> 17   fetch 1717 -> 01
C11E: SBC ($17),Y     ; A=FD X=00 Y=00 S=FF N  I C; 510 cyc   fetch C11E -> F1   fetch C11F -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0101 -> 01
C120: SBC  $17,X      ; A=FC X=00 Y=00 S=FF N  I C; 515 cyc   fetch C120 -> F5   fetch C121 -> 17   fetch 0017 -> 01
C122: SBC  $1717,X    ; A=FB X=00 Y=00 S=FF N  I C; 519 cyc   fetch C122 -> FD   fetch C123 -> 17   fetch C124 -> 17   fetch 1717 -> 01
C125: SBC  $1717,Y    ; A=FA X=00 Y=00 S=FF N  I C; 523 cyc   fetch C125 -> F9   fetch C126 -> 17   fetch C127 -> 17   fetch 1717 -> 01
C128: DEX             ; A=F9 X=00 Y=00 S=FF N  I C; 527 cyc   fetch C128 -> CA
C129: DEY             ; A=F9 X=FF Y=00 S=FF N  I C; 529 cyc   fetch C129 -> 88
C12A: SBC ($17,X)     ; A=F9 X=FF Y=FF S=FF N  I C; 531 cyc   fetch C12A -> E1   fetch C12B -> 17   fetch 0016 -> 01   fetch 0017 -> 01   fetch 0101 -> 01
C12C: SBC ($17),Y     ; A=F8 X=FF Y=FF S=FF N  I C; 537 cyc   fetch C12C -> F1   fetch C12D -> 17   fetch 0017 -> 01   fetch 0018 -> 01   fetch 0200 -> 01
C12E: SBC  $17,X      ; A=F7 X=FF Y=FF S=FF N  I C; 543 cyc   fetch C12E -> F5   fetch C12F -> 17   fetch 0016 -> 01
C130: SBC  $1717,X    ; A=F6 X=FF Y=FF S=FF N  I C; 547 cyc   fetch C130 -> FD   fetch C131 -> 17   fetch C132 -> 17   fetch 1816 -> 01
C133: SBC  $1717,Y    ; A=F5 X=FF Y=FF S=FF N  I C; 552 cyc   fetch C133 -> F9   fetch C134 -> 17   fetch C135 -> 17   fetch 1816 -> 01
C136: LDX #$00        ; A=F4 X=FF Y=FF S=FF N  I C; 557 cyc   fetch C136 -> A2   fetch C137 -> 00
C138: ASL  $17        ; A=F4 X=00 Y=FF S=FF    IZC; 559 cyc   fetch C138 -> 06   fetch C139 -> 17   fetch 0017 -> 01   store 0017 <- 02
C13A: LSR  $17        ; A=F4 X=00 Y=FF S=FF    I  ; 564 cyc   fetch C13A -> 46   fetch C13B -> 17   fetch 0017 -> 02   store 0017 <- 01
C13C: ASL  $1717      ; A=F4 X=00 Y=FF S=FF    I  ; 569 cyc   fetch C13C -> 0E   fetch C13D -> 17   fetch C13E -> 17   fetch 1717 -> 01   store 1717 <- 02
C13F: LSR  $1717      ; A=F4 X=00 Y=FF S=FF    I  ; 575 cyc   fetch C13F -> 4E   fetch C140 -> 17   fetch C141 -> 17   fetch 1717 -> 02   store 1717 <- 01
C142: ASL  $17,X      ; A=F4 X=00 Y=FF S=FF    I  ; 581 cyc   fetch C142 -> 16   fetch C143 -> 17   fetch 0017 -> 01   store 0017 <- 02
C144: LSR  $17,X      ; A=F4 X=00 Y=FF S=FF    I  ; 587 cyc   fetch C144 -> 56   fetch C145 -> 17   fetch 0017 -> 02   store 0017 <- 01
C146: ASL  $1717,X    ; A=F4 X=00 Y=FF S=FF    I  ; 593 cyc   fetch C146 -> 1E   fetch C147 -> 17   fetch C148 -> 17   fetch 1717 -> 01   store 1717 <- 02
C149: LSR  $1717,X    ; A=F4 X=00 Y=FF S=FF    I  ; 599 cyc   fetch C149 -> 5E   fetch C14A -> 17   fetch C14B -> 17   fetch 1717 -> 02   store 1717 <- 01
C14C: DEX             ; A=F4 X=00 Y=FF S=FF    I  ; 605 cyc   fetch C14C -> CA
C14D: ASL  $17,X      ; A=F4 X=FF Y=FF S=FF N  I  ; 607 cyc   fetch C14D -> 16   fetch C14E -> 17   fetch 0016 -> 01   store 0016 <- 02
C14F: LSR  $17,X      ; A=F4 X=FF Y=FF S=FF    I  ; 613 cyc   fetch C14F -> 56   fetch C150 -> 17   fetch 0016 -> 02   store 0016 <- 01
C151: ASL  $1717,X    ; A=F4 X=FF Y=FF S=FF    I  ; 619 cyc   fetch C151 -> 1E   fetch C152 -> 17   fetch C153 -> 17   fetch 1816 -> 01   store 1816 <- 02
C154: LSR  $1717,X    ; A=F4 X=FF Y=FF S=FF    I  ; 626 cyc   fetch C154 -> 5E   fetch C155 -> 17   fetch C156 -> 17   fetch 1816 -> 02   store 1816 <- 01
C157: LDX #$00        ; A=F4 X=FF Y=FF S=FF    I  ; 633 cyc   fetch C157 -> A2   fetch C158 -> 00
C159: ROL  $17        ; A=F4 X=00 Y=FF S=FF    IZ ; 635 cyc   fetch C159 -> 26   fetch C15A -> 17   fetch 0017 -> 01   store 0017 <- 02
C15B: ROR  $17        ; A=F4 X=00 Y=FF S=FF    I  ; 640 cyc   fetch C15B -> 66   fetch C15C -> 17   fetch 0017 -> 02   store 0017 <- 01
C15D: ROL  $1717      ; A=F4 X=00 Y=FF S=FF    I  ; 645 cyc   fetch C15D -> 2E   fetch C15E -> 17   fetch C15F -> 17   fetch 1717 -> 01   store 1717 <- 02
C160: ROR  $1717      ; A=F4 X=00 Y=FF S=FF    I  ; 651 cyc   fetch C160 -> 6E   fetch C161 -> 17   fetch C162 -> 17   fetch 1717 -> 02   store 1717 <- 01
C163: ROL  $17,X      ; A=F4 X=00 Y=FF S=FF    I  ; 657 cyc   fetch C163 -> 36   fetch C164 -> 17   fetch 0017 -> 01   store 0017 <- 02
C165: ROR  $17,X      ; A=F4 X=00 Y=FF S=FF    I  ; 663 cyc   fetch C165 -> 76   fetch C166 -> 17   fetch 0017 -> 02   store 0017 <- 01
C167: ROL  $1717,X    ; A=F4 X=00 Y=FF S=FF    I  ; 669 cyc   fetch C167 -> 3E   fetch C168 -> 17   fetch C169 -> 17   fetch 1717 -> 01   store 1717 <- 02
C16A: ROR  $1717,X    ; A=F4 X=00 Y=FF S=FF    I  ; 675 cyc   fetch C16A -> 7E   fetch C16B -> 17   fetch C16C -> 17   fetch 1717 -> 02   store 1717 <- 01
C16D: DEX             ; A=F4 X=00 Y=FF S=FF    I  ; 681 cyc   fetch C16D -> CA
C16E: ROL  $17,X      ; A=F4 X=FF Y=FF S=FF N  I  ; 683 cyc   fetch C16E -> 36   fetch C16F -> 17   fetch 0016 -> 01   store 0016 <- 02
C170: ROR  $17,X      ; A=F4 X=FF Y=FF S=FF    I  ; 689 cyc   fetch C170 -> 76   fetch C171 -> 17   fetch 0016 -> 02   store 0016 <- 01
C172: ROL  $1717,X    ; A=F4 X=FF Y=FF S=FF    I  ; 695 cyc   fetch C172 -> 3E   fetch C173 -> 17   fetch C174 -> 17   fetch 1816 -> 01   store 1816 <- 02
C175: ROR  $1717,X    ; A=F4 X=FF Y=FF S=FF    I  ; 702 cyc   fetch C175 -> 7E   fetch C176 -> 17   fetch C177 -> 17   fetch 1816 -> 02   store 1816 <- 01
C178: LDY #$00        ; A=F4 X=FF Y=FF S=FF    I  ; 709 cyc   fetch C178 -> A0   fetch C179 -> 00
C17A: LDX  $17        ; A=F4 X=FF Y=00 S=FF    IZ ; 711 cyc   fetch C17A -> A6   fetch C17B -> 17   fetch 0017 -> 01
C17C: STX  $17        ; A=F4 X=01 Y=00 S=FF    I  ; 714 cyc   fetch C17C -> 86   fetch C17D -> 17   store 0017 <- 01
C17E: LDX  $1717      ; A=F4 X=01 Y=00 S=FF    I  ; 717 cyc   fetch C17E -> AE   fetch C17F -> 17   fetch C180 -> 17   fetch 1717 -> 01
C181: STX  $1717      ; A=F4 X=01 Y=00 S=FF    I  ; 721 cyc   fetch C181 -> 8E   fetch C182 -> 17   fetch C183 -> 17   store 1717 <- 01
C184: LDX  $17,Y      ; A=F4 X=01 Y=00 S=FF    I  ; 725 cyc   fetch C184 -> B6   fetch C185 -> 17   fetch 0017 -> 01
C186: STX  $17,Y      ; A=F4 X=01 Y=00 S=FF    I  ; 729 cyc   fetch C186 -> 96   fetch C187 -> 17   store 0017 <- 01
C188: LDX  $1717,Y    ; A=F4 X=01 Y=00 S=FF    I  ; 733 cyc   fetch C188 -> BE   fetch C189 -> 17   fetch C18A -> 17   fetch 1717 -> 01
C18B: DEY             ; A=F4 X=01 Y=00 S=FF    I  ; 737 cyc   fetch C18B -> 88
C18C: LDX  $17,Y      ; A=F4 X=01 Y=FF S=FF N  I  ; 739 cyc   fetch C18C -> B6   fetch C18D -> 17   fetch 0016 -> 01
C18E: STX  $17,Y      ; A=F4 X=01 Y=FF S=FF    I  ; 743 cyc   fetch C18E -> 96   fetch C18F -> 17   store 0016 <- 01
C190: LDX  $1717,Y    ; A=F4 X=01 Y=FF S=FF    I  ; 747 cyc   fetch C190 -> BE   fetch C191 -> 17   fetch C192 -> 17   fetch 1816 -> 01
C193: LDX #$00        ; A=F4 X=01 Y=FF S=FF    I  ; 752 cyc   fetch C193 -> A2   fetch C194 -> 00
C195: DEC  $17        ; A=F4 X=00 Y=FF S=FF    IZ ; 754 cyc   fetch C195 -> C6   fetch C196 -> 17   fetch 0017 -> 01   store 0017 <- 00
C197: INC  $17        ; A=F4 X=00 Y=FF S=FF    IZ ; 759 cyc   fetch C197 -> E6   fetch C198 -> 17   fetch 0017 -> 00   store 0017 <- 01
C199: DEC  $1717      ; A=F4 X=00 Y=FF S=FF    I  ; 764 cyc   fetch C199 -> CE   fetch C19A -> 17   fetch C19B -> 17   fetch 1717 -> 01   store 1717 <- 00
C19C: INC  $1717      ; A=F4 X=00 Y=FF S=FF    IZ ; 770 cyc   fetch C19C -> EE   fetch C19D -> 17   fetch C19E -> 17   fetch 1717 -> 00   store 1717 <- 01
C19F: DEC  $17,X      ; A=F4 X=00 Y=FF S=FF    I  ; 776 cyc   fetch C19F -> D6   fetch C1A0 -> 17   fetch 0017 -> 01   store 0017 <- 00
C1A1: INC  $17,X      ; A=F4 X=00 Y=FF S=FF    IZ ; 782 cyc   fetch C1A1 -> F6   fetch C1A2 -> 17   fetch 0017 -> 00   store 0017 <- 01
C1A3: DEC  $1717,X    ; A=F4 X=00 Y=FF S=FF    I  ; 788 cyc   fetch C1A3 -> DE   fetch C1A4 -> 17   fetch C1A5 -> 17   fetch 1717 -> 01   store 1717 <- 00
C1A6: INC  $1717,X    ; A=F4 X=00 Y=FF S=FF    IZ ; 795 cyc   fetch C1A6 -> FE   fetch C1A7 -> 17   fetch C1A8 -> 17   fetch 1717 -> 00   store 1717 <- 01
C1A9: DEX             ; A=F4 X=00 Y=FF S=FF    I  ; 802 cyc   fetch C1A9 -> CA
C1AA: DEC  $17,X      ; A=F4 X=FF Y=FF S=FF N  I  ; 804 cyc   fetch C1AA -> D6   fetch C1AB -> 17   fetch 0016 -> 01   store 0016 <- 00
C1AC: INC  $17,X      ; A=F4 X=FF Y=FF S=FF    IZ ; 810 cyc   fetch C1AC -> F6   fetch C1AD -> 17   fetch 0016 -> 00   store 0016 <- 01
C1AE: DEC  $1717,X    ; A=F4 X=FF Y=FF S=FF    I  ; 816 cyc   fetch C1AE -> DE   fetch C1AF -> 17   fetch C1B0 -> 17   fetch 1816 -> 01   store 1816 <- 00
C1B1: INC  $1717,X    ; A=F4 X=FF Y=FF S=FF    IZ ; 823 cyc   fetch C1B1 -> FE   fetch C1B2 -> 17   fetch C1B3 -> 17   fetch 1816 -> 00   store 1816 <- 01
C1B4: LDX #$00        ; A=F4 X=FF Y=FF S=FF    I  ; 830 cyc   fetch C1B4 -> A2   fetch C1B5 -> 00
C1B6: BPL *+4         ; A=F4 X=00 Y=FF S=FF    IZ ; 832 cyc   fetch C1B6 -> 10   fetch C1B7 -> 02
C1BA: BMI *+0         ; A=F4 X=00 Y=FF S=FF    IZ ; 835 cyc   fetch C1BA -> 30   fetch C1BB -> FE
C1BC: BPL *-4         ; A=F4 X=00 Y=FF S=FF    IZ ; 837 cyc   fetch C1BC -> 10   fetch C1BD -> FA
C1B8: BPL *+94        ; A=F4 X=00 Y=FF S=FF    IZ ; 840 cyc   fetch C1B8 -> 10   fetch C1B9 -> 5C
C216: BPL *-88        ; A=F4 X=00 Y=FF S=FF    IZ ; 844 cyc   fetch C216 -> 10   fetch C217 -> A6
C1BE: BEQ *+4         ; A=F4 X=00 Y=FF S=FF    IZ ; 848 cyc   fetch C1BE -> F0   fetch C1BF -> 02
C1C2: BNE *+0         ; A=F4 X=00 Y=FF S=FF    IZ ; 851 cyc   fetch C1C2 -> D0   fetch C1C3 -> FE
C1C4: BEQ *-4         ; A=F4 X=00 Y=FF S=FF    IZ ; 853 cyc   fetch C1C4 -> F0   fetch C1C5 -> FA
C1C0: BEQ *+88        ; A=F4 X=00 Y=FF S=FF    IZ ; 856 cyc   fetch C1C0 -> F0   fetch C1C1 -> 56
C218: BEQ *-82        ; A=F4 X=00 Y=FF S=FF    IZ ; 860 cyc   fetch C218 -> F0   fetch C219 -> AC
C1C6: LDX #$FF        ; A=F4 X=00 Y=FF S=FF    IZ ; 864 cyc   fetch C1C6 -> A2   fetch C1C7 -> FF
C1C8: BMI *+4         ; A=F4 X=FF Y=FF S=FF N  I  ; 866 cyc   fetch C1C8 -> 30   fetch C1C9 -> 02
C1CC: BPL *+0         ; A=F4 X=FF Y=FF S=FF N  I  ; 869 cyc   fetch C1CC -> 10   fetch C1CD -> FE
C1CE: BMI *-4         ; A=F4 X=FF Y=FF S=FF N  I  ; 871 cyc   fetch C1CE -> 30   fetch C1CF -> FA
C1CA: BMI *+80        ; A=F4 X=FF Y=FF S=FF N  I  ; 874 cyc   fetch C1CA -> 30   fetch C1CB -> 4E
C21A: BMI *-74        ; A=F4 X=FF Y=FF S=FF N  I  ; 878 cyc   fetch C21A -> 30   fetch C21B -> B4
C1D0: BNE *+4         ; A=F4 X=FF Y=FF S=FF N  I  ; 882 cyc   fetch C1D0 -> D0   fetch C1D1 -> 02
C1D4: BEQ *+0         ; A=F4 X=FF Y=FF S=FF N  I  ; 885 cyc   fetch C1D4 -> F0   fetch C1D5 -> FE
C1D6: BNE *-4         ; A=F4 X=FF Y=FF S=FF N  I  ; 887 cyc   fetch C1D6 -> D0   fetch C1D7 -> FA
C1D2: BNE *+74        ; A=F4 X=FF Y=FF S=FF N  I  ; 890 cyc   fetch C1D2 -> D0   fetch C1D3 -> 48
C21C: BNE *-68        ; A=F4 X=FF Y=FF S=FF N  I  ; 894 cyc   fetch C21C -> D0   fetch C21D -> BA
C1D8: CLC             ; A=F4 X=FF Y=FF S=FF N  I  ; 898 cyc   fetch C1D8 -> 18
C1D9: BCC *+4         ; A=F4 X=FF Y=FF S=FF N  I  ; 900 cyc   fetch C1D9 -> 90   fetch C1DA -> 02
C1DD: BCS *+0         ; A=F4 X=FF Y=FF S=FF N  I  ; 903 cyc   fetch C1DD -> B0   fetch C1DE -> FE
C1DF: BCC *-4         ; A=F4 X=FF Y=FF S=FF N  I  ; 905 cyc   fetch C1DF -> 90   fetch C1E0 -> FA
C1DB: BCC *+67        ; A=F4 X=FF Y=FF S=FF N  I  ; 908 cyc   fetch C1DB -> 90   fetch C1DC -> 41
C21E: BCC *-61        ; A=F4 X=FF Y=FF S=FF N  I  ; 912 cyc   fetch C21E -> 90   fetch C21F -> C1
C1E1: SEC             ; A=F4 X=FF Y=FF S=FF N  I  ; 916 cyc   fetch C1E1 -> 38
C1E2: BCS *+4         ; A=F4 X=FF Y=FF S=FF N  I C; 918 cyc   fetch C1E2 -> B0   fetch C1E3 -> 02
C1E6: BCC *+0         ; A=F4 X=FF Y=FF S=FF N  I C; 921 cyc   fetch C1E6 -> 90   fetch C1E7 -> FE
C1E8: BCS *-4         ; A=F4 X=FF Y=FF S=FF N  I C; 923 cyc   fetch C1E8 -> B0   fetch C1E9 -> FA
C1E4: BCS *+60        ; A=F4 X=FF Y=FF S=FF N  I C; 926 cyc   fetch C1E4 -> B0   fetch C1E5 -> 3A
C220: BCS *-54        ; A=F4 X=FF Y=FF S=FF N  I C; 930 cyc   fetch C220 -> B0   fetch C221 -> C8
C1EA: CLV             ; A=F4 X=FF Y=FF S=FF N  I C; 934 cyc   fetch C1EA -> B8
C1EB: BVC *+4         ; A=F4 X=FF Y=FF S=FF N  I C; 936 cyc   fetch C1EB -> 50   fetch C1EC -> 02
C1EF: BVS *+0         ; A=F4 X=FF Y=FF S=FF N  I C; 939 cyc   fetch C1EF -> 70   fetch C1F0 -> FE
C1F1: BVC *-4         ; A=F4 X=FF Y=FF S=FF N  I C; 941 cyc   fetch C1F1 -> 50   fetch C1F2 -> FA
C1ED: BVC *+53        ; A=F4 X=FF Y=FF S=FF N  I C; 944 cyc   fetch C1ED -> 50   fetch C1EE -> 33
C222: BVC *-47        ; A=F4 X=FF Y=FF S=FF N  I C; 948 cyc   fetch C222 -> 50   fetch C223 -> CF
C1F3: LDA #$7F        ; A=F4 X=FF Y=FF S=FF N  I C; 952 cyc   fetch C1F3 -> A9   fetch C1F4 -> 7F
C1F5: ADC #$7F        ; A=7F X=FF Y=FF S=FF    I C; 954 cyc   fetch C1F5 -> 69   fetch C1F6 -> 7F
C1F7: BVS *+4         ; A=FF X=FF Y=FF S=FF NV I  ; 956 cyc   fetch C1F7 -> 70   fetch C1F8 -> 02
C1FB: BVC *+0         ; A=FF X=FF Y=FF S=FF NV I  ; 959 cyc   fetch C1FB -> 50   fetch C1FC -> FE
C1FD: BVS *-4         ; A=FF X=FF Y=FF S=FF NV I  ; 961 cyc   fetch C1FD -> 70   fetch C1FE -> FA
C1F9: BVS *+43        ; A=FF X=FF Y=FF S=FF NV I  ; 964 cyc   fetch C1F9 -> 70   fetch C1FA -> 29
C224: BVS *-37        ; A=FF X=FF Y=FF S=FF NV I  ; 968 cyc   fetch C224 -> 70   fetch C225 -> D9
C1FF: INY             ; A=FF X=FF Y=FF S=FF NV I  ; 972 cyc   fetch C1FF -> C8
C200: DEY             ; A=FF X=FF Y=00 S=FF  V IZ ; 974 cyc   fetch C200 -> 88
C201: INX             ; A=FF X=FF Y=FF S=FF NV I  ; 976 cyc   fetch C201 -> E8
C202: DEX             ; A=FF X=00 Y=FF S=FF  V IZ ; 978 cyc   fetch C202 -> CA
C203: NOP             ; A=FF X=FF Y=FF S=FF NV I  ; 980 cyc   fetch C203 -> EA
C204: ASL A           ; A=FF X=FF Y=FF S=FF NV I  ; 982 cyc   fetch C204 -> 0A
C205: ROL A           ; A=FE X=FF Y=FF S=FF NV I C; 984 cyc   fetch C205 -> 2A
C206: LSR A           ; A=FD X=FF Y=FF S=FF NV I C; 986 cyc   fetch C206 -> 4A
C207: ROR A           ; A=7E X=FF Y=FF S=FF  V I C; 988 cyc   fetch C207 -> 6A
C208: JSR  $C226      ; A=BF X=FF Y=FF S=FF NV I  ; 990 cyc   fetch C208 -> 20   fetch C209 -> 26   fetch C20A -> C2   store 01FF <- C2   store 01FE <- 0A
C226: JSR  $C234      ; A=BF X=FF Y=FF S=FD NV I  ; 996 cyc   fetch C226 -> 20   fetch C227 -> 34   fetch C228 -> C2   store 01FD <- C2   store 01FC <- 28
C234: PLA             ; A=BF X=FF Y=FF S=FB NV I  ; 1002 cyc   fetch C234 -> 68   fetch 01FC -> 28
C235: CLC             ; A=28 X=FF Y=FF S=FC  V I  ; 1006 cyc   fetch C235 -> 18
C236: ADC #$01        ; A=28 X=FF Y=FF S=FC  V I  ; 1008 cyc   fetch C236 -> 69   fetch C237 -> 01
C238: PHA             ; A=29 X=FF Y=FF S=FC    I  ; 1010 cyc   fetch C238 -> 48   store 01FC <- 29
C239: PHA             ; A=29 X=FF Y=FF S=FB    I  ; 1013 cyc   fetch C239 -> 48   store 01FB <- 29
C23A: RTI             ; A=29 X=FF Y=FF S=FA    I  ; 1016 cyc   fetch C23A -> 40   fetch 01FB -> 29   fetch 01FC -> 29   fetch 01FD -> C2
C229: LDA  $C233      ; A=29 X=FF Y=FF S=FD   D  C; 1022 cyc   fetch C229 -> AD   fetch C22A -> 33   fetch C22B -> C2   fetch C233 -> 60
C22C: LDX #$00        ; A=60 X=FF Y=FF S=FD   D  C; 1026 cyc   fetch C22C -> A2   fetch C22D -> 00
C22E: STA ($17,X)     ; A=60 X=00 Y=FF S=FD   D ZC; 1028 cyc   fetch C22E -> 81   fetch C22F -> 17   fetch 0017 -> 01   fetch 0018 -> 01   store 0101 <- 60
C230: JMP ($0017)     ; A=60 X=00 Y=FF S=FD   D ZC; 1034 cyc   fetch C230 -> 6C   fetch C231 -> 17   fetch C232 -> 00   fetch 0017 -> 01   fetch 0018 -> 01
0101: RTS             ; A=60 X=00 Y=FF S=FD   D ZC; 1041 cyc   fetch 0101 -> 60   fetch 01FE -> 0A   fetch 01FF -> C2
C20B: PHA             ; A=60 X=00 Y=FF S=FF   D ZC; 1047 cyc   fetch C20B -> 48   store 01FF <- 60
C20C: PLA             ; A=60 X=00 Y=FF S=FE   D ZC; 1050 cyc   fetch C20C -> 68   fetch 01FF -> 60
C20D: PHP             ; A=60 X=00 Y=FF S=FF   D  C; 1054 cyc   fetch C20D -> 08   store 01FF <- 39
C20E: PLP             ; A=60 X=00 Y=FF S=FE   D  C; 1057 cyc   fetch C20E -> 28   fetch 01FF -> 39
C20F: SEI             ; A=60 X=00 Y=FF S=FF   D  C; 1061 cyc   fetch C20F -> 78
C210: CLI             ; A=60 X=00 Y=FF S=FF   DI C; 1063 cyc   fetch C210 -> 58
C211: SED             ; A=60 X=00 Y=FF S=FF   D  C; 1065 cyc   fetch C211 -> F8
C212: CLD             ; A=60 X=00 Y=FF S=FF   D  C; 1067 cyc   fetch C212 -> D8
C213: JMP  $C23B      ; A=60 X=00 Y=FF S=FF      C; 1069 cyc   fetch C213 -> 4C   fetch C214 -> 3B   fetch C215 -> C2
C23B: LDX #$00        ; A=60 X=00 Y=FF S=FF      C; 1073 cyc   fetch C23B -> A2   fetch C23C -> 00
C23D: BIT  $17        ; A=60 X=00 Y=FF S=FF     ZC; 1075 cyc   fetch C23D -> 24   fetch C23E -> 17   fetch 0017 -> 01
C23F: BIT  $1717      ; A=60 X=00 Y=FF S=FF     ZC; 1078 cyc   fetch C23F -> 2C   fetch C240 -> 17   fetch C241 -> 17   fetch 1717 -> 01
C242: LDY  $17        ; A=60 X=00 Y=FF S=FF     ZC; 1082 cyc   fetch C242 -> A4   fetch C243 -> 17   fetch 0017 -> 01
C244: STY  $17        ; A=60 X=00 Y=01 S=FF      C; 1085 cyc   fetch C244 -> 84   fetch C245 -> 17   store 0017 <- 01
C246: LDY  $1717      ; A=60 X=00 Y=01 S=FF      C; 1088 cyc   fetch C246 -> AC   fetch C247 -> 17   fetch C248 -> 17   fetch 1717 -> 01
C249: STY  $1717      ; A=60 X=00 Y=01 S=FF      C; 1092 cyc   fetch C249 -> 8C   fetch C24A -> 17   fetch C24B -> 17   store 1717 <- 01
C24C: LDY  $17,X      ; A=60 X=00 Y=01 S=FF      C; 1096 cyc   fetch C24C -> B4   fetch C24D -> 17   fetch 0017 -> 01
C24E: STY  $17,X      ; A=60 X=00 Y=01 S=FF      C; 1100 cyc   fetch C24E -> 94   fetch C24F -> 17   store 0017 <- 01
C250: LDY  $1717,X    ; A=60 X=00 Y=01 S=FF      C; 1104 cyc   fetch C250 -> BC   fetch C251 -> 17   fetch C252 -> 17   fetch 1717 -> 01
C253: DEX             ; A=60 X=00 Y=01 S=FF      C; 1108 cyc   fetch C253 -> CA
C254: LDY  $17,X      ; A=60 X=FF Y=01 S=FF N    C; 1110 cyc   fetch C254 -> B4   fetch C255 -> 17   fetch 0016 -> 01
C256: STY  $17,X      ; A=60 X=FF Y=01 S=FF      C; 1114 cyc   fetch C256 -> 94   fetch C257 -> 17   store 0016 <- 01
C258: LDY  $1717,X    ; A=60 X=FF Y=01 S=FF      C; 1118 cyc   fetch C258 -> BC   fetch C259 -> 17   fetch C25A -> 17   fetch 1816 -> 01
C25B: CPY #$17        ; A=60 X=FF Y=01 S=FF      C; 1123 cyc   fetch C25B -> C0   fetch C25C -> 17
C25D: CPY  $17        ; A=60 X=FF Y=01 S=FF N     ; 1125 cyc   fetch C25D -> C4   fetch C25E -> 17   fetch 0017 -> 01
C25F: CPY  $1717      ; A=60 X=FF Y=01 S=FF     ZC; 1128 cyc   fetch C25F -> CC   fetch C260 -> 17   fetch C261 -> 17   fetch 1717 -> 01
C262: CPX #$17        ; A=60 X=FF Y=01 S=FF     ZC; 1132 cyc   fetch C262 -> E0   fetch C263 -> 17
C264: CPX  $17        ; A=60 X=FF Y=01 S=FF N    C; 1134 cyc   fetch C264 -> E4   fetch C265 -> 17   fetch 0017 -> 01
C266: CPX  $1717      ; A=60 X=FF Y=01 S=FF N    C; 1137 cyc   fetch C266 -> EC   fetch C267 -> 17   fetch C268 -> 17   fetch 1717 -> 01
C269: NOP             ; A=60 X=FF Y=01 S=FF N    C; 1141 cyc   fetch C269 -> EA
C26A: JMP  $C26A      ; A=60 X=FF Y=01 S=FF N    C; 1143 cyc   fetch C26A -> 4C   fetch C26B -> 6A   fetch C26C -> C2
C26A: A=60 X=FF Y=01 S=FF N    C
…which seems to end up with the right number of cycles.


Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 25, 2019 4:59 am 
Offline

Joined: Wed Oct 31, 2018 6:45 am
Posts: 11
How important timings for an emulator? What code need for make sure what emulator correct?


Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 25, 2019 8:08 am 
Offline

Joined: Tue Jul 24, 2012 2:27 am
Posts: 674
Basically, if software has some timing interaction with other chips in the original hardware, it would require cycle accuracy to emulate all the chips working together. Most often that will be related to video generation and I/O protocols.

If the timing is off, the things that will break most noticeably are games & demos, but non-game software also manages video features and storage transfer protocols with specifically assumed inter-instruction timing often enough. System ROMs can get very low level and use chip-specific timing in providing features to running software, even if the user software is written more generically.

_________________
WFDis Interactive 6502 Disassembler
AcheronVM: A Reconfigurable 16-bit Virtual CPU for the 6502 Microprocessor


Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 25, 2019 8:19 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10938
Location: England
Agreed that games and demos rather often need cycle-accurate timing, and so do some copy-protection schemes. But whether the OS is sensitive to exact cycle timings depends on the system: broadly speaking, on Apple II, yes, on Acorn's BBC Micro, no.

I'm not aware of any timing tests - I've a feeling we have previously run a non-trivial program and measured the total execution, but of course that could easily miss errors if they happen to compensate for each other. The usual approach, if the emulator is for an application which cares, is to run that application as a test.


Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 25, 2019 5:55 pm 
Offline

Joined: Sat Dec 13, 2003 3:37 pm
Posts: 1004
It's important if you simulate real hardware. (Games as mentioned are particularly sensitive.)

But a large amount of software doesn't really care about cycling accuracy, they're more interested simply in the instructions logically doing what they're supposed to (i.e. loading the register, adding the numbers, branch, etc.).

So, it depends on what you're trying to do with your simulator.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 31 posts ]  Go to page Previous  1, 2, 3  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: