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