34 void execute(std::span<const TclObject> tokens,
35 TclObject& result, EmuTime::param time)
override;
36 [[nodiscard]] std::string
help(std::span<const TclObject> tokens)
const override;
37 void tabCompletion(std::vector<std::string>& tokens)
const override;
56 template<
typename Archive>
57 void serialize(Archive& ar,
unsigned version);
62 std::span<SectorBuffer> buffers,
size_t startSector)
override;
63 void writeSectorImpl(
size_t sector,
const SectorBuffer& buf)
override;
64 [[nodiscard]]
size_t getNbSectorsImpl()
const override;
65 [[nodiscard]]
bool isWriteProtectedImpl()
const override;
70 [[nodiscard]] std::string_view getContainerName()
const override;
71 [[nodiscard]]
bool diskChanged()
override;
72 int insertDisk(
const std::string& filename)
override;
75 void reset()
override;
76 [[nodiscard]]
bool isSelected()
override;
77 [[nodiscard]]
unsigned executeCmd(std::span<const uint8_t, 12> cdb,
SCSI::Phase& phase,
unsigned& blocks)
override;
78 [[nodiscard]]
unsigned executingCmd(
SCSI::Phase& phase,
unsigned& blocks)
override;
79 [[nodiscard]] uint8_t getStatusCode()
override;
80 int msgOut(uint8_t value)
override;
81 uint8_t msgIn()
override;
82 void disconnect()
override;
83 void busReset()
override;
84 [[nodiscard]]
unsigned dataIn(
unsigned& blocks)
override;
85 [[nodiscard]]
unsigned dataOut(
unsigned& blocks)
override;
88 void insert(
const std::string& filename);
90 [[nodiscard]]
bool getReady();
93 [[nodiscard]]
unsigned inquiry();
94 [[nodiscard]]
unsigned modeSense();
95 [[nodiscard]]
unsigned requestSense();
96 [[nodiscard]]
bool checkReadOnly();
97 [[nodiscard]]
unsigned readCapacity();
98 [[nodiscard]]
bool checkAddress();
99 [[nodiscard]]
unsigned readSector(
unsigned& blocks);
100 [[nodiscard]]
unsigned writeSector(
unsigned& blocks);
107 std::optional<LSXCommand> lsxCommand;
111 unsigned currentSector;
112 unsigned currentLength;
113 const uint8_t scsiId;
118 std::array<uint8_t, 12> cdb;
120 static constexpr unsigned MAX_LS = 26;
121 using LSInUse = std::bitset<MAX_LS>;
122 std::shared_ptr<LSInUse> lsInUse;
void execute(std::span< const TclObject > tokens, TclObject &result, EmuTime::param time) override
This is like the execute() method of the Command class, it only has an extra time parameter.
void tabCompletion(std::vector< std::string > &tokens) const override
Attempt tab completion for this command.
LSXCommand(CommandController &commandController, StateChangeDistributor &stateChangeDistributor, Scheduler &scheduler, SCSILS120 &ls)
std::string help(std::span< const TclObject > tokens) const override
Print help for this command.
Commands that directly influence the MSX state should send and events so that they can be recorded by...
SCSILS120 operator=(const SCSILS120 &)=delete
void getMediaInfo(TclObject &result) override
This method gets called when information is required on the media inserted in the media slot of the p...
SCSILS120(const SCSILS120 &)=delete
void serialize(Archive &ar, unsigned version)
This class represents the result of a sha1 calculation (a 160-bit value).
This file implemented 3 utility functions: