abc1600: Cleanup

This commit is contained in:
Curt Coder 2023-03-07 14:58:12 +02:00
parent 4df837c2e5
commit e0273591c3
4 changed files with 71 additions and 85 deletions

View File

@ -61,8 +61,9 @@ Notes:
// MACROS / CONSTANTS // MACROS / CONSTANTS
//************************************************************************** //**************************************************************************
#define I8035_Z2_TAG "z2" #define I8035_Z2_TAG "z2"
#define I8035_Z5_TAG "z5" #define I8035_Z5_TAG "z5"
#define R8_TAG "r8"
@ -173,7 +174,7 @@ void abc99_device::device_add_mconfig(machine_config &config)
m_mousecpu->t1_in_cb().set(FUNC(abc99_device::z5_t1_r)); m_mousecpu->t1_in_cb().set(FUNC(abc99_device::z5_t1_r));
// mouse // mouse
R8(config, m_mouse, 0); LUXOR_R8(config, m_mouse, 0);
// sound hardware // sound hardware
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();

View File

@ -26,7 +26,7 @@
// ======================> abc99_device // ======================> abc99_device
class abc99_device : public device_t, class abc99_device : public device_t,
public abc_keyboard_interface public abc_keyboard_interface
{ {
public: public:
// construction/destruction // construction/destruction
@ -87,7 +87,7 @@ private:
required_device<i8035_device> m_maincpu; required_device<i8035_device> m_maincpu;
required_device<i8035_device> m_mousecpu; required_device<i8035_device> m_mousecpu;
required_device<speaker_sound_device> m_speaker; required_device<speaker_sound_device> m_speaker;
required_device<r8_device> m_mouse; required_device<luxor_r8_device> m_mouse;
required_ioport m_z14; required_ioport m_z14;
required_ioport m_cursor; required_ioport m_cursor;
output_finder<11> m_leds; output_finder<11> m_leds;

View File

@ -14,24 +14,24 @@
// DEVICE DEFINITIONS // DEVICE DEFINITIONS
//************************************************************************** //**************************************************************************
DEFINE_DEVICE_TYPE(R8, r8_device, "r8", "Luxor R8") DEFINE_DEVICE_TYPE(LUXOR_R8, luxor_r8_device, "luxor_r8", "Luxor R8")
//------------------------------------------------- //-------------------------------------------------
// INPUT_PORTS( r8 ) // INPUT_PORTS( r8 )
//------------------------------------------------- //-------------------------------------------------
INPUT_PORTS_START( r8 ) static INPUT_PORTS_START( r8 )
PORT_START("MOUSEB") PORT_START("MOUSEB")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Left Mouse Button") PORT_CODE(MOUSECODE_BUTTON1) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Left Mouse Button") PORT_CODE(MOUSECODE_BUTTON1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Middle Mouse Button") PORT_CODE(MOUSECODE_BUTTON3) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Middle Mouse Button") PORT_CODE(MOUSECODE_BUTTON3)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Right Mouse Button") PORT_CODE(MOUSECODE_BUTTON2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Right Mouse Button") PORT_CODE(MOUSECODE_BUTTON2)
PORT_START("MOUSEX") PORT_START("MOUSEX")
PORT_BIT( 0xfff, 0x000, IPT_MOUSE_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(0) PORT_BIT( 0xfff, 0x000, IPT_MOUSE_X ) PORT_SENSITIVITY(50)
PORT_START("MOUSEY") PORT_START("MOUSEY")
PORT_BIT( 0xfff, 0x000, IPT_MOUSE_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(0) PORT_BIT( 0xfff, 0x000, IPT_MOUSE_Y ) PORT_SENSITIVITY(50)
INPUT_PORTS_END INPUT_PORTS_END
@ -39,7 +39,7 @@ INPUT_PORTS_END
// input_ports - device-specific input ports // input_ports - device-specific input ports
//------------------------------------------------- //-------------------------------------------------
ioport_constructor r8_device::device_input_ports() const ioport_constructor luxor_r8_device::device_input_ports() const
{ {
return INPUT_PORTS_NAME( r8 ); return INPUT_PORTS_NAME( r8 );
} }
@ -49,37 +49,37 @@ ioport_constructor r8_device::device_input_ports() const
// scan_mouse - // scan_mouse -
//------------------------------------------------- //-------------------------------------------------
TIMER_CALLBACK_MEMBER(r8_device::scan_mouse) TIMER_CALLBACK_MEMBER(luxor_r8_device::scan_mouse)
{ {
switch(m_mouse.phase) switch(m_phase)
{ {
case 0: case 0:
m_mouse.xa = m_mouse.x > m_mouse.prev_x ? CLEAR_LINE : ASSERT_LINE; m_xa = m_x > m_prev_x ? CLEAR_LINE : ASSERT_LINE;
m_mouse.xb = m_mouse.x < m_mouse.prev_x ? CLEAR_LINE : ASSERT_LINE; m_xb = m_x < m_prev_x ? CLEAR_LINE : ASSERT_LINE;
m_mouse.ya = m_mouse.y > m_mouse.prev_y ? CLEAR_LINE : ASSERT_LINE; m_ya = m_y > m_prev_y ? CLEAR_LINE : ASSERT_LINE;
m_mouse.yb = m_mouse.y < m_mouse.prev_y ? CLEAR_LINE : ASSERT_LINE; m_yb = m_y < m_prev_y ? CLEAR_LINE : ASSERT_LINE;
break; break;
case 1: case 1:
m_mouse.xa = m_mouse.xb = m_mouse.x != m_mouse.prev_x ? CLEAR_LINE : ASSERT_LINE; m_xa = m_xb = m_x != m_prev_x ? CLEAR_LINE : ASSERT_LINE;
m_mouse.ya = m_mouse.yb = m_mouse.y != m_mouse.prev_y ? CLEAR_LINE : ASSERT_LINE; m_ya = m_yb = m_y != m_prev_y ? CLEAR_LINE : ASSERT_LINE;
break; break;
case 2: case 2:
m_mouse.xa = m_mouse.x < m_mouse.prev_x ? CLEAR_LINE : ASSERT_LINE; m_xa = m_x < m_prev_x ? CLEAR_LINE : ASSERT_LINE;
m_mouse.xb = m_mouse.x > m_mouse.prev_x ? CLEAR_LINE : ASSERT_LINE; m_xb = m_x > m_prev_x ? CLEAR_LINE : ASSERT_LINE;
m_mouse.ya = m_mouse.y < m_mouse.prev_y ? CLEAR_LINE : ASSERT_LINE; m_ya = m_y < m_prev_y ? CLEAR_LINE : ASSERT_LINE;
m_mouse.yb = m_mouse.y > m_mouse.prev_y ? CLEAR_LINE : ASSERT_LINE; m_yb = m_y > m_prev_y ? CLEAR_LINE : ASSERT_LINE;
break; break;
case 3: case 3:
m_mouse.xa = m_mouse.xb = ASSERT_LINE; m_xa = m_xb = ASSERT_LINE;
m_mouse.ya = m_mouse.yb = ASSERT_LINE; m_ya = m_yb = ASSERT_LINE;
m_mouse.prev_x = m_mouse.x; m_prev_x = m_x;
m_mouse.prev_y = m_mouse.y; m_prev_y = m_y;
m_mouse.x = m_mouse_x->read(); m_x = m_mouse_x->read();
m_mouse.y = m_mouse_y->read(); m_y = m_mouse_y->read();
break; break;
} }
m_mouse.phase = (m_mouse.phase + 1) & 3; m_phase = (m_phase + 1) & 3;
} }
@ -89,11 +89,11 @@ TIMER_CALLBACK_MEMBER(r8_device::scan_mouse)
//************************************************************************** //**************************************************************************
//------------------------------------------------- //-------------------------------------------------
// r8_device - constructor // luxor_r8_device - constructor
//------------------------------------------------- //-------------------------------------------------
r8_device::r8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : luxor_r8_device::luxor_r8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, R8, tag, owner, clock), device_t(mconfig, LUXOR_R8, tag, owner, clock),
m_mouse_timer(nullptr), m_mouse_timer(nullptr),
m_mouse_b(*this, "MOUSEB"), m_mouse_b(*this, "MOUSEB"),
m_mouse_x(*this, "MOUSEX"), m_mouse_x(*this, "MOUSEX"),
@ -106,22 +106,22 @@ r8_device::r8_device(const machine_config &mconfig, const char *tag, device_t *o
// device_start - device-specific startup // device_start - device-specific startup
//------------------------------------------------- //-------------------------------------------------
void r8_device::device_start() void luxor_r8_device::device_start()
{ {
// allocate timers // allocate timers
m_mouse_timer = timer_alloc(FUNC(r8_device::scan_mouse), this); m_mouse_timer = timer_alloc(FUNC(luxor_r8_device::scan_mouse), this);
m_mouse_timer->adjust(attotime::from_hz(1000), 0, attotime::from_hz(1000)); m_mouse_timer->adjust(attotime::from_hz(1000), 0, attotime::from_hz(1000));
// state saving // state saving
save_item(NAME(m_mouse.phase)); save_item(NAME(m_phase));
save_item(NAME(m_mouse.x)); save_item(NAME(m_x));
save_item(NAME(m_mouse.y)); save_item(NAME(m_y));
save_item(NAME(m_mouse.prev_x)); save_item(NAME(m_prev_x));
save_item(NAME(m_mouse.prev_y)); save_item(NAME(m_prev_y));
save_item(NAME(m_mouse.xa)); save_item(NAME(m_xa));
save_item(NAME(m_mouse.xb)); save_item(NAME(m_xb));
save_item(NAME(m_mouse.ya)); save_item(NAME(m_ya));
save_item(NAME(m_mouse.yb)); save_item(NAME(m_yb));
} }
@ -129,13 +129,13 @@ void r8_device::device_start()
// device_reset - device-specific reset // device_reset - device-specific reset
//------------------------------------------------- //-------------------------------------------------
void r8_device::device_reset() void luxor_r8_device::device_reset()
{ {
m_mouse.phase = 0; m_phase = 0;
m_mouse.xa = m_mouse.xb = ASSERT_LINE; m_xa = m_xb = ASSERT_LINE;
m_mouse.ya = m_mouse.yb = ASSERT_LINE; m_ya = m_yb = ASSERT_LINE;
m_mouse.x = m_mouse.y = 0; m_x = m_y = 0;
m_mouse.prev_x = m_mouse.prev_y = 0; m_prev_x = m_prev_y = 0;
} }
@ -143,15 +143,15 @@ void r8_device::device_reset()
// read - // read -
//------------------------------------------------- //-------------------------------------------------
u8 r8_device::read() u8 luxor_r8_device::read()
{ {
u8 data = 0; u8 data = 0;
// mouse movement // mouse movement
data |= m_mouse.xa; data |= m_xa;
data |= m_mouse.xb << 1; data |= m_xb << 1;
data |= m_mouse.ya << 2; data |= m_ya << 2;
data |= m_mouse.yb << 3; data |= m_yb << 3;
// mouse buttons // mouse buttons
data |= (m_mouse_b->read() & 0x07) << 4; data |= (m_mouse_b->read() & 0x07) << 4;

View File

@ -13,29 +13,17 @@
#include "emu.h"
//**************************************************************************
// MACROS / CONSTANTS
//**************************************************************************
#define R8_TAG "r8"
//************************************************************************** //**************************************************************************
// TYPE DEFINITIONS // TYPE DEFINITIONS
//************************************************************************** //**************************************************************************
// ======================> r8_device // ======================> luxor_r8_device
class r8_device : public device_t class luxor_r8_device : public device_t
{ {
public: public:
// construction/destruction // construction/destruction
r8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); luxor_r8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
u8 read(); u8 read();
@ -55,23 +43,20 @@ private:
required_ioport m_mouse_x; required_ioport m_mouse_x;
required_ioport m_mouse_y; required_ioport m_mouse_y;
struct int m_phase;
{ int m_x;
int phase; int m_y;
int x; int m_prev_x;
int y; int m_prev_y;
int prev_x; int m_xa;
int prev_y; int m_xb;
int xa; int m_ya;
int xb; int m_yb;
int ya;
int yb;
} m_mouse;
}; };
// device type definition // device type definition
DECLARE_DEVICE_TYPE(R8, r8_device) DECLARE_DEVICE_TYPE(LUXOR_R8, luxor_r8_device)
#endif // MAME_BUS_ABCKB_R8_H #endif // MAME_BUS_ABCKB_R8_H