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

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.16  root       34:        // 実時間に同期したほうが便利。
                     35:        gConfig->SetDefault("clock-sync", "real");
                     36: 
1.1.1.10  root       37:        // RTC epoch は NetBSD/luna68k, OpenBSD/luna88k をデフォルトにしておく。
                     38:        gConfig->SetDefault("rtc-epoch-year", 1970);
                     39: 
1.1.1.5   root       40:        // LUNA 共通だしここで作成しておく
1.1.1.13  root       41:        NEWDV(Power, new LunaPowerDevice());
1.1.1.12  root       42:        NEWDV(Dipsw, new LunaDipswDevice());
1.1.1.13  root       43:        NEWDV(Keyboard, new LunaKeyboard());
                     44:        NEWDV(LCD, new LCDDevice());
1.1.1.12  root       45:        NEWDV(MPU64180, new MPU64180Device());
1.1.1.13  root       46:        NEWDV(NMI, new NMIDevice());
1.1.1.17  root       47:        NEWDV(Renderer, new LunaVideoRenderer());
1.1.1.12  root       48:        NEWDV(XPbus, new XPbusDevice());
1.1.1.5   root       49: }
                     50: 
                     51: // デストラクタ
                     52: VM_LUNA::~VM_LUNA()
                     53: {
                     54: }
                     55: 
                     56: 
                     57: //
                     58: // LUNA-I
                     59: //
                     60: 
1.1       root       61: // コンストラクタ
1.1.1.5   root       62: VM_LUNA1::VM_LUNA1()
1.1.1.13  root       63:        : inherited("LUNA-I")
1.1       root       64: {
1.1.1.2   root       65:        // 機種固有パラメータ
1.1.1.15  root       66:        // MPU 種別。
                     67:        gConfig->SetDefault("mpu-type", "68030");
1.1.1.2   root       68:        // MPU クロックの初期値は機種ごとに異なる。単位は MHz
                     69:        gConfig->SetDefault("mpu-clock", 20);
                     70:        // RAM 初期値は MAX にしておく
                     71:        gConfig->SetDefault("ram-size", 16);
                     72:        // LUNA-I のクロック割り込みは 60Hz
1.1.1.13  root       73:        gConfig->Add("!sysclk-freq", 60);
1.1.1.2   root       74: 
1.1.1.13  root       75:        // デバイス
1.1.1.15  root       76:        NEWDV(MPU, NewMPU680x0Device());
1.1.1.13  root       77:        NEWDV(Mainbus, new Luna1Mainbus());
1.1.1.14  root       78:        NEWDV(SSG, new SSGDevice());
                     79: 
                     80:        // バーストアクセスたぶんあり
1.1.1.15  root       81:        auto mpu680x0 = GetMPU680x0Device(pMPU.get());
                     82:        if (mpu680x0) {
                     83:                mpu680x0->EnableBurstAccess(true);
                     84:        }
1.1       root       85: }
                     86: 
                     87: // デストラクタ
1.1.1.5   root       88: VM_LUNA1::~VM_LUNA1()
1.1       root       89: {
                     90: }
                     91: 
1.1.1.10  root       92: 
1.1       root       93: //
1.1.1.12  root       94: // LUNA-88K
1.1       root       95: //
                     96: 
                     97: // コンストラクタ
                     98: VM_LUNA88K::VM_LUNA88K()
1.1.1.13  root       99:        : inherited("LUNA-88K")
1.1       root      100: {
1.1.1.2   root      101:        // 機種固有パラメータ
                    102:        // MPU クロックの初期値は機種ごとに異なる。単位は MHz
                    103:        gConfig->SetDefault("mpu-clock", 25);
                    104:        // RAM 初期値は MAX にしておく
1.1.1.3   root      105:        gConfig->SetDefault("ram-size", 64);
1.1.1.12  root      106:        // LUNA-II, LUNA-88K, LUNA-88K2 のクロック割り込みは 100Hz らしい
1.1.1.13  root      107:        gConfig->Add("!sysclk-freq", 100);
1.1.1.2   root      108: 
1.1       root      109:        // デバイス (順序に注意)
1.1.1.10  root      110:        NEWDV(MPU, new MPU88xx0Device());
1.1.1.13  root      111:        NEWDV(Mainbus, new Luna88kMainbus());
1.1.1.14  root      112: 
                    113:        // バーストアクセスあり (m88k では常に有効)
1.1       root      114: }
                    115: 
                    116: // デストラクタ
                    117: VM_LUNA88K::~VM_LUNA88K()
                    118: {
                    119: }

unix.superglobalmegacorp.com

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