summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/pic16c5x/16c5xdsm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/pic16c5x/16c5xdsm.cpp')
-rw-r--r--src/devices/cpu/pic16c5x/16c5xdsm.cpp32
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