summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author tim lindner <tlindner@macmess.org>2020-12-12 18:57:54 -0800
committer GitHub <noreply@github.com>2020-12-12 21:57:54 -0500
commit8ab7b5c4d054d0798bd3b3ce97b6dc7e692eb59a (patch)
tree19e0b444cfaa41264174007f4e078ed5dc94a365
parent728a0937fc675c938644a12cb1a5fbd7d8481de4 (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.cpp23
-rw-r--r--src/devices/bus/coco/coco_multi.cpp12
-rw-r--r--src/devices/bus/coco/cococart.cpp36
-rw-r--r--src/devices/bus/coco/cococart.h3
-rw-r--r--src/mame/drivers/coco3.cpp4
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));