--- nono/debugger/vectortable.h 2026/04/29 17:05:28 1.1.1.4 +++ nono/debugger/vectortable.h 2026/04/29 17:05:58 1.1.1.8 @@ -11,13 +11,13 @@ #pragma once #include "device.h" -#include "monitor.h" #include #include #include class MainbusDevice; class MainMPUDevice; +enum class VMType; class VectorTable : public Device { @@ -29,23 +29,24 @@ class VectorTable : public Device bool Init() override; - // 例外名を返す (ベクタテーブル用) - const char *GetTableName(int vector) const; - // 例外名を返す (例外履歴用) const char *GetExceptionName(int vector) const; // ベクタテーブルの要素数を返す int Size() const { return nametable.size(); } - // モニタ更新 - DECLARE_MONITOR_CALLBACK(MonitorUpdate); - private: // 初期化 - void InitTableM68030(VMType vmtype); + void InitTableM680x0(VMType vmtype); void InitTableLuna88k(); + // モニタ更新 + DECLARE_MONITOR_SCREEN(MonitorScreenM680x0); + DECLARE_MONITOR_SCREEN(MonitorScreenM88xx0); + + // m88100 のベクタテーブルから再分岐先を取得する。 + busaddr VectorToAddr(uint32 vecaddr); + // ベクタテーブル std::vector nametable {}; @@ -53,16 +54,17 @@ class VectorTable : public Device MainMPUDevice *mpu {}; // モニタ - Monitor monitor { this }; + Monitor *monitor {}; // 初期値 - static std::array name_m68030; + static std::array name_m680x0; static std::map name_x68030; static std::map name_luna1; static std::map name_news; - static std::array name_luna88k; + static std::map name_virt68k; + static std::map name_luna88k; }; -static inline VectorTable *GetVectorTable() { +inline VectorTable *GetVectorTable() { return Object::GetObject(OBJ_VECTOR_TABLE); }