--- nono/vm/scc.h 2026/04/29 17:04:59 1.1.1.7 +++ nono/vm/scc.h 2026/04/29 17:05:06 1.1.1.8 @@ -20,8 +20,8 @@ class SCCDevice : public uPD7201Device virtual ~SCCDevice() override; // XXX 親の同名メソッドと名前分けたほうがいいか - uint8 ReadCtrl(struct SIO::channel *chan) override; - void WriteCtrl(struct SIO::channel *chan, uint32 data) override; + uint8 ReadCtrl(SIO::channel *chan) override; + void WriteCtrl(SIO::channel *chan, uint32 data) override; // 割り込みアクノリッジ int InterruptAcknowledge(); @@ -33,9 +33,34 @@ class SCCDevice : public uPD7201Device uint64 Write(uint32 offset, uint32 data); uint64 Peek(uint32 offset); + void Tx(int ch, uint32 data) override; + + // 指定のレジスタ名を返す + const char *CRName(const SIO::channel *chan, int n) const override; + const char *SRName(const SIO::channel *chan, int n) const override; + + // WR, RR のほうが通りがいいので結局用意する + const char *WRName(const SIO::channel *chan, int n) const { + return CRName(chan, n); + } + const char *WRName(const SIO::channel *chan) const { + return inherited::CRName(chan); + } + const char *RRName(const SIO::channel *chan, int n) const { + return SRName(chan, n); + } + const char *RRName(const SIO::channel *chan) const { + return inherited::SRName(chan); + } + private: void Interrupt() override; - void WriteCR5(struct SIO::channel *chan, uint32 data) override; + void WriteCR0(SIO::channel *chan, uint32 data) override; + void WriteCR5(SIO::channel *chan, uint32 data) override; + void SetTXC(SIO::channel *chan); + + static const char * const wrnames[32]; + static const char * const rrnames[32]; }; extern std::unique_ptr gSCC;