mirror of
https://github.com/holub/mame
synced 2025-06-29 23:48:56 +03:00
(MESS) ibm5150: Keyboard WIP. (nw)
This commit is contained in:
parent
3563690821
commit
59f29172c6
@ -87,6 +87,9 @@ enum
|
|||||||
MACROS
|
MACROS
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
#define MCS48_LC_CLOCK(_L, _C) \
|
||||||
|
(1 / (2 * 3.14159265358979323846 * sqrt(_L * _C)))
|
||||||
|
|
||||||
#define MCS48_ALE_CLOCK(_clock) \
|
#define MCS48_ALE_CLOCK(_clock) \
|
||||||
attotime::from_hz(_clock/(3*5))
|
attotime::from_hz(_clock/(3*5))
|
||||||
|
|
||||||
|
@ -8,6 +8,9 @@
|
|||||||
#define CAP_U(cap) ((double)(cap) * 1e-6)
|
#define CAP_U(cap) ((double)(cap) * 1e-6)
|
||||||
#define CAP_N(cap) ((double)(cap) * 1e-9)
|
#define CAP_N(cap) ((double)(cap) * 1e-9)
|
||||||
#define CAP_P(cap) ((double)(cap) * 1e-12)
|
#define CAP_P(cap) ((double)(cap) * 1e-12)
|
||||||
|
#define IND_U(ind) ((double)(ind) * 1e-6)
|
||||||
|
#define IND_N(ind) ((double)(ind) * 1e-9)
|
||||||
|
#define IND_P(ind) ((double)(ind) * 1e-12)
|
||||||
|
|
||||||
/* vin --/\r1/\-- out --/\r2/\-- gnd */
|
/* vin --/\r1/\-- out --/\r2/\-- gnd */
|
||||||
#define RES_VOLTAGE_DIVIDER(r1, r2) ((double)(r2) / ((double)(r1) + (double)(r2)))
|
#define RES_VOLTAGE_DIVIDER(r1, r2) ((double)(r2) / ((double)(r1) + (double)(r2)))
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
|
||||||
IBM PC/XT 5150/5160 83-key keyboard emulation
|
IBM Model F PC/XT 5150/5160 83-key keyboard emulation
|
||||||
|
|
||||||
Copyright MESS Team.
|
Copyright MESS Team.
|
||||||
Visit http://mamedev.org for licensing and usage restrictions.
|
Visit http://mamedev.org for licensing and usage restrictions.
|
||||||
@ -33,6 +33,8 @@ const device_type PC_KBD_IBM_PC_XT_83 = &device_creator<ibm_pc_xt_83_keyboard_de
|
|||||||
ROM_START( ibm_pc_xt_83_keyboard )
|
ROM_START( ibm_pc_xt_83_keyboard )
|
||||||
ROM_REGION( 0x400, I8048_TAG, 0 )
|
ROM_REGION( 0x400, I8048_TAG, 0 )
|
||||||
/*
|
/*
|
||||||
|
Keyboard Part No. 1501105
|
||||||
|
|
||||||
MOI 74 01
|
MOI 74 01
|
||||||
PN 4584751
|
PN 4584751
|
||||||
GX 344231
|
GX 344231
|
||||||
@ -61,6 +63,10 @@ const rom_entry *ibm_pc_xt_83_keyboard_device::device_rom_region() const
|
|||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
static ADDRESS_MAP_START( ibm_pc_xt_83_keyboard_io, AS_IO, 8, ibm_pc_xt_83_keyboard_device )
|
static ADDRESS_MAP_START( ibm_pc_xt_83_keyboard_io, AS_IO, 8, ibm_pc_xt_83_keyboard_device )
|
||||||
|
AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(bus_w)
|
||||||
|
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(p1_r) AM_WRITENOP
|
||||||
|
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w)
|
||||||
|
AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
@ -69,7 +75,7 @@ ADDRESS_MAP_END
|
|||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
static MACHINE_CONFIG_FRAGMENT( ibm_pc_xt_83_keyboard )
|
static MACHINE_CONFIG_FRAGMENT( ibm_pc_xt_83_keyboard )
|
||||||
MCFG_CPU_ADD(I8048_TAG, I8048, 4000000)
|
MCFG_CPU_ADD(I8048_TAG, I8048, MCS48_LC_CLOCK(IND_U(47), CAP_P(20)))
|
||||||
MCFG_CPU_IO_MAP(ibm_pc_xt_83_keyboard_io)
|
MCFG_CPU_IO_MAP(ibm_pc_xt_83_keyboard_io)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
@ -126,6 +132,9 @@ ibm_pc_xt_83_keyboard_device::ibm_pc_xt_83_keyboard_device(const machine_config
|
|||||||
|
|
||||||
void ibm_pc_xt_83_keyboard_device::device_start()
|
void ibm_pc_xt_83_keyboard_device::device_start()
|
||||||
{
|
{
|
||||||
|
// state saving
|
||||||
|
save_item(NAME(m_cnt));
|
||||||
|
save_item(NAME(m_key_depressed));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -135,22 +144,81 @@ void ibm_pc_xt_83_keyboard_device::device_start()
|
|||||||
|
|
||||||
void ibm_pc_xt_83_keyboard_device::device_reset()
|
void ibm_pc_xt_83_keyboard_device::device_reset()
|
||||||
{
|
{
|
||||||
|
m_maincpu->reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// clock_write -
|
// bus_w -
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
WRITE_LINE_MEMBER( ibm_pc_xt_83_keyboard_device::clock_write )
|
WRITE8_MEMBER( ibm_pc_xt_83_keyboard_device::bus_w )
|
||||||
{
|
{
|
||||||
|
m_cnt = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// data_write -
|
// p1_r -
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
WRITE_LINE_MEMBER( ibm_pc_xt_83_keyboard_device::data_write )
|
READ8_MEMBER( ibm_pc_xt_83_keyboard_device::p1_r )
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
|
||||||
|
bit description
|
||||||
|
|
||||||
|
0 -REQ IN
|
||||||
|
1 DATA IN
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
UINT8 data = 0;
|
||||||
|
|
||||||
|
data |= clock_signal();
|
||||||
|
data |= data_signal() << 1;
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// p2_w -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
WRITE8_MEMBER( ibm_pc_xt_83_keyboard_device::p2_w )
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
|
||||||
|
bit description
|
||||||
|
|
||||||
|
0 -MATRIX STROBE
|
||||||
|
1 CLOCK OUT
|
||||||
|
2 DATA OUT
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
m_pc_kbdc->clock_write_from_kb(BIT(data, 1));
|
||||||
|
m_pc_kbdc->data_write_from_kb(BIT(data, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// t1_r -
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
READ8_MEMBER( ibm_pc_xt_83_keyboard_device::t1_r )
|
||||||
|
{
|
||||||
|
return m_key_depressed;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
|
||||||
IBM PC/XT 5150/5160 83-key keyboard emulation
|
IBM Model F PC/XT 5150/5160 83-key keyboard emulation
|
||||||
|
|
||||||
Copyright MESS Team.
|
Copyright MESS Team.
|
||||||
Visit http://mamedev.org for licensing and usage restrictions.
|
Visit http://mamedev.org for licensing and usage restrictions.
|
||||||
@ -15,6 +15,7 @@
|
|||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/mcs48/mcs48.h"
|
#include "cpu/mcs48/mcs48.h"
|
||||||
#include "machine/pc_kbdc.h"
|
#include "machine/pc_kbdc.h"
|
||||||
|
#include "machine/rescap.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -36,17 +37,25 @@ public:
|
|||||||
virtual machine_config_constructor device_mconfig_additions() const;
|
virtual machine_config_constructor device_mconfig_additions() const;
|
||||||
virtual ioport_constructor device_input_ports() const;
|
virtual ioport_constructor device_input_ports() const;
|
||||||
|
|
||||||
|
DECLARE_WRITE8_MEMBER( bus_w );
|
||||||
|
DECLARE_READ8_MEMBER( p1_r );
|
||||||
|
DECLARE_WRITE8_MEMBER( p2_w );
|
||||||
|
DECLARE_READ8_MEMBER( t1_r );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
|
|
||||||
// device_pc_kbd_interface overrides
|
// device_pc_kbd_interface overrides
|
||||||
virtual DECLARE_WRITE_LINE_MEMBER( clock_write );
|
virtual DECLARE_WRITE_LINE_MEMBER( clock_write ) { };
|
||||||
virtual DECLARE_WRITE_LINE_MEMBER( data_write );
|
virtual DECLARE_WRITE_LINE_MEMBER( data_write ) { };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
|
||||||
|
UINT8 m_cnt;
|
||||||
|
int m_key_depressed;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
// PC XT protocol keyboards
|
// PC XT protocol keyboards
|
||||||
#define STR_KBD_KEYTRONIC_PC3270 "keytronc_pc3270"
|
#define STR_KBD_KEYTRONIC_PC3270 "keytronc_pc3270"
|
||||||
#define STR_KBD_IBM_PC_XT_83 "pcxt83"
|
#define STR_KBD_IBM_PC_XT_83 "pcxt"
|
||||||
|
|
||||||
SLOT_INTERFACE_EXTERN(pc_xt_keyboards);
|
SLOT_INTERFACE_EXTERN(pc_xt_keyboards);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user