mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
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
This commit is contained in:
parent
728a0937fc
commit
8ab7b5c4d0
@ -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;
|
||||
};
|
||||
|
@ -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:
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user