Annotation of nono/vm/vm_x68k.cpp, revision 1.1.1.2

1.1       root        1: //
                      2: // nono
1.1.1.2 ! root        3: // Copyright (C) 2020 nono project
        !             4: // Licensed under nono-license.txt
1.1       root        5: //
                      6: 
                      7: #include "vm_x68k.h"
1.1.1.2 ! root        8: #include "bus.h"
        !             9: #include "config.h"
1.1       root       10: #include "human68k.h"
1.1.1.2 ! root       11: #include "mpu680x0.h"
1.1       root       12: #include "renderer.h"
                     13: #include "rp5c15.h"
                     14: #include "scheduler.h"
                     15: #include "x68kkbd.h"
                     16: #include "xiospace.h"
                     17: 
                     18: //
                     19: // X68030 VM
                     20: //
                     21: 
                     22: // コンストラクタ
                     23: VM_X68030::VM_X68030()
                     24: {
1.1.1.2 ! root       25:        // 機種固有パラメータ
        !            26:        // MPU クロックの初期値は機種ごとに異なる。単位は MHz
        !            27:        gConfig->SetDefault("mpu-clock", 25);
        !            28:        // RAM 初期値は MAX にしておく
        !            29:        gConfig->SetDefault("ram-size", 12);
        !            30:        // SPC の入力クロック (5MHz = 200ns)
        !            31:        gConfig->Add("!spc-tCLF", 200);
        !            32: 
1.1       root       33:        // デバイス (順序に注意)
1.1.1.2 ! root       34:        // BusErrDevice は親コンストラクタで作成済み。
        !            35: 
        !            36:        gScheduler.reset(new Scheduler());                              // required by *
1.1       root       37:        gMPU.reset(new MPU680x0Device(0xff0000));
1.1.1.2 ! root       38:        gRAM.reset(new RAMDevice());                                    // required by XIOSpace
1.1       root       39:        xiospace.reset(new XIOSpaceDevice());
                     40: 
                     41:        gKeyboard.reset(new X68030Keyboard());
                     42:        gRenderer.reset(new X68030Renderer());
                     43: 
                     44:        // 割り当て
                     45:        // 今は拡張メモリがないので、今は上位8ビット全領域がミラーになっている。
                     46:        for (int i = 0; i < countof(::devtable); i++) {
                     47:                ::devtable[i] = xiospace.get();
                     48:        }
                     49: }
                     50: 
                     51: // デストラクタ
                     52: VM_X68030::~VM_X68030()
                     53: {
                     54: }
                     55: 
1.1.1.2 ! root       56: // X68030 の電源ボタンを押す。
1.1       root       57: void
                     58: VM_X68030::PowerButton()
                     59: {
                     60:        // 電源       ボタン
                     61:        // ON   OFF->ON         電源オフ割り込みをネゲート?
                     62:        // ON   ON ->OFF        電源オフ割り込みをアサート?
                     63:        // OFF  OFF->ON         電源オン
                     64:        // OFF  ON ->OFF        (通常はあり得ないはず)
                     65: 
                     66:        // ボタンの状態を更新して..
                     67:        power_button = !power_button;
                     68: 
                     69:        // デバイスに指示
                     70:        DevicePowerOn();
                     71: }
                     72: 
                     73: 
                     74: //
                     75: // RXZ .r .x .z human68k console emulator
                     76: //
                     77: 
                     78: // コンストラクタ
                     79: VM_RXZ::VM_RXZ()
                     80: {
1.1.1.2 ! root       81:        // 機種固有パラメータ
        !            82:        // MPU クロックの初期値は機種ごとに異なる。単位は MHz
        !            83:        gConfig->SetDefault("mpu-clock", 25);
        !            84:        // RAM 初期値は MAX にしておく
        !            85:        gConfig->SetDefault("ram-size", 12);
        !            86:        // SPC の入力クロック (5MHz = 200ns)
        !            87:        gConfig->Add("!spc-tCLF", 200);
        !            88: 
1.1       root       89:        // デバイス (順序に注意)
1.1.1.2 ! root       90:        // BusErrDevice は親コンストラクタで作成済み。
        !            91: 
        !            92:        gScheduler.reset(new Scheduler());                              // required by *
1.1       root       93:        gMPU.reset(new MPU680x0Device(0));
1.1.1.2 ! root       94:        gRAM.reset(new RAMDevice());                                    // required by Human68k
1.1       root       95:        gRTC.reset(new RP5C15Device());
                     96:        human68k.reset(new Human68k());
                     97: }
                     98: 
                     99: // デストラクタ
                    100: VM_RXZ::~VM_RXZ()
                    101: {
                    102: }
                    103: 
                    104: void
                    105: VM_RXZ::PowerButton()
                    106: {
                    107:        // RXZ の電源ボタンは電源オンにしか使わない。
                    108:        //
                    109:        // 電源       ボタン
                    110:        // ON   PUSH            (何も起きない)
                    111:        // OFF  PUSH            電源オン
                    112: 
                    113:        // デバイスに指示
                    114:        DevicePowerOn();
                    115: }

unix.superglobalmegacorp.com

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