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

1.1     ! root        1: //
        !             2: // nono
        !             3: // Copyright (C) 2017 [email protected]
        !             4: //
        !             5: 
        !             6: #pragma once
        !             7: 
        !             8: #include "device.h"
        !             9: #include "scsi.h"
        !            10: 
        !            11: class VM
        !            12: {
        !            13:  public:
        !            14:        // VM 種別
        !            15:        enum vmtype_t {
        !            16:                TYPE_NONE = 0,
        !            17:                TYPE_X68030,
        !            18:                TYPE_LUNA,
        !            19:                TYPE_RXZ,               // human68k .r .x .z console emulation
        !            20:        };
        !            21: 
        !            22:  public:
        !            23:        VM(vmtype_t);
        !            24:        virtual ~VM();
        !            25: 
        !            26:        // 動的なコンストラクション
        !            27:        bool Create();
        !            28: 
        !            29:        // 初期化
        !            30:        bool Init();
        !            31: 
        !            32:        // 設定の適用
        !            33:        bool Apply();
        !            34: 
        !            35:        // VM 種別を取得する。
        !            36:        vmtype_t GetType() const { return vmtype; }
        !            37: 
        !            38:        // 電源ボタンを押す。
        !            39:        // XXX この辺はもうちょっと検討したほうがいい
        !            40:        virtual void PowerButton() = 0;
        !            41: 
        !            42:        // 電源ボタンの状態を取得する。
        !            43:        // モーメンタリスイッチの場合は常に false。
        !            44:        virtual bool IsPowerButton() const { return false; }
        !            45: 
        !            46:        // VM の全デバイスの電源をオフ
        !            47:        bool DevicePowerOff();
        !            48: 
        !            49:        // VM 電源オフ時のコールバックを設定する。(GUI から呼ばれる)
        !            50:        void SetPowerOffCallback(void (*callback)());
        !            51: 
        !            52:        // 外部リセットボタンを押す。
        !            53:        void ResetButton() { ResetHard(); }
        !            54: 
        !            55:        // ハードウェアリセット
        !            56:        void ResetHard();
        !            57: 
        !            58:        // MPU の RESET 命令によるリセット
        !            59:        void ResetSoft();
        !            60: 
        !            61:  protected:
        !            62:        // VM の全デバイスの電源をオン
        !            63:        bool DevicePowerOn();
        !            64: 
        !            65:        vmtype_t vmtype {};
        !            66:        BusErrDevice *buserr = NULL;
        !            67:        void (*poweroff_callback)() = NULL;
        !            68: };
        !            69: 
        !            70: class VM_X68030 : public VM
        !            71: {
        !            72:        typedef VM inherited;
        !            73:  public:
        !            74:        VM_X68030();
        !            75:        virtual ~VM_X68030();
        !            76: 
        !            77:        // 電源ボタンを押す
        !            78:        virtual void PowerButton();
        !            79: 
        !            80:        // 電源ボタンの状態を取得。オンなら true。
        !            81:        bool IsPowerButton() const { return power_button; }
        !            82: 
        !            83:  private:
        !            84:        // 電源ボタンの状態。オンなら true。
        !            85:        bool power_button = false;
        !            86: 
        !            87:        // デバイス
        !            88:        XIOSpaceDevice *xiospace = NULL;
        !            89: };
        !            90: 
        !            91: class VM_LUNA : public VM
        !            92: {
        !            93:        typedef VM inherited;
        !            94:  public:
        !            95:        VM_LUNA();
        !            96:        virtual ~VM_LUNA();
        !            97: 
        !            98:        // 電源ボタンを押す。
        !            99:        virtual void PowerButton();
        !           100: 
        !           101:  private:
        !           102:        // デバイスマップ用の識別子
        !           103:        enum {
        !           104:                NONE,
        !           105:                BUSERR,
        !           106:                RAM,
        !           107:                PROM,
        !           108:                MK48,
        !           109:                PIO0,
        !           110:                PIO1,
        !           111:                SIO,
        !           112:                TAS,
        !           113:                SYSCLK,
        !           114:                ZRAM,
        !           115:                MROM,
        !           116:                BITMAP,
        !           117:                BT454,
        !           118:                CRTC2,
        !           119:                SCSI,
        !           120:                LANCE,
        !           121:        };
        !           122: 
        !           123:        CRTC2Device *crtc2 = NULL;
        !           124:        MK48T02Device *mk48 = NULL;
        !           125:        PIO0Device *pio0 = NULL;
        !           126:        PIO1Device *pio1 = NULL;
        !           127:        SysClkDevice *sysclk = NULL;
        !           128:        MaskROMDevice *maskrom = NULL;
        !           129:        NullDevice *nulldev = NULL;
        !           130: 
        !           131:        static const uint8 maptable[256];
        !           132: };
        !           133: 
        !           134: class VM_RXZ : public VM
        !           135: {
        !           136:        typedef VM inherited;
        !           137:  public:
        !           138:        VM_RXZ(const char *file, const char *arg);
        !           139:        virtual ~VM_RXZ();
        !           140: 
        !           141:        // 電源ボタンを押す。
        !           142:        virtual void PowerButton();
        !           143: 
        !           144:  private:
        !           145:        Human68k *human68k = NULL;
        !           146: };
        !           147: 
        !           148: extern VM *gVM;

unix.superglobalmegacorp.com

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