File:  [Isaki's NoNo m68k/m88k emulator] / nono / m680x0 / m680x0bitfield.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Wed Apr 29 17:05:40 2026 UTC (3 months ago) by root
Branches: MAIN, Isaki
CVS tags: v027, v026, v025, v024, v023, HEAD
nono 1.3.0

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

#pragma once

#include "mpu680x0.h"

// ビットフィールド命令
class acc_bf
{
 public:
	explicit acc_bf(MPU680x0Device *);
	// デストラクタは無し。

	void LoadReg(uint n);		// Dn から値を読み込む
	bool LoadMem(uint32 addr);	// メモリから値を読み込む

	// レジスタまたはメモリにストアする
	void Store(uint n) {
		if (n < 8) {
			StoreReg(n);
		} else {
			StoreMem();
		}
	}

	uint32 data {};				// 32bit 左詰めデータ
	int32 offset {};			// (第2ワードで指定された) オフセット
	uint32 width {};			// 幅

 private:
	void StoreReg(uint n);		// 値を Dn に書き出す
	void StoreMem();			// 値をメモリに書き出す

	MPU680x0Device *cpu {};

	uint32 mask {};			// 32ビット左詰めマスク
	uint32 ea {};			// オフセット計算後の EA
	int32 local_offset {};	// 内部(32bit or 8bit 内)オフセット
	uint bytes {};			// アクセスバイト数
	uint64 buf {};			// 40ビットのメモリバッファ
};

unix.superglobalmegacorp.com

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