|
|
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.