summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/pic16c62x/pic16c62x.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/pic16c62x/pic16c62x.cpp')
-rw-r--r--src/devices/cpu/pic16c62x/pic16c62x.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/devices/cpu/pic16c62x/pic16c62x.cpp b/src/devices/cpu/pic16c62x/pic16c62x.cpp
index d7cdb791b8b..6263fd04f42 100644
--- a/src/devices/cpu/pic16c62x/pic16c62x.cpp
+++ b/src/devices/cpu/pic16c62x/pic16c62x.cpp
@@ -123,10 +123,15 @@ void pic16c62x_device::pic16c62xa_ram(address_map &map)
pic16c62x_device::pic16c62x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int program_width, int picmodel)
: cpu_device(mconfig, type, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 16, program_width, -1
- , ( ( program_width == 9 ) ? address_map_constructor(FUNC(pic16c62x_device::pic16c62x_rom_9), this) : ( ( program_width == 10 ) ? address_map_constructor(FUNC(pic16c62x_device::pic16c62x_rom_10), this) : address_map_constructor(FUNC(pic16c62x_device::pic16c62x_rom_11), this) )))
+ , ( ( program_width == 9 ) ? address_map_constructor(FUNC(pic16c62x_device::pic16c62x_rom_9), this) :
+ ( ( program_width == 10 ) ? address_map_constructor(FUNC(pic16c62x_device::pic16c62x_rom_10), this) :
+ address_map_constructor(FUNC(pic16c62x_device::pic16c62x_rom_11), this) )))
, m_data_config("data", ENDIANNESS_LITTLE, 8, 8, 0
- , ( ( picmodel == 0x16C620 || picmodel == 0x16C621 ) ? address_map_constructor(FUNC(pic16c62x_device::pic16c620_ram), this) : ( ( picmodel == 0x16C622 ) ? address_map_constructor(FUNC(pic16c62x_device::pic16c622_ram), this) : address_map_constructor(FUNC(pic16c62x_device::pic16c62xa_ram), this) ) ) )
+ , ( ( picmodel == 0x16C620 || picmodel == 0x16C621 ) ? address_map_constructor(FUNC(pic16c62x_device::pic16c620_ram), this) :
+ ( ( picmodel == 0x16C622 ) ? address_map_constructor(FUNC(pic16c62x_device::pic16c622_ram), this) :
+ address_map_constructor(FUNC(pic16c62x_device::pic16c62xa_ram), this) ) ) )
, m_io_config("io", ENDIANNESS_LITTLE, 8, 5, 0)
+ , m_CONFIG(0x3fff)
, m_reset_vector(0x0)
, m_picmodel(picmodel)
, m_picRAMmask(0xff)
@@ -145,22 +150,22 @@ pic16c620a_device::pic16c620a_device(const machine_config &mconfig, const char *
}
pic16c621_device::pic16c621_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C621, tag, owner, clock, 9, 0x16C621)
+ : pic16c62x_device(mconfig, PIC16C621, tag, owner, clock, 10, 0x16C621)
{
}
pic16c621a_device::pic16c621a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C621A, tag, owner, clock, 9, 0x16C621A)
+ : pic16c62x_device(mconfig, PIC16C621A, tag, owner, clock, 10, 0x16C621A)
{
}
pic16c622_device::pic16c622_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C622, tag, owner, clock, 9, 0x16C622)
+ : pic16c62x_device(mconfig, PIC16C622, tag, owner, clock, 11, 0x16C622)
{
}
pic16c622a_device::pic16c622a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : pic16c62x_device(mconfig, PIC16C622A, tag, owner, clock, 9, 0x16C622A)
+ : pic16c62x_device(mconfig, PIC16C622A, tag, owner, clock, 11, 0x16C622A)
{
}
@@ -169,7 +174,8 @@ device_memory_interface::space_config_vector pic16c62x_device::memory_space_conf
{
return space_config_vector{
std::make_pair(AS_PROGRAM, &m_program_config),
- std::make_pair(AS_DATA, &m_data_config)
+ std::make_pair(AS_DATA, &m_data_config),
+ std::make_pair(AS_IO, &m_io_config)
};
}
@@ -339,6 +345,7 @@ uint16_t pic16c62x_device::POP_STACK()
m_STACK[1] = m_STACK[0];
return (data & ADDR_MASK);
}
+
void pic16c62x_device::PUSH_STACK(uint16_t data)
{
m_STACK[0] = m_STACK[1];
@@ -885,8 +892,6 @@ void pic16c62x_device::device_start()
m_data = &space(AS_DATA);
m_io = &space(AS_IO);
- m_CONFIG = 0x3fff;
-
/* ensure the internal ram pointers are set before get_info is called */
update_internalram_ptr();
@@ -1045,7 +1050,7 @@ void pic16c62x_device::pic16c62x_soft_reset()
pic16c62x_reset_regs();
}
-void pic16c62x_device::pic16c62x_set_config(int data)
+void pic16c62x_device::set_config(int data)
{
logerror("Writing %04x to the PIC16C62x configuration bits\n",data);
m_CONFIG = (data & 0x3fff);