Introduction
The row is the high nibble of the opcode and the column the low nibble. In almost every group of four columns the low two bits are a register (0 to 3) or, in the branches and returns, a condition (EQ, GT, LT, UN); bits 3 and 2 select the
addressing mode in the data instructions (0 register Z, 1 immediate I, 2 relative R, 3 absolute A). The undefined opcodes are shaded. Four opcodes reuse the condition-3 slot of a group of branches: 9B is ZBRR, 9F is BXA, BB is ZBSR and BF is BSXA.
Opcode 40 (ANDZ,R0) is HALT and C0 (STRZ,R0) is NOP.
The map
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x | LODZ | LODZ | LODZ | LODZ | LODI | LODI | LODI | LODI | LODR | LODR | LODR | LODR | LODA | LODA | LODA | LODA |
| 1x | - | - | SPSU | SPSL | RETC | RETC | RETC | RETC | BCTR | BCTR | BCTR | BCTR | BCTA | BCTA | BCTA | BCTA |
| 2x | EORZ | EORZ | EORZ | EORZ | EORI | EORI | EORI | EORI | EORR | EORR | EORR | EORR | EORA | EORA | EORA | EORA |
| 3x | REDC | REDC | REDC | REDC | RETE | RETE | RETE | RETE | BSTR | BSTR | BSTR | BSTR | BSTA | BSTA | BSTA | BSTA |
| 4x | HALT | ANDZ | ANDZ | ANDZ | ANDI | ANDI | ANDI | ANDI | ANDR | ANDR | ANDR | ANDR | ANDA | ANDA | ANDA | ANDA |
| 5x | RRR | RRR | RRR | RRR | REDE | REDE | REDE | REDE | BRNR | BRNR | BRNR | BRNR | BRNA | BRNA | BRNA | BRNA |
| 6x | IORZ | IORZ | IORZ | IORZ | IORI | IORI | IORI | IORI | IORR | IORR | IORR | IORR | IORA | IORA | IORA | IORA |
| 7x | REDD | REDD | REDD | REDD | CPSU | CPSL | PPSU | PPSL | BSNR | BSNR | BSNR | BSNR | BSNA | BSNA | BSNA | BSNA |
| 8x | ADDZ | ADDZ | ADDZ | ADDZ | ADDI | ADDI | ADDI | ADDI | ADDR | ADDR | ADDR | ADDR | ADDA | ADDA | ADDA | ADDA |
| 9x | - | - | LPSU | LPSL | DAR | DAR | DAR | DAR | BCFR | BCFR | BCFR | ZBRR | BCFA | BCFA | BCFA | BXA |
| Ax | SUBZ | SUBZ | SUBZ | SUBZ | SUBI | SUBI | SUBI | SUBI | SUBR | SUBR | SUBR | SUBR | SUBA | SUBA | SUBA | SUBA |
| Bx | WRTC | WRTC | WRTC | WRTC | TPSU | TPSL | - | - | BSFR | BSFR | BSFR | ZBSR | BSFA | BSFA | BSFA | BSXA |
| Cx | NOP | STRZ | STRZ | STRZ | - | - | - | - | STRR | STRR | STRR | STRR | STRA | STRA | STRA | STRA |
| Dx | RRL | RRL | RRL | RRL | WRTE | WRTE | WRTE | WRTE | BIRR | BIRR | BIRR | BIRR | BIRA | BIRA | BIRA | BIRA |
| Ex | COMZ | COMZ | COMZ | COMZ | COMI | COMI | COMI | COMI | COMR | COMR | COMR | COMR | COMA | COMA | COMA | COMA |
| Fx | WRTD | WRTD | WRTD | WRTD | TMI | TMI | TMI | TMI | BDRR | BDRR | BDRR | BDRR | BDRA | BDRA | BDRA | BDRA |
The undefined opcodes
Opcodes 10, 11, 90, 91, B6, B7 and C4 to C7 have no instruction in the 2650. The explorer shows each as a one-byte DB with the status Illegal. What a real chip does is not documented in the sources read: the MAME-derived core executes them as a no-operation of 7 clock cycles,
and the AS2650-2, a modern compatible chip, uses them for new instructions (push, pop, multiply, exchange, an extension prefix and clear), so they are not safe to use in a program meant to run on other hardware. C4 to C7 would be an immediate store (STRI), which the 2650 does not have;
the register-to-register forms ANDZ,R0 and STRZ,R0 are the instructions HALT and NOP.
Not described
Known, not yet covered
- Reference: the extended instruction set of the AS2650-2 (not a 2650 instruction set; later, if a machine uses it).
Unknown
- Reference: the behaviour of the ten undefined opcodes on real 2650, 2650A and 2650B chips.
Links
Reference
- AS2650 instruction set architecture – Avalon Semiconductors: a 16 by 16 grid
- 2650dasm.cpp – MAME: all 256 opcodes