z80: Change refresh callback to write8 [smf]

This commit is contained in:
smf- 2018-02-24 01:26:43 +00:00
parent 9842fc438a
commit a58e057b8d
7 changed files with 12 additions and 12 deletions

View File

@ -503,7 +503,7 @@ READ8_MEMBER(hp9895_device::phi_reg_r)
return (uint8_t)reg;
}
WRITE16_MEMBER(hp9895_device::z80_m1_w)
WRITE8_MEMBER(hp9895_device::z80_m1_w)
{
// Every M1 cycle of Z80 clears the IRQ line
if (m_cpu_irq) {
@ -886,7 +886,7 @@ MACHINE_CONFIG_START(hp9895_device::device_add_mconfig)
MCFG_CPU_ADD("cpu" , Z80 , 4000000)
MCFG_CPU_PROGRAM_MAP(z80_program_map)
MCFG_CPU_IO_MAP(z80_io_map)
MCFG_Z80_SET_REFRESH_CALLBACK(WRITE16(hp9895_device , z80_m1_w))
MCFG_Z80_SET_REFRESH_CALLBACK(WRITE8(hp9895_device , z80_m1_w))
MCFG_DEVICE_ADD("phi" , PHI , 0)
MCFG_PHI_EOI_WRITE_CB(WRITELINE(hp9895_device , phi_eoi_w))

View File

@ -65,7 +65,7 @@ private:
DECLARE_WRITE_LINE_MEMBER(phi_int_w);
// Z80 IRQ
DECLARE_WRITE16_MEMBER(z80_m1_w);
DECLARE_WRITE8_MEMBER(z80_m1_w);
// Floppy interface
DECLARE_WRITE8_MEMBER(data_w);

View File

@ -481,7 +481,7 @@ inline uint8_t z80_device::rop()
PC++;
uint8_t res = m_decrypted_opcodes_direct->read_byte(pc);
m_icount -= 2;
m_refresh_cb((m_i << 8) | (m_r2 & 0x80) | ((m_r-1) & 0x7f));
m_refresh_cb((m_i << 8) | (m_r2 & 0x80) | ((m_r-1) & 0x7f), 0x00, 0xff);
m_icount += 2;
return res;
}

View File

@ -247,7 +247,7 @@ protected:
direct_read_data<0> *m_direct;
direct_read_data<0> *m_decrypted_opcodes_direct;
devcb_write_line m_irqack_cb;
devcb_write16 m_refresh_cb;
devcb_write8 m_refresh_cb;
devcb_write_line m_halt_cb;
PAIR m_prvpc;

View File

@ -324,7 +324,7 @@ MACHINE_CONFIG_START(zx_state::zx80)
MCFG_CPU_PROGRAM_MAP(zx80_map)
MCFG_CPU_IO_MAP(zx80_io_map)
MCFG_CPU_OPCODES_MAP(ula_map)
MCFG_Z80_SET_REFRESH_CALLBACK(WRITE16(zx_state, refresh_w))
MCFG_Z80_SET_REFRESH_CALLBACK(WRITE8(zx_state, refresh_w))
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(XTAL(6'500'000)/2/64159.0) // 54223 for NTSC

View File

@ -50,7 +50,7 @@ public:
DECLARE_READ8_MEMBER(ula_high_r);
DECLARE_READ8_MEMBER(ula_low_r);
DECLARE_WRITE16_MEMBER(refresh_w);
DECLARE_WRITE8_MEMBER(refresh_w);
DECLARE_READ8_MEMBER(zx80_io_r);
DECLARE_READ8_MEMBER(zx81_io_r);
DECLARE_READ8_MEMBER(pc8300_io_r);

View File

@ -50,11 +50,11 @@ void zx_state::zx_ula_hsync()
recalc_hsync();
}
WRITE16_MEMBER(zx_state::refresh_w)
WRITE8_MEMBER(zx_state::refresh_w)
{
if((data ^ m_prev_refresh) & 0x40)
m_maincpu->set_input_line(INPUT_LINE_IRQ0, data & 0x40 ? CLEAR_LINE : ASSERT_LINE);
m_prev_refresh = data;
if((offset ^ m_prev_refresh) & 0x40)
m_maincpu->set_input_line(INPUT_LINE_IRQ0, offset & 0x40 ? CLEAR_LINE : ASSERT_LINE);
m_prev_refresh = offset;
if(m_ula_char_buffer != 0xffff) {
uint64_t time = m_maincpu->total_cycles();
int x = 2*((time-m_base_vsync_clock) % 207);
@ -63,7 +63,7 @@ WRITE16_MEMBER(zx_state::refresh_w)
if(m_region_gfx1)
pixels = m_region_gfx1->base()[((m_ula_char_buffer & 0x3f) << 3) | (m_ypos & 7)];
else
pixels = m_program->read_byte((data & 0xfe00) | ((m_ula_char_buffer & 0x3f) << 3) | (m_ypos & 7));
pixels = m_program->read_byte((offset & 0xfe00) | ((m_ula_char_buffer & 0x3f) << 3) | (m_ypos & 7));
if(m_ula_char_buffer & 0x80)
pixels = ~pixels;
if(x < 384-8 && y < 311) {