|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2022 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: // ! 8: // ベクタテーブル (モニタ) ! 9: // ! 10: ! 11: #pragma once ! 12: ! 13: #include "object.h" ! 14: #include "monitor.h" ! 15: #include <array> ! 16: #include <vector> ! 17: ! 18: class VectorTable : public Object ! 19: { ! 20: using inherited = Object; ! 21: ! 22: public: ! 23: VectorTable(int vmtype); ! 24: ~VectorTable() override; ! 25: ! 26: // 例外名を返す (ベクタテーブル用) ! 27: const char *GetTableName(int vector) const; ! 28: ! 29: // 例外名を返す (例外履歴用) ! 30: const char *GetExceptionName(int vector) const; ! 31: ! 32: // ベクタテーブルの要素数を返す ! 33: int Size() const { return nametable.size(); } ! 34: ! 35: // モニタ更新 ! 36: DECLARE_MONITOR_CALLBACK(MonitorUpdate); ! 37: ! 38: private: ! 39: // 初期化 ! 40: void InitTableM68030(int vmtype); ! 41: void InitTableLuna88k(); ! 42: ! 43: // ベクタテーブル ! 44: std::vector<const char *> nametable {}; ! 45: ! 46: // モニタ ! 47: Monitor monitor { this }; ! 48: ! 49: // 初期値 ! 50: static std::array<const char * const, 64> name_m68030; ! 51: static std::array<const char * const, 256> name_x68030; ! 52: static std::array<const char * const, 7> name_luna1; ! 53: static std::array<const char * const, 11> name_luna88k; ! 54: }; ! 55: ! 56: extern VectorTable *gVectorTable;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.