#include "m740.hpp" const instruc_t Instructions[] = { { "", 0 }, // null instruction { "adc", CF_USE1 }, // add with carry { "and", CF_USE1 }, // logical and { "asl", CF_USE1 }, // arithmetic shift left { "bbc", CF_USE1|CF_USE2|CF_USE3 }, // branch on bit clear { "bbs", CF_USE1|CF_USE2|CF_USE3 }, // branch on bit set { "bcc", CF_USE1 }, // branch on carry clear { "bcs", CF_USE1 }, // branch on carry set { "beq", CF_USE1 }, // branch on equal { "bit", CF_USE1 }, // test bit in memory with accumulator { "bmi", CF_USE1 }, // branch on result minus { "bne", CF_USE1 }, // branch on not equal { "bpl", CF_USE1 }, // branch on result plus { "bra", CF_USE1|CF_STOP }, // branch always { "brk", 0 }, // force break { "bvc", CF_USE1 }, // branch on overflow clear { "bvs", CF_USE1 }, // branch on overflow set { "clb", CF_USE1|CF_USE2|CF_CHG2 }, // clear bit { "clc", 0 }, // clear carry flag { "cld", 0 }, // clear decimal mode { "cli", 0 }, // clear interrupt disable status { "clt", 0 }, // clear transfer flag { "clv", 0 }, // clear overflow flag { "cmp", CF_USE1 }, // compare { "com", CF_USE1|CF_CHG1 }, // complement { "cpx", CF_USE1 }, // compare memory and index register X { "cpy", CF_USE1 }, // compare memory and index register Y { "dec", CF_USE1|CF_CHG1 }, // decrement by one { "dex", 0 }, // decrement index register X by one { "dey", 0 }, // decrement index register Y by one { "div", CF_USE1 }, // divide memory by accumulator { "eor", CF_USE1 }, // exclusive or memory with accumulator { "inc", CF_USE1|CF_CHG1 }, // increment by one { "inx", 0 }, // increment index register X by one { "iny", 0 }, // increment index register Y by one { "jmp", CF_USE1|CF_STOP }, // jump { "jsr", CF_USE1|CF_CALL }, // jump to subroutine { "lda", CF_USE1 }, // load accumulator with memory { "ldm", CF_USE1|CF_USE2|CF_CHG2 }, // load immediate data to memory { "ldx", CF_USE1 }, // load index register X from memory { "ldy", CF_USE1 }, // load index register Y from memory { "lsr", CF_USE1|CF_CHG1 }, // logical shift right { "mul", CF_USE1 }, // multiply accumulator and memory { "nop", 0 }, // no operation { "ora", CF_USE1 }, // or memory with accumulator { "pha", 0 }, // push accumulator on stack { "php", 0 }, // push processor status on stack { "pla", 0 }, // pull accumulator from stack { "plp", 0 }, // pull processor status from stack { "rol", CF_USE1|CF_CHG1 }, // rotate one bit left { "ror", CF_USE1|CF_CHG1 }, // rotate one bit right { "rrf", CF_USE1|CF_CHG1 }, // rotate right of four bits { "rti", CF_STOP }, // return from interrupt { "rts", CF_STOP }, // return from subroutine { "sbc", CF_USE1 }, // subtract with carry { "seb", CF_USE1|CF_USE2|CF_CHG2 }, // set bit { "sec", 0 }, // set carry flag { "sed", 0 }, // set decimal mode { "sei", 0 }, // set interrupt disable flag { "set", 0 }, // set transfert flag { "sta", CF_CHG1 }, // store accumulator in memory { "stp", 0 }, // stop { "stx", CF_CHG1 }, // store index register X in memory { "sty", CF_CHG1 }, // store index register Y in memory { "tax", 0 }, // transfert accumulator to index register X { "tay", 0 }, // transfert accumulator to index register Y { "tst", CF_USE1 }, // test for negative or zero { "tsx", 0 }, // transfert stack pointer to index register X { "txa", 0 }, // transfert index register X to accumulator { "txs", 0 }, // transfert index register X to stack pointer { "tya", 0 }, // transfert index register Y to accumulator { "wit", 0 } // wait }; CASSERT(qnumber(Instructions) == m740_last);