1use crate::opcodes::OpCode;
2
3#[derive(Debug)]
7pub struct InstructionDef {
8 pub instruction: &'static str,
10 pub implied: OpCode,
14 pub immediate: OpCode,
18 pub accumulator: OpCode,
22 pub absolute: OpCode,
26 pub absolute_x: OpCode,
30 pub absolute_y: OpCode,
34 pub zeropage: OpCode,
38 pub zeropage_x: OpCode,
42 pub zeropage_y: OpCode,
46 pub relative: OpCode,
50 pub indirect: OpCode,
54 pub indexed_indirect: OpCode,
58 pub indirect_indexed: OpCode,
62}
63
64pub use gen::*;
65
66mod gen {
67 use crate::opcodes::*;
68
69 use super::InstructionDef;
70
71 pub const OPCODES_ADC: InstructionDef = InstructionDef {
75 instruction: "adc",
76 implied: NO_IMPLIED,
77 immediate: ADC_IMMEDIATE,
78 accumulator: NO_ACCUMULATOR,
79 absolute: ADC_ABSOLUTE,
80 absolute_x: ADC_ABSOLUTE_X,
81 absolute_y: ADC_ABSOLUTE_Y,
82 zeropage: ADC_ZEROPAGE,
83 zeropage_x: ADC_ZEROPAGE_X,
84 zeropage_y: NO_ZEROPAGE_Y,
85 relative: NO_RELATIVE,
86 indirect: NO_INDIRECT,
87 indexed_indirect: ADC_INDEXED_INDIRECT,
88 indirect_indexed: ADC_INDIRECT_INDEXED,
89 };
90
91 pub const OPCODES_AND: InstructionDef = InstructionDef {
95 instruction: "and",
96 implied: NO_IMPLIED,
97 immediate: AND_IMMEDIATE,
98 accumulator: NO_ACCUMULATOR,
99 absolute: AND_ABSOLUTE,
100 absolute_x: AND_ABSOLUTE_X,
101 absolute_y: AND_ABSOLUTE_Y,
102 zeropage: AND_ZEROPAGE,
103 zeropage_x: AND_ZEROPAGE_X,
104 zeropage_y: NO_ZEROPAGE_Y,
105 relative: NO_RELATIVE,
106 indirect: NO_INDIRECT,
107 indexed_indirect: AND_INDEXED_INDIRECT,
108 indirect_indexed: AND_INDIRECT_INDEXED,
109 };
110
111 pub const OPCODES_ASL: InstructionDef = InstructionDef {
115 instruction: "asl",
116 implied: NO_IMPLIED,
117 immediate: NO_IMMEDIATE,
118 accumulator: ASL_ACCUMULATOR,
119 absolute: ASL_ABSOLUTE,
120 absolute_x: ASL_ABSOLUTE_X,
121 absolute_y: NO_ABSOLUTE_Y,
122 zeropage: ASL_ZEROPAGE,
123 zeropage_x: ASL_ZEROPAGE_X,
124 zeropage_y: NO_ZEROPAGE_Y,
125 relative: NO_RELATIVE,
126 indirect: NO_INDIRECT,
127 indexed_indirect: NO_INDEXED_INDIRECT,
128 indirect_indexed: NO_INDIRECT_INDEXED,
129 };
130
131 pub const OPCODES_BCC: InstructionDef = InstructionDef {
135 instruction: "bcc",
136 implied: NO_IMPLIED,
137 immediate: NO_IMMEDIATE,
138 accumulator: NO_ACCUMULATOR,
139 absolute: NO_ABSOLUTE,
140 absolute_x: NO_ABSOLUTE_X,
141 absolute_y: NO_ABSOLUTE_Y,
142 zeropage: NO_ZEROPAGE,
143 zeropage_x: NO_ZEROPAGE_X,
144 zeropage_y: NO_ZEROPAGE_Y,
145 relative: BCC_RELATIVE,
146 indirect: NO_INDIRECT,
147 indexed_indirect: NO_INDEXED_INDIRECT,
148 indirect_indexed: NO_INDIRECT_INDEXED,
149 };
150
151 pub const OPCODES_BCS: InstructionDef = InstructionDef {
155 instruction: "bcs",
156 implied: NO_IMPLIED,
157 immediate: NO_IMMEDIATE,
158 accumulator: NO_ACCUMULATOR,
159 absolute: NO_ABSOLUTE,
160 absolute_x: NO_ABSOLUTE_X,
161 absolute_y: NO_ABSOLUTE_Y,
162 zeropage: NO_ZEROPAGE,
163 zeropage_x: NO_ZEROPAGE_X,
164 zeropage_y: NO_ZEROPAGE_Y,
165 relative: BCS_RELATIVE,
166 indirect: NO_INDIRECT,
167 indexed_indirect: NO_INDEXED_INDIRECT,
168 indirect_indexed: NO_INDIRECT_INDEXED,
169 };
170
171 pub const OPCODES_BEQ: InstructionDef = InstructionDef {
175 instruction: "beq",
176 implied: NO_IMPLIED,
177 immediate: NO_IMMEDIATE,
178 accumulator: NO_ACCUMULATOR,
179 absolute: NO_ABSOLUTE,
180 absolute_x: NO_ABSOLUTE_X,
181 absolute_y: NO_ABSOLUTE_Y,
182 zeropage: NO_ZEROPAGE,
183 zeropage_x: NO_ZEROPAGE_X,
184 zeropage_y: NO_ZEROPAGE_Y,
185 relative: BEQ_RELATIVE,
186 indirect: NO_INDIRECT,
187 indexed_indirect: NO_INDEXED_INDIRECT,
188 indirect_indexed: NO_INDIRECT_INDEXED,
189 };
190
191 pub const OPCODES_BIT: InstructionDef = InstructionDef {
195 instruction: "bit",
196 implied: NO_IMPLIED,
197 immediate: NO_IMMEDIATE,
198 accumulator: NO_ACCUMULATOR,
199 absolute: BIT_ABSOLUTE,
200 absolute_x: NO_ABSOLUTE_X,
201 absolute_y: NO_ABSOLUTE_Y,
202 zeropage: BIT_ZEROPAGE,
203 zeropage_x: NO_ZEROPAGE_X,
204 zeropage_y: NO_ZEROPAGE_Y,
205 relative: NO_RELATIVE,
206 indirect: NO_INDIRECT,
207 indexed_indirect: NO_INDEXED_INDIRECT,
208 indirect_indexed: NO_INDIRECT_INDEXED,
209 };
210
211 pub const OPCODES_BMI: InstructionDef = InstructionDef {
215 instruction: "bmi",
216 implied: NO_IMPLIED,
217 immediate: NO_IMMEDIATE,
218 accumulator: NO_ACCUMULATOR,
219 absolute: NO_ABSOLUTE,
220 absolute_x: NO_ABSOLUTE_X,
221 absolute_y: NO_ABSOLUTE_Y,
222 zeropage: NO_ZEROPAGE,
223 zeropage_x: NO_ZEROPAGE_X,
224 zeropage_y: NO_ZEROPAGE_Y,
225 relative: BMI_RELATIVE,
226 indirect: NO_INDIRECT,
227 indexed_indirect: NO_INDEXED_INDIRECT,
228 indirect_indexed: NO_INDIRECT_INDEXED,
229 };
230
231 pub const OPCODES_BNE: InstructionDef = InstructionDef {
235 instruction: "bne",
236 implied: NO_IMPLIED,
237 immediate: NO_IMMEDIATE,
238 accumulator: NO_ACCUMULATOR,
239 absolute: NO_ABSOLUTE,
240 absolute_x: NO_ABSOLUTE_X,
241 absolute_y: NO_ABSOLUTE_Y,
242 zeropage: NO_ZEROPAGE,
243 zeropage_x: NO_ZEROPAGE_X,
244 zeropage_y: NO_ZEROPAGE_Y,
245 relative: BNE_RELATIVE,
246 indirect: NO_INDIRECT,
247 indexed_indirect: NO_INDEXED_INDIRECT,
248 indirect_indexed: NO_INDIRECT_INDEXED,
249 };
250
251 pub const OPCODES_BPL: InstructionDef = InstructionDef {
255 instruction: "bpl",
256 implied: NO_IMPLIED,
257 immediate: NO_IMMEDIATE,
258 accumulator: NO_ACCUMULATOR,
259 absolute: NO_ABSOLUTE,
260 absolute_x: NO_ABSOLUTE_X,
261 absolute_y: NO_ABSOLUTE_Y,
262 zeropage: NO_ZEROPAGE,
263 zeropage_x: NO_ZEROPAGE_X,
264 zeropage_y: NO_ZEROPAGE_Y,
265 relative: BPL_RELATIVE,
266 indirect: NO_INDIRECT,
267 indexed_indirect: NO_INDEXED_INDIRECT,
268 indirect_indexed: NO_INDIRECT_INDEXED,
269 };
270
271 pub const OPCODES_BRK: InstructionDef = InstructionDef {
275 instruction: "brk",
276 implied: BRK_IMPLIED,
277 immediate: NO_IMMEDIATE,
278 accumulator: NO_ACCUMULATOR,
279 absolute: NO_ABSOLUTE,
280 absolute_x: NO_ABSOLUTE_X,
281 absolute_y: NO_ABSOLUTE_Y,
282 zeropage: NO_ZEROPAGE,
283 zeropage_x: NO_ZEROPAGE_X,
284 zeropage_y: NO_ZEROPAGE_Y,
285 relative: NO_RELATIVE,
286 indirect: NO_INDIRECT,
287 indexed_indirect: NO_INDEXED_INDIRECT,
288 indirect_indexed: NO_INDIRECT_INDEXED,
289 };
290
291 pub const OPCODES_BVC: InstructionDef = InstructionDef {
295 instruction: "bvc",
296 implied: NO_IMPLIED,
297 immediate: NO_IMMEDIATE,
298 accumulator: NO_ACCUMULATOR,
299 absolute: NO_ABSOLUTE,
300 absolute_x: NO_ABSOLUTE_X,
301 absolute_y: NO_ABSOLUTE_Y,
302 zeropage: NO_ZEROPAGE,
303 zeropage_x: NO_ZEROPAGE_X,
304 zeropage_y: NO_ZEROPAGE_Y,
305 relative: BVC_RELATIVE,
306 indirect: NO_INDIRECT,
307 indexed_indirect: NO_INDEXED_INDIRECT,
308 indirect_indexed: NO_INDIRECT_INDEXED,
309 };
310
311 pub const OPCODES_BVS: InstructionDef = InstructionDef {
315 instruction: "bvs",
316 implied: NO_IMPLIED,
317 immediate: NO_IMMEDIATE,
318 accumulator: NO_ACCUMULATOR,
319 absolute: NO_ABSOLUTE,
320 absolute_x: NO_ABSOLUTE_X,
321 absolute_y: NO_ABSOLUTE_Y,
322 zeropage: NO_ZEROPAGE,
323 zeropage_x: NO_ZEROPAGE_X,
324 zeropage_y: NO_ZEROPAGE_Y,
325 relative: BVS_RELATIVE,
326 indirect: NO_INDIRECT,
327 indexed_indirect: NO_INDEXED_INDIRECT,
328 indirect_indexed: NO_INDIRECT_INDEXED,
329 };
330
331 pub const OPCODES_CLD: InstructionDef = InstructionDef {
335 instruction: "cld",
336 implied: CLD_IMPLIED,
337 immediate: NO_IMMEDIATE,
338 accumulator: NO_ACCUMULATOR,
339 absolute: NO_ABSOLUTE,
340 absolute_x: NO_ABSOLUTE_X,
341 absolute_y: NO_ABSOLUTE_Y,
342 zeropage: NO_ZEROPAGE,
343 zeropage_x: NO_ZEROPAGE_X,
344 zeropage_y: NO_ZEROPAGE_Y,
345 relative: NO_RELATIVE,
346 indirect: NO_INDIRECT,
347 indexed_indirect: NO_INDEXED_INDIRECT,
348 indirect_indexed: NO_INDIRECT_INDEXED,
349 };
350
351 pub const OPCODES_CLI: InstructionDef = InstructionDef {
355 instruction: "cli",
356 implied: CLI_IMPLIED,
357 immediate: NO_IMMEDIATE,
358 accumulator: NO_ACCUMULATOR,
359 absolute: NO_ABSOLUTE,
360 absolute_x: NO_ABSOLUTE_X,
361 absolute_y: NO_ABSOLUTE_Y,
362 zeropage: NO_ZEROPAGE,
363 zeropage_x: NO_ZEROPAGE_X,
364 zeropage_y: NO_ZEROPAGE_Y,
365 relative: NO_RELATIVE,
366 indirect: NO_INDIRECT,
367 indexed_indirect: NO_INDEXED_INDIRECT,
368 indirect_indexed: NO_INDIRECT_INDEXED,
369 };
370
371 pub const OPCODES_CLV: InstructionDef = InstructionDef {
375 instruction: "clv",
376 implied: CLV_IMPLIED,
377 immediate: NO_IMMEDIATE,
378 accumulator: NO_ACCUMULATOR,
379 absolute: NO_ABSOLUTE,
380 absolute_x: NO_ABSOLUTE_X,
381 absolute_y: NO_ABSOLUTE_Y,
382 zeropage: NO_ZEROPAGE,
383 zeropage_x: NO_ZEROPAGE_X,
384 zeropage_y: NO_ZEROPAGE_Y,
385 relative: NO_RELATIVE,
386 indirect: NO_INDIRECT,
387 indexed_indirect: NO_INDEXED_INDIRECT,
388 indirect_indexed: NO_INDIRECT_INDEXED,
389 };
390
391 pub const OPCODES_CMP: InstructionDef = InstructionDef {
395 instruction: "cmp",
396 implied: NO_IMPLIED,
397 immediate: CMP_IMMEDIATE,
398 accumulator: NO_ACCUMULATOR,
399 absolute: CMP_ABSOLUTE,
400 absolute_x: CMP_ABSOLUTE_X,
401 absolute_y: CMP_ABSOLUTE_Y,
402 zeropage: CMP_ZEROPAGE,
403 zeropage_x: CMP_ZEROPAGE_X,
404 zeropage_y: NO_ZEROPAGE_Y,
405 relative: NO_RELATIVE,
406 indirect: NO_INDIRECT,
407 indexed_indirect: CMP_INDEXED_INDIRECT,
408 indirect_indexed: CMP_INDIRECT_INDEXED,
409 };
410
411 pub const OPCODES_CPX: InstructionDef = InstructionDef {
415 instruction: "cpx",
416 implied: NO_IMPLIED,
417 immediate: CPX_IMMEDIATE,
418 accumulator: NO_ACCUMULATOR,
419 absolute: CPX_ABSOLUTE,
420 absolute_x: NO_ABSOLUTE_X,
421 absolute_y: NO_ABSOLUTE_Y,
422 zeropage: CPX_ZEROPAGE,
423 zeropage_x: NO_ZEROPAGE_X,
424 zeropage_y: NO_ZEROPAGE_Y,
425 relative: NO_RELATIVE,
426 indirect: NO_INDIRECT,
427 indexed_indirect: NO_INDEXED_INDIRECT,
428 indirect_indexed: NO_INDIRECT_INDEXED,
429 };
430
431 pub const OPCODES_CPY: InstructionDef = InstructionDef {
435 instruction: "cpy",
436 implied: NO_IMPLIED,
437 immediate: CPY_IMMEDIATE,
438 accumulator: NO_ACCUMULATOR,
439 absolute: CPY_ABSOLUTE,
440 absolute_x: NO_ABSOLUTE_X,
441 absolute_y: NO_ABSOLUTE_Y,
442 zeropage: CPY_ZEROPAGE,
443 zeropage_x: NO_ZEROPAGE_X,
444 zeropage_y: NO_ZEROPAGE_Y,
445 relative: NO_RELATIVE,
446 indirect: NO_INDIRECT,
447 indexed_indirect: NO_INDEXED_INDIRECT,
448 indirect_indexed: NO_INDIRECT_INDEXED,
449 };
450
451 pub const OPCODES_DEC: InstructionDef = InstructionDef {
455 instruction: "dec",
456 implied: NO_IMPLIED,
457 immediate: NO_IMMEDIATE,
458 accumulator: NO_ACCUMULATOR,
459 absolute: DEC_ABSOLUTE,
460 absolute_x: DEC_ABSOLUTE_X,
461 absolute_y: NO_ABSOLUTE_Y,
462 zeropage: DEC_ZEROPAGE,
463 zeropage_x: DEC_ZEROPAGE_X,
464 zeropage_y: NO_ZEROPAGE_Y,
465 relative: NO_RELATIVE,
466 indirect: NO_INDIRECT,
467 indexed_indirect: NO_INDEXED_INDIRECT,
468 indirect_indexed: NO_INDIRECT_INDEXED,
469 };
470
471 pub const OPCODES_DEX: InstructionDef = InstructionDef {
475 instruction: "dex",
476 implied: DEX_IMPLIED,
477 immediate: NO_IMMEDIATE,
478 accumulator: NO_ACCUMULATOR,
479 absolute: NO_ABSOLUTE,
480 absolute_x: NO_ABSOLUTE_X,
481 absolute_y: NO_ABSOLUTE_Y,
482 zeropage: NO_ZEROPAGE,
483 zeropage_x: NO_ZEROPAGE_X,
484 zeropage_y: NO_ZEROPAGE_Y,
485 relative: NO_RELATIVE,
486 indirect: NO_INDIRECT,
487 indexed_indirect: NO_INDEXED_INDIRECT,
488 indirect_indexed: NO_INDIRECT_INDEXED,
489 };
490
491 pub const OPCODES_DEY: InstructionDef = InstructionDef {
495 instruction: "dey",
496 implied: DEY_IMPLIED,
497 immediate: NO_IMMEDIATE,
498 accumulator: NO_ACCUMULATOR,
499 absolute: NO_ABSOLUTE,
500 absolute_x: NO_ABSOLUTE_X,
501 absolute_y: NO_ABSOLUTE_Y,
502 zeropage: NO_ZEROPAGE,
503 zeropage_x: NO_ZEROPAGE_X,
504 zeropage_y: NO_ZEROPAGE_Y,
505 relative: NO_RELATIVE,
506 indirect: NO_INDIRECT,
507 indexed_indirect: NO_INDEXED_INDIRECT,
508 indirect_indexed: NO_INDIRECT_INDEXED,
509 };
510
511 pub const OPCODES_EOR: InstructionDef = InstructionDef {
515 instruction: "eor",
516 implied: NO_IMPLIED,
517 immediate: EOR_IMMEDIATE,
518 accumulator: NO_ACCUMULATOR,
519 absolute: EOR_ABSOLUTE,
520 absolute_x: EOR_ABSOLUTE_X,
521 absolute_y: EOR_ABSOLUTE_Y,
522 zeropage: EOR_ZEROPAGE,
523 zeropage_x: EOR_ZEROPAGE_X,
524 zeropage_y: NO_ZEROPAGE_Y,
525 relative: NO_RELATIVE,
526 indirect: NO_INDIRECT,
527 indexed_indirect: EOR_INDEXED_INDIRECT,
528 indirect_indexed: EOR_INDIRECT_INDEXED,
529 };
530
531 pub const OPCODES_INC: InstructionDef = InstructionDef {
535 instruction: "inc",
536 implied: NO_IMPLIED,
537 immediate: NO_IMMEDIATE,
538 accumulator: NO_ACCUMULATOR,
539 absolute: INC_ABSOLUTE,
540 absolute_x: INC_ABSOLUTE_X,
541 absolute_y: NO_ABSOLUTE_Y,
542 zeropage: INC_ZEROPAGE,
543 zeropage_x: INC_ZEROPAGE_X,
544 zeropage_y: NO_ZEROPAGE_Y,
545 relative: NO_RELATIVE,
546 indirect: NO_INDIRECT,
547 indexed_indirect: NO_INDEXED_INDIRECT,
548 indirect_indexed: NO_INDIRECT_INDEXED,
549 };
550
551 pub const OPCODES_INX: InstructionDef = InstructionDef {
555 instruction: "inx",
556 implied: INX_IMPLIED,
557 immediate: NO_IMMEDIATE,
558 accumulator: NO_ACCUMULATOR,
559 absolute: NO_ABSOLUTE,
560 absolute_x: NO_ABSOLUTE_X,
561 absolute_y: NO_ABSOLUTE_Y,
562 zeropage: NO_ZEROPAGE,
563 zeropage_x: NO_ZEROPAGE_X,
564 zeropage_y: NO_ZEROPAGE_Y,
565 relative: NO_RELATIVE,
566 indirect: NO_INDIRECT,
567 indexed_indirect: NO_INDEXED_INDIRECT,
568 indirect_indexed: NO_INDIRECT_INDEXED,
569 };
570
571 pub const OPCODES_INY: InstructionDef = InstructionDef {
575 instruction: "iny",
576 implied: INY_IMPLIED,
577 immediate: NO_IMMEDIATE,
578 accumulator: NO_ACCUMULATOR,
579 absolute: NO_ABSOLUTE,
580 absolute_x: NO_ABSOLUTE_X,
581 absolute_y: NO_ABSOLUTE_Y,
582 zeropage: NO_ZEROPAGE,
583 zeropage_x: NO_ZEROPAGE_X,
584 zeropage_y: NO_ZEROPAGE_Y,
585 relative: NO_RELATIVE,
586 indirect: NO_INDIRECT,
587 indexed_indirect: NO_INDEXED_INDIRECT,
588 indirect_indexed: NO_INDIRECT_INDEXED,
589 };
590
591 pub const OPCODES_LDX: InstructionDef = InstructionDef {
595 instruction: "ldx",
596 implied: NO_IMPLIED,
597 immediate: LDX_IMMEDIATE,
598 accumulator: NO_ACCUMULATOR,
599 absolute: LDX_ABSOLUTE,
600 absolute_x: NO_ABSOLUTE_X,
601 absolute_y: LDX_ABSOLUTE_Y,
602 zeropage: LDX_ZEROPAGE,
603 zeropage_x: NO_ZEROPAGE_X,
604 zeropage_y: LDX_ZEROPAGE_Y,
605 relative: NO_RELATIVE,
606 indirect: NO_INDIRECT,
607 indexed_indirect: NO_INDEXED_INDIRECT,
608 indirect_indexed: NO_INDIRECT_INDEXED,
609 };
610
611 pub const OPCODES_LSR: InstructionDef = InstructionDef {
615 instruction: "lsr",
616 implied: NO_IMPLIED,
617 immediate: NO_IMMEDIATE,
618 accumulator: LSR_ACCUMULATOR,
619 absolute: LSR_ABSOLUTE,
620 absolute_x: LSR_ABSOLUTE_X,
621 absolute_y: NO_ABSOLUTE_Y,
622 zeropage: LSR_ZEROPAGE,
623 zeropage_x: LSR_ZEROPAGE_X,
624 zeropage_y: NO_ZEROPAGE_Y,
625 relative: NO_RELATIVE,
626 indirect: NO_INDIRECT,
627 indexed_indirect: NO_INDEXED_INDIRECT,
628 indirect_indexed: NO_INDIRECT_INDEXED,
629 };
630
631 pub const OPCODES_NOP: InstructionDef = InstructionDef {
635 instruction: "nop",
636 implied: NOP_IMPLIED,
637 immediate: NO_IMMEDIATE,
638 accumulator: NO_ACCUMULATOR,
639 absolute: NO_ABSOLUTE,
640 absolute_x: NO_ABSOLUTE_X,
641 absolute_y: NO_ABSOLUTE_Y,
642 zeropage: NO_ZEROPAGE,
643 zeropage_x: NO_ZEROPAGE_X,
644 zeropage_y: NO_ZEROPAGE_Y,
645 relative: NO_RELATIVE,
646 indirect: NO_INDIRECT,
647 indexed_indirect: NO_INDEXED_INDIRECT,
648 indirect_indexed: NO_INDIRECT_INDEXED,
649 };
650
651 pub const OPCODES_ORA: InstructionDef = InstructionDef {
655 instruction: "ora",
656 implied: NO_IMPLIED,
657 immediate: ORA_IMMEDIATE,
658 accumulator: NO_ACCUMULATOR,
659 absolute: ORA_ABSOLUTE,
660 absolute_x: ORA_ABSOLUTE_X,
661 absolute_y: ORA_ABSOLUTE_Y,
662 zeropage: ORA_ZEROPAGE,
663 zeropage_x: ORA_ZEROPAGE_X,
664 zeropage_y: NO_ZEROPAGE_Y,
665 relative: NO_RELATIVE,
666 indirect: NO_INDIRECT,
667 indexed_indirect: ORA_INDEXED_INDIRECT,
668 indirect_indexed: ORA_INDIRECT_INDEXED,
669 };
670
671 pub const OPCODES_PHA: InstructionDef = InstructionDef {
675 instruction: "pha",
676 implied: PHA_IMPLIED,
677 immediate: NO_IMMEDIATE,
678 accumulator: NO_ACCUMULATOR,
679 absolute: NO_ABSOLUTE,
680 absolute_x: NO_ABSOLUTE_X,
681 absolute_y: NO_ABSOLUTE_Y,
682 zeropage: NO_ZEROPAGE,
683 zeropage_x: NO_ZEROPAGE_X,
684 zeropage_y: NO_ZEROPAGE_Y,
685 relative: NO_RELATIVE,
686 indirect: NO_INDIRECT,
687 indexed_indirect: NO_INDEXED_INDIRECT,
688 indirect_indexed: NO_INDIRECT_INDEXED,
689 };
690
691 pub const OPCODES_PHP: InstructionDef = InstructionDef {
695 instruction: "php",
696 implied: PHP_IMPLIED,
697 immediate: NO_IMMEDIATE,
698 accumulator: NO_ACCUMULATOR,
699 absolute: NO_ABSOLUTE,
700 absolute_x: NO_ABSOLUTE_X,
701 absolute_y: NO_ABSOLUTE_Y,
702 zeropage: NO_ZEROPAGE,
703 zeropage_x: NO_ZEROPAGE_X,
704 zeropage_y: NO_ZEROPAGE_Y,
705 relative: NO_RELATIVE,
706 indirect: NO_INDIRECT,
707 indexed_indirect: NO_INDEXED_INDIRECT,
708 indirect_indexed: NO_INDIRECT_INDEXED,
709 };
710
711 pub const OPCODES_PLA: InstructionDef = InstructionDef {
715 instruction: "pla",
716 implied: PLA_IMPLIED,
717 immediate: NO_IMMEDIATE,
718 accumulator: NO_ACCUMULATOR,
719 absolute: NO_ABSOLUTE,
720 absolute_x: NO_ABSOLUTE_X,
721 absolute_y: NO_ABSOLUTE_Y,
722 zeropage: NO_ZEROPAGE,
723 zeropage_x: NO_ZEROPAGE_X,
724 zeropage_y: NO_ZEROPAGE_Y,
725 relative: NO_RELATIVE,
726 indirect: NO_INDIRECT,
727 indexed_indirect: NO_INDEXED_INDIRECT,
728 indirect_indexed: NO_INDIRECT_INDEXED,
729 };
730
731 pub const OPCODES_PLP: InstructionDef = InstructionDef {
735 instruction: "plp",
736 implied: PLP_IMPLIED,
737 immediate: NO_IMMEDIATE,
738 accumulator: NO_ACCUMULATOR,
739 absolute: NO_ABSOLUTE,
740 absolute_x: NO_ABSOLUTE_X,
741 absolute_y: NO_ABSOLUTE_Y,
742 zeropage: NO_ZEROPAGE,
743 zeropage_x: NO_ZEROPAGE_X,
744 zeropage_y: NO_ZEROPAGE_Y,
745 relative: NO_RELATIVE,
746 indirect: NO_INDIRECT,
747 indexed_indirect: NO_INDEXED_INDIRECT,
748 indirect_indexed: NO_INDIRECT_INDEXED,
749 };
750
751 pub const OPCODES_ROL: InstructionDef = InstructionDef {
755 instruction: "rol",
756 implied: NO_IMPLIED,
757 immediate: NO_IMMEDIATE,
758 accumulator: ROL_ACCUMULATOR,
759 absolute: ROL_ABSOLUTE,
760 absolute_x: ROL_ABSOLUTE_X,
761 absolute_y: NO_ABSOLUTE_Y,
762 zeropage: ROL_ZEROPAGE,
763 zeropage_x: ROL_ZEROPAGE_X,
764 zeropage_y: NO_ZEROPAGE_Y,
765 relative: NO_RELATIVE,
766 indirect: NO_INDIRECT,
767 indexed_indirect: NO_INDEXED_INDIRECT,
768 indirect_indexed: NO_INDIRECT_INDEXED,
769 };
770
771 pub const OPCODES_ROR: InstructionDef = InstructionDef {
775 instruction: "ror",
776 implied: NO_IMPLIED,
777 immediate: NO_IMMEDIATE,
778 accumulator: ROR_ACCUMULATOR,
779 absolute: ROR_ABSOLUTE,
780 absolute_x: ROR_ABSOLUTE_X,
781 absolute_y: NO_ABSOLUTE_Y,
782 zeropage: ROR_ZEROPAGE,
783 zeropage_x: ROR_ZEROPAGE_X,
784 zeropage_y: NO_ZEROPAGE_Y,
785 relative: NO_RELATIVE,
786 indirect: NO_INDIRECT,
787 indexed_indirect: NO_INDEXED_INDIRECT,
788 indirect_indexed: NO_INDIRECT_INDEXED,
789 };
790
791 pub const OPCODES_RTI: InstructionDef = InstructionDef {
795 instruction: "rti",
796 implied: RTI_IMPLIED,
797 immediate: NO_IMMEDIATE,
798 accumulator: NO_ACCUMULATOR,
799 absolute: NO_ABSOLUTE,
800 absolute_x: NO_ABSOLUTE_X,
801 absolute_y: NO_ABSOLUTE_Y,
802 zeropage: NO_ZEROPAGE,
803 zeropage_x: NO_ZEROPAGE_X,
804 zeropage_y: NO_ZEROPAGE_Y,
805 relative: NO_RELATIVE,
806 indirect: NO_INDIRECT,
807 indexed_indirect: NO_INDEXED_INDIRECT,
808 indirect_indexed: NO_INDIRECT_INDEXED,
809 };
810
811 pub const OPCODES_SBC: InstructionDef = InstructionDef {
815 instruction: "sbc",
816 implied: NO_IMPLIED,
817 immediate: SBC_IMMEDIATE,
818 accumulator: NO_ACCUMULATOR,
819 absolute: SBC_ABSOLUTE,
820 absolute_x: SBC_ABSOLUTE_X,
821 absolute_y: SBC_ABSOLUTE_Y,
822 zeropage: SBC_ZEROPAGE,
823 zeropage_x: SBC_ZEROPAGE_X,
824 zeropage_y: NO_ZEROPAGE_Y,
825 relative: NO_RELATIVE,
826 indirect: NO_INDIRECT,
827 indexed_indirect: SBC_INDEXED_INDIRECT,
828 indirect_indexed: SBC_INDIRECT_INDEXED,
829 };
830
831 pub const OPCODES_SED: InstructionDef = InstructionDef {
835 instruction: "sed",
836 implied: SED_IMPLIED,
837 immediate: NO_IMMEDIATE,
838 accumulator: NO_ACCUMULATOR,
839 absolute: NO_ABSOLUTE,
840 absolute_x: NO_ABSOLUTE_X,
841 absolute_y: NO_ABSOLUTE_Y,
842 zeropage: NO_ZEROPAGE,
843 zeropage_x: NO_ZEROPAGE_X,
844 zeropage_y: NO_ZEROPAGE_Y,
845 relative: NO_RELATIVE,
846 indirect: NO_INDIRECT,
847 indexed_indirect: NO_INDEXED_INDIRECT,
848 indirect_indexed: NO_INDIRECT_INDEXED,
849 };
850
851 pub const OPCODES_SEI: InstructionDef = InstructionDef {
855 instruction: "sei",
856 implied: SEI_IMPLIED,
857 immediate: NO_IMMEDIATE,
858 accumulator: NO_ACCUMULATOR,
859 absolute: NO_ABSOLUTE,
860 absolute_x: NO_ABSOLUTE_X,
861 absolute_y: NO_ABSOLUTE_Y,
862 zeropage: NO_ZEROPAGE,
863 zeropage_x: NO_ZEROPAGE_X,
864 zeropage_y: NO_ZEROPAGE_Y,
865 relative: NO_RELATIVE,
866 indirect: NO_INDIRECT,
867 indexed_indirect: NO_INDEXED_INDIRECT,
868 indirect_indexed: NO_INDIRECT_INDEXED,
869 };
870
871 pub const OPCODES_STX: InstructionDef = InstructionDef {
875 instruction: "stx",
876 implied: NO_IMPLIED,
877 immediate: NO_IMMEDIATE,
878 accumulator: NO_ACCUMULATOR,
879 absolute: STX_ABSOLUTE,
880 absolute_x: NO_ABSOLUTE_X,
881 absolute_y: NO_ABSOLUTE_Y,
882 zeropage: STX_ZEROPAGE,
883 zeropage_x: NO_ZEROPAGE_X,
884 zeropage_y: STX_ZEROPAGE_Y,
885 relative: NO_RELATIVE,
886 indirect: NO_INDIRECT,
887 indexed_indirect: NO_INDEXED_INDIRECT,
888 indirect_indexed: NO_INDIRECT_INDEXED,
889 };
890
891 pub const OPCODES_STY: InstructionDef = InstructionDef {
895 instruction: "sty",
896 implied: NO_IMPLIED,
897 immediate: NO_IMMEDIATE,
898 accumulator: NO_ACCUMULATOR,
899 absolute: STY_ABSOLUTE,
900 absolute_x: NO_ABSOLUTE_X,
901 absolute_y: NO_ABSOLUTE_Y,
902 zeropage: STY_ZEROPAGE,
903 zeropage_x: STY_ZEROPAGE_X,
904 zeropage_y: NO_ZEROPAGE_Y,
905 relative: NO_RELATIVE,
906 indirect: NO_INDIRECT,
907 indexed_indirect: NO_INDEXED_INDIRECT,
908 indirect_indexed: NO_INDIRECT_INDEXED,
909 };
910
911 pub const OPCODES_TAX: InstructionDef = InstructionDef {
915 instruction: "tax",
916 implied: TAX_IMPLIED,
917 immediate: NO_IMMEDIATE,
918 accumulator: NO_ACCUMULATOR,
919 absolute: NO_ABSOLUTE,
920 absolute_x: NO_ABSOLUTE_X,
921 absolute_y: NO_ABSOLUTE_Y,
922 zeropage: NO_ZEROPAGE,
923 zeropage_x: NO_ZEROPAGE_X,
924 zeropage_y: NO_ZEROPAGE_Y,
925 relative: NO_RELATIVE,
926 indirect: NO_INDIRECT,
927 indexed_indirect: NO_INDEXED_INDIRECT,
928 indirect_indexed: NO_INDIRECT_INDEXED,
929 };
930
931 pub const OPCODES_TAY: InstructionDef = InstructionDef {
935 instruction: "tay",
936 implied: TAY_IMPLIED,
937 immediate: NO_IMMEDIATE,
938 accumulator: NO_ACCUMULATOR,
939 absolute: NO_ABSOLUTE,
940 absolute_x: NO_ABSOLUTE_X,
941 absolute_y: NO_ABSOLUTE_Y,
942 zeropage: NO_ZEROPAGE,
943 zeropage_x: NO_ZEROPAGE_X,
944 zeropage_y: NO_ZEROPAGE_Y,
945 relative: NO_RELATIVE,
946 indirect: NO_INDIRECT,
947 indexed_indirect: NO_INDEXED_INDIRECT,
948 indirect_indexed: NO_INDIRECT_INDEXED,
949 };
950
951 pub const OPCODES_TSX: InstructionDef = InstructionDef {
955 instruction: "tsx",
956 implied: TSX_IMPLIED,
957 immediate: NO_IMMEDIATE,
958 accumulator: NO_ACCUMULATOR,
959 absolute: NO_ABSOLUTE,
960 absolute_x: NO_ABSOLUTE_X,
961 absolute_y: NO_ABSOLUTE_Y,
962 zeropage: NO_ZEROPAGE,
963 zeropage_x: NO_ZEROPAGE_X,
964 zeropage_y: NO_ZEROPAGE_Y,
965 relative: NO_RELATIVE,
966 indirect: NO_INDIRECT,
967 indexed_indirect: NO_INDEXED_INDIRECT,
968 indirect_indexed: NO_INDIRECT_INDEXED,
969 };
970
971 pub const OPCODES_TXA: InstructionDef = InstructionDef {
975 instruction: "txa",
976 implied: TXA_IMPLIED,
977 immediate: NO_IMMEDIATE,
978 accumulator: NO_ACCUMULATOR,
979 absolute: NO_ABSOLUTE,
980 absolute_x: NO_ABSOLUTE_X,
981 absolute_y: NO_ABSOLUTE_Y,
982 zeropage: NO_ZEROPAGE,
983 zeropage_x: NO_ZEROPAGE_X,
984 zeropage_y: NO_ZEROPAGE_Y,
985 relative: NO_RELATIVE,
986 indirect: NO_INDIRECT,
987 indexed_indirect: NO_INDEXED_INDIRECT,
988 indirect_indexed: NO_INDIRECT_INDEXED,
989 };
990
991 pub const OPCODES_TXS: InstructionDef = InstructionDef {
995 instruction: "txs",
996 implied: TXS_IMPLIED,
997 immediate: NO_IMMEDIATE,
998 accumulator: NO_ACCUMULATOR,
999 absolute: NO_ABSOLUTE,
1000 absolute_x: NO_ABSOLUTE_X,
1001 absolute_y: NO_ABSOLUTE_Y,
1002 zeropage: NO_ZEROPAGE,
1003 zeropage_x: NO_ZEROPAGE_X,
1004 zeropage_y: NO_ZEROPAGE_Y,
1005 relative: NO_RELATIVE,
1006 indirect: NO_INDIRECT,
1007 indexed_indirect: NO_INDEXED_INDIRECT,
1008 indirect_indexed: NO_INDIRECT_INDEXED,
1009 };
1010
1011 pub const OPCODES_TYA: InstructionDef = InstructionDef {
1015 instruction: "tya",
1016 implied: TYA_IMPLIED,
1017 immediate: NO_IMMEDIATE,
1018 accumulator: NO_ACCUMULATOR,
1019 absolute: NO_ABSOLUTE,
1020 absolute_x: NO_ABSOLUTE_X,
1021 absolute_y: NO_ABSOLUTE_Y,
1022 zeropage: NO_ZEROPAGE,
1023 zeropage_x: NO_ZEROPAGE_X,
1024 zeropage_y: NO_ZEROPAGE_Y,
1025 relative: NO_RELATIVE,
1026 indirect: NO_INDIRECT,
1027 indexed_indirect: NO_INDEXED_INDIRECT,
1028 indirect_indexed: NO_INDIRECT_INDEXED,
1029 };
1030
1031 pub const OPCODES_LDA: InstructionDef = InstructionDef {
1035 instruction: "lda",
1036 implied: NO_IMPLIED,
1037 immediate: LDA_IMMEDIATE,
1038 accumulator: NO_ACCUMULATOR,
1039 absolute: LDA_ABSOLUTE,
1040 absolute_x: LDA_ABSOLUTE_X,
1041 absolute_y: LDA_ABSOLUTE_Y,
1042 zeropage: LDA_ZEROPAGE,
1043 zeropage_x: LDA_ZEROPAGE_X,
1044 zeropage_y: NO_ZEROPAGE_Y,
1045 relative: NO_RELATIVE,
1046 indirect: NO_INDIRECT,
1047 indexed_indirect: LDA_INDEXED_INDIRECT,
1048 indirect_indexed: LDA_INDIRECT_INDEXED,
1049 };
1050
1051 pub const OPCODES_LDY: InstructionDef = InstructionDef {
1055 instruction: "ldy",
1056 implied: NO_IMPLIED,
1057 immediate: LDY_IMMEDIATE,
1058 accumulator: NO_ACCUMULATOR,
1059 absolute: LDY_ABSOLUTE,
1060 absolute_x: LDY_ABSOLUTE_X,
1061 absolute_y: NO_ABSOLUTE_Y,
1062 zeropage: LDY_ZEROPAGE,
1063 zeropage_x: LDY_ZEROPAGE_X,
1064 zeropage_y: NO_ZEROPAGE_Y,
1065 relative: NO_RELATIVE,
1066 indirect: NO_INDIRECT,
1067 indexed_indirect: NO_INDEXED_INDIRECT,
1068 indirect_indexed: NO_INDIRECT_INDEXED,
1069 };
1070
1071 pub const OPCODES_STA: InstructionDef = InstructionDef {
1075 instruction: "sta",
1076 implied: NO_IMPLIED,
1077 immediate: NO_IMMEDIATE,
1078 accumulator: NO_ACCUMULATOR,
1079 absolute: STA_ABSOLUTE,
1080 absolute_x: STA_ABSOLUTE_X,
1081 absolute_y: STA_ABSOLUTE_Y,
1082 zeropage: STA_ZEROPAGE,
1083 zeropage_x: STA_ZEROPAGE_X,
1084 zeropage_y: NO_ZEROPAGE_Y,
1085 relative: NO_RELATIVE,
1086 indirect: NO_INDIRECT,
1087 indexed_indirect: STA_INDEXED_INDIRECT,
1088 indirect_indexed: STA_INDIRECT_INDEXED,
1089 };
1090
1091 pub const OPCODES_JMP: InstructionDef = InstructionDef {
1095 instruction: "jmp",
1096 implied: NO_IMPLIED,
1097 immediate: NO_IMMEDIATE,
1098 accumulator: NO_ACCUMULATOR,
1099 absolute: JMP_ABSOLUTE,
1100 absolute_x: NO_ABSOLUTE_X,
1101 absolute_y: NO_ABSOLUTE_Y,
1102 zeropage: NO_ZEROPAGE,
1103 zeropage_x: NO_ZEROPAGE_X,
1104 zeropage_y: NO_ZEROPAGE_Y,
1105 relative: NO_RELATIVE,
1106 indirect: JMP_INDIRECT,
1107 indexed_indirect: NO_INDEXED_INDIRECT,
1108 indirect_indexed: NO_INDIRECT_INDEXED,
1109 };
1110
1111 pub const OPCODES_JSR: InstructionDef = InstructionDef {
1115 instruction: "jsr",
1116 implied: NO_IMPLIED,
1117 immediate: NO_IMMEDIATE,
1118 accumulator: NO_ACCUMULATOR,
1119 absolute: JSR_ABSOLUTE,
1120 absolute_x: NO_ABSOLUTE_X,
1121 absolute_y: NO_ABSOLUTE_Y,
1122 zeropage: NO_ZEROPAGE,
1123 zeropage_x: NO_ZEROPAGE_X,
1124 zeropage_y: NO_ZEROPAGE_Y,
1125 relative: NO_RELATIVE,
1126 indirect: NO_INDIRECT,
1127 indexed_indirect: NO_INDEXED_INDIRECT,
1128 indirect_indexed: NO_INDIRECT_INDEXED,
1129 };
1130
1131 pub const OPCODES_SEC: InstructionDef = InstructionDef {
1135 instruction: "sec",
1136 implied: SEC_IMPLIED,
1137 immediate: NO_IMMEDIATE,
1138 accumulator: NO_ACCUMULATOR,
1139 absolute: NO_ABSOLUTE,
1140 absolute_x: NO_ABSOLUTE_X,
1141 absolute_y: NO_ABSOLUTE_Y,
1142 zeropage: NO_ZEROPAGE,
1143 zeropage_x: NO_ZEROPAGE_X,
1144 zeropage_y: NO_ZEROPAGE_Y,
1145 relative: NO_RELATIVE,
1146 indirect: NO_INDIRECT,
1147 indexed_indirect: NO_INDEXED_INDIRECT,
1148 indirect_indexed: NO_INDIRECT_INDEXED,
1149 };
1150
1151 pub const OPCODES_CLC: InstructionDef = InstructionDef {
1155 instruction: "clc",
1156 implied: CLC_IMPLIED,
1157 immediate: NO_IMMEDIATE,
1158 accumulator: NO_ACCUMULATOR,
1159 absolute: NO_ABSOLUTE,
1160 absolute_x: NO_ABSOLUTE_X,
1161 absolute_y: NO_ABSOLUTE_Y,
1162 zeropage: NO_ZEROPAGE,
1163 zeropage_x: NO_ZEROPAGE_X,
1164 zeropage_y: NO_ZEROPAGE_Y,
1165 relative: NO_RELATIVE,
1166 indirect: NO_INDIRECT,
1167 indexed_indirect: NO_INDEXED_INDIRECT,
1168 indirect_indexed: NO_INDIRECT_INDEXED,
1169 };
1170
1171 pub const OPCODES_RTS: InstructionDef = InstructionDef {
1175 instruction: "rts",
1176 implied: RTS_IMPLIED,
1177 immediate: NO_IMMEDIATE,
1178 accumulator: NO_ACCUMULATOR,
1179 absolute: NO_ABSOLUTE,
1180 absolute_x: NO_ABSOLUTE_X,
1181 absolute_y: NO_ABSOLUTE_Y,
1182 zeropage: NO_ZEROPAGE,
1183 zeropage_x: NO_ZEROPAGE_X,
1184 zeropage_y: NO_ZEROPAGE_Y,
1185 relative: NO_RELATIVE,
1186 indirect: NO_INDIRECT,
1187 indexed_indirect: NO_INDEXED_INDIRECT,
1188 indirect_indexed: NO_INDIRECT_INDEXED,
1189 };
1190}