|
|
1.1 root 1: //
2: // nono
1.1.1.2 root 3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
1.1 root 5: //
6:
1.1.1.9 root 7: //
8: // VM (LUNA)
9: //
10:
1.1 root 11: #pragma once
12:
13: #include "vm.h"
14:
1.1.1.5 root 15: class VM_LUNA : public VM
1.1 root 16: {
1.1.1.2 root 17: using inherited = VM;
1.1 root 18: public:
19: VM_LUNA();
1.1.1.5 root 20: virtual ~VM_LUNA() override;
21:
22: bool Init() override;
1.1 root 23:
1.1.1.8 root 24: protected:
1.1.1.6 root 25: // ブートページを切り替える。
26: void SwitchBootPage(Device *parent, bool isrom) override;
27:
1.1.1.5 root 28: // デバイスマップから devtable を作成
29: void MakeDevtable(const uint8 *maptable);
30:
1.1.1.9 root 31: // ブートページ切り替え用 (unique_ptr ではない)
1.1.1.8 root 32: IODevice *ram0 {};
1.1.1.9 root 33:
34: std::unique_ptr<Device> pBT454 {};
35: std::unique_ptr<Device> pCRTC2 {};
36: std::unique_ptr<Device> pEthernet {};
37: std::unique_ptr<Device> pLCD {};
38: std::unique_ptr<Device> pNopIO {};
39: std::unique_ptr<Device> pPartialRAM {};
40: std::unique_ptr<Device> pPlaneVRAM {};
41: std::unique_ptr<Device> pPROM {};
42: std::unique_ptr<Device> pPROM0 {};
43: std::unique_ptr<Device> pPIO0 {};
44: std::unique_ptr<Device> pPIO1 {};
45: std::unique_ptr<Device> pRTC {};
46: std::unique_ptr<Device> pSIO {};
47: std::unique_ptr<Device> pSPC {};
48: std::unique_ptr<Device> pSysClk {};
49: std::unique_ptr<Device> pTAS {};
50: std::unique_ptr<Device> pZRAM {};
1.1.1.5 root 51: };
52:
53: class VM_LUNA1 final : public VM_LUNA
54: {
55: using inherited = VM_LUNA;
56: public:
57: VM_LUNA1();
1.1.1.7 root 58: ~VM_LUNA1() override;
1.1 root 59:
1.1.1.5 root 60: private:
1.1 root 61: static const uint8 maptable[256];
62: };
63:
1.1.1.5 root 64: class VM_LUNA88K final : public VM_LUNA
1.1 root 65: {
1.1.1.5 root 66: using inherited = VM_LUNA;
1.1 root 67: public:
68: VM_LUNA88K();
1.1.1.7 root 69: ~VM_LUNA88K() override;
1.1 root 70:
71: private:
1.1.1.9 root 72: std::unique_ptr<Device> pCMMU {};
73: std::unique_ptr<Device> pFuseROM {};
74:
1.1 root 75: static const uint8 maptable[256];
76: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.