i186: use static set irq and clean up leftovers (nw)

This commit is contained in:
cracyc 2014-04-23 18:14:52 +00:00
parent 5b80814347
commit 88c077394d
3 changed files with 2 additions and 1107 deletions

View File

@ -126,6 +126,7 @@ i80188_cpu_device::i80188_cpu_device(const machine_config &mconfig, const char *
{
memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing));
m_fetch_xor = 0;
static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this));
}
i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
@ -139,6 +140,7 @@ i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char *
{
memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing));
m_fetch_xor = BYTE_XOR_LE(0);
static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this));
}
i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int data_bus_size)
@ -642,8 +644,6 @@ void i80186_cpu_device::device_reset()
m_timer[0].control = 0;
m_timer[1].control = 0;
m_timer[2].control = 0;
set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback),this));
}
UINT8 i80186_cpu_device::read_port_byte(UINT16 port)

View File

@ -65,61 +65,6 @@ struct t_nimbus_brush
};
/* 80186 internal stuff */
struct mem_state
{
UINT16 lower;
UINT16 upper;
UINT16 middle;
UINT16 middle_size;
UINT16 peripheral;
};
struct timer_state
{
UINT16 control;
UINT16 maxA;
UINT16 maxB;
UINT16 count;
emu_timer *int_timer;
emu_timer *time_timer;
UINT8 time_timer_active;
attotime last_time;
};
struct dma_state
{
UINT32 source;
UINT32 dest;
UINT16 count;
UINT16 control;
UINT8 finished;
emu_timer *finish_timer;
};
struct intr_state
{
UINT8 pending;
UINT16 ack_mask;
UINT16 priority_mask;
UINT16 in_service;
UINT16 request;
UINT16 status;
UINT16 poll_status;
UINT16 timer;
UINT16 dma[2];
UINT16 ext[4];
UINT16 ext_vector[2]; // external vectors, when in cascade mode
};
struct i186_state
{
struct timer_state timer[3];
struct dma_state dma[2];
struct intr_state intr;
struct mem_state mem;
};
struct keyboard_t
{
UINT8 keyrows[NIMBUS_KEYROWS];
@ -390,7 +335,6 @@ public:
required_device<output_latch_device> m_scsi_ctrl_out;
UINT32 m_debug_machine;
// i186_state m_i186;
keyboard_t m_keyboard;
nimbus_drives_t m_nimbus_drives;
ipc_interface_t m_ipc_interface;
@ -408,8 +352,6 @@ public:
UINT8 m_hs_count;
UINT32 m_debug_video;
UINT8 m_vector;
// DECLARE_READ16_MEMBER(nimbus_i186_internal_port_r);
// DECLARE_WRITE16_MEMBER(nimbus_i186_internal_port_w);
DECLARE_READ8_MEMBER(nimbus_mcu_r);
DECLARE_WRITE8_MEMBER(nimbus_mcu_w);
DECLARE_READ16_MEMBER(nimbus_io_r);
@ -440,8 +382,6 @@ public:
DECLARE_PALETTE_INIT(rmnimbus);
UINT32 screen_update_nimbus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_nimbus(screen_device &screen, bool state);
// TIMER_CALLBACK_MEMBER(internal_timer_int);
// TIMER_CALLBACK_MEMBER(dma_timer_callback);
TIMER_CALLBACK_MEMBER(keyscan_callback);
TIMER_CALLBACK_MEMBER(mouse_callback);
DECLARE_WRITE_LINE_MEMBER(sio_interrupt);
@ -482,17 +422,8 @@ public:
void write_reg_01E();
void write_reg_026();
void change_palette(UINT8 bank, UINT16 colours, UINT8 regno);
// void update_interrupt_state();
// void handle_eoi(int data);
void external_int(UINT16 intno, UINT8 vector);
DECLARE_READ8_MEMBER(cascade_callback);
// void nimbus_recalculate_ints();
// void internal_timer_sync(int which);
// void internal_timer_update(int which,int new_count,int new_maxA,int new_maxB,int new_control);
// void update_dma_control(int which, int new_control);
// void drq_callback(int which);
// void nimbus_cpu_init();
// void nimbus_cpu_reset();
void *get_dssi_ptr(address_space &space, UINT16 ds, UINT16 si);
void nimbus_bank_memory();
void memory_reset();

File diff suppressed because it is too large Load Diff