diff options
author | 2014-09-28 01:21:43 +0000 | |
---|---|---|
committer | 2014-09-28 01:21:43 +0000 | |
commit | c5e24175a17c4547ec306d95a6f67cb80882303e (patch) | |
tree | 060333c0e683c7b16678822941baca44c05fd233 /src/emu/bus/scsi | |
parent | 41d627253cf55dfc323b7e950f59b8221933d806 (diff) |
(mess) pc9801: make sasi partially work (nw)
scsi: sync rest of lines with input buffer (nw)
---
The 9801f will read the hdd but appears to not like disks without 256 byte sectors.
The ux and rs don't even attempt to access the sasi controller and seem to have no driver in their firmwares, are they supposed to have an external rom?
Diffstat (limited to 'src/emu/bus/scsi')
-rw-r--r-- | src/emu/bus/scsi/pc9801_sasi.c | 26 | ||||
-rw-r--r-- | src/emu/bus/scsi/pc9801_sasi.h | 18 | ||||
-rw-r--r-- | src/emu/bus/scsi/scsi.c | 10 |
3 files changed, 54 insertions, 0 deletions
diff --git a/src/emu/bus/scsi/pc9801_sasi.c b/src/emu/bus/scsi/pc9801_sasi.c new file mode 100644 index 00000000000..82fcbe41239 --- /dev/null +++ b/src/emu/bus/scsi/pc9801_sasi.c @@ -0,0 +1,26 @@ +#include "pc9801_sasi.h" + +#define SASI_CMD_SPECIFY 0xc2 // according to x68k_hdc.c + +const device_type PC9801_SASI = &device_creator<pc9801_sasi_device>; + +pc9801_sasi_device::pc9801_sasi_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : scsihd_device(mconfig, PC9801_SASI, "PC-9801 SASI Controller", tag, owner, clock, "pc9801_sasi", __FILE__) +{ +} + +void pc9801_sasi_device::ExecCommand() +{ + switch(command[0]) + { + case SASI_CMD_SPECIFY: + m_phase = SCSI_PHASE_DATAOUT; + m_status_code = SCSI_STATUS_CODE_GOOD; + m_transfer_length = 10; + break; + + default: + scsihd_device::ExecCommand(); + break; + } +} diff --git a/src/emu/bus/scsi/pc9801_sasi.h b/src/emu/bus/scsi/pc9801_sasi.h new file mode 100644 index 00000000000..21876a6f519 --- /dev/null +++ b/src/emu/bus/scsi/pc9801_sasi.h @@ -0,0 +1,18 @@ +#ifndef PC9801_SASI_H_ +#define PC9801_SASI_H_ + +#include "scsihd.h" + +class pc9801_sasi_device : public scsihd_device +{ +public: + // construction/destruction + pc9801_sasi_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual void ExecCommand(); +}; + +// device type definition +extern const device_type PC9801_SASI; + +#endif /* PC9801_SASI_H_ */ diff --git a/src/emu/bus/scsi/scsi.c b/src/emu/bus/scsi/scsi.c index 1aa25104ac3..7bf6f732064 100644 --- a/src/emu/bus/scsi/scsi.c +++ b/src/emu/bus/scsi/scsi.c @@ -122,6 +122,16 @@ void SCSI_PORT_DEVICE::device_start() m_data5_handler(0); m_data6_handler(0); m_data7_handler(0); + + m_bsy_handler(0); + m_sel_handler(0); + m_cd_handler(0); + m_io_handler(0); + m_msg_handler(0); + m_req_handler(0); + m_ack_handler(0); + m_atn_handler(0); + m_rst_handler(0); } void SCSI_PORT_DEVICE::update_bsy() |