|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: #pragma once
8:
9: #include "rom.h"
1.1.1.4 root 10: #include "stopwatch.h"
1.1 root 11:
1.1.1.6 ! root 12: class PROMDevice;
! 13:
! 14: class PROM0Device : public IODevice
! 15: {
! 16: using inherited = IODevice;
! 17: public:
! 18: PROM0Device();
! 19: virtual ~PROM0Device() override;
! 20:
! 21: bool Init() override;
! 22: void ResetHard() override;
! 23:
! 24: uint64 Read8(uint32 addr) override;
! 25: uint64 Read16(uint32 addr) override;
! 26: uint64 Read32(uint32 addr) override;
! 27: uint64 Write8(uint32 addr, uint32 data) override;
! 28: uint64 Write16(uint32 addr, uint32 data) override;
! 29: uint64 Write32(uint32 addr, uint32 data) override;
! 30: uint64 Peek8(uint32 addr) override;
! 31:
! 32: private:
! 33: // アドレスデコーダ
! 34: static uint32 Decoder(uint32 addr);
! 35:
! 36: // 書き込みの共通部分
! 37: uint64 Write();
! 38:
! 39: IODevice *prom {};
! 40: };
! 41:
1.1.1.5 root 42: class PROMDevice : public ROMDevice
1.1 root 43: {
44: using inherited = ROMDevice;
45: public:
46: PROMDevice();
1.1.1.3 root 47: virtual ~PROMDevice() override;
1.1 root 48:
49: bool Init() override;
50: bool PowerOn() override;
51:
52: uint64 Read8(uint32 addr) override;
53:
54: private:
1.1.1.4 root 55: bool InitLuna1();
1.1 root 56: bool InitLuna88k();
1.1.1.4 root 57:
58: // パフォーマンス測定用
59: Stopwatch sw {};
1.1 root 60: };
61:
1.1.1.6 ! root 62: extern std::unique_ptr<PROM0Device> gPROM0;
! 63: extern std::unique_ptr<IODevice> gPROM;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.