small pc cleanup (nw)

This commit is contained in:
Miodrag Milanovic 2014-03-24 19:46:18 +00:00
parent ecc538779b
commit 7b716d4aaf
5 changed files with 33 additions and 53 deletions

View File

@ -142,7 +142,6 @@ public:
UINT8 pc_speaker_get_spk(); UINT8 pc_speaker_get_spk();
void pc_speaker_set_spkrdata(UINT8 data); void pc_speaker_set_spkrdata(UINT8 data);
void pcjr_keyb_init(); void pcjr_keyb_init();
void mess_init_pc_common(void (*set_keyb_int_func)(running_machine &, int));
void pc_rtc_init(); void pc_rtc_init();
// turbo support // turbo support
@ -154,21 +153,22 @@ public:
double m_turbo_on_speed; double m_turbo_on_speed;
// keyboard // keyboard
void init_pc_common(void (*set_keyb_int_func)(running_machine &, int)); void init_pc_common(write_line_delegate set_keyb_int_func);
TIMER_CALLBACK_MEMBER( pc_keyb_timer ); TIMER_CALLBACK_MEMBER( pc_keyb_timer );
void pc_keyboard(); void pc_keyboard();
UINT8 pc_keyb_read(); UINT8 pc_keyb_read();
void pc_keyb_set_clock(int on); void pc_keyb_set_clock(int on);
void pc_keyb_clear(); void pc_keyb_clear();
void (*m_pc_keyb_int_cb)(running_machine &, int); write_line_delegate m_pc_keyb_int_cb;
emu_timer *m_pc_keyb_timer; emu_timer *m_pc_keyb_timer;
UINT8 m_pc_keyb_data; UINT8 m_pc_keyb_data;
int m_pc_keyb_on; int m_pc_keyb_on;
int m_pc_keyb_self_test; int m_pc_keyb_self_test;
DECLARE_WRITE_LINE_MEMBER(pcjr_set_keyb_int);
DECLARE_WRITE_LINE_MEMBER(pc_set_keyb_int);
}; };
void pc_set_keyb_int(running_machine &machine, int state);
/*----------- defined in machine/pc.c -----------*/ /*----------- defined in machine/pc.c -----------*/
extern const struct am9517a_interface ibm5150_dma8237_config; extern const struct am9517a_interface ibm5150_dma8237_config;

View File

@ -137,7 +137,7 @@ DRIVER_INIT_MEMBER(amstrad_pc_state,pc1640)
io_space.install_read_handler(0x278, 0x27b, read8_delegate(FUNC(amstrad_pc_state::pc1640_port278_r),this), 0xffff); io_space.install_read_handler(0x278, 0x27b, read8_delegate(FUNC(amstrad_pc_state::pc1640_port278_r),this), 0xffff);
io_space.install_read_handler(0x4278, 0x427b, read8_delegate(FUNC(amstrad_pc_state::pc1640_port4278_r),this), 0xffff); io_space.install_read_handler(0x4278, 0x427b, read8_delegate(FUNC(amstrad_pc_state::pc1640_port4278_r),this), 0xffff);
mess_init_pc_common(pc_set_keyb_int); init_pc_common(write_line_delegate(FUNC(amstrad_pc_state::pc_set_keyb_int),this));
} }
@ -150,7 +150,7 @@ DRIVER_INIT_MEMBER(amstrad_pc_state,pc200)
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
gfx[i] = i; gfx[i] = i;
mess_init_pc_common(pc_set_keyb_int); init_pc_common(write_line_delegate(FUNC(amstrad_pc_state::pc_set_keyb_int),this));
} }
DRIVER_INIT_MEMBER(amstrad_pc_state,ppc512) DRIVER_INIT_MEMBER(amstrad_pc_state,ppc512)
@ -162,7 +162,7 @@ DRIVER_INIT_MEMBER(amstrad_pc_state,ppc512)
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
gfx[i] = i; gfx[i] = i;
mess_init_pc_common(pc_set_keyb_int); init_pc_common(write_line_delegate(FUNC(amstrad_pc_state::pc_set_keyb_int),this));
} }
DRIVER_INIT_MEMBER(amstrad_pc_state,pc1512) DRIVER_INIT_MEMBER(amstrad_pc_state,pc1512)
{ {
@ -173,7 +173,7 @@ DRIVER_INIT_MEMBER(amstrad_pc_state,pc1512)
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
gfx[i] = i; gfx[i] = i;
mess_init_pc_common(pc_set_keyb_int); init_pc_common(write_line_delegate(FUNC(amstrad_pc_state::pc_set_keyb_int),this));
} }
WRITE8_MEMBER( amstrad_pc_state::pc1640_port60_w ) WRITE8_MEMBER( amstrad_pc_state::pc1640_port60_w )

View File

@ -371,7 +371,7 @@ DRIVER_INIT_MEMBER(europc_pc_state,europc)
rom[0xfffff]=256-a; rom[0xfffff]=256-a;
} }
mess_init_pc_common(pc_set_keyb_int); init_pc_common(write_line_delegate(FUNC(europc_pc_state::pc_set_keyb_int),this));
europc_rtc_init(); europc_rtc_init();
// europc_rtc_set_time(); // europc_rtc_set_time();

View File

@ -424,12 +424,11 @@ TIMER_CALLBACK_MEMBER(pc_state::pcjr_keyb_signal_callback)
} }
static void pcjr_set_keyb_int(running_machine &machine, int state) WRITE_LINE_MEMBER(pc_state::pcjr_set_keyb_int)
{ {
pc_state *drvstate = machine.driver_data<pc_state>();
if ( state ) if ( state )
{ {
UINT8 data = drvstate->pc_keyb_read(); UINT8 data = pc_keyb_read();
UINT8 parity = 0; UINT8 parity = 0;
int i; int i;
@ -460,7 +459,7 @@ static void pcjr_set_keyb_int(running_machine &machine, int state)
pcjr_keyb.latch = 1; pcjr_keyb.latch = 1;
} }
drvstate->m_maincpu->set_input_line(INPUT_LINE_NMI, pcjr_keyb.latch && nmi_enabled); m_maincpu->set_input_line(INPUT_LINE_NMI, pcjr_keyb.latch && nmi_enabled);
} }
@ -808,26 +807,9 @@ WRITE_LINE_MEMBER( pc_state::fdc_interrupt )
} }
} }
static void pc_set_irq_line(running_machine &machine,int irq, int state) WRITE_LINE_MEMBER( pc_state::pc_set_keyb_int)
{ {
pc_state *st = machine.driver_data<pc_state>(); m_pic8259->ir1_w(state);
switch (irq)
{
case 0: st->m_pic8259->ir0_w(state); break;
case 1: st->m_pic8259->ir1_w(state); break;
case 2: st->m_pic8259->ir2_w(state); break;
case 3: st->m_pic8259->ir3_w(state); break;
case 4: st->m_pic8259->ir4_w(state); break;
case 5: st->m_pic8259->ir5_w(state); break;
case 6: st->m_pic8259->ir6_w(state); break;
case 7: st->m_pic8259->ir7_w(state); break;
}
}
void pc_set_keyb_int(running_machine &machine, int state)
{
pc_set_irq_line( machine, 1, state );
} }
TIMER_CALLBACK_MEMBER(pc_state::pcjr_fdc_watchdog) TIMER_CALLBACK_MEMBER(pc_state::pcjr_fdc_watchdog)
@ -971,8 +953,8 @@ void pc_state::pc_keyb_set_clock(int on)
void pc_state::pc_keyb_clear(void) void pc_state::pc_keyb_clear(void)
{ {
m_pc_keyb_data = 0; m_pc_keyb_data = 0;
if ( m_pc_keyb_int_cb ) { if (!m_pc_keyb_int_cb.isnull()) {
m_pc_keyb_int_cb(machine(),0); m_pc_keyb_int_cb(0);
} }
} }
@ -987,25 +969,23 @@ void pc_state::pc_keyboard(void)
if ( (data=at_keyboard_read())!=-1) { if ( (data=at_keyboard_read())!=-1) {
m_pc_keyb_data = data; m_pc_keyb_data = data;
//DBG_LOG(1,"KB_scancode",("$%02x\n", m_pc_keyb_data)); //DBG_LOG(1,"KB_scancode",("$%02x\n", m_pc_keyb_data));
if ( m_pc_keyb_int_cb ) { if ( !m_pc_keyb_int_cb.isnull() ) {
m_pc_keyb_int_cb(machine(),1); m_pc_keyb_int_cb(1);
} }
m_pc_keyb_self_test = 0; m_pc_keyb_self_test = 0;
} }
} }
} }
void pc_state::init_pc_common(void (*set_keyb_int_func)(running_machine &, int))
{
at_keyboard_init(machine(), AT_KEYBOARD_TYPE_PC);
at_keyboard_set_scan_code_set(1);
m_pc_keyb_int_cb = set_keyb_int_func;
m_pc_keyb_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pc_state::pc_keyb_timer),this));
}
void pc_state::mess_init_pc_common(void (*set_keyb_int_func)(running_machine &, int)) void pc_state::init_pc_common(write_line_delegate set_keyb_int_func)
{ {
if ( set_keyb_int_func != NULL ) m_pc_keyb_int_cb = set_keyb_int_func;
init_pc_common(set_keyb_int_func); if (!set_keyb_int_func.isnull()) {
at_keyboard_init(machine(), AT_KEYBOARD_TYPE_PC);
at_keyboard_set_scan_code_set(1);
m_pc_keyb_int_cb = set_keyb_int_func;
m_pc_keyb_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pc_state::pc_keyb_timer),this));
}
/* MESS managed RAM */ /* MESS managed RAM */
if ( m_ram->pointer() ) if ( m_ram->pointer() )
@ -1015,32 +995,32 @@ void pc_state::mess_init_pc_common(void (*set_keyb_int_func)(running_machine &,
DRIVER_INIT_MEMBER(pc_state,ibm5150) DRIVER_INIT_MEMBER(pc_state,ibm5150)
{ {
mess_init_pc_common(NULL); init_pc_common(write_line_delegate());
pc_rtc_init(); pc_rtc_init();
} }
DRIVER_INIT_MEMBER(pc_state,pccga) DRIVER_INIT_MEMBER(pc_state,pccga)
{ {
mess_init_pc_common(NULL); init_pc_common(write_line_delegate());
pc_rtc_init(); pc_rtc_init();
} }
DRIVER_INIT_MEMBER(pc_state,bondwell) DRIVER_INIT_MEMBER(pc_state,bondwell)
{ {
mess_init_pc_common(NULL); init_pc_common(write_line_delegate());
pc_turbo_setup(4.77/12, 1); pc_turbo_setup(4.77/12, 1);
} }
DRIVER_INIT_MEMBER(pc_state,pcmda) DRIVER_INIT_MEMBER(pc_state,pcmda)
{ {
mess_init_pc_common(pc_set_keyb_int); init_pc_common(write_line_delegate(FUNC(pc_state::pc_set_keyb_int),this));
} }
DRIVER_INIT_MEMBER(pc_state,pcjr) DRIVER_INIT_MEMBER(pc_state,pcjr)
{ {
mess_init_pc_common(pcjr_set_keyb_int); init_pc_common(write_line_delegate(FUNC(pc_state::pcjr_set_keyb_int),this));
} }

View File

@ -267,7 +267,7 @@ MACHINE_RESET_MEMBER(tandy_pc_state,tandy1000rl)
DRIVER_INIT_MEMBER(tandy_pc_state,t1000hx) DRIVER_INIT_MEMBER(tandy_pc_state,t1000hx)
{ {
mess_init_pc_common(pc_set_keyb_int); init_pc_common(write_line_delegate(FUNC(tandy_pc_state::pc_set_keyb_int),this));
pc_turbo_setup(4.77/12, 1); pc_turbo_setup(4.77/12, 1);
} }