--- nono/vm/pluto.h 2026/04/29 17:04:28 1.1 +++ nono/vm/pluto.h 2026/04/29 17:05:09 1.1.1.8 @@ -1,41 +1,53 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // -#pragma once +// +// Pluto-X (独自の仮想ボード) +// -#include +#pragma once #include "device.h" +#include -class PlutoDevice - : public IODevice +class PlutoDevice : public IODevice { - typedef IODevice inherited; + using inherited = IODevice; public: PlutoDevice(); - virtual ~PlutoDevice(); + virtual ~PlutoDevice() override; - virtual uint64 Read8(uint32 addr); - virtual uint64 Read16(uint32 addr); - virtual uint64 Write8(uint32 addr, uint32 data); - virtual uint64 Write16(uint32 addr, uint32 data); - virtual uint64 Peek8(uint32 addr); + void ResetHard(bool poweron) override; - // ベンチマークモード。コマンドライン引数で指定される。 - static int benchmark_mode; + uint64 Read8(uint32 addr) override; + uint64 Read16(uint32 addr) override; + uint64 Read32(uint32 addr) override; + uint64 Write8(uint32 addr, uint32 data) override; + uint64 Write16(uint32 addr, uint32 data) override; + uint64 Peek8(uint32 addr) override; private: + // ROM + static const uint16 rom[]; + + // ホストファイル起動 + uint32 ROM_Load(); + + // ベンチマーク void write_8_benchmark(uint32 addr, uint32 data); void benchmark_start(uint32 data); void benchmark_end(); - int m_count = 0; - int m_test_num = 0; - const char *m_test_name = NULL; - int m_inst_len = 0; - int m_inst_cycle = 0; - int m_start_addr = 0; + int m_count {}; + int m_test_num {}; + const char *m_test_name {}; + int m_inst_len {}; + int m_inst_cycle {}; + int m_start_addr {}; timeval m_start {}; timeval m_total {}; }; + +extern PlutoDevice *gPluto;