diff options
Diffstat (limited to 'src/devices/cpu/unsp')
-rw-r--r-- | src/devices/cpu/unsp/unsp_fxxx.cpp | 50 |
1 files changed, 46 insertions, 4 deletions
diff --git a/src/devices/cpu/unsp/unsp_fxxx.cpp b/src/devices/cpu/unsp/unsp_fxxx.cpp index 8a62d05476b..eed523c5568 100644 --- a/src/devices/cpu/unsp/unsp_fxxx.cpp +++ b/src/devices/cpu/unsp/unsp_fxxx.cpp @@ -102,13 +102,55 @@ inline void unsp_device::execute_fxxx_001_group(uint16_t op) if (d) { - logerror("%s ds:[%04x],%d\n", bitops[bitop], imm16, offset); - unimplemented_opcode(op); + switch (bitop) + { + case 0x0: // tstb + logerror("tstb ds:[%04x],%d\n", imm16, offset); + unimplemented_opcode(op); + break; + + case 0x1: // setb + logerror("setb ds:[%04x],%d\n", imm16, offset); + unimplemented_opcode(op); + break; + + case 0x2: // clrb + logerror("clrb ds:[%04x],%d\n", imm16, offset); + unimplemented_opcode(op); + break; + + case 0x3: // invb + logerror("invb ds:[%04x],%d\n", imm16, offset); + unimplemented_opcode(op); + break; + } } else { - logerror("%s [%04x],%d\n", bitops[bitop], imm16, offset); - unimplemented_opcode(op); + switch (bitop) + { + case 0x0: // tstb + logerror("tstb [%04x],%d\n", imm16, offset); + unimplemented_opcode(op); + break; + + case 0x1: // setb (bkrankp uses this) + { + uint16_t temp = read16(imm16); + temp |= (1 << offset); + write16(imm16, temp); + break; + } + case 0x2: // clrb + logerror("clrb [%04x],%d\n", imm16, offset); + unimplemented_opcode(op); + break; + + case 0x3: // invb + logerror("invb [%04x],%d\n", imm16, offset); + unimplemented_opcode(op); + break; + } } return; |