diff options
author | 2020-12-12 18:57:54 -0800 | |
---|---|---|
committer | 2020-12-12 21:57:54 -0500 | |
commit | 8ab7b5c4d054d0798bd3b3ce97b6dc7e692eb59a (patch) | |
tree | 19e0b444cfaa41264174007f4e078ed5dc94a365 | |
parent | 728a0937fc675c938644a12cb1a5fbd7d8481de4 (diff) |
Adjust CoCo 3 PIA mirrors (#7551)
* readjust pia mirrors in coco3. set proper step rates for wd1773. factor out wdc in floppy controller logging.
* refined some logging. fixed up pia mirrors.
* set step rates back to what they were
-rw-r--r-- | src/devices/bus/coco/coco_fdc.cpp | 23 | ||||
-rw-r--r-- | src/devices/bus/coco/coco_multi.cpp | 12 | ||||
-rw-r--r-- | src/devices/bus/coco/cococart.cpp | 36 | ||||
-rw-r--r-- | src/devices/bus/coco/cococart.h | 3 | ||||
-rw-r--r-- | src/mame/drivers/coco3.cpp | 4 |
5 files changed, 59 insertions, 19 deletions
diff --git a/src/devices/bus/coco/coco_fdc.cpp b/src/devices/bus/coco/coco_fdc.cpp index cf68799357b..9cbb6fe549f 100644 --- a/src/devices/bus/coco/coco_fdc.cpp +++ b/src/devices/bus/coco/coco_fdc.cpp @@ -82,9 +82,14 @@ #include "formats/sdf_dsk.h" #include "formats/os9_dsk.h" -// #define VERBOSE (LOG_GENERAL ) +//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already +#define LOG_WDFDC (1U << 1) // Shows register setup + +//#define VERBOSE (LOG_GENERAL ) #include "logmacro.h" +#define LOGWDFDC(...) LOGMASKED(LOG_WDFDC, __VA_ARGS__) + /*************************************************************************** PARAMETERS ***************************************************************************/ @@ -514,19 +519,19 @@ u8 coco_fdc_device_base::scs_read(offs_t offset) { case 8: result = m_wd17xx->status_r(); - LOG("m_wd17xx->status_r: %2.2x\n", result ); + LOGWDFDC("m_wd17xx->status_r: %2.2x\n", result ); break; case 9: result = m_wd17xx->track_r(); - LOG("m_wd17xx->track_r: %2.2x\n", result ); + LOGWDFDC("m_wd17xx->track_r: %2.2x\n", result ); break; case 10: result = m_wd17xx->sector_r(); - LOG("m_wd17xx->sector_r: %2.2x\n", result ); + LOGWDFDC("m_wd17xx->sector_r: %2.2x\n", result ); break; case 11: result = m_wd17xx->data_r(); - LOG("m_wd17xx->data_r: %2.2x\n", result ); + LOGWDFDC("m_wd17xx->data_r: %2.2x\n", result ); break; } @@ -571,19 +576,19 @@ void coco_fdc_device_base::scs_write(offs_t offset, u8 data) dskreg_w(data); break; case 8: - LOG("m_wd17xx->cmd_w: %2.2x\n", data ); + LOGWDFDC("m_wd17xx->cmd_w: %2.2x\n", data ); m_wd17xx->cmd_w(data); break; case 9: - LOG("m_wd17xx->track_w: %2.2x\n", data ); + LOGWDFDC("m_wd17xx->track_w: %2.2x\n", data ); m_wd17xx->track_w(data); break; case 10: - LOG("m_wd17xx->sector_w: %2.2x\n", data ); + LOGWDFDC("m_wd17xx->sector_w: %2.2x\n", data ); m_wd17xx->sector_w(data); break; case 11: - LOG("m_wd17xx->data_w: %2.2x\n", data ); + LOGWDFDC("m_wd17xx->data_w: %2.2x\n", data ); m_wd17xx->data_w(data); break; }; diff --git a/src/devices/bus/coco/coco_multi.cpp b/src/devices/bus/coco/coco_multi.cpp index 4c5c63c003e..7006281286f 100644 --- a/src/devices/bus/coco/coco_multi.cpp +++ b/src/devices/bus/coco/coco_multi.cpp @@ -65,6 +65,15 @@ #define SWITCH_CONFIG_TAG "switch" +//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already +#define LOG_CART (1U << 1) // shows cart line changes +#define LOG_SWITCH (1U << 2) // shows switch changes +//#define VERBOSE (LOG_CART|LOG_SWITCH) + +#include "logmacro.h" + +#define LOGCART(...) LOGMASKED(LOG_CART, __VA_ARGS__) +#define LOGSWITCH(...) LOGMASKED(LOG_SWITCH, __VA_ARGS__) //************************************************************************** // MACROS / CONSTANTS @@ -333,6 +342,8 @@ cococart_slot_device &coco_multipak_device::active_cts_slot() void coco_multipak_device::set_select(u8 new_select) { + LOGSWITCH( "set_select: 0x%02X\n", new_select); + // identify old value for CART, in case this needs to change cococart_slot_device::line_value old_cart = active_cts_slot().get_line_value(line::CART); @@ -382,6 +393,7 @@ void coco_multipak_device::update_line(int slot_number, line ln) case line::CART: // only propagate if this is coming from the slot specified propagate = slot_number == active_cts_slot_number(); + LOGCART( "update_line: slot: %d, line: CART, value: %s, propogate: %s\n", slot_number, owning_slot().line_value_string(slot(slot_number).get_line_value(ln)), propagate ? "yes" : "no" ); break; case line::NMI: diff --git a/src/devices/bus/coco/cococart.cpp b/src/devices/bus/coco/cococart.cpp index 6dc79efefb2..4a13fb4491c 100644 --- a/src/devices/bus/coco/cococart.cpp +++ b/src/devices/bus/coco/cococart.cpp @@ -58,7 +58,17 @@ PARAMETERS ***************************************************************************/ -#define LOG_LINE 0 +//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already +#define LOG_CART (1U << 1) // shows cart line changes +#define LOG_NMI (1U << 2) // shows switch changes +#define LOG_HALT (1U << 3) // shows switch changes +// #define VERBOSE (LOG_CART) + +#include "logmacro.h" + +#define LOGCART(...) LOGMASKED(LOG_CART, __VA_ARGS__) +#define LOGNMI(...) LOGMASKED(LOG_NMI, __VA_ARGS__) +#define LOGHALT(...) LOGMASKED(LOG_HALT, __VA_ARGS__) /*************************************************************************** @@ -150,15 +160,15 @@ void cococart_slot_device::device_timer(emu_timer &timer, device_timer_id id, in switch(id) { case TIMER_CART: - set_line("CART", m_cart_line, (line_value) param); + set_line(line::CART, m_cart_line, (line_value) param); break; case TIMER_NMI: - set_line("NMI", m_nmi_line, (line_value) param); + set_line(line::NMI, m_nmi_line, (line_value) param); break; case TIMER_HALT: - set_line("HALT", m_halt_line, (line_value) param); + set_line(line::HALT, m_halt_line, (line_value) param); break; } } @@ -242,14 +252,26 @@ const char *cococart_slot_device::line_value_string(line_value value) // set_line //------------------------------------------------- -void cococart_slot_device::set_line(const char *line_name, coco_cartridge_line &line, cococart_slot_device::line_value value) +void cococart_slot_device::set_line(line ln, coco_cartridge_line &line, cococart_slot_device::line_value value) { if ((line.value != value) || (value == line_value::Q)) { line.value = value; - if (LOG_LINE) - logerror("[%s]: set_line(): %s <= %s\n", machine().describe_context(), line_name, line_value_string(value)); + switch (ln) + { + case line::CART: + LOGCART( "set_line: CART, value: %s\n", line_value_string(value)); + break; + case line::NMI: + LOGNMI( "set_line: NMI, value: %s\n", line_value_string(value)); + break; + case line::HALT: + LOGHALT( "set_line: HALT, value: %s\n", line_value_string(value)); + break; + case line::SOUND_ENABLE: + break; + } // engage in a bit of gymnastics for this odious 'Q' value switch(line.value) diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h index 487858425e0..78176588969 100644 --- a/src/devices/bus/coco/cococart.h +++ b/src/devices/bus/coco/cococart.h @@ -137,9 +137,10 @@ private: device_cococart_interface *m_cart; // methods - void set_line(const char *line_name, coco_cartridge_line &line, line_value value); + void set_line(line ln, coco_cartridge_line &line, line_value value); void set_line_timer(coco_cartridge_line &line, line_value value); void twiddle_line_if_q(coco_cartridge_line &line); +public: static const char *line_value_string(line_value value); }; diff --git a/src/mame/drivers/coco3.cpp b/src/mame/drivers/coco3.cpp index 992e05255f4..44e0facd3dc 100644 --- a/src/mame/drivers/coco3.cpp +++ b/src/mame/drivers/coco3.cpp @@ -41,8 +41,8 @@ void coco3_state::coco3_mem(address_map &map) map(0xC000, 0xDFFF).bankr("rbank6").bankw("wbank6"); map(0xE000, 0xFDFF).bankr("rbank7").bankw("wbank7"); map(0xFE00, 0xFEFF).bankr("rbank8").bankw("wbank8"); - map(0xFF00, 0xFF1F).rw(PIA0_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0xFF20, 0xFF3F).r(PIA1_TAG, FUNC(pia6821_device::read)).w(FUNC(coco3_state::ff20_write)); + map(0xFF00, 0xFF0F).rw(PIA0_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xFF20, 0xFF2F).r(PIA1_TAG, FUNC(pia6821_device::read)).w(FUNC(coco3_state::ff20_write)); map(0xFF40, 0xFF5F).rw(FUNC(coco3_state::ff40_read), FUNC(coco3_state::ff40_write)); map(0xFF60, 0xFF8F).rw(FUNC(coco3_state::ff60_read), FUNC(coco3_state::ff60_write)); map(0xFF90, 0xFFDF).rw(m_gime, FUNC(gime_device::read), FUNC(gime_device::write)); |