summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/r10788.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/machine/r10788.c')
-rw-r--r--src/emu/machine/r10788.c240
1 files changed, 120 insertions, 120 deletions
diff --git a/src/emu/machine/r10788.c b/src/emu/machine/r10788.c
index 10f46ab621a..128314903fe 100644
--- a/src/emu/machine/r10788.c
+++ b/src/emu/machine/r10788.c
@@ -41,7 +41,7 @@
#include "emu.h"
#include "machine/r10788.h"
-#define VERBOSE 0
+#define VERBOSE 0
#if VERBOSE
#define LOG(x) logerror x
#else
@@ -57,10 +57,10 @@
const device_type R10788 = &device_creator<r10788_device>;
r10788_device::r10788_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, R10788, "Rockwell 10788", tag, owner, clock, "r10788", __FILE__),
- m_ktr(0), m_kts(0), m_kla(0), m_klb(0), m_mask_a(15), m_mask_b(15), m_ker(0),
- m_io_counter(0), m_scan_counter(0),
- m_display(*this)
+ : device_t(mconfig, R10788, "Rockwell 10788", tag, owner, clock, "r10788", __FILE__),
+ m_ktr(0), m_kts(0), m_kla(0), m_klb(0), m_mask_a(15), m_mask_b(15), m_ker(0),
+ m_io_counter(0), m_scan_counter(0),
+ m_display(*this)
{
}
@@ -69,22 +69,22 @@ r10788_device::r10788_device(const machine_config &mconfig, const char *tag, dev
*/
void r10788_device::device_start()
{
- m_display.resolve();
-
- save_item(NAME(m_reg));
- save_item(NAME(m_ktr));
- save_item(NAME(m_kts));
- save_item(NAME(m_kla));
- save_item(NAME(m_klb));
- save_item(NAME(m_mask_a));
- save_item(NAME(m_mask_b));
- save_item(NAME(m_ker));
- save_item(NAME(m_io_counter));
- save_item(NAME(m_scan_counter));
-
- m_timer = timer_alloc(TIMER_DISPLAY);
- // recurring timer every 36 cycles
- m_timer->adjust(clocks_to_attotime(36), 0, clocks_to_attotime(36));
+ m_display.resolve();
+
+ save_item(NAME(m_reg));
+ save_item(NAME(m_ktr));
+ save_item(NAME(m_kts));
+ save_item(NAME(m_kla));
+ save_item(NAME(m_klb));
+ save_item(NAME(m_mask_a));
+ save_item(NAME(m_mask_b));
+ save_item(NAME(m_ker));
+ save_item(NAME(m_io_counter));
+ save_item(NAME(m_scan_counter));
+
+ m_timer = timer_alloc(TIMER_DISPLAY);
+ // recurring timer every 36 cycles
+ m_timer->adjust(clocks_to_attotime(36), 0, clocks_to_attotime(36));
}
/**
@@ -93,14 +93,14 @@ void r10788_device::device_start()
void r10788_device::device_reset()
{
memset(m_reg, 0x00, sizeof(m_reg));
- m_ktr = 0;
- m_kts = 0;
- m_kla = 0;
- m_klb = 0;
- m_mask_a = 15;
- m_mask_b = 15;
- m_ker = 0;
- m_scan_counter = 0;
+ m_ktr = 0;
+ m_kts = 0;
+ m_kla = 0;
+ m_klb = 0;
+ m_mask_a = 15;
+ m_mask_b = 15;
+ m_ker = 0;
+ m_scan_counter = 0;
}
@@ -113,19 +113,19 @@ void r10788_device::device_reset()
*/
void r10788_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- UINT8 data;
- switch (id)
- {
- case TIMER_DISPLAY:
- data = (m_reg[0][m_scan_counter] & m_mask_a) +
- 16 * (m_reg[1][m_scan_counter] & m_mask_b);
- LOG(("%s: scan counter:%2d data:%02x\n", __FUNCTION__, m_scan_counter, data));
- m_display(m_scan_counter, data, 0xff);
- break;
- default:
- LOG(("%s: invalid timer id:%d\n", __FUNCTION__, id));
- }
- m_scan_counter = (m_scan_counter + 1) % 16;
+ UINT8 data;
+ switch (id)
+ {
+ case TIMER_DISPLAY:
+ data = (m_reg[0][m_scan_counter] & m_mask_a) +
+ 16 * (m_reg[1][m_scan_counter] & m_mask_b);
+ LOG(("%s: scan counter:%2d data:%02x\n", __FUNCTION__, m_scan_counter, data));
+ m_display(m_scan_counter, data, 0xff);
+ break;
+ default:
+ LOG(("%s: invalid timer id:%d\n", __FUNCTION__, id));
+ }
+ m_scan_counter = (m_scan_counter + 1) % 16;
}
/*************************************
@@ -142,87 +142,87 @@ void r10788_device::device_timer(emu_timer &timer, device_timer_id id, int param
WRITE8_MEMBER( r10788_device::io_w )
{
- assert(offset < 16);
- switch (offset)
- {
- case KTR: // Transfer Keyboard Return
- LOG(("%s: KTR data:%02x\n", __FUNCTION__, data));
- m_ktr = data;
- break;
- case KTS: // Transfer Keyboard Strobe
- LOG(("%s: KTS data:%02x\n", __FUNCTION__, data));
- m_kts = data;
- break;
- case KLA: // Load Display Register A
- LOG(("%s: KLA [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
- m_kla = data;
- m_reg[0][m_io_counter] = m_kla;
- break;
- case KLB: // Load Display Register B
- LOG(("%s: KLB [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
- m_klb = data;
- m_reg[1][m_io_counter] = m_kla;
- break;
- case KDN: // Turn On Display
- LOG(("%s: KDN data:%02x\n", __FUNCTION__, data));
- m_mask_a = 15;
- m_mask_b = 15;
- break;
- case KAF: // Turn Off A
- LOG(("%s: KAF data:%02x\n", __FUNCTION__, data));
- m_mask_a = 0;
- m_mask_b &= ~3;
- break;
- case KBF: // Turn Off B
- LOG(("%s: KBF data:%02x\n", __FUNCTION__, data));
- m_mask_b &= ~12;
- break;
- case KER: // Reset Keyboard Error
- LOG(("%s: KER data:%02x\n", __FUNCTION__, data));
- m_ker = 10;
- break;
- }
+ assert(offset < 16);
+ switch (offset)
+ {
+ case KTR: // Transfer Keyboard Return
+ LOG(("%s: KTR data:%02x\n", __FUNCTION__, data));
+ m_ktr = data;
+ break;
+ case KTS: // Transfer Keyboard Strobe
+ LOG(("%s: KTS data:%02x\n", __FUNCTION__, data));
+ m_kts = data;
+ break;
+ case KLA: // Load Display Register A
+ LOG(("%s: KLA [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
+ m_kla = data;
+ m_reg[0][m_io_counter] = m_kla;
+ break;
+ case KLB: // Load Display Register B
+ LOG(("%s: KLB [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
+ m_klb = data;
+ m_reg[1][m_io_counter] = m_kla;
+ break;
+ case KDN: // Turn On Display
+ LOG(("%s: KDN data:%02x\n", __FUNCTION__, data));
+ m_mask_a = 15;
+ m_mask_b = 15;
+ break;
+ case KAF: // Turn Off A
+ LOG(("%s: KAF data:%02x\n", __FUNCTION__, data));
+ m_mask_a = 0;
+ m_mask_b &= ~3;
+ break;
+ case KBF: // Turn Off B
+ LOG(("%s: KBF data:%02x\n", __FUNCTION__, data));
+ m_mask_b &= ~12;
+ break;
+ case KER: // Reset Keyboard Error
+ LOG(("%s: KER data:%02x\n", __FUNCTION__, data));
+ m_ker = 10;
+ break;
+ }
}
READ8_MEMBER( r10788_device::io_r )
{
- assert(offset < 16);
- UINT8 data = 0xf;
- switch (offset)
- {
- case KTR: // Transfer Keyboard Return
- data = m_ktr;
- LOG(("%s: KTR data:%02x\n", __FUNCTION__, data));
- break;
- case KTS: // Transfer Keyboard Strobe
- data = m_kts;
- LOG(("%s: KTS data:%02x\n", __FUNCTION__, data));
- break;
- case KLA: // Load Display Register A
- m_kla = m_reg[0][m_io_counter];
- data = m_kla;
- LOG(("%s: KLA [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
- break;
- case KLB: // Load Display Register B
- m_klb = m_reg[1][m_io_counter];
- data = m_klb;
- LOG(("%s: KLB [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
- // FIXME: does it automagically increment at KLB write?
- m_io_counter = (m_io_counter + 1) % 16;
- break;
- case KDN: // Turn On Display
- LOG(("%s: KDN data:%02x\n", __FUNCTION__, data));
- break;
- case KAF: // Turn Off A
- LOG(("%s: KAF data:%02x\n", __FUNCTION__, data));
- break;
- case KBF: // Turn Off B
- LOG(("%s: KBF data:%02x\n", __FUNCTION__, data));
- break;
- case KER: // Reset Keyboard Error
- LOG(("%s: KER data:%02x\n", __FUNCTION__, data));
- break;
- }
- return data;
+ assert(offset < 16);
+ UINT8 data = 0xf;
+ switch (offset)
+ {
+ case KTR: // Transfer Keyboard Return
+ data = m_ktr;
+ LOG(("%s: KTR data:%02x\n", __FUNCTION__, data));
+ break;
+ case KTS: // Transfer Keyboard Strobe
+ data = m_kts;
+ LOG(("%s: KTS data:%02x\n", __FUNCTION__, data));
+ break;
+ case KLA: // Load Display Register A
+ m_kla = m_reg[0][m_io_counter];
+ data = m_kla;
+ LOG(("%s: KLA [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
+ break;
+ case KLB: // Load Display Register B
+ m_klb = m_reg[1][m_io_counter];
+ data = m_klb;
+ LOG(("%s: KLB [%2d] data:%02x\n", __FUNCTION__, m_io_counter, data));
+ // FIXME: does it automagically increment at KLB write?
+ m_io_counter = (m_io_counter + 1) % 16;
+ break;
+ case KDN: // Turn On Display
+ LOG(("%s: KDN data:%02x\n", __FUNCTION__, data));
+ break;
+ case KAF: // Turn Off A
+ LOG(("%s: KAF data:%02x\n", __FUNCTION__, data));
+ break;
+ case KBF: // Turn Off B
+ LOG(("%s: KBF data:%02x\n", __FUNCTION__, data));
+ break;
+ case KER: // Reset Keyboard Error
+ LOG(("%s: KER data:%02x\n", __FUNCTION__, data));
+ break;
+ }
+ return data;
}