# HG changeset patch # User Michael Pavone # Date 1549347651 28800 # Node ID 28ab56ff8cea12f149fe8901ca9dfca84002a427 # Parent 435877da58377966e8d9ce164c70d2b43c29c562 Implement DD/FD prefixes for instructions that don't reference HL diff -r 435877da5837 -r 28ab56ff8cea cpu_dsl.py --- a/cpu_dsl.py Mon Feb 04 22:02:59 2019 -0800 +++ b/cpu_dsl.py Mon Feb 04 22:20:51 2019 -0800 @@ -1316,7 +1316,6 @@ opmap[val] = inst.generateName(val) bodymap[val] = inst.generateBody(val, self, otype) - pieces.append('\ntypedef void (*impl_fun)({pre}context *context);'.format(pre=self.prefix)) pieces.append('\nstatic impl_fun impl_{name}[{sz}] = {{'.format(name = table, sz=len(opmap))) for inst in range(0, len(opmap)): op = opmap[inst] @@ -1335,8 +1334,12 @@ body.append('#include "{0}"\n'.format(include)) body.append('\nstatic void unimplemented({pre}context *context)'.format(pre = self.prefix)) body.append('\n{') - body.append('\n\tfatal_error("Unimplemented instruction");') + body.append('\n\tfatal_error("Unimplemented instruction\\n");') body.append('\n}\n') + body.append('\ntypedef void (*impl_fun)({pre}context *context);'.format(pre=self.prefix)) + for table in self.extra_tables: + body.append('\nstatic impl_fun impl_{name}[{sz}];'.format(name = table, sz=(1 << self.opsize))) + body.append('\nstatic impl_fun impl_main[{sz}];'.format(sz=(1 << self.opsize))) for table in self.extra_tables: self._buildTable(otype, table, body) self._buildTable(otype, 'main', body) diff -r 435877da5837 -r 28ab56ff8cea z80.cpu --- a/z80.cpu Mon Feb 04 22:02:59 2019 -0800 +++ b/z80.cpu Mon Feb 04 22:20:51 2019 -0800 @@ -2221,6 +2221,9 @@ end - +dd OOOOOOOO dd_normal + dispatch O +fd OOOOOOOO fd_normal + dispatch O \ No newline at end of file