summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/sinclair/atm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/sinclair/atm.cpp')
-rw-r--r--src/mame/sinclair/atm.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/mame/sinclair/atm.cpp b/src/mame/sinclair/atm.cpp
index ea2e3ce5307..fddfa0ddb24 100644
--- a/src/mame/sinclair/atm.cpp
+++ b/src/mame/sinclair/atm.cpp
@@ -95,7 +95,7 @@ void atm_state::atm_port_ff_w(offs_t offset, u8 data)
{
// Must read current ULA value (which is doesn't work now) from the BUS.
// Good enough as non-border case is too complicated and possibly no software uses it.
- u8 pen = get_border_color(m_screen->hpos(), m_screen->vpos());
+ u8 pen = 0x0f & get_border_color(m_screen->hpos(), m_screen->vpos());
m_palette_data[pen] = data;
m_palette->set_pen_color(pen,
(BIT(~data, 1) * 0xaa) | (BIT(~data, 6) * 0x55),
@@ -181,12 +181,12 @@ u8 atm_state::get_border_color(u16 hpos, u16 vpos)
void atm_state::atm_update_video_mode()
{
- bool zx_scale = m_rg == 0b011;
+ bool zx_scale = m_rg & 1;
bool double_width = BIT(m_rg, 1) && !zx_scale;
- u8 border_x = (40 - (32 * !zx_scale)) << double_width;
+ u8 border_x = (40 - (32 * !zx_scale)) << (double_width ? 1 : 0);
u8 border_y = (40 - (4 * !zx_scale));
rectangle scr = get_screen_area();
- m_screen->configure(448 << double_width, m_screen->height(), {scr.left() - border_x, scr.right() + border_x, scr.top() - border_y, scr.bottom() + border_y}, m_screen->frame_period().as_attoseconds());
+ m_screen->configure(448 << (double_width ? 1 : 0), m_screen->height(), {scr.left() - border_x, scr.right() + border_x, scr.top() - border_y, scr.bottom() + border_y}, m_screen->frame_period().as_attoseconds());
LOGVIDEO("Video mode: %d\n", m_rg);
//spectrum_palette(m_palette);
@@ -431,8 +431,6 @@ void atm_state::machine_start()
ram_pages_mask = (m_ram->size() - 1) / 0x4000;
m_bank_ram[0]->configure_entries(0, ram_pages_mask + 1, m_ram->pointer(), 0x4000);
-
- m_maincpu->space(AS_PROGRAM).specific(m_program);
}
void atm_state::machine_reset()
@@ -440,12 +438,12 @@ void atm_state::machine_reset()
m_beta->enable();
m_beta_drive_selected = 0;
+ m_port_fe_data = -1;
m_port_7ffd_data = 0;
m_port_1ffd_data = -1;
m_port_77_data = 0;
m_br3 = 0;
- m_palette_data = { 0xff };
atm_port_77_w(0x4000, 3); // m_port_77_data: CPM=0(on), PEN=0(off), PEN2=1(off); vmode: zx
}
@@ -505,7 +503,7 @@ void atm_state::atm(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &atm_state::atm_io);
m_maincpu->set_addrmap(AS_OPCODES, &atm_state::atm_switch);
m_maincpu->set_vblank_int("screen", FUNC(atm_state::atm_interrupt));
- m_maincpu->nomreq_cb().set_nop();
+ m_maincpu->nomreq_cb().remove();
m_screen->set_raw(X1_128_SINCLAIR / 5, 448, 312, {get_screen_area().left() - 40, get_screen_area().right() + 40, get_screen_area().top() - 40, get_screen_area().bottom() + 40});
subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_atm);