|
|
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:
24: // 電源ボタンを押す。
1.1.1.2 root 25: void PowerButton() override;
1.1 root 26:
1.1.1.8 root 27: protected:
1.1.1.6 root 28: // ブートページを切り替える。
29: void SwitchBootPage(Device *parent, bool isrom) override;
30:
1.1.1.5 root 31: // デバイスマップから devtable を作成
32: void MakeDevtable(const uint8 *maptable);
33:
1.1.1.9 ! root 34: // ブートページ切り替え用 (unique_ptr ではない)
1.1.1.8 root 35: IODevice *ram0 {};
1.1.1.9 ! root 36:
! 37: std::unique_ptr<Device> pBT454 {};
! 38: std::unique_ptr<Device> pCRTC2 {};
! 39: std::unique_ptr<Device> pEthernet {};
! 40: std::unique_ptr<Device> pLCD {};
! 41: std::unique_ptr<Device> pNopIO {};
! 42: std::unique_ptr<Device> pPartialRAM {};
! 43: std::unique_ptr<Device> pPlaneVRAM {};
! 44: std::unique_ptr<Device> pPROM {};
! 45: std::unique_ptr<Device> pPROM0 {};
! 46: std::unique_ptr<Device> pPIO0 {};
! 47: std::unique_ptr<Device> pPIO1 {};
! 48: std::unique_ptr<Device> pRTC {};
! 49: std::unique_ptr<Device> pSIO {};
! 50: std::unique_ptr<Device> pSPC {};
! 51: std::unique_ptr<Device> pSysClk {};
! 52: std::unique_ptr<Device> pTAS {};
! 53: std::unique_ptr<Device> pZRAM {};
1.1.1.5 root 54: };
55:
56: class VM_LUNA1 final : public VM_LUNA
57: {
58: using inherited = VM_LUNA;
59: public:
60: VM_LUNA1();
1.1.1.7 root 61: ~VM_LUNA1() override;
1.1 root 62:
1.1.1.5 root 63: private:
1.1 root 64: static const uint8 maptable[256];
65: };
66:
1.1.1.5 root 67: class VM_LUNA88K final : public VM_LUNA
1.1 root 68: {
1.1.1.5 root 69: using inherited = VM_LUNA;
1.1 root 70: public:
71: VM_LUNA88K();
1.1.1.7 root 72: ~VM_LUNA88K() override;
1.1 root 73:
74: private:
1.1.1.9 ! root 75: std::unique_ptr<Device> pCMMU {};
! 76: std::unique_ptr<Device> pFuseROM {};
! 77:
1.1 root 78: static const uint8 maptable[256];
79: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.