summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2012-10-07 23:07:44 +0000
committer smf- <smf-@users.noreply.github.com>2012-10-07 23:07:44 +0000
commitc683bc7181861a24c3f561752e2f828bfe70eeff (patch)
tree5c196a34463055b93ef286905c670e11a71ea16f /src
parent95dcf93a69b4240488fecb39f77363eefa405f86 (diff)
(MESS) Uses the IO line from the SASI bus to determine the direction of the SASI data port. This seems the most likely way the hardware works. [smf]
Diffstat (limited to 'src')
-rw-r--r--src/mess/drivers/v1050.c26
-rw-r--r--src/mess/includes/v1050.h6
2 files changed, 30 insertions, 2 deletions
diff --git a/src/mess/drivers/v1050.c b/src/mess/drivers/v1050.c
index 21662580d18..a502fa4b0ba 100644
--- a/src/mess/drivers/v1050.c
+++ b/src/mess/drivers/v1050.c
@@ -345,6 +345,28 @@ WRITE8_MEMBER( v1050_state::dvint_clr_w )
m_subcpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
}
+WRITE8_MEMBER( v1050_state::sasi_data_w )
+{
+ data_out = data;
+
+ if( m_sasibus->scsi_io_r() != 0 )
+ {
+ m_sasibus->scsi_data_w( data );
+ }
+}
+
+WRITE_LINE_MEMBER( v1050_state::sasi_io_w )
+{
+ if( state != 0 )
+ {
+ m_sasibus->scsi_data_w( data_out );
+ }
+ else
+ {
+ m_sasibus->scsi_data_w( 0xff );
+ }
+}
+
READ8_MEMBER( v1050_state::sasi_status_r )
{
/*
@@ -447,7 +469,7 @@ static ADDRESS_MAP_START( v1050_io, AS_IO, 8, v1050_state )
AM_RANGE(0xb0, 0xb0) AM_READWRITE(dint_clr_r, dint_clr_w)
AM_RANGE(0xc0, 0xc0) AM_WRITE(v1050_i8214_w)
AM_RANGE(0xd0, 0xd0) AM_WRITE(bank_w)
- AM_RANGE(0xe0, 0xe0) AM_DEVREADWRITE(SASIBUS_TAG ":host", scsicb_device, scsi_data_r, scsi_data_w)
+ AM_RANGE(0xe0, 0xe0) AM_WRITE(sasi_data_w) AM_DEVREAD(SASIBUS_TAG ":host", scsicb_device, scsi_data_r)
AM_RANGE(0xe1, 0xe1) AM_READWRITE(sasi_status_r, sasi_ctrl_w)
ADDRESS_MAP_END
@@ -989,7 +1011,7 @@ static const SCSICB_interface sasi_intf =
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
- DEVCB_NULL,
+ DEVCB_DRIVER_LINE_MEMBER(v1050_state, sasi_io_w),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
diff --git a/src/mess/includes/v1050.h b/src/mess/includes/v1050.h
index 8166e9adcb4..90c008b74b2 100644
--- a/src/mess/includes/v1050.h
+++ b/src/mess/includes/v1050.h
@@ -128,6 +128,8 @@ public:
DECLARE_READ8_MEMBER( videoram_r );
DECLARE_WRITE8_MEMBER( videoram_w );
DECLARE_WRITE_LINE_MEMBER( crtc_vs_w );
+ DECLARE_WRITE8_MEMBER(sasi_data_w);
+ DECLARE_WRITE_LINE_MEMBER(sasi_io_w);
DECLARE_READ8_MEMBER( sasi_status_r );
DECLARE_WRITE8_MEMBER( sasi_ctrl_w );
@@ -157,6 +159,10 @@ public:
required_shared_ptr<UINT8> m_video_ram; // video RAM
UINT8 *m_attr_ram; // attribute RAM
UINT8 m_attr; // attribute latch
+
+ // sasi state
+ UINT8 data_out;
+
TIMER_DEVICE_CALLBACK_MEMBER(v1050_keyboard_tick);
TIMER_DEVICE_CALLBACK_MEMBER(sasi_ack_tick);
TIMER_DEVICE_CALLBACK_MEMBER(sasi_rst_tick);