|
|
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:
1.1.1.11! root 34: std::unique_ptr<IODevice> pBT45x {};
! 35: std::unique_ptr<IODevice> pCRTC2 {};
! 36: std::unique_ptr<Device> pDipsw {};
! 37: std::unique_ptr<IODevice> pEthernet {};
! 38: std::unique_ptr<Device> pLCD {};
! 39: std::unique_ptr<Device> pMPU64180 {};
! 40: std::unique_ptr<IODevice> pNopIO {};
! 41: std::unique_ptr<IODevice> pPartialRAM {};
! 42: std::unique_ptr<IODevice> pPlaneVRAM {};
! 43: std::unique_ptr<IODevice> pPROM {};
! 44: std::unique_ptr<IODevice> pPROM0 {};
! 45: std::unique_ptr<IODevice> pPIO0 {};
! 46: std::unique_ptr<IODevice> pPIO1 {};
! 47: std::unique_ptr<IODevice> pRTC {};
! 48: std::unique_ptr<IODevice> pSIO {};
! 49: std::unique_ptr<IODevice> pSPC {};
! 50: std::unique_ptr<IODevice> pSubRAM {};
! 51: std::unique_ptr<IODevice> pSysClk {};
! 52: std::unique_ptr<IODevice> pTAS {};
! 53: std::unique_ptr<IODevice> pXPbus {};
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.11! root 75: std::unique_ptr<IODevice> pCMMU {};
! 76: std::unique_ptr<IODevice> pFuseROM {};
1.1.1.9 root 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.