From 55e0629fbac2c67b9cf4e7e278f4f67017a2f613 Mon Sep 17 00:00:00 2001 From: "R. Belmont" Date: Wed, 16 May 2012 01:18:05 +0000 Subject: [PATCH] =?UTF-8?q?Z8001=20has=2016-bit=20wide=20I/O=20ports=20[R.?= =?UTF-8?q?=20Belmont,=20Christian=20Gr=C3=B6ssler]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/emu/cpu/z8000/z8000.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/emu/cpu/z8000/z8000.c b/src/emu/cpu/z8000/z8000.c index a7bde158a30..ed195d2aff3 100644 --- a/src/emu/cpu/z8000/z8000.c +++ b/src/emu/cpu/z8000/z8000.c @@ -246,8 +246,15 @@ INLINE UINT16 RDPORT_W(z8000_state *cpustate, int mode, UINT16 addr) { if(mode == 0) { - return cpustate->io->read_byte((UINT16)(addr)) + - (cpustate->io->read_byte((UINT16)(addr+1)) << 8); + if (cpustate->device->type() == Z8001) + { + return cpustate->io->read_word((UINT16)addr); + } + else + { + return cpustate->io->read_byte((UINT16)(addr)) + + (cpustate->io->read_byte((UINT16)(addr+1)) << 8); + } } else { @@ -272,8 +279,15 @@ INLINE void WRPORT_W(z8000_state *cpustate, int mode, UINT16 addr, UINT16 value) { if(mode == 0) { - cpustate->io->write_byte((UINT16)(addr),value & 0xff); - cpustate->io->write_byte((UINT16)(addr+1),(value >> 8) & 0xff); + if (cpustate->device->type() == Z8001) + { + cpustate->io->write_word((UINT16)addr, value); + } + else + { + cpustate->io->write_byte((UINT16)(addr),value & 0xff); + cpustate->io->write_byte((UINT16)(addr+1),(value >> 8) & 0xff); + } } else { @@ -795,7 +809,7 @@ CPU_GET_INFO( z8001 ) { case DEVINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 16; break; case DEVINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM: info->i = 20; break; - case DEVINFO_INT_DATABUS_WIDTH + AS_IO: info->i = 8; break; + case DEVINFO_INT_DATABUS_WIDTH + AS_IO: info->i = 16; break; case DEVINFO_INT_ADDRBUS_WIDTH + AS_IO: info->i = 16; break; /* --- the following bits of info are returned as pointers to data or functions --- */