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

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       root       14: 
1.1.1.9   root       15: class InterruptDevice;
1.1.1.13! root       16: class Syncer;
1.1.1.9   root       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.13! 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.13! root       54:        Event *event {};
1.1.1.7   root       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: 
1.1.1.13! root       65:        // 実時間との差 (表示用)
        !            66:        int64 delta {};
        !            67: 
1.1.1.7   root       68:        // システムクロックを実時間に同期する場合 true
                     69:        bool sync_rt {};
                     70: 
1.1.1.9   root       71:        InterruptDevice *interrupt {};
1.1.1.13! root       72:        Syncer *syncer {};
1.1.1.9   root       73: 
1.1.1.12  root       74:        Monitor *monitor {};
1.1       root       75: };
1.1.1.5   root       76: 
1.1.1.9   root       77: static inline SysClkDevice *GetSysClkDevice() {
                     78:        return Object::GetObject<SysClkDevice>(OBJ_SYSCLK);
                     79: }

unix.superglobalmegacorp.com

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