mirror of
https://github.com/TomHarte/CLK.git
synced 2025-08-14 23:27:26 +00:00
Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9cff26b163 | ||
|
9309d8c3f2 |
@@ -610,6 +610,8 @@ public:
|
|||||||
constexpr auto bios_AT_odd = ROM::Name::PCCompatibleIBMATBIOSNov85U47;
|
constexpr auto bios_AT_odd = ROM::Name::PCCompatibleIBMATBIOSNov85U47;
|
||||||
constexpr auto bios_AT_Phoenix = ROM::Name::PCCompatiblePhoenix80286BIOS;
|
constexpr auto bios_AT_Phoenix = ROM::Name::PCCompatiblePhoenix80286BIOS;
|
||||||
|
|
||||||
|
constexpr auto rom_BASIC = ROM::Name::IBMBASIC110;
|
||||||
|
|
||||||
ROM::Request request = ROM::Request(font);
|
ROM::Request request = ROM::Request(font);
|
||||||
switch(pc_model) {
|
switch(pc_model) {
|
||||||
default:
|
default:
|
||||||
@@ -619,7 +621,7 @@ public:
|
|||||||
auto at_even_odd = ROM::Request(bios_AT_odd) && ROM::Request(bios_AT_even);
|
auto at_even_odd = ROM::Request(bios_AT_odd) && ROM::Request(bios_AT_even);
|
||||||
auto at_full = ROM::Request(bios_AT);
|
auto at_full = ROM::Request(bios_AT);
|
||||||
auto phoenix_full = ROM::Request(bios_AT_Phoenix);
|
auto phoenix_full = ROM::Request(bios_AT_Phoenix);
|
||||||
const auto at_any = at_even_odd || at_full || phoenix_full;
|
const auto at_any = ((at_even_odd || at_full) && rom_BASIC) || phoenix_full;
|
||||||
request = request && at_any;
|
request = request && at_any;
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
@@ -656,6 +658,8 @@ public:
|
|||||||
const auto install_at = [&] {
|
const auto install_at = [&] {
|
||||||
const auto bios_even = roms.find(bios_AT_even);
|
const auto bios_even = roms.find(bios_AT_even);
|
||||||
const auto bios_odd = roms.find(bios_AT_odd);
|
const auto bios_odd = roms.find(bios_AT_odd);
|
||||||
|
bool is_ibm = false;
|
||||||
|
|
||||||
if(bios_even != roms.end() && bios_odd != roms.end()) {
|
if(bios_even != roms.end() && bios_odd != roms.end()) {
|
||||||
std::vector<uint8_t> bios(65536);
|
std::vector<uint8_t> bios(65536);
|
||||||
|
|
||||||
@@ -664,15 +668,25 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
install_bios(bios);
|
install_bios(bios);
|
||||||
return;
|
is_ibm = true;
|
||||||
|
} else {
|
||||||
|
for(const auto name: {bios_AT, bios_AT_Phoenix}) {
|
||||||
|
const auto bios_contents = roms.find(name);
|
||||||
|
if(bios_contents != roms.end()) {
|
||||||
|
install_bios(bios_contents->second);
|
||||||
|
is_ibm = name == bios_AT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(const auto name: {bios_AT, bios_AT_Phoenix}) {
|
if(is_ibm) {
|
||||||
const auto bios_contents = roms.find(name);
|
const auto basic = roms.find(rom_BASIC);
|
||||||
if(bios_contents != roms.end()) {
|
context_.linear_memory.install(
|
||||||
install_bios(bios_contents->second);
|
0xf'6000,
|
||||||
return;
|
basic->second.data(),
|
||||||
}
|
uint32_t(basic->second.size())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -610,6 +610,10 @@ Description::Description(Name name) {
|
|||||||
*this = Description(name, "PCCompatible", "IBM's VGA BIOS", "ibm_vga.bin", 32 * 1024, 0x03b3f90du);
|
*this = Description(name, "PCCompatible", "IBM's VGA BIOS", "ibm_vga.bin", 32 * 1024, 0x03b3f90du);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Name::IBMBASIC110:
|
||||||
|
*this = Description(name, "PCCompatible", "IBM ROM BIOS 1.10", "ibm-basic-1.10.rom", 32 * 1024, 0xebacb791u);
|
||||||
|
break;
|
||||||
|
|
||||||
// TODO: CRCs below are incomplete, at best.
|
// TODO: CRCs below are incomplete, at best.
|
||||||
case Name::MSXGenericBIOS: *this = Description(name, "MSX", "a generix MSX BIOS", "msx.rom", 32*1024, 0x94ee12f3u); break;
|
case Name::MSXGenericBIOS: *this = Description(name, "MSX", "a generix MSX BIOS", "msx.rom", 32*1024, 0x94ee12f3u); break;
|
||||||
case Name::MSXJapaneseBIOS: *this = Description(name, "MSX", "a Japanese MSX BIOS", "msx-japanese.rom", 32*1024, 0xee229390u); break;
|
case Name::MSXJapaneseBIOS: *this = Description(name, "MSX", "a Japanese MSX BIOS", "msx-japanese.rom", 32*1024, 0xee229390u); break;
|
||||||
|
@@ -150,6 +150,8 @@ enum Name {
|
|||||||
PCCompatibleEGABIOS,
|
PCCompatibleEGABIOS,
|
||||||
PCCompatibleVGABIOS,
|
PCCompatibleVGABIOS,
|
||||||
|
|
||||||
|
IBMBASIC110,
|
||||||
|
|
||||||
// Plus 4.
|
// Plus 4.
|
||||||
Plus4KernelPALv3,
|
Plus4KernelPALv3,
|
||||||
Plus4KernelPALv4,
|
Plus4KernelPALv4,
|
||||||
|
@@ -5,6 +5,16 @@ For XT-class emulation:
|
|||||||
GLABIOS_0.2.5_8T.ROM — the 8088 GLaBIOS ROM.
|
GLABIOS_0.2.5_8T.ROM — the 8088 GLaBIOS ROM.
|
||||||
GLaTICK_0.8.5_AT.ROM (optionally) — the GLaBIOS AT RTC option ROM.
|
GLaTICK_0.8.5_AT.ROM (optionally) — the GLaBIOS AT RTC option ROM.
|
||||||
|
|
||||||
|
For AT-class emulation:
|
||||||
|
|
||||||
|
ibm-basic-1.10.rom — IBM ROM BIOS version 1.10.
|
||||||
|
|
||||||
|
Either:
|
||||||
|
at-bios.bin; or both
|
||||||
|
|
||||||
|
BIOS_5170_15NOV85_U27_61X9266_27256.BIN and
|
||||||
|
BIOS_5170_15NOV85_U47_61X9265_27256.BIN — the IBM PC AT BIOS.
|
||||||
|
|
||||||
For specific video cards:
|
For specific video cards:
|
||||||
|
|
||||||
EUMDA9.F14 — the MDA font.
|
EUMDA9.F14 — the MDA font.
|
||||||
|
Reference in New Issue
Block a user