-
Notifications
You must be signed in to change notification settings - Fork 0
/
gen-o-table.h
1557 lines (1550 loc) · 121 KB
/
gen-o-table.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/* gen-o-table.pl Sat Jul 25 12:10:00 2015 */
#include "gen-address-modes.h"
OpCode OpCode::m6502_opcodes[256] = {
OpCode(0x00, m6502, BRK, address_modes<m6502,BRK>::value, interrupt, 2, 0, 0x0),
OpCode(0x01, m6502, ORA, address_modes<m6502,ORA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x05, m6502, ORA, address_modes<m6502,ORA>::value, zp, 2, 3, 0x0),
OpCode(0x06, m6502, ASL, address_modes<m6502,ASL>::value, zp, 2, 5, 0x0),
OpCode(),
OpCode(0x08, m6502, PHP, address_modes<m6502,PHP>::value, implied, 1, 3, 0x0),
OpCode(0x09, m6502, ORA, address_modes<m6502,ORA>::value, immediate, 2, 2, 0x0),
OpCode(0x0A, m6502, ASL, address_modes<m6502,ASL>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(),
OpCode(0x0D, m6502, ORA, address_modes<m6502,ORA>::value, absolute, 3, 4, 0x0),
OpCode(0x0E, m6502, ASL, address_modes<m6502,ASL>::value, absolute, 3, 6, 0x0),
OpCode(),
OpCode(0x10, m6502, BPL, address_modes<m6502,BPL>::value, relative, 2, 2, 0x0),
OpCode(0x11, m6502, ORA, address_modes<m6502,ORA>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x15, m6502, ORA, address_modes<m6502,ORA>::value, zp_x, 2, 4, 0x0),
OpCode(0x16, m6502, ASL, address_modes<m6502,ASL>::value, zp_x, 2, 6, 0x0),
OpCode(),
OpCode(0x18, m6502, CLC, address_modes<m6502,CLC>::value, implied, 1, 2, 0x0),
OpCode(0x19, m6502, ORA, address_modes<m6502,ORA>::value, absolute_y, 3, 4, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x1D, m6502, ORA, address_modes<m6502,ORA>::value, absolute_x, 3, 4, 0x0),
OpCode(0x1E, m6502, ASL, address_modes<m6502,ASL>::value, absolute_x, 3, 7, 0x0),
OpCode(),
OpCode(0x20, m6502, JSR, address_modes<m6502,JSR>::value, absolute, 3, 6, 0x0),
OpCode(0x21, m6502, AND, address_modes<m6502,AND>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(),
OpCode(),
OpCode(0x24, m6502, BIT, address_modes<m6502,BIT>::value, zp, 2, 3, 0x0),
OpCode(0x25, m6502, AND, address_modes<m6502,AND>::value, zp, 2, 3, 0x0),
OpCode(0x26, m6502, ROL, address_modes<m6502,ROL>::value, zp, 2, 5, 0x0),
OpCode(),
OpCode(0x28, m6502, PLP, address_modes<m6502,PLP>::value, implied, 1, 4, 0x0),
OpCode(0x29, m6502, AND, address_modes<m6502,AND>::value, immediate, 2, 2, 0x0),
OpCode(0x2A, m6502, ROL, address_modes<m6502,ROL>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(0x2C, m6502, BIT, address_modes<m6502,BIT>::value, absolute, 3, 4, 0x0),
OpCode(0x2D, m6502, AND, address_modes<m6502,AND>::value, absolute, 3, 4, 0x0),
OpCode(0x2E, m6502, ROL, address_modes<m6502,ROL>::value, absolute, 3, 6, 0x0),
OpCode(),
OpCode(0x30, m6502, BMI, address_modes<m6502,BMI>::value, relative, 2, 2, 0x0),
OpCode(0x31, m6502, AND, address_modes<m6502,AND>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x35, m6502, AND, address_modes<m6502,AND>::value, zp_x, 2, 4, 0x0),
OpCode(0x36, m6502, ROL, address_modes<m6502,ROL>::value, zp_x, 2, 6, 0x0),
OpCode(),
OpCode(0x38, m6502, SEC, address_modes<m6502,SEC>::value, implied, 1, 2, 0x0),
OpCode(0x39, m6502, AND, address_modes<m6502,AND>::value, absolute_y, 3, 4, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x3D, m6502, AND, address_modes<m6502,AND>::value, absolute_x, 3, 4, 0x0),
OpCode(0x3E, m6502, ROL, address_modes<m6502,ROL>::value, absolute_x, 3, 7, 0x0),
OpCode(),
OpCode(0x40, m6502, RTI, address_modes<m6502,RTI>::value, implied, 1, 6, 0x0),
OpCode(0x41, m6502, EOR, address_modes<m6502,EOR>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x45, m6502, EOR, address_modes<m6502,EOR>::value, zp, 2, 3, 0x0),
OpCode(0x46, m6502, LSR, address_modes<m6502,LSR>::value, zp, 2, 5, 0x0),
OpCode(),
OpCode(0x48, m6502, PHA, address_modes<m6502,PHA>::value, implied, 1, 3, 0x0),
OpCode(0x49, m6502, EOR, address_modes<m6502,EOR>::value, immediate, 2, 2, 0x0),
OpCode(0x4A, m6502, LSR, address_modes<m6502,LSR>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(0x4C, m6502, JMP, address_modes<m6502,JMP>::value, absolute, 3, 3, 0x0),
OpCode(0x4D, m6502, EOR, address_modes<m6502,EOR>::value, absolute, 3, 4, 0x0),
OpCode(0x4E, m6502, LSR, address_modes<m6502,LSR>::value, absolute, 3, 6, 0x0),
OpCode(),
OpCode(0x50, m6502, BVC, address_modes<m6502,BVC>::value, relative, 2, 2, 0x0),
OpCode(0x51, m6502, EOR, address_modes<m6502,EOR>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x55, m6502, EOR, address_modes<m6502,EOR>::value, zp_x, 2, 4, 0x0),
OpCode(0x56, m6502, LSR, address_modes<m6502,LSR>::value, zp_x, 2, 6, 0x0),
OpCode(),
OpCode(0x58, m6502, CLI, address_modes<m6502,CLI>::value, implied, 1, 2, 0x0),
OpCode(0x59, m6502, EOR, address_modes<m6502,EOR>::value, absolute_y, 3, 4, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x5D, m6502, EOR, address_modes<m6502,EOR>::value, absolute_x, 3, 4, 0x0),
OpCode(0x5E, m6502, LSR, address_modes<m6502,LSR>::value, absolute_x, 3, 7, 0x0),
OpCode(),
OpCode(0x60, m6502, RTS, address_modes<m6502,RTS>::value, implied, 1, 6, 0x0),
OpCode(0x61, m6502, ADC, address_modes<m6502,ADC>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x65, m6502, ADC, address_modes<m6502,ADC>::value, zp, 2, 3, 0x0),
OpCode(0x66, m6502, ROR, address_modes<m6502,ROR>::value, zp, 2, 5, 0x0),
OpCode(),
OpCode(0x68, m6502, PLA, address_modes<m6502,PLA>::value, implied, 1, 4, 0x0),
OpCode(0x69, m6502, ADC, address_modes<m6502,ADC>::value, immediate, 2, 2, 0x0),
OpCode(0x6A, m6502, ROR, address_modes<m6502,ROR>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(0x6C, m6502, JMP, address_modes<m6502,JMP>::value, absolute_indirect, 3, 5, 0x0),
OpCode(0x6D, m6502, ADC, address_modes<m6502,ADC>::value, absolute, 3, 4, 0x0),
OpCode(0x6E, m6502, ROR, address_modes<m6502,ROR>::value, absolute, 3, 6, 0x0),
OpCode(),
OpCode(0x70, m6502, BVS, address_modes<m6502,BVS>::value, relative, 2, 2, 0x0),
OpCode(0x71, m6502, ADC, address_modes<m6502,ADC>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x75, m6502, ADC, address_modes<m6502,ADC>::value, zp_x, 2, 4, 0x0),
OpCode(0x76, m6502, ROR, address_modes<m6502,ROR>::value, zp_x, 2, 6, 0x0),
OpCode(),
OpCode(0x78, m6502, SEI, address_modes<m6502,SEI>::value, implied, 1, 2, 0x0),
OpCode(0x79, m6502, ADC, address_modes<m6502,ADC>::value, absolute_y, 3, 4, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0x7D, m6502, ADC, address_modes<m6502,ADC>::value, absolute_x, 3, 4, 0x0),
OpCode(0x7E, m6502, ROR, address_modes<m6502,ROR>::value, absolute_x, 3, 7, 0x0),
OpCode(),
OpCode(),
OpCode(0x81, m6502, STA, address_modes<m6502,STA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(),
OpCode(),
OpCode(0x84, m6502, STY, address_modes<m6502,STY>::value, zp, 2, 3, 0x0),
OpCode(0x85, m6502, STA, address_modes<m6502,STA>::value, zp, 2, 3, 0x0),
OpCode(0x86, m6502, STX, address_modes<m6502,STX>::value, zp, 2, 3, 0x0),
OpCode(),
OpCode(0x88, m6502, DEY, address_modes<m6502,DEY>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(0x8A, m6502, TXA, address_modes<m6502,TXA>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(0x8C, m6502, STY, address_modes<m6502,STY>::value, absolute, 3, 4, 0x0),
OpCode(0x8D, m6502, STA, address_modes<m6502,STA>::value, absolute, 3, 4, 0x0),
OpCode(0x8E, m6502, STX, address_modes<m6502,STX>::value, absolute, 3, 4, 0x0),
OpCode(),
OpCode(0x90, m6502, BCC, address_modes<m6502,BCC>::value, relative, 2, 2, 0x0),
OpCode(0x91, m6502, STA, address_modes<m6502,STA>::value, zp_indirect_y, 2, 6, 0x0),
OpCode(),
OpCode(),
OpCode(0x94, m6502, STY, address_modes<m6502,STY>::value, zp_x, 2, 4, 0x0),
OpCode(0x95, m6502, STA, address_modes<m6502,STA>::value, zp_x, 2, 4, 0x0),
OpCode(0x96, m6502, STX, address_modes<m6502,STX>::value, zp_y, 2, 4, 0x0),
OpCode(),
OpCode(0x98, m6502, TYA, address_modes<m6502,TYA>::value, implied, 1, 2, 0x0),
OpCode(0x99, m6502, STA, address_modes<m6502,STA>::value, absolute_y, 3, 5, 0x0),
OpCode(0x9A, m6502, TXS, address_modes<m6502,TXS>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(),
OpCode(0x9D, m6502, STA, address_modes<m6502,STA>::value, absolute_x, 3, 5, 0x0),
OpCode(),
OpCode(),
OpCode(0xA0, m6502, LDY, address_modes<m6502,LDY>::value, immediate, 2, 2, 0x0),
OpCode(0xA1, m6502, LDA, address_modes<m6502,LDA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0xA2, m6502, LDX, address_modes<m6502,LDX>::value, immediate, 2, 2, 0x0),
OpCode(),
OpCode(0xA4, m6502, LDY, address_modes<m6502,LDY>::value, zp, 2, 3, 0x0),
OpCode(0xA5, m6502, LDA, address_modes<m6502,LDA>::value, zp, 2, 3, 0x0),
OpCode(0xA6, m6502, LDX, address_modes<m6502,LDX>::value, zp, 2, 3, 0x0),
OpCode(),
OpCode(0xA8, m6502, TAY, address_modes<m6502,TAY>::value, implied, 1, 2, 0x0),
OpCode(0xA9, m6502, LDA, address_modes<m6502,LDA>::value, immediate, 2, 2, 0x0),
OpCode(0xAA, m6502, TAX, address_modes<m6502,TAX>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(0xAC, m6502, LDY, address_modes<m6502,LDY>::value, absolute, 3, 4, 0x0),
OpCode(0xAD, m6502, LDA, address_modes<m6502,LDA>::value, absolute, 3, 4, 0x0),
OpCode(0xAE, m6502, LDX, address_modes<m6502,LDX>::value, absolute, 3, 4, 0x0),
OpCode(),
OpCode(0xB0, m6502, BCS, address_modes<m6502,BCS>::value, relative, 2, 2, 0x0),
OpCode(0xB1, m6502, LDA, address_modes<m6502,LDA>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(),
OpCode(),
OpCode(0xB4, m6502, LDY, address_modes<m6502,LDY>::value, zp_x, 2, 4, 0x0),
OpCode(0xB5, m6502, LDA, address_modes<m6502,LDA>::value, zp_x, 2, 4, 0x0),
OpCode(0xB6, m6502, LDX, address_modes<m6502,LDX>::value, zp_y, 2, 4, 0x0),
OpCode(),
OpCode(0xB8, m6502, CLV, address_modes<m6502,CLV>::value, implied, 1, 2, 0x0),
OpCode(0xB9, m6502, LDA, address_modes<m6502,LDA>::value, absolute_y, 3, 4, 0x0),
OpCode(0xBA, m6502, TSX, address_modes<m6502,TSX>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(0xBC, m6502, LDY, address_modes<m6502,LDY>::value, absolute_x, 3, 4, 0x0),
OpCode(0xBD, m6502, LDA, address_modes<m6502,LDA>::value, absolute_x, 3, 4, 0x0),
OpCode(0xBE, m6502, LDX, address_modes<m6502,LDX>::value, absolute_y, 3, 4, 0x0),
OpCode(),
OpCode(0xC0, m6502, CPY, address_modes<m6502,CPY>::value, immediate, 2, 2, 0x0),
OpCode(0xC1, m6502, CMP, address_modes<m6502,CMP>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(),
OpCode(),
OpCode(0xC4, m6502, CPY, address_modes<m6502,CPY>::value, zp, 2, 3, 0x0),
OpCode(0xC5, m6502, CMP, address_modes<m6502,CMP>::value, zp, 2, 3, 0x0),
OpCode(0xC6, m6502, DEC, address_modes<m6502,DEC>::value, zp, 2, 5, 0x0),
OpCode(),
OpCode(0xC8, m6502, INY, address_modes<m6502,INY>::value, implied, 1, 2, 0x0),
OpCode(0xC9, m6502, CMP, address_modes<m6502,CMP>::value, immediate, 2, 2, 0x0),
OpCode(0xCA, m6502, DEX, address_modes<m6502,DEX>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(0xCC, m6502, CPY, address_modes<m6502,CPY>::value, absolute, 3, 4, 0x0),
OpCode(0xCD, m6502, CMP, address_modes<m6502,CMP>::value, absolute, 3, 4, 0x0),
OpCode(0xCE, m6502, DEC, address_modes<m6502,DEC>::value, absolute, 3, 6, 0x0),
OpCode(),
OpCode(0xD0, m6502, BNE, address_modes<m6502,BNE>::value, relative, 2, 2, 0x0),
OpCode(0xD1, m6502, CMP, address_modes<m6502,CMP>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0xD5, m6502, CMP, address_modes<m6502,CMP>::value, zp_x, 2, 4, 0x0),
OpCode(0xD6, m6502, DEC, address_modes<m6502,DEC>::value, zp_x, 2, 6, 0x0),
OpCode(),
OpCode(0xD8, m6502, CLD, address_modes<m6502,CLD>::value, implied, 1, 2, 0x0),
OpCode(0xD9, m6502, CMP, address_modes<m6502,CMP>::value, absolute_y, 3, 4, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0xDD, m6502, CMP, address_modes<m6502,CMP>::value, absolute_x, 3, 4, 0x0),
OpCode(0xDE, m6502, DEC, address_modes<m6502,DEC>::value, absolute_x, 3, 7, 0x0),
OpCode(),
OpCode(0xE0, m6502, CPX, address_modes<m6502,CPX>::value, immediate, 2, 2, 0x0),
OpCode(0xE1, m6502, SBC, address_modes<m6502,SBC>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(),
OpCode(),
OpCode(0xE4, m6502, CPX, address_modes<m6502,CPX>::value, zp, 2, 3, 0x0),
OpCode(0xE5, m6502, SBC, address_modes<m6502,SBC>::value, zp, 2, 3, 0x0),
OpCode(0xE6, m6502, INC, address_modes<m6502,INC>::value, zp, 2, 5, 0x0),
OpCode(),
OpCode(0xE8, m6502, INX, address_modes<m6502,INX>::value, implied, 1, 2, 0x0),
OpCode(0xE9, m6502, SBC, address_modes<m6502,SBC>::value, immediate, 2, 2, 0x0),
OpCode(0xEA, m6502, NOP, address_modes<m6502,NOP>::value, implied, 1, 2, 0x0),
OpCode(),
OpCode(0xEC, m6502, CPX, address_modes<m6502,CPX>::value, absolute, 3, 4, 0x0),
OpCode(0xED, m6502, SBC, address_modes<m6502,SBC>::value, absolute, 3, 4, 0x0),
OpCode(0xEE, m6502, INC, address_modes<m6502,INC>::value, absolute, 3, 6, 0x0),
OpCode(),
OpCode(0xF0, m6502, BEQ, address_modes<m6502,BEQ>::value, relative, 2, 2, 0x0),
OpCode(0xF1, m6502, SBC, address_modes<m6502,SBC>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0xF5, m6502, SBC, address_modes<m6502,SBC>::value, zp_x, 2, 4, 0x0),
OpCode(0xF6, m6502, INC, address_modes<m6502,INC>::value, zp_x, 2, 6, 0x0),
OpCode(),
OpCode(0xF8, m6502, SED, address_modes<m6502,SED>::value, implied, 1, 2, 0x0),
OpCode(0xF9, m6502, SBC, address_modes<m6502,SBC>::value, absolute_y, 3, 4, 0x0),
OpCode(),
OpCode(),
OpCode(),
OpCode(0xFD, m6502, SBC, address_modes<m6502,SBC>::value, absolute_x, 3, 4, 0x0),
OpCode(0xFE, m6502, INC, address_modes<m6502,INC>::value, absolute_x, 3, 7, 0x0),
OpCode()
};
OpCode OpCode::m65c02_opcodes[256] = {
OpCode(0x00, m65c02, BRK, address_modes<m65c02,BRK>::value, interrupt, 2, 0, 0x0),
OpCode(0x01, m65c02, ORA, address_modes<m65c02,ORA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x02, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x03, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x04, m65c02, TSB, address_modes<m65c02,TSB>::value, zp, 2, 5, 0x0),
OpCode(0x05, m65c02, ORA, address_modes<m65c02,ORA>::value, zp, 2, 3, 0x0),
OpCode(0x06, m65c02, ASL, address_modes<m65c02,ASL>::value, zp, 2, 5, 0x0),
OpCode(0x07, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x08, m65c02, PHP, address_modes<m65c02,PHP>::value, implied, 1, 3, 0x0),
OpCode(0x09, m65c02, ORA, address_modes<m65c02,ORA>::value, immediate, 2, 2, 0x0),
OpCode(0x0A, m65c02, ASL, address_modes<m65c02,ASL>::value, implied, 1, 2, 0x0),
OpCode(0x0B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x0C, m65c02, TSB, address_modes<m65c02,TSB>::value, absolute, 3, 6, 0x0),
OpCode(0x0D, m65c02, ORA, address_modes<m65c02,ORA>::value, absolute, 3, 4, 0x0),
OpCode(0x0E, m65c02, ASL, address_modes<m65c02,ASL>::value, absolute, 3, 6, 0x0),
OpCode(0x0F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x10, m65c02, BPL, address_modes<m65c02,BPL>::value, relative, 2, 2, 0x0),
OpCode(0x11, m65c02, ORA, address_modes<m65c02,ORA>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x12, m65c02, ORA, address_modes<m65c02,ORA>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x13, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x14, m65c02, TRB, address_modes<m65c02,TRB>::value, zp, 2, 5, 0x0),
OpCode(0x15, m65c02, ORA, address_modes<m65c02,ORA>::value, zp_x, 2, 4, 0x0),
OpCode(0x16, m65c02, ASL, address_modes<m65c02,ASL>::value, zp_x, 2, 6, 0x0),
OpCode(0x17, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x18, m65c02, CLC, address_modes<m65c02,CLC>::value, implied, 1, 2, 0x0),
OpCode(0x19, m65c02, ORA, address_modes<m65c02,ORA>::value, absolute_y, 3, 4, 0x0),
OpCode(0x1A, m65c02, INC, address_modes<m65c02,INC>::value, implied, 1, 2, 0x0),
OpCode(0x1B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x1C, m65c02, TRB, address_modes<m65c02,TRB>::value, absolute, 3, 6, 0x0),
OpCode(0x1D, m65c02, ORA, address_modes<m65c02,ORA>::value, absolute_x, 3, 4, 0x0),
OpCode(0x1E, m65c02, ASL, address_modes<m65c02,ASL>::value, absolute_x, 3, 6, 0x0),
OpCode(0x1F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x20, m65c02, JSR, address_modes<m65c02,JSR>::value, absolute, 3, 6, 0x0),
OpCode(0x21, m65c02, AND, address_modes<m65c02,AND>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x22, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x23, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x24, m65c02, BIT, address_modes<m65c02,BIT>::value, zp, 2, 3, 0x0),
OpCode(0x25, m65c02, AND, address_modes<m65c02,AND>::value, zp, 2, 3, 0x0),
OpCode(0x26, m65c02, ROL, address_modes<m65c02,ROL>::value, zp, 2, 5, 0x0),
OpCode(0x27, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x28, m65c02, PLP, address_modes<m65c02,PLP>::value, implied, 1, 4, 0x0),
OpCode(0x29, m65c02, AND, address_modes<m65c02,AND>::value, immediate, 2, 2, 0x0),
OpCode(0x2A, m65c02, ROL, address_modes<m65c02,ROL>::value, implied, 1, 2, 0x0),
OpCode(0x2B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x2C, m65c02, BIT, address_modes<m65c02,BIT>::value, absolute, 3, 4, 0x0),
OpCode(0x2D, m65c02, AND, address_modes<m65c02,AND>::value, absolute, 3, 4, 0x0),
OpCode(0x2E, m65c02, ROL, address_modes<m65c02,ROL>::value, absolute, 3, 6, 0x0),
OpCode(0x2F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x30, m65c02, BMI, address_modes<m65c02,BMI>::value, relative, 2, 2, 0x0),
OpCode(0x31, m65c02, AND, address_modes<m65c02,AND>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x32, m65c02, AND, address_modes<m65c02,AND>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x33, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x34, m65c02, BIT, address_modes<m65c02,BIT>::value, zp_x, 2, 4, 0x0),
OpCode(0x35, m65c02, AND, address_modes<m65c02,AND>::value, zp_x, 2, 4, 0x0),
OpCode(0x36, m65c02, ROL, address_modes<m65c02,ROL>::value, zp_x, 2, 6, 0x0),
OpCode(0x37, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x38, m65c02, SEC, address_modes<m65c02,SEC>::value, implied, 1, 2, 0x0),
OpCode(0x39, m65c02, AND, address_modes<m65c02,AND>::value, absolute_y, 3, 4, 0x0),
OpCode(0x3A, m65c02, DEC, address_modes<m65c02,DEC>::value, implied, 1, 2, 0x0),
OpCode(0x3B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x3C, m65c02, BIT, address_modes<m65c02,BIT>::value, absolute_x, 3, 4, 0x0),
OpCode(0x3D, m65c02, AND, address_modes<m65c02,AND>::value, absolute_x, 3, 4, 0x0),
OpCode(0x3E, m65c02, ROL, address_modes<m65c02,ROL>::value, absolute_x, 3, 6, 0x0),
OpCode(0x3F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x40, m65c02, RTI, address_modes<m65c02,RTI>::value, implied, 1, 6, 0x0),
OpCode(0x41, m65c02, EOR, address_modes<m65c02,EOR>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x42, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x43, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x44, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 3, 0x0),
OpCode(0x45, m65c02, EOR, address_modes<m65c02,EOR>::value, zp, 2, 3, 0x0),
OpCode(0x46, m65c02, LSR, address_modes<m65c02,LSR>::value, zp, 2, 5, 0x0),
OpCode(0x47, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x48, m65c02, PHA, address_modes<m65c02,PHA>::value, implied, 1, 3, 0x0),
OpCode(0x49, m65c02, EOR, address_modes<m65c02,EOR>::value, immediate, 2, 2, 0x0),
OpCode(0x4A, m65c02, LSR, address_modes<m65c02,LSR>::value, implied, 1, 2, 0x0),
OpCode(0x4B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x4C, m65c02, JMP, address_modes<m65c02,JMP>::value, absolute, 3, 3, 0x0),
OpCode(0x4D, m65c02, EOR, address_modes<m65c02,EOR>::value, absolute, 3, 4, 0x0),
OpCode(0x4E, m65c02, LSR, address_modes<m65c02,LSR>::value, absolute, 3, 6, 0x0),
OpCode(0x4F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x50, m65c02, BVC, address_modes<m65c02,BVC>::value, relative, 2, 2, 0x0),
OpCode(0x51, m65c02, EOR, address_modes<m65c02,EOR>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x52, m65c02, EOR, address_modes<m65c02,EOR>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x53, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x54, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 4, 0x0),
OpCode(0x55, m65c02, EOR, address_modes<m65c02,EOR>::value, zp_x, 2, 4, 0x0),
OpCode(0x56, m65c02, LSR, address_modes<m65c02,LSR>::value, zp_x, 2, 6, 0x0),
OpCode(0x57, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x58, m65c02, CLI, address_modes<m65c02,CLI>::value, implied, 1, 2, 0x0),
OpCode(0x59, m65c02, EOR, address_modes<m65c02,EOR>::value, absolute_y, 3, 4, 0x0),
OpCode(0x5A, m65c02, PHY, address_modes<m65c02,PHY>::value, implied, 1, 3, 0x0),
OpCode(0x5B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x5C, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 3, 8, 0x0),
OpCode(0x5D, m65c02, EOR, address_modes<m65c02,EOR>::value, absolute_x, 3, 4, 0x0),
OpCode(0x5E, m65c02, LSR, address_modes<m65c02,LSR>::value, absolute_x, 3, 6, 0x0),
OpCode(0x5F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x60, m65c02, RTS, address_modes<m65c02,RTS>::value, implied, 1, 6, 0x0),
OpCode(0x61, m65c02, ADC, address_modes<m65c02,ADC>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x62, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x63, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x64, m65c02, STZ, address_modes<m65c02,STZ>::value, zp, 2, 3, 0x0),
OpCode(0x65, m65c02, ADC, address_modes<m65c02,ADC>::value, zp, 2, 3, 0x0),
OpCode(0x66, m65c02, ROR, address_modes<m65c02,ROR>::value, zp, 2, 5, 0x0),
OpCode(0x67, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x68, m65c02, PLA, address_modes<m65c02,PLA>::value, implied, 1, 4, 0x0),
OpCode(0x69, m65c02, ADC, address_modes<m65c02,ADC>::value, immediate, 2, 2, 0x0),
OpCode(0x6A, m65c02, ROR, address_modes<m65c02,ROR>::value, implied, 1, 2, 0x0),
OpCode(0x6B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x6C, m65c02, JMP, address_modes<m65c02,JMP>::value, absolute_indirect, 3, 6, 0x0),
OpCode(0x6D, m65c02, ADC, address_modes<m65c02,ADC>::value, absolute, 3, 4, 0x0),
OpCode(0x6E, m65c02, ROR, address_modes<m65c02,ROR>::value, absolute, 3, 6, 0x0),
OpCode(0x6F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x70, m65c02, BVS, address_modes<m65c02,BVS>::value, relative, 2, 2, 0x0),
OpCode(0x71, m65c02, ADC, address_modes<m65c02,ADC>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x72, m65c02, ADC, address_modes<m65c02,ADC>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x73, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x74, m65c02, STZ, address_modes<m65c02,STZ>::value, zp_x, 2, 4, 0x0),
OpCode(0x75, m65c02, ADC, address_modes<m65c02,ADC>::value, zp_x, 2, 4, 0x0),
OpCode(0x76, m65c02, ROR, address_modes<m65c02,ROR>::value, zp_x, 2, 6, 0x0),
OpCode(0x77, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x78, m65c02, SEI, address_modes<m65c02,SEI>::value, implied, 1, 2, 0x0),
OpCode(0x79, m65c02, ADC, address_modes<m65c02,ADC>::value, absolute_y, 3, 4, 0x0),
OpCode(0x7A, m65c02, PLY, address_modes<m65c02,PLY>::value, implied, 1, 4, 0x0),
OpCode(0x7B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x7C, m65c02, JMP, address_modes<m65c02,JMP>::value, absolute_indirect_x, 3, 6, 0x0),
OpCode(0x7D, m65c02, ADC, address_modes<m65c02,ADC>::value, absolute_x, 3, 4, 0x0),
OpCode(0x7E, m65c02, ROR, address_modes<m65c02,ROR>::value, absolute_x, 3, 6, 0x0),
OpCode(0x7F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x80, m65c02, BRA, address_modes<m65c02,BRA>::value, relative, 2, 3, 0x0),
OpCode(0x81, m65c02, STA, address_modes<m65c02,STA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x82, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x83, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x84, m65c02, STY, address_modes<m65c02,STY>::value, zp, 2, 3, 0x0),
OpCode(0x85, m65c02, STA, address_modes<m65c02,STA>::value, zp, 2, 3, 0x0),
OpCode(0x86, m65c02, STX, address_modes<m65c02,STX>::value, zp, 2, 3, 0x0),
OpCode(0x87, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x88, m65c02, DEY, address_modes<m65c02,DEY>::value, implied, 1, 2, 0x0),
OpCode(0x89, m65c02, BIT, address_modes<m65c02,BIT>::value, immediate, 2, 2, 0x0),
OpCode(0x8A, m65c02, TXA, address_modes<m65c02,TXA>::value, implied, 1, 2, 0x0),
OpCode(0x8B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x8C, m65c02, STY, address_modes<m65c02,STY>::value, absolute, 3, 4, 0x0),
OpCode(0x8D, m65c02, STA, address_modes<m65c02,STA>::value, absolute, 3, 4, 0x0),
OpCode(0x8E, m65c02, STX, address_modes<m65c02,STX>::value, absolute, 3, 4, 0x0),
OpCode(0x8F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x90, m65c02, BCC, address_modes<m65c02,BCC>::value, relative, 2, 2, 0x0),
OpCode(0x91, m65c02, STA, address_modes<m65c02,STA>::value, zp_indirect_y, 2, 6, 0x0),
OpCode(0x92, m65c02, STA, address_modes<m65c02,STA>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x93, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x94, m65c02, STY, address_modes<m65c02,STY>::value, zp_x, 2, 4, 0x0),
OpCode(0x95, m65c02, STA, address_modes<m65c02,STA>::value, zp_x, 2, 4, 0x0),
OpCode(0x96, m65c02, STX, address_modes<m65c02,STX>::value, zp_y, 2, 4, 0x0),
OpCode(0x97, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x98, m65c02, TYA, address_modes<m65c02,TYA>::value, implied, 1, 2, 0x0),
OpCode(0x99, m65c02, STA, address_modes<m65c02,STA>::value, absolute_y, 3, 5, 0x0),
OpCode(0x9A, m65c02, TXS, address_modes<m65c02,TXS>::value, implied, 1, 2, 0x0),
OpCode(0x9B, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x9C, m65c02, STZ, address_modes<m65c02,STZ>::value, absolute, 3, 4, 0x0),
OpCode(0x9D, m65c02, STA, address_modes<m65c02,STA>::value, absolute_x, 3, 5, 0x0),
OpCode(0x9E, m65c02, STZ, address_modes<m65c02,STZ>::value, absolute_x, 3, 5, 0x0),
OpCode(0x9F, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xA0, m65c02, LDY, address_modes<m65c02,LDY>::value, immediate, 2, 2, 0x0),
OpCode(0xA1, m65c02, LDA, address_modes<m65c02,LDA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0xA2, m65c02, LDX, address_modes<m65c02,LDX>::value, immediate, 2, 2, 0x0),
OpCode(0xA3, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xA4, m65c02, LDY, address_modes<m65c02,LDY>::value, zp, 2, 3, 0x0),
OpCode(0xA5, m65c02, LDA, address_modes<m65c02,LDA>::value, zp, 2, 3, 0x0),
OpCode(0xA6, m65c02, LDX, address_modes<m65c02,LDX>::value, zp, 2, 3, 0x0),
OpCode(0xA7, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xA8, m65c02, TAY, address_modes<m65c02,TAY>::value, implied, 1, 2, 0x0),
OpCode(0xA9, m65c02, LDA, address_modes<m65c02,LDA>::value, immediate, 2, 2, 0x0),
OpCode(0xAA, m65c02, TAX, address_modes<m65c02,TAX>::value, implied, 1, 2, 0x0),
OpCode(0xAB, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xAC, m65c02, LDY, address_modes<m65c02,LDY>::value, absolute, 3, 4, 0x0),
OpCode(0xAD, m65c02, LDA, address_modes<m65c02,LDA>::value, absolute, 3, 4, 0x0),
OpCode(0xAE, m65c02, LDX, address_modes<m65c02,LDX>::value, absolute, 3, 4, 0x0),
OpCode(0xAF, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xB0, m65c02, BCS, address_modes<m65c02,BCS>::value, relative, 2, 2, 0x0),
OpCode(0xB1, m65c02, LDA, address_modes<m65c02,LDA>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0xB2, m65c02, LDA, address_modes<m65c02,LDA>::value, zp_indirect, 2, 5, 0x0),
OpCode(0xB3, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xB4, m65c02, LDY, address_modes<m65c02,LDY>::value, zp_x, 2, 4, 0x0),
OpCode(0xB5, m65c02, LDA, address_modes<m65c02,LDA>::value, zp_x, 2, 4, 0x0),
OpCode(0xB6, m65c02, LDX, address_modes<m65c02,LDX>::value, zp_y, 2, 4, 0x0),
OpCode(0xB7, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xB8, m65c02, CLV, address_modes<m65c02,CLV>::value, implied, 1, 2, 0x0),
OpCode(0xB9, m65c02, LDA, address_modes<m65c02,LDA>::value, absolute_y, 3, 4, 0x0),
OpCode(0xBA, m65c02, TSX, address_modes<m65c02,TSX>::value, implied, 1, 2, 0x0),
OpCode(0xBB, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xBC, m65c02, LDY, address_modes<m65c02,LDY>::value, absolute_x, 3, 4, 0x0),
OpCode(0xBD, m65c02, LDA, address_modes<m65c02,LDA>::value, absolute_x, 3, 4, 0x0),
OpCode(0xBE, m65c02, LDX, address_modes<m65c02,LDX>::value, absolute_y, 3, 4, 0x0),
OpCode(0xBF, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xC0, m65c02, CPY, address_modes<m65c02,CPY>::value, immediate, 2, 2, 0x0),
OpCode(0xC1, m65c02, CMP, address_modes<m65c02,CMP>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0xC2, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0xC3, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xC4, m65c02, CPY, address_modes<m65c02,CPY>::value, zp, 2, 3, 0x0),
OpCode(0xC5, m65c02, CMP, address_modes<m65c02,CMP>::value, zp, 2, 3, 0x0),
OpCode(0xC6, m65c02, DEC, address_modes<m65c02,DEC>::value, zp, 2, 5, 0x0),
OpCode(0xC7, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xC8, m65c02, INY, address_modes<m65c02,INY>::value, implied, 1, 2, 0x0),
OpCode(0xC9, m65c02, CMP, address_modes<m65c02,CMP>::value, immediate, 2, 2, 0x0),
OpCode(0xCA, m65c02, DEX, address_modes<m65c02,DEX>::value, implied, 1, 2, 0x0),
OpCode(0xCB, m65c02, WAI, address_modes<m65c02,WAI>::value, implied, 1, 3, 0x0),
OpCode(0xCC, m65c02, CPY, address_modes<m65c02,CPY>::value, absolute, 3, 4, 0x0),
OpCode(0xCD, m65c02, CMP, address_modes<m65c02,CMP>::value, absolute, 3, 4, 0x0),
OpCode(0xCE, m65c02, DEC, address_modes<m65c02,DEC>::value, absolute, 3, 6, 0x0),
OpCode(0xCF, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xD0, m65c02, BNE, address_modes<m65c02,BNE>::value, relative, 2, 2, 0x0),
OpCode(0xD1, m65c02, CMP, address_modes<m65c02,CMP>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0xD2, m65c02, CMP, address_modes<m65c02,CMP>::value, zp_indirect, 2, 5, 0x0),
OpCode(0xD3, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xD4, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 4, 0x0),
OpCode(0xD5, m65c02, CMP, address_modes<m65c02,CMP>::value, zp_x, 2, 4, 0x0),
OpCode(0xD6, m65c02, DEC, address_modes<m65c02,DEC>::value, zp_x, 2, 6, 0x0),
OpCode(0xD7, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xD8, m65c02, CLD, address_modes<m65c02,CLD>::value, implied, 1, 2, 0x0),
OpCode(0xD9, m65c02, CMP, address_modes<m65c02,CMP>::value, absolute_y, 3, 4, 0x0),
OpCode(0xDA, m65c02, PHX, address_modes<m65c02,PHX>::value, implied, 1, 3, 0x0),
OpCode(0xDB, m65c02, STP, address_modes<m65c02,STP>::value, implied, 1, 3, 0x0),
OpCode(0xDC, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 3, 4, 0x0),
OpCode(0xDD, m65c02, CMP, address_modes<m65c02,CMP>::value, absolute_x, 3, 4, 0x0),
OpCode(0xDE, m65c02, DEC, address_modes<m65c02,DEC>::value, absolute_x, 3, 6, 0x0),
OpCode(0xDF, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xE0, m65c02, CPX, address_modes<m65c02,CPX>::value, immediate, 2, 2, 0x0),
OpCode(0xE1, m65c02, SBC, address_modes<m65c02,SBC>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0xE2, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0xE3, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xE4, m65c02, CPX, address_modes<m65c02,CPX>::value, zp, 2, 3, 0x0),
OpCode(0xE5, m65c02, SBC, address_modes<m65c02,SBC>::value, zp, 2, 3, 0x0),
OpCode(0xE6, m65c02, INC, address_modes<m65c02,INC>::value, zp, 2, 5, 0x0),
OpCode(0xE7, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xE8, m65c02, INX, address_modes<m65c02,INX>::value, implied, 1, 2, 0x0),
OpCode(0xE9, m65c02, SBC, address_modes<m65c02,SBC>::value, immediate, 2, 2, 0x0),
OpCode(0xEA, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 2, 0x0),
OpCode(0xEB, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xEC, m65c02, CPX, address_modes<m65c02,CPX>::value, absolute, 3, 4, 0x0),
OpCode(0xED, m65c02, SBC, address_modes<m65c02,SBC>::value, absolute, 3, 4, 0x0),
OpCode(0xEE, m65c02, INC, address_modes<m65c02,INC>::value, absolute, 3, 6, 0x0),
OpCode(0xEF, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xF0, m65c02, BEQ, address_modes<m65c02,BEQ>::value, relative, 2, 2, 0x0),
OpCode(0xF1, m65c02, SBC, address_modes<m65c02,SBC>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0xF2, m65c02, SBC, address_modes<m65c02,SBC>::value, zp_indirect, 2, 5, 0x0),
OpCode(0xF3, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xF4, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 2, 4, 0x0),
OpCode(0xF5, m65c02, SBC, address_modes<m65c02,SBC>::value, zp_x, 2, 4, 0x0),
OpCode(0xF6, m65c02, INC, address_modes<m65c02,INC>::value, zp_x, 2, 6, 0x0),
OpCode(0xF7, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xF8, m65c02, SED, address_modes<m65c02,SED>::value, implied, 1, 2, 0x0),
OpCode(0xF9, m65c02, SBC, address_modes<m65c02,SBC>::value, absolute_y, 3, 4, 0x0),
OpCode(0xFA, m65c02, PLX, address_modes<m65c02,PLX>::value, implied, 1, 4, 0x0),
OpCode(0xFB, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xFC, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 3, 4, 0x0),
OpCode(0xFD, m65c02, SBC, address_modes<m65c02,SBC>::value, absolute_x, 3, 4, 0x0),
OpCode(0xFE, m65c02, INC, address_modes<m65c02,INC>::value, absolute_x, 3, 6, 0x0),
OpCode(0xFF, m65c02, NOP, address_modes<m65c02,NOP>::value, implied, 1, 1, 0x0)
};
OpCode OpCode::mw65c02_opcodes[256] = {
OpCode(0x00, mw65c02, BRK, address_modes<mw65c02,BRK>::value, interrupt, 2, 0, 0x0),
OpCode(0x01, mw65c02, ORA, address_modes<mw65c02,ORA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x02, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x03, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x04, mw65c02, TSB, address_modes<mw65c02,TSB>::value, zp, 2, 5, 0x0),
OpCode(0x05, mw65c02, ORA, address_modes<mw65c02,ORA>::value, zp, 2, 3, 0x0),
OpCode(0x06, mw65c02, ASL, address_modes<mw65c02,ASL>::value, zp, 2, 5, 0x0),
OpCode(0x07, mw65c02, RMB0, address_modes<mw65c02,RMB0>::value, zp, 2, 5, 0x0),
OpCode(0x08, mw65c02, PHP, address_modes<mw65c02,PHP>::value, implied, 1, 3, 0x0),
OpCode(0x09, mw65c02, ORA, address_modes<mw65c02,ORA>::value, immediate, 2, 2, 0x0),
OpCode(0x0A, mw65c02, ASL, address_modes<mw65c02,ASL>::value, implied, 1, 2, 0x0),
OpCode(0x0B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x0C, mw65c02, TSB, address_modes<mw65c02,TSB>::value, absolute, 3, 6, 0x0),
OpCode(0x0D, mw65c02, ORA, address_modes<mw65c02,ORA>::value, absolute, 3, 4, 0x0),
OpCode(0x0E, mw65c02, ASL, address_modes<mw65c02,ASL>::value, absolute, 3, 6, 0x0),
OpCode(0x0F, mw65c02, BBR0, address_modes<mw65c02,BBR0>::value, zp_relative, 3, 5, 0x0),
OpCode(0x10, mw65c02, BPL, address_modes<mw65c02,BPL>::value, relative, 2, 2, 0x0),
OpCode(0x11, mw65c02, ORA, address_modes<mw65c02,ORA>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x12, mw65c02, ORA, address_modes<mw65c02,ORA>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x13, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x14, mw65c02, TRB, address_modes<mw65c02,TRB>::value, zp, 2, 5, 0x0),
OpCode(0x15, mw65c02, ORA, address_modes<mw65c02,ORA>::value, zp_x, 2, 4, 0x0),
OpCode(0x16, mw65c02, ASL, address_modes<mw65c02,ASL>::value, zp_x, 2, 6, 0x0),
OpCode(0x17, mw65c02, RMB1, address_modes<mw65c02,RMB1>::value, zp, 2, 5, 0x0),
OpCode(0x18, mw65c02, CLC, address_modes<mw65c02,CLC>::value, implied, 1, 2, 0x0),
OpCode(0x19, mw65c02, ORA, address_modes<mw65c02,ORA>::value, absolute_y, 3, 4, 0x0),
OpCode(0x1A, mw65c02, INC, address_modes<mw65c02,INC>::value, implied, 1, 2, 0x0),
OpCode(0x1B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x1C, mw65c02, TRB, address_modes<mw65c02,TRB>::value, absolute, 3, 6, 0x0),
OpCode(0x1D, mw65c02, ORA, address_modes<mw65c02,ORA>::value, absolute_x, 3, 4, 0x0),
OpCode(0x1E, mw65c02, ASL, address_modes<mw65c02,ASL>::value, absolute_x, 3, 6, 0x0),
OpCode(0x1F, mw65c02, BBR1, address_modes<mw65c02,BBR1>::value, zp_relative, 3, 5, 0x0),
OpCode(0x20, mw65c02, JSR, address_modes<mw65c02,JSR>::value, absolute, 3, 6, 0x0),
OpCode(0x21, mw65c02, AND, address_modes<mw65c02,AND>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x22, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x23, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x24, mw65c02, BIT, address_modes<mw65c02,BIT>::value, zp, 2, 3, 0x0),
OpCode(0x25, mw65c02, AND, address_modes<mw65c02,AND>::value, zp, 2, 3, 0x0),
OpCode(0x26, mw65c02, ROL, address_modes<mw65c02,ROL>::value, zp, 2, 5, 0x0),
OpCode(0x27, mw65c02, RMB2, address_modes<mw65c02,RMB2>::value, zp, 2, 5, 0x0),
OpCode(0x28, mw65c02, PLP, address_modes<mw65c02,PLP>::value, implied, 1, 4, 0x0),
OpCode(0x29, mw65c02, AND, address_modes<mw65c02,AND>::value, immediate, 2, 2, 0x0),
OpCode(0x2A, mw65c02, ROL, address_modes<mw65c02,ROL>::value, implied, 1, 2, 0x0),
OpCode(0x2B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x2C, mw65c02, BIT, address_modes<mw65c02,BIT>::value, absolute, 3, 4, 0x0),
OpCode(0x2D, mw65c02, AND, address_modes<mw65c02,AND>::value, absolute, 3, 4, 0x0),
OpCode(0x2E, mw65c02, ROL, address_modes<mw65c02,ROL>::value, absolute, 3, 6, 0x0),
OpCode(0x2F, mw65c02, BBR2, address_modes<mw65c02,BBR2>::value, zp_relative, 3, 5, 0x0),
OpCode(0x30, mw65c02, BMI, address_modes<mw65c02,BMI>::value, relative, 2, 2, 0x0),
OpCode(0x31, mw65c02, AND, address_modes<mw65c02,AND>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x32, mw65c02, AND, address_modes<mw65c02,AND>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x33, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x34, mw65c02, BIT, address_modes<mw65c02,BIT>::value, zp_x, 2, 4, 0x0),
OpCode(0x35, mw65c02, AND, address_modes<mw65c02,AND>::value, zp_x, 2, 4, 0x0),
OpCode(0x36, mw65c02, ROL, address_modes<mw65c02,ROL>::value, zp_x, 2, 6, 0x0),
OpCode(0x37, mw65c02, RMB3, address_modes<mw65c02,RMB3>::value, zp, 2, 5, 0x0),
OpCode(0x38, mw65c02, SEC, address_modes<mw65c02,SEC>::value, implied, 1, 2, 0x0),
OpCode(0x39, mw65c02, AND, address_modes<mw65c02,AND>::value, absolute_y, 3, 4, 0x0),
OpCode(0x3A, mw65c02, DEC, address_modes<mw65c02,DEC>::value, implied, 1, 2, 0x0),
OpCode(0x3B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x3C, mw65c02, BIT, address_modes<mw65c02,BIT>::value, absolute_x, 3, 4, 0x0),
OpCode(0x3D, mw65c02, AND, address_modes<mw65c02,AND>::value, absolute_x, 3, 4, 0x0),
OpCode(0x3E, mw65c02, ROL, address_modes<mw65c02,ROL>::value, absolute_x, 3, 6, 0x0),
OpCode(0x3F, mw65c02, BBR3, address_modes<mw65c02,BBR3>::value, zp_relative, 3, 5, 0x0),
OpCode(0x40, mw65c02, RTI, address_modes<mw65c02,RTI>::value, implied, 1, 6, 0x0),
OpCode(0x41, mw65c02, EOR, address_modes<mw65c02,EOR>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x42, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x43, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x44, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 3, 0x0),
OpCode(0x45, mw65c02, EOR, address_modes<mw65c02,EOR>::value, zp, 2, 3, 0x0),
OpCode(0x46, mw65c02, LSR, address_modes<mw65c02,LSR>::value, zp, 2, 5, 0x0),
OpCode(0x47, mw65c02, RMB4, address_modes<mw65c02,RMB4>::value, zp, 2, 5, 0x0),
OpCode(0x48, mw65c02, PHA, address_modes<mw65c02,PHA>::value, implied, 1, 3, 0x0),
OpCode(0x49, mw65c02, EOR, address_modes<mw65c02,EOR>::value, immediate, 2, 2, 0x0),
OpCode(0x4A, mw65c02, LSR, address_modes<mw65c02,LSR>::value, implied, 1, 2, 0x0),
OpCode(0x4B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x4C, mw65c02, JMP, address_modes<mw65c02,JMP>::value, absolute, 3, 3, 0x0),
OpCode(0x4D, mw65c02, EOR, address_modes<mw65c02,EOR>::value, absolute, 3, 4, 0x0),
OpCode(0x4E, mw65c02, LSR, address_modes<mw65c02,LSR>::value, absolute, 3, 6, 0x0),
OpCode(0x4F, mw65c02, BBR4, address_modes<mw65c02,BBR4>::value, zp_relative, 3, 5, 0x0),
OpCode(0x50, mw65c02, BVC, address_modes<mw65c02,BVC>::value, relative, 2, 2, 0x0),
OpCode(0x51, mw65c02, EOR, address_modes<mw65c02,EOR>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x52, mw65c02, EOR, address_modes<mw65c02,EOR>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x53, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x54, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 4, 0x0),
OpCode(0x55, mw65c02, EOR, address_modes<mw65c02,EOR>::value, zp_x, 2, 4, 0x0),
OpCode(0x56, mw65c02, LSR, address_modes<mw65c02,LSR>::value, zp_x, 2, 6, 0x0),
OpCode(0x57, mw65c02, RMB5, address_modes<mw65c02,RMB5>::value, zp, 2, 5, 0x0),
OpCode(0x58, mw65c02, CLI, address_modes<mw65c02,CLI>::value, implied, 1, 2, 0x0),
OpCode(0x59, mw65c02, EOR, address_modes<mw65c02,EOR>::value, absolute_y, 3, 4, 0x0),
OpCode(0x5A, mw65c02, PHY, address_modes<mw65c02,PHY>::value, implied, 1, 3, 0x0),
OpCode(0x5B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x5C, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 3, 8, 0x0),
OpCode(0x5D, mw65c02, EOR, address_modes<mw65c02,EOR>::value, absolute_x, 3, 4, 0x0),
OpCode(0x5E, mw65c02, LSR, address_modes<mw65c02,LSR>::value, absolute_x, 3, 6, 0x0),
OpCode(0x5F, mw65c02, BBR5, address_modes<mw65c02,BBR5>::value, zp_relative, 3, 5, 0x0),
OpCode(0x60, mw65c02, RTS, address_modes<mw65c02,RTS>::value, implied, 1, 6, 0x0),
OpCode(0x61, mw65c02, ADC, address_modes<mw65c02,ADC>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x62, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x63, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x64, mw65c02, STZ, address_modes<mw65c02,STZ>::value, zp, 2, 3, 0x0),
OpCode(0x65, mw65c02, ADC, address_modes<mw65c02,ADC>::value, zp, 2, 3, 0x0),
OpCode(0x66, mw65c02, ROR, address_modes<mw65c02,ROR>::value, zp, 2, 5, 0x0),
OpCode(0x67, mw65c02, RMB6, address_modes<mw65c02,RMB6>::value, zp, 2, 5, 0x0),
OpCode(0x68, mw65c02, PLA, address_modes<mw65c02,PLA>::value, implied, 1, 4, 0x0),
OpCode(0x69, mw65c02, ADC, address_modes<mw65c02,ADC>::value, immediate, 2, 2, 0x0),
OpCode(0x6A, mw65c02, ROR, address_modes<mw65c02,ROR>::value, implied, 1, 2, 0x0),
OpCode(0x6B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x6C, mw65c02, JMP, address_modes<mw65c02,JMP>::value, absolute_indirect, 3, 6, 0x0),
OpCode(0x6D, mw65c02, ADC, address_modes<mw65c02,ADC>::value, absolute, 3, 4, 0x0),
OpCode(0x6E, mw65c02, ROR, address_modes<mw65c02,ROR>::value, absolute, 3, 6, 0x0),
OpCode(0x6F, mw65c02, BBR6, address_modes<mw65c02,BBR6>::value, zp_relative, 3, 5, 0x0),
OpCode(0x70, mw65c02, BVS, address_modes<mw65c02,BVS>::value, relative, 2, 2, 0x0),
OpCode(0x71, mw65c02, ADC, address_modes<mw65c02,ADC>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x72, mw65c02, ADC, address_modes<mw65c02,ADC>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x73, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x74, mw65c02, STZ, address_modes<mw65c02,STZ>::value, zp_x, 2, 4, 0x0),
OpCode(0x75, mw65c02, ADC, address_modes<mw65c02,ADC>::value, zp_x, 2, 4, 0x0),
OpCode(0x76, mw65c02, ROR, address_modes<mw65c02,ROR>::value, zp_x, 2, 6, 0x0),
OpCode(0x77, mw65c02, RMB7, address_modes<mw65c02,RMB7>::value, zp, 2, 5, 0x0),
OpCode(0x78, mw65c02, SEI, address_modes<mw65c02,SEI>::value, implied, 1, 2, 0x0),
OpCode(0x79, mw65c02, ADC, address_modes<mw65c02,ADC>::value, absolute_y, 3, 4, 0x0),
OpCode(0x7A, mw65c02, PLY, address_modes<mw65c02,PLY>::value, implied, 1, 4, 0x0),
OpCode(0x7B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x7C, mw65c02, JMP, address_modes<mw65c02,JMP>::value, absolute_indirect_x, 3, 6, 0x0),
OpCode(0x7D, mw65c02, ADC, address_modes<mw65c02,ADC>::value, absolute_x, 3, 4, 0x0),
OpCode(0x7E, mw65c02, ROR, address_modes<mw65c02,ROR>::value, absolute_x, 3, 6, 0x0),
OpCode(0x7F, mw65c02, BBR7, address_modes<mw65c02,BBR7>::value, zp_relative, 3, 5, 0x0),
OpCode(0x80, mw65c02, BRA, address_modes<mw65c02,BRA>::value, relative, 2, 3, 0x0),
OpCode(0x81, mw65c02, STA, address_modes<mw65c02,STA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x82, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x83, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x84, mw65c02, STY, address_modes<mw65c02,STY>::value, zp, 2, 3, 0x0),
OpCode(0x85, mw65c02, STA, address_modes<mw65c02,STA>::value, zp, 2, 3, 0x0),
OpCode(0x86, mw65c02, STX, address_modes<mw65c02,STX>::value, zp, 2, 3, 0x0),
OpCode(0x87, mw65c02, SMB0, address_modes<mw65c02,SMB0>::value, zp, 2, 5, 0x0),
OpCode(0x88, mw65c02, DEY, address_modes<mw65c02,DEY>::value, implied, 1, 2, 0x0),
OpCode(0x89, mw65c02, BIT, address_modes<mw65c02,BIT>::value, immediate, 2, 2, 0x0),
OpCode(0x8A, mw65c02, TXA, address_modes<mw65c02,TXA>::value, implied, 1, 2, 0x0),
OpCode(0x8B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x8C, mw65c02, STY, address_modes<mw65c02,STY>::value, absolute, 3, 4, 0x0),
OpCode(0x8D, mw65c02, STA, address_modes<mw65c02,STA>::value, absolute, 3, 4, 0x0),
OpCode(0x8E, mw65c02, STX, address_modes<mw65c02,STX>::value, absolute, 3, 4, 0x0),
OpCode(0x8F, mw65c02, BBS0, address_modes<mw65c02,BBS0>::value, zp_relative, 3, 5, 0x0),
OpCode(0x90, mw65c02, BCC, address_modes<mw65c02,BCC>::value, relative, 2, 2, 0x0),
OpCode(0x91, mw65c02, STA, address_modes<mw65c02,STA>::value, zp_indirect_y, 2, 6, 0x0),
OpCode(0x92, mw65c02, STA, address_modes<mw65c02,STA>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x93, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x94, mw65c02, STY, address_modes<mw65c02,STY>::value, zp_x, 2, 4, 0x0),
OpCode(0x95, mw65c02, STA, address_modes<mw65c02,STA>::value, zp_x, 2, 4, 0x0),
OpCode(0x96, mw65c02, STX, address_modes<mw65c02,STX>::value, zp_y, 2, 4, 0x0),
OpCode(0x97, mw65c02, SMB1, address_modes<mw65c02,SMB1>::value, zp, 2, 5, 0x0),
OpCode(0x98, mw65c02, TYA, address_modes<mw65c02,TYA>::value, implied, 1, 2, 0x0),
OpCode(0x99, mw65c02, STA, address_modes<mw65c02,STA>::value, absolute_y, 3, 5, 0x0),
OpCode(0x9A, mw65c02, TXS, address_modes<mw65c02,TXS>::value, implied, 1, 2, 0x0),
OpCode(0x9B, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x9C, mw65c02, STZ, address_modes<mw65c02,STZ>::value, absolute, 3, 4, 0x0),
OpCode(0x9D, mw65c02, STA, address_modes<mw65c02,STA>::value, absolute_x, 3, 5, 0x0),
OpCode(0x9E, mw65c02, STZ, address_modes<mw65c02,STZ>::value, absolute_x, 3, 5, 0x0),
OpCode(0x9F, mw65c02, BBS1, address_modes<mw65c02,BBS1>::value, zp_relative, 3, 5, 0x0),
OpCode(0xA0, mw65c02, LDY, address_modes<mw65c02,LDY>::value, immediate, 2, 2, 0x0),
OpCode(0xA1, mw65c02, LDA, address_modes<mw65c02,LDA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0xA2, mw65c02, LDX, address_modes<mw65c02,LDX>::value, immediate, 2, 2, 0x0),
OpCode(0xA3, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xA4, mw65c02, LDY, address_modes<mw65c02,LDY>::value, zp, 2, 3, 0x0),
OpCode(0xA5, mw65c02, LDA, address_modes<mw65c02,LDA>::value, zp, 2, 3, 0x0),
OpCode(0xA6, mw65c02, LDX, address_modes<mw65c02,LDX>::value, zp, 2, 3, 0x0),
OpCode(0xA7, mw65c02, SMB2, address_modes<mw65c02,SMB2>::value, zp, 2, 5, 0x0),
OpCode(0xA8, mw65c02, TAY, address_modes<mw65c02,TAY>::value, implied, 1, 2, 0x0),
OpCode(0xA9, mw65c02, LDA, address_modes<mw65c02,LDA>::value, immediate, 2, 2, 0x0),
OpCode(0xAA, mw65c02, TAX, address_modes<mw65c02,TAX>::value, implied, 1, 2, 0x0),
OpCode(0xAB, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xAC, mw65c02, LDY, address_modes<mw65c02,LDY>::value, absolute, 3, 4, 0x0),
OpCode(0xAD, mw65c02, LDA, address_modes<mw65c02,LDA>::value, absolute, 3, 4, 0x0),
OpCode(0xAE, mw65c02, LDX, address_modes<mw65c02,LDX>::value, absolute, 3, 4, 0x0),
OpCode(0xAF, mw65c02, BBS2, address_modes<mw65c02,BBS2>::value, zp_relative, 3, 5, 0x0),
OpCode(0xB0, mw65c02, BCS, address_modes<mw65c02,BCS>::value, relative, 2, 2, 0x0),
OpCode(0xB1, mw65c02, LDA, address_modes<mw65c02,LDA>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0xB2, mw65c02, LDA, address_modes<mw65c02,LDA>::value, zp_indirect, 2, 5, 0x0),
OpCode(0xB3, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xB4, mw65c02, LDY, address_modes<mw65c02,LDY>::value, zp_x, 2, 4, 0x0),
OpCode(0xB5, mw65c02, LDA, address_modes<mw65c02,LDA>::value, zp_x, 2, 4, 0x0),
OpCode(0xB6, mw65c02, LDX, address_modes<mw65c02,LDX>::value, zp_y, 2, 4, 0x0),
OpCode(0xB7, mw65c02, SMB3, address_modes<mw65c02,SMB3>::value, zp, 2, 5, 0x0),
OpCode(0xB8, mw65c02, CLV, address_modes<mw65c02,CLV>::value, implied, 1, 2, 0x0),
OpCode(0xB9, mw65c02, LDA, address_modes<mw65c02,LDA>::value, absolute_y, 3, 4, 0x0),
OpCode(0xBA, mw65c02, TSX, address_modes<mw65c02,TSX>::value, implied, 1, 2, 0x0),
OpCode(0xBB, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xBC, mw65c02, LDY, address_modes<mw65c02,LDY>::value, absolute_x, 3, 4, 0x0),
OpCode(0xBD, mw65c02, LDA, address_modes<mw65c02,LDA>::value, absolute_x, 3, 4, 0x0),
OpCode(0xBE, mw65c02, LDX, address_modes<mw65c02,LDX>::value, absolute_y, 3, 4, 0x0),
OpCode(0xBF, mw65c02, BBS3, address_modes<mw65c02,BBS3>::value, zp_relative, 3, 5, 0x0),
OpCode(0xC0, mw65c02, CPY, address_modes<mw65c02,CPY>::value, immediate, 2, 2, 0x0),
OpCode(0xC1, mw65c02, CMP, address_modes<mw65c02,CMP>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0xC2, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0xC3, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xC4, mw65c02, CPY, address_modes<mw65c02,CPY>::value, zp, 2, 3, 0x0),
OpCode(0xC5, mw65c02, CMP, address_modes<mw65c02,CMP>::value, zp, 2, 3, 0x0),
OpCode(0xC6, mw65c02, DEC, address_modes<mw65c02,DEC>::value, zp, 2, 5, 0x0),
OpCode(0xC7, mw65c02, SMB4, address_modes<mw65c02,SMB4>::value, zp, 2, 5, 0x0),
OpCode(0xC8, mw65c02, INY, address_modes<mw65c02,INY>::value, implied, 1, 2, 0x0),
OpCode(0xC9, mw65c02, CMP, address_modes<mw65c02,CMP>::value, immediate, 2, 2, 0x0),
OpCode(0xCA, mw65c02, DEX, address_modes<mw65c02,DEX>::value, implied, 1, 2, 0x0),
OpCode(0xCB, mw65c02, WAI, address_modes<mw65c02,WAI>::value, implied, 1, 3, 0x0),
OpCode(0xCC, mw65c02, CPY, address_modes<mw65c02,CPY>::value, absolute, 3, 4, 0x0),
OpCode(0xCD, mw65c02, CMP, address_modes<mw65c02,CMP>::value, absolute, 3, 4, 0x0),
OpCode(0xCE, mw65c02, DEC, address_modes<mw65c02,DEC>::value, absolute, 3, 6, 0x0),
OpCode(0xCF, mw65c02, BBS4, address_modes<mw65c02,BBS4>::value, zp_relative, 3, 5, 0x0),
OpCode(0xD0, mw65c02, BNE, address_modes<mw65c02,BNE>::value, relative, 2, 2, 0x0),
OpCode(0xD1, mw65c02, CMP, address_modes<mw65c02,CMP>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0xD2, mw65c02, CMP, address_modes<mw65c02,CMP>::value, zp_indirect, 2, 5, 0x0),
OpCode(0xD3, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xD4, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 4, 0x0),
OpCode(0xD5, mw65c02, CMP, address_modes<mw65c02,CMP>::value, zp_x, 2, 4, 0x0),
OpCode(0xD6, mw65c02, DEC, address_modes<mw65c02,DEC>::value, zp_x, 2, 6, 0x0),
OpCode(0xD7, mw65c02, SMB5, address_modes<mw65c02,SMB5>::value, zp, 2, 5, 0x0),
OpCode(0xD8, mw65c02, CLD, address_modes<mw65c02,CLD>::value, implied, 1, 2, 0x0),
OpCode(0xD9, mw65c02, CMP, address_modes<mw65c02,CMP>::value, absolute_y, 3, 4, 0x0),
OpCode(0xDA, mw65c02, PHX, address_modes<mw65c02,PHX>::value, implied, 1, 3, 0x0),
OpCode(0xDB, mw65c02, STP, address_modes<mw65c02,STP>::value, implied, 1, 3, 0x0),
OpCode(0xDC, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 3, 4, 0x0),
OpCode(0xDD, mw65c02, CMP, address_modes<mw65c02,CMP>::value, absolute_x, 3, 4, 0x0),
OpCode(0xDE, mw65c02, DEC, address_modes<mw65c02,DEC>::value, absolute_x, 3, 6, 0x0),
OpCode(0xDF, mw65c02, BBS5, address_modes<mw65c02,BBS5>::value, zp_relative, 3, 5, 0x0),
OpCode(0xE0, mw65c02, CPX, address_modes<mw65c02,CPX>::value, immediate, 2, 2, 0x0),
OpCode(0xE1, mw65c02, SBC, address_modes<mw65c02,SBC>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0xE2, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0xE3, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xE4, mw65c02, CPX, address_modes<mw65c02,CPX>::value, zp, 2, 3, 0x0),
OpCode(0xE5, mw65c02, SBC, address_modes<mw65c02,SBC>::value, zp, 2, 3, 0x0),
OpCode(0xE6, mw65c02, INC, address_modes<mw65c02,INC>::value, zp, 2, 5, 0x0),
OpCode(0xE7, mw65c02, SMB6, address_modes<mw65c02,SMB6>::value, zp, 2, 5, 0x0),
OpCode(0xE8, mw65c02, INX, address_modes<mw65c02,INX>::value, implied, 1, 2, 0x0),
OpCode(0xE9, mw65c02, SBC, address_modes<mw65c02,SBC>::value, immediate, 2, 2, 0x0),
OpCode(0xEA, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 2, 0x0),
OpCode(0xEB, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xEC, mw65c02, CPX, address_modes<mw65c02,CPX>::value, absolute, 3, 4, 0x0),
OpCode(0xED, mw65c02, SBC, address_modes<mw65c02,SBC>::value, absolute, 3, 4, 0x0),
OpCode(0xEE, mw65c02, INC, address_modes<mw65c02,INC>::value, absolute, 3, 6, 0x0),
OpCode(0xEF, mw65c02, BBS6, address_modes<mw65c02,BBS6>::value, zp_relative, 3, 5, 0x0),
OpCode(0xF0, mw65c02, BEQ, address_modes<mw65c02,BEQ>::value, relative, 2, 2, 0x0),
OpCode(0xF1, mw65c02, SBC, address_modes<mw65c02,SBC>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0xF2, mw65c02, SBC, address_modes<mw65c02,SBC>::value, zp_indirect, 2, 5, 0x0),
OpCode(0xF3, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xF4, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 2, 4, 0x0),
OpCode(0xF5, mw65c02, SBC, address_modes<mw65c02,SBC>::value, zp_x, 2, 4, 0x0),
OpCode(0xF6, mw65c02, INC, address_modes<mw65c02,INC>::value, zp_x, 2, 6, 0x0),
OpCode(0xF7, mw65c02, SMB7, address_modes<mw65c02,SMB7>::value, zp, 2, 5, 0x0),
OpCode(0xF8, mw65c02, SED, address_modes<mw65c02,SED>::value, implied, 1, 2, 0x0),
OpCode(0xF9, mw65c02, SBC, address_modes<mw65c02,SBC>::value, absolute_y, 3, 4, 0x0),
OpCode(0xFA, mw65c02, PLX, address_modes<mw65c02,PLX>::value, implied, 1, 4, 0x0),
OpCode(0xFB, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xFC, mw65c02, NOP, address_modes<mw65c02,NOP>::value, implied, 3, 4, 0x0),
OpCode(0xFD, mw65c02, SBC, address_modes<mw65c02,SBC>::value, absolute_x, 3, 4, 0x0),
OpCode(0xFE, mw65c02, INC, address_modes<mw65c02,INC>::value, absolute_x, 3, 6, 0x0),
OpCode(0xFF, mw65c02, BBS7, address_modes<mw65c02,BBS7>::value, zp_relative, 3, 5, 0x0)
};
OpCode OpCode::mr65c02_opcodes[256] = {
OpCode(0x00, mr65c02, BRK, address_modes<mr65c02,BRK>::value, interrupt, 2, 0, 0x0),
OpCode(0x01, mr65c02, ORA, address_modes<mr65c02,ORA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x02, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x03, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x04, mr65c02, TSB, address_modes<mr65c02,TSB>::value, zp, 2, 5, 0x0),
OpCode(0x05, mr65c02, ORA, address_modes<mr65c02,ORA>::value, zp, 2, 3, 0x0),
OpCode(0x06, mr65c02, ASL, address_modes<mr65c02,ASL>::value, zp, 2, 5, 0x0),
OpCode(0x07, mr65c02, RMB0, address_modes<mr65c02,RMB0>::value, zp, 2, 5, 0x0),
OpCode(0x08, mr65c02, PHP, address_modes<mr65c02,PHP>::value, implied, 1, 3, 0x0),
OpCode(0x09, mr65c02, ORA, address_modes<mr65c02,ORA>::value, immediate, 2, 2, 0x0),
OpCode(0x0A, mr65c02, ASL, address_modes<mr65c02,ASL>::value, implied, 1, 2, 0x0),
OpCode(0x0B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x0C, mr65c02, TSB, address_modes<mr65c02,TSB>::value, absolute, 3, 6, 0x0),
OpCode(0x0D, mr65c02, ORA, address_modes<mr65c02,ORA>::value, absolute, 3, 4, 0x0),
OpCode(0x0E, mr65c02, ASL, address_modes<mr65c02,ASL>::value, absolute, 3, 6, 0x0),
OpCode(0x0F, mr65c02, BBR0, address_modes<mr65c02,BBR0>::value, zp_relative, 3, 5, 0x0),
OpCode(0x10, mr65c02, BPL, address_modes<mr65c02,BPL>::value, relative, 2, 2, 0x0),
OpCode(0x11, mr65c02, ORA, address_modes<mr65c02,ORA>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x12, mr65c02, ORA, address_modes<mr65c02,ORA>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x13, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x14, mr65c02, TRB, address_modes<mr65c02,TRB>::value, zp, 2, 5, 0x0),
OpCode(0x15, mr65c02, ORA, address_modes<mr65c02,ORA>::value, zp_x, 2, 4, 0x0),
OpCode(0x16, mr65c02, ASL, address_modes<mr65c02,ASL>::value, zp_x, 2, 6, 0x0),
OpCode(0x17, mr65c02, RMB1, address_modes<mr65c02,RMB1>::value, zp, 2, 5, 0x0),
OpCode(0x18, mr65c02, CLC, address_modes<mr65c02,CLC>::value, implied, 1, 2, 0x0),
OpCode(0x19, mr65c02, ORA, address_modes<mr65c02,ORA>::value, absolute_y, 3, 4, 0x0),
OpCode(0x1A, mr65c02, INC, address_modes<mr65c02,INC>::value, implied, 1, 2, 0x0),
OpCode(0x1B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x1C, mr65c02, TRB, address_modes<mr65c02,TRB>::value, absolute, 3, 6, 0x0),
OpCode(0x1D, mr65c02, ORA, address_modes<mr65c02,ORA>::value, absolute_x, 3, 4, 0x0),
OpCode(0x1E, mr65c02, ASL, address_modes<mr65c02,ASL>::value, absolute_x, 3, 6, 0x0),
OpCode(0x1F, mr65c02, BBR1, address_modes<mr65c02,BBR1>::value, zp_relative, 3, 5, 0x0),
OpCode(0x20, mr65c02, JSR, address_modes<mr65c02,JSR>::value, absolute, 3, 6, 0x0),
OpCode(0x21, mr65c02, AND, address_modes<mr65c02,AND>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x22, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x23, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x24, mr65c02, BIT, address_modes<mr65c02,BIT>::value, zp, 2, 3, 0x0),
OpCode(0x25, mr65c02, AND, address_modes<mr65c02,AND>::value, zp, 2, 3, 0x0),
OpCode(0x26, mr65c02, ROL, address_modes<mr65c02,ROL>::value, zp, 2, 5, 0x0),
OpCode(0x27, mr65c02, RMB2, address_modes<mr65c02,RMB2>::value, zp, 2, 5, 0x0),
OpCode(0x28, mr65c02, PLP, address_modes<mr65c02,PLP>::value, implied, 1, 4, 0x0),
OpCode(0x29, mr65c02, AND, address_modes<mr65c02,AND>::value, immediate, 2, 2, 0x0),
OpCode(0x2A, mr65c02, ROL, address_modes<mr65c02,ROL>::value, implied, 1, 2, 0x0),
OpCode(0x2B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x2C, mr65c02, BIT, address_modes<mr65c02,BIT>::value, absolute, 3, 4, 0x0),
OpCode(0x2D, mr65c02, AND, address_modes<mr65c02,AND>::value, absolute, 3, 4, 0x0),
OpCode(0x2E, mr65c02, ROL, address_modes<mr65c02,ROL>::value, absolute, 3, 6, 0x0),
OpCode(0x2F, mr65c02, BBR2, address_modes<mr65c02,BBR2>::value, zp_relative, 3, 5, 0x0),
OpCode(0x30, mr65c02, BMI, address_modes<mr65c02,BMI>::value, relative, 2, 2, 0x0),
OpCode(0x31, mr65c02, AND, address_modes<mr65c02,AND>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x32, mr65c02, AND, address_modes<mr65c02,AND>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x33, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x34, mr65c02, BIT, address_modes<mr65c02,BIT>::value, zp_x, 2, 4, 0x0),
OpCode(0x35, mr65c02, AND, address_modes<mr65c02,AND>::value, zp_x, 2, 4, 0x0),
OpCode(0x36, mr65c02, ROL, address_modes<mr65c02,ROL>::value, zp_x, 2, 6, 0x0),
OpCode(0x37, mr65c02, RMB3, address_modes<mr65c02,RMB3>::value, zp, 2, 5, 0x0),
OpCode(0x38, mr65c02, SEC, address_modes<mr65c02,SEC>::value, implied, 1, 2, 0x0),
OpCode(0x39, mr65c02, AND, address_modes<mr65c02,AND>::value, absolute_y, 3, 4, 0x0),
OpCode(0x3A, mr65c02, DEC, address_modes<mr65c02,DEC>::value, implied, 1, 2, 0x0),
OpCode(0x3B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x3C, mr65c02, BIT, address_modes<mr65c02,BIT>::value, absolute_x, 3, 4, 0x0),
OpCode(0x3D, mr65c02, AND, address_modes<mr65c02,AND>::value, absolute_x, 3, 4, 0x0),
OpCode(0x3E, mr65c02, ROL, address_modes<mr65c02,ROL>::value, absolute_x, 3, 6, 0x0),
OpCode(0x3F, mr65c02, BBR3, address_modes<mr65c02,BBR3>::value, zp_relative, 3, 5, 0x0),
OpCode(0x40, mr65c02, RTI, address_modes<mr65c02,RTI>::value, implied, 1, 6, 0x0),
OpCode(0x41, mr65c02, EOR, address_modes<mr65c02,EOR>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x42, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x43, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x44, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 2, 3, 0x0),
OpCode(0x45, mr65c02, EOR, address_modes<mr65c02,EOR>::value, zp, 2, 3, 0x0),
OpCode(0x46, mr65c02, LSR, address_modes<mr65c02,LSR>::value, zp, 2, 5, 0x0),
OpCode(0x47, mr65c02, RMB4, address_modes<mr65c02,RMB4>::value, zp, 2, 5, 0x0),
OpCode(0x48, mr65c02, PHA, address_modes<mr65c02,PHA>::value, implied, 1, 3, 0x0),
OpCode(0x49, mr65c02, EOR, address_modes<mr65c02,EOR>::value, immediate, 2, 2, 0x0),
OpCode(0x4A, mr65c02, LSR, address_modes<mr65c02,LSR>::value, implied, 1, 2, 0x0),
OpCode(0x4B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x4C, mr65c02, JMP, address_modes<mr65c02,JMP>::value, absolute, 3, 3, 0x0),
OpCode(0x4D, mr65c02, EOR, address_modes<mr65c02,EOR>::value, absolute, 3, 4, 0x0),
OpCode(0x4E, mr65c02, LSR, address_modes<mr65c02,LSR>::value, absolute, 3, 6, 0x0),
OpCode(0x4F, mr65c02, BBR4, address_modes<mr65c02,BBR4>::value, zp_relative, 3, 5, 0x0),
OpCode(0x50, mr65c02, BVC, address_modes<mr65c02,BVC>::value, relative, 2, 2, 0x0),
OpCode(0x51, mr65c02, EOR, address_modes<mr65c02,EOR>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x52, mr65c02, EOR, address_modes<mr65c02,EOR>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x53, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x54, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 2, 4, 0x0),
OpCode(0x55, mr65c02, EOR, address_modes<mr65c02,EOR>::value, zp_x, 2, 4, 0x0),
OpCode(0x56, mr65c02, LSR, address_modes<mr65c02,LSR>::value, zp_x, 2, 6, 0x0),
OpCode(0x57, mr65c02, RMB5, address_modes<mr65c02,RMB5>::value, zp, 2, 5, 0x0),
OpCode(0x58, mr65c02, CLI, address_modes<mr65c02,CLI>::value, implied, 1, 2, 0x0),
OpCode(0x59, mr65c02, EOR, address_modes<mr65c02,EOR>::value, absolute_y, 3, 4, 0x0),
OpCode(0x5A, mr65c02, PHY, address_modes<mr65c02,PHY>::value, implied, 1, 3, 0x0),
OpCode(0x5B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x5C, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 3, 8, 0x0),
OpCode(0x5D, mr65c02, EOR, address_modes<mr65c02,EOR>::value, absolute_x, 3, 4, 0x0),
OpCode(0x5E, mr65c02, LSR, address_modes<mr65c02,LSR>::value, absolute_x, 3, 6, 0x0),
OpCode(0x5F, mr65c02, BBR5, address_modes<mr65c02,BBR5>::value, zp_relative, 3, 5, 0x0),
OpCode(0x60, mr65c02, RTS, address_modes<mr65c02,RTS>::value, implied, 1, 6, 0x0),
OpCode(0x61, mr65c02, ADC, address_modes<mr65c02,ADC>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x62, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x63, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x64, mr65c02, STZ, address_modes<mr65c02,STZ>::value, zp, 2, 3, 0x0),
OpCode(0x65, mr65c02, ADC, address_modes<mr65c02,ADC>::value, zp, 2, 3, 0x0),
OpCode(0x66, mr65c02, ROR, address_modes<mr65c02,ROR>::value, zp, 2, 5, 0x0),
OpCode(0x67, mr65c02, RMB6, address_modes<mr65c02,RMB6>::value, zp, 2, 5, 0x0),
OpCode(0x68, mr65c02, PLA, address_modes<mr65c02,PLA>::value, implied, 1, 4, 0x0),
OpCode(0x69, mr65c02, ADC, address_modes<mr65c02,ADC>::value, immediate, 2, 2, 0x0),
OpCode(0x6A, mr65c02, ROR, address_modes<mr65c02,ROR>::value, implied, 1, 2, 0x0),
OpCode(0x6B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x6C, mr65c02, JMP, address_modes<mr65c02,JMP>::value, absolute_indirect, 3, 6, 0x0),
OpCode(0x6D, mr65c02, ADC, address_modes<mr65c02,ADC>::value, absolute, 3, 4, 0x0),
OpCode(0x6E, mr65c02, ROR, address_modes<mr65c02,ROR>::value, absolute, 3, 6, 0x0),
OpCode(0x6F, mr65c02, BBR6, address_modes<mr65c02,BBR6>::value, zp_relative, 3, 5, 0x0),
OpCode(0x70, mr65c02, BVS, address_modes<mr65c02,BVS>::value, relative, 2, 2, 0x0),
OpCode(0x71, mr65c02, ADC, address_modes<mr65c02,ADC>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0x72, mr65c02, ADC, address_modes<mr65c02,ADC>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x73, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x74, mr65c02, STZ, address_modes<mr65c02,STZ>::value, zp_x, 2, 4, 0x0),
OpCode(0x75, mr65c02, ADC, address_modes<mr65c02,ADC>::value, zp_x, 2, 4, 0x0),
OpCode(0x76, mr65c02, ROR, address_modes<mr65c02,ROR>::value, zp_x, 2, 6, 0x0),
OpCode(0x77, mr65c02, RMB7, address_modes<mr65c02,RMB7>::value, zp, 2, 5, 0x0),
OpCode(0x78, mr65c02, SEI, address_modes<mr65c02,SEI>::value, implied, 1, 2, 0x0),
OpCode(0x79, mr65c02, ADC, address_modes<mr65c02,ADC>::value, absolute_y, 3, 4, 0x0),
OpCode(0x7A, mr65c02, PLY, address_modes<mr65c02,PLY>::value, implied, 1, 4, 0x0),
OpCode(0x7B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x7C, mr65c02, JMP, address_modes<mr65c02,JMP>::value, absolute_indirect_x, 3, 6, 0x0),
OpCode(0x7D, mr65c02, ADC, address_modes<mr65c02,ADC>::value, absolute_x, 3, 4, 0x0),
OpCode(0x7E, mr65c02, ROR, address_modes<mr65c02,ROR>::value, absolute_x, 3, 6, 0x0),
OpCode(0x7F, mr65c02, BBR7, address_modes<mr65c02,BBR7>::value, zp_relative, 3, 5, 0x0),
OpCode(0x80, mr65c02, BRA, address_modes<mr65c02,BRA>::value, relative, 2, 3, 0x0),
OpCode(0x81, mr65c02, STA, address_modes<mr65c02,STA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0x82, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0x83, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x84, mr65c02, STY, address_modes<mr65c02,STY>::value, zp, 2, 3, 0x0),
OpCode(0x85, mr65c02, STA, address_modes<mr65c02,STA>::value, zp, 2, 3, 0x0),
OpCode(0x86, mr65c02, STX, address_modes<mr65c02,STX>::value, zp, 2, 3, 0x0),
OpCode(0x87, mr65c02, SMB0, address_modes<mr65c02,SMB0>::value, zp, 2, 5, 0x0),
OpCode(0x88, mr65c02, DEY, address_modes<mr65c02,DEY>::value, implied, 1, 2, 0x0),
OpCode(0x89, mr65c02, BIT, address_modes<mr65c02,BIT>::value, immediate, 2, 2, 0x0),
OpCode(0x8A, mr65c02, TXA, address_modes<mr65c02,TXA>::value, implied, 1, 2, 0x0),
OpCode(0x8B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x8C, mr65c02, STY, address_modes<mr65c02,STY>::value, absolute, 3, 4, 0x0),
OpCode(0x8D, mr65c02, STA, address_modes<mr65c02,STA>::value, absolute, 3, 4, 0x0),
OpCode(0x8E, mr65c02, STX, address_modes<mr65c02,STX>::value, absolute, 3, 4, 0x0),
OpCode(0x8F, mr65c02, BBS0, address_modes<mr65c02,BBS0>::value, zp_relative, 3, 5, 0x0),
OpCode(0x90, mr65c02, BCC, address_modes<mr65c02,BCC>::value, relative, 2, 2, 0x0),
OpCode(0x91, mr65c02, STA, address_modes<mr65c02,STA>::value, zp_indirect_y, 2, 6, 0x0),
OpCode(0x92, mr65c02, STA, address_modes<mr65c02,STA>::value, zp_indirect, 2, 5, 0x0),
OpCode(0x93, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x94, mr65c02, STY, address_modes<mr65c02,STY>::value, zp_x, 2, 4, 0x0),
OpCode(0x95, mr65c02, STA, address_modes<mr65c02,STA>::value, zp_x, 2, 4, 0x0),
OpCode(0x96, mr65c02, STX, address_modes<mr65c02,STX>::value, zp_y, 2, 4, 0x0),
OpCode(0x97, mr65c02, SMB1, address_modes<mr65c02,SMB1>::value, zp, 2, 5, 0x0),
OpCode(0x98, mr65c02, TYA, address_modes<mr65c02,TYA>::value, implied, 1, 2, 0x0),
OpCode(0x99, mr65c02, STA, address_modes<mr65c02,STA>::value, absolute_y, 3, 5, 0x0),
OpCode(0x9A, mr65c02, TXS, address_modes<mr65c02,TXS>::value, implied, 1, 2, 0x0),
OpCode(0x9B, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0x9C, mr65c02, STZ, address_modes<mr65c02,STZ>::value, absolute, 3, 4, 0x0),
OpCode(0x9D, mr65c02, STA, address_modes<mr65c02,STA>::value, absolute_x, 3, 5, 0x0),
OpCode(0x9E, mr65c02, STZ, address_modes<mr65c02,STZ>::value, absolute_x, 3, 5, 0x0),
OpCode(0x9F, mr65c02, BBS1, address_modes<mr65c02,BBS1>::value, zp_relative, 3, 5, 0x0),
OpCode(0xA0, mr65c02, LDY, address_modes<mr65c02,LDY>::value, immediate, 2, 2, 0x0),
OpCode(0xA1, mr65c02, LDA, address_modes<mr65c02,LDA>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0xA2, mr65c02, LDX, address_modes<mr65c02,LDX>::value, immediate, 2, 2, 0x0),
OpCode(0xA3, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xA4, mr65c02, LDY, address_modes<mr65c02,LDY>::value, zp, 2, 3, 0x0),
OpCode(0xA5, mr65c02, LDA, address_modes<mr65c02,LDA>::value, zp, 2, 3, 0x0),
OpCode(0xA6, mr65c02, LDX, address_modes<mr65c02,LDX>::value, zp, 2, 3, 0x0),
OpCode(0xA7, mr65c02, SMB2, address_modes<mr65c02,SMB2>::value, zp, 2, 5, 0x0),
OpCode(0xA8, mr65c02, TAY, address_modes<mr65c02,TAY>::value, implied, 1, 2, 0x0),
OpCode(0xA9, mr65c02, LDA, address_modes<mr65c02,LDA>::value, immediate, 2, 2, 0x0),
OpCode(0xAA, mr65c02, TAX, address_modes<mr65c02,TAX>::value, implied, 1, 2, 0x0),
OpCode(0xAB, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xAC, mr65c02, LDY, address_modes<mr65c02,LDY>::value, absolute, 3, 4, 0x0),
OpCode(0xAD, mr65c02, LDA, address_modes<mr65c02,LDA>::value, absolute, 3, 4, 0x0),
OpCode(0xAE, mr65c02, LDX, address_modes<mr65c02,LDX>::value, absolute, 3, 4, 0x0),
OpCode(0xAF, mr65c02, BBS2, address_modes<mr65c02,BBS2>::value, zp_relative, 3, 5, 0x0),
OpCode(0xB0, mr65c02, BCS, address_modes<mr65c02,BCS>::value, relative, 2, 2, 0x0),
OpCode(0xB1, mr65c02, LDA, address_modes<mr65c02,LDA>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0xB2, mr65c02, LDA, address_modes<mr65c02,LDA>::value, zp_indirect, 2, 5, 0x0),
OpCode(0xB3, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xB4, mr65c02, LDY, address_modes<mr65c02,LDY>::value, zp_x, 2, 4, 0x0),
OpCode(0xB5, mr65c02, LDA, address_modes<mr65c02,LDA>::value, zp_x, 2, 4, 0x0),
OpCode(0xB6, mr65c02, LDX, address_modes<mr65c02,LDX>::value, zp_y, 2, 4, 0x0),
OpCode(0xB7, mr65c02, SMB3, address_modes<mr65c02,SMB3>::value, zp, 2, 5, 0x0),
OpCode(0xB8, mr65c02, CLV, address_modes<mr65c02,CLV>::value, implied, 1, 2, 0x0),
OpCode(0xB9, mr65c02, LDA, address_modes<mr65c02,LDA>::value, absolute_y, 3, 4, 0x0),
OpCode(0xBA, mr65c02, TSX, address_modes<mr65c02,TSX>::value, implied, 1, 2, 0x0),
OpCode(0xBB, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xBC, mr65c02, LDY, address_modes<mr65c02,LDY>::value, absolute_x, 3, 4, 0x0),
OpCode(0xBD, mr65c02, LDA, address_modes<mr65c02,LDA>::value, absolute_x, 3, 4, 0x0),
OpCode(0xBE, mr65c02, LDX, address_modes<mr65c02,LDX>::value, absolute_y, 3, 4, 0x0),
OpCode(0xBF, mr65c02, BBS3, address_modes<mr65c02,BBS3>::value, zp_relative, 3, 5, 0x0),
OpCode(0xC0, mr65c02, CPY, address_modes<mr65c02,CPY>::value, immediate, 2, 2, 0x0),
OpCode(0xC1, mr65c02, CMP, address_modes<mr65c02,CMP>::value, zp_indirect_x, 2, 6, 0x0),
OpCode(0xC2, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 2, 2, 0x0),
OpCode(0xC3, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xC4, mr65c02, CPY, address_modes<mr65c02,CPY>::value, zp, 2, 3, 0x0),
OpCode(0xC5, mr65c02, CMP, address_modes<mr65c02,CMP>::value, zp, 2, 3, 0x0),
OpCode(0xC6, mr65c02, DEC, address_modes<mr65c02,DEC>::value, zp, 2, 5, 0x0),
OpCode(0xC7, mr65c02, SMB4, address_modes<mr65c02,SMB4>::value, zp, 2, 5, 0x0),
OpCode(0xC8, mr65c02, INY, address_modes<mr65c02,INY>::value, implied, 1, 2, 0x0),
OpCode(0xC9, mr65c02, CMP, address_modes<mr65c02,CMP>::value, immediate, 2, 2, 0x0),
OpCode(0xCA, mr65c02, DEX, address_modes<mr65c02,DEX>::value, implied, 1, 2, 0x0),
OpCode(0xCB, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xCC, mr65c02, CPY, address_modes<mr65c02,CPY>::value, absolute, 3, 4, 0x0),
OpCode(0xCD, mr65c02, CMP, address_modes<mr65c02,CMP>::value, absolute, 3, 4, 0x0),
OpCode(0xCE, mr65c02, DEC, address_modes<mr65c02,DEC>::value, absolute, 3, 6, 0x0),
OpCode(0xCF, mr65c02, BBS4, address_modes<mr65c02,BBS4>::value, zp_relative, 3, 5, 0x0),
OpCode(0xD0, mr65c02, BNE, address_modes<mr65c02,BNE>::value, relative, 2, 2, 0x0),
OpCode(0xD1, mr65c02, CMP, address_modes<mr65c02,CMP>::value, zp_indirect_y, 2, 5, 0x0),
OpCode(0xD2, mr65c02, CMP, address_modes<mr65c02,CMP>::value, zp_indirect, 2, 5, 0x0),
OpCode(0xD3, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 1, 1, 0x0),
OpCode(0xD4, mr65c02, NOP, address_modes<mr65c02,NOP>::value, implied, 2, 4, 0x0),
OpCode(0xD5, mr65c02, CMP, address_modes<mr65c02,CMP>::value, zp_x, 2, 4, 0x0),
OpCode(0xD6, mr65c02, DEC, address_modes<mr65c02,DEC>::value, zp_x, 2, 6, 0x0),
OpCode(0xD7, mr65c02, SMB5, address_modes<mr65c02,SMB5>::value, zp, 2, 5, 0x0),
OpCode(0xD8, mr65c02, CLD, address_modes<mr65c02,CLD>::value, implied, 1, 2, 0x0),
OpCode(0xD9, mr65c02, CMP, address_modes<mr65c02,CMP>::value, absolute_y, 3, 4, 0x0),