openMSX
SCSIDevice.hh
Go to the documentation of this file.
1 #ifndef SCSIDEVICE_HH
2 #define SCSIDEVICE_HH
3 
4 #include "SCSI.hh"
5 
6 namespace openmsx {
7 
8 class SCSIDevice
9 {
10 public:
11  static const unsigned BIT_SCSI2 = 0x0001;
12  static const unsigned BIT_SCSI2_ONLY = 0x0002;
13  static const unsigned BIT_SCSI3 = 0x0004;
14 
15  static const unsigned MODE_SCSI1 = 0x0000;
16  static const unsigned MODE_SCSI2 = 0x0003;
17  static const unsigned MODE_SCSI3 = 0x0005;
18  static const unsigned MODE_UNITATTENTION = 0x0008; // report unit attention
19  static const unsigned MODE_MEGASCSI = 0x0010; // report disk change when call of
20  // 'test unit ready'
21  static const unsigned MODE_NOVAXIS = 0x0100;
22 
23  static const unsigned BUFFER_SIZE = 0x10000; // 64KB
24 
25  virtual ~SCSIDevice() = default;
26 
27  virtual void reset() = 0;
28  virtual bool isSelected() = 0;
29  virtual unsigned executeCmd(const byte* cdb, SCSI::Phase& phase,
30  unsigned& blocks) = 0;
31  virtual unsigned executingCmd(SCSI::Phase& phase, unsigned& blocks) = 0;
32  virtual byte getStatusCode() = 0;
33  virtual int msgOut(byte value) = 0;
34  virtual byte msgIn() = 0;
35  virtual void disconnect() = 0;
36  virtual void busReset() = 0; // only used in MB89352 controller
37 
38  virtual unsigned dataIn(unsigned& blocks) = 0;
39  virtual unsigned dataOut(unsigned& blocks) = 0;
40 };
41 
42 } // namespace openmsx
43 
44 #endif
bool getEnum() const noexcept
Definition: EnumSetting.hh:96