|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: // TAS ポート
8:
9: #include "tas.h"
10:
11: std::unique_ptr<TASDevice> gTAS;
12:
13: // コンストラクタ
14: TASDevice::TASDevice()
1.1.1.5 ! root 15: : inherited("TAS")
1.1 root 16: {
17: }
18:
19: // デストラクタ
20: TASDevice::~TASDevice()
21: {
22: }
23:
1.1.1.4 root 24: // リセット
25: void
26: TASDevice::ResetHard()
27: {
28: // 初期値は 0 らしい (LUNA88K PROM 1.20 がそう期待している)。
29: // いつリセットされるかは分からないけど、さすがにリセットされるだろう。
30: tas = 0;
31: }
32:
1.1.1.3 root 33: // XXX: RMW サイクルが発行される前提のレジスタだが
34: // まだ CPU から RMW サイクルを示す信号線が出ていない。
1.1 root 35:
36: uint64
1.1.1.3 root 37: TASDevice::Read(uint32 offset)
1.1 root 38: {
1.1.1.2 root 39: putlog(2, "読み込み 0x%02x", (uint8)tas);
1.1 root 40: return tas;
41: }
42:
43: uint64
1.1.1.3 root 44: TASDevice::Write(uint32 offset, uint32 data)
1.1 root 45: {
1.1.1.3 root 46: // data は bit7 のみ有効。data の bit7 は
47: // LUNA-I では B 接続なので、各バイトの bit7 に相当、
1.1 root 48: // LUNA88K では BFFF 接続なので bit31 に相当。
49: // 最上位ビット以外のビットは「不定」。
50: tas = data;
1.1.1.2 root 51: putlog(1, "書き込み 0x%02x", data);
1.1 root 52: return 0;
53: }
54:
55: uint64
1.1.1.3 root 56: TASDevice::Peek(uint32 offset)
1.1 root 57: {
58: return tas;
59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.