Annotation of nono/vm/vm.h, revision 1.1.1.8

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: 
                      7: #pragma once
                      8: 
                      9: #include "device.h"
1.1.1.2   root       10: 
                     11: // VM 種別
                     12: enum vmtype_t {
                     13:        VMTYPE_NONE = 0,
                     14:        VMTYPE_X68030,
1.1.1.3   root       15:        VMTYPE_LUNA1,
1.1.1.2   root       16:        VMTYPE_LUNA88K,
                     17: };
1.1.1.3   root       18: // VM 種別 (ビットマスク表現)
                     19: enum vmf_t {
                     20:        VMF_NONE        = 0,
                     21:        VMF_X68030      = (1 << VMTYPE_X68030),
                     22:        VMF_LUNA1       = (1 << VMTYPE_LUNA1),
                     23:        VMF_LUNA88K     = (1 << VMTYPE_LUNA88K),
                     24: 
                     25:        VMF_LUNA        = VMF_LUNA1 | VMF_LUNA88K,
1.1.1.8 ! root       26:        VMF_M68K        = VMF_X68030 | VMF_LUNA1,
1.1.1.3   root       27:        VMF_M88K        = VMF_LUNA88K,
                     28:        VMF_ALL         = 0xffffffff,
                     29: };
1.1       root       30: 
                     31: class VM
                     32: {
                     33:  public:
1.1.1.2   root       34:        VM();
1.1       root       35:        virtual ~VM();
                     36: 
1.1.1.3   root       37:        // 明示的な後始末
                     38:        void Dispose();
                     39: 
1.1       root       40:        // 動的なコンストラクション
                     41:        bool Create();
                     42: 
                     43:        // 初期化
1.1.1.6   root       44:        virtual bool Init();
1.1       root       45: 
                     46:        // 設定の適用
                     47:        bool Apply();
                     48: 
1.1.1.7   root       49:        // 電源ボタンを押す。(UI スレッドから呼ばれる)
1.1       root       50:        virtual void PowerButton() = 0;
                     51: 
                     52:        // 電源ボタンの状態を取得する。
                     53:        // モーメンタリスイッチの場合は常に false。
                     54:        virtual bool IsPowerButton() const { return false; }
                     55: 
1.1.1.8 ! root       56:        // ブートページを ROM に切り替える
        !            57:        void SwitchBootPageToROM(Device *parent) { SwitchBootPage(parent, true); }
        !            58:        // ブートページを RAM に切り替える
        !            59:        void SwitchBootPageToRAM(Device *parent) { SwitchBootPage(parent, false); }
1.1       root       60: 
1.1.1.7   root       61:        // MPU の RESET 命令によるリセット (機種ごとに異なるため)
1.1.1.6   root       62:        virtual void ResetByMPU() { }
1.1.1.8 ! root       63: 
        !            64:  protected:
        !            65:        // ブートページを切り替える (内部用)
        !            66:        virtual void SwitchBootPage(Device *parent, bool isrom);
1.1       root       67: };
                     68: 
1.1.1.2   root       69: extern std::unique_ptr<VM> gVM;

unix.superglobalmegacorp.com

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