mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
pc_kbdc: Merge "PC KBDC" device with slot connector
This commit is contained in:
parent
735e7d5b2a
commit
a71c44c745
@ -164,10 +164,9 @@ void a2bus_pcxporter_device::device_add_mconfig(machine_config &config)
|
||||
m_isabus->drq2_callback().set(m_dma8237, FUNC(am9517a_device::dreq2_w));
|
||||
m_isabus->drq3_callback().set(m_dma8237, FUNC(am9517a_device::dreq3_w));
|
||||
|
||||
PC_KBDC(config, m_pc_kbdc, 0);
|
||||
PC_KBDC(config, m_pc_kbdc, pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270);
|
||||
m_pc_kbdc->out_clock_cb().set(FUNC(a2bus_pcxporter_device::keyboard_clock_w));
|
||||
m_pc_kbdc->out_data_cb().set(FUNC(a2bus_pcxporter_device::keyboard_data_w));
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(m_pc_kbdc);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
@ -190,7 +189,7 @@ a2bus_pcxporter_device::a2bus_pcxporter_device(const machine_config &mconfig, de
|
||||
m_pit8253(*this, "pit8253"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_isabus(*this, "isa"),
|
||||
m_pc_kbdc(*this, "pc_kbdc")
|
||||
m_pc_kbdc(*this, "kbd")
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -524,13 +524,12 @@ void southbridge_extended_device::device_add_mconfig(machine_config &config)
|
||||
keybc.hot_res().set_inputline(":maincpu", INPUT_LINE_RESET);
|
||||
keybc.gate_a20().set_inputline(":maincpu", INPUT_LINE_A20);
|
||||
keybc.kbd_irq().set("pic8259_master", FUNC(pic8259_device::ir1_w));
|
||||
keybc.kbd_clk().set("pc_kbdc", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
keybc.kbd_data().set("pc_kbdc", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
keybc.kbd_clk().set(m_pc_kbdc, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
keybc.kbd_data().set(m_pc_kbdc, FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
PC_KBDC(config, m_pc_kbdc, 0);
|
||||
PC_KBDC(config, m_pc_kbdc, pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL);
|
||||
m_pc_kbdc->out_clock_cb().set(m_keybc, FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
m_pc_kbdc->out_data_cb().set(m_keybc, FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(m_pc_kbdc);
|
||||
|
||||
ds12885_device &rtc(DS12885(config, "rtc"));
|
||||
rtc.irq().set("pic8259_slave", FUNC(pic8259_device::ir0_w));
|
||||
@ -546,7 +545,7 @@ southbridge_extended_device::southbridge_extended_device(const machine_config &m
|
||||
: southbridge_device(mconfig, type, tag, owner, clock),
|
||||
m_keybc(*this, "keybc"),
|
||||
m_ds12885(*this, "rtc"),
|
||||
m_pc_kbdc(*this, "pc_kbdc")
|
||||
m_pc_kbdc(*this, "kbd")
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -25,47 +25,18 @@ The following basic program can be useful for identifying scancodes:
|
||||
// GLOBAL VARIABLES
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(PC_KBDC_SLOT, pc_kbdc_slot_device, "pc_kbdc_slot", "PC keyboard port")
|
||||
DEFINE_DEVICE_TYPE(PC_KBDC, pc_kbdc_device, "pc_kbdc", "PC keyboard connector")
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// pc_kbdc_slot_device - constructor
|
||||
//-------------------------------------------------
|
||||
pc_kbdc_slot_device::pc_kbdc_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, PC_KBDC_SLOT, tag, owner, clock),
|
||||
device_single_card_slot_interface<device_pc_kbd_interface>(mconfig, *this),
|
||||
m_kbdc_device(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void pc_kbdc_slot_device::device_start()
|
||||
{
|
||||
device_pc_kbd_interface *const pc_kbd = get_card_device();
|
||||
if (pc_kbd)
|
||||
pc_kbd->set_pc_kbdc(m_kbdc_device);
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// GLOBAL VARIABLES
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(PC_KBDC, pc_kbdc_device, "pc_kbdc", "PC KBDC")
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// pc_kbdc_device - constructor
|
||||
//-------------------------------------------------
|
||||
pc_kbdc_device::pc_kbdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, PC_KBDC, tag, owner, clock),
|
||||
device_single_card_slot_interface<device_pc_kbd_interface>(mconfig, *this),
|
||||
m_out_clock_cb(*this),
|
||||
m_out_data_cb(*this),
|
||||
m_clock_state(-1),
|
||||
@ -87,6 +58,10 @@ void pc_kbdc_device::set_keyboard(device_pc_kbd_interface *keyboard)
|
||||
//-------------------------------------------------
|
||||
void pc_kbdc_device::device_resolve_objects()
|
||||
{
|
||||
device_pc_kbd_interface *const pc_kbd = get_card_device();
|
||||
if (pc_kbd)
|
||||
pc_kbd->set_pc_kbdc(this);
|
||||
|
||||
m_out_clock_cb.resolve_safe();
|
||||
m_out_data_cb.resolve_safe();
|
||||
}
|
||||
|
@ -23,42 +23,19 @@ set the data line and then set the clock line.
|
||||
class device_pc_kbd_interface;
|
||||
|
||||
|
||||
class pc_kbdc_slot_device : public device_t,
|
||||
public device_single_card_slot_interface<device_pc_kbd_interface>
|
||||
class pc_kbdc_device : public device_t, public device_single_card_slot_interface<device_pc_kbd_interface>
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
template <typename T>
|
||||
pc_kbdc_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
|
||||
: pc_kbdc_slot_device(mconfig, tag, owner, (uint32_t)0)
|
||||
pc_kbdc_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
|
||||
: pc_kbdc_device(mconfig, tag, owner, (uint32_t)0)
|
||||
{
|
||||
option_reset();
|
||||
opts(*this);
|
||||
set_default_option(dflt);
|
||||
set_fixed(false);
|
||||
}
|
||||
pc_kbdc_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// inline configuration
|
||||
void set_pc_kbdc_slot(device_t *kbdc_device) { m_kbdc_device = kbdc_device; }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
// configuration
|
||||
device_t *m_kbdc_device;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(PC_KBDC_SLOT, pc_kbdc_slot_device)
|
||||
|
||||
|
||||
class pc_kbdc_device : public device_t
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
pc_kbdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
auto out_clock_cb() { return m_out_clock_cb.bind(); }
|
||||
|
@ -459,6 +459,8 @@ geneve_gate_array_device::geneve_gate_array_device(const machine_config &mconfig
|
||||
m_direct_mode(false),
|
||||
|
||||
m_keyint(*this),
|
||||
m_keyb_clk(*this),
|
||||
m_keyb_data(*this),
|
||||
m_keyboard_shift_reg(0),
|
||||
m_keyboard_last_clock(CLEAR_LINE),
|
||||
m_keyboard_data_in(CLEAR_LINE),
|
||||
@ -466,7 +468,6 @@ geneve_gate_array_device::geneve_gate_array_device(const machine_config &mconfig
|
||||
|
||||
m_pal(*owner, GENEVE_PAL_TAG),
|
||||
m_peribox(*owner, TI_PERIBOX_TAG),
|
||||
m_keyb_conn(*owner, GENEVE_KEYBOARD_CONN_TAG),
|
||||
|
||||
m_debug(false)
|
||||
{
|
||||
@ -564,7 +565,7 @@ void geneve_gate_array_device::cru_ctrl_write(offs_t offset, uint8_t data)
|
||||
*/
|
||||
WRITE_LINE_MEMBER( geneve_gate_array_device::set_keyboard_clock)
|
||||
{
|
||||
m_keyb_conn->clock_write_from_mb(state);
|
||||
m_keyb_clk(state);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -594,7 +595,7 @@ void geneve_gate_array_device::shift_reg_changed()
|
||||
// The level of the data line is the inverse of the rightmost bit of
|
||||
// the shift register. This means that once the start bit reaches that
|
||||
// position, it will pull down the data line and stop the transfer.
|
||||
m_keyb_conn->data_write_from_mb(1 - (m_keyboard_shift_reg & 1));
|
||||
m_keyb_data(1 - (m_keyboard_shift_reg & 1));
|
||||
m_keyint((m_keyboard_shift_reg & 1)? ASSERT_LINE : CLEAR_LINE);
|
||||
if (m_keyboard_shift_reg & 1)
|
||||
LOGMASKED(LOG_KEYBOARD, "Scan code complete; raise interrupt, hold down data line\n");
|
||||
@ -1082,6 +1083,8 @@ int geneve_gate_array_device::get_prefix(int lines)
|
||||
void geneve_gate_array_device::device_start()
|
||||
{
|
||||
m_keyint.resolve_safe();
|
||||
m_keyb_clk.resolve_safe();
|
||||
m_keyb_data.resolve_safe();
|
||||
|
||||
m_geneve_mode = false;
|
||||
m_direct_mode = true;
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "machine/mm58274c.h"
|
||||
#include "machine/at29x.h"
|
||||
#include "machine/ram.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
|
||||
enum
|
||||
{
|
||||
@ -43,7 +42,6 @@ enum
|
||||
#define GENEVE_MOUSE_TAG "gmouse"
|
||||
#define GENEVE_PFM512_TAG "pfm512"
|
||||
#define GENEVE_PFM512A_TAG "pfm512a"
|
||||
#define GENEVE_KEYBOARD_CONN_TAG "keybconn"
|
||||
|
||||
namespace bus::ti99::internal {
|
||||
|
||||
@ -106,6 +104,8 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER( kbdclk );
|
||||
DECLARE_WRITE_LINE_MEMBER( kbddata );
|
||||
auto kbdint_cb() { return m_keyint.bind(); }
|
||||
auto kbdclk_cb() { return m_keyb_clk.bind(); }
|
||||
auto kbddata_cb() { return m_keyb_data.bind(); }
|
||||
|
||||
// Miscellaneous
|
||||
void set_debug(bool deb) { m_debug = deb; }
|
||||
@ -224,6 +224,8 @@ private:
|
||||
|
||||
// Keyboard support
|
||||
devcb_write_line m_keyint;
|
||||
devcb_write_line m_keyb_clk;
|
||||
devcb_write_line m_keyb_data;
|
||||
uint16_t m_keyboard_shift_reg;
|
||||
line_state m_keyboard_last_clock;
|
||||
line_state m_keyboard_data_in;
|
||||
@ -233,7 +235,6 @@ private:
|
||||
// Devices
|
||||
required_device<geneve_pal_device> m_pal;
|
||||
required_device<bus::ti99::peb::peribox_device> m_peribox;
|
||||
required_device<pc_kbdc_device> m_keyb_conn;
|
||||
|
||||
// Emulation-specific: Is the debugger active?
|
||||
bool m_debug;
|
||||
|
@ -268,7 +268,7 @@ WRITE_LINE_MEMBER( ibm5150_mb_device::keyboard_clock_w )
|
||||
m_ppi_shift_register |= m_ppi_data_signal << 7;
|
||||
|
||||
m_pic8259->ir1_w(m_ppi_shift_enable);
|
||||
m_pc_kbdc->data_write_from_mb(!m_ppi_shift_enable);
|
||||
m_kbddata_callback(!m_ppi_shift_enable);
|
||||
}
|
||||
}
|
||||
|
||||
@ -282,7 +282,7 @@ WRITE_LINE_MEMBER( ec1841_mb_device::keyboard_clock_w )
|
||||
m_ppi_shift_register |= m_ppi_data_signal << 7;
|
||||
|
||||
m_pic8259->ir1_w(m_ppi_shift_enable);
|
||||
m_pc_kbdc->data_write_from_mb(!m_ppi_shift_enable);
|
||||
m_kbddata_callback(!m_ppi_shift_enable);
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,7 +296,7 @@ WRITE_LINE_MEMBER( ibm5160_mb_device::keyboard_clock_w )
|
||||
m_ppi_shift_register |= m_ppi_data_signal << 7;
|
||||
|
||||
m_pic8259->ir1_w(m_ppi_shift_enable);
|
||||
m_pc_kbdc->data_write_from_mb(!m_ppi_shift_enable);
|
||||
m_kbddata_callback(!m_ppi_shift_enable);
|
||||
}
|
||||
}
|
||||
|
||||
@ -380,9 +380,9 @@ void ibm5160_mb_device::pc_ppi_portb_w(uint8_t data)
|
||||
m_pic8259->ir1_w(m_ppi_shift_enable);
|
||||
}
|
||||
|
||||
m_pc_kbdc->data_write_from_mb(!m_ppi_shift_enable);
|
||||
m_kbddata_callback(!m_ppi_shift_enable);
|
||||
m_ppi_clock_signal = ( m_ppi_keyb_clock ) ? 1 : 0;
|
||||
m_pc_kbdc->clock_write_from_mb(m_ppi_clock_signal);
|
||||
m_kbdclk_callback(m_ppi_clock_signal);
|
||||
}
|
||||
|
||||
|
||||
@ -450,7 +450,7 @@ void ibm5160_mb_device::device_add_mconfig(machine_config &config)
|
||||
PIC8259(config, m_pic8259);
|
||||
m_pic8259->out_int_callback().set(FUNC(ibm5160_mb_device::pic_int_w));
|
||||
|
||||
I8255A(config, m_ppi8255, 0);
|
||||
I8255A(config, m_ppi8255);
|
||||
m_ppi8255->in_pa_callback().set(FUNC(ibm5160_mb_device::pc_ppi_porta_r));
|
||||
m_ppi8255->out_pb_callback().set(FUNC(ibm5160_mb_device::pc_ppi_portb_w));
|
||||
m_ppi8255->in_pc_callback().set(FUNC(ibm5160_mb_device::pc_ppi_portc_r));
|
||||
@ -469,10 +469,6 @@ void ibm5160_mb_device::device_add_mconfig(machine_config &config)
|
||||
m_isabus->drq3_callback().set(m_dma8237, FUNC(am9517a_device::dreq3_w));
|
||||
m_isabus->iochck_callback().set(FUNC(ibm5160_mb_device::iochck_w));
|
||||
|
||||
PC_KBDC(config, m_pc_kbdc, 0);
|
||||
m_pc_kbdc->out_clock_cb().set(FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
m_pc_kbdc->out_data_cb().set(FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
|
||||
@ -540,10 +536,11 @@ ibm5160_mb_device::ibm5160_mb_device(
|
||||
, m_ppi8255(*this, "ppi8255")
|
||||
, m_speaker(*this, "speaker")
|
||||
, m_isabus(*this, "isa")
|
||||
, m_pc_kbdc(*this, "pc_kbdc")
|
||||
, m_ram(*this, ":" RAM_TAG)
|
||||
, m_int_callback(*this)
|
||||
, m_nmi_callback(*this)
|
||||
, m_kbdclk_callback(*this)
|
||||
, m_kbddata_callback(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -568,6 +565,8 @@ void ibm5160_mb_device::device_resolve_objects()
|
||||
{
|
||||
m_int_callback.resolve_safe();
|
||||
m_nmi_callback.resolve_safe();
|
||||
m_kbdclk_callback.resolve_safe();
|
||||
m_kbddata_callback.resolve_safe();
|
||||
}
|
||||
|
||||
|
||||
@ -628,8 +627,6 @@ void ibm5150_mb_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
ibm5160_mb_device::device_add_mconfig(config);
|
||||
|
||||
subdevice<pc_kbdc_device>("pc_kbdc")->out_clock_cb().set(FUNC(ibm5150_mb_device::keyboard_clock_w));
|
||||
|
||||
m_ppi8255->out_pb_callback().set(FUNC(ibm5150_mb_device::pc_ppi_portb_w));
|
||||
m_ppi8255->in_pc_callback().set(FUNC(ibm5150_mb_device::pc_ppi_portc_r));
|
||||
|
||||
@ -787,9 +784,9 @@ void ibm5150_mb_device::pc_ppi_portb_w(uint8_t data)
|
||||
m_pic8259->ir1_w(m_ppi_shift_enable);
|
||||
}
|
||||
|
||||
m_pc_kbdc->data_write_from_mb(!m_ppi_shift_enable);
|
||||
m_kbddata_callback(!m_ppi_shift_enable);
|
||||
m_ppi_clock_signal = ( m_ppi_keyb_clock ) ? 1 : 0;
|
||||
m_pc_kbdc->clock_write_from_mb(m_ppi_clock_signal);
|
||||
m_kbdclk_callback(m_ppi_clock_signal);
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
@ -920,8 +917,6 @@ void ec1841_mb_device::device_add_mconfig(machine_config &config)
|
||||
|
||||
m_ppi8255->out_pb_callback().set(FUNC(ec1841_mb_device::pc_ppi_portb_w));
|
||||
m_ppi8255->in_pc_callback().set(FUNC(ec1841_mb_device::pc_ppi_portc_r));
|
||||
|
||||
subdevice<pc_kbdc_device>("pc_kbdc")->out_clock_cb().set(FUNC(ec1841_mb_device::keyboard_clock_w));
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( ec1841_mb )
|
||||
@ -1005,9 +1000,9 @@ void ec1841_mb_device::pc_ppi_portb_w(uint8_t data)
|
||||
m_pic8259->ir1_w(m_ppi_shift_enable);
|
||||
}
|
||||
|
||||
m_pc_kbdc->data_write_from_mb(!m_ppi_shift_enable);
|
||||
m_kbddata_callback(!m_ppi_shift_enable);
|
||||
m_ppi_clock_signal = ( m_ppi_keyb_clock ) ? 1 : 0;
|
||||
m_pc_kbdc->clock_write_from_mb(m_ppi_clock_signal);
|
||||
m_kbdclk_callback(m_ppi_clock_signal);
|
||||
}
|
||||
|
||||
uint8_t ec1841_mb_device::pc_ppi_portc_r()
|
||||
@ -1050,7 +1045,6 @@ void pc_noppi_mb_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
ibm5160_mb_device::device_add_mconfig(config);
|
||||
|
||||
config.device_remove("pc_kbdc");
|
||||
config.device_remove("ppi8255");
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include "bus/isa/isa.h"
|
||||
#include "bus/isa/isa_cards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
|
||||
|
||||
// ======================> ibm5160_mb_device
|
||||
@ -28,7 +27,7 @@ class ibm5160_mb_device : public device_t
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
ibm5160_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
ibm5160_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
// inline configuration
|
||||
template <typename T> void set_cputag(T &&tag)
|
||||
@ -40,6 +39,8 @@ public:
|
||||
|
||||
auto int_callback() { return m_int_callback.bind(); }
|
||||
auto nmi_callback() { return m_nmi_callback.bind(); }
|
||||
auto kbdclk_callback() { return m_kbdclk_callback.bind(); }
|
||||
auto kbddata_callback() { return m_kbddata_callback.bind(); }
|
||||
|
||||
void map(address_map &map);
|
||||
|
||||
@ -55,6 +56,10 @@ public:
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( pic_int_w );
|
||||
|
||||
// interface to the keyboard
|
||||
DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( keyboard_data_w );
|
||||
|
||||
protected:
|
||||
ibm5160_mb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
@ -76,11 +81,12 @@ protected:
|
||||
optional_device<i8255_device> m_ppi8255;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<isa8_device> m_isabus;
|
||||
optional_device<pc_kbdc_device> m_pc_kbdc;
|
||||
required_device<ram_device> m_ram;
|
||||
|
||||
devcb_write_line m_int_callback;
|
||||
devcb_write_line m_nmi_callback;
|
||||
devcb_write_line m_kbdclk_callback;
|
||||
devcb_write_line m_kbddata_callback;
|
||||
|
||||
/* U73 is an LS74 - dual flip flop */
|
||||
/* Q2 is set by OUT1 from the 8253 and goes to DRQ1 on the 8237 */
|
||||
@ -103,10 +109,6 @@ protected:
|
||||
uint8_t m_ppi_shift_register;
|
||||
uint8_t m_ppi_shift_enable;
|
||||
|
||||
// interface to the keyboard
|
||||
DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( keyboard_data_w );
|
||||
|
||||
uint8_t pc_ppi_porta_r();
|
||||
uint8_t pc_ppi_portc_r();
|
||||
void pc_ppi_portb_w(uint8_t data);
|
||||
@ -141,7 +143,7 @@ class ibm5150_mb_device : public ibm5160_mb_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
ibm5150_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
ibm5150_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
|
||||
|
||||
@ -170,7 +172,9 @@ class ec1841_mb_device : public ibm5160_mb_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
ec1841_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
ec1841_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
|
||||
|
||||
protected:
|
||||
ec1841_mb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||
@ -183,8 +187,6 @@ protected:
|
||||
private:
|
||||
uint8_t pc_ppi_portc_r();
|
||||
void pc_ppi_portb_w(uint8_t data);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
|
||||
};
|
||||
|
||||
DECLARE_DEVICE_TYPE(EC1841_MOTHERBOARD, ec1841_mb_device)
|
||||
@ -194,7 +196,7 @@ class ec1840_mb_device : public ec1841_mb_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
ec1840_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
ec1840_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
protected:
|
||||
// optional information overrides
|
||||
@ -214,7 +216,7 @@ class pc_noppi_mb_device : public ibm5160_mb_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
pc_noppi_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
pc_noppi_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
uint8_t pit_out2() { return m_pit_out2; } // helper for near-clones with multifunction ics instead of 8255s
|
||||
|
||||
|
@ -101,13 +101,12 @@ void sis85c496_host_device::device_add_mconfig(machine_config &config)
|
||||
m_keybc->hot_res().set(FUNC(sis85c496_host_device::cpu_reset_w));
|
||||
m_keybc->gate_a20().set(FUNC(sis85c496_host_device::cpu_a20_w));
|
||||
m_keybc->kbd_irq().set("pic8259_master", FUNC(pic8259_device::ir1_w));
|
||||
m_keybc->kbd_clk().set("pc_kbdc", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_keybc->kbd_data().set("pc_kbdc", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
m_keybc->kbd_clk().set(m_pc_kbdc, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_keybc->kbd_data().set(m_pc_kbdc, FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
PC_KBDC(config, m_pc_kbdc, 0);
|
||||
PC_KBDC(config, m_pc_kbdc, pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL);
|
||||
m_pc_kbdc->out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
m_pc_kbdc->out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("pc_kbdc"));
|
||||
|
||||
DS12885(config, m_ds12885);
|
||||
m_ds12885->irq().set(m_pic8259_slave, FUNC(pic8259_device::ir0_w));
|
||||
@ -130,7 +129,7 @@ sis85c496_host_device::sis85c496_host_device(const machine_config &mconfig, cons
|
||||
m_keybc(*this, "keybc"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_ds12885(*this, "rtc"),
|
||||
m_pc_kbdc(*this, "pc_kbdc"),
|
||||
m_pc_kbdc(*this, "kbd"),
|
||||
m_at_spkrdata(0), m_pit_out2(0), m_dma_channel(0), m_cur_eop(false), m_dma_high_byte(0), m_at_speaker(0), m_refresh(false), m_channel_check(0), m_nmi_enabled(0)
|
||||
{
|
||||
}
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include "cpu/i86/i86.h"
|
||||
#include "bus/pc_joy/pc_joy.h"
|
||||
#include "bus/pc_kbd/keyboards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "imagedev/floppy.h"
|
||||
#include "machine/pc_fdc.h"
|
||||
|
||||
@ -18,7 +19,7 @@ class asst128_mb_device : public ibm5150_mb_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
asst128_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
asst128_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0)
|
||||
: ibm5150_mb_device(mconfig, ASST128_MOTHERBOARD, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
@ -109,10 +110,12 @@ void asst128_state::asst128(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &asst128_state::asst128_io);
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
asst128_mb_device &mb(ASST128_MOTHERBOARD(config, "mb", 0));
|
||||
asst128_mb_device &mb(ASST128_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(asst128));
|
||||
|
||||
subdevice<cassette_image_device>("mb:cassette")->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
|
||||
@ -121,7 +124,9 @@ void asst128_state::asst128(machine_config &config)
|
||||
ISA8_SLOT(config, "board0", 0, "mb:isa", pc_isa8_cards, "cga_mc1502", true);
|
||||
ISA8_SLOT(config, "board1", 0, "mb:isa", pc_isa8_cards, "lpt", true);
|
||||
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(asst128_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(asst128_mb_device::keyboard_data_w));
|
||||
|
||||
PC_FDC_XT(config, m_fdc, 0);
|
||||
m_fdc->intrq_wr_callback().set("mb:pic8259", FUNC(pic8259_device::ir6_w));
|
||||
|
@ -1,4 +1,4 @@
|
||||
// license:BSD-3-Clause
|
||||
// license:BSD-3-Clausekbd
|
||||
// copyright-holders:Wilbert Pol, Miodrag Milanovic
|
||||
/***************************************************************************
|
||||
|
||||
@ -113,6 +113,7 @@ Variants: T denotes an active 8.4" display, C a passive 9.5" color display. 3560
|
||||
#include "bus/lpci/pci.h"
|
||||
#include "bus/lpci/vt82c505.h"
|
||||
#include "bus/pc_kbd/keyboards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "cpu/i386/i386.h"
|
||||
#include "cpu/i86/i286.h"
|
||||
#include "machine/at.h"
|
||||
@ -502,17 +503,21 @@ void at_state::ibm5170(machine_config &config)
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown));
|
||||
|
||||
AT_MB(config, m_mb, 0);
|
||||
config.set_maximum_quantum(attotime::from_hz(60));
|
||||
|
||||
m_mb->at_softlists(config);
|
||||
AT_MB(config, m_mb).at_softlists(config);
|
||||
m_mb->kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_mb->kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
// FIXME: determine ISA bus clock
|
||||
ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, "ega", false);
|
||||
ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, "fdc", false);
|
||||
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, "comat", false);
|
||||
ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, "ide", false);
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84));
|
||||
pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, m_ram).set_default_size("1664K").set_extra_options("640K,1024K,2M,4M,8M,15M");
|
||||
@ -559,7 +564,7 @@ void at_vrom_fix_state::ibmps1(machine_config &config)
|
||||
|
||||
subdevice<isa16_slot_device>("isa1")->set_default_option("vga");
|
||||
subdevice<isa16_slot_device>("isa1")->set_fixed(true);
|
||||
subdevice<pc_kbdc_slot_device>("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL);
|
||||
subdevice<pc_kbdc_device>("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL);
|
||||
}
|
||||
|
||||
void at_state::atturbo(machine_config &config)
|
||||
@ -567,7 +572,7 @@ void at_state::atturbo(machine_config &config)
|
||||
ibm5170(config);
|
||||
m_maincpu->set_clock(12'000'000);
|
||||
subdevice<isa16_slot_device>("isa1")->set_default_option("svga_et4k");
|
||||
subdevice<pc_kbdc_slot_device>("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL);
|
||||
subdevice<pc_kbdc_device>("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL);
|
||||
ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false); // FIXME: determine ISA bus clock
|
||||
}
|
||||
|
||||
@ -592,7 +597,7 @@ void at_state::xb42639(machine_config &config)
|
||||
void at_state::k286i(machine_config &config)
|
||||
{
|
||||
ibm5162(config);
|
||||
subdevice<pc_kbdc_slot_device>("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL);
|
||||
subdevice<pc_kbdc_device>("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL);
|
||||
ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false); // FIXME: determine ISA bus clock
|
||||
ISA16_SLOT(config, "isa6", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa7", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
@ -606,10 +611,12 @@ void at_state::at386(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &at_state::at32_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
AT_MB(config, m_mb, 0).at_softlists(config);
|
||||
|
||||
config.set_maximum_quantum(attotime::from_hz(60));
|
||||
|
||||
AT_MB(config, m_mb).at_softlists(config);
|
||||
m_mb->kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_mb->kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
// on-board devices
|
||||
@ -623,7 +630,10 @@ void at_state::at386(machine_config &config)
|
||||
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, m_ram).set_default_size("1664K").set_extra_options("2M,4M,8M,15M,16M,32M,64M");
|
||||
@ -642,10 +652,12 @@ void at_state::at486(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &at_state::at32_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
AT_MB(config, m_mb, 0).at_softlists(config);
|
||||
|
||||
config.set_maximum_quantum(attotime::from_hz(60));
|
||||
|
||||
AT_MB(config, m_mb).at_softlists(config);
|
||||
m_mb->kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_mb->kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
// on-board devices
|
||||
@ -659,7 +671,10 @@ void at_state::at486(machine_config &config)
|
||||
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, m_ram).set_default_size("4M").set_extra_options("1M,2M,8M,16M,20M,32M,64M,128M");
|
||||
@ -764,13 +779,12 @@ void megapc_state::megapc(machine_config &config)
|
||||
keybc.hot_res().set("wd7600", FUNC(wd7600_device::kbrst_w));
|
||||
keybc.gate_a20().set("wd7600", FUNC(wd7600_device::gatea20_w));
|
||||
keybc.kbd_irq().set("wd7600", FUNC(wd7600_device::irq01_w));
|
||||
keybc.kbd_clk().set("pc_kbdc", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
keybc.kbd_data().set("pc_kbdc", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
keybc.kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
keybc.kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "pc_kbdc", 0));
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("pc_kbdc"));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, m_ram).set_default_size("4M").set_extra_options("1M,2M,8M,15M,16M");
|
||||
@ -802,10 +816,12 @@ void at_vrom_fix_state::megapcpla(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &at_vrom_fix_state::at32_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
AT_MB(config, m_mb, 0).at_softlists(config);
|
||||
|
||||
config.set_maximum_quantum(attotime::from_hz(60));
|
||||
|
||||
AT_MB(config, m_mb).at_softlists(config);
|
||||
m_mb->kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_mb->kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
// on board devices
|
||||
@ -819,7 +835,10 @@ void at_vrom_fix_state::megapcpla(machine_config &config)
|
||||
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, m_ram).set_default_size("4M").set_extra_options("2M,8M,15M,16M,32M,64M,128M,256M");
|
||||
@ -835,9 +854,12 @@ void at_state::ficpio2(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &at_state::ficpio_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
AT_MB(config, m_mb, 0).at_softlists(config);
|
||||
config.set_maximum_quantum(attotime::from_hz(60));
|
||||
|
||||
AT_MB(config, m_mb).at_softlists(config);
|
||||
m_mb->kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_mb->kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
ds12885_device &rtc(DS12885(config.replace(), "mb:rtc"));
|
||||
rtc.irq().set("mb:pic8259_slave", FUNC(pic8259_device::ir0_w)); // this is in :mb
|
||||
rtc.set_century_index(0x32);
|
||||
@ -860,7 +882,10 @@ void at_state::ficpio2(machine_config &config)
|
||||
ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
vt82c496_device &chipset(VT82C496(config, "chipset"));
|
||||
chipset.set_cputag(m_maincpu);
|
||||
@ -878,9 +903,12 @@ void at_state::comportiii(machine_config &config)
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown));
|
||||
|
||||
AT_MB(config, m_mb, 0).at_softlists(config);
|
||||
config.set_maximum_quantum(attotime::from_hz(60));
|
||||
|
||||
AT_MB(config, m_mb).at_softlists(config);
|
||||
m_mb->kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_mb->kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
// FIXME: determine ISA bus clock
|
||||
ISA16_SLOT(config, "board1", 0, "mb:isabus", pc_isa16_cards, "fdc", true).set_option_machine_config("fdc", cfg_single_1200K);
|
||||
ISA16_SLOT(config, "board2", 0, "mb:isabus", pc_isa16_cards, "comat", true);
|
||||
@ -889,7 +917,9 @@ void at_state::comportiii(machine_config &config)
|
||||
ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84));
|
||||
pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, m_ram).set_default_size("640K").set_extra_options("1152K,1664K,2176K,2688K,4736K,6784K");
|
||||
@ -955,10 +985,12 @@ void at_state::pg750(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &at_state::at32_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
AT_MB(config, m_mb, 0).at_softlists(config);
|
||||
|
||||
config.set_maximum_quantum(attotime::from_hz(60));
|
||||
|
||||
AT_MB(config, m_mb).at_softlists(config);
|
||||
m_mb->kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_mb->kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
ds12885_device &rtc(DS12885(config.replace(), "mb:rtc")); // TODO: move this into the cs8221
|
||||
@ -975,7 +1007,10 @@ void at_state::pg750(machine_config &config)
|
||||
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, m_ram).set_default_size("3712K");
|
||||
|
@ -137,13 +137,12 @@ void ct486_state::ct486(machine_config &config)
|
||||
keybc.hot_res().set("cs4031", FUNC(cs4031_device::kbrst_w));
|
||||
keybc.gate_a20().set("cs4031", FUNC(cs4031_device::gatea20_w));
|
||||
keybc.kbd_irq().set("cs4031", FUNC(cs4031_device::irq01_w));
|
||||
keybc.kbd_clk().set("pc_kbdc", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
keybc.kbd_data().set("pc_kbdc", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
keybc.kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
keybc.kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "pc_kbdc", 0));
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
pc_kbdc.out_clock_cb().set(keybc, FUNC(at_kbc_device_base::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set(keybc, FUNC(at_kbc_device_base::kbd_data_w));
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(&pc_kbdc);
|
||||
|
||||
ISA16(config, m_isabus, 0);
|
||||
m_isabus->set_memspace(m_maincpu, AS_PROGRAM);
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "machine/genpc.h"
|
||||
#include "bus/isa/xsu_cards.h"
|
||||
#include "bus/pc_kbd/keyboards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "cpu/i86/i86.h"
|
||||
#include "machine/ram.h"
|
||||
#include "softlist.h"
|
||||
@ -231,10 +232,12 @@ void ec184x_state::ec1840(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &ec184x_state::ec1840_io);
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ec1840_mb_device &mb(EC1840_MOTHERBOARD(config, "mb", 0));
|
||||
ec1840_mb_device &mb(EC1840_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
// FIXME: determine ISA bus clock
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", ec184x_isa8_cards, "ec1840.0002", false);
|
||||
@ -246,7 +249,9 @@ void ec184x_state::ec1840(machine_config &config)
|
||||
|
||||
SOFTWARE_LIST(config, "flop_list").set_original("ec1841");
|
||||
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_EC_1841).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_EC_1841));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ec1840_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ec1840_mb_device::keyboard_data_w));
|
||||
|
||||
RAM(config, m_ram).set_default_size("640K").set_extra_options("128K,256K,384K,512K");
|
||||
}
|
||||
@ -260,10 +265,12 @@ void ec184x_state::ec1841(machine_config &config)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(ec184x_state, ec1841)
|
||||
|
||||
ec1841_mb_device &mb(EC1841_MOTHERBOARD(config, "mb", 0));
|
||||
ec1841_mb_device &mb(EC1841_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
// FIXME: determine ISA bus clock
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", ec184x_isa8_cards, "ec1841.0002", false); // cga
|
||||
@ -275,7 +282,9 @@ void ec184x_state::ec1841(machine_config &config)
|
||||
|
||||
SOFTWARE_LIST(config, "flop_list").set_original("ec1841");
|
||||
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_EC_1841).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_EC_1841));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ec1841_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ec1841_mb_device::keyboard_data_w));
|
||||
|
||||
RAM(config, m_ram).set_default_size("640K").set_extra_options("512K,1024K,1576K,2048K");
|
||||
}
|
||||
@ -288,10 +297,12 @@ void ec184x_state::ec1847(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &ec184x_state::ec1847_io);
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
// FIXME: determine ISA bus clock
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "hercules", false); // cga, ega and vga(?) are options too
|
||||
@ -301,7 +312,9 @@ void ec184x_state::ec1847(machine_config &config)
|
||||
ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
|
||||
ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
|
||||
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
RAM(config, m_ram).set_default_size("640K");
|
||||
}
|
||||
|
@ -248,7 +248,7 @@ public:
|
||||
m_pal(*this, GENEVE_PAL_TAG),
|
||||
m_joyport(*this, TI_JOYPORT_TAG),
|
||||
m_colorbus(*this, COLORBUS_TAG),
|
||||
m_kbdconn(*this, GENEVE_KEYBOARD_CONN_TAG),
|
||||
m_kbdconn(*this, "kbd"),
|
||||
m_peribox(*this, TI_PERIBOX_TAG),
|
||||
m_pfm512(*this, GENEVE_PFM512_TAG),
|
||||
m_pfm512a(*this, GENEVE_PFM512A_TAG),
|
||||
@ -1132,6 +1132,8 @@ void geneve_state::geneve(machine_config &config)
|
||||
// Gate array
|
||||
GENEVE_GATE_ARRAY(config, m_gatearray, 0);
|
||||
m_gatearray->kbdint_cb().set(FUNC(geneve_state::keyboard_interrupt));
|
||||
m_gatearray->kbdclk_cb().set(m_kbdconn, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_gatearray->kbddata_cb().set(m_kbdconn, FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
// Peripheral expansion box (Geneve composition)
|
||||
TI99_PERIBOX_GEN(config, m_peribox, 0);
|
||||
@ -1148,6 +1150,8 @@ void geneve_state::genmod(machine_config &config)
|
||||
// Gate Array
|
||||
GENEVE_GATE_ARRAY(config, m_gatearray, 0);
|
||||
m_gatearray->kbdint_cb().set(FUNC(geneve_state::keyboard_interrupt));
|
||||
m_gatearray->kbdclk_cb().set(m_kbdconn, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_gatearray->kbddata_cb().set(m_kbdconn, FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
// Peripheral expansion box (Geneve composition with Genmod and plugged-in Memex)
|
||||
TI99_PERIBOX_GENMOD(config, m_peribox, 0);
|
||||
@ -1212,8 +1216,7 @@ void geneve_state::geneve_common(machine_config &config)
|
||||
m_sound->ready_cb().set(FUNC(geneve_state::sndready));
|
||||
|
||||
// User interface devices: PC-style keyboard, joystick port, mouse connector
|
||||
PC_KBDC(config, m_kbdconn, 0);
|
||||
PC_KBDC_SLOT(config, "kbd", geneve_xt_keyboards, STR_KBD_GENEVE_XT_101_HLE).set_pc_kbdc_slot(m_kbdconn);
|
||||
PC_KBDC(config, m_kbdconn, geneve_xt_keyboards, STR_KBD_GENEVE_XT_101_HLE);
|
||||
m_kbdconn->out_clock_cb().set(GENEVE_GATE_ARRAY_TAG, FUNC(bus::ti99::internal::geneve_gate_array_device::kbdclk));
|
||||
m_kbdconn->out_data_cb().set(GENEVE_GATE_ARRAY_TAG, FUNC(bus::ti99::internal::geneve_gate_array_device::kbddata));
|
||||
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "cpu/nec/nec.h"
|
||||
#include "cpu/i86/i86.h"
|
||||
#include "bus/pc_kbd/keyboards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "softlist.h"
|
||||
|
||||
class genpc_state : public driver_device
|
||||
@ -63,10 +64,12 @@ void genpc_state::pcmda(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &genpc_state::pc8_io);
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "mda", false); // FIXME: determine ISA bus clock
|
||||
ISA8_SLOT(config, "isa2", 0, "mb:isa", pc_isa8_cards, "com", false);
|
||||
@ -76,7 +79,9 @@ void genpc_state::pcmda(machine_config &config)
|
||||
ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
|
@ -84,8 +84,6 @@
|
||||
#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__)
|
||||
#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__)
|
||||
|
||||
#define KBDC_TAG "pc_kbdc"
|
||||
|
||||
|
||||
class hp95lx_state : public driver_device
|
||||
{
|
||||
@ -741,10 +739,9 @@ void hp95lx_state::hp95lx(machine_config &config)
|
||||
|
||||
ISA8_SLOT(config, "board0", 0, "isa", pc_isa8_cards, "com", true);
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, KBDC_TAG, 0));
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270));
|
||||
pc_kbdc.out_clock_cb().set(FUNC(hp95lx_state::keyboard_clock_w));
|
||||
pc_kbdc.out_data_cb().set(FUNC(hp95lx_state::keyboard_data_w));
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(&pc_kbdc);
|
||||
|
||||
NVRAM(config, "nvram2", nvram_device::DEFAULT_ALL_0); // RAM
|
||||
NVRAM(config, "nvram3", nvram_device::DEFAULT_ALL_0); // card slot
|
||||
|
@ -259,6 +259,7 @@ XT U44 IBM.bin: IBM 5160 PC/XT Bank-selection decoding ROM (256x4 bit). Not mapp
|
||||
#include "cpu/i86/i86.h"
|
||||
#include "machine/ram.h"
|
||||
#include "bus/pc_kbd/keyboards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "machine/genpc.h"
|
||||
#include "softlist.h"
|
||||
|
||||
@ -303,10 +304,12 @@ void ibmpc_state::ibm5150(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &ibmpc_state::pc8_io);
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5150_mb_device &mb(IBM5150_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5150_mb_device &mb(IBM5150_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(cga));
|
||||
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false); // FIXME: determine ISA bus clock
|
||||
@ -316,7 +319,9 @@ void ibmpc_state::ibm5150(machine_config &config)
|
||||
ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5150_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5150_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
@ -344,10 +349,12 @@ void ibmpc_state::ibm5160(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &ibmpc_state::pc8_io);
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(cga));
|
||||
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false); // FIXME: determine ISA bus clock
|
||||
@ -360,7 +367,9 @@ void ibmpc_state::ibm5160(machine_config &config)
|
||||
ISA8_SLOT(config, "isa8", 0, "mb:isa", pc_isa8_cards, nullptr, false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
|
@ -117,13 +117,11 @@ void indiana_state::indiana(machine_config &config)
|
||||
ISA16_SLOT(config, "isa3", 0, ISABUS_TAG, indiana_isa_cards, "comat", false);
|
||||
ISA16_SLOT(config, "isa4", 0, ISABUS_TAG, indiana_isa_cards, "ide", false);
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "pc_kbdc", 0));
|
||||
pc_kbdc.out_data_cb().set("mfp", FUNC(mc68901_device::i0_w));
|
||||
pc_kbdc.out_data_cb().append("mfp", FUNC(mc68901_device::si_w));
|
||||
pc_kbdc.out_clock_cb().set("mfp", FUNC(mc68901_device::i1_w));
|
||||
pc_kbdc.out_clock_cb().append("mfp", FUNC(mc68901_device::rc_w));
|
||||
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84).set_pc_kbdc_slot(subdevice("pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84));
|
||||
kbd.out_data_cb().set("mfp", FUNC(mc68901_device::i0_w));
|
||||
kbd.out_data_cb().append("mfp", FUNC(mc68901_device::si_w));
|
||||
kbd.out_clock_cb().set("mfp", FUNC(mc68901_device::i1_w));
|
||||
kbd.out_clock_cb().append("mfp", FUNC(mc68901_device::rc_w));
|
||||
|
||||
mc68901_device &mfp(MC68901(config, "mfp", 16_MHz_XTAL / 4));
|
||||
mfp.set_timer_clock(16_MHz_XTAL / 16);
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "cpu/nec/nec.h"
|
||||
#include "bus/isa/xsu_cards.h"
|
||||
#include "bus/pc_kbd/keyboards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "machine/pc_lpt.h"
|
||||
#include "machine/ram.h"
|
||||
#include "softlist.h"
|
||||
@ -75,10 +76,12 @@ void iskr103x_state::iskr1030m(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &iskr103x_state::iskr1031_io);
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(iskr1030m));
|
||||
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", iskr103x_isa8_cards, "cga_iskr1030m", false); // FIXME: determine IS bus clock
|
||||
@ -88,8 +91,10 @@ void iskr103x_state::iskr1030m(machine_config &config)
|
||||
ISA8_SLOT(config, "isa5", 0, "mb:isa", iskr103x_isa8_cards, nullptr, false);
|
||||
ISA8_SLOT(config, "isa6", 0, "mb:isa", iskr103x_isa8_cards, nullptr, false);
|
||||
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_EC_1841).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
// PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_ISKR_1030).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_EC_1841));
|
||||
// pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_ISKR_1030));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
}
|
||||
|
@ -348,23 +348,15 @@ void jazz_state::jazz(machine_config &config)
|
||||
AMD_28F020(config, m_flash);
|
||||
|
||||
// pc keyboard connector
|
||||
pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd_con", 0));
|
||||
pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
kbd_con.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_clk_w));
|
||||
kbd_con.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
// keyboard port
|
||||
pc_kbdc_slot_device &kbd(PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
kbd.set_pc_kbdc_slot(&kbd_con);
|
||||
|
||||
// auxiliary connector
|
||||
pc_kbdc_device &aux_con(PC_KBDC(config, "aux_con", 0));
|
||||
pc_kbdc_device &aux_con(PC_KBDC(config, "aux", ps2_mice, STR_HLE_PS2_MOUSE));
|
||||
aux_con.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::aux_clk_w));
|
||||
aux_con.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::aux_data_w));
|
||||
|
||||
// auxiliary port
|
||||
pc_kbdc_slot_device &aux(PC_KBDC_SLOT(config, "aux", ps2_mice, STR_HLE_PS2_MOUSE));
|
||||
aux.set_pc_kbdc_slot(&aux_con);
|
||||
|
||||
// keyboard controller
|
||||
PS2_KEYBOARD_CONTROLLER(config, m_kbdc, 12_MHz_XTAL);
|
||||
// FIXME: reset is probably routed through the MCT-ADR
|
||||
|
@ -182,14 +182,10 @@ void jensen_state::jensen(machine_config &config)
|
||||
INTEL_E28F008SA(config, m_feprom[1]);
|
||||
|
||||
// keyboard connector
|
||||
pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd_con", 0));
|
||||
[[maybe_unused]] pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
//kbd_con.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_clk_w));
|
||||
//kbd_con.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
// keyboard port
|
||||
pc_kbdc_slot_device &kbd(PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
kbd.set_pc_kbdc_slot(&kbd_con);
|
||||
|
||||
// TODO: VL82C106 (rtc, dual serial, parallel, dual ps/2)
|
||||
// TODO: 18.432 MHz crystal
|
||||
#if 0
|
||||
|
@ -326,7 +326,7 @@ private:
|
||||
required_device<mc146818_device> m_rtc;
|
||||
required_device<z8038_device> m_fio;
|
||||
required_device<at_keyboard_controller_device> m_kbdc;
|
||||
required_device<pc_kbdc_slot_device> m_kbd;
|
||||
required_device<pc_kbdc_device> m_kbd;
|
||||
required_device<z80scc_device> m_scc;
|
||||
required_device_array<rs232_port_device, 2> m_tty;
|
||||
required_device<wd37c65c_device> m_fdc;
|
||||
@ -410,7 +410,7 @@ private:
|
||||
required_device<m48t02_device> m_rtc;
|
||||
required_device<i82072_device> m_fdc;
|
||||
required_device<at_keyboard_controller_device> m_kbdc;
|
||||
required_device<pc_kbdc_slot_device> m_kbd;
|
||||
required_device<pc_kbdc_device> m_kbd;
|
||||
required_device<speaker_sound_device> m_buzzer;
|
||||
|
||||
// optional colour video board
|
||||
@ -775,19 +775,15 @@ void rx2030_state::rx2030(machine_config &config)
|
||||
m_fio->out_int_cb<1>().set_inputline(m_iop, INPUT_LINE_IRQ4);
|
||||
|
||||
// keyboard connector
|
||||
pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd_con", 0));
|
||||
kbd_con.out_clock_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
kbd_con.out_data_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
// keyboard port
|
||||
PC_KBDC_SLOT(config, m_kbd, pc_at_keyboards, nullptr);
|
||||
m_kbd->set_pc_kbdc_slot(&kbd_con);
|
||||
PC_KBDC(config, m_kbd, pc_at_keyboards, nullptr);
|
||||
m_kbd->out_clock_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
m_kbd->out_data_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
// keyboard controller
|
||||
AT_KEYBOARD_CONTROLLER(config, m_kbdc, 12_MHz_XTAL);
|
||||
//m_kbdc->hot_res().set_inputline(m_maincpu, INPUT_LINE_RESET);
|
||||
m_kbdc->kbd_clk().set(kbd_con, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_kbdc->kbd_data().set(kbd_con, FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
m_kbdc->kbd_clk().set(m_kbd, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_kbdc->kbd_data().set(m_kbd, FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
m_kbdc->set_default_bios_tag("award15");
|
||||
|
||||
SCC85C30(config, m_scc, 1.8432_MHz_XTAL);
|
||||
@ -1088,18 +1084,14 @@ void rx3230_state::rx3230(machine_config &config)
|
||||
FLOPPY_CONNECTOR(config, "fdc:0", "35hd", FLOPPY_35_HD, true, mips_floppy_formats).enable_sound(false);
|
||||
|
||||
// keyboard connector
|
||||
pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd_con", 0));
|
||||
kbd_con.out_clock_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
kbd_con.out_data_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
// keyboard port
|
||||
PC_KBDC_SLOT(config, m_kbd, pc_at_keyboards, nullptr);
|
||||
m_kbd->set_pc_kbdc_slot(&kbd_con);
|
||||
PC_KBDC(config, m_kbd, pc_at_keyboards, nullptr);
|
||||
m_kbd->out_clock_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
m_kbd->out_data_cb().set(m_kbdc, FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
// keyboard controller
|
||||
AT_KEYBOARD_CONTROLLER(config, m_kbdc, 12_MHz_XTAL); // TODO: confirm
|
||||
m_kbdc->kbd_clk().set(kbd_con, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_kbdc->kbd_data().set(kbd_con, FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
m_kbdc->kbd_clk().set(m_kbd, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_kbdc->kbd_data().set(m_kbd, FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
//m_kbdc->kbd_irq().set(FUNC(rx3230_state::irq_w<INT_KBD>));
|
||||
|
||||
// buzzer
|
||||
|
@ -234,7 +234,7 @@ void mtxl_state::at486(machine_config &config)
|
||||
#ifndef REAL_PCI_CHIPSET
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
AT_MB(config, "mb", 0);
|
||||
AT_MB(config, "mb");
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
// on board devices
|
||||
@ -255,7 +255,6 @@ void mtxl_state::at486(machine_config &config)
|
||||
|
||||
// remove the keyboard controller and use the HLE one which allow keys to be unmapped
|
||||
config.device_remove("mb:keybc");
|
||||
config.device_remove("mb:pc_kbdc");
|
||||
kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
|
||||
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
|
||||
kbdc.system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
|
||||
@ -294,7 +293,7 @@ void mtxl_state::at486hd(machine_config &config)
|
||||
#ifndef REAL_PCI_CHIPSET
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
AT_MB(config, "mb", 0);
|
||||
AT_MB(config, "mb");
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
// on board devices
|
||||
@ -315,7 +314,6 @@ void mtxl_state::at486hd(machine_config &config)
|
||||
|
||||
// remove the keyboard controller and use the HLE one which allow keys to be unmapped
|
||||
config.device_remove("mb:keybc");
|
||||
config.device_remove("mb:pc_kbdc");
|
||||
kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
|
||||
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
|
||||
kbdc.system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
|
||||
|
@ -92,7 +92,7 @@ public:
|
||||
, m_vram(*this, "vram")
|
||||
, m_duart(*this, "duart")
|
||||
, m_lance(*this, "lance")
|
||||
, m_kbd_con(*this, "kbd_con")
|
||||
, m_kbd_con(*this, "kbd")
|
||||
, m_serial(*this, "serial%u", 0U)
|
||||
, m_eeprom(*this, "eeprom")
|
||||
, m_screen(*this, "screen")
|
||||
@ -601,7 +601,7 @@ void ncd68k_state::common(machine_config &config)
|
||||
m_mcu->portb_r().set(FUNC(ncd68k_state::mcu_portb_r));
|
||||
|
||||
// keyboard connector
|
||||
PC_KBDC(config, m_kbd_con, 0);
|
||||
PC_KBDC(config, m_kbd_con, pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL);
|
||||
m_kbd_con->out_clock_cb().set_inputline(m_mcu, M6805_IRQ_LINE).invert();
|
||||
m_kbd_con->out_data_cb().set(
|
||||
[this] (int state)
|
||||
@ -612,10 +612,6 @@ void ncd68k_state::common(machine_config &config)
|
||||
m_porta_in &= ~0x01;
|
||||
});
|
||||
|
||||
// keyboard port
|
||||
pc_kbdc_slot_device &kbd(PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
kbd.set_pc_kbdc_slot(m_kbd_con);
|
||||
|
||||
// mouse and auxiliary ports
|
||||
RS232_PORT(config, m_serial[0],
|
||||
[] (device_slot_interface &device)
|
||||
|
@ -30,6 +30,7 @@ Driver file for IBM PC, IBM PC XT, and related machines.
|
||||
#include "bus/isa/isa.h"
|
||||
#include "bus/isa/isa_cards.h"
|
||||
#include "bus/pc_kbd/keyboards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "softlist.h"
|
||||
|
||||
/******************************************************* Generic PC with CGA ***/
|
||||
@ -206,10 +207,12 @@ void pc_state::pccga(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &pc_state::pc8_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
|
||||
|
||||
// FIXME: determine ISA bus clock
|
||||
@ -220,7 +223,9 @@ void pc_state::pccga(machine_config &config)
|
||||
ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
@ -676,10 +681,12 @@ void pc_state::ibm5550(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &pc_state::ibm5550_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
|
||||
|
||||
// FIXME: determine ISA bus clock
|
||||
@ -689,7 +696,9 @@ void pc_state::ibm5550(machine_config &config)
|
||||
ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
@ -981,10 +990,12 @@ void pc_state::poisk2(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &pc_state::pc16_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
|
||||
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga_poisk2", false); // FIXME: determine ISA bus clock
|
||||
@ -993,7 +1004,9 @@ void pc_state::poisk2(machine_config &config)
|
||||
ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
@ -1079,10 +1092,12 @@ void pc_state::iskr3104(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &pc_state::pc16_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(iskr3104));
|
||||
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "ega", false).set_option_default_bios("ega", "iskr3104"); // FIXME: determine ISA bus clock
|
||||
@ -1091,7 +1106,9 @@ void pc_state::iskr3104(machine_config &config)
|
||||
ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
@ -1162,10 +1179,12 @@ void pc_state::siemens(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &pc_state::pc8_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5150_mb_device &mb(IBM5150_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5150_mb_device &mb(IBM5150_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(siemens));
|
||||
|
||||
// FIXME: determine ISA bus clock
|
||||
@ -1177,7 +1196,9 @@ void pc_state::siemens(machine_config &config)
|
||||
ISA8_SLOT(config, "isa6", 0, "mb:isa", pc_isa8_cards, nullptr, false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5150_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5150_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
@ -1334,10 +1355,12 @@ void pc_state::zenith(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &pc_state::pc8_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5150_mb_device &mb(IBM5150_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5150_mb_device &mb(IBM5150_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
|
||||
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false); // FIXME: determine ISA bus clock
|
||||
@ -1346,7 +1369,9 @@ void pc_state::zenith(machine_config &config)
|
||||
ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5150_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5150_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("128K, 256K, 512K");
|
||||
@ -1427,8 +1452,11 @@ SW1 and SW2 DIP switch blocks
|
||||
void pc_state::cadd810(machine_config &config)
|
||||
{
|
||||
pccga(config);
|
||||
config.device_remove("kbd");
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_101).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
|
||||
auto &kbd(*subdevice<pc_kbdc_device>("kbd"));
|
||||
kbd.option_reset();
|
||||
pc_at_keyboards(kbd);
|
||||
kbd.set_default_option(STR_KBD_IBM_PC_AT_101);
|
||||
}
|
||||
|
||||
ROM_START( cadd810 )
|
||||
@ -1500,10 +1528,12 @@ void pc_state::juko16(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &pc_state::pc16_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
|
||||
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "cga", false); // FIXME: determine ISA bus clock
|
||||
@ -1512,7 +1542,9 @@ void pc_state::juko16(machine_config &config)
|
||||
ISA8_SLOT(config, "isa4", 0, "mb:isa", pc_isa8_cards, "com", false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("64K, 128K, 256K, 512K");
|
||||
@ -1840,10 +1872,12 @@ void pc_state::alphatp50(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &pc_state::pc16_io);
|
||||
downcast<i80186_cpu_device &>(*m_maincpu).set_irmx_irq_ack("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int0_w));
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
|
||||
|
||||
// FIXME: determine ISA bus clock
|
||||
@ -1854,7 +1888,9 @@ void pc_state::alphatp50(machine_config &config)
|
||||
ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, nullptr, false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("512K").set_extra_options("128K, 256K, 384K");
|
||||
@ -2001,10 +2037,12 @@ void pc_state::modernxt(machine_config &config) // this is just to load the ROMs
|
||||
maincpu.set_addrmap(AS_IO, &pc_state::pc8_io);
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
mb.set_input_default(DEVICE_INPUT_DEFAULTS_NAME(pccga));
|
||||
|
||||
ISA8_SLOT(config, "isa1", 0, "mb:isa", pc_isa8_cards, "vga", false); // FIXME: determine ISA bus clock
|
||||
@ -2014,7 +2052,9 @@ void pc_state::modernxt(machine_config &config) // this is just to load the ROMs
|
||||
ISA8_SLOT(config, "isa5", 0, "mb:isa", pc_isa8_cards, "xtide", false);
|
||||
|
||||
/* keyboard */
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("640K").set_extra_options("512K");
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "machine/ram.h"
|
||||
#include "bus/isa/isa_cards.h"
|
||||
#include "bus/pc_kbd/keyboards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "softlist_dev.h"
|
||||
|
||||
// According to http://nerdlypleasures.blogspot.com/2014/04/the-original-8-bit-ide-interface.html
|
||||
@ -99,7 +100,9 @@ void ps2_state::ps2m30286(machine_config &config)
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown));
|
||||
|
||||
AT_MB(config, m_mb, 0);
|
||||
AT_MB(config, m_mb);
|
||||
m_mb->kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_mb->kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
config.set_maximum_quantum(attotime::from_hz(60));
|
||||
|
||||
@ -110,7 +113,10 @@ void ps2_state::ps2m30286(machine_config &config)
|
||||
ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, "fdc", false);
|
||||
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, "ide", false);
|
||||
ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, "comat", false);
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84));
|
||||
kbd.out_clock_cb().set(m_mb, FUNC(at_mb_device::kbd_clk_w));
|
||||
kbd.out_data_cb().set(m_mb, FUNC(at_mb_device::kbd_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("1664K").set_extra_options("2M,4M,8M,15M");
|
||||
@ -123,7 +129,9 @@ void ps2_state::ps2386(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_IO, &ps2_state::ps2_32_io);
|
||||
m_maincpu->set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
AT_MB(config, m_mb, 0);
|
||||
AT_MB(config, m_mb);
|
||||
m_mb->kbd_clk().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
m_mb->kbd_data().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
config.set_maximum_quantum(attotime::from_hz(60));
|
||||
at_softlists(config);
|
||||
@ -139,7 +147,10 @@ void ps2_state::ps2386(machine_config &config)
|
||||
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
|
||||
PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
kbd.out_clock_cb().set(m_mb, FUNC(at_mb_device::kbd_clk_w));
|
||||
kbd.out_data_cb().set(m_mb, FUNC(at_mb_device::kbd_data_w));
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("1664K").set_extra_options("2M,4M,8M,15M,16M,32M,64M,128M,256M");
|
||||
|
@ -85,7 +85,6 @@ TODO: 68230 device
|
||||
#define DUART2_TAG "duart2"
|
||||
#define TIMEKEEPER_TAG "timekpr"
|
||||
#define ISABUS_TAG "isa"
|
||||
#define KBDC_TAG "pc_kbdc"
|
||||
#define SPEAKER_TAG "speaker"
|
||||
#define WDFDC_TAG "wdfdc"
|
||||
|
||||
@ -412,10 +411,9 @@ void pt68k4_state::pt68k2(machine_config &config)
|
||||
|
||||
MC68681(config, m_duart2, 3.6864_MHz_XTAL);
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, KBDC_TAG, 0));
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
pc_kbdc.out_clock_cb().set(FUNC(pt68k4_state::keyboard_clock_w));
|
||||
pc_kbdc.out_data_cb().set(FUNC(pt68k4_state::keyboard_data_w));
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(&pc_kbdc);
|
||||
|
||||
M48T02(config, TIMEKEEPER_TAG, 0);
|
||||
|
||||
@ -453,10 +451,9 @@ void pt68k4_state::pt68k4(machine_config &config)
|
||||
|
||||
MC68681(config, m_duart2, XTAL(16'000'000) / 4);
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, KBDC_TAG, 0));
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83));
|
||||
pc_kbdc.out_clock_cb().set(FUNC(pt68k4_state::keyboard_clock_w));
|
||||
pc_kbdc.out_data_cb().set(FUNC(pt68k4_state::keyboard_data_w));
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83).set_pc_kbdc_slot(&pc_kbdc);
|
||||
|
||||
M48T02(config, TIMEKEEPER_TAG, 0);
|
||||
|
||||
|
@ -163,23 +163,16 @@ void riscpc_state::base_config(machine_config &config)
|
||||
{
|
||||
I2C_24C02(config, m_i2cmem);
|
||||
|
||||
pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd_con", 0));
|
||||
// TODO: verify type
|
||||
pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_101));
|
||||
kbd_con.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_clk_w));
|
||||
kbd_con.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
// TODO: verify type
|
||||
pc_kbdc_slot_device &kbd(PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_101));
|
||||
kbd.set_pc_kbdc_slot(&kbd_con);
|
||||
|
||||
// auxiliary connector
|
||||
// pc_kbdc_device &aux_con(PC_KBDC(config, "aux_con", 0));
|
||||
// pc_kbdc_device &aux_con(PC_KBDC(config, "aux", ps2_mice, STR_HLE_PS2_MOUSE));
|
||||
// aux_con.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::aux_clk_w));
|
||||
// aux_con.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::aux_data_w));
|
||||
|
||||
// auxiliary port
|
||||
// pc_kbdc_slot_device &aux(PC_KBDC_SLOT(config, "aux", ps2_mice, STR_HLE_PS2_MOUSE));
|
||||
// aux.set_pc_kbdc_slot(&aux_con);
|
||||
|
||||
PS2_KEYBOARD_CONTROLLER(config, m_kbdc, 12_MHz_XTAL);
|
||||
m_kbdc->hot_res().set(m_iomd, FUNC(arm_iomd_device::keyboard_reset));
|
||||
m_kbdc->kbd_clk().set(kbd_con, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
|
@ -41,6 +41,7 @@
|
||||
#include "machine/genpc.h"
|
||||
#include "bus/isa/isa_cards.h"
|
||||
#include "bus/pc_kbd/keyboards.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "cpu/i86/i86.h"
|
||||
#include "machine/bankdev.h"
|
||||
#include "machine/ram.h"
|
||||
@ -265,10 +266,12 @@ void tosh1000_state::tosh1000(machine_config &config)
|
||||
|
||||
ADDRESS_MAP_BANK(config, "bankdev").set_map(&tosh1000_state::tosh1000_romdos).set_options(ENDIANNESS_LITTLE, 8, 20, 0x10000);
|
||||
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb", 0));
|
||||
ibm5160_mb_device &mb(IBM5160_MOTHERBOARD(config, "mb"));
|
||||
mb.set_cputag(m_maincpu);
|
||||
mb.int_callback().set_inputline(m_maincpu, 0);
|
||||
mb.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
|
||||
mb.kbdclk_callback().set("kbd", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
mb.kbddata_callback().set("kbd", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
TC8521(config, "rtc", XTAL(32'768));
|
||||
|
||||
@ -282,8 +285,10 @@ void tosh1000_state::tosh1000(machine_config &config)
|
||||
|
||||
// SOFTWARE_LIST(config, "flop_list").set_original("tosh1000");
|
||||
|
||||
// uses a 80C50 instead of 8042 for KBDC
|
||||
PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(subdevice("mb:pc_kbdc"));
|
||||
// TODO: uses a 80C50 instead of 8042 for KBDC
|
||||
pc_kbdc_device &kbd(PC_KBDC(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270));
|
||||
kbd.out_clock_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_clock_w));
|
||||
kbd.out_data_cb().set("mb", FUNC(ibm5160_mb_device::keyboard_data_w));
|
||||
|
||||
RAM(config, RAM_TAG).set_default_size("512K");
|
||||
|
||||
|
@ -903,10 +903,9 @@ void vis_state::vis(machine_config &config)
|
||||
maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown));
|
||||
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
|
||||
|
||||
AT_MB(config, "mb", 0);
|
||||
AT_MB(config, "mb");
|
||||
// the vis doesn't have a real keyboard controller
|
||||
config.device_remove("mb:keybc");
|
||||
config.device_remove("mb:pc_kbdc");
|
||||
|
||||
kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
|
||||
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
|
||||
|
@ -10,8 +10,6 @@
|
||||
#include "machine/at.h"
|
||||
#include "cpu/i86/i286.h"
|
||||
#include "cpu/i386/i386.h"
|
||||
#include "machine/at_keybc.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "softlist_dev.h"
|
||||
#include "speaker.h"
|
||||
|
||||
@ -28,7 +26,8 @@ at_mb_device::at_mb_device(const machine_config &mconfig, const char *tag, devic
|
||||
m_dma8237_2(*this, "dma8237_2"),
|
||||
m_pit8254(*this, "pit8254"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_mc146818(*this, "rtc")
|
||||
m_mc146818(*this, "rtc"),
|
||||
m_keybc(*this, "keybc")
|
||||
{
|
||||
}
|
||||
|
||||
@ -58,7 +57,7 @@ void at_mb_device::at_softlists(machine_config &config)
|
||||
|
||||
void at_mb_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
PIT8254(config, m_pit8254, 0);
|
||||
PIT8254(config, m_pit8254);
|
||||
m_pit8254->set_clk<0>(4772720/4); /* heartbeat IRQ */
|
||||
m_pit8254->out_handler<0>().set("pic8259_master", FUNC(pic8259_device::ir0_w));
|
||||
m_pit8254->set_clk<1>(4772720/4); /* dram refresh */
|
||||
@ -99,12 +98,12 @@ void at_mb_device::device_add_mconfig(machine_config &config)
|
||||
m_dma8237_2->out_dack_callback<2>().set(FUNC(at_mb_device::dack6_w));
|
||||
m_dma8237_2->out_dack_callback<3>().set(FUNC(at_mb_device::dack7_w));
|
||||
|
||||
pic8259_device &pic8259_master(PIC8259(config, "pic8259_master", 0));
|
||||
pic8259_device &pic8259_master(PIC8259(config, "pic8259_master"));
|
||||
pic8259_master.out_int_callback().set_inputline(":maincpu", 0);
|
||||
pic8259_master.in_sp_callback().set_constant(1);
|
||||
pic8259_master.read_slave_ack_callback().set(FUNC(at_mb_device::get_slave_ack));
|
||||
|
||||
PIC8259(config, m_pic8259_slave, 0);
|
||||
PIC8259(config, m_pic8259_slave);
|
||||
m_pic8259_slave->out_int_callback().set("pic8259_master", FUNC(pic8259_device::ir2_w));
|
||||
m_pic8259_slave->in_sp_callback().set_constant(0);
|
||||
|
||||
@ -143,12 +142,6 @@ void at_mb_device::device_add_mconfig(machine_config &config)
|
||||
keybc.hot_res().set_inputline(":maincpu", INPUT_LINE_RESET);
|
||||
keybc.gate_a20().set_inputline(":maincpu", INPUT_LINE_A20);
|
||||
keybc.kbd_irq().set("pic8259_master", FUNC(pic8259_device::ir1_w));
|
||||
keybc.kbd_clk().set("pc_kbdc", FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
keybc.kbd_data().set("pc_kbdc", FUNC(pc_kbdc_device::data_write_from_mb));
|
||||
|
||||
pc_kbdc_device &pc_kbdc(PC_KBDC(config, "pc_kbdc", 0));
|
||||
pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
|
||||
pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
|
||||
}
|
||||
|
||||
|
||||
@ -397,6 +390,9 @@ WRITE_LINE_MEMBER( at_mb_device::dack5_w ) { set_dma_channel(5, state); }
|
||||
WRITE_LINE_MEMBER( at_mb_device::dack6_w ) { set_dma_channel(6, state); }
|
||||
WRITE_LINE_MEMBER( at_mb_device::dack7_w ) { set_dma_channel(7, state); }
|
||||
|
||||
WRITE_LINE_MEMBER( at_mb_device::kbd_clk_w ) { m_keybc->kbd_clk_w(state); }
|
||||
WRITE_LINE_MEMBER( at_mb_device::kbd_data_w ) { m_keybc->kbd_data_w(state); }
|
||||
|
||||
uint8_t at_mb_device::portb_r()
|
||||
{
|
||||
uint8_t data = m_at_speaker;
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include "machine/pic8259.h"
|
||||
#include "machine/pit8253.h"
|
||||
#include "machine/am9517a.h"
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "machine/at_keybc.h"
|
||||
#include "bus/isa/isa.h"
|
||||
#include "sound/spkrdev.h"
|
||||
#include "softlist.h"
|
||||
@ -15,12 +15,17 @@
|
||||
class at_mb_device : public device_t
|
||||
{
|
||||
public:
|
||||
at_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
at_mb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
void map(address_map &map);
|
||||
|
||||
auto kbd_clk() { return subdevice<at_keyboard_controller_device>("keybc")->kbd_clk(); }
|
||||
auto kbd_data() { return subdevice<at_keyboard_controller_device>("keybc")->kbd_data(); }
|
||||
|
||||
uint8_t page8_r(offs_t offset);
|
||||
void page8_w(offs_t offset, uint8_t data);
|
||||
DECLARE_WRITE_LINE_MEMBER(kbd_clk_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(kbd_data_w);
|
||||
uint8_t portb_r();
|
||||
void portb_w(uint8_t data);
|
||||
void write_rtc(offs_t offset, uint8_t data);
|
||||
@ -48,6 +53,8 @@ private:
|
||||
required_device<pit8254_device> m_pit8254;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<mc146818_device> m_mc146818;
|
||||
optional_device<at_keyboard_controller_device> m_keybc; // removed in mtouchxl.cpp and vis.cpp
|
||||
|
||||
uint8_t m_at_spkrdata;
|
||||
uint8_t m_pit_out2;
|
||||
int m_dma_channel;
|
||||
|
@ -92,23 +92,15 @@ void ioc2_device::device_add_mconfig(machine_config &config)
|
||||
PC_LPT(config, m_pi1);
|
||||
|
||||
// keyboard connector
|
||||
pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd_con", 0));
|
||||
pc_kbdc_device &kbd_con(PC_KBDC(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
kbd_con.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_clk_w));
|
||||
kbd_con.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::kbd_data_w));
|
||||
|
||||
// keyboard port
|
||||
pc_kbdc_slot_device &kbd(PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL));
|
||||
kbd.set_pc_kbdc_slot(&kbd_con);
|
||||
|
||||
// auxiliary connector
|
||||
pc_kbdc_device &aux_con(PC_KBDC(config, "aux_con", 0));
|
||||
pc_kbdc_device &aux_con(PC_KBDC(config, "aux", ps2_mice, STR_HLE_PS2_MOUSE));
|
||||
aux_con.out_clock_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::aux_clk_w));
|
||||
aux_con.out_data_cb().set(m_kbdc, FUNC(ps2_keyboard_controller_device::aux_data_w));
|
||||
|
||||
// auxiliary port
|
||||
pc_kbdc_slot_device &aux(PC_KBDC_SLOT(config, "aux", ps2_mice, STR_HLE_PS2_MOUSE));
|
||||
aux.set_pc_kbdc_slot(&aux_con);
|
||||
|
||||
// keyboard controller
|
||||
PS2_KEYBOARD_CONTROLLER(config, m_kbdc, 12_MHz_XTAL);
|
||||
m_kbdc->kbd_clk().set(kbd_con, FUNC(pc_kbdc_device::clock_write_from_mb));
|
||||
@ -121,7 +113,7 @@ void ioc2_device::device_add_mconfig(machine_config &config)
|
||||
m_kbdc->kbd_irq().set(kbdc_irq, FUNC(input_merger_device::in_w<0>));
|
||||
m_kbdc->aux_irq().set(kbdc_irq, FUNC(input_merger_device::in_w<1>));
|
||||
|
||||
PIT8254(config, m_pit, 0);
|
||||
PIT8254(config, m_pit);
|
||||
m_pit->set_clk<0>(0);
|
||||
m_pit->set_clk<1>(0);
|
||||
m_pit->set_clk<2>(1000000);
|
||||
|
Loading…
Reference in New Issue
Block a user