diff options
Diffstat (limited to 'src/devices/cpu/pic16c5x/16c5xdsm.cpp')
-rw-r--r-- | src/devices/cpu/pic16c5x/16c5xdsm.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/devices/cpu/pic16c5x/16c5xdsm.cpp b/src/devices/cpu/pic16c5x/16c5xdsm.cpp index 4768cbb12e8..a748b553cd3 100644 --- a/src/devices/cpu/pic16c5x/16c5xdsm.cpp +++ b/src/devices/cpu/pic16c5x/16c5xdsm.cpp @@ -25,7 +25,10 @@ #include "emu.h" #include "16c5xdsm.h" + #include <ctype.h> +#include <stdexcept> + const char *const pic16c5x_disassembler::regfile[32] = { "Reg$00 (IND)", "Reg$01 (TMR)", "Reg$02 (PCL)", "Reg$03 (ST)", "Reg$04 (FSR)", "Reg$05 (PTA)", "Reg$06 (PTB)", "Reg$07 (PTC)", "Reg$08", "Reg$09", "Reg$0A", "Reg$0B", "Reg$0C", "Reg$0D", "Reg$0E", "Reg$0F", @@ -98,16 +101,15 @@ pic16c5x_disassembler::pic16c5x_disassembler() case 'd': case 'f': case 'k': - bit --; + bit--; break; - default: fatalerror("Invalid instruction encoding '%s %s'\n", - ops[0],ops[1]); + default: + throw std::logic_error(util::string_format("Invalid instruction encoding '%s %s'\n", ops[0],ops[1])); } } if (bit != -1 ) { - fatalerror("not enough bits in encoding '%s %s' %d\n", - ops[0],ops[1],bit); + throw std::logic_error(util::string_format("not enough bits in encoding '%s %s' %d\n", ops[0],ops[1],bit)); } while (isspace((uint8_t)*p)) p++; Op.emplace_back(mask, bits, *p, ops[0], ops[1]); @@ -168,16 +170,16 @@ offs_t pic16c5x_disassembler::disassemble(std::ostream &stream, offs_t pc, const while (bit >= 0) { /* osd_printf_debug("{%c/%d}",*cp,bit); */ - switch(*cp) + switch (*cp) { - case 'a': a <<=1; a |= ((code & (1<<bit)) ? 1 : 0); bit--; break; - case 'b': b <<=1; b |= ((code & (1<<bit)) ? 1 : 0); bit--; break; - case 'd': d <<=1; d |= ((code & (1<<bit)) ? 1 : 0); bit--; break; - case 'f': f <<=1; f |= ((code & (1<<bit)) ? 1 : 0); bit--; break; - case 'k': k <<=1; k |= ((code & (1<<bit)) ? 1 : 0); bit--; break; - case ' ': break; - case '1': case '0': bit--; break; - case '\0': fatalerror("premature end of parse string, opcode %x, bit = %d\n",code,bit); + case 'a': a <<=1; a |= ((code & (1<<bit)) ? 1 : 0); bit--; break; + case 'b': b <<=1; b |= ((code & (1<<bit)) ? 1 : 0); bit--; break; + case 'd': d <<=1; d |= ((code & (1<<bit)) ? 1 : 0); bit--; break; + case 'f': f <<=1; f |= ((code & (1<<bit)) ? 1 : 0); bit--; break; + case 'k': k <<=1; k |= ((code & (1<<bit)) ? 1 : 0); bit--; break; + case ' ': break; + case '1': case '0': bit--; break; + case '\0': throw std::logic_error(util::string_format("premature end of parse string, opcode %x, bit = %d\n",code,bit)); } cp++; } @@ -202,7 +204,7 @@ offs_t pic16c5x_disassembler::disassemble(std::ostream &stream, offs_t pc, const case 'F': util::stream_format(stream, "%s", regfile[f]); break; case 'K': util::stream_format(stream, "%02Xh", k); break; default: - fatalerror("illegal escape character in format '%s'\n",Op[op].fmt); + throw std::logic_error(util::string_format("illegal escape character in format '%s'\n",Op[op].fmt)); } } else |