summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2022-05-19 13:06:28 -0400
committer AJR <ajrhacker@users.noreply.github.com>2022-05-19 13:12:25 -0400
commit83ce568f51f182779f307241c28db657371d6045 (patch)
treec28bc5654fbe7edc539a5d8d9c45f3d5cd74da42
parent239baf84a99f6a89c088112e1a48be8a13513104 (diff)
atarist.cpp: Cleanups and minor fixes
- Add cartridge software list and IPF floppy format to all sets - Add missing handlers to (still non-working) ste, megast and megaste memory maps, making megaste a megast derivative - Give HD6301 its own XTAL - Use array finders for HD6301 keyboard and joystick ports - Swap players for joystick and button inputs (needed for mouse to work) - Remove shifter mode 1 kludge that seems to hurt more than help
-rw-r--r--hash/st_cart.xml6
-rw-r--r--src/devices/sound/lmc1992.cpp2
-rw-r--r--src/mame/drivers/atarist.cpp190
-rw-r--r--src/mame/includes/atarist.h45
-rw-r--r--src/mame/video/atarist.cpp4
5 files changed, 105 insertions, 142 deletions
diff --git a/hash/st_cart.xml b/hash/st_cart.xml
index 3f55ada99d6..44a21830b50 100644
--- a/hash/st_cart.xml
+++ b/hash/st_cart.xml
@@ -24,7 +24,7 @@ Undumped cartridges:
<dataarea name="rom" width="16" endianness="big" size="0x10000">
<rom name="st 4.4 hi.bin" size="0x8000" crc="9ece1359" sha1="58fb686e1f15048105b56502251c0f5a0084d3bb" offset="0x0000" loadflag="load16_byte" />
<rom name="st 4.4 lo.bin" size="0x8000" crc="f18e717c" sha1="92fab18c8046f9c1b9ddf2a82e48713a6df0c802" offset="0x0001" loadflag="load16_byte" />
- </dataarea>
+ </dataarea>
</part>
</software>
@@ -48,7 +48,7 @@ Undumped cartridges:
<dataarea name="rom" width="16" endianness="big" size="0x10000">
<rom name="megaste 1.5 hi.bin" size="0x8000" crc="4d1f118e" sha1="7b1c282db728e3702496e5d5f5b89b94a80d28fd" offset="0x0000" loadflag="load16_byte" />
<rom name="megaste 1.5 lo.bin" size="0x8000" crc="76225df0" sha1="d32325b065b34d5b06448f8fa13434b3493ca1e2" offset="0x0001" loadflag="load16_byte" />
- </dataarea>
+ </dataarea>
</part>
</software>
@@ -60,7 +60,7 @@ Undumped cartridges:
<dataarea name="rom" width="16" endianness="big" size="0x10000">
<rom name="tt 1.4 hi.bin" size="0x8000" crc="62c433d8" sha1="82d43792282e1eeda3469519a4356b7f9fa9c29f" offset="0x0000" loadflag="load16_byte" />
<rom name="tt 1.4 lo.bin" size="0x8000" crc="37b931af" sha1="2ef2fc4e5f45f9b5c4a3a007a8bc001684eb0337" offset="0x0001" loadflag="load16_byte" />
- </dataarea>
+ </dataarea>
</part>
</software>
diff --git a/src/devices/sound/lmc1992.cpp b/src/devices/sound/lmc1992.cpp
index cf0d8f35d33..c3f2d6d3bf4 100644
--- a/src/devices/sound/lmc1992.cpp
+++ b/src/devices/sound/lmc1992.cpp
@@ -64,7 +64,7 @@ enum
//**************************************************************************
// devices
-DEFINE_DEVICE_TYPE(LMC1992, lmc1992_device, "lmc1992", "LMC1992")
+DEFINE_DEVICE_TYPE(LMC1992, lmc1992_device, "lmc1992", "LMC1992 Stereo Tone and Volume")
diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp
index b5413c3f408..c7c03c38733 100644
--- a/src/mame/drivers/atarist.cpp
+++ b/src/mame/drivers/atarist.cpp
@@ -541,21 +541,9 @@ uint8_t st_state::ikbd_port1_r()
uint8_t data = 0xff;
// keyboard data
- if (!BIT(m_ikbd_keylatch, 1)) data &= m_p31->read();
- if (!BIT(m_ikbd_keylatch, 2)) data &= m_p32->read();
- if (!BIT(m_ikbd_keylatch, 3)) data &= m_p33->read();
- if (!BIT(m_ikbd_keylatch, 4)) data &= m_p34->read();
- if (!BIT(m_ikbd_keylatch, 5)) data &= m_p35->read();
- if (!BIT(m_ikbd_keylatch, 6)) data &= m_p36->read();
- if (!BIT(m_ikbd_keylatch, 7)) data &= m_p37->read();
- if (!BIT(m_ikbd_keylatch, 8)) data &= m_p40->read();
- if (!BIT(m_ikbd_keylatch, 9)) data &= m_p41->read();
- if (!BIT(m_ikbd_keylatch, 10)) data &= m_p42->read();
- if (!BIT(m_ikbd_keylatch, 11)) data &= m_p43->read();
- if (!BIT(m_ikbd_keylatch, 12)) data &= m_p44->read();
- if (!BIT(m_ikbd_keylatch, 13)) data &= m_p45->read();
- if (!BIT(m_ikbd_keylatch, 14)) data &= m_p46->read();
- if (!BIT(m_ikbd_keylatch, 15)) data &= m_p47->read();
+ for (int i = 1; i < 16; i++)
+ if (!BIT(m_ikbd_keylatch, i))
+ data &= m_keys[i]->read();
return data;
}
@@ -579,7 +567,7 @@ uint8_t st_state::ikbd_port2_r()
*/
- uint8_t data = m_joy1.read_safe(0x06) & 0x06;
+ uint8_t data = m_joy[1].read_safe(0x06) & 0x06;
// serial receive
data |= m_ikbd_tx << 3;
@@ -666,7 +654,7 @@ uint8_t st_state::ikbd_port4_r()
if (m_ikbd_joy) return 0xff;
- uint8_t data = m_joy0.read_safe(0xff);
+ uint8_t data = m_joy[0].read_safe(0xff);
if ((m_config->read() & 0x01) == 0)
{
@@ -712,14 +700,14 @@ void st_state::ikbd_port4_w(uint8_t data)
// fpu_r -
//-------------------------------------------------
-uint16_t megast_state::fpu_r()
+uint16_t st_state::fpu_r()
{
// HACK diagnostic cartridge wants to see this value
return 0x0802;
}
-void megast_state::fpu_w(uint16_t data)
+void st_state::fpu_w(uint16_t data)
{
}
@@ -1265,20 +1253,7 @@ void st_state::st_map(address_map &map)
map(0xff8608, 0xff860d).rw(FUNC(st_state::dma_counter_r), FUNC(st_state::dma_base_w)).umask16(0x00ff);
map(0xff8800, 0xff8800).rw(YM2149_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0xfc);
map(0xff8802, 0xff8802).rw(YM2149_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)).mirror(0xfc);
-#if 0
- map(0xff8a00, 0xff8a1f).rw(FUNC(st_state::blitter_halftone_r), FUNC(st_state::blitter_halftone_w));
- map(0xff8a20, 0xff8a21).rw(FUNC(st_state::blitter_src_inc_x_r), FUNC(st_state::blitter_src_inc_x_w));
- map(0xff8a22, 0xff8a23).rw(FUNC(st_state::blitter_src_inc_y_r), FUNC(st_state::blitter_src_inc_y_w));
- map(0xff8a24, 0xff8a27).rw(FUNC(st_state::blitter_src_r), FUNC(st_state::blitter_src_w));
- map(0xff8a28, 0xff8a2d).rw(FUNC(st_state::blitter_end_mask_r), FUNC(st_state::blitter_end_mask_w));
- map(0xff8a2e, 0xff8a2f).rw(FUNC(st_state::blitter_dst_inc_x_r), FUNC(st_state::blitter_dst_inc_x_w));
- map(0xff8a30, 0xff8a31).rw(FUNC(st_state::blitter_dst_inc_y_r), FUNC(st_state::blitter_dst_inc_y_w));
- map(0xff8a32, 0xff8a35).rw(FUNC(st_state::blitter_dst_r), FUNC(st_state::blitter_dst_w));
- map(0xff8a36, 0xff8a37).rw(FUNC(st_state::blitter_count_x_r), FUNC(st_state::blitter_count_x_w));
- map(0xff8a38, 0xff8a39).rw(FUNC(st_state::blitter_count_y_r), FUNC(st_state::blitter_count_y_w));
- map(0xff8a3a, 0xff8a3b).rw(FUNC(st_state::blitter_op_r), FUNC(st_state::blitter_op_w));
- map(0xff8a3c, 0xff8a3d).rw(FUNC(st_state::blitter_ctrl_r), FUNC(st_state::blitter_ctrl_w));
-#endif
+ // no blitter on original ST
map(0xfffa00, 0xfffa3f).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff);
map(0xfffc00, 0xfffc03).rw(m_acia[0], FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
map(0xfffc04, 0xfffc07).rw(m_acia[1], FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
@@ -1289,7 +1264,7 @@ void st_state::st_map(address_map &map)
// ADDRESS_MAP( megast_map )
//-------------------------------------------------
-void megast_state::megast_map(address_map &map)
+void st_state::megast_map(address_map &map)
{
map.unmap_value_high();
map(0x000000, 0x000007).rom().region(M68000_TAG, 0);
@@ -1297,32 +1272,32 @@ void megast_state::megast_map(address_map &map)
map(0x200000, 0x3fffff).ram();
//map(0xfa0000, 0xfbffff) // mapped by the cartslot
map(0xfc0000, 0xfeffff).rom().region(M68000_TAG, 0);
-// map(0xff7f30, 0xff7f31).rw(FUNC(megast_state::blitter_dst_inc_y_r), FUNC(megast_state::blitter_dst_inc_y_w) // for TOS 1.02
- map(0xff8001, 0xff8001).rw(FUNC(megast_state::mmu_r), FUNC(megast_state::mmu_w));
- map(0xff8200, 0xff8203).rw(FUNC(megast_state::shifter_base_r), FUNC(megast_state::shifter_base_w)).umask16(0x00ff);
- map(0xff8204, 0xff8209).r(FUNC(megast_state::shifter_counter_r)).umask16(0x00ff);
- map(0xff820a, 0xff820a).rw(FUNC(megast_state::shifter_sync_r), FUNC(megast_state::shifter_sync_w));
- map(0xff8240, 0xff825f).rw(FUNC(megast_state::shifter_palette_r), FUNC(megast_state::shifter_palette_w));
- map(0xff8260, 0xff8260).rw(FUNC(megast_state::shifter_mode_r), FUNC(megast_state::shifter_mode_w));
- map(0xff8604, 0xff8605).rw(FUNC(megast_state::fdc_data_r), FUNC(megast_state::fdc_data_w));
- map(0xff8606, 0xff8607).rw(FUNC(megast_state::dma_status_r), FUNC(megast_state::dma_mode_w));
- map(0xff8608, 0xff860d).rw(FUNC(megast_state::dma_counter_r), FUNC(megast_state::dma_base_w)).umask16(0x00ff);
+// map(0xff7f30, 0xff7f31).rw(FUNC(st_state::blitter_dst_inc_y_r), FUNC(st_state::blitter_dst_inc_y_w) // for TOS 1.02
+ map(0xff8001, 0xff8001).rw(FUNC(st_state::mmu_r), FUNC(st_state::mmu_w));
+ map(0xff8200, 0xff8203).rw(FUNC(st_state::shifter_base_r), FUNC(st_state::shifter_base_w)).umask16(0x00ff);
+ map(0xff8204, 0xff8209).r(FUNC(st_state::shifter_counter_r)).umask16(0x00ff);
+ map(0xff820a, 0xff820a).rw(FUNC(st_state::shifter_sync_r), FUNC(st_state::shifter_sync_w));
+ map(0xff8240, 0xff825f).rw(FUNC(st_state::shifter_palette_r), FUNC(st_state::shifter_palette_w));
+ map(0xff8260, 0xff8260).rw(FUNC(st_state::shifter_mode_r), FUNC(st_state::shifter_mode_w));
+ map(0xff8604, 0xff8605).rw(FUNC(st_state::fdc_data_r), FUNC(st_state::fdc_data_w));
+ map(0xff8606, 0xff8607).rw(FUNC(st_state::dma_status_r), FUNC(st_state::dma_mode_w));
+ map(0xff8608, 0xff860d).rw(FUNC(st_state::dma_counter_r), FUNC(st_state::dma_base_w)).umask16(0x00ff);
map(0xff8800, 0xff8800).rw(YM2149_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w));
map(0xff8802, 0xff8802).w(YM2149_TAG, FUNC(ay8910_device::data_w));
- map(0xff8a00, 0xff8a1f).rw(FUNC(megast_state::blitter_halftone_r), FUNC(megast_state::blitter_halftone_w));
- map(0xff8a20, 0xff8a21).rw(FUNC(megast_state::blitter_src_inc_x_r), FUNC(megast_state::blitter_src_inc_x_w));
- map(0xff8a22, 0xff8a23).rw(FUNC(megast_state::blitter_src_inc_y_r), FUNC(megast_state::blitter_src_inc_y_w));
- map(0xff8a24, 0xff8a27).rw(FUNC(megast_state::blitter_src_r), FUNC(megast_state::blitter_src_w));
- map(0xff8a28, 0xff8a2d).rw(FUNC(megast_state::blitter_end_mask_r), FUNC(megast_state::blitter_end_mask_w));
- map(0xff8a2e, 0xff8a2f).rw(FUNC(megast_state::blitter_dst_inc_x_r), FUNC(megast_state::blitter_dst_inc_x_w));
- map(0xff8a30, 0xff8a31).rw(FUNC(megast_state::blitter_dst_inc_y_r), FUNC(megast_state::blitter_dst_inc_y_w));
- map(0xff8a32, 0xff8a35).rw(FUNC(megast_state::blitter_dst_r), FUNC(megast_state::blitter_dst_w));
- map(0xff8a36, 0xff8a37).rw(FUNC(megast_state::blitter_count_x_r), FUNC(megast_state::blitter_count_x_w));
- map(0xff8a38, 0xff8a39).rw(FUNC(megast_state::blitter_count_y_r), FUNC(megast_state::blitter_count_y_w));
- map(0xff8a3a, 0xff8a3b).rw(FUNC(megast_state::blitter_op_r), FUNC(megast_state::blitter_op_w));
- map(0xff8a3c, 0xff8a3d).rw(FUNC(megast_state::blitter_ctrl_r), FUNC(megast_state::blitter_ctrl_w));
+ map(0xff8a00, 0xff8a1f).rw(FUNC(st_state::blitter_halftone_r), FUNC(st_state::blitter_halftone_w));
+ map(0xff8a20, 0xff8a21).rw(FUNC(st_state::blitter_src_inc_x_r), FUNC(st_state::blitter_src_inc_x_w));
+ map(0xff8a22, 0xff8a23).rw(FUNC(st_state::blitter_src_inc_y_r), FUNC(st_state::blitter_src_inc_y_w));
+ map(0xff8a24, 0xff8a27).rw(FUNC(st_state::blitter_src_r), FUNC(st_state::blitter_src_w));
+ map(0xff8a28, 0xff8a2d).rw(FUNC(st_state::blitter_end_mask_r), FUNC(st_state::blitter_end_mask_w));
+ map(0xff8a2e, 0xff8a2f).rw(FUNC(st_state::blitter_dst_inc_x_r), FUNC(st_state::blitter_dst_inc_x_w));
+ map(0xff8a30, 0xff8a31).rw(FUNC(st_state::blitter_dst_inc_y_r), FUNC(st_state::blitter_dst_inc_y_w));
+ map(0xff8a32, 0xff8a35).rw(FUNC(st_state::blitter_dst_r), FUNC(st_state::blitter_dst_w));
+ map(0xff8a36, 0xff8a37).rw(FUNC(st_state::blitter_count_x_r), FUNC(st_state::blitter_count_x_w));
+ map(0xff8a38, 0xff8a39).rw(FUNC(st_state::blitter_count_y_r), FUNC(st_state::blitter_count_y_w));
+ map(0xff8a3a, 0xff8a3b).rw(FUNC(st_state::blitter_op_r), FUNC(st_state::blitter_op_w));
+ map(0xff8a3c, 0xff8a3d).rw(FUNC(st_state::blitter_ctrl_r), FUNC(st_state::blitter_ctrl_w));
map(0xfffa00, 0xfffa3f).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff);
- map(0xfffa40, 0xfffa57).rw(FUNC(megast_state::fpu_r), FUNC(megast_state::fpu_w));
+ map(0xfffa40, 0xfffa57).rw(FUNC(st_state::fpu_r), FUNC(st_state::fpu_w));
map(0xfffc00, 0xfffc03).rw(m_acia[0], FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
map(0xfffc04, 0xfffc07).rw(m_acia[1], FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
map(0xfffc20, 0xfffc3f).rw(RP5C15_TAG, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff);
@@ -1337,6 +1312,25 @@ void ste_state::ste_map(address_map &map)
{
st_map(map);
map(0xe00000, 0xe3ffff).rom().region(M68000_TAG, 0);
+ map(0xff8901, 0xff8901).rw(FUNC(ste_state::sound_dma_control_r), FUNC(ste_state::sound_dma_control_w));
+ map(0xff8902, 0xff8907).rw(FUNC(ste_state::sound_dma_base_r), FUNC(ste_state::sound_dma_base_w)).umask16(0x00ff);
+ map(0xff8908, 0xff890d).r(FUNC(ste_state::sound_dma_counter_r)).umask16(0x00ff);
+ map(0xff890e, 0xff8913).rw(FUNC(ste_state::sound_dma_end_r), FUNC(ste_state::sound_dma_end_w)).umask16(0x00ff);
+ map(0xff8921, 0xff8921).rw(FUNC(ste_state::sound_mode_r), FUNC(ste_state::sound_mode_w));
+ map(0xff8922, 0xff8923).rw(FUNC(ste_state::microwire_data_r), FUNC(ste_state::microwire_data_w));
+ map(0xff8924, 0xff8925).rw(FUNC(ste_state::microwire_mask_r), FUNC(ste_state::microwire_mask_w));
+ map(0xff8a00, 0xff8a1f).rw(FUNC(ste_state::blitter_halftone_r), FUNC(ste_state::blitter_halftone_w));
+ map(0xff8a20, 0xff8a21).rw(FUNC(ste_state::blitter_src_inc_x_r), FUNC(ste_state::blitter_src_inc_x_w));
+ map(0xff8a22, 0xff8a23).rw(FUNC(ste_state::blitter_src_inc_y_r), FUNC(ste_state::blitter_src_inc_y_w));
+ map(0xff8a24, 0xff8a27).rw(FUNC(ste_state::blitter_src_r), FUNC(ste_state::blitter_src_w));
+ map(0xff8a28, 0xff8a2d).rw(FUNC(ste_state::blitter_end_mask_r), FUNC(ste_state::blitter_end_mask_w));
+ map(0xff8a2e, 0xff8a2f).rw(FUNC(ste_state::blitter_dst_inc_x_r), FUNC(ste_state::blitter_dst_inc_x_w));
+ map(0xff8a30, 0xff8a31).rw(FUNC(ste_state::blitter_dst_inc_y_r), FUNC(ste_state::blitter_dst_inc_y_w));
+ map(0xff8a32, 0xff8a35).rw(FUNC(ste_state::blitter_dst_r), FUNC(ste_state::blitter_dst_w));
+ map(0xff8a36, 0xff8a37).rw(FUNC(ste_state::blitter_count_x_r), FUNC(ste_state::blitter_count_x_w));
+ map(0xff8a38, 0xff8a39).rw(FUNC(ste_state::blitter_count_y_r), FUNC(ste_state::blitter_count_y_w));
+ map(0xff8a3a, 0xff8a3b).rw(FUNC(ste_state::blitter_op_r), FUNC(ste_state::blitter_op_w));
+ map(0xff8a3c, 0xff8a3d).rw(FUNC(ste_state::blitter_ctrl_r), FUNC(ste_state::blitter_ctrl_w));
map(0xff9200, 0xff9201).portr("JOY0");
map(0xff9202, 0xff9203).portr("JOY1");
map(0xff9210, 0xff9211).portr("PADDLE0X");
@@ -1354,10 +1348,16 @@ void ste_state::ste_map(address_map &map)
void megaste_state::megaste_map(address_map &map)
{
- st_map(map);
+ megast_map(map);
map(0xe00000, 0xe3ffff).rom().region(M68000_TAG, 0);
map(0xff8c80, 0xff8c87).rw(Z8530_TAG, FUNC(scc8530_legacy_device::reg_r), FUNC(scc8530_legacy_device::reg_w)).umask16(0x00ff);
- map(0xfffc20, 0xfffc3f).rw(RP5C15_TAG, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff);
+ map(0xff8901, 0xff8901).rw(FUNC(megaste_state::sound_dma_control_r), FUNC(megaste_state::sound_dma_control_w));
+ map(0xff8902, 0xff8907).rw(FUNC(megaste_state::sound_dma_base_r), FUNC(megaste_state::sound_dma_base_w)).umask16(0x00ff);
+ map(0xff8908, 0xff890d).r(FUNC(megaste_state::sound_dma_counter_r)).umask16(0x00ff);
+ map(0xff890e, 0xff8913).rw(FUNC(megaste_state::sound_dma_end_r), FUNC(megaste_state::sound_dma_end_w)).umask16(0x00ff);
+ map(0xff8921, 0xff8921).rw(FUNC(megaste_state::sound_mode_r), FUNC(megaste_state::sound_mode_w));
+ map(0xff8922, 0xff8923).rw(FUNC(megaste_state::microwire_data_r), FUNC(megaste_state::microwire_data_w));
+ map(0xff8924, 0xff8925).rw(FUNC(megaste_state::microwire_mask_r), FUNC(megaste_state::microwire_mask_w));
}
@@ -1423,6 +1423,9 @@ void stbook_state::stbook_map(address_map &map)
//-------------------------------------------------
static INPUT_PORTS_START( ikbd )
+ PORT_START("P30")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
+
PORT_START("P31")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Control") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
PORT_BIT( 0xef, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -1570,19 +1573,19 @@ static INPUT_PORTS_START( st )
PORT_INCLUDE( ikbd )
PORT_START("IKBD_JOY0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY PORT_CONDITION("config", 0x01, EQUALS, 0x01) // XB
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY PORT_CONDITION("config", 0x01, EQUALS, 0x01) // XA
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY PORT_CONDITION("config", 0x01, EQUALS, 0x01) // YA
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY PORT_CONDITION("config", 0x01, EQUALS, 0x01) // YB
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY PORT_CONDITION("config", 0x01, EQUALS, 0x01) // XB
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY PORT_CONDITION("config", 0x01, EQUALS, 0x01) // XA
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY PORT_CONDITION("config", 0x01, EQUALS, 0x01) // YA
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY PORT_CONDITION("config", 0x01, EQUALS, 0x01) // YB
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
PORT_START("IKBD_JOY1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_CONDITION("config", 0x01, EQUALS, 0x01)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_START("IKBD_MOUSEX")
PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(5) PORT_MINMAX(0, 255) PORT_PLAYER(1) PORT_CONDITION("config", 0x01, EQUALS, 0x00)
@@ -1999,6 +2002,7 @@ void st_state::floppy_formats(format_registration &fr)
fr.add(FLOPPY_ST_FORMAT);
fr.add(FLOPPY_MSA_FORMAT);
fr.add(FLOPPY_PASTI_FORMAT);
+ fr.add(FLOPPY_IPF_FORMAT);
}
static void atari_floppies(device_slot_interface &device)
@@ -2054,13 +2058,13 @@ void st_state::common(machine_config &config)
m_rs232->cts_handler().set(m_mfp, FUNC(mc68901_device::i2_w));
m_rs232->ri_handler().set(m_mfp, FUNC(mc68901_device::i6_w));
- ACIA6850(config, m_acia[0], 0);
+ ACIA6850(config, m_acia[0]);
m_acia[0]->txd_handler().set(FUNC(st_state::ikbd_tx_w));
m_acia[0]->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<0>));
m_acia[0]->write_cts(0);
m_acia[0]->write_dcd(0);
- ACIA6850(config, m_acia[1], 0);
+ ACIA6850(config, m_acia[1]);
m_acia[1]->txd_handler().set("mdout", FUNC(midi_port_device::write_txd));
m_acia[1]->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<1>));
m_acia[1]->write_cts(0);
@@ -2085,11 +2089,12 @@ void st_state::common(machine_config &config)
// software lists
SOFTWARE_LIST(config, "flop_list").set_original("st_flop");
+ SOFTWARE_LIST(config, "cart_list").set_original("st_cart");
}
void st_state::keyboard(machine_config &config)
{
- hd6301v1_cpu_device &ikbd(HD6301V1(config, HD6301V1_TAG, Y2/8));
+ hd6301v1_cpu_device &ikbd(HD6301V1(config, HD6301V1_TAG, 4_MHz_XTAL));
ikbd.set_addrmap(AS_PROGRAM, &st_state::ikbd_map);
ikbd.in_p1_cb().set(FUNC(st_state::ikbd_port1_r));
ikbd.in_p2_cb().set(FUNC(st_state::ikbd_port2_r));
@@ -2121,9 +2126,6 @@ void st_state::st(machine_config &config)
SPEAKER(config, "mono").front_center();
m_ymsnd->add_route(ALL_OUTPUTS, "mono", 1.00);
- // cartridge
- SOFTWARE_LIST(config, "cart_list").set_original("st_cart");
-
// internal ram
RAM(config, m_ram);
m_ram->set_default_size("1M"); // 1040ST
@@ -2156,9 +2158,6 @@ void megast_state::megast(machine_config &config)
// devices
RP5C15(config, RP5C15_TAG, XTAL(32'768));
- // cartridge
- SOFTWARE_LIST(config, "cart_list").set_original("st_cart");
-
// internal ram
RAM(config, m_ram);
m_ram->set_default_size("4M"); // Mega ST 4
@@ -2196,9 +2195,6 @@ void ste_state::ste(machine_config &config)
*/
LMC1992(config, LMC1992_TAG);
- // cartridge
-// SOFTWARE_LIST(config, "cart_list").set_original("ste_cart");
-
// internal ram
RAM(config, m_ram);
m_ram->set_default_size("1M"); // 1040STe
@@ -3093,27 +3089,27 @@ COMP( 1987, megast_de, st, 0, megast, st, megast_state, empty
COMP( 1987, megast_fr, st, 0, megast, st, megast_state, empty_init, "Atari", "MEGA ST (France)", MACHINE_NOT_WORKING )
COMP( 1987, megast_se, st, 0, megast, st, megast_state, empty_init, "Atari", "MEGA ST (Sweden)", MACHINE_NOT_WORKING )
COMP( 1987, megast_sg, st, 0, megast, st, megast_state, empty_init, "Atari", "MEGA ST (Switzerland)", MACHINE_NOT_WORKING )
-COMP( 1989, ste, 0, 0, ste, ste, ste_state, empty_init, "Atari", "STE (USA)", MACHINE_NOT_WORKING )
-COMP( 1989, ste_uk, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STE (UK)", MACHINE_NOT_WORKING )
-COMP( 1989, ste_de, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STE (Germany)", MACHINE_NOT_WORKING )
-COMP( 1989, ste_es, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STE (Spain)", MACHINE_NOT_WORKING )
-COMP( 1989, ste_fr, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STE (France)", MACHINE_NOT_WORKING )
-COMP( 1989, ste_it, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STE (Italy)", MACHINE_NOT_WORKING )
-COMP( 1989, ste_se, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STE (Sweden)", MACHINE_NOT_WORKING )
-COMP( 1989, ste_sg, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STE (Switzerland)", MACHINE_NOT_WORKING )
+COMP( 1989, ste, 0, 0, ste, ste, ste_state, empty_init, "Atari", "STe (USA)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_uk, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STe (UK)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_de, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STe (Germany)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_es, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STe (Spain)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_fr, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STe (France)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_it, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STe (Italy)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_se, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STe (Sweden)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_sg, ste, 0, ste, ste, ste_state, empty_init, "Atari", "STe (Switzerland)", MACHINE_NOT_WORKING )
//COMP( 1990, stbook, ste, 0, stbook, stbook, stbook_state, empty_init, "Atari", "STBook", MACHINE_NOT_WORKING )
COMP( 1990, tt030, 0, 0, tt030, tt030, ste_state, empty_init, "Atari", "TT030 (USA)", MACHINE_NOT_WORKING )
COMP( 1990, tt030_uk, tt030, 0, tt030, tt030, ste_state, empty_init, "Atari", "TT030 (UK)", MACHINE_NOT_WORKING )
COMP( 1990, tt030_de, tt030, 0, tt030, tt030, ste_state, empty_init, "Atari", "TT030 (Germany)", MACHINE_NOT_WORKING )
COMP( 1990, tt030_fr, tt030, 0, tt030, tt030, ste_state, empty_init, "Atari", "TT030 (France)", MACHINE_NOT_WORKING )
COMP( 1990, tt030_pl, tt030, 0, tt030, tt030, ste_state, empty_init, "Atari", "TT030 (Poland)", MACHINE_NOT_WORKING )
-COMP( 1991, megaste, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STE (USA)", MACHINE_NOT_WORKING )
-COMP( 1991, megaste_uk, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STE (UK)", MACHINE_NOT_WORKING )
-COMP( 1991, megaste_de, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STE (Germany)", MACHINE_NOT_WORKING )
-COMP( 1991, megaste_es, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STE (Spain)", MACHINE_NOT_WORKING )
-COMP( 1991, megaste_fr, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STE (France)", MACHINE_NOT_WORKING )
-COMP( 1991, megaste_it, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STE (Italy)", MACHINE_NOT_WORKING )
-COMP( 1991, megaste_se, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STE (Sweden)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STe (USA)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_uk, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STe (UK)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_de, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STe (Germany)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_es, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STe (Spain)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_fr, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STe (France)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_it, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STe (Italy)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_se, ste, 0, megaste, st, megaste_state, empty_init, "Atari", "MEGA STe (Sweden)", MACHINE_NOT_WORKING )
COMP( 1992, falcon30, 0, 0, falcon, falcon, ste_state, empty_init, "Atari", "Falcon030", MACHINE_NOT_WORKING )
COMP( 1992, falcon40, falcon30, 0, falcon40, falcon, ste_state, empty_init, "Atari", "Falcon040 (prototype)", MACHINE_NOT_WORKING )
//COMP( 1989, stacy, st, 0, stacy, stacy, st_state, empty_init, "Atari", "Stacy", MACHINE_NOT_WORKING )
diff --git a/src/mame/includes/atarist.h b/src/mame/includes/atarist.h
index 5cf2fbd28af..662a0ff9784 100644
--- a/src/mame/includes/atarist.h
+++ b/src/mame/includes/atarist.h
@@ -96,23 +96,8 @@ public:
m_ram(*this, RAM_TAG),
m_rs232(*this, RS232_TAG),
m_ymsnd(*this, YM2149_TAG),
- m_p31(*this, "P31"),
- m_p32(*this, "P32"),
- m_p33(*this, "P33"),
- m_p34(*this, "P34"),
- m_p35(*this, "P35"),
- m_p36(*this, "P36"),
- m_p37(*this, "P37"),
- m_p40(*this, "P40"),
- m_p41(*this, "P41"),
- m_p42(*this, "P42"),
- m_p43(*this, "P43"),
- m_p44(*this, "P44"),
- m_p45(*this, "P45"),
- m_p46(*this, "P46"),
- m_p47(*this, "P47"),
- m_joy0(*this, "IKBD_JOY0"),
- m_joy1(*this, "IKBD_JOY1"),
+ m_keys(*this, "P%o", 030),
+ m_joy(*this, "IKBD_JOY%u", 0U),
m_mousex(*this, "IKBD_MOUSEX"),
m_mousey(*this, "IKBD_MOUSEY"),
m_config(*this, "config"),
@@ -144,23 +129,8 @@ protected:
required_device<ram_device> m_ram;
required_device<rs232_port_device> m_rs232;
required_device<ym2149_device> m_ymsnd;
- required_ioport m_p31;
- required_ioport m_p32;
- required_ioport m_p33;
- required_ioport m_p34;
- required_ioport m_p35;
- required_ioport m_p36;
- required_ioport m_p37;
- required_ioport m_p40;
- required_ioport m_p41;
- required_ioport m_p42;
- required_ioport m_p43;
- required_ioport m_p44;
- required_ioport m_p45;
- required_ioport m_p46;
- required_ioport m_p47;
- optional_ioport m_joy0;
- optional_ioport m_joy1;
+ required_ioport_array<16> m_keys;
+ optional_ioport_array<2> m_joy;
optional_ioport m_mousex;
optional_ioport m_mousey;
optional_ioport m_config;
@@ -337,8 +307,12 @@ protected:
void ikbd_map(address_map &map);
void cpu_space_map(address_map &map);
void st_map(address_map &map);
+ void megast_map(address_map &map);
void keyboard(machine_config &config);
+ uint16_t fpu_r();
+ void fpu_w(uint16_t data);
+
virtual void device_timer(emu_timer &timer, device_timer_id id, int param) override;
virtual void machine_start() override;
virtual void video_start() override;
@@ -353,10 +327,7 @@ public:
: st_state(mconfig, type, tag)
{ }
- uint16_t fpu_r();
- void fpu_w(uint16_t data);
void megast(machine_config &config);
- void megast_map(address_map &map);
};
class ste_state : public st_state
diff --git a/src/mame/video/atarist.cpp b/src/mame/video/atarist.cpp
index 093c118f982..f96f5a0f785 100644
--- a/src/mame/video/atarist.cpp
+++ b/src/mame/video/atarist.cpp
@@ -203,10 +203,6 @@ void st_state::glue_tick()
int v = (y >= m_shifter_y_start) && (y < m_shifter_y_end);
int h = (x >= m_shifter_x_start) && (x < m_shifter_x_end);
- if(m_shifter_mode == 1) {
- int dt = 8;
- h = (x >= m_shifter_x_start-dt) && (x < m_shifter_x_end-dt);
- }
int de = h && v;
if(!x) {