diff options
author | 2023-02-23 22:49:48 -0500 | |
---|---|---|
committer | 2023-02-23 23:02:35 -0500 | |
commit | c64e2da46dea622b35350b8cd9fe38da4b265d1b (patch) | |
tree | 722d954e58106312ddee362fb69b07af30673c05 /src/devices/machine/ncr53c90.h | |
parent | 3734eb205ae562155a01d3f17c0bd44ea68ed431 (diff) |
ncr53c90: Numerous fixes
- Prevent recursive stepping when scsi_ctrl_changed is called in the middle of a state (most likely by HLE SCSI devices programmed to respond instantly)
- Add some calls to the state machine stepping handler for non-timeout conditions that may advance it, particularly non-DMA writes to the FIFO
- Always wait for FIFO to have at least one byte before sending anything
- Properly interpret configuration flag for Save Residual Byte 16-bit DMA mode
- Use little-endian byte order for 16-bit DMA handlers, but add alternate byte-swapping handlers for convenient use with big-endian systems
- Allow 16-bit DMA handlers to access just one byte in the FIFO rather than exit MAME with an exception
- Always honor timeout for selection arbitration (previously any event could short-circuit it)
- Allow side effects of read handlers to be disabled for debugging
* macquadra700.cpp: Correct SCSI chip type and bus configuration mode
Diffstat (limited to 'src/devices/machine/ncr53c90.h')
-rw-r--r-- | src/devices/machine/ncr53c90.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/devices/machine/ncr53c90.h b/src/devices/machine/ncr53c90.h index 1d908b8eb09..3ceb3905265 100644 --- a/src/devices/machine/ncr53c90.h +++ b/src/devices/machine/ncr53c90.h @@ -206,6 +206,7 @@ protected: bool irq, drq; bool dma_command; bool test_mode; + int stepping; void dma_set(int dir); virtual void check_drq(); @@ -316,6 +317,9 @@ public: u16 dma16_r(); void dma16_w(u16 data); + u16 dma16_swap_r() { return swapendian_int16(dma16_r()); } + void dma16_swap_w(u16 data) { return dma16_w(swapendian_int16(data)); } + protected: ncr53c94_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -339,6 +343,12 @@ private: busmd_t m_busmd; }; +class ncr53c96_device : public ncr53c94_device +{ +public: + ncr53c96_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +}; + class ncr53cf94_device : public ncr53c94_device { public: @@ -354,6 +364,7 @@ public: DECLARE_DEVICE_TYPE(NCR53C90, ncr53c90_device) DECLARE_DEVICE_TYPE(NCR53C90A, ncr53c90a_device) DECLARE_DEVICE_TYPE(NCR53C94, ncr53c94_device) +DECLARE_DEVICE_TYPE(NCR53C96, ncr53c96_device) DECLARE_DEVICE_TYPE(NCR53CF94, ncr53cf94_device) DECLARE_DEVICE_TYPE(NCR53CF96, ncr53cf96_device) |