|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2022 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: // ! 8: // X68030 の ROM30 (SCSI ROM) エミュレーション ! 9: // ! 10: ! 11: #pragma once ! 12: ! 13: #include "rom.h" ! 14: ! 15: class m68kcpu; ! 16: ! 17: class ROM30EmuDevice : public ROMDevice ! 18: { ! 19: using inherited = ROMDevice; ! 20: ! 21: private: ! 22: // このデバイスの先頭アドレス ! 23: static const uint32 baseaddr = 0x00fc0000; ! 24: ! 25: // 謎の I/O 空間 ! 26: static const uint32 ROMIO_BASE = 0xfc0080; ! 27: static const uint32 ROMIO_SCSI = (ROMIO_BASE + 0); ! 28: static const uint32 ROMIO_BOOT = (ROMIO_BASE + 4); ! 29: ! 30: public: ! 31: ROM30EmuDevice(); ! 32: virtual ~ROM30EmuDevice() override; ! 33: ! 34: bool Init() override; ! 35: ! 36: uint64 Read32(uint32 addr) override; ! 37: ! 38: private: ! 39: uint32 SCSIBoot() const; ! 40: uint32 SCSIIOCS(); ! 41: uint32 SCSI_S_INQUIRY(uint32); ! 42: uint32 SCSI_S_READEXT(uint32); ! 43: uint32 SCSI_S_TESTUNIT(uint32); ! 44: uint32 SCSI_S_READCAP(uint32); ! 45: ! 46: // SCSI IOCS コール名を返す ! 47: static std::string GetSCSICallName(uint number); ! 48: ! 49: m68kcpu *cpu {}; ! 50: ! 51: static const char * const x68k_scsicall[0x40]; ! 52: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.