summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/machine/tms5501.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/machine/tms5501.c')
-rw-r--r--src/mess/machine/tms5501.c156
1 files changed, 78 insertions, 78 deletions
diff --git a/src/mess/machine/tms5501.c b/src/mess/machine/tms5501.c
index 1e09978a2d3..339b0297ff3 100644
--- a/src/mess/machine/tms5501.c
+++ b/src/mess/machine/tms5501.c
@@ -27,41 +27,41 @@
PARAMETERS/MACROS
***************************************************************************/
-#define DEBUG_TMS5501 0
+#define DEBUG_TMS5501 0
#define LOG_TMS5501(message, data) do { if (DEBUG_TMS5501) logerror ("\nTMS5501 %s: %s %02x", tag(), message, data); } while (0)
/* status register */
-#define TMS5501_FRAME_ERROR 0x01
-#define TMS5501_OVERRUN_ERROR 0x02
-#define TMS5501_SERIAL_RCVD 0x04
-#define TMS5501_RCV_BUFFER_LOADED 0x08
-#define TMS5501_XMIT_BUFFER_EMPTY 0x10
-#define TMS5501_INTERRUPT_PENDING 0x20
-#define TMS5501_FULL_BIT_DETECT 0x40
-#define TMS5501_START_BIT_DETECT 0x80
+#define TMS5501_FRAME_ERROR 0x01
+#define TMS5501_OVERRUN_ERROR 0x02
+#define TMS5501_SERIAL_RCVD 0x04
+#define TMS5501_RCV_BUFFER_LOADED 0x08
+#define TMS5501_XMIT_BUFFER_EMPTY 0x10
+#define TMS5501_INTERRUPT_PENDING 0x20
+#define TMS5501_FULL_BIT_DETECT 0x40
+#define TMS5501_START_BIT_DETECT 0x80
/* command */
-#define TMS5501_RESET 0x01
-#define TMS5501_BREAK 0x02
-#define TMS5501_INT_7_SELECT 0x04
-#define TMS5501_INT_ACK_ENABLE 0x08
-#define TMS5501_TEST_BIT_1 0x10
-#define TMS5501_TEST_BIT_2 0x20
-#define TMS5501_COMMAND_LATCHED_BITS 0x3e
+#define TMS5501_RESET 0x01
+#define TMS5501_BREAK 0x02
+#define TMS5501_INT_7_SELECT 0x04
+#define TMS5501_INT_ACK_ENABLE 0x08
+#define TMS5501_TEST_BIT_1 0x10
+#define TMS5501_TEST_BIT_2 0x20
+#define TMS5501_COMMAND_LATCHED_BITS 0x3e
/* interrupt mask register */
-#define TMS5501_TIMER_0_INT 0x01
-#define TMS5501_TIMER_1_INT 0x02
-#define TMS5501_SENSOR_INT 0x04
-#define TMS5501_TIMER_2_INT 0x08
-#define TMS5501_SERIAL_RCV_LOADED_INT 0x10
-#define TMS5501_SERIAL_XMIT_EMPTY_INT 0x20
-#define TMS5501_TIMER_3_INT 0x40
-#define TMS5501_TIMER_4_INT 0x80
-#define TMS5501_INT_7_INT 0x80
-
-#define TMS5501_PIO_INT_7 0x80
+#define TMS5501_TIMER_0_INT 0x01
+#define TMS5501_TIMER_1_INT 0x02
+#define TMS5501_SENSOR_INT 0x04
+#define TMS5501_TIMER_2_INT 0x08
+#define TMS5501_SERIAL_RCV_LOADED_INT 0x10
+#define TMS5501_SERIAL_XMIT_EMPTY_INT 0x20
+#define TMS5501_TIMER_3_INT 0x40
+#define TMS5501_TIMER_4_INT 0x80
+#define TMS5501_INT_7_INT 0x80
+
+#define TMS5501_PIO_INT_7 0x80
// device type definition
const device_type TMS5501 = &device_creator<tms5501_device>;
@@ -119,7 +119,7 @@ int tms5501_device::find_first_bit(int value)
while (! (value & 1))
{
- value >>= 1; /* try next bit */
+ value >>= 1; /* try next bit */
bit++;
}
return bit;
@@ -196,11 +196,11 @@ void tms5501_device::timer_decrementer(UINT8 mask)
void tms5501_device::timer_reload(int timer)
{
if (m_timer_counter[timer])
- { /* reset clock interval */
+ { /* reset clock interval */
m_timer[timer]->adjust(attotime::from_double((double) m_timer_counter[timer] / (clock() / 128.)), timer_name[timer], attotime::from_double((double) m_timer_counter[timer] / (clock() / 128.)));
}
else
- { /* clock interval == 0 -> no timer */
+ { /* clock interval == 0 -> no timer */
switch (timer)
{
case 0: timer_decrementer(TMS5501_TIMER_0_INT); break;
@@ -334,43 +334,43 @@ READ8_MEMBER( tms5501_device::read )
switch (offset)
{
- case 0x00: /* Serial input buffer */
+ case 0x00: /* Serial input buffer */
data = m_sio_input_buffer;
m_status &= ~TMS5501_RCV_BUFFER_LOADED;
LOG_TMS5501("Reading from serial input buffer", data);
break;
- case 0x01: /* PIO input port */
+ case 0x01: /* PIO input port */
if (!m_pio_read_func.isnull())
data = m_pio_read_func(0);
LOG_TMS5501("Reading from PIO", data);
break;
- case 0x02: /* Interrupt address register */
+ case 0x02: /* Interrupt address register */
data = m_interrupt_address;
m_status &= ~TMS5501_INTERRUPT_PENDING;
break;
- case 0x03: /* Status register */
+ case 0x03: /* Status register */
data = m_status;
break;
- case 0x04: /* Command register */
+ case 0x04: /* Command register */
data = m_command;
LOG_TMS5501("Command register read", data);
break;
- case 0x05: /* Serial rate register */
+ case 0x05: /* Serial rate register */
data = m_sio_rate;
LOG_TMS5501("Serial rate read", data);
break;
- case 0x06: /* Serial output buffer */
- case 0x07: /* PIO output */
+ case 0x06: /* Serial output buffer */
+ case 0x07: /* PIO output */
break;
- case 0x08: /* Interrupt mask register */
+ case 0x08: /* Interrupt mask register */
data = m_interrupt_mask;
LOG_TMS5501("Interrupt mask read", data);
break;
- case 0x09: /* Timer 0 address */
- case 0x0a: /* Timer 1 address */
- case 0x0b: /* Timer 2 address */
- case 0x0c: /* Timer 3 address */
- case 0x0d: /* Timer 4 address */
+ case 0x09: /* Timer 0 address */
+ case 0x0a: /* Timer 1 address */
+ case 0x0b: /* Timer 2 address */
+ case 0x0c: /* Timer 3 address */
+ case 0x0d: /* Timer 4 address */
break;
}
return data;
@@ -387,22 +387,22 @@ WRITE8_MEMBER( tms5501_device::write )
switch (offset)
{
- case 0x00: /* Serial input buffer */
- case 0x01: /* Keyboard input port, Page blanking signal */
- case 0x02: /* Interrupt address register */
- case 0x03: /* Status register */
+ case 0x00: /* Serial input buffer */
+ case 0x01: /* Keyboard input port, Page blanking signal */
+ case 0x02: /* Interrupt address register */
+ case 0x03: /* Status register */
LOG_TMS5501("Writing to read only port", offset&0x000f);
LOG_TMS5501("Data", data);
break;
case 0x04:
/* Command register
- bit 0: reset
- bit 1: send break, '1' - serial output is high impedance
- bit 2: int 7 select: '0' - timer 5, '1' - IN7 of the DCE-bus
- bit 3: int ack enable, '0' - disabled, '1' - enabled
- bits 4-5: test bits, normally '0'
- bits 6-7: not used, normally '0'
- bits 1-5 are latched */
+ bit 0: reset
+ bit 1: send break, '1' - serial output is high impedance
+ bit 2: int 7 select: '0' - timer 5, '1' - IN7 of the DCE-bus
+ bit 3: int ack enable, '0' - disabled, '1' - enabled
+ bits 4-5: test bits, normally '0'
+ bits 6-7: not used, normally '0'
+ bits 1-5 are latched */
m_command = data & TMS5501_COMMAND_LATCHED_BITS;
LOG_TMS5501("Command register write", data);
@@ -412,23 +412,23 @@ WRITE8_MEMBER( tms5501_device::write )
break;
case 0x05:
/* Serial rate register
- bit 0: 110 baud
- bit 1: 150 baud
- bit 2: 300 baud
- bit 3: 1200 baud
- bit 4: 2400 baud
- bit 5: 4800 baud
- bit 6: 9600 baud
- bit 7: '0' - two stop bits, '1' - one stop bit */
+ bit 0: 110 baud
+ bit 1: 150 baud
+ bit 2: 300 baud
+ bit 3: 1200 baud
+ bit 4: 2400 baud
+ bit 5: 4800 baud
+ bit 6: 9600 baud
+ bit 7: '0' - two stop bits, '1' - one stop bit */
m_sio_rate = data;
LOG_TMS5501("Serial rate write", data);
break;
- case 0x06: /* Serial output buffer */
+ case 0x06: /* Serial output buffer */
m_sio_output_buffer = data;
LOG_TMS5501("Serial output data", data);
break;
- case 0x07: /* PIO output */
+ case 0x07: /* PIO output */
m_pio_output_buffer = data;
if (!m_pio_write_func.isnull())
m_pio_write_func(0, m_pio_output_buffer);
@@ -436,23 +436,23 @@ WRITE8_MEMBER( tms5501_device::write )
break;
case 0x08:
/* Interrupt mask register
- bit 0: Timer 1 has expired (UTIM)
- bit 1: Timer 2 has expired
- bit 2: External interrupt (STKIM)
- bit 3: Timer 3 has expired (SNDIM)
- bit 4: Serial receiver loaded
- bit 5: Serial transmitter empty
- bit 6: Timer 4 has expired (KBIM)
- bit 7: Timer 5 has expired or IN7 (CLKIM) */
+ bit 0: Timer 1 has expired (UTIM)
+ bit 1: Timer 2 has expired
+ bit 2: External interrupt (STKIM)
+ bit 3: Timer 3 has expired (SNDIM)
+ bit 4: Serial receiver loaded
+ bit 5: Serial transmitter empty
+ bit 6: Timer 4 has expired (KBIM)
+ bit 7: Timer 5 has expired or IN7 (CLKIM) */
m_interrupt_mask = data;
LOG_TMS5501("Interrupt mask write", data);
break;
- case 0x09: /* Timer 0 counter */
- case 0x0a: /* Timer 1 counter */
- case 0x0b: /* Timer 2 counter */
- case 0x0c: /* Timer 3 counter */
- case 0x0d: /* Timer 4 counter */
+ case 0x09: /* Timer 0 counter */
+ case 0x0a: /* Timer 1 counter */
+ case 0x0b: /* Timer 2 counter */
+ case 0x0c: /* Timer 3 counter */
+ case 0x0d: /* Timer 4 counter */
offset -= 9;
m_timer_counter[offset] = data;
timer_reload(offset);