summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/ncr53c90.h
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2023-02-23 22:49:48 -0500
committer AJR <ajrhacker@users.noreply.github.com>2023-02-23 23:02:35 -0500
commitc64e2da46dea622b35350b8cd9fe38da4b265d1b (patch)
tree722d954e58106312ddee362fb69b07af30673c05 /src/devices/machine/ncr53c90.h
parent3734eb205ae562155a01d3f17c0bd44ea68ed431 (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.h11
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)