The 666 cpu is an experiment in extreme minimalism.
The 666R version should be relatively easy to build with basic logic chips and an EEPROM.
FPGA could be another great approach. Some work on the 666R has already been done in Verilog.
gnome-alsamixerif having volume-mute problems
It compiles the assembler and the simulator, assembles an example rom and runs it.
666Rsim / 666RSsim is a simulator. It takes into account actual datapaths, it's not efficient, it's not fast.
666Rasm [assemblySource] [destinationRom]; use
-vfor verbose assembling
666Rsim [romFile], use
666RSsim [romFile] if running a rom assembled for the 666RS
nop: No OPeration, do nothing, waste a cycle
lda [val]: load next byte into register A
ldax [val]: same as
lda, but loads the value into multiple registers at once
hlt: halt the clock (interrupts might be enabled)
hac: halt if CF is set
haz: halt if ZF is set
sa: direct register transfer: copy RS into RA
sao: direct register transfer from a single source to multiple destinations; copies RS into RA and OUT
soh: copy RS to OUT and then HALT
shl: just set the ALU operator
addb [value]: set the ALU operator to ADD and load next byte into RB
jmp [addr]: unconditional jump to address contained in next byte
jc [addr]: conditional jump: jump if ZF or CF is set
jmps: unconditional jump to address contained in RX or RS
jmpxc: conditional jump: jump to address contained in RX if ZF or CF is set
.labelNameand use its address in place of any value with
.loop -- do something here jmp @loop