|
|
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: // 機種固有パラメータ
63: // MPU クロックの初期値は機種ごとに異なる。単位は MHz
64: gConfig->SetDefault("mpu-clock", 20);
65: // RAM 初期値は MAX にしておく
66: gConfig->SetDefault("ram-size", 16);
67: // SPC の入力クロック (おそらく 6.144MHz = 163ns が入ってる)
68: gConfig->Add("!spc-tCLF", 163);
69: // LUNA-I のクロック割り込みは 60Hz
1.1.1.13 root 70: gConfig->Add("!sysclk-freq", 60);
1.1.1.2 root 71:
1.1.1.13 root 72: // デバイス
1.1.1.10 root 73: NEWDV(MPU, new MPU680x0Device());
1.1.1.13 root 74: NEWDV(Mainbus, new Luna1Mainbus());
1.1.1.14! root 75: NEWDV(SSG, new SSGDevice());
! 76:
! 77: // バーストアクセスたぶんあり
! 78: dynamic_cast<MPU680x0Device*>(pMPU.get())->EnableBurstAccess(true);
1.1 root 79: }
80:
81: // デストラクタ
1.1.1.5 root 82: VM_LUNA1::~VM_LUNA1()
1.1 root 83: {
84: }
85:
1.1.1.10 root 86:
1.1 root 87: //
1.1.1.12 root 88: // LUNA-88K
1.1 root 89: //
90:
91: // コンストラクタ
92: VM_LUNA88K::VM_LUNA88K()
1.1.1.13 root 93: : inherited("LUNA-88K")
1.1 root 94: {
1.1.1.2 root 95: // 機種固有パラメータ
96: // MPU クロックの初期値は機種ごとに異なる。単位は MHz
97: gConfig->SetDefault("mpu-clock", 25);
98: // RAM 初期値は MAX にしておく
1.1.1.3 root 99: gConfig->SetDefault("ram-size", 64);
1.1.1.2 root 100: // SPC の入力クロック (XXX LUNA-I と同じ?)
101: gConfig->Add("!spc-tCLF", 163);
1.1.1.12 root 102: // LUNA-II, LUNA-88K, LUNA-88K2 のクロック割り込みは 100Hz らしい
1.1.1.13 root 103: gConfig->Add("!sysclk-freq", 100);
1.1.1.2 root 104:
1.1 root 105: // デバイス (順序に注意)
1.1.1.10 root 106: NEWDV(MPU, new MPU88xx0Device());
1.1.1.13 root 107: NEWDV(Mainbus, new Luna88kMainbus());
1.1.1.14! root 108:
! 109: // バーストアクセスあり (m88k では常に有効)
1.1 root 110: }
111:
112: // デストラクタ
113: VM_LUNA88K::~VM_LUNA88K()
114: {
115: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.