DSM/ECU/TMP76xxx MH6xxx Instruction Set
<- DSM/ECU
| Bytes | Mnem | Mode | Byte length | Cycles | Desc |
|---|---|---|---|---|---|
| 00 | TEST | 1 | * | TEST OPERATION TEST MODE ONLY | |
| 01 | NOP | 1 | 2 | NO OPERATION | |
| 02 | AIM | DIR | 3 | ? | AND IN MEMORY |
| 03 | OIM | DIR | 3 | ? | OR IN MEMORY |
| 04 | LSRD | 1 | 3 | LOGICAL SHIFT RIGHT DOUBLE ACCUMULATOR | |
| 05 | ASLD / LSLD | 1 | 3 | ARITHMETIC / LOGICAL SHIFT LEFT DOUBLE ACC | |
| 06 | TAP | 1 | 2 | TRANSFER FROM ACC A TO CONDITION CODE REGISTER | |
| 07 | TPA | 1 | 2 | TRANSFER FROM CONDITION CODE REGISTER TO ACC A | |
| 08 | INX | 1 | 3 | INCREMENT INDEX REGISTER X | |
| 09 | DEX | 1 | 3 | DECREMENT INDEX REGISTER X | |
| 0A | CLV | 1 | 2 | CLEAR TWOS COMPLEMENT OVERFLOW BIT | |
| 0B | SEV | 1 | 2 | SET TWOS COMPLEMENT OVERFLOW BIT | |
| 0C | CLC | 1 | 2 | CLEAR CARRY | |
| 0D | SEC | 1 | 2 | SET CARRY | |
| 0E | CLI | 1 | 2 | CLEAR INTERRUPT MASK | |
| 0F | SEI | 1 | 2 | SET INTERRUPT MASK | |
| 10 | SBA | 1 | 2 | SUBTRACT ACCUMULATORS | |
| 11 | CBA | 1 | 2 | COMPARE ACCUMULATORS | |
| 12 | AIM | IND,X | 3 | ? | ANd in memory, indexed X |
| 13 | OIM | IND,X | 3 | ? | Or in memory, indexed X |
| 14 | DIV | IMM | 2 | 4 | DIVIDE IMMEDIATE |
| 15 | DIV | DIR | 2 | 4 | DIVIDE DIRECT |
| 16 | TAB | 1 | 2 | TRANSFER ACCUMULATOR A TO ACCUMULATOR B | |
| 17 | TBA | 1 | 2 | TRANSFER FROM ACCUMULATOR B TO ACCUMULATOR A | |
| 18 | XGXY | 1 | 4 | EXCHANGE REGISTER X AND REGISTER Y | |
| 19 | DAA | 1 | 2 | DECIMAL ADJUST ACCUMULATOR A | |
| 1A | XGDX | 1 | EXCHANGE DOUBLE ACCUMLATOR AND INDEX REG X | ||
| 1B | ABA | 1 | 2 | ADD ACCUMULATOR B TO ACCUMULATOR A | |
| 1C | CPD | IMM | 3 | 5 | COMPARE DOUBLE ACCUMULATOR |
| 1D | CPD | DIR | 2 | 6 | COMPARE DOUBLE ACCUMULATOR |
| 1E | CPD | IND,X | 2 | ? | COMPARE DOUBLE ACCUMULATOR |
| 1F | CPD | EXT | 3 | 7 | COMPARE DOUBLE ACCUMULATOR |
| 20 | BRA | 2 | 3 | BRANCH ALWAYS | |
| 21 | BRN | 2 | 3 | BRANCH NEVER | |
| 22 | BHI | 2 | 3 | BRANCH IF HIGHER | |
| 23 | BLS | 2 | 3 | BRANCH IF LOWER OR SAME | |
| 24 | BCC / BHS | 2 | 3 | BRANCH IF CARRY CLR / BRANCH IF HIGHER OR SAME | |
| 25 | BCS / BLO | 2 | 3 | BRANCH IF CARRY SET / BRANCH IF LOWER | |
| 26 | BNE | 2 | 3 | BRANCH IF NOT EQUAL TO ZERO | |
| 27 | BEQ | 2 | 3 | BRANCH IF EQUAL | |
| 28 | BVC | 2 | 3 | BRANCH IF OVERFLOW CLEAR | |
| 29 | BVS | 2 | 3 | BRANCH IF OVERFLOW SET | |
| 2A | BPL | 2 | 3 | BRANCH IF PLUS | |
| 2B | BMI | 2 | 3 | BRANCH IF MINUS | |
| 2C | BGE | 2 | 3 | BRANCH IF GREATER THAN OR EQUAL TO ZERO | |
| 2D | BLT | 2 | 3 | BRANCH IF LESS THAN ZERO | |
| 2E | BGT | 2 | 3 | BRANCH IF GREATER THAN ZERO | |
| 2F | BLE | 2 | 3 | BRANCH IF LESS THAN OR EQUAL TO ZERO | |
| 30 | TSX | 1 | 3 | TRANSFER FROM STACK POINTER TO INDEX REGISTER X | |
| 31 | INS | 1 | 3 | INCREMENT STACK POINTER | |
| 32 | PULA | 1 | 4 | PULL DATA FROM STACK | |
| 33 | PULB | 1 | 4 | PULL DATA FROM STACK | |
| 34 | DES | 1 | 3 | DECREMENT STACK POINTER | |
| 35 | TXS | 1 | 3 | TRANSFER FROM INDEX REGISTER X TO STACK POINTER | |
| 36 | PSHA | 1 | 3 | PUSH DATA ONTO STACK | |
| 37 | PSHB | 1 | 3 | PUSH DATA ONTO STACK | |
| 38 | PULX | 1 | 5 | PULL INDEX REGISTER X FROM STACK | |
| 39 | RTS | 1 | 5 | RETURN FROM SUBROUTINE | |
| 3A | ABX | 1 | 3 | ADD ACCUMULATOR B TO INDEX REGISTER X | |
| 3B | RTI | 1 | 12 | RETURN FROM INTERRUPT | |
| 3C | PSHX | 1 | 4 | PUSH INDEX REGISTER X ONTO STACK | |
| 3D | MUL | 1 | 10 | MULTIPLY UNSIGNED | |
| 3E | WAI | 1 | 14 | WAIT FOR INTERRUPT | |
| 3F | SWI | 1 | 14 | SOFTWARE INTERRUPT | |
| 40 | NEGA | 1 | 2 | NEGATE | |
| 43 | COMA | 1 | 2 | COMPLEMENT | |
| 44 | LSRA | 1 | 2 | LOGICAL SHIFT RIGHT | |
| 46 | RORA | 1 | 2 | ROTATE RIGHT | |
| 47 | ASRA | 1 | 2 | ARITHMETIC SHIFT RIGHT | |
| 48 | ASLA / LSLA | 1 | 2 | ARITHMETIC / LOGICAL SHIFT LEFT | |
| 49 | ROLA | 1 | 2 | ROTATE LEFT | |
| 4A | DECA | 1 | 2 | DECREMENT | |
| 4C | INCA | 1 | 2 | INCREMENT | |
| 4D | TSTA | 1 | 2 | TEST | |
| 4F | CLRA | 1 | 2 | CLEAR | |
| 50 | NEGB | 1 | 2 | NEGATE | |
| 53 | COMB | 1 | 2 | COMPLEMENT | |
| 54 | LSRB | 1 | 2 | LOGICAL SHIFT RIGHT | |
| 56 | RORB | 1 | 2 | ROTATE RIGHT | |
| 57 | ASRB | 1 | 2 | ARITHMETIC SHIFT RIGHT | |
| 58 | ASLB / LSLB | 1 | 2 | ARITHMETIC / LOGICAL SHIFT LEFT | |
| 59 | ROLB | 1 | 2 | ROTATE LEFT | |
| 5A | DECB | 1 | 2 | DECREMENT | |
| 5C | INCB | 1 | 2 | INCREMENT | |
| 5D | TSTB | 1 | 2 | TEST | |
| 5F | CLRB | 1 | 2 | CLEAR | |
| 60 | NEG | IND,X | 2 | 6 | NEGATE |
| 63 | COM | IND,X | 2 | 6 | COMPLEMENT |
| 64 | LSR | IND,X | 2 | 6 | LOGICAL SHIFT RIGHT |
| 66 | ROR | IND,X | 2 | 6 | ROTATE RIGHT |
| 67 | ASR | IND,X | 2 | 6 | ARITHMETIC SHIFT RIGHT |
| 68 | ASL / LSL | IND,X | 2 | 6 | ARITHMETIC / LOGICAL SHIFT LEFT |
| 69 | ROL | IND,X | 2 | 6 | ROTATE LEFT |
| 6A | DEC | IND,X | 2 | 6 | DECREMENT |
| 6C | INC | IND,X | 2 | 6 | INCREMENT |
| 6D | TST | IND,X | 2 | 6 | TEST |
| 6E | JMP | IND,X | 2 | 3 | JUMP |
| 6F | CLR | IND,X | 2 | 6 | CLEAR |
| 70 | NEG | EXT | 3 | 6 | NEGATE |
| 73 | COM | EXT | 3 | 6 | COMPLEMENT |
| 74 | LSR | EXT | 3 | 6 | LOGICAL SHIFT RIGHT |
| 76 | ROR | EXT | 3 | 6 | ROTATE RIGHT |
| 77 | ASR | EXT | 3 | 6 | ARITHMETIC SHIFT RIGHT |
| 78 | ASL / LSL | EXT | 3 | 6 | ARITHMETIC / LOGICAL SHIFT LEFT |
| 79 | ROL | EXT | 3 | 6 | ROTATE LEFT |
| 7A | DEC | EXT | 3 | 6 | DECREMENT |
| 7C | INC | EXT | 3 | 6 | INCREMENT |
| 7D | TST | EXT | 3 | 6 | TEST |
| 7E | JMP | EXT | 3 | 3 | JUMP |
| 7F | CLR | EXT | 3 | 6 | CLEAR |
| 80 | SUBA | IMM | 2 | 2 | SUBTRACT |
| 81 | CMPA | IMM | 2 | 2 | COMPARE |
| 82 | SBCA | IMM | 2 | 2 | SUBTRACT WITH CARRY |
| 83 | SUBD | IMM | 3 | 4 | SUBTRACT DOUBLE ACCUMULATOR |
| 84 | ANDA | IMM | 2 | 2 | LOGICAL AND |
| 85 | BITA | IMM | 2 | 2 | BIT TEST |
| 86 | LDAA | IMM | 2 | 2 | LOAD ACCUMULATOR |
| 87 | BRSET | DIR | 4 | BRANCH IF BIT(S) ARE SET | |
| 88 | EORA | IMM | 2 | 2 | EXCLUSIVE OR |
| 89 | ADCA | IMM | 2 | 2 | ADD WITH CARRY |
| 8A | ORAA | IMM | 2 | 2 | INCLUSIVE OR |
| 8B | ADDA | IMM | 2 | 2 | ADD WITHOUT CARRY |
| 8C | CPX | IMM | 3 | 4 | COMPARE INDEX REGISTER X |
| 8D | BSR | 2 | 6 | BRANCH TO SUBROUTINE | |
| 8E | LDS | IMM | 3 | 3 | LOAD STACK POINTER |
| 8F | BRCLR | DIR | 4 | BRANCH IF BIT(S) ARE CLEAR | |
| 90 | SUBA | DIR | 2 | 3 | SUBTRACT |
| 91 | CMPA | DIR | 2 | 3 | COMPARE |
| 92 | SBCA | DIR | 2 | 3 | SUBTRACT WITH CARRY |
| 93 | SUBD | DIR | 2 | 5 | SUBTRACT DOUBLE ACCUMULATOR |
| 94 | ANDA | DIR | 2 | 3 | LOGICAL AND |
| 95 | BITA | DIR | 2 | 3 | BIT TEST |
| 96 | LDAA | DIR | 2 | 3 | LOAD ACCUMULATOR |
| 97 | STAA | DIR | 2 | 3 | STORE ACCUMULATOR |
| 98 | EORA | DIR | 2 | 3 | EXCLUSIVE OR |
| 99 | ADCA | DIR | 2 | 3 | ADD WITH CARRY |
| 9A | ORAA | DIR | 2 | 3 | INCLUSIVE OR |
| 9B | ADDA | DIR | 2 | 3 | ADD WITHOUT CARRY |
| 9C | CPX | DIR | 2 | 5 | COMPARE INDEX REGISTER X |
| 9D | JSR | DIR | 2 | 5 | JUMP TO SUBROUTINE |
| 9E | LDS | DIR | 2 | 4 | LOAD STACK POINTER |
| 9F | STS | DIR | 2 | 4 | STORE STACK POINTER |
| A0 | SUBA | IND,X | 2 | 4 | SUBTRACT |
| A0 80 | SUBA | IND,Y | 2 | SUBTRACT | |
| A1 | CMPA | IND,X | 2 | 4 | COMPARE |
| A1 80 | CMPA | IND,Y+ | 2 | COMPARE WITH/Y+ | |
| A2 | SBCA | IND,X | 2 | 4 | SUBTRACT WITH CARRY |
| A2 80 | SBCA | IND,Y | 2 | SUBTRACT WITH CARRY | |
| A3 | SUBD | IND,X | 2 | 6 | SUBTRACT DOUBLE ACCUMULATOR |
| A3 80 | SUBD | IND,Y | 2 | 6 | SUBTRACT DOUBLE ACCUMULATOR |
| A4 | ANDA | IND,X | 2 | 4 | LOGICAL AND |
| A4 80 | ANDA | IND,Y | 2 | 4 | LOGICAL AND |
| A5 | BITA | IND,X | 2 | 4 | BIT TEST |
| A5 80 | BITA | IND,Y | 2 | 4 | BIT TEST |
| A6 | LDAA | IND,X | 2 | 4 | LOAD ACCUMULATOR |
| A6 80 | LDAA | IND,Y+ | 2 | LOAD ACCUMULATOR WITH/Y+ | |
| A7 | STAA | IND,X | 2 | 4 | STORE ACCUMULATOR |
| A7 80 | STAA | IND,Y | 2 | STORE ACCUMULATOR | |
| A8 | EORA | IND,X | 2 | 4 | EXCLUSIVE OR |
| A8 80 | EORA | IND,Y | 2 | 4 | EXCLUSIVE OR |
| A9 | ADCA | IND,X | 2 | 4 | ADD WITH CARRY |
| A9 80 | ADCA | IND,Y | 2 | 4 | ADD WITH CARRY |
| AA | ORAA | IND,X | 2 | 4 | INCLUSIVE OR |
| AA 80 | ORAA | IND,Y | 2 | 4 | INCLUSIVE OR |
| AB | ADDA | IND,X | 2 | 4 | ADD WITHOUT CARRY |
| AB 80 | ADDA | IND,Y | 2 | 4 | ADD WITHOUT CARRY |
| AC | CPX | IND,X | 2 | 6 | COMPARE INDEX REGISTER X |
| AC 80 | CPX | IND,Y | 2 | 6 | COMPARE INDEX REGISTER X |
| AD | JSR | IND,X | 2 | 6 | JUMP TO SUBROUTINE |
| AD 80 | JSR | IND,Y | 2 | JUMP TO SUBROUTINE | |
| AE | LDS | IND,X | 2 | 5 | LOAD STACK POINTER |
| AE 80 | LDS | IND,Y | 2 | 5 | LOAD STACK POINTER |
| AF | STS | IND,X | 2 | 5 | STORE STACK POINTER |
| AF 80 | STS | IND,Y | 2 | 5 | STORE STACK POINTER |
| B0 | SUBA | EXT | 3 | 4 | SUBTRACT |
| B1 | CMPA | EXT | 3 | 4 | COMPARE |
| B2 | SBCA | EXT | 3 | 4 | SUBTRACT WITH CARRY |
| B3 | SUBD | EXT | 3 | 6 | SUBTRACT DOUBLE ACCUMULATOR |
| B4 | ANDA | EXT | 3 | 4 | LOGICAL AND |
| B5 | BITA | EXT | 3 | 4 | BIT TEST |
| B6 | LDAA | EXT | 3 | 4 | LOAD ACCUMULATOR |
| B7 | STAA | EXT | 3 | 4 | STORE ACCUMULATOR |
| B8 | EORA | EXT | 3 | 4 | EXCLUSIVE OR |
| B9 | ADCA | EXT | 3 | 4 | ADD WITH CARRY |
| BA | ORAA | EXT | 3 | 4 | INCLUSIVE OR |
| BB | ADDA | EXT | 3 | 4 | ADD WITHOUT CARRY |
| BC | CPX | EXT | 3 | 6 | COMPARE INDEX REGISTER X |
| BD | JSR | EXT | 3 | 6 | JUMP TO SUBROUTINE |
| BE | LDS | EXT | 3 | 5 | LOAD STACK POINTER |
| BF | STS | EXT | 3 | 5 | STORE STACK POINTER |
| C0 | SUBB | IMM | 2 | 2 | SUBTRACT |
| C1 | CMPB | IMM | 2 | 2 | COMPARE |
| C2 | SBCB | IMM | 2 | 2 | SUBTRACT WITH CARRY |
| C3 | ADDD | IMM | 3 | 4 | ADD DOUBLE ACCUMULATOR |
| C4 | ANDB | IMM | 2 | 2 | LOGICAL AND |
| C5 | BITB | IMM | 2 | 2 | BIT TEST |
| C6 | LDAB | IMM | 2 | 2 | LOAD ACCUMULATOR |
| C8 | EORB | IMM | 2 | 2 | EXCLUSIVE OR |
| C9 | ADCB | IMM | 2 | 2 | ADD WITH CARRY |
| CA | ORAB | IMM | 2 | 2 | INCLUSIVE OR |
| CB | ADDB | IMM | 2 | 2 | ADD WITHOUT CARRY |
| CC | LDD | IMM | 3 | 3 | LOAD DOUBLE ACCUMULATOR |
| CD 08 | INY | 2 | 4 | INCREMENT INDEX REGISTER Y | |
| CD 09 | DEY | 2 | 4 | DECREMENT INDEX REGISTER Y | |
| CD 1A | XGDY | 2 | EXCHANGE DOUBLE ACCUMULATOR AND INDEX REG Y | ||
| CD 3A | ABY | 2 | ADD ACCUMULATOR B TO INDEX REG Y | ||
| CD 8C | CMPY | IMM, Y++ | 4 | CMPY INDEX REGISTER Y AND INCREMENT. | |
| CD CE | LDY | IMM | 4 | 4 | LOAD INDEX REGISTER Y |
| CD DF | STY | DIR | 3 | 5 | STORE INDEX REGISTER Y |
| CD EE | LDY | IND,X | 3 | 6 | LOAD INDEX REGISTER Y |
| CE | LDX | IMM | 3 | 3 | LOAD INDEX REGISTER X |
| CF | BRCLR | IND,X | 3 | ? | Branch if clear |
| D0 | SUBB | DIR | 2 | 3 | SUBTRACT |
| D1 | CMPB | DIR | 2 | 3 | COMPARE |
| D2 | SBCB | DIR | 2 | 3 | SUBTRACT WITH CARRY |
| D3 | ADDD | DIR | 2 | 5 | ADD DOUBLE ACCUMULATOR |
| D4 | ANDB | DIR | 2 | 3 | LOGICAL AND |
| D5 | BITB | DIR | 2 | 3 | BIT TEST |
| D6 | LDAB | DIR | 2 | 3 | LOAD ACCUMULATOR |
| D7 | STAB | DIR | 2 | 3 | STORE ACCUMULATOR |
| D8 | EORB | DIR | 2 | 3 | EXCLUSIVE OR |
| D9 | ADCB | DIR | 2 | 3 | ADD WITH CARRY |
| DA | ORAB | DIR | 2 | 3 | INCLUSIVE OR |
| DB | ADDB | DIR | 2 | 3 | ADD WITHOUT CARRY |
| DC | LDD | DIR | 2 | 4 | LOAD DOUBLE ACCUMULATOR |
| DD | STD | DIR | 2 | 4 | STORE DOUBLE ACCUMULATOR |
| DE | LDX | DIR | 2 | 4 | LOAD INDEX REGISTER X |
| DF | STX | DIR | 2 | 4 | STORE INDEX REGISTER X |
| E0 | SUBB | IND,X | 2 | 4 | SUBTRACT |
| E0 80 | SUBB | IND,Y | 2 | 4 | SUBTRACT |
| E1 | CMPB | IND,X | 2 | 4 | COMPARE |
| E1 80 | CMPB | IND,Y | 2 | 4 | COMPARE |
| E2 | SBCB | IND,X | 2 | 4 | SUBTRACT WITH CARRY |
| E2 80 | SBCB | IND,Y | 2 | 4 | SUBTRACT WITH CARRY |
| E3 | ADDD | IND,X | 2 | 6 | ADD DOUBLE ACCUMULATOR |
| E3 80 | ADDD | IND,Y | 2 | 6 | ADD DOUBLE ACCUMULATOR |
| E4 | ANDB | IND,X | 2 | 4 | LOGICAL AND |
| E4 80 | ANDB | IND,Y | 2 | 4 | LOGICAL AND |
| E5 | BITB | IND,X | 2 | 4 | BIT TEST |
| E5 80 | BITB | IND,Y | 2 | 4 | BIT TEST |
| E6 | LDAB | IND,X | 2 | 4 | LOAD ACCUMULATOR |
| E6 80 | LDAB | IND,Y | 2 | 4 | LOAD ACCUMULATOR |
| E7 | STAB | IND,X | 2 | 4 | STORE ACCUMULATOR |
| E7 80 | STAB | IND,Y | 2 | 4 | STORE ACCUMULATOR |
| E8 | EORB | IND,X | 2 | 4 | EXCLUSIVE OR |
| E8 80 | EORB | IND,Y | 2 | 4 | EXCLUSIVE OR |
| E9 | ADCB | IND,X | 2 | 4 | ADD WITH CARRY |
| E9 80 | ADCB | IND,Y | 2 | 4 | ADD WITH CARRY |
| EA | ORAB | IND,X | 2 | 4 | INCLUSIVE OR |
| EA 80 | ORAB | IND,Y | 2 | 4 | INCLUSIVE OR |
| EB | ADDB | IND,X | 2 | 4 | ADD WITHOUT CARRY |
| EB 80 | ADDB | IND,Y | 2 | 4 | ADD WITHOUT CARRY |
| EC | LDD | IND,X | 2 | 5 | LOAD DOUBLE ACCUMULATOR |
| EC 80 | LDD | IND,Y | 2 | 5 | LOAD DOUBLE ACCUMULATOR |
| ED | STD | IND,X | 2 | 5 | STORE DOUBLE ACCUMULATOR |
| ED 80 | STD | IND,Y | 2 | 5 | STORE DOUBLE ACCUMULATOR |
| EE | LDX | IND,X | 2 | 5 | LOAD INDEX REGISTER X |
| EE 80 | LDX | IND,Y++ | 2 | 5 | LOAD INDEX REGISTER X WITH/Y++ |
| EF | STX | IND,X | 2 | 5 | STORE INDEX REGISTER X |
| EF 80 | STX | IND,X | 2 | 5 | STORE INDEX REGISTER X |
| F0 | SUBB | EXT | 3 | 4 | SUBTRACT |
| F1 | CMPB | EXT | 3 | 4 | COMPARE |
| F2 | SBCB | EXT | 3 | 4 | SUBTRACT WITH CARRY |
| F3 | ADDD | EXT | 3 | 6 | ADD DOUBLE ACCUMULATOR |
| F4 | ANDB | EXT | 3 | 4 | LOGICAL AND |
| F5 | BITB | EXT | 3 | 4 | BIT TEST |
| F6 | LDAB | EXT | 3 | 4 | LOAD ACCUMULATOR |
| F7 | STAB | EXT | 3 | 4 | STORE ACCUMULATOR |
| F8 | EORB | EXT | 3 | 4 | EXCLUSIVE OR |
| F9 | ADCB | EXT | 3 | 4 | ADD WITH CARRY |
| FA | ORAB | EXT | 3 | 4 | INCLUSIVE OR |
| FB | ADDB | EXT | 3 | 4 | ADD WITHOUT CARRY |
| FC | LDD | EXT | 3 | 5 | LOAD DOUBLE ACCUMULATOR |
| FD | STD | EXT | 3 | 5 | STORE DOUBLE ACCUMULATOR |
| FE | LDX | EXT | 3 | 5 | LOAD INDEX REGISTER X |
| FF | STX | EXT | 3 | 5 | STORE INDEX REGISTER X |