File:  [Isaki's NoNo m68k/m88k emulator] / nono / vm / x68krom.cpp
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Wed Apr 29 17:04:28 2026 UTC (2 months, 3 weeks ago) by root
Branches: MAIN, Isaki
CVS tags: v002, v001, HEAD
nono 0.0.1

//
// nono
// Copyright (C) 2019 [email protected]
//

#include "x68krom.h"
#include "cgrom.h"
#include "mystring.h"
#include "pluto.h"
#include "scheduler.h"

//
// IPLROM(1)
//

IPLROM1Device::IPLROM1Device()
{
	devname = "IPLROM(1)";
	devaddr = 0xfe0000;
	devlen  = 0x020000;
	mask = devlen - 1;
}

IPLROM1Device::~IPLROM1Device()
{
}

bool
IPLROM1Device::Init()
{
	std::string name;

	// benchmark_mode は static 変数で main 側が代入しているので
	// PlutoDevice とは関係なくアクセスできる。
	if (PlutoDevice::benchmark_mode != 0) {
		name = string_format("BENCH%02d.ROM", PlutoDevice::benchmark_mode);
	} else {
		name = "IPLROM30.DAT";
	}

	if (LoadROM(name.c_str(), 128 * 1024) == false) {
		return false;
	}
	return true;
}


//
// IPLROM(2)
//

IPLROM2Device::IPLROM2Device()
{
	devname = "IPLROM(2)";
	devaddr = 0xfc0000;
	devlen  = 0x020000;
	mask = devlen - 1;
}

IPLROM2Device::~IPLROM2Device()
{
}

bool
IPLROM2Device::Init()
{
	// benchmark_mode は static 変数で main 側が代入しているので
	// PlutoDevice とは関係なくアクセスできる。
	if (PlutoDevice::benchmark_mode != 0) {
		return true;
	}

	if (LoadROM("ROM30.DAT", 128 * 1024) == false) {
		return false;
	}
	return true;
}


//
// CGROM
//

CGROMDevice::CGROMDevice()
{
	devname = "CGROM";
	devaddr = 0xf00000;
	devlen  = 768 * 1024;
	mask = 1024 * 1024 - 1;
}

CGROMDevice::~CGROMDevice()
{
}

bool
CGROMDevice::Init()
{
#if 0
	mem = builtin_cgrom;
#else
	if (LoadROM("CGROM30.DAT", 768 * 1024) == false) {
		return false;
	}
#endif
	return true;
}

unix.superglobalmegacorp.com

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