Annotation of nono/vm/tas.cpp, revision 1.1.1.10

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: }

unix.superglobalmegacorp.com

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