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

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       root       15: 
1.1.1.7   root       16: class SRAMDevice : public IODevice
1.1       root       17: {
1.1.1.3   root       18:        using inherited = IODevice;
1.1.1.8   root       19: 
1.1       root       20:        static const uint32 baseaddr = 0xed0000;
                     21: 
1.1.1.3   root       22:        // Pluto-X によるホストファイル起動アドレス
                     23:        static const uint32 plutoaddr = 0xeac000;
                     24: 
1.1       root       25:  public:
                     26:        SRAMDevice();
1.1.1.5   root       27:        virtual ~SRAMDevice() override;
1.1       root       28: 
1.1.1.3   root       29:        bool Init() override;
1.1.1.8   root       30:        void ResetHard(bool poweron) override;
1.1       root       31: 
1.1.1.3   root       32:        uint64 Read8(uint32 addr) override;
                     33:        uint64 Read16(uint32 addr) override;
                     34:        uint64 Write8(uint32 addr, uint32 data) override;
                     35:        uint64 Write16(uint32 addr, uint32 data) override;
                     36:        uint64 Peek8(uint32 addr) override;
1.1       root       37: 
                     38:        void write_enable(bool value);
                     39: 
1.1.1.9 ! root       40:        // SRAM $ed000c.L ROM 起動アドレスを返す (romemu 用)
        !            41:        uint32 GetROMAddr() const;
        !            42: 
1.1       root       43:  private:
1.1.1.9 ! root       44:        // RAM 容量欄を設定値に同期させる。
        !            45:        void SyncRAMSize();
        !            46: 
1.1.1.2   root       47:        // アドレスデコーダ
                     48:        uint64 Decoder(uint32 addr) const;
                     49: 
1.1.1.8   root       50:        // ホストファイル起動用の読み出し値を返す
                     51:        uint32 PeekHostBoot(uint32 offset) const;
                     52: 
1.1.1.3   root       53:        // ファイル
                     54:        std::string filename {};
                     55:        MappedFile file {};
                     56:        uint8 *mem {};
1.1       root       57: 
1.1.1.4   root       58:        bool writeable {};
1.1       root       59: };
                     60: 
1.1.1.8   root       61: extern SRAMDevice *gSRAM;

unix.superglobalmegacorp.com

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