108
108
*********************************************************************/
110
READ8_HANDLER(vectrex_via_r)
110
READ8_MEMBER(vectrex_state::vectrex_via_r)
112
via6522_device *via = space->machine().device<via6522_device>("via6522_0");
113
return via->read(*space, offset);
112
via6522_device *via = machine().device<via6522_device>("via6522_0");
113
return via->read(space, offset);
116
WRITE8_HANDLER(vectrex_via_w)
116
WRITE8_MEMBER(vectrex_state::vectrex_via_w)
118
vectrex_state *state = space->machine().driver_data<vectrex_state>();
119
via6522_device *via = space->machine().device<via6522_device>("via6522_0");
118
via6522_device *via = machine().device<via6522_device>("via6522_0");
125
state->m_via_timer2 = (state->m_via_timer2 & 0xff00) | data;
124
m_via_timer2 = (m_via_timer2 & 0xff00) | data;
129
state->m_via_timer2 = (state->m_via_timer2 & 0x00ff) | (data << 8);
131
period = (attotime::from_hz(space->machine().device("maincpu")->unscaled_clock()) * state->m_via_timer2);
133
if (state->m_reset_refresh)
134
state->m_refresh->adjust(period, 0, period);
128
m_via_timer2 = (m_via_timer2 & 0x00ff) | (data << 8);
130
period = (attotime::from_hz(machine().device("maincpu")->unscaled_clock()) * m_via_timer2);
133
m_refresh->adjust(period, 0, period);
136
state->m_refresh->adjust(
137
min(period, state->m_refresh->remaining()),
136
min(period, m_refresh->remaining()),
142
via->write(*space, offset, data);
141
via->write(space, offset, data);
389
/* Cartridge bank-switching */
390
if (state->m_64k_cart && ((data ^ state->m_via_out[PORTB]) & 0x40))
392
device_t &root_device = device->machine().root_device();
394
root_device.membank("bank1")->set_base(root_device.memregion("maincpu")->base() + ((data & 0x40) ? 0x10000 : 0x0000));
436
443
/* Check lightpen */
437
444
if (state->m_lightpen_port != 0)
439
state->m_lightpen_down = input_port_read(device->machine(), "LPENCONF") & 0x10;
446
state->m_lightpen_down = state->ioport("LPENCONF")->read() & 0x10;
441
448
if (state->m_lightpen_down)
443
state->m_pen_x = input_port_read(device->machine(), "LPENX") * (state->m_x_max / 0xff);
444
state->m_pen_y = input_port_read(device->machine(), "LPENY") * (state->m_y_max / 0xff);
450
state->m_pen_x = state->ioport("LPENX")->read() * (state->m_x_max / 0xff);
451
state->m_pen_y = state->ioport("LPENY")->read() * (state->m_y_max / 0xff);
446
453
dx = abs(state->m_pen_x - state->m_x_int);
447
454
dy = abs(state->m_pen_y - state->m_y_int);
473
WRITE8_HANDLER(raaspec_led_w)
480
WRITE8_MEMBER(vectrex_state::raaspec_led_w)
475
482
logerror("Spectrum I+ LED: %i%i%i%i%i%i%i%i\n",
476
483
(data>>7)&0x1, (data>>6)&0x1, (data>>5)&0x1, (data>>4)&0x1,