Annotation of nono/vm/sysclk.h, revision 1.1.1.12

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: // LUNA システムクロック
                      9: //
                     10: 
1.1       root       11: #pragma once
                     12: 
1.1.1.9   root       13: #include "device.h"
1.1.1.8   root       14: #include "event.h"
1.1       root       15: 
1.1.1.9   root       16: class InterruptDevice;
                     17: 
1.1.1.7   root       18: class SysClkDevice : public IODevice
1.1       root       19: {
1.1.1.3   root       20:        using inherited = IODevice;
1.1       root       21:  public:
                     22:        SysClkDevice();
1.1.1.10  root       23:        ~SysClkDevice() override;
1.1       root       24: 
1.1.1.3   root       25:        bool Init() override;
1.1.1.8   root       26:        void ResetHard(bool poweron) override;
1.1       root       27: 
1.1.1.11  root       28:        uint GetFreq() const { return freq; }
1.1.1.10  root       29: 
1.1.1.2   root       30:  protected:
                     31:        // BusIO インタフェース
                     32:        static const uint32 NPORT = 1;
1.1.1.11  root       33:        busdata ReadPort(uint32 offset);
                     34:        busdata WritePort(uint32 offset, uint32 data);
                     35:        busdata PeekPort(uint32 offset);
                     36:        bool PokePort(uint32 offset, uint32 data);
1.1       root       37: 
                     38:  private:
                     39:        // イベントコールバック
1.1.1.4   root       40:        void Callback(Event& ev);
1.1.1.7   root       41: 
                     42:        DECLARE_MONITOR_CALLBACK(MonitorUpdate);
1.1       root       43: 
1.1.1.2   root       44:        // 割り込み状態をレジスタイメージにして返す
                     45:        uint8 GetInt() const;
                     46: 
1.1.1.10  root       47:        // 割り込み信号線の状態を変える。
                     48:        void ChangeInterrupt();
                     49: 
1.1       root       50:        // システムクロック割り込み有りなら true。
1.1.1.4   root       51:        bool sysint {};
1.1       root       52: 
                     53:        // 割り込みイベント
1.1.1.7   root       54:        Event event { this };
                     55: 
1.1.1.10  root       56:        // システムクロック周波数 [Hz]
                     57:        uint freq {};
                     58: 
1.1.1.7   root       59:        // 本来のイベント間隔。機種によって異なる。
1.1.1.10  root       60:        uint64 period {};
1.1.1.7   root       61: 
                     62:        // システムクロックが刻んでいる時刻
                     63:        uint64 stime {};
                     64: 
                     65:        // システムクロックを実時間に同期する場合 true
                     66:        bool sync_rt {};
                     67: 
1.1.1.9   root       68:        InterruptDevice *interrupt {};
                     69: 
1.1.1.12! root       70:        Monitor *monitor {};
1.1       root       71: };
1.1.1.5   root       72: 
1.1.1.9   root       73: static inline SysClkDevice *GetSysClkDevice() {
                     74:        return Object::GetObject<SysClkDevice>(OBJ_SYSCLK);
                     75: }

unix.superglobalmegacorp.com

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