summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-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/includes/abc1600.h49
4 files changed, 71 insertions, 49 deletions
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/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;