|
|
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"
16: #include "mainapp.h"
1.1.1.13! root 17: #include "mainbus_luna.h"
1.1.1.12 root 18: #include "mpu64180.h"
1.1.1.2 root 19: #include "mpu680x0.h"
20: #include "mpu88xx0.h"
1.1.1.12 root 21: #include "msxdos.h"
1.1.1.10 root 22: #include "nmi.h"
23: #include "power.h"
1.1 root 24: #include "renderer.h"
1.1.1.12 root 25: #include "xpbus.h"
1.1 root 26:
1.1.1.5 root 27: //
28: // LUNA 共通部
29: //
30:
31: // コンストラクタ
1.1.1.13! root 32: VM_LUNA::VM_LUNA(const char *name_)
! 33: : inherited(name_)
1.1.1.5 root 34: {
1.1.1.10 root 35: // RTC epoch は NetBSD/luna68k, OpenBSD/luna88k をデフォルトにしておく。
36: gConfig->SetDefault("rtc-epoch-year", 1970);
37:
1.1.1.5 root 38: // LUNA 共通だしここで作成しておく
1.1.1.13! root 39: NEWDV(Power, new LunaPowerDevice());
1.1.1.12 root 40: NEWDV(Dipsw, new LunaDipswDevice());
1.1.1.13! root 41: NEWDV(Keyboard, new LunaKeyboard());
! 42: NEWDV(LCD, new LCDDevice());
1.1.1.12 root 43: NEWDV(MPU64180, new MPU64180Device());
1.1.1.13! root 44: NEWDV(NMI, new NMIDevice());
! 45: NEWDV(Renderer, new LunaRenderer());
1.1.1.12 root 46: NEWDV(XPbus, new XPbusDevice());
1.1.1.5 root 47: }
48:
49: // デストラクタ
50: VM_LUNA::~VM_LUNA()
51: {
52: }
53:
54:
55: //
56: // LUNA-I
57: //
58:
1.1 root 59: // コンストラクタ
1.1.1.5 root 60: VM_LUNA1::VM_LUNA1()
1.1.1.13! root 61: : inherited("LUNA-I")
1.1 root 62: {
1.1.1.2 root 63: // 機種固有パラメータ
64: // MPU クロックの初期値は機種ごとに異なる。単位は MHz
65: gConfig->SetDefault("mpu-clock", 20);
66: // RAM 初期値は MAX にしておく
67: gConfig->SetDefault("ram-size", 16);
68: // SPC の入力クロック (おそらく 6.144MHz = 163ns が入ってる)
69: gConfig->Add("!spc-tCLF", 163);
70: // LUNA-I のクロック割り込みは 60Hz
1.1.1.13! root 71: gConfig->Add("!sysclk-freq", 60);
1.1.1.2 root 72:
1.1.1.13! root 73: // デバイス
1.1.1.10 root 74: NEWDV(MPU, new MPU680x0Device());
1.1.1.13! root 75: NEWDV(Mainbus, new Luna1Mainbus());
1.1 root 76: }
77:
78: // デストラクタ
1.1.1.5 root 79: VM_LUNA1::~VM_LUNA1()
1.1 root 80: {
81: }
82:
1.1.1.10 root 83:
1.1 root 84: //
1.1.1.12 root 85: // LUNA-88K
1.1 root 86: //
87:
88: // コンストラクタ
89: VM_LUNA88K::VM_LUNA88K()
1.1.1.13! root 90: : inherited("LUNA-88K")
1.1 root 91: {
1.1.1.2 root 92: // 機種固有パラメータ
93: // MPU クロックの初期値は機種ごとに異なる。単位は MHz
94: gConfig->SetDefault("mpu-clock", 25);
95: // RAM 初期値は MAX にしておく
1.1.1.3 root 96: gConfig->SetDefault("ram-size", 64);
1.1.1.2 root 97: // SPC の入力クロック (XXX LUNA-I と同じ?)
98: gConfig->Add("!spc-tCLF", 163);
1.1.1.12 root 99: // LUNA-II, LUNA-88K, LUNA-88K2 のクロック割り込みは 100Hz らしい
1.1.1.13! root 100: gConfig->Add("!sysclk-freq", 100);
1.1.1.2 root 101:
1.1 root 102: // デバイス (順序に注意)
1.1.1.10 root 103: NEWDV(MPU, new MPU88xx0Device());
1.1.1.13! root 104: NEWDV(Mainbus, new Luna88kMainbus());
1.1 root 105: }
106:
107: // デストラクタ
108: VM_LUNA88K::~VM_LUNA88K()
109: {
110: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.