Annotation of nono/vm/vm_luna.cpp, revision 1.1.1.15

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: 
1.1.1.10  root        7: //
                      8: // VM (LUNA)
                      9: //
                     10: 
1.1       root       11: #include "vm_luna.h"
1.1.1.2   root       12: #include "config.h"
1.1.1.12  root       13: #include "dipsw.h"
1.1       root       14: #include "lcd.h"
                     15: #include "lunakbd.h"
1.1.1.13  root       16: #include "mainbus_luna.h"
1.1.1.12  root       17: #include "mpu64180.h"
1.1.1.2   root       18: #include "mpu680x0.h"
                     19: #include "mpu88xx0.h"
1.1.1.10  root       20: #include "nmi.h"
                     21: #include "power.h"
1.1       root       22: #include "renderer.h"
1.1.1.14  root       23: #include "ssg.h"
1.1.1.12  root       24: #include "xpbus.h"
1.1       root       25: 
1.1.1.5   root       26: //
                     27: // LUNA 共通部
                     28: //
                     29: 
                     30: // コンストラクタ
1.1.1.13  root       31: VM_LUNA::VM_LUNA(const char *name_)
                     32:        : inherited(name_)
1.1.1.5   root       33: {
1.1.1.10  root       34:        // RTC epoch は NetBSD/luna68k, OpenBSD/luna88k をデフォルトにしておく。
                     35:        gConfig->SetDefault("rtc-epoch-year", 1970);
                     36: 
1.1.1.5   root       37:        // LUNA 共通だしここで作成しておく
1.1.1.13  root       38:        NEWDV(Power, new LunaPowerDevice());
1.1.1.12  root       39:        NEWDV(Dipsw, new LunaDipswDevice());
1.1.1.13  root       40:        NEWDV(Keyboard, new LunaKeyboard());
                     41:        NEWDV(LCD, new LCDDevice());
1.1.1.12  root       42:        NEWDV(MPU64180, new MPU64180Device());
1.1.1.13  root       43:        NEWDV(NMI, new NMIDevice());
                     44:        NEWDV(Renderer, new LunaRenderer());
1.1.1.12  root       45:        NEWDV(XPbus, new XPbusDevice());
1.1.1.5   root       46: }
                     47: 
                     48: // デストラクタ
                     49: VM_LUNA::~VM_LUNA()
                     50: {
                     51: }
                     52: 
                     53: 
                     54: //
                     55: // LUNA-I
                     56: //
                     57: 
1.1       root       58: // コンストラクタ
1.1.1.5   root       59: VM_LUNA1::VM_LUNA1()
1.1.1.13  root       60:        : inherited("LUNA-I")
1.1       root       61: {
1.1.1.2   root       62:        // 機種固有パラメータ
1.1.1.15! root       63:        // MPU 種別。
        !            64:        gConfig->SetDefault("mpu-type", "68030");
1.1.1.2   root       65:        // MPU クロックの初期値は機種ごとに異なる。単位は MHz
                     66:        gConfig->SetDefault("mpu-clock", 20);
                     67:        // RAM 初期値は MAX にしておく
                     68:        gConfig->SetDefault("ram-size", 16);
                     69:        // SPC の入力クロック (おそらく 6.144MHz = 163ns が入ってる)
                     70:        gConfig->Add("!spc-tCLF", 163);
                     71:        // LUNA-I のクロック割り込みは 60Hz
1.1.1.13  root       72:        gConfig->Add("!sysclk-freq", 60);
1.1.1.2   root       73: 
1.1.1.13  root       74:        // デバイス
1.1.1.15! root       75:        NEWDV(MPU, NewMPU680x0Device());
1.1.1.13  root       76:        NEWDV(Mainbus, new Luna1Mainbus());
1.1.1.14  root       77:        NEWDV(SSG, new SSGDevice());
                     78: 
                     79:        // バーストアクセスたぶんあり
1.1.1.15! root       80:        auto mpu680x0 = GetMPU680x0Device(pMPU.get());
        !            81:        if (mpu680x0) {
        !            82:                mpu680x0->EnableBurstAccess(true);
        !            83:        }
1.1       root       84: }
                     85: 
                     86: // デストラクタ
1.1.1.5   root       87: VM_LUNA1::~VM_LUNA1()
1.1       root       88: {
                     89: }
                     90: 
1.1.1.10  root       91: 
1.1       root       92: //
1.1.1.12  root       93: // LUNA-88K
1.1       root       94: //
                     95: 
                     96: // コンストラクタ
                     97: VM_LUNA88K::VM_LUNA88K()
1.1.1.13  root       98:        : inherited("LUNA-88K")
1.1       root       99: {
1.1.1.2   root      100:        // 機種固有パラメータ
                    101:        // MPU クロックの初期値は機種ごとに異なる。単位は MHz
                    102:        gConfig->SetDefault("mpu-clock", 25);
                    103:        // RAM 初期値は MAX にしておく
1.1.1.3   root      104:        gConfig->SetDefault("ram-size", 64);
1.1.1.2   root      105:        // SPC の入力クロック (XXX LUNA-I と同じ?)
                    106:        gConfig->Add("!spc-tCLF", 163);
1.1.1.12  root      107:        // LUNA-II, LUNA-88K, LUNA-88K2 のクロック割り込みは 100Hz らしい
1.1.1.13  root      108:        gConfig->Add("!sysclk-freq", 100);
1.1.1.2   root      109: 
1.1       root      110:        // デバイス (順序に注意)
1.1.1.10  root      111:        NEWDV(MPU, new MPU88xx0Device());
1.1.1.13  root      112:        NEWDV(Mainbus, new Luna88kMainbus());
1.1.1.14  root      113: 
                    114:        // バーストアクセスあり (m88k では常に有効)
1.1       root      115: }
                    116: 
                    117: // デストラクタ
                    118: VM_LUNA88K::~VM_LUNA88K()
                    119: {
                    120: }

unix.superglobalmegacorp.com

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