Files
2021-10-31 21:20:46 +02:00

81 lines
5.7 KiB
C++

#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);