summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--hash/microvision.xml4
-rw-r--r--src/devices/bus/abcbus/lux4105.cpp8
-rw-r--r--src/devices/bus/scsi/s1410.cpp3
-rw-r--r--src/mame/drivers/abc1600.cpp60
-rw-r--r--src/mame/drivers/microvsn.cpp15
-rw-r--r--src/mame/includes/abc1600.h49
-rw-r--r--src/mame/layout/microvision.lay5
7 files changed, 82 insertions, 62 deletions
diff --git a/hash/microvision.xml b/hash/microvision.xml
index 7556eed817e..4b927287e3e 100644
--- a/hash/microvision.xml
+++ b/hash/microvision.xml
@@ -29,7 +29,7 @@ The "paddle" feature is used to indicate whether there is paddle circuitry on th
The "butmask" feature indicates cartridge button restrict mask (active-low)
-->
-<softwarelist name="microvision" description="Milton Bradley MicroVision cartridges">
+<softwarelist name="microvision" description="Milton Bradley Microvision cartridges">
<software name="alienrdr">
<description>Alien Raiders</description>
@@ -70,7 +70,7 @@ The "butmask" feature indicates cartridge button restrict mask (active-low)
<year>1979</year>
<publisher>Milton Bradley</publisher>
<info name="pcb" value="4952 REV-A" />
- <info name="serial" value="4952" /> <!-- pack-in game, serial of MicroVision console -->
+ <info name="serial" value="4952" /> <!-- pack-in game, serial of Microvision console -->
<part name="cart" interface="microvision_cart">
<feature name="clock" value="500000" /> <!-- RC = 100pf/23.2K -->
<feature name="pla" value="0" />
diff --git a/src/devices/bus/abcbus/lux4105.cpp b/src/devices/bus/abcbus/lux4105.cpp
index fbcf1dec72c..8a502c2886f 100644
--- a/src/devices/bus/abcbus/lux4105.cpp
+++ b/src/devices/bus/abcbus/lux4105.cpp
@@ -126,17 +126,17 @@ void luxor_4105_device::device_add_mconfig(machine_config &config)
INPUT_PORTS_START( luxor_4105 )
PORT_START("1E")
- PORT_DIPNAME( 0x03, 0x00, "Stepping" ) PORT_DIPLOCATION("1E:1,2")
+ PORT_DIPNAME( 0x03, 0x03, "Stepping" ) PORT_DIPLOCATION("1E:1,2")
PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x01, "Half (Seagate/Texas)" )
PORT_DIPSETTING( 0x02, "Half (Tandon)" )
PORT_DIPSETTING( 0x03, "Buffered" )
- PORT_DIPNAME( 0x0c, 0x00, "Heads" ) PORT_DIPLOCATION("1E:3,4")
+ PORT_DIPNAME( 0x0c, 0x04, "Heads" ) PORT_DIPLOCATION("1E:3,4")
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPSETTING( 0x08, "6" )
PORT_DIPSETTING( 0x0c, "8" )
- PORT_DIPNAME( 0xf0, 0x00, "Drive Type" ) PORT_DIPLOCATION("1E:5,6,7,8")
+ PORT_DIPNAME( 0xf0, 0x30, "Drive Type" ) PORT_DIPLOCATION("1E:5,6,7,8")
PORT_DIPSETTING( 0x00, "Seagate ST506" )
PORT_DIPSETTING( 0x10, "Rodime RO100" )
PORT_DIPSETTING( 0x20, "Shugart SA600" )
@@ -285,7 +285,7 @@ uint8_t luxor_4105_device::abcbus_stat()
1 ?
2 ?
3 ?
- 4
+ 4 0
5
6 ? (tested at 014D9A, after command 08 sent and 1 byte read from SASI, should be 1)
7
diff --git a/src/devices/bus/scsi/s1410.cpp b/src/devices/bus/scsi/s1410.cpp
index 5416089fd9d..d8ed4887cd1 100644
--- a/src/devices/bus/scsi/s1410.cpp
+++ b/src/devices/bus/scsi/s1410.cpp
@@ -112,7 +112,8 @@ ROM_START( s1410 )
ROM_REGION( 0x1000, Z8400A_TAG, 0 )
ROM_LOAD( "104521f", 0x0000, 0x1000, CRC(305b8e76) SHA1(9efaa53ae86bc111bd263ad433e083f78a000cab) )
ROM_LOAD( "104521g", 0x0000, 0x1000, CRC(24385115) SHA1(c389f6108cd5ed798a090acacce940ee43d77042) )
- ROM_LOAD( "104788d", 0x0000, 0x1000, CRC(2e385e2d) SHA1(7e2c349b2b6e95f2134f82cffc38d86b8a68390d) )
+ ROM_LOAD( "104788d", 0x0000, 0x1000, CRC(2e385e2d) SHA1(7e2c349b2b6e95f2134f82cffc38d86b8a68390d) ) // BASF 6188
+ ROM_LOAD( "104788e", 0x0000, 0x1000, CRC(40a7195d) SHA1(bf68e99dad182bfcbb5d488aeb440cba572a6ef8) ) // Seagate ST-251
ROM_REGION( 0x20, "103911", 0 )
ROM_LOAD( "103911", 0x00, 0x20, NO_DUMP ) // DM74S288N
diff --git a/src/mame/drivers/abc1600.cpp b/src/mame/drivers/abc1600.cpp
index 72cb46dfb53..79d507d0c87 100644
--- a/src/mame/drivers/abc1600.cpp
+++ b/src/mame/drivers/abc1600.cpp
@@ -70,8 +70,9 @@
- port C, open drain output bit PC1 (RTC/NVRAM data)
- hard disk
- 4105 SASI interface card
- - SASI interface (scsibus.cpp)
- - connect RS-232 port A
+ - connect RS-232 printer port
+ - Z80 SCC/DART interrupt chain
+ - Z80 SCC DMA request
*/
@@ -619,12 +620,12 @@ WRITE8_MEMBER( abc1600_state::dart_w )
READ8_MEMBER( abc1600_state::scc_r )
{
- return m_scc->reg_r(A1_A2);
+ return m_scc->ab_dc_r(A2_A1);
}
WRITE8_MEMBER( abc1600_state::scc_w )
{
- m_scc->reg_w(A1_A2, data);
+ m_scc->ab_dc_w(A2_A1, data);
}
@@ -894,14 +895,43 @@ void abc1600_state::abc1600(machine_config &config)
m_dma2->out_iorq_callback().set(ABC1600_MAC_TAG, FUNC(abc1600_mac_device::dma2_iorq_w));
Z80DART(config, m_dart, 64_MHz_XTAL / 16);
- m_dart->out_txda_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
- m_dart->out_dtra_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr));
- m_dart->out_rtsa_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
- m_dart->out_txdb_callback().set(ABC_KEYBOARD_PORT_TAG, FUNC(abc_keyboard_port_device::txd_w));
m_dart->out_int_callback().set_inputline(m_maincpu, M68K_IRQ_5); // shared with SCC
+ m_dart->out_txda_callback().set(RS232_PR_TAG, FUNC(rs232_port_device::write_txd));
+ //m_dart->out_dtra_callback().set(RS232_PR_TAG, FUNC(rs232_port_device::write_dcd));
+ //m_dart->out_rtsa_callback().set(RS232_PR_TAG, FUNC(rs232_port_device::write_cts));
+ m_dart->out_txdb_callback().set(ABC_KEYBOARD_PORT_TAG, FUNC(abc_keyboard_port_device::txd_w));
+
+ abc_keyboard_port_device &kb(ABC_KEYBOARD_PORT(config, ABC_KEYBOARD_PORT_TAG, abc_keyboard_devices, "abc99"));
+ kb.out_rx_handler().set(m_dart, FUNC(z80dart_device::rxb_w));
+ kb.out_trxc_handler().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
+ kb.out_keydown_handler().set(m_dart, FUNC(z80dart_device::dcdb_w));
- SCC8530(config, m_scc, 64_MHz_XTAL / 16);
- m_scc->intrq_callback().set_inputline(MC68008P8_TAG, M68K_IRQ_5);
+ rs232_port_device &rs232pr(RS232_PORT(config, RS232_PR_TAG, default_rs232_devices, nullptr));
+ rs232pr.rxd_handler().set(Z8470AB1_TAG, FUNC(z80dart_device::rxa_w));
+ //rs232pr.rts_handler().set(Z8470AB1_TAG, FUNC(z80dart_device::ctsa_w));
+ //rs232pr.dtr_handler().set(Z8470AB1_TAG, FUNC(z80dart_device::dcda_w));
+
+ SCC8530N(config, m_scc, 64_MHz_XTAL / 16);
+ m_scc->out_int_callback().set_inputline(MC68008P8_TAG, M68K_IRQ_5);
+ //m_scc->out_wreqa_callback().set(FUNC(abc1600_state::sccrq_w));
+ //m_scc->out_wreqb_callback().set(FUNC(abc1600_state::sccrq_w));
+ m_scc->out_txda_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
+ m_scc->out_dtra_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr));
+ m_scc->out_rtsa_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts));
+ m_scc->out_txdb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
+ m_scc->out_dtrb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr));
+ m_scc->out_rtsb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
+
+ rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr));
+ rs232a.rxd_handler().set(Z8530B1_TAG, FUNC(scc8530_device::rxa_w));
+ rs232a.cts_handler().set(Z8530B1_TAG, FUNC(scc8530_device::ctsa_w));
+ rs232a.dcd_handler().set(Z8530B1_TAG, FUNC(scc8530_device::dcda_w));
+ rs232a.ri_handler().set(Z8530B1_TAG, FUNC(scc8530_device::synca_w));
+ rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr));
+ rs232b.rxd_handler().set(Z8530B1_TAG, FUNC(scc8530_device::rxb_w));
+ rs232b.cts_handler().set(Z8530B1_TAG, FUNC(scc8530_device::ctsb_w));
+ rs232b.dcd_handler().set(Z8530B1_TAG, FUNC(scc8530_device::dcdb_w));
+ rs232b.ri_handler().set(Z8530B1_TAG, FUNC(scc8530_device::syncb_w));
Z8536(config, m_cio, 64_MHz_XTAL / 16);
m_cio->irq_wr_cb().set_inputline(MC68008P8_TAG, M68K_IRQ_2);
@@ -923,16 +953,6 @@ void abc1600_state::abc1600(machine_config &config)
FLOPPY_CONNECTOR(config, SAB1797_02P_TAG":1", abc1600_floppies, nullptr, floppy_image_device::default_floppy_formats);
FLOPPY_CONNECTOR(config, SAB1797_02P_TAG":2", abc1600_floppies, "525qd", floppy_image_device::default_floppy_formats);
- RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr);
-
- rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr));
- rs232b.rxd_handler().set(m_dart, FUNC(z80dart_device::rxa_w));
-
- abc_keyboard_port_device &kb(ABC_KEYBOARD_PORT(config, ABC_KEYBOARD_PORT_TAG, abc_keyboard_devices, "abc99"));
- kb.out_rx_handler().set(m_dart, FUNC(z80dart_device::rxb_w));
- kb.out_trxc_handler().set(m_dart, FUNC(z80dart_device::rxtxcb_w));
- kb.out_keydown_handler().set(m_dart, FUNC(z80dart_device::dcdb_w));
-
abcbus_slot_device &bus0i(ABCBUS_SLOT(config, "bus0i", 64_MHz_XTAL / 16, abc1600bus_cards, nullptr));
bus0i.irq_callback().set(m_cio, FUNC(z8536_device::pa7_w));
abcbus_slot_device &bus0x(ABCBUS_SLOT(config, "bus0x", 64_MHz_XTAL / 16, abc1600bus_cards, nullptr));
diff --git a/src/mame/drivers/microvsn.cpp b/src/mame/drivers/microvsn.cpp
index a4de725d2c1..6d636e55250 100644
--- a/src/mame/drivers/microvsn.cpp
+++ b/src/mame/drivers/microvsn.cpp
@@ -3,7 +3,7 @@
// thanks-to:Dan Boris, Kevin Horton, Sean Riddle
/******************************************************************************
-Milton Bradley MicroVision, handheld game console
+Milton Bradley Microvision, handheld game console
Hardware notes:
- SCUS0488(Hughes HLCD0488) LCD, 16*16 screen
@@ -12,6 +12,7 @@ Hardware notes:
12 games were released, all of them have a TMS1100 MCU. The first couple of
games had an Intel 8021 MCU at first, but Milton Bradley switched to TMS1100.
+See the softwarelist XML for details.
Each game had a screen- and keypad overlay attached to it, MAME external
artwork is recommended. It's also advised to disable screen filtering,
@@ -67,7 +68,7 @@ public:
protected:
virtual void machine_start() override;
- virtual void machine_reset() override;
+ virtual void machine_reset() override { apply_settings(); }
virtual void device_post_load() override { apply_settings(); }
private:
@@ -124,11 +125,6 @@ void microvision_state::machine_start()
// m_button_mask, m_paddle_on
}
-void microvision_state::machine_reset()
-{
- apply_settings();
-}
-
/******************************************************************************
@@ -259,7 +255,7 @@ uint32_t microvision_state::screen_update(screen_device &screen, bitmap_rgb32 &b
for (int x = 0; x < 16; x++)
{
// simulate LCD persistence
- int p = m_lcd_pwm->read_element_bri(y ^ 15, x ^ 15) * 25000;
+ int p = m_lcd_pwm->read_element_bri(y ^ 15, x ^ 15) * 10000;
p = (p > 255) ? 0 : p ^ 255;
bitmap.pix32(y, x) = p << 16 | p << 8 | p;
@@ -462,6 +458,7 @@ void microvision_state::microvision(machine_config &config)
m_lcd->write_cols().set(FUNC(microvision_state::lcd_output_w));
PWM_DISPLAY(config, m_lcd_pwm).set_size(16, 16);
+ m_lcd_pwm->set_interpolation(0.2);
config.set_default_layout(layout_microvision);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
@@ -509,4 +506,4 @@ ROM_END
******************************************************************************/
// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
-CONS( 1979, microvsn, 0, 0, microvision, microvision, microvision_state, empty_init, "Milton Bradley", "MicroVision", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1979, microvsn, 0, 0, microvision, microvision, microvision_state, empty_init, "Milton Bradley", "Microvision", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
diff --git a/src/mame/includes/abc1600.h b/src/mame/includes/abc1600.h
index 2122c4ddf77..1a15fcb766c 100644
--- a/src/mame/includes/abc1600.h
+++ b/src/mame/includes/abc1600.h
@@ -6,19 +6,19 @@
#define MAME_INCLUDES_ABC1600_H
#include "bus/abcbus/abcbus.h"
+#include "bus/abckb/abckb.h"
#include "bus/rs232/rs232.h"
#include "cpu/m68000/m68000.h"
-#include "machine/8530scc.h"
-#include "bus/abckb/abckb.h"
+#include "imagedev/floppy.h"
#include "machine/abc1600mac.h"
#include "machine/e0516.h"
#include "machine/nmc9306.h"
#include "machine/ram.h"
#include "machine/wd_fdc.h"
#include "machine/z80dma.h"
+#include "machine/z80scc.h"
#include "machine/z80sio.h"
#include "machine/z8536.h"
-#include "imagedev/floppy.h"
#include "video/abc1600.h"
@@ -45,6 +45,7 @@
#define BUS2_TAG "bus2"
#define RS232_A_TAG "rs232a"
#define RS232_B_TAG "rs232b"
+#define RS232_PR_TAG "rs232pr"
#define ABC_KEYBOARD_PORT_TAG "kb"
@@ -58,26 +59,26 @@
class abc1600_state : public driver_device
{
public:
- abc1600_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, MC68008P8_TAG),
- m_dma0(*this, Z8410AB1_0_TAG),
- m_dma1(*this, Z8410AB1_1_TAG),
- m_dma2(*this, Z8410AB1_2_TAG),
- m_dart(*this, Z8470AB1_TAG),
- m_scc(*this, Z8530B1_TAG),
- m_cio(*this, Z8536B1_TAG),
- m_fdc(*this, SAB1797_02P_TAG),
- m_rtc(*this, E050_C16PC_TAG),
- m_nvram(*this, NMC9306_TAG),
- m_ram(*this, RAM_TAG),
- m_floppy0(*this, SAB1797_02P_TAG":0"),
- m_floppy1(*this, SAB1797_02P_TAG":1"),
- m_floppy2(*this, SAB1797_02P_TAG":2"),
- m_bus0i(*this, BUS0I_TAG),
- m_bus0x(*this, BUS0X_TAG),
- m_bus1(*this, BUS1_TAG),
- m_bus2(*this, BUS2_TAG)
+ abc1600_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, MC68008P8_TAG),
+ m_dma0(*this, Z8410AB1_0_TAG),
+ m_dma1(*this, Z8410AB1_1_TAG),
+ m_dma2(*this, Z8410AB1_2_TAG),
+ m_dart(*this, Z8470AB1_TAG),
+ m_scc(*this, Z8530B1_TAG),
+ m_cio(*this, Z8536B1_TAG),
+ m_fdc(*this, SAB1797_02P_TAG),
+ m_rtc(*this, E050_C16PC_TAG),
+ m_nvram(*this, NMC9306_TAG),
+ m_ram(*this, RAM_TAG),
+ m_floppy0(*this, SAB1797_02P_TAG":0"),
+ m_floppy1(*this, SAB1797_02P_TAG":1"),
+ m_floppy2(*this, SAB1797_02P_TAG":2"),
+ m_bus0i(*this, BUS0I_TAG),
+ m_bus0x(*this, BUS0X_TAG),
+ m_bus1(*this, BUS1_TAG),
+ m_bus2(*this, BUS2_TAG)
{ }
required_device<m68000_base_device> m_maincpu;
@@ -85,7 +86,7 @@ public:
required_device<z80dma_device> m_dma1;
required_device<z80dma_device> m_dma2;
required_device<z80dart_device> m_dart;
- required_device<scc8530_legacy_device> m_scc;
+ required_device<scc8530_device> m_scc;
required_device<z8536_device> m_cio;
required_device<fd1797_device> m_fdc;
required_device<e0516_device> m_rtc;
diff --git a/src/mame/layout/microvision.lay b/src/mame/layout/microvision.lay
index a80d1fe24fc..2e475ae7a1b 100644
--- a/src/mame/layout/microvision.lay
+++ b/src/mame/layout/microvision.lay
@@ -7,8 +7,8 @@ license:CC0
<!-- define elements -->
<element name="lcdb"><rect><color red="1" green="1" blue="1" /></rect></element>
- <element name="lcdm"><rect><color red="0.75" green="0.78" blue="0.77" /></rect></element>
- <element name="lcda"><rect><color red="0.3" green="0.3" blue="0.3" /></rect></element>
+ <element name="lcdm"><rect><color red="0.75" green="0.78" blue="0.78" /></rect></element>
+ <element name="lcda"><rect><color red="0.22" green="0.2" blue="0.36" /></rect></element> <!-- blue tint -->
<!-- build screen -->
@@ -19,6 +19,7 @@ license:CC0
<element ref="lcdb"><bounds x="0" y="0" width="18" height="18" /></element>
<screen index="0"><bounds x="1" y="1" width="16" height="16" /></screen>
+ <!-- draw the grid -->
<repeat count="17">
<param name="i" start="0.95" increment="1" />
<element ref="lcdb"><bounds x="~i~" y="0.5" width="0.1" height="17" /></element>