This is a partial implementation of the abandoned Signetics 2650 CPU architecture from 1975.
Only a subset of the full feature set is implemented here. The following features are part of the S2650, but missing from the SA2650:
Some additional funcionality is also present, utilizing opcodes that went unused in the original S2650 to add new instructions:
'h90, no arguments) - Multiplies r0 and r1, and stores the 16-bit result in r2 (LSB) and r3 (MSB)
'h91, no arguments) - Exchanges the values of r0 and r1
'h10, no arguments) - Stores the value on top of the call stack into r0 (LSB) and r1 (MSB)
lods(opcode `‘h11’, no arguments) - Loads the value on top of the call stack from r0 (LSB) and r1 (MSB)
Please see this repository for Documentation on the CPU architecture, as well as an assembler, emulator and example programs.