From 28b03e92a84daf79eb3cef75c51c014b2f57807b Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 26 Feb 2023 13:38:10 -0500 Subject: cpu/psx: Modernize logging in subdevices --- src/devices/cpu/psx/dma.cpp | 76 +++++++++++++++++++------------------------- src/devices/cpu/psx/irq.cpp | 38 +++++++--------------- src/devices/cpu/psx/mdec.cpp | 39 ++++++++--------------- src/devices/cpu/psx/rcnt.cpp | 28 ++++------------ src/devices/cpu/psx/sio.cpp | 61 +++++++++++++++-------------------- 5 files changed, 90 insertions(+), 152 deletions(-) diff --git a/src/devices/cpu/psx/dma.cpp b/src/devices/cpu/psx/dma.cpp index 0a901228944..8db8a295e6d 100644 --- a/src/devices/cpu/psx/dma.cpp +++ b/src/devices/cpu/psx/dma.cpp @@ -10,22 +10,12 @@ #include "emu.h" #include "dma.h" -#include +//#define LOG_GENERAL (1U << 0) +#define LOG_CONTROL (1U << 1) +#define LOG_INTERRUPT (1U << 2) -#define VERBOSE_LEVEL ( 0 ) - -static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, const char *s_fmt, ... ) -{ - if( VERBOSE_LEVEL >= n_level ) - { - va_list v; - char buf[ 32768 ]; - va_start( v, s_fmt ); - vsprintf( buf, s_fmt, v ); - va_end( v ); - device.logerror( "%s: %s", device.machine().describe_context(), buf ); - } -} +#define VERBOSE (0) +#include "logmacro.h" DEFINE_DEVICE_TYPE(PSX_DMA, psxdma_device, "psxdma", "Sony PSX DMA") @@ -119,13 +109,13 @@ void psxdma_device::dma_interrupt_update() if( ( n_mask & 0x80 ) != 0 && ( n_int & n_mask ) != 0 ) { - verboselog( *this, 2, "dma_interrupt_update( %02x, %02x ) interrupt triggered\n", n_int, n_mask ); + LOGMASKED( LOG_INTERRUPT, "dma_interrupt_update( %02x, %02x ) interrupt triggered\n", machine().describe_context(), n_int, n_mask ); m_dicr |= 0x80000000; m_irq_handler(1); } else if( n_int != 0 ) { - verboselog( *this, 2, "dma_interrupt_update( %02x, %02x ) interrupt not enabled\n", n_int, n_mask ); + LOGMASKED( LOG_INTERRUPT, "dma_interrupt_update( %02x, %02x ) interrupt not enabled\n", machine().describe_context(), n_int, n_mask ); } m_dicr &= 0x00ffffff | ( m_dicr << 8 ); } @@ -218,15 +208,15 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) switch( offset % 4 ) { case 0: - verboselog( *this, 2, "dmabase( %d ) = %08x\n", index, data ); + LOGMASKED( LOG_CONTROL, "%s: dmabase( %d ) = %08x\n", machine().describe_context(), index, data ); dma->n_base = data; break; case 1: - verboselog( *this, 2, "dmablockcontrol( %d ) = %08x\n", index, data ); + LOGMASKED( LOG_CONTROL, "%s: dmablockcontrol( %d ) = %08x\n", machine().describe_context(), index, data ); dma->n_blockcontrol = data; break; case 2: - verboselog( *this, 2, "dmachannelcontrol( %d ) = %08x\n", index, data ); + LOGMASKED( LOG_CONTROL, "%s: dmachannelcontrol( %d ) = %08x\n", machine().describe_context(), index, data ); dma->n_channelcontrol = data; if( ( dma->n_channelcontrol & ( 1L << 0x18 ) ) != 0 && ( m_dpcp & ( 1 << ( 3 + ( index * 4 ) ) ) ) != 0 ) { @@ -253,14 +243,14 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) if( dma->n_channelcontrol == 0x01000000 && !dma->fn_read.isnull() ) { - verboselog( *this, 1, "dma %d read block %08x %08x\n", index, n_address, n_size ); + LOG( "%s: dma %d read block %08x %08x\n", machine().describe_context(), index, n_address, n_size ); dma->fn_read( m_ram, n_address, n_size ); dma_finished( index ); } else if ((dma->n_channelcontrol & 0xffbffeff) == 0x11000000 && // CD DMA !dma->fn_read.isnull() ) { - verboselog( *this, 1, "dma %d read block %08x %08x\n", index, n_address, n_size ); + LOG( "%s: dma %d read block %08x %08x\n", machine().describe_context(), index, n_address, n_size ); // pSX's CD DMA size calc formula int oursize = (dma->n_blockcontrol>>16); @@ -273,7 +263,7 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) else if( dma->n_channelcontrol == 0x01000200 && !dma->fn_read.isnull() ) { - verboselog( *this, 1, "dma %d read block %08x %08x\n", index, n_address, n_size ); + LOG( "%s: dma %d read block %08x %08x\n", machine().describe_context(), index, n_address, n_size ); dma->fn_read( m_ram, n_address, n_size ); if( index == 1 ) { @@ -287,7 +277,7 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) else if( dma->n_channelcontrol == 0x01000201 && !dma->fn_write.isnull() ) { - verboselog( *this, 1, "dma %d write block %08x %08x\n", index, n_address, n_size ); + LOG( "%s: dma %d write block %08x %08x\n", machine().describe_context(), index, n_address, n_size ); dma->fn_write( m_ram, n_address, n_size ); dma_finished( index ); } @@ -295,7 +285,7 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) !dma->fn_write.isnull() ) { /* todo: check this is a write not a read... */ - verboselog( *this, 1, "dma %d write block %08x %08x\n", index, n_address, n_size ); + LOG( "%s: dma %d write block %08x %08x\n", machine().describe_context(), index, n_address, n_size ); dma->fn_write( m_ram, n_address, n_size ); dma_finished( index ); } @@ -303,7 +293,7 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) !dma->fn_write.isnull() ) { /* todo: check this is a write not a read... */ - verboselog( *this, 1, "dma %d write block %08x %08x\n", index, n_address, n_size ); + LOG( "%s: dma %d write block %08x %08x\n", machine().describe_context(), index, n_address, n_size ); dma->fn_write( m_ram, n_address, n_size ); dma_finished( index ); } @@ -311,16 +301,14 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) index == 2 && !dma->fn_write.isnull() ) { - verboselog( *this, 1, "dma %d write linked list %08x\n", - index, dma->n_base ); + LOG( "%s: dma %d write linked list %08x\n", machine().describe_context(), index, dma->n_base ); dma_finished( index ); } else if( dma->n_channelcontrol == 0x11000002 && index == 6 ) { - verboselog( *this, 1, "dma 6 reverse clear %08x %08x\n", - dma->n_base, dma->n_blockcontrol ); + LOG( "%s: dma 6 reverse clear %08x %08x\n", machine().describe_context(), dma->n_base, dma->n_blockcontrol ); if( n_size > 0 ) { n_size--; @@ -337,16 +325,16 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) } else { - verboselog( *this, 1, "dma %d unknown mode %08x\n", index, dma->n_channelcontrol ); + LOG( "%s: dma %d unknown mode %08x\n", machine().describe_context(), index, dma->n_channelcontrol ); } } else if( dma->n_channelcontrol != 0 ) { - verboselog( *this, 1, "psx_dma_w( %04x, %08x, %08x ) channel not enabled\n", offset, dma->n_channelcontrol, mem_mask ); + LOG( "%s: psx_dma_w( %04x, %08x, %08x ) channel not enabled\n", machine().describe_context(), offset, dma->n_channelcontrol, mem_mask ); } break; default: - verboselog( *this, 1, "psx_dma_w( %04x, %08x, %08x ) Unknown dma channel register\n", offset, data, mem_mask ); + LOG( "%s: psx_dma_w( %04x, %08x, %08x ) Unknown dma channel register\n", machine().describe_context(), offset, data, mem_mask ); break; } } @@ -355,7 +343,7 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) switch( offset % 4 ) { case 0x0: - verboselog( *this, 1, "psx_dma_w( %04x, %08x, %08x ) dpcp\n", offset, data, mem_mask ); + LOG( "%s: psx_dma_w( %04x, %08x, %08x ) dpcp\n", machine().describe_context(), offset, data, mem_mask ); m_dpcp = ( m_dpcp & ~mem_mask ) | data; break; case 0x1: @@ -366,14 +354,14 @@ void psxdma_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) if( ( m_dicr & 0x80000000 ) != 0 && ( m_dicr & 0x7f000000 ) == 0 ) { - verboselog( *this, 2, "dma interrupt cleared\n" ); + LOGMASKED( LOG_INTERRUPT, "%s: dma interrupt cleared\n", machine().describe_context() ); m_dicr &= ~0x80000000; } - verboselog( *this, 1, "psx_dma_w( %04x, %08x, %08x ) dicr -> %08x\n", offset, data, mem_mask, m_dicr ); + LOG( "%s: psx_dma_w( %04x, %08x, %08x ) dicr -> %08x\n", machine().describe_context(), offset, data, mem_mask, m_dicr ); break; default: - verboselog( *this, 0, "psx_dma_w( %04x, %08x, %08x ) Unknown dma control register\n", offset, data, mem_mask ); + logerror( "%s: psx_dma_w( %04x, %08x, %08x ) Unknown dma control register\n", machine().describe_context(), offset, data, mem_mask ); break; } } @@ -389,16 +377,16 @@ uint32_t psxdma_device::read(offs_t offset, uint32_t mem_mask) switch( offset % 4 ) { case 0: - verboselog( *this, 1, "psx_dma_r dmabase[ %d ] ( %08x )\n", index, dma->n_base ); + LOG( "%s: psx_dma_r dmabase[ %d ] ( %08x )\n", machine().describe_context(), index, dma->n_base ); return dma->n_base; case 1: - verboselog( *this, 1, "psx_dma_r dmablockcontrol[ %d ] ( %08x )\n", index, dma->n_blockcontrol ); + LOG( "%s: psx_dma_r dmablockcontrol[ %d ] ( %08x )\n", machine().describe_context(), index, dma->n_blockcontrol ); return dma->n_blockcontrol; case 2: - verboselog( *this, 1, "psx_dma_r dmachannelcontrol[ %d ] ( %08x )\n", index, dma->n_channelcontrol ); + LOG( "%s: psx_dma_r dmachannelcontrol[ %d ] ( %08x )\n", machine().describe_context(), index, dma->n_channelcontrol ); return dma->n_channelcontrol; default: - verboselog( *this, 0, "psx_dma_r( %08x, %08x ) Unknown dma channel register\n", offset, mem_mask ); + logerror( "%s: psx_dma_r( %08x, %08x ) Unknown dma channel register\n", machine().describe_context(), offset, mem_mask ); break; } } @@ -407,13 +395,13 @@ uint32_t psxdma_device::read(offs_t offset, uint32_t mem_mask) switch( offset % 4 ) { case 0x0: - verboselog( *this, 1, "psx_dma_r dpcp ( %08x )\n", m_dpcp ); + LOG( "%s: psx_dma_r dpcp ( %08x )\n", machine().describe_context(), m_dpcp ); return m_dpcp; case 0x1: - verboselog( *this, 1, "psx_dma_r dicr ( %08x )\n", m_dicr ); + LOG( "%s: psx_dma_r dicr ( %08x )\n", machine().describe_context(), m_dicr ); return m_dicr; default: - verboselog( *this, 0, "psx_dma_r( %08x, %08x ) Unknown dma control register\n", offset, mem_mask ); + logerror( "%s: psx_dma_r( %08x, %08x ) Unknown dma control register\n", machine().describe_context(), offset, mem_mask ); break; } } diff --git a/src/devices/cpu/psx/irq.cpp b/src/devices/cpu/psx/irq.cpp index d14e8f7cdc0..48142be0d88 100644 --- a/src/devices/cpu/psx/irq.cpp +++ b/src/devices/cpu/psx/irq.cpp @@ -11,25 +11,11 @@ #include "psx.h" #include "irq.h" -#include - -#define VERBOSE_LEVEL ( 0 ) +#define VERBOSE ( 0 ) +#include "logmacro.h" #define PSX_IRQ_MASK ( 0x7fd ) -static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, const char *s_fmt, ... ) -{ - if( VERBOSE_LEVEL >= n_level ) - { - va_list v; - char buf[ 32768 ]; - va_start( v, s_fmt ); - vsprintf( buf, s_fmt, v ); - va_end( v ); - device.logerror( "%s: %s", device.machine().describe_context(), buf ); - } -} - DEFINE_DEVICE_TYPE(PSX_IRQ, psxirq_device, "psxirq", "Sony PSX IRQ") psxirq_device::psxirq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : @@ -61,7 +47,7 @@ void psxirq_device::device_start() void psxirq_device::set( uint32_t bitmask ) { - verboselog( *this, 2, "psx_irq_set %08x\n", bitmask ); + LOG( "%s: psx_irq_set %08x\n", machine().describe_context(), bitmask ); n_irqdata |= bitmask; psx_irq_update(); } @@ -70,12 +56,12 @@ void psxirq_device::psx_irq_update( void ) { if( ( n_irqdata & n_irqmask ) != 0 ) { - verboselog( *this, 2, "psx irq assert\n" ); + LOG( "%s: psx irq assert\n", machine().describe_context() ); m_irq_handler( ASSERT_LINE ); } else { - verboselog( *this, 2, "psx irq clear\n" ); + LOG( "%s: psx irq clear\n", machine().describe_context() ); m_irq_handler( CLEAR_LINE ); } } @@ -85,21 +71,21 @@ void psxirq_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) switch( offset ) { case 0x00: - verboselog( *this, 2, "psx irq data ( %08x, %08x ) %08x -> %08x\n", data, mem_mask, n_irqdata, ( n_irqdata & ~mem_mask ) | ( n_irqdata & n_irqmask & data ) ); + LOG( "%s: psx irq data ( %08x, %08x ) %08x -> %08x\n", machine().describe_context(), data, mem_mask, n_irqdata, ( n_irqdata & ~mem_mask ) | ( n_irqdata & n_irqmask & data ) ); n_irqdata = ( n_irqdata & ~mem_mask ) | ( n_irqdata & n_irqmask & data ); psx_irq_update(); break; case 0x01: - verboselog( *this, 2, "psx irq mask ( %08x, %08x ) %08x -> %08x\n", data, mem_mask, n_irqmask, ( n_irqmask & ~mem_mask ) | data ); + LOG( "%s: psx irq mask ( %08x, %08x ) %08x -> %08x\n", machine().describe_context(), data, mem_mask, n_irqmask, ( n_irqmask & ~mem_mask ) | data ); n_irqmask = ( n_irqmask & ~mem_mask ) | data; if( ( n_irqmask &~ PSX_IRQ_MASK ) != 0 ) { - verboselog( *this, 0, "psx_irq_w( %08x, %08x, %08x ) unknown irq\n", offset, data, mem_mask ); + logerror( "%s: psx_irq_w( %08x, %08x, %08x ) unknown irq\n", machine().describe_context(), offset, data, mem_mask ); } psx_irq_update(); break; default: - verboselog( *this, 0, "psx_irq_w( %08x, %08x, %08x ) unknown register\n", offset, data, mem_mask ); + logerror( "%s: psx_irq_w( %08x, %08x, %08x ) unknown register\n", machine().describe_context(), offset, data, mem_mask ); break; } } @@ -109,13 +95,13 @@ uint32_t psxirq_device::read(offs_t offset) switch( offset ) { case 0x00: - verboselog( *this, 1, "psx_irq_r irq data %08x\n", n_irqdata ); + LOG( "%s: psx_irq_r irq data %08x\n", machine().describe_context(), n_irqdata ); return n_irqdata; case 0x01: - verboselog( *this, 1, "psx_irq_r irq mask %08x\n", n_irqmask ); + LOG( "%s: psx_irq_r irq mask %08x\n", machine().describe_context(), n_irqmask ); return n_irqmask; default: - verboselog( *this, 0, "psx_irq_r unknown register %d\n", offset ); + logerror( "%s: psx_irq_r unknown register %d\n", machine().describe_context(), offset ); break; } return 0; diff --git a/src/devices/cpu/psx/mdec.cpp b/src/devices/cpu/psx/mdec.cpp index ef4e2090225..841841f1424 100644 --- a/src/devices/cpu/psx/mdec.cpp +++ b/src/devices/cpu/psx/mdec.cpp @@ -13,22 +13,11 @@ #include "mdec.h" #include "dma.h" -#include +#define LOG_DMA (1U << 1) +#define LOG_COMMAND (1U << 2) -#define VERBOSE_LEVEL ( 0 ) - -static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, const char *s_fmt, ... ) -{ - if( VERBOSE_LEVEL >= n_level ) - { - va_list v; - char buf[ 32768 ]; - va_start( v, s_fmt ); - vsprintf( buf, s_fmt, v ); - va_end( v ); - device.logerror( "%s: %s", device.machine().describe_context(), buf ); - } -} +#define VERBOSE ( 0 ) +#include "logerror.h" DEFINE_DEVICE_TYPE(PSX_MDEC, psxmdec_device, "psxmdec", "Sony PSX MDEC") @@ -424,18 +413,18 @@ void psxmdec_device::dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_ { int n_index; - verboselog( *this, 2, "mdec0_write( %08x, %08x )\n", n_address, n_size ); + LOGMASKED( LOG_DMA, "mdec0_write( %08x, %08x )\n", n_address, n_size ); switch( n_0_command >> 28 ) { case 0x3: - verboselog( *this, 1, "mdec decode %08x %08x %08x\n", n_0_command, n_address, n_size ); + LOGMASKED( LOG_COMMAND, "mdec decode %08x %08x %08x\n", n_0_command, n_address, n_size ); n_0_address = n_address; n_0_size = n_size * 4; n_1_status |= ( 1L << 29 ); break; case 0x4: - verboselog( *this, 1, "mdec quantize table %08x %08x %08x\n", n_0_command, n_address, n_size ); + LOGMASKED( LOG_COMMAND, "mdec quantize table %08x %08x %08x\n", n_0_command, n_address, n_size ); n_index = 0; while( n_size > 0 ) { @@ -459,7 +448,7 @@ void psxmdec_device::dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_ } break; case 0x6: - verboselog( *this, 1, "mdec cosine table %08x %08x %08x\n", n_0_command, n_address, n_size ); + LOGMASKED( LOG_COMMAND, "mdec cosine table %08x %08x %08x\n", n_0_command, n_address, n_size ); n_index = 0; while( n_size > 0 ) { @@ -472,7 +461,7 @@ void psxmdec_device::dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_ mdec_cos_precalc(); break; default: - verboselog( *this, 0, "mdec unknown command %08x %08x %08x\n", n_0_command, n_address, n_size ); + logerror( "mdec unknown command %08x %08x %08x\n", n_0_command, n_address, n_size ); break; } } @@ -482,7 +471,7 @@ void psxmdec_device::dma_read( uint32_t *p_n_psxram, uint32_t n_address, int32_t uint32_t n_this; uint32_t n_nextaddress; - verboselog( *this, 2, "mdec1_read( %08x, %08x )\n", n_address, n_size ); + LOGMASKED( LOG_DMA, "mdec1_read( %08x, %08x )\n", n_address, n_size ); if( ( n_0_command & ( 1L << 29 ) ) != 0 && n_0_size != 0 ) { while( n_size > 0 ) @@ -547,11 +536,11 @@ void psxmdec_device::write(offs_t offset, uint32_t data) switch( offset ) { case 0: - verboselog( *this, 2, "mdec 0 command %08x\n", data ); + LOG( "%s: mdec 0 command %08x\n", machine().describe_context(), data ); n_0_command = data; break; case 1: - verboselog( *this, 2, "mdec 1 command %08x\n", data ); + LOG( "%s: mdec 1 command %08x\n", machine().describe_context(), data ); n_1_command = data; break; } @@ -562,10 +551,10 @@ uint32_t psxmdec_device::read(offs_t offset) switch( offset ) { case 0: - verboselog( *this, 2, "mdec 0 status %08x\n", 0 ); + LOG( "%s: mdec 0 status %08x\n", machine().describe_context(), 0 ); return 0; case 1: - verboselog( *this, 2, "mdec 1 status %08x\n", n_1_status ); + LOG( "%s: mdec 1 status %08x\n", machine().describe_context(), n_1_status ); return n_1_status; } return 0; diff --git a/src/devices/cpu/psx/rcnt.cpp b/src/devices/cpu/psx/rcnt.cpp index 02e55dd5333..ce002c2adf7 100644 --- a/src/devices/cpu/psx/rcnt.cpp +++ b/src/devices/cpu/psx/rcnt.cpp @@ -10,22 +10,8 @@ #include "emu.h" #include "rcnt.h" -#include - -#define VERBOSE_LEVEL ( 0 ) - -static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, const char *s_fmt, ... ) -{ - if( VERBOSE_LEVEL >= n_level ) - { - va_list v; - char buf[ 32768 ]; - va_start( v, s_fmt ); - vsprintf( buf, s_fmt, v ); - va_end( v ); - device.logerror( "%s: %s", device.machine().describe_context(), buf ); - } -} +#define VERBOSE ( 0 ) +#include "logerror.h" DEFINE_DEVICE_TYPE(PSX_RCNT, psxrcnt_device, "psxrcnt", "Sony PSX RCNT") @@ -77,7 +63,7 @@ void psxrcnt_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) int n_counter = offset / 4; psx_root *root = &root_counter[ n_counter ]; - verboselog( *this, 1, "psx_counter_w ( %08x, %08x, %08x )\n", offset, data, mem_mask ); + LOG( "%s: psx_counter_w ( %08x, %08x, %08x )\n", machine().describe_context(), offset, data, mem_mask ); switch( offset % 4 ) { @@ -110,7 +96,7 @@ void psxrcnt_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) root->n_target = data; break; default: - verboselog( *this, 0, "psx_counter_w( %08x, %08x, %08x ) unknown register\n", offset, mem_mask, data ); + logerror( "%s: psx_counter_w( %08x, %08x, %08x ) unknown register\n", machine().describe_context(), offset, mem_mask, data ); return; } @@ -135,10 +121,10 @@ uint32_t psxrcnt_device::read(offs_t offset, uint32_t mem_mask) data = root->n_target; break; default: - verboselog( *this, 0, "psx_counter_r( %08x, %08x ) unknown register\n", offset, mem_mask ); + logerror( "%s: psx_counter_r( %08x, %08x ) unknown register\n", machine().describe_context(), offset, mem_mask ); return 0; } - verboselog( *this, 1, "psx_counter_r ( %08x, %08x ) %08x\n", offset, mem_mask, data ); + LOG( "%s: psx_counter_r ( %08x, %08x ) %08x\n", machine().describe_context(), offset, mem_mask, data ); return data; } @@ -234,7 +220,7 @@ TIMER_CALLBACK_MEMBER( psxrcnt_device::timer_update ) int n_counter = param; psx_root *root = &root_counter[ n_counter ]; - verboselog( *this, 2, "root_finished( %d ) %04x\n", n_counter, root_current( n_counter ) ); + LOG( "root_finished( %d ) %04x\n", n_counter, root_current( n_counter ) ); //if( ( root->n_mode & PSX_RC_COUNTTARGET ) != 0 ) { /* TODO: wrap should be handled differently as PSX_RC_COUNTTARGET & PSX_RC_IRQTARGET don't have to be the same. */ diff --git a/src/devices/cpu/psx/sio.cpp b/src/devices/cpu/psx/sio.cpp index 46b73d6b3a9..a5a3aedba42 100644 --- a/src/devices/cpu/psx/sio.cpp +++ b/src/devices/cpu/psx/sio.cpp @@ -10,22 +10,11 @@ #include "emu.h" #include "sio.h" -#include +//#define LOG_GENERAL (1U << 0) +#define LOG_TIMER (1U << 1) #define VERBOSE_LEVEL ( 0 ) - -static inline void ATTR_PRINTF(3,4) verboselog( device_t& device, int n_level, const char *s_fmt, ... ) -{ - if( VERBOSE_LEVEL >= n_level ) - { - va_list v; - char buf[ 32768 ]; - va_start( v, s_fmt ); - vsprintf( buf, s_fmt, v ); - va_end( v ); - device.logerror( "%s: %s", device.machine().describe_context(), buf ); - } -} +#include "logerror.h" DEFINE_DEVICE_TYPE(PSX_SIO0, psxsio0_device, "psxsio0", "Sony PSX SIO-0") DEFINE_DEVICE_TYPE(PSX_SIO1, psxsio1_device, "psxsio1", "Sony PSX SIO-1") @@ -91,7 +80,7 @@ void psxsio_device::device_start() void psxsio_device::sio_interrupt() { - verboselog( *this, 1, "sio_interrupt( %s )\n", tag() ); + LOG( "sio_interrupt\n" ); m_status |= SIO_STATUS_IRQ; m_irq_handler(1); } @@ -123,18 +112,18 @@ void psxsio_device::sio_timer_adjust() if( m_baud != 0 && n_prescaler != 0 ) { n_time = attotime::from_hz(33868800) * (n_prescaler * m_baud); - verboselog( *this, 2, "sio_timer_adjust( %s ) = %s ( %d x %d )\n", tag(), n_time.as_string(), n_prescaler, m_baud ); + LOGMASKED( LOG_TIMER, "sio_timer_adjust = %s ( %d x %d )\n", n_time.as_string(), n_prescaler, m_baud ); } else { n_time = attotime::never; - verboselog( *this, 0, "sio_timer_adjust( %s ) invalid baud rate ( %d x %d )\n", tag(), n_prescaler, m_baud ); + logerror( "sio_timer_adjust invalid baud rate ( %d x %d )\n", n_prescaler, m_baud ); } } else { n_time = attotime::never; - verboselog( *this, 2, "sio_timer_adjust( %s ) finished\n", tag() ); + LOG( "sio_timer_adjust finished\n" ); } m_timer->adjust( n_time ); @@ -142,7 +131,7 @@ void psxsio_device::sio_timer_adjust() TIMER_CALLBACK_MEMBER( psxsio_device::sio_tick ) { - verboselog( *this, 2, "sio tick\n" ); + LOGMASKED( LOG_TIMER, "sio tick\n" ); if( m_tx_bits == 0 && ( m_control & SIO_CONTROL_TX_ENA ) != 0 && @@ -216,29 +205,29 @@ void psxsio_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) switch( offset % 4 ) { case 0: - verboselog( *this, 1, "psx_sio_w %s data %02x (%08x)\n", tag(), data, mem_mask ); + LOG( "%s: psx_sio_w data %02x (%08x)\n", machine().describe_context(), data, mem_mask ); m_tx_data = data; m_status &= ~( SIO_STATUS_TX_RDY ); m_status &= ~( SIO_STATUS_TX_EMPTY ); sio_timer_adjust(); break; case 1: - verboselog( *this, 0, "psx_sio_w( %08x, %08x, %08x )\n", offset, data, mem_mask ); + logerror( "%s: psx_sio_w( %08x, %08x, %08x )\n", machine().describe_context(), offset, data, mem_mask ); break; case 2: if( ACCESSING_BITS_0_15 ) { m_mode = data & 0xffff; - verboselog( *this, 1, "psx_sio_w %s mode %04x\n", tag(), data & 0xffff ); + LOG( "%s: psx_sio_w mode %04x\n", machine().describe_context(), data & 0xffff ); } if( ACCESSING_BITS_16_31 ) { - verboselog( *this, 1, "psx_sio_w %s control %04x\n", tag(), data >> 16 ); + LOG( "%s: psx_sio_w control %04x\n", machine().describe_context(), data >> 16 ); m_control = data >> 16; if( ( m_control & SIO_CONTROL_RESET ) != 0 ) { - verboselog( *this, 1, "psx_sio_w reset\n" ); + LOG( "%s: psx_sio_w reset\n", machine().describe_context() ); m_status |= SIO_STATUS_TX_EMPTY | SIO_STATUS_TX_RDY; m_status &= ~( SIO_STATUS_RX_RDY | SIO_STATUS_OVERRUN | SIO_STATUS_IRQ ); m_irq_handler(0); @@ -255,7 +244,7 @@ void psxsio_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) } if( ( m_control & SIO_CONTROL_IACK ) != 0 ) { - verboselog( *this, 1, "psx_sio_w iack\n" ); + LOG( "%s: psx_sio_w iack\n", machine().describe_context() ); m_status &= ~( SIO_STATUS_IRQ ); m_control &= ~( SIO_CONTROL_IACK ); m_irq_handler(0); @@ -273,16 +262,16 @@ void psxsio_device::write(offs_t offset, uint32_t data, uint32_t mem_mask) case 3: if( ACCESSING_BITS_0_15 ) { - verboselog( *this, 0, "psx_sio_w( %08x, %08x, %08x )\n", offset, data, mem_mask ); + logerror( "%s: psx_sio_w( %08x, %08x, %08x )\n", machine().describe_context(), offset, data, mem_mask ); } if( ACCESSING_BITS_16_31 ) { m_baud = data >> 16; - verboselog( *this, 1, "psx_sio_w %s baud %04x\n", tag(), data >> 16 ); + LOG( "%s: psx_sio_w baud %04x\n", machine().describe_context(), data >> 16 ); } break; default: - verboselog( *this, 0, "psx_sio_w( %08x, %08x, %08x )\n", offset, data, mem_mask ); + logerror( "%s: psx_sio_w( %08x, %08x, %08x )\n", machine().describe_context(), offset, data, mem_mask ); break; } } @@ -297,44 +286,44 @@ uint32_t psxsio_device::read(offs_t offset, uint32_t mem_mask) data = m_rx_data; m_status &= ~( SIO_STATUS_RX_RDY ); m_rx_data = 0xff; - verboselog( *this, 1, "psx_sio_r %s data %02x (%08x)\n", tag(), data, mem_mask ); + LOG( "%s: psx_sio_r data %02x (%08x)\n", machine().describe_context(), data, mem_mask ); break; case 1: data = m_status; if( ACCESSING_BITS_0_15 ) { - verboselog( *this, 1, "psx_sio_r %s status %04x\n", tag(), data & 0xffff ); + LOG( "%s: psx_sio_r status %04x\n", machine().describe_context(), data & 0xffff ); } if( ACCESSING_BITS_16_31 ) { - verboselog( *this, 0, "psx_sio_r( %08x, %08x ) %08x\n", offset, mem_mask, data ); + logerror( "%s: psx_sio_r( %08x, %08x ) %08x\n", machine().describe_context(), offset, mem_mask, data ); } break; case 2: data = ( m_control << 16 ) | m_mode; if( ACCESSING_BITS_0_15 ) { - verboselog( *this, 1, "psx_sio_r %s mode %04x\n", tag(), data & 0xffff ); + LOG( "%s: psx_sio_r mode %04x\n", machine().describe_context(), data & 0xffff ); } if( ACCESSING_BITS_16_31 ) { - verboselog( *this, 1, "psx_sio_r %s control %04x\n", tag(), data >> 16 ); + LOG( "%s: psx_sio_r control %04x\n", machine().describe_context(), data >> 16 ); } break; case 3: data = m_baud << 16; if( ACCESSING_BITS_0_15 ) { - verboselog( *this, 0, "psx_sio_r( %08x, %08x ) %08x\n", offset, mem_mask, data ); + logerror( "%s: psx_sio_r( %08x, %08x ) %08x\n", machine().describe_context(), offset, mem_mask, data ); } if( ACCESSING_BITS_16_31 ) { - verboselog( *this, 1, "psx_sio_r %s baud %04x\n", tag(), data >> 16 ); + LOG( "%s: psx_sio_r baud %04x\n", machine().describe_context(), data >> 16 ); } break; default: data = 0; - verboselog( *this, 0, "psx_sio_r( %08x, %08x ) %08x\n", offset, mem_mask, data ); + logerror( "%s: psx_sio_r( %08x, %08x ) %08x\n", machine().describe_context() offset, mem_mask, data ); break; } return data; -- cgit v1.2.3