Annotation of nono/vm/sram.h, revision 1.1.1.11

1.1       root        1: //
                      2: // nono
1.1.1.3   root        3: // Copyright (C) 2020 nono project
                      4: // Licensed under nono-license.txt
1.1       root        5: //
                      6: 
1.1.1.8   root        7: //
                      8: // SRAM
                      9: //
                     10: 
1.1       root       11: #pragma once
                     12: 
                     13: #include "device.h"
1.1.1.3   root       14: #include "mappedfile.h"
1.1.1.10  root       15: #include <array>
1.1       root       16: 
1.1.1.7   root       17: class SRAMDevice : public IODevice
1.1       root       18: {
1.1.1.3   root       19:        using inherited = IODevice;
1.1.1.8   root       20: 
1.1       root       21:        static const uint32 baseaddr = 0xed0000;
                     22: 
1.1.1.3   root       23:        // Pluto-X によるホストファイル起動アドレス
                     24:        static const uint32 plutoaddr = 0xeac000;
                     25: 
1.1       root       26:  public:
                     27:        SRAMDevice();
1.1.1.11! root       28:        ~SRAMDevice() override;
1.1       root       29: 
1.1.1.3   root       30:        bool Init() override;
1.1.1.8   root       31:        void ResetHard(bool poweron) override;
1.1       root       32: 
1.1.1.11! root       33:        busdata Read8(uint32 addr) override;
        !            34:        busdata Read16(uint32 addr) override;
        !            35:        busdata Write8(uint32 addr, uint32 data) override;
        !            36:        busdata Write16(uint32 addr, uint32 data) override;
        !            37:        busdata Peek8(uint32 addr) override;
        !            38:        bool Poke8(uint32 addr, uint32 data) override;
1.1       root       39: 
1.1.1.10  root       40:        void WriteEnable(bool value);
1.1.1.11! root       41:        bool IsWriteable() const { return writeable; }
1.1.1.10  root       42: 
                     43:        // SRAM の指定の位置の値を副作用なく読み出す
                     44:        uint32 Get8(uint32 offset) const;
                     45:        uint32 Get16(uint32 offset) const;
                     46:        uint32 Get32(uint32 offset) const;
                     47: 
                     48:        // SRAM $ed0008.L RAM 容量を返す (ホストファイル起動用)
                     49:        uint32 GetRAMSize() const { return Get32(0x0008); }
1.1       root       50: 
1.1.1.9   root       51:        // SRAM $ed000c.L ROM 起動アドレスを返す (romemu 用)
1.1.1.10  root       52:        uint32 GetROMAddr() const { return Get32(0x000c); }
                     53: 
                     54:        // SRAM の初期値
                     55:        static std::array<uint8, 0x60> InitialData;
1.1.1.9   root       56: 
1.1       root       57:  private:
1.1.1.9   root       58:        // RAM 容量欄を設定値に同期させる。
                     59:        void SyncRAMSize();
                     60: 
1.1.1.2   root       61:        // アドレスデコーダ
1.1.1.11! root       62:        uint32 Decoder(uint32 addr) const;
1.1.1.2   root       63: 
1.1.1.3   root       64:        // ファイル
                     65:        std::string filename {};
                     66:        MappedFile file {};
                     67:        uint8 *mem {};
1.1       root       68: 
1.1.1.4   root       69:        bool writeable {};
1.1       root       70: };
                     71: 
1.1.1.10  root       72: static inline SRAMDevice *GetSRAMDevice() {
                     73:        return Object::GetObject<SRAMDevice>(OBJ_SRAM);
                     74: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.