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

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.1.3 ! root       33:        // この機種に不要なパラメータはここで削除する
        !            34:        // (機種が決まるより前に全機種の設定の和集合を用意してあるため)
        !            35:        gConfig->Delete("luna-dipsw1");
        !            36:        gConfig->Delete("luna-dipsw2");
        !            37:        gConfig->Delete("prom-image");
        !            38: 
1.1       root       39:        // デバイス (順序に注意)
1.1.1.2   root       40:        // BusErrDevice は親コンストラクタで作成済み。
                     41: 
                     42:        gScheduler.reset(new Scheduler());                              // required by *
1.1       root       43:        gMPU.reset(new MPU680x0Device(0xff0000));
1.1.1.2   root       44:        gRAM.reset(new RAMDevice());                                    // required by XIOSpace
1.1       root       45:        xiospace.reset(new XIOSpaceDevice());
                     46: 
                     47:        gKeyboard.reset(new X68030Keyboard());
                     48:        gRenderer.reset(new X68030Renderer());
                     49: 
                     50:        // 割り当て
                     51:        // 今は拡張メモリがないので、今は上位8ビット全領域がミラーになっている。
                     52:        for (int i = 0; i < countof(::devtable); i++) {
                     53:                ::devtable[i] = xiospace.get();
                     54:        }
                     55: }
                     56: 
                     57: // デストラクタ
                     58: VM_X68030::~VM_X68030()
                     59: {
                     60: }
                     61: 
1.1.1.2   root       62: // X68030 の電源ボタンを押す。
1.1       root       63: void
                     64: VM_X68030::PowerButton()
                     65: {
                     66:        // 電源       ボタン
                     67:        // ON   OFF->ON         電源オフ割り込みをネゲート?
                     68:        // ON   ON ->OFF        電源オフ割り込みをアサート?
                     69:        // OFF  OFF->ON         電源オン
                     70:        // OFF  ON ->OFF        (通常はあり得ないはず)
                     71: 
                     72:        // ボタンの状態を更新して..
                     73:        power_button = !power_button;
                     74: 
                     75:        // デバイスに指示
                     76:        DevicePowerOn();
                     77: }
                     78: 
                     79: 
                     80: //
                     81: // RXZ .r .x .z human68k console emulator
                     82: //
                     83: 
                     84: // コンストラクタ
                     85: VM_RXZ::VM_RXZ()
                     86: {
1.1.1.2   root       87:        // 機種固有パラメータ
                     88:        // MPU クロックの初期値は機種ごとに異なる。単位は MHz
                     89:        gConfig->SetDefault("mpu-clock", 25);
                     90:        // RAM 初期値は MAX にしておく
                     91:        gConfig->SetDefault("ram-size", 12);
                     92:        // SPC の入力クロック (5MHz = 200ns)
                     93:        gConfig->Add("!spc-tCLF", 200);
                     94: 
1.1.1.3 ! root       95:        // この機種に不要なパラメータはここで削除する
        !            96:        // (機種が決まるより前に全機種の設定の和集合を用意してあるため)
        !            97:        gConfig->Delete("luna-dipsw1");
        !            98:        gConfig->Delete("luna-dipsw2");
        !            99:        gConfig->Delete("prom-image");
        !           100: 
1.1       root      101:        // デバイス (順序に注意)
1.1.1.2   root      102:        // BusErrDevice は親コンストラクタで作成済み。
                    103: 
                    104:        gScheduler.reset(new Scheduler());                              // required by *
1.1       root      105:        gMPU.reset(new MPU680x0Device(0));
1.1.1.2   root      106:        gRAM.reset(new RAMDevice());                                    // required by Human68k
1.1       root      107:        gRTC.reset(new RP5C15Device());
                    108:        human68k.reset(new Human68k());
                    109: }
                    110: 
                    111: // デストラクタ
                    112: VM_RXZ::~VM_RXZ()
                    113: {
                    114: }
                    115: 
                    116: void
                    117: VM_RXZ::PowerButton()
                    118: {
                    119:        // RXZ の電源ボタンは電源オンにしか使わない。
                    120:        //
                    121:        // 電源       ボタン
                    122:        // ON   PUSH            (何も起きない)
                    123:        // OFF  PUSH            電源オン
                    124: 
                    125:        // デバイスに指示
                    126:        DevicePowerOn();
                    127: }

unix.superglobalmegacorp.com

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