File:  [Isaki's NoNo m68k/m88k emulator] / nono / vm / tas.cpp
Revision 1.1.1.10 (vendor branch): download - view: text, annotated - select for diffs
Wed Apr 29 17:05:29 2026 UTC (2 months, 3 weeks ago) by root
Branches: MAIN, Isaki
CVS tags: v027, v026, v025, v024, v023, v022, v021, v020, HEAD
nono 1.0.0

//
// nono
// Copyright (C) 2020 nono project
// Licensed under nono-license.txt
//

//
// TAS ポート
//

#include "tas.h"

// コンストラクタ
TASDevice::TASDevice()
	: inherited(OBJ_TAS)
{
}

// デストラクタ
TASDevice::~TASDevice()
{
}

// リセット
void
TASDevice::ResetHard(bool poweron)
{
	// 初期値は 0 らしい (LUNA-88K PROM 1.20 がそう期待している)。
	// いつリセットされるかは分からないけど、さすがにリセットされるだろう。
	tas = 0;
}

// XXX: RMW サイクルが発行される前提のレジスタだが
// まだ CPU から RMW サイクルを示す信号線が出ていない。

busdata
TASDevice::ReadPort(uint32 offset)
{
	busdata data;

	data = (uint32)tas.load();
	putlog(2, "Read 0x%02x", data.Data());
	data |= BusData::Size1;
	return data;
}

busdata
TASDevice::WritePort(uint32 offset, uint32 data)
{
	// data は bit7 のみ有効。data の bit7 は
	// LUNA-I では B 接続なので、各バイトの bit7 に相当、
	// LUNA-88K では BFFF 接続なので bit31 に相当。
	// 最上位ビット以外のビットは「不定」。
	tas = data;
	putlog(1, "Write 0x%02x", data);

	busdata r = BusData::Size1;
	return r;
}

busdata
TASDevice::PeekPort(uint32 offset)
{
	return (uint32)tas.load();
}

bool
TASDevice::PokePort(uint32 offset, uint32 data)
{
	return false;
}

unix.superglobalmegacorp.com

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