openMSX
WD33C93.hh
Go to the documentation of this file.
1 /* Ported from:
2 ** Source: /cvsroot/bluemsx/blueMSX/Src/IoDevice/wd33c93.h,v
3 ** Revision: 1.6
4 ** Date: 2007/03/22 10:55:08
5 **
6 ** More info: http://www.bluemsx.com
7 **
8 ** Copyright (C) 2003-2007 Daniel Vik, Ricardo Bittencourt, white cat
9 */
10 
11 #ifndef WD33C93_HH
12 #define WD33C93_HH
13 
14 #include "SCSI.hh"
15 #include "MemBuffer.hh"
16 #include <memory>
17 
18 namespace openmsx {
19 
20 class SCSIDevice;
21 class DeviceConfig;
22 
23 class WD33C93
24 {
25 public:
26  explicit WD33C93(const DeviceConfig& config);
27  ~WD33C93();
28 
29  void reset(bool scsireset);
30 
32  byte readCtrl();
33  byte peekAuxStatus() const;
34  byte peekCtrl() const;
35  void writeAdr(byte value);
36  void writeCtrl(byte value);
37 
38  template<typename Archive>
39  void serialize(Archive& ar, unsigned version);
40 
41 private:
42  void disconnect();
43  void execCmd(byte value);
44 
45  MemBuffer<byte> buffer;
46  std::unique_ptr<SCSIDevice> dev[8];
47  unsigned bufIdx;
48  int counter;
49  unsigned blockCounter;
50  int tc;
51  SCSI::Phase phase;
52  byte myId;
53  byte targetId;
54  byte regs[32];
55  byte latch;
56  bool devBusy;
57 };
58 
59 } // namespace openmsx
60 
61 #endif